diff --git a/web-ui/src/views/Packets.vue b/web-ui/src/views/Packets.vue
index 6fcde39..87ccb5b 100644
--- a/web-ui/src/views/Packets.vue
+++ b/web-ui/src/views/Packets.vue
@@ -1,11 +1,12 @@
@@ -132,7 +182,7 @@ onUnmounted(() => ws && ws.close())
{{ filtered.length }} shown
{{ error }}
-
+
| time | type | from | ch | text | raw |
@@ -141,6 +191,7 @@ onUnmounted(() => ws && ws.close())
{for(const l of o)if(l.type==="childList")for(const r of l.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&s(r)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function s(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();/**
+* @vue/shared v3.5.35
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function co(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ke={},ln=[],xt=()=>{},Il=()=>!1,us=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),fs=e=>e.startsWith("onUpdate:"),Ve=Object.assign,uo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},hi=Object.prototype.hasOwnProperty,ye=(e,t)=>hi.call(e,t),Z=Array.isArray,rn=e=>Vn(e)==="[object Map]",mn=e=>Vn(e)==="[object Set]",Io=e=>Vn(e)==="[object Date]",le=e=>typeof e=="function",Pe=e=>typeof e=="string",ft=e=>typeof e=="symbol",be=e=>e!==null&&typeof e=="object",Nl=e=>(be(e)||le(e))&&le(e.then)&&le(e.catch),$l=Object.prototype.toString,Vn=e=>$l.call(e),pi=e=>Vn(e).slice(8,-1),Ml=e=>Vn(e)==="[object Object]",ds=e=>Pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,kn=co(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),hs=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},mi=/-\w/g,Ye=hs(e=>e.replace(mi,t=>t.slice(1).toUpperCase())),vi=/\B([A-Z])/g,Gt=hs(e=>e.replace(vi,"-$1").toLowerCase()),ps=hs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ps=hs(e=>e?`on${ps(e)}`:""),wt=(e,t)=>!Object.is(e,t),Qn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},ms=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let No;const vs=()=>No||(No=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function fo(e){if(Z(e)){const t={};for(let n=0;n{if(n){const s=n.split(_i);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Je(e){let t="";if(Pe(e))t=e;else if(Z(e))for(let n=0;nHt(n,t))}const jl=e=>!!(e&&e.__v_isRef===!0),T=e=>Pe(e)?e:e==null?"":Z(e)||be(e)&&(e.toString===$l||!le(e.toString))?jl(e)?T(e.value):JSON.stringify(e,Vl,2):String(e),Vl=(e,t)=>jl(t)?Vl(e,t.value):rn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],l)=>(n[Is(s,l)+" =>"]=o,n),{})}:mn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Is(n))}:ft(t)?Is(t):be(t)&&!Z(t)&&!Ml(t)?String(t):t,Is=(e,t="")=>{var n;return ft(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
+* @vue/reactivity v3.5.35
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let Le;class Ul{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Le&&(Le.active?(this.parent=Le,this.index=(Le.scopes||(Le.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0){if(Le===this)Le=this.prevScope;else{let t=Le;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(Sn){let t=Sn;for(Sn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Cn;){let t=Cn;for(Cn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Wl(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ql(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),vo(s),Si(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function qs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(zl(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function zl(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Nn)||(e.globalVersion=Nn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!qs(e))))return;e.flags|=2;const t=e.dep,n=Ce,s=ht;Ce=e,ht=!0;try{Wl(e);const o=e.fn(e._value);(t.version===0||wt(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{Ce=n,ht=s,ql(e),e.flags&=-3}}function vo(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let l=n.computed.deps;l;l=l.nextDep)vo(l,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Si(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ht=!0;const Jl=[];function It(){Jl.push(ht),ht=!1}function Nt(){const e=Jl.pop();ht=e===void 0?!0:e}function $o(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Ce;Ce=void 0;try{t()}finally{Ce=n}}}let Nn=0;class Ei{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class go{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Ce||!ht||Ce===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Ce)n=this.activeLink=new Ei(Ce,this),Ce.deps?(n.prevDep=Ce.depsTail,Ce.depsTail.nextDep=n,Ce.depsTail=n):Ce.deps=Ce.depsTail=n,Yl(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=Ce.depsTail,n.nextDep=void 0,Ce.depsTail.nextDep=n,Ce.depsTail=n,Ce.deps===n&&(Ce.deps=s)}return n}trigger(t){this.version++,Nn++,this.notify(t)}notify(t){po();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{mo()}}}function Yl(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Yl(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const ts=new WeakMap,Qt=Symbol(""),zs=Symbol(""),$n=Symbol("");function Fe(e,t,n){if(ht&&Ce){let s=ts.get(e);s||ts.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new go),o.map=s,o.key=n),o.track()}}function Rt(e,t,n,s,o,l){const r=ts.get(e);if(!r){Nn++;return}const i=a=>{a&&a.trigger()};if(po(),t==="clear")r.forEach(i);else{const a=Z(e),f=a&&ds(n);if(a&&n==="length"){const u=Number(s);r.forEach((h,g)=>{(g==="length"||g===$n||!ft(g)&&g>=u)&&i(h)})}else switch((n!==void 0||r.has(void 0))&&i(r.get(n)),f&&i(r.get($n)),t){case"add":a?f&&i(r.get("length")):(i(r.get(Qt)),rn(e)&&i(r.get(zs)));break;case"delete":a||(i(r.get(Qt)),rn(e)&&i(r.get(zs)));break;case"set":rn(e)&&i(r.get(Qt));break}}mo()}function Ai(e,t){const n=ts.get(e);return n&&n.get(t)}function en(e){const t=me(e);return t===e?t:(Fe(t,"iterate",$n),st(e)?t:t.map(pt))}function gs(e){return Fe(e=me(e),"iterate",$n),e}function yt(e,t){return $t(e)?un(Pt(e)?pt(t):t):pt(t)}const Ri={__proto__:null,[Symbol.iterator](){return $s(this,Symbol.iterator,e=>yt(this,e))},concat(...e){return en(this).concat(...e.map(t=>Z(t)?en(t):t))},entries(){return $s(this,"entries",e=>(e[1]=yt(this,e[1]),e))},every(e,t){return Ct(this,"every",e,t,void 0,arguments)},filter(e,t){return Ct(this,"filter",e,t,n=>n.map(s=>yt(this,s)),arguments)},find(e,t){return Ct(this,"find",e,t,n=>yt(this,n),arguments)},findIndex(e,t){return Ct(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ct(this,"findLast",e,t,n=>yt(this,n),arguments)},findLastIndex(e,t){return Ct(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ct(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ms(this,"includes",e)},indexOf(...e){return Ms(this,"indexOf",e)},join(e){return en(this).join(e)},lastIndexOf(...e){return Ms(this,"lastIndexOf",e)},map(e,t){return Ct(this,"map",e,t,void 0,arguments)},pop(){return _n(this,"pop")},push(...e){return _n(this,"push",e)},reduce(e,...t){return Mo(this,"reduce",e,t)},reduceRight(e,...t){return Mo(this,"reduceRight",e,t)},shift(){return _n(this,"shift")},some(e,t){return Ct(this,"some",e,t,void 0,arguments)},splice(...e){return _n(this,"splice",e)},toReversed(){return en(this).toReversed()},toSorted(e){return en(this).toSorted(e)},toSpliced(...e){return en(this).toSpliced(...e)},unshift(...e){return _n(this,"unshift",e)},values(){return $s(this,"values",e=>yt(this,e))}};function $s(e,t,n){const s=gs(e),o=s[t]();return s!==e&&!st(e)&&(o._next=o.next,o.next=()=>{const l=o._next();return l.done||(l.value=n(l.value)),l}),o}const Oi=Array.prototype;function Ct(e,t,n,s,o,l){const r=gs(e),i=r!==e&&!st(e),a=r[t];if(a!==Oi[t]){const h=a.apply(e,l);return i?pt(h):h}let f=n;r!==e&&(i?f=function(h,g){return n.call(this,yt(e,h),g,e)}:n.length>2&&(f=function(h,g){return n.call(this,h,g,e)}));const u=a.call(r,f,s);return i&&o?o(u):u}function Mo(e,t,n,s){const o=gs(e),l=o!==e&&!st(e);let r=n,i=!1;o!==e&&(l?(i=s.length===0,r=function(f,u,h){return i&&(i=!1,f=yt(e,f)),n.call(this,f,yt(e,u),h,e)}):n.length>3&&(r=function(f,u,h){return n.call(this,f,u,h,e)}));const a=o[t](r,...s);return i?yt(e,a):a}function Ms(e,t,n){const s=me(e);Fe(s,"iterate",$n);const o=s[t](...n);return(o===-1||o===!1)&&_s(n[0])?(n[0]=me(n[0]),s[t](...n)):o}function _n(e,t,n=[]){It(),po();const s=me(e)[t].apply(e,n);return mo(),Nt(),s}const Ti=co("__proto__,__v_isRef,__isVue"),Ql=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ft));function Pi(e){ft(e)||(e=String(e));const t=me(this);return Fe(t,"has",e),t.hasOwnProperty(e)}class Xl{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,l=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return l;if(n==="__v_raw")return s===(o?l?Fi:nr:l?tr:er).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const r=Z(t);if(!o){let a;if(r&&(a=Ri[n]))return a;if(n==="hasOwnProperty")return Pi}const i=Reflect.get(t,n,Ie(t)?t:s);if((ft(n)?Ql.has(n):Ti(n))||(o||Fe(t,"get",n),l))return i;if(Ie(i)){const a=r&&ds(n)?i:i.value;return o&&be(a)?Ys(a):a}return be(i)?o?Ys(i):Un(i):i}}class Zl extends Xl{constructor(t=!1){super(!1,t)}set(t,n,s,o){let l=t[n];const r=Z(t)&&ds(n);if(!this._isShallow){const f=$t(l);if(!st(s)&&!$t(s)&&(l=me(l),s=me(s)),!r&&Ie(l)&&!Ie(s))return f||(l.value=s),!0}const i=r?Number(n)e,qn=e=>Reflect.getPrototypeOf(e);function Di(e,t,n){return function(...s){const o=this.__v_raw,l=me(o),r=rn(l),i=e==="entries"||e===Symbol.iterator&&r,a=e==="keys"&&r,f=o[e](...s),u=n?Js:t?un:pt;return!t&&Fe(l,"iterate",a?zs:Qt),Ve(Object.create(f),{next(){const{value:h,done:g}=f.next();return g?{value:h,done:g}:{value:i?[u(h[0]),u(h[1])]:u(h),done:g}}})}}function zn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Li(e,t){const n={get(o){const l=this.__v_raw,r=me(l),i=me(o);e||(wt(o,i)&&Fe(r,"get",o),Fe(r,"get",i));const{has:a}=qn(r),f=t?Js:e?un:pt;if(a.call(r,o))return f(l.get(o));if(a.call(r,i))return f(l.get(i));l!==r&&l.get(o)},get size(){const o=this.__v_raw;return!e&&Fe(me(o),"iterate",Qt),o.size},has(o){const l=this.__v_raw,r=me(l),i=me(o);return e||(wt(o,i)&&Fe(r,"has",o),Fe(r,"has",i)),o===i?l.has(o):l.has(o)||l.has(i)},forEach(o,l){const r=this,i=r.__v_raw,a=me(i),f=t?Js:e?un:pt;return!e&&Fe(a,"iterate",Qt),i.forEach((u,h)=>o.call(l,f(u),f(h),r))}};return Ve(n,e?{add:zn("add"),set:zn("set"),delete:zn("delete"),clear:zn("clear")}:{add(o){const l=me(this),r=qn(l),i=me(o),a=!t&&!st(o)&&!$t(o)?i:o;return r.has.call(l,a)||wt(o,a)&&r.has.call(l,o)||wt(i,a)&&r.has.call(l,i)||(l.add(a),Rt(l,"add",a,a)),this},set(o,l){!t&&!st(l)&&!$t(l)&&(l=me(l));const r=me(this),{has:i,get:a}=qn(r);let f=i.call(r,o);f||(o=me(o),f=i.call(r,o));const u=a.call(r,o);return r.set(o,l),f?wt(l,u)&&Rt(r,"set",o,l):Rt(r,"add",o,l),this},delete(o){const l=me(this),{has:r,get:i}=qn(l);let a=r.call(l,o);a||(o=me(o),a=r.call(l,o)),i&&i.call(l,o);const f=l.delete(o);return a&&Rt(l,"delete",o,void 0),f},clear(){const o=me(this),l=o.size!==0,r=o.clear();return l&&Rt(o,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=Di(o,e,t)}),n}function _o(e,t){const n=Li(e,t);return(s,o,l)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ye(n,o)&&o in s?n:s,o,l)}const ji={get:_o(!1,!1)},Vi={get:_o(!1,!0)},Ui={get:_o(!0,!1)};const er=new WeakMap,tr=new WeakMap,nr=new WeakMap,Fi=new WeakMap;function Hi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Un(e){return $t(e)?e:yo(e,!1,Ni,ji,er)}function sr(e){return yo(e,!1,Mi,Vi,tr)}function Ys(e){return yo(e,!0,$i,Ui,nr)}function yo(e,t,n,s,o){if(!be(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const l=o.get(e);if(l)return l;const r=Hi(pi(e));if(r===0)return e;const i=new Proxy(e,r===2?s:n);return o.set(e,i),i}function Pt(e){return $t(e)?Pt(e.__v_raw):!!(e&&e.__v_isReactive)}function $t(e){return!!(e&&e.__v_isReadonly)}function st(e){return!!(e&&e.__v_isShallow)}function _s(e){return e?!!e.__v_raw:!1}function me(e){const t=e&&e.__v_raw;return t?me(t):e}function bo(e){return!ye(e,"__v_skip")&&Object.isExtensible(e)&&Dl(e,"__v_skip",!0),e}const pt=e=>be(e)?Un(e):e,un=e=>be(e)?Ys(e):e;function Ie(e){return e?e.__v_isRef===!0:!1}function ee(e){return or(e,!1)}function Bi(e){return or(e,!0)}function or(e,t){return Ie(e)?e:new Ki(e,t)}class Ki{constructor(t,n){this.dep=new go,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:me(t),this._value=n?t:pt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||st(t)||$t(t);t=s?t:me(t),wt(t,n)&&(this._rawValue=t,this._value=s?t:pt(t),this.dep.trigger())}}function kt(e){return Ie(e)?e.value:e}const Gi={get:(e,t,n)=>t==="__v_raw"?e:kt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return Ie(o)&&!Ie(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function lr(e){return Pt(e)?e:new Proxy(e,Gi)}function Wi(e){const t=Z(e)?new Array(e.length):{};for(const n in e)t[n]=zi(e,n);return t}class qi{constructor(t,n,s){this._object=t,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._key=ft(n)?n:String(n),this._raw=me(t);let o=!0,l=t;if(!Z(t)||ft(this._key)||!ds(this._key))do o=!_s(l)||st(l);while(o&&(l=l.__v_raw));this._shallow=o}get value(){let t=this._object[this._key];return this._shallow&&(t=kt(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&Ie(this._raw[this._key])){const n=this._object[this._key];if(Ie(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Ai(this._raw,this._key)}}function zi(e,t,n){return new qi(e,t,n)}class Ji{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new go(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Nn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Ce!==this)return Gl(this,!0),!0}get value(){const t=this.dep.track();return zl(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Yi(e,t,n=!1){let s,o;return le(e)?s=e:(s=e.get,o=e.set),new Ji(s,o,n)}const Jn={},ns=new WeakMap;let Jt;function Qi(e,t=!1,n=Jt){if(n){let s=ns.get(n);s||ns.set(n,s=[]),s.push(e)}}function Xi(e,t,n=ke){const{immediate:s,deep:o,once:l,scheduler:r,augmentJob:i,call:a}=n,f=H=>o?H:st(H)||o===!1||o===0?Ot(H,1):Ot(H);let u,h,g,b,$=!1,I=!1;if(Ie(e)?(h=()=>e.value,$=st(e)):Pt(e)?(h=()=>f(e),$=!0):Z(e)?(I=!0,$=e.some(H=>Pt(H)||st(H)),h=()=>e.map(H=>{if(Ie(H))return H.value;if(Pt(H))return f(H);if(le(H))return a?a(H,2):H()})):le(e)?t?h=a?()=>a(e,2):e:h=()=>{if(g){It();try{g()}finally{Nt()}}const H=Jt;Jt=u;try{return a?a(e,3,[b]):e(b)}finally{Jt=H}}:h=xt,t&&o){const H=h,oe=o===!0?1/0:o;h=()=>Ot(H(),oe)}const F=Hl(),J=()=>{u.stop(),F&&F.active&&uo(F.effects,u)};if(l&&t){const H=t;t=(...oe)=>{H(...oe),J()}}let M=I?new Array(e.length).fill(Jn):Jn;const K=H=>{if(!(!(u.flags&1)||!u.dirty&&!H))if(t){const oe=u.run();if(o||$||(I?oe.some((Ee,ue)=>wt(Ee,M[ue])):wt(oe,M))){g&&g();const Ee=Jt;Jt=u;try{const ue=[oe,M===Jn?void 0:I&&M[0]===Jn?[]:M,b];M=oe,a?a(t,3,ue):t(...ue)}finally{Jt=Ee}}}else u.run()};return i&&i(K),u=new Bl(h),u.scheduler=r?()=>r(K,!1):K,b=H=>Qi(H,!1,u),g=u.onStop=()=>{const H=ns.get(u);if(H){if(a)a(H,4);else for(const oe of H)oe();ns.delete(u)}},t?s?K(!0):M=u.run():r?r(K.bind(null,!0),!0):u.run(),J.pause=u.pause.bind(u),J.resume=u.resume.bind(u),J.stop=J,J}function Ot(e,t=1/0,n){if(t<=0||!be(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ie(e))Ot(e.value,t,n);else if(Z(e))for(let s=0;s{Ot(s,t,n)});else if(Ml(e)){for(const s in e)Ot(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ot(e[s],t,n)}return e}/**
+* @vue/runtime-core v3.5.35
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function Fn(e,t,n,s){try{return s?e(...s):e()}catch(o){ys(o,t,n)}}function mt(e,t,n,s){if(le(e)){const o=Fn(e,t,n,s);return o&&Nl(o)&&o.catch(l=>{ys(l,t,n)}),o}if(Z(e)){const o=[];for(let l=0;l>>1,o=ze[s],l=Mn(o);l=Mn(n)?ze.push(e):ze.splice(ea(t),0,e),e.flags|=1,ir()}}function ir(){ss||(ss=rr.then(cr))}function ta(e){Z(e)?an.push(...e):jt&&e.id===-1?jt.splice(nn+1,0,e):e.flags&1||(an.push(e),e.flags|=1),ir()}function Do(e,t,n=_t+1){for(;nMn(n)-Mn(s));if(an.length=0,jt){jt.push(...t);return}for(jt=t,nn=0;nne.id==null?e.flags&2?-1:1/0:e.id;function cr(e){try{for(_t=0;_t{s._d&&is(-1);const l=os(t);let r;try{r=e(...o)}finally{os(l),s._d&&is(1)}return r};return s._n=!0,s._c=!0,s._d=!0,s}function je(e,t){if(tt===null)return e;const n=Ss(tt),s=e.dirs||(e.dirs=[]);for(let o=0;o1)return n&&le(t)?t.call(s&&s.proxy):t}}function na(){return!!(Dr()||Xt)}const sa=Symbol.for("v-scx"),oa=()=>ct(sa);function En(e,t,n){return fr(e,t,n)}function fr(e,t,n=ke){const{immediate:s,deep:o,flush:l,once:r}=n,i=Ve({},n),a=t&&s||!t&&l!=="post";let f;if(Ln){if(l==="sync"){const b=oa();f=b.__watcherHandles||(b.__watcherHandles=[])}else if(!a){const b=()=>{};return b.stop=xt,b.resume=xt,b.pause=xt,b}}const u=He;i.call=(b,$,I)=>mt(b,u,$,I);let h=!1;l==="post"?i.scheduler=b=>{Qe(b,u&&u.suspense)}:l!=="sync"&&(h=!0,i.scheduler=(b,$)=>{$?b():wo(b)}),i.augmentJob=b=>{t&&(b.flags|=4),h&&(b.flags|=2,u&&(b.id=u.uid,b.i=u))};const g=Xi(e,t,i);return Ln&&(f?f.push(g):a&&g()),g}function la(e,t,n){const s=this.proxy,o=Pe(e)?e.includes(".")?dr(s,e):()=>s[e]:e.bind(s,s);let l;le(t)?l=t:(l=t.handler,n=t);const r=Hn(this),i=fr(o,l.bind(s),n);return r(),i}function dr(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;oe.__isTeleport,Ds=Symbol("_leaveCb");function xo(e,t){e.shapeFlag&6&&e.component?(e.transition=t,xo(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function hr(e,t){return le(e)?Ve({name:e.name},t,{setup:e}):e}function pr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Lo(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const ls=new WeakMap;function An(e,t,n,s,o=!1){if(Z(e)){e.forEach((I,F)=>An(I,t&&(Z(t)?t[F]:t),n,s,o));return}if(Rn(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&An(e,t,n,s.component.subTree);return}const l=s.shapeFlag&4?Ss(s.component):s.el,r=o?null:l,{i,r:a}=e,f=t&&t.r,u=i.refs===ke?i.refs={}:i.refs,h=i.setupState,g=me(h),b=h===ke?Il:I=>Lo(u,I)?!1:ye(g,I),$=(I,F)=>!(F&&Lo(u,F));if(f!=null&&f!==a){if(jo(t),Pe(f))u[f]=null,b(f)&&(h[f]=null);else if(Ie(f)){const I=t;$(f,I.k)&&(f.value=null),I.k&&(u[I.k]=null)}}if(le(a))Fn(a,i,12,[r,u]);else{const I=Pe(a),F=Ie(a);if(I||F){const J=()=>{if(e.f){const M=I?b(a)?h[a]:u[a]:$()||!e.k?a.value:u[e.k];if(o)Z(M)&&uo(M,l);else if(Z(M))M.includes(l)||M.push(l);else if(I)u[a]=[l],b(a)&&(h[a]=u[a]);else{const K=[l];$(a,e.k)&&(a.value=K),e.k&&(u[e.k]=K)}}else I?(u[a]=r,b(a)&&(h[a]=r)):F&&($(a,e.k)&&(a.value=r),e.k&&(u[e.k]=r))};if(r){const M=()=>{J(),ls.delete(e)};M.id=-1,ls.set(e,M),Qe(M,n)}else jo(e),J()}}}function jo(e){const t=ls.get(e);t&&(t.flags|=8,ls.delete(e))}vs().requestIdleCallback;vs().cancelIdleCallback;const Rn=e=>!!e.type.__asyncLoader,mr=e=>e.type.__isKeepAlive;function aa(e,t){vr(e,"a",t)}function ca(e,t){vr(e,"da",t)}function vr(e,t,n=He){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(bs(t,s,n),n){let o=n.parent;for(;o&&o.parent;)mr(o.parent.vnode)&&ua(s,t,n,o),o=o.parent}}function ua(e,t,n,s){const o=bs(t,e,s,!0);xs(()=>{uo(s[t],o)},n)}function bs(e,t,n=He,s=!1){if(n){const o=n[e]||(n[e]=[]),l=t.__weh||(t.__weh=(...r)=>{It();const i=Hn(n),a=mt(t,n,e,r);return i(),Nt(),a});return s?o.unshift(l):o.push(l),l}}const Mt=e=>(t,n=He)=>{(!Ln||e==="sp")&&bs(e,(...s)=>t(...s),n)},fa=Mt("bm"),ws=Mt("m"),da=Mt("bu"),ha=Mt("u"),pa=Mt("bum"),xs=Mt("um"),ma=Mt("sp"),va=Mt("rtg"),ga=Mt("rtc");function _a(e,t=He){bs("ec",e,t)}const ya="components";function Vo(e,t){return wa(ya,e,!0,t)||e}const ba=Symbol.for("v-ndc");function wa(e,t,n=!0,s=!1){const o=tt||He;if(o){const l=o.type;{const i=rc(l,!1);if(i&&(i===t||i===Ye(t)||i===ps(Ye(t))))return l}const r=Uo(o[e]||l[e],t)||Uo(o.appContext[e],t);return!r&&s?l:r}}function Uo(e,t){return e&&(e[t]||e[Ye(t)]||e[ps(Ye(t))])}function pe(e,t,n,s){let o;const l=n,r=Z(e);if(r||Pe(e)){const i=r&&Pt(e);let a=!1,f=!1;i&&(a=!st(e),f=$t(e),e=gs(e)),o=new Array(e.length);for(let u=0,h=e.length;ut(i,a,void 0,l));else{const i=Object.keys(e);o=new Array(i.length);for(let a=0,f=i.length;ae?Lr(e)?Ss(e):Qs(e.parent):null,On=Ve(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Qs(e.parent),$root:e=>Qs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>_r(e),$forceUpdate:e=>e.f||(e.f=()=>{wo(e.update)}),$nextTick:e=>e.n||(e.n=Ft.bind(e.proxy)),$watch:e=>la.bind(e)}),Ls=(e,t)=>e!==ke&&!e.__isScriptSetup&&ye(e,t),xa={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:l,accessCache:r,type:i,appContext:a}=e;if(t[0]!=="$"){const g=r[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return l[t]}else{if(Ls(s,t))return r[t]=1,s[t];if(o!==ke&&ye(o,t))return r[t]=2,o[t];if(ye(l,t))return r[t]=3,l[t];if(n!==ke&&ye(n,t))return r[t]=4,n[t];Xs&&(r[t]=0)}}const f=On[t];let u,h;if(f)return t==="$attrs"&&Fe(e.attrs,"get",""),f(e);if((u=i.__cssModules)&&(u=u[t]))return u;if(n!==ke&&ye(n,t))return r[t]=4,n[t];if(h=a.config.globalProperties,ye(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:l}=e;return Ls(o,t)?(o[t]=n,!0):s!==ke&&ye(s,t)?(s[t]=n,!0):ye(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(l[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:l,type:r}},i){let a;return!!(n[i]||e!==ke&&i[0]!=="$"&&ye(e,i)||Ls(t,i)||ye(l,i)||ye(s,i)||ye(On,i)||ye(o.config.globalProperties,i)||(a=r.__cssModules)&&a[i])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ye(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Fo(e){return Z(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Xs=!0;function ka(e){const t=_r(e),n=e.proxy,s=e.ctx;Xs=!1,t.beforeCreate&&Ho(t.beforeCreate,e,"bc");const{data:o,computed:l,methods:r,watch:i,provide:a,inject:f,created:u,beforeMount:h,mounted:g,beforeUpdate:b,updated:$,activated:I,deactivated:F,beforeDestroy:J,beforeUnmount:M,destroyed:K,unmounted:H,render:oe,renderTracked:Ee,renderTriggered:ue,errorCaptured:ne,serverPrefetch:re,expose:S,inheritAttrs:O,components:D,directives:W,filters:we}=t;if(f&&Ca(f,s,null),r)for(const te in r){const fe=r[te];le(fe)&&(s[te]=fe.bind(n))}if(o){const te=o.call(n,n);be(te)&&(e.data=Un(te))}if(Xs=!0,l)for(const te in l){const fe=l[te],dt=le(fe)?fe.bind(n,n):le(fe.get)?fe.get.bind(n,n):xt,Xe=!le(fe)&&le(fe.set)?fe.set.bind(n):xt,Ze=ge({get:dt,set:Xe});Object.defineProperty(s,te,{enumerable:!0,configurable:!0,get:()=>Ze.value,set:Ue=>Ze.value=Ue})}if(i)for(const te in i)gr(i[te],s,n,te);if(a){const te=le(a)?a.call(n):a;Reflect.ownKeys(te).forEach(fe=>{Zn(fe,te[fe])})}u&&Ho(u,e,"c");function xe(te,fe){Z(fe)?fe.forEach(dt=>te(dt.bind(n))):fe&&te(fe.bind(n))}if(xe(fa,h),xe(ws,g),xe(da,b),xe(ha,$),xe(aa,I),xe(ca,F),xe(_a,ne),xe(ga,Ee),xe(va,ue),xe(pa,M),xe(xs,H),xe(ma,re),Z(S))if(S.length){const te=e.exposed||(e.exposed={});S.forEach(fe=>{Object.defineProperty(te,fe,{get:()=>n[fe],set:dt=>n[fe]=dt,enumerable:!0})})}else e.exposed||(e.exposed={});oe&&e.render===xt&&(e.render=oe),O!=null&&(e.inheritAttrs=O),D&&(e.components=D),W&&(e.directives=W),re&&pr(e)}function Ca(e,t,n=xt){Z(e)&&(e=Zs(e));for(const s in e){const o=e[s];let l;be(o)?"default"in o?l=ct(o.from||s,o.default,!0):l=ct(o.from||s):l=ct(o),Ie(l)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>l.value,set:r=>l.value=r}):t[s]=l}}function Ho(e,t,n){mt(Z(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function gr(e,t,n,s){let o=s.includes(".")?dr(n,s):()=>n[s];if(Pe(e)){const l=t[e];le(l)&&En(o,l)}else if(le(e))En(o,e.bind(n));else if(be(e))if(Z(e))e.forEach(l=>gr(l,t,n,s));else{const l=le(e.handler)?e.handler.bind(n):t[e.handler];le(l)&&En(o,l,e)}}function _r(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:l,config:{optionMergeStrategies:r}}=e.appContext,i=l.get(t);let a;return i?a=i:!o.length&&!n&&!s?a=t:(a={},o.length&&o.forEach(f=>rs(a,f,r,!0)),rs(a,t,r)),be(t)&&l.set(t,a),a}function rs(e,t,n,s=!1){const{mixins:o,extends:l}=t;l&&rs(e,l,n,!0),o&&o.forEach(r=>rs(e,r,n,!0));for(const r in t)if(!(s&&r==="expose")){const i=Sa[r]||n&&n[r];e[r]=i?i(e[r],t[r]):t[r]}return e}const Sa={data:Bo,props:Ko,emits:Ko,methods:wn,computed:wn,beforeCreate:We,created:We,beforeMount:We,mounted:We,beforeUpdate:We,updated:We,beforeDestroy:We,beforeUnmount:We,destroyed:We,unmounted:We,activated:We,deactivated:We,errorCaptured:We,serverPrefetch:We,components:wn,directives:wn,watch:Aa,provide:Bo,inject:Ea};function Bo(e,t){return t?e?function(){return Ve(le(e)?e.call(this,this):e,le(t)?t.call(this,this):t)}:t:e}function Ea(e,t){return wn(Zs(e),Zs(t))}function Zs(e){if(Z(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ye(t)}Modifiers`]||e[`${Gt(t)}Modifiers`];function Pa(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ke;let o=n;const l=t.startsWith("update:"),r=l&&Ta(s,t.slice(7));r&&(r.trim&&(o=n.map(u=>Pe(u)?u.trim():u)),r.number&&(o=n.map(ms)));let i,a=s[i=Ps(t)]||s[i=Ps(Ye(t))];!a&&l&&(a=s[i=Ps(Gt(t))]),a&&mt(a,e,6,o);const f=s[i+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,mt(f,e,6,o)}}const Ia=new WeakMap;function br(e,t,n=!1){const s=n?Ia:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const l=e.emits;let r={},i=!1;if(!le(e)){const a=f=>{const u=br(f,t,!0);u&&(i=!0,Ve(r,u))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!l&&!i?(be(e)&&s.set(e,null),null):(Z(l)?l.forEach(a=>r[a]=null):Ve(r,l),be(e)&&s.set(e,r),r)}function ks(e,t){return!e||!us(t)?!1:(t=t.slice(2).replace(/Once$/,""),ye(e,t[0].toLowerCase()+t.slice(1))||ye(e,Gt(t))||ye(e,t))}function Go(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[l],slots:r,attrs:i,emit:a,render:f,renderCache:u,props:h,data:g,setupState:b,ctx:$,inheritAttrs:I}=e,F=os(e);let J,M;try{if(n.shapeFlag&4){const H=o||s,oe=H;J=bt(f.call(oe,H,u,h,b,g,$)),M=i}else{const H=t;J=bt(H.length>1?H(h,{attrs:i,slots:r,emit:a}):H(h,null)),M=t.props?i:Na(i)}}catch(H){Tn.length=0,ys(H,e,1),J=Re(Bt)}let K=J;if(M&&I!==!1){const H=Object.keys(M),{shapeFlag:oe}=K;H.length&&oe&7&&(l&&H.some(fs)&&(M=$a(M,l)),K=fn(K,M,!1,!0))}return n.dirs&&(K=fn(K,null,!1,!0),K.dirs=K.dirs?K.dirs.concat(n.dirs):n.dirs),n.transition&&xo(K,n.transition),J=K,os(F),J}const Na=e=>{let t;for(const n in e)(n==="class"||n==="style"||us(n))&&((t||(t={}))[n]=e[n]);return t},$a=(e,t)=>{const n={};for(const s in e)(!fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ma(e,t,n){const{props:s,children:o,component:l}=e,{props:r,children:i,patchFlag:a}=t,f=l.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?Wo(s,r,f):!!r;if(a&8){const u=t.dynamicProps;for(let h=0;hObject.create(xr),Cr=e=>Object.getPrototypeOf(e)===xr;function La(e,t,n,s=!1){const o={},l=kr();e.propsDefaults=Object.create(null),Sr(e,t,o,l);for(const r in e.propsOptions[0])r in o||(o[r]=void 0);n?e.props=s?o:sr(o):e.type.props?e.props=o:e.props=l,e.attrs=l}function ja(e,t,n,s){const{props:o,attrs:l,vnode:{patchFlag:r}}=e,i=me(o),[a]=e.propsOptions;let f=!1;if((s||r>0)&&!(r&16)){if(r&8){const u=e.vnode.dynamicProps;for(let h=0;h{a=!0;const[g,b]=Er(h,t,!0);Ve(r,g),b&&i.push(...b)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!l&&!a)return be(e)&&s.set(e,ln),ln;if(Z(l))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",Co=e=>Z(e)?e.map(bt):[bt(e)],Ua=(e,t,n)=>{if(t._n)return t;const s=Xn((...o)=>Co(t(...o)),n);return s._c=!1,s},Ar=(e,t,n)=>{const s=e._ctx;for(const o in e){if(ko(o))continue;const l=e[o];if(le(l))t[o]=Ua(o,l,s);else if(l!=null){const r=Co(l);t[o]=()=>r}}},Rr=(e,t)=>{const n=Co(t);e.slots.default=()=>n},Or=(e,t,n)=>{for(const s in t)(n||!ko(s))&&(e[s]=t[s])},Fa=(e,t,n)=>{const s=e.slots=kr();if(e.vnode.shapeFlag&32){const o=t._;o?(Or(s,t,n),n&&Dl(s,"_",o,!0)):Ar(t,s)}else t&&Rr(e,t)},Ha=(e,t,n)=>{const{vnode:s,slots:o}=e;let l=!0,r=ke;if(s.shapeFlag&32){const i=t._;i?n&&i===1?l=!1:Or(o,t,n):(l=!t.$stable,Ar(t,o)),r=t}else t&&(Rr(e,t),r={default:1});if(l)for(const i in o)!ko(i)&&r[i]==null&&delete o[i]},Qe=qa;function Ba(e){return Ka(e)}function Ka(e,t){const n=vs();n.__VUE__=!0;const{insert:s,remove:o,patchProp:l,createElement:r,createText:i,createComment:a,setText:f,setElementText:u,parentNode:h,nextSibling:g,setScopeId:b=xt,insertStaticContent:$}=e,I=(d,p,_,x=null,A=null,w=null,L=void 0,P=null,N=!!p.dynamicChildren)=>{if(d===p)return;d&&!yn(d,p)&&(x=E(d),Ue(d,A,w,!0),d=null),p.patchFlag===-2&&(N=!1,p.dynamicChildren=null);const{type:R,ref:Y,shapeFlag:U}=p;switch(R){case Cs:F(d,p,_,x);break;case Bt:J(d,p,_,x);break;case Vs:d==null&&M(p,_,x,L);break;case X:D(d,p,_,x,A,w,L,P,N);break;default:U&1?oe(d,p,_,x,A,w,L,P,N):U&6?W(d,p,_,x,A,w,L,P,N):(U&64||U&128)&&R.process(d,p,_,x,A,w,L,P,N,z)}Y!=null&&A?An(Y,d&&d.ref,w,p||d,!p):Y==null&&d&&d.ref!=null&&An(d.ref,null,w,d,!0)},F=(d,p,_,x)=>{if(d==null)s(p.el=i(p.children),_,x);else{const A=p.el=d.el;p.children!==d.children&&f(A,p.children)}},J=(d,p,_,x)=>{d==null?s(p.el=a(p.children||""),_,x):p.el=d.el},M=(d,p,_,x)=>{[d.el,d.anchor]=$(d.children,p,_,x,d.el,d.anchor)},K=({el:d,anchor:p},_,x)=>{let A;for(;d&&d!==p;)A=g(d),s(d,_,x),d=A;s(p,_,x)},H=({el:d,anchor:p})=>{let _;for(;d&&d!==p;)_=g(d),o(d),d=_;o(p)},oe=(d,p,_,x,A,w,L,P,N)=>{if(p.type==="svg"?L="svg":p.type==="math"&&(L="mathml"),d==null)Ee(p,_,x,A,w,L,P,N);else{const R=d.el&&d.el._isVueCE?d.el:null;try{R&&R._beginPatch(),re(d,p,A,w,L,P,N)}finally{R&&R._endPatch()}}},Ee=(d,p,_,x,A,w,L,P)=>{let N,R;const{props:Y,shapeFlag:U,transition:q,dirs:Q}=d;if(N=d.el=r(d.type,w,Y&&Y.is,Y),U&8?u(N,d.children):U&16&&ne(d.children,N,null,x,A,js(d,w),L,P),Q&&qt(d,null,x,"created"),ue(N,d,d.scopeId,L,x),Y){for(const se in Y)se!=="value"&&!kn(se)&&l(N,se,null,Y[se],w,x);"value"in Y&&l(N,"value",null,Y.value,w),(R=Y.onVnodeBeforeMount)&>(R,x,d)}Q&&qt(d,null,x,"beforeMount");const ie=Ga(A,q);ie&&q.beforeEnter(N),s(N,p,_),((R=Y&&Y.onVnodeMounted)||ie||Q)&&Qe(()=>{try{R&>(R,x,d),ie&&q.enter(N),Q&&qt(d,null,x,"mounted")}finally{}},A)},ue=(d,p,_,x,A)=>{if(_&&b(d,_),x)for(let w=0;w{for(let R=N;R{const P=p.el=d.el;let{patchFlag:N,dynamicChildren:R,dirs:Y}=p;N|=d.patchFlag&16;const U=d.props||ke,q=p.props||ke;let Q;if(_&&zt(_,!1),(Q=q.onVnodeBeforeUpdate)&>(Q,_,p,d),Y&&qt(p,d,_,"beforeUpdate"),_&&zt(_,!0),(U.innerHTML&&q.innerHTML==null||U.textContent&&q.textContent==null)&&u(P,""),R?S(d.dynamicChildren,R,P,_,x,js(p,A),w):L||fe(d,p,P,null,_,x,js(p,A),w,!1),N>0){if(N&16)O(P,U,q,_,A);else if(N&2&&U.class!==q.class&&l(P,"class",null,q.class,A),N&4&&l(P,"style",U.style,q.style,A),N&8){const ie=p.dynamicProps;for(let se=0;se{Q&>(Q,_,p,d),Y&&qt(p,d,_,"updated")},x)},S=(d,p,_,x,A,w,L)=>{for(let P=0;P{if(p!==_){if(p!==ke)for(const w in p)!kn(w)&&!(w in _)&&l(d,w,p[w],null,A,x);for(const w in _){if(kn(w))continue;const L=_[w],P=p[w];L!==P&&w!=="value"&&l(d,w,P,L,A,x)}"value"in _&&l(d,"value",p.value,_.value,A)}},D=(d,p,_,x,A,w,L,P,N)=>{const R=p.el=d?d.el:i(""),Y=p.anchor=d?d.anchor:i("");let{patchFlag:U,dynamicChildren:q,slotScopeIds:Q}=p;Q&&(P=P?P.concat(Q):Q),d==null?(s(R,_,x),s(Y,_,x),ne(p.children||[],_,Y,A,w,L,P,N)):U>0&&U&64&&q&&d.dynamicChildren&&d.dynamicChildren.length===q.length?(S(d.dynamicChildren,q,_,A,w,L,P),(p.key!=null||A&&p===A.subTree)&&Tr(d,p,!0)):fe(d,p,_,Y,A,w,L,P,N)},W=(d,p,_,x,A,w,L,P,N)=>{p.slotScopeIds=P,d==null?p.shapeFlag&512?A.ctx.activate(p,_,x,L,N):we(p,_,x,A,w,L,N):Ne(d,p,N)},we=(d,p,_,x,A,w,L)=>{const P=d.component=tc(d,x,A);if(mr(d)&&(P.ctx.renderer=z),nc(P,!1,L),P.asyncDep){if(A&&A.registerDep(P,xe,L),!d.el){const N=P.subTree=Re(Bt);J(null,N,p,_),d.placeholder=N.el}}else xe(P,d,p,_,A,w,L)},Ne=(d,p,_)=>{const x=p.component=d.component;if(Ma(d,p,_))if(x.asyncDep&&!x.asyncResolved){te(x,p,_);return}else x.next=p,x.update();else p.el=d.el,x.vnode=p},xe=(d,p,_,x,A,w,L)=>{const P=()=>{if(d.isMounted){let{next:U,bu:q,u:Q,parent:ie,vnode:se}=d;{const rt=Pr(d);if(rt){U&&(U.el=se.el,te(d,U,L)),rt.asyncDep.then(()=>{Qe(()=>{d.isUnmounted||R()},A)});return}}let he=U,Ae;zt(d,!1),U?(U.el=se.el,te(d,U,L)):U=se,q&&Qn(q),(Ae=U.props&&U.props.onVnodeBeforeUpdate)&>(Ae,ie,U,se),zt(d,!0);const Oe=Go(d),lt=d.subTree;d.subTree=Oe,I(lt,Oe,h(lt.el),E(lt),d,A,w),U.el=Oe.el,he===null&&Da(d,Oe.el),Q&&Qe(Q,A),(Ae=U.props&&U.props.onVnodeUpdated)&&Qe(()=>gt(Ae,ie,U,se),A)}else{let U;const{el:q,props:Q}=p,{bm:ie,m:se,parent:he,root:Ae,type:Oe}=d,lt=Rn(p);zt(d,!1),ie&&Qn(ie),!lt&&(U=Q&&Q.onVnodeBeforeMount)&>(U,he,p),zt(d,!0);{Ae.ce&&Ae.ce._hasShadowRoot()&&Ae.ce._injectChildStyle(Oe,d.parent?d.parent.type:void 0);const rt=d.subTree=Go(d);I(null,rt,_,x,d,A,w),p.el=rt.el}if(se&&Qe(se,A),!lt&&(U=Q&&Q.onVnodeMounted)){const rt=p;Qe(()=>gt(U,he,rt),A)}(p.shapeFlag&256||he&&Rn(he.vnode)&&he.vnode.shapeFlag&256)&&d.a&&Qe(d.a,A),d.isMounted=!0,p=_=x=null}};d.scope.on();const N=d.effect=new Bl(P);d.scope.off();const R=d.update=N.run.bind(N),Y=d.job=N.runIfDirty.bind(N);Y.i=d,Y.id=d.uid,N.scheduler=()=>wo(Y),zt(d,!0),R()},te=(d,p,_)=>{p.component=d;const x=d.vnode.props;d.vnode=p,d.next=null,ja(d,p.props,x,_),Ha(d,p.children,_),It(),Do(d),Nt()},fe=(d,p,_,x,A,w,L,P,N=!1)=>{const R=d&&d.children,Y=d?d.shapeFlag:0,U=p.children,{patchFlag:q,shapeFlag:Q}=p;if(q>0){if(q&128){Xe(R,U,_,x,A,w,L,P,N);return}else if(q&256){dt(R,U,_,x,A,w,L,P,N);return}}Q&8?(Y&16&&$e(R,A,w),U!==R&&u(_,U)):Y&16?Q&16?Xe(R,U,_,x,A,w,L,P,N):$e(R,A,w,!0):(Y&8&&u(_,""),Q&16&&ne(U,_,x,A,w,L,P,N))},dt=(d,p,_,x,A,w,L,P,N)=>{d=d||ln,p=p||ln;const R=d.length,Y=p.length,U=Math.min(R,Y);let q;for(q=0;qY?$e(d,A,w,!0,!1,U):ne(p,_,x,A,w,L,P,N,U)},Xe=(d,p,_,x,A,w,L,P,N)=>{let R=0;const Y=p.length;let U=d.length-1,q=Y-1;for(;R<=U&&R<=q;){const Q=d[R],ie=p[R]=N?At(p[R]):bt(p[R]);if(yn(Q,ie))I(Q,ie,_,null,A,w,L,P,N);else break;R++}for(;R<=U&&R<=q;){const Q=d[U],ie=p[q]=N?At(p[q]):bt(p[q]);if(yn(Q,ie))I(Q,ie,_,null,A,w,L,P,N);else break;U--,q--}if(R>U){if(R<=q){const Q=q+1,ie=Qq)for(;R<=U;)Ue(d[R],A,w,!0),R++;else{const Q=R,ie=R,se=new Map;for(R=ie;R<=q;R++){const Ge=p[R]=N?At(p[R]):bt(p[R]);Ge.key!=null&&se.set(Ge.key,R)}let he,Ae=0;const Oe=q-ie+1;let lt=!1,rt=0;const Wt=new Array(Oe);for(R=0;R=Oe){Ue(Ge,A,w,!0);continue}let it;if(Ge.key!=null)it=se.get(Ge.key);else for(he=ie;he<=q;he++)if(Wt[he-ie]===0&&yn(Ge,p[he])){it=he;break}it===void 0?Ue(Ge,A,w,!0):(Wt[it-ie]=R+1,it>=rt?rt=it:lt=!0,I(Ge,p[it],_,null,A,w,L,P,N),Ae++)}const Kn=lt?Wa(Wt):ln;for(he=Kn.length-1,R=Oe-1;R>=0;R--){const Ge=ie+R,it=p[Ge],Gn=p[Ge+1],Wn=Ge+1{const{el:w,type:L,transition:P,children:N,shapeFlag:R}=d;if(R&6){Ze(d.component.subTree,p,_,x);return}if(R&128){d.suspense.move(p,_,x);return}if(R&64){L.move(d,p,_,z);return}if(L===X){s(w,p,_);for(let U=0;UP.enter(w),A));else{const{leave:U,delayLeave:q,afterLeave:Q}=P,ie=()=>{d.ctx.isUnmounted?o(w):s(w,p,_)},se=()=>{const he=w._isLeaving||!!w[Ds];w._isLeaving&&w[Ds](!0),P.persisted&&!he?ie():U(w,()=>{ie(),Q&&Q()})};q?q(w,ie,se):se()}else s(w,p,_)},Ue=(d,p,_,x=!1,A=!1)=>{const{type:w,props:L,ref:P,children:N,dynamicChildren:R,shapeFlag:Y,patchFlag:U,dirs:q,cacheIndex:Q,memo:ie}=d;if(U===-2&&(A=!1),P!=null&&(It(),An(P,null,_,d,!0),Nt()),Q!=null&&(p.renderCache[Q]=void 0),Y&256){p.ctx.deactivate(d);return}const se=Y&1&&q,he=!Rn(d);let Ae;if(he&&(Ae=L&&L.onVnodeBeforeUnmount)&>(Ae,p,d),Y&6)Ke(d.component,_,x);else{if(Y&128){d.suspense.unmount(_,x);return}se&&qt(d,null,p,"beforeUnmount"),Y&64?d.type.remove(d,p,_,z,x):R&&!R.hasOnce&&(w!==X||U>0&&U&64)?$e(R,p,_,!1,!0):(w===X&&U&384||!A&&Y&16)&&$e(N,p,_),x&&Be(d)}const Oe=ie!=null&&Q==null;(he&&(Ae=L&&L.onVnodeUnmounted)||se||Oe)&&Qe(()=>{Ae&>(Ae,p,d),se&&qt(d,null,p,"unmounted"),Oe&&(d.el=null)},_)},Be=d=>{const{type:p,el:_,anchor:x,transition:A}=d;if(p===X){ot(_,x);return}if(p===Vs){H(d);return}const w=()=>{o(_),A&&!A.persisted&&A.afterLeave&&A.afterLeave()};if(d.shapeFlag&1&&A&&!A.persisted){const{leave:L,delayLeave:P}=A,N=()=>L(_,w);P?P(d.el,w,N):N()}else w()},ot=(d,p)=>{let _;for(;d!==p;)_=g(d),o(d),d=_;o(p)},Ke=(d,p,_)=>{const{bum:x,scope:A,job:w,subTree:L,um:P,m:N,a:R}=d;zo(N),zo(R),x&&Qn(x),A.stop(),w&&(w.flags|=8,Ue(L,d,p,_)),P&&Qe(P,p),Qe(()=>{d.isUnmounted=!0},p)},$e=(d,p,_,x=!1,A=!1,w=0)=>{for(let L=w;L{if(d.shapeFlag&6)return E(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const p=g(d.anchor||d.el),_=p&&p[ra];return _?g(_):p};let B=!1;const V=(d,p,_)=>{let x;d==null?p._vnode&&(Ue(p._vnode,null,null,!0),x=p._vnode.component):I(p._vnode||null,d,p,null,null,null,_),p._vnode=d,B||(B=!0,Do(x),ar(),B=!1)},z={p:I,um:Ue,m:Ze,r:Be,mt:we,mc:ne,pc:fe,pbc:S,n:E,o:e};return{render:V,hydrate:void 0,createApp:Oa(V)}}function js({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function zt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ga(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Tr(e,t,n=!1){const s=e.children,o=t.children;if(Z(s)&&Z(o))for(let l=0;l>1,e[n[i]]0&&(t[s]=n[l-1]),n[l]=s)}}for(l=n.length,r=n[l-1];l-- >0;)n[l]=r,r=t[r];return n}function Pr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Pr(t)}function zo(e){if(e)for(let t=0;te.__isSuspense;function qa(e,t){t&&t.pendingBranch?Z(e)?t.effects.push(...e):t.effects.push(e):ta(e)}const X=Symbol.for("v-fgt"),Cs=Symbol.for("v-txt"),Bt=Symbol.for("v-cmt"),Vs=Symbol.for("v-stc"),Tn=[];let nt=null;function k(e=!1){Tn.push(nt=e?null:[])}function za(){Tn.pop(),nt=Tn[Tn.length-1]||null}let Dn=1;function is(e,t=!1){Dn+=e,e<0&&nt&&t&&(nt.hasOnce=!0)}function $r(e){return e.dynamicChildren=Dn>0?nt||ln:null,za(),Dn>0&&nt&&nt.push(e),e}function C(e,t,n,s,o,l){return $r(c(e,t,n,s,o,l,!0))}function Ja(e,t,n,s,o){return $r(Re(e,t,n,s,o,!0))}function as(e){return e?e.__v_isVNode===!0:!1}function yn(e,t){return e.type===t.type&&e.key===t.key}const Mr=({key:e})=>e??null,es=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Pe(e)||Ie(e)||le(e)?{i:tt,r:e,k:t,f:!!n}:e:null);function c(e,t=null,n=null,s=0,o=null,l=e===X?0:1,r=!1,i=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Mr(t),ref:t&&es(t),scopeId:ur,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:tt};return i?(So(a,n),l&128&&e.normalize(a)):n&&(a.shapeFlag|=Pe(n)?8:16),Dn>0&&!r&&nt&&(a.patchFlag>0||l&6)&&a.patchFlag!==32&&nt.push(a),a}const Re=Ya;function Ya(e,t=null,n=null,s=0,o=null,l=!1){if((!e||e===ba)&&(e=Bt),as(e)){const i=fn(e,t,!0);return n&&So(i,n),Dn>0&&!l&&nt&&(i.shapeFlag&6?nt[nt.indexOf(e)]=i:nt.push(i)),i.patchFlag=-2,i}if(ic(e)&&(e=e.__vccOpts),t){t=Qa(t);let{class:i,style:a}=t;i&&!Pe(i)&&(t.class=Je(i)),be(a)&&(_s(a)&&!Z(a)&&(a=Ve({},a)),t.style=fo(a))}const r=Pe(e)?1:Nr(e)?128:ia(e)?64:be(e)?4:le(e)?2:0;return c(e,t,n,s,o,r,l,!0)}function Qa(e){return e?_s(e)||Cr(e)?Ve({},e):e:null}function fn(e,t,n=!1,s=!1){const{props:o,ref:l,patchFlag:r,children:i,transition:a}=e,f=t?Xa(o||{},t):o,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&Mr(f),ref:t&&t.ref?n&&l?Z(l)?l.concat(es(t)):[l,es(t)]:es(t):l,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==X?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&fn(e.ssContent),ssFallback:e.ssFallback&&fn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&xo(u,a.clone(u)),u}function ve(e=" ",t=0){return Re(Cs,null,e,t)}function Se(e="",t=!1){return t?(k(),Ja(Bt,null,e)):Re(Bt,null,e)}function bt(e){return e==null||typeof e=="boolean"?Re(Bt):Z(e)?Re(X,null,e.slice()):as(e)?At(e):Re(Cs,null,String(e))}function At(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:fn(e)}function So(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(Z(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),So(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Cr(t)?t._ctx=tt:o===3&&tt&&(tt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else le(t)?(t={default:t,_ctx:tt},n=32):(t=String(t),s&64?(n=16,t=[ve(t)]):n=8);e.children=t,e.shapeFlag|=n}function Xa(...e){const t={};for(let n=0;nHe||tt;let cs,to;{const e=vs(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),l=>{o.length>1?o.forEach(r=>r(l)):o[0](l)}};cs=t("__VUE_INSTANCE_SETTERS__",n=>He=n),to=t("__VUE_SSR_SETTERS__",n=>Ln=n)}const Hn=e=>{const t=He;return cs(e),e.scope.on(),()=>{e.scope.off(),cs(t)}},Jo=()=>{He&&He.scope.off(),cs(null)};function Lr(e){return e.vnode.shapeFlag&4}let Ln=!1;function nc(e,t=!1,n=!1){t&&to(t);const{props:s,children:o}=e.vnode,l=Lr(e);La(e,s,l,t),Fa(e,o,n||t);const r=l?sc(e,t):void 0;return t&&to(!1),r}function sc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,xa);const{setup:s}=n;if(s){It();const o=e.setupContext=s.length>1?lc(e):null,l=Hn(e),r=Fn(s,e,0,[e.props,o]),i=Nl(r);if(Nt(),l(),(i||e.sp)&&!Rn(e)&&pr(e),i){if(r.then(Jo,Jo),t)return r.then(a=>{Yo(e,a)}).catch(a=>{ys(a,e,0)});e.asyncDep=r}else Yo(e,r)}else jr(e)}function Yo(e,t,n){le(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:be(t)&&(e.setupState=lr(t)),jr(e)}function jr(e,t,n){const s=e.type;e.render||(e.render=s.render||xt);{const o=Hn(e);It();try{ka(e)}finally{Nt(),o()}}}const oc={get(e,t){return Fe(e,"get",""),e[t]}};function lc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,oc),slots:e.slots,emit:e.emit,expose:t}}function Ss(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(lr(bo(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in On)return On[n](e)},has(t,n){return n in t||n in On}})):e.proxy}function rc(e,t=!0){return le(e)?e.displayName||e.name:e.name||t&&e.__name}function ic(e){return le(e)&&"__vccOpts"in e}const ge=(e,t)=>Yi(e,t,Ln);function Vr(e,t,n){try{is(-1);const s=arguments.length;return s===2?be(t)&&!Z(t)?as(t)?Re(e,null,[t]):Re(e,t):Re(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&as(n)&&(n=[n]),Re(e,t,n))}finally{is(1)}}const ac="3.5.35";/**
+* @vue/runtime-dom v3.5.35
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let no;const Qo=typeof window<"u"&&window.trustedTypes;if(Qo)try{no=Qo.createPolicy("vue",{createHTML:e=>e})}catch{}const Ur=no?e=>no.createHTML(e):e=>e,cc="http://www.w3.org/2000/svg",uc="http://www.w3.org/1998/Math/MathML",Et=typeof document<"u"?document:null,Xo=Et&&Et.createElement("template"),fc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?Et.createElementNS(cc,e):t==="mathml"?Et.createElementNS(uc,e):n?Et.createElement(e,{is:n}):Et.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>Et.createTextNode(e),createComment:e=>Et.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Et.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,l){const r=n?n.previousSibling:t.lastChild;if(o&&(o===l||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===l||!(o=o.nextSibling)););else{Xo.innerHTML=Ur(s==="svg"?``:s==="mathml"?``:e);const i=Xo.content;if(s==="svg"||s==="mathml"){const a=i.firstChild;for(;a.firstChild;)i.appendChild(a.firstChild);i.removeChild(a)}t.insertBefore(i,n)}return[r?r.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},dc=Symbol("_vtc");function hc(e,t,n){const s=e[dc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Zo=Symbol("_vod"),pc=Symbol("_vsh"),mc=Symbol(""),vc=/(?:^|;)\s*display\s*:/;function gc(e,t,n){const s=e.style,o=Pe(n);let l=!1;if(n&&!o){if(t)if(Pe(t))for(const r of t.split(";")){const i=r.slice(0,r.indexOf(":")).trim();n[i]==null&&xn(s,i,"")}else for(const r in t)n[r]==null&&xn(s,r,"");for(const r in n){r==="display"&&(l=!0);const i=n[r];i!=null?yc(e,r,!Pe(t)&&t?t[r]:void 0,i)||xn(s,r,i):xn(s,r,"")}}else if(o){if(t!==n){const r=s[mc];r&&(n+=";"+r),s.cssText=n,l=vc.test(n)}}else t&&e.removeAttribute("style");Zo in e&&(e[Zo]=l?s.display:"",e[pc]&&(s.display="none"))}const el=/\s*!important$/;function xn(e,t,n){if(Z(n))n.forEach(s=>xn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=_c(e,t);el.test(n)?e.setProperty(Gt(s),n.replace(el,""),"important"):e[s]=n}}const tl=["Webkit","Moz","ms"],Us={};function _c(e,t){const n=Us[t];if(n)return n;let s=Ye(t);if(s!=="filter"&&s in e)return Us[t]=s;s=ps(s);for(let o=0;oFs||(kc.then(()=>Fs=0),Fs=Date.now());function Sc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const o=n.value;if(Z(o)){const l=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{l.call(s),s._stopped=!0};const r=o.slice(),i=[s];for(let a=0;ae.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ec=(e,t,n,s,o,l)=>{const r=o==="svg";t==="class"?hc(e,s,r):t==="style"?gc(e,n,s):us(t)?fs(t)||wc(e,t,n,s,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ac(e,t,s,r))?(ol(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&sl(e,t,s,r,l,t!=="value")):e._isVueCE&&(Rc(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Pe(s)))?ol(e,Ye(t),s,l,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),sl(e,t,s,r))};function Ac(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&il(t)&&le(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return il(t)&&Pe(n)?!1:t in e}function Rc(e,t){const n=e._def.props;if(!n)return!1;const s=Ye(t);return Array.isArray(n)?n.some(o=>Ye(o)===s):Object.keys(n).some(o=>Ye(o)===s)}const Kt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Z(t)?n=>Qn(t,n):t};function Oc(e){e.target.composing=!0}function al(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ut=Symbol("_assign");function cl(e,t,n){return t&&(e=e.trim()),n&&(e=ms(e)),e}const et={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[ut]=Kt(o);const l=s||o.props&&o.props.type==="number";Tt(e,t?"change":"input",r=>{r.target.composing||e[ut](cl(e.value,n,l))}),(n||l)&&Tt(e,"change",()=>{e.value=cl(e.value,n,l)}),t||(Tt(e,"compositionstart",Oc),Tt(e,"compositionend",al),Tt(e,"change",al))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:l}},r){if(e[ut]=Kt(r),e.composing)return;const i=(l||e.type==="number")&&!/^0\d/.test(e.value)?ms(e.value):e.value,a=t??"";if(i===a)return;const f=e.getRootNode();(f instanceof Document||f instanceof ShadowRoot)&&f.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===a)||(e.value=a)}},Tc={deep:!0,created(e,t,n){e[ut]=Kt(n),Tt(e,"change",()=>{const s=e._modelValue,o=dn(e),l=e.checked,r=e[ut];if(Z(s)){const i=ho(s,o),a=i!==-1;if(l&&!a)r(s.concat(o));else if(!l&&a){const f=[...s];f.splice(i,1),r(f)}}else if(mn(s)){const i=new Set(s);l?i.add(o):i.delete(o),r(i)}else r(Fr(e,l))})},mounted:ul,beforeUpdate(e,t,n){e[ut]=Kt(n),ul(e,t,n)}};function ul(e,{value:t,oldValue:n},s){e._modelValue=t;let o;if(Z(t))o=ho(t,s.props.value)>-1;else if(mn(t))o=t.has(s.props.value);else{if(t===n)return;o=Ht(t,Fr(e,!0))}e.checked!==o&&(e.checked=o)}const fl={created(e,{value:t},n){e.checked=Ht(t,n.props.value),e[ut]=Kt(n),Tt(e,"change",()=>{e[ut](dn(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[ut]=Kt(s),t!==n&&(e.checked=Ht(t,s.props.value))}},Pc={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=mn(t);Tt(e,"change",()=>{const l=Array.prototype.filter.call(e.options,r=>r.selected).map(r=>n?ms(dn(r)):dn(r));e[ut](e.multiple?o?new Set(l):l:l[0]),e._assigning=!0,Ft(()=>{e._assigning=!1})}),e[ut]=Kt(s)},mounted(e,{value:t}){dl(e,t)},beforeUpdate(e,t,n){e[ut]=Kt(n)},updated(e,{value:t}){e._assigning||dl(e,t)}};function dl(e,t){const n=e.multiple,s=Z(t);if(!(n&&!s&&!mn(t))){for(let o=0,l=e.options.length;oString(f)===String(i)):r.selected=ho(t,i)>-1}else r.selected=t.has(i);else if(Ht(dn(r),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function dn(e){return"_value"in e?e._value:e.value}function Fr(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Ic=["ctrl","shift","alt","meta"],Nc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ic.some(n=>e[`${n}Key`]&&!t.includes(n))},on=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(o,...l)=>{for(let r=0;r{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=o=>{if(!("key"in o))return;const l=Gt(o.key);if(t.some(r=>r===l||$c[r]===l))return e(o)})},Mc=Ve({patchProp:Ec},fc);let hl;function Dc(){return hl||(hl=Ba(Mc))}const Lc=(...e)=>{const t=Dc().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=Vc(s);if(!o)return;const l=t._component;!le(l)&&!l.render&&!l.template&&(l.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const r=n(o,!1,jc(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),r},t};function jc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Vc(e){return Pe(e)?document.querySelector(e):e}/*!
+ * pinia v2.3.1
+ * (c) 2025 Eduardo San Martin Morote
+ * @license MIT
+ */let Hr;const Es=e=>Hr=e,Br=Symbol();function so(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Pn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Pn||(Pn={}));function Uc(){const e=Fl(!0),t=e.run(()=>ee({}));let n=[],s=[];const o=bo({install(l){Es(o),o._a=l,l.provide(Br,o),l.config.globalProperties.$pinia=o,s.forEach(r=>n.push(r)),s=[]},use(l){return this._a?n.push(l):s.push(l),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return o}const Kr=()=>{};function pl(e,t,n,s=Kr){e.push(t);const o=()=>{const l=e.indexOf(t);l>-1&&(e.splice(l,1),s())};return!n&&Hl()&&Ci(o),o}function tn(e,...t){e.slice().forEach(n=>{n(...t)})}const Fc=e=>e(),ml=Symbol(),Hs=Symbol();function oo(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],o=e[n];so(o)&&so(s)&&e.hasOwnProperty(n)&&!Ie(s)&&!Pt(s)?e[n]=oo(o,s):e[n]=s}return e}const Hc=Symbol();function Bc(e){return!so(e)||!e.hasOwnProperty(Hc)}const{assign:Lt}=Object;function Kc(e){return!!(Ie(e)&&e.effect)}function Gc(e,t,n,s){const{state:o,actions:l,getters:r}=t,i=n.state.value[e];let a;function f(){i||(n.state.value[e]=o?o():{});const u=Wi(n.state.value[e]);return Lt(u,l,Object.keys(r||{}).reduce((h,g)=>(h[g]=bo(ge(()=>{Es(n);const b=n._s.get(e);return r[g].call(b,b)})),h),{}))}return a=Gr(e,f,t,n,s,!0),a}function Gr(e,t,n={},s,o,l){let r;const i=Lt({actions:{}},n),a={deep:!0};let f,u,h=[],g=[],b;const $=s.state.value[e];!l&&!$&&(s.state.value[e]={});let I;function F(ne){let re;f=u=!1,typeof ne=="function"?(ne(s.state.value[e]),re={type:Pn.patchFunction,storeId:e,events:b}):(oo(s.state.value[e],ne),re={type:Pn.patchObject,payload:ne,storeId:e,events:b});const S=I=Symbol();Ft().then(()=>{I===S&&(f=!0)}),u=!0,tn(h,re,s.state.value[e])}const J=l?function(){const{state:re}=n,S=re?re():{};this.$patch(O=>{Lt(O,S)})}:Kr;function M(){r.stop(),h=[],g=[],s._s.delete(e)}const K=(ne,re="")=>{if(ml in ne)return ne[Hs]=re,ne;const S=function(){Es(s);const O=Array.from(arguments),D=[],W=[];function we(te){D.push(te)}function Ne(te){W.push(te)}tn(g,{args:O,name:S[Hs],store:oe,after:we,onError:Ne});let xe;try{xe=ne.apply(this&&this.$id===e?this:oe,O)}catch(te){throw tn(W,te),te}return xe instanceof Promise?xe.then(te=>(tn(D,te),te)).catch(te=>(tn(W,te),Promise.reject(te))):(tn(D,xe),xe)};return S[ml]=!0,S[Hs]=re,S},H={_p:s,$id:e,$onAction:pl.bind(null,g),$patch:F,$reset:J,$subscribe(ne,re={}){const S=pl(h,ne,re.detached,()=>O()),O=r.run(()=>En(()=>s.state.value[e],D=>{(re.flush==="sync"?u:f)&&ne({storeId:e,type:Pn.direct,events:b},D)},Lt({},a,re)));return S},$dispose:M},oe=Un(H);s._s.set(e,oe);const ue=(s._a&&s._a.runWithContext||Fc)(()=>s._e.run(()=>(r=Fl()).run(()=>t({action:K}))));for(const ne in ue){const re=ue[ne];if(Ie(re)&&!Kc(re)||Pt(re))l||($&&Bc(re)&&(Ie(re)?re.value=$[ne]:oo(re,$[ne])),s.state.value[e][ne]=re);else if(typeof re=="function"){const S=K(re,ne);ue[ne]=S,i.actions[ne]=re}}return Lt(oe,ue),Lt(me(oe),ue),Object.defineProperty(oe,"$state",{get:()=>s.state.value[e],set:ne=>{F(re=>{Lt(re,ne)})}}),s._p.forEach(ne=>{Lt(oe,r.run(()=>ne({store:oe,app:s._a,pinia:s,options:i})))}),$&&l&&n.hydrate&&n.hydrate(oe.$state,$),f=!0,u=!0,oe}/*! #__NO_SIDE_EFFECTS__ */function Wc(e,t,n){let s,o;const l=typeof t=="function";s=e,o=l?n:t;function r(i,a){const f=na();return i=i||(f?ct(Br,null):null),i&&Es(i),i=Hr,i._s.has(s)||(l?Gr(s,t,o,i):Gc(s,o,i)),i._s.get(s)}return r.$id=s,r}/*!
+ * vue-router v4.6.4
+ * (c) 2025 Eduardo San Martin Morote
+ * @license MIT
+ */const sn=typeof document<"u";function Wr(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function qc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Wr(e.default)}const _e=Object.assign;function Bs(e,t){const n={};for(const s in t){const o=t[s];n[s]=vt(o)?o.map(e):e(o)}return n}const In=()=>{},vt=Array.isArray;function vl(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const qr=/#/g,zc=/&/g,Jc=/\//g,Yc=/=/g,Qc=/\?/g,zr=/\+/g,Xc=/%5B/g,Zc=/%5D/g,Jr=/%5E/g,eu=/%60/g,Yr=/%7B/g,tu=/%7C/g,Qr=/%7D/g,nu=/%20/g;function Eo(e){return e==null?"":encodeURI(""+e).replace(tu,"|").replace(Xc,"[").replace(Zc,"]")}function su(e){return Eo(e).replace(Yr,"{").replace(Qr,"}").replace(Jr,"^")}function lo(e){return Eo(e).replace(zr,"%2B").replace(nu,"+").replace(qr,"%23").replace(zc,"%26").replace(eu,"`").replace(Yr,"{").replace(Qr,"}").replace(Jr,"^")}function ou(e){return lo(e).replace(Yc,"%3D")}function lu(e){return Eo(e).replace(qr,"%23").replace(Qc,"%3F")}function ru(e){return lu(e).replace(Jc,"%2F")}function jn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const iu=/\/$/,au=e=>e.replace(iu,"");function Ks(e,t,n="/"){let s,o={},l="",r="";const i=t.indexOf("#");let a=t.indexOf("?");return a=i>=0&&a>i?-1:a,a>=0&&(s=t.slice(0,a),l=t.slice(a,i>0?i:t.length),o=e(l.slice(1))),i>=0&&(s=s||t.slice(0,i),r=t.slice(i,t.length)),s=du(s??t,n),{fullPath:s+l+r,path:s,query:o,hash:jn(r)}}function cu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function gl(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function uu(e,t,n){const s=t.matched.length-1,o=n.matched.length-1;return s>-1&&s===o&&hn(t.matched[s],n.matched[o])&&Xr(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function hn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Xr(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!fu(e[n],t[n]))return!1;return!0}function fu(e,t){return vt(e)?_l(e,t):vt(t)?_l(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function _l(e,t){return vt(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function du(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let l=n.length-1,r,i;for(r=0;r1&&l--;else break;return n.slice(0,l).join("/")+"/"+s.slice(r).join("/")}const Dt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let ro=function(e){return e.pop="pop",e.push="push",e}({}),Gs=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function hu(e){if(!e)if(sn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),au(e)}const pu=/^[^#]+#/;function mu(e,t){return e.replace(pu,"#")+t}function vu(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const As=()=>({left:window.scrollX,top:window.scrollY});function gu(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=vu(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function yl(e,t){return(history.state?history.state.position-t:-1)+e}const io=new Map;function _u(e,t){io.set(e,t)}function yu(e){const t=io.get(e);return io.delete(e),t}function bu(e){return typeof e=="string"||e&&typeof e=="object"}function Zr(e){return typeof e=="string"||typeof e=="symbol"}let Te=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const ei=Symbol("");Te.MATCHER_NOT_FOUND+"",Te.NAVIGATION_GUARD_REDIRECT+"",Te.NAVIGATION_ABORTED+"",Te.NAVIGATION_CANCELLED+"",Te.NAVIGATION_DUPLICATED+"";function pn(e,t){return _e(new Error,{type:e,[ei]:!0},t)}function St(e,t){return e instanceof Error&&ei in e&&(t==null||!!(e.type&t))}const wu=["params","query","hash"];function xu(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of wu)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function ku(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&lo(o)):[s&&lo(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Cu(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=vt(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const Su=Symbol(""),wl=Symbol(""),Rs=Symbol(""),Ao=Symbol(""),ao=Symbol("");function bn(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Vt(e,t,n,s,o,l=r=>r()){const r=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((i,a)=>{const f=g=>{g===!1?a(pn(Te.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?a(g):bu(g)?a(pn(Te.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(r&&s.enterCallbacks[o]===r&&typeof g=="function"&&r.push(g),i())},u=l(()=>e.call(s&&s.instances[o],t,n,f));let h=Promise.resolve(u);e.length<3&&(h=h.then(f)),h.catch(g=>a(g))})}function Ws(e,t,n,s,o=l=>l()){const l=[];for(const r of e)for(const i in r.components){let a=r.components[i];if(!(t!=="beforeRouteEnter"&&!r.instances[i]))if(Wr(a)){const f=(a.__vccOpts||a)[t];f&&l.push(Vt(f,n,s,r,i,o))}else{let f=a();l.push(()=>f.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${i}" at "${r.path}"`);const h=qc(u)?u.default:u;r.mods[i]=u,r.components[i]=h;const g=(h.__vccOpts||h)[t];return g&&Vt(g,n,s,r,i,o)()}))}}return l}function Eu(e,t){const n=[],s=[],o=[],l=Math.max(t.matched.length,e.matched.length);for(let r=0;rhn(f,i))?s.push(i):n.push(i));const a=e.matched[r];a&&(t.matched.find(f=>hn(f,a))||o.push(a))}return[n,s,o]}/*!
+ * vue-router v4.6.4
+ * (c) 2025 Eduardo San Martin Morote
+ * @license MIT
+ */let Au=()=>location.protocol+"//"+location.host;function ti(e,t){const{pathname:n,search:s,hash:o}=t,l=e.indexOf("#");if(l>-1){let r=o.includes(e.slice(l))?e.slice(l).length:1,i=o.slice(r);return i[0]!=="/"&&(i="/"+i),gl(i,"")}return gl(n,e)+s+o}function Ru(e,t,n,s){let o=[],l=[],r=null;const i=({state:g})=>{const b=ti(e,location),$=n.value,I=t.value;let F=0;if(g){if(n.value=b,t.value=g,r&&r===$){r=null;return}F=I?g.position-I.position:0}else s(b);o.forEach(J=>{J(n.value,$,{delta:F,type:ro.pop,direction:F?F>0?Gs.forward:Gs.back:Gs.unknown})})};function a(){r=n.value}function f(g){o.push(g);const b=()=>{const $=o.indexOf(g);$>-1&&o.splice($,1)};return l.push(b),b}function u(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(_e({},g.state,{scroll:As()}),"")}}function h(){for(const g of l)g();l=[],window.removeEventListener("popstate",i),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",i),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:a,listen:f,destroy:h}}function xl(e,t,n,s=!1,o=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:o?As():null}}function Ou(e){const{history:t,location:n}=window,s={value:ti(e,n)},o={value:t.state};o.value||l(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(a,f,u){const h=e.indexOf("#"),g=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+a:Au()+e+a;try{t[u?"replaceState":"pushState"](f,"",g),o.value=f}catch(b){console.error(b),n[u?"replace":"assign"](g)}}function r(a,f){l(a,_e({},t.state,xl(o.value.back,a,o.value.forward,!0),f,{position:o.value.position}),!0),s.value=a}function i(a,f){const u=_e({},o.value,t.state,{forward:a,scroll:As()});l(u.current,u,!0),l(a,_e({},xl(s.value,a,null),{position:u.position+1},f),!1),s.value=a}return{location:s,state:o,push:i,replace:r}}function Tu(e){e=hu(e);const t=Ou(e),n=Ru(e,t.state,t.location,t.replace);function s(l,r=!0){r||n.pauseListeners(),history.go(l)}const o=_e({location:"",base:e,go:s,createHref:mu.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function Pu(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),Tu(e)}let Yt=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var De=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(De||{});const Iu={type:Yt.Static,value:""},Nu=/[a-zA-Z0-9_]/;function $u(e){if(!e)return[[]];if(e==="/")return[[Iu]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(b){throw new Error(`ERR (${n})/"${f}": ${b}`)}let n=De.Static,s=n;const o=[];let l;function r(){l&&o.push(l),l=[]}let i=0,a,f="",u="";function h(){f&&(n===De.Static?l.push({type:Yt.Static,value:f}):n===De.Param||n===De.ParamRegExp||n===De.ParamRegExpEnd?(l.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),l.push({type:Yt.Param,value:f,regexp:u,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),f="")}function g(){f+=a}for(;it.length?t.length===1&&t[0]===qe.Static+qe.Segment?1:-1:0}function ni(e,t){let n=0;const s=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const Vu={strict:!1,end:!0,sensitive:!1};function Uu(e,t,n){const s=Lu($u(e.path),n),o=_e(s,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function Fu(e,t){const n=[],s=new Map;t=vl(Vu,t);function o(h){return s.get(h)}function l(h,g,b){const $=!b,I=El(h);I.aliasOf=b&&b.record;const F=vl(t,h),J=[I];if("alias"in h){const H=typeof h.alias=="string"?[h.alias]:h.alias;for(const oe of H)J.push(El(_e({},I,{components:b?b.record.components:I.components,path:oe,aliasOf:b?b.record:I})))}let M,K;for(const H of J){const{path:oe}=H;if(g&&oe[0]!=="/"){const Ee=g.record.path,ue=Ee[Ee.length-1]==="/"?"":"/";H.path=g.record.path+(oe&&ue+oe)}if(M=Uu(H,g,F),b?b.alias.push(M):(K=K||M,K!==M&&K.alias.push(M),$&&h.name&&!Al(M)&&r(h.name)),si(M)&&a(M),I.children){const Ee=I.children;for(let ue=0;ue{r(K)}:In}function r(h){if(Zr(h)){const g=s.get(h);g&&(s.delete(h),n.splice(n.indexOf(g),1),g.children.forEach(r),g.alias.forEach(r))}else{const g=n.indexOf(h);g>-1&&(n.splice(g,1),h.record.name&&s.delete(h.record.name),h.children.forEach(r),h.alias.forEach(r))}}function i(){return n}function a(h){const g=Ku(h,n);n.splice(g,0,h),h.record.name&&!Al(h)&&s.set(h.record.name,h)}function f(h,g){let b,$={},I,F;if("name"in h&&h.name){if(b=s.get(h.name),!b)throw pn(Te.MATCHER_NOT_FOUND,{location:h});F=b.record.name,$=_e(Sl(g.params,b.keys.filter(K=>!K.optional).concat(b.parent?b.parent.keys.filter(K=>K.optional):[]).map(K=>K.name)),h.params&&Sl(h.params,b.keys.map(K=>K.name))),I=b.stringify($)}else if(h.path!=null)I=h.path,b=n.find(K=>K.re.test(I)),b&&($=b.parse(I),F=b.record.name);else{if(b=g.name?s.get(g.name):n.find(K=>K.re.test(g.path)),!b)throw pn(Te.MATCHER_NOT_FOUND,{location:h,currentLocation:g});F=b.record.name,$=_e({},g.params,h.params),I=b.stringify($)}const J=[];let M=b;for(;M;)J.unshift(M.record),M=M.parent;return{name:F,path:I,params:$,matched:J,meta:Bu(J)}}e.forEach(h=>l(h));function u(){n.length=0,s.clear()}return{addRoute:l,resolve:f,removeRoute:r,clearRoutes:u,getRoutes:i,getRecordMatcher:o}}function Sl(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function El(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Hu(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Hu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Al(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Bu(e){return e.reduce((t,n)=>_e(t,n.meta),{})}function Ku(e,t){let n=0,s=t.length;for(;n!==s;){const l=n+s>>1;ni(e,t[l])<0?s=l:n=l+1}const o=Gu(e);return o&&(s=t.lastIndexOf(o,s-1)),s}function Gu(e){let t=e;for(;t=t.parent;)if(si(t)&&ni(e,t)===0)return t}function si({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Rl(e){const t=ct(Rs),n=ct(Ao),s=ge(()=>{const a=kt(e.to);return t.resolve(a)}),o=ge(()=>{const{matched:a}=s.value,{length:f}=a,u=a[f-1],h=n.matched;if(!u||!h.length)return-1;const g=h.findIndex(hn.bind(null,u));if(g>-1)return g;const b=Ol(a[f-2]);return f>1&&Ol(u)===b&&h[h.length-1].path!==b?h.findIndex(hn.bind(null,a[f-2])):g}),l=ge(()=>o.value>-1&&Yu(n.params,s.value.params)),r=ge(()=>o.value>-1&&o.value===n.matched.length-1&&Xr(n.params,s.value.params));function i(a={}){if(Ju(a)){const f=t[kt(e.replace)?"replace":"push"](kt(e.to)).catch(In);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:s,href:ge(()=>s.value.href),isActive:l,isExactActive:r,navigate:i}}function Wu(e){return e.length===1?e[0]:e}const qu=hr({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Rl,setup(e,{slots:t}){const n=Un(Rl(e)),{options:s}=ct(Rs),o=ge(()=>({[Tl(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Tl(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const l=t.default&&Wu(t.default(n));return e.custom?l:Vr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},l)}}}),zu=qu;function Ju(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Yu(e,t){for(const n in t){const s=t[n],o=e[n];if(typeof s=="string"){if(s!==o)return!1}else if(!vt(o)||o.length!==s.length||s.some((l,r)=>l.valueOf()!==o[r].valueOf()))return!1}return!0}function Ol(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Tl=(e,t,n)=>e??t??n,Qu=hr({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=ct(ao),o=ge(()=>e.route||s.value),l=ct(wl,0),r=ge(()=>{let f=kt(l);const{matched:u}=o.value;let h;for(;(h=u[f])&&!h.components;)f++;return f}),i=ge(()=>o.value.matched[r.value]);Zn(wl,ge(()=>r.value+1)),Zn(Su,i),Zn(ao,o);const a=ee();return En(()=>[a.value,i.value,e.name],([f,u,h],[g,b,$])=>{u&&(u.instances[h]=f,b&&b!==u&&f&&f===g&&(u.leaveGuards.size||(u.leaveGuards=b.leaveGuards),u.updateGuards.size||(u.updateGuards=b.updateGuards))),f&&u&&(!b||!hn(u,b)||!g)&&(u.enterCallbacks[h]||[]).forEach(I=>I(f))},{flush:"post"}),()=>{const f=o.value,u=e.name,h=i.value,g=h&&h.components[u];if(!g)return Pl(n.default,{Component:g,route:f});const b=h.props[u],$=b?b===!0?f.params:typeof b=="function"?b(f):b:null,F=Vr(g,_e({},$,t,{onVnodeUnmounted:J=>{J.component.isUnmounted&&(h.instances[u]=null)},ref:a}));return Pl(n.default,{Component:F,route:f})||F}}});function Pl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Xu=Qu;function Zu(e){const t=Fu(e.routes,e),n=e.parseQuery||ku,s=e.stringifyQuery||bl,o=e.history,l=bn(),r=bn(),i=bn(),a=Bi(Dt);let f=Dt;sn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Bs.bind(null,E=>""+E),h=Bs.bind(null,ru),g=Bs.bind(null,jn);function b(E,B){let V,z;return Zr(E)?(V=t.getRecordMatcher(E),z=B):z=E,t.addRoute(z,V)}function $(E){const B=t.getRecordMatcher(E);B&&t.removeRoute(B)}function I(){return t.getRoutes().map(E=>E.record)}function F(E){return!!t.getRecordMatcher(E)}function J(E,B){if(B=_e({},B||a.value),typeof E=="string"){const _=Ks(n,E,B.path),x=t.resolve({path:_.path},B),A=o.createHref(_.fullPath);return _e(_,x,{params:g(x.params),hash:jn(_.hash),redirectedFrom:void 0,href:A})}let V;if(E.path!=null)V=_e({},E,{path:Ks(n,E.path,B.path).path});else{const _=_e({},E.params);for(const x in _)_[x]==null&&delete _[x];V=_e({},E,{params:h(_)}),B.params=h(B.params)}const z=t.resolve(V,B),de=E.hash||"";z.params=u(g(z.params));const d=cu(s,_e({},E,{hash:su(de),path:z.path})),p=o.createHref(d);return _e({fullPath:d,hash:de,query:s===bl?Cu(E.query):E.query||{}},z,{redirectedFrom:void 0,href:p})}function M(E){return typeof E=="string"?Ks(n,E,a.value.path):_e({},E)}function K(E,B){if(f!==E)return pn(Te.NAVIGATION_CANCELLED,{from:B,to:E})}function H(E){return ue(E)}function oe(E){return H(_e(M(E),{replace:!0}))}function Ee(E,B){const V=E.matched[E.matched.length-1];if(V&&V.redirect){const{redirect:z}=V;let de=typeof z=="function"?z(E,B):z;return typeof de=="string"&&(de=de.includes("?")||de.includes("#")?de=M(de):{path:de},de.params={}),_e({query:E.query,hash:E.hash,params:de.path!=null?{}:E.params},de)}}function ue(E,B){const V=f=J(E),z=a.value,de=E.state,d=E.force,p=E.replace===!0,_=Ee(V,z);if(_)return ue(_e(M(_),{state:typeof _=="object"?_e({},de,_.state):de,force:d,replace:p}),B||V);const x=V;x.redirectedFrom=B;let A;return!d&&uu(s,z,V)&&(A=pn(Te.NAVIGATION_DUPLICATED,{to:x,from:z}),Ze(z,z,!0,!1)),(A?Promise.resolve(A):S(x,z)).catch(w=>St(w)?St(w,Te.NAVIGATION_GUARD_REDIRECT)?w:Xe(w):fe(w,x,z)).then(w=>{if(w){if(St(w,Te.NAVIGATION_GUARD_REDIRECT))return ue(_e({replace:p},M(w.to),{state:typeof w.to=="object"?_e({},de,w.to.state):de,force:d}),B||x)}else w=D(x,z,!0,p,de);return O(x,z,w),w})}function ne(E,B){const V=K(E,B);return V?Promise.reject(V):Promise.resolve()}function re(E){const B=ot.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(E):E()}function S(E,B){let V;const[z,de,d]=Eu(E,B);V=Ws(z.reverse(),"beforeRouteLeave",E,B);for(const _ of z)_.leaveGuards.forEach(x=>{V.push(Vt(x,E,B))});const p=ne.bind(null,E,B);return V.push(p),$e(V).then(()=>{V=[];for(const _ of l.list())V.push(Vt(_,E,B));return V.push(p),$e(V)}).then(()=>{V=Ws(de,"beforeRouteUpdate",E,B);for(const _ of de)_.updateGuards.forEach(x=>{V.push(Vt(x,E,B))});return V.push(p),$e(V)}).then(()=>{V=[];for(const _ of d)if(_.beforeEnter)if(vt(_.beforeEnter))for(const x of _.beforeEnter)V.push(Vt(x,E,B));else V.push(Vt(_.beforeEnter,E,B));return V.push(p),$e(V)}).then(()=>(E.matched.forEach(_=>_.enterCallbacks={}),V=Ws(d,"beforeRouteEnter",E,B,re),V.push(p),$e(V))).then(()=>{V=[];for(const _ of r.list())V.push(Vt(_,E,B));return V.push(p),$e(V)}).catch(_=>St(_,Te.NAVIGATION_CANCELLED)?_:Promise.reject(_))}function O(E,B,V){i.list().forEach(z=>re(()=>z(E,B,V)))}function D(E,B,V,z,de){const d=K(E,B);if(d)return d;const p=B===Dt,_=sn?history.state:{};V&&(z||p?o.replace(E.fullPath,_e({scroll:p&&_&&_.scroll},de)):o.push(E.fullPath,de)),a.value=E,Ze(E,B,V,p),Xe()}let W;function we(){W||(W=o.listen((E,B,V)=>{if(!Ke.listening)return;const z=J(E),de=Ee(z,Ke.currentRoute.value);if(de){ue(_e(de,{replace:!0,force:!0}),z).catch(In);return}f=z;const d=a.value;sn&&_u(yl(d.fullPath,V.delta),As()),S(z,d).catch(p=>St(p,Te.NAVIGATION_ABORTED|Te.NAVIGATION_CANCELLED)?p:St(p,Te.NAVIGATION_GUARD_REDIRECT)?(ue(_e(M(p.to),{force:!0}),z).then(_=>{St(_,Te.NAVIGATION_ABORTED|Te.NAVIGATION_DUPLICATED)&&!V.delta&&V.type===ro.pop&&o.go(-1,!1)}).catch(In),Promise.reject()):(V.delta&&o.go(-V.delta,!1),fe(p,z,d))).then(p=>{p=p||D(z,d,!1),p&&(V.delta&&!St(p,Te.NAVIGATION_CANCELLED)?o.go(-V.delta,!1):V.type===ro.pop&&St(p,Te.NAVIGATION_ABORTED|Te.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),O(z,d,p)}).catch(In)}))}let Ne=bn(),xe=bn(),te;function fe(E,B,V){Xe(E);const z=xe.list();return z.length?z.forEach(de=>de(E,B,V)):console.error(E),Promise.reject(E)}function dt(){return te&&a.value!==Dt?Promise.resolve():new Promise((E,B)=>{Ne.add([E,B])})}function Xe(E){return te||(te=!E,we(),Ne.list().forEach(([B,V])=>E?V(E):B()),Ne.reset()),E}function Ze(E,B,V,z){const{scrollBehavior:de}=e;if(!sn||!de)return Promise.resolve();const d=!V&&yu(yl(E.fullPath,0))||(z||!V)&&history.state&&history.state.scroll||null;return Ft().then(()=>de(E,B,d)).then(p=>p&&gu(p)).catch(p=>fe(p,E,B))}const Ue=E=>o.go(E);let Be;const ot=new Set,Ke={currentRoute:a,listening:!0,addRoute:b,removeRoute:$,clearRoutes:t.clearRoutes,hasRoute:F,getRoutes:I,resolve:J,options:e,push:H,replace:oe,go:Ue,back:()=>Ue(-1),forward:()=>Ue(1),beforeEach:l.add,beforeResolve:r.add,afterEach:i.add,onError:xe.add,isReady:dt,install(E){E.component("RouterLink",zu),E.component("RouterView",Xu),E.config.globalProperties.$router=Ke,Object.defineProperty(E.config.globalProperties,"$route",{enumerable:!0,get:()=>kt(a)}),sn&&!Be&&a.value===Dt&&(Be=!0,H(o.location).catch(z=>{}));const B={};for(const z in Dt)Object.defineProperty(B,z,{get:()=>a.value[z],enumerable:!0});E.provide(Rs,Ke),E.provide(Ao,sr(B)),E.provide(ao,a);const V=E.unmount;ot.add(E),E.unmount=function(){ot.delete(E),ot.size<1&&(f=Dt,W&&W(),W=null,a.value=Dt,Be=!1,te=!1),V()}}};function $e(E){return E.reduce((B,V)=>B.then(()=>re(V)),Promise.resolve())}return Ke}function oi(){return ct(Rs)}function ef(e){return ct(Ao)}const Bn=Wc("auth",{state:()=>({token:localStorage.getItem("mcbot_token")||"",identity:localStorage.getItem("mcbot_identity")||""}),actions:{set(e,t){this.token=e,this.identity=t||"",localStorage.setItem("mcbot_token",e),localStorage.setItem("mcbot_identity",this.identity)},clear(){this.token="",this.identity="",localStorage.removeItem("mcbot_token"),localStorage.removeItem("mcbot_identity")}}}),tf={key:0,class:"nav"},nf={class:"who"},sf={__name:"App",setup(e){const t=Bn(),n=ef(),s=oi(),o=ge(()=>n.path!=="/login");function l(){t.clear(),s.push("/login")}return(r,i)=>{const a=Vo("router-link"),f=Vo("router-view");return k(),C(X,null,[o.value?(k(),C("nav",tf,[i[3]||(i[3]=c("span",{class:"brand"},"mcbot",-1)),Re(a,{to:"/messages"},{default:Xn(()=>[...i[0]||(i[0]=[ve("Messages",-1)])]),_:1}),Re(a,{to:"/packets"},{default:Xn(()=>[...i[1]||(i[1]=[ve("Packets",-1)])]),_:1}),Re(a,{to:"/manage"},{default:Xn(()=>[...i[2]||(i[2]=[ve("Manage",-1)])]),_:1}),i[4]||(i[4]=c("span",{class:"spacer"},null,-1)),c("span",nf,T(kt(t).identity||"authenticated"),1),c("button",{onClick:l},"Log out")])):Se("",!0),Re(f)],64)}}};async function ae(e,t={}){const n=Bn(),s={...t.headers||{}};n.token&&(s.Authorization=`Bearer ${n.token}`),t.json!==void 0&&(s["Content-Type"]="application/json",t={...t,body:JSON.stringify(t.json)},delete t.json);const o=await fetch(`/api${e}`,{...t,headers:s});if(o.status===401)throw n.clear(),location.hash.startsWith("#/login")||(location.hash="#/login"),new Error("unauthorized");if(!o.ok){let l=o.statusText;try{l=(await o.json()).detail||l}catch{}throw new Error(l)}return o.json()}function li(e){const t=Bn();return`${location.protocol==="https:"?"wss":"ws"}://${location.host}/api${e}?token=${encodeURIComponent(t.token)}`}const of={class:"login-wrap"},lf={class:"login-card"},rf={key:0,class:"err"},af=["disabled"],cf={__name:"Login",setup(e){const t=Bn(),n=oi(),s=ee(""),o=ee(""),l=ee(""),r=ee(""),i=ee(!1);async function a(){r.value="",i.value=!0;try{const u=await ae("/login",{method:"POST",json:{username:s.value,password:o.value}});t.set(u.token,u.user?`user:${u.user}`:""),n.push("/")}catch(u){r.value=u.message||"login failed"}finally{i.value=!1}}async function f(){if(r.value="",!!l.value.trim()){t.set(l.value.trim(),"");try{const u=await ae("/me");t.set(l.value.trim(),u.identity),n.push("/")}catch{t.clear(),r.value="invalid token"}}}return(u,h)=>(k(),C("div",of,[c("div",lf,[h[3]||(h[3]=c("h2",null,"mcbot admin",-1)),r.value?(k(),C("div",rf,T(r.value),1)):Se("",!0),h[4]||(h[4]=c("label",null,"Username",-1)),je(c("input",{"onUpdate:modelValue":h[0]||(h[0]=g=>s.value=g),onKeyup:cn(a,["enter"]),autofocus:""},null,544),[[et,s.value]]),h[5]||(h[5]=c("label",null,"Password",-1)),je(c("input",{"onUpdate:modelValue":h[1]||(h[1]=g=>o.value=g),type:"password",onKeyup:cn(a,["enter"])},null,544),[[et,o.value]]),c("button",{disabled:i.value,onClick:a},"Log in",8,af),h[6]||(h[6]=c("label",{style:{"margin-top":"10px"}},"…or paste an API token",-1)),je(c("input",{"onUpdate:modelValue":h[2]||(h[2]=g=>l.value=g),placeholder:"bearer token",onKeyup:cn(f,["enter"])},null,544),[[et,l.value]]),c("button",{onClick:f},"Use token")])]))}};function Ut(e){return String(e).padStart(2,"0")}function ri(e){if(!e)return"";const t=new Date(e*1e3);return`${Ut(t.getHours())}:${Ut(t.getMinutes())}:${Ut(t.getSeconds())}`}function ii(e){if(!e)return"";const t=new Date(e*1e3);return`${t.getFullYear()}-${Ut(t.getMonth()+1)}-${Ut(t.getDate())} ${Ut(t.getHours())}:${Ut(t.getMinutes())}:${Ut(t.getSeconds())}`}const ai=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},uf=["aria-label"],ff={class:"bubble"},df={__name:"InfoTip",props:{text:{type:String,default:""}},setup(e){const t=ee(!1);return(n,s)=>(k(),C("span",{class:Je(["infotip",{pinned:t.value}]),tabindex:"0",role:"button","aria-label":e.text,onClick:s[0]||(s[0]=o=>t.value=!t.value),onKeydown:[s[1]||(s[1]=cn(on(o=>t.value=!t.value,["prevent"]),["enter"])),s[2]||(s[2]=cn(on(o=>t.value=!t.value,["prevent"]),["space"]))],onBlur:s[3]||(s[3]=o=>t.value=!1)},[s[4]||(s[4]=c("span",{class:"dot","aria-hidden":"true"},"i",-1)),c("span",ff,T(e.text),1)],42,uf))}},Yn=ai(df,[["__scopeId","data-v-48ca1073"]]),hf={class:"panes"},pf={class:"pane",style:{flex:"0 0 170px"}},mf={class:"body"},vf=["onClick"],gf={class:"pane",style:{flex:"1"}},_f={key:0,class:"toolbar"},yf={key:0,class:"err"},bf={key:1,class:"muted"},wf={class:"body"},xf={key:0,class:"decoded"},kf={class:"kv"},Cf={class:"mono"},Sf={class:"kv"},Ef={class:"k"},Af={key:1},Rf={class:"toolbar"},Of={class:"chk"},Tf={class:"chk"},Pf=["disabled"],If={class:"toolbar"},Nf={class:"chk"},$f={style:{"border-top":"1px solid var(--border, #333)"}},Mf={class:"toolbar"},Df=["disabled"],Lf={key:0,class:"decoded"},jf={class:"kv"},Vf={class:"muted"},Uf={class:"mono"},Ff={class:"toolbar"},Hf={class:"chk"},Bf={class:"chk"},Kf=["disabled"],Gf={class:"decoded"},Wf={style:{margin:"12px 0 4px"}},qf={class:"kv"},zf={class:"k"},Jf={class:"kv"},Yf={class:"k mono"},Qf={key:2},Xf={class:"toolbar"},Zf={class:"mono muted"},ed=["onClick"],td={key:3},nd={class:"toolbar"},sd={id:"newUserContacts"},od=["value"],ld=["value"],rd=["disabled"],id={class:"mono muted"},ad=["onChange"],cd=["value"],ud={class:"chips"},fd=["onClick"],dd={style:{"white-space":"normal"}},hd=["onClick"],pd=["onClick"],md=["onClick"],vd={key:4},gd={class:"toolbar"},_d={key:0,class:"muted"},yd={key:0,class:"muted"},bd=["checked","disabled","onChange"],wd=["onChange"],xd=["value"],kd={class:"chips"},Cd=["onClick"],Sd=["disabled","onClick"],Ed={key:5},Ad=["checked","onChange"],Rd=["checked","onChange"],Od=["checked","onChange"],Td=["value","onChange"],Pd=["onChange"],Id=["value"],Nd={class:"chips"},$d={key:0,class:"muted"},Md=["onClick"],Dd={key:6,class:"contacts-split"},Ld={class:"pane",style:{flex:"1.6","min-width":"0"}},jd={class:"toolbar"},Vd={class:"chk"},Ud=["checked"],Fd=["checked","onChange"],Hd=["disabled"],Bd={class:"muted"},Kd={class:"body"},Gd={key:0},Wd={key:0},qd={key:0},zd={key:0},Jd={key:0},Yd={key:0},Qd=["onClick"],Xd=["checked","onChange"],Zd=["title"],eh={class:"pane contact-detail"},th={class:"body"},nh={key:0,class:"empty"},sh={key:1,class:"decoded"},oh={class:"kv"},lh={class:"k"},rh={key:7},ih=["title"],ah={key:8,class:"empty"},ch={__name:"Manage",setup(e){const t=[{key:"stats",label:"Overview"},{key:"radio",label:"Radio"},{key:"contacts",label:"Contacts"},{key:"channels",label:"Channels"},{key:"users",label:"Users"},{key:"groups",label:"Groups"},{key:"command-config",label:"Commands"},{key:"audit",label:"Audit log"}],n=ee("stats"),s=ee({}),o=ee([]),l=ee([]),r=ee([]),i=ee(""),a=ee(""),f=ee({name:"",key:""}),u=ee({name:"",commands:""}),h=ee({sel:"",group:""}),g={stats:"/stats",radio:"/device-info",contacts:"/contacts?limit=500",channels:"/channels",users:"/users",groups:"/groups","command-config":"/command-config",audit:"/audit?limit=200"};function b(v,m){const G=m.items||m;if(v==="command-config"&&Array.isArray(G))for(const ce of G){let y=[];try{y=ce.allowed_channels?JSON.parse(ce.allowed_channels):[]}catch{y=[]}ce._chans=y}return G}async function $(v,m=!1){if(n.value=v,i.value="",a.value="",!(s.value[v]&&!m))try{const G=await ae(g[v]);if(s.value[v]=b(v,G),v==="contacts"&&Wn(s.value[v]),v==="radio"&&await Ze(),(v==="users"||v==="groups"||v==="contacts")&&!o.value.length){const ce=await ae("/groups");o.value=ce.items.map(y=>y.name)}if(v==="users"&&!s.value.contacts){const ce=await ae(g.contacts);s.value.contacts=b("contacts",ce)}if(v==="groups"&&!l.value.length){const ce=await ae("/command-config");l.value=ce.items.map(y=>y.command).sort()}if(v==="command-config"&&!r.value.length){const ce=await ae("/channels");r.value=ce.items.map(y=>y.name)}}catch(G){i.value=G.message}}const I=v=>$(v,!0);async function F(v,m,G=[]){i.value="",a.value="";try{await v,m&&(a.value=m)}catch(ce){i.value=ce.message}for(const ce of G)await I(ce)}function J(v){const m=s.value["command-config"];if(!m)return;const G=m.findIndex(y=>y.command===v.command);if(G===-1)return;let ce=[];try{ce=v.allowed_channels?JSON.parse(v.allowed_channels):[]}catch{ce=[]}m[G]={...m[G],...v,_chans:ce}}async function M(v,m){i.value="",a.value="";try{const G=await ae(`/command-config/${encodeURIComponent(v)}`,{method:"PATCH",json:m});J(G),a.value=`${v}: saved`}catch(G){i.value=G.message,await I("command-config")}}function K(v,m){!m||v._chans.includes(m)||M(v.command,{allowed_channels:[...v._chans,m]})}function H(v,m){M(v.command,{allowed_channels:v._chans.filter(G=>G!==m)})}async function oe(){const v={name:f.value.name.trim()};f.value.key.trim()&&(v.key=f.value.key.trim()),v.name&&(await F(ae("/channels",{method:"POST",json:v}),`added ${v.name}`,["channels"]),i.value||(f.value={name:"",key:""}))}function Ee(v){confirm(`Remove channel ${v}? This clears its radio slot.`)&&F(ae(`/channels/${encodeURIComponent(v)}`,{method:"DELETE"}),`removed ${v}`,["channels"])}function ue(v,m){m&&F(ae(`/users/${v}/groups`,{method:"POST",json:{group:m}}),"group added",["users"])}function ne(v,m){F(ae(`/users/${v}/groups/${encodeURIComponent(m)}`,{method:"DELETE"}),"group removed",["users"])}function re(v,m){const G=prompt("New alias:",m||"");G!==null&&F(ae(`/users/${v}`,{method:"PATCH",json:{name:G}}),"renamed",["users"])}function S(v,m){confirm(`Delete user ${m||v.slice(0,12)} from the bot?`)&&F(ae(`/users/${v}`,{method:"DELETE"}),"deleted",["users"])}function O(v){const m=(v.groups||[]).includes("blocked"),G=m?ae(`/users/${v.pubkey}/block`,{method:"DELETE"}):ae(`/users/${v.pubkey}/block`,{method:"POST"});F(G,m?"unblocked":"blocked",["users"])}async function D(){const v=u.value.name.trim();if(!v)return;const m=u.value.commands.split(",").map(G=>G.trim()).filter(Boolean);await F(ae("/groups",{method:"POST",json:{name:v,commands:m}}),`group ${v} created`,["groups"]),i.value||(u.value={name:"",commands:""})}function W(v){confirm(`Delete group ${v}?`)&&F(ae(`/groups/${encodeURIComponent(v)}`,{method:"DELETE"}),"deleted",["groups"])}function we(v,m){m&&F(ae(`/groups/${encodeURIComponent(v)}/commands`,{method:"POST",json:{command:m}}),`granted ${m} to ${v}`,["groups"])}function Ne(v,m){m&&F(ae(`/groups/${encodeURIComponent(v)}/commands/${encodeURIComponent(m)}`,{method:"DELETE"}),`revoked ${m} from ${v}`,["groups"])}function xe(v,m){F(ae(`/groups/${encodeURIComponent(v)}/all-users`,{method:m?"POST":"DELETE"}),m?`${v}: now includes all users`:`${v}: explicit members only`,["groups"])}const te=ee("zero"),fe=ee(!1);async function dt(){fe.value||(fe.value=!0,await F(ae("/radio/advert",{method:"POST",json:{flood:te.value==="flood"}}),`${te.value==="flood"?"flood":"zero-hop"} advert sent`),fe.value=!1)}const Xe=ee(0);async function Ze(){try{const v=await ae("/radio/advert-interval");Xe.value=v.interval_hours}catch(v){i.value=v.message}}async function Ue(){const v=Number(Xe.value);await F(ae("/radio/advert-interval",{method:"POST",json:{interval_hours:v}}),v>0?`Flood advert every ${v}h`:"Periodic flood advert disabled"),await Ze()}const Be=ee(null),ot=ee(!1),Ke=ee(!1),$e=ee({enabled:!0,headroom:8});async function E(){if(!ot.value){ot.value=!0,i.value="";try{const v=await ae("/radio/contacts-status");Be.value=v,$e.value={enabled:v.policy.enabled,headroom:v.policy.headroom}}catch(v){i.value=v.message}ot.value=!1}}async function B(){await F(ae("/radio/contacts-policy",{method:"POST",json:{enabled:$e.value.enabled,headroom:Number($e.value.headroom)}}),"Eviction policy updated (runtime only — set radio_evict_* in mcbot.conf to persist)"),await E()}async function V(){if(!Ke.value){Ke.value=!0,i.value="",a.value="";try{const v=await ae("/radio/evict-contacts",{method:"POST",json:{dry_run:!0}}),m=v.evicted||[];if(!m.length){a.value=`Nothing to evict (used ${v.used}/${v.max??"?"}).`,Ke.value=!1;return}const G=m.map(Me=>Me.name||Me.pubkey.slice(0,12)),ce=G.slice(0,20).join(`
+`),y=G.length>20?`
+…and ${G.length-20} more`:"";if(!confirm(`Evict ${m.length} stale contact(s) from the radio?
+
+${ce}${y}`)){Ke.value=!1;return}const j=await ae("/radio/evict-contacts",{method:"POST",json:{}});a.value=`Evicted ${j.evicted.length} contact(s)`+(j.failed?`, ${j.failed} failed`:"")+(j.shortfall?`, ${j.shortfall} short (protected)`:"")}catch(v){i.value=v.message}Ke.value=!1,await E()}}const z=[{title:"Identity",keys:[["self_info.name","Name"],["self_info.public_key","Public key",{mono:!0}],["device_info.model","Model"],["device_info.ver","Firmware version"],["device_info.fw ver","Firmware code"],["device_info.fw_build","Firmware build"]]},{title:"Radio",keys:[["self_info.radio_freq","Frequency",{unit:"MHz"}],["self_info.radio_bw","Bandwidth",{unit:"kHz"}],["self_info.radio_sf","Spreading factor"],["self_info.radio_cr","Coding rate"],["self_info.tx_power","TX power",{unit:"dBm"}],["self_info.max_tx_power","Max TX power",{unit:"dBm"}],["device_info.path_hash_mode","Out path-hash mode",{fmt:v=>`${Number(v)+1} byte(s)/hop`}]]},{title:"Advertising",keys:[["self_info.adv_type","Advertised type"],["self_info.adv_lat","Latitude"],["self_info.adv_lon","Longitude"],["self_info.adv_loc_policy","Location-share policy"]]},{title:"Capacity",keys:[["device_info.max_channels","Max channels"],["device_info.max_contacts","Max contacts"]]},{title:"Battery / memory",keys:[["battery.level","Battery",{unit:"mV"}],["battery.total_kb","Total memory",{unit:"kB"}],["battery.used_kb","Used memory",{unit:"kB"}]]},{title:"Other",keys:[["device_info.ble_pin","BLE PIN"],["device_info.repeat","Repeater mode"],["self_info.manual_add_contacts","Manual contact add"],["self_info.multi_acks","Multi-acks"],["self_info.telemetry_mode_base","Telemetry: base"],["self_info.telemetry_mode_env","Telemetry: env"],["self_info.telemetry_mode_loc","Telemetry: location"]]}],de=new Set(z.flatMap(v=>v.keys.map(m=>m[0])));function d(v){if(v==null)return null;try{return JSON.parse(v)}catch{return v}}function p(v,m){const G=d(v.value);if(G==null||G==="")return"";if(m!=null&&m.fmt)return m.fmt(G);let ce=typeof G=="object"?JSON.stringify(G):String(G);return m!=null&&m.unit&&(ce=`${ce} ${m.unit}`),ce}const _=ge(()=>{const v=new Map;for(const m of s.value.radio||[])v.set(m.key,m);return v}),x=ge(()=>[...s.value.radio||[]].filter(v=>!de.has(v.key)).sort((v,m)=>v.key.localeCompare(m.key))),A={1:"Comp",2:"Rptr",3:"Room",4:"Sens"};function w(v){return v==null?"?":A[v]||String(v)}function L(v){return v&&v.length>14?`${v.slice(0,6)}...${v.slice(-6)}`:v||""}function P(v){if(!v)return"";const m=new Date(v*1e3),G=ce=>String(ce).padStart(2,"0");return`${m.getFullYear()}-${G(m.getMonth()+1)}-${G(m.getDate())} ${G(m.getHours())}:${G(m.getMinutes())}`}const N=ge(()=>o.value.filter(v=>v!=="public"&&v!=="blocked"));function R(v){return`${v.adv_name||"(unnamed)"} — ${v.public_key}`}function Y(){const v=h.value.sel.trim();if(!v)return"";const m=(s.value.contacts||[]).find(G=>R(G)===v);return m?m.public_key:/^[0-9a-fA-F]{64}$/.test(v)?v.toLowerCase():""}async function U(){const v=Y();if(!v){alert("Pick a contact from the list (or paste a 64-hex pubkey).");return}if(!h.value.group){alert("Choose an initial group.");return}i.value="",a.value="";try{await ae("/users",{method:"POST",json:{pubkey:v,group:h.value.group}}),a.value=`bot user created and added to ${h.value.group}`,h.value={sel:"",group:""},await I("users")}catch(m){alert(m.message)}}const q=ee(""),Q=ee(new Set),ie=ee(new Set),se=ee({col:"adv_name",dir:"asc"}),he=ee(new Set),Ae=ee(null),Oe=ge(()=>(s.value.contacts||[]).find(v=>v.public_key===Ae.value)||null);function lt(v){Ae.value=v.public_key}const rt=ge(()=>{const v=Oe.value;if(!v)return[];let m;v.out_path_len===-1?m="flood (no path)":v.out_path_len===0?m="direct (0 hops)":v.out_path?m=`${v.out_path} (${v.out_path_len} hop${v.out_path_len===1?"":"s"})`:m=`${v.out_path_len??"?"} hop(s)`;const G=v.adv_lat!=null&&v.adv_lon!=null?`${v.adv_lat}, ${v.adv_lon}`:"—";return[["name",v.adv_name||"—",!1],["type",w(v.type),!1],["public key",v.public_key,!0],["flags",v.flags??"—",!1],["out path",m,!0],["path hash mode",v.out_path_hash_mode??"—",!1],["location (lat, lon)",G,!1],["last advert",P(v.last_advert)||"—",!1],["last modified",P(v.lastmod)||"—",!1],["first seen",P(v.first_seen_at)||"—",!1],["last synced",P(v.last_synced_at)||"—",!1]]}),Wt=ge(()=>[...ie.value].sort()),Kn=ge(()=>Q.value.size===0),Ge=v=>!Q.value.has(v);function it(v){Q.value=v?new Set:new Set(ie.value)}function Gn(v,m){const G=new Set(Q.value);m?G.delete(v):G.add(v),Q.value=G}function Wn(v){let m=null;for(const G of v){const ce=w(G.type);ie.value.has(ce)||(m=m||new Set(ie.value),m.add(ce))}m&&(ie.value=m)}function Zt(v){se.value.col===v?se.value={col:v,dir:se.value.dir==="asc"?"desc":"asc"}:se.value={col:v,dir:"asc"}}function ui(v){const m=new Set(he.value);m.has(v)?m.delete(v):m.add(v),he.value=m}const Os=ge(()=>(s.value.contacts||[]).filter(v=>he.value.has(v.public_key))),Ro=ge(()=>Os.value.length>0);async function fi(){const v=Os.value;if(!v.length)return;const m=v.map(at=>at.adv_name||at.public_key.slice(0,12)),G=m.slice(0,20).join(`
+`),ce=m.length>20?`
+…and ${m.length-20} more`:"";if(!confirm(`Delete ${v.length} contact(s)?
+
+${G}${ce}`))return;i.value="",a.value="";let y=0,j=0,Me="";for(const at of v)try{await ae(`/contacts/${encodeURIComponent(at.public_key)}`,{method:"DELETE"}),y++}catch(Ts){j++,Me=`${Ts.message} (${at.adv_name||at.public_key.slice(0,12)})`}he.value=new Set,await I("contacts"),a.value=j?`Deleted ${y}, ${j} failed`:`Deleted ${y} contact(s)`,Me&&(i.value=Me)}const Oo=ge(()=>{const v=s.value.contacts||[],m=q.value.toLowerCase().trim(),G=Q.value,ce=v.filter(at=>G.size&&G.has(w(at.type))?!1:m?(at.public_key||"").toLowerCase().includes(m)||(at.adv_name||"").toLowerCase().includes(m):!0),{col:y,dir:j}=se.value,Me=j==="asc"?1:-1;return ce.sort((at,Ts)=>{const vn=at[y],gn=Ts[y];return vn==null&&gn==null?0:vn==null?1:gn==null?-1:typeof vn=="number"&&typeof gn=="number"?(vn-gn)*Me:String(vn).localeCompare(String(gn))*Me}),ce});function To(v){return v&&v.length?Object.keys(v[0]).filter(m=>!m.startsWith("_")):[]}function di(v){return v==null?"":Array.isArray(v)?v.join(", "):typeof v=="object"?JSON.stringify(v):String(v)}function Po(v,m){return m==="ts"&&v[m]?ii(v[m]):di(v[m])}return ws(()=>$("stats")),(v,m)=>{var G,ce;return k(),C("div",hf,[c("div",pf,[m[20]||(m[20]=c("h3",null,"Manage",-1)),c("div",mf,[c("table",null,[c("tbody",null,[(k(),C(X,null,pe(t,y=>c("tr",{key:y.key,class:Je(["clickable",{selected:n.value===y.key}]),onClick:j=>$(y.key)},[c("td",null,T(y.label),1)],10,vf)),64))])])])]),c("div",gf,[c("h3",null,T((G=t.find(y=>y.key===n.value))==null?void 0:G.label),1),i.value||a.value?(k(),C("div",_f,[i.value?(k(),C("span",yf,T(i.value),1)):Se("",!0),a.value?(k(),C("span",bf,T(a.value),1)):Se("",!0)])):Se("",!0),c("div",wf,[n.value==="stats"&&s.value.stats?(k(),C("div",xf,[c("div",kf,[m[21]||(m[21]=c("div",{class:"k"},"identity",-1)),c("div",Cf,T(((ce=s.value.stats.identity)==null?void 0:ce.pubkey)||"—"),1),m[22]||(m[22]=c("div",{class:"k"},"events seen",-1)),c("div",null,T(s.value.stats.event_count),1),m[23]||(m[23]=c("div",{class:"k"},"commands loaded",-1)),c("div",null,T(s.value.stats.commands_loaded),1)]),m[24]||(m[24]=c("h4",null,"Counts",-1)),c("div",Sf,[(k(!0),C(X,null,pe(s.value.stats.counts,(y,j)=>(k(),C(X,{key:j},[c("div",Ef,T(j),1),c("div",null,T(y),1)],64))),128))])])):n.value==="radio"?(k(),C("div",Af,[c("div",Rf,[c("label",Of,[je(c("input",{type:"radio",value:"zero","onUpdate:modelValue":m[0]||(m[0]=y=>te.value=y)},null,512),[[fl,te.value]]),m[25]||(m[25]=ve(" Zero hop ",-1))]),c("label",Tf,[je(c("input",{type:"radio",value:"flood","onUpdate:modelValue":m[1]||(m[1]=y=>te.value=y)},null,512),[[fl,te.value]]),m[26]||(m[26]=ve(" Flood ",-1))]),c("button",{disabled:fe.value,onClick:dt},T(fe.value?"Sending…":"Advert"),9,Pf),Re(Yn,{text:"Zero-hop reaches direct neighbors only; flood propagates through the mesh."})]),c("div",If,[c("label",Nf,[m[27]||(m[27]=ve(" Flood advert interval (hours) ",-1)),je(c("input",{type:"number",min:"0","onUpdate:modelValue":m[2]||(m[2]=y=>Xe.value=y),style:{width:"5em"}},null,512),[[et,Xe.value,void 0,{number:!0}]])]),c("button",{onClick:Ue},"Apply"),Re(Yn,{text:"0 = disabled. Bot sends a flood advert every N hours; persists in the database (mcbot.conf only seeds the first-run default)."})]),c("div",$f,[c("div",Mf,[m[28]||(m[28]=c("strong",null,"Contact table",-1)),c("button",{disabled:ot.value,onClick:E},T(ot.value?"Checking…":"Check contact table"),9,Df),Re(Yn,{text:"Reads the radio's contact list (takes a few seconds)."})]),Be.value?(k(),C("div",Lf,[c("div",jf,[m[29]||(m[29]=c("div",{class:"k"},"Used / max",-1)),c("div",null,[ve(T(Be.value.used)+" / "+T(Be.value.max??"?")+" ",1),c("span",Vf,"("+T(Be.value.free??"?")+" free)",1)]),m[30]||(m[30]=c("div",{class:"k"},"Protected / evictable",-1)),c("div",null,T(Be.value.protected)+" protected, "+T(Be.value.eligible)+" evictable",1),m[31]||(m[31]=c("div",{class:"k"},"Firmware autoadd byte",-1)),c("div",Uf,T(Be.value.autoadd_raw??"n/a"),1)]),c("div",Ff,[c("label",Hf,[je(c("input",{type:"checkbox","onUpdate:modelValue":m[3]||(m[3]=y=>$e.value.enabled=y)},null,512),[[Tc,$e.value.enabled]]),m[32]||(m[32]=ve(" Auto-evict (startup + when full) ",-1))]),c("label",Bf,[m[33]||(m[33]=ve(" Headroom ",-1)),je(c("input",{type:"number",min:"1",max:"100","onUpdate:modelValue":m[4]||(m[4]=y=>$e.value.headroom=y),style:{width:"4em"}},null,512),[[et,$e.value.headroom,void 0,{number:!0}]])]),c("button",{onClick:B},"Apply"),c("button",{disabled:Ke.value,onClick:V},T(Ke.value?"Evicting…":"Evict to headroom now"),9,Kf),Re(Yn,{text:"Evicts the stalest contacts from the radio (bot users, owners, and recent DM peers are protected; the bot's database keeps the full archive). Policy changes here are runtime only — set radio_evict_* in mcbot.conf to persist across restarts."})])])):Se("",!0)]),c("div",Gf,[(k(),C(X,null,pe(z,y=>(k(),C(X,{key:y.title},[c("h4",Wf,T(y.title),1),c("div",qf,[(k(!0),C(X,null,pe(y.keys,j=>{var Me;return k(),C(X,{key:j[0]},[c("div",zf,T(j[1]),1),c("div",{class:Je({mono:(Me=j[2])==null?void 0:Me.mono})},T(p(_.value.get(j[0])||{},j[2])||"—"),3)],64)}),128))])],64))),64)),x.value.length?(k(),C(X,{key:0},[m[34]||(m[34]=c("h4",{style:{margin:"12px 0 4px"}},"Unrecognized",-1)),c("div",Jf,[(k(!0),C(X,null,pe(x.value,y=>(k(),C(X,{key:y.key},[c("div",Yf,T(y.key),1),c("div",null,T(p(y)||"—"),1)],64))),128))])],64)):Se("",!0)])])):n.value==="channels"?(k(),C("div",Qf,[c("div",Xf,[je(c("input",{"onUpdate:modelValue":m[5]||(m[5]=y=>f.value.name=y),placeholder:"name (e.g. #bot or MyChan)",style:{flex:"1"}},null,512),[[et,f.value.name]]),je(c("input",{"onUpdate:modelValue":m[6]||(m[6]=y=>f.value.key=y),placeholder:"hex key (non-# only)",style:{flex:"1"}},null,512),[[et,f.value.key]]),c("button",{onClick:oe},"Add channel")]),c("table",null,[m[35]||(m[35]=c("thead",null,[c("tr",null,[c("th",null,"idx"),c("th",null,"name"),c("th",null,"secret"),c("th")])],-1)),c("tbody",null,[(k(!0),C(X,null,pe(s.value.channels,y=>(k(),C("tr",{key:y.channel_idx},[c("td",null,T(y.channel_idx),1),c("td",null,T(y.name),1),c("td",Zf,T((y.secret_hex||"").slice(0,12))+"…",1),c("td",null,[c("button",{onClick:j=>Ee(y.name)},"remove",8,ed)])]))),128))])])])):n.value==="users"?(k(),C("div",td,[c("div",nd,[je(c("input",{"onUpdate:modelValue":m[7]||(m[7]=y=>h.value.sel=y),list:"newUserContacts",placeholder:"add bot user: search a contact…",style:{flex:"0 0 320px"}},null,512),[[et,h.value.sel]]),c("datalist",sd,[(k(!0),C(X,null,pe(s.value.contacts||[],y=>(k(),C("option",{key:y.public_key,value:R(y)},null,8,od))),128))]),je(c("select",{"onUpdate:modelValue":m[8]||(m[8]=y=>h.value.group=y)},[m[36]||(m[36]=c("option",{value:""},"initial group…",-1)),(k(!0),C(X,null,pe(N.value,y=>(k(),C("option",{key:y,value:y},T(y),9,ld))),128))],512),[[Pc,h.value.group]]),c("button",{disabled:!Y()||!h.value.group,onClick:U}," Add bot user ",8,rd)]),c("table",null,[m[38]||(m[38]=c("thead",null,[c("tr",null,[c("th",null,"name"),c("th",null,"pubkey"),c("th",{style:{width:"130px"}},"add group"),c("th",null,"groups"),c("th",null,"actions")])],-1)),c("tbody",null,[(k(!0),C(X,null,pe(s.value.users,y=>(k(),C("tr",{key:y.pubkey},[c("td",null,T(y.name||"?"),1),c("td",id,T(y.pubkey.slice(0,12)),1),c("td",null,[c("select",{onChange:j=>{ue(y.pubkey,j.target.value),j.target.value=""}},[m[37]||(m[37]=c("option",{value:""},"+ group…",-1)),(k(!0),C(X,null,pe(o.value,j=>(k(),C("option",{key:j,value:j},T(j),9,cd))),128))],40,ad)]),c("td",ud,[(k(!0),C(X,null,pe(y.groups,j=>(k(),C("span",{key:j,class:"tag"},[ve(T(j)+" ",1),c("a",{href:"#",onClick:on(Me=>ne(y.pubkey,j),["prevent"]),title:"remove"},"×",8,fd)]))),128))]),c("td",dd,[c("button",{onClick:j=>re(y.pubkey,y.name)},"rename",8,hd),c("button",{onClick:j=>O(y)},T((y.groups||[]).includes("blocked")?"unblock":"block"),9,pd),c("button",{onClick:j=>S(y.pubkey,y.name)},"delete",8,md)])]))),128))])])])):n.value==="groups"?(k(),C("div",vd,[c("div",gd,[je(c("input",{"onUpdate:modelValue":m[9]||(m[9]=y=>u.value.name=y),placeholder:"new group name"},null,512),[[et,u.value.name]]),je(c("input",{"onUpdate:modelValue":m[10]||(m[10]=y=>u.value.commands=y),placeholder:"commands (comma list, optional)",style:{flex:"1"}},null,512),[[et,u.value.commands]]),c("button",{onClick:D},"Create group")]),c("table",null,[m[41]||(m[41]=c("thead",null,[c("tr",null,[c("th",null,"name"),c("th",null,"users"),c("th",{title:"Every user is a member (the * membership)"},"all users"),c("th",{style:{width:"150px"}},"grant command"),c("th",null,"commands"),c("th")])],-1)),c("tbody",null,[(k(!0),C(X,null,pe(s.value.groups,y=>(k(),C("tr",{key:y.name},[c("td",null,[ve(T(y.name),1),y.is_system?(k(),C("span",_d," [sys]")):Se("",!0)]),c("td",null,[ve(T(y.nusers),1),y.all_users?(k(),C("span",yd," +*")):Se("",!0)]),c("td",null,[c("input",{type:"checkbox",checked:y.all_users,disabled:y.name==="blocked",title:"Include all users (*) in this group",onChange:j=>xe(y.name,j.target.checked)},null,40,bd)]),c("td",null,[c("select",{onChange:j=>{we(y.name,j.target.value),j.target.value=""}},[m[39]||(m[39]=c("option",{value:""},"+ command…",-1)),m[40]||(m[40]=c("option",{value:"*"},"* (all commands)",-1)),(k(!0),C(X,null,pe(l.value,j=>(k(),C("option",{key:j,value:j},T(j),9,xd))),128))],40,wd)]),c("td",kd,[(k(!0),C(X,null,pe(y.commands,j=>(k(),C("span",{key:j,class:"tag"},[ve(T(j)+" ",1),c("a",{href:"#",onClick:on(Me=>Ne(y.name,j),["prevent"]),title:"revoke"},"×",8,Cd)]))),128))]),c("td",null,[c("button",{disabled:y.is_system,onClick:j=>W(y.name)},"delete",8,Sd)])]))),128))])])])):n.value==="command-config"?(k(),C("div",Ed,[c("table",null,[m[43]||(m[43]=c("thead",null,[c("tr",null,[c("th",null,"command"),c("th",null,"enabled"),c("th",null,"allow_dm"),c("th",null,"dm_only"),c("th",null,"cooldown"),c("th",{style:{width:"140px"}},"allow channel"),c("th",null,"allowed channels")])],-1)),c("tbody",null,[(k(!0),C(X,null,pe(s.value["command-config"],y=>(k(),C("tr",{key:y.command},[c("td",null,T(y.command),1),c("td",null,[c("input",{type:"checkbox",checked:!!y.enabled,onChange:j=>M(y.command,{enabled:j.target.checked})},null,40,Ad)]),c("td",null,[c("input",{type:"checkbox",checked:!!y.allow_dm,onChange:j=>M(y.command,{allow_dm:j.target.checked})},null,40,Rd)]),c("td",null,[c("input",{type:"checkbox",checked:!!y.dm_only,onChange:j=>M(y.command,{dm_only:j.target.checked})},null,40,Od)]),c("td",null,[c("input",{type:"number",value:y.cooldown_seconds,style:{width:"64px"},onChange:j=>M(y.command,{cooldown_seconds:Number(j.target.value)})},null,40,Td)]),c("td",null,[c("select",{onChange:j=>{K(y,j.target.value),j.target.value=""}},[m[42]||(m[42]=c("option",{value:""},"+ channel…",-1)),(k(!0),C(X,null,pe(r.value,j=>(k(),C("option",{key:j,value:j},T(j),9,Id))),128))],40,Pd)]),c("td",Nd,[y._chans.length?Se("",!0):(k(),C("span",$d,"(any)")),(k(!0),C(X,null,pe(y._chans,j=>(k(),C("span",{key:j,class:"tag"},[ve(T(j)+" ",1),c("a",{href:"#",onClick:on(Me=>H(y,j),["prevent"]),title:"remove"},"×",8,Md)]))),128))])]))),128))])])])):n.value==="contacts"?(k(),C("div",Dd,[c("div",Ld,[c("div",jd,[je(c("input",{"onUpdate:modelValue":m[11]||(m[11]=y=>q.value=y),placeholder:"search name or pubkey…",style:{flex:"0 0 260px"}},null,512),[[et,q.value]]),c("label",Vd,[c("input",{type:"checkbox",checked:Kn.value,onChange:m[12]||(m[12]=y=>it(y.target.checked))},null,40,Ud),m[44]||(m[44]=ve(" All ",-1))]),(k(!0),C(X,null,pe(Wt.value,y=>(k(),C("label",{key:y,class:"chk"},[c("input",{type:"checkbox",checked:Ge(y),onChange:j=>Gn(y,j.target.checked)},null,40,Fd),ve(" "+T(y),1)]))),128)),c("button",{disabled:!Ro.value,onClick:fi}," Delete"+T(Ro.value?` (${Os.value.length})`:""),9,Hd),c("span",Bd,T(Oo.value.length)+" shown",1)]),c("div",Kd,[c("table",null,[c("thead",null,[c("tr",null,[m[51]||(m[51]=c("th",{style:{width:"24px"}},null,-1)),c("th",{class:"sortable",onClick:m[13]||(m[13]=y=>Zt("public_key"))},[m[45]||(m[45]=ve(" pubkey",-1)),se.value.col==="public_key"?(k(),C("span",Gd,T(se.value.dir==="asc"?"▲":"▼"),1)):Se("",!0)]),c("th",{class:"sortable",onClick:m[14]||(m[14]=y=>Zt("adv_name"))},[m[46]||(m[46]=ve(" name",-1)),se.value.col==="adv_name"?(k(),C("span",Wd,T(se.value.dir==="asc"?"▲":"▼"),1)):Se("",!0)]),c("th",{class:"sortable",onClick:m[15]||(m[15]=y=>Zt("type"))},[m[47]||(m[47]=ve(" type",-1)),se.value.col==="type"?(k(),C("span",qd,T(se.value.dir==="asc"?"▲":"▼"),1)):Se("",!0)]),c("th",{class:"sortable",onClick:m[16]||(m[16]=y=>Zt("adv_lat"))},[m[48]||(m[48]=ve(" lat",-1)),se.value.col==="adv_lat"?(k(),C("span",zd,T(se.value.dir==="asc"?"▲":"▼"),1)):Se("",!0)]),c("th",{class:"sortable",onClick:m[17]||(m[17]=y=>Zt("adv_lon"))},[m[49]||(m[49]=ve(" lon",-1)),se.value.col==="adv_lon"?(k(),C("span",Jd,T(se.value.dir==="asc"?"▲":"▼"),1)):Se("",!0)]),c("th",{class:"sortable",onClick:m[18]||(m[18]=y=>Zt("last_synced_at"))},[m[50]||(m[50]=ve(" last synced",-1)),se.value.col==="last_synced_at"?(k(),C("span",Yd,T(se.value.dir==="asc"?"▲":"▼"),1)):Se("",!0)])])]),c("tbody",null,[(k(!0),C(X,null,pe(Oo.value,y=>(k(),C("tr",{key:y.public_key,class:Je(["clickable",{selected:Oe.value&&Oe.value.public_key===y.public_key}]),onClick:j=>lt(y)},[c("td",null,[c("input",{type:"checkbox",checked:he.value.has(y.public_key),onChange:j=>ui(y.public_key),onClick:m[19]||(m[19]=on(()=>{},["stop"]))},null,40,Xd)]),c("td",{class:"mono",title:y.public_key},T(L(y.public_key)),9,Zd),c("td",null,T(y.adv_name||""),1),c("td",null,T(w(y.type)),1),c("td",null,T(y.adv_lat??""),1),c("td",null,T(y.adv_lon??""),1),c("td",null,T(P(y.last_synced_at)),1)],10,Qd))),128))])])])]),c("div",eh,[m[52]||(m[52]=c("h3",null,"Contact",-1)),c("div",th,[Oe.value?(k(),C("div",sh,[c("div",oh,[(k(!0),C(X,null,pe(rt.value,y=>(k(),C(X,{key:y[0]},[c("div",lh,T(y[0]),1),c("div",{class:Je({mono:y[2]}),style:{"word-break":"break-all"}},T(y[1]),3)],64))),128))])])):(k(),C("div",nh,"select a contact"))])])])):Array.isArray(s.value[n.value])?(k(),C("table",rh,[c("thead",null,[c("tr",null,[(k(!0),C(X,null,pe(To(s.value[n.value]),y=>(k(),C("th",{key:y},T(y),1))),128))])]),c("tbody",null,[(k(!0),C(X,null,pe(s.value[n.value],(y,j)=>(k(),C("tr",{key:j},[(k(!0),C(X,null,pe(To(s.value[n.value]),Me=>(k(),C("td",{key:Me,title:Po(y,Me)},T(Po(y,Me)),9,ih))),128))]))),128))])])):(k(),C("div",ah,"loading…"))])])])}}},uh=ai(ch,[["__scopeId","data-v-c5dac4d3"]]),fh={class:"panes"},dh={class:"side-col"},hh={class:"pane",style:{flex:"1 1 0","min-height":"160px"}},ph={class:"body"},mh=["onClick"],vh={class:"muted"},gh={class:"pane",style:{flex:"1 1 0","min-height":"200px"}},_h={class:"toolbar"},yh={class:"body"},bh=["onClick"],wh={class:"muted mono"},xh={class:"pane",style:{flex:"1"}},kh={key:0,class:"err",style:{padding:"10px"}},Ch={key:1,class:"empty"},Sh={class:"meta"},Eh={class:"who"},Ah={key:0},Rh=["href"],Oh={key:1,class:"mention"},Th={class:"toolbar"},Ph=["placeholder","disabled"],Ih=["disabled"],Nh={key:0,class:"err",style:{padding:"0 12px 8px"}},$h={__name:"Messages",setup(e){const t=ee([]),n=ee(null),s=ee(null),o=ee([]),l=ee(null),r=ee([]),i=ee(""),a=ee(""),f=ee(""),u=ee(!1),h=ee("");let g=null;const b=ge(()=>{const S=i.value.toLowerCase();return S?r.value.filter(O=>(O.adv_name||"").toLowerCase().includes(S)||(O.public_key||"").toLowerCase().includes(S)):r.value}),$=ge(()=>{if(typeof n.value=="number"){const S=t.value.find(O=>O.channel_idx===n.value);return{kind:"channel",idx:n.value,label:(S==null?void 0:S.name)||`#${n.value}`}}return n.value==="dm"&&s.value?{kind:"dm",pubkey:s.value.public_key,label:s.value.adv_name||s.value.public_key.slice(0,12)}:null}),I=ge(()=>$.value?`Message ${$.value.label}…`:"Pick a channel or a contact to send to…");async function F(){t.value=(await ae("/channels")).items,n.value===null&&t.value.length&&K(t.value[0].channel_idx)}async function J(){r.value=(await ae("/contacts?limit=500")).items}async function M(){await Ft();const S=l.value;S&&(S.scrollTop=S.scrollHeight)}async function K(S){n.value=S,s.value=null;const O=await ae(`/channel-messages?channel_idx=${S}&limit=100`);o.value=O.items.slice().reverse(),await M()}async function H(){n.value="dm",s.value=null;const S=await ae("/direct-messages?limit=100");o.value=S.items.slice().reverse(),await M()}async function oe(S){n.value="dm",s.value=S;const O=await ae(`/direct-messages?pubkey=${encodeURIComponent(S.public_key)}&limit=100`);o.value=O.items.slice().reverse(),await M()}async function Ee(){const S=f.value.trim();if(!(!S||!$.value||u.value)){u.value=!0,h.value="";try{$.value.kind==="channel"?await ae("/send/channel",{method:"POST",json:{channel_idx:$.value.idx,text:S}}):await ae("/send/dm",{method:"POST",json:{pubkey:$.value.pubkey,text:S}}),f.value=""}catch(O){h.value=O.message}finally{u.value=!1}}}function ue(S,O){if(!S||!O)return S||"";const D=`${O}: `;return S.startsWith(D)?S.slice(D.length):S}const ne=/(https?:\/\/[^\s<>]+)|@\[([^\]]+)\]/g;function re(S){const O=ue(S.text,S.sender_name),D=[];let W=0,we;for(ne.lastIndex=0;(we=ne.exec(O))!==null;){if(we.index>W&&D.push({type:"text",value:O.slice(W,we.index)}),we[1]){const Ne=we[1].match(/^(.*?)([.,;:!?)]+)$/);Ne?(D.push({type:"link",value:Ne[1]}),D.push({type:"text",value:Ne[2]})):D.push({type:"link",value:we[1]})}else D.push({type:"mention",value:we[2]});W=ne.lastIndex}return W{try{await F(),await J()}catch(S){a.value=S.message}g=new WebSocket(li("/ws/messages")),g.onmessage=S=>{const O=JSON.parse(S.data),D=l.value,W=D?D.scrollHeight-D.scrollTop-D.clientHeight<60:!0;let we=!1;n.value==="dm"&&O.kind==="dm"?(!s.value||O.sender_pubkey===s.value.public_key)&&(o.value.push(O),we=!0):O.kind==="channel"&&O.channel_idx===n.value&&(o.value.push(O),we=!0),o.value.length>300&&o.value.shift(),we&&W&&M()}}),xs(()=>g&&g.close()),(S,O)=>{var D;return k(),C("div",fh,[c("div",dh,[c("div",hh,[O[3]||(O[3]=c("h3",null,"Channels",-1)),c("div",ph,[c("table",null,[c("tbody",null,[(k(!0),C(X,null,pe(t.value,W=>(k(),C("tr",{key:W.channel_idx,class:Je(["clickable",{selected:n.value===W.channel_idx}]),onClick:we=>K(W.channel_idx)},[c("td",null,[ve(T(W.name)+" ",1),c("span",vh,"#"+T(W.channel_idx),1)])],10,mh))),128)),c("tr",{class:Je(["clickable",{selected:n.value==="dm"&&!s.value}]),onClick:H},[...O[2]||(O[2]=[c("td",null,"✉ Direct messages",-1)])],2)])])])]),c("div",gh,[c("h3",null,"Contacts ("+T(r.value.length)+")",1),c("div",_h,[je(c("input",{"onUpdate:modelValue":O[0]||(O[0]=W=>i.value=W),placeholder:"search",style:{flex:"1"}},null,512),[[et,i.value]])]),c("div",yh,[c("table",null,[c("tbody",null,[(k(!0),C(X,null,pe(b.value,W=>(k(),C("tr",{key:W.public_key,class:Je(["clickable",{selected:s.value&&s.value.public_key===W.public_key}]),onClick:we=>oe(W),title:"Open a DM conversation with this contact"},[c("td",null,[ve(T(W.adv_name||"(unnamed)"),1),O[4]||(O[4]=c("br",null,null,-1)),c("span",wh,T(W.public_key.slice(0,12)),1)])],10,bh))),128))])])])])]),c("div",xh,[c("h3",null,T(n.value==="dm"?s.value?`DM · ${s.value.adv_name||s.value.public_key.slice(0,12)}`:"Direct messages":((D=t.value.find(W=>W.channel_idx===n.value))==null?void 0:D.name)||"Messages"),1),c("div",{class:"body",ref_key:"msgBody",ref:l},[a.value?(k(),C("div",kh,T(a.value),1)):Se("",!0),o.value.length?Se("",!0):(k(),C("div",Ch,"no messages")),(k(!0),C(X,null,pe(o.value,W=>{var we;return k(),C("div",{key:W.id,class:Je(["msg",{out:W.is_outgoing}])},[c("div",Sh,[c("span",Eh,T(W.is_outgoing?"→ me":W.sender_name||((we=W.sender_pubkey)==null?void 0:we.slice(0,12))||"?"),1),ve(" · "+T(kt(ri)(W.received_at))+" ",1),W.snr!=null?(k(),C("span",Ah,"· snr "+T(W.snr),1)):Se("",!0)]),c("div",null,[(k(!0),C(X,null,pe(re(W),(Ne,xe)=>(k(),C(X,{key:xe},[Ne.type==="link"?(k(),C("a",{key:0,href:Ne.value,target:"_blank",rel:"noopener noreferrer"},T(Ne.value),9,Rh)):Ne.type==="mention"?(k(),C("span",Oh,"@["+T(Ne.value)+"]",1)):(k(),C(X,{key:2},[ve(T(Ne.value),1)],64))],64))),128))])],2)}),128))],512),c("div",Th,[je(c("input",{style:{flex:"1"},placeholder:I.value,"onUpdate:modelValue":O[1]||(O[1]=W=>f.value=W),disabled:!$.value||u.value,onKeyup:cn(Ee,["enter"])},null,40,Ph),[[et,f.value]]),c("button",{disabled:!$.value||u.value||!f.value.trim(),onClick:Ee},T(u.value?"Sending…":"Send"),9,Ih)]),h.value?(k(),C("div",Nh,T(h.value),1)):Se("",!0)])])}}},Mh={class:"hexdump"},Dh=["onMouseenter"],Lh={key:0},jh={key:1},Vh={key:0,class:"empty"},Uh={__name:"HexDump",props:{hex:{type:String,default:""},activeRange:{type:Object,default:null}},emits:["hover-offset"],setup(e,{emit:t}){const n=e,s=t,o=ge(()=>{const r=(n.hex||"").replace(/\s+/g,""),i=[];for(let a=0;a+2<=r.length;a+=2)i.push(r.slice(a,a+2));return i});function l(r){const i=n.activeRange;return i&&r>=i.offset&&r(k(),C("div",Mh,[(k(!0),C(X,null,pe(o.value,(a,f)=>(k(),C("span",{key:f,class:Je(["hexbyte",{active:l(f)}]),onMouseenter:u=>s("hover-offset",f),onMouseleave:i[0]||(i[0]=u=>s("hover-offset",null))},[ve(T(a),1),(f+1)%16===0?(k(),C("span",Lh,[...i[1]||(i[1]=[c("br",null,null,-1)])])):(k(),C("span",jh))],42,Dh))),128)),o.value.length?Se("",!0):(k(),C("div",Vh,"no raw bytes"))]))}},Fh=["onMouseenter"],Hh={class:"fname"},Bh={class:"fmeta"},Kh={class:"fval"},Gh={key:0,class:"fval muted"},Wh={key:1,class:"fmeta"},qh={key:0,class:"decoded"},zh={class:"kv"},Jh={class:"k"},Yh={class:"mono"},Qh={__name:"FieldBreakout",props:{fields:{type:Array,default:()=>[]},decoded:{type:Object,default:null},activeIndex:{type:Number,default:-1}},emits:["hover-field"],setup(e,{emit:t}){const n=t;function s(r){return r==="timestamp"||r.endsWith("_timestamp")||r.endsWith("_at")}function o(r,i){return s(r)?ii(i):l(i)}function l(r){return r==null?"":typeof r=="object"?JSON.stringify(r):String(r)}return(r,i)=>(k(),C("div",null,[(k(!0),C(X,null,pe(e.fields,(a,f)=>(k(),C("div",{key:f,class:Je(["field-row",{active:f===e.activeIndex}]),onMouseenter:u=>n("hover-field",f),onMouseleave:i[0]||(i[0]=u=>n("hover-field",-1))},[c("div",Hh,T(a.name),1),c("div",Bh,"offset "+T(a.offset)+" · "+T(a.length)+" byte(s)",1),c("div",Kh,T(a.hex),1),a.value!==null&&a.value!==void 0?(k(),C("div",Gh,T(l(a.value)),1)):Se("",!0),a.description?(k(),C("div",Wh,T(a.description),1)):Se("",!0)],42,Fh))),128)),e.decoded?(k(),C("div",qh,[i[1]||(i[1]=c("h4",{style:{margin:"6px 0"}},"Decoded payload",-1)),c("div",zh,[(k(!0),C(X,null,pe(e.decoded,(a,f)=>(k(),C(X,{key:f},[c("div",Jh,T(f),1),c("div",Yh,T(o(f,a)),1)],64))),128))])])):Se("",!0)]))}},Xh={class:"panes"},Zh={class:"pane",style:{flex:"1.3"}},ep={class:"toolbar"},tp={class:"chk"},np=["checked"],sp=["checked","onChange"],op={class:"muted"},lp={key:0,class:"err"},rp=["data-pid","onClick"],ip={class:"pane",style:{flex:"1"}},ap={class:"body"},cp={key:0,class:"empty"},up={key:1,class:"empty"},fp={key:0,class:"err",style:{padding:"0 12px"}},dp={key:3,class:"empty"},hp={__name:"Packets",setup(e){const t=ee([]),n=ee(null),s=ee(new Set),o=ee(new Set),l=ee(null),r=ee(null),i=ee(-1),a=ee("");let f=null;const u=ge(()=>[...o.value].sort()),h=ge(()=>s.value.size===0),g=S=>!s.value.has(S),b=ge(()=>s.value.size===0?t.value:t.value.filter(S=>!s.value.has(S.packet_type)));function $(S){let O=null;for(const D of S)D.packet_type&&!o.value.has(D.packet_type)&&(O=O||new Set(o.value),O.add(D.packet_type));O&&(o.value=O)}function I(S){s.value=S?new Set:new Set(o.value)}function F(S,O){const D=new Set(s.value);O?D.delete(S):D.add(S),s.value=D}const J=ge(()=>{if(!r.value||i.value<0)return null;const S=r.value.fields[i.value];return S?{offset:S.offset,length:S.length}:null});async function M(){try{const S=await ae("/packets?limit=200");t.value=S.items.slice().reverse(),$(S.items),await Ft(),H()}catch(S){a.value=S.message}}function K(){const S=n.value;return S?S.scrollHeight-S.scrollTop-S.clientHeight<40:!0}function H(){const S=n.value;S&&(S.scrollTop=S.scrollHeight)}function oe(S){var O,D;(D=(O=n.value)==null?void 0:O.querySelector(`[data-pid="${S}"]`))==null||D.scrollIntoView({block:"nearest"})}function Ee(S){const O=b.value;if(!O.length)return;let D=l.value?O.findIndex(we=>we.id===l.value.id):-1;D===-1?D=O.length-1:D=Math.max(0,Math.min(O.length-1,D+S));const W=O[D];ne(W),Ft(()=>oe(W.id))}function ue(S){if(S.key!=="ArrowUp"&&S.key!=="ArrowDown")return;const O=S.target;O&&(O.tagName==="INPUT"||O.tagName==="TEXTAREA"||O.tagName==="SELECT"||O.isContentEditable)||S.metaKey||S.ctrlKey||S.altKey||(S.preventDefault(),Ee(S.key==="ArrowUp"?-1:1))}async function ne(S){if(l.value=S,r.value=null,i.value=-1,!!S.has_raw)try{r.value=await ae("/packets/decode",{method:"POST",json:{packet_id:S.id}})}catch(O){a.value=O.message}}function re(S){if(S===null||!r.value){i.value=-1;return}const O=r.value.fields.findIndex(D=>S>=D.offset&&S{M(),f=new WebSocket(li("/ws/packets")),f.onmessage=S=>{const O=JSON.parse(S.data),D=K();t.value.push(O),t.value.length>500&&t.value.shift(),$([O]),D&&Ft(H)},window.addEventListener("keydown",ue)}),xs(()=>{f&&f.close(),window.removeEventListener("keydown",ue)}),(S,O)=>(k(),C("div",Xh,[c("div",Zh,[O[4]||(O[4]=c("h3",null,"Packets (live)",-1)),c("div",ep,[c("label",tp,[c("input",{type:"checkbox",checked:h.value,onChange:O[0]||(O[0]=D=>I(D.target.checked))},null,40,np),O[2]||(O[2]=ve(" All ",-1))]),(k(!0),C(X,null,pe(u.value,D=>(k(),C("label",{key:D,class:"chk"},[c("input",{type:"checkbox",checked:g(D),onChange:W=>F(D,W.target.checked)},null,40,sp),ve(" "+T(D),1)]))),128)),c("span",op,T(b.value.length)+" shown",1),a.value?(k(),C("span",lp,T(a.value),1)):Se("",!0)]),c("div",{class:"body",ref_key:"listEl",ref:n},[c("table",null,[O[3]||(O[3]=c("thead",null,[c("tr",null,[c("th",null,"time"),c("th",null,"type"),c("th",null,"from"),c("th",null,"ch"),c("th",null,"text"),c("th",null,"raw")])],-1)),c("tbody",null,[(k(!0),C(X,null,pe(b.value,D=>(k(),C("tr",{key:D.id,"data-pid":D.id,class:Je(["clickable",{selected:l.value&&l.value.id===D.id}]),onClick:W=>ne(D)},[c("td",null,T(kt(ri)(D.received_at)),1),c("td",null,T(D.packet_type),1),c("td",null,T(D.sender_name||D.sender_pubkey_prefix||""),1),c("td",null,T(D.channel_idx??""),1),c("td",null,T(D.text||""),1),c("td",null,T(D.has_raw?"●":""),1)],10,rp))),128))])])],512)]),c("div",ip,[O[6]||(O[6]=c("h3",null,"Inspector",-1)),c("div",ap,[l.value?l.value.has_raw?r.value?(k(),C(X,{key:2},[Re(Uh,{hex:r.value.raw_hex,"active-range":J.value,onHoverOffset:re},null,8,["hex","active-range"]),r.value.error?(k(),C("div",fp,T(r.value.error),1)):Se("",!0),Re(Qh,{fields:r.value.fields,decoded:r.value.decoded,"active-index":i.value,onHoverField:O[1]||(O[1]=D=>i.value=D)},null,8,["fields","decoded","active-index"])],64)):(k(),C("div",dp,"decoding…")):(k(),C("div",up,[...O[5]||(O[5]=[ve(" no raw bytes for this packet",-1),c("br",null,null,-1),c("span",{class:"muted"},"(only RX_LOG_DATA packets carry on-air bytes)",-1)])])):(k(),C("div",cp,"select a packet"))])])]))}},pp=[{path:"/login",component:cf,meta:{public:!0}},{path:"/",redirect:"/messages"},{path:"/manage",component:uh},{path:"/messages",component:$h},{path:"/packets",component:hp}],ci=Zu({history:Pu(),routes:pp});ci.beforeEach(e=>{const t=Bn();if(!e.meta.public&&!t.token)return"/login";if(e.path==="/login"&&t.token)return"/"});Lc(sf).use(Uc()).use(ci).mount("#app");
diff --git a/webapi/static/assets/index-V4fOL0pm.js b/webapi/static/assets/index-V4fOL0pm.js
deleted file mode 100644
index ecdcaf2..0000000
--- a/webapi/static/assets/index-V4fOL0pm.js
+++ /dev/null
@@ -1,37 +0,0 @@
-(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const r of l.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&s(r)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function s(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();/**
-* @vue/shared v3.5.35
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function co(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ke={},on=[],xt=()=>{},Il=()=>!1,us=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),fs=e=>e.startsWith("onUpdate:"),Ve=Object.assign,uo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},hi=Object.prototype.hasOwnProperty,be=(e,t)=>hi.call(e,t),ee=Array.isArray,ln=e=>jn(e)==="[object Map]",pn=e=>jn(e)==="[object Set]",Io=e=>jn(e)==="[object Date]",oe=e=>typeof e=="function",Pe=e=>typeof e=="string",ft=e=>typeof e=="symbol",we=e=>e!==null&&typeof e=="object",Nl=e=>(we(e)||oe(e))&&oe(e.then)&&oe(e.catch),$l=Object.prototype.toString,jn=e=>$l.call(e),pi=e=>jn(e).slice(8,-1),Ml=e=>jn(e)==="[object Object]",ds=e=>Pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,xn=co(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),hs=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},mi=/-\w/g,Ye=hs(e=>e.replace(mi,t=>t.slice(1).toUpperCase())),vi=/\B([A-Z])/g,Kt=hs(e=>e.replace(vi,"-$1").toLowerCase()),ps=hs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ps=hs(e=>e?`on${ps(e)}`:""),wt=(e,t)=>!Object.is(e,t),Qn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},ms=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let No;const vs=()=>No||(No=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function fo(e){if(ee(e)){const t={};for(let n=0;n{if(n){const s=n.split(_i);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Je(e){let t="";if(Pe(e))t=e;else if(ee(e))for(let n=0;nUt(n,t))}const jl=e=>!!(e&&e.__v_isRef===!0),R=e=>Pe(e)?e:e==null?"":ee(e)||we(e)&&(e.toString===$l||!oe(e.toString))?jl(e)?R(e.value):JSON.stringify(e,Vl,2):String(e),Vl=(e,t)=>jl(t)?Vl(e,t.value):ln(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],l)=>(n[Is(s,l)+" =>"]=o,n),{})}:pn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Is(n))}:ft(t)?Is(t):we(t)&&!ee(t)&&!Ml(t)?String(t):t,Is=(e,t="")=>{var n;return ft(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
-* @vue/reactivity v3.5.35
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let Le;class Fl{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Le&&(Le.active?(this.parent=Le,this.index=(Le.scopes||(Le.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0){if(Le===this)Le=this.prevScope;else{let t=Le;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(Cn){let t=Cn;for(Cn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;kn;){let t=kn;for(kn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Wl(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ql(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),vo(s),Si(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function qs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(zl(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function zl(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===In)||(e.globalVersion=In,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!qs(e))))return;e.flags|=2;const t=e.dep,n=Se,s=ht;Se=e,ht=!0;try{Wl(e);const o=e.fn(e._value);(t.version===0||wt(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{Se=n,ht=s,ql(e),e.flags&=-3}}function vo(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let l=n.computed.deps;l;l=l.nextDep)vo(l,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Si(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ht=!0;const Jl=[];function It(){Jl.push(ht),ht=!1}function Nt(){const e=Jl.pop();ht=e===void 0?!0:e}function $o(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Se;Se=void 0;try{t()}finally{Se=n}}}let In=0;class Ei{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class go{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Se||!ht||Se===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Se)n=this.activeLink=new Ei(Se,this),Se.deps?(n.prevDep=Se.depsTail,Se.depsTail.nextDep=n,Se.depsTail=n):Se.deps=Se.depsTail=n,Yl(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=Se.depsTail,n.nextDep=void 0,Se.depsTail.nextDep=n,Se.depsTail=n,Se.deps===n&&(Se.deps=s)}return n}trigger(t){this.version++,In++,this.notify(t)}notify(t){po();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{mo()}}}function Yl(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Yl(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const ts=new WeakMap,Yt=Symbol(""),zs=Symbol(""),Nn=Symbol("");function Ue(e,t,n){if(ht&&Se){let s=ts.get(e);s||ts.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new go),o.map=s,o.key=n),o.track()}}function Rt(e,t,n,s,o,l){const r=ts.get(e);if(!r){In++;return}const i=a=>{a&&a.trigger()};if(po(),t==="clear")r.forEach(i);else{const a=ee(e),f=a&&ds(n);if(a&&n==="length"){const u=Number(s);r.forEach((h,g)=>{(g==="length"||g===Nn||!ft(g)&&g>=u)&&i(h)})}else switch((n!==void 0||r.has(void 0))&&i(r.get(n)),f&&i(r.get(Nn)),t){case"add":a?f&&i(r.get("length")):(i(r.get(Yt)),ln(e)&&i(r.get(zs)));break;case"delete":a||(i(r.get(Yt)),ln(e)&&i(r.get(zs)));break;case"set":ln(e)&&i(r.get(Yt));break}}mo()}function Ai(e,t){const n=ts.get(e);return n&&n.get(t)}function Zt(e){const t=ve(e);return t===e?t:(Ue(t,"iterate",Nn),st(e)?t:t.map(pt))}function gs(e){return Ue(e=ve(e),"iterate",Nn),e}function yt(e,t){return $t(e)?cn(Pt(e)?pt(t):t):pt(t)}const Ri={__proto__:null,[Symbol.iterator](){return $s(this,Symbol.iterator,e=>yt(this,e))},concat(...e){return Zt(this).concat(...e.map(t=>ee(t)?Zt(t):t))},entries(){return $s(this,"entries",e=>(e[1]=yt(this,e[1]),e))},every(e,t){return Ct(this,"every",e,t,void 0,arguments)},filter(e,t){return Ct(this,"filter",e,t,n=>n.map(s=>yt(this,s)),arguments)},find(e,t){return Ct(this,"find",e,t,n=>yt(this,n),arguments)},findIndex(e,t){return Ct(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ct(this,"findLast",e,t,n=>yt(this,n),arguments)},findLastIndex(e,t){return Ct(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ct(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ms(this,"includes",e)},indexOf(...e){return Ms(this,"indexOf",e)},join(e){return Zt(this).join(e)},lastIndexOf(...e){return Ms(this,"lastIndexOf",e)},map(e,t){return Ct(this,"map",e,t,void 0,arguments)},pop(){return gn(this,"pop")},push(...e){return gn(this,"push",e)},reduce(e,...t){return Mo(this,"reduce",e,t)},reduceRight(e,...t){return Mo(this,"reduceRight",e,t)},shift(){return gn(this,"shift")},some(e,t){return Ct(this,"some",e,t,void 0,arguments)},splice(...e){return gn(this,"splice",e)},toReversed(){return Zt(this).toReversed()},toSorted(e){return Zt(this).toSorted(e)},toSpliced(...e){return Zt(this).toSpliced(...e)},unshift(...e){return gn(this,"unshift",e)},values(){return $s(this,"values",e=>yt(this,e))}};function $s(e,t,n){const s=gs(e),o=s[t]();return s!==e&&!st(e)&&(o._next=o.next,o.next=()=>{const l=o._next();return l.done||(l.value=n(l.value)),l}),o}const Oi=Array.prototype;function Ct(e,t,n,s,o,l){const r=gs(e),i=r!==e&&!st(e),a=r[t];if(a!==Oi[t]){const h=a.apply(e,l);return i?pt(h):h}let f=n;r!==e&&(i?f=function(h,g){return n.call(this,yt(e,h),g,e)}:n.length>2&&(f=function(h,g){return n.call(this,h,g,e)}));const u=a.call(r,f,s);return i&&o?o(u):u}function Mo(e,t,n,s){const o=gs(e),l=o!==e&&!st(e);let r=n,i=!1;o!==e&&(l?(i=s.length===0,r=function(f,u,h){return i&&(i=!1,f=yt(e,f)),n.call(this,f,yt(e,u),h,e)}):n.length>3&&(r=function(f,u,h){return n.call(this,f,u,h,e)}));const a=o[t](r,...s);return i?yt(e,a):a}function Ms(e,t,n){const s=ve(e);Ue(s,"iterate",Nn);const o=s[t](...n);return(o===-1||o===!1)&&_s(n[0])?(n[0]=ve(n[0]),s[t](...n)):o}function gn(e,t,n=[]){It(),po();const s=ve(e)[t].apply(e,n);return mo(),Nt(),s}const Ti=co("__proto__,__v_isRef,__isVue"),Ql=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ft));function Pi(e){ft(e)||(e=String(e));const t=ve(this);return Ue(t,"has",e),t.hasOwnProperty(e)}class Xl{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,l=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return l;if(n==="__v_raw")return s===(o?l?Ui:nr:l?tr:er).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const r=ee(t);if(!o){let a;if(r&&(a=Ri[n]))return a;if(n==="hasOwnProperty")return Pi}const i=Reflect.get(t,n,Ie(t)?t:s);if((ft(n)?Ql.has(n):Ti(n))||(o||Ue(t,"get",n),l))return i;if(Ie(i)){const a=r&&ds(n)?i:i.value;return o&&we(a)?Ys(a):a}return we(i)?o?Ys(i):Vn(i):i}}class Zl extends Xl{constructor(t=!1){super(!1,t)}set(t,n,s,o){let l=t[n];const r=ee(t)&&ds(n);if(!this._isShallow){const f=$t(l);if(!st(s)&&!$t(s)&&(l=ve(l),s=ve(s)),!r&&Ie(l)&&!Ie(s))return f||(l.value=s),!0}const i=r?Number(n)e,qn=e=>Reflect.getPrototypeOf(e);function Di(e,t,n){return function(...s){const o=this.__v_raw,l=ve(o),r=ln(l),i=e==="entries"||e===Symbol.iterator&&r,a=e==="keys"&&r,f=o[e](...s),u=n?Js:t?cn:pt;return!t&&Ue(l,"iterate",a?zs:Yt),Ve(Object.create(f),{next(){const{value:h,done:g}=f.next();return g?{value:h,done:g}:{value:i?[u(h[0]),u(h[1])]:u(h),done:g}}})}}function zn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Li(e,t){const n={get(o){const l=this.__v_raw,r=ve(l),i=ve(o);e||(wt(o,i)&&Ue(r,"get",o),Ue(r,"get",i));const{has:a}=qn(r),f=t?Js:e?cn:pt;if(a.call(r,o))return f(l.get(o));if(a.call(r,i))return f(l.get(i));l!==r&&l.get(o)},get size(){const o=this.__v_raw;return!e&&Ue(ve(o),"iterate",Yt),o.size},has(o){const l=this.__v_raw,r=ve(l),i=ve(o);return e||(wt(o,i)&&Ue(r,"has",o),Ue(r,"has",i)),o===i?l.has(o):l.has(o)||l.has(i)},forEach(o,l){const r=this,i=r.__v_raw,a=ve(i),f=t?Js:e?cn:pt;return!e&&Ue(a,"iterate",Yt),i.forEach((u,h)=>o.call(l,f(u),f(h),r))}};return Ve(n,e?{add:zn("add"),set:zn("set"),delete:zn("delete"),clear:zn("clear")}:{add(o){const l=ve(this),r=qn(l),i=ve(o),a=!t&&!st(o)&&!$t(o)?i:o;return r.has.call(l,a)||wt(o,a)&&r.has.call(l,o)||wt(i,a)&&r.has.call(l,i)||(l.add(a),Rt(l,"add",a,a)),this},set(o,l){!t&&!st(l)&&!$t(l)&&(l=ve(l));const r=ve(this),{has:i,get:a}=qn(r);let f=i.call(r,o);f||(o=ve(o),f=i.call(r,o));const u=a.call(r,o);return r.set(o,l),f?wt(l,u)&&Rt(r,"set",o,l):Rt(r,"add",o,l),this},delete(o){const l=ve(this),{has:r,get:i}=qn(l);let a=r.call(l,o);a||(o=ve(o),a=r.call(l,o)),i&&i.call(l,o);const f=l.delete(o);return a&&Rt(l,"delete",o,void 0),f},clear(){const o=ve(this),l=o.size!==0,r=o.clear();return l&&Rt(o,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=Di(o,e,t)}),n}function _o(e,t){const n=Li(e,t);return(s,o,l)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(be(n,o)&&o in s?n:s,o,l)}const ji={get:_o(!1,!1)},Vi={get:_o(!1,!0)},Fi={get:_o(!0,!1)};const er=new WeakMap,tr=new WeakMap,nr=new WeakMap,Ui=new WeakMap;function Hi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Vn(e){return $t(e)?e:yo(e,!1,Ni,ji,er)}function sr(e){return yo(e,!1,Mi,Vi,tr)}function Ys(e){return yo(e,!0,$i,Fi,nr)}function yo(e,t,n,s,o){if(!we(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const l=o.get(e);if(l)return l;const r=Hi(pi(e));if(r===0)return e;const i=new Proxy(e,r===2?s:n);return o.set(e,i),i}function Pt(e){return $t(e)?Pt(e.__v_raw):!!(e&&e.__v_isReactive)}function $t(e){return!!(e&&e.__v_isReadonly)}function st(e){return!!(e&&e.__v_isShallow)}function _s(e){return e?!!e.__v_raw:!1}function ve(e){const t=e&&e.__v_raw;return t?ve(t):e}function bo(e){return!be(e,"__v_skip")&&Object.isExtensible(e)&&Dl(e,"__v_skip",!0),e}const pt=e=>we(e)?Vn(e):e,cn=e=>we(e)?Ys(e):e;function Ie(e){return e?e.__v_isRef===!0:!1}function te(e){return or(e,!1)}function Bi(e){return or(e,!0)}function or(e,t){return Ie(e)?e:new Ki(e,t)}class Ki{constructor(t,n){this.dep=new go,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ve(t),this._value=n?t:pt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||st(t)||$t(t);t=s?t:ve(t),wt(t,n)&&(this._rawValue=t,this._value=s?t:pt(t),this.dep.trigger())}}function kt(e){return Ie(e)?e.value:e}const Gi={get:(e,t,n)=>t==="__v_raw"?e:kt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return Ie(o)&&!Ie(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function lr(e){return Pt(e)?e:new Proxy(e,Gi)}function Wi(e){const t=ee(e)?new Array(e.length):{};for(const n in e)t[n]=zi(e,n);return t}class qi{constructor(t,n,s){this._object=t,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._key=ft(n)?n:String(n),this._raw=ve(t);let o=!0,l=t;if(!ee(t)||ft(this._key)||!ds(this._key))do o=!_s(l)||st(l);while(o&&(l=l.__v_raw));this._shallow=o}get value(){let t=this._object[this._key];return this._shallow&&(t=kt(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&Ie(this._raw[this._key])){const n=this._object[this._key];if(Ie(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Ai(this._raw,this._key)}}function zi(e,t,n){return new qi(e,t,n)}class Ji{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new go(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=In-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Se!==this)return Gl(this,!0),!0}get value(){const t=this.dep.track();return zl(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Yi(e,t,n=!1){let s,o;return oe(e)?s=e:(s=e.get,o=e.set),new Ji(s,o,n)}const Jn={},ns=new WeakMap;let zt;function Qi(e,t=!1,n=zt){if(n){let s=ns.get(n);s||ns.set(n,s=[]),s.push(e)}}function Xi(e,t,n=ke){const{immediate:s,deep:o,once:l,scheduler:r,augmentJob:i,call:a}=n,f=O=>o?O:st(O)||o===!1||o===0?Ot(O,1):Ot(O);let u,h,g,b,N=!1,P=!1;if(Ie(e)?(h=()=>e.value,N=st(e)):Pt(e)?(h=()=>f(e),N=!0):ee(e)?(P=!0,N=e.some(O=>Pt(O)||st(O)),h=()=>e.map(O=>{if(Ie(O))return O.value;if(Pt(O))return f(O);if(oe(O))return a?a(O,2):O()})):oe(e)?t?h=a?()=>a(e,2):e:h=()=>{if(g){It();try{g()}finally{Nt()}}const O=zt;zt=u;try{return a?a(e,3,[b]):e(b)}finally{zt=O}}:h=xt,t&&o){const O=h,j=o===!0?1/0:o;h=()=>Ot(O(),j)}const F=Hl(),q=()=>{u.stop(),F&&F.active&&uo(F.effects,u)};if(l&&t){const O=t;t=(...j)=>{O(...j),q()}}let $=P?new Array(e.length).fill(Jn):Jn;const H=O=>{if(!(!(u.flags&1)||!u.dirty&&!O))if(t){const j=u.run();if(o||N||(P?j.some((z,ue)=>wt(z,$[ue])):wt(j,$))){g&&g();const z=zt;zt=u;try{const ue=[j,$===Jn?void 0:P&&$[0]===Jn?[]:$,b];$=j,a?a(t,3,ue):t(...ue)}finally{zt=z}}}else u.run()};return i&&i(H),u=new Bl(h),u.scheduler=r?()=>r(H,!1):H,b=O=>Qi(O,!1,u),g=u.onStop=()=>{const O=ns.get(u);if(O){if(a)a(O,4);else for(const j of O)j();ns.delete(u)}},t?s?H(!0):$=u.run():r?r(H.bind(null,!0),!0):u.run(),q.pause=u.pause.bind(u),q.resume=u.resume.bind(u),q.stop=q,q}function Ot(e,t=1/0,n){if(t<=0||!we(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ie(e))Ot(e.value,t,n);else if(ee(e))for(let s=0;s{Ot(s,t,n)});else if(Ml(e)){for(const s in e)Ot(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ot(e[s],t,n)}return e}/**
-* @vue/runtime-core v3.5.35
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function Fn(e,t,n,s){try{return s?e(...s):e()}catch(o){ys(o,t,n)}}function mt(e,t,n,s){if(oe(e)){const o=Fn(e,t,n,s);return o&&Nl(o)&&o.catch(l=>{ys(l,t,n)}),o}if(ee(e)){const o=[];for(let l=0;l>>1,o=ze[s],l=$n(o);l=$n(n)?ze.push(e):ze.splice(ea(t),0,e),e.flags|=1,ir()}}function ir(){ss||(ss=rr.then(cr))}function ta(e){ee(e)?rn.push(...e):jt&&e.id===-1?jt.splice(tn+1,0,e):e.flags&1||(rn.push(e),e.flags|=1),ir()}function Do(e,t,n=_t+1){for(;n$n(n)-$n(s));if(rn.length=0,jt){jt.push(...t);return}for(jt=t,tn=0;tne.id==null?e.flags&2?-1:1/0:e.id;function cr(e){try{for(_t=0;_t{s._d&&is(-1);const l=os(t);let r;try{r=e(...o)}finally{os(l),s._d&&is(1)}return r};return s._n=!0,s._c=!0,s._d=!0,s}function je(e,t){if(tt===null)return e;const n=Ss(tt),s=e.dirs||(e.dirs=[]);for(let o=0;o1)return n&&oe(t)?t.call(s&&s.proxy):t}}function na(){return!!(Dr()||Qt)}const sa=Symbol.for("v-scx"),oa=()=>ct(sa);function Sn(e,t,n){return fr(e,t,n)}function fr(e,t,n=ke){const{immediate:s,deep:o,flush:l,once:r}=n,i=Ve({},n),a=t&&s||!t&&l!=="post";let f;if(Dn){if(l==="sync"){const b=oa();f=b.__watcherHandles||(b.__watcherHandles=[])}else if(!a){const b=()=>{};return b.stop=xt,b.resume=xt,b.pause=xt,b}}const u=He;i.call=(b,N,P)=>mt(b,u,N,P);let h=!1;l==="post"?i.scheduler=b=>{Qe(b,u&&u.suspense)}:l!=="sync"&&(h=!0,i.scheduler=(b,N)=>{N?b():wo(b)}),i.augmentJob=b=>{t&&(b.flags|=4),h&&(b.flags|=2,u&&(b.id=u.uid,b.i=u))};const g=Xi(e,t,i);return Dn&&(f?f.push(g):a&&g()),g}function la(e,t,n){const s=this.proxy,o=Pe(e)?e.includes(".")?dr(s,e):()=>s[e]:e.bind(s,s);let l;oe(t)?l=t:(l=t.handler,n=t);const r=Hn(this),i=fr(o,l.bind(s),n);return r(),i}function dr(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;oe.__isTeleport,Ds=Symbol("_leaveCb");function xo(e,t){e.shapeFlag&6&&e.component?(e.transition=t,xo(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function hr(e,t){return oe(e)?Ve({name:e.name},t,{setup:e}):e}function pr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Lo(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const ls=new WeakMap;function En(e,t,n,s,o=!1){if(ee(e)){e.forEach((P,F)=>En(P,t&&(ee(t)?t[F]:t),n,s,o));return}if(An(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&En(e,t,n,s.component.subTree);return}const l=s.shapeFlag&4?Ss(s.component):s.el,r=o?null:l,{i,r:a}=e,f=t&&t.r,u=i.refs===ke?i.refs={}:i.refs,h=i.setupState,g=ve(h),b=h===ke?Il:P=>Lo(u,P)?!1:be(g,P),N=(P,F)=>!(F&&Lo(u,F));if(f!=null&&f!==a){if(jo(t),Pe(f))u[f]=null,b(f)&&(h[f]=null);else if(Ie(f)){const P=t;N(f,P.k)&&(f.value=null),P.k&&(u[P.k]=null)}}if(oe(a))Fn(a,i,12,[r,u]);else{const P=Pe(a),F=Ie(a);if(P||F){const q=()=>{if(e.f){const $=P?b(a)?h[a]:u[a]:N()||!e.k?a.value:u[e.k];if(o)ee($)&&uo($,l);else if(ee($))$.includes(l)||$.push(l);else if(P)u[a]=[l],b(a)&&(h[a]=u[a]);else{const H=[l];N(a,e.k)&&(a.value=H),e.k&&(u[e.k]=H)}}else P?(u[a]=r,b(a)&&(h[a]=r)):F&&(N(a,e.k)&&(a.value=r),e.k&&(u[e.k]=r))};if(r){const $=()=>{q(),ls.delete(e)};$.id=-1,ls.set(e,$),Qe($,n)}else jo(e),q()}}}function jo(e){const t=ls.get(e);t&&(t.flags|=8,ls.delete(e))}vs().requestIdleCallback;vs().cancelIdleCallback;const An=e=>!!e.type.__asyncLoader,mr=e=>e.type.__isKeepAlive;function aa(e,t){vr(e,"a",t)}function ca(e,t){vr(e,"da",t)}function vr(e,t,n=He){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(bs(t,s,n),n){let o=n.parent;for(;o&&o.parent;)mr(o.parent.vnode)&&ua(s,t,n,o),o=o.parent}}function ua(e,t,n,s){const o=bs(t,e,s,!0);xs(()=>{uo(s[t],o)},n)}function bs(e,t,n=He,s=!1){if(n){const o=n[e]||(n[e]=[]),l=t.__weh||(t.__weh=(...r)=>{It();const i=Hn(n),a=mt(t,n,e,r);return i(),Nt(),a});return s?o.unshift(l):o.push(l),l}}const Mt=e=>(t,n=He)=>{(!Dn||e==="sp")&&bs(e,(...s)=>t(...s),n)},fa=Mt("bm"),ws=Mt("m"),da=Mt("bu"),ha=Mt("u"),pa=Mt("bum"),xs=Mt("um"),ma=Mt("sp"),va=Mt("rtg"),ga=Mt("rtc");function _a(e,t=He){bs("ec",e,t)}const ya="components";function Vo(e,t){return wa(ya,e,!0,t)||e}const ba=Symbol.for("v-ndc");function wa(e,t,n=!0,s=!1){const o=tt||He;if(o){const l=o.type;{const i=rc(l,!1);if(i&&(i===t||i===Ye(t)||i===ps(Ye(t))))return l}const r=Fo(o[e]||l[e],t)||Fo(o.appContext[e],t);return!r&&s?l:r}}function Fo(e,t){return e&&(e[t]||e[Ye(t)]||e[ps(Ye(t))])}function me(e,t,n,s){let o;const l=n,r=ee(e);if(r||Pe(e)){const i=r&&Pt(e);let a=!1,f=!1;i&&(a=!st(e),f=$t(e),e=gs(e)),o=new Array(e.length);for(let u=0,h=e.length;ut(i,a,void 0,l));else{const i=Object.keys(e);o=new Array(i.length);for(let a=0,f=i.length;ae?Lr(e)?Ss(e):Qs(e.parent):null,Rn=Ve(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Qs(e.parent),$root:e=>Qs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>_r(e),$forceUpdate:e=>e.f||(e.f=()=>{wo(e.update)}),$nextTick:e=>e.n||(e.n=Un.bind(e.proxy)),$watch:e=>la.bind(e)}),Ls=(e,t)=>e!==ke&&!e.__isScriptSetup&&be(e,t),xa={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:l,accessCache:r,type:i,appContext:a}=e;if(t[0]!=="$"){const g=r[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return l[t]}else{if(Ls(s,t))return r[t]=1,s[t];if(o!==ke&&be(o,t))return r[t]=2,o[t];if(be(l,t))return r[t]=3,l[t];if(n!==ke&&be(n,t))return r[t]=4,n[t];Xs&&(r[t]=0)}}const f=Rn[t];let u,h;if(f)return t==="$attrs"&&Ue(e.attrs,"get",""),f(e);if((u=i.__cssModules)&&(u=u[t]))return u;if(n!==ke&&be(n,t))return r[t]=4,n[t];if(h=a.config.globalProperties,be(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:l}=e;return Ls(o,t)?(o[t]=n,!0):s!==ke&&be(s,t)?(s[t]=n,!0):be(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(l[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:l,type:r}},i){let a;return!!(n[i]||e!==ke&&i[0]!=="$"&&be(e,i)||Ls(t,i)||be(l,i)||be(s,i)||be(Rn,i)||be(o.config.globalProperties,i)||(a=r.__cssModules)&&a[i])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:be(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Uo(e){return ee(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Xs=!0;function ka(e){const t=_r(e),n=e.proxy,s=e.ctx;Xs=!1,t.beforeCreate&&Ho(t.beforeCreate,e,"bc");const{data:o,computed:l,methods:r,watch:i,provide:a,inject:f,created:u,beforeMount:h,mounted:g,beforeUpdate:b,updated:N,activated:P,deactivated:F,beforeDestroy:q,beforeUnmount:$,destroyed:H,unmounted:O,render:j,renderTracked:z,renderTriggered:ue,errorCaptured:le,serverPrefetch:re,expose:B,inheritAttrs:J,components:he,directives:X,filters:Ce}=t;if(f&&Ca(f,s,null),r)for(const ne in r){const fe=r[ne];oe(fe)&&(s[ne]=fe.bind(n))}if(o){const ne=o.call(n,n);we(ne)&&(e.data=Vn(ne))}if(Xs=!0,l)for(const ne in l){const fe=l[ne],dt=oe(fe)?fe.bind(n,n):oe(fe.get)?fe.get.bind(n,n):xt,Xe=!oe(fe)&&oe(fe.set)?fe.set.bind(n):xt,Ze=_e({get:dt,set:Xe});Object.defineProperty(s,ne,{enumerable:!0,configurable:!0,get:()=>Ze.value,set:Fe=>Ze.value=Fe})}if(i)for(const ne in i)gr(i[ne],s,n,ne);if(a){const ne=oe(a)?a.call(n):a;Reflect.ownKeys(ne).forEach(fe=>{Zn(fe,ne[fe])})}u&&Ho(u,e,"c");function xe(ne,fe){ee(fe)?fe.forEach(dt=>ne(dt.bind(n))):fe&&ne(fe.bind(n))}if(xe(fa,h),xe(ws,g),xe(da,b),xe(ha,N),xe(aa,P),xe(ca,F),xe(_a,le),xe(ga,z),xe(va,ue),xe(pa,$),xe(xs,O),xe(ma,re),ee(B))if(B.length){const ne=e.exposed||(e.exposed={});B.forEach(fe=>{Object.defineProperty(ne,fe,{get:()=>n[fe],set:dt=>n[fe]=dt,enumerable:!0})})}else e.exposed||(e.exposed={});j&&e.render===xt&&(e.render=j),J!=null&&(e.inheritAttrs=J),he&&(e.components=he),X&&(e.directives=X),re&&pr(e)}function Ca(e,t,n=xt){ee(e)&&(e=Zs(e));for(const s in e){const o=e[s];let l;we(o)?"default"in o?l=ct(o.from||s,o.default,!0):l=ct(o.from||s):l=ct(o),Ie(l)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>l.value,set:r=>l.value=r}):t[s]=l}}function Ho(e,t,n){mt(ee(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function gr(e,t,n,s){let o=s.includes(".")?dr(n,s):()=>n[s];if(Pe(e)){const l=t[e];oe(l)&&Sn(o,l)}else if(oe(e))Sn(o,e.bind(n));else if(we(e))if(ee(e))e.forEach(l=>gr(l,t,n,s));else{const l=oe(e.handler)?e.handler.bind(n):t[e.handler];oe(l)&&Sn(o,l,e)}}function _r(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:l,config:{optionMergeStrategies:r}}=e.appContext,i=l.get(t);let a;return i?a=i:!o.length&&!n&&!s?a=t:(a={},o.length&&o.forEach(f=>rs(a,f,r,!0)),rs(a,t,r)),we(t)&&l.set(t,a),a}function rs(e,t,n,s=!1){const{mixins:o,extends:l}=t;l&&rs(e,l,n,!0),o&&o.forEach(r=>rs(e,r,n,!0));for(const r in t)if(!(s&&r==="expose")){const i=Sa[r]||n&&n[r];e[r]=i?i(e[r],t[r]):t[r]}return e}const Sa={data:Bo,props:Ko,emits:Ko,methods:bn,computed:bn,beforeCreate:We,created:We,beforeMount:We,mounted:We,beforeUpdate:We,updated:We,beforeDestroy:We,beforeUnmount:We,destroyed:We,unmounted:We,activated:We,deactivated:We,errorCaptured:We,serverPrefetch:We,components:bn,directives:bn,watch:Aa,provide:Bo,inject:Ea};function Bo(e,t){return t?e?function(){return Ve(oe(e)?e.call(this,this):e,oe(t)?t.call(this,this):t)}:t:e}function Ea(e,t){return bn(Zs(e),Zs(t))}function Zs(e){if(ee(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ye(t)}Modifiers`]||e[`${Kt(t)}Modifiers`];function Pa(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ke;let o=n;const l=t.startsWith("update:"),r=l&&Ta(s,t.slice(7));r&&(r.trim&&(o=n.map(u=>Pe(u)?u.trim():u)),r.number&&(o=n.map(ms)));let i,a=s[i=Ps(t)]||s[i=Ps(Ye(t))];!a&&l&&(a=s[i=Ps(Kt(t))]),a&&mt(a,e,6,o);const f=s[i+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,mt(f,e,6,o)}}const Ia=new WeakMap;function br(e,t,n=!1){const s=n?Ia:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const l=e.emits;let r={},i=!1;if(!oe(e)){const a=f=>{const u=br(f,t,!0);u&&(i=!0,Ve(r,u))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!l&&!i?(we(e)&&s.set(e,null),null):(ee(l)?l.forEach(a=>r[a]=null):Ve(r,l),we(e)&&s.set(e,r),r)}function ks(e,t){return!e||!us(t)?!1:(t=t.slice(2).replace(/Once$/,""),be(e,t[0].toLowerCase()+t.slice(1))||be(e,Kt(t))||be(e,t))}function Go(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[l],slots:r,attrs:i,emit:a,render:f,renderCache:u,props:h,data:g,setupState:b,ctx:N,inheritAttrs:P}=e,F=os(e);let q,$;try{if(n.shapeFlag&4){const O=o||s,j=O;q=bt(f.call(j,O,u,h,b,g,N)),$=i}else{const O=t;q=bt(O.length>1?O(h,{attrs:i,slots:r,emit:a}):O(h,null)),$=t.props?i:Na(i)}}catch(O){On.length=0,ys(O,e,1),q=Re(Ht)}let H=q;if($&&P!==!1){const O=Object.keys($),{shapeFlag:j}=H;O.length&&j&7&&(l&&O.some(fs)&&($=$a($,l)),H=un(H,$,!1,!0))}return n.dirs&&(H=un(H,null,!1,!0),H.dirs=H.dirs?H.dirs.concat(n.dirs):n.dirs),n.transition&&xo(H,n.transition),q=H,os(F),q}const Na=e=>{let t;for(const n in e)(n==="class"||n==="style"||us(n))&&((t||(t={}))[n]=e[n]);return t},$a=(e,t)=>{const n={};for(const s in e)(!fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ma(e,t,n){const{props:s,children:o,component:l}=e,{props:r,children:i,patchFlag:a}=t,f=l.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?Wo(s,r,f):!!r;if(a&8){const u=t.dynamicProps;for(let h=0;hObject.create(xr),Cr=e=>Object.getPrototypeOf(e)===xr;function La(e,t,n,s=!1){const o={},l=kr();e.propsDefaults=Object.create(null),Sr(e,t,o,l);for(const r in e.propsOptions[0])r in o||(o[r]=void 0);n?e.props=s?o:sr(o):e.type.props?e.props=o:e.props=l,e.attrs=l}function ja(e,t,n,s){const{props:o,attrs:l,vnode:{patchFlag:r}}=e,i=ve(o),[a]=e.propsOptions;let f=!1;if((s||r>0)&&!(r&16)){if(r&8){const u=e.vnode.dynamicProps;for(let h=0;h{a=!0;const[g,b]=Er(h,t,!0);Ve(r,g),b&&i.push(...b)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!l&&!a)return we(e)&&s.set(e,on),on;if(ee(l))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",Co=e=>ee(e)?e.map(bt):[bt(e)],Fa=(e,t,n)=>{if(t._n)return t;const s=Xn((...o)=>Co(t(...o)),n);return s._c=!1,s},Ar=(e,t,n)=>{const s=e._ctx;for(const o in e){if(ko(o))continue;const l=e[o];if(oe(l))t[o]=Fa(o,l,s);else if(l!=null){const r=Co(l);t[o]=()=>r}}},Rr=(e,t)=>{const n=Co(t);e.slots.default=()=>n},Or=(e,t,n)=>{for(const s in t)(n||!ko(s))&&(e[s]=t[s])},Ua=(e,t,n)=>{const s=e.slots=kr();if(e.vnode.shapeFlag&32){const o=t._;o?(Or(s,t,n),n&&Dl(s,"_",o,!0)):Ar(t,s)}else t&&Rr(e,t)},Ha=(e,t,n)=>{const{vnode:s,slots:o}=e;let l=!0,r=ke;if(s.shapeFlag&32){const i=t._;i?n&&i===1?l=!1:Or(o,t,n):(l=!t.$stable,Ar(t,o)),r=t}else t&&(Rr(e,t),r={default:1});if(l)for(const i in o)!ko(i)&&r[i]==null&&delete o[i]},Qe=qa;function Ba(e){return Ka(e)}function Ka(e,t){const n=vs();n.__VUE__=!0;const{insert:s,remove:o,patchProp:l,createElement:r,createText:i,createComment:a,setText:f,setElementText:u,parentNode:h,nextSibling:g,setScopeId:b=xt,insertStaticContent:N}=e,P=(d,p,_,x=null,E=null,w=null,M=void 0,T=null,I=!!p.dynamicChildren)=>{if(d===p)return;d&&!_n(d,p)&&(x=S(d),Fe(d,E,w,!0),d=null),p.patchFlag===-2&&(I=!1,p.dynamicChildren=null);const{type:A,ref:Y,shapeFlag:V}=p;switch(A){case Cs:F(d,p,_,x);break;case Ht:q(d,p,_,x);break;case Vs:d==null&&$(p,_,x,M);break;case Z:he(d,p,_,x,E,w,M,T,I);break;default:V&1?j(d,p,_,x,E,w,M,T,I):V&6?X(d,p,_,x,E,w,M,T,I):(V&64||V&128)&&A.process(d,p,_,x,E,w,M,T,I,W)}Y!=null&&E?En(Y,d&&d.ref,w,p||d,!p):Y==null&&d&&d.ref!=null&&En(d.ref,null,w,d,!0)},F=(d,p,_,x)=>{if(d==null)s(p.el=i(p.children),_,x);else{const E=p.el=d.el;p.children!==d.children&&f(E,p.children)}},q=(d,p,_,x)=>{d==null?s(p.el=a(p.children||""),_,x):p.el=d.el},$=(d,p,_,x)=>{[d.el,d.anchor]=N(d.children,p,_,x,d.el,d.anchor)},H=({el:d,anchor:p},_,x)=>{let E;for(;d&&d!==p;)E=g(d),s(d,_,x),d=E;s(p,_,x)},O=({el:d,anchor:p})=>{let _;for(;d&&d!==p;)_=g(d),o(d),d=_;o(p)},j=(d,p,_,x,E,w,M,T,I)=>{if(p.type==="svg"?M="svg":p.type==="math"&&(M="mathml"),d==null)z(p,_,x,E,w,M,T,I);else{const A=d.el&&d.el._isVueCE?d.el:null;try{A&&A._beginPatch(),re(d,p,E,w,M,T,I)}finally{A&&A._endPatch()}}},z=(d,p,_,x,E,w,M,T)=>{let I,A;const{props:Y,shapeFlag:V,transition:G,dirs:Q}=d;if(I=d.el=r(d.type,w,Y&&Y.is,Y),V&8?u(I,d.children):V&16&&le(d.children,I,null,x,E,js(d,w),M,T),Q&&Wt(d,null,x,"created"),ue(I,d,d.scopeId,M,x),Y){for(const se in Y)se!=="value"&&!xn(se)&&l(I,se,null,Y[se],w,x);"value"in Y&&l(I,"value",null,Y.value,w),(A=Y.onVnodeBeforeMount)&>(A,x,d)}Q&&Wt(d,null,x,"beforeMount");const ie=Ga(E,G);ie&&G.beforeEnter(I),s(I,p,_),((A=Y&&Y.onVnodeMounted)||ie||Q)&&Qe(()=>{try{A&>(A,x,d),ie&&G.enter(I),Q&&Wt(d,null,x,"mounted")}finally{}},E)},ue=(d,p,_,x,E)=>{if(_&&b(d,_),x)for(let w=0;w{for(let A=I;A{const T=p.el=d.el;let{patchFlag:I,dynamicChildren:A,dirs:Y}=p;I|=d.patchFlag&16;const V=d.props||ke,G=p.props||ke;let Q;if(_&&qt(_,!1),(Q=G.onVnodeBeforeUpdate)&>(Q,_,p,d),Y&&Wt(p,d,_,"beforeUpdate"),_&&qt(_,!0),(V.innerHTML&&G.innerHTML==null||V.textContent&&G.textContent==null)&&u(T,""),A?B(d.dynamicChildren,A,T,_,x,js(p,E),w):M||fe(d,p,T,null,_,x,js(p,E),w,!1),I>0){if(I&16)J(T,V,G,_,E);else if(I&2&&V.class!==G.class&&l(T,"class",null,G.class,E),I&4&&l(T,"style",V.style,G.style,E),I&8){const ie=p.dynamicProps;for(let se=0;se{Q&>(Q,_,p,d),Y&&Wt(p,d,_,"updated")},x)},B=(d,p,_,x,E,w,M)=>{for(let T=0;T{if(p!==_){if(p!==ke)for(const w in p)!xn(w)&&!(w in _)&&l(d,w,p[w],null,E,x);for(const w in _){if(xn(w))continue;const M=_[w],T=p[w];M!==T&&w!=="value"&&l(d,w,T,M,E,x)}"value"in _&&l(d,"value",p.value,_.value,E)}},he=(d,p,_,x,E,w,M,T,I)=>{const A=p.el=d?d.el:i(""),Y=p.anchor=d?d.anchor:i("");let{patchFlag:V,dynamicChildren:G,slotScopeIds:Q}=p;Q&&(T=T?T.concat(Q):Q),d==null?(s(A,_,x),s(Y,_,x),le(p.children||[],_,Y,E,w,M,T,I)):V>0&&V&64&&G&&d.dynamicChildren&&d.dynamicChildren.length===G.length?(B(d.dynamicChildren,G,_,E,w,M,T),(p.key!=null||E&&p===E.subTree)&&Tr(d,p,!0)):fe(d,p,_,Y,E,w,M,T,I)},X=(d,p,_,x,E,w,M,T,I)=>{p.slotScopeIds=T,d==null?p.shapeFlag&512?E.ctx.activate(p,_,x,M,I):Ce(p,_,x,E,w,M,I):Ne(d,p,I)},Ce=(d,p,_,x,E,w,M)=>{const T=d.component=tc(d,x,E);if(mr(d)&&(T.ctx.renderer=W),nc(T,!1,M),T.asyncDep){if(E&&E.registerDep(T,xe,M),!d.el){const I=T.subTree=Re(Ht);q(null,I,p,_),d.placeholder=I.el}}else xe(T,d,p,_,E,w,M)},Ne=(d,p,_)=>{const x=p.component=d.component;if(Ma(d,p,_))if(x.asyncDep&&!x.asyncResolved){ne(x,p,_);return}else x.next=p,x.update();else p.el=d.el,x.vnode=p},xe=(d,p,_,x,E,w,M)=>{const T=()=>{if(d.isMounted){let{next:V,bu:G,u:Q,parent:ie,vnode:se}=d;{const rt=Pr(d);if(rt){V&&(V.el=se.el,ne(d,V,M)),rt.asyncDep.then(()=>{Qe(()=>{d.isUnmounted||A()},E)});return}}let pe=V,Ae;qt(d,!1),V?(V.el=se.el,ne(d,V,M)):V=se,G&&Qn(G),(Ae=V.props&&V.props.onVnodeBeforeUpdate)&>(Ae,ie,V,se),qt(d,!0);const Oe=Go(d),lt=d.subTree;d.subTree=Oe,P(lt,Oe,h(lt.el),S(lt),d,E,w),V.el=Oe.el,pe===null&&Da(d,Oe.el),Q&&Qe(Q,E),(Ae=V.props&&V.props.onVnodeUpdated)&&Qe(()=>gt(Ae,ie,V,se),E)}else{let V;const{el:G,props:Q}=p,{bm:ie,m:se,parent:pe,root:Ae,type:Oe}=d,lt=An(p);qt(d,!1),ie&&Qn(ie),!lt&&(V=Q&&Q.onVnodeBeforeMount)&>(V,pe,p),qt(d,!0);{Ae.ce&&Ae.ce._hasShadowRoot()&&Ae.ce._injectChildStyle(Oe,d.parent?d.parent.type:void 0);const rt=d.subTree=Go(d);P(null,rt,_,x,d,E,w),p.el=rt.el}if(se&&Qe(se,E),!lt&&(V=Q&&Q.onVnodeMounted)){const rt=p;Qe(()=>gt(V,pe,rt),E)}(p.shapeFlag&256||pe&&An(pe.vnode)&&pe.vnode.shapeFlag&256)&&d.a&&Qe(d.a,E),d.isMounted=!0,p=_=x=null}};d.scope.on();const I=d.effect=new Bl(T);d.scope.off();const A=d.update=I.run.bind(I),Y=d.job=I.runIfDirty.bind(I);Y.i=d,Y.id=d.uid,I.scheduler=()=>wo(Y),qt(d,!0),A()},ne=(d,p,_)=>{p.component=d;const x=d.vnode.props;d.vnode=p,d.next=null,ja(d,p.props,x,_),Ha(d,p.children,_),It(),Do(d),Nt()},fe=(d,p,_,x,E,w,M,T,I=!1)=>{const A=d&&d.children,Y=d?d.shapeFlag:0,V=p.children,{patchFlag:G,shapeFlag:Q}=p;if(G>0){if(G&128){Xe(A,V,_,x,E,w,M,T,I);return}else if(G&256){dt(A,V,_,x,E,w,M,T,I);return}}Q&8?(Y&16&&$e(A,E,w),V!==A&&u(_,V)):Y&16?Q&16?Xe(A,V,_,x,E,w,M,T,I):$e(A,E,w,!0):(Y&8&&u(_,""),Q&16&&le(V,_,x,E,w,M,T,I))},dt=(d,p,_,x,E,w,M,T,I)=>{d=d||on,p=p||on;const A=d.length,Y=p.length,V=Math.min(A,Y);let G;for(G=0;GY?$e(d,E,w,!0,!1,V):le(p,_,x,E,w,M,T,I,V)},Xe=(d,p,_,x,E,w,M,T,I)=>{let A=0;const Y=p.length;let V=d.length-1,G=Y-1;for(;A<=V&&A<=G;){const Q=d[A],ie=p[A]=I?At(p[A]):bt(p[A]);if(_n(Q,ie))P(Q,ie,_,null,E,w,M,T,I);else break;A++}for(;A<=V&&A<=G;){const Q=d[V],ie=p[G]=I?At(p[G]):bt(p[G]);if(_n(Q,ie))P(Q,ie,_,null,E,w,M,T,I);else break;V--,G--}if(A>V){if(A<=G){const Q=G+1,ie=QG)for(;A<=V;)Fe(d[A],E,w,!0),A++;else{const Q=A,ie=A,se=new Map;for(A=ie;A<=G;A++){const Ge=p[A]=I?At(p[A]):bt(p[A]);Ge.key!=null&&se.set(Ge.key,A)}let pe,Ae=0;const Oe=G-ie+1;let lt=!1,rt=0;const Gt=new Array(Oe);for(A=0;A=Oe){Fe(Ge,E,w,!0);continue}let it;if(Ge.key!=null)it=se.get(Ge.key);else for(pe=ie;pe<=G;pe++)if(Gt[pe-ie]===0&&_n(Ge,p[pe])){it=pe;break}it===void 0?Fe(Ge,E,w,!0):(Gt[it-ie]=A+1,it>=rt?rt=it:lt=!0,P(Ge,p[it],_,null,E,w,M,T,I),Ae++)}const Kn=lt?Wa(Gt):on;for(pe=Kn.length-1,A=Oe-1;A>=0;A--){const Ge=ie+A,it=p[Ge],Gn=p[Ge+1],Wn=Ge+1{const{el:w,type:M,transition:T,children:I,shapeFlag:A}=d;if(A&6){Ze(d.component.subTree,p,_,x);return}if(A&128){d.suspense.move(p,_,x);return}if(A&64){M.move(d,p,_,W);return}if(M===Z){s(w,p,_);for(let V=0;VT.enter(w),E));else{const{leave:V,delayLeave:G,afterLeave:Q}=T,ie=()=>{d.ctx.isUnmounted?o(w):s(w,p,_)},se=()=>{const pe=w._isLeaving||!!w[Ds];w._isLeaving&&w[Ds](!0),T.persisted&&!pe?ie():V(w,()=>{ie(),Q&&Q()})};G?G(w,ie,se):se()}else s(w,p,_)},Fe=(d,p,_,x=!1,E=!1)=>{const{type:w,props:M,ref:T,children:I,dynamicChildren:A,shapeFlag:Y,patchFlag:V,dirs:G,cacheIndex:Q,memo:ie}=d;if(V===-2&&(E=!1),T!=null&&(It(),En(T,null,_,d,!0),Nt()),Q!=null&&(p.renderCache[Q]=void 0),Y&256){p.ctx.deactivate(d);return}const se=Y&1&&G,pe=!An(d);let Ae;if(pe&&(Ae=M&&M.onVnodeBeforeUnmount)&>(Ae,p,d),Y&6)Ke(d.component,_,x);else{if(Y&128){d.suspense.unmount(_,x);return}se&&Wt(d,null,p,"beforeUnmount"),Y&64?d.type.remove(d,p,_,W,x):A&&!A.hasOnce&&(w!==Z||V>0&&V&64)?$e(A,p,_,!1,!0):(w===Z&&V&384||!E&&Y&16)&&$e(I,p,_),x&&Be(d)}const Oe=ie!=null&&Q==null;(pe&&(Ae=M&&M.onVnodeUnmounted)||se||Oe)&&Qe(()=>{Ae&>(Ae,p,d),se&&Wt(d,null,p,"unmounted"),Oe&&(d.el=null)},_)},Be=d=>{const{type:p,el:_,anchor:x,transition:E}=d;if(p===Z){ot(_,x);return}if(p===Vs){O(d);return}const w=()=>{o(_),E&&!E.persisted&&E.afterLeave&&E.afterLeave()};if(d.shapeFlag&1&&E&&!E.persisted){const{leave:M,delayLeave:T}=E,I=()=>M(_,w);T?T(d.el,w,I):I()}else w()},ot=(d,p)=>{let _;for(;d!==p;)_=g(d),o(d),d=_;o(p)},Ke=(d,p,_)=>{const{bum:x,scope:E,job:w,subTree:M,um:T,m:I,a:A}=d;zo(I),zo(A),x&&Qn(x),E.stop(),w&&(w.flags|=8,Fe(M,d,p,_)),T&&Qe(T,p),Qe(()=>{d.isUnmounted=!0},p)},$e=(d,p,_,x=!1,E=!1,w=0)=>{for(let M=w;M{if(d.shapeFlag&6)return S(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const p=g(d.anchor||d.el),_=p&&p[ra];return _?g(_):p};let U=!1;const L=(d,p,_)=>{let x;d==null?p._vnode&&(Fe(p._vnode,null,null,!0),x=p._vnode.component):P(p._vnode||null,d,p,null,null,null,_),p._vnode=d,U||(U=!0,Do(x),ar(),U=!1)},W={p:P,um:Fe,m:Ze,r:Be,mt:Ce,mc:le,pc:fe,pbc:B,n:S,o:e};return{render:L,hydrate:void 0,createApp:Oa(L)}}function js({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function qt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ga(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Tr(e,t,n=!1){const s=e.children,o=t.children;if(ee(s)&&ee(o))for(let l=0;l>1,e[n[i]]0&&(t[s]=n[l-1]),n[l]=s)}}for(l=n.length,r=n[l-1];l-- >0;)n[l]=r,r=t[r];return n}function Pr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Pr(t)}function zo(e){if(e)for(let t=0;te.__isSuspense;function qa(e,t){t&&t.pendingBranch?ee(e)?t.effects.push(...e):t.effects.push(e):ta(e)}const Z=Symbol.for("v-fgt"),Cs=Symbol.for("v-txt"),Ht=Symbol.for("v-cmt"),Vs=Symbol.for("v-stc"),On=[];let nt=null;function k(e=!1){On.push(nt=e?null:[])}function za(){On.pop(),nt=On[On.length-1]||null}let Mn=1;function is(e,t=!1){Mn+=e,e<0&&nt&&t&&(nt.hasOnce=!0)}function $r(e){return e.dynamicChildren=Mn>0?nt||on:null,za(),Mn>0&&nt&&nt.push(e),e}function C(e,t,n,s,o,l){return $r(c(e,t,n,s,o,l,!0))}function Ja(e,t,n,s,o){return $r(Re(e,t,n,s,o,!0))}function as(e){return e?e.__v_isVNode===!0:!1}function _n(e,t){return e.type===t.type&&e.key===t.key}const Mr=({key:e})=>e??null,es=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Pe(e)||Ie(e)||oe(e)?{i:tt,r:e,k:t,f:!!n}:e:null);function c(e,t=null,n=null,s=0,o=null,l=e===Z?0:1,r=!1,i=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Mr(t),ref:t&&es(t),scopeId:ur,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:tt};return i?(So(a,n),l&128&&e.normalize(a)):n&&(a.shapeFlag|=Pe(n)?8:16),Mn>0&&!r&&nt&&(a.patchFlag>0||l&6)&&a.patchFlag!==32&&nt.push(a),a}const Re=Ya;function Ya(e,t=null,n=null,s=0,o=null,l=!1){if((!e||e===ba)&&(e=Ht),as(e)){const i=un(e,t,!0);return n&&So(i,n),Mn>0&&!l&&nt&&(i.shapeFlag&6?nt[nt.indexOf(e)]=i:nt.push(i)),i.patchFlag=-2,i}if(ic(e)&&(e=e.__vccOpts),t){t=Qa(t);let{class:i,style:a}=t;i&&!Pe(i)&&(t.class=Je(i)),we(a)&&(_s(a)&&!ee(a)&&(a=Ve({},a)),t.style=fo(a))}const r=Pe(e)?1:Nr(e)?128:ia(e)?64:we(e)?4:oe(e)?2:0;return c(e,t,n,s,o,r,l,!0)}function Qa(e){return e?_s(e)||Cr(e)?Ve({},e):e:null}function un(e,t,n=!1,s=!1){const{props:o,ref:l,patchFlag:r,children:i,transition:a}=e,f=t?Xa(o||{},t):o,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&Mr(f),ref:t&&t.ref?n&&l?ee(l)?l.concat(es(t)):[l,es(t)]:es(t):l,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Z?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&un(e.ssContent),ssFallback:e.ssFallback&&un(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&xo(u,a.clone(u)),u}function ge(e=" ",t=0){return Re(Cs,null,e,t)}function Ee(e="",t=!1){return t?(k(),Ja(Ht,null,e)):Re(Ht,null,e)}function bt(e){return e==null||typeof e=="boolean"?Re(Ht):ee(e)?Re(Z,null,e.slice()):as(e)?At(e):Re(Cs,null,String(e))}function At(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:un(e)}function So(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(ee(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),So(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Cr(t)?t._ctx=tt:o===3&&tt&&(tt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else oe(t)?(t={default:t,_ctx:tt},n=32):(t=String(t),s&64?(n=16,t=[ge(t)]):n=8);e.children=t,e.shapeFlag|=n}function Xa(...e){const t={};for(let n=0;nHe||tt;let cs,to;{const e=vs(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),l=>{o.length>1?o.forEach(r=>r(l)):o[0](l)}};cs=t("__VUE_INSTANCE_SETTERS__",n=>He=n),to=t("__VUE_SSR_SETTERS__",n=>Dn=n)}const Hn=e=>{const t=He;return cs(e),e.scope.on(),()=>{e.scope.off(),cs(t)}},Jo=()=>{He&&He.scope.off(),cs(null)};function Lr(e){return e.vnode.shapeFlag&4}let Dn=!1;function nc(e,t=!1,n=!1){t&&to(t);const{props:s,children:o}=e.vnode,l=Lr(e);La(e,s,l,t),Ua(e,o,n||t);const r=l?sc(e,t):void 0;return t&&to(!1),r}function sc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,xa);const{setup:s}=n;if(s){It();const o=e.setupContext=s.length>1?lc(e):null,l=Hn(e),r=Fn(s,e,0,[e.props,o]),i=Nl(r);if(Nt(),l(),(i||e.sp)&&!An(e)&&pr(e),i){if(r.then(Jo,Jo),t)return r.then(a=>{Yo(e,a)}).catch(a=>{ys(a,e,0)});e.asyncDep=r}else Yo(e,r)}else jr(e)}function Yo(e,t,n){oe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:we(t)&&(e.setupState=lr(t)),jr(e)}function jr(e,t,n){const s=e.type;e.render||(e.render=s.render||xt);{const o=Hn(e);It();try{ka(e)}finally{Nt(),o()}}}const oc={get(e,t){return Ue(e,"get",""),e[t]}};function lc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,oc),slots:e.slots,emit:e.emit,expose:t}}function Ss(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(lr(bo(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Rn)return Rn[n](e)},has(t,n){return n in t||n in Rn}})):e.proxy}function rc(e,t=!0){return oe(e)?e.displayName||e.name:e.name||t&&e.__name}function ic(e){return oe(e)&&"__vccOpts"in e}const _e=(e,t)=>Yi(e,t,Dn);function Vr(e,t,n){try{is(-1);const s=arguments.length;return s===2?we(t)&&!ee(t)?as(t)?Re(e,null,[t]):Re(e,t):Re(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&as(n)&&(n=[n]),Re(e,t,n))}finally{is(1)}}const ac="3.5.35";/**
-* @vue/runtime-dom v3.5.35
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let no;const Qo=typeof window<"u"&&window.trustedTypes;if(Qo)try{no=Qo.createPolicy("vue",{createHTML:e=>e})}catch{}const Fr=no?e=>no.createHTML(e):e=>e,cc="http://www.w3.org/2000/svg",uc="http://www.w3.org/1998/Math/MathML",Et=typeof document<"u"?document:null,Xo=Et&&Et.createElement("template"),fc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?Et.createElementNS(cc,e):t==="mathml"?Et.createElementNS(uc,e):n?Et.createElement(e,{is:n}):Et.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>Et.createTextNode(e),createComment:e=>Et.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Et.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,l){const r=n?n.previousSibling:t.lastChild;if(o&&(o===l||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===l||!(o=o.nextSibling)););else{Xo.innerHTML=Fr(s==="svg"?``:s==="mathml"?``:e);const i=Xo.content;if(s==="svg"||s==="mathml"){const a=i.firstChild;for(;a.firstChild;)i.appendChild(a.firstChild);i.removeChild(a)}t.insertBefore(i,n)}return[r?r.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},dc=Symbol("_vtc");function hc(e,t,n){const s=e[dc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Zo=Symbol("_vod"),pc=Symbol("_vsh"),mc=Symbol(""),vc=/(?:^|;)\s*display\s*:/;function gc(e,t,n){const s=e.style,o=Pe(n);let l=!1;if(n&&!o){if(t)if(Pe(t))for(const r of t.split(";")){const i=r.slice(0,r.indexOf(":")).trim();n[i]==null&&wn(s,i,"")}else for(const r in t)n[r]==null&&wn(s,r,"");for(const r in n){r==="display"&&(l=!0);const i=n[r];i!=null?yc(e,r,!Pe(t)&&t?t[r]:void 0,i)||wn(s,r,i):wn(s,r,"")}}else if(o){if(t!==n){const r=s[mc];r&&(n+=";"+r),s.cssText=n,l=vc.test(n)}}else t&&e.removeAttribute("style");Zo in e&&(e[Zo]=l?s.display:"",e[pc]&&(s.display="none"))}const el=/\s*!important$/;function wn(e,t,n){if(ee(n))n.forEach(s=>wn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=_c(e,t);el.test(n)?e.setProperty(Kt(s),n.replace(el,""),"important"):e[s]=n}}const tl=["Webkit","Moz","ms"],Fs={};function _c(e,t){const n=Fs[t];if(n)return n;let s=Ye(t);if(s!=="filter"&&s in e)return Fs[t]=s;s=ps(s);for(let o=0;oUs||(kc.then(()=>Us=0),Us=Date.now());function Sc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const o=n.value;if(ee(o)){const l=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{l.call(s),s._stopped=!0};const r=o.slice(),i=[s];for(let a=0;ae.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ec=(e,t,n,s,o,l)=>{const r=o==="svg";t==="class"?hc(e,s,r):t==="style"?gc(e,n,s):us(t)?fs(t)||wc(e,t,n,s,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ac(e,t,s,r))?(ol(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&sl(e,t,s,r,l,t!=="value")):e._isVueCE&&(Rc(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Pe(s)))?ol(e,Ye(t),s,l,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),sl(e,t,s,r))};function Ac(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&il(t)&&oe(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return il(t)&&Pe(n)?!1:t in e}function Rc(e,t){const n=e._def.props;if(!n)return!1;const s=Ye(t);return Array.isArray(n)?n.some(o=>Ye(o)===s):Object.keys(n).some(o=>Ye(o)===s)}const Bt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ee(t)?n=>Qn(t,n):t};function Oc(e){e.target.composing=!0}function al(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ut=Symbol("_assign");function cl(e,t,n){return t&&(e=e.trim()),n&&(e=ms(e)),e}const et={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[ut]=Bt(o);const l=s||o.props&&o.props.type==="number";Tt(e,t?"change":"input",r=>{r.target.composing||e[ut](cl(e.value,n,l))}),(n||l)&&Tt(e,"change",()=>{e.value=cl(e.value,n,l)}),t||(Tt(e,"compositionstart",Oc),Tt(e,"compositionend",al),Tt(e,"change",al))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:l}},r){if(e[ut]=Bt(r),e.composing)return;const i=(l||e.type==="number")&&!/^0\d/.test(e.value)?ms(e.value):e.value,a=t??"";if(i===a)return;const f=e.getRootNode();(f instanceof Document||f instanceof ShadowRoot)&&f.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===a)||(e.value=a)}},Tc={deep:!0,created(e,t,n){e[ut]=Bt(n),Tt(e,"change",()=>{const s=e._modelValue,o=fn(e),l=e.checked,r=e[ut];if(ee(s)){const i=ho(s,o),a=i!==-1;if(l&&!a)r(s.concat(o));else if(!l&&a){const f=[...s];f.splice(i,1),r(f)}}else if(pn(s)){const i=new Set(s);l?i.add(o):i.delete(o),r(i)}else r(Ur(e,l))})},mounted:ul,beforeUpdate(e,t,n){e[ut]=Bt(n),ul(e,t,n)}};function ul(e,{value:t,oldValue:n},s){e._modelValue=t;let o;if(ee(t))o=ho(t,s.props.value)>-1;else if(pn(t))o=t.has(s.props.value);else{if(t===n)return;o=Ut(t,Ur(e,!0))}e.checked!==o&&(e.checked=o)}const fl={created(e,{value:t},n){e.checked=Ut(t,n.props.value),e[ut]=Bt(n),Tt(e,"change",()=>{e[ut](fn(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[ut]=Bt(s),t!==n&&(e.checked=Ut(t,s.props.value))}},Pc={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=pn(t);Tt(e,"change",()=>{const l=Array.prototype.filter.call(e.options,r=>r.selected).map(r=>n?ms(fn(r)):fn(r));e[ut](e.multiple?o?new Set(l):l:l[0]),e._assigning=!0,Un(()=>{e._assigning=!1})}),e[ut]=Bt(s)},mounted(e,{value:t}){dl(e,t)},beforeUpdate(e,t,n){e[ut]=Bt(n)},updated(e,{value:t}){e._assigning||dl(e,t)}};function dl(e,t){const n=e.multiple,s=ee(t);if(!(n&&!s&&!pn(t))){for(let o=0,l=e.options.length;oString(f)===String(i)):r.selected=ho(t,i)>-1}else r.selected=t.has(i);else if(Ut(fn(r),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function fn(e){return"_value"in e?e._value:e.value}function Ur(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Ic=["ctrl","shift","alt","meta"],Nc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ic.some(n=>e[`${n}Key`]&&!t.includes(n))},sn=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(o,...l)=>{for(let r=0;r{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=o=>{if(!("key"in o))return;const l=Kt(o.key);if(t.some(r=>r===l||$c[r]===l))return e(o)})},Mc=Ve({patchProp:Ec},fc);let hl;function Dc(){return hl||(hl=Ba(Mc))}const Lc=(...e)=>{const t=Dc().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=Vc(s);if(!o)return;const l=t._component;!oe(l)&&!l.render&&!l.template&&(l.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const r=n(o,!1,jc(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),r},t};function jc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Vc(e){return Pe(e)?document.querySelector(e):e}/*!
- * pinia v2.3.1
- * (c) 2025 Eduardo San Martin Morote
- * @license MIT
- */let Hr;const Es=e=>Hr=e,Br=Symbol();function so(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Tn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Tn||(Tn={}));function Fc(){const e=Ul(!0),t=e.run(()=>te({}));let n=[],s=[];const o=bo({install(l){Es(o),o._a=l,l.provide(Br,o),l.config.globalProperties.$pinia=o,s.forEach(r=>n.push(r)),s=[]},use(l){return this._a?n.push(l):s.push(l),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return o}const Kr=()=>{};function pl(e,t,n,s=Kr){e.push(t);const o=()=>{const l=e.indexOf(t);l>-1&&(e.splice(l,1),s())};return!n&&Hl()&&Ci(o),o}function en(e,...t){e.slice().forEach(n=>{n(...t)})}const Uc=e=>e(),ml=Symbol(),Hs=Symbol();function oo(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],o=e[n];so(o)&&so(s)&&e.hasOwnProperty(n)&&!Ie(s)&&!Pt(s)?e[n]=oo(o,s):e[n]=s}return e}const Hc=Symbol();function Bc(e){return!so(e)||!e.hasOwnProperty(Hc)}const{assign:Lt}=Object;function Kc(e){return!!(Ie(e)&&e.effect)}function Gc(e,t,n,s){const{state:o,actions:l,getters:r}=t,i=n.state.value[e];let a;function f(){i||(n.state.value[e]=o?o():{});const u=Wi(n.state.value[e]);return Lt(u,l,Object.keys(r||{}).reduce((h,g)=>(h[g]=bo(_e(()=>{Es(n);const b=n._s.get(e);return r[g].call(b,b)})),h),{}))}return a=Gr(e,f,t,n,s,!0),a}function Gr(e,t,n={},s,o,l){let r;const i=Lt({actions:{}},n),a={deep:!0};let f,u,h=[],g=[],b;const N=s.state.value[e];!l&&!N&&(s.state.value[e]={});let P;function F(le){let re;f=u=!1,typeof le=="function"?(le(s.state.value[e]),re={type:Tn.patchFunction,storeId:e,events:b}):(oo(s.state.value[e],le),re={type:Tn.patchObject,payload:le,storeId:e,events:b});const B=P=Symbol();Un().then(()=>{P===B&&(f=!0)}),u=!0,en(h,re,s.state.value[e])}const q=l?function(){const{state:re}=n,B=re?re():{};this.$patch(J=>{Lt(J,B)})}:Kr;function $(){r.stop(),h=[],g=[],s._s.delete(e)}const H=(le,re="")=>{if(ml in le)return le[Hs]=re,le;const B=function(){Es(s);const J=Array.from(arguments),he=[],X=[];function Ce(ne){he.push(ne)}function Ne(ne){X.push(ne)}en(g,{args:J,name:B[Hs],store:j,after:Ce,onError:Ne});let xe;try{xe=le.apply(this&&this.$id===e?this:j,J)}catch(ne){throw en(X,ne),ne}return xe instanceof Promise?xe.then(ne=>(en(he,ne),ne)).catch(ne=>(en(X,ne),Promise.reject(ne))):(en(he,xe),xe)};return B[ml]=!0,B[Hs]=re,B},O={_p:s,$id:e,$onAction:pl.bind(null,g),$patch:F,$reset:q,$subscribe(le,re={}){const B=pl(h,le,re.detached,()=>J()),J=r.run(()=>Sn(()=>s.state.value[e],he=>{(re.flush==="sync"?u:f)&&le({storeId:e,type:Tn.direct,events:b},he)},Lt({},a,re)));return B},$dispose:$},j=Vn(O);s._s.set(e,j);const ue=(s._a&&s._a.runWithContext||Uc)(()=>s._e.run(()=>(r=Ul()).run(()=>t({action:H}))));for(const le in ue){const re=ue[le];if(Ie(re)&&!Kc(re)||Pt(re))l||(N&&Bc(re)&&(Ie(re)?re.value=N[le]:oo(re,N[le])),s.state.value[e][le]=re);else if(typeof re=="function"){const B=H(re,le);ue[le]=B,i.actions[le]=re}}return Lt(j,ue),Lt(ve(j),ue),Object.defineProperty(j,"$state",{get:()=>s.state.value[e],set:le=>{F(re=>{Lt(re,le)})}}),s._p.forEach(le=>{Lt(j,r.run(()=>le({store:j,app:s._a,pinia:s,options:i})))}),N&&l&&n.hydrate&&n.hydrate(j.$state,N),f=!0,u=!0,j}/*! #__NO_SIDE_EFFECTS__ */function Wc(e,t,n){let s,o;const l=typeof t=="function";s=e,o=l?n:t;function r(i,a){const f=na();return i=i||(f?ct(Br,null):null),i&&Es(i),i=Hr,i._s.has(s)||(l?Gr(s,t,o,i):Gc(s,o,i)),i._s.get(s)}return r.$id=s,r}/*!
- * vue-router v4.6.4
- * (c) 2025 Eduardo San Martin Morote
- * @license MIT
- */const nn=typeof document<"u";function Wr(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function qc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Wr(e.default)}const ye=Object.assign;function Bs(e,t){const n={};for(const s in t){const o=t[s];n[s]=vt(o)?o.map(e):e(o)}return n}const Pn=()=>{},vt=Array.isArray;function vl(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const qr=/#/g,zc=/&/g,Jc=/\//g,Yc=/=/g,Qc=/\?/g,zr=/\+/g,Xc=/%5B/g,Zc=/%5D/g,Jr=/%5E/g,eu=/%60/g,Yr=/%7B/g,tu=/%7C/g,Qr=/%7D/g,nu=/%20/g;function Eo(e){return e==null?"":encodeURI(""+e).replace(tu,"|").replace(Xc,"[").replace(Zc,"]")}function su(e){return Eo(e).replace(Yr,"{").replace(Qr,"}").replace(Jr,"^")}function lo(e){return Eo(e).replace(zr,"%2B").replace(nu,"+").replace(qr,"%23").replace(zc,"%26").replace(eu,"`").replace(Yr,"{").replace(Qr,"}").replace(Jr,"^")}function ou(e){return lo(e).replace(Yc,"%3D")}function lu(e){return Eo(e).replace(qr,"%23").replace(Qc,"%3F")}function ru(e){return lu(e).replace(Jc,"%2F")}function Ln(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const iu=/\/$/,au=e=>e.replace(iu,"");function Ks(e,t,n="/"){let s,o={},l="",r="";const i=t.indexOf("#");let a=t.indexOf("?");return a=i>=0&&a>i?-1:a,a>=0&&(s=t.slice(0,a),l=t.slice(a,i>0?i:t.length),o=e(l.slice(1))),i>=0&&(s=s||t.slice(0,i),r=t.slice(i,t.length)),s=du(s??t,n),{fullPath:s+l+r,path:s,query:o,hash:Ln(r)}}function cu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function gl(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function uu(e,t,n){const s=t.matched.length-1,o=n.matched.length-1;return s>-1&&s===o&&dn(t.matched[s],n.matched[o])&&Xr(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function dn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Xr(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!fu(e[n],t[n]))return!1;return!0}function fu(e,t){return vt(e)?_l(e,t):vt(t)?_l(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function _l(e,t){return vt(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function du(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let l=n.length-1,r,i;for(r=0;r1&&l--;else break;return n.slice(0,l).join("/")+"/"+s.slice(r).join("/")}const Dt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let ro=function(e){return e.pop="pop",e.push="push",e}({}),Gs=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function hu(e){if(!e)if(nn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),au(e)}const pu=/^[^#]+#/;function mu(e,t){return e.replace(pu,"#")+t}function vu(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const As=()=>({left:window.scrollX,top:window.scrollY});function gu(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=vu(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function yl(e,t){return(history.state?history.state.position-t:-1)+e}const io=new Map;function _u(e,t){io.set(e,t)}function yu(e){const t=io.get(e);return io.delete(e),t}function bu(e){return typeof e=="string"||e&&typeof e=="object"}function Zr(e){return typeof e=="string"||typeof e=="symbol"}let Te=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const ei=Symbol("");Te.MATCHER_NOT_FOUND+"",Te.NAVIGATION_GUARD_REDIRECT+"",Te.NAVIGATION_ABORTED+"",Te.NAVIGATION_CANCELLED+"",Te.NAVIGATION_DUPLICATED+"";function hn(e,t){return ye(new Error,{type:e,[ei]:!0},t)}function St(e,t){return e instanceof Error&&ei in e&&(t==null||!!(e.type&t))}const wu=["params","query","hash"];function xu(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of wu)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function ku(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&lo(o)):[s&&lo(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Cu(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=vt(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const Su=Symbol(""),wl=Symbol(""),Rs=Symbol(""),Ao=Symbol(""),ao=Symbol("");function yn(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Vt(e,t,n,s,o,l=r=>r()){const r=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((i,a)=>{const f=g=>{g===!1?a(hn(Te.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?a(g):bu(g)?a(hn(Te.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(r&&s.enterCallbacks[o]===r&&typeof g=="function"&&r.push(g),i())},u=l(()=>e.call(s&&s.instances[o],t,n,f));let h=Promise.resolve(u);e.length<3&&(h=h.then(f)),h.catch(g=>a(g))})}function Ws(e,t,n,s,o=l=>l()){const l=[];for(const r of e)for(const i in r.components){let a=r.components[i];if(!(t!=="beforeRouteEnter"&&!r.instances[i]))if(Wr(a)){const f=(a.__vccOpts||a)[t];f&&l.push(Vt(f,n,s,r,i,o))}else{let f=a();l.push(()=>f.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${i}" at "${r.path}"`);const h=qc(u)?u.default:u;r.mods[i]=u,r.components[i]=h;const g=(h.__vccOpts||h)[t];return g&&Vt(g,n,s,r,i,o)()}))}}return l}function Eu(e,t){const n=[],s=[],o=[],l=Math.max(t.matched.length,e.matched.length);for(let r=0;rdn(f,i))?s.push(i):n.push(i));const a=e.matched[r];a&&(t.matched.find(f=>dn(f,a))||o.push(a))}return[n,s,o]}/*!
- * vue-router v4.6.4
- * (c) 2025 Eduardo San Martin Morote
- * @license MIT
- */let Au=()=>location.protocol+"//"+location.host;function ti(e,t){const{pathname:n,search:s,hash:o}=t,l=e.indexOf("#");if(l>-1){let r=o.includes(e.slice(l))?e.slice(l).length:1,i=o.slice(r);return i[0]!=="/"&&(i="/"+i),gl(i,"")}return gl(n,e)+s+o}function Ru(e,t,n,s){let o=[],l=[],r=null;const i=({state:g})=>{const b=ti(e,location),N=n.value,P=t.value;let F=0;if(g){if(n.value=b,t.value=g,r&&r===N){r=null;return}F=P?g.position-P.position:0}else s(b);o.forEach(q=>{q(n.value,N,{delta:F,type:ro.pop,direction:F?F>0?Gs.forward:Gs.back:Gs.unknown})})};function a(){r=n.value}function f(g){o.push(g);const b=()=>{const N=o.indexOf(g);N>-1&&o.splice(N,1)};return l.push(b),b}function u(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(ye({},g.state,{scroll:As()}),"")}}function h(){for(const g of l)g();l=[],window.removeEventListener("popstate",i),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",i),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:a,listen:f,destroy:h}}function xl(e,t,n,s=!1,o=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:o?As():null}}function Ou(e){const{history:t,location:n}=window,s={value:ti(e,n)},o={value:t.state};o.value||l(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(a,f,u){const h=e.indexOf("#"),g=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+a:Au()+e+a;try{t[u?"replaceState":"pushState"](f,"",g),o.value=f}catch(b){console.error(b),n[u?"replace":"assign"](g)}}function r(a,f){l(a,ye({},t.state,xl(o.value.back,a,o.value.forward,!0),f,{position:o.value.position}),!0),s.value=a}function i(a,f){const u=ye({},o.value,t.state,{forward:a,scroll:As()});l(u.current,u,!0),l(a,ye({},xl(s.value,a,null),{position:u.position+1},f),!1),s.value=a}return{location:s,state:o,push:i,replace:r}}function Tu(e){e=hu(e);const t=Ou(e),n=Ru(e,t.state,t.location,t.replace);function s(l,r=!0){r||n.pauseListeners(),history.go(l)}const o=ye({location:"",base:e,go:s,createHref:mu.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function Pu(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),Tu(e)}let Jt=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var De=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(De||{});const Iu={type:Jt.Static,value:""},Nu=/[a-zA-Z0-9_]/;function $u(e){if(!e)return[[]];if(e==="/")return[[Iu]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(b){throw new Error(`ERR (${n})/"${f}": ${b}`)}let n=De.Static,s=n;const o=[];let l;function r(){l&&o.push(l),l=[]}let i=0,a,f="",u="";function h(){f&&(n===De.Static?l.push({type:Jt.Static,value:f}):n===De.Param||n===De.ParamRegExp||n===De.ParamRegExpEnd?(l.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),l.push({type:Jt.Param,value:f,regexp:u,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),f="")}function g(){f+=a}for(;it.length?t.length===1&&t[0]===qe.Static+qe.Segment?1:-1:0}function ni(e,t){let n=0;const s=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const Vu={strict:!1,end:!0,sensitive:!1};function Fu(e,t,n){const s=Lu($u(e.path),n),o=ye(s,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function Uu(e,t){const n=[],s=new Map;t=vl(Vu,t);function o(h){return s.get(h)}function l(h,g,b){const N=!b,P=El(h);P.aliasOf=b&&b.record;const F=vl(t,h),q=[P];if("alias"in h){const O=typeof h.alias=="string"?[h.alias]:h.alias;for(const j of O)q.push(El(ye({},P,{components:b?b.record.components:P.components,path:j,aliasOf:b?b.record:P})))}let $,H;for(const O of q){const{path:j}=O;if(g&&j[0]!=="/"){const z=g.record.path,ue=z[z.length-1]==="/"?"":"/";O.path=g.record.path+(j&&ue+j)}if($=Fu(O,g,F),b?b.alias.push($):(H=H||$,H!==$&&H.alias.push($),N&&h.name&&!Al($)&&r(h.name)),si($)&&a($),P.children){const z=P.children;for(let ue=0;ue{r(H)}:Pn}function r(h){if(Zr(h)){const g=s.get(h);g&&(s.delete(h),n.splice(n.indexOf(g),1),g.children.forEach(r),g.alias.forEach(r))}else{const g=n.indexOf(h);g>-1&&(n.splice(g,1),h.record.name&&s.delete(h.record.name),h.children.forEach(r),h.alias.forEach(r))}}function i(){return n}function a(h){const g=Ku(h,n);n.splice(g,0,h),h.record.name&&!Al(h)&&s.set(h.record.name,h)}function f(h,g){let b,N={},P,F;if("name"in h&&h.name){if(b=s.get(h.name),!b)throw hn(Te.MATCHER_NOT_FOUND,{location:h});F=b.record.name,N=ye(Sl(g.params,b.keys.filter(H=>!H.optional).concat(b.parent?b.parent.keys.filter(H=>H.optional):[]).map(H=>H.name)),h.params&&Sl(h.params,b.keys.map(H=>H.name))),P=b.stringify(N)}else if(h.path!=null)P=h.path,b=n.find(H=>H.re.test(P)),b&&(N=b.parse(P),F=b.record.name);else{if(b=g.name?s.get(g.name):n.find(H=>H.re.test(g.path)),!b)throw hn(Te.MATCHER_NOT_FOUND,{location:h,currentLocation:g});F=b.record.name,N=ye({},g.params,h.params),P=b.stringify(N)}const q=[];let $=b;for(;$;)q.unshift($.record),$=$.parent;return{name:F,path:P,params:N,matched:q,meta:Bu(q)}}e.forEach(h=>l(h));function u(){n.length=0,s.clear()}return{addRoute:l,resolve:f,removeRoute:r,clearRoutes:u,getRoutes:i,getRecordMatcher:o}}function Sl(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function El(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Hu(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Hu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Al(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Bu(e){return e.reduce((t,n)=>ye(t,n.meta),{})}function Ku(e,t){let n=0,s=t.length;for(;n!==s;){const l=n+s>>1;ni(e,t[l])<0?s=l:n=l+1}const o=Gu(e);return o&&(s=t.lastIndexOf(o,s-1)),s}function Gu(e){let t=e;for(;t=t.parent;)if(si(t)&&ni(e,t)===0)return t}function si({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Rl(e){const t=ct(Rs),n=ct(Ao),s=_e(()=>{const a=kt(e.to);return t.resolve(a)}),o=_e(()=>{const{matched:a}=s.value,{length:f}=a,u=a[f-1],h=n.matched;if(!u||!h.length)return-1;const g=h.findIndex(dn.bind(null,u));if(g>-1)return g;const b=Ol(a[f-2]);return f>1&&Ol(u)===b&&h[h.length-1].path!==b?h.findIndex(dn.bind(null,a[f-2])):g}),l=_e(()=>o.value>-1&&Yu(n.params,s.value.params)),r=_e(()=>o.value>-1&&o.value===n.matched.length-1&&Xr(n.params,s.value.params));function i(a={}){if(Ju(a)){const f=t[kt(e.replace)?"replace":"push"](kt(e.to)).catch(Pn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:s,href:_e(()=>s.value.href),isActive:l,isExactActive:r,navigate:i}}function Wu(e){return e.length===1?e[0]:e}const qu=hr({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Rl,setup(e,{slots:t}){const n=Vn(Rl(e)),{options:s}=ct(Rs),o=_e(()=>({[Tl(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Tl(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const l=t.default&&Wu(t.default(n));return e.custom?l:Vr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},l)}}}),zu=qu;function Ju(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Yu(e,t){for(const n in t){const s=t[n],o=e[n];if(typeof s=="string"){if(s!==o)return!1}else if(!vt(o)||o.length!==s.length||s.some((l,r)=>l.valueOf()!==o[r].valueOf()))return!1}return!0}function Ol(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Tl=(e,t,n)=>e??t??n,Qu=hr({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=ct(ao),o=_e(()=>e.route||s.value),l=ct(wl,0),r=_e(()=>{let f=kt(l);const{matched:u}=o.value;let h;for(;(h=u[f])&&!h.components;)f++;return f}),i=_e(()=>o.value.matched[r.value]);Zn(wl,_e(()=>r.value+1)),Zn(Su,i),Zn(ao,o);const a=te();return Sn(()=>[a.value,i.value,e.name],([f,u,h],[g,b,N])=>{u&&(u.instances[h]=f,b&&b!==u&&f&&f===g&&(u.leaveGuards.size||(u.leaveGuards=b.leaveGuards),u.updateGuards.size||(u.updateGuards=b.updateGuards))),f&&u&&(!b||!dn(u,b)||!g)&&(u.enterCallbacks[h]||[]).forEach(P=>P(f))},{flush:"post"}),()=>{const f=o.value,u=e.name,h=i.value,g=h&&h.components[u];if(!g)return Pl(n.default,{Component:g,route:f});const b=h.props[u],N=b?b===!0?f.params:typeof b=="function"?b(f):b:null,F=Vr(g,ye({},N,t,{onVnodeUnmounted:q=>{q.component.isUnmounted&&(h.instances[u]=null)},ref:a}));return Pl(n.default,{Component:F,route:f})||F}}});function Pl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Xu=Qu;function Zu(e){const t=Uu(e.routes,e),n=e.parseQuery||ku,s=e.stringifyQuery||bl,o=e.history,l=yn(),r=yn(),i=yn(),a=Bi(Dt);let f=Dt;nn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Bs.bind(null,S=>""+S),h=Bs.bind(null,ru),g=Bs.bind(null,Ln);function b(S,U){let L,W;return Zr(S)?(L=t.getRecordMatcher(S),W=U):W=S,t.addRoute(W,L)}function N(S){const U=t.getRecordMatcher(S);U&&t.removeRoute(U)}function P(){return t.getRoutes().map(S=>S.record)}function F(S){return!!t.getRecordMatcher(S)}function q(S,U){if(U=ye({},U||a.value),typeof S=="string"){const _=Ks(n,S,U.path),x=t.resolve({path:_.path},U),E=o.createHref(_.fullPath);return ye(_,x,{params:g(x.params),hash:Ln(_.hash),redirectedFrom:void 0,href:E})}let L;if(S.path!=null)L=ye({},S,{path:Ks(n,S.path,U.path).path});else{const _=ye({},S.params);for(const x in _)_[x]==null&&delete _[x];L=ye({},S,{params:h(_)}),U.params=h(U.params)}const W=t.resolve(L,U),de=S.hash||"";W.params=u(g(W.params));const d=cu(s,ye({},S,{hash:su(de),path:W.path})),p=o.createHref(d);return ye({fullPath:d,hash:de,query:s===bl?Cu(S.query):S.query||{}},W,{redirectedFrom:void 0,href:p})}function $(S){return typeof S=="string"?Ks(n,S,a.value.path):ye({},S)}function H(S,U){if(f!==S)return hn(Te.NAVIGATION_CANCELLED,{from:U,to:S})}function O(S){return ue(S)}function j(S){return O(ye($(S),{replace:!0}))}function z(S,U){const L=S.matched[S.matched.length-1];if(L&&L.redirect){const{redirect:W}=L;let de=typeof W=="function"?W(S,U):W;return typeof de=="string"&&(de=de.includes("?")||de.includes("#")?de=$(de):{path:de},de.params={}),ye({query:S.query,hash:S.hash,params:de.path!=null?{}:S.params},de)}}function ue(S,U){const L=f=q(S),W=a.value,de=S.state,d=S.force,p=S.replace===!0,_=z(L,W);if(_)return ue(ye($(_),{state:typeof _=="object"?ye({},de,_.state):de,force:d,replace:p}),U||L);const x=L;x.redirectedFrom=U;let E;return!d&&uu(s,W,L)&&(E=hn(Te.NAVIGATION_DUPLICATED,{to:x,from:W}),Ze(W,W,!0,!1)),(E?Promise.resolve(E):B(x,W)).catch(w=>St(w)?St(w,Te.NAVIGATION_GUARD_REDIRECT)?w:Xe(w):fe(w,x,W)).then(w=>{if(w){if(St(w,Te.NAVIGATION_GUARD_REDIRECT))return ue(ye({replace:p},$(w.to),{state:typeof w.to=="object"?ye({},de,w.to.state):de,force:d}),U||x)}else w=he(x,W,!0,p,de);return J(x,W,w),w})}function le(S,U){const L=H(S,U);return L?Promise.reject(L):Promise.resolve()}function re(S){const U=ot.values().next().value;return U&&typeof U.runWithContext=="function"?U.runWithContext(S):S()}function B(S,U){let L;const[W,de,d]=Eu(S,U);L=Ws(W.reverse(),"beforeRouteLeave",S,U);for(const _ of W)_.leaveGuards.forEach(x=>{L.push(Vt(x,S,U))});const p=le.bind(null,S,U);return L.push(p),$e(L).then(()=>{L=[];for(const _ of l.list())L.push(Vt(_,S,U));return L.push(p),$e(L)}).then(()=>{L=Ws(de,"beforeRouteUpdate",S,U);for(const _ of de)_.updateGuards.forEach(x=>{L.push(Vt(x,S,U))});return L.push(p),$e(L)}).then(()=>{L=[];for(const _ of d)if(_.beforeEnter)if(vt(_.beforeEnter))for(const x of _.beforeEnter)L.push(Vt(x,S,U));else L.push(Vt(_.beforeEnter,S,U));return L.push(p),$e(L)}).then(()=>(S.matched.forEach(_=>_.enterCallbacks={}),L=Ws(d,"beforeRouteEnter",S,U,re),L.push(p),$e(L))).then(()=>{L=[];for(const _ of r.list())L.push(Vt(_,S,U));return L.push(p),$e(L)}).catch(_=>St(_,Te.NAVIGATION_CANCELLED)?_:Promise.reject(_))}function J(S,U,L){i.list().forEach(W=>re(()=>W(S,U,L)))}function he(S,U,L,W,de){const d=H(S,U);if(d)return d;const p=U===Dt,_=nn?history.state:{};L&&(W||p?o.replace(S.fullPath,ye({scroll:p&&_&&_.scroll},de)):o.push(S.fullPath,de)),a.value=S,Ze(S,U,L,p),Xe()}let X;function Ce(){X||(X=o.listen((S,U,L)=>{if(!Ke.listening)return;const W=q(S),de=z(W,Ke.currentRoute.value);if(de){ue(ye(de,{replace:!0,force:!0}),W).catch(Pn);return}f=W;const d=a.value;nn&&_u(yl(d.fullPath,L.delta),As()),B(W,d).catch(p=>St(p,Te.NAVIGATION_ABORTED|Te.NAVIGATION_CANCELLED)?p:St(p,Te.NAVIGATION_GUARD_REDIRECT)?(ue(ye($(p.to),{force:!0}),W).then(_=>{St(_,Te.NAVIGATION_ABORTED|Te.NAVIGATION_DUPLICATED)&&!L.delta&&L.type===ro.pop&&o.go(-1,!1)}).catch(Pn),Promise.reject()):(L.delta&&o.go(-L.delta,!1),fe(p,W,d))).then(p=>{p=p||he(W,d,!1),p&&(L.delta&&!St(p,Te.NAVIGATION_CANCELLED)?o.go(-L.delta,!1):L.type===ro.pop&&St(p,Te.NAVIGATION_ABORTED|Te.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),J(W,d,p)}).catch(Pn)}))}let Ne=yn(),xe=yn(),ne;function fe(S,U,L){Xe(S);const W=xe.list();return W.length?W.forEach(de=>de(S,U,L)):console.error(S),Promise.reject(S)}function dt(){return ne&&a.value!==Dt?Promise.resolve():new Promise((S,U)=>{Ne.add([S,U])})}function Xe(S){return ne||(ne=!S,Ce(),Ne.list().forEach(([U,L])=>S?L(S):U()),Ne.reset()),S}function Ze(S,U,L,W){const{scrollBehavior:de}=e;if(!nn||!de)return Promise.resolve();const d=!L&&yu(yl(S.fullPath,0))||(W||!L)&&history.state&&history.state.scroll||null;return Un().then(()=>de(S,U,d)).then(p=>p&&gu(p)).catch(p=>fe(p,S,U))}const Fe=S=>o.go(S);let Be;const ot=new Set,Ke={currentRoute:a,listening:!0,addRoute:b,removeRoute:N,clearRoutes:t.clearRoutes,hasRoute:F,getRoutes:P,resolve:q,options:e,push:O,replace:j,go:Fe,back:()=>Fe(-1),forward:()=>Fe(1),beforeEach:l.add,beforeResolve:r.add,afterEach:i.add,onError:xe.add,isReady:dt,install(S){S.component("RouterLink",zu),S.component("RouterView",Xu),S.config.globalProperties.$router=Ke,Object.defineProperty(S.config.globalProperties,"$route",{enumerable:!0,get:()=>kt(a)}),nn&&!Be&&a.value===Dt&&(Be=!0,O(o.location).catch(W=>{}));const U={};for(const W in Dt)Object.defineProperty(U,W,{get:()=>a.value[W],enumerable:!0});S.provide(Rs,Ke),S.provide(Ao,sr(U)),S.provide(ao,a);const L=S.unmount;ot.add(S),S.unmount=function(){ot.delete(S),ot.size<1&&(f=Dt,X&&X(),X=null,a.value=Dt,Be=!1,ne=!1),L()}}};function $e(S){return S.reduce((U,L)=>U.then(()=>re(L)),Promise.resolve())}return Ke}function oi(){return ct(Rs)}function ef(e){return ct(Ao)}const Bn=Wc("auth",{state:()=>({token:localStorage.getItem("mcbot_token")||"",identity:localStorage.getItem("mcbot_identity")||""}),actions:{set(e,t){this.token=e,this.identity=t||"",localStorage.setItem("mcbot_token",e),localStorage.setItem("mcbot_identity",this.identity)},clear(){this.token="",this.identity="",localStorage.removeItem("mcbot_token"),localStorage.removeItem("mcbot_identity")}}}),tf={key:0,class:"nav"},nf={class:"who"},sf={__name:"App",setup(e){const t=Bn(),n=ef(),s=oi(),o=_e(()=>n.path!=="/login");function l(){t.clear(),s.push("/login")}return(r,i)=>{const a=Vo("router-link"),f=Vo("router-view");return k(),C(Z,null,[o.value?(k(),C("nav",tf,[i[3]||(i[3]=c("span",{class:"brand"},"mcbot",-1)),Re(a,{to:"/messages"},{default:Xn(()=>[...i[0]||(i[0]=[ge("Messages",-1)])]),_:1}),Re(a,{to:"/packets"},{default:Xn(()=>[...i[1]||(i[1]=[ge("Packets",-1)])]),_:1}),Re(a,{to:"/manage"},{default:Xn(()=>[...i[2]||(i[2]=[ge("Manage",-1)])]),_:1}),i[4]||(i[4]=c("span",{class:"spacer"},null,-1)),c("span",nf,R(kt(t).identity||"authenticated"),1),c("button",{onClick:l},"Log out")])):Ee("",!0),Re(f)],64)}}};async function ae(e,t={}){const n=Bn(),s={...t.headers||{}};n.token&&(s.Authorization=`Bearer ${n.token}`),t.json!==void 0&&(s["Content-Type"]="application/json",t={...t,body:JSON.stringify(t.json)},delete t.json);const o=await fetch(`/api${e}`,{...t,headers:s});if(o.status===401)throw n.clear(),location.hash.startsWith("#/login")||(location.hash="#/login"),new Error("unauthorized");if(!o.ok){let l=o.statusText;try{l=(await o.json()).detail||l}catch{}throw new Error(l)}return o.json()}function li(e){const t=Bn();return`${location.protocol==="https:"?"wss":"ws"}://${location.host}/api${e}?token=${encodeURIComponent(t.token)}`}const of={class:"login-wrap"},lf={class:"login-card"},rf={key:0,class:"err"},af=["disabled"],cf={__name:"Login",setup(e){const t=Bn(),n=oi(),s=te(""),o=te(""),l=te(""),r=te(""),i=te(!1);async function a(){r.value="",i.value=!0;try{const u=await ae("/login",{method:"POST",json:{username:s.value,password:o.value}});t.set(u.token,u.user?`user:${u.user}`:""),n.push("/")}catch(u){r.value=u.message||"login failed"}finally{i.value=!1}}async function f(){if(r.value="",!!l.value.trim()){t.set(l.value.trim(),"");try{const u=await ae("/me");t.set(l.value.trim(),u.identity),n.push("/")}catch{t.clear(),r.value="invalid token"}}}return(u,h)=>(k(),C("div",of,[c("div",lf,[h[3]||(h[3]=c("h2",null,"mcbot admin",-1)),r.value?(k(),C("div",rf,R(r.value),1)):Ee("",!0),h[4]||(h[4]=c("label",null,"Username",-1)),je(c("input",{"onUpdate:modelValue":h[0]||(h[0]=g=>s.value=g),onKeyup:an(a,["enter"]),autofocus:""},null,544),[[et,s.value]]),h[5]||(h[5]=c("label",null,"Password",-1)),je(c("input",{"onUpdate:modelValue":h[1]||(h[1]=g=>o.value=g),type:"password",onKeyup:an(a,["enter"])},null,544),[[et,o.value]]),c("button",{disabled:i.value,onClick:a},"Log in",8,af),h[6]||(h[6]=c("label",{style:{"margin-top":"10px"}},"…or paste an API token",-1)),je(c("input",{"onUpdate:modelValue":h[2]||(h[2]=g=>l.value=g),placeholder:"bearer token",onKeyup:an(f,["enter"])},null,544),[[et,l.value]]),c("button",{onClick:f},"Use token")])]))}};function Ft(e){return String(e).padStart(2,"0")}function ri(e){if(!e)return"";const t=new Date(e*1e3);return`${Ft(t.getHours())}:${Ft(t.getMinutes())}:${Ft(t.getSeconds())}`}function ii(e){if(!e)return"";const t=new Date(e*1e3);return`${t.getFullYear()}-${Ft(t.getMonth()+1)}-${Ft(t.getDate())} ${Ft(t.getHours())}:${Ft(t.getMinutes())}:${Ft(t.getSeconds())}`}const ai=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},uf=["aria-label"],ff={class:"bubble"},df={__name:"InfoTip",props:{text:{type:String,default:""}},setup(e){const t=te(!1);return(n,s)=>(k(),C("span",{class:Je(["infotip",{pinned:t.value}]),tabindex:"0",role:"button","aria-label":e.text,onClick:s[0]||(s[0]=o=>t.value=!t.value),onKeydown:[s[1]||(s[1]=an(sn(o=>t.value=!t.value,["prevent"]),["enter"])),s[2]||(s[2]=an(sn(o=>t.value=!t.value,["prevent"]),["space"]))],onBlur:s[3]||(s[3]=o=>t.value=!1)},[s[4]||(s[4]=c("span",{class:"dot","aria-hidden":"true"},"i",-1)),c("span",ff,R(e.text),1)],42,uf))}},Yn=ai(df,[["__scopeId","data-v-48ca1073"]]),hf={class:"panes"},pf={class:"pane",style:{flex:"0 0 170px"}},mf={class:"body"},vf=["onClick"],gf={class:"pane",style:{flex:"1"}},_f={key:0,class:"toolbar"},yf={key:0,class:"err"},bf={key:1,class:"muted"},wf={class:"body"},xf={key:0,class:"decoded"},kf={class:"kv"},Cf={class:"mono"},Sf={class:"kv"},Ef={class:"k"},Af={key:1},Rf={class:"toolbar"},Of={class:"chk"},Tf={class:"chk"},Pf=["disabled"],If={class:"toolbar"},Nf={class:"chk"},$f={style:{"border-top":"1px solid var(--border, #333)"}},Mf={class:"toolbar"},Df=["disabled"],Lf={key:0,class:"decoded"},jf={class:"kv"},Vf={class:"muted"},Ff={class:"mono"},Uf={class:"toolbar"},Hf={class:"chk"},Bf={class:"chk"},Kf=["disabled"],Gf={class:"decoded"},Wf={style:{margin:"12px 0 4px"}},qf={class:"kv"},zf={class:"k"},Jf={class:"kv"},Yf={class:"k mono"},Qf={key:2},Xf={class:"toolbar"},Zf={class:"mono muted"},ed=["onClick"],td={key:3},nd={class:"toolbar"},sd={id:"newUserContacts"},od=["value"],ld=["value"],rd=["disabled"],id={class:"mono muted"},ad=["onChange"],cd=["value"],ud={class:"chips"},fd=["onClick"],dd={style:{"white-space":"normal"}},hd=["onClick"],pd=["onClick"],md=["onClick"],vd={key:4},gd={class:"toolbar"},_d={key:0,class:"muted"},yd={key:0,class:"muted"},bd=["checked","disabled","onChange"],wd=["onChange"],xd=["value"],kd={class:"chips"},Cd=["onClick"],Sd=["disabled","onClick"],Ed={key:5},Ad=["checked","onChange"],Rd=["checked","onChange"],Od=["checked","onChange"],Td=["value","onChange"],Pd=["onChange"],Id=["value"],Nd={class:"chips"},$d={key:0,class:"muted"},Md=["onClick"],Dd={key:6,class:"contacts-split"},Ld={class:"pane",style:{flex:"1.6","min-width":"0"}},jd={class:"toolbar"},Vd={class:"chk"},Fd=["checked"],Ud=["checked","onChange"],Hd=["disabled"],Bd={class:"muted"},Kd={class:"body"},Gd={key:0},Wd={key:0},qd={key:0},zd={key:0},Jd={key:0},Yd={key:0},Qd=["onClick"],Xd=["checked","onChange"],Zd=["title"],eh={class:"pane contact-detail"},th={class:"body"},nh={key:0,class:"empty"},sh={key:1,class:"decoded"},oh={class:"kv"},lh={class:"k"},rh={key:7},ih=["title"],ah={key:8,class:"empty"},ch={__name:"Manage",setup(e){const t=[{key:"stats",label:"Overview"},{key:"radio",label:"Radio"},{key:"contacts",label:"Contacts"},{key:"channels",label:"Channels"},{key:"users",label:"Users"},{key:"groups",label:"Groups"},{key:"command-config",label:"Commands"},{key:"audit",label:"Audit log"}],n=te("stats"),s=te({}),o=te([]),l=te([]),r=te([]),i=te(""),a=te(""),f=te({name:"",key:""}),u=te({name:"",commands:""}),h=te({sel:"",group:""}),g={stats:"/stats",radio:"/device-info",contacts:"/contacts?limit=500",channels:"/channels",users:"/users",groups:"/groups","command-config":"/command-config",audit:"/audit?limit=200"};function b(v,m){const K=m.items||m;if(v==="command-config"&&Array.isArray(K))for(const ce of K){let y=[];try{y=ce.allowed_channels?JSON.parse(ce.allowed_channels):[]}catch{y=[]}ce._chans=y}return K}async function N(v,m=!1){if(n.value=v,i.value="",a.value="",!(s.value[v]&&!m))try{const K=await ae(g[v]);if(s.value[v]=b(v,K),v==="contacts"&&Wn(s.value[v]),v==="radio"&&await Ze(),(v==="users"||v==="groups"||v==="contacts")&&!o.value.length){const ce=await ae("/groups");o.value=ce.items.map(y=>y.name)}if(v==="users"&&!s.value.contacts){const ce=await ae(g.contacts);s.value.contacts=b("contacts",ce)}if(v==="groups"&&!l.value.length){const ce=await ae("/command-config");l.value=ce.items.map(y=>y.command).sort()}if(v==="command-config"&&!r.value.length){const ce=await ae("/channels");r.value=ce.items.map(y=>y.name)}}catch(K){i.value=K.message}}const P=v=>N(v,!0);async function F(v,m,K=[]){i.value="",a.value="";try{await v,m&&(a.value=m)}catch(ce){i.value=ce.message}for(const ce of K)await P(ce)}function q(v){const m=s.value["command-config"];if(!m)return;const K=m.findIndex(y=>y.command===v.command);if(K===-1)return;let ce=[];try{ce=v.allowed_channels?JSON.parse(v.allowed_channels):[]}catch{ce=[]}m[K]={...m[K],...v,_chans:ce}}async function $(v,m){i.value="",a.value="";try{const K=await ae(`/command-config/${encodeURIComponent(v)}`,{method:"PATCH",json:m});q(K),a.value=`${v}: saved`}catch(K){i.value=K.message,await P("command-config")}}function H(v,m){!m||v._chans.includes(m)||$(v.command,{allowed_channels:[...v._chans,m]})}function O(v,m){$(v.command,{allowed_channels:v._chans.filter(K=>K!==m)})}async function j(){const v={name:f.value.name.trim()};f.value.key.trim()&&(v.key=f.value.key.trim()),v.name&&(await F(ae("/channels",{method:"POST",json:v}),`added ${v.name}`,["channels"]),i.value||(f.value={name:"",key:""}))}function z(v){confirm(`Remove channel ${v}? This clears its radio slot.`)&&F(ae(`/channels/${encodeURIComponent(v)}`,{method:"DELETE"}),`removed ${v}`,["channels"])}function ue(v,m){m&&F(ae(`/users/${v}/groups`,{method:"POST",json:{group:m}}),"group added",["users"])}function le(v,m){F(ae(`/users/${v}/groups/${encodeURIComponent(m)}`,{method:"DELETE"}),"group removed",["users"])}function re(v,m){const K=prompt("New alias:",m||"");K!==null&&F(ae(`/users/${v}`,{method:"PATCH",json:{name:K}}),"renamed",["users"])}function B(v,m){confirm(`Delete user ${m||v.slice(0,12)} from the bot?`)&&F(ae(`/users/${v}`,{method:"DELETE"}),"deleted",["users"])}function J(v){const m=(v.groups||[]).includes("blocked"),K=m?ae(`/users/${v.pubkey}/block`,{method:"DELETE"}):ae(`/users/${v.pubkey}/block`,{method:"POST"});F(K,m?"unblocked":"blocked",["users"])}async function he(){const v=u.value.name.trim();if(!v)return;const m=u.value.commands.split(",").map(K=>K.trim()).filter(Boolean);await F(ae("/groups",{method:"POST",json:{name:v,commands:m}}),`group ${v} created`,["groups"]),i.value||(u.value={name:"",commands:""})}function X(v){confirm(`Delete group ${v}?`)&&F(ae(`/groups/${encodeURIComponent(v)}`,{method:"DELETE"}),"deleted",["groups"])}function Ce(v,m){m&&F(ae(`/groups/${encodeURIComponent(v)}/commands`,{method:"POST",json:{command:m}}),`granted ${m} to ${v}`,["groups"])}function Ne(v,m){m&&F(ae(`/groups/${encodeURIComponent(v)}/commands/${encodeURIComponent(m)}`,{method:"DELETE"}),`revoked ${m} from ${v}`,["groups"])}function xe(v,m){F(ae(`/groups/${encodeURIComponent(v)}/all-users`,{method:m?"POST":"DELETE"}),m?`${v}: now includes all users`:`${v}: explicit members only`,["groups"])}const ne=te("zero"),fe=te(!1);async function dt(){fe.value||(fe.value=!0,await F(ae("/radio/advert",{method:"POST",json:{flood:ne.value==="flood"}}),`${ne.value==="flood"?"flood":"zero-hop"} advert sent`),fe.value=!1)}const Xe=te(0);async function Ze(){try{const v=await ae("/radio/advert-interval");Xe.value=v.interval_hours}catch(v){i.value=v.message}}async function Fe(){const v=Number(Xe.value);await F(ae("/radio/advert-interval",{method:"POST",json:{interval_hours:v}}),v>0?`Flood advert every ${v}h`:"Periodic flood advert disabled"),await Ze()}const Be=te(null),ot=te(!1),Ke=te(!1),$e=te({enabled:!0,headroom:8});async function S(){if(!ot.value){ot.value=!0,i.value="";try{const v=await ae("/radio/contacts-status");Be.value=v,$e.value={enabled:v.policy.enabled,headroom:v.policy.headroom}}catch(v){i.value=v.message}ot.value=!1}}async function U(){await F(ae("/radio/contacts-policy",{method:"POST",json:{enabled:$e.value.enabled,headroom:Number($e.value.headroom)}}),"Eviction policy updated (runtime only — set radio_evict_* in mcbot.conf to persist)"),await S()}async function L(){if(!Ke.value){Ke.value=!0,i.value="",a.value="";try{const v=await ae("/radio/evict-contacts",{method:"POST",json:{dry_run:!0}}),m=v.evicted||[];if(!m.length){a.value=`Nothing to evict (used ${v.used}/${v.max??"?"}).`,Ke.value=!1;return}const K=m.map(Me=>Me.name||Me.pubkey.slice(0,12)),ce=K.slice(0,20).join(`
-`),y=K.length>20?`
-…and ${K.length-20} more`:"";if(!confirm(`Evict ${m.length} stale contact(s) from the radio?
-
-${ce}${y}`)){Ke.value=!1;return}const D=await ae("/radio/evict-contacts",{method:"POST",json:{}});a.value=`Evicted ${D.evicted.length} contact(s)`+(D.failed?`, ${D.failed} failed`:"")+(D.shortfall?`, ${D.shortfall} short (protected)`:"")}catch(v){i.value=v.message}Ke.value=!1,await S()}}const W=[{title:"Identity",keys:[["self_info.name","Name"],["self_info.public_key","Public key",{mono:!0}],["device_info.model","Model"],["device_info.ver","Firmware version"],["device_info.fw ver","Firmware code"],["device_info.fw_build","Firmware build"]]},{title:"Radio",keys:[["self_info.radio_freq","Frequency",{unit:"MHz"}],["self_info.radio_bw","Bandwidth",{unit:"kHz"}],["self_info.radio_sf","Spreading factor"],["self_info.radio_cr","Coding rate"],["self_info.tx_power","TX power",{unit:"dBm"}],["self_info.max_tx_power","Max TX power",{unit:"dBm"}],["device_info.path_hash_mode","Out path-hash mode",{fmt:v=>`${Number(v)+1} byte(s)/hop`}]]},{title:"Advertising",keys:[["self_info.adv_type","Advertised type"],["self_info.adv_lat","Latitude"],["self_info.adv_lon","Longitude"],["self_info.adv_loc_policy","Location-share policy"]]},{title:"Capacity",keys:[["device_info.max_channels","Max channels"],["device_info.max_contacts","Max contacts"]]},{title:"Battery / memory",keys:[["battery.level","Battery",{unit:"mV"}],["battery.total_kb","Total memory",{unit:"kB"}],["battery.used_kb","Used memory",{unit:"kB"}]]},{title:"Other",keys:[["device_info.ble_pin","BLE PIN"],["device_info.repeat","Repeater mode"],["self_info.manual_add_contacts","Manual contact add"],["self_info.multi_acks","Multi-acks"],["self_info.telemetry_mode_base","Telemetry: base"],["self_info.telemetry_mode_env","Telemetry: env"],["self_info.telemetry_mode_loc","Telemetry: location"]]}],de=new Set(W.flatMap(v=>v.keys.map(m=>m[0])));function d(v){if(v==null)return null;try{return JSON.parse(v)}catch{return v}}function p(v,m){const K=d(v.value);if(K==null||K==="")return"";if(m!=null&&m.fmt)return m.fmt(K);let ce=typeof K=="object"?JSON.stringify(K):String(K);return m!=null&&m.unit&&(ce=`${ce} ${m.unit}`),ce}const _=_e(()=>{const v=new Map;for(const m of s.value.radio||[])v.set(m.key,m);return v}),x=_e(()=>[...s.value.radio||[]].filter(v=>!de.has(v.key)).sort((v,m)=>v.key.localeCompare(m.key))),E={1:"Comp",2:"Rptr",3:"Room",4:"Sens"};function w(v){return v==null?"?":E[v]||String(v)}function M(v){return v&&v.length>14?`${v.slice(0,6)}...${v.slice(-6)}`:v||""}function T(v){if(!v)return"";const m=new Date(v*1e3),K=ce=>String(ce).padStart(2,"0");return`${m.getFullYear()}-${K(m.getMonth()+1)}-${K(m.getDate())} ${K(m.getHours())}:${K(m.getMinutes())}`}const I=_e(()=>o.value.filter(v=>v!=="public"&&v!=="blocked"));function A(v){return`${v.adv_name||"(unnamed)"} — ${v.public_key}`}function Y(){const v=h.value.sel.trim();if(!v)return"";const m=(s.value.contacts||[]).find(K=>A(K)===v);return m?m.public_key:/^[0-9a-fA-F]{64}$/.test(v)?v.toLowerCase():""}async function V(){const v=Y();if(!v){alert("Pick a contact from the list (or paste a 64-hex pubkey).");return}if(!h.value.group){alert("Choose an initial group.");return}i.value="",a.value="";try{await ae("/users",{method:"POST",json:{pubkey:v,group:h.value.group}}),a.value=`bot user created and added to ${h.value.group}`,h.value={sel:"",group:""},await P("users")}catch(m){alert(m.message)}}const G=te(""),Q=te(new Set),ie=te(new Set),se=te({col:"adv_name",dir:"asc"}),pe=te(new Set),Ae=te(null),Oe=_e(()=>(s.value.contacts||[]).find(v=>v.public_key===Ae.value)||null);function lt(v){Ae.value=v.public_key}const rt=_e(()=>{const v=Oe.value;if(!v)return[];let m;v.out_path_len===-1?m="flood (no path)":v.out_path_len===0?m="direct (0 hops)":v.out_path?m=`${v.out_path} (${v.out_path_len} hop${v.out_path_len===1?"":"s"})`:m=`${v.out_path_len??"?"} hop(s)`;const K=v.adv_lat!=null&&v.adv_lon!=null?`${v.adv_lat}, ${v.adv_lon}`:"—";return[["name",v.adv_name||"—",!1],["type",w(v.type),!1],["public key",v.public_key,!0],["flags",v.flags??"—",!1],["out path",m,!0],["path hash mode",v.out_path_hash_mode??"—",!1],["location (lat, lon)",K,!1],["last advert",T(v.last_advert)||"—",!1],["last modified",T(v.lastmod)||"—",!1],["first seen",T(v.first_seen_at)||"—",!1],["last synced",T(v.last_synced_at)||"—",!1]]}),Gt=_e(()=>[...ie.value].sort()),Kn=_e(()=>Q.value.size===0),Ge=v=>!Q.value.has(v);function it(v){Q.value=v?new Set:new Set(ie.value)}function Gn(v,m){const K=new Set(Q.value);m?K.delete(v):K.add(v),Q.value=K}function Wn(v){let m=null;for(const K of v){const ce=w(K.type);ie.value.has(ce)||(m=m||new Set(ie.value),m.add(ce))}m&&(ie.value=m)}function Xt(v){se.value.col===v?se.value={col:v,dir:se.value.dir==="asc"?"desc":"asc"}:se.value={col:v,dir:"asc"}}function ui(v){const m=new Set(pe.value);m.has(v)?m.delete(v):m.add(v),pe.value=m}const Os=_e(()=>(s.value.contacts||[]).filter(v=>pe.value.has(v.public_key))),Ro=_e(()=>Os.value.length>0);async function fi(){const v=Os.value;if(!v.length)return;const m=v.map(at=>at.adv_name||at.public_key.slice(0,12)),K=m.slice(0,20).join(`
-`),ce=m.length>20?`
-…and ${m.length-20} more`:"";if(!confirm(`Delete ${v.length} contact(s)?
-
-${K}${ce}`))return;i.value="",a.value="";let y=0,D=0,Me="";for(const at of v)try{await ae(`/contacts/${encodeURIComponent(at.public_key)}`,{method:"DELETE"}),y++}catch(Ts){D++,Me=`${Ts.message} (${at.adv_name||at.public_key.slice(0,12)})`}pe.value=new Set,await P("contacts"),a.value=D?`Deleted ${y}, ${D} failed`:`Deleted ${y} contact(s)`,Me&&(i.value=Me)}const Oo=_e(()=>{const v=s.value.contacts||[],m=G.value.toLowerCase().trim(),K=Q.value,ce=v.filter(at=>K.size&&K.has(w(at.type))?!1:m?(at.public_key||"").toLowerCase().includes(m)||(at.adv_name||"").toLowerCase().includes(m):!0),{col:y,dir:D}=se.value,Me=D==="asc"?1:-1;return ce.sort((at,Ts)=>{const mn=at[y],vn=Ts[y];return mn==null&&vn==null?0:mn==null?1:vn==null?-1:typeof mn=="number"&&typeof vn=="number"?(mn-vn)*Me:String(mn).localeCompare(String(vn))*Me}),ce});function To(v){return v&&v.length?Object.keys(v[0]).filter(m=>!m.startsWith("_")):[]}function di(v){return v==null?"":Array.isArray(v)?v.join(", "):typeof v=="object"?JSON.stringify(v):String(v)}function Po(v,m){return m==="ts"&&v[m]?ii(v[m]):di(v[m])}return ws(()=>N("stats")),(v,m)=>{var K,ce;return k(),C("div",hf,[c("div",pf,[m[20]||(m[20]=c("h3",null,"Manage",-1)),c("div",mf,[c("table",null,[c("tbody",null,[(k(),C(Z,null,me(t,y=>c("tr",{key:y.key,class:Je(["clickable",{selected:n.value===y.key}]),onClick:D=>N(y.key)},[c("td",null,R(y.label),1)],10,vf)),64))])])])]),c("div",gf,[c("h3",null,R((K=t.find(y=>y.key===n.value))==null?void 0:K.label),1),i.value||a.value?(k(),C("div",_f,[i.value?(k(),C("span",yf,R(i.value),1)):Ee("",!0),a.value?(k(),C("span",bf,R(a.value),1)):Ee("",!0)])):Ee("",!0),c("div",wf,[n.value==="stats"&&s.value.stats?(k(),C("div",xf,[c("div",kf,[m[21]||(m[21]=c("div",{class:"k"},"identity",-1)),c("div",Cf,R(((ce=s.value.stats.identity)==null?void 0:ce.pubkey)||"—"),1),m[22]||(m[22]=c("div",{class:"k"},"events seen",-1)),c("div",null,R(s.value.stats.event_count),1),m[23]||(m[23]=c("div",{class:"k"},"commands loaded",-1)),c("div",null,R(s.value.stats.commands_loaded),1)]),m[24]||(m[24]=c("h4",null,"Counts",-1)),c("div",Sf,[(k(!0),C(Z,null,me(s.value.stats.counts,(y,D)=>(k(),C(Z,{key:D},[c("div",Ef,R(D),1),c("div",null,R(y),1)],64))),128))])])):n.value==="radio"?(k(),C("div",Af,[c("div",Rf,[c("label",Of,[je(c("input",{type:"radio",value:"zero","onUpdate:modelValue":m[0]||(m[0]=y=>ne.value=y)},null,512),[[fl,ne.value]]),m[25]||(m[25]=ge(" Zero hop ",-1))]),c("label",Tf,[je(c("input",{type:"radio",value:"flood","onUpdate:modelValue":m[1]||(m[1]=y=>ne.value=y)},null,512),[[fl,ne.value]]),m[26]||(m[26]=ge(" Flood ",-1))]),c("button",{disabled:fe.value,onClick:dt},R(fe.value?"Sending…":"Advert"),9,Pf),Re(Yn,{text:"Zero-hop reaches direct neighbors only; flood propagates through the mesh."})]),c("div",If,[c("label",Nf,[m[27]||(m[27]=ge(" Flood advert interval (hours) ",-1)),je(c("input",{type:"number",min:"0","onUpdate:modelValue":m[2]||(m[2]=y=>Xe.value=y),style:{width:"5em"}},null,512),[[et,Xe.value,void 0,{number:!0}]])]),c("button",{onClick:Fe},"Apply"),Re(Yn,{text:"0 = disabled. Bot sends a flood advert every N hours; persists in the database (mcbot.conf only seeds the first-run default)."})]),c("div",$f,[c("div",Mf,[m[28]||(m[28]=c("strong",null,"Contact table",-1)),c("button",{disabled:ot.value,onClick:S},R(ot.value?"Checking…":"Check contact table"),9,Df),Re(Yn,{text:"Reads the radio's contact list (takes a few seconds)."})]),Be.value?(k(),C("div",Lf,[c("div",jf,[m[29]||(m[29]=c("div",{class:"k"},"Used / max",-1)),c("div",null,[ge(R(Be.value.used)+" / "+R(Be.value.max??"?")+" ",1),c("span",Vf,"("+R(Be.value.free??"?")+" free)",1)]),m[30]||(m[30]=c("div",{class:"k"},"Protected / evictable",-1)),c("div",null,R(Be.value.protected)+" protected, "+R(Be.value.eligible)+" evictable",1),m[31]||(m[31]=c("div",{class:"k"},"Firmware autoadd byte",-1)),c("div",Ff,R(Be.value.autoadd_raw??"n/a"),1)]),c("div",Uf,[c("label",Hf,[je(c("input",{type:"checkbox","onUpdate:modelValue":m[3]||(m[3]=y=>$e.value.enabled=y)},null,512),[[Tc,$e.value.enabled]]),m[32]||(m[32]=ge(" Auto-evict (startup + when full) ",-1))]),c("label",Bf,[m[33]||(m[33]=ge(" Headroom ",-1)),je(c("input",{type:"number",min:"1",max:"100","onUpdate:modelValue":m[4]||(m[4]=y=>$e.value.headroom=y),style:{width:"4em"}},null,512),[[et,$e.value.headroom,void 0,{number:!0}]])]),c("button",{onClick:U},"Apply"),c("button",{disabled:Ke.value,onClick:L},R(Ke.value?"Evicting…":"Evict to headroom now"),9,Kf),Re(Yn,{text:"Evicts the stalest contacts from the radio (bot users, owners, and recent DM peers are protected; the bot's database keeps the full archive). Policy changes here are runtime only — set radio_evict_* in mcbot.conf to persist across restarts."})])])):Ee("",!0)]),c("div",Gf,[(k(),C(Z,null,me(W,y=>(k(),C(Z,{key:y.title},[c("h4",Wf,R(y.title),1),c("div",qf,[(k(!0),C(Z,null,me(y.keys,D=>{var Me;return k(),C(Z,{key:D[0]},[c("div",zf,R(D[1]),1),c("div",{class:Je({mono:(Me=D[2])==null?void 0:Me.mono})},R(p(_.value.get(D[0])||{},D[2])||"—"),3)],64)}),128))])],64))),64)),x.value.length?(k(),C(Z,{key:0},[m[34]||(m[34]=c("h4",{style:{margin:"12px 0 4px"}},"Unrecognized",-1)),c("div",Jf,[(k(!0),C(Z,null,me(x.value,y=>(k(),C(Z,{key:y.key},[c("div",Yf,R(y.key),1),c("div",null,R(p(y)||"—"),1)],64))),128))])],64)):Ee("",!0)])])):n.value==="channels"?(k(),C("div",Qf,[c("div",Xf,[je(c("input",{"onUpdate:modelValue":m[5]||(m[5]=y=>f.value.name=y),placeholder:"name (e.g. #bot or MyChan)",style:{flex:"1"}},null,512),[[et,f.value.name]]),je(c("input",{"onUpdate:modelValue":m[6]||(m[6]=y=>f.value.key=y),placeholder:"hex key (non-# only)",style:{flex:"1"}},null,512),[[et,f.value.key]]),c("button",{onClick:j},"Add channel")]),c("table",null,[m[35]||(m[35]=c("thead",null,[c("tr",null,[c("th",null,"idx"),c("th",null,"name"),c("th",null,"secret"),c("th")])],-1)),c("tbody",null,[(k(!0),C(Z,null,me(s.value.channels,y=>(k(),C("tr",{key:y.channel_idx},[c("td",null,R(y.channel_idx),1),c("td",null,R(y.name),1),c("td",Zf,R((y.secret_hex||"").slice(0,12))+"…",1),c("td",null,[c("button",{onClick:D=>z(y.name)},"remove",8,ed)])]))),128))])])])):n.value==="users"?(k(),C("div",td,[c("div",nd,[je(c("input",{"onUpdate:modelValue":m[7]||(m[7]=y=>h.value.sel=y),list:"newUserContacts",placeholder:"add bot user: search a contact…",style:{flex:"0 0 320px"}},null,512),[[et,h.value.sel]]),c("datalist",sd,[(k(!0),C(Z,null,me(s.value.contacts||[],y=>(k(),C("option",{key:y.public_key,value:A(y)},null,8,od))),128))]),je(c("select",{"onUpdate:modelValue":m[8]||(m[8]=y=>h.value.group=y)},[m[36]||(m[36]=c("option",{value:""},"initial group…",-1)),(k(!0),C(Z,null,me(I.value,y=>(k(),C("option",{key:y,value:y},R(y),9,ld))),128))],512),[[Pc,h.value.group]]),c("button",{disabled:!Y()||!h.value.group,onClick:V}," Add bot user ",8,rd)]),c("table",null,[m[38]||(m[38]=c("thead",null,[c("tr",null,[c("th",null,"name"),c("th",null,"pubkey"),c("th",{style:{width:"130px"}},"add group"),c("th",null,"groups"),c("th",null,"actions")])],-1)),c("tbody",null,[(k(!0),C(Z,null,me(s.value.users,y=>(k(),C("tr",{key:y.pubkey},[c("td",null,R(y.name||"?"),1),c("td",id,R(y.pubkey.slice(0,12)),1),c("td",null,[c("select",{onChange:D=>{ue(y.pubkey,D.target.value),D.target.value=""}},[m[37]||(m[37]=c("option",{value:""},"+ group…",-1)),(k(!0),C(Z,null,me(o.value,D=>(k(),C("option",{key:D,value:D},R(D),9,cd))),128))],40,ad)]),c("td",ud,[(k(!0),C(Z,null,me(y.groups,D=>(k(),C("span",{key:D,class:"tag"},[ge(R(D)+" ",1),c("a",{href:"#",onClick:sn(Me=>le(y.pubkey,D),["prevent"]),title:"remove"},"×",8,fd)]))),128))]),c("td",dd,[c("button",{onClick:D=>re(y.pubkey,y.name)},"rename",8,hd),c("button",{onClick:D=>J(y)},R((y.groups||[]).includes("blocked")?"unblock":"block"),9,pd),c("button",{onClick:D=>B(y.pubkey,y.name)},"delete",8,md)])]))),128))])])])):n.value==="groups"?(k(),C("div",vd,[c("div",gd,[je(c("input",{"onUpdate:modelValue":m[9]||(m[9]=y=>u.value.name=y),placeholder:"new group name"},null,512),[[et,u.value.name]]),je(c("input",{"onUpdate:modelValue":m[10]||(m[10]=y=>u.value.commands=y),placeholder:"commands (comma list, optional)",style:{flex:"1"}},null,512),[[et,u.value.commands]]),c("button",{onClick:he},"Create group")]),c("table",null,[m[41]||(m[41]=c("thead",null,[c("tr",null,[c("th",null,"name"),c("th",null,"users"),c("th",{title:"Every user is a member (the * membership)"},"all users"),c("th",{style:{width:"150px"}},"grant command"),c("th",null,"commands"),c("th")])],-1)),c("tbody",null,[(k(!0),C(Z,null,me(s.value.groups,y=>(k(),C("tr",{key:y.name},[c("td",null,[ge(R(y.name),1),y.is_system?(k(),C("span",_d," [sys]")):Ee("",!0)]),c("td",null,[ge(R(y.nusers),1),y.all_users?(k(),C("span",yd," +*")):Ee("",!0)]),c("td",null,[c("input",{type:"checkbox",checked:y.all_users,disabled:y.name==="blocked",title:"Include all users (*) in this group",onChange:D=>xe(y.name,D.target.checked)},null,40,bd)]),c("td",null,[c("select",{onChange:D=>{Ce(y.name,D.target.value),D.target.value=""}},[m[39]||(m[39]=c("option",{value:""},"+ command…",-1)),m[40]||(m[40]=c("option",{value:"*"},"* (all commands)",-1)),(k(!0),C(Z,null,me(l.value,D=>(k(),C("option",{key:D,value:D},R(D),9,xd))),128))],40,wd)]),c("td",kd,[(k(!0),C(Z,null,me(y.commands,D=>(k(),C("span",{key:D,class:"tag"},[ge(R(D)+" ",1),c("a",{href:"#",onClick:sn(Me=>Ne(y.name,D),["prevent"]),title:"revoke"},"×",8,Cd)]))),128))]),c("td",null,[c("button",{disabled:y.is_system,onClick:D=>X(y.name)},"delete",8,Sd)])]))),128))])])])):n.value==="command-config"?(k(),C("div",Ed,[c("table",null,[m[43]||(m[43]=c("thead",null,[c("tr",null,[c("th",null,"command"),c("th",null,"enabled"),c("th",null,"allow_dm"),c("th",null,"dm_only"),c("th",null,"cooldown"),c("th",{style:{width:"140px"}},"allow channel"),c("th",null,"allowed channels")])],-1)),c("tbody",null,[(k(!0),C(Z,null,me(s.value["command-config"],y=>(k(),C("tr",{key:y.command},[c("td",null,R(y.command),1),c("td",null,[c("input",{type:"checkbox",checked:!!y.enabled,onChange:D=>$(y.command,{enabled:D.target.checked})},null,40,Ad)]),c("td",null,[c("input",{type:"checkbox",checked:!!y.allow_dm,onChange:D=>$(y.command,{allow_dm:D.target.checked})},null,40,Rd)]),c("td",null,[c("input",{type:"checkbox",checked:!!y.dm_only,onChange:D=>$(y.command,{dm_only:D.target.checked})},null,40,Od)]),c("td",null,[c("input",{type:"number",value:y.cooldown_seconds,style:{width:"64px"},onChange:D=>$(y.command,{cooldown_seconds:Number(D.target.value)})},null,40,Td)]),c("td",null,[c("select",{onChange:D=>{H(y,D.target.value),D.target.value=""}},[m[42]||(m[42]=c("option",{value:""},"+ channel…",-1)),(k(!0),C(Z,null,me(r.value,D=>(k(),C("option",{key:D,value:D},R(D),9,Id))),128))],40,Pd)]),c("td",Nd,[y._chans.length?Ee("",!0):(k(),C("span",$d,"(any)")),(k(!0),C(Z,null,me(y._chans,D=>(k(),C("span",{key:D,class:"tag"},[ge(R(D)+" ",1),c("a",{href:"#",onClick:sn(Me=>O(y,D),["prevent"]),title:"remove"},"×",8,Md)]))),128))])]))),128))])])])):n.value==="contacts"?(k(),C("div",Dd,[c("div",Ld,[c("div",jd,[je(c("input",{"onUpdate:modelValue":m[11]||(m[11]=y=>G.value=y),placeholder:"search name or pubkey…",style:{flex:"0 0 260px"}},null,512),[[et,G.value]]),c("label",Vd,[c("input",{type:"checkbox",checked:Kn.value,onChange:m[12]||(m[12]=y=>it(y.target.checked))},null,40,Fd),m[44]||(m[44]=ge(" All ",-1))]),(k(!0),C(Z,null,me(Gt.value,y=>(k(),C("label",{key:y,class:"chk"},[c("input",{type:"checkbox",checked:Ge(y),onChange:D=>Gn(y,D.target.checked)},null,40,Ud),ge(" "+R(y),1)]))),128)),c("button",{disabled:!Ro.value,onClick:fi}," Delete"+R(Ro.value?` (${Os.value.length})`:""),9,Hd),c("span",Bd,R(Oo.value.length)+" shown",1)]),c("div",Kd,[c("table",null,[c("thead",null,[c("tr",null,[m[51]||(m[51]=c("th",{style:{width:"24px"}},null,-1)),c("th",{class:"sortable",onClick:m[13]||(m[13]=y=>Xt("public_key"))},[m[45]||(m[45]=ge(" pubkey",-1)),se.value.col==="public_key"?(k(),C("span",Gd,R(se.value.dir==="asc"?"▲":"▼"),1)):Ee("",!0)]),c("th",{class:"sortable",onClick:m[14]||(m[14]=y=>Xt("adv_name"))},[m[46]||(m[46]=ge(" name",-1)),se.value.col==="adv_name"?(k(),C("span",Wd,R(se.value.dir==="asc"?"▲":"▼"),1)):Ee("",!0)]),c("th",{class:"sortable",onClick:m[15]||(m[15]=y=>Xt("type"))},[m[47]||(m[47]=ge(" type",-1)),se.value.col==="type"?(k(),C("span",qd,R(se.value.dir==="asc"?"▲":"▼"),1)):Ee("",!0)]),c("th",{class:"sortable",onClick:m[16]||(m[16]=y=>Xt("adv_lat"))},[m[48]||(m[48]=ge(" lat",-1)),se.value.col==="adv_lat"?(k(),C("span",zd,R(se.value.dir==="asc"?"▲":"▼"),1)):Ee("",!0)]),c("th",{class:"sortable",onClick:m[17]||(m[17]=y=>Xt("adv_lon"))},[m[49]||(m[49]=ge(" lon",-1)),se.value.col==="adv_lon"?(k(),C("span",Jd,R(se.value.dir==="asc"?"▲":"▼"),1)):Ee("",!0)]),c("th",{class:"sortable",onClick:m[18]||(m[18]=y=>Xt("last_synced_at"))},[m[50]||(m[50]=ge(" last synced",-1)),se.value.col==="last_synced_at"?(k(),C("span",Yd,R(se.value.dir==="asc"?"▲":"▼"),1)):Ee("",!0)])])]),c("tbody",null,[(k(!0),C(Z,null,me(Oo.value,y=>(k(),C("tr",{key:y.public_key,class:Je(["clickable",{selected:Oe.value&&Oe.value.public_key===y.public_key}]),onClick:D=>lt(y)},[c("td",null,[c("input",{type:"checkbox",checked:pe.value.has(y.public_key),onChange:D=>ui(y.public_key),onClick:m[19]||(m[19]=sn(()=>{},["stop"]))},null,40,Xd)]),c("td",{class:"mono",title:y.public_key},R(M(y.public_key)),9,Zd),c("td",null,R(y.adv_name||""),1),c("td",null,R(w(y.type)),1),c("td",null,R(y.adv_lat??""),1),c("td",null,R(y.adv_lon??""),1),c("td",null,R(T(y.last_synced_at)),1)],10,Qd))),128))])])])]),c("div",eh,[m[52]||(m[52]=c("h3",null,"Contact",-1)),c("div",th,[Oe.value?(k(),C("div",sh,[c("div",oh,[(k(!0),C(Z,null,me(rt.value,y=>(k(),C(Z,{key:y[0]},[c("div",lh,R(y[0]),1),c("div",{class:Je({mono:y[2]}),style:{"word-break":"break-all"}},R(y[1]),3)],64))),128))])])):(k(),C("div",nh,"select a contact"))])])])):Array.isArray(s.value[n.value])?(k(),C("table",rh,[c("thead",null,[c("tr",null,[(k(!0),C(Z,null,me(To(s.value[n.value]),y=>(k(),C("th",{key:y},R(y),1))),128))])]),c("tbody",null,[(k(!0),C(Z,null,me(s.value[n.value],(y,D)=>(k(),C("tr",{key:D},[(k(!0),C(Z,null,me(To(s.value[n.value]),Me=>(k(),C("td",{key:Me,title:Po(y,Me)},R(Po(y,Me)),9,ih))),128))]))),128))])])):(k(),C("div",ah,"loading…"))])])])}}},uh=ai(ch,[["__scopeId","data-v-c5dac4d3"]]),fh={class:"panes"},dh={class:"side-col"},hh={class:"pane",style:{flex:"1 1 0","min-height":"160px"}},ph={class:"body"},mh=["onClick"],vh={class:"muted"},gh={class:"pane",style:{flex:"1 1 0","min-height":"200px"}},_h={class:"toolbar"},yh={class:"body"},bh=["onClick"],wh={class:"muted mono"},xh={class:"pane",style:{flex:"1"}},kh={key:0,class:"err",style:{padding:"10px"}},Ch={key:1,class:"empty"},Sh={class:"meta"},Eh={class:"who"},Ah={key:0},Rh=["href"],Oh={key:1,class:"mention"},Th={class:"toolbar"},Ph=["placeholder","disabled"],Ih=["disabled"],Nh={key:0,class:"err",style:{padding:"0 12px 8px"}},$h={__name:"Messages",setup(e){const t=te([]),n=te(null),s=te(null),o=te([]),l=te(null),r=te([]),i=te(""),a=te(""),f=te(""),u=te(!1),h=te("");let g=null;const b=_e(()=>{const B=i.value.toLowerCase();return B?r.value.filter(J=>(J.adv_name||"").toLowerCase().includes(B)||(J.public_key||"").toLowerCase().includes(B)):r.value}),N=_e(()=>{if(typeof n.value=="number"){const B=t.value.find(J=>J.channel_idx===n.value);return{kind:"channel",idx:n.value,label:(B==null?void 0:B.name)||`#${n.value}`}}return n.value==="dm"&&s.value?{kind:"dm",pubkey:s.value.public_key,label:s.value.adv_name||s.value.public_key.slice(0,12)}:null}),P=_e(()=>N.value?`Message ${N.value.label}…`:"Pick a channel or a contact to send to…");async function F(){t.value=(await ae("/channels")).items,n.value===null&&t.value.length&&H(t.value[0].channel_idx)}async function q(){r.value=(await ae("/contacts?limit=500")).items}async function $(){await Un();const B=l.value;B&&(B.scrollTop=B.scrollHeight)}async function H(B){n.value=B,s.value=null;const J=await ae(`/channel-messages?channel_idx=${B}&limit=100`);o.value=J.items.slice().reverse(),await $()}async function O(){n.value="dm",s.value=null;const B=await ae("/direct-messages?limit=100");o.value=B.items.slice().reverse(),await $()}async function j(B){n.value="dm",s.value=B;const J=await ae(`/direct-messages?pubkey=${encodeURIComponent(B.public_key)}&limit=100`);o.value=J.items.slice().reverse(),await $()}async function z(){const B=f.value.trim();if(!(!B||!N.value||u.value)){u.value=!0,h.value="";try{N.value.kind==="channel"?await ae("/send/channel",{method:"POST",json:{channel_idx:N.value.idx,text:B}}):await ae("/send/dm",{method:"POST",json:{pubkey:N.value.pubkey,text:B}}),f.value=""}catch(J){h.value=J.message}finally{u.value=!1}}}function ue(B,J){if(!B||!J)return B||"";const he=`${J}: `;return B.startsWith(he)?B.slice(he.length):B}const le=/(https?:\/\/[^\s<>]+)|@\[([^\]]+)\]/g;function re(B){const J=ue(B.text,B.sender_name),he=[];let X=0,Ce;for(le.lastIndex=0;(Ce=le.exec(J))!==null;){if(Ce.index>X&&he.push({type:"text",value:J.slice(X,Ce.index)}),Ce[1]){const Ne=Ce[1].match(/^(.*?)([.,;:!?)]+)$/);Ne?(he.push({type:"link",value:Ne[1]}),he.push({type:"text",value:Ne[2]})):he.push({type:"link",value:Ce[1]})}else he.push({type:"mention",value:Ce[2]});X=le.lastIndex}return X{try{await F(),await q()}catch(B){a.value=B.message}g=new WebSocket(li("/ws/messages")),g.onmessage=B=>{const J=JSON.parse(B.data),he=l.value,X=he?he.scrollHeight-he.scrollTop-he.clientHeight<60:!0;let Ce=!1;n.value==="dm"&&J.kind==="dm"?(!s.value||J.sender_pubkey===s.value.public_key)&&(o.value.push(J),Ce=!0):J.kind==="channel"&&J.channel_idx===n.value&&(o.value.push(J),Ce=!0),o.value.length>300&&o.value.shift(),Ce&&X&&$()}}),xs(()=>g&&g.close()),(B,J)=>{var he;return k(),C("div",fh,[c("div",dh,[c("div",hh,[J[3]||(J[3]=c("h3",null,"Channels",-1)),c("div",ph,[c("table",null,[c("tbody",null,[(k(!0),C(Z,null,me(t.value,X=>(k(),C("tr",{key:X.channel_idx,class:Je(["clickable",{selected:n.value===X.channel_idx}]),onClick:Ce=>H(X.channel_idx)},[c("td",null,[ge(R(X.name)+" ",1),c("span",vh,"#"+R(X.channel_idx),1)])],10,mh))),128)),c("tr",{class:Je(["clickable",{selected:n.value==="dm"&&!s.value}]),onClick:O},[...J[2]||(J[2]=[c("td",null,"✉ Direct messages",-1)])],2)])])])]),c("div",gh,[c("h3",null,"Contacts ("+R(r.value.length)+")",1),c("div",_h,[je(c("input",{"onUpdate:modelValue":J[0]||(J[0]=X=>i.value=X),placeholder:"search",style:{flex:"1"}},null,512),[[et,i.value]])]),c("div",yh,[c("table",null,[c("tbody",null,[(k(!0),C(Z,null,me(b.value,X=>(k(),C("tr",{key:X.public_key,class:Je(["clickable",{selected:s.value&&s.value.public_key===X.public_key}]),onClick:Ce=>j(X),title:"Open a DM conversation with this contact"},[c("td",null,[ge(R(X.adv_name||"(unnamed)"),1),J[4]||(J[4]=c("br",null,null,-1)),c("span",wh,R(X.public_key.slice(0,12)),1)])],10,bh))),128))])])])])]),c("div",xh,[c("h3",null,R(n.value==="dm"?s.value?`DM · ${s.value.adv_name||s.value.public_key.slice(0,12)}`:"Direct messages":((he=t.value.find(X=>X.channel_idx===n.value))==null?void 0:he.name)||"Messages"),1),c("div",{class:"body",ref_key:"msgBody",ref:l},[a.value?(k(),C("div",kh,R(a.value),1)):Ee("",!0),o.value.length?Ee("",!0):(k(),C("div",Ch,"no messages")),(k(!0),C(Z,null,me(o.value,X=>{var Ce;return k(),C("div",{key:X.id,class:Je(["msg",{out:X.is_outgoing}])},[c("div",Sh,[c("span",Eh,R(X.is_outgoing?"→ me":X.sender_name||((Ce=X.sender_pubkey)==null?void 0:Ce.slice(0,12))||"?"),1),ge(" · "+R(kt(ri)(X.received_at))+" ",1),X.snr!=null?(k(),C("span",Ah,"· snr "+R(X.snr),1)):Ee("",!0)]),c("div",null,[(k(!0),C(Z,null,me(re(X),(Ne,xe)=>(k(),C(Z,{key:xe},[Ne.type==="link"?(k(),C("a",{key:0,href:Ne.value,target:"_blank",rel:"noopener noreferrer"},R(Ne.value),9,Rh)):Ne.type==="mention"?(k(),C("span",Oh,"@["+R(Ne.value)+"]",1)):(k(),C(Z,{key:2},[ge(R(Ne.value),1)],64))],64))),128))])],2)}),128))],512),c("div",Th,[je(c("input",{style:{flex:"1"},placeholder:P.value,"onUpdate:modelValue":J[1]||(J[1]=X=>f.value=X),disabled:!N.value||u.value,onKeyup:an(z,["enter"])},null,40,Ph),[[et,f.value]]),c("button",{disabled:!N.value||u.value||!f.value.trim(),onClick:z},R(u.value?"Sending…":"Send"),9,Ih)]),h.value?(k(),C("div",Nh,R(h.value),1)):Ee("",!0)])])}}},Mh={class:"hexdump"},Dh=["onMouseenter"],Lh={key:0},jh={key:1},Vh={key:0,class:"empty"},Fh={__name:"HexDump",props:{hex:{type:String,default:""},activeRange:{type:Object,default:null}},emits:["hover-offset"],setup(e,{emit:t}){const n=e,s=t,o=_e(()=>{const r=(n.hex||"").replace(/\s+/g,""),i=[];for(let a=0;a+2<=r.length;a+=2)i.push(r.slice(a,a+2));return i});function l(r){const i=n.activeRange;return i&&r>=i.offset&&r(k(),C("div",Mh,[(k(!0),C(Z,null,me(o.value,(a,f)=>(k(),C("span",{key:f,class:Je(["hexbyte",{active:l(f)}]),onMouseenter:u=>s("hover-offset",f),onMouseleave:i[0]||(i[0]=u=>s("hover-offset",null))},[ge(R(a),1),(f+1)%16===0?(k(),C("span",Lh,[...i[1]||(i[1]=[c("br",null,null,-1)])])):(k(),C("span",jh))],42,Dh))),128)),o.value.length?Ee("",!0):(k(),C("div",Vh,"no raw bytes"))]))}},Uh=["onMouseenter"],Hh={class:"fname"},Bh={class:"fmeta"},Kh={class:"fval"},Gh={key:0,class:"fval muted"},Wh={key:1,class:"fmeta"},qh={key:0,class:"decoded"},zh={class:"kv"},Jh={class:"k"},Yh={class:"mono"},Qh={__name:"FieldBreakout",props:{fields:{type:Array,default:()=>[]},decoded:{type:Object,default:null},activeIndex:{type:Number,default:-1}},emits:["hover-field"],setup(e,{emit:t}){const n=t;function s(r){return r==="timestamp"||r.endsWith("_timestamp")||r.endsWith("_at")}function o(r,i){return s(r)?ii(i):l(i)}function l(r){return r==null?"":typeof r=="object"?JSON.stringify(r):String(r)}return(r,i)=>(k(),C("div",null,[(k(!0),C(Z,null,me(e.fields,(a,f)=>(k(),C("div",{key:f,class:Je(["field-row",{active:f===e.activeIndex}]),onMouseenter:u=>n("hover-field",f),onMouseleave:i[0]||(i[0]=u=>n("hover-field",-1))},[c("div",Hh,R(a.name),1),c("div",Bh,"offset "+R(a.offset)+" · "+R(a.length)+" byte(s)",1),c("div",Kh,R(a.hex),1),a.value!==null&&a.value!==void 0?(k(),C("div",Gh,R(l(a.value)),1)):Ee("",!0),a.description?(k(),C("div",Wh,R(a.description),1)):Ee("",!0)],42,Uh))),128)),e.decoded?(k(),C("div",qh,[i[1]||(i[1]=c("h4",{style:{margin:"6px 0"}},"Decoded payload",-1)),c("div",zh,[(k(!0),C(Z,null,me(e.decoded,(a,f)=>(k(),C(Z,{key:f},[c("div",Jh,R(f),1),c("div",Yh,R(o(f,a)),1)],64))),128))])])):Ee("",!0)]))}},Xh={class:"panes"},Zh={class:"pane",style:{flex:"1.3"}},ep={class:"toolbar"},tp={class:"chk"},np=["checked"],sp=["checked","onChange"],op={class:"muted"},lp={key:0,class:"err"},rp={class:"body"},ip=["onClick"],ap={class:"pane",style:{flex:"1"}},cp={class:"body"},up={key:0,class:"empty"},fp={key:1,class:"empty"},dp={key:0,class:"err",style:{padding:"0 12px"}},hp={key:3,class:"empty"},pp={__name:"Packets",setup(e){const t=te([]),n=te(new Set),s=te(new Set),o=te(null),l=te(null),r=te(-1),i=te("");let a=null;const f=_e(()=>[...s.value].sort()),u=_e(()=>n.value.size===0),h=O=>!n.value.has(O),g=_e(()=>n.value.size===0?t.value:t.value.filter(O=>!n.value.has(O.packet_type)));function b(O){let j=null;for(const z of O)z.packet_type&&!s.value.has(z.packet_type)&&(j=j||new Set(s.value),j.add(z.packet_type));j&&(s.value=j)}function N(O){n.value=O?new Set:new Set(s.value)}function P(O,j){const z=new Set(n.value);j?z.delete(O):z.add(O),n.value=z}const F=_e(()=>{if(!l.value||r.value<0)return null;const O=l.value.fields[r.value];return O?{offset:O.offset,length:O.length}:null});async function q(){try{const O=await ae("/packets?limit=200");t.value=O.items,b(O.items)}catch(O){i.value=O.message}}async function $(O){if(o.value=O,l.value=null,r.value=-1,!!O.has_raw)try{l.value=await ae("/packets/decode",{method:"POST",json:{packet_id:O.id}})}catch(j){i.value=j.message}}function H(O){if(O===null||!l.value){r.value=-1;return}const j=l.value.fields.findIndex(z=>O>=z.offset&&O{q(),a=new WebSocket(li("/ws/packets")),a.onmessage=O=>{const j=JSON.parse(O.data);t.value.unshift(j),t.value.length>500&&t.value.pop(),b([j])}}),xs(()=>a&&a.close()),(O,j)=>(k(),C("div",Xh,[c("div",Zh,[j[4]||(j[4]=c("h3",null,"Packets (live)",-1)),c("div",ep,[c("label",tp,[c("input",{type:"checkbox",checked:u.value,onChange:j[0]||(j[0]=z=>N(z.target.checked))},null,40,np),j[2]||(j[2]=ge(" All ",-1))]),(k(!0),C(Z,null,me(f.value,z=>(k(),C("label",{key:z,class:"chk"},[c("input",{type:"checkbox",checked:h(z),onChange:ue=>P(z,ue.target.checked)},null,40,sp),ge(" "+R(z),1)]))),128)),c("span",op,R(g.value.length)+" shown",1),i.value?(k(),C("span",lp,R(i.value),1)):Ee("",!0)]),c("div",rp,[c("table",null,[j[3]||(j[3]=c("thead",null,[c("tr",null,[c("th",null,"time"),c("th",null,"type"),c("th",null,"from"),c("th",null,"ch"),c("th",null,"text"),c("th",null,"raw")])],-1)),c("tbody",null,[(k(!0),C(Z,null,me(g.value,z=>(k(),C("tr",{key:z.id,class:Je(["clickable",{selected:o.value&&o.value.id===z.id}]),onClick:ue=>$(z)},[c("td",null,R(kt(ri)(z.received_at)),1),c("td",null,R(z.packet_type),1),c("td",null,R(z.sender_name||z.sender_pubkey_prefix||""),1),c("td",null,R(z.channel_idx??""),1),c("td",null,R(z.text||""),1),c("td",null,R(z.has_raw?"●":""),1)],10,ip))),128))])])])]),c("div",ap,[j[6]||(j[6]=c("h3",null,"Inspector",-1)),c("div",cp,[o.value?o.value.has_raw?l.value?(k(),C(Z,{key:2},[Re(Fh,{hex:l.value.raw_hex,"active-range":F.value,onHoverOffset:H},null,8,["hex","active-range"]),l.value.error?(k(),C("div",dp,R(l.value.error),1)):Ee("",!0),Re(Qh,{fields:l.value.fields,decoded:l.value.decoded,"active-index":r.value,onHoverField:j[1]||(j[1]=z=>r.value=z)},null,8,["fields","decoded","active-index"])],64)):(k(),C("div",hp,"decoding…")):(k(),C("div",fp,[...j[5]||(j[5]=[ge(" no raw bytes for this packet",-1),c("br",null,null,-1),c("span",{class:"muted"},"(only RX_LOG_DATA packets carry on-air bytes)",-1)])])):(k(),C("div",up,"select a packet"))])])]))}},mp=[{path:"/login",component:cf,meta:{public:!0}},{path:"/",redirect:"/messages"},{path:"/manage",component:uh},{path:"/messages",component:$h},{path:"/packets",component:pp}],ci=Zu({history:Pu(),routes:mp});ci.beforeEach(e=>{const t=Bn();if(!e.meta.public&&!t.token)return"/login";if(e.path==="/login"&&t.token)return"/"});Lc(sf).use(Fc()).use(ci).mount("#app");
diff --git a/webapi/static/index.html b/webapi/static/index.html
index f9518fd..49424e2 100644
--- a/webapi/static/index.html
+++ b/webapi/static/index.html
@@ -4,7 +4,7 @@
mcbot admin
-
+