sbt-dungdv commited on
Commit
9aa4f05
·
1 Parent(s): fd8cdf5

Support search node

Browse files
_astro/index.astro_astro_type_script_index_0_lang.Br7129Kw.js DELETED
@@ -1 +0,0 @@
1
- function xn(t){const{container:e,manifest:n,onSelect:r}=t,i="w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-700 shadow-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 sm:w-64",o=document.createElement("select");if(o.className=i,n.length===0){const s=document.createElement("option");s.textContent="No dashboards available",s.value="",s.disabled=!0,s.selected=!0,o.appendChild(s),o.disabled=!0}else{const s=document.createElement("option");s.textContent="Select a project…",s.value="",s.disabled=!0,s.selected=!0,o.appendChild(s);for(const c of n){const u=document.createElement("option");u.value=c.dirName,u.textContent=c.dirName,o.appendChild(u)}}let a=null;return o.addEventListener("change",()=>{const s=o.value;if(!s)return;const c=n.find(l=>l.dirName===s);if(!c)return;if(a&&e.contains(a)&&(e.removeChild(a),a=null),c.graphFiles.length===1){r(c.dirName,c.graphFiles[0].fileName);return}a=document.createElement("select"),a.className=i;const u=document.createElement("option");u.textContent="Select a graph file…",u.value="",u.disabled=!0,u.selected=!0,a.appendChild(u);for(const l of c.graphFiles){const d=document.createElement("option");d.value=l.fileName,d.textContent=`${l.projectName} (${l.fileName})`,a.appendChild(d)}a.addEventListener("change",()=>{a&&a.value&&r(c.dirName,a.value)}),e.appendChild(a)}),e.appendChild(o),o}function Ye(t){const e=[];if(t==null||typeof t!="object"||Array.isArray(t))return e.push("Dashboard data must be a non-null object"),{valid:!1,errors:e};const n=t;if(!("nodes"in n)||!Array.isArray(n.nodes))e.push('Dashboard data must contain a "nodes" array');else{const r=n.nodes;for(let i=0;i<r.length;i++){const o=r[i];if(o==null||typeof o!="object"||Array.isArray(o)){e.push(`nodes[${i}] must be an object`);continue}const a=o,s=["id","type","name"];for(const c of s)(!(c in a)||typeof a[c]!="string")&&e.push(`nodes[${i}] is missing required field "${c}"`)}}if(!("edges"in n)||!Array.isArray(n.edges))e.push('Dashboard data must contain an "edges" array');else{const r=n.edges;for(let i=0;i<r.length;i++){const o=r[i];if(o==null||typeof o!="object"||Array.isArray(o)){e.push(`edges[${i}] must be an object`);continue}const a=o,s=["source","target","type"];for(const c of s)(!(c in a)||typeof a[c]!="string")&&e.push(`edges[${i}] is missing required field "${c}"`)}}return{valid:e.length===0,errors:e}}function vn(t){let e;try{e=JSON.parse(t)}catch{return{success:!1,error:"The uploaded file is not valid JSON."}}const n=Ye(e);return n.valid?{success:!0,data:e}:{success:!1,error:`The uploaded file is not a valid dashboard. ${n.errors.join(". ")}.`}}function wn(t){const{container:e,onUpload:n}=t,r=document.createElement("div");r.className="flex flex-col gap-2";const i=document.createElement("input");i.type="file",i.accept=".json",i.multiple=!0,i.className="block w-full text-sm text-gray-700 file:mr-4 file:rounded-md file:border-0 file:bg-blue-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-blue-700 hover:file:bg-blue-100 sm:w-auto";const o=document.createElement("div"),a=document.createElement("div");a.setAttribute("role","alert"),r.appendChild(i),r.appendChild(o),r.appendChild(a),e.appendChild(r);let s=[];function c(d){a.textContent="";const f=document.createElement("div");f.className="rounded-md border border-red-200 bg-red-50 px-4 py-2 text-sm text-red-600",f.textContent=d,a.appendChild(f)}function u(){a.textContent=""}function l(){if(o.innerHTML="",s.length<=1)return;const d=document.createElement("select");d.className="w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-700 shadow-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 sm:w-64";for(let f=0;f<s.length;f++){const h=document.createElement("option");h.value=String(f),h.textContent=s[f].fileName,d.appendChild(h)}d.value=String(s.length-1),d.addEventListener("change",()=>{const f=Number(d.value),h=s[f];h&&n(h.dashboard)}),o.appendChild(d)}return i.addEventListener("change",()=>{u();const d=i.files;if(!d||d.length===0)return;s=[];let f=0;const h=d.length,b=Array.from(d);for(const y of b){const v=new FileReader;v.onload=()=>{f++;const m=v.result,_=vn(m);_.success?s.push({fileName:y.name,dashboard:_.data}):c(`${y.name}: ${_.error}`),f===h&&s.length>0&&(l(),n(s[s.length-1].dashboard))},v.onerror=()=>{f++,c(`Failed to read file: ${y.name}`),f===h&&s.length>0&&(l(),n(s[s.length-1].dashboard))},v.readAsText(y)}}),i}function ye(t){const e=new Date(t);return isNaN(e.getTime())?t:new Intl.DateTimeFormat("en-US",{year:"numeric",month:"long",day:"numeric"}).format(e)}function _n(t){const{container:e,project:n,meta:r}=t;e.innerHTML="";const i=document.createElement("div");i.className="space-y-4";const o=document.createElement("h1");o.className="text-2xl font-bold text-gray-900",o.textContent=n.name,i.appendChild(o);const a=document.createElement("p");if(a.className="text-gray-600",a.textContent=n.description,i.appendChild(a),n.languages.length>0){const s=document.createElement("div");s.className="flex flex-wrap gap-2";for(const c of n.languages){const u=document.createElement("span");u.className="inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800",u.textContent=c,u.dataset.badgeType="language",s.appendChild(u)}i.appendChild(s)}if(n.frameworks.length>0){const s=document.createElement("div");s.className="flex flex-wrap gap-2";for(const c of n.frameworks){const u=document.createElement("span");u.className="inline-flex items-center rounded-full bg-green-100 px-2.5 py-0.5 text-xs font-medium text-green-800",u.textContent=c,u.dataset.badgeType="framework",s.appendChild(u)}i.appendChild(s)}if(r){const s=document.createElement("p");s.className="text-sm text-gray-500",s.textContent=`Analyzed: ${ye(r.lastAnalyzedAt)}`,i.appendChild(s);const c=document.createElement("p");c.className="text-sm text-gray-500";const u=document.createTextNode("Commit: ");c.appendChild(u);const l=document.createElement("code");l.className="font-mono text-gray-700",l.textContent=r.gitCommitHash.slice(0,7),c.appendChild(l),i.appendChild(c);const d=document.createElement("p");d.className="text-sm text-gray-500",d.textContent=`Version: ${r.version}`,i.appendChild(d);const f=document.createElement("p");f.className="text-sm text-gray-500",f.textContent=`Analyzed files: ${r.analyzedFiles}`,i.appendChild(f)}else{const s=document.createElement("p");s.className="text-sm text-gray-500",s.textContent=`Analyzed: ${ye(n.analyzedAt)}`,i.appendChild(s);const c=document.createElement("p");c.className="text-sm text-gray-500";const u=document.createTextNode("Commit: ");c.appendChild(u);const l=document.createElement("code");l.className="font-mono text-gray-700",l.textContent=n.gitCommitHash.slice(0,7),c.appendChild(l),i.appendChild(c)}return e.appendChild(i),i}function bn(t,e){const n={steps:t,currentIndex:0,isActive:!1};function r(){t.length!==0&&(n.isActive=!0,n.currentIndex=0,e(t[n.currentIndex]))}function i(){if(n.isActive){if(n.currentIndex>=t.length-1){a();return}n.currentIndex++,e(t[n.currentIndex])}}function o(){n.isActive&&(n.currentIndex>0&&n.currentIndex--,e(t[n.currentIndex]))}function a(){n.isActive=!1,n.currentIndex=0,e(null)}function s(){return!n.isActive||t.length===0?null:t[n.currentIndex]}function c(){return{...n,steps:[...n.steps]}}return{start:r,next:i,previous:o,end:a,getCurrentStep:s,getState:c}}function Nn(t){const{container:e,steps:n,graphRenderer:r}=t;if(e.innerHTML="",n.length===0){const u=document.createElement("p");return u.className="text-sm text-gray-400",u.textContent="No tour steps available for this dashboard.",e.appendChild(u),{destroy:()=>{e.innerHTML=""}}}const o=bn(n,u=>{u?(r.highlightNodes(u.nodeIds),r.panToNodes(u.nodeIds),c(u)):(r.resetView(),s())}),a=document.createElement("div");a.className="tour-ui",e.appendChild(a);function s(){a.innerHTML="";const u=document.createElement("button");u.className="rounded-lg bg-indigo-600 px-4 py-2 text-sm font-medium text-white hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition-colors",u.textContent="Start Tour",u.dataset.testid="start-tour-btn",u.addEventListener("click",()=>{o.start()}),a.appendChild(u)}function c(u){a.innerHTML="";const l=o.getState(),d=l.currentIndex,f=l.steps.length,h=document.createElement("div");h.className="tour-panel space-y-3",h.dataset.testid="tour-panel";const b=document.createElement("p");b.className="text-xs font-medium text-gray-500 uppercase tracking-wide",b.textContent=`Step ${d+1} of ${f}`,b.dataset.testid="step-counter",h.appendChild(b);const y=document.createElement("h3");y.className="text-lg font-semibold text-gray-900",y.textContent=u.title,y.dataset.testid="step-title",h.appendChild(y);const v=document.createElement("p");v.className="text-sm text-gray-600",v.textContent=u.description,v.dataset.testid="step-description",h.appendChild(v);const m=document.createElement("div");m.className="flex items-center gap-3 pt-2";const _=document.createElement("button");_.className="rounded-lg border border-gray-300 bg-white px-3 py-1.5 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",_.textContent="Previous",_.dataset.testid="prev-btn",_.disabled=d===0,_.addEventListener("click",()=>{o.previous()}),m.appendChild(_);const A=document.createElement("button");A.className="rounded-lg bg-indigo-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition-colors",A.textContent=d===f-1?"Finish":"Next",A.dataset.testid="next-btn",A.addEventListener("click",()=>{o.next()}),m.appendChild(A);const p=document.createElement("button");p.className="ml-auto rounded-lg border border-red-300 bg-white px-3 py-1.5 text-sm font-medium text-red-600 hover:bg-red-50 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 transition-colors",p.textContent="End Tour",p.dataset.testid="end-tour-btn",p.addEventListener("click",()=>{o.end()}),m.appendChild(p),h.appendChild(m),a.appendChild(h)}return s(),{destroy(){o.end(),e.innerHTML=""}}}var En={value:()=>{}};function Et(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new It(n)}function It(t){this._=t}function An(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}It.prototype=Et.prototype={constructor:It,on:function(t,e){var n=this._,r=An(t+"",n),i,o=-1,a=r.length;if(arguments.length<2){for(;++o<a;)if((i=(t=r[o]).type)&&(i=Cn(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++o<a;)if(i=(t=r[o]).type)n[i]=xe(n[i],t.name,e);else if(e==null)for(i in n)n[i]=xe(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new It(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,o;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(e,n)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};function Cn(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function xe(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=En,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}var te="http://www.w3.org/1999/xhtml";const ve={svg:"http://www.w3.org/2000/svg",xhtml:te,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function qt(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),ve.hasOwnProperty(e)?{space:ve[e],local:t}:t}function Mn(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===te&&e.documentElement.namespaceURI===te?e.createElement(t):e.createElementNS(n,t)}}function $n(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function qe(t){var e=qt(t);return(e.local?$n:Mn)(e)}function Tn(){}function ue(t){return t==null?Tn:function(){return this.querySelector(t)}}function kn(t){typeof t!="function"&&(t=ue(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],a=o.length,s=r[i]=new Array(a),c,u,l=0;l<a;++l)(c=o[l])&&(u=t.call(c,c.__data__,l,o))&&("__data__"in c&&(u.__data__=c.__data__),s[l]=u);return new V(r,this._parents)}function Sn(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function zn(){return[]}function Ve(t){return t==null?zn:function(){return this.querySelectorAll(t)}}function In(t){return function(){return Sn(t.apply(this,arguments))}}function Dn(t){typeof t=="function"?t=In(t):t=Ve(t);for(var e=this._groups,n=e.length,r=[],i=[],o=0;o<n;++o)for(var a=e[o],s=a.length,c,u=0;u<s;++u)(c=a[u])&&(r.push(t.call(c,c.__data__,u,a)),i.push(c));return new V(r,i)}function Ue(t){return function(){return this.matches(t)}}function Ge(t){return function(e){return e.matches(t)}}var Rn=Array.prototype.find;function Ln(t){return function(){return Rn.call(this.children,t)}}function Fn(){return this.firstElementChild}function Hn(t){return this.select(t==null?Fn:Ln(typeof t=="function"?t:Ge(t)))}var Bn=Array.prototype.filter;function Pn(){return Array.from(this.children)}function Xn(t){return function(){return Bn.call(this.children,t)}}function On(t){return this.selectAll(t==null?Pn:Xn(typeof t=="function"?t:Ge(t)))}function Yn(t){typeof t!="function"&&(t=Ue(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],a=o.length,s=r[i]=[],c,u=0;u<a;++u)(c=o[u])&&t.call(c,c.__data__,u,o)&&s.push(c);return new V(r,this._parents)}function Ke(t){return new Array(t.length)}function qn(){return new V(this._enter||this._groups.map(Ke),this._parents)}function Ft(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Ft.prototype={constructor:Ft,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function Vn(t){return function(){return t}}function Un(t,e,n,r,i,o){for(var a=0,s,c=e.length,u=o.length;a<u;++a)(s=e[a])?(s.__data__=o[a],r[a]=s):n[a]=new Ft(t,o[a]);for(;a<c;++a)(s=e[a])&&(i[a]=s)}function Gn(t,e,n,r,i,o,a){var s,c,u=new Map,l=e.length,d=o.length,f=new Array(l),h;for(s=0;s<l;++s)(c=e[s])&&(f[s]=h=a.call(c,c.__data__,s,e)+"",u.has(h)?i[s]=c:u.set(h,c));for(s=0;s<d;++s)h=a.call(t,o[s],s,o)+"",(c=u.get(h))?(r[s]=c,c.__data__=o[s],u.delete(h)):n[s]=new Ft(t,o[s]);for(s=0;s<l;++s)(c=e[s])&&u.get(f[s])===c&&(i[s]=c)}function Kn(t){return t.__data__}function Wn(t,e){if(!arguments.length)return Array.from(this,Kn);var n=e?Gn:Un,r=this._parents,i=this._groups;typeof t!="function"&&(t=Vn(t));for(var o=i.length,a=new Array(o),s=new Array(o),c=new Array(o),u=0;u<o;++u){var l=r[u],d=i[u],f=d.length,h=Qn(t.call(l,l&&l.__data__,u,r)),b=h.length,y=s[u]=new Array(b),v=a[u]=new Array(b),m=c[u]=new Array(f);n(l,d,y,v,m,h,e);for(var _=0,A=0,p,E;_<b;++_)if(p=y[_]){for(_>=A&&(A=_+1);!(E=v[A])&&++A<b;);p._next=E||null}}return a=new V(a,r),a._enter=s,a._exit=c,a}function Qn(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Zn(){return new V(this._exit||this._groups.map(Ke),this._parents)}function Jn(t,e,n){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?o.remove():n(o),r&&i?r.merge(i).order():i}function jn(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,a=Math.min(i,o),s=new Array(i),c=0;c<a;++c)for(var u=n[c],l=r[c],d=u.length,f=s[c]=new Array(d),h,b=0;b<d;++b)(h=u[b]||l[b])&&(f[b]=h);for(;c<i;++c)s[c]=n[c];return new V(s,this._parents)}function tr(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,o=r[i],a;--i>=0;)(a=r[i])&&(o&&a.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(a,o),o=a);return this}function er(t){t||(t=nr);function e(d,f){return d&&f?t(d.__data__,f.__data__):!d-!f}for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var a=n[o],s=a.length,c=i[o]=new Array(s),u,l=0;l<s;++l)(u=a[l])&&(c[l]=u);c.sort(e)}return new V(i,this._parents).order()}function nr(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function rr(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function ir(){return Array.from(this)}function or(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null}function ar(){let t=0;for(const e of this)++t;return t}function sr(){return!this.node()}function ur(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],o=0,a=i.length,s;o<a;++o)(s=i[o])&&t.call(s,s.__data__,o,i);return this}function cr(t){return function(){this.removeAttribute(t)}}function lr(t){return function(){this.removeAttributeNS(t.space,t.local)}}function fr(t,e){return function(){this.setAttribute(t,e)}}function hr(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function dr(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function pr(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function gr(t,e){var n=qt(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?lr:cr:typeof e=="function"?n.local?pr:dr:n.local?hr:fr)(n,e))}function We(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function mr(t){return function(){this.style.removeProperty(t)}}function yr(t,e,n){return function(){this.style.setProperty(t,e,n)}}function xr(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function vr(t,e,n){return arguments.length>1?this.each((e==null?mr:typeof e=="function"?xr:yr)(t,e,n??"")):ht(this.node(),t)}function ht(t,e){return t.style.getPropertyValue(e)||We(t).getComputedStyle(t,null).getPropertyValue(e)}function wr(t){return function(){delete this[t]}}function _r(t,e){return function(){this[t]=e}}function br(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Nr(t,e){return arguments.length>1?this.each((e==null?wr:typeof e=="function"?br:_r)(t,e)):this.node()[t]}function Qe(t){return t.trim().split(/^|\s+/)}function ce(t){return t.classList||new Ze(t)}function Ze(t){this._node=t,this._names=Qe(t.getAttribute("class")||"")}Ze.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Je(t,e){for(var n=ce(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function je(t,e){for(var n=ce(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Er(t){return function(){Je(this,t)}}function Ar(t){return function(){je(this,t)}}function Cr(t,e){return function(){(e.apply(this,arguments)?Je:je)(this,t)}}function Mr(t,e){var n=Qe(t+"");if(arguments.length<2){for(var r=ce(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?Cr:e?Er:Ar)(n,e))}function $r(){this.textContent=""}function Tr(t){return function(){this.textContent=t}}function kr(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function Sr(t){return arguments.length?this.each(t==null?$r:(typeof t=="function"?kr:Tr)(t)):this.node().textContent}function zr(){this.innerHTML=""}function Ir(t){return function(){this.innerHTML=t}}function Dr(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function Rr(t){return arguments.length?this.each(t==null?zr:(typeof t=="function"?Dr:Ir)(t)):this.node().innerHTML}function Lr(){this.nextSibling&&this.parentNode.appendChild(this)}function Fr(){return this.each(Lr)}function Hr(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Br(){return this.each(Hr)}function Pr(t){var e=typeof t=="function"?t:qe(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function Xr(){return null}function Or(t,e){var n=typeof t=="function"?t:qe(t),r=e==null?Xr:typeof e=="function"?e:ue(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Yr(){var t=this.parentNode;t&&t.removeChild(this)}function qr(){return this.each(Yr)}function Vr(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Ur(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Gr(t){return this.select(t?Ur:Vr)}function Kr(t){return arguments.length?this.property("__data__",t):this.node().__data__}function Wr(t){return function(e){t.call(this,e,this.__data__)}}function Qr(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function Zr(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n<i;++n)o=e[n],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):e[++r]=o;++r?e.length=r:delete this.__on}}}function Jr(t,e,n){return function(){var r=this.__on,i,o=Wr(e);if(r){for(var a=0,s=r.length;a<s;++a)if((i=r[a]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=n),i.value=e;return}}this.addEventListener(t.type,o,n),i={type:t.type,name:t.name,value:e,listener:o,options:n},r?r.push(i):this.__on=[i]}}function jr(t,e,n){var r=Qr(t+""),i,o=r.length,a;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,u=s.length,l;c<u;++c)for(i=0,l=s[c];i<o;++i)if((a=r[i]).type===l.type&&a.name===l.name)return l.value}return}for(s=e?Jr:Zr,i=0;i<o;++i)this.each(s(r[i],e,n));return this}function tn(t,e,n){var r=We(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function ti(t,e){return function(){return tn(this,t,e)}}function ei(t,e){return function(){return tn(this,t,e.apply(this,arguments))}}function ni(t,e){return this.each((typeof e=="function"?ei:ti)(t,e))}function*ri(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length,a;i<o;++i)(a=r[i])&&(yield a)}var en=[null];function V(t,e){this._groups=t,this._parents=e}function At(){return new V([[document.documentElement]],en)}function ii(){return this}V.prototype=At.prototype={constructor:V,select:kn,selectAll:Dn,selectChild:Hn,selectChildren:On,filter:Yn,data:Wn,enter:qn,exit:Zn,join:Jn,merge:jn,selection:ii,order:tr,sort:er,call:rr,nodes:ir,node:or,size:ar,empty:sr,each:ur,attr:gr,style:vr,property:Nr,classed:Mr,text:Sr,html:Rr,raise:Fr,lower:Br,append:Pr,insert:Or,remove:qr,clone:Gr,datum:Kr,on:jr,dispatch:ni,[Symbol.iterator]:ri};function X(t){return typeof t=="string"?new V([[document.querySelector(t)]],[document.documentElement]):new V([[t]],en)}function oi(t){let e;for(;e=t.sourceEvent;)t=e;return t}function et(t,e){if(t=oi(t),e===void 0&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}const ai={passive:!1},vt={capture:!0,passive:!1};function Kt(t){t.stopImmediatePropagation()}function lt(t){t.preventDefault(),t.stopImmediatePropagation()}function nn(t){var e=t.document.documentElement,n=X(t).on("dragstart.drag",lt,vt);"onselectstart"in e?n.on("selectstart.drag",lt,vt):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function rn(t,e){var n=t.document.documentElement,r=X(t).on("dragstart.drag",null);e&&(r.on("click.drag",lt,vt),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const Mt=t=>()=>t;function ee(t,{sourceEvent:e,subject:n,target:r,identifier:i,active:o,x:a,y:s,dx:c,dy:u,dispatch:l}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:l}})}ee.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function si(t){return!t.ctrlKey&&!t.button}function ui(){return this.parentNode}function ci(t,e){return e??{x:t.x,y:t.y}}function li(){return navigator.maxTouchPoints||"ontouchstart"in this}function fi(){var t=si,e=ui,n=ci,r=li,i={},o=Et("start","drag","end"),a=0,s,c,u,l,d=0;function f(p){p.on("mousedown.drag",h).filter(r).on("touchstart.drag",v).on("touchmove.drag",m,ai).on("touchend.drag touchcancel.drag",_).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(p,E){if(!(l||!t.call(this,p,E))){var C=A(this,e.call(this,p,E),p,E,"mouse");C&&(X(p.view).on("mousemove.drag",b,vt).on("mouseup.drag",y,vt),nn(p.view),Kt(p),u=!1,s=p.clientX,c=p.clientY,C("start",p))}}function b(p){if(lt(p),!u){var E=p.clientX-s,C=p.clientY-c;u=E*E+C*C>d}i.mouse("drag",p)}function y(p){X(p.view).on("mousemove.drag mouseup.drag",null),rn(p.view,u),lt(p),i.mouse("end",p)}function v(p,E){if(t.call(this,p,E)){var C=p.changedTouches,$=e.call(this,p,E),T=C.length,D,z;for(D=0;D<T;++D)(z=A(this,$,p,E,C[D].identifier,C[D]))&&(Kt(p),z("start",p,C[D]))}}function m(p){var E=p.changedTouches,C=E.length,$,T;for($=0;$<C;++$)(T=i[E[$].identifier])&&(lt(p),T("drag",p,E[$]))}function _(p){var E=p.changedTouches,C=E.length,$,T;for(l&&clearTimeout(l),l=setTimeout(function(){l=null},500),$=0;$<C;++$)(T=i[E[$].identifier])&&(Kt(p),T("end",p,E[$]))}function A(p,E,C,$,T,D){var z=o.copy(),L=et(D||C,E),R,P,g;if((g=n.call(p,new ee("beforestart",{sourceEvent:C,target:f,identifier:T,active:a,x:L[0],y:L[1],dx:0,dy:0,dispatch:z}),$))!=null)return R=g.x-L[0]||0,P=g.y-L[1]||0,function x(w,N,M){var k=L,S;switch(w){case"start":i[T]=x,S=a++;break;case"end":delete i[T],--a;case"drag":L=et(M||N,E),S=a;break}z.call(w,p,new ee(w,{sourceEvent:N,subject:g,target:f,identifier:T,active:S,x:L[0]+R,y:L[1]+P,dx:L[0]-k[0],dy:L[1]-k[1],dispatch:z}),$)}}return f.filter=function(p){return arguments.length?(t=typeof p=="function"?p:Mt(!!p),f):t},f.container=function(p){return arguments.length?(e=typeof p=="function"?p:Mt(p),f):e},f.subject=function(p){return arguments.length?(n=typeof p=="function"?p:Mt(p),f):n},f.touchable=function(p){return arguments.length?(r=typeof p=="function"?p:Mt(!!p),f):r},f.on=function(){var p=o.on.apply(o,arguments);return p===o?f:p},f.clickDistance=function(p){return arguments.length?(d=(p=+p)*p,f):Math.sqrt(d)},f}function le(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function on(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Ct(){}var wt=.7,Ht=1/wt,ft="\\s*([+-]?\\d+)\\s*",_t="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Q="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",hi=/^#([0-9a-f]{3,8})$/,di=new RegExp(`^rgb\\(${ft},${ft},${ft}\\)$`),pi=new RegExp(`^rgb\\(${Q},${Q},${Q}\\)$`),gi=new RegExp(`^rgba\\(${ft},${ft},${ft},${_t}\\)$`),mi=new RegExp(`^rgba\\(${Q},${Q},${Q},${_t}\\)$`),yi=new RegExp(`^hsl\\(${_t},${Q},${Q}\\)$`),xi=new RegExp(`^hsla\\(${_t},${Q},${Q},${_t}\\)$`),we={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};le(Ct,bt,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:_e,formatHex:_e,formatHex8:vi,formatHsl:wi,formatRgb:be,toString:be});function _e(){return this.rgb().formatHex()}function vi(){return this.rgb().formatHex8()}function wi(){return an(this).formatHsl()}function be(){return this.rgb().formatRgb()}function bt(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=hi.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Ne(e):n===3?new q(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?$t(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?$t(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=di.exec(t))?new q(e[1],e[2],e[3],1):(e=pi.exec(t))?new q(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=gi.exec(t))?$t(e[1],e[2],e[3],e[4]):(e=mi.exec(t))?$t(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=yi.exec(t))?Ce(e[1],e[2]/100,e[3]/100,1):(e=xi.exec(t))?Ce(e[1],e[2]/100,e[3]/100,e[4]):we.hasOwnProperty(t)?Ne(we[t]):t==="transparent"?new q(NaN,NaN,NaN,0):null}function Ne(t){return new q(t>>16&255,t>>8&255,t&255,1)}function $t(t,e,n,r){return r<=0&&(t=e=n=NaN),new q(t,e,n,r)}function _i(t){return t instanceof Ct||(t=bt(t)),t?(t=t.rgb(),new q(t.r,t.g,t.b,t.opacity)):new q}function ne(t,e,n,r){return arguments.length===1?_i(t):new q(t,e,n,r??1)}function q(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}le(q,ne,on(Ct,{brighter(t){return t=t==null?Ht:Math.pow(Ht,t),new q(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?wt:Math.pow(wt,t),new q(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new q(st(this.r),st(this.g),st(this.b),Bt(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ee,formatHex:Ee,formatHex8:bi,formatRgb:Ae,toString:Ae}));function Ee(){return`#${at(this.r)}${at(this.g)}${at(this.b)}`}function bi(){return`#${at(this.r)}${at(this.g)}${at(this.b)}${at((isNaN(this.opacity)?1:this.opacity)*255)}`}function Ae(){const t=Bt(this.opacity);return`${t===1?"rgb(":"rgba("}${st(this.r)}, ${st(this.g)}, ${st(this.b)}${t===1?")":`, ${t})`}`}function Bt(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function st(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function at(t){return t=st(t),(t<16?"0":"")+t.toString(16)}function Ce(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new K(t,e,n,r)}function an(t){if(t instanceof K)return new K(t.h,t.s,t.l,t.opacity);if(t instanceof Ct||(t=bt(t)),!t)return new K;if(t instanceof K)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,s=o-i,c=(o+i)/2;return s?(e===o?a=(n-r)/s+(n<r)*6:n===o?a=(r-e)/s+2:a=(e-n)/s+4,s/=c<.5?o+i:2-o-i,a*=60):s=c>0&&c<1?0:a,new K(a,s,c,t.opacity)}function Ni(t,e,n,r){return arguments.length===1?an(t):new K(t,e,n,r??1)}function K(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}le(K,Ni,on(Ct,{brighter(t){return t=t==null?Ht:Math.pow(Ht,t),new K(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?wt:Math.pow(wt,t),new K(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new q(Wt(t>=240?t-240:t+120,i,r),Wt(t,i,r),Wt(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new K(Me(this.h),Tt(this.s),Tt(this.l),Bt(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Bt(this.opacity);return`${t===1?"hsl(":"hsla("}${Me(this.h)}, ${Tt(this.s)*100}%, ${Tt(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Me(t){return t=(t||0)%360,t<0?t+360:t}function Tt(t){return Math.max(0,Math.min(1,t||0))}function Wt(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const sn=t=>()=>t;function Ei(t,e){return function(n){return t+n*e}}function Ai(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Ci(t){return(t=+t)==1?un:function(e,n){return n-e?Ai(e,n,t):sn(isNaN(e)?n:e)}}function un(t,e){var n=e-t;return n?Ei(t,n):sn(isNaN(t)?e:t)}const $e=(function t(e){var n=Ci(e);function r(i,o){var a=n((i=ne(i)).r,(o=ne(o)).r),s=n(i.g,o.g),c=n(i.b,o.b),u=un(i.opacity,o.opacity);return function(l){return i.r=a(l),i.g=s(l),i.b=c(l),i.opacity=u(l),i+""}}return r.gamma=t,r})(1);function it(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var re=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Qt=new RegExp(re.source,"g");function Mi(t){return function(){return t}}function $i(t){return function(e){return t(e)+""}}function Ti(t,e){var n=re.lastIndex=Qt.lastIndex=0,r,i,o,a=-1,s=[],c=[];for(t=t+"",e=e+"";(r=re.exec(t))&&(i=Qt.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,c.push({i:a,x:it(r,i)})),n=Qt.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?c[0]?$i(c[0].x):Mi(e):(e=c.length,function(u){for(var l=0,d;l<e;++l)s[(d=c[l]).i]=d.x(u);return s.join("")})}var Te=180/Math.PI,ie={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function cn(t,e,n,r,i,o){var a,s,c;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Te,skewX:Math.atan(c)*Te,scaleX:a,scaleY:s}}var kt;function ki(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?ie:cn(e.a,e.b,e.c,e.d,e.e,e.f)}function Si(t){return t==null||(kt||(kt=document.createElementNS("http://www.w3.org/2000/svg","g")),kt.setAttribute("transform",t),!(t=kt.transform.baseVal.consolidate()))?ie:(t=t.matrix,cn(t.a,t.b,t.c,t.d,t.e,t.f))}function ln(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,l,d,f,h,b){if(u!==d||l!==f){var y=h.push("translate(",null,e,null,n);b.push({i:y-4,x:it(u,d)},{i:y-2,x:it(l,f)})}else(d||f)&&h.push("translate("+d+e+f+n)}function a(u,l,d,f){u!==l?(u-l>180?l+=360:l-u>180&&(u+=360),f.push({i:d.push(i(d)+"rotate(",null,r)-2,x:it(u,l)})):l&&d.push(i(d)+"rotate("+l+r)}function s(u,l,d,f){u!==l?f.push({i:d.push(i(d)+"skewX(",null,r)-2,x:it(u,l)}):l&&d.push(i(d)+"skewX("+l+r)}function c(u,l,d,f,h,b){if(u!==d||l!==f){var y=h.push(i(h)+"scale(",null,",",null,")");b.push({i:y-4,x:it(u,d)},{i:y-2,x:it(l,f)})}else(d!==1||f!==1)&&h.push(i(h)+"scale("+d+","+f+")")}return function(u,l){var d=[],f=[];return u=t(u),l=t(l),o(u.translateX,u.translateY,l.translateX,l.translateY,d,f),a(u.rotate,l.rotate,d,f),s(u.skewX,l.skewX,d,f),c(u.scaleX,u.scaleY,l.scaleX,l.scaleY,d,f),u=l=null,function(h){for(var b=-1,y=f.length,v;++b<y;)d[(v=f[b]).i]=v.x(h);return d.join("")}}}var zi=ln(ki,"px, ","px)","deg)"),Ii=ln(Si,", ",")",")"),Di=1e-12;function ke(t){return((t=Math.exp(t))+1/t)/2}function Ri(t){return((t=Math.exp(t))-1/t)/2}function Li(t){return((t=Math.exp(2*t))-1)/(t+1)}const Fi=(function t(e,n,r){function i(o,a){var s=o[0],c=o[1],u=o[2],l=a[0],d=a[1],f=a[2],h=l-s,b=d-c,y=h*h+b*b,v,m;if(y<Di)m=Math.log(f/u)/e,v=function($){return[s+$*h,c+$*b,u*Math.exp(e*$*m)]};else{var _=Math.sqrt(y),A=(f*f-u*u+r*y)/(2*u*n*_),p=(f*f-u*u-r*y)/(2*f*n*_),E=Math.log(Math.sqrt(A*A+1)-A),C=Math.log(Math.sqrt(p*p+1)-p);m=(C-E)/e,v=function($){var T=$*m,D=ke(E),z=u/(n*_)*(D*Li(e*T+E)-Ri(E));return[s+z*h,c+z*b,u*D/ke(e*T+E)]}}return v.duration=m*1e3*e/Math.SQRT2,v}return i.rho=function(o){var a=Math.max(.001,+o),s=a*a,c=s*s;return t(a,s,c)},i})(Math.SQRT2,2,4);var dt=0,yt=0,pt=0,fn=1e3,Pt,xt,Xt=0,ct=0,Vt=0,Nt=typeof performance=="object"&&performance.now?performance:Date,hn=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function fe(){return ct||(hn(Hi),ct=Nt.now()+Vt)}function Hi(){ct=0}function Ot(){this._call=this._time=this._next=null}Ot.prototype=he.prototype={constructor:Ot,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?fe():+n)+(e==null?0:+e),!this._next&&xt!==this&&(xt?xt._next=this:Pt=this,xt=this),this._call=t,this._time=n,oe()},stop:function(){this._call&&(this._call=null,this._time=1/0,oe())}};function he(t,e,n){var r=new Ot;return r.restart(t,e,n),r}function Bi(){fe(),++dt;for(var t=Pt,e;t;)(e=ct-t._time)>=0&&t._call.call(void 0,e),t=t._next;--dt}function Se(){ct=(Xt=Nt.now())+Vt,dt=yt=0;try{Bi()}finally{dt=0,Xi(),ct=0}}function Pi(){var t=Nt.now(),e=t-Xt;e>fn&&(Vt-=e,Xt=t)}function Xi(){for(var t,e=Pt,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Pt=n);xt=t,oe(r)}function oe(t){if(!dt){yt&&(yt=clearTimeout(yt));var e=t-ct;e>24?(t<1/0&&(yt=setTimeout(Se,t-Nt.now()-Vt)),pt&&(pt=clearInterval(pt))):(pt||(Xt=Nt.now(),pt=setInterval(Pi,fn)),dt=1,hn(Se))}}function ze(t,e,n){var r=new Ot;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var Oi=Et("start","end","cancel","interrupt"),Yi=[],dn=0,Ie=1,ae=2,Dt=3,De=4,se=5,Rt=6;function Ut(t,e,n,r,i,o){var a=t.__transition;if(!a)t.__transition={};else if(n in a)return;qi(t,n,{name:e,index:r,group:i,on:Oi,tween:Yi,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:dn})}function de(t,e){var n=W(t,e);if(n.state>dn)throw new Error("too late; already scheduled");return n}function Z(t,e){var n=W(t,e);if(n.state>Dt)throw new Error("too late; already running");return n}function W(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function qi(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=he(o,0,n.time);function o(u){n.state=Ie,n.timer.restart(a,n.delay,n.time),n.delay<=u&&a(u-n.delay)}function a(u){var l,d,f,h;if(n.state!==Ie)return c();for(l in r)if(h=r[l],h.name===n.name){if(h.state===Dt)return ze(a);h.state===De?(h.state=Rt,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete r[l]):+l<e&&(h.state=Rt,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete r[l])}if(ze(function(){n.state===Dt&&(n.state=De,n.timer.restart(s,n.delay,n.time),s(u))}),n.state=ae,n.on.call("start",t,t.__data__,n.index,n.group),n.state===ae){for(n.state=Dt,i=new Array(f=n.tween.length),l=0,d=-1;l<f;++l)(h=n.tween[l].value.call(t,t.__data__,n.index,n.group))&&(i[++d]=h);i.length=d+1}}function s(u){for(var l=u<n.duration?n.ease.call(null,u/n.duration):(n.timer.restart(c),n.state=se,1),d=-1,f=i.length;++d<f;)i[d].call(t,l);n.state===se&&(n.on.call("end",t,t.__data__,n.index,n.group),c())}function c(){n.state=Rt,n.timer.stop(),delete r[e];for(var u in r)return;delete t.__transition}}function Lt(t,e){var n=t.__transition,r,i,o=!0,a;if(n){e=e==null?null:e+"";for(a in n){if((r=n[a]).name!==e){o=!1;continue}i=r.state>ae&&r.state<se,r.state=Rt,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[a]}o&&delete t.__transition}}function Vi(t){return this.each(function(){Lt(this,t)})}function Ui(t,e){var n,r;return function(){var i=Z(this,t),o=i.tween;if(o!==n){r=n=o;for(var a=0,s=r.length;a<s;++a)if(r[a].name===e){r=r.slice(),r.splice(a,1);break}}i.tween=r}}function Gi(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var o=Z(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var s={name:e,value:n},c=0,u=i.length;c<u;++c)if(i[c].name===e){i[c]=s;break}c===u&&i.push(s)}o.tween=i}}function Ki(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=W(this.node(),n).tween,i=0,o=r.length,a;i<o;++i)if((a=r[i]).name===t)return a.value;return null}return this.each((e==null?Ui:Gi)(n,t,e))}function pe(t,e,n){var r=t._id;return t.each(function(){var i=Z(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return W(i,r).value[e]}}function pn(t,e){var n;return(typeof e=="number"?it:e instanceof bt?$e:(n=bt(e))?(e=n,$e):Ti)(t,e)}function Wi(t){return function(){this.removeAttribute(t)}}function Qi(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Zi(t,e,n){var r,i=n+"",o;return function(){var a=this.getAttribute(t);return a===i?null:a===r?o:o=e(r=a,n)}}function Ji(t,e,n){var r,i=n+"",o;return function(){var a=this.getAttributeNS(t.space,t.local);return a===i?null:a===r?o:o=e(r=a,n)}}function ji(t,e,n){var r,i,o;return function(){var a,s=n(this),c;return s==null?void this.removeAttribute(t):(a=this.getAttribute(t),c=s+"",a===c?null:a===r&&c===i?o:(i=c,o=e(r=a,s)))}}function to(t,e,n){var r,i,o;return function(){var a,s=n(this),c;return s==null?void this.removeAttributeNS(t.space,t.local):(a=this.getAttributeNS(t.space,t.local),c=s+"",a===c?null:a===r&&c===i?o:(i=c,o=e(r=a,s)))}}function eo(t,e){var n=qt(t),r=n==="transform"?Ii:pn;return this.attrTween(t,typeof e=="function"?(n.local?to:ji)(n,r,pe(this,"attr."+t,e)):e==null?(n.local?Qi:Wi)(n):(n.local?Ji:Zi)(n,r,e))}function no(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function ro(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function io(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&ro(t,o)),n}return i._value=e,i}function oo(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&no(t,o)),n}return i._value=e,i}function ao(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=qt(t);return this.tween(n,(r.local?io:oo)(r,e))}function so(t,e){return function(){de(this,t).delay=+e.apply(this,arguments)}}function uo(t,e){return e=+e,function(){de(this,t).delay=e}}function co(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?so:uo)(e,t)):W(this.node(),e).delay}function lo(t,e){return function(){Z(this,t).duration=+e.apply(this,arguments)}}function fo(t,e){return e=+e,function(){Z(this,t).duration=e}}function ho(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?lo:fo)(e,t)):W(this.node(),e).duration}function po(t,e){if(typeof e!="function")throw new Error;return function(){Z(this,t).ease=e}}function go(t){var e=this._id;return arguments.length?this.each(po(e,t)):W(this.node(),e).ease}function mo(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;Z(this,t).ease=n}}function yo(t){if(typeof t!="function")throw new Error;return this.each(mo(this._id,t))}function xo(t){typeof t!="function"&&(t=Ue(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],a=o.length,s=r[i]=[],c,u=0;u<a;++u)(c=o[u])&&t.call(c,c.__data__,u,o)&&s.push(c);return new rt(r,this._parents,this._name,this._id)}function vo(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),a=new Array(r),s=0;s<o;++s)for(var c=e[s],u=n[s],l=c.length,d=a[s]=new Array(l),f,h=0;h<l;++h)(f=c[h]||u[h])&&(d[h]=f);for(;s<r;++s)a[s]=e[s];return new rt(a,this._parents,this._name,this._id)}function wo(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function _o(t,e,n){var r,i,o=wo(e)?de:Z;return function(){var a=o(this,t),s=a.on;s!==r&&(i=(r=s).copy()).on(e,n),a.on=i}}function bo(t,e){var n=this._id;return arguments.length<2?W(this.node(),n).on.on(t):this.each(_o(n,t,e))}function No(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function Eo(){return this.on("end.remove",No(this._id))}function Ao(t){var e=this._name,n=this._id;typeof t!="function"&&(t=ue(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a<i;++a)for(var s=r[a],c=s.length,u=o[a]=new Array(c),l,d,f=0;f<c;++f)(l=s[f])&&(d=t.call(l,l.__data__,f,s))&&("__data__"in l&&(d.__data__=l.__data__),u[f]=d,Ut(u[f],e,n,f,u,W(l,n)));return new rt(o,this._parents,e,n)}function Co(t){var e=this._name,n=this._id;typeof t!="function"&&(t=Ve(t));for(var r=this._groups,i=r.length,o=[],a=[],s=0;s<i;++s)for(var c=r[s],u=c.length,l,d=0;d<u;++d)if(l=c[d]){for(var f=t.call(l,l.__data__,d,c),h,b=W(l,n),y=0,v=f.length;y<v;++y)(h=f[y])&&Ut(h,e,n,y,f,b);o.push(f),a.push(l)}return new rt(o,a,e,n)}var Mo=At.prototype.constructor;function $o(){return new Mo(this._groups,this._parents)}function To(t,e){var n,r,i;return function(){var o=ht(this,t),a=(this.style.removeProperty(t),ht(this,t));return o===a?null:o===n&&a===r?i:i=e(n=o,r=a)}}function gn(t){return function(){this.style.removeProperty(t)}}function ko(t,e,n){var r,i=n+"",o;return function(){var a=ht(this,t);return a===i?null:a===r?o:o=e(r=a,n)}}function So(t,e,n){var r,i,o;return function(){var a=ht(this,t),s=n(this),c=s+"";return s==null&&(c=s=(this.style.removeProperty(t),ht(this,t))),a===c?null:a===r&&c===i?o:(i=c,o=e(r=a,s))}}function zo(t,e){var n,r,i,o="style."+e,a="end."+o,s;return function(){var c=Z(this,t),u=c.on,l=c.value[o]==null?s||(s=gn(e)):void 0;(u!==n||i!==l)&&(r=(n=u).copy()).on(a,i=l),c.on=r}}function Io(t,e,n){var r=(t+="")=="transform"?zi:pn;return e==null?this.styleTween(t,To(t,r)).on("end.style."+t,gn(t)):typeof e=="function"?this.styleTween(t,So(t,r,pe(this,"style."+t,e))).each(zo(this._id,t)):this.styleTween(t,ko(t,r,e),n).on("end.style."+t,null)}function Do(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Ro(t,e,n){var r,i;function o(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Do(t,a,n)),r}return o._value=e,o}function Lo(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,Ro(t,e,n??""))}function Fo(t){return function(){this.textContent=t}}function Ho(t){return function(){var e=t(this);this.textContent=e??""}}function Bo(t){return this.tween("text",typeof t=="function"?Ho(pe(this,"text",t)):Fo(t==null?"":t+""))}function Po(t){return function(e){this.textContent=t.call(this,e)}}function Xo(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&Po(i)),e}return r._value=t,r}function Oo(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,Xo(t))}function Yo(){for(var t=this._name,e=this._id,n=mn(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a=r[o],s=a.length,c,u=0;u<s;++u)if(c=a[u]){var l=W(c,e);Ut(c,t,n,u,a,{time:l.time+l.delay+l.duration,delay:0,duration:l.duration,ease:l.ease})}return new rt(r,this._parents,t,n)}function qo(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(o,a){var s={value:a},c={value:function(){--i===0&&o()}};n.each(function(){var u=Z(this,r),l=u.on;l!==t&&(e=(t=l).copy(),e._.cancel.push(s),e._.interrupt.push(s),e._.end.push(c)),u.on=e}),i===0&&o()})}var Vo=0;function rt(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function mn(){return++Vo}var tt=At.prototype;rt.prototype={constructor:rt,select:Ao,selectAll:Co,selectChild:tt.selectChild,selectChildren:tt.selectChildren,filter:xo,merge:vo,selection:$o,transition:Yo,call:tt.call,nodes:tt.nodes,node:tt.node,size:tt.size,empty:tt.empty,each:tt.each,on:bo,attr:eo,attrTween:ao,style:Io,styleTween:Lo,text:Bo,textTween:Oo,remove:Eo,tween:Ki,delay:co,duration:ho,ease:go,easeVarying:yo,end:qo,[Symbol.iterator]:tt[Symbol.iterator]};function Uo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Go={time:null,delay:0,duration:250,ease:Uo};function Ko(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function Wo(t){var e,n;t instanceof rt?(e=t._id,t=t._name):(e=mn(),(n=Go).time=fe(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a=r[o],s=a.length,c,u=0;u<s;++u)(c=a[u])&&Ut(c,t,e,u,a,n||Ko(c,e));return new rt(r,this._parents,t,e)}At.prototype.interrupt=Vi;At.prototype.transition=Wo;function Qo(t,e){var n,r=1;t==null&&(t=0),e==null&&(e=0);function i(){var o,a=n.length,s,c=0,u=0;for(o=0;o<a;++o)s=n[o],c+=s.x,u+=s.y;for(c=(c/a-t)*r,u=(u/a-e)*r,o=0;o<a;++o)s=n[o],s.x-=c,s.y-=u}return i.initialize=function(o){n=o},i.x=function(o){return arguments.length?(t=+o,i):t},i.y=function(o){return arguments.length?(e=+o,i):e},i.strength=function(o){return arguments.length?(r=+o,i):r},i}function Zo(t){const e=+this._x.call(null,t),n=+this._y.call(null,t);return yn(this.cover(e,n),e,n,t)}function yn(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,o=t._root,a={data:r},s=t._x0,c=t._y0,u=t._x1,l=t._y1,d,f,h,b,y,v,m,_;if(!o)return t._root=a,t;for(;o.length;)if((y=e>=(d=(s+u)/2))?s=d:u=d,(v=n>=(f=(c+l)/2))?c=f:l=f,i=o,!(o=o[m=v<<1|y]))return i[m]=a,t;if(h=+t._x.call(null,o.data),b=+t._y.call(null,o.data),e===h&&n===b)return a.next=o,i?i[m]=a:t._root=a,t;do i=i?i[m]=new Array(4):t._root=new Array(4),(y=e>=(d=(s+u)/2))?s=d:u=d,(v=n>=(f=(c+l)/2))?c=f:l=f;while((m=v<<1|y)===(_=(b>=f)<<1|h>=d));return i[_]=o,i[m]=a,t}function Jo(t){var e,n,r=t.length,i,o,a=new Array(r),s=new Array(r),c=1/0,u=1/0,l=-1/0,d=-1/0;for(n=0;n<r;++n)isNaN(i=+this._x.call(null,e=t[n]))||isNaN(o=+this._y.call(null,e))||(a[n]=i,s[n]=o,i<c&&(c=i),i>l&&(l=i),o<u&&(u=o),o>d&&(d=o));if(c>l||u>d)return this;for(this.cover(c,u).cover(l,d),n=0;n<r;++n)yn(this,a[n],s[n],t[n]);return this}function jo(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,o=(r=Math.floor(e))+1;else{for(var a=i-n||1,s=this._root,c,u;n>t||t>=i||r>e||e>=o;)switch(u=(e<r)<<1|t<n,c=new Array(4),c[u]=s,s=c,a*=2,u){case 0:i=n+a,o=r+a;break;case 1:n=i-a,o=r+a;break;case 2:i=n+a,r=o-a;break;case 3:n=i-a,r=o-a;break}this._root&&this._root.length&&(this._root=s)}return this._x0=n,this._y0=r,this._x1=i,this._y1=o,this}function ta(){var t=[];return this.visit(function(e){if(!e.length)do t.push(e.data);while(e=e.next)}),t}function ea(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function O(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}function na(t,e,n){var r,i=this._x0,o=this._y0,a,s,c,u,l=this._x1,d=this._y1,f=[],h=this._root,b,y;for(h&&f.push(new O(h,i,o,l,d)),n==null?n=1/0:(i=t-n,o=e-n,l=t+n,d=e+n,n*=n);b=f.pop();)if(!(!(h=b.node)||(a=b.x0)>l||(s=b.y0)>d||(c=b.x1)<i||(u=b.y1)<o))if(h.length){var v=(a+c)/2,m=(s+u)/2;f.push(new O(h[3],v,m,c,u),new O(h[2],a,m,v,u),new O(h[1],v,s,c,m),new O(h[0],a,s,v,m)),(y=(e>=m)<<1|t>=v)&&(b=f[f.length-1],f[f.length-1]=f[f.length-1-y],f[f.length-1-y]=b)}else{var _=t-+this._x.call(null,h.data),A=e-+this._y.call(null,h.data),p=_*_+A*A;if(p<n){var E=Math.sqrt(n=p);i=t-E,o=e-E,l=t+E,d=e+E,r=h.data}}return r}function ra(t){if(isNaN(l=+this._x.call(null,t))||isNaN(d=+this._y.call(null,t)))return this;var e,n=this._root,r,i,o,a=this._x0,s=this._y0,c=this._x1,u=this._y1,l,d,f,h,b,y,v,m;if(!n)return this;if(n.length)for(;;){if((b=l>=(f=(a+c)/2))?a=f:c=f,(y=d>=(h=(s+u)/2))?s=h:u=h,e=n,!(n=n[v=y<<1|b]))return this;if(!n.length)break;(e[v+1&3]||e[v+2&3]||e[v+3&3])&&(r=e,m=v)}for(;n.data!==t;)if(i=n,!(n=n.next))return this;return(o=n.next)&&delete n.next,i?(o?i.next=o:delete i.next,this):e?(o?e[v]=o:delete e[v],(n=e[0]||e[1]||e[2]||e[3])&&n===(e[3]||e[2]||e[1]||e[0])&&!n.length&&(r?r[m]=n:this._root=n),this):(this._root=o,this)}function ia(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this}function oa(){return this._root}function aa(){var t=0;return this.visit(function(e){if(!e.length)do++t;while(e=e.next)}),t}function sa(t){var e=[],n,r=this._root,i,o,a,s,c;for(r&&e.push(new O(r,this._x0,this._y0,this._x1,this._y1));n=e.pop();)if(!t(r=n.node,o=n.x0,a=n.y0,s=n.x1,c=n.y1)&&r.length){var u=(o+s)/2,l=(a+c)/2;(i=r[3])&&e.push(new O(i,u,l,s,c)),(i=r[2])&&e.push(new O(i,o,l,u,c)),(i=r[1])&&e.push(new O(i,u,a,s,l)),(i=r[0])&&e.push(new O(i,o,a,u,l))}return this}function ua(t){var e=[],n=[],r;for(this._root&&e.push(new O(this._root,this._x0,this._y0,this._x1,this._y1));r=e.pop();){var i=r.node;if(i.length){var o,a=r.x0,s=r.y0,c=r.x1,u=r.y1,l=(a+c)/2,d=(s+u)/2;(o=i[0])&&e.push(new O(o,a,s,l,d)),(o=i[1])&&e.push(new O(o,l,s,c,d)),(o=i[2])&&e.push(new O(o,a,d,l,u)),(o=i[3])&&e.push(new O(o,l,d,c,u))}n.push(r)}for(;r=n.pop();)t(r.node,r.x0,r.y0,r.x1,r.y1);return this}function ca(t){return t[0]}function la(t){return arguments.length?(this._x=t,this):this._x}function fa(t){return t[1]}function ha(t){return arguments.length?(this._y=t,this):this._y}function ge(t,e,n){var r=new me(e??ca,n??fa,NaN,NaN,NaN,NaN);return t==null?r:r.addAll(t)}function me(t,e,n,r,i,o){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Re(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var Y=ge.prototype=me.prototype;Y.copy=function(){var t=new me(this._x,this._y,this._x0,this._y0,this._x1,this._y1),e=this._root,n,r;if(!e)return t;if(!e.length)return t._root=Re(e),t;for(n=[{source:e,target:t._root=new Array(4)}];e=n.pop();)for(var i=0;i<4;++i)(r=e.source[i])&&(r.length?n.push({source:r,target:e.target[i]=new Array(4)}):e.target[i]=Re(r));return t};Y.add=Zo;Y.addAll=Jo;Y.cover=jo;Y.data=ta;Y.extent=ea;Y.find=na;Y.remove=ra;Y.removeAll=ia;Y.root=oa;Y.size=aa;Y.visit=sa;Y.visitAfter=ua;Y.x=la;Y.y=ha;function ut(t){return function(){return t}}function ot(t){return(t()-.5)*1e-6}function da(t){return t.x+t.vx}function pa(t){return t.y+t.vy}function ga(t){var e,n,r,i=1,o=1;typeof t!="function"&&(t=ut(t==null?1:+t));function a(){for(var u,l=e.length,d,f,h,b,y,v,m=0;m<o;++m)for(d=ge(e,da,pa).visitAfter(s),u=0;u<l;++u)f=e[u],y=n[f.index],v=y*y,h=f.x+f.vx,b=f.y+f.vy,d.visit(_);function _(A,p,E,C,$){var T=A.data,D=A.r,z=y+D;if(T){if(T.index>f.index){var L=h-T.x-T.vx,R=b-T.y-T.vy,P=L*L+R*R;P<z*z&&(L===0&&(L=ot(r),P+=L*L),R===0&&(R=ot(r),P+=R*R),P=(z-(P=Math.sqrt(P)))/P*i,f.vx+=(L*=P)*(z=(D*=D)/(v+D)),f.vy+=(R*=P)*z,T.vx-=L*(z=1-z),T.vy-=R*z)}return}return p>h+z||C<h-z||E>b+z||$<b-z}}function s(u){if(u.data)return u.r=n[u.data.index];for(var l=u.r=0;l<4;++l)u[l]&&u[l].r>u.r&&(u.r=u[l].r)}function c(){if(e){var u,l=e.length,d;for(n=new Array(l),u=0;u<l;++u)d=e[u],n[d.index]=+t(d,u,e)}}return a.initialize=function(u,l){e=u,r=l,c()},a.iterations=function(u){return arguments.length?(o=+u,a):o},a.strength=function(u){return arguments.length?(i=+u,a):i},a.radius=function(u){return arguments.length?(t=typeof u=="function"?u:ut(+u),c(),a):t},a}function ma(t){return t.index}function Le(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "+e);return n}function ya(t){var e=ma,n=d,r,i=ut(30),o,a,s,c,u,l=1;t==null&&(t=[]);function d(v){return 1/Math.min(s[v.source.index],s[v.target.index])}function f(v){for(var m=0,_=t.length;m<l;++m)for(var A=0,p,E,C,$,T,D,z;A<_;++A)p=t[A],E=p.source,C=p.target,$=C.x+C.vx-E.x-E.vx||ot(u),T=C.y+C.vy-E.y-E.vy||ot(u),D=Math.sqrt($*$+T*T),D=(D-o[A])/D*v*r[A],$*=D,T*=D,C.vx-=$*(z=c[A]),C.vy-=T*z,E.vx+=$*(z=1-z),E.vy+=T*z}function h(){if(a){var v,m=a.length,_=t.length,A=new Map(a.map((E,C)=>[e(E,C,a),E])),p;for(v=0,s=new Array(m);v<_;++v)p=t[v],p.index=v,typeof p.source!="object"&&(p.source=Le(A,p.source)),typeof p.target!="object"&&(p.target=Le(A,p.target)),s[p.source.index]=(s[p.source.index]||0)+1,s[p.target.index]=(s[p.target.index]||0)+1;for(v=0,c=new Array(_);v<_;++v)p=t[v],c[v]=s[p.source.index]/(s[p.source.index]+s[p.target.index]);r=new Array(_),b(),o=new Array(_),y()}}function b(){if(a)for(var v=0,m=t.length;v<m;++v)r[v]=+n(t[v],v,t)}function y(){if(a)for(var v=0,m=t.length;v<m;++v)o[v]=+i(t[v],v,t)}return f.initialize=function(v,m){a=v,u=m,h()},f.links=function(v){return arguments.length?(t=v,h(),f):t},f.id=function(v){return arguments.length?(e=v,f):e},f.iterations=function(v){return arguments.length?(l=+v,f):l},f.strength=function(v){return arguments.length?(n=typeof v=="function"?v:ut(+v),b(),f):n},f.distance=function(v){return arguments.length?(i=typeof v=="function"?v:ut(+v),y(),f):i},f}const xa=1664525,va=1013904223,Fe=4294967296;function wa(){let t=1;return()=>(t=(xa*t+va)%Fe)/Fe}function _a(t){return t.x}function ba(t){return t.y}var Na=10,Ea=Math.PI*(3-Math.sqrt(5));function Aa(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,s=new Map,c=he(d),u=Et("tick","end"),l=wa();t==null&&(t=[]);function d(){f(),u.call("tick",e),n<r&&(c.stop(),u.call("end",e))}function f(y){var v,m=t.length,_;y===void 0&&(y=1);for(var A=0;A<y;++A)for(n+=(o-n)*i,s.forEach(function(p){p(n)}),v=0;v<m;++v)_=t[v],_.fx==null?_.x+=_.vx*=a:(_.x=_.fx,_.vx=0),_.fy==null?_.y+=_.vy*=a:(_.y=_.fy,_.vy=0);return e}function h(){for(var y=0,v=t.length,m;y<v;++y){if(m=t[y],m.index=y,m.fx!=null&&(m.x=m.fx),m.fy!=null&&(m.y=m.fy),isNaN(m.x)||isNaN(m.y)){var _=Na*Math.sqrt(.5+y),A=y*Ea;m.x=_*Math.cos(A),m.y=_*Math.sin(A)}(isNaN(m.vx)||isNaN(m.vy))&&(m.vx=m.vy=0)}}function b(y){return y.initialize&&y.initialize(t,l),y}return h(),e={tick:f,restart:function(){return c.restart(d),e},stop:function(){return c.stop(),e},nodes:function(y){return arguments.length?(t=y,h(),s.forEach(b),e):t},alpha:function(y){return arguments.length?(n=+y,e):n},alphaMin:function(y){return arguments.length?(r=+y,e):r},alphaDecay:function(y){return arguments.length?(i=+y,e):+i},alphaTarget:function(y){return arguments.length?(o=+y,e):o},velocityDecay:function(y){return arguments.length?(a=1-y,e):1-a},randomSource:function(y){return arguments.length?(l=y,s.forEach(b),e):l},force:function(y,v){return arguments.length>1?(v==null?s.delete(y):s.set(y,b(v)),e):s.get(y)},find:function(y,v,m){var _=0,A=t.length,p,E,C,$,T;for(m==null?m=1/0:m*=m,_=0;_<A;++_)$=t[_],p=y-$.x,E=v-$.y,C=p*p+E*E,C<m&&(T=$,m=C);return T},on:function(y,v){return arguments.length>1?(u.on(y,v),e):u.on(y)}}}function Ca(){var t,e,n,r,i=ut(-30),o,a=1,s=1/0,c=.81;function u(h){var b,y=t.length,v=ge(t,_a,ba).visitAfter(d);for(r=h,b=0;b<y;++b)e=t[b],v.visit(f)}function l(){if(t){var h,b=t.length,y;for(o=new Array(b),h=0;h<b;++h)y=t[h],o[y.index]=+i(y,h,t)}}function d(h){var b=0,y,v,m=0,_,A,p;if(h.length){for(_=A=p=0;p<4;++p)(y=h[p])&&(v=Math.abs(y.value))&&(b+=y.value,m+=v,_+=v*y.x,A+=v*y.y);h.x=_/m,h.y=A/m}else{y=h,y.x=y.data.x,y.y=y.data.y;do b+=o[y.data.index];while(y=y.next)}h.value=b}function f(h,b,y,v){if(!h.value)return!0;var m=h.x-e.x,_=h.y-e.y,A=v-b,p=m*m+_*_;if(A*A/c<p)return p<s&&(m===0&&(m=ot(n),p+=m*m),_===0&&(_=ot(n),p+=_*_),p<a&&(p=Math.sqrt(a*p)),e.vx+=m*h.value*r/p,e.vy+=_*h.value*r/p),!0;if(h.length||p>=s)return;(h.data!==e||h.next)&&(m===0&&(m=ot(n),p+=m*m),_===0&&(_=ot(n),p+=_*_),p<a&&(p=Math.sqrt(a*p)));do h.data!==e&&(A=o[h.data.index]*r/p,e.vx+=m*A,e.vy+=_*A);while(h=h.next)}return u.initialize=function(h,b){t=h,n=b,l()},u.strength=function(h){return arguments.length?(i=typeof h=="function"?h:ut(+h),l(),u):i},u.distanceMin=function(h){return arguments.length?(a=h*h,u):Math.sqrt(a)},u.distanceMax=function(h){return arguments.length?(s=h*h,u):Math.sqrt(s)},u.theta=function(h){return arguments.length?(c=h*h,u):Math.sqrt(c)},u}const St=t=>()=>t;function Ma(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function nt(t,e,n){this.k=t,this.x=e,this.y=n}nt.prototype={constructor:nt,scale:function(t){return t===1?this:new nt(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new nt(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Yt=new nt(1,0,0);nt.prototype;function Zt(t){t.stopImmediatePropagation()}function gt(t){t.preventDefault(),t.stopImmediatePropagation()}function $a(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function Ta(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function He(){return this.__zoom||Yt}function ka(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Sa(){return navigator.maxTouchPoints||"ontouchstart"in this}function za(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],o=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}function Ia(){var t=$a,e=Ta,n=za,r=ka,i=Sa,o=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],s=250,c=Fi,u=Et("start","zoom","end"),l,d,f,h=500,b=150,y=0,v=10;function m(g){g.property("__zoom",He).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",D).on("dblclick.zoom",z).filter(i).on("touchstart.zoom",L).on("touchmove.zoom",R).on("touchend.zoom touchcancel.zoom",P).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(g,x,w,N){var M=g.selection?g.selection():g;M.property("__zoom",He),g!==M?E(g,x,w,N):M.interrupt().each(function(){C(this,arguments).event(N).start().zoom(null,typeof x=="function"?x.apply(this,arguments):x).end()})},m.scaleBy=function(g,x,w,N){m.scaleTo(g,function(){var M=this.__zoom.k,k=typeof x=="function"?x.apply(this,arguments):x;return M*k},w,N)},m.scaleTo=function(g,x,w,N){m.transform(g,function(){var M=e.apply(this,arguments),k=this.__zoom,S=w==null?p(M):typeof w=="function"?w.apply(this,arguments):w,I=k.invert(S),F=typeof x=="function"?x.apply(this,arguments):x;return n(A(_(k,F),S,I),M,a)},w,N)},m.translateBy=function(g,x,w,N){m.transform(g,function(){return n(this.__zoom.translate(typeof x=="function"?x.apply(this,arguments):x,typeof w=="function"?w.apply(this,arguments):w),e.apply(this,arguments),a)},null,N)},m.translateTo=function(g,x,w,N,M){m.transform(g,function(){var k=e.apply(this,arguments),S=this.__zoom,I=N==null?p(k):typeof N=="function"?N.apply(this,arguments):N;return n(Yt.translate(I[0],I[1]).scale(S.k).translate(typeof x=="function"?-x.apply(this,arguments):-x,typeof w=="function"?-w.apply(this,arguments):-w),k,a)},N,M)};function _(g,x){return x=Math.max(o[0],Math.min(o[1],x)),x===g.k?g:new nt(x,g.x,g.y)}function A(g,x,w){var N=x[0]-w[0]*g.k,M=x[1]-w[1]*g.k;return N===g.x&&M===g.y?g:new nt(g.k,N,M)}function p(g){return[(+g[0][0]+ +g[1][0])/2,(+g[0][1]+ +g[1][1])/2]}function E(g,x,w,N){g.on("start.zoom",function(){C(this,arguments).event(N).start()}).on("interrupt.zoom end.zoom",function(){C(this,arguments).event(N).end()}).tween("zoom",function(){var M=this,k=arguments,S=C(M,k).event(N),I=e.apply(M,k),F=w==null?p(I):typeof w=="function"?w.apply(M,k):w,U=Math.max(I[1][0]-I[0][0],I[1][1]-I[0][1]),H=M.__zoom,B=typeof x=="function"?x.apply(M,k):x,J=c(H.invert(F).concat(U/H.k),B.invert(F).concat(U/B.k));return function(G){if(G===1)G=B;else{var j=J(G),Gt=U/j[2];G=new nt(Gt,F[0]-j[0]*Gt,F[1]-j[1]*Gt)}S.zoom(null,G)}})}function C(g,x,w){return!w&&g.__zooming||new $(g,x)}function $(g,x){this.that=g,this.args=x,this.active=0,this.sourceEvent=null,this.extent=e.apply(g,x),this.taps=0}$.prototype={event:function(g){return g&&(this.sourceEvent=g),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(g,x){return this.mouse&&g!=="mouse"&&(this.mouse[1]=x.invert(this.mouse[0])),this.touch0&&g!=="touch"&&(this.touch0[1]=x.invert(this.touch0[0])),this.touch1&&g!=="touch"&&(this.touch1[1]=x.invert(this.touch1[0])),this.that.__zoom=x,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(g){var x=X(this.that).datum();u.call(g,this.that,new Ma(g,{sourceEvent:this.sourceEvent,target:m,transform:this.that.__zoom,dispatch:u}),x)}};function T(g,...x){if(!t.apply(this,arguments))return;var w=C(this,x).event(g),N=this.__zoom,M=Math.max(o[0],Math.min(o[1],N.k*Math.pow(2,r.apply(this,arguments)))),k=et(g);if(w.wheel)(w.mouse[0][0]!==k[0]||w.mouse[0][1]!==k[1])&&(w.mouse[1]=N.invert(w.mouse[0]=k)),clearTimeout(w.wheel);else{if(N.k===M)return;w.mouse=[k,N.invert(k)],Lt(this),w.start()}gt(g),w.wheel=setTimeout(S,b),w.zoom("mouse",n(A(_(N,M),w.mouse[0],w.mouse[1]),w.extent,a));function S(){w.wheel=null,w.end()}}function D(g,...x){if(f||!t.apply(this,arguments))return;var w=g.currentTarget,N=C(this,x,!0).event(g),M=X(g.view).on("mousemove.zoom",F,!0).on("mouseup.zoom",U,!0),k=et(g,w),S=g.clientX,I=g.clientY;nn(g.view),Zt(g),N.mouse=[k,this.__zoom.invert(k)],Lt(this),N.start();function F(H){if(gt(H),!N.moved){var B=H.clientX-S,J=H.clientY-I;N.moved=B*B+J*J>y}N.event(H).zoom("mouse",n(A(N.that.__zoom,N.mouse[0]=et(H,w),N.mouse[1]),N.extent,a))}function U(H){M.on("mousemove.zoom mouseup.zoom",null),rn(H.view,N.moved),gt(H),N.event(H).end()}}function z(g,...x){if(t.apply(this,arguments)){var w=this.__zoom,N=et(g.changedTouches?g.changedTouches[0]:g,this),M=w.invert(N),k=w.k*(g.shiftKey?.5:2),S=n(A(_(w,k),N,M),e.apply(this,x),a);gt(g),s>0?X(this).transition().duration(s).call(E,S,N,g):X(this).call(m.transform,S,N,g)}}function L(g,...x){if(t.apply(this,arguments)){var w=g.touches,N=w.length,M=C(this,x,g.changedTouches.length===N).event(g),k,S,I,F;for(Zt(g),S=0;S<N;++S)I=w[S],F=et(I,this),F=[F,this.__zoom.invert(F),I.identifier],M.touch0?!M.touch1&&M.touch0[2]!==F[2]&&(M.touch1=F,M.taps=0):(M.touch0=F,k=!0,M.taps=1+!!l);l&&(l=clearTimeout(l)),k&&(M.taps<2&&(d=F[0],l=setTimeout(function(){l=null},h)),Lt(this),M.start())}}function R(g,...x){if(this.__zooming){var w=C(this,x).event(g),N=g.changedTouches,M=N.length,k,S,I,F;for(gt(g),k=0;k<M;++k)S=N[k],I=et(S,this),w.touch0&&w.touch0[2]===S.identifier?w.touch0[0]=I:w.touch1&&w.touch1[2]===S.identifier&&(w.touch1[0]=I);if(S=w.that.__zoom,w.touch1){var U=w.touch0[0],H=w.touch0[1],B=w.touch1[0],J=w.touch1[1],G=(G=B[0]-U[0])*G+(G=B[1]-U[1])*G,j=(j=J[0]-H[0])*j+(j=J[1]-H[1])*j;S=_(S,Math.sqrt(G/j)),I=[(U[0]+B[0])/2,(U[1]+B[1])/2],F=[(H[0]+J[0])/2,(H[1]+J[1])/2]}else if(w.touch0)I=w.touch0[0],F=w.touch0[1];else return;w.zoom("touch",n(A(S,I,F),w.extent,a))}}function P(g,...x){if(this.__zooming){var w=C(this,x).event(g),N=g.changedTouches,M=N.length,k,S;for(Zt(g),f&&clearTimeout(f),f=setTimeout(function(){f=null},h),k=0;k<M;++k)S=N[k],w.touch0&&w.touch0[2]===S.identifier?delete w.touch0:w.touch1&&w.touch1[2]===S.identifier&&delete w.touch1;if(w.touch1&&!w.touch0&&(w.touch0=w.touch1,delete w.touch1),w.touch0)w.touch0[1]=this.__zoom.invert(w.touch0[0]);else if(w.end(),w.taps===2&&(S=et(S,this),Math.hypot(d[0]-S[0],d[1]-S[1])<v)){var I=X(this).on("dblclick.zoom");I&&I.apply(this,arguments)}}}return m.wheelDelta=function(g){return arguments.length?(r=typeof g=="function"?g:St(+g),m):r},m.filter=function(g){return arguments.length?(t=typeof g=="function"?g:St(!!g),m):t},m.touchable=function(g){return arguments.length?(i=typeof g=="function"?g:St(!!g),m):i},m.extent=function(g){return arguments.length?(e=typeof g=="function"?g:St([[+g[0][0],+g[0][1]],[+g[1][0],+g[1][1]]]),m):e},m.scaleExtent=function(g){return arguments.length?(o[0]=+g[0],o[1]=+g[1],m):[o[0],o[1]]},m.translateExtent=function(g){return arguments.length?(a[0][0]=+g[0][0],a[1][0]=+g[1][0],a[0][1]=+g[0][1],a[1][1]=+g[1][1],m):[[a[0][0],a[0][1]],[a[1][0],a[1][1]]]},m.constrain=function(g){return arguments.length?(n=g,m):n},m.duration=function(g){return arguments.length?(s=+g,m):s},m.interpolate=function(g){return arguments.length?(c=g,m):c},m.on=function(){var g=u.on.apply(u,arguments);return g===u?m:g},m.clickDistance=function(g){return arguments.length?(y=(g=+g)*g,m):Math.sqrt(y)},m.tapDistance=function(g){return arguments.length?(v=+g,m):v},m}const Da={file:{color:"#3B82F6",shape:"circle"},class:{color:"#8B5CF6",shape:"square"},module:{color:"#10B981",shape:"diamond"}},Ra={color:"#6B7280",shape:"circle"};function La(t){return Da[t]??Ra}const Jt=16,mt=14,zt=30,Be=["rgba(59, 130, 246, 0.1)","rgba(139, 92, 246, 0.1)","rgba(16, 185, 129, 0.1)","rgba(245, 158, 11, 0.1)","rgba(239, 68, 68, 0.1)","rgba(14, 165, 233, 0.1)","rgba(168, 85, 247, 0.1)","rgba(20, 184, 166, 0.1)","rgba(249, 115, 22, 0.1)","rgba(236, 72, 153, 0.1)"],Fa=["rgba(59, 130, 246, 0.4)","rgba(139, 92, 246, 0.4)","rgba(16, 185, 129, 0.4)","rgba(245, 158, 11, 0.4)","rgba(239, 68, 68, 0.4)","rgba(14, 165, 233, 0.4)","rgba(168, 85, 247, 0.4)","rgba(20, 184, 166, 0.4)","rgba(249, 115, 22, 0.4)","rgba(236, 72, 153, 0.4)"];function Ha(t){const{container:e,width:n,height:r}=t,i=X(e).append("svg").attr("width",n).attr("height",r).attr("class","graph-svg");i.append("defs").append("marker").attr("id","arrowhead").attr("viewBox","0 0 10 10").attr("refX",28).attr("refY",5).attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 Z").attr("fill","#94A3B8");const a=i.append("g").attr("class","zoom-container"),s=a.append("g").attr("class","layers"),c=a.append("g").attr("class","edges"),u=a.append("g").attr("class","nodes"),l=Ia().scaleExtent([.1,10]).extent([[0,0],[n,r]]).on("zoom",_=>{a.attr("transform",_.transform.toString())});i.call(l);let d=null;const f=document.createElement("div");f.className="graph-tooltip absolute hidden bg-gray-900 text-white text-sm rounded-lg shadow-lg px-3 py-2 pointer-events-none z-50",f.style.position="absolute",f.style.display="none",e.style.position=e.style.position||"relative",e.appendChild(f);function h(_){s.selectAll("*").remove(),c.selectAll("*").remove(),u.selectAll("*").remove(),d&&(d.stop(),d=null);const A=_.nodes.map(x=>({id:x.id,type:x.type,name:x.name,summary:x.summary,tags:[...x.tags]})),p=new Set(A.map(x=>x.id)),E=_.edges.filter(x=>p.has(x.source)&&p.has(x.target)).map(x=>({source:x.source,target:x.target,type:x.type}));_.edges.forEach(x=>{(!p.has(x.source)||!p.has(x.target))&&console.warn(`Skipping orphaned edge: ${x.source} → ${x.target}`)}),d=Aa(A).force("link",ya(E).id(x=>x.id).distance(100)).force("charge",Ca().strength(-200)).force("center",Qo(n/2,r/2)).force("collide",ga(Jt+4));const C=c.selectAll("line").data(E).join("line").attr("class","edge").attr("stroke","#94A3B8").attr("stroke-width",1.5).attr("marker-end","url(#arrowhead)"),$=c.selectAll("text.edge-label").data(E).join("text").attr("class","edge-label").text(x=>x.type).attr("text-anchor","middle").attr("font-size","10px").attr("fill","#64748B").attr("dy",-6),T=u.selectAll("g").data(A,x=>x.id).join("g").attr("class","node");T.each(function(x){const w=X(this),N=La(x.type);if(N.shape==="circle")w.append("circle").attr("r",Jt).attr("fill",N.color).attr("stroke","#fff").attr("stroke-width",2);else if(N.shape==="square")w.append("rect").attr("x",-mt).attr("y",-mt).attr("width",mt*2).attr("height",mt*2).attr("rx",3).attr("fill",N.color).attr("stroke","#fff").attr("stroke-width",2);else if(N.shape==="diamond"){const M=mt;w.append("polygon").attr("points",`0,${-M} ${M},0 0,${M} ${-M},0`).attr("fill",N.color).attr("stroke","#fff").attr("stroke-width",2)}w.append("text").text(x.name).attr("text-anchor","middle").attr("dy",Jt+14).attr("font-size","11px").attr("fill","#374151")});const D=fi().on("start",(x,w)=>{!x.active&&d&&d.alphaTarget(.3).restart(),w.fx=w.x,w.fy=w.y}).on("drag",(x,w)=>{w.fx=x.x,w.fy=x.y}).on("end",(x,w)=>{!x.active&&d&&d.alphaTarget(0),w.fx=null,w.fy=null});T.call(D),T.on("mouseenter",function(x,w){const N=w.tags.length>0?w.tags.join(", "):"";f.innerHTML=[`<div class="tooltip-name font-bold">${w.name}</div>`,`<div class="tooltip-type text-gray-300">${w.type}</div>`,`<div class="tooltip-summary text-gray-400">${w.summary}</div>`,N?`<div class="tooltip-tags mt-1">${w.tags.map(k=>`<span class="inline-block bg-gray-700 rounded px-1 mr-1 text-xs">${k}</span>`).join("")}</div>`:""].join(""),f.style.display="block",f.classList.remove("hidden");const M=e.getBoundingClientRect();f.style.left=`${x.clientX-M.left+12}px`,f.style.top=`${x.clientY-M.top+12}px`}).on("mouseleave",function(){f.style.display="none",f.classList.add("hidden")});const L=(_.layers??[]).filter(x=>x.nodeIds.filter(N=>p.has(N)?!0:(console.warn(`Layer "${x.name}": skipping missing node "${N}"`),!1)).length>0),R=s.selectAll("g.layer").data(L,x=>x.id).join("g").attr("class","layer");R.each(function(x,w){const N=X(this),M=w%Be.length;N.append("rect").attr("class","layer-rect").attr("rx",8).attr("ry",8).attr("fill",Be[M]).attr("stroke",Fa[M]).attr("stroke-width",1.5),N.append("text").attr("class","layer-label").text(x.name).attr("font-size","12px").attr("font-weight","bold").attr("fill","#6B7280")});const P=new Map;L.forEach(x=>{const w=x.nodeIds.filter(N=>p.has(N));P.set(x.id,w)});const g=new Map;A.forEach(x=>g.set(x.id,x)),d.on("tick",()=>{C.attr("x1",x=>x.source.x??0).attr("y1",x=>x.source.y??0).attr("x2",x=>x.target.x??0).attr("y2",x=>x.target.y??0),$.attr("x",x=>{const w=x.source.x??0,N=x.target.x??0;return(w+N)/2}).attr("y",x=>{const w=x.source.y??0,N=x.target.y??0;return(w+N)/2}),T.attr("transform",x=>`translate(${x.x??0},${x.y??0})`),R.each(function(x){const N=(P.get(x.id)??[]).map(B=>g.get(B)).filter(B=>B!==void 0);if(N.length===0)return;const M=N.map(B=>B.x??0),k=N.map(B=>B.y??0),S=Math.min(...M)-zt,I=Math.min(...k)-zt,F=Math.max(...M)+zt,U=Math.max(...k)+zt,H=X(this);H.select(".layer-rect").attr("x",S).attr("y",I).attr("width",F-S).attr("height",U-I),H.select(".layer-label").attr("x",S+8).attr("y",I+16)})})}function b(_){const A=new Set(_),p=new Set;u.selectAll(".node").each(function(E){p.add(E.id)}),_.forEach(E=>{p.has(E)||console.warn(`highlightNodes: skipping missing node "${E}"`)}),u.selectAll(".node").each(function(E){const C=X(this);A.has(E.id)?(C.attr("opacity",1),C.select("circle, rect, polygon").attr("stroke","#FBBF24").attr("stroke-width",3)):C.attr("opacity",.3)}),c.selectAll(".edge").each(function(E){const C=typeof E.source=="object"?E.source.id:E.source,$=typeof E.target=="object"?E.target.id:E.target,T=A.has(C)||A.has($);X(this).attr("opacity",T?1:.15)})}function y(_){if(_.length===0)return;const A=[],p=new Set;if(u.selectAll(".node").each(function(R){p.add(R.id),_.includes(R.id)&&A.push(R)}),_.forEach(R=>{p.has(R)||console.warn(`panToNodes: skipping missing node "${R}"`)}),A.length===0)return;const E=A.map(R=>R.x??0),C=A.map(R=>R.y??0),$=(Math.min(...E)+Math.max(...E))/2,T=(Math.min(...C)+Math.max(...C))/2,D=n/2-$,z=r/2-T,L=Yt.translate(D,z);i.transition().duration(500).call(l.transform,L)}function v(){u.selectAll(".node").each(function(){const _=X(this);_.attr("opacity",1),_.select("circle, rect, polygon").attr("stroke","#fff").attr("stroke-width",2)}),c.selectAll(".edge").attr("opacity",1),i.transition().duration(300).call(l.transform,Yt)}function m(){d&&(d.stop(),d=null),i.remove(),f.parentNode&&f.parentNode.removeChild(f)}return{render:h,highlightNodes:b,panToNodes:y,resetView:v,destroy:m}}function jt(t,e){const n=document.createElement("div");n.className="rounded-md border border-red-200 bg-red-50 px-4 py-2 text-sm text-red-600",n.setAttribute("role","alert"),n.textContent=e,t.appendChild(n)}function Pe(t){t.querySelectorAll('[role="alert"]').forEach(e=>e.remove())}function Xe(t){t.innerHTML="";const e=document.createElement("div");e.className="absolute inset-0 flex items-center justify-center",e.dataset.testid="loading-indicator";const n=document.createElement("div");n.className="h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-indigo-600",e.appendChild(n);const r=document.createElement("span");r.className="ml-3 text-sm text-gray-500",r.textContent="Loading dashboard…",e.appendChild(r),t.appendChild(e)}function Oe(){const t=document.getElementById("dashboard-selector"),e=document.getElementById("upload-handler"),n=document.getElementById("metadata-panel"),r=document.getElementById("graph-container"),i=document.getElementById("tour-controls");if(!t||!e||!n||!r||!i){console.error("Dashboard Preview: required DOM containers not found.");return}let o=null,a=null,s=[];function c(){if(o)return o;r.innerHTML="";const h=r.clientWidth||800,b=r.clientHeight||500;return o=Ha({container:r,width:h,height:b}),o}function u(h,b){const y=c();y.render(h),_n({container:n,project:h.project,meta:b}),a&&(a.destroy(),a=null);const v=h.tour??[];a=Nn({container:i,steps:v,graphRenderer:y})}async function l(h,b){Pe(t),Xe(r),o&&(o.destroy(),o=null);try{const y=await fetch(`/dashboards/${h}/${b}`);if(!y.ok)throw new Error(`HTTP ${y.status}: ${y.statusText}`);const v=await y.json(),m=Ye(v);if(!m.valid){r.innerHTML="",jt(t,`Invalid dashboard: ${m.errors.join(". ")}.`);return}const A=s.find(p=>p.dirName===h)?.meta;u(v,A)}catch(y){r.innerHTML="";const v=y instanceof Error?y.message:"Unknown error";jt(t,`Failed to load dashboard. ${v}`),console.error("Dashboard fetch error:",y)}}function d(h){Pe(t),Xe(r),o&&(o.destroy(),o=null),u(h)}async function f(){try{const h=await fetch("/dashboard-manifest.json");if(!h.ok)throw new Error(`HTTP ${h.status}: ${h.statusText}`);const b=await h.json();s=b,xn({container:t,manifest:b,onSelect:(y,v)=>{l(y,v)}})}catch(h){const b=h instanceof Error?h.message:"Unknown error";jt(t,`Failed to load dashboard list. ${b}`),console.error("Manifest fetch error:",h)}wn({container:e,onUpload:d})}f()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Oe):Oe();
 
 
_astro/index.astro_astro_type_script_index_0_lang.CzRK6-BF.js ADDED
@@ -0,0 +1 @@
 
 
1
+ function xn(t){const{container:e,manifest:n,onSelect:r}=t,i="w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-700 shadow-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 sm:w-64",a=document.createElement("select");if(a.className=i,n.length===0){const s=document.createElement("option");s.textContent="No dashboards available",s.value="",s.disabled=!0,s.selected=!0,a.appendChild(s),a.disabled=!0}else{const s=document.createElement("option");s.textContent="Select a project…",s.value="",s.disabled=!0,s.selected=!0,a.appendChild(s);for(const c of n){const u=document.createElement("option");u.value=c.dirName,u.textContent=c.dirName,a.appendChild(u)}}let o=null;return a.addEventListener("change",()=>{const s=a.value;if(!s)return;const c=n.find(l=>l.dirName===s);if(!c)return;if(o&&e.contains(o)&&(e.removeChild(o),o=null),c.graphFiles.length===1){r(c.dirName,c.graphFiles[0].fileName);return}o=document.createElement("select"),o.className=i;const u=document.createElement("option");u.textContent="Select a graph file…",u.value="",u.disabled=!0,u.selected=!0,o.appendChild(u);for(const l of c.graphFiles){const d=document.createElement("option");d.value=l.fileName,d.textContent=`${l.projectName} (${l.fileName})`,o.appendChild(d)}o.addEventListener("change",()=>{o&&o.value&&r(c.dirName,o.value)}),e.appendChild(o)}),e.appendChild(a),a}function Ye(t){const e=[];if(t==null||typeof t!="object"||Array.isArray(t))return e.push("Dashboard data must be a non-null object"),{valid:!1,errors:e};const n=t;if(!("nodes"in n)||!Array.isArray(n.nodes))e.push('Dashboard data must contain a "nodes" array');else{const r=n.nodes;for(let i=0;i<r.length;i++){const a=r[i];if(a==null||typeof a!="object"||Array.isArray(a)){e.push(`nodes[${i}] must be an object`);continue}const o=a,s=["id","type","name"];for(const c of s)(!(c in o)||typeof o[c]!="string")&&e.push(`nodes[${i}] is missing required field "${c}"`)}}if(!("edges"in n)||!Array.isArray(n.edges))e.push('Dashboard data must contain an "edges" array');else{const r=n.edges;for(let i=0;i<r.length;i++){const a=r[i];if(a==null||typeof a!="object"||Array.isArray(a)){e.push(`edges[${i}] must be an object`);continue}const o=a,s=["source","target","type"];for(const c of s)(!(c in o)||typeof o[c]!="string")&&e.push(`edges[${i}] is missing required field "${c}"`)}}return{valid:e.length===0,errors:e}}function vn(t){let e;try{e=JSON.parse(t)}catch{return{success:!1,error:"The uploaded file is not valid JSON."}}const n=Ye(e);return n.valid?{success:!0,data:e}:{success:!1,error:`The uploaded file is not a valid dashboard. ${n.errors.join(". ")}.`}}function wn(t){const{container:e,onUpload:n}=t,r=document.createElement("div");r.className="flex flex-col gap-2";const i=document.createElement("input");i.type="file",i.accept=".json",i.multiple=!0,i.className="block w-full text-sm text-gray-700 file:mr-4 file:rounded-md file:border-0 file:bg-blue-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-blue-700 hover:file:bg-blue-100 sm:w-auto";const a=document.createElement("div"),o=document.createElement("div");o.setAttribute("role","alert"),r.appendChild(i),r.appendChild(a),r.appendChild(o),e.appendChild(r);let s=[];function c(d){o.textContent="";const f=document.createElement("div");f.className="rounded-md border border-red-200 bg-red-50 px-4 py-2 text-sm text-red-600",f.textContent=d,o.appendChild(f)}function u(){o.textContent=""}function l(){if(a.innerHTML="",s.length<=1)return;const d=document.createElement("select");d.className="w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-700 shadow-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 sm:w-64";for(let f=0;f<s.length;f++){const p=document.createElement("option");p.value=String(f),p.textContent=s[f].fileName,d.appendChild(p)}d.value=String(s.length-1),d.addEventListener("change",()=>{const f=Number(d.value),p=s[f];p&&n(p.dashboard)}),a.appendChild(d)}return i.addEventListener("change",()=>{u();const d=i.files;if(!d||d.length===0)return;s=[];let f=0;const p=d.length,E=Array.from(d);for(const m of E){const x=new FileReader;x.onload=()=>{f++;const g=x.result,v=vn(g);v.success?s.push({fileName:m.name,dashboard:v.data}):c(`${m.name}: ${v.error}`),f===p&&s.length>0&&(l(),n(s[s.length-1].dashboard))},x.onerror=()=>{f++,c(`Failed to read file: ${m.name}`),f===p&&s.length>0&&(l(),n(s[s.length-1].dashboard))},x.readAsText(m)}}),i}function ye(t){const e=new Date(t);return isNaN(e.getTime())?t:new Intl.DateTimeFormat("en-US",{year:"numeric",month:"long",day:"numeric"}).format(e)}function _n(t){const{container:e,project:n,meta:r}=t;e.innerHTML="";const i=document.createElement("div");i.className="space-y-4";const a=document.createElement("h1");a.className="text-2xl font-bold text-gray-900",a.textContent=n.name,i.appendChild(a);const o=document.createElement("p");if(o.className="text-gray-600",o.textContent=n.description,i.appendChild(o),n.languages.length>0){const s=document.createElement("div");s.className="flex flex-wrap gap-2";for(const c of n.languages){const u=document.createElement("span");u.className="inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800",u.textContent=c,u.dataset.badgeType="language",s.appendChild(u)}i.appendChild(s)}if(n.frameworks.length>0){const s=document.createElement("div");s.className="flex flex-wrap gap-2";for(const c of n.frameworks){const u=document.createElement("span");u.className="inline-flex items-center rounded-full bg-green-100 px-2.5 py-0.5 text-xs font-medium text-green-800",u.textContent=c,u.dataset.badgeType="framework",s.appendChild(u)}i.appendChild(s)}if(r){const s=document.createElement("p");s.className="text-sm text-gray-500",s.textContent=`Analyzed: ${ye(r.lastAnalyzedAt)}`,i.appendChild(s);const c=document.createElement("p");c.className="text-sm text-gray-500";const u=document.createTextNode("Commit: ");c.appendChild(u);const l=document.createElement("code");l.className="font-mono text-gray-700",l.textContent=r.gitCommitHash.slice(0,7),c.appendChild(l),i.appendChild(c);const d=document.createElement("p");d.className="text-sm text-gray-500",d.textContent=`Version: ${r.version}`,i.appendChild(d);const f=document.createElement("p");f.className="text-sm text-gray-500",f.textContent=`Analyzed files: ${r.analyzedFiles}`,i.appendChild(f)}else{const s=document.createElement("p");s.className="text-sm text-gray-500",s.textContent=`Analyzed: ${ye(n.analyzedAt)}`,i.appendChild(s);const c=document.createElement("p");c.className="text-sm text-gray-500";const u=document.createTextNode("Commit: ");c.appendChild(u);const l=document.createElement("code");l.className="font-mono text-gray-700",l.textContent=n.gitCommitHash.slice(0,7),c.appendChild(l),i.appendChild(c)}return e.appendChild(i),i}function bn(t,e){const n={steps:t,currentIndex:0,isActive:!1};function r(){t.length!==0&&(n.isActive=!0,n.currentIndex=0,e(t[n.currentIndex]))}function i(){if(n.isActive){if(n.currentIndex>=t.length-1){o();return}n.currentIndex++,e(t[n.currentIndex])}}function a(){n.isActive&&(n.currentIndex>0&&n.currentIndex--,e(t[n.currentIndex]))}function o(){n.isActive=!1,n.currentIndex=0,e(null)}function s(){return!n.isActive||t.length===0?null:t[n.currentIndex]}function c(){return{...n,steps:[...n.steps]}}return{start:r,next:i,previous:a,end:o,getCurrentStep:s,getState:c}}function Nn(t){const{container:e,steps:n,graphRenderer:r}=t;if(e.innerHTML="",n.length===0){const u=document.createElement("p");return u.className="text-sm text-gray-400",u.textContent="No tour steps available for this dashboard.",e.appendChild(u),{destroy:()=>{e.innerHTML=""}}}const a=bn(n,u=>{u?(r.highlightNodes(u.nodeIds),r.panToNodes(u.nodeIds),c(u)):(r.resetView(),s())}),o=document.createElement("div");o.className="tour-ui",e.appendChild(o);function s(){o.innerHTML="";const u=document.createElement("button");u.className="rounded-lg bg-indigo-600 px-4 py-2 text-sm font-medium text-white hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition-colors",u.textContent="Start Tour",u.dataset.testid="start-tour-btn",u.addEventListener("click",()=>{a.start()}),o.appendChild(u)}function c(u){o.innerHTML="";const l=a.getState(),d=l.currentIndex,f=l.steps.length,p=document.createElement("div");p.className="tour-panel space-y-3",p.dataset.testid="tour-panel";const E=document.createElement("p");E.className="text-xs font-medium text-gray-500 uppercase tracking-wide",E.textContent=`Step ${d+1} of ${f}`,E.dataset.testid="step-counter",p.appendChild(E);const m=document.createElement("h3");m.className="text-lg font-semibold text-gray-900",m.textContent=u.title,m.dataset.testid="step-title",p.appendChild(m);const x=document.createElement("p");x.className="text-sm text-gray-600",x.textContent=u.description,x.dataset.testid="step-description",p.appendChild(x);const g=document.createElement("div");g.className="flex items-center gap-3 pt-2";const v=document.createElement("button");v.className="rounded-lg border border-gray-300 bg-white px-3 py-1.5 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",v.textContent="Previous",v.dataset.testid="prev-btn",v.disabled=d===0,v.addEventListener("click",()=>{a.previous()}),g.appendChild(v);const N=document.createElement("button");N.className="rounded-lg bg-indigo-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition-colors",N.textContent=d===f-1?"Finish":"Next",N.dataset.testid="next-btn",N.addEventListener("click",()=>{a.next()}),g.appendChild(N);const h=document.createElement("button");h.className="ml-auto rounded-lg border border-red-300 bg-white px-3 py-1.5 text-sm font-medium text-red-600 hover:bg-red-50 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 transition-colors",h.textContent="End Tour",h.dataset.testid="end-tour-btn",h.addEventListener("click",()=>{a.end()}),g.appendChild(h),p.appendChild(g),o.appendChild(p)}return s(),{destroy(){a.end(),e.innerHTML=""}}}function En(t){const{container:e}=t;let n=null,r=null;e.innerHTML="";const i=document.createElement("div");i.className="flex flex-col gap-3";const a=document.createElement("div");a.className="flex gap-2";const o=document.createElement("input");o.type="text",o.placeholder="Search by id or name…",o.className="flex-1 rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500",o.setAttribute("aria-label","Search nodes and edges");const s=document.createElement("button");s.type="button",s.textContent="Clear",s.className="rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-indigo-500",s.setAttribute("aria-label","Clear search"),a.appendChild(o),a.appendChild(s);const c=document.createElement("div");c.className="max-h-60 overflow-y-auto",c.setAttribute("role","listbox"),c.setAttribute("aria-label","Search results"),i.appendChild(a),i.appendChild(c),e.appendChild(i);function u(g){if(!n||!g.trim())return[];const v=g.trim().toLowerCase(),N=[];return n.nodes.forEach(h=>{const b=h.id.toLowerCase().includes(v),A=h.name.toLowerCase().includes(v);(b||A)&&N.push({kind:"node",id:h.id,label:h.name,sublabel:`${h.type} • ${h.id}`,nodeIds:[h.id]})}),n.edges.forEach((h,b)=>{`${h.source}${h.target}`;const A=h.source.toLowerCase().includes(v),M=h.target.toLowerCase().includes(v),T=h.type.toLowerCase().includes(v);(A||M||T)&&N.push({kind:"edge",id:`edge-${b}`,label:`${h.source} → ${h.target}`,sublabel:h.type,nodeIds:[h.source,h.target]})}),N}function l(g){if(c.innerHTML="",g.length===0&&o.value.trim()){const v=document.createElement("p");v.className="text-sm text-gray-400 py-2",v.textContent="No results found.",c.appendChild(v);return}g.forEach(v=>{const N=document.createElement("div");N.className="flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm hover:bg-indigo-50 transition-colors",N.setAttribute("role","option"),N.setAttribute("aria-label",`${v.kind}: ${v.label}`);const h=document.createElement("span");h.className=v.kind==="node"?"inline-flex items-center rounded bg-blue-100 px-1.5 py-0.5 text-xs font-medium text-blue-700":"inline-flex items-center rounded bg-green-100 px-1.5 py-0.5 text-xs font-medium text-green-700",h.textContent=v.kind==="node"?"Node":"Edge";const b=document.createElement("div");b.className="min-w-0 flex-1";const A=document.createElement("div");A.className="truncate font-medium text-gray-800",A.textContent=v.label;const M=document.createElement("div");M.className="truncate text-xs text-gray-500",M.textContent=v.sublabel,b.appendChild(A),b.appendChild(M),N.appendChild(h),N.appendChild(b),N.addEventListener("click",()=>{r&&(r.highlightNodes(v.nodeIds),r.panToNodes(v.nodeIds))}),c.appendChild(N)})}let d=null;function f(){d&&clearTimeout(d),d=setTimeout(()=>{const g=u(o.value);l(g)},200)}function p(){o.value="",c.innerHTML="",r&&r.resetView()}o.addEventListener("input",f),s.addEventListener("click",p);function E(g,v){n=g,r=v,o.value="",c.innerHTML=""}function m(){n=null,r=null,o.value="",c.innerHTML=""}function x(){d&&clearTimeout(d),o.removeEventListener("input",f),s.removeEventListener("click",p),e.innerHTML=""}return{setDashboard:E,clear:m,destroy:x}}var Cn={value:()=>{}};function Et(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new zt(n)}function zt(t){this._=t}function An(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}zt.prototype=Et.prototype={constructor:zt,on:function(t,e){var n=this._,r=An(t+"",n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(t=r[a]).type)&&(i=$n(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++a<o;)if(i=(t=r[a]).type)n[i]=xe(n[i],t.name,e);else if(e==null)for(i in n)n[i]=xe(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new zt(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=this._[t],r=0,i=a.length;r<i;++r)a[r].value.apply(e,n)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(e,n)}};function $n(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function xe(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Cn,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}var te="http://www.w3.org/1999/xhtml";const ve={svg:"http://www.w3.org/2000/svg",xhtml:te,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function qt(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),ve.hasOwnProperty(e)?{space:ve[e],local:t}:t}function Mn(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===te&&e.documentElement.namespaceURI===te?e.createElement(t):e.createElementNS(n,t)}}function Tn(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function qe(t){var e=qt(t);return(e.local?Tn:Mn)(e)}function kn(){}function ue(t){return t==null?kn:function(){return this.querySelector(t)}}function Sn(t){typeof t!="function"&&(t=ue(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a=e[i],o=a.length,s=r[i]=new Array(o),c,u,l=0;l<o;++l)(c=a[l])&&(u=t.call(c,c.__data__,l,a))&&("__data__"in c&&(u.__data__=c.__data__),s[l]=u);return new V(r,this._parents)}function In(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function zn(){return[]}function Ve(t){return t==null?zn:function(){return this.querySelectorAll(t)}}function Ln(t){return function(){return In(t.apply(this,arguments))}}function Dn(t){typeof t=="function"?t=Ln(t):t=Ve(t);for(var e=this._groups,n=e.length,r=[],i=[],a=0;a<n;++a)for(var o=e[a],s=o.length,c,u=0;u<s;++u)(c=o[u])&&(r.push(t.call(c,c.__data__,u,o)),i.push(c));return new V(r,i)}function Ue(t){return function(){return this.matches(t)}}function Ge(t){return function(e){return e.matches(t)}}var Rn=Array.prototype.find;function Hn(t){return function(){return Rn.call(this.children,t)}}function Fn(){return this.firstElementChild}function Bn(t){return this.select(t==null?Fn:Hn(typeof t=="function"?t:Ge(t)))}var Pn=Array.prototype.filter;function Xn(){return Array.from(this.children)}function On(t){return function(){return Pn.call(this.children,t)}}function Yn(t){return this.selectAll(t==null?Xn:On(typeof t=="function"?t:Ge(t)))}function qn(t){typeof t!="function"&&(t=Ue(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a=e[i],o=a.length,s=r[i]=[],c,u=0;u<o;++u)(c=a[u])&&t.call(c,c.__data__,u,a)&&s.push(c);return new V(r,this._parents)}function Ke(t){return new Array(t.length)}function Vn(){return new V(this._enter||this._groups.map(Ke),this._parents)}function Ht(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Ht.prototype={constructor:Ht,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function Un(t){return function(){return t}}function Gn(t,e,n,r,i,a){for(var o=0,s,c=e.length,u=a.length;o<u;++o)(s=e[o])?(s.__data__=a[o],r[o]=s):n[o]=new Ht(t,a[o]);for(;o<c;++o)(s=e[o])&&(i[o]=s)}function Kn(t,e,n,r,i,a,o){var s,c,u=new Map,l=e.length,d=a.length,f=new Array(l),p;for(s=0;s<l;++s)(c=e[s])&&(f[s]=p=o.call(c,c.__data__,s,e)+"",u.has(p)?i[s]=c:u.set(p,c));for(s=0;s<d;++s)p=o.call(t,a[s],s,a)+"",(c=u.get(p))?(r[s]=c,c.__data__=a[s],u.delete(p)):n[s]=new Ht(t,a[s]);for(s=0;s<l;++s)(c=e[s])&&u.get(f[s])===c&&(i[s]=c)}function Wn(t){return t.__data__}function Qn(t,e){if(!arguments.length)return Array.from(this,Wn);var n=e?Kn:Gn,r=this._parents,i=this._groups;typeof t!="function"&&(t=Un(t));for(var a=i.length,o=new Array(a),s=new Array(a),c=new Array(a),u=0;u<a;++u){var l=r[u],d=i[u],f=d.length,p=Zn(t.call(l,l&&l.__data__,u,r)),E=p.length,m=s[u]=new Array(E),x=o[u]=new Array(E),g=c[u]=new Array(f);n(l,d,m,x,g,p,e);for(var v=0,N=0,h,b;v<E;++v)if(h=m[v]){for(v>=N&&(N=v+1);!(b=x[N])&&++N<E;);h._next=b||null}}return o=new V(o,r),o._enter=s,o._exit=c,o}function Zn(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Jn(){return new V(this._exit||this._groups.map(Ke),this._parents)}function jn(t,e,n){var r=this.enter(),i=this,a=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function tr(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,a=r.length,o=Math.min(i,a),s=new Array(i),c=0;c<o;++c)for(var u=n[c],l=r[c],d=u.length,f=s[c]=new Array(d),p,E=0;E<d;++E)(p=u[E]||l[E])&&(f[E]=p);for(;c<i;++c)s[c]=n[c];return new V(s,this._parents)}function er(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function nr(t){t||(t=rr);function e(d,f){return d&&f?t(d.__data__,f.__data__):!d-!f}for(var n=this._groups,r=n.length,i=new Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=new Array(s),u,l=0;l<s;++l)(u=o[l])&&(c[l]=u);c.sort(e)}return new V(i,this._parents).order()}function rr(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function ir(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function or(){return Array.from(this)}function ar(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function sr(){let t=0;for(const e of this)++t;return t}function ur(){return!this.node()}function cr(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&t.call(s,s.__data__,a,i);return this}function lr(t){return function(){this.removeAttribute(t)}}function fr(t){return function(){this.removeAttributeNS(t.space,t.local)}}function hr(t,e){return function(){this.setAttribute(t,e)}}function dr(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function pr(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function gr(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function mr(t,e){var n=qt(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?fr:lr:typeof e=="function"?n.local?gr:pr:n.local?dr:hr)(n,e))}function We(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function yr(t){return function(){this.style.removeProperty(t)}}function xr(t,e,n){return function(){this.style.setProperty(t,e,n)}}function vr(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function wr(t,e,n){return arguments.length>1?this.each((e==null?yr:typeof e=="function"?vr:xr)(t,e,n??"")):ht(this.node(),t)}function ht(t,e){return t.style.getPropertyValue(e)||We(t).getComputedStyle(t,null).getPropertyValue(e)}function _r(t){return function(){delete this[t]}}function br(t,e){return function(){this[t]=e}}function Nr(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Er(t,e){return arguments.length>1?this.each((e==null?_r:typeof e=="function"?Nr:br)(t,e)):this.node()[t]}function Qe(t){return t.trim().split(/^|\s+/)}function ce(t){return t.classList||new Ze(t)}function Ze(t){this._node=t,this._names=Qe(t.getAttribute("class")||"")}Ze.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Je(t,e){for(var n=ce(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function je(t,e){for(var n=ce(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Cr(t){return function(){Je(this,t)}}function Ar(t){return function(){je(this,t)}}function $r(t,e){return function(){(e.apply(this,arguments)?Je:je)(this,t)}}function Mr(t,e){var n=Qe(t+"");if(arguments.length<2){for(var r=ce(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?$r:e?Cr:Ar)(n,e))}function Tr(){this.textContent=""}function kr(t){return function(){this.textContent=t}}function Sr(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function Ir(t){return arguments.length?this.each(t==null?Tr:(typeof t=="function"?Sr:kr)(t)):this.node().textContent}function zr(){this.innerHTML=""}function Lr(t){return function(){this.innerHTML=t}}function Dr(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function Rr(t){return arguments.length?this.each(t==null?zr:(typeof t=="function"?Dr:Lr)(t)):this.node().innerHTML}function Hr(){this.nextSibling&&this.parentNode.appendChild(this)}function Fr(){return this.each(Hr)}function Br(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Pr(){return this.each(Br)}function Xr(t){var e=typeof t=="function"?t:qe(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function Or(){return null}function Yr(t,e){var n=typeof t=="function"?t:qe(t),r=e==null?Or:typeof e=="function"?e:ue(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function qr(){var t=this.parentNode;t&&t.removeChild(this)}function Vr(){return this.each(qr)}function Ur(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Gr(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Kr(t){return this.select(t?Gr:Ur)}function Wr(t){return arguments.length?this.property("__data__",t):this.node().__data__}function Qr(t){return function(e){t.call(this,e,this.__data__)}}function Zr(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function Jr(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,a;n<i;++n)a=e[n],(!t.type||a.type===t.type)&&a.name===t.name?this.removeEventListener(a.type,a.listener,a.options):e[++r]=a;++r?e.length=r:delete this.__on}}}function jr(t,e,n){return function(){var r=this.__on,i,a=Qr(e);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=e;return}}this.addEventListener(t.type,a,n),i={type:t.type,name:t.name,value:e,listener:a,options:n},r?r.push(i):this.__on=[i]}}function ti(t,e,n){var r=Zr(t+""),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,u=s.length,l;c<u;++c)for(i=0,l=s[c];i<a;++i)if((o=r[i]).type===l.type&&o.name===l.name)return l.value}return}for(s=e?jr:Jr,i=0;i<a;++i)this.each(s(r[i],e,n));return this}function tn(t,e,n){var r=We(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function ei(t,e){return function(){return tn(this,t,e)}}function ni(t,e){return function(){return tn(this,t,e.apply(this,arguments))}}function ri(t,e){return this.each((typeof e=="function"?ni:ei)(t,e))}function*ii(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var en=[null];function V(t,e){this._groups=t,this._parents=e}function Ct(){return new V([[document.documentElement]],en)}function oi(){return this}V.prototype=Ct.prototype={constructor:V,select:Sn,selectAll:Dn,selectChild:Bn,selectChildren:Yn,filter:qn,data:Qn,enter:Vn,exit:Jn,join:jn,merge:tr,selection:oi,order:er,sort:nr,call:ir,nodes:or,node:ar,size:sr,empty:ur,each:cr,attr:mr,style:wr,property:Er,classed:Mr,text:Ir,html:Rr,raise:Fr,lower:Pr,append:Xr,insert:Yr,remove:Vr,clone:Kr,datum:Wr,on:ti,dispatch:ri,[Symbol.iterator]:ii};function X(t){return typeof t=="string"?new V([[document.querySelector(t)]],[document.documentElement]):new V([[t]],en)}function ai(t){let e;for(;e=t.sourceEvent;)t=e;return t}function et(t,e){if(t=ai(t),e===void 0&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}const si={passive:!1},vt={capture:!0,passive:!1};function Kt(t){t.stopImmediatePropagation()}function lt(t){t.preventDefault(),t.stopImmediatePropagation()}function nn(t){var e=t.document.documentElement,n=X(t).on("dragstart.drag",lt,vt);"onselectstart"in e?n.on("selectstart.drag",lt,vt):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function rn(t,e){var n=t.document.documentElement,r=X(t).on("dragstart.drag",null);e&&(r.on("click.drag",lt,vt),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const $t=t=>()=>t;function ee(t,{sourceEvent:e,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:u,dispatch:l}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:l}})}ee.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function ui(t){return!t.ctrlKey&&!t.button}function ci(){return this.parentNode}function li(t,e){return e??{x:t.x,y:t.y}}function fi(){return navigator.maxTouchPoints||"ontouchstart"in this}function hi(){var t=ui,e=ci,n=li,r=fi,i={},a=Et("start","drag","end"),o=0,s,c,u,l,d=0;function f(h){h.on("mousedown.drag",p).filter(r).on("touchstart.drag",x).on("touchmove.drag",g,si).on("touchend.drag touchcancel.drag",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(h,b){if(!(l||!t.call(this,h,b))){var A=N(this,e.call(this,h,b),h,b,"mouse");A&&(X(h.view).on("mousemove.drag",E,vt).on("mouseup.drag",m,vt),nn(h.view),Kt(h),u=!1,s=h.clientX,c=h.clientY,A("start",h))}}function E(h){if(lt(h),!u){var b=h.clientX-s,A=h.clientY-c;u=b*b+A*A>d}i.mouse("drag",h)}function m(h){X(h.view).on("mousemove.drag mouseup.drag",null),rn(h.view,u),lt(h),i.mouse("end",h)}function x(h,b){if(t.call(this,h,b)){var A=h.changedTouches,M=e.call(this,h,b),T=A.length,L,I;for(L=0;L<T;++L)(I=N(this,M,h,b,A[L].identifier,A[L]))&&(Kt(h),I("start",h,A[L]))}}function g(h){var b=h.changedTouches,A=b.length,M,T;for(M=0;M<A;++M)(T=i[b[M].identifier])&&(lt(h),T("drag",h,b[M]))}function v(h){var b=h.changedTouches,A=b.length,M,T;for(l&&clearTimeout(l),l=setTimeout(function(){l=null},500),M=0;M<A;++M)(T=i[b[M].identifier])&&(Kt(h),T("end",h,b[M]))}function N(h,b,A,M,T,L){var I=a.copy(),R=et(L||A,b),D,P,y;if((y=n.call(h,new ee("beforestart",{sourceEvent:A,target:f,identifier:T,active:o,x:R[0],y:R[1],dx:0,dy:0,dispatch:I}),M))!=null)return D=y.x-R[0]||0,P=y.y-R[1]||0,function w(_,C,$){var k=R,S;switch(_){case"start":i[T]=w,S=o++;break;case"end":delete i[T],--o;case"drag":R=et($||C,b),S=o;break}I.call(_,h,new ee(_,{sourceEvent:C,subject:y,target:f,identifier:T,active:S,x:R[0]+D,y:R[1]+P,dx:R[0]-k[0],dy:R[1]-k[1],dispatch:I}),M)}}return f.filter=function(h){return arguments.length?(t=typeof h=="function"?h:$t(!!h),f):t},f.container=function(h){return arguments.length?(e=typeof h=="function"?h:$t(h),f):e},f.subject=function(h){return arguments.length?(n=typeof h=="function"?h:$t(h),f):n},f.touchable=function(h){return arguments.length?(r=typeof h=="function"?h:$t(!!h),f):r},f.on=function(){var h=a.on.apply(a,arguments);return h===a?f:h},f.clickDistance=function(h){return arguments.length?(d=(h=+h)*h,f):Math.sqrt(d)},f}function le(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function on(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function At(){}var wt=.7,Ft=1/wt,ft="\\s*([+-]?\\d+)\\s*",_t="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Q="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",di=/^#([0-9a-f]{3,8})$/,pi=new RegExp(`^rgb\\(${ft},${ft},${ft}\\)$`),gi=new RegExp(`^rgb\\(${Q},${Q},${Q}\\)$`),mi=new RegExp(`^rgba\\(${ft},${ft},${ft},${_t}\\)$`),yi=new RegExp(`^rgba\\(${Q},${Q},${Q},${_t}\\)$`),xi=new RegExp(`^hsl\\(${_t},${Q},${Q}\\)$`),vi=new RegExp(`^hsla\\(${_t},${Q},${Q},${_t}\\)$`),we={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};le(At,bt,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:_e,formatHex:_e,formatHex8:wi,formatHsl:_i,formatRgb:be,toString:be});function _e(){return this.rgb().formatHex()}function wi(){return this.rgb().formatHex8()}function _i(){return an(this).formatHsl()}function be(){return this.rgb().formatRgb()}function bt(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=di.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Ne(e):n===3?new q(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Mt(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Mt(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=pi.exec(t))?new q(e[1],e[2],e[3],1):(e=gi.exec(t))?new q(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=mi.exec(t))?Mt(e[1],e[2],e[3],e[4]):(e=yi.exec(t))?Mt(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=xi.exec(t))?Ae(e[1],e[2]/100,e[3]/100,1):(e=vi.exec(t))?Ae(e[1],e[2]/100,e[3]/100,e[4]):we.hasOwnProperty(t)?Ne(we[t]):t==="transparent"?new q(NaN,NaN,NaN,0):null}function Ne(t){return new q(t>>16&255,t>>8&255,t&255,1)}function Mt(t,e,n,r){return r<=0&&(t=e=n=NaN),new q(t,e,n,r)}function bi(t){return t instanceof At||(t=bt(t)),t?(t=t.rgb(),new q(t.r,t.g,t.b,t.opacity)):new q}function ne(t,e,n,r){return arguments.length===1?bi(t):new q(t,e,n,r??1)}function q(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}le(q,ne,on(At,{brighter(t){return t=t==null?Ft:Math.pow(Ft,t),new q(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?wt:Math.pow(wt,t),new q(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new q(st(this.r),st(this.g),st(this.b),Bt(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ee,formatHex:Ee,formatHex8:Ni,formatRgb:Ce,toString:Ce}));function Ee(){return`#${at(this.r)}${at(this.g)}${at(this.b)}`}function Ni(){return`#${at(this.r)}${at(this.g)}${at(this.b)}${at((isNaN(this.opacity)?1:this.opacity)*255)}`}function Ce(){const t=Bt(this.opacity);return`${t===1?"rgb(":"rgba("}${st(this.r)}, ${st(this.g)}, ${st(this.b)}${t===1?")":`, ${t})`}`}function Bt(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function st(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function at(t){return t=st(t),(t<16?"0":"")+t.toString(16)}function Ae(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new K(t,e,n,r)}function an(t){if(t instanceof K)return new K(t.h,t.s,t.l,t.opacity);if(t instanceof At||(t=bt(t)),!t)return new K;if(t instanceof K)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(e===a?o=(n-r)/s+(n<r)*6:n===a?o=(r-e)/s+2:o=(e-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new K(o,s,c,t.opacity)}function Ei(t,e,n,r){return arguments.length===1?an(t):new K(t,e,n,r??1)}function K(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}le(K,Ei,on(At,{brighter(t){return t=t==null?Ft:Math.pow(Ft,t),new K(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?wt:Math.pow(wt,t),new K(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new q(Wt(t>=240?t-240:t+120,i,r),Wt(t,i,r),Wt(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new K($e(this.h),Tt(this.s),Tt(this.l),Bt(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Bt(this.opacity);return`${t===1?"hsl(":"hsla("}${$e(this.h)}, ${Tt(this.s)*100}%, ${Tt(this.l)*100}%${t===1?")":`, ${t})`}`}}));function $e(t){return t=(t||0)%360,t<0?t+360:t}function Tt(t){return Math.max(0,Math.min(1,t||0))}function Wt(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const sn=t=>()=>t;function Ci(t,e){return function(n){return t+n*e}}function Ai(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function $i(t){return(t=+t)==1?un:function(e,n){return n-e?Ai(e,n,t):sn(isNaN(e)?n:e)}}function un(t,e){var n=e-t;return n?Ci(t,n):sn(isNaN(t)?e:t)}const Me=(function t(e){var n=$i(e);function r(i,a){var o=n((i=ne(i)).r,(a=ne(a)).r),s=n(i.g,a.g),c=n(i.b,a.b),u=un(i.opacity,a.opacity);return function(l){return i.r=o(l),i.g=s(l),i.b=c(l),i.opacity=u(l),i+""}}return r.gamma=t,r})(1);function it(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var re=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Qt=new RegExp(re.source,"g");function Mi(t){return function(){return t}}function Ti(t){return function(e){return t(e)+""}}function ki(t,e){var n=re.lastIndex=Qt.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(t=t+"",e=e+"";(r=re.exec(t))&&(i=Qt.exec(e));)(a=i.index)>n&&(a=e.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:it(r,i)})),n=Qt.lastIndex;return n<e.length&&(a=e.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Ti(c[0].x):Mi(e):(e=c.length,function(u){for(var l=0,d;l<e;++l)s[(d=c[l]).i]=d.x(u);return s.join("")})}var Te=180/Math.PI,ie={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function cn(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*Te,skewX:Math.atan(c)*Te,scaleX:o,scaleY:s}}var kt;function Si(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?ie:cn(e.a,e.b,e.c,e.d,e.e,e.f)}function Ii(t){return t==null||(kt||(kt=document.createElementNS("http://www.w3.org/2000/svg","g")),kt.setAttribute("transform",t),!(t=kt.transform.baseVal.consolidate()))?ie:(t=t.matrix,cn(t.a,t.b,t.c,t.d,t.e,t.f))}function ln(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function a(u,l,d,f,p,E){if(u!==d||l!==f){var m=p.push("translate(",null,e,null,n);E.push({i:m-4,x:it(u,d)},{i:m-2,x:it(l,f)})}else(d||f)&&p.push("translate("+d+e+f+n)}function o(u,l,d,f){u!==l?(u-l>180?l+=360:l-u>180&&(u+=360),f.push({i:d.push(i(d)+"rotate(",null,r)-2,x:it(u,l)})):l&&d.push(i(d)+"rotate("+l+r)}function s(u,l,d,f){u!==l?f.push({i:d.push(i(d)+"skewX(",null,r)-2,x:it(u,l)}):l&&d.push(i(d)+"skewX("+l+r)}function c(u,l,d,f,p,E){if(u!==d||l!==f){var m=p.push(i(p)+"scale(",null,",",null,")");E.push({i:m-4,x:it(u,d)},{i:m-2,x:it(l,f)})}else(d!==1||f!==1)&&p.push(i(p)+"scale("+d+","+f+")")}return function(u,l){var d=[],f=[];return u=t(u),l=t(l),a(u.translateX,u.translateY,l.translateX,l.translateY,d,f),o(u.rotate,l.rotate,d,f),s(u.skewX,l.skewX,d,f),c(u.scaleX,u.scaleY,l.scaleX,l.scaleY,d,f),u=l=null,function(p){for(var E=-1,m=f.length,x;++E<m;)d[(x=f[E]).i]=x.x(p);return d.join("")}}}var zi=ln(Si,"px, ","px)","deg)"),Li=ln(Ii,", ",")",")"),Di=1e-12;function ke(t){return((t=Math.exp(t))+1/t)/2}function Ri(t){return((t=Math.exp(t))-1/t)/2}function Hi(t){return((t=Math.exp(2*t))-1)/(t+1)}const Fi=(function t(e,n,r){function i(a,o){var s=a[0],c=a[1],u=a[2],l=o[0],d=o[1],f=o[2],p=l-s,E=d-c,m=p*p+E*E,x,g;if(m<Di)g=Math.log(f/u)/e,x=function(M){return[s+M*p,c+M*E,u*Math.exp(e*M*g)]};else{var v=Math.sqrt(m),N=(f*f-u*u+r*m)/(2*u*n*v),h=(f*f-u*u-r*m)/(2*f*n*v),b=Math.log(Math.sqrt(N*N+1)-N),A=Math.log(Math.sqrt(h*h+1)-h);g=(A-b)/e,x=function(M){var T=M*g,L=ke(b),I=u/(n*v)*(L*Hi(e*T+b)-Ri(b));return[s+I*p,c+I*E,u*L/ke(e*T+b)]}}return x.duration=g*1e3*e/Math.SQRT2,x}return i.rho=function(a){var o=Math.max(.001,+a),s=o*o,c=s*s;return t(o,s,c)},i})(Math.SQRT2,2,4);var dt=0,yt=0,pt=0,fn=1e3,Pt,xt,Xt=0,ct=0,Vt=0,Nt=typeof performance=="object"&&performance.now?performance:Date,hn=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function fe(){return ct||(hn(Bi),ct=Nt.now()+Vt)}function Bi(){ct=0}function Ot(){this._call=this._time=this._next=null}Ot.prototype=he.prototype={constructor:Ot,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?fe():+n)+(e==null?0:+e),!this._next&&xt!==this&&(xt?xt._next=this:Pt=this,xt=this),this._call=t,this._time=n,oe()},stop:function(){this._call&&(this._call=null,this._time=1/0,oe())}};function he(t,e,n){var r=new Ot;return r.restart(t,e,n),r}function Pi(){fe(),++dt;for(var t=Pt,e;t;)(e=ct-t._time)>=0&&t._call.call(void 0,e),t=t._next;--dt}function Se(){ct=(Xt=Nt.now())+Vt,dt=yt=0;try{Pi()}finally{dt=0,Oi(),ct=0}}function Xi(){var t=Nt.now(),e=t-Xt;e>fn&&(Vt-=e,Xt=t)}function Oi(){for(var t,e=Pt,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Pt=n);xt=t,oe(r)}function oe(t){if(!dt){yt&&(yt=clearTimeout(yt));var e=t-ct;e>24?(t<1/0&&(yt=setTimeout(Se,t-Nt.now()-Vt)),pt&&(pt=clearInterval(pt))):(pt||(Xt=Nt.now(),pt=setInterval(Xi,fn)),dt=1,hn(Se))}}function Ie(t,e,n){var r=new Ot;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var Yi=Et("start","end","cancel","interrupt"),qi=[],dn=0,ze=1,ae=2,Lt=3,Le=4,se=5,Dt=6;function Ut(t,e,n,r,i,a){var o=t.__transition;if(!o)t.__transition={};else if(n in o)return;Vi(t,n,{name:e,index:r,group:i,on:Yi,tween:qi,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:dn})}function de(t,e){var n=W(t,e);if(n.state>dn)throw new Error("too late; already scheduled");return n}function Z(t,e){var n=W(t,e);if(n.state>Lt)throw new Error("too late; already running");return n}function W(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Vi(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=he(a,0,n.time);function a(u){n.state=ze,n.timer.restart(o,n.delay,n.time),n.delay<=u&&o(u-n.delay)}function o(u){var l,d,f,p;if(n.state!==ze)return c();for(l in r)if(p=r[l],p.name===n.name){if(p.state===Lt)return Ie(o);p.state===Le?(p.state=Dt,p.timer.stop(),p.on.call("interrupt",t,t.__data__,p.index,p.group),delete r[l]):+l<e&&(p.state=Dt,p.timer.stop(),p.on.call("cancel",t,t.__data__,p.index,p.group),delete r[l])}if(Ie(function(){n.state===Lt&&(n.state=Le,n.timer.restart(s,n.delay,n.time),s(u))}),n.state=ae,n.on.call("start",t,t.__data__,n.index,n.group),n.state===ae){for(n.state=Lt,i=new Array(f=n.tween.length),l=0,d=-1;l<f;++l)(p=n.tween[l].value.call(t,t.__data__,n.index,n.group))&&(i[++d]=p);i.length=d+1}}function s(u){for(var l=u<n.duration?n.ease.call(null,u/n.duration):(n.timer.restart(c),n.state=se,1),d=-1,f=i.length;++d<f;)i[d].call(t,l);n.state===se&&(n.on.call("end",t,t.__data__,n.index,n.group),c())}function c(){n.state=Dt,n.timer.stop(),delete r[e];for(var u in r)return;delete t.__transition}}function Rt(t,e){var n=t.__transition,r,i,a=!0,o;if(n){e=e==null?null:e+"";for(o in n){if((r=n[o]).name!==e){a=!1;continue}i=r.state>ae&&r.state<se,r.state=Dt,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[o]}a&&delete t.__transition}}function Ui(t){return this.each(function(){Rt(this,t)})}function Gi(t,e){var n,r;return function(){var i=Z(this,t),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===e){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function Ki(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var a=Z(this,t),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:e,value:n},c=0,u=i.length;c<u;++c)if(i[c].name===e){i[c]=s;break}c===u&&i.push(s)}a.tween=i}}function Wi(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=W(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===t)return o.value;return null}return this.each((e==null?Gi:Ki)(n,t,e))}function pe(t,e,n){var r=t._id;return t.each(function(){var i=Z(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return W(i,r).value[e]}}function pn(t,e){var n;return(typeof e=="number"?it:e instanceof bt?Me:(n=bt(e))?(e=n,Me):ki)(t,e)}function Qi(t){return function(){this.removeAttribute(t)}}function Zi(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ji(t,e,n){var r,i=n+"",a;return function(){var o=this.getAttribute(t);return o===i?null:o===r?a:a=e(r=o,n)}}function ji(t,e,n){var r,i=n+"",a;return function(){var o=this.getAttributeNS(t.space,t.local);return o===i?null:o===r?a:a=e(r=o,n)}}function to(t,e,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(t):(o=this.getAttribute(t),c=s+"",o===c?null:o===r&&c===i?a:(i=c,a=e(r=o,s)))}}function eo(t,e,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(t.space,t.local):(o=this.getAttributeNS(t.space,t.local),c=s+"",o===c?null:o===r&&c===i?a:(i=c,a=e(r=o,s)))}}function no(t,e){var n=qt(t),r=n==="transform"?Li:pn;return this.attrTween(t,typeof e=="function"?(n.local?eo:to)(n,r,pe(this,"attr."+t,e)):e==null?(n.local?Zi:Qi)(n):(n.local?ji:Ji)(n,r,e))}function ro(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function io(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function oo(t,e){var n,r;function i(){var a=e.apply(this,arguments);return a!==r&&(n=(r=a)&&io(t,a)),n}return i._value=e,i}function ao(t,e){var n,r;function i(){var a=e.apply(this,arguments);return a!==r&&(n=(r=a)&&ro(t,a)),n}return i._value=e,i}function so(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=qt(t);return this.tween(n,(r.local?oo:ao)(r,e))}function uo(t,e){return function(){de(this,t).delay=+e.apply(this,arguments)}}function co(t,e){return e=+e,function(){de(this,t).delay=e}}function lo(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?uo:co)(e,t)):W(this.node(),e).delay}function fo(t,e){return function(){Z(this,t).duration=+e.apply(this,arguments)}}function ho(t,e){return e=+e,function(){Z(this,t).duration=e}}function po(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?fo:ho)(e,t)):W(this.node(),e).duration}function go(t,e){if(typeof e!="function")throw new Error;return function(){Z(this,t).ease=e}}function mo(t){var e=this._id;return arguments.length?this.each(go(e,t)):W(this.node(),e).ease}function yo(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;Z(this,t).ease=n}}function xo(t){if(typeof t!="function")throw new Error;return this.each(yo(this._id,t))}function vo(t){typeof t!="function"&&(t=Ue(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a=e[i],o=a.length,s=r[i]=[],c,u=0;u<o;++u)(c=a[u])&&t.call(c,c.__data__,u,a)&&s.push(c);return new rt(r,this._parents,this._name,this._id)}function wo(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),o=new Array(r),s=0;s<a;++s)for(var c=e[s],u=n[s],l=c.length,d=o[s]=new Array(l),f,p=0;p<l;++p)(f=c[p]||u[p])&&(d[p]=f);for(;s<r;++s)o[s]=e[s];return new rt(o,this._parents,this._name,this._id)}function _o(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function bo(t,e,n){var r,i,a=_o(e)?de:Z;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}function No(t,e){var n=this._id;return arguments.length<2?W(this.node(),n).on.on(t):this.each(bo(n,t,e))}function Eo(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function Co(){return this.on("end.remove",Eo(this._id))}function Ao(t){var e=this._name,n=this._id;typeof t!="function"&&(t=ue(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,u=a[o]=new Array(c),l,d,f=0;f<c;++f)(l=s[f])&&(d=t.call(l,l.__data__,f,s))&&("__data__"in l&&(d.__data__=l.__data__),u[f]=d,Ut(u[f],e,n,f,u,W(l,n)));return new rt(a,this._parents,e,n)}function $o(t){var e=this._name,n=this._id;typeof t!="function"&&(t=Ve(t));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],u=c.length,l,d=0;d<u;++d)if(l=c[d]){for(var f=t.call(l,l.__data__,d,c),p,E=W(l,n),m=0,x=f.length;m<x;++m)(p=f[m])&&Ut(p,e,n,m,f,E);a.push(f),o.push(l)}return new rt(a,o,e,n)}var Mo=Ct.prototype.constructor;function To(){return new Mo(this._groups,this._parents)}function ko(t,e){var n,r,i;return function(){var a=ht(this,t),o=(this.style.removeProperty(t),ht(this,t));return a===o?null:a===n&&o===r?i:i=e(n=a,r=o)}}function gn(t){return function(){this.style.removeProperty(t)}}function So(t,e,n){var r,i=n+"",a;return function(){var o=ht(this,t);return o===i?null:o===r?a:a=e(r=o,n)}}function Io(t,e,n){var r,i,a;return function(){var o=ht(this,t),s=n(this),c=s+"";return s==null&&(c=s=(this.style.removeProperty(t),ht(this,t))),o===c?null:o===r&&c===i?a:(i=c,a=e(r=o,s))}}function zo(t,e){var n,r,i,a="style."+e,o="end."+a,s;return function(){var c=Z(this,t),u=c.on,l=c.value[a]==null?s||(s=gn(e)):void 0;(u!==n||i!==l)&&(r=(n=u).copy()).on(o,i=l),c.on=r}}function Lo(t,e,n){var r=(t+="")=="transform"?zi:pn;return e==null?this.styleTween(t,ko(t,r)).on("end.style."+t,gn(t)):typeof e=="function"?this.styleTween(t,Io(t,r,pe(this,"style."+t,e))).each(zo(this._id,t)):this.styleTween(t,So(t,r,e),n).on("end.style."+t,null)}function Do(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Ro(t,e,n){var r,i;function a(){var o=e.apply(this,arguments);return o!==i&&(r=(i=o)&&Do(t,o,n)),r}return a._value=e,a}function Ho(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,Ro(t,e,n??""))}function Fo(t){return function(){this.textContent=t}}function Bo(t){return function(){var e=t(this);this.textContent=e??""}}function Po(t){return this.tween("text",typeof t=="function"?Bo(pe(this,"text",t)):Fo(t==null?"":t+""))}function Xo(t){return function(e){this.textContent=t.call(this,e)}}function Oo(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&Xo(i)),e}return r._value=t,r}function Yo(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,Oo(t))}function qo(){for(var t=this._name,e=this._id,n=mn(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,u=0;u<s;++u)if(c=o[u]){var l=W(c,e);Ut(c,t,n,u,o,{time:l.time+l.delay+l.duration,delay:0,duration:l.duration,ease:l.ease})}return new rt(r,this._parents,t,n)}function Vo(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var u=Z(this,r),l=u.on;l!==t&&(e=(t=l).copy(),e._.cancel.push(s),e._.interrupt.push(s),e._.end.push(c)),u.on=e}),i===0&&a()})}var Uo=0;function rt(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function mn(){return++Uo}var tt=Ct.prototype;rt.prototype={constructor:rt,select:Ao,selectAll:$o,selectChild:tt.selectChild,selectChildren:tt.selectChildren,filter:vo,merge:wo,selection:To,transition:qo,call:tt.call,nodes:tt.nodes,node:tt.node,size:tt.size,empty:tt.empty,each:tt.each,on:No,attr:no,attrTween:so,style:Lo,styleTween:Ho,text:Po,textTween:Yo,remove:Co,tween:Wi,delay:lo,duration:po,ease:mo,easeVarying:xo,end:Vo,[Symbol.iterator]:tt[Symbol.iterator]};function Go(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Ko={time:null,delay:0,duration:250,ease:Go};function Wo(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function Qo(t){var e,n;t instanceof rt?(e=t._id,t=t._name):(e=mn(),(n=Ko).time=fe(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,u=0;u<s;++u)(c=o[u])&&Ut(c,t,e,u,o,n||Wo(c,e));return new rt(r,this._parents,t,e)}Ct.prototype.interrupt=Ui;Ct.prototype.transition=Qo;function Zo(t,e){var n,r=1;t==null&&(t=0),e==null&&(e=0);function i(){var a,o=n.length,s,c=0,u=0;for(a=0;a<o;++a)s=n[a],c+=s.x,u+=s.y;for(c=(c/o-t)*r,u=(u/o-e)*r,a=0;a<o;++a)s=n[a],s.x-=c,s.y-=u}return i.initialize=function(a){n=a},i.x=function(a){return arguments.length?(t=+a,i):t},i.y=function(a){return arguments.length?(e=+a,i):e},i.strength=function(a){return arguments.length?(r=+a,i):r},i}function Jo(t){const e=+this._x.call(null,t),n=+this._y.call(null,t);return yn(this.cover(e,n),e,n,t)}function yn(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,a=t._root,o={data:r},s=t._x0,c=t._y0,u=t._x1,l=t._y1,d,f,p,E,m,x,g,v;if(!a)return t._root=o,t;for(;a.length;)if((m=e>=(d=(s+u)/2))?s=d:u=d,(x=n>=(f=(c+l)/2))?c=f:l=f,i=a,!(a=a[g=x<<1|m]))return i[g]=o,t;if(p=+t._x.call(null,a.data),E=+t._y.call(null,a.data),e===p&&n===E)return o.next=a,i?i[g]=o:t._root=o,t;do i=i?i[g]=new Array(4):t._root=new Array(4),(m=e>=(d=(s+u)/2))?s=d:u=d,(x=n>=(f=(c+l)/2))?c=f:l=f;while((g=x<<1|m)===(v=(E>=f)<<1|p>=d));return i[v]=a,i[g]=o,t}function jo(t){var e,n,r=t.length,i,a,o=new Array(r),s=new Array(r),c=1/0,u=1/0,l=-1/0,d=-1/0;for(n=0;n<r;++n)isNaN(i=+this._x.call(null,e=t[n]))||isNaN(a=+this._y.call(null,e))||(o[n]=i,s[n]=a,i<c&&(c=i),i>l&&(l=i),a<u&&(u=a),a>d&&(d=a));if(c>l||u>d)return this;for(this.cover(c,u).cover(l,d),n=0;n<r;++n)yn(this,o[n],s[n],t[n]);return this}function ta(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,a=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,a=(r=Math.floor(e))+1;else{for(var o=i-n||1,s=this._root,c,u;n>t||t>=i||r>e||e>=a;)switch(u=(e<r)<<1|t<n,c=new Array(4),c[u]=s,s=c,o*=2,u){case 0:i=n+o,a=r+o;break;case 1:n=i-o,a=r+o;break;case 2:i=n+o,r=a-o;break;case 3:n=i-o,r=a-o;break}this._root&&this._root.length&&(this._root=s)}return this._x0=n,this._y0=r,this._x1=i,this._y1=a,this}function ea(){var t=[];return this.visit(function(e){if(!e.length)do t.push(e.data);while(e=e.next)}),t}function na(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function O(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}function ra(t,e,n){var r,i=this._x0,a=this._y0,o,s,c,u,l=this._x1,d=this._y1,f=[],p=this._root,E,m;for(p&&f.push(new O(p,i,a,l,d)),n==null?n=1/0:(i=t-n,a=e-n,l=t+n,d=e+n,n*=n);E=f.pop();)if(!(!(p=E.node)||(o=E.x0)>l||(s=E.y0)>d||(c=E.x1)<i||(u=E.y1)<a))if(p.length){var x=(o+c)/2,g=(s+u)/2;f.push(new O(p[3],x,g,c,u),new O(p[2],o,g,x,u),new O(p[1],x,s,c,g),new O(p[0],o,s,x,g)),(m=(e>=g)<<1|t>=x)&&(E=f[f.length-1],f[f.length-1]=f[f.length-1-m],f[f.length-1-m]=E)}else{var v=t-+this._x.call(null,p.data),N=e-+this._y.call(null,p.data),h=v*v+N*N;if(h<n){var b=Math.sqrt(n=h);i=t-b,a=e-b,l=t+b,d=e+b,r=p.data}}return r}function ia(t){if(isNaN(l=+this._x.call(null,t))||isNaN(d=+this._y.call(null,t)))return this;var e,n=this._root,r,i,a,o=this._x0,s=this._y0,c=this._x1,u=this._y1,l,d,f,p,E,m,x,g;if(!n)return this;if(n.length)for(;;){if((E=l>=(f=(o+c)/2))?o=f:c=f,(m=d>=(p=(s+u)/2))?s=p:u=p,e=n,!(n=n[x=m<<1|E]))return this;if(!n.length)break;(e[x+1&3]||e[x+2&3]||e[x+3&3])&&(r=e,g=x)}for(;n.data!==t;)if(i=n,!(n=n.next))return this;return(a=n.next)&&delete n.next,i?(a?i.next=a:delete i.next,this):e?(a?e[x]=a:delete e[x],(n=e[0]||e[1]||e[2]||e[3])&&n===(e[3]||e[2]||e[1]||e[0])&&!n.length&&(r?r[g]=n:this._root=n),this):(this._root=a,this)}function oa(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this}function aa(){return this._root}function sa(){var t=0;return this.visit(function(e){if(!e.length)do++t;while(e=e.next)}),t}function ua(t){var e=[],n,r=this._root,i,a,o,s,c;for(r&&e.push(new O(r,this._x0,this._y0,this._x1,this._y1));n=e.pop();)if(!t(r=n.node,a=n.x0,o=n.y0,s=n.x1,c=n.y1)&&r.length){var u=(a+s)/2,l=(o+c)/2;(i=r[3])&&e.push(new O(i,u,l,s,c)),(i=r[2])&&e.push(new O(i,a,l,u,c)),(i=r[1])&&e.push(new O(i,u,o,s,l)),(i=r[0])&&e.push(new O(i,a,o,u,l))}return this}function ca(t){var e=[],n=[],r;for(this._root&&e.push(new O(this._root,this._x0,this._y0,this._x1,this._y1));r=e.pop();){var i=r.node;if(i.length){var a,o=r.x0,s=r.y0,c=r.x1,u=r.y1,l=(o+c)/2,d=(s+u)/2;(a=i[0])&&e.push(new O(a,o,s,l,d)),(a=i[1])&&e.push(new O(a,l,s,c,d)),(a=i[2])&&e.push(new O(a,o,d,l,u)),(a=i[3])&&e.push(new O(a,l,d,c,u))}n.push(r)}for(;r=n.pop();)t(r.node,r.x0,r.y0,r.x1,r.y1);return this}function la(t){return t[0]}function fa(t){return arguments.length?(this._x=t,this):this._x}function ha(t){return t[1]}function da(t){return arguments.length?(this._y=t,this):this._y}function ge(t,e,n){var r=new me(e??la,n??ha,NaN,NaN,NaN,NaN);return t==null?r:r.addAll(t)}function me(t,e,n,r,i,a){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function De(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var Y=ge.prototype=me.prototype;Y.copy=function(){var t=new me(this._x,this._y,this._x0,this._y0,this._x1,this._y1),e=this._root,n,r;if(!e)return t;if(!e.length)return t._root=De(e),t;for(n=[{source:e,target:t._root=new Array(4)}];e=n.pop();)for(var i=0;i<4;++i)(r=e.source[i])&&(r.length?n.push({source:r,target:e.target[i]=new Array(4)}):e.target[i]=De(r));return t};Y.add=Jo;Y.addAll=jo;Y.cover=ta;Y.data=ea;Y.extent=na;Y.find=ra;Y.remove=ia;Y.removeAll=oa;Y.root=aa;Y.size=sa;Y.visit=ua;Y.visitAfter=ca;Y.x=fa;Y.y=da;function ut(t){return function(){return t}}function ot(t){return(t()-.5)*1e-6}function pa(t){return t.x+t.vx}function ga(t){return t.y+t.vy}function ma(t){var e,n,r,i=1,a=1;typeof t!="function"&&(t=ut(t==null?1:+t));function o(){for(var u,l=e.length,d,f,p,E,m,x,g=0;g<a;++g)for(d=ge(e,pa,ga).visitAfter(s),u=0;u<l;++u)f=e[u],m=n[f.index],x=m*m,p=f.x+f.vx,E=f.y+f.vy,d.visit(v);function v(N,h,b,A,M){var T=N.data,L=N.r,I=m+L;if(T){if(T.index>f.index){var R=p-T.x-T.vx,D=E-T.y-T.vy,P=R*R+D*D;P<I*I&&(R===0&&(R=ot(r),P+=R*R),D===0&&(D=ot(r),P+=D*D),P=(I-(P=Math.sqrt(P)))/P*i,f.vx+=(R*=P)*(I=(L*=L)/(x+L)),f.vy+=(D*=P)*I,T.vx-=R*(I=1-I),T.vy-=D*I)}return}return h>p+I||A<p-I||b>E+I||M<E-I}}function s(u){if(u.data)return u.r=n[u.data.index];for(var l=u.r=0;l<4;++l)u[l]&&u[l].r>u.r&&(u.r=u[l].r)}function c(){if(e){var u,l=e.length,d;for(n=new Array(l),u=0;u<l;++u)d=e[u],n[d.index]=+t(d,u,e)}}return o.initialize=function(u,l){e=u,r=l,c()},o.iterations=function(u){return arguments.length?(a=+u,o):a},o.strength=function(u){return arguments.length?(i=+u,o):i},o.radius=function(u){return arguments.length?(t=typeof u=="function"?u:ut(+u),c(),o):t},o}function ya(t){return t.index}function Re(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "+e);return n}function xa(t){var e=ya,n=d,r,i=ut(30),a,o,s,c,u,l=1;t==null&&(t=[]);function d(x){return 1/Math.min(s[x.source.index],s[x.target.index])}function f(x){for(var g=0,v=t.length;g<l;++g)for(var N=0,h,b,A,M,T,L,I;N<v;++N)h=t[N],b=h.source,A=h.target,M=A.x+A.vx-b.x-b.vx||ot(u),T=A.y+A.vy-b.y-b.vy||ot(u),L=Math.sqrt(M*M+T*T),L=(L-a[N])/L*x*r[N],M*=L,T*=L,A.vx-=M*(I=c[N]),A.vy-=T*I,b.vx+=M*(I=1-I),b.vy+=T*I}function p(){if(o){var x,g=o.length,v=t.length,N=new Map(o.map((b,A)=>[e(b,A,o),b])),h;for(x=0,s=new Array(g);x<v;++x)h=t[x],h.index=x,typeof h.source!="object"&&(h.source=Re(N,h.source)),typeof h.target!="object"&&(h.target=Re(N,h.target)),s[h.source.index]=(s[h.source.index]||0)+1,s[h.target.index]=(s[h.target.index]||0)+1;for(x=0,c=new Array(v);x<v;++x)h=t[x],c[x]=s[h.source.index]/(s[h.source.index]+s[h.target.index]);r=new Array(v),E(),a=new Array(v),m()}}function E(){if(o)for(var x=0,g=t.length;x<g;++x)r[x]=+n(t[x],x,t)}function m(){if(o)for(var x=0,g=t.length;x<g;++x)a[x]=+i(t[x],x,t)}return f.initialize=function(x,g){o=x,u=g,p()},f.links=function(x){return arguments.length?(t=x,p(),f):t},f.id=function(x){return arguments.length?(e=x,f):e},f.iterations=function(x){return arguments.length?(l=+x,f):l},f.strength=function(x){return arguments.length?(n=typeof x=="function"?x:ut(+x),E(),f):n},f.distance=function(x){return arguments.length?(i=typeof x=="function"?x:ut(+x),m(),f):i},f}const va=1664525,wa=1013904223,He=4294967296;function _a(){let t=1;return()=>(t=(va*t+wa)%He)/He}function ba(t){return t.x}function Na(t){return t.y}var Ea=10,Ca=Math.PI*(3-Math.sqrt(5));function Aa(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),a=0,o=.6,s=new Map,c=he(d),u=Et("tick","end"),l=_a();t==null&&(t=[]);function d(){f(),u.call("tick",e),n<r&&(c.stop(),u.call("end",e))}function f(m){var x,g=t.length,v;m===void 0&&(m=1);for(var N=0;N<m;++N)for(n+=(a-n)*i,s.forEach(function(h){h(n)}),x=0;x<g;++x)v=t[x],v.fx==null?v.x+=v.vx*=o:(v.x=v.fx,v.vx=0),v.fy==null?v.y+=v.vy*=o:(v.y=v.fy,v.vy=0);return e}function p(){for(var m=0,x=t.length,g;m<x;++m){if(g=t[m],g.index=m,g.fx!=null&&(g.x=g.fx),g.fy!=null&&(g.y=g.fy),isNaN(g.x)||isNaN(g.y)){var v=Ea*Math.sqrt(.5+m),N=m*Ca;g.x=v*Math.cos(N),g.y=v*Math.sin(N)}(isNaN(g.vx)||isNaN(g.vy))&&(g.vx=g.vy=0)}}function E(m){return m.initialize&&m.initialize(t,l),m}return p(),e={tick:f,restart:function(){return c.restart(d),e},stop:function(){return c.stop(),e},nodes:function(m){return arguments.length?(t=m,p(),s.forEach(E),e):t},alpha:function(m){return arguments.length?(n=+m,e):n},alphaMin:function(m){return arguments.length?(r=+m,e):r},alphaDecay:function(m){return arguments.length?(i=+m,e):+i},alphaTarget:function(m){return arguments.length?(a=+m,e):a},velocityDecay:function(m){return arguments.length?(o=1-m,e):1-o},randomSource:function(m){return arguments.length?(l=m,s.forEach(E),e):l},force:function(m,x){return arguments.length>1?(x==null?s.delete(m):s.set(m,E(x)),e):s.get(m)},find:function(m,x,g){var v=0,N=t.length,h,b,A,M,T;for(g==null?g=1/0:g*=g,v=0;v<N;++v)M=t[v],h=m-M.x,b=x-M.y,A=h*h+b*b,A<g&&(T=M,g=A);return T},on:function(m,x){return arguments.length>1?(u.on(m,x),e):u.on(m)}}}function $a(){var t,e,n,r,i=ut(-30),a,o=1,s=1/0,c=.81;function u(p){var E,m=t.length,x=ge(t,ba,Na).visitAfter(d);for(r=p,E=0;E<m;++E)e=t[E],x.visit(f)}function l(){if(t){var p,E=t.length,m;for(a=new Array(E),p=0;p<E;++p)m=t[p],a[m.index]=+i(m,p,t)}}function d(p){var E=0,m,x,g=0,v,N,h;if(p.length){for(v=N=h=0;h<4;++h)(m=p[h])&&(x=Math.abs(m.value))&&(E+=m.value,g+=x,v+=x*m.x,N+=x*m.y);p.x=v/g,p.y=N/g}else{m=p,m.x=m.data.x,m.y=m.data.y;do E+=a[m.data.index];while(m=m.next)}p.value=E}function f(p,E,m,x){if(!p.value)return!0;var g=p.x-e.x,v=p.y-e.y,N=x-E,h=g*g+v*v;if(N*N/c<h)return h<s&&(g===0&&(g=ot(n),h+=g*g),v===0&&(v=ot(n),h+=v*v),h<o&&(h=Math.sqrt(o*h)),e.vx+=g*p.value*r/h,e.vy+=v*p.value*r/h),!0;if(p.length||h>=s)return;(p.data!==e||p.next)&&(g===0&&(g=ot(n),h+=g*g),v===0&&(v=ot(n),h+=v*v),h<o&&(h=Math.sqrt(o*h)));do p.data!==e&&(N=a[p.data.index]*r/h,e.vx+=g*N,e.vy+=v*N);while(p=p.next)}return u.initialize=function(p,E){t=p,n=E,l()},u.strength=function(p){return arguments.length?(i=typeof p=="function"?p:ut(+p),l(),u):i},u.distanceMin=function(p){return arguments.length?(o=p*p,u):Math.sqrt(o)},u.distanceMax=function(p){return arguments.length?(s=p*p,u):Math.sqrt(s)},u.theta=function(p){return arguments.length?(c=p*p,u):Math.sqrt(c)},u}const St=t=>()=>t;function Ma(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function nt(t,e,n){this.k=t,this.x=e,this.y=n}nt.prototype={constructor:nt,scale:function(t){return t===1?this:new nt(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new nt(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Yt=new nt(1,0,0);nt.prototype;function Zt(t){t.stopImmediatePropagation()}function gt(t){t.preventDefault(),t.stopImmediatePropagation()}function Ta(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function ka(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function Fe(){return this.__zoom||Yt}function Sa(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Ia(){return navigator.maxTouchPoints||"ontouchstart"in this}function za(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],a=t.invertY(e[0][1])-n[0][1],o=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function La(){var t=Ta,e=ka,n=za,r=Sa,i=Ia,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=Fi,u=Et("start","zoom","end"),l,d,f,p=500,E=150,m=0,x=10;function g(y){y.property("__zoom",Fe).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",L).on("dblclick.zoom",I).filter(i).on("touchstart.zoom",R).on("touchmove.zoom",D).on("touchend.zoom touchcancel.zoom",P).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}g.transform=function(y,w,_,C){var $=y.selection?y.selection():y;$.property("__zoom",Fe),y!==$?b(y,w,_,C):$.interrupt().each(function(){A(this,arguments).event(C).start().zoom(null,typeof w=="function"?w.apply(this,arguments):w).end()})},g.scaleBy=function(y,w,_,C){g.scaleTo(y,function(){var $=this.__zoom.k,k=typeof w=="function"?w.apply(this,arguments):w;return $*k},_,C)},g.scaleTo=function(y,w,_,C){g.transform(y,function(){var $=e.apply(this,arguments),k=this.__zoom,S=_==null?h($):typeof _=="function"?_.apply(this,arguments):_,z=k.invert(S),H=typeof w=="function"?w.apply(this,arguments):w;return n(N(v(k,H),S,z),$,o)},_,C)},g.translateBy=function(y,w,_,C){g.transform(y,function(){return n(this.__zoom.translate(typeof w=="function"?w.apply(this,arguments):w,typeof _=="function"?_.apply(this,arguments):_),e.apply(this,arguments),o)},null,C)},g.translateTo=function(y,w,_,C,$){g.transform(y,function(){var k=e.apply(this,arguments),S=this.__zoom,z=C==null?h(k):typeof C=="function"?C.apply(this,arguments):C;return n(Yt.translate(z[0],z[1]).scale(S.k).translate(typeof w=="function"?-w.apply(this,arguments):-w,typeof _=="function"?-_.apply(this,arguments):-_),k,o)},C,$)};function v(y,w){return w=Math.max(a[0],Math.min(a[1],w)),w===y.k?y:new nt(w,y.x,y.y)}function N(y,w,_){var C=w[0]-_[0]*y.k,$=w[1]-_[1]*y.k;return C===y.x&&$===y.y?y:new nt(y.k,C,$)}function h(y){return[(+y[0][0]+ +y[1][0])/2,(+y[0][1]+ +y[1][1])/2]}function b(y,w,_,C){y.on("start.zoom",function(){A(this,arguments).event(C).start()}).on("interrupt.zoom end.zoom",function(){A(this,arguments).event(C).end()}).tween("zoom",function(){var $=this,k=arguments,S=A($,k).event(C),z=e.apply($,k),H=_==null?h(z):typeof _=="function"?_.apply($,k):_,U=Math.max(z[1][0]-z[0][0],z[1][1]-z[0][1]),F=$.__zoom,B=typeof w=="function"?w.apply($,k):w,J=c(F.invert(H).concat(U/F.k),B.invert(H).concat(U/B.k));return function(G){if(G===1)G=B;else{var j=J(G),Gt=U/j[2];G=new nt(Gt,H[0]-j[0]*Gt,H[1]-j[1]*Gt)}S.zoom(null,G)}})}function A(y,w,_){return!_&&y.__zooming||new M(y,w)}function M(y,w){this.that=y,this.args=w,this.active=0,this.sourceEvent=null,this.extent=e.apply(y,w),this.taps=0}M.prototype={event:function(y){return y&&(this.sourceEvent=y),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(y,w){return this.mouse&&y!=="mouse"&&(this.mouse[1]=w.invert(this.mouse[0])),this.touch0&&y!=="touch"&&(this.touch0[1]=w.invert(this.touch0[0])),this.touch1&&y!=="touch"&&(this.touch1[1]=w.invert(this.touch1[0])),this.that.__zoom=w,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(y){var w=X(this.that).datum();u.call(y,this.that,new Ma(y,{sourceEvent:this.sourceEvent,target:g,transform:this.that.__zoom,dispatch:u}),w)}};function T(y,...w){if(!t.apply(this,arguments))return;var _=A(this,w).event(y),C=this.__zoom,$=Math.max(a[0],Math.min(a[1],C.k*Math.pow(2,r.apply(this,arguments)))),k=et(y);if(_.wheel)(_.mouse[0][0]!==k[0]||_.mouse[0][1]!==k[1])&&(_.mouse[1]=C.invert(_.mouse[0]=k)),clearTimeout(_.wheel);else{if(C.k===$)return;_.mouse=[k,C.invert(k)],Rt(this),_.start()}gt(y),_.wheel=setTimeout(S,E),_.zoom("mouse",n(N(v(C,$),_.mouse[0],_.mouse[1]),_.extent,o));function S(){_.wheel=null,_.end()}}function L(y,...w){if(f||!t.apply(this,arguments))return;var _=y.currentTarget,C=A(this,w,!0).event(y),$=X(y.view).on("mousemove.zoom",H,!0).on("mouseup.zoom",U,!0),k=et(y,_),S=y.clientX,z=y.clientY;nn(y.view),Zt(y),C.mouse=[k,this.__zoom.invert(k)],Rt(this),C.start();function H(F){if(gt(F),!C.moved){var B=F.clientX-S,J=F.clientY-z;C.moved=B*B+J*J>m}C.event(F).zoom("mouse",n(N(C.that.__zoom,C.mouse[0]=et(F,_),C.mouse[1]),C.extent,o))}function U(F){$.on("mousemove.zoom mouseup.zoom",null),rn(F.view,C.moved),gt(F),C.event(F).end()}}function I(y,...w){if(t.apply(this,arguments)){var _=this.__zoom,C=et(y.changedTouches?y.changedTouches[0]:y,this),$=_.invert(C),k=_.k*(y.shiftKey?.5:2),S=n(N(v(_,k),C,$),e.apply(this,w),o);gt(y),s>0?X(this).transition().duration(s).call(b,S,C,y):X(this).call(g.transform,S,C,y)}}function R(y,...w){if(t.apply(this,arguments)){var _=y.touches,C=_.length,$=A(this,w,y.changedTouches.length===C).event(y),k,S,z,H;for(Zt(y),S=0;S<C;++S)z=_[S],H=et(z,this),H=[H,this.__zoom.invert(H),z.identifier],$.touch0?!$.touch1&&$.touch0[2]!==H[2]&&($.touch1=H,$.taps=0):($.touch0=H,k=!0,$.taps=1+!!l);l&&(l=clearTimeout(l)),k&&($.taps<2&&(d=H[0],l=setTimeout(function(){l=null},p)),Rt(this),$.start())}}function D(y,...w){if(this.__zooming){var _=A(this,w).event(y),C=y.changedTouches,$=C.length,k,S,z,H;for(gt(y),k=0;k<$;++k)S=C[k],z=et(S,this),_.touch0&&_.touch0[2]===S.identifier?_.touch0[0]=z:_.touch1&&_.touch1[2]===S.identifier&&(_.touch1[0]=z);if(S=_.that.__zoom,_.touch1){var U=_.touch0[0],F=_.touch0[1],B=_.touch1[0],J=_.touch1[1],G=(G=B[0]-U[0])*G+(G=B[1]-U[1])*G,j=(j=J[0]-F[0])*j+(j=J[1]-F[1])*j;S=v(S,Math.sqrt(G/j)),z=[(U[0]+B[0])/2,(U[1]+B[1])/2],H=[(F[0]+J[0])/2,(F[1]+J[1])/2]}else if(_.touch0)z=_.touch0[0],H=_.touch0[1];else return;_.zoom("touch",n(N(S,z,H),_.extent,o))}}function P(y,...w){if(this.__zooming){var _=A(this,w).event(y),C=y.changedTouches,$=C.length,k,S;for(Zt(y),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),k=0;k<$;++k)S=C[k],_.touch0&&_.touch0[2]===S.identifier?delete _.touch0:_.touch1&&_.touch1[2]===S.identifier&&delete _.touch1;if(_.touch1&&!_.touch0&&(_.touch0=_.touch1,delete _.touch1),_.touch0)_.touch0[1]=this.__zoom.invert(_.touch0[0]);else if(_.end(),_.taps===2&&(S=et(S,this),Math.hypot(d[0]-S[0],d[1]-S[1])<x)){var z=X(this).on("dblclick.zoom");z&&z.apply(this,arguments)}}}return g.wheelDelta=function(y){return arguments.length?(r=typeof y=="function"?y:St(+y),g):r},g.filter=function(y){return arguments.length?(t=typeof y=="function"?y:St(!!y),g):t},g.touchable=function(y){return arguments.length?(i=typeof y=="function"?y:St(!!y),g):i},g.extent=function(y){return arguments.length?(e=typeof y=="function"?y:St([[+y[0][0],+y[0][1]],[+y[1][0],+y[1][1]]]),g):e},g.scaleExtent=function(y){return arguments.length?(a[0]=+y[0],a[1]=+y[1],g):[a[0],a[1]]},g.translateExtent=function(y){return arguments.length?(o[0][0]=+y[0][0],o[1][0]=+y[1][0],o[0][1]=+y[0][1],o[1][1]=+y[1][1],g):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},g.constrain=function(y){return arguments.length?(n=y,g):n},g.duration=function(y){return arguments.length?(s=+y,g):s},g.interpolate=function(y){return arguments.length?(c=y,g):c},g.on=function(){var y=u.on.apply(u,arguments);return y===u?g:y},g.clickDistance=function(y){return arguments.length?(m=(y=+y)*y,g):Math.sqrt(m)},g.tapDistance=function(y){return arguments.length?(x=+y,g):x},g}const Da={file:{color:"#3B82F6",shape:"circle"},class:{color:"#8B5CF6",shape:"square"},module:{color:"#10B981",shape:"diamond"}},Ra={color:"#6B7280",shape:"circle"};function Ha(t){return Da[t]??Ra}const Jt=16,mt=14,It=30,Be=["rgba(59, 130, 246, 0.1)","rgba(139, 92, 246, 0.1)","rgba(16, 185, 129, 0.1)","rgba(245, 158, 11, 0.1)","rgba(239, 68, 68, 0.1)","rgba(14, 165, 233, 0.1)","rgba(168, 85, 247, 0.1)","rgba(20, 184, 166, 0.1)","rgba(249, 115, 22, 0.1)","rgba(236, 72, 153, 0.1)"],Fa=["rgba(59, 130, 246, 0.4)","rgba(139, 92, 246, 0.4)","rgba(16, 185, 129, 0.4)","rgba(245, 158, 11, 0.4)","rgba(239, 68, 68, 0.4)","rgba(14, 165, 233, 0.4)","rgba(168, 85, 247, 0.4)","rgba(20, 184, 166, 0.4)","rgba(249, 115, 22, 0.4)","rgba(236, 72, 153, 0.4)"];function Ba(t){const{container:e,width:n,height:r}=t,i=X(e).append("svg").attr("width",n).attr("height",r).attr("class","graph-svg");i.append("defs").append("marker").attr("id","arrowhead").attr("viewBox","0 0 10 10").attr("refX",28).attr("refY",5).attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 Z").attr("fill","#94A3B8");const o=i.append("g").attr("class","zoom-container"),s=o.append("g").attr("class","layers"),c=o.append("g").attr("class","edges"),u=o.append("g").attr("class","nodes"),l=La().scaleExtent([.1,10]).extent([[0,0],[n,r]]).on("zoom",v=>{o.attr("transform",v.transform.toString())});i.call(l);let d=null;const f=document.createElement("div");f.className="graph-tooltip absolute hidden bg-gray-900 text-white text-sm rounded-lg shadow-lg px-3 py-2 pointer-events-none z-50",f.style.position="absolute",f.style.display="none",e.style.position=e.style.position||"relative",e.appendChild(f);function p(v){s.selectAll("*").remove(),c.selectAll("*").remove(),u.selectAll("*").remove(),d&&(d.stop(),d=null);const N=v.nodes.map(w=>({id:w.id,type:w.type,name:w.name,summary:w.summary,tags:[...w.tags]})),h=new Set(N.map(w=>w.id)),b=v.edges.filter(w=>h.has(w.source)&&h.has(w.target)).map(w=>({source:w.source,target:w.target,type:w.type}));v.edges.forEach(w=>{(!h.has(w.source)||!h.has(w.target))&&console.warn(`Skipping orphaned edge: ${w.source} → ${w.target}`)}),d=Aa(N).force("link",xa(b).id(w=>w.id).distance(100)).force("charge",$a().strength(-200)).force("center",Zo(n/2,r/2)).force("collide",ma(Jt+4));const A=c.selectAll("line").data(b).join("line").attr("class","edge").attr("stroke","#94A3B8").attr("stroke-width",1.5).attr("marker-end","url(#arrowhead)"),M=c.selectAll("text.edge-label").data(b).join("text").attr("class","edge-label").text(w=>w.type).attr("text-anchor","middle").attr("font-size","10px").attr("fill","#64748B").attr("dy",-6),T=u.selectAll("g").data(N,w=>w.id).join("g").attr("class","node");T.each(function(w){const _=X(this),C=Ha(w.type);if(C.shape==="circle")_.append("circle").attr("r",Jt).attr("fill",C.color).attr("stroke","#fff").attr("stroke-width",2);else if(C.shape==="square")_.append("rect").attr("x",-mt).attr("y",-mt).attr("width",mt*2).attr("height",mt*2).attr("rx",3).attr("fill",C.color).attr("stroke","#fff").attr("stroke-width",2);else if(C.shape==="diamond"){const $=mt;_.append("polygon").attr("points",`0,${-$} ${$},0 0,${$} ${-$},0`).attr("fill",C.color).attr("stroke","#fff").attr("stroke-width",2)}_.append("text").text(w.name).attr("text-anchor","middle").attr("dy",Jt+14).attr("font-size","11px").attr("fill","#374151")});const L=hi().on("start",(w,_)=>{!w.active&&d&&d.alphaTarget(.3).restart(),_.fx=_.x,_.fy=_.y}).on("drag",(w,_)=>{_.fx=w.x,_.fy=w.y}).on("end",(w,_)=>{!w.active&&d&&d.alphaTarget(0),_.fx=null,_.fy=null});T.call(L),T.on("mouseenter",function(w,_){const C=_.tags.length>0?_.tags.join(", "):"";f.innerHTML=[`<div class="tooltip-name font-bold">${_.name}</div>`,`<div class="tooltip-type text-gray-300">${_.type}</div>`,`<div class="tooltip-summary text-gray-400">${_.summary}</div>`,C?`<div class="tooltip-tags mt-1">${_.tags.map(k=>`<span class="inline-block bg-gray-700 rounded px-1 mr-1 text-xs">${k}</span>`).join("")}</div>`:""].join(""),f.style.display="block",f.classList.remove("hidden");const $=e.getBoundingClientRect();f.style.left=`${w.clientX-$.left+12}px`,f.style.top=`${w.clientY-$.top+12}px`}).on("mouseleave",function(){f.style.display="none",f.classList.add("hidden")});const R=(v.layers??[]).filter(w=>w.nodeIds.filter(C=>h.has(C)?!0:(console.warn(`Layer "${w.name}": skipping missing node "${C}"`),!1)).length>0),D=s.selectAll("g.layer").data(R,w=>w.id).join("g").attr("class","layer");D.each(function(w,_){const C=X(this),$=_%Be.length;C.append("rect").attr("class","layer-rect").attr("rx",8).attr("ry",8).attr("fill",Be[$]).attr("stroke",Fa[$]).attr("stroke-width",1.5),C.append("text").attr("class","layer-label").text(w.name).attr("font-size","12px").attr("font-weight","bold").attr("fill","#6B7280")});const P=new Map;R.forEach(w=>{const _=w.nodeIds.filter(C=>h.has(C));P.set(w.id,_)});const y=new Map;N.forEach(w=>y.set(w.id,w)),d.on("tick",()=>{A.attr("x1",w=>w.source.x??0).attr("y1",w=>w.source.y??0).attr("x2",w=>w.target.x??0).attr("y2",w=>w.target.y??0),M.attr("x",w=>{const _=w.source.x??0,C=w.target.x??0;return(_+C)/2}).attr("y",w=>{const _=w.source.y??0,C=w.target.y??0;return(_+C)/2}),T.attr("transform",w=>`translate(${w.x??0},${w.y??0})`),D.each(function(w){const C=(P.get(w.id)??[]).map(B=>y.get(B)).filter(B=>B!==void 0);if(C.length===0)return;const $=C.map(B=>B.x??0),k=C.map(B=>B.y??0),S=Math.min(...$)-It,z=Math.min(...k)-It,H=Math.max(...$)+It,U=Math.max(...k)+It,F=X(this);F.select(".layer-rect").attr("x",S).attr("y",z).attr("width",H-S).attr("height",U-z),F.select(".layer-label").attr("x",S+8).attr("y",z+16)})})}function E(v){const N=new Set(v),h=new Set;u.selectAll(".node").each(function(b){h.add(b.id)}),v.forEach(b=>{h.has(b)||console.warn(`highlightNodes: skipping missing node "${b}"`)}),u.selectAll(".node").each(function(b){const A=X(this);N.has(b.id)?(A.attr("opacity",1),A.select("circle, rect, polygon").attr("stroke","#FBBF24").attr("stroke-width",3)):A.attr("opacity",.3)}),c.selectAll(".edge").each(function(b){const A=typeof b.source=="object"?b.source.id:b.source,M=typeof b.target=="object"?b.target.id:b.target,T=N.has(A)||N.has(M);X(this).attr("opacity",T?1:.15)})}function m(v){if(v.length===0)return;const N=[],h=new Set;if(u.selectAll(".node").each(function(D){h.add(D.id),v.includes(D.id)&&N.push(D)}),v.forEach(D=>{h.has(D)||console.warn(`panToNodes: skipping missing node "${D}"`)}),N.length===0)return;const b=N.map(D=>D.x??0),A=N.map(D=>D.y??0),M=(Math.min(...b)+Math.max(...b))/2,T=(Math.min(...A)+Math.max(...A))/2,L=n/2-M,I=r/2-T,R=Yt.translate(L,I);i.transition().duration(500).call(l.transform,R)}function x(){u.selectAll(".node").each(function(){const v=X(this);v.attr("opacity",1),v.select("circle, rect, polygon").attr("stroke","#fff").attr("stroke-width",2)}),c.selectAll(".edge").attr("opacity",1),i.transition().duration(300).call(l.transform,Yt)}function g(){d&&(d.stop(),d=null),i.remove(),f.parentNode&&f.parentNode.removeChild(f)}return{render:p,highlightNodes:E,panToNodes:m,resetView:x,destroy:g}}function jt(t,e){const n=document.createElement("div");n.className="rounded-md border border-red-200 bg-red-50 px-4 py-2 text-sm text-red-600",n.setAttribute("role","alert"),n.textContent=e,t.appendChild(n)}function Pe(t){t.querySelectorAll('[role="alert"]').forEach(e=>e.remove())}function Xe(t){t.innerHTML="";const e=document.createElement("div");e.className="absolute inset-0 flex items-center justify-center",e.dataset.testid="loading-indicator";const n=document.createElement("div");n.className="h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-indigo-600",e.appendChild(n);const r=document.createElement("span");r.className="ml-3 text-sm text-gray-500",r.textContent="Loading dashboard…",e.appendChild(r),t.appendChild(e)}function Oe(){const t=document.getElementById("dashboard-selector"),e=document.getElementById("upload-handler"),n=document.getElementById("metadata-panel"),r=document.getElementById("graph-container"),i=document.getElementById("tour-controls"),a=document.getElementById("search-panel");if(!t||!e||!n||!r||!i||!a){console.error("Dashboard Preview: required DOM containers not found.");return}let o=null,s=null,c=[];const u=En({container:a});function l(){if(o)return o;r.innerHTML="";const m=r.clientWidth||800,x=r.clientHeight||500;return o=Ba({container:r,width:m,height:x}),o}function d(m,x){const g=l();g.render(m),_n({container:n,project:m.project,meta:x}),s&&(s.destroy(),s=null);const v=m.tour??[];s=Nn({container:i,steps:v,graphRenderer:g}),u.setDashboard(m,g)}async function f(m,x){Pe(t),Xe(r),o&&(o.destroy(),o=null);try{const g=await fetch(`/dashboards/${m}/${x}`);if(!g.ok)throw new Error(`HTTP ${g.status}: ${g.statusText}`);const v=await g.json(),N=Ye(v);if(!N.valid){r.innerHTML="",jt(t,`Invalid dashboard: ${N.errors.join(". ")}.`);return}const b=c.find(A=>A.dirName===m)?.meta;d(v,b)}catch(g){r.innerHTML="";const v=g instanceof Error?g.message:"Unknown error";jt(t,`Failed to load dashboard. ${v}`),console.error("Dashboard fetch error:",g)}}function p(m){Pe(t),Xe(r),o&&(o.destroy(),o=null),d(m)}async function E(){try{const m=await fetch("/dashboard-manifest.json");if(!m.ok)throw new Error(`HTTP ${m.status}: ${m.statusText}`);const x=await m.json();c=x,xn({container:t,manifest:x,onSelect:(g,v)=>{f(g,v)}})}catch(m){const x=m instanceof Error?m.message:"Unknown error";jt(t,`Failed to load dashboard list. ${x}`),console.error("Manifest fetch error:",m)}wn({container:e,onUpload:p})}E()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Oe):Oe();
_astro/{index.CSubz1BA.css → index.iavkxzn9.css} RENAMED
@@ -1 +1 @@
1
- *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.static{position:static}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-1{margin-top:.25rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.contents{display:contents}.hidden{display:none}.h-8{height:2rem}.h-\[400px\]{height:400px}.min-h-screen{min-height:100vh}.w-8{width:2rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-screen-2xl{max-width:1536px}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-6{gap:1.5rem}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-4{border-width:4px}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-t-indigo-600{--tw-border-opacity: 1;border-top-color:rgb(79 70 229 / var(--tw-border-opacity, 1))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-2{padding-top:.5rem}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.tracking-wide{letter-spacing:.025em}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.file\:mr-4::file-selector-button{margin-right:1rem}.file\:rounded-md::file-selector-button{border-radius:.375rem}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-blue-50::file-selector-button{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.file\:px-4::file-selector-button{padding-left:1rem;padding-right:1rem}.file\:py-2::file-selector-button{padding-top:.5rem;padding-bottom:.5rem}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-semibold::file-selector-button{font-weight:600}.file\:text-blue-700::file-selector-button{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-700:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:file\:bg-blue-100::file-selector-button:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:640px){.sm\:w-64{width:16rem}.sm\:w-auto{width:auto}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:p-6{padding:1.5rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}}@media(min-width:1024px){.lg\:h-\[600px\]{height:600px}.lg\:max-h-\[660px\]{max-height:660px}.lg\:w-80{width:20rem}.lg\:shrink-0{flex-shrink:0}.lg\:flex-row{flex-direction:row}.lg\:p-8{padding:2rem}}
 
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.static{position:static}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-1{margin-top:.25rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.contents{display:contents}.hidden{display:none}.h-8{height:2rem}.h-\[400px\]{height:400px}.max-h-60{max-height:15rem}.min-h-screen{min-height:100vh}.w-8{width:2rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-screen-2xl{max-width:1536px}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-6{gap:1.5rem}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-4{border-width:4px}.border-t{border-top-width:1px}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-t-indigo-600{--tw-border-opacity: 1;border-top-color:rgb(79 70 229 / var(--tw-border-opacity, 1))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.tracking-wide{letter-spacing:.025em}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.file\:mr-4::file-selector-button{margin-right:1rem}.file\:rounded-md::file-selector-button{border-radius:.375rem}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-blue-50::file-selector-button{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.file\:px-4::file-selector-button{padding-left:1rem;padding-right:1rem}.file\:py-2::file-selector-button{padding-top:.5rem;padding-bottom:.5rem}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-semibold::file-selector-button{font-weight:600}.file\:text-blue-700::file-selector-button{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-50:hover{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-700:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:file\:bg-blue-100::file-selector-button:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:640px){.sm\:w-64{width:16rem}.sm\:w-auto{width:auto}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:p-6{padding:1.5rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}}@media(min-width:1024px){.lg\:h-\[600px\]{height:600px}.lg\:max-h-\[660px\]{max-height:660px}.lg\:w-80{width:20rem}.lg\:shrink-0{flex-shrink:0}.lg\:flex-row{flex-direction:row}.lg\:p-8{padding:2rem}}
index.html CHANGED
@@ -1,3 +1,3 @@
1
- <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Dashboard Preview - Interactive software architecture visualization"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><title>Dashboard Preview</title><link rel="stylesheet" href="/_astro/index.CSubz1BA.css"></head> <body class="min-h-screen bg-gray-50 text-gray-900 antialiased"> <main class="mx-auto max-w-screen-2xl p-4 sm:p-6 lg:p-8"> <header class="mb-6"> <h1 class="text-2xl font-bold text-gray-900 sm:text-3xl">Dashboard Preview</h1> <p class="mt-1 text-sm text-gray-500">Interactive software architecture visualization</p> </header> <!-- Dashboard Selector Section --> <section id="selector-section" class="mb-6 rounded-lg border border-gray-200 bg-white p-4 shadow-sm"> <h2 class="mb-3 text-lg font-semibold text-gray-700">Select Dashboard</h2> <div id="dashboard-selector" class="flex flex-col gap-3 sm:flex-row sm:items-center"> <!-- DashboardSelector component will mount here --> </div> </section> <!-- Upload Section --> <section id="upload-section" class="mb-6 rounded-lg border border-gray-200 bg-white p-4 shadow-sm"> <h2 class="mb-3 text-lg font-semibold text-gray-700">Upload Dashboard</h2> <div id="upload-handler"> <!-- UploadHandler component will mount here --> </div> </section> <!-- Content Area: Metadata + Graph --> <div class="flex flex-col gap-6 lg:flex-row"> <!-- Metadata Panel --> <section id="metadata-section" class="w-full overflow-y-auto rounded-lg border border-gray-200 bg-white p-4 shadow-sm lg:max-h-[660px] lg:w-80 lg:shrink-0"> <h2 class="mb-3 text-lg font-semibold text-gray-700">Project Metadata</h2> <div id="metadata-panel"> <p class="text-sm text-gray-400">Select or upload a dashboard to view metadata.</p> </div> </section> <!-- Graph Canvas --> <section id="graph-section" class="min-w-0 flex-1 rounded-lg border border-gray-200 bg-white p-4 shadow-sm"> <h2 class="mb-3 text-lg font-semibold text-gray-700">Architecture Graph</h2> <div id="graph-container" class="relative h-[400px] w-full rounded border border-gray-100 bg-gray-50 lg:h-[600px]"> <p class="absolute inset-0 flex items-center justify-center text-sm text-gray-400">
2
  Select or upload a dashboard to view the graph.
3
- </p> </div> </section> </div> <!-- Tour Section --> <section id="tour-section" class="mt-6 rounded-lg border border-gray-200 bg-white p-4 shadow-sm"> <h2 class="mb-3 text-lg font-semibold text-gray-700">Guided Tour</h2> <div id="tour-controls"> <p class="text-sm text-gray-400">Load a dashboard with tour steps to start a guided tour.</p> </div> </section> </main> </body></html> <script type="module" src="/_astro/index.astro_astro_type_script_index_0_lang.Br7129Kw.js"></script>
 
1
+ <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Dashboard Preview - Interactive software architecture visualization"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><title>Dashboard Preview</title><link rel="stylesheet" href="/_astro/index.iavkxzn9.css"></head> <body class="min-h-screen bg-gray-50 text-gray-900 antialiased"> <main class="mx-auto max-w-screen-2xl p-4 sm:p-6 lg:p-8"> <header class="mb-6"> <h1 class="text-2xl font-bold text-gray-900 sm:text-3xl">Dashboard Preview</h1> <p class="mt-1 text-sm text-gray-500">Interactive software architecture visualization</p> </header> <!-- Dashboard Selector Section --> <section id="selector-section" class="mb-6 rounded-lg border border-gray-200 bg-white p-4 shadow-sm"> <h2 class="mb-3 text-lg font-semibold text-gray-700">Select Dashboard</h2> <div id="dashboard-selector" class="flex flex-col gap-3 sm:flex-row sm:items-center"> <!-- DashboardSelector component will mount here --> </div> </section> <!-- Upload Section --> <section id="upload-section" class="mb-6 rounded-lg border border-gray-200 bg-white p-4 shadow-sm"> <h2 class="mb-3 text-lg font-semibold text-gray-700">Upload Dashboard</h2> <div id="upload-handler"> <!-- UploadHandler component will mount here --> </div> </section> <!-- Content Area: Metadata + Graph --> <div class="flex flex-col gap-6 lg:flex-row"> <!-- Metadata Panel --> <section id="metadata-section" class="w-full overflow-y-auto rounded-lg border border-gray-200 bg-white p-4 shadow-sm lg:max-h-[660px] lg:w-80 lg:shrink-0"> <h2 class="mb-3 text-lg font-semibold text-gray-700">Project Metadata</h2> <div id="metadata-panel"> <p class="text-sm text-gray-400">Select or upload a dashboard to view metadata.</p> </div> <!-- Search Panel --> <div class="mt-4 border-t border-gray-200 pt-4"> <h3 class="mb-2 text-sm font-semibold text-gray-700">Search Nodes & Edges</h3> <div id="search-panel"> <p class="text-sm text-gray-400">Load a dashboard to search.</p> </div> </div> </section> <!-- Graph Canvas --> <section id="graph-section" class="min-w-0 flex-1 rounded-lg border border-gray-200 bg-white p-4 shadow-sm"> <h2 class="mb-3 text-lg font-semibold text-gray-700">Architecture Graph</h2> <div id="graph-container" class="relative h-[400px] w-full rounded border border-gray-100 bg-gray-50 lg:h-[600px]"> <p class="absolute inset-0 flex items-center justify-center text-sm text-gray-400">
2
  Select or upload a dashboard to view the graph.
3
+ </p> </div> </section> </div> <!-- Tour Section --> <section id="tour-section" class="mt-6 rounded-lg border border-gray-200 bg-white p-4 shadow-sm"> <h2 class="mb-3 text-lg font-semibold text-gray-700">Guided Tour</h2> <div id="tour-controls"> <p class="text-sm text-gray-400">Load a dashboard with tour steps to start a guided tour.</p> </div> </section> </main> </body></html> <script type="module" src="/_astro/index.astro_astro_type_script_index_0_lang.CzRK6-BF.js"></script>
style.css DELETED
@@ -1,28 +0,0 @@
1
- body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
4
- }
5
-
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
- }
10
-
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
- }
17
-
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
- }
25
-
26
- .card p:last-child {
27
- margin-bottom: 0;
28
- }