UNPKG

three-conic-polygon-geometry

Version:
2 lines 81.6 kB
// Version 2.1.2 three-conic-polygon-geometry - https://github.com/vasturiano/three-conic-polygon-geometry !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("three")):"function"==typeof define&&define.amd?define(["three"],n):(t="undefined"!=typeof globalThis?globalThis:t||self).ConicPolygonGeometry=n(t.THREE)}(this,(function(t){"use strict";function n(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=Array(n);e<n;e++)r[e]=t[e];return r}function e(t,n,e){return n=r(n),function(t,n){if(n&&("object"==typeof n||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,i()?Reflect.construct(n,[],r(t).constructor):n.apply(t,e))}function r(t){return r=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},r(t)}function i(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(i=function(){return!!t})()}function o(t,n){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,n){return t.__proto__=n,t},o(t,n)}function u(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var r,i,o,u,l=[],a=!0,s=!1;try{if(o=(e=e.call(t)).next,0===n);else for(;!(a=(r=o.call(e)).done)&&(l.push(r.value),l.length!==n);a=!0);}catch(t){s=!0,i=t}finally{try{if(!a&&null!=e.return&&(u=e.return(),Object(u)!==u))return}finally{if(s)throw i}}return l}}(t,n)||a(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(t){return function(t){if(Array.isArray(t))return n(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||a(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t,e){if(t){if("string"==typeof t)return n(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}function s(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function c(t,n){return null==t||null==n?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function f(t){let n,e,r;function i(t,r,i=0,o=t.length){if(i<o){if(0!==n(r,r))return o;do{const n=i+o>>>1;e(t[n],r)<0?i=n+1:o=n}while(i<o)}return i}return 2!==t.length?(n=s,e=(n,e)=>s(t(n),e),r=(n,e)=>t(n)-e):(n=t===s||t===c?t:h,e=t,r=t),{left:i,center:function(t,n,e=0,o=t.length){const u=i(t,n,e,o-1);return u>e&&r(t[u-1],n)>-r(t[u],n)?u-1:u},right:function(t,r,i=0,o=t.length){if(i<o){if(0!==n(r,r))return o;do{const n=i+o>>>1;e(t[n],r)<=0?i=n+1:o=n}while(i<o)}return i}}}function h(){return 0}const p=f(s).right;function d(t,n){let e,r;if(void 0===n)for(const n of t)null!=n&&(void 0===e?n>=n&&(e=r=n):(e>n&&(e=n),r<n&&(r=n)));else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(void 0===e?o>=o&&(e=r=o):(e>o&&(e=o),r<o&&(r=o)))}return[e,r]}f((function(t){return null===t?NaN:+t})).center;class g{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const n=this._partials;let e=0;for(let r=0;r<this._n&&r<32;r++){const i=n[r],o=t+i,u=Math.abs(t)<Math.abs(i)?t-(o-i):i-(o-t);u&&(n[e++]=u),t=o}return n[e]=t,this._n=e+1,this}valueOf(){const t=this._partials;let n,e,r,i=this._n,o=0;if(i>0){for(o=t[--i];i>0&&(n=o,e=t[--i],o=n+e,r=e-(o-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=o+e,e==n-o&&(o=n))}return o}}const y=Math.sqrt(50),v=Math.sqrt(10),m=Math.sqrt(2);function x(t,n,e){const r=(n-t)/Math.max(0,e),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),u=o>=y?10:o>=v?5:o>=m?2:1;let l,a,s;return i<0?(s=Math.pow(10,-i)/u,l=Math.round(t*s),a=Math.round(n*s),l/s<t&&++l,a/s>n&&--a,s=-s):(s=Math.pow(10,i)*u,l=Math.round(t/s),a=Math.round(n/s),l*s<t&&++l,a*s>n&&--a),a<l&&.5<=e&&e<2?x(t,n,2*e):[l,a,s]}function w(t,n,e){return x(t=+t,n=+n,e=+e)[2]}function _(t){return Array.from(function*(t){for(const n of t)yield*n}(t))}function b(t,n,e=2){const r=n&&n.length,i=r?n[0]*e:t.length;let o=M(t,0,i,e,!0);const u=[];if(!o||o.next===o.prev)return u;let l,a,s;if(r&&(o=function(t,n,e,r){const i=[];for(let e=0,o=n.length;e<o;e++){const u=M(t,n[e]*r,e<o-1?n[e+1]*r:t.length,r,!1);u===u.next&&(u.steiner=!0),i.push(z(u))}i.sort(P);for(let t=0;t<i.length;t++)e=T(i[t],e);return e}(t,n,o,e)),t.length>80*e){l=1/0,a=1/0;let n=-1/0,r=-1/0;for(let o=e;o<i;o+=e){const e=t[o],i=t[o+1];e<l&&(l=e),i<a&&(a=i),e>n&&(n=e),i>r&&(r=i)}s=Math.max(n-l,r-a),s=0!==s?32767/s:0}return E(o,u,e,l,a,s,0),u}function M(t,n,e,r,i){let o;if(i===function(t,n,e,r){let i=0;for(let o=n,u=e-r;o<e;o+=r)i+=(t[u]-t[o])*(t[o+1]+t[u+1]),u=o;return i}(t,n,e,r)>0)for(let i=n;i<e;i+=r)o=U(i/r|0,t[i],t[i+1],o);else for(let i=e-r;i>=n;i-=r)o=U(i/r|0,t[i],t[i+1],o);return o&&q(o,o.next)&&(K(o),o=o.next),o}function S(t,n){if(!t)return t;n||(n=t);let e,r=t;do{if(e=!1,r.steiner||!q(r,r.next)&&0!==L(r.prev,r,r.next))r=r.next;else{if(K(r),r=n=r.prev,r===r.next)break;e=!0}}while(e||r!==n);return n}function E(t,n,e,r,i,o,u){if(!t)return;!u&&o&&function(t,n,e,r){let i=t;do{0===i.z&&(i.z=F(i.x,i.y,n,e,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){let n,e=1;do{let r,i=t;t=null;let o=null;for(n=0;i;){n++;let u=i,l=0;for(let t=0;t<e&&(l++,u=u.nextZ,u);t++);let a=e;for(;l>0||a>0&&u;)0!==l&&(0===a||!u||i.z<=u.z)?(r=i,i=i.nextZ,l--):(r=u,u=u.nextZ,a--),o?o.nextZ=r:t=r,r.prevZ=o,o=r;i=u}o.nextZ=null,e*=2}while(n>1)}(i)}(t,r,i,o);let l=t;for(;t.prev!==t.next;){const a=t.prev,s=t.next;if(o?k(t,r,i,o):N(t))n.push(a.i,t.i,s.i),K(t),t=s.next,l=s.next;else if((t=s)===l){u?1===u?E(t=$(S(t),n),n,e,r,i,o,2):2===u&&A(t,n,e,r,i,o):E(S(t),n,e,r,i,o,1);break}}}function N(t){const n=t.prev,e=t,r=t.next;if(L(n,e,r)>=0)return!1;const i=n.x,o=e.x,u=r.x,l=n.y,a=e.y,s=r.y,c=Math.min(i,o,u),f=Math.min(l,a,s),h=Math.max(i,o,u),p=Math.max(l,a,s);let d=r.next;for(;d!==n;){if(d.x>=c&&d.x<=h&&d.y>=f&&d.y<=p&&Z(i,l,o,a,u,s,d.x,d.y)&&L(d.prev,d,d.next)>=0)return!1;d=d.next}return!0}function k(t,n,e,r){const i=t.prev,o=t,u=t.next;if(L(i,o,u)>=0)return!1;const l=i.x,a=o.x,s=u.x,c=i.y,f=o.y,h=u.y,p=Math.min(l,a,s),d=Math.min(c,f,h),g=Math.max(l,a,s),y=Math.max(c,f,h),v=F(p,d,n,e,r),m=F(g,y,n,e,r);let x=t.prevZ,w=t.nextZ;for(;x&&x.z>=v&&w&&w.z<=m;){if(x.x>=p&&x.x<=g&&x.y>=d&&x.y<=y&&x!==i&&x!==u&&Z(l,c,a,f,s,h,x.x,x.y)&&L(x.prev,x,x.next)>=0)return!1;if(x=x.prevZ,w.x>=p&&w.x<=g&&w.y>=d&&w.y<=y&&w!==i&&w!==u&&Z(l,c,a,f,s,h,w.x,w.y)&&L(w.prev,w,w.next)>=0)return!1;w=w.nextZ}for(;x&&x.z>=v;){if(x.x>=p&&x.x<=g&&x.y>=d&&x.y<=y&&x!==i&&x!==u&&Z(l,c,a,f,s,h,x.x,x.y)&&L(x.prev,x,x.next)>=0)return!1;x=x.prevZ}for(;w&&w.z<=m;){if(w.x>=p&&w.x<=g&&w.y>=d&&w.y<=y&&w!==i&&w!==u&&Z(l,c,a,f,s,h,w.x,w.y)&&L(w.prev,w,w.next)>=0)return!1;w=w.nextZ}return!0}function $(t,n){let e=t;do{const r=e.prev,i=e.next.next;!q(r,i)&&H(r,e,e.next,i)&&B(r,i)&&B(i,r)&&(n.push(r.i,e.i,i.i),K(e),K(e.next),e=t=i),e=e.next}while(e!==t);return S(e)}function A(t,n,e,r,i,o){let u=t;do{let t=u.next.next;for(;t!==u.prev;){if(u.i!==t.i&&O(u,t)){let l=G(u,t);return u=S(u,u.next),l=S(l,l.next),E(u,n,e,r,i,o,0),void E(l,n,e,r,i,o,0)}t=t.next}u=u.next}while(u!==t)}function P(t,n){let e=t.x-n.x;if(0===e&&(e=t.y-n.y,0===e)){e=(t.next.y-t.y)/(t.next.x-t.x)-(n.next.y-n.y)/(n.next.x-n.x)}return e}function T(t,n){const e=function(t,n){let e=n;const r=t.x,i=t.y;let o,u=-1/0;if(q(t,e))return e;do{if(q(t,e.next))return e.next;if(i<=e.y&&i>=e.next.y&&e.next.y!==e.y){const t=e.x+(i-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(t<=r&&t>u&&(u=t,o=e.x<e.next.x?e:e.next,t===r))return o}e=e.next}while(e!==n);if(!o)return null;const l=o,a=o.x,s=o.y;let c=1/0;e=o;do{if(r>=e.x&&e.x>=a&&r!==e.x&&I(i<s?r:u,i,a,s,i<s?u:r,i,e.x,e.y)){const n=Math.abs(i-e.y)/(r-e.x);B(e,t)&&(n<c||n===c&&(e.x>o.x||e.x===o.x&&j(o,e)))&&(o=e,c=n)}e=e.next}while(e!==l);return o}(t,n);if(!e)return n;const r=G(e,t);return S(r,r.next),S(e,e.next)}function j(t,n){return L(t.prev,t,n.prev)<0&&L(n.next,t,t.next)<0}function F(t,n,e,r,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-e)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(n=1431655765&((n=858993459&((n=252645135&((n=16711935&((n=(n-r)*i|0)|n<<8))|n<<4))|n<<2))|n<<1))<<1}function z(t){let n=t,e=t;do{(n.x<e.x||n.x===e.x&&n.y<e.y)&&(e=n),n=n.next}while(n!==t);return e}function I(t,n,e,r,i,o,u,l){return(i-u)*(n-l)>=(t-u)*(o-l)&&(t-u)*(r-l)>=(e-u)*(n-l)&&(e-u)*(o-l)>=(i-u)*(r-l)}function Z(t,n,e,r,i,o,u,l){return!(t===u&&n===l)&&I(t,n,e,r,i,o,u,l)}function O(t,n){return t.next.i!==n.i&&t.prev.i!==n.i&&!function(t,n){let e=t;do{if(e.i!==t.i&&e.next.i!==t.i&&e.i!==n.i&&e.next.i!==n.i&&H(e,e.next,t,n))return!0;e=e.next}while(e!==t);return!1}(t,n)&&(B(t,n)&&B(n,t)&&function(t,n){let e=t,r=!1;const i=(t.x+n.x)/2,o=(t.y+n.y)/2;do{e.y>o!=e.next.y>o&&e.next.y!==e.y&&i<(e.next.x-e.x)*(o-e.y)/(e.next.y-e.y)+e.x&&(r=!r),e=e.next}while(e!==t);return r}(t,n)&&(L(t.prev,t,n.prev)||L(t,n.prev,n))||q(t,n)&&L(t.prev,t,t.next)>0&&L(n.prev,n,n.next)>0)}function L(t,n,e){return(n.y-t.y)*(e.x-n.x)-(n.x-t.x)*(e.y-n.y)}function q(t,n){return t.x===n.x&&t.y===n.y}function H(t,n,e,r){const i=R(L(t,n,e)),o=R(L(t,n,r)),u=R(L(e,r,t)),l=R(L(e,r,n));return i!==o&&u!==l||(!(0!==i||!C(t,e,n))||(!(0!==o||!C(t,r,n))||(!(0!==u||!C(e,t,r))||!(0!==l||!C(e,n,r)))))}function C(t,n,e){return n.x<=Math.max(t.x,e.x)&&n.x>=Math.min(t.x,e.x)&&n.y<=Math.max(t.y,e.y)&&n.y>=Math.min(t.y,e.y)}function R(t){return t>0?1:t<0?-1:0}function B(t,n){return L(t.prev,t,t.next)<0?L(t,n,t.next)>=0&&L(t,t.prev,n)>=0:L(t,n,t.prev)<0||L(t,t.next,n)<0}function G(t,n){const e=D(t.i,t.x,t.y),r=D(n.i,n.x,n.y),i=t.next,o=n.prev;return t.next=n,n.prev=t,e.next=i,i.prev=e,r.next=e,e.prev=r,o.next=r,r.prev=o,r}function U(t,n,e,r){const i=D(t,n,e);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function K(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function D(t,n,e){return{i:t,x:n,y:e,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function V(t){const n=[],e=[],r=t[0][0].length;let i=0,o=0;for(const u of t){for(const t of u)for(let e=0;e<r;e++)n.push(t[e]);o&&(i+=o,e.push(i)),o=u.length}return{vertices:n,holes:e,dimensions:r}}const X=134217729;function J(t,n,e,r,i){let o,u,l,a,s=n[0],c=r[0],f=0,h=0;c>s==c>-s?(o=s,s=n[++f]):(o=c,c=r[++h]);let p=0;if(f<t&&h<e)for(c>s==c>-s?(u=s+o,l=o-(u-s),s=n[++f]):(u=c+o,l=o-(u-c),c=r[++h]),o=u,0!==l&&(i[p++]=l);f<t&&h<e;)c>s==c>-s?(u=o+s,a=u-o,l=o-(u-a)+(s-a),s=n[++f]):(u=o+c,a=u-o,l=o-(u-a)+(c-a),c=r[++h]),o=u,0!==l&&(i[p++]=l);for(;f<t;)u=o+s,a=u-o,l=o-(u-a)+(s-a),s=n[++f],o=u,0!==l&&(i[p++]=l);for(;h<e;)u=o+c,a=u-o,l=o-(u-a)+(c-a),c=r[++h],o=u,0!==l&&(i[p++]=l);return 0===o&&0!==p||(i[p++]=o),p}function Y(t){return new Float64Array(t)}const W=Y(4),Q=Y(8),tt=Y(12),nt=Y(16),et=Y(4);function rt(t,n,e,r,i,o){const u=(n-o)*(e-i),l=(t-i)*(r-o),a=u-l,s=Math.abs(u+l);return Math.abs(a)>=33306690738754716e-32*s?a:-function(t,n,e,r,i,o,u){let l,a,s,c,f,h,p,d,g,y,v,m,x,w,_,b,M,S;const E=t-i,N=e-i,k=n-o,$=r-o;w=E*$,h=X*E,p=h-(h-E),d=E-p,h=X*$,g=h-(h-$),y=$-g,_=d*y-(w-p*g-d*g-p*y),b=k*N,h=X*k,p=h-(h-k),d=k-p,h=X*N,g=h-(h-N),y=N-g,M=d*y-(b-p*g-d*g-p*y),v=_-M,f=_-v,W[0]=_-(v+f)+(f-M),m=w+v,f=m-w,x=w-(m-f)+(v-f),v=x-b,f=x-v,W[1]=x-(v+f)+(f-b),S=m+v,f=S-m,W[2]=m-(S-f)+(v-f),W[3]=S;let A=function(t,n){let e=n[0];for(let r=1;r<t;r++)e+=n[r];return e}(4,W),P=22204460492503146e-32*u;if(A>=P||-A>=P)return A;if(f=t-E,l=t-(E+f)+(f-i),f=e-N,s=e-(N+f)+(f-i),f=n-k,a=n-(k+f)+(f-o),f=r-$,c=r-($+f)+(f-o),0===l&&0===a&&0===s&&0===c)return A;if(P=11093356479670487e-47*u+33306690738754706e-32*Math.abs(A),A+=E*c+$*l-(k*s+N*a),A>=P||-A>=P)return A;w=l*$,h=X*l,p=h-(h-l),d=l-p,h=X*$,g=h-(h-$),y=$-g,_=d*y-(w-p*g-d*g-p*y),b=a*N,h=X*a,p=h-(h-a),d=a-p,h=X*N,g=h-(h-N),y=N-g,M=d*y-(b-p*g-d*g-p*y),v=_-M,f=_-v,et[0]=_-(v+f)+(f-M),m=w+v,f=m-w,x=w-(m-f)+(v-f),v=x-b,f=x-v,et[1]=x-(v+f)+(f-b),S=m+v,f=S-m,et[2]=m-(S-f)+(v-f),et[3]=S;const T=J(4,W,4,et,Q);w=E*c,h=X*E,p=h-(h-E),d=E-p,h=X*c,g=h-(h-c),y=c-g,_=d*y-(w-p*g-d*g-p*y),b=k*s,h=X*k,p=h-(h-k),d=k-p,h=X*s,g=h-(h-s),y=s-g,M=d*y-(b-p*g-d*g-p*y),v=_-M,f=_-v,et[0]=_-(v+f)+(f-M),m=w+v,f=m-w,x=w-(m-f)+(v-f),v=x-b,f=x-v,et[1]=x-(v+f)+(f-b),S=m+v,f=S-m,et[2]=m-(S-f)+(v-f),et[3]=S;const j=J(T,Q,4,et,tt);w=l*c,h=X*l,p=h-(h-l),d=l-p,h=X*c,g=h-(h-c),y=c-g,_=d*y-(w-p*g-d*g-p*y),b=a*s,h=X*a,p=h-(h-a),d=a-p,h=X*s,g=h-(h-s),y=s-g,M=d*y-(b-p*g-d*g-p*y),v=_-M,f=_-v,et[0]=_-(v+f)+(f-M),m=w+v,f=m-w,x=w-(m-f)+(v-f),v=x-b,f=x-v,et[1]=x-(v+f)+(f-b),S=m+v,f=S-m,et[2]=m-(S-f)+(v-f),et[3]=S;const F=J(j,tt,4,et,nt);return nt[F-1]}(t,n,e,r,i,o,s)}const it=Math.pow(2,-52),ot=new Uint32Array(512);class ut{static from(t,n=ht,e=pt){const r=t.length,i=new Float64Array(2*r);for(let o=0;o<r;o++){const r=t[o];i[2*o]=n(r),i[2*o+1]=e(r)}return new ut(i)}constructor(t){const n=t.length>>1;if(n>0&&"number"!=typeof t[0])throw new Error("Expected coords to contain numbers.");this.coords=t;const e=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*e),this._halfedges=new Int32Array(3*e),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}update(){const{coords:t,_hullPrev:n,_hullNext:e,_hullTri:r,_hullHash:i}=this,o=t.length>>1;let u=1/0,l=1/0,a=-1/0,s=-1/0;for(let n=0;n<o;n++){const e=t[2*n],r=t[2*n+1];e<u&&(u=e),r<l&&(l=r),e>a&&(a=e),r>s&&(s=r),this._ids[n]=n}const c=(u+a)/2,f=(l+s)/2;let h,p,d;for(let n=0,e=1/0;n<o;n++){const r=lt(c,f,t[2*n],t[2*n+1]);r<e&&(h=n,e=r)}const g=t[2*h],y=t[2*h+1];for(let n=0,e=1/0;n<o;n++){if(n===h)continue;const r=lt(g,y,t[2*n],t[2*n+1]);r<e&&r>0&&(p=n,e=r)}let v=t[2*p],m=t[2*p+1],x=1/0;for(let n=0;n<o;n++){if(n===h||n===p)continue;const e=st(g,y,v,m,t[2*n],t[2*n+1]);e<x&&(d=n,x=e)}let w=t[2*d],_=t[2*d+1];if(x===1/0){for(let n=0;n<o;n++)this._dists[n]=t[2*n]-t[0]||t[2*n+1]-t[1];ct(this._ids,this._dists,0,o-1);const n=new Uint32Array(o);let e=0;for(let t=0,r=-1/0;t<o;t++){const i=this._ids[t],o=this._dists[i];o>r&&(n[e++]=i,r=o)}return this.hull=n.subarray(0,e),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(rt(g,y,v,m,w,_)<0){const t=p,n=v,e=m;p=d,v=w,m=_,d=t,w=n,_=e}const b=function(t,n,e,r,i,o){const u=e-t,l=r-n,a=i-t,s=o-n,c=u*u+l*l,f=a*a+s*s,h=.5/(u*s-l*a);return{x:t+(s*c-l*f)*h,y:n+(u*f-a*c)*h}}(g,y,v,m,w,_);this._cx=b.x,this._cy=b.y;for(let n=0;n<o;n++)this._dists[n]=lt(t[2*n],t[2*n+1],b.x,b.y);ct(this._ids,this._dists,0,o-1),this._hullStart=h;let M=3;e[h]=n[d]=p,e[p]=n[h]=d,e[d]=n[p]=h,r[h]=0,r[p]=1,r[d]=2,i.fill(-1),i[this._hashKey(g,y)]=h,i[this._hashKey(v,m)]=p,i[this._hashKey(w,_)]=d,this.trianglesLen=0,this._addTriangle(h,p,d,-1,-1,-1);for(let o,u,l=0;l<this._ids.length;l++){const a=this._ids[l],s=t[2*a],c=t[2*a+1];if(l>0&&Math.abs(s-o)<=it&&Math.abs(c-u)<=it)continue;if(o=s,u=c,a===h||a===p||a===d)continue;let f=0;for(let t=0,n=this._hashKey(s,c);t<this._hashSize&&(f=i[(n+t)%this._hashSize],-1===f||f===e[f]);t++);f=n[f];let g,y=f;for(;g=e[y],rt(s,c,t[2*y],t[2*y+1],t[2*g],t[2*g+1])>=0;)if(y=g,y===f){y=-1;break}if(-1===y)continue;let v=this._addTriangle(y,a,e[y],-1,-1,r[y]);r[a]=this._legalize(v+2),r[y]=v,M++;let m=e[y];for(;g=e[m],rt(s,c,t[2*m],t[2*m+1],t[2*g],t[2*g+1])<0;)v=this._addTriangle(m,a,g,r[a],-1,r[m]),r[a]=this._legalize(v+2),e[m]=m,M--,m=g;if(y===f)for(;g=n[y],rt(s,c,t[2*g],t[2*g+1],t[2*y],t[2*y+1])<0;)v=this._addTriangle(g,a,y,-1,r[y],r[g]),this._legalize(v+2),r[g]=v,e[y]=y,M--,y=g;this._hullStart=n[a]=y,e[y]=n[m]=a,e[a]=m,i[this._hashKey(s,c)]=a,i[this._hashKey(t[2*y],t[2*y+1])]=y}this.hull=new Uint32Array(M);for(let t=0,n=this._hullStart;t<M;t++)this.hull[t]=n,n=e[n];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(t,n){return Math.floor(function(t,n){const e=t/(Math.abs(t)+Math.abs(n));return(n>0?3-e:1+e)/4}(t-this._cx,n-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:n,_halfedges:e,coords:r}=this;let i=0,o=0;for(;;){const u=e[t],l=t-t%3;if(o=l+(t+2)%3,-1===u){if(0===i)break;t=ot[--i];continue}const a=u-u%3,s=l+(t+1)%3,c=a+(u+2)%3,f=n[o],h=n[t],p=n[s],d=n[c];if(at(r[2*f],r[2*f+1],r[2*h],r[2*h+1],r[2*p],r[2*p+1],r[2*d],r[2*d+1])){n[t]=d,n[u]=f;const r=e[c];if(-1===r){let n=this._hullStart;do{if(this._hullTri[n]===c){this._hullTri[n]=t;break}n=this._hullPrev[n]}while(n!==this._hullStart)}this._link(t,r),this._link(u,e[o]),this._link(o,c);const l=a+(u+1)%3;i<ot.length&&(ot[i++]=l)}else{if(0===i)break;t=ot[--i]}}return o}_link(t,n){this._halfedges[t]=n,-1!==n&&(this._halfedges[n]=t)}_addTriangle(t,n,e,r,i,o){const u=this.trianglesLen;return this._triangles[u]=t,this._triangles[u+1]=n,this._triangles[u+2]=e,this._link(u,r),this._link(u+1,i),this._link(u+2,o),this.trianglesLen+=3,u}}function lt(t,n,e,r){const i=t-e,o=n-r;return i*i+o*o}function at(t,n,e,r,i,o,u,l){const a=t-u,s=n-l,c=e-u,f=r-l,h=i-u,p=o-l,d=c*c+f*f,g=h*h+p*p;return a*(f*g-d*p)-s*(c*g-d*h)+(a*a+s*s)*(c*p-f*h)<0}function st(t,n,e,r,i,o){const u=e-t,l=r-n,a=i-t,s=o-n,c=u*u+l*l,f=a*a+s*s,h=.5/(u*s-l*a),p=(s*c-l*f)*h,d=(u*f-a*c)*h;return p*p+d*d}function ct(t,n,e,r){if(r-e<=20)for(let i=e+1;i<=r;i++){const r=t[i],o=n[r];let u=i-1;for(;u>=e&&n[t[u]]>o;)t[u+1]=t[u--];t[u+1]=r}else{let i=e+1,o=r;ft(t,e+r>>1,i),n[t[e]]>n[t[r]]&&ft(t,e,r),n[t[i]]>n[t[r]]&&ft(t,i,r),n[t[e]]>n[t[i]]&&ft(t,e,i);const u=t[i],l=n[u];for(;;){do{i++}while(n[t[i]]<l);do{o--}while(n[t[o]]>l);if(o<i)break;ft(t,i,o)}t[e+1]=t[o],t[o]=u,r-i+1>=o-e?(ct(t,n,i,r),ct(t,n,e,o-1)):(ct(t,n,e,o-1),ct(t,n,i,r))}}function ft(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function ht(t){return t[0]}function pt(t){return t[1]}function dt(t,n){var e,r,i,o,u,l,a,s,c,f=0,h=t[0],p=t[1],d=n.length;for(e=0;e<d;e++){r=0;var g=n[e],y=g.length-1;if((s=g[0])[0]!==g[y][0]&&s[1]!==g[y][1])throw new Error("First and last coordinates in a ring must be the same");for(o=s[0]-h,u=s[1]-p;r<y;r++){if(l=(c=g[r+1])[0]-h,a=c[1]-p,0===u&&0===a){if(l<=0&&o>=0||o<=0&&l>=0)return 0}else if(a>=0&&u<=0||a<=0&&u>=0){if(0===(i=rt(o,l,u,a,0,0)))return 0;(i>0&&a>0&&u<=0||i<0&&a<=0&&u>0)&&f++}s=c,u=a,o=l}}return f%2!=0}var gt=function(t,n,e={}){if(!t)throw new Error("point is required");if(!n)throw new Error("polygon is required");const r=function(t){if(!t)throw new Error("coord is required");if(!Array.isArray(t)){if("Feature"===t.type&&null!==t.geometry&&"Point"===t.geometry.type)return[...t.geometry.coordinates];if("Point"===t.type)return[...t.coordinates]}if(Array.isArray(t)&&t.length>=2&&!Array.isArray(t[0])&&!Array.isArray(t[1]))return[...t];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(t),i="Feature"===(o=n).type?o.geometry:o;var o;const u=i.type,l=n.bbox;let a=i.coordinates;if(l&&!1===function(t,n){return n[0]<=t[0]&&n[1]<=t[1]&&n[2]>=t[0]&&n[3]>=t[1]}(r,l))return!1;"Polygon"===u&&(a=[a]);let s=!1;for(var c=0;c<a.length;++c){const t=dt(r,a[c]);if(0===t)return!e.ignoreBoundary;t&&(s=!0)}return s},yt=1e-6,vt=1e-12,mt=Math.PI,xt=mt/2,wt=mt/4,_t=2*mt,bt=180/mt,Mt=mt/180,St=Math.abs,Et=Math.atan,Nt=Math.atan2,kt=Math.cos,$t=Math.hypot,At=Math.sin,Pt=Math.sign||function(t){return t>0?1:t<0?-1:0},Tt=Math.sqrt;function jt(t){return t>1?xt:t<-1?-xt:Math.asin(t)}function Ft(t){return(t=At(t/2))*t}function zt(){}function It(t,n){t&&Ot.hasOwnProperty(t.type)&&Ot[t.type](t,n)}var Zt={Feature:function(t,n){It(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)It(e[r].geometry,n)}},Ot={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){Lt(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Lt(e[r],n,0)},Polygon:function(t,n){qt(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)qt(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)It(e[r],n)}};function Lt(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function qt(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)Lt(t[e],n,1);n.polygonEnd()}function Ht(t,n){t&&Zt.hasOwnProperty(t.type)?Zt[t.type](t,n):It(t,n)}var Ct,Rt,Bt,Gt,Ut,Kt,Dt,Vt,Xt,Jt,Yt,Wt,Qt,tn,nn,en,rn=new g,on=new g,un={point:zt,lineStart:zt,lineEnd:zt,polygonStart:function(){rn=new g,un.lineStart=ln,un.lineEnd=an},polygonEnd:function(){var t=+rn;on.add(t<0?_t+t:t),this.lineStart=this.lineEnd=this.point=zt},sphere:function(){on.add(_t)}};function ln(){un.point=sn}function an(){cn(Ct,Rt)}function sn(t,n){un.point=cn,Ct=t,Rt=n,Bt=t*=Mt,Gt=kt(n=(n*=Mt)/2+wt),Ut=At(n)}function cn(t,n){var e=(t*=Mt)-Bt,r=e>=0?1:-1,i=r*e,o=kt(n=(n*=Mt)/2+wt),u=At(n),l=Ut*u,a=Gt*o+l*kt(i),s=l*r*At(i);rn.add(Nt(s,a)),Bt=t,Gt=o,Ut=u}function fn(t){return[Nt(t[1],t[0]),jt(t[2])]}function hn(t){var n=t[0],e=t[1],r=kt(e);return[r*kt(n),r*At(n),At(e)]}function pn(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function dn(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function gn(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function yn(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function vn(t){var n=Tt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var mn,xn,wn,_n,bn,Mn,Sn,En,Nn,kn,$n,An,Pn,Tn,jn,Fn,zn={point:In,lineStart:On,lineEnd:Ln,polygonStart:function(){zn.point=qn,zn.lineStart=Hn,zn.lineEnd=Cn,tn=new g,un.polygonStart()},polygonEnd:function(){un.polygonEnd(),zn.point=In,zn.lineStart=On,zn.lineEnd=Ln,rn<0?(Kt=-(Vt=180),Dt=-(Xt=90)):tn>yt?Xt=90:tn<-1e-6&&(Dt=-90),en[0]=Kt,en[1]=Vt},sphere:function(){Kt=-(Vt=180),Dt=-(Xt=90)}};function In(t,n){nn.push(en=[Kt=t,Vt=t]),n<Dt&&(Dt=n),n>Xt&&(Xt=n)}function Zn(t,n){var e=hn([t*Mt,n*Mt]);if(Qt){var r=dn(Qt,e),i=dn([r[1],-r[0],0],r);vn(i),i=fn(i);var o,u=t-Jt,l=u>0?1:-1,a=i[0]*bt*l,s=St(u)>180;s^(l*Jt<a&&a<l*t)?(o=i[1]*bt)>Xt&&(Xt=o):s^(l*Jt<(a=(a+360)%360-180)&&a<l*t)?(o=-i[1]*bt)<Dt&&(Dt=o):(n<Dt&&(Dt=n),n>Xt&&(Xt=n)),s?t<Jt?Rn(Kt,t)>Rn(Kt,Vt)&&(Vt=t):Rn(t,Vt)>Rn(Kt,Vt)&&(Kt=t):Vt>=Kt?(t<Kt&&(Kt=t),t>Vt&&(Vt=t)):t>Jt?Rn(Kt,t)>Rn(Kt,Vt)&&(Vt=t):Rn(t,Vt)>Rn(Kt,Vt)&&(Kt=t)}else nn.push(en=[Kt=t,Vt=t]);n<Dt&&(Dt=n),n>Xt&&(Xt=n),Qt=e,Jt=t}function On(){zn.point=Zn}function Ln(){en[0]=Kt,en[1]=Vt,zn.point=In,Qt=null}function qn(t,n){if(Qt){var e=t-Jt;tn.add(St(e)>180?e+(e>0?360:-360):e)}else Yt=t,Wt=n;un.point(t,n),Zn(t,n)}function Hn(){un.lineStart()}function Cn(){qn(Yt,Wt),un.lineEnd(),St(tn)>yt&&(Kt=-(Vt=180)),en[0]=Kt,en[1]=Vt,Qt=null}function Rn(t,n){return(n-=t)<0?n+360:n}function Bn(t,n){return t[0]-n[0]}function Gn(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}function Un(t){var n,e,r,i,o,u,l;if(Xt=Vt=-(Kt=Dt=1/0),nn=[],Ht(t,zn),e=nn.length){for(nn.sort(Bn),n=1,o=[r=nn[0]];n<e;++n)Gn(r,(i=nn[n])[0])||Gn(r,i[1])?(Rn(r[0],i[1])>Rn(r[0],r[1])&&(r[1]=i[1]),Rn(i[0],r[1])>Rn(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(u=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(l=Rn(r[1],i[0]))>u&&(u=l,Kt=i[0],Vt=r[1])}return nn=en=null,Kt===1/0||Dt===1/0?[[NaN,NaN],[NaN,NaN]]:[[Kt,Dt],[Vt,Xt]]}var Kn={sphere:zt,point:Dn,lineStart:Xn,lineEnd:Wn,polygonStart:function(){Kn.lineStart=Qn,Kn.lineEnd=te},polygonEnd:function(){Kn.lineStart=Xn,Kn.lineEnd=Wn}};function Dn(t,n){t*=Mt;var e=kt(n*=Mt);Vn(e*kt(t),e*At(t),At(n))}function Vn(t,n,e){++mn,wn+=(t-wn)/mn,_n+=(n-_n)/mn,bn+=(e-bn)/mn}function Xn(){Kn.point=Jn}function Jn(t,n){t*=Mt;var e=kt(n*=Mt);Tn=e*kt(t),jn=e*At(t),Fn=At(n),Kn.point=Yn,Vn(Tn,jn,Fn)}function Yn(t,n){t*=Mt;var e=kt(n*=Mt),r=e*kt(t),i=e*At(t),o=At(n),u=Nt(Tt((u=jn*o-Fn*i)*u+(u=Fn*r-Tn*o)*u+(u=Tn*i-jn*r)*u),Tn*r+jn*i+Fn*o);xn+=u,Mn+=u*(Tn+(Tn=r)),Sn+=u*(jn+(jn=i)),En+=u*(Fn+(Fn=o)),Vn(Tn,jn,Fn)}function Wn(){Kn.point=Dn}function Qn(){Kn.point=ne}function te(){ee(An,Pn),Kn.point=Dn}function ne(t,n){An=t,Pn=n,t*=Mt,n*=Mt,Kn.point=ee;var e=kt(n);Tn=e*kt(t),jn=e*At(t),Fn=At(n),Vn(Tn,jn,Fn)}function ee(t,n){t*=Mt;var e=kt(n*=Mt),r=e*kt(t),i=e*At(t),o=At(n),u=jn*o-Fn*i,l=Fn*r-Tn*o,a=Tn*i-jn*r,s=$t(u,l,a),c=jt(s),f=s&&-c/s;Nn.add(f*u),kn.add(f*l),$n.add(f*a),xn+=c,Mn+=c*(Tn+(Tn=r)),Sn+=c*(jn+(jn=i)),En+=c*(Fn+(Fn=o)),Vn(Tn,jn,Fn)}function re(t){mn=xn=wn=_n=bn=Mn=Sn=En=0,Nn=new g,kn=new g,$n=new g,Ht(t,Kn);var n=+Nn,e=+kn,r=+$n,i=$t(n,e,r);return i<vt&&(n=Mn,e=Sn,r=En,xn<yt&&(n=wn,e=_n,r=bn),(i=$t(n,e,r))<vt)?[NaN,NaN]:[Nt(e,n)*bt,jt(r/i)*bt]}function ie(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function oe(t,n){return St(t)>mt&&(t-=Math.round(t/_t)*_t),[t,n]}function ue(t,n,e){return(t%=_t)?n||e?ie(ae(t),se(n,e)):ae(t):n||e?se(n,e):oe}function le(t){return function(n,e){return St(n+=t)>mt&&(n-=Math.round(n/_t)*_t),[n,e]}}function ae(t){var n=le(t);return n.invert=le(-t),n}function se(t,n){var e=kt(t),r=At(t),i=kt(n),o=At(n);function u(t,n){var u=kt(n),l=kt(t)*u,a=At(t)*u,s=At(n),c=s*e+l*r;return[Nt(a*i-c*o,l*e-s*r),jt(c*i+a*o)]}return u.invert=function(t,n){var u=kt(n),l=kt(t)*u,a=At(t)*u,s=At(n),c=s*i-a*o;return[Nt(a*i+s*o,l*e+c*r),jt(c*e-l*r)]},u}function ce(t,n){(n=hn(n))[0]-=t,vn(n);var e,r=(e=-n[1])>1?0:e<-1?mt:Math.acos(e);return((-n[2]<0?-r:r)+_t-yt)%_t}function fe(){var t,n=[];return{point:function(n,e,r){t.push([n,e,r])},lineStart:function(){n.push(t=[])},lineEnd:zt,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function he(t,n){return St(t[0]-n[0])<yt&&St(t[1]-n[1])<yt}function pe(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function de(t,n,e,r,i){var o,u,l=[],a=[];if(t.forEach((function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],u=t[n];if(he(r,u)){if(!r[2]&&!u[2]){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);return void i.lineEnd()}u[0]+=2e-6}l.push(e=new pe(r,t,null,!0)),a.push(e.o=new pe(r,null,e,!1)),l.push(e=new pe(u,t,null,!1)),a.push(e.o=new pe(u,null,e,!0))}})),l.length){for(a.sort(n),ge(l),ge(a),o=0,u=a.length;o<u;++o)a[o].e=e=!e;for(var s,c,f=l[0];;){for(var h=f,p=!0;h.v;)if((h=h.n)===f)return;s=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(p)for(o=0,u=s.length;o<u;++o)i.point((c=s[o])[0],c[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(p)for(s=h.p.z,o=s.length-1;o>=0;--o)i.point((c=s[o])[0],c[1]);else r(h.x,h.p.x,-1,i);h=h.p}s=(h=h.o).z,p=!p}while(!h.v);i.lineEnd()}}}function ge(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}function ye(t){return St(t[0])<=mt?t[0]:Pt(t[0])*((St(t[0])+mt)%_t-mt)}function ve(t,n){var e=ye(n),r=n[1],i=At(r),o=[At(e),-kt(e),0],u=0,l=0,a=new g;1===i?r=xt+yt:-1===i&&(r=-xt-yt);for(var s=0,c=t.length;s<c;++s)if(h=(f=t[s]).length)for(var f,h,p=f[h-1],d=ye(p),y=p[1]/2+wt,v=At(y),m=kt(y),x=0;x<h;++x,d=_,v=M,m=S,p=w){var w=f[x],_=ye(w),b=w[1]/2+wt,M=At(b),S=kt(b),E=_-d,N=E>=0?1:-1,k=N*E,$=k>mt,A=v*M;if(a.add(Nt(A*N*At(k),m*S+A*kt(k))),u+=$?E+N*_t:E,$^d>=e^_>=e){var P=dn(hn(p),hn(w));vn(P);var T=dn(o,P);vn(T);var j=($^E>=0?-1:1)*jt(T[2]);(r>j||r===j&&(P[0]||P[1]))&&(l+=$^E>=0?1:-1)}}return(u<-1e-6||u<yt&&a<-1e-12)^1&l}function me(t,n,e,r){return function(i){var o,u,l,a=n(i),s=fe(),c=n(s),f=!1,h={point:p,lineStart:g,lineEnd:y,polygonStart:function(){h.point=v,h.lineStart=m,h.lineEnd=x,u=[],o=[]},polygonEnd:function(){h.point=p,h.lineStart=g,h.lineEnd=y,u=_(u);var t=ve(o,r);u.length?(f||(i.polygonStart(),f=!0),de(u,we,t,e,i)):t&&(f||(i.polygonStart(),f=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),f&&(i.polygonEnd(),f=!1),u=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function p(n,e){t(n,e)&&i.point(n,e)}function d(t,n){a.point(t,n)}function g(){h.point=d,a.lineStart()}function y(){h.point=p,a.lineEnd()}function v(t,n){l.push([t,n]),c.point(t,n)}function m(){c.lineStart(),l=[]}function x(){v(l[0][0],l[0][1]),c.lineEnd();var t,n,e,r,a=c.clean(),h=s.result(),p=h.length;if(l.pop(),o.push(l),l=null,p)if(1&a){if((n=(e=h[0]).length-1)>0){for(f||(i.polygonStart(),f=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else p>1&&2&a&&h.push(h.pop().concat(h.shift())),u.push(h.filter(xe))}return h}}function xe(t){return t.length>1}function we(t,n){return((t=t.x)[0]<0?t[1]-xt-yt:xt-t[1])-((n=n.x)[0]<0?n[1]-xt-yt:xt-n[1])}oe.invert=oe;var _e=me((function(){return!0}),(function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,u){var l=o>0?mt:-mt,a=St(o-e);St(a-mt)<yt?(t.point(e,r=(r+u)/2>0?xt:-xt),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(l,r),t.point(o,r),n=0):i!==l&&a>=mt&&(St(e-i)<yt&&(e-=i*yt),St(o-l)<yt&&(o-=l*yt),r=function(t,n,e,r){var i,o,u=At(t-e);return St(u)>yt?Et((At(n)*(o=kt(r))*At(e)-At(r)*(i=kt(n))*At(t))/(i*o*u)):(n+r)/2}(e,r,o,u),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(l,r),n=0),t.point(e=o,r=u),i=l},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}),(function(t,n,e,r){var i;if(null==t)i=e*xt,r.point(-mt,i),r.point(0,i),r.point(mt,i),r.point(mt,0),r.point(mt,-i),r.point(0,-i),r.point(-mt,-i),r.point(-mt,0),r.point(-mt,i);else if(St(t[0]-n[0])>yt){var o=t[0]<n[0]?mt:-mt;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])}),[-mt,-xt]);function be(t){var n=kt(t),e=2*Mt,r=n>0,i=St(n)>yt;function o(t,e){return kt(t)*kt(e)>n}function u(t,e,r){var i=[1,0,0],o=dn(hn(t),hn(e)),u=pn(o,o),l=o[0],a=u-l*l;if(!a)return!r&&t;var s=n*u/a,c=-n*l/a,f=dn(i,o),h=yn(i,s);gn(h,yn(o,c));var p=f,d=pn(h,p),g=pn(p,p),y=d*d-g*(pn(h,h)-1);if(!(y<0)){var v=Tt(y),m=yn(p,(-d-v)/g);if(gn(m,h),m=fn(m),!r)return m;var x,w=t[0],_=e[0],b=t[1],M=e[1];_<w&&(x=w,w=_,_=x);var S=_-w,E=St(S-mt)<yt;if(!E&&M<b&&(x=b,b=M,M=x),E||S<yt?E?b+M>0^m[1]<(St(m[0]-w)<yt?b:M):b<=m[1]&&m[1]<=M:S>mt^(w<=m[0]&&m[0]<=_)){var N=yn(p,(-d+v)/g);return gn(N,h),[m,fn(N)]}}}function l(n,e){var i=r?t:mt-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return me(o,(function(t){var n,e,a,s,c;return{lineStart:function(){s=a=!1,c=1},point:function(f,h){var p,d=[f,h],g=o(f,h),y=r?g?0:l(f,h):g?l(f+(f<0?mt:-mt),h):0;if(!n&&(s=a=g)&&t.lineStart(),g!==a&&(!(p=u(n,d))||he(n,p)||he(d,p))&&(d[2]=1),g!==a)c=0,g?(t.lineStart(),p=u(d,n),t.point(p[0],p[1])):(p=u(n,d),t.point(p[0],p[1],2),t.lineEnd()),n=p;else if(i&&n&&r^g){var v;y&e||!(v=u(d,n,!0))||(c=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1],3)))}!g||n&&he(n,d)||t.point(d[0],d[1]),n=d,a=g,e=y},lineEnd:function(){a&&t.lineEnd(),n=null},clean:function(){return c|(s&&a)<<1}}}),(function(n,r,i,o){!function(t,n,e,r,i,o){if(e){var u=kt(n),l=At(n),a=r*e;null==i?(i=n+r*_t,o=n-a/2):(i=ce(u,i),o=ce(u,o),(r>0?i<o:i>o)&&(i+=r*_t));for(var s,c=i;r>0?c>o:c<o;c-=a)s=fn([u,-l*kt(c),-l*At(c)]),t.point(s[0],s[1])}}(o,t,e,i,n,r)}),r?[0,-t]:[-mt,t-mt])}var Me,Se,Ee,Ne,ke=1e9,$e=-1e9;function Ae(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,l,s){var c=0,f=0;if(null==i||(c=u(i,l))!==(f=u(o,l))||a(i,o)<0^l>0)do{s.point(0===c||3===c?t:e,c>1?r:n)}while((c=(c+l+4)%4)!==f);else s.point(o[0],o[1])}function u(r,i){return St(r[0]-t)<yt?i>0?0:3:St(r[0]-e)<yt?i>0?2:1:St(r[1]-n)<yt?i>0?1:0:i>0?3:2}function l(t,n){return a(t.x,n.x)}function a(t,n){var e=u(t,1),r=u(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(u){var a,s,c,f,h,p,d,g,y,v,m,x=u,w=fe(),b={point:M,lineStart:function(){b.point=S,s&&s.push(c=[]);v=!0,y=!1,d=g=NaN},lineEnd:function(){a&&(S(f,h),p&&y&&w.rejoin(),a.push(w.result()));b.point=M,y&&x.lineEnd()},polygonStart:function(){x=w,a=[],s=[],m=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=s.length;e<i;++e)for(var o,u,l=s[e],a=1,c=l.length,f=l[0],h=f[0],p=f[1];a<c;++a)o=h,u=p,h=(f=l[a])[0],p=f[1],u<=r?p>r&&(h-o)*(r-u)>(p-u)*(t-o)&&++n:p<=r&&(h-o)*(r-u)<(p-u)*(t-o)&&--n;return n}(),e=m&&n,i=(a=_(a)).length;(e||i)&&(u.polygonStart(),e&&(u.lineStart(),o(null,null,1,u),u.lineEnd()),i&&de(a,l,n,o,u),u.polygonEnd());x=u,a=s=c=null}};function M(t,n){i(t,n)&&x.point(t,n)}function S(o,u){var l=i(o,u);if(s&&c.push([o,u]),v)f=o,h=u,p=l,v=!1,l&&(x.lineStart(),x.point(o,u));else if(l&&y)x.point(o,u);else{var a=[d=Math.max($e,Math.min(ke,d)),g=Math.max($e,Math.min(ke,g))],w=[o=Math.max($e,Math.min(ke,o)),u=Math.max($e,Math.min(ke,u))];!function(t,n,e,r,i,o){var u,l=t[0],a=t[1],s=0,c=1,f=n[0]-l,h=n[1]-a;if(u=e-l,f||!(u>0)){if(u/=f,f<0){if(u<s)return;u<c&&(c=u)}else if(f>0){if(u>c)return;u>s&&(s=u)}if(u=i-l,f||!(u<0)){if(u/=f,f<0){if(u>c)return;u>s&&(s=u)}else if(f>0){if(u<s)return;u<c&&(c=u)}if(u=r-a,h||!(u>0)){if(u/=h,h<0){if(u<s)return;u<c&&(c=u)}else if(h>0){if(u>c)return;u>s&&(s=u)}if(u=o-a,h||!(u<0)){if(u/=h,h<0){if(u>c)return;u>s&&(s=u)}else if(h>0){if(u<s)return;u<c&&(c=u)}return s>0&&(t[0]=l+s*f,t[1]=a+s*h),c<1&&(n[0]=l+c*f,n[1]=a+c*h),!0}}}}}(a,w,t,n,e,r)?l&&(x.lineStart(),x.point(o,u),m=!1):(y||(x.lineStart(),x.point(a[0],a[1])),x.point(w[0],w[1]),l||x.lineEnd(),m=!1)}d=o,g=u,y=l}return b}}var Pe={sphere:zt,point:zt,lineStart:function(){Pe.point=je,Pe.lineEnd=Te},lineEnd:zt,polygonStart:zt,polygonEnd:zt};function Te(){Pe.point=Pe.lineEnd=zt}function je(t,n){Se=t*=Mt,Ee=At(n*=Mt),Ne=kt(n),Pe.point=Fe}function Fe(t,n){t*=Mt;var e=At(n*=Mt),r=kt(n),i=St(t-Se),o=kt(i),u=r*At(i),l=Ne*e-Ee*r*o,a=Ee*e+Ne*r*o;Me.add(Nt(Tt(u*u+l*l),a)),Se=t,Ee=e,Ne=r}var ze=[null,null],Ie={type:"LineString",coordinates:ze};function Ze(t,n){return ze[0]=t,ze[1]=n,function(t){return Me=new g,Ht(t,Pe),+Me}(Ie)}var Oe={Feature:function(t,n){return qe(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(qe(e[r].geometry,n))return!0;return!1}},Le={Sphere:function(){return!0},Point:function(t,n){return He(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(He(e[r],n))return!0;return!1},LineString:function(t,n){return Ce(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Ce(e[r],n))return!0;return!1},Polygon:function(t,n){return Re(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Re(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(qe(e[r],n))return!0;return!1}};function qe(t,n){return!(!t||!Le.hasOwnProperty(t.type))&&Le[t.type](t,n)}function He(t,n){return 0===Ze(t,n)}function Ce(t,n){for(var e,r,i,o=0,u=t.length;o<u;o++){if(0===(r=Ze(t[o],n)))return!0;if(o>0&&(i=Ze(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<vt*i)return!0;e=r}return!1}function Re(t,n){return!!ve(t.map(Be),Ge(n))}function Be(t){return(t=t.map(Ge)).pop(),t}function Ge(t){return[t[0]*Mt,t[1]*Mt]}var Ue=t=>t,Ke=1/0,De=Ke,Ve=-Ke,Xe=Ve,Je={point:function(t,n){t<Ke&&(Ke=t);t>Ve&&(Ve=t);n<De&&(De=n);n>Xe&&(Xe=n)},lineStart:zt,lineEnd:zt,polygonStart:zt,polygonEnd:zt,result:function(){var t=[[Ke,De],[Ve,Xe]];return Ve=Xe=-(De=Ke=1/0),t}};function Ye(t){return function(n){var e=new We;for(var r in t)e[r]=t[r];return e.stream=n,e}}function We(){}function Qe(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Ht(e,t.stream(Je)),n(Je.result()),null!=r&&t.clipExtent(r),t}function tr(t,n,e){return Qe(t,(function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),u=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,l=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([u,l])}),e)}We.prototype={constructor:We,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var nr=kt(30*Mt);function er(t,n){return+n?function(t,n){function e(r,i,o,u,l,a,s,c,f,h,p,d,g,y){var v=s-r,m=c-i,x=v*v+m*m;if(x>4*n&&g--){var w=u+h,_=l+p,b=a+d,M=Tt(w*w+_*_+b*b),S=jt(b/=M),E=St(St(b)-1)<yt||St(o-f)<yt?(o+f)/2:Nt(_,w),N=t(E,S),k=N[0],$=N[1],A=k-r,P=$-i,T=m*A-v*P;(T*T/x>n||St((v*A+m*P)/x-.5)>.3||u*h+l*p+a*d<nr)&&(e(r,i,o,u,l,a,k,$,E,w/=M,_/=M,b,g,y),y.point(k,$),e(k,$,E,w,_,b,s,c,f,h,p,d,g,y))}}return function(n){var r,i,o,u,l,a,s,c,f,h,p,d,g={point:y,lineStart:v,lineEnd:x,polygonStart:function(){n.polygonStart(),g.lineStart=w},polygonEnd:function(){n.polygonEnd(),g.lineStart=v}};function y(e,r){e=t(e,r),n.point(e[0],e[1])}function v(){c=NaN,g.point=m,n.lineStart()}function m(r,i){var o=hn([r,i]),u=t(r,i);e(c,f,s,h,p,d,c=u[0],f=u[1],s=r,h=o[0],p=o[1],d=o[2],16,n),n.point(c,f)}function x(){g.point=y,n.lineEnd()}function w(){v(),g.point=_,g.lineEnd=b}function _(t,n){m(r=t,n),i=c,o=f,u=h,l=p,a=d,g.point=m}function b(){e(c,f,s,h,p,d,i,o,r,u,l,a,16,n),g.lineEnd=x,x()}return g}}(t,n):function(t){return Ye({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var rr=Ye({point:function(t,n){this.stream.point(t*Mt,n*Mt)}});function ir(t,n,e,r,i,o){if(!o)return function(t,n,e,r,i){function o(o,u){return[n+t*(o*=r),e-t*(u*=i)]}return o.invert=function(o,u){return[(o-n)/t*r,(e-u)/t*i]},o}(t,n,e,r,i);var u=kt(o),l=At(o),a=u*t,s=l*t,c=u/t,f=l/t,h=(l*e-u*n)/t,p=(l*n+u*e)/t;function d(t,o){return[a*(t*=r)-s*(o*=i)+n,e-s*t-a*o]}return d.invert=function(t,n){return[r*(c*t-f*n+h),i*(p-f*t-c*n)]},d}function or(t){return function(t){var n,e,r,i,o,u,l,a,s,c,f=150,h=480,p=250,d=0,g=0,y=0,v=0,m=0,x=0,w=1,_=1,b=null,M=_e,S=null,E=Ue,N=.5;function k(t){return a(t[0]*Mt,t[1]*Mt)}function $(t){return(t=a.invert(t[0],t[1]))&&[t[0]*bt,t[1]*bt]}function A(){var t=ir(f,0,0,w,_,x).apply(null,n(d,g)),r=ir(f,h-t[0],p-t[1],w,_,x);return e=ue(y,v,m),l=ie(n,r),a=ie(e,l),u=er(l,N),P()}function P(){return s=c=null,k}return k.stream=function(t){return s&&c===t?s:s=rr(function(t){return Ye({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(M(u(E(c=t)))))},k.preclip=function(t){return arguments.length?(M=t,b=void 0,P()):M},k.postclip=function(t){return arguments.length?(E=t,S=r=i=o=null,P()):E},k.clipAngle=function(t){return arguments.length?(M=+t?be(b=t*Mt):(b=null,_e),P()):b*bt},k.clipExtent=function(t){return arguments.length?(E=null==t?(S=r=i=o=null,Ue):Ae(S=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),P()):null==S?null:[[S,r],[i,o]]},k.scale=function(t){return arguments.length?(f=+t,A()):f},k.translate=function(t){return arguments.length?(h=+t[0],p=+t[1],A()):[h,p]},k.center=function(t){return arguments.length?(d=t[0]%360*Mt,g=t[1]%360*Mt,A()):[d*bt,g*bt]},k.rotate=function(t){return arguments.length?(y=t[0]%360*Mt,v=t[1]%360*Mt,m=t.length>2?t[2]%360*Mt:0,A()):[y*bt,v*bt,m*bt]},k.angle=function(t){return arguments.length?(x=t%360*Mt,A()):x*bt},k.reflectX=function(t){return arguments.length?(w=t?-1:1,A()):w<0},k.reflectY=function(t){return arguments.length?(_=t?-1:1,A()):_<0},k.precision=function(t){return arguments.length?(u=er(l,N=t*t),P()):Tt(N)},k.fitExtent=function(t,n){return tr(k,t,n)},k.fitSize=function(t,n){return function(t,n,e){return tr(t,[[0,0],n],e)}(k,t,n)},k.fitWidth=function(t,n){return function(t,n,e){return Qe(t,(function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,u=-i*e[0][1];t.scale(150*i).translate([o,u])}),e)}(k,t,n)},k.fitHeight=function(t,n){return function(t,n,e){return Qe(t,(function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],u=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,u])}),e)}(k,t,n)},function(){return n=t.apply(this,arguments),k.invert=n.invert&&$,A()}}((function(){return t}))()}function ur(t,n){var e=kt(n),r=1+kt(t)*e;return[e*At(t)/r,At(n)/r]}function lr(){return or(ur).scale(250).clipAngle(142)}ur.invert=function(t){return function(n,e){var r=Tt(n*n+e*e),i=t(r),o=At(i),u=kt(i);return[Nt(n*o,r*u),jt(r&&e*o/r)]}}((function(t){return 2*Et(t)}));const ar=1e-6;class sr{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,n){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,n){this._+=`L${this._x1=+t},${this._y1=+n}`}arc(t,n,e){const r=(t=+t)+(e=+e),i=n=+n;if(e<0)throw new Error("negative radius");null===this._x1?this._+=`M${r},${i}`:(Math.abs(this._x1-r)>ar||Math.abs(this._y1-i)>ar)&&(this._+="L"+r+","+i),e&&(this._+=`A${e},${e},0,1,1,${t-e},${n}A${e},${e},0,1,1,${this._x1=r},${this._y1=i}`)}rect(t,n,e,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${+e}v${+r}h${-e}Z`}value(){return this._||null}}class cr{constructor(){this._=[]}moveTo(t,n){this._.push([t,n])}closePath(){this._.push(this._[0].slice())}lineTo(t,n){this._.push([t,n])}value(){return this._.length?this._:null}}class fr{constructor(t,[n,e,r,i]=[0,0,960,500]){if(!((r=+r)>=(n=+n)&&(i=+i)>=(e=+e)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(2*t.points.length),this.vectors=new Float64Array(2*t.points.length),this.xmax=r,this.xmin=n,this.ymax=i,this.ymin=e,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:n,triangles:e},vectors:r}=this;let i,o;const u=this.circumcenters=this._circumcenters.subarray(0,e.length/3*2);for(let r,l,a=0,s=0,c=e.length;a<c;a+=3,s+=2){const c=2*e[a],f=2*e[a+1],h=2*e[a+2],p=t[c],d=t[c+1],g=t[f],y=t[f+1],v=t[h],m=t[h+1],x=g-p,w=y-d,_=v-p,b=m-d,M=2*(x*b-w*_);if(Math.abs(M)<1e-9){if(void 0===i){i=o=0;for(const e of n)i+=t[2*e],o+=t[2*e+1];i/=n.length,o/=n.length}const e=1e9*Math.sign((i-p)*b-(o-d)*_);r=(p+v)/2-e*b,l=(d+m)/2+e*_}else{const t=1/M,n=x*x+w*w,e=_*_+b*b;r=p+(b*n-w*e)*t,l=d+(x*e-_*n)*t}u[s]=r,u[s+1]=l}let l,a,s,c=n[n.length-1],f=4*c,h=t[2*c],p=t[2*c+1];r.fill(0);for(let e=0;e<n.length;++e)c=n[e],l=f,a=h,s=p,f=4*c,h=t[2*c],p=t[2*c+1],r[l+2]=r[f]=s-p,r[l+3]=r[f+1]=h-a}render(t){const n=null==t?t=new sr:void 0,{delaunay:{halfedges:e,inedges:r,hull:i},circumcenters:o,vectors:u}=this;if(i.length<=1)return null;for(let n=0,r=e.length;n<r;++n){const r=e[n];if(r<n)continue;const i=2*Math.floor(n/3),u=2*Math.floor(r/3),l=o[i],a=o[i+1],s=o[u],c=o[u+1];this._renderSegment(l,a,s,c,t)}let l,a=i[i.length-1];for(let n=0;n<i.length;++n){l=a,a=i[n];const e=2*Math.floor(r[a]/3),s=o[e],c=o[e+1],f=4*l,h=this._project(s,c,u[f+2],u[f+3]);h&&this._renderSegment(s,c,h[0],h[1],t)}return n&&n.value()}renderBounds(t){const n=null==t?t=new sr:void 0;return t.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),n&&n.value()}renderCell(t,n){const e=null==n?n=new sr:void 0,r=this._clip(t);if(null===r||!r.length)return;n.moveTo(r[0],r[1]);let i=r.length;for(;r[0]===r[i-2]&&r[1]===r[i-1]&&i>1;)i-=2;for(let t=2;t<i;t+=2)r[t]===r[t-2]&&r[t+1]===r[t-1]||n.lineTo(r[t],r[t+1]);return n.closePath(),e&&e.value()}*cellPolygons(){const{delaunay:{points:t}}=this;for(let n=0,e=t.length/2;n<e;++n){const t=this.cellPolygon(n);t&&(t.index=n,yield t)}}cellPolygon(t){const n=new cr;return this.renderCell(t,n),n.value()}_renderSegment(t,n,e,r,i){let o;const u=this._regioncode(t,n),l=this._regioncode(e,r);0===u&&0===l?(i.moveTo(t,n),i.lineTo(e,r)):(o=this._clipSegment(t,n,e,r,u,l))&&(i.moveTo(o[0],o[1]),i.lineTo(o[2],o[3]))}contains(t,n,e){return(n=+n)==n&&(e=+e)==e&&this.delaunay._step(t,n,e)===t}*neighbors(t){const n=this._clip(t);if(n)for(const e of this.delaunay.neighbors(t)){const t=this._clip(e);if(t)t:for(let r=0,i=n.length;r<i;r+=2)for(let o=0,u=t.length;o<u;o+=2)if(n[r]===t[o]&&n[r+1]===t[o+1]&&n[(r+2)%i]===t[(o+u-2)%u]&&n[(r+3)%i]===t[(o+u-1)%u]){yield e;break t}}}_cell(t){const{circumcenters:n,delaunay:{inedges:e,halfedges:r,triangles:i}}=this,o=e[t];if(-1===o)return null;const u=[];let l=o;do{const e=Math.floor(l/3);if(u.push(n[2*e],n[2*e+1]),l=l%3==2?l-2:l+1,i[l]!==t)break;l=r[l]}while(l!==o&&-1!==l);return u}_clip(t){if(0===t&&1===this.delaunay.hull.length)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const n=this._cell(t);if(null===n)return null;const{vectors:e}=this,r=4*t;return this._simplify(e[r]||e[r+1]?this._clipInfinite(t,n,e[r],e[r+1],e[r+2],e[r+3]):this._clipFinite(t,n))}_clipFinite(t,n){const e=n.length;let r,i,o,u,l=null,a=n[e-2],s=n[e-1],c=this._regioncode(a,s),f=0;for(let h=0;h<e;h+=2)if(r=a,i=s,a=n[h],s=n[h+1],o=c,c=this._regioncode(a,s),0===o&&0===c)u=f,f=0,l?l.push(a,s):l=[a,s];else{let n,e,h,p,d;if(0===o){if(null===(n=this._clipSegment(r,i,a,s,o,c)))continue;[e,h,p,d]=n}else{if(null===(n=this._clipSegment(a,s,r,i,c,o)))continue;[p,d,e,h]=n,u=f,f=this._edgecode(e,h),u&&f&&this._edge(t,u,f,l,l.length),l?l.push(e,h):l=[e,h]}u=f,f=this._edgecode(p,d),u&&f&&this._edge(t,u,f,l,l.length),l?l.push(p,d):l=[p,d]}if(l)u=f,f=this._edgecode(l[0],l[1]),u&&f&&this._edge(t,u,f,l,l.length);else if(this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return l}_clipSegment(t,n,e,r,i,o){const u=i<o;for(u&&([t,n,e,r,i,o]=[e,r,t,n,o,i]);;){if(0===i&&0===o)return u?[e,r,t,n]:[t,n,e,r];if(i&o)return null;let l,a,s=i||o;8&s?(l=t+(e-t)*(this.ymax-n)/(r-n),a=this.ymax):4&s?(l=t+(e-t)*(this.ymin-n)/(r-n),a=this.ymin):2&s?(a=n+(r-n)*(this.xmax-t)/(e-t),l=this.xmax):(a=n+(r-n)*(this.xmin-t)/(e-t),l=this.xmin),i?(t=l,n=a,i=this._regioncode(t,n)):(e=l,r=a,o=this._regioncode(e,r))}}_clipInfinite(t,n,e,r,i,o){let u,l=Array.from(n);if((u=this._project(l[0],l[1],e,r))&&l.unshift(u[0],u[1]),(u=this._project(l[l.length-2],l[l.length-1],i,o))&&l.push(u[0],u[1]),l=this._clipFinite(t,l))for(let n,e=0,r=l.length,i=this._edgecode(l[r-2],l[r-1]);e<r;e+=2)n=i,i=this._edgecode(l[e],l[e+1]),n&&i&&(e=this._edge(t,n,i,l,e),r=l.length);else this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(l=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return l}_edge(t,n,e,r,i){for(;n!==e;){let e,o;switch(n){case 5:n=4;continue;case 4:n=6,e=this.xmax,o=this.ymin;break;case 6:n=2;continue;case 2:n=10,e=this.xmax,o=this.ymax;break;case 10:n=8;continue;case 8:n=9,e=this.xmin,o=this.ymax;break;case 9:n=1;continue;case 1:n=5,e=this.xmin,o=this.ymin}r[i]===e&&r[i+1]===o||!this.contains(t,e,o)||(r.splice(i,0,e,o),i+=2)}return i}_project(t,n,e,r){let i,o,u,l=1/0;if(r<0){if(n<=this.ymin)return null;(i=(this.ymin-n)/r)<l&&(u=this.ymin,o=t+(l=i)*e)}else if(r>0){if(n>=this.ymax)return null;(i=(this.ymax-n)/r)<l&&(u=this.ymax,o=t+(l=i)*e)}if(e>0){if(t>=this.xmax)return null;(i=(this.xmax-t)/e)<l&&(o=this.xmax,u=n+(l=i)*r)}else if(e<0){if(t<=this.xmin)return null;(i=(this.xmin-t)/e)<l&&(o=this.xmin,u=n+(l=i)*r)}return[o,u]}_edgecode(t,n){return(t===this.xmin?1:t===this.xmax?2:0)|(n===this.ymin?4:n===this.ymax?8:0)}_regioncode(t,n){return(t<this.xmin?1:t>this.xmax?2:0)|(n<this.ymin?4:n>this.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let n=0;n<t.length;n+=2){const e=(n+2)%t.length,r=(n+4)%t.length;(t[n]===t[e]&&t[e]===t[r]||t[n+1]===t[e+1]&&t[e+1]===t[r+1])&&(t.splice(e,2),n-=2)}t.length||(t=null)}return t}}const hr=2*Math.PI,pr=Math.pow;function dr(t){return t[0]}function gr(t){return t[1]}function yr(t,n,e){return[t+Math.sin(t+n)*e,n+Math.cos(t-n)*e]}class vr{static from(t,n=dr,e=gr,r){return new vr("length"in t?function(t,n,e,r){const i=t.length,o=new Float64Array(2*i);for(let u=0;u<i;++u){const i=t[u];o[2*u]=n.call(r,i,u,t),o[2*u+1]=e.call(r,i,u,t)}return o}(t,n,e,r):Float64Array.from(function*(t,n,e,r){let i=0;for(const o of t)yield n.call(r,o,i,t),yield e.call(r,o,i,t),++i}(t,n,e,r)))}constructor(t){this._delaunator=new ut(t),this.inedges=new Int32Array(t.length/2),this._hullIndex=new Int32Array(t.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const t=this._delaunator,n=this.points;if(t.hull&&t.hull.length>2&&function(t){const{triangles:n,coords:e}=t;for(let t=0;t<n.length;t+=3){const r=2*n[t],i=2*n[t+1],o=2*n[t+2];if((e[o]-e[r])*(e[i+1]-e[r+1])-(e[i]-e[r])*(e[o+1]-e[r+1])>1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:n.length/2},((t,n)=>n)).sort(((t,e)=>n[2*t]-n[2*e]||n[2*t+1]-n[2*e+1]));const t=this.collinear[0],e=this.collinear[this.collinear.length-1],r=[n[2*t],n[2*t+1],n[2*e],n[2*e+1]],i=1e-8*Math.hypot(r[3]-r[1],r[2]-r[0]);for(let t=0,e=n.length/2;t<e;++t){const e=yr(n[2*t],n[2*t+1],i);n[2*t]=e[0],n[2*t+1]=e[1]}this._delaunator=new ut(n)}else delete this.collinear;const e=this.halfedges=this._delaunator.halfedges,r=this.hull=this._delaunator.hull,i=this.triangles=this._delaunator.triangles,o=this.inedges.fill(-1),u=this._hullIndex.fill(-1);for(let t=0,n=e.length;t<n;++t){const n=i[t%3==2?t-2:t+1];-1!==e[t]&&-1!==o[n]||(o[n]=t)}for(let t=0,n=r.length;t<n;++t)u[r[t]]=t;r.length<=2&&r.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=r[0],o[r[0]]=1,2===r.length&&(o[r[1]]=0,this.triangles[1]=r[1],this.triangles[2]=r[1]))}voronoi(t){return new fr(this,t)}*neighbors(t){const{inedges:n,hull:e,_hullIndex:r,halfedges:i,triangles:o,collinear:u}=this;if(u){const n=u.indexOf(t);return n>0&&(yield u[n-1]),void(n<u.length-1&&(yield u[n+1]))}const l=n[t];if(-1===l)return;let a=l,s=-1;do{if(yield s=o[a],a=a%3==2?a-2:a+1,o[a]!==t)return;if(a=i[a],-1===a){const n=e[(r[t]+1)%e.length];return void(n!==s&&(yield n))}}while(a!==l)}find(t,n,e=0){if((t=+t)!=t||(n=+n)!=n)return-1;const r=e;let i;for(;(i=this._step(e,t,n))>=0&&i!==e&&i!==r;)e=i;return i}_step(t,n,e){const{inedges:r,hull