// https://github.com/gvarnavi/d3-force-md v2.2.2 Copyright 2021 Georgios Varnavides
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("d3-quadtree"),require("d3-dispatch"),require("d3-timer")):"function"==typeof define&&define.amd?define(["exports","d3-quadtree","d3-dispatch","d3-timer"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).d3=n.d3||{},n.d3,n.d3,n.d3)}(this,(function(n,t,e,r){"use strict";function i(n){return function(){return n}}function o(n){return 1e-6*(n()-.5)}function f(n){return n.x+n.vx}function u(n){return n.y+n.vy}function a(n){return n.index}function c(n,t){var e=n.get(t);if(!e)throw new Error("node not found: "+t);return e}const l=4294967296;function h(n){return n.x}function y(n){return n.y}var x=Math.PI*(3-Math.sqrt(5));n.forceCenter=function(n,t){var e,r=1;function i(){var i,o,f=e.length,u=0,a=0;for(i=0;i<f;++i)u+=(o=e[i]).x,a+=o.y;for(u=(u/f-n)*r,a=(a/f-t)*r,i=0;i<f;++i)(o=e[i]).x-=u,o.y-=a}return null==n&&(n=0),null==t&&(t=0),i.initialize=function(n){e=n},i.x=function(t){return arguments.length?(n=+t,i):n},i.y=function(n){return arguments.length?(t=+n,i):t},i.strength=function(n){return arguments.length?(r=+n,i):r},i},n.forceCentralPotential=function(){var n,e,r,f,u,a=i(1),c=.75,l=1/0,x=.0625,v=n=>Math.pow(n,-12)-2*Math.pow(n,-6),s=n=>12*(Math.pow(n,6)-1)/Math.pow(n,14);function d(r){var i,o=n.length,u=t.quadtree(n,h,y).visitAfter(p);for(f=r,i=0;i<o;++i)(e=n[i]).energy=-1,e.force_x=0,e.force_y=0,u.visit(M)}function g(){if(n){var t,e,r=n.length;for(u=new Array(r),t=0;t<r;++t)e=n[t],u[e.index]=+a(e,t,n)}}function p(n){var t,e,r,i,o,f=0,a=0;if(n.length){for(r=i=o=0;o<4;++o)(t=n[o])&&(e=Math.abs(t.value))&&(f+=t.value,a+=e,r+=e*t.x,i+=e*t.y);n.x=r/a,n.y=i/a}else{(t=n).x=t.data.x,t.y=t.data.y;do{f+=u[t.data.index]}while(t=t.next)}n.value=f}function M(n,t,i,a){if(!n.value)return!0;var h,y,d=n.x-e.x,g=n.y-e.y,p=a-t,M=d*d+g*g;if(p*p/x<M)return M<l&&(0===d&&(M+=(d=o(r))*d),0===g&&(M+=(g=o(r))*g),M<c&&(M=Math.sqrt(c*M)),y=Math.sqrt(M),h=s(y),e.energy+=v(y)*n.value,e.force_x+=h*d*n.value*f,e.force_y+=h*g*n.value*f),!0;if(!(n.length||M>=l)){(n.data!==e||n.next)&&(0===d&&(M+=(d=o(r))*d),0===g&&(M+=(g=o(r))*g),M<c&&(M=Math.sqrt(c*M))),y=Math.sqrt(M),h=s(y);do{n.data!==e&&(p=u[n.data.index],e.energy+=v(y)*p,e.force_x+=h*d*p*f,e.force_y+=h*g*p*f)}while(n=n.next)}}return d.initialize=function(t,e){n=t,r=e,g()},d.strength=function(n){return arguments.length?(a="function"==typeof n?n:i(+n),g(),d):a},d.distanceMin=function(n){return arguments.length?(c=n*n,d):Math.sqrt(c)},d.distanceMax=function(n){return arguments.length?(l=n*n,d):Math.sqrt(l)},d.theta=function(n){return arguments.length?(x=n*n,d):Math.sqrt(x)},d.potentialFunction=function(n){return arguments.length?(v=n,d):v},d.gradientFunction=function(n){return arguments.length?(s=n,d):s},d},n.forceCollide=function(n){var e,r,a,c=1,l=1;function h(){for(var n,i,h,x,v,s,d,g=e.length,p=0;p<l;++p)for(i=t.quadtree(e,f,u).visitAfter(y),n=0;n<g;++n)h=e[n],s=r[h.index],d=s*s,x=h.x+h.vx,v=h.y+h.vy,i.visit(M);function M(n,t,e,r,i){var f=n.data,u=n.r,l=s+u;if(!f)return t>x+l||r<x-l||e>v+l||i<v-l;if(f.index>h.index){var y=x-f.x-f.vx,g=v-f.y-f.vy,p=y*y+g*g;p<l*l&&(0===y&&(p+=(y=o(a))*y),0===g&&(p+=(g=o(a))*g),p=(l-(p=Math.sqrt(p)))/p*c,h.vx+=(y*=p)*(l=(u*=u)/(d+u)),h.vy+=(g*=p)*l,f.vx-=y*(l=1-l),f.vy-=g*l)}}}function y(n){if(n.data)return n.r=r[n.data.index];for(var t=n.r=0;t<4;++t)n[t]&&n[t].r>n.r&&(n.r=n[t].r)}function x(){if(e){var t,i,o=e.length;for(r=new Array(o),t=0;t<o;++t)i=e[t],r[i.index]=+n(i,t,e)}}return"function"!=typeof n&&(n=i(null==n?1:+n)),h.initialize=function(n,t){e=n,a=t,x()},h.iterations=function(n){return arguments.length?(l=+n,h):l},h.strength=function(n){return arguments.length?(c=+n,h):c},h.radius=function(t){return arguments.length?(n="function"==typeof t?t:i(+t),x(),h):n},h},n.forceLennardJonesPotential=function(){var n,e,r,f,u,a=i(1),c=.75,l=1/0,x=.0625,v=12,s=6;function d(r){var i,o=n.length,u=t.quadtree(n,h,y).visitAfter(p);for(f=r,i=0;i<o;++i)(e=n[i]).energy=-1,e.force_x=0,e.force_y=0,u.visit(M)}function g(){if(n){var t,e,r=n.length;for(u=new Array(r),t=0;t<r;++t)e=n[t],u[e.index]=+a(e,t,n);s==v&&(v+=1)}}function p(n){var t,e,r,i,o,f=0,a=0;if(n.length){for(r=i=o=0;o<4;++o)(t=n[o])&&(e=Math.abs(t.value))&&(f+=t.value,a+=e,r+=e*t.x,i+=e*t.y);n.x=r/a,n.y=i/a}else{(t=n).x=t.data.x,t.y=t.data.y;do{f+=u[t.data.index]}while(t=t.next)}n.value=f}function M(n,t,i,a){if(!n.value)return!0;var h,y=n.x-e.x,d=n.y-e.y,g=a-t,p=y*y+d*d;if(g*g/x<p)return p<l&&(0===y&&(p+=(y=o(r))*y),0===d&&(p+=(d=o(r))*d),p<c&&(p=Math.sqrt(c*p)),h=s*v/(s-v)*(1-Math.pow(p,(v-s)/2))/Math.pow(p,(v+2)/2),e.energy+=(v*Math.pow(p,-s/2)-s*Math.pow(p,-v/2))/(s-v)*n.value,e.force_x+=h*y*n.value*f,e.force_y+=h*d*n.value*f),!0;if(!(n.length||p>=l)){(n.data!==e||n.next)&&(0===y&&(p+=(y=o(r))*y),0===d&&(p+=(d=o(r))*d),p<c&&(p=Math.sqrt(c*p))),h=s*v/(s-v)*(1-Math.pow(p,(v-s)/2))/Math.pow(p,(v+2)/2);do{n.data!==e&&(g=u[n.data.index],e.energy+=(v*Math.pow(p,-s/2)-s*Math.pow(p,-v/2))/(s-v)*g,e.force_x+=h*y*g*f,e.force_y+=h*d*g*f)}while(n=n.next)}}return d.initialize=function(t,e){n=t,r=e,g()},d.strength=function(n){return arguments.length?(a="function"==typeof n?n:i(+n),g(),d):a},d.distanceMin=function(n){return arguments.length?(c=n*n,d):Math.sqrt(c)},d.distanceMax=function(n){return arguments.length?(l=n*n,d):Math.sqrt(l)},d.theta=function(n){return arguments.length?(x=n*n,d):Math.sqrt(x)},d.repulsivePower=function(n){return arguments.length?(v=n,d):v},d.attractivePower=function(n){return arguments.length?(s=n,d):s},d},n.forceLink=function(n){var t,e,r,f,u,l,h=a,y=function(n){return 1/Math.min(f[n.source.index],f[n.target.index])},x=i(30),v=1;function s(i){for(let n,t=0,e=r.length;t<e;++t)n=r[t],n.force_x=0,n.force_y=0;if(0==v)for(let r,f,a,c,h,y,x,v=0,s=n.length;v<s;++v)r=n[v],f=r.source,a=r.target,c=a.x-f.x||o(l),h=a.y-f.y||o(l),y=Math.sqrt(c*c+h*h),y=(y-e[v])/y*i*t[v],c*=y,h*=y,a.force_x-=c*(x=u[v]),a.force_y-=h*x,f.force_x+=c*(x=1-x),f.force_y+=h*x;else for(var f=0,a=n.length;f<v;++f)for(var c,h,y,x,s,d,g,p=0;p<a;++p)h=(c=n[p]).source,x=(y=c.target).x+y.vx-h.x-h.vx||o(l),s=y.y+y.vy-h.y-h.vy||o(l),x*=d=((d=Math.sqrt(x*x+s*s))-e[p])/d*i*t[p],s*=d,y.vx-=x*(g=u[p]),y.vy-=s*g,h.vx+=x*(g=1-g),h.vy+=s*g}function d(){if(r){var i,o,a=r.length,l=n.length,y=new Map(r.map(((n,t)=>[h(n,t,r),n])));for(i=0,f=new Array(a);i<l;++i)(o=n[i]).index=i,"object"!=typeof o.source&&(o.source=c(y,o.source)),"object"!=typeof o.target&&(o.target=c(y,o.target)),f[o.source.index]=(f[o.source.index]||0)+1,f[o.target.index]=(f[o.target.index]||0)+1;for(i=0,u=new Array(l);i<l;++i)o=n[i],u[i]=f[o.source.index]/(f[o.source.index]+f[o.target.index]);t=new Array(l),g(),e=new Array(l),p()}}function g(){if(r)for(var e=0,i=n.length;e<i;++e)t[e]=+y(n[e],e,n)}function p(){if(r)for(var t=0,i=n.length;t<i;++t)e[t]=+x(n[t],t,n)}return null==n&&(n=[]),s.initialize=function(n,t){r=n,l=t,d()},s.links=function(t){return arguments.length?(n=t,d(),s):n},s.id=function(n){return arguments.length?(h=n,s):h},s.iterations=function(n){return arguments.length?(v=+n,s):v},s.strength=function(n){return arguments.length?(y="function"==typeof n?n:i(+n),g(),s):y},s.distance=function(n){return arguments.length?(x="function"==typeof n?n:i(+n),p(),s):x},s},n.forceManyBody=function(){var n,e,r,f,u,a=i(-30),c=1,l=1/0,x=.81;function v(r){var i,o=n.length,u=t.quadtree(n,h,y).visitAfter(d);for(f=r,i=0;i<o;++i)e=n[i],u.visit(g)}function s(){if(n){var t,e,r=n.length;for(u=new Array(r),t=0;t<r;++t)e=n[t],u[e.index]=+a(e,t,n)}}function d(n){var t,e,r,i,o,f=0,a=0;if(n.length){for(r=i=o=0;o<4;++o)(t=n[o])&&(e=Math.abs(t.value))&&(f+=t.value,a+=e,r+=e*t.x,i+=e*t.y);n.x=r/a,n.y=i/a}else{(t=n).x=t.data.x,t.y=t.data.y;do{f+=u[t.data.index]}while(t=t.next)}n.value=f}function g(n,t,i,a){if(!n.value)return!0;var h=n.x-e.x,y=n.y-e.y,v=a-t,s=h*h+y*y;if(v*v/x<s)return s<l&&(0===h&&(s+=(h=o(r))*h),0===y&&(s+=(y=o(r))*y),s<c&&(s=Math.sqrt(c*s)),e.vx+=h*n.value*f/s,e.vy+=y*n.value*f/s),!0;if(!(n.length||s>=l)){(n.data!==e||n.next)&&(0===h&&(s+=(h=o(r))*h),0===y&&(s+=(y=o(r))*y),s<c&&(s=Math.sqrt(c*s)));do{n.data!==e&&(v=u[n.data.index]*f/s,e.vx+=h*v,e.vy+=y*v)}while(n=n.next)}}return v.initialize=function(t,e){n=t,r=e,s()},v.strength=function(n){return arguments.length?(a="function"==typeof n?n:i(+n),s(),v):a},v.distanceMin=function(n){return arguments.length?(c=n*n,v):Math.sqrt(c)},v.distanceMax=function(n){return arguments.length?(l=n*n,v):Math.sqrt(l)},v.theta=function(n){return arguments.length?(x=n*n,v):Math.sqrt(x)},v},n.forceRadial=function(n,t,e){var r,o,f,u=i(.1);function a(n){for(var i=0,u=r.length;i<u;++i){var a=r[i],c=a.x-t||1e-6,l=a.y-e||1e-6,h=Math.sqrt(c*c+l*l),y=(f[i]-h)*o[i]*n/h;a.vx+=c*y,a.vy+=l*y}}function c(){if(r){var t,e=r.length;for(o=new Array(e),f=new Array(e),t=0;t<e;++t)f[t]=+n(r[t],t,r),o[t]=isNaN(f[t])?0:+u(r[t],t,r)}}return"function"!=typeof n&&(n=i(+n)),null==t&&(t=0),null==e&&(e=0),a.initialize=function(n){r=n,c()},a.strength=function(n){return arguments.length?(u="function"==typeof n?n:i(+n),c(),a):u},a.radius=function(t){return arguments.length?(n="function"==typeof t?t:i(+t),c(),a):n},a.x=function(n){return arguments.length?(t=+n,a):t},a.y=function(n){return arguments.length?(e=+n,a):e},a},n.forceSimulation=function(n){var t,i=1,o=1,f=.001,u=1-Math.pow(f,1/300),a=0,c=.6,h=new Map,y=r.timer(d),v=e.dispatch("tick","end"),s=function(){let n=1;return()=>(n=(1664525*n+1013904223)%l)/l}();function d(){g(i),v.call("tick",t),o<f&&(y.stop(),v.call("end",t))}function g(e){var r,f,l=n.length;void 0===e&&(e=1);for(var y=0;y<e;++y){for(o+=(a-o)*u,r=0;r<l;++r)null==(f=n[r]).fx?f.vx+=.5*f.force_x*i/f.mass:(f.vx=0,f.force_x=0,f.x=f.fx),null==f.fy?f.vy+=.5*f.force_y*i/f.mass:(f.vy=0,f.force_y=0,f.y=f.fy);for(r=0;r<l;++r)null==(f=n[r]).fx?f.x+=i*(f.vx*=c):f.x=f.fx,null==f.fy?f.y+=i*(f.vy*=c):f.y=f.fy;for(h.forEach((function(n){n(o)})),r=0;r<l;++r)null==(f=n[r]).fx?f.vx+=.5*f.force_x*i/f.mass:(f.vx=0,f.force_x=0,f.x=f.fx),null==f.fy?f.vy+=.5*f.force_y*i/f.mass:(f.vy=0,f.force_y=0,f.y=f.fy)}return t}function p(){for(var t,e=0,r=n.length;e<r;++e){if((t=n[e]).index=e,null!=t.fx&&(t.x=t.fx),null!=t.fy&&(t.y=t.fy),isNaN(t.x)||isNaN(t.y)){var i=10*Math.sqrt(.5+e),o=e*x;t.x=i*Math.cos(o),t.y=i*Math.sin(o)}(isNaN(t.vx)||isNaN(t.vy))&&(t.vx=t.vy=0),(isNaN(t.force_x)||isNaN(t.force_y))&&(t.force_x=t.force_y=0),isNaN(t.mass)&&(t.mass=1)}}function M(t){return t.initialize&&t.initialize(n,s),t}return null==n&&(n=[]),p(),t={tick:g,restart:function(){return y.restart(d),t},stop:function(){return y.stop(),t},nodes:function(e){return arguments.length?(n=e,p(),h.forEach(M),t):n},alpha:function(n){return arguments.length?(o=+n,t):o},alphaMin:function(n){return arguments.length?(f=+n,t):f},dt:function(n){return arguments.length?(i=+n,t):i},alphaDecay:function(n){return arguments.length?(u=+n,t):+u},alphaTarget:function(n){return arguments.length?(a=+n,t):a},velocityDecay:function(n){return arguments.length?(c=1-n,t):1-c},randomSource:function(n){return arguments.length?(s=n,h.forEach(M),t):s},force:function(n,e){return arguments.length>1?(null==e?h.delete(n):h.set(n,M(e)),t):h.get(n)},find:function(t,e,r){var i,o,f,u,a,c=0,l=n.length;for(null==r?r=1/0:r*=r,c=0;c<l;++c)(f=(i=t-(u=n[c]).x)*i+(o=e-u.y)*o)<r&&(a=u,r=f);return a},on:function(n,e){return arguments.length>1?(v.on(n,e),t):v.on(n)}}},n.forceX=function(n){var t,e,r,o=i(.1);function f(n){for(var i,o=0,f=t.length;o<f;++o)(i=t[o]).vx+=(r[o]-i.x)*e[o]*n}function u(){if(t){var i,f=t.length;for(e=new Array(f),r=new Array(f),i=0;i<f;++i)e[i]=isNaN(r[i]=+n(t[i],i,t))?0:+o(t[i],i,t)}}return"function"!=typeof n&&(n=i(null==n?0:+n)),f.initialize=function(n){t=n,u()},f.strength=function(n){return arguments.length?(o="function"==typeof n?n:i(+n),u(),f):o},f.x=function(t){return arguments.length?(n="function"==typeof t?t:i(+t),u(),f):n},f},n.forceY=function(n){var t,e,r,o=i(.1);function f(n){for(var i,o=0,f=t.length;o<f;++o)(i=t[o]).vy+=(r[o]-i.y)*e[o]*n}function u(){if(t){var i,f=t.length;for(e=new Array(f),r=new Array(f),i=0;i<f;++i)e[i]=isNaN(r[i]=+n(t[i],i,t))?0:+o(t[i],i,t)}}return"function"!=typeof n&&(n=i(null==n?0:+n)),f.initialize=function(n){t=n,u()},f.strength=function(n){return arguments.length?(o="function"==typeof n?n:i(+n),u(),f):o},f.y=function(t){return arguments.length?(n="function"==typeof t?t:i(+t),u(),f):n},f},Object.defineProperty(n,"__esModule",{value:!0})}));
