25 lines
80 KiB
JavaScript
25 lines
80 KiB
JavaScript
import{B as e,Ct as t,D as n,G as r,H as i,J as a,P as o,T as s,V as c,Y as l,_ as u,b as d,d as f,lt as p,v as m,vt as h,wt as g,x as _,xt as v,y}from"./CaGtQlYh.js";import{At as b,E as x,G as S,I as C,Ot as ee,S as w,T as te,U as ne,W as T,Wt as E,Z as re,g as ie,k as ae,o as D,ot as oe,rt as se,st as ce,w as le,z as ue}from"#entry";import"./CIa-1CJu.js";import{t as de}from"./CJgAejf_.js";import{t as fe}from"./Ce_uH7zp.js";import{b as pe}from"./DohEsvF1.js";import{f as me,u as O,x as k}from"./CsU6pgHx.js";import{t as he}from"./DhTvfVif.js";import{t as ge}from"./CxiWMChH.js";import{t as _e}from"./Hw_CdiGx.js";var A={class:`relative h-full w-full`},ve={key:0,class:`absolute inset-0 flex items-center justify-center`},j=Object.assign(n({__name:`RealtimeLineChart`,props:{title:{},seriesConfig:{},isLoading:{type:Boolean,default:!1},initialData:{default:()=>[]},valueMode:{default:`bytes`}},emits:[`chartReady`],setup(t,{expose:n,emit:r}){let a=t,o=r,s=(e,t=!1)=>a.valueMode===`number`?String(e):t?`${k(e).toString()}/s`:k(e).toString(),u=p(),f,h,g,y=de();function b(){let e=O();return{chart:{type:`areaspline`,animation:{duration:800,easing:`linear`},backgroundColor:e.backgroundColor},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:a.title,style:{color:e.textColor}},legend:{enabled:!0,itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},xAxis:{type:`datetime`,tickPixelInterval:100,labels:{style:{color:e.textColor},formatter(){let e=new Date(this.value);return`${e.getMinutes().toString().padStart(2,`0`)}:${e.getSeconds().toString().padStart(2,`0`)}`}},lineColor:e.lineColor,tickColor:e.tickColor},yAxis:{title:{text:void 0},labels:{style:{color:e.textColor},formatter(){return s(this.value)}},gridLineColor:e.gridLineColor,min:0},tooltip:{shared:!0,formatter(){let e=new Date(this.x),t=`<b>${`${e.getMinutes().toString().padStart(2,`0`)}:${e.getSeconds().toString().padStart(2,`0`)}`}</b><br/>`;return this.points?.forEach(e=>{t+=`<span style="color:${e.color}">\u25CF</span> ${e.series.name}: <b>${s(e.y,!0)}</b><br/>`}),t}},plotOptions:{areaspline:{fillOpacity:.3,marker:{enabled:!1},lineWidth:2,states:{hover:{lineWidth:3}},threshold:null}},series:a.seriesConfig.map((t,n)=>({type:`areaspline`,name:t.name,color:t.color||e.seriesColors[n]||h?.getOptions().colors?.[n]||`hsl(${n*120}, 70%, 50%)`,data:a.initialData?.[n]||[]}))}}let x={addPoint:(e,t,n)=>{if(f?.series[e]){let r=f.series[e].data.length>=30;f.series[e].addPoint([t,n],!0,r,{duration:800,easing:`linear`})}},addPoints:e=>{if(!f)return;let t=new Map;e.forEach(e=>{t.has(e.seriesIndex)||t.set(e.seriesIndex,[]),t.get(e.seriesIndex).push({time:e.time,value:e.value})}),t.forEach((e,t)=>{let n=f?.series[t];n&&e.forEach(e=>{let t=n.data.length>=30;n.addPoint([e.time,e.value],!1,t)})}),f.redraw({duration:800,easing:`linear`})},setSeriesData:(e,t)=>{f?.series[e]&&f.series[e].setData(t,!0,!1,!1)}};return n({chartRef:x}),e(async()=>{u.value&&(h=await ge(),u.value&&(f=h.chart(u.value,b()),o(`chartReady`,x),g=new ResizeObserver(()=>{f&&u.value&&f.setSize(u.value.clientWidth,u.value.clientHeight,!0)}),g.observe(u.value)))}),c(()=>{g?.disconnect(),f?.destroy(),f=void 0}),l(()=>a.title,e=>{f&&f.setTitle({text:e})}),l(()=>a.seriesConfig,e=>{f&&(e.forEach((e,t)=>{f.series[t]&&f.series[t].update({type:`areaspline`,name:e.name,color:e.color},!1)}),f.redraw())},{deep:!0}),l(()=>y.curTheme,()=>{requestAnimationFrame(()=>{if(f){let e=O();f.update({chart:{backgroundColor:e.backgroundColor},title:{style:{color:e.textColor}},legend:{itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},xAxis:{labels:{style:{color:e.textColor}},lineColor:e.lineColor,tickColor:e.tickColor},yAxis:{labels:{style:{color:e.textColor}},gridLineColor:e.gridLineColor}},!0,!1,!1)}})}),(e,n)=>(i(),_(`div`,A,[t.isLoading?(i(),_(`div`,ve,[...n[0]||=[m(`span`,{class:`inline-block h-10 w-10 bg-base-content [mask-size:contain] [mask-position:center] [mask-repeat:no-repeat]`,style:{maskImage:`url('data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27%3E%3Ccircle cx=%274%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270%27/%3E%3C/circle%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270.15s%27/%3E%3C/circle%3E%3Ccircle cx=%2720%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270.3s%27/%3E%3C/circle%3E%3C/svg%3E')`,WebkitMaskImage:`url('data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27%3E%3Ccircle cx=%274%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270%27/%3E%3C/circle%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270.15s%27/%3E%3C/circle%3E%3Ccircle cx=%2720%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270.3s%27/%3E%3C/circle%3E%3C/svg%3E')`}},null,-1)]])):d(``,!0),m(`div`,{ref_key:`containerRef`,ref:u,class:v([`h-full w-full transition-opacity duration-200 ease-in-out`,{"opacity-0":t.isLoading}])},null,2)]))}}),{__name:`RealtimeLineChart`}),ye={class:`relative h-full w-full`},be={key:0,class:`absolute inset-0 flex items-center justify-center`},xe=Object.assign(n({__name:`HighchartsAutoSize`,props:{options:{},isLoading:{type:Boolean,default:!1}},setup(t){let n=t,r=p(),a,o,s,u=de();function f(){let e=O();return{chart:{animation:{duration:300},backgroundColor:e.backgroundColor},credits:{enabled:!1},accessibility:{enabled:!1},legend:{itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},title:{style:{color:e.textColor}}}}return e(async()=>{if(!r.value||(o=await ge(),!r.value))return;let e=f(),t={...e,...n.options,chart:{...e.chart,...n.options.chart}};a=o.chart(r.value,t);let i=r.value.clientWidth,c=r.value.clientHeight;s=new ResizeObserver(()=>{if(a&&r.value){let e=r.value.clientWidth,t=r.value.clientHeight;(e!==i||t!==c)&&(i=e,c=t,a.setSize(e,t,!1))}}),s.observe(r.value)}),c(()=>{s?.disconnect(),a?.destroy(),a=void 0}),l(()=>n.options,e=>{a&&a.update(e,!0,!1,!1)},{deep:!0}),l(()=>u.curTheme,()=>{requestAnimationFrame(()=>{if(a){let e=O();a.update({chart:{backgroundColor:e.backgroundColor},title:{style:{color:e.textColor}},legend:{itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},xAxis:{labels:{style:{color:e.textColor}},lineColor:e.lineColor,tickColor:e.tickColor},yAxis:{labels:{style:{color:e.textColor}},gridLineColor:e.gridLineColor}},!0,!1,!1)}})}),(e,n)=>(i(),_(`div`,ye,[t.isLoading?(i(),_(`div`,be,[...n[0]||=[m(`span`,{class:`inline-block size-10 bg-base-content [mask-image:url("data:image/svg+xml,%3Csvg_xmlns='http://www.w3.org/2000/svg'_viewBox='0_0_24_24'%3E%3Ccircle_cx='4'_cy='12'_r='2'_fill='currentColor'%3E%3Canimate_attributeName='opacity'_dur='0.75s'_values='1;0.5;1'_repeatCount='indefinite'_begin='0'/%3E%3C/circle%3E%3Ccircle_cx='12'_cy='12'_r='2'_fill='currentColor'%3E%3Canimate_attributeName='opacity'_dur='0.75s'_values='1;0.5;1'_repeatCount='indefinite'_begin='0.15s'/%3E%3C/circle%3E%3Ccircle_cx='20'_cy='12'_r='2'_fill='currentColor'%3E%3Canimate_attributeName='opacity'_dur='0.75s'_values='1;0.5;1'_repeatCount='indefinite'_begin='0.3s'/%3E%3C/circle%3E%3C/svg%3E")] [mask-size:contain] [mask-position:center] [mask-repeat:no-repeat]`},null,-1)]])):d(``,!0),m(`div`,{ref_key:`containerRef`,ref:r,class:v([`h-full w-full transition-opacity duration-200 ease-in-out`,{"opacity-0":t.isLoading}])},null,2)]))}}),{__name:`HighchartsAutoSize`}),Se={"ip.sb":`https://api.ip.sb/geoip`,"ipwho.is":`https://ipwho.is/`,"ipapi.is":`https://api.ipapi.is/`};function Ce(e){return{ip:e.ip,country:e.country,city:e.city,asn:e.asn,org:e.asn_organization}}function we(e){return{ip:e.ip,country:e.country,countryCode:e.country_code,city:e.city,region:e.region,asn:e.connection?.asn,org:e.connection?.org,isp:e.connection?.isp,latitude:e.latitude,longitude:e.longitude,timezone:e.timezone?.id}}function Te(e){return{ip:e.ip,country:e.location?.country,countryCode:e.location?.country_code,city:e.location?.city,region:e.location?.state,asn:e.asn?.asn,org:e.asn?.org,isProxy:e.is_proxy,isVPN:e.is_vpn,latitude:e.location?.latitude,longitude:e.location?.longitude,timezone:e.location?.timezone}}async function Ee(e){let t=Se[e],n=await pe.get(t,{timeout:1e4}).json();switch(e){case`ip.sb`:return Ce(n);case`ipwho.is`:return we(n);case`ipapi.is`:return Te(n);default:throw Error(`Unknown IP provider: ${e}`)}}function De(){let e=p(`ip.sb`),t=p(null),n=p(!1),r=p(null);async function i(i){let a=i??e.value;n.value=!0,r.value=null;try{t.value=await Ee(a),e.value=a}catch(e){r.value=e instanceof Error?e.message:`Failed to fetch IP info`,t.value=null}finally{n.value=!1}}return{currentProvider:e,ipInfo:t,isLoading:n,error:r,fetchIP:i}}var Oe={class:`rounded-xl border p-4 shadow-sm`,style:{background:`color-mix(in oklch, var(--color-base-200) 60%, transparent)`,"border-color":`color-mix(
|
||
in oklch,
|
||
var(--color-base-content) 10%,
|
||
transparent
|
||
)`,"box-shadow":`0 2px 8px
|
||
color-mix(in oklch, var(--color-base-content) 5%, transparent)`}},ke={class:`mb-3.5 flex items-center justify-between gap-3`},Ae={class:`flex items-center gap-2`},je={class:`flex h-8 w-8 items-center justify-center rounded-lg text-primary`,style:{background:`color-mix(
|
||
in oklch,
|
||
var(--color-primary) 15%,
|
||
transparent
|
||
)`}},Me={class:`m-0 text-[0.9375rem] font-semibold text-base-content`},Ne={class:`flex items-center gap-1.5`},Pe=[`value`],Fe=[`value`],Ie=[`disabled`],Le={key:0,class:`flex justify-center py-6`},Re={key:1,class:`rounded-lg p-3 text-[0.8125rem] text-error`,style:{background:`color-mix(in oklch, var(--color-error) 10%, transparent)`,border:`1px solid
|
||
color-mix(in oklch, var(--color-error) 20%, transparent)`}},ze={key:2,class:`flex flex-col gap-2.5`},Be={class:`-mx-1 -mt-1 mb-1 flex items-center justify-between gap-3 rounded-lg px-2.5 py-2`,style:{background:`color-mix(in oklch, var(--color-primary) 8%, transparent)`,border:`1px solid
|
||
color-mix(in oklch, var(--color-primary) 15%, transparent)`}},Ve={class:`shrink-0 text-[0.8125rem] text-base-content/60`},He=[`title`],Ue={key:0,class:`flex items-center justify-between gap-3`},We={class:`shrink-0 text-[0.8125rem] text-base-content/60`},Ge={class:`overflow-hidden text-right text-[0.8125rem] font-medium text-ellipsis whitespace-nowrap text-base-content`},Ke={key:1,class:`flex items-center justify-between gap-3`},qe={class:`shrink-0 text-[0.8125rem] text-base-content/60`},Je={class:`overflow-hidden text-right text-[0.8125rem] font-medium text-ellipsis whitespace-nowrap text-base-content`},Ye={key:2,class:`flex items-center justify-between gap-3`},Xe={class:`shrink-0 text-[0.8125rem] text-base-content/60`},Ze=[`title`],Qe={key:3,class:`flex items-center justify-between gap-3`},$e={class:`overflow-hidden text-right font-mono text-[0.8125rem] font-semibold text-ellipsis whitespace-nowrap text-base-content`},et={key:4,class:`flex items-center justify-between gap-3`},tt=[`title`],nt={key:5,class:`flex items-center justify-between gap-3`},rt={class:`shrink-0 text-[0.8125rem] text-base-content/60`},it={class:`flex gap-1`},at={key:0,class:`inline-flex items-center rounded-full px-2 py-0.5 text-[0.6875rem] font-semibold tracking-wide text-warning uppercase`,style:{background:`color-mix(
|
||
in oklch,
|
||
var(--color-warning) 15%,
|
||
transparent
|
||
)`}},ot={key:1,class:`inline-flex items-center rounded-full px-2 py-0.5 text-[0.6875rem] font-semibold tracking-wide text-warning uppercase`,style:{background:`color-mix(
|
||
in oklch,
|
||
var(--color-warning) 15%,
|
||
transparent
|
||
)`}},st={key:2,class:`inline-flex items-center rounded-full px-2 py-0.5 text-[0.6875rem] font-semibold tracking-wide text-success uppercase`,style:{background:`color-mix(
|
||
in oklch,
|
||
var(--color-success) 15%,
|
||
transparent
|
||
)`}},ct={key:3,class:`py-6 text-center text-sm text-base-content/50`},lt=Object.assign(n({__name:`IPInfoCard`,setup(t){let{t:n}=ee(),{currentProvider:a,ipInfo:o,isLoading:c,error:l,fetchIP:u}=De(),p=[{value:`ip.sb`,label:`IP.SB`},{value:`ipwho.is`,label:`ipwho.is`},{value:`ipapi.is`,label:`ipapi.is`}];e(()=>{u()});function y(e){let t=e.target;u(t.value)}return(e,t)=>(i(),_(`div`,Oe,[m(`div`,ke,[m(`div`,Ae,[m(`div`,je,[s(h(D),{size:18})]),m(`h3`,Me,g(h(n)(`currentIP`)),1)]),m(`div`,Ne,[m(`select`,{value:h(a),class:`cursor-pointer appearance-none rounded-md bg-base-100 py-1.5 pr-6 pl-2.5 text-xs text-base-content transition-all duration-200 focus:border-primary focus:outline-none`,style:{border:`1px solid
|
||
color-mix(in oklch, var(--color-base-content) 10%, transparent)`,"background-image":`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")`,"background-repeat":`no-repeat`,"background-position":`right 0.375rem center`},onChange:y},[(i(),_(f,null,r(p,e=>m(`option`,{key:e.value,value:e.value},g(e.label),9,Fe)),64))],40,Pe),m(`button`,{class:v([`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md border border-base-content/10 bg-transparent text-base-content/60 transition-all duration-200 hover:bg-base-300 hover:text-base-content disabled:cursor-not-allowed disabled:opacity-50`,{"animate-spin":h(c)}]),disabled:h(c),onClick:t[0]||=e=>h(u)()},[s(h(w),{size:16})],10,Ie)])]),h(c)?(i(),_(`div`,Le,[...t[1]||=[m(`span`,{class:`h-6 w-6 animate-spin rounded-full border-2 border-base-content/10 border-t-primary`},null,-1)]])):h(l)?(i(),_(`div`,Re,[m(`span`,null,g(h(l)),1)])):h(o)?(i(),_(`div`,ze,[m(`div`,Be,[m(`span`,Ve,g(h(n)(`ipAddress`)),1),m(`span`,{class:`overflow-hidden text-right font-mono text-[0.8125rem] font-semibold text-ellipsis whitespace-nowrap text-primary`,title:h(o).ip},g(h(o).ip),9,He)]),h(o).country?(i(),_(`div`,Ue,[m(`span`,We,g(h(n)(`country`)),1),m(`span`,Ge,g(h(o).country),1)])):d(``,!0),h(o).city?(i(),_(`div`,Ke,[m(`span`,qe,g(h(n)(`city`)),1),m(`span`,Je,g(h(o).city),1)])):d(``,!0),h(o).org?(i(),_(`div`,Ye,[m(`span`,Xe,g(h(n)(`organization`)),1),m(`span`,{class:`overflow-hidden text-right text-[0.8125rem] font-medium text-ellipsis whitespace-nowrap text-base-content`,title:h(o).org},g(h(o).org),9,Ze)])):d(``,!0),h(o).asn?(i(),_(`div`,Qe,[t[2]||=m(`span`,{class:`shrink-0 text-[0.8125rem] text-base-content/60`},` ASN `,-1),m(`span`,$e,` AS`+g(h(o).asn),1)])):d(``,!0),h(o).isp?(i(),_(`div`,et,[t[3]||=m(`span`,{class:`shrink-0 text-[0.8125rem] text-base-content/60`},` ISP `,-1),m(`span`,{class:`overflow-hidden text-right text-[0.8125rem] font-medium text-ellipsis whitespace-nowrap text-base-content`,title:h(o).isp},g(h(o).isp),9,tt)])):d(``,!0),h(o).isProxy!==void 0||h(o).isVPN!==void 0?(i(),_(`div`,nt,[m(`span`,rt,g(h(n)(`proxyDetection`)),1),m(`div`,it,[h(o).isProxy?(i(),_(`span`,at,` Proxy `)):d(``,!0),h(o).isVPN?(i(),_(`span`,ot,` VPN `)):d(``,!0),!h(o).isProxy&&!h(o).isVPN?(i(),_(`span`,st,g(h(n)(`clean`)),1)):d(``,!0)])])):d(``,!0)])):(i(),_(`div`,ct,g(h(n)(`noData`)),1))]))}}),{__name:`IPInfoCard`}),ut=5e3,dt=[{name:`Google`,url:`https://www.google.com/generate_204`},{name:`Cloudflare`,url:`https://cp.cloudflare.com/generate_204`},{name:`GitHub`,url:`https://github.com`}];async function ft(e){let t=new AbortController,n=setTimeout(()=>t.abort(),ut);try{let n=performance.now();await fetch(e,{method:`HEAD`,mode:`no-cors`,cache:`no-store`,signal:t.signal});let r=performance.now();return Math.round(r-n)}catch{return null}finally{clearTimeout(n)}}function pt(){let e=p(new Map),t=p(!1),n=p(dt);async function r(t,n){e.value.set(n,{url:n,latency:null,status:`pending`,timestamp:Date.now()});let r=await ft(n);return e.value.set(n,{url:n,latency:r,status:r===null?`error`:`success`,timestamp:Date.now()}),r}async function i(){t.value=!0;let e=n.value.map(e=>r(e.name,e.url));await Promise.all(e),t.value=!1}function a(t){return e.value.get(t)}return{results:e,isTestingAll:t,targets:n,testLatency:r,testAllLatencies:i,getResult:a,allResults:u(()=>n.value.map(t=>({name:t.name,url:t.url,result:e.value.get(t.url)}))),averageLatency:u(()=>{let t=Array.from(e.value.values()).filter(e=>e.status===`success`&&e.latency!==null);if(t.length===0)return null;let n=t.reduce((e,t)=>e+(t.latency??0),0);return Math.round(n/t.length)})}}var mt={class:`rounded-xl border border-base-content/10 p-4`,style:{background:`color-mix(in oklch, var(--color-base-200) 60%, transparent)`}},ht={class:`mb-3 flex items-center justify-between gap-2`},gt={class:`flex items-center gap-2`},_t={class:`m-0 text-base font-semibold text-base-content`},vt={class:`flex items-center gap-2`},yt=[`disabled`],bt={class:`flex flex-col gap-3`},xt={class:`w-20 shrink-0 overflow-hidden text-sm text-ellipsis whitespace-nowrap text-base-content`},St={class:`h-2 flex-1 overflow-hidden rounded-full bg-base-content/10`},Ct={class:`w-16 shrink-0 text-right font-mono text-sm text-base-content`},wt={key:0,class:`inline-block h-3 w-3 animate-spin rounded-full border-2 border-base-content/20 border-t-primary`},Tt={key:1},Et={key:2,class:`text-error`},Dt={key:3,class:`text-base-content/40`},Ot=Object.assign(n({__name:`LatencyCard`,setup(n){let{t:a}=ee(),{allResults:o,isTestingAll:c,testAllLatencies:l,averageLatency:u}=pt();e(()=>{l()});function p(e){return e==null?`bg-base-content/10 text-base-content/50`:e<100?`bg-success/15 text-success`:e<300?`bg-warning/15 text-warning`:`bg-error/15 text-error`}function y(e){return e==null?`0%`:`${Math.min(e/500*100,100)}%`}function b(e){return e==null?`bg-base-content/20`:e<100?`bg-success`:e<300?`bg-warning`:`bg-error`}return(e,n)=>(i(),_(`div`,mt,[m(`div`,ht,[m(`div`,gt,[s(h(ce),{class:`h-5 w-5 text-primary`}),m(`h3`,_t,g(h(a)(`networkLatency`)),1)]),m(`div`,vt,[h(u)===null?d(``,!0):(i(),_(`span`,{key:0,class:v([`rounded-md px-2 py-1 text-xs font-semibold`,p(h(u))])},g(h(a)(`average`))+`: `+g(h(u))+`ms `,3)),m(`button`,{class:v([`flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border-none bg-transparent text-base-content/60 transition-all duration-200 hover:bg-base-content/10 hover:text-base-content disabled:cursor-not-allowed disabled:opacity-50`,{"animate-spin":h(c)}]),disabled:h(c),onClick:n[0]||=(...e)=>h(l)&&h(l)(...e)},[s(h(w),{class:`h-4 w-4`})],10,yt)])]),m(`div`,bt,[(i(!0),_(f,null,r(h(o),e=>(i(),_(`div`,{key:e.url,class:`flex items-center gap-3`},[m(`span`,xt,g(e.name),1),m(`div`,St,[m(`div`,{class:v([`h-full rounded-full transition-[width] duration-500 ease-out`,b(e.result?.latency)]),style:t({width:y(e.result?.latency)})},null,6)]),m(`span`,Ct,[e.result?.status===`pending`?(i(),_(`span`,wt)):e.result?.status===`success`?(i(),_(`span`,Tt,g(e.result.latency)+`ms `,1)):e.result?.status===`error`?(i(),_(`span`,Et,g(h(a)(`timeout`)),1)):(i(),_(`span`,Dt,`-`))])]))),128))])]))}}),{__name:`LatencyCard`}),kt={value:()=>{}};function At(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new jt(n)}function jt(e){this._=e}function Mt(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}jt.prototype=At.prototype={constructor:jt,on:function(e,t){var n=this._,r=Mt(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=Nt(n[i],e.name)))return i;return}if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=Pt(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Pt(n[i],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new jt(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function Nt(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function Pt(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=kt,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Ft={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function It(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),Ft.hasOwnProperty(t)?{space:Ft[t],local:e}:e}function Lt(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function Rt(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function zt(e){var t=It(e);return(t.local?Rt:Lt)(t)}function Bt(){}function Vt(e){return e==null?Bt:function(){return this.querySelector(e)}}function Ht(e){typeof e!=`function`&&(e=Vt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new N(r,this._parents)}function Ut(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Wt(){return[]}function Gt(e){return e==null?Wt:function(){return this.querySelectorAll(e)}}function Kt(e){return function(){return Ut(e.apply(this,arguments))}}function qt(e){e=typeof e==`function`?Kt(e):Gt(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new N(r,i)}function Jt(e){return function(){return this.matches(e)}}function Yt(e){return function(t){return t.matches(e)}}var Xt=Array.prototype.find;function Zt(e){return function(){return Xt.call(this.children,e)}}function Qt(){return this.firstElementChild}function $t(e){return this.select(e==null?Qt:Zt(typeof e==`function`?e:Yt(e)))}var en=Array.prototype.filter;function tn(){return Array.from(this.children)}function nn(e){return function(){return en.call(this.children,e)}}function rn(e){return this.selectAll(e==null?tn:nn(typeof e==`function`?e:Yt(e)))}function an(e){typeof e!=`function`&&(e=Jt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new N(r,this._parents)}function on(e){return Array(e.length)}function sn(){return new N(this._enter||this._groups.map(on),this._parents)}function cn(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}cn.prototype={constructor:cn,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function ln(e){return function(){return e}}function un(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new cn(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function dn(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new cn(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function fn(e){return e.__data__}function pn(e,t){if(!arguments.length)return Array.from(this,fn);var n=t?dn:un,r=this._parents,i=this._groups;typeof e!=`function`&&(e=ln(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=mn(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new N(o,r),o._enter=s,o._exit=c,o}function mn(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function hn(){return new N(this._exit||this._groups.map(on),this._parents)}function gn(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function _n(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new N(s,this._parents)}function vn(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],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 yn(e){e||=bn;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new N(i,this._parents).order()}function bn(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function xn(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Sn(){return Array.from(this)}function Cn(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function wn(){let e=0;for(let t of this)++e;return e}function Tn(){return!this.node()}function En(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function Dn(e){return function(){this.removeAttribute(e)}}function On(e){return function(){this.removeAttributeNS(e.space,e.local)}}function kn(e,t){return function(){this.setAttribute(e,t)}}function An(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function jn(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function Mn(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function Nn(e,t){var n=It(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?On:Dn:typeof t==`function`?n.local?Mn:jn:n.local?An:kn)(n,t))}function Pn(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Fn(e){return function(){this.style.removeProperty(e)}}function In(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Ln(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function Rn(e,t,n){return arguments.length>1?this.each((t==null?Fn:typeof t==`function`?Ln:In)(e,t,n??``)):M(this.node(),e)}function M(e,t){return e.style.getPropertyValue(t)||Pn(e).getComputedStyle(e,null).getPropertyValue(t)}function zn(e){return function(){delete this[e]}}function Bn(e,t){return function(){this[e]=t}}function Vn(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Hn(e,t){return arguments.length>1?this.each((t==null?zn:typeof t==`function`?Vn:Bn)(e,t)):this.node()[e]}function Un(e){return e.trim().split(/^|\s+/)}function Wn(e){return e.classList||new Gn(e)}function Gn(e){this._node=e,this._names=Un(e.getAttribute(`class`)||``)}Gn.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function Kn(e,t){for(var n=Wn(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function qn(e,t){for(var n=Wn(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function Jn(e){return function(){Kn(this,e)}}function Yn(e){return function(){qn(this,e)}}function Xn(e,t){return function(){(t.apply(this,arguments)?Kn:qn)(this,e)}}function Zn(e,t){var n=Un(e+``);if(arguments.length<2){for(var r=Wn(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?Xn:t?Jn:Yn)(n,t))}function Qn(){this.textContent=``}function $n(e){return function(){this.textContent=e}}function er(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function tr(e){return arguments.length?this.each(e==null?Qn:(typeof e==`function`?er:$n)(e)):this.node().textContent}function nr(){this.innerHTML=``}function rr(e){return function(){this.innerHTML=e}}function ir(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function ar(e){return arguments.length?this.each(e==null?nr:(typeof e==`function`?ir:rr)(e)):this.node().innerHTML}function or(){this.nextSibling&&this.parentNode.appendChild(this)}function sr(){return this.each(or)}function cr(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function lr(){return this.each(cr)}function ur(e){var t=typeof e==`function`?e:zt(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function dr(){return null}function fr(e,t){var n=typeof e==`function`?e:zt(e),r=t==null?dr:typeof t==`function`?t:Vt(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function pr(){var e=this.parentNode;e&&e.removeChild(this)}function mr(){return this.each(pr)}function hr(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function gr(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function _r(e){return this.select(e?gr:hr)}function vr(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function yr(e){return function(t){e.call(this,t,this.__data__)}}function br(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function xr(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function Sr(e,t,n){return function(){var r=this.__on,i,a=yr(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function Cr(e,t,n){var r=br(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}return}for(s=t?Sr:xr,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function wr(e,t,n){var r=Pn(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function Tr(e,t){return function(){return wr(this,e,t)}}function Er(e,t){return function(){return wr(this,e,t.apply(this,arguments))}}function Dr(e,t){return this.each((typeof t==`function`?Er:Tr)(e,t))}function*Or(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var kr=[null];function N(e,t){this._groups=e,this._parents=t}function P(){return new N([[document.documentElement]],kr)}function Ar(){return this}N.prototype=P.prototype={constructor:N,select:Ht,selectAll:qt,selectChild:$t,selectChildren:rn,filter:an,data:pn,enter:sn,exit:hn,join:gn,merge:_n,selection:Ar,order:vn,sort:yn,call:xn,nodes:Sn,node:Cn,size:wn,empty:Tn,each:En,attr:Nn,style:Rn,property:Hn,classed:Zn,text:tr,html:ar,raise:sr,lower:lr,append:ur,insert:fr,remove:mr,clone:_r,datum:vr,on:Cr,dispatch:Dr,[Symbol.iterator]:Or};function jr(e){return typeof e==`string`?new N([[document.querySelector(e)]],[document.documentElement]):new N([[e]],kr)}function Mr(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Nr(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Pr(){}var F=.7,Fr=1/F,I=`\\s*([+-]?\\d+)\\s*`,L=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,R=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,Ir=/^#([0-9a-f]{3,8})$/,Lr=RegExp(`^rgb\\(${I},${I},${I}\\)$`),Rr=RegExp(`^rgb\\(${R},${R},${R}\\)$`),zr=RegExp(`^rgba\\(${I},${I},${I},${L}\\)$`),Br=RegExp(`^rgba\\(${R},${R},${R},${L}\\)$`),Vr=RegExp(`^hsl\\(${L},${R},${R}\\)$`),Hr=RegExp(`^hsla\\(${L},${R},${R},${L}\\)$`),Ur={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};Mr(Pr,z,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Wr,formatHex:Wr,formatHex8:Gr,formatHsl:Kr,formatRgb:qr,toString:qr});function Wr(){return this.rgb().formatHex()}function Gr(){return this.rgb().formatHex8()}function Kr(){return ri(this).formatHsl()}function qr(){return this.rgb().formatRgb()}function z(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=Ir.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Jr(t):n===3?new B(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Yr(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Yr(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Lr.exec(e))?new B(t[1],t[2],t[3],1):(t=Rr.exec(e))?new B(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=zr.exec(e))?Yr(t[1],t[2],t[3],t[4]):(t=Br.exec(e))?Yr(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Vr.exec(e))?ni(t[1],t[2]/100,t[3]/100,1):(t=Hr.exec(e))?ni(t[1],t[2]/100,t[3]/100,t[4]):Ur.hasOwnProperty(e)?Jr(Ur[e]):e===`transparent`?new B(NaN,NaN,NaN,0):null}function Jr(e){return new B(e>>16&255,e>>8&255,e&255,1)}function Yr(e,t,n,r){return r<=0&&(e=t=n=NaN),new B(e,t,n,r)}function Xr(e){return e instanceof Pr||(e=z(e)),e?(e=e.rgb(),new B(e.r,e.g,e.b,e.opacity)):new B}function Zr(e,t,n,r){return arguments.length===1?Xr(e):new B(e,t,n,r??1)}function B(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Mr(B,Zr,Nr(Pr,{brighter(e){return e=e==null?Fr:Fr**+e,new B(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?F:F**+e,new B(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new B(V(this.r),V(this.g),V(this.b),ti(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:Qr,formatHex:Qr,formatHex8:$r,formatRgb:ei,toString:ei}));function Qr(){return`#${H(this.r)}${H(this.g)}${H(this.b)}`}function $r(){return`#${H(this.r)}${H(this.g)}${H(this.b)}${H((isNaN(this.opacity)?1:this.opacity)*255)}`}function ei(){let e=ti(this.opacity);return`${e===1?`rgb(`:`rgba(`}${V(this.r)}, ${V(this.g)}, ${V(this.b)}${e===1?`)`:`, ${e})`}`}function ti(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function V(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function H(e){return e=V(e),(e<16?`0`:``)+e.toString(16)}function ni(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new U(e,t,n,r)}function ri(e){if(e instanceof U)return new U(e.h,e.s,e.l,e.opacity);if(e instanceof Pr||(e=z(e)),!e)return new U;if(e instanceof U)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new U(o,s,c,e.opacity)}function ii(e,t,n,r){return arguments.length===1?ri(e):new U(e,t,n,r??1)}function U(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Mr(U,ii,Nr(Pr,{brighter(e){return e=e==null?Fr:Fr**+e,new U(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?F:F**+e,new U(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new B(si(e>=240?e-240:e+120,i,r),si(e,i,r),si(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new U(ai(this.h),oi(this.s),oi(this.l),ti(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(){let e=ti(this.opacity);return`${e===1?`hsl(`:`hsla(`}${ai(this.h)}, ${oi(this.s)*100}%, ${oi(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function ai(e){return e=(e||0)%360,e<0?e+360:e}function oi(e){return Math.max(0,Math.min(1,e||0))}function si(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var ci=e=>()=>e;function li(e,t){return function(n){return e+n*t}}function ui(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function di(e){return(e=+e)==1?fi:function(t,n){return n-t?ui(t,n,e):ci(isNaN(t)?n:t)}}function fi(e,t){var n=t-e;return n?li(e,n):ci(isNaN(e)?t:e)}var pi=(function e(t){var n=di(t);function r(e,t){var r=n((e=Zr(e)).r,(t=Zr(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=fi(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function W(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var mi=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,hi=new RegExp(mi.source,`g`);function gi(e){return function(){return e}}function _i(e){return function(t){return e(t)+``}}function vi(e,t){var n=mi.lastIndex=hi.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=mi.exec(e))&&(i=hi.exec(t));)(a=i.index)>n&&(a=t.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:W(r,i)})),n=hi.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?_i(c[0].x):gi(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}var yi=180/Math.PI,bi={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function xi(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*yi,skewX:Math.atan(c)*yi,scaleX:o,scaleY:s}}var Si;function Ci(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?bi:xi(t.a,t.b,t.c,t.d,t.e,t.f)}function wi(e){return e==null||(Si||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Si.setAttribute(`transform`,e),!(e=Si.transform.baseVal.consolidate()))?bi:(e=e.matrix,xi(e.a,e.b,e.c,e.d,e.e,e.f))}function Ti(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:W(e,i)},{i:c-2,x:W(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:W(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:W(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:W(e,n)},{i:s-2,x:W(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var Ei=Ti(Ci,`px, `,`px)`,`deg)`),Di=Ti(wi,`, `,`)`,`)`),G=0,Oi=0,ki=0,Ai=1e3,ji,K,Mi=0,q=0,Ni=0,J=typeof performance==`object`&&performance.now?performance:Date,Pi=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Fi(){return q||=(Pi(Ii),J.now()+Ni)}function Ii(){q=0}function Li(){this._call=this._time=this._next=null}Li.prototype=Ri.prototype={constructor:Li,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?Fi():+n)+(t==null?0:+t),!this._next&&K!==this&&(K?K._next=this:ji=this,K=this),this._call=e,this._time=n,Ui()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ui())}};function Ri(e,t,n){var r=new Li;return r.restart(e,t,n),r}function zi(){Fi(),++G;for(var e=ji,t;e;)(t=q-e._time)>=0&&e._call.call(void 0,t),e=e._next;--G}function Bi(){q=(Mi=J.now())+Ni,G=Oi=0;try{zi()}finally{G=0,Hi(),q=0}}function Vi(){var e=J.now(),t=e-Mi;t>Ai&&(Ni-=t,Mi=e)}function Hi(){for(var e,t=ji,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:ji=n);K=e,Ui(r)}function Ui(e){G||(Oi&&=clearTimeout(Oi),e-q>24?(e<1/0&&(Oi=setTimeout(Bi,e-J.now()-Ni)),ki&&=clearInterval(ki)):(ki||=(Mi=J.now(),setInterval(Vi,Ai)),G=1,Pi(Bi)))}function Wi(e,t,n){var r=new Li;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Gi=At(`start`,`end`,`cancel`,`interrupt`),Ki=[];function qi(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Yi(e,n,{name:t,index:r,group:i,on:Gi,tween:Ki,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Ji(e,t){var n=X(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function Y(e,t){var n=X(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function X(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Yi(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Ri(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return Wi(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=6,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(Wi(function(){n.state===3&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=2,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===2){for(n.state=3,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=5,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===5&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=6,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function Xi(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n){if((r=n[o]).name!==t){a=!1;continue}i=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function Zi(e){return this.each(function(){Xi(this,e)})}function Qi(e,t){var n,r;return function(){var i=Y(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function $i(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Y(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function ea(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=X(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?Qi:$i)(n,e,t))}function ta(e,t,n){var r=e._id;return e.each(function(){var e=Y(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return X(e,r).value[t]}}function na(e,t){var n;return(typeof t==`number`?W:t instanceof z?pi:(n=z(t))?(t=n,pi):vi)(e,t)}function ra(e){return function(){this.removeAttribute(e)}}function ia(e){return function(){this.removeAttributeNS(e.space,e.local)}}function aa(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function oa(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function sa(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function ca(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function la(e,t){var n=It(e),r=n===`transform`?Di:na;return this.attrTween(e,typeof t==`function`?(n.local?ca:sa)(n,r,ta(this,`attr.`+e,t)):t==null?(n.local?ia:ra)(n):(n.local?oa:aa)(n,r,t))}function ua(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function da(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function fa(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&da(e,i)),n}return i._value=t,i}function pa(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&ua(e,i)),n}return i._value=t,i}function ma(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=It(e);return this.tween(n,(r.local?fa:pa)(r,t))}function ha(e,t){return function(){Ji(this,e).delay=+t.apply(this,arguments)}}function ga(e,t){return t=+t,function(){Ji(this,e).delay=t}}function _a(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?ha:ga)(t,e)):X(this.node(),t).delay}function va(e,t){return function(){Y(this,e).duration=+t.apply(this,arguments)}}function ya(e,t){return t=+t,function(){Y(this,e).duration=t}}function ba(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?va:ya)(t,e)):X(this.node(),t).duration}function xa(e,t){if(typeof t!=`function`)throw Error();return function(){Y(this,e).ease=t}}function Sa(e){var t=this._id;return arguments.length?this.each(xa(t,e)):X(this.node(),t).ease}function Ca(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Y(this,e).ease=n}}function wa(e){if(typeof e!=`function`)throw Error();return this.each(Ca(this._id,e))}function Ta(e){typeof e!=`function`&&(e=Jt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new Z(r,this._parents,this._name,this._id)}function Ea(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new Z(o,this._parents,this._name,this._id)}function Da(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function Oa(e,t,n){var r,i,a=Da(t)?Ji:Y;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function ka(e,t){var n=this._id;return arguments.length<2?X(this.node(),n).on.on(e):this.each(Oa(n,e,t))}function Aa(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function ja(){return this.on(`end.remove`,Aa(this._id))}function Ma(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Vt(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,qi(l[f],t,n,f,l,X(u,n)));return new Z(a,this._parents,t,n)}function Na(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Gt(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=X(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&qi(p,t,n,h,f,m);a.push(f),o.push(u)}return new Z(a,o,t,n)}var Pa=P.prototype.constructor;function Fa(){return new Pa(this._groups,this._parents)}function Ia(e,t){var n,r,i;return function(){var a=M(this,e),o=(this.style.removeProperty(e),M(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function La(e){return function(){this.style.removeProperty(e)}}function Ra(e,t,n){var r,i=n+``,a;return function(){var o=M(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function za(e,t,n){var r,i,a;return function(){var o=M(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),M(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function Ba(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Y(this,e),l=c.on,u=c.value[a]==null?s||=La(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function Va(e,t,n){var r=(e+=``)==`transform`?Ei:na;return t==null?this.styleTween(e,Ia(e,r)).on(`end.style.`+e,La(e)):typeof t==`function`?this.styleTween(e,za(e,r,ta(this,`style.`+e,t))).each(Ba(this._id,e)):this.styleTween(e,Ra(e,r,t),n).on(`end.style.`+e,null)}function Ha(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Ua(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&Ha(e,a,n)),r}return a._value=t,a}function Wa(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,Ua(e,t,n??``))}function Ga(e){return function(){this.textContent=e}}function Ka(e){return function(){var t=e(this);this.textContent=t??``}}function qa(e){return this.tween(`text`,typeof e==`function`?Ka(ta(this,`text`,e)):Ga(e==null?``:e+``))}function Ja(e){return function(t){this.textContent=e.call(this,t)}}function Ya(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&Ja(r)),t}return r._value=e,r}function Xa(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,Ya(e))}function Za(){for(var e=this._name,t=this._id,n=to(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=X(c,t);qi(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Z(r,this._parents,e,n)}function Qa(){var e,t,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 n=Y(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var $a=0;function Z(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function eo(e){return P().transition(e)}function to(){return++$a}var Q=P.prototype;Z.prototype=eo.prototype={constructor:Z,select:Ma,selectAll:Na,selectChild:Q.selectChild,selectChildren:Q.selectChildren,filter:Ta,merge:Ea,selection:Fa,transition:Za,call:Q.call,nodes:Q.nodes,node:Q.node,size:Q.size,empty:Q.empty,each:Q.each,on:ka,attr:la,attrTween:ma,style:Va,styleTween:Wa,text:qa,textTween:Xa,remove:ja,tween:ea,delay:_a,duration:ba,ease:Sa,easeVarying:wa,end:Qa,[Symbol.iterator]:Q[Symbol.iterator]};function no(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var ro={time:null,delay:0,duration:250,ease:no};function io(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function ao(e){var t,n;e instanceof Z?(t=e._id,e=e._name):(t=to(),(n=ro).time=Fi(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&qi(c,e,t,l,o,n||io(c,t));return new Z(r,this._parents,e,t)}P.prototype.interrupt=Zi,P.prototype.transition=ao;var{abs:oo,max:so,min:co}=Math;[`w`,`e`].map(lo),[`n`,`s`].map(lo),[`n`,`w`,`e`,`s`,`nw`,`ne`,`sw`,`se`].map(lo);function lo(e){return{type:e}}function uo(e){var t=0,n=e.children,r=n&&n.length;if(!r)t=1;else for(;--r>=0;)t+=n[r].value;e.value=t}function fo(){return this.eachAfter(uo)}function po(e,t){let n=-1;for(let r of this)e.call(t,r,++n,this);return this}function mo(e,t){for(var n=this,r=[n],i,a,o=-1;n=r.pop();)if(e.call(t,n,++o,this),i=n.children)for(a=i.length-1;a>=0;--a)r.push(i[a]);return this}function ho(e,t){for(var n=this,r=[n],i=[],a,o,s,c=-1;n=r.pop();)if(i.push(n),a=n.children)for(o=0,s=a.length;o<s;++o)r.push(a[o]);for(;n=i.pop();)e.call(t,n,++c,this);return this}function go(e,t){let n=-1;for(let r of this)if(e.call(t,r,++n,this))return r}function _o(e){return this.eachAfter(function(t){for(var n=+e(t.data)||0,r=t.children,i=r&&r.length;--i>=0;)n+=r[i].value;t.value=n})}function vo(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}function yo(e){for(var t=this,n=bo(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var i=r.length;e!==n;)r.splice(i,0,e),e=e.parent;return r}function bo(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),i=null;for(e=n.pop(),t=r.pop();e===t;)i=e,e=n.pop(),t=r.pop();return i}function xo(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function So(){return Array.from(this)}function Co(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function wo(){var e=this,t=[];return e.each(function(n){n!==e&&t.push({source:n.parent,target:n})}),t}function*To(){var e=this,t,n=[e],r,i,a;do for(t=n.reverse(),n=[];e=t.pop();)if(yield e,r=e.children)for(i=0,a=r.length;i<a;++i)n.push(r[i]);while(n.length)}function Eo(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=ko)):t===void 0&&(t=Oo);for(var n=new Mo(e),r,i=[n],a,o,s,c;r=i.pop();)if((o=t(r.data))&&(c=(o=Array.from(o)).length))for(r.children=o,s=c-1;s>=0;--s)i.push(a=o[s]=new Mo(o[s])),a.parent=r,a.depth=r.depth+1;return n.eachBefore(jo)}function Do(){return Eo(this).eachBefore(Ao)}function Oo(e){return e.children}function ko(e){return Array.isArray(e)?e[1]:null}function Ao(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function jo(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function Mo(e){this.data=e,this.depth=this.height=0,this.parent=null}Mo.prototype=Eo.prototype={constructor:Mo,count:fo,each:po,eachAfter:ho,eachBefore:mo,find:go,sum:_o,sort:vo,path:yo,ancestors:xo,descendants:So,leaves:Co,links:wo,copy:Do,[Symbol.iterator]:To};function No(e,t){return e.parent===t.parent?1:2}function Po(e){var t=e.children;return t?t[0]:e.t}function Fo(e){var t=e.children;return t?t[t.length-1]:e.t}function Io(e,t,n){var r=n/(t.i-e.i);t.c-=r,t.s+=n,e.c+=r,t.z+=n,t.m+=n}function Lo(e){for(var t=0,n=0,r=e.children,i=r.length,a;--i>=0;)a=r[i],a.z+=t,a.m+=t,t+=a.s+(n+=a.c)}function Ro(e,t,n){return e.a.parent===t.parent?e.a:n}function zo(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}zo.prototype=Object.create(Mo.prototype);function Bo(e){for(var t=new zo(e,0),n,r=[t],i,a,o,s;n=r.pop();)if(a=n._.children)for(n.children=Array(s=a.length),o=s-1;o>=0;--o)r.push(i=n.children[o]=new zo(a[o],o)),i.parent=n;return(t.parent=new zo(null,0)).children=[t],t}function Vo(){var e=No,t=1,n=1,r=null;function i(i){var s=Bo(i);if(s.eachAfter(a),s.parent.m=-s.z,s.eachBefore(o),r)i.eachBefore(c);else{var l=i,u=i,d=i;i.eachBefore(function(e){e.x<l.x&&(l=e),e.x>u.x&&(u=e),e.depth>d.depth&&(d=e)});var f=l===u?1:e(l,u)/2,p=f-l.x,m=t/(u.x+f+p),h=n/(d.depth||1);i.eachBefore(function(e){e.x=(e.x+p)*m,e.y=e.depth*h})}return i}function a(t){var n=t.children,r=t.parent.children,i=t.i?r[t.i-1]:null;if(n){Lo(t);var a=(n[0].z+n[n.length-1].z)/2;i?(t.z=i.z+e(t._,i._),t.m=t.z-a):t.z=a}else i&&(t.z=i.z+e(t._,i._));t.parent.A=s(t,i,t.parent.A||r[0])}function o(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function s(t,n,r){if(n){for(var i=t,a=t,o=n,s=i.parent.children[0],c=i.m,l=a.m,u=o.m,d=s.m,f;o=Fo(o),i=Po(i),o&&i;)s=Po(s),a=Fo(a),a.a=t,f=o.z+u-i.z-c+e(o._,i._),f>0&&(Io(Ro(o,t,r),t,f),c+=f,l+=f),u+=o.m,c+=i.m,d+=s.m,l+=a.m;o&&!Fo(a)&&(a.t=o,a.m+=u-l),i&&!Po(s)&&(s.t=i,s.m+=c-d,r=t)}return r}function c(e){e.x*=t,e.y=e.depth*n}return i.separation=function(t){return arguments.length?(e=t,i):e},i.size=function(e){return arguments.length?(r=!1,t=+e[0],n=+e[1],i):r?null:[t,n]},i.nodeSize=function(e){return arguments.length?(r=!0,t=+e[0],n=+e[1],i):r?[t,n]:null},i}function $(e,t,n){this.k=e,this.x=t,this.y=n}$.prototype={constructor:$,scale:function(e){return e===1?this:new $(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new $(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var Ho=new $(1,0,0);Uo.prototype=$.prototype;function Uo(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Ho;return e.__zoom}var Wo={class:`mb-4 flex items-center justify-between`},Go={class:`flex items-center gap-2`},Ko=[`title`],qo={class:`flex flex-wrap gap-2 text-sm text-base-content/60`},Jo={class:`mb-4 flex flex-wrap gap-4 text-xs`},Yo={class:`flex items-center gap-1`},Xo={class:`flex items-center gap-1`},Zo={class:`flex items-center gap-1`},Qo={class:`flex items-center gap-1`},$o={class:`flex items-center gap-1`},es={key:0,class:`flex flex-col items-center justify-center py-8 text-base-content/60`},ts=Object.assign(n({__name:`NetworkTopology`,setup(t){let{t:n}=ee(),r=he(),d=de(),f=p(null),b=p(null),S=p(new Set),T=p(!1),E=p(null),re=u(()=>T.value&&E.value?E.value:r.activeConnections),D=null,oe=null,se=null;function ce(e,t=`600 11px sans-serif`){se||=document.createElement(`canvas`);let n=se.getContext(`2d`);return n?(n.font=t,n.measureText(e).width):e.length*7}let le=!1;function fe(){le||(le=!0,requestAnimationFrame(()=>{le=!1,be()}))}let pe=u(()=>{let e=re.value,t=new Map;e.forEach(e=>{let n=e.metadata.sourceIP||`Unknown`,r=String(e.metadata.sourcePort||`Unknown`),i=e.rule||`Direct`,a=e.rulePayload,o=a?`${i}: ${a}`:i,s=e.chains||[],c=s[0]??`Direct`,l=s.length>1?s[1]??`Direct`:s[0]??`Direct`,u=e.download+e.upload;t.has(l)||t.set(l,{data:{id:`group-${l}`,name:l,type:`group`,connections:0,traffic:0},proxies:new Map});let d=t.get(l);d.data.connections++,d.data.traffic+=u,d.proxies.has(c)||d.proxies.set(c,{data:{id:`proxy-${l}-${c}`,name:c,type:`proxy`,connections:0,traffic:0},rules:new Map});let f=d.proxies.get(c);f.data.connections++,f.data.traffic+=u,f.rules.has(o)||f.rules.set(o,{data:{id:`rule-${l}-${c}-${o}`,name:o,type:`rule`,connections:0,traffic:0},clients:new Map});let p=f.rules.get(o);p.data.connections++,p.data.traffic+=u,p.clients.has(n)||p.clients.set(n,{data:{id:`client-${l}-${c}-${o}-${n}`,name:n,type:`client`,connections:0,traffic:0},ports:new Map});let m=p.clients.get(n);m.data.connections++,m.data.traffic+=u,m.ports.has(r)||m.ports.set(r,{id:`port-${l}-${c}-${o}-${n}-${r}`,name:r,type:`port`,connections:0,traffic:0});let h=m.ports.get(r);h.connections++,h.traffic+=u});let n=[];function r(e,t=!1){return(S.value.has(e.id)||t)&&e.children&&e.children.length>0?{...e,_children:e.children,children:void 0,collapsed:!0}:{...e,collapsed:!1}}return t.forEach(e=>{let t={...e.data,children:[]};e.proxies.forEach(e=>{let n={...e.data,children:[]};e.rules.forEach(e=>{let t={...e.data,children:[]};e.clients.forEach(e=>{let n=Array.from(e.ports.values()),r=S.value.has(`expanded-${e.data.id}`)?{...e.data,children:n,collapsed:!1}:{...e.data,_children:n,children:void 0,collapsed:!0};t.children.push(r)}),!S.value.has(`expanded-${e.data.id}`)&&t.children.length>0?(t._children=t.children,t.children=void 0,t.collapsed=!0):t.collapsed=!1,n.children.push(t)});let i=r(n);t.children.push(i)});let i=r(t);n.push(i)}),{id:`root`,name:`Connections`,type:`root`,connections:e.length,traffic:e.reduce((e,t)=>e+t.download+t.upload,0),children:n}}),O=u(()=>{let e=re.value,t=new Set,n=new Set,r=new Set,i=new Set;return e.forEach(e=>{t.add(e.metadata.sourceIP||`Unknown`),n.add(e.rule||`Direct`);let a=e.chains||[];i.add(a[0]??`Direct`),r.add(a.length>1?a[1]??`Direct`:a[0]??`Direct`)}),{clientCount:t.size,ruleCount:n.size,groupCount:r.size,proxyCount:i.size,totalTraffic:e.reduce((e,t)=>e+t.download+t.upload,0)}});function ge(){let e=me();return{root:{fill:e.neutral,bg:`color-mix(in oklch, ${e.neutral} 15%, transparent)`},client:{fill:e.primary,bg:`color-mix(in oklch, ${e.primary} 15%, transparent)`},port:{fill:e.warning,bg:`color-mix(in oklch, ${e.warning} 15%, transparent)`},rule:{fill:e.secondary,bg:`color-mix(in oklch, ${e.secondary} 15%, transparent)`},group:{fill:e.accent,bg:`color-mix(in oklch, ${e.accent} 15%, transparent)`},proxy:{fill:e.info,bg:`color-mix(in oklch, ${e.info} 15%, transparent)`},baseContent:e.baseContent}}function _e(){let e=d.curTheme;return D&&oe===e?D:(D=ge(),oe=e,D)}function A(e){return _e()[e].fill}function ve(e){return _e()[e].bg}function j(e){switch(e){case`client`:return ne;case`port`:return C;case`rule`:return ue;case`group`:return ae;case`proxy`:return ie;default:return ae}}function ye(e,t){let n=`expanded-${e}`;t?e.startsWith(`rule-`)||e.startsWith(`client-`)?S.value.add(n):S.value.delete(e):e.startsWith(`rule-`)||e.startsWith(`client-`)?S.value.delete(n):S.value.add(e)}function be(){if(!f.value||!b.value)return;let e=pe.value;if(!e.children||e.children.length===0)return;jr(f.value).selectAll(`*`).remove();let t=Eo(e),n=b.value.clientWidth;Vo().nodeSize([50,100]).separation((e,t)=>e.parent===t.parent?1:1.5)(t);let r=new Map,i=t.descendants();for(let e of i)if(e.data.type!==`root`){let t=ce(e.data.name),n=e.data.children&&e.data.children.length>0||e.data._children&&e.data._children.length>0?20:0;r.set(e.data.id,t+32+n)}function a(e){return r.get(e.data.id)??80}let o=new Map;t.descendants().forEach(e=>{if(e.data.type!==`root`){let t=a(e),n=o.get(e.depth)??0;o.set(e.depth,Math.max(n,t))}});let s=new Map,c=0;for(let e=1;e<=o.size;e++){let t=o.get(e)??100;if(e===1)c=t/2;else{let n=o.get(e-1)??100;c+=n/2+40+t/2}s.set(e,c)}t.descendants().forEach(e=>{e.data.type!==`root`&&e.depth>0&&(e.y=s.get(e.depth)??e.y)});let l=1/0,u=-1/0;t.each(e=>{let t=e.x??0;t<l&&(l=t),t>u&&(u=t)});let d=u-l+50,p=Math.max(400,d+25+40),m=0;t.each(e=>{if(e.data.type!==`root`){let t=r.get(e.data.id)??80,n=(e.y??0)+t/2;n>m&&(m=n)}});let h=Math.max(n,m+60+40),g=jr(f.value).attr(`width`,h).attr(`height`,p).append(`g`).attr(`transform`,`translate(60, ${-l+50/2+25})`),_=_e(),v=t.links().filter(e=>e.source.data.type!==`root`);g.selectAll(`.link`).data(v).join(`path`).attr(`class`,`link`).attr(`d`,e=>{let t=e.source,n=e.target,r=a(t),i=a(n),o=t.y-0+r/2,s=t.x,c=n.y-0-i/2,l=n.x,u=(o+c)/2;return`M${o},${s} C${u},${s} ${u},${l} ${c},${l}`}).attr(`fill`,`none`).attr(`stroke`,_.baseContent).attr(`stroke-opacity`,.3).attr(`stroke-width`,e=>Math.max(1,Math.min(4,e.target.data.connections/5)));let y=g.selectAll(`.node`).data(t.descendants().filter(e=>e.data.type!==`root`)).join(`g`).attr(`class`,`node`).attr(`transform`,e=>`translate(${(e.y??0)-0},${e.x})`).style(`cursor`,e=>e.data.children&&e.data.children.length>0||e.data._children&&e.data._children.length>0?`pointer`:`default`).on(`click`,(e,t)=>{(t.data.children&&t.data.children.length>0||t.data._children&&t.data._children.length>0)&&ye(t.data.id,t.data.collapsed??!1)});y.append(`text`).attr(`dy`,-30/2-4).attr(`text-anchor`,`middle`).attr(`fill`,e=>A(e.data.type)).attr(`font-size`,`10px`).attr(`font-weight`,`500`).text(e=>`${e.data.connections}`),y.append(`rect`).attr(`x`,e=>-a(e)/2).attr(`y`,-30/2).attr(`width`,e=>a(e)).attr(`height`,30).attr(`rx`,6).attr(`fill`,e=>ve(e.data.type)).attr(`stroke`,e=>A(e.data.type)).attr(`stroke-width`,2),y.filter(e=>!!(e.data.children&&e.data.children.length>0||e.data._children&&e.data._children.length>0)).append(`text`).attr(`x`,e=>a(e)/2-12).attr(`dy`,`0.35em`).attr(`text-anchor`,`middle`).attr(`fill`,e=>A(e.data.type)).attr(`font-size`,`14px`).attr(`font-weight`,`700`).text(e=>e.data.collapsed?`+`:`−`),y.append(`text`).attr(`dy`,`0.31em`).attr(`text-anchor`,`middle`).attr(`fill`,e=>A(e.data.type)).attr(`font-size`,`11px`).attr(`font-weight`,`600`).text(e=>e.data.name),y.append(`title`).text(e=>`${e.data.name}\n${e.data.connections} connections\n${k(e.data.traffic).toString()}`)}function xe(){T.value?E.value=null:E.value=[...r.activeConnections],T.value=!T.value}return l([()=>pe.value,()=>d.curTheme],()=>{o(fe)},{deep:!0}),e(()=>{o(fe);let e=new ResizeObserver(()=>fe());b.value&&e.observe(b.value),c(()=>{e.disconnect(),se=null,D=null})}),(e,t)=>(i(),_(`div`,null,[m(`div`,Wo,[m(`div`,Go,[m(`button`,{class:v([`flex h-6 w-6 cursor-pointer items-center justify-center rounded-full border-none bg-transparent text-base-content transition-all duration-200 ease-in-out hover:bg-base-content/10`,{"text-warning":h(T)}]),title:h(T)?h(n)(`resume`):h(n)(`pause`),onClick:xe},[h(T)?(i(),y(h(te),{key:0,class:`h-4 w-4`})):(i(),y(h(x),{key:1,class:`h-4 w-4`}))],10,Ko)]),m(`div`,qo,[m(`span`,null,g(h(O).clientCount)+` `+g(h(n)(`clients`)),1),t[0]||=m(`span`,null,`·`,-1),m(`span`,null,g(h(O).ruleCount)+` `+g(h(n)(`rules`)),1),t[1]||=m(`span`,null,`·`,-1),m(`span`,null,g(h(O).groupCount)+` `+g(h(n)(`groups`)),1),t[2]||=m(`span`,null,`·`,-1),m(`span`,null,g(h(O).proxyCount)+` `+g(h(n)(`nodes`)),1),t[3]||=m(`span`,null,`·`,-1),m(`span`,null,g(h(k)(h(O).totalTraffic).toString()),1)])]),m(`div`,Jo,[m(`div`,Yo,[(i(),y(a(j(`group`)),{class:`h-4 w-4 text-accent`})),m(`span`,null,g(h(n)(`proxyGroups`)),1)]),m(`div`,Xo,[(i(),y(a(j(`proxy`)),{class:`h-4 w-4 text-info`})),m(`span`,null,g(h(n)(`proxyNodes`)),1)]),m(`div`,Zo,[(i(),y(a(j(`rule`)),{class:`h-4 w-4 text-secondary`})),m(`span`,null,g(h(n)(`rules`)),1)]),m(`div`,Qo,[(i(),y(a(j(`client`)),{class:`h-4 w-4 text-primary`})),m(`span`,null,g(h(n)(`sourceIP`)),1)]),m(`div`,$o,[(i(),y(a(j(`port`)),{class:`h-4 w-4 text-warning`})),m(`span`,null,g(h(n)(`sourcePort`)),1)])]),h(re).length===0?(i(),_(`div`,es,[s(h(w),{class:`mb-2 h-8 w-8 animate-pulse`}),m(`span`,null,g(h(n)(`waitingForConnections`)),1)])):(i(),_(`div`,{key:1,ref_key:`containerRef`,ref:b,class:`touch-pan-x touch-pan-y overflow-x-auto`},[(i(),_(`svg`,{ref_key:`svgRef`,ref:f,class:`min-h-[25rem]`},null,512))],512))]))}}),{__name:`NetworkTopology`}),ns={class:`flex h-full flex-col gap-4 overflow-x-hidden overflow-y-auto p-2`},rs={class:`grid min-w-0 grid-cols-2 gap-3 sm:grid-cols-3 xl:grid-cols-6`},is={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:0ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},as={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-success/15 text-success`},os={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},ss={class:`text-xs leading-tight break-words text-base-content/60`},cs={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},ls={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:50ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},us={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-info/15 text-info`},ds={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},fs={class:`text-xs leading-tight break-words text-base-content/60`},ps={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},ms={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:100ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},hs={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-secondary/15 text-secondary`},gs={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},_s={class:`text-xs leading-tight break-words text-base-content/60`},vs={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},ys={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:150ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},bs={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-secondary/15 text-secondary`},xs={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},Ss={class:`text-xs leading-tight break-words text-base-content/60`},Cs={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},ws={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:200ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},Ts={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-warning/15 text-warning`},Es={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},Ds={class:`text-xs leading-tight break-words text-base-content/60`},Os={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},ks={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:250ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},As={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-error/15 text-error`},js={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},Ms={class:`text-xs leading-tight break-words text-base-content/60`},Ns={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},Ps={key:0,class:`animate-fade-slide-in flex items-center justify-center gap-2 rounded-lg border border-primary/15 bg-primary/8 px-4 py-3 [animation-delay:300ms]`},Fs={class:`text-sm text-base-content/60`},Is={class:`font-mono text-sm font-medium text-base-content`},Ls={class:`grid min-w-0 grid-cols-1 gap-4 lg:grid-cols-2 xl:grid-cols-3`},Rs={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:350ms] lg:h-80`},zs={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:400ms] lg:h-80`},Bs={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:450ms] lg:h-80`},Vs={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:500ms] lg:h-80`},Hs={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:550ms] lg:h-80`},Us={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:600ms] lg:h-80`},Ws={class:`grid grid-cols-1 gap-4 md:grid-cols-2`},Gs={class:`rounded-xl border border-base-content/10 bg-base-200 p-4`},Ks={class:`flex items-center gap-2 font-semibold text-base-content`},qs={class:`flex h-6 w-6 cursor-pointer items-center justify-center rounded-full border-none bg-transparent text-base-content transition-colors duration-200 hover:bg-base-content/10`},Js=n({__name:`overview`,setup(t){let{t:n}=ee();E({title:u(()=>n(`overview`))});let r=fe(),a=he(),o=b(),c=de(),f=_e(),x=e=>k(e).toString();e(()=>{f.proxies.length===0&&f.fetchProxies()});let C=u(()=>(c.curTheme,O())),w=p(),te=p(),ne=p(),D=u(()=>[{name:n(`down`),color:C.value.seriesColors[0]},{name:n(`up`),color:C.value.seriesColors[1]}]),ce=u(()=>[[...r.trafficChartHistory.download],[...r.trafficChartHistory.upload]]),ue=u(()=>[{name:n(`memory`),color:C.value.seriesColors[2]}]),pe=u(()=>[[...r.memoryChartHistory]]),me=u(()=>[{name:n(`activeConnections`),color:C.value.seriesColors[3]}]),ge=u(()=>[[...r.connectionCountHistory]]),A=u(()=>({chart:{type:`pie`,backgroundColor:C.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:n(`flow`),style:{color:C.value.textColor}},tooltip:{pointFormatter(){let e=this.y||0,t=this.percentage||0;return`${this.name}<br/>${k(e).toString()} (${t.toFixed(1)}%)`}},plotOptions:{pie:{allowPointSelect:!0,cursor:`pointer`,dataLabels:{enabled:!1},showInLegend:!0,animation:!1}},legend:{itemStyle:{color:C.value.textColor},itemHoverStyle:{color:C.value.textColorHover}},series:[{type:`pie`,name:n(`flow`),data:[{name:n(`downloadTotal`),y:a.latestConnectionMsg?.downloadTotal||0,color:C.value.seriesColors[0]},{name:n(`uploadTotal`),y:a.latestConnectionMsg?.uploadTotal||0,color:C.value.seriesColors[1]}]}]})),ve=u(()=>{let e=a.activeConnections,t=0,r=0,i=0;return e.forEach(e=>{let n=e.metadata.network?.toLowerCase()||``;n===`tcp`?t++:n===`udp`?r++:i++}),{chart:{type:`pie`,backgroundColor:C.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:n(`networkTypes`),style:{color:C.value.textColor}},tooltip:{pointFormatter(){let e=this.y||0,t=this.percentage||0;return`${this.name}: <b>${e}</b> (${t.toFixed(1)}%)`}},plotOptions:{pie:{allowPointSelect:!0,cursor:`pointer`,dataLabels:{enabled:!1},showInLegend:!0,animation:!1}},legend:{itemStyle:{color:C.value.textColor},itemHoverStyle:{color:C.value.textColorHover}},series:[{type:`pie`,name:n(`networkTypes`),data:[{name:n(`tcp`),y:t,color:C.value.seriesColors[0]},{name:n(`udp`),y:r,color:C.value.seriesColors[1]},...i>0?[{name:n(`other`),y:i,color:C.value.seriesColors[2]}]:[]]}]}}),ye=u(()=>{let e=a.speedGroupByName,t=Object.entries(e).filter(([e])=>!f.isProxyGroup(e)).sort(([,e],[,t])=>t-e).slice(0,5),r=t.map(([e])=>e),i=t.map(([,e])=>e);return{chart:{type:`bar`,backgroundColor:C.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:n(`topProxies`),style:{color:C.value.textColor}},xAxis:{categories:r,labels:{style:{color:C.value.textColor}},lineColor:C.value.lineColor},yAxis:{title:{text:void 0},labels:{style:{color:C.value.textColor},formatter(){return`${k(this.value).toString()}/s`}},gridLineColor:C.value.gridLineColor,min:0},tooltip:{formatter(){return`<b>${r[this.x]||this.x}</b><br/>${k(this.y).toString()}/s`}},legend:{enabled:!1},plotOptions:{bar:{dataLabels:{enabled:!1},animation:!1}},series:[{type:`bar`,name:n(`traffic`),data:i,color:C.value.seriesColors[0]}]}}),be=r.trafficChartHistory.download.at(-1)?.[0]??0,Se=r.memoryChartHistory.at(-1)?.[0]??0,Ce=r.connectionCountHistory.at(-1)?.[0]??0;return l(()=>r.latestTraffic,e=>{if(e&&w.value?.chartRef){let t=Date.now();t>be&&(w.value.chartRef.addPoints([{seriesIndex:0,time:t,value:e.down},{seriesIndex:1,time:t,value:e.up}]),be=t)}}),l(()=>r.latestMemory?.inuse,e=>{if(e&&te.value?.chartRef){let t=Date.now();t>Se&&(te.value.chartRef.addPoint(0,t,e),Se=t)}}),l(()=>a.latestConnectionMsg?.connections?.length,e=>{if(e!==void 0&&ne.value?.chartRef){let t=Date.now();t>Ce&&(ne.value.chartRef.addPoint(0,t,e),Ce=t)}}),(e,t)=>{let l=j,u=xe,f=lt,p=Ot,b=ts;return i(),_(`div`,ns,[m(`div`,rs,[m(`div`,is,[m(`div`,as,[s(h(se),{size:20})]),m(`div`,os,[m(`span`,ss,g(h(n)(`upload`)),1),m(`span`,cs,g(x(h(r).latestTraffic?.up||0))+`/s `,1)])]),m(`div`,ls,[m(`div`,us,[s(h(oe),{size:20})]),m(`div`,ds,[m(`span`,fs,g(h(n)(`download`)),1),m(`span`,ps,g(x(h(r).latestTraffic?.down||0))+`/s `,1)])]),m(`div`,ms,[m(`div`,hs,[s(h(S),{size:20})]),m(`div`,gs,[m(`span`,_s,g(h(n)(`uploadTotal`)),1),m(`span`,vs,g(x(h(a).latestConnectionMsg?.uploadTotal||0)),1)])]),m(`div`,ys,[m(`div`,bs,[s(h(S),{size:20})]),m(`div`,xs,[m(`span`,Ss,g(h(n)(`downloadTotal`)),1),m(`span`,Cs,g(x(h(a).latestConnectionMsg?.downloadTotal||0)),1)])]),m(`div`,ws,[m(`div`,Ts,[s(h(le),{size:20})]),m(`div`,Es,[m(`span`,Ds,g(h(n)(`activeConnections`)),1),m(`span`,Os,g(h(a).latestConnectionMsg?.connections?.length||0),1)])]),m(`div`,ks,[m(`div`,As,[s(h(T),{size:20})]),m(`div`,js,[m(`span`,Ms,g(h(n)(`memoryUsage`)),1),m(`span`,Ns,g(x(h(r).latestMemory?.inuse||0)),1)])])]),h(o).currentEndpoint?.url?(i(),_(`div`,Ps,[s(h(ie),{size:18,class:`text-primary`}),m(`span`,Fs,g(h(n)(`connectedTo`))+`:`,1),m(`span`,Is,g(h(o).currentEndpoint?.url),1)])):d(``,!0),m(`div`,Ls,[m(`div`,Rs,[s(l,{ref_key:`trafficChartRef`,ref:w,title:h(n)(`traffic`),"series-config":h(D),"initial-data":h(ce),"is-loading":!h(r).latestTraffic},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),m(`div`,zs,[s(u,{options:h(A),"is-loading":!h(a).latestConnectionMsg},null,8,[`options`,`is-loading`])]),m(`div`,Bs,[s(l,{ref_key:`memoryChartRef`,ref:te,title:h(n)(`memory`),"series-config":h(ue),"initial-data":h(pe),"is-loading":!h(r).latestMemory},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),m(`div`,Vs,[s(l,{ref_key:`connectionsChartRef`,ref:ne,title:h(n)(`connectionsChart`),"series-config":h(me),"initial-data":h(ge),"is-loading":!h(a).latestConnectionMsg,"value-mode":`number`},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),m(`div`,Hs,[s(u,{options:h(ve),"is-loading":!h(a).latestConnectionMsg},null,8,[`options`,`is-loading`])]),m(`div`,Us,[s(u,{options:h(ye),"is-loading":!h(a).latestConnectionMsg},null,8,[`options`,`is-loading`])])]),m(`div`,Ws,[s(f),s(p)]),m(`div`,Gs,[m(`div`,{class:`flex cursor-pointer items-center justify-between`,onClick:t[0]||=e=>h(c).showNetworkTopology=!h(c).showNetworkTopology},[m(`div`,Ks,[s(h(ae),{size:20}),m(`h3`,null,g(h(n)(`networkTopology`)),1)]),m(`button`,qs,[s(h(re),{size:20,class:v([`transition-transform duration-300`,{"rotate-180":h(c).showNetworkTopology}])},null,8,[`class`])])]),h(c).showNetworkTopology?(i(),y(b,{key:0,class:`mt-4`})):d(``,!0)])])}}});export{Js as default}; |