From 97c7178767a4b454c00f41f00a438ea71759eb0d Mon Sep 17 00:00:00 2001 From: "Jakub A. W" Date: Tue, 4 Aug 2026 18:02:10 +0200 Subject: [PATCH 1/2] refactor(dashboard): use Svelte attachments and share the SSE client Replace element-bound `bind:this` + `$effect` pairs with `{@attach ...}`: the element arrives as an argument and the returned teardown runs with it, so ChartCanvas drops its nullable ref and its three duplicated `chart.destroy()` branches, Modal drops the `tick()` hop before autofocus (the backdrop test now compares `event.currentTarget`), and DatePicker's outside-click dismissal becomes a reusable attachment. Extract the duplicated live-stream transport into $lib/api/eventStream.js. The audit-log stream and the overview's usage-signal stream carried byte-identical SSE framing plus the same reconnect backoff; both now share one implementation and keep only their own event handling and reconnect policy. live-logs-logic.js imports it by relative path because node --test loads that file directly and cannot resolve the $lib alias. Co-Authored-By: Claude Opus 5 (1M context) --- .../static/dist/assets/index-Cn8NoNqg.js | 67 +++++++++++++++++ .../static/dist/assets/index-DzO__mgM.js | 68 ----------------- .../admin/dashboard/static/dist/index.html | 2 +- web/dashboard/CONVENTIONS.md | 9 ++- web/dashboard/src/lib/api/eventStream.js | 74 ++++++++++++++++++ .../src/lib/components/atoms/Modal.svelte | 17 ++--- .../components/molecules/ChartCanvas.svelte | 37 +++------ .../components/molecules/DatePicker.svelte | 22 +----- web/dashboard/src/lib/utils/attachments.js | 49 ++++++++++++ .../src/pages/audit-logs/live-logs-logic.js | 42 ++--------- .../src/pages/audit-logs/liveLogs.svelte.js | 7 +- .../pages/overview/liveTokensState.svelte.js | 49 ++---------- web/dashboard/tests/event-stream.test.js | 75 +++++++++++++++++++ 13 files changed, 311 insertions(+), 207 deletions(-) create mode 100644 internal/admin/dashboard/static/dist/assets/index-Cn8NoNqg.js delete mode 100644 internal/admin/dashboard/static/dist/assets/index-DzO__mgM.js create mode 100644 web/dashboard/src/lib/api/eventStream.js create mode 100644 web/dashboard/src/lib/utils/attachments.js create mode 100644 web/dashboard/tests/event-stream.test.js diff --git a/internal/admin/dashboard/static/dist/assets/index-Cn8NoNqg.js b/internal/admin/dashboard/static/dist/assets/index-Cn8NoNqg.js new file mode 100644 index 00000000..db4356ef --- /dev/null +++ b/internal/admin/dashboard/static/dist/assets/index-Cn8NoNqg.js @@ -0,0 +1,67 @@ +(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function h(e,t,n=!1){return e===void 0?n?t():t:e}function g(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,C=32768,w=1<<25,ee=65536,te=1<<19,ne=1<<20,re=1<<25,ie=65536,ae=1<<21,oe=1<<22,se=1<<23,ce=Symbol(`$state`),le=Symbol(`legacy props`),ue=Symbol(``),de=Symbol(`attributes`),fe=Symbol(`class`),pe=Symbol(`style`),me=Symbol(`text`),he=Symbol(`form reset`),ge=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},_e=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function ve(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function ye(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function be(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function xe(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Se(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Ce(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function we(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Te(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ee(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function De(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Oe(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var ke={},Ae=Symbol(`uninitialized`),je=`http://www.w3.org/1999/xhtml`,Me=`http://www.w3.org/2000/svg`,Ne=`http://www.w3.org/1998/Math/MathML`;function Pe(){console.warn(`https://svelte.dev/e/derived_inert`)}function Fe(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ie(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Le(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var Re=!1;function ze(e){Re=e}var Be;function Ve(e){if(e===null)throw Fe(),ke;return Be=e}function He(){return Ve(bn(Be))}function T(e){if(Re){if(bn(Be)!==null)throw Fe(),ke;Be=e}}function Ue(e=1){if(Re){for(var t=e,n=Be;t--;)n=bn(n);Be=n}}function We(e=!0){for(var t=0,n=Be;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=bn(n);e&&n.remove(),n=i}}function Ge(e){if(!e||e.nodeType!==8)throw Fe(),ke;return e.data}function Ke(e){return e===this.v}function qe(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Je(e){return!qe(e,this.v)}var Ye=null;function Xe(e){Ye=e}function E(e,t=!1,n){Ye={p:Ye,i:!1,c:null,e:null,s:e,x:null,r:ir,l:null}}function D(e){var t=Ye,n=t.e;if(n!==null){t.e=null;for(var r of n)jn(r)}return e!==void 0&&(t.x=e),t.i=!0,Ye=t.p,e??{}}function Ze(){return!0}var Qe=[];function $e(){var e=Qe;Qe=[],p(e)}function et(e){if(Qe.length===0&&!zt){var t=Qe;queueMicrotask(()=>{t===Qe&&$e()})}Qe.push(e)}function tt(){for(;Qe.length>0;)$e()}function nt(e){var t=ir;if(t===null)return tr.f|=se,e;if(!(t.f&32768)&&!(t.f&4))throw e;rt(e,t)}function rt(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var it=~(y|b|v);function at(e,t){e.f=e.f&it|t}function ot(e){e.f&512||e.deps===null?at(e,v):at(e,b)}function st(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=ie,st(t.deps))}function ct(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),st(e.deps),at(e,v)}var lt=!1;function ut(e){var t=lt;try{return lt=!1,[e(),lt]}finally{lt=t}}function dt(e,t){if(t){let t=document.body;e.autofocus=!0,et(()=>{document.activeElement===t&&e.focus()})}}function ft(e){Re&&yn(e)!==null&&xn(e)}var pt=!1;function mt(){pt||(pt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[he]?.()})},{capture:!0}))}function ht(e){var t=tr,n=ir;rr(null),ar(null);try{return e()}finally{rr(t),ar(n)}}function gt(e,t,n,r=n){e.addEventListener(t,()=>ht(n));let i=e[he];i?e[he]=()=>{i(),r(!0)}:e[he]=()=>r(!0),mt()}function _t(e){let t=0,n=an(0),r;return()=>{On()&&(I(n),In(()=>(t===0&&(r=Er(()=>e(()=>ln(n)))),t+=1,()=>{et(()=>{--t,t===0&&(r?.(),r=void 0,ln(n))})})))}}var vt=ee|te;function yt(e,t,n,r){new bt(e,t,n,r)}var bt=class{parent;is_pending=!1;transform_error;#e;#t=Re?Be:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=_t(()=>(this.#m=an(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=ir;t.b=this,t.f|=128,n(e)},this.parent=ir.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Ln(()=>{if(Re){let e=this.#t;He();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},vt),Re&&(this.#e=Be)}#g(){try{this.#a=zn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=zn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=zn(()=>e(this.#e)),et(()=>{var e=this.#c=document.createDocumentFragment(),t=vn();e.append(t),this.#a=this.#x(()=>zn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Kn(this.#o,()=>{this.#o=null}),this.#b(Ft))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=zn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Xn(this.#a,e);let t=this.#n.pending;this.#o=zn(()=>t(this.#e))}else this.#b(Ft)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){ct(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=ir,n=tr,r=Ye;ar(this.#i),rr(this.#i),Xe(this.#i.ctx);try{return Gt.ensure(),e()}catch(e){return nt(e),null}finally{ar(t),rr(n),Xe(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Kn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,et(()=>{this.#d=!1,this.#m&&sn(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),I(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;Ft?.is_fork?(this.#a&&Ft.skip_effect(this.#a),this.#o&&Ft.skip_effect(this.#o),this.#s&&Ft.skip_effect(this.#s),Ft.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Un(this.#a),null),this.#o&&=(Un(this.#o),null),this.#s&&=(Un(this.#s),null),Re&&(Ve(this.#t),Ue(),Ve(We()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Le();return}r=!0,i&&Oe(),this.#s!==null&&Kn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){rt(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return zn(()=>{var t=ir;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return rt(e,this.#i.parent),null}}))};et(()=>{var t;try{t=this.transform_error(e)}catch(e){rt(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>rt(e,this.#i&&this.#i.parent)):o(t)})}};function xt(e,t,n,r){let i=Ze()?Tt:Ot;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=ir,c=St(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){rt(e,s)}Ct()}}var d=wt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Dt(e))).then(u).catch(e=>rt(e,s)).finally(d)}l?l.then(()=>{c(),f(),Ct()}):f()}function St(){var e=ir,t=tr,n=Ye,r=Ft;return function(i=!0){ar(e),rr(t),Xe(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function Ct(e=!0){ar(null),rr(null),Xe(null),e&&Ft?.deactivate()}function wt(){var e=ir,t=e.b,n=Ft,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Tt(e){var t=2|y;return ir!==null&&(ir.f|=te),{ctx:Ye,deps:null,effects:null,equals:Ke,f:t,fn:e,reactions:null,rv:0,v:Ae,wv:0,parent:ir,ac:null}}var Et=Symbol(`obsolete`);function Dt(e,t,n){let r=ir;r===null&&ve();var i=void 0,a=an(Ae),o=!tr,s=new Set;return Fn(()=>{var t=ir,n=m();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ge&&n.reject(e)}).finally(Ct)}catch(e){n.reject(e),Ct()}var c=Ft;if(o){if(t.f&32768)var l=wt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(Et);else for(let e of s.values())e.reject(Et);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==Et&&(c.activate(),t?(a.f|=se,sn(a,t)):(a.f&8388608&&(a.f^=se),sn(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),kn(()=>{for(let e of s)e.reject(Et)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function O(e){let t=Tt(e);return sr(t),t}function Ot(e){let t=Tt(e);return t.equals=Je,t}function kt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(ge),t.ac=null}),t.fn!==null&&(t.teardown=f),xr(t,0),Vn(t))}function Nt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Sr(t)}var Pt=null,Ft=null,It=null,Lt=null,Rt=null,zt=!1,Bt=!1,Vt=null,Ht=null,Ut=0,Wt=1,Gt=class e{id=Wt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Pt===null?Pt=this:(Pt.#n=this,this.#t=Pt),Pt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)at(r,y),t(r);for(r of n.m)at(r,b),t(r)}this.#p.add(e)}#g(){this.#e=!0,Ut++>1e3&&(this.#x(),qt());for(let e of this.#u)this.#d.delete(e),at(e,y),this.schedule(e);for(let e of this.#d)at(e,b),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=Vt=[],r=[],i=Ht=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw en(e),this.#h()||this.discard(),t}if(Ft=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Vt=null,Ht=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)$t(e,t);i.length>0&&Ft.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),It=this,Yt(r),Yt(n),It=null,this.#s?.resolve();var s=Ft;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):_r(r)&&(i&16&&this.#d.add(r),Sr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),at(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),Ft=this,this.#g()}#b(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=m()).promise}static ensure(){if(Ft===null){let t=Ft=new e;!Bt&&!zt&&et(()=>{t.#e||t.flush()})}return Ft}apply(){Lt=null}schedule(e){if(Rt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Vt!==null&&t===ir&&(tr===null||!(tr.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Pt=e:t.#t=e,this.linked=!1}}};function Kt(e){var t=zt;zt=!0;try{var n;for(e&&(Ft!==null&&!Ft.is_fork&&Ft.flush(),n=e());;){if(tt(),Ft===null)return n;Ft.flush()}}finally{zt=t}}function qt(){try{Ce()}catch(e){rt(e,Rt)}}var Jt=null;function Yt(e){var t=e.length;if(t!==0){for(var n=0;n0)){nn.clear();for(let e of Jt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Jt.has(n)&&(Jt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Sr(n)}}Jt.clear()}}Jt=null}}function Xt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Xt(i,t,n,r):e&4194320&&!(e&2048)&&Zt(i,t,r)&&(at(i,y),Qt(i))}}function Zt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Zt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Qt(e){Ft.schedule(e)}function $t(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),at(e,v);for(var n=e.first;n!==null;)$t(n,t),n=n.next}}function en(e){at(e,v);for(var t=e.first;t!==null;)en(t),t=t.next}var tn=new Set,nn=new Map,rn=!1;function an(e,t){return{f:0,v:e,reactions:null,equals:Ke,rv:0,wv:0}}function k(e,t){let n=an(e,t);return sr(n),n}function on(e,t=!1,n=!0){let r=an(e);return t||(r.equals=Je),r}function A(e,t,n=!1){return tr!==null&&(!nr||tr.f&131072)&&Ze()&&tr.f&4325394&&(or===null||!or.has(e))&&De(),sn(e,n?j(t):t,Ht)}function sn(e,t,n=null){if(!e.equals(t)){nn.set(e,$n?t:e.v);var r=Gt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&At(t),Lt===null&&ot(t)}e.wv=gr(),un(e,y,n),Ze()&&ir!==null&&ir.f&1024&&!(ir.f&96)&&(ur===null?dr([e]):ur.push(e)),!r.is_fork&&tn.size>0&&!rn&&cn()}return t}function cn(){rn=!1;for(let e of tn){e.f&1024&&at(e,b);let t;try{t=_r(e)}catch{t=!0}t&&Sr(e)}tn.clear()}function ln(e){A(e,e.v+1)}function un(e,t,n){var r=e.reactions;if(r!==null)for(var i=Ze(),a=r.length,o=0;o{if(mr===d)return e();var t=tr,n=mr;rr(null),hr(d);var r=e();return rr(t),hr(n),r};return i&&r.set(`length`,k(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Te();var i=r.get(t);return i===void 0?f(()=>{var e=k(n.value,u);return r.set(t,e),e}):A(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>k(Ae,u));r.set(t,e),ln(o)}}else A(n,Ae),ln(o);return!0},get(e,n,i){if(n===ce)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>k(j(s?e[n]:Ae),u)),r.set(n,o)),o!==void 0){var c=I(o);return c===Ae?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=I(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==Ae)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===ce)return!0;var n=r.get(t),i=n!==void 0&&n.v!==Ae||Reflect.has(e,t);return(n!==void 0||ir!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>k(i?j(e[t]):Ae,u)),r.set(t,n)),I(n)===Ae)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;dk(Ae,u)),r.set(d+``,p)):A(p,Ae)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>k(void 0,u)),A(c,j(n)),r.set(t,c));else{l=c.v!==Ae;var m=f(()=>j(n));A(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&A(g,_+1)}ln(o)}return!0},ownKeys(e){I(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==Ae});for(var[n,i]of r)i.v!==Ae&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ee()}})}function dn(e){try{if(typeof e==`object`&&e&&ce in e)return e[ce]}catch{}return e}function fn(e,t){return Object.is(dn(e),dn(t))}var pn,mn,hn,gn;function _n(){if(pn===void 0){pn=window,mn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;hn=a(t,`firstChild`).get,gn=a(t,`nextSibling`).get,u(e)&&(e[fe]=void 0,e[de]=null,e[pe]=void 0,e.__e=void 0),u(n)&&(n[me]=void 0)}}function vn(e=``){return document.createTextNode(e)}function yn(e){return hn.call(e)}function bn(e){return gn.call(e)}function M(e,t){if(!Re)return yn(e);var n=yn(Be);if(n===null)n=Be.appendChild(vn());else if(t&&n.nodeType!==3){var r=vn();return n?.before(r),Ve(r),r}return t&&wn(n),Ve(n),n}function N(e,t=!1){if(!Re){var n=yn(e);return n instanceof Comment&&n.data===``?bn(n):n}if(t){if(Be?.nodeType!==3){var r=vn();return Be?.before(r),Ve(r),r}wn(Be)}return Be}function P(e,t=1,n=!1){let r=Re?Be:e;for(var i;t--;)i=r,r=bn(r);if(!Re)return r;if(n){if(r?.nodeType!==3){var a=vn();return r===null?i?.after(a):r.before(a),Ve(a),a}wn(r)}return Ve(r),r}function xn(e){e.textContent=``}function Sn(){return!1}function Cn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function wn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Tn(e){ir===null&&(tr===null&&Se(e),xe()),$n&&be(e)}function En(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Dn(e,t){var n=ir;n!==null&&n.f&8192&&(e|=x);var r={ctx:Ye,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Ft?.register_created_effect(r);var i=r;if(e&4)Vt===null?Gt.ensure().schedule(r):Vt.push(r);else if(t!==null){try{Sr(r)}catch(e){throw Un(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=ee))}if(i!==null&&(i.parent=n,n!==null&&En(i,n),tr!==null&&tr.f&2&&!(e&64))){var a=tr;(a.effects??=[]).push(i)}return r}function On(){return tr!==null&&!nr}function kn(e){let t=Dn(8,null);return at(t,v),t.teardown=e,t}function An(e){Tn(`$effect`);var t=ir.f;if(!tr&&t&32&&Ye!==null&&!Ye.i){var n=Ye;(n.e??=[]).push(e)}else return jn(e)}function jn(e){return Dn(4|ne,e)}function Mn(e){Gt.ensure();let t=Dn(64|te,e);return()=>{Un(t)}}function Nn(e){Gt.ensure();let t=Dn(64|te,e);return(e={})=>new Promise(n=>{e.outro?Kn(t,()=>{Un(t),n(void 0)}):(Un(t),n(void 0))})}function Pn(e){return Dn(4,e)}function Fn(e){return Dn(oe|te,e)}function In(e,t=0){return Dn(8|t,e)}function F(e,t=[],n=[],r=[]){xt(r,t,n,t=>{Dn(8,()=>{e(...t.map(I))})})}function Ln(e,t=0){return Dn(16|t,e)}function Rn(e,t=0){return Dn(_|t,e)}function zn(e){return Dn(32|te,e)}function Bn(e){var t=e.teardown;if(t!==null){let e=$n,n=tr;er(!0),rr(null);try{t.call(null)}finally{er(e),rr(n)}}}function Vn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&ht(()=>{e.abort(ge)});var r=n.next;n.f&64?n.parent=null:Un(n,t),n=r}}function Hn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Un(t),t=n}}function Un(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Wn(e.nodes.start,e.nodes.end),n=!0),e.f|=w,Vn(e,t&&!n),xr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Bn(e),e.f^=w,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&Gn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Wn(e,t){for(;e!==null;){var n=e===t?null:bn(e);e.remove(),e=n}}function Gn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Kn(e,t,n=!0){var r=[];qn(e,r,!0);var i=()=>{n&&Un(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function qn(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;qn(i,t,o?n:!1)}i=a}}}function Jn(e){Yn(e,!0)}function Yn(e,t){if(e.f&8192){e.f^=x,e.f&1024||(at(e,y),Gt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Yn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Xn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:bn(n);t.append(n),n=i}}var Zn=null,Qn=!1,$n=!1;function er(e){$n=e}var tr=null,nr=!1;function rr(e){tr=e}var ir=null;function ar(e){ir=e}var or=null;function sr(e){tr!==null&&(or??=new Set).add(e)}var cr=null,lr=0,ur=null;function dr(e){ur=e}var fr=1,pr=0,mr=pr;function hr(e){mr=e}function gr(){return++fr}function _r(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~ie),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&Lt===null&&at(e,v)}return!1}function vr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(or!==null&&or.has(e)))for(var i=0;i{e.ac.abort(ge)}),e.ac=null);try{e.f|=ae;var u=e.fn,d=u();e.f|=C;var f=e.deps,p=Ft?.is_fork;if(cr!==null){var m;if(p||xr(e,lr),f!==null&&lr>0)for(f.length=lr+cr.length,m=0;m{s.ac.abort(ge),s.ac=null,at(s,y)}),Mt(s),xr(s,0)}}function xr(e,t){var n=e.deps;if(n!==null)for(var r=t;rn?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?et(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Vr(e,t,n,r,i){var a={capture:r,passive:i},o=Br(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&kn(()=>{t.removeEventListener(e,o,a)})}function L(e,t,n){(t[Lr]??={})[e]=n}function Hr(e){for(var t=0;t{throw e});throw p}}finally{e[Lr]=t,delete e.currentTarget,rr(d),ar(f)}}}var Gr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Kr(e){return Gr?.createHTML(e)??e}function qr(e){var t=Cn(`template`);return t.innerHTML=Kr(e.replaceAll(``,``)),t.content}function Jr(e,t){var n=ir;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function R(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(Re)return Jr(Be,null),Be;i===void 0&&(i=qr(a?e:``+e),n||(i=yn(i)));var t=r||mn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=yn(t),s=t.lastChild;Jr(o,s)}else Jr(t,t);return t}}function Yr(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}`,o;return()=>{if(Re)return Jr(Be,null),Be;if(!o){var e=yn(qr(a));if(i)for(o=document.createDocumentFragment();yn(e);)o.appendChild(yn(e));else o=yn(e)}var t=o.cloneNode(!0);if(i){var n=yn(t),r=t.lastChild;Jr(n,r)}else Jr(t,t);return t}}function Xr(e,t){return Yr(e,t,`svg`)}function Zr(e=``){if(!Re){var t=vn(e+``);return Jr(t,t),t}var n=Be;return n.nodeType===3?wn(n):(n.before(n=vn()),Ve(n)),Jr(n,n),n}function Qr(){if(Re)return Jr(Be,null),Be;var e=document.createDocumentFragment(),t=document.createComment(``),n=vn();return e.append(t,n),Jr(t,n),e}function z(e,t){if(Re){var n=ir;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=Be),He();return}e!==null&&e.before(t)}var $r=!0;function ei(e){$r=e}function B(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[me]??=e.nodeValue)&&(e[me]=n,e.nodeValue=`${n}`)}function ti(e,t){return ri(e,t)}var ni=new Map;function ri(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){_n();var l=void 0,u=Nn(()=>{var u=n??t.appendChild(vn());yt(u,{pending:()=>{}},t=>{E({});var n=Ye;if(o&&(n.c=o),a&&(i.$$events=a),Re&&Jr(t,null),$r=s,l=e(t,i)||{},$r=!0,Re&&(ir.nodes.end=Be,Be===null||Be.nodeType!==8||Be.data!==`]`))throw Fe(),ke;D()},c);var d=new Set,f=e=>{for(var n=0;n{for(var e of d)for(let n of[t,document]){var r=ni.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Wr),r.delete(e),r.size===0&&ni.delete(n)):r.set(e,i)}zr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return ii.set(l,u),l}var ii=new WeakMap,ai=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Jn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Jn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Un(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Xn(r,t),t.append(vn()),this.#n.set(e,{effect:r,fragment:t})}else Un(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Kn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Un(n.effect),this.#n.delete(e))};ensure(e,t){var n=Ft,r=Sn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=vn();i.append(a),this.#n.set(e,{effect:zn(()=>t(a)),fragment:i})}else this.#t.set(e,zn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else Re&&(this.anchor=Be),this.#a(n)}};function V(e,t,n=!1){var r;Re&&(r=Be,He());var i=new ai(e),a=n?ee:0;function o(e,t){if(Re){var n=Ge(r);if(e!==parseInt(n.substring(1))){var a=We();Ve(a),i.anchor=a,ze(!1),i.ensure(e,t),ze(!0);return}}i.ensure(e,t)}Ln(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function oi(e,t){return t}function si(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;ci(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;xn(d),d.append(u),e.items.clear()}ci(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function ci(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,di(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=re,pi(d,null,c)):Jn(d):Kn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Ln(()=>{p=I(f);var e=p.length;let t=!1;Re&&Ge(c)===`[!`!=(e===0)&&(c=We(),Ve(c),ze(!1),t=!0);for(var r=new Set,u=Ft,v=Sn(),y=0;ys(c)):(d=zn(()=>s(li??=vn())),d.f|=re)),e>r.size&&ye(``,``,``),Re&&e>0&&Ve(We()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&ze(!0),I(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,Re&&(c=Be)}function ui(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function di(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=ui(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var te=i&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function fi(e,t,n,r,i,a,o,s){var c=o&1?o&16?an(n):on(n,!1,!1):null,l=o&2?an(i):null;return{v:c,i:l,e:zn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function pi(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=bn(r);if(a.before(r),r===i)return;r=o}}function mi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function hi(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;Re&&(o=Ve(yn(c)))}F(()=>{var e=ir;if(s===(s=t()??``)){Re&&He();return}if(n&&!Re){e.nodes=null,c.innerHTML=s,s!==``&&Jr(yn(c),c.lastChild);return}if(e.nodes!==null&&(Wn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(Re){for(var a=Be.data,l=He(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=bn(l);if(l===null)throw Fe(),ke;Jr(Be,u),o=Ve(l);return}var d=Cn(r?`svg`:i?`math`:`template`,r?Me:i?Ne:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(Jr(yn(f),f.lastChild),r||i)for(;yn(f);)o.before(yn(f));else o.before(f)}})}function gi(e,t,...n){var r=new ai(e);Ln(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},ee)}function _i(e,t,n){var r;Re&&(r=Be,He());var i=new ai(e);Ln(()=>{var e=t()??null;if(Re&&Ge(r)===`[`!=(e!==null)){var a=We();Ve(a),i.anchor=a,ze(!1),i.ensure(e,e&&(t=>n(t,e))),ze(!0);return}i.ensure(e,e&&(t=>n(t,e)))},ee)}var vi=()=>performance.now(),yi={tick:e=>requestAnimationFrame(e),now:()=>vi(),tasks:new Set};function bi(){let e=yi.now();yi.tasks.forEach(t=>{t.c(e)||(yi.tasks.delete(t),t.f())}),yi.tasks.size!==0&&yi.tick(bi)}function xi(e){let t;return yi.tasks.size===0&&yi.tick(bi),{promise:new Promise(n=>{yi.tasks.add(t={c:e,f:n})}),abort(){yi.tasks.delete(t)}}}function Si(e,t){ht(()=>{e.dispatchEvent(new CustomEvent(t))})}function Ci(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function wi(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=Ci(n.trim());t[i]=r.trim()}return t}var Ti=e=>e,Ei=null;function Di(e){Ei=e}function Oi(e,t,n){var r=(Ei??ir).nodes,i,a,o,s=null;r.a??={element:e,measure(){i=this.element.getBoundingClientRect()},apply(){if(o?.abort(),a=this.element.getBoundingClientRect(),i.left!==a.left||i.right!==a.right||i.top!==a.top||i.bottom!==a.bottom){let e=t()(this.element,{from:i,to:a},n?.());o=Ai(this.element,e,void 0,1,()=>{},()=>{o?.abort(),o=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var a=e.style;s={position:a.position,width:a.width,height:a.height,transform:a.transform},a.position=`absolute`,a.width=n,a.height=r;var o=e.getBoundingClientRect();if(i.left!==o.left||i.top!==o.top){var c=`translate(${i.left-o.left}px, ${i.top-o.top}px)`;a.transform=a.transform?`${a.transform} ${c}`:c}}}},unfix(){if(s){var t=e.style;t.position=s.position,t.width=s.width,t.height=s.height,t.transform=s.transform}}},r.a.element=e}function ki(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return ht(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=Ai(t,m(),p,1,()=>{Si(t,`introstart`)},()=>{Si(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=Ai(t,m(),f,0,()=>{Si(t,`outrostart`)},()=>{Si(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=ir;if((g.nodes.t??=[]).push(h),i&&$r){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&Pn(()=>{Er(()=>h.in())})}}function Ai(e,t,n,r,i,a){var o=r===1;if(d(t)){var s,c=!1;return et(()=>{c||(s=Ai(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s?.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:f,deactivate:f,reset:f,t:()=>r};let{delay:l=0,css:u,tick:p,easing:m=Ti}=t;var h=[];if(o&&n===void 0&&(p&&p(0,1),u)){var g=wi(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{v.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var d=!1;if(u)for(var f=Math.ceil(c/(1e3/60)),h=0;h<=f;h+=1){var g=o+s*m(h/f),y=wi(u(g,1-g));l.push(y),d||=y.overflow===`hidden`}d&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return o+s*m(e/c)},p&&xi(()=>{if(v.playState!==`running`)return!1;var e=_();return p(e,1-e),!0})}v=e.animate(l,{duration:c,fill:`forwards`}),v.onfinish=()=>{_=()=>r,p?.(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=f)},deactivate:()=>{a=f},reset:()=>{r===0&&p?.(1,0)},t:()=>_()}}function ji(e,t,n,r,i,a){let o=Re;Re&&He();var s=null;Re&&Be.nodeType===1&&(s=Be,He());var c=Re?Be:e,l=ir,u=new ai(c,!1);Ln(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Me:void 0;if(e===null){u.ensure(null,null),ei(!0);return}return u.ensure(e,t=>{if(e){if(s=Re?s:Cn(e,a),Jr(s,s),r){var n=null;Re&&Ir(e)&&s.append(n=document.createComment(``));var i=Re?yn(s):s.appendChild(vn());Re&&(i===null?ze(!1):Ve(i)),Di(l),r(s,i),n?.remove(),Di(null)}ir.nodes.end=s,t.before(s)}Re&&Ve(t)}),ei(!0),()=>{e&&ei(!1)}},ee),kn(()=>{ei(!0)}),o&&(ze(!0),Ve(c))}function Mi(e,t){var n=void 0,r;Rn(()=>{n!==(n=t())&&(r&&=(Un(r),null),n&&(r=zn(()=>{Pn(()=>n(e))})))})}function Ni(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Ii.includes(r[o-1]))&&(s===r.length||Ii.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Ri(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function zi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Bi(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(zi)),i&&c.push(...Object.keys(i).map(zi));var l=0,u=-1;let t=e.length;for(var d=0;d{Ui(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),kn(()=>{t.disconnect()})}function Gi(e,t,n=t){var r=new WeakSet,i=!0;gt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Ki);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Ki(o)}n(a),e.__value=a,Ft!==null&&r.add(Ft)}),Pn(()=>{var a=t();if(e===document.activeElement){var o=Ft;if(r.has(o))return}if(Ui(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Ki(s),n(a))}e.__value=a,i=!1}),Wi(e)}function Ki(e){return`__value`in e?e.__value:e.value}var qi=Symbol(`class`),Ji=Symbol(`style`),Yi=Symbol(`is custom element`),Xi=Symbol(`is html`),Zi=_e?`link`:`LINK`,Qi=_e?`input`:`INPUT`,$i=_e?`option`:`OPTION`,ea=_e?`select`:`SELECT`,ta=_e?`progress`:`PROGRESS`;function na(e){if(Re){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;W(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;W(e,`checked`,null),e.checked=r}}};e[he]=n,et(n),mt()}}function ra(e,t){var n=ca(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==ta)||(e.value=t??``)}function ia(e,t){var n=ca(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function aa(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function W(e,t,n,r){var i=ca(e);Re&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Zi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ue]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ua(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function oa(e,t,n,r,i=!1,a=!1){if(Re&&i&&e.nodeName===Qi){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||na(o)}var s=ca(e),c=s[Yi],l=!s[Xi];let u=Re&&c;u&&ze(!1);var d=t||{},f=e.nodeName===$i;for(var p in t)p in n||(n[p]=null);n.class?n.class=Fi(n.class):(r||n[qi])&&(n.class=null),n[Ji]&&(n.style??=null);var m=ua(e);if(e.nodeName===Qi&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,W(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){U(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[qi],n[qi]),d[i]=o,d[qi]=n[qi];continue}if(i===`style`){Hi(e,o,t?.[Ji],n[Ji]),d[i]=o,d[Ji]=n[Ji];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=kr(r);if(Dr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)L(r,e,o),Hr([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=Br(r,e,a,t)}}else if(i===`style`)W(e,i,o);else if(i===`autofocus`)dt(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)aa(e,o);else{var y=i;l||(y=Mr(y));var b=y===`defaultValue`||y===`defaultChecked`;if(o==null&&!c&&!b)if(s[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else b||m.includes(y)&&(c||typeof o!=`string`)?(e[y]=o,y in s&&(s[y]=Ae)):typeof o!=`function`&&W(e,y,o,a)}}}return u&&ze(!0),d}function sa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){xt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===ea,l=!1;if(Rn(()=>{var u=t(...n.map(I)),d=oa(e,r,u,a,o,s);l&&c&&`value`in u&&Ui(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Un(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Un(i[t]),i[t]=zn(()=>Mi(e,()=>f))),d[t]=f}r=d}),c){var u=e;Pn(()=>{Ui(u,r.value,!0),Wi(u)})}l=!0})}function ca(e){return e[de]??={[Yi]:e.nodeName.includes(`-`),[Xi]:e.namespaceURI===je}}var la=new Map;function ua(e){var t=e.getAttribute(`is`)||e.nodeName,n=la.get(t);if(n)return n;la.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function da(e,t,n=t){var r=new WeakSet;gt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=pa(e)?ma(a):a,n(a),Ft!==null&&r.add(Ft),await Cr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(Re&&e.defaultValue!==e.value||Er(t)==null&&e.value)&&(n(pa(e)?ma(e.value):e.value),Ft!==null&&r.add(Ft)),In(()=>{var n=t();if(e===document.activeElement){var i=Ft;if(r.has(i))return}pa(e)&&n===ma(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function fa(e,t,n=t){gt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(Re&&e.defaultChecked!==e.checked||Er(t)==null)&&n(e.checked),In(()=>{e.checked=!!t()})}function pa(e){var t=e.type;return t===`number`||t===`range`}function ma(e){return e===``?null:+e}function ha(e,t){return e===t||e?.[ce]===t}function ga(e={},t,n,r){var i=Ye.r,a=ir;return Pn(()=>{var o,s;return In(()=>{o=s,s=r?.()||[],Er(()=>{ha(n(...s),e)||(t(e,...s),o&&ha(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&ha(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var _a={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function va(e,t,n){return new Proxy({props:e,exclude:t},_a)}function G(e,t,n,r){var i=!0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Tt(r),I(u)):(l&&(l=!1,c=s?Er(r):r),c);let f;if(o){var p=ce in e||le in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=ut(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&we(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Tt:Ot)(()=>(v=!1,g()));o&&I(y);var b=ir;return(function(e,t){if(arguments.length>0){let n=t?I(y):i&&o?j(e):e;return A(y,n),v=!0,c!==void 0&&(c=n),e}return $n&&v||b.f&16384?y.v:I(y)})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var ya={activity:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`}]],"arrow-left":[[`path`,{d:`m12 19-7-7 7-7`}],[`path`,{d:`M19 12H5`}]],"arrow-right":[[`path`,{d:`M5 12h14`}],[`path`,{d:`m12 5 7 7-7 7`}]],box:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]],calculator:[[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`6`,y2:`6`}],[`line`,{x1:`16`,x2:`16`,y1:`14`,y2:`18`}],[`path`,{d:`M16 10h.01`}],[`path`,{d:`M12 10h.01`}],[`path`,{d:`M8 10h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M8 18h.01`}]],calendar:[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}]],"calendar-days":[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M16 14h.01`}],[`path`,{d:`M8 18h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M16 18h.01`}]],"chart-column":[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M18 17V9`}],[`path`,{d:`M13 17V5`}],[`path`,{d:`M8 17v-3`}]],"chart-column-increasing":[[`path`,{d:`M13 17V9`}],[`path`,{d:`M18 17V5`}],[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M8 17v-3`}]],check:[[`path`,{d:`M20 6 9 17l-5-5`}]],"chevron-down":[[`path`,{d:`m6 9 6 6 6-6`}]],"chevron-right":[[`path`,{d:`m9 18 6-6-6-6`}]],"circle-check":[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m9 12 2 2 4-4`}]],"circle-check-big":[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]],"circle-dollar-sign":[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`}],[`path`,{d:`M12 18V6`}]],clock:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 6v6l4 2`}]],copy:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]],database:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]],"database-zap":[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`}],[`path`,{d:`M21 5V8`}],[`path`,{d:`M21 12L18 17H22L19 22`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`}]],"file-text":[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]],gauge:[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]],history:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`path`,{d:`M12 7v5l4 2`}]],inbox:[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`}]],info:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]],"key-round":[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],"layout-dashboard":[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]],list:[[`path`,{d:`M3 5h.01`}],[`path`,{d:`M3 12h.01`}],[`path`,{d:`M3 19h.01`}],[`path`,{d:`M8 5h13`}],[`path`,{d:`M8 12h13`}],[`path`,{d:`M8 19h13`}]],"lock-keyhole":[[`circle`,{cx:`12`,cy:`16`,r:`1`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`}]],"maximize-2":[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`m21 3-7 7`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M9 21H3v-6`}]],monitor:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`}]],moon:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`}]],pencil:[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]],plug:[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]],plus:[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]],power:[[`path`,{d:`M12 2v10`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`}]],"refresh-cw":[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]],"rotate-ccw":[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}]],save:[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]],search:[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]],server:[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`}]],"server-cog":[[`path`,{d:`m10.852 14.772-.383.923`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`}],[`path`,{d:`m13.148 9.228.383-.923`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`}],[`path`,{d:`m14.772 10.852.923-.383`}],[`path`,{d:`m14.772 13.148.923.383`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`}],[`path`,{d:`M6 18h.01`}],[`path`,{d:`M6 6h.01`}],[`path`,{d:`m9.228 10.852-.923-.383`}],[`path`,{d:`m9.228 13.148-.923.383`}]],settings:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]],"settings-2":[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]],shield:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}]],"shield-check":[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}],[`path`,{d:`m9 12 2 2 4-4`}]],"shield-off":[[`path`,{d:`m2 2 20 20`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`}]],shuffle:[[`path`,{d:`m18 14 4 4-4 4`}],[`path`,{d:`m18 2 4 4-4 4`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`}]],sun:[[`circle`,{cx:`12`,cy:`12`,r:`4`}],[`path`,{d:`M12 2v2`}],[`path`,{d:`M12 20v2`}],[`path`,{d:`m4.93 4.93 1.41 1.41`}],[`path`,{d:`m17.66 17.66 1.41 1.41`}],[`path`,{d:`M2 12h2`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`m6.34 17.66-1.41 1.41`}],[`path`,{d:`m19.07 4.93-1.41 1.41`}]],tag:[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],timer:[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`}],[`circle`,{cx:`12`,cy:`14`,r:`8`}]],"trash-2":[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],"triangle-alert":[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]],user:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]],wallet:[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`}]],"wand-sparkles":[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`}],[`path`,{d:`m14 7 3 3`}],[`path`,{d:`M5 6v4`}],[`path`,{d:`M19 14v4`}],[`path`,{d:`M10 2v2`}],[`path`,{d:`M7 8H3`}],[`path`,{d:`M21 16h-4`}],[`path`,{d:`M11 3H9`}]],workflow:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`}]],x:[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]]},ba=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`class`]),xa=Xr(``);function K(e,t){E(t,!0);let n=G(t,`name`,3,``),r=G(t,`class`,3,``),i=va(t,ba),a=O(()=>ya[n()]||[]);var o=xa();sa(o,()=>({xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:r(),"aria-hidden":`true`,focusable:`false`,...i}));{let e=(t,n=f)=>{var r=Qr();H(N(r),17,n,oi,(t,n)=>{var r=O(()=>g(I(n),3));let i=()=>I(r)[0],a=()=>I(r)[1],o=()=>I(r)[2];var s=Qr();ji(N(s),i,!0,(t,n)=>{sa(t,()=>({xmlns:`http://www.w3.org/2000/svg`,...a()}));var r=Qr(),i=N(r),s=t=>{e(t,o)},c=O(()=>Array.isArray(o()));V(i,e=>{I(c)&&e(s)}),z(n,r)}),z(t,s)}),z(t,r)};e(M(o),()=>I(a)),T(o)}z(e,o),D()}var Sa=Xr(``);function Ca(e){z(e,Sa())}function wa(){try{return typeof localStorage>`u`?null:localStorage}catch{return null}}function Ta(e,t=null){let n=wa();if(!n)return t;try{return n.getItem(e)??t}catch{return t}}function Ea(e,t){let n=wa();if(n)try{n.setItem(e,String(t))}catch{}}var Da=new class{#e=k(`system`);get theme(){return I(this.#e)}set theme(e){A(this.#e,e,!0)}#t=k(0);get tick(){return I(this.#t)}set tick(e){A(this.#t,e,!0)}init(){this.theme=Ta(`gomodel_theme`,`system`),this.apply(),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{this.theme===`system`&&this.tick++})}set(e){this.theme=e,Ea(`gomodel_theme`,e),this.apply(),this.tick++}toggle(){let e=[`light`,`system`,`dark`];this.set(e[(e.indexOf(this.theme)+1)%e.length])}apply(){let e=document.documentElement;this.theme===`system`?e.removeAttribute(`data-theme`):e.setAttribute(`data-theme`,this.theme)}},Oa=new class{#e=k(!1);get collapsed(){return I(this.#e)}set collapsed(e){A(this.#e,e,!0)}init(){this.collapsed=Ta(`gomodel_sidebar_collapsed`)===`true`}toggle(){this.collapsed=!this.collapsed,Ea(`gomodel_sidebar_collapsed`,this.collapsed)}},ka=new class{#e=k(j([]));get stack(){return I(this.#e)}set stack(e){A(this.#e,e,!0)}#t=1;opened(){let e=this.#t++;return this.stack=[...this.stack,e],e}closed(e){this.stack=this.stack.filter(t=>t!==e)}isTop(e){return this.stack.length>0&&this.stack[this.stack.length-1]===e}get openCount(){return this.stack.length}get anyOpen(){return this.stack.length>0}},Aa=R(``),ja=R(`
`,1);function Ma(e,t){E(t,!0);let n=G(t,`compact`,3,!1),r=[{value:`light`,icon:`sun`,label:`Light theme`},{value:`system`,icon:`monitor`,label:`System theme`},{value:`dark`,icon:`moon`,label:`Dark theme`}],i=O(()=>r.find(e=>e.value===Da.theme)||r[1]),a=O(()=>`Change theme (currently `+I(i).label+`)`);var o=ja(),s=N(o);let c;H(s,21,()=>r,e=>e.value,(e,t)=>{var n=Aa();let r;K(M(n),{get name(){return I(t).icon},class:`theme-icon`}),T(n),F(()=>{r=U(n,1,`theme-btn svelte-1keql7b`,null,r,{active:Da.theme===I(t).value}),W(n,`aria-pressed`,Da.theme===I(t).value),W(n,`title`,I(t).label),W(n,`aria-label`,I(t).label)}),L(`click`,n,()=>Da.set(I(t).value)),z(e,n)}),T(s);var l=P(s,2);let u;K(M(l),{get name(){return I(i).icon},class:`theme-icon`}),T(l),F(()=>{c=U(s,1,`theme-toggle svelte-1keql7b`,null,c,{"is-compact":n()}),u=U(l,1,`theme-toggle-mobile svelte-1keql7b`,null,u,{"is-compact":n()}),W(l,`title`,I(a)),W(l,`aria-label`,I(a))}),L(`click`,l,()=>Da.toggle()),z(e,o),D()}Hr([`click`]);function Na(){return typeof window>`u`?`/`:window.GOMODEL_BASE_PATH||`/`}function Pa(e){let t=Na();return!e||e.charAt(0)!==`/`||e.indexOf(`//`)===0||t===`/`||e===t||e.indexOf(t+`/`)===0?e:t+e}function Fa(e){let t=Na();return t===`/`||!e?e:e===t?`/`:e.indexOf(t+`/`)===0?e.slice(t.length)||`/`:e}function Ia(){return typeof window>`u`?``:window.GOMODEL_VERSION||``}function La(){return typeof window>`u`?!1:window.GOMODEL_DEMO_MODE===!0}var Ra=[`overview`,`usage`,`budgets`,`rate-limits`,`models`,`workflows`,`audit-logs`,`guardrails`,`mcp-servers`,`providers-config`,`auth-keys`,`settings`];function za(e){return e.startsWith(`/admin/static/`)?`/`+e.slice(14).replace(/^\/+/,``):e}function Ba(e){let t=za(Fa(e)).replace(/\/$/,``).replace(`/admin/dashboard`,``).replace(/^\//,``).split(`/`),n=t[0];n===`audit`&&(n=`audit-logs`);let r=t[1]||null;return n===`settings`&&r===`guardrails`?{page:`guardrails`,sub:null}:(n=Ra.includes(n)?n:`overview`,{page:n,sub:r})}var Va=new class{#e=k(`overview`);get page(){return I(this.#e)}set page(e){A(this.#e,e,!0)}#t=k(null);get sub(){return I(this.#t)}set sub(e){A(this.#t,e,!0)}init(){let{page:e,sub:t}=Ba(window.location.pathname);this.page=e,this.sub=t,window.addEventListener(`popstate`,()=>{let{page:e,sub:t}=Ba(window.location.pathname);this.page=e,this.sub=t})}navigate(e,t=null){let n=t?`/`+t:``;history.pushState(null,``,Pa(`/admin/dashboard/`+e+n)),this.page=e,this.sub=t}},Ha=`gomodel_api_key`;function Ua(e){let t=String(e||``).trim();if(/^Bearer\s*$/i.test(t))return``;let n=t.match(/^Bearer\s+(.+)$/i);return n?n[1].trim():t}var q=new class{#e=k(``);get apiKey(){return I(this.#e)}set apiKey(e){A(this.#e,e,!0)}#t=k(!1);get needsAuth(){return I(this.#t)}set needsAuth(e){A(this.#t,e,!0)}#n=k(!1);get authError(){return I(this.#n)}set authError(e){A(this.#n,e,!0)}#r=k(``);get authErrorMessage(){return I(this.#r)}set authErrorMessage(e){A(this.#r,e,!0)}#i=k(!1);get dialogOpen(){return I(this.#i)}set dialogOpen(e){A(this.#i,e,!0)}#a=k(0);get generation(){return I(this.#a)}set generation(e){A(this.#a,e,!0)}#o=k(0);get refreshTick(){return I(this.#o)}set refreshTick(e){A(this.#o,e,!0)}init(){try{this.apiKey=Ua(localStorage.getItem(Ha)||``)}catch{this.apiKey=``}}hasApiKey(){return Ua(this.apiKey)!==``}save(){this.apiKey=Ua(this.apiKey);try{localStorage.setItem(Ha,this.apiKey)}catch{}}openDialog(){this.dialogOpen=!0}closeDialog(){this.dialogOpen=!1}submit(){let e=Ua(this.apiKey);return e?(this.apiKey=e,this.save(),this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!1,this.closeDialog(),this.refresh(),!0):(this.apiKey=``,this.authError=!0,this.authErrorMessage=``,this.needsAuth=!0,this.openDialog(),!1)}refresh(){this.refreshTick++}handleUnauthorized(e,t=``){return typeof e==`number`&&e{r[e.type]=e.value}),r.year+`-`+r.month+`-`+r.day}formatTimestampInTimeZone(e,t){if(e==null)return`-`;let n=new Date(e);if(Number.isNaN(n.getTime()))return`-`;let r=eo(`en-CA`,{timeZone:to(t)?t:Xa,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}).formatToParts(n),i={};return r.forEach(e=>{i[e.type]=e.value}),i.year+`-`+i.month+`-`+i.day+` `+i.hour+`:`+i.minute+`:`+i.second}formatTimestamp(e){return this.formatTimestampInTimeZone(e,this.effectiveTimezone())}currentDateKey(e){return this.dateKeyInTimeZone(e||new Date,this.effectiveTimezone())}dateKeyToDate(e){return Ga(e)}dateToDateKey(e){return Ka(e)}addDaysToDateKey(e,t){return qa(e,t)}todayDate(){return this.dateKeyToDate(this.currentDateKey())}startOfMonthDate(e){let t=e instanceof Date?e:this.todayDate();return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1))}timeZoneOffsetLabel(e,t){let n=to(e)?e:Xa;try{let e=eo(`en-US`,{timeZone:n,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`,timeZoneName:`longOffset`}).formatToParts(t||new Date).find(e=>e.type===`timeZoneName`);if(!e||!e.value)return`UTC+00:00`;let r=e.value.replace(`GMT`,`UTC`);return r===`UTC`?`UTC+00:00`:r}catch{return`UTC+00:00`}}timeZoneOffsetMinutes(e,t){let n=/^UTC([+-])(\d{2}):(\d{2})$/.exec(this.timeZoneOffsetLabel(e,t));if(!n)return 0;let r=Number(n[2])*60+Number(n[3]);return n[1]===`-`?-r:r}timeZoneOptionLabel(e,t){return e+` (`+this.timeZoneOffsetLabel(e,t)+`)`}detectedTimeZoneLabel(){return this.timeZoneOptionLabel(this.detectedTimezone)}effectiveTimeZoneLabel(){return this.timeZoneOptionLabel(this.effectiveTimezone())}ensureOptions(){if(this.optionsLoaded)return;let e=new Date,t=[];try{typeof Intl.supportedValuesOf==`function`&&(t=Intl.supportedValuesOf(`timeZone`))}catch{t=[]}[Xa,this.detectedTimezone,this.override].forEach(e=>{e&&t.indexOf(e)===-1&&to(e)&&t.push(e)}),t=t.filter(e=>to(e)),t.sort((t,n)=>{let r=this.timeZoneOffsetMinutes(t,e)-this.timeZoneOffsetMinutes(n,e);return r===0?t.localeCompare(n):r}),this.options=t.map(t=>({value:t,label:this.timeZoneOptionLabel(t,e)})),this.optionsLoaded=!0}saveOverride(){let e=wa();if(e)if(this.override&&to(this.override))try{e.setItem(Za,this.override)}catch{}else{try{e.removeItem(Za)}catch{}this.override=``}this.optionsLoaded=!1,this.ensureOptions()}clearOverride(){let e=wa();if(e)try{e.removeItem(Za)}catch{}this.override=``}calendarTimeZoneText(){let e=this.override?`manual override`:`auto-detected`;return`Activity grouped by `+this.effectiveTimeZoneLabel()+` (`+e+`)`}};function ao(e,t){let n=e&&typeof e==`object`&&e.error&&e.error.message;return(typeof n==`string`?n.trim():``)||t}function oo(e,t){let n=e&&e.data;if(n&&typeof n==`object`){let e=[n.message,n.error,n.error&&typeof n.error==`object`?n.error.message:null];for(let t of e)if(typeof t==`string`&&t.trim())return t.trim()}return t}function so(){let e={"Content-Type":`application/json`},t=Ua(q.apiKey);return t&&(e.Authorization=`Bearer `+t),e[`X-GoModel-Timezone`]=io.effectiveTimezone(),e}function co(e,t={}){return fetch(Pa(e),{...t,headers:{...so(),...t.headers||{}}})}async function lo(e,t,{label:n=e,parse:r=!0}={}){let i=q.generation,a=await co(e,t);if(a.status===401)return q.handleUnauthorized(i),{ok:!1,stale:ie.trim()).filter(Boolean);return e.length>0?e:ho}cacheVisible(){if(this.flag(`CACHE_ENABLED`)!==``)return this.booleanFlag(`CACHE_ENABLED`,!1);let e=this.flag(`REDIS_URL`),t=this.flag(`SEMANTIC_CACHE_ENABLED`);return e===``&&t===``||this.booleanFlag(`REDIS_URL`,!1)||this.booleanFlag(`SEMANTIC_CACHE_ENABLED`,!1)}auditVisible(){return this.booleanFlag(`LOGGING_ENABLED`,!0)}usageVisible(){return this.booleanFlag(`USAGE_ENABLED`,!0)}budgetsVisible(){return this.booleanFlag(`BUDGETS_ENABLED`,!0)}rateLimitsVisible(){return this.booleanFlag(`RATE_LIMITS_ENABLED`,!0)}guardrailsVisible(){return this.booleanFlag(`GUARDRAILS_ENABLED`,!0)}mcpVisible(){return this.booleanFlag(`MCP_ENABLED`,!0)}liveLogsVisible(){return this.booleanFlag(`DASHBOARD_LIVE_LOGS_ENABLED`,!0)}fetch(){return this.#n||=this.#r().finally(()=>{this.#n=null}),this.#n}async ensureLoaded(){if(this.#n){await this.#n;return}this.loaded||await this.fetch()}async#r(){let e=typeof AbortController==`function`?new AbortController:null,t=e?setTimeout(()=>e.abort(),1e4):null;try{let t=await uo(`/admin/runtime/config`,{label:`dashboard config`,signal:e?e.signal:void 0});if(t.stale)return;if(!t.ok){this.config={},this.loaded=!1;return}let n=t.data,r={};for(let e of mo)n&&typeof n==`object`&&!Array.isArray(n)&&n[e]!==void 0&&n[e]!==null&&(r[e]=String(n[e]).trim());this.config=r,this.loaded=!0}catch(e){console.error(`Failed to fetch dashboard config:`,e),this.config={},this.loaded=!1}finally{t!==null&&clearTimeout(t)}}},_o=[{page:`overview`,label:`Overview`,icon:`layout-dashboard`},{page:`providers-config`,label:`Providers`,icon:`server-cog`},{page:`models`,label:`Models`,icon:`box`},{page:`audit-logs`,label:`Audit Logs`,icon:`history`},{page:`usage`,label:`Usage`,icon:`chart-column`},{page:`budgets`,label:`Budgets`,icon:`wallet`,visible:()=>go.budgetsVisible()},{page:`rate-limits`,label:`Rate Limits`,icon:`gauge`,visible:()=>go.rateLimitsVisible()},{page:`auth-keys`,label:`API Keys`,icon:`key-round`},{page:`workflows`,label:`Workflows`,icon:`workflow`},{page:`guardrails`,label:`Guardrails (experimental)`,icon:`shield-check`,visible:()=>go.guardrailsVisible()},{page:`mcp-servers`,label:`MCP Servers`,icon:`plug`,visible:()=>go.mcpVisible()},{page:`settings`,label:`Settings`,icon:`settings`}],vo=R(` `),yo=R(`
`),bo=R(` `,1);function xo(e,t){E(t,!0);let n=O(()=>_o.filter(e=>!e.visible||e.visible()));var r=bo(),i=N(r);let a;var o=M(i),s=M(o);Ca(M(s),{}),T(s),Ue(4),T(o);var c=P(o,2);H(c,21,()=>I(n),e=>e.page,(e,t)=>{var n=vo();let r;var i=M(n);K(i,{get name(){return I(t).icon},class:`nav-icon`});var a=P(i,2),o=M(a,!0);T(a),T(n),F(e=>{W(n,`href`,e),r=U(n,1,`nav-item svelte-1nwtzae`,null,r,{active:Va.page===I(t).page}),W(n,`title`,I(t).label),B(o,I(t).label)},[()=>Pa(`/admin/dashboard/`+I(t).page)]),L(`click`,n,e=>{e.preventDefault(),Va.navigate(I(t).page)}),z(e,n)}),T(c);var l=P(c,2),u=M(l);Ma(u,{get compact(){return Oa.collapsed}});var d=P(u,2),f=e=>{var t=yo(),n=M(t),r=M(n);K(r,{name:`lock-keyhole`,class:`api-key-open-icon`});var i=P(r,2),a=M(i,!0);T(i),T(n),T(t),F(()=>{W(n,`aria-label`,q.needsAuth?`Enter API key`:`Change API key`),B(a,q.needsAuth?`Enter API key`:`Change API key`)}),L(`click`,n,()=>q.openDialog()),z(e,t)},p=O(()=>q.needsAuth||q.hasApiKey());V(d,e=>{I(p)&&e(f)}),T(l),T(i);var m=P(i,2);let h;F(()=>{a=U(i,1,`sidebar svelte-1nwtzae`,null,a,{"sidebar-collapsed":Oa.collapsed}),h=U(m,1,`sidebar-toggle svelte-1nwtzae`,null,h,{collapsed:Oa.collapsed}),W(m,`title`,Oa.collapsed?`Expand sidebar`:`Collapse sidebar`),W(m,`aria-label`,Oa.collapsed?`Expand sidebar`:`Collapse sidebar`),W(m,`aria-expanded`,!Oa.collapsed)}),L(`click`,m,()=>Oa.toggle()),z(e,r),D()}Hr([`click`]);var So=R(``);function Co(e,t){E(t,!0);let n=G(t,`label`,3,`Close`),r=G(t,`class`,3,``),i=G(t,`iconClass`,3,`table-icon-svg`),a=G(t,`disabled`,3,!1),o=G(t,`el`,15,null);var s=So();K(M(s),{name:`x`,get class(){return i()}}),T(s),ga(s,e=>o(e),()=>o()),F(()=>{U(s,1,Fi([`dialog-close-btn`,r()]),`svelte-11l1bb5`),W(s,`aria-label`,n()),s.disabled=a()}),L(`click`,s,function(...e){t.onclick?.apply(this,e)}),z(e,s),D()}Hr([`click`]);function wo(e){return t=>{let n=n=>{t.contains(n.target)||e()},r=t=>{t.key===`Escape`&&e()};return document.addEventListener(`click`,n,!0),window.addEventListener(`keydown`,r),()=>{document.removeEventListener(`click`,n,!0),window.removeEventListener(`keydown`,r)}}}function To(e=`[data-modal-autofocus]`){return t=>{let n=t.querySelector(e);n&&typeof n.focus==`function`&&n.focus()}}var Eo=R(`
`,1);function Do(e,t){E(t,!0);let n=G(t,`open`,3,!1),r=G(t,`variant`,3,`editor`),i=G(t,`closeOnBackdrop`,3,!0),a=O(()=>r()===`auth`?`auth-dialog-backdrop`:`editor-modal-backdrop`),o=O(()=>r()===`auth`?`auth-dialog-shell`:`editor-modal-shell`);An(()=>{if(!n())return;let e=Er(()=>ka.opened()),r=n=>{n.key===`Escape`&&ka.isTop(e)&&t.onclose?.()};return window.addEventListener(`keydown`,r),()=>{ka.closed(e),window.removeEventListener(`keydown`,r)}});function s(e){i()&&e.target===e.currentTarget&&t.onclose?.()}var c=Qr(),l=N(c),u=e=>{var n=Eo(),r=N(n),i=P(r,2);gi(M(i),()=>t.children??f),T(i),Mi(i,To),F(()=>{U(r,1,Fi(I(a)),`svelte-17e0w4c`),U(i,1,Fi(I(o)),`svelte-17e0w4c`)}),L(`click`,i,s),z(e,n)};V(l,e=>{n()&&e(u)}),z(e,c),D()}Hr([`click`]);var Oo=R(``),ko=R(``);function Ao(e,t){E(t,!0),Do(e,{get open(){return q.dialogOpen},variant:`auth`,onclose:()=>q.closeDialog(),children:(e,t)=>{var n=ko(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a),T(i),Co(P(i,2),{label:`Close authentication dialog`,onclick:()=>q.closeDialog(),class:`auth-dialog-close`,iconClass:``}),T(r);var s=P(r,2),c=M(s),l=M(c);K(l,{name:`lock-keyhole`,class:`auth-dialog-input-icon`});var u=P(l,2);na(u),T(c);var d=P(c,2),f=e=>{var t=Oo(),n=M(t,!0);T(t),F(()=>B(n,q.authErrorMessage||`Enter a valid API key to continue.`)),z(e,t)};V(d,e=>{q.authError&&e(f)});var p=P(d,4),m=M(p),h=M(m);K(h,{name:`check`,class:`auth-dialog-submit-icon`});var g=P(h,2),_=M(g,!0);T(g),T(m),T(p),T(s),T(n),F(()=>{B(o,q.needsAuth?`Dashboard locked`:`Change API key`),B(_,q.needsAuth?`Unlock dashboard`:`Save API key`)}),Vr(`submit`,s,e=>{e.preventDefault(),q.submit()}),da(u,()=>q.apiKey,e=>q.apiKey=e),z(e,n)},$$slots:{default:!0}}),D()}function jo(){return{open:!1,title:``,titleId:`typedConfirmationDialogTitle`,inputId:`typed-confirmation-input`,message:``,requiredText:``,value:``,confirmLabel:`Confirm`,icon:`triangle-alert`,dialogClass:``,loading:!1,onConfirm:null,onClose:null}}var Mo=new class{#e=k(j(jo()));get state(){return I(this.#e)}set state(e){A(this.#e,e,!0)}#t=k(``);get error(){return I(this.#t)}set error(e){A(this.#t,e,!0)}open(e){this.error=``,this.state={...jo(),open:!0,...e||{}}}close(){let e=this.state;typeof e.onClose==`function`&&e.onClose(),this.state=jo(),this.error=``}ready(){return String(this.state.value||``).trim().toLowerCase()===String(this.state.requiredText||``).trim().toLowerCase()}inputLabel(){return`Type `+String(this.state.requiredText||``).trim()+` to confirm`}async submit(){if(!this.ready()){this.error=this.inputLabel()+`.`;return}if(typeof this.state.onConfirm==`function`){this.state.loading=!0;try{await this.state.onConfirm()}finally{this.state.loading=!1}}}},No=R(`

`),Po=R(``),Fo=R(`

`);function Io(e,t){E(t,!0);let n=O(()=>Mo.state);Do(e,{get open(){return I(n).open},variant:`auth`,onclose:()=>Mo.close(),children:(e,t)=>{var r=Fo(),i=M(r),a=M(i),o=M(a,!0);T(a),Co(P(a,2),{label:`Close confirmation dialog`,onclick:()=>Mo.close(),class:`auth-dialog-close`,iconClass:``}),T(i);var s=P(i,2),c=M(s),l=e=>{var t=No(),r=M(t,!0);T(t),F(()=>B(r,I(n).message)),z(e,t)};V(c,e=>{I(n).message&&e(l)});var u=P(c,2),d=M(u),f=M(d,!0);T(d);var p=P(d,2);na(p),T(u);var m=P(u,2),h=e=>{var t=Po(),n=M(t,!0);T(t),F(()=>B(n,Mo.error)),z(e,t)};V(m,e=>{Mo.error&&e(h)});var g=P(m,2),_=M(g),v=P(_,2),y=M(v);K(y,{get name(){return I(n).icon},class:`form-action-icon`});var b=P(y,2),x=M(b,!0);T(b),T(v),T(g),T(s),T(r),F((e,t)=>{U(r,1,`auth-dialog ${I(n).dialogClass??``}`),W(r,`aria-labelledby`,I(n).titleId),W(a,`id`,I(n).titleId),B(o,I(n).title),W(d,`for`,I(n).inputId),B(f,e),W(p,`id`,I(n).inputId),v.disabled=t,B(x,I(n).confirmLabel)},[()=>Mo.inputLabel(),()=>I(n).loading||!Mo.ready()]),Vr(`submit`,s,e=>{e.preventDefault(),Mo.submit()}),da(p,()=>Mo.state.value,e=>Mo.state.value=e),L(`click`,_,()=>Mo.close()),z(e,r)},$$slots:{default:!0}}),D()}Hr([`click`]);var Lo=e=>e;function Ro(e){let t=e-1;return t*t*t+1}function zo(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function Bo(e,{delay:t=0,duration:n=400,easing:r=Lo}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}function Vo(e,{delay:t=0,duration:n=400,easing:r=Ro,x:i=0,y:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=c*(1-o),[d,f]=zo(i),[p,m]=zo(a);return{delay:t,duration:n,easing:r,css:(e,t)=>` + transform: ${l} translate(${(1-e)*d}${f}, ${(1-e)*p}${m}); + opacity: ${c-u*t}`}}function Ho(e,{delay:t=0,duration:n=400,easing:r=Ro,axis:i=`y`}={}){let a=getComputedStyle(e),o=+a.opacity,s=i===`y`?`height`:`width`,c=parseFloat(a[s]),l=i===`y`?[`top`,`bottom`]:[`left`,`right`],u=l.map(e=>`${e[0].toUpperCase()}${e.slice(1)}`),d=parseFloat(a[`padding${u[0]}`]),f=parseFloat(a[`padding${u[1]}`]),p=parseFloat(a[`margin${u[0]}`]),m=parseFloat(a[`margin${u[1]}`]),h=parseFloat(a[`border${u[0]}Width`]),g=parseFloat(a[`border${u[1]}Width`]);return{delay:t,duration:n,easing:r,css:e=>`overflow: hidden;opacity: ${Math.min(e*20,1)*o};${s}: ${e*c}px;padding-${l[0]}: ${e*d}px;padding-${l[1]}: ${e*f}px;margin-${l[0]}: ${e*p}px;margin-${l[1]}: ${e*m}px;border-${l[0]}-width: ${e*h}px;border-${l[1]}-width: ${e*g}px;min-${s}: 0`}}function Uo(e){return--e*e*(2.70158*e+1.70158)+1}function Wo(e){let t=e-1;return t*t*t+1}var Go=5e3,Ko=8e3,qo=new class{#e=k(j([]));get toasts(){return I(this.#e)}set toasts(e){A(this.#e,e,!0)}#t=0;#n=new Map;success(e){this.#r(`success`,e,Go)}error(e){this.#r(`error`,e,Ko)}dismiss(e){let t=this.#n.get(e);t&&(clearTimeout(t),this.#n.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}#r(e,t,n){let r=String(t||``).trim();if(!r)return;let i=this.toasts.find(t=>t.kind===e&&t.text===r);i&&this.dismiss(i.id);let a=++this.#t;this.toasts=[...this.toasts,{id:a,kind:e,text:r}],this.#n.set(a,setTimeout(()=>this.dismiss(a),n))}},Jo=R(`
`),Yo=R(`
`);function Xo(e,t){E(t,!0);var n=Yo();H(n,21,()=>qo.toasts,e=>e.id,(e,t)=>{var n=Jo();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2);T(n),F(()=>{r=U(n,1,`flash-toast svelte-1i257xg`,null,r,{"flash-toast-success":I(t).kind===`success`,"flash-toast-error":I(t).kind===`error`}),W(n,`role`,I(t).kind===`error`?`alert`:`status`),W(n,`aria-live`,I(t).kind===`error`?`assertive`:`polite`),B(a,I(t).text)}),L(`click`,o,()=>qo.dismiss(I(t).id)),ki(1,n,()=>Vo,()=>({y:-24,duration:360,easing:Uo})),ki(2,n,()=>Bo,()=>({duration:150})),z(e,n)}),T(n),z(e,n),D()}Hr([`click`]);var Zo=R(``);function Qo(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{z(e,Zo())},a=O(()=>La());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}function $o(e){return String(e||``).split(`,`).map(e=>e.trim()).filter(e=>e)}function es(e){if(e==null||e===``)return`Not captured`;if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function ts(e){return e==null||e===void 0?`-`:e.toLocaleString()}function ns(e){if(e==null)return`---`;let t=Number(e);return Number.isFinite(t)?t>0&&t<1e-4?`<$0.0001`:`$`+t.toFixed(4).replace(/(\.\d{2}\d*?)0+$/,`$1`):`---`}function rs(e){return e==null||e===void 0?`—`:`$`+e.toFixed(2)}function is(e){return e==null||e===void 0?`—`:e<.01?`$`+e.toFixed(6):`$`+e.toFixed(4)}function as(e){if(e==null||e===``)return`-`;let t=Number(e);if(!Number.isFinite(t))return`-`;let n=Math.abs(t),r=[{threshold:1e9,suffix:`B`},{threshold:1e6,suffix:`M`},{threshold:1e3,suffix:`K`}];for(let e=0;e=i.threshold){let n=t/i.threshold;return Math.abs(Number(n.toFixed(1)))>=1e3&&e>0&&(i=r[e-1],n=t/i.threshold),n.toFixed(1).replace(/\.0$/,``)+i.suffix}}return String(t)}function os(e,t){let n=t==null||t===``?NaN:Number(t),r=Number.isFinite(n)?ts(n):`-`;return String(e||`Tokens`)+`: `+r}function ss(e){return e?typeof e==`string`?e:e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`):``}function cs(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)}function ls(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)+` `+String(t.getUTCHours()).padStart(2,`0`)+`:`+String(t.getUTCMinutes()).padStart(2,`0`)+`:`+String(t.getUTCSeconds()).padStart(2,`0`)+` UTC`}function us(e){return String(e&&e.provider||``).trim()}function ds(e){return String(e&&e.provider_name||``).trim()||us(e)}function fs(e,t){let n=String(t||``).trim();if(!n)return`-`;let r=ds(e);return!r||n===r||n.startsWith(r+`/`)?n:r+`/`+n}function ps(e){return fs(e,e&&e.model)}function ms(e){return fs(e,e&&e.resolved_model)}function hs(e){let t=String(e&&(e.requested_model||e.model)||``).trim();if(!e)return t;let n=String(e.data&&e.data.failover&&e.data.failover.target_model||``).trim();if(n&&n!==t)return t+` ⮕ `+n;if(e.alias_used&&e.resolved_model){let n=ms(e);if(n&&n!==`-`&&n!==t)return t+` ⮕ `+n}return t}var gs=`gomodel_date_range`,_s=1;function vs(e){return/^[1-9]\d*$/.test(String(e??``))}var ys=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function bs({selectedPreset:e,startKey:t,endKey:n,followsToday:r}){return e&&vs(e)?{v:_s,mode:`preset`,days:String(e)}:e?null:Ja(t)&&Ja(n)?{v:_s,mode:`custom`,start:t,end:n,follow:r===!0}:null}function xs(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return null}return!t||typeof t!=`object`?null:t.mode===`preset`?vs(t.days)?{mode:`preset`,days:String(t.days)}:null:t.mode===`custom`&&Ja(t.start)&&Ja(t.end)&&t.start<=t.end?{mode:`custom`,start:t.start,end:t.end,follow:t.follow===!0}:null}function Ss(e,t,n){let r=Ya(e,t);return r<1||!Ja(n)?{start:e,end:t}:{start:qa(n,-(r-1)),end:n}}function Cs(e,t){if(e===t)return`Today`;let[n,r,i]=e.split(`-`);return ys[Number(r)-1]+` `+Number(i)+`, `+n}function ws({selectedPreset:e,startKey:t,endKey:n,followsToday:r,todayKey:i}){if(e)return`Last `+e+` days`;if(!Ja(t)||!Ja(n))return``;let a=Ya(t,n);return r||n===i?a===1?`Today`:`Last `+a+` days`:a===1?`1 day`:a+` days`}function Ts({selectedPreset:e,startKey:t,endKey:n,todayKey:r}){if(e)return`Last `+e+` days`;let i=e=>Cs(e,r);return Ja(t)&&Ja(n)?t===n?i(t):i(t)+` – `+i(n):Ja(t)?i(t)+` – ...`:`Last 30 days`}var Es=6e4,Ds=new class{#e=k(j(`30`));get days(){return I(this.#e)}set days(e){A(this.#e,e,!0)}#t=k(j(`30`));get selectedPreset(){return I(this.#t)}set selectedPreset(e){A(this.#t,e,!0)}#n=k(null);get customStartDate(){return I(this.#n)}set customStartDate(e){A(this.#n,e,!0)}#r=k(null);get customEndDate(){return I(this.#r)}set customEndDate(e){A(this.#r,e,!0)}#i=k(!1);get followsToday(){return I(this.#i)}set followsToday(e){A(this.#i,e,!0)}#a=k(`daily`);get interval(){return I(this.#a)}set interval(e){A(this.#a,e,!0)}#o=k(0);get syncTick(){return I(this.#o)}set syncTick(e){A(this.#o,e,!0)}init(){this.restore(),this.syncToToday(),typeof setInterval==`function`&&setInterval(()=>this.syncToToday(),Es)}queryStr(){return this.customStartDate&&this.customEndDate?`start_date=`+ss(this.customStartDate)+`&end_date=`+ss(this.customEndDate):`days=`+this.days}selectPreset(e){this.selectedPreset=e,this.customStartDate=null,this.customEndDate=null,this.followsToday=!1,this.days=e,this.persist()}selectStart(e){this.selectedPreset=null,this.customStartDate=e,this.customEndDate&&this.customEndDatet.category===e);return t?t.count:0}get filteredModels(){if(!this.filter)return this.models;let e=this.filter.toLowerCase();return this.models.filter(t=>(t.model?.id??``).toLowerCase().includes(e)||(t.provider_name??``).toLowerCase().includes(e)||(t.provider_type??``).toLowerCase().includes(e)||(t.selector??``).toLowerCase().includes(e)||(t.model?.owned_by??``).toLowerCase().includes(e)||(t.model?.metadata?.modes??[]).join(`,`).toLowerCase().includes(e)||(t.model?.metadata?.categories??[]).join(`,`).toLowerCase().includes(e))}},ks=R(``);function As(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=ks(),n=P(M(t),2);T(t),L(`click`,n,()=>q.openDialog()),z(e,t)};V(r,e=>{q.authError&&e(i)}),z(e,n),D()}Hr([`click`]);function js(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null}}function Ms(){return{summary:{total_hits:0,exact_hits:0,semantic_hits:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_saved_cost:null},daily:[]}}var Ns=new class{#e=k(j(js()));get summary(){return I(this.#e)}set summary(e){A(this.#e,e,!0)}#t=k(j([]));get daily(){return I(this.#t)}set daily(e){A(this.#t,e,!0)}#n=k(j(Ms()));get cacheOverview(){return I(this.#n)}set cacheOverview(e){A(this.#n,e,!0)}#r=k(!1);get loading(){return I(this.#r)}set loading(e){A(this.#r,e,!0)}#i=null;#a=null;cacheAnalyticsEnabled(){return go.cacheVisible()}async fetchUsage(){this.#i&&this.#i.abort();let e=new AbortController;this.#i=e,this.loading=!0;try{let t=Ds.queryStr()+`&interval=`+Ds.interval,[n,r]=await Promise.all([uo(`/admin/usage/summary?`+t,{label:`usage summary`,signal:e.signal}),uo(`/admin/usage/daily?`+t,{label:`usage daily`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.summary=js(),this.daily=[],this.cacheOverview=Ms();return}this.summary=n.data||js(),this.daily=Array.isArray(r.data)?r.data:[]}catch(e){if(po(e))return;console.error(`Failed to fetch usage:`,e),this.summary=js(),this.daily=[]}finally{this.#i===e&&(this.#i=null,this.loading=!1)}}async fetchCacheOverview(e=``){if(await go.ensureLoaded(),!this.cacheAnalyticsEnabled()){this.cacheOverview=Ms();return}this.#a&&this.#a.abort();let t=new AbortController;this.#a=t;try{let n=await uo(`/admin/cache/overview?`+(Ds.queryStr()+`&interval=`+Ds.interval+e),{label:`cache overview`,signal:t.signal});if(n.stale||t.signal.aborted)return;if(!n.ok){this.cacheOverview=Ms();return}let r=n.data&&typeof n.data==`object`?n.data:Ms();r.summary||=Ms().summary,Array.isArray(r.daily)||(r.daily=[]),this.cacheOverview=r}catch(e){if(po(e))return;console.error(`Failed to fetch cache overview:`,e),this.cacheOverview=Ms()}finally{this.#a===t&&(this.#a=null)}}},Ps=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`];function Fs(e,t){let n=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return Ps[n.getUTCMonth()]+` `+n.getUTCFullYear()}function Is(e,t,n){let r=e.getUTCFullYear(),i=e.getUTCMonth()+t,a=new Date(Date.UTC(r,i,1)),o=new Date(Date.UTC(r,i+1,0)),s=(a.getUTCDay()+6)%7,c=[],l=new Date(Date.UTC(r,i,0));for(let e=s-1;e>=0;e--){let t=l.getUTCDate()-e,a=new Date(Date.UTC(r,i-1,t));c.push({day:t,date:a,current:!1,key:`p-`+n(a)})}for(let e=1;e<=o.getUTCDate();e++){let t=new Date(Date.UTC(r,i,e));c.push({day:e,date:t,current:!0,key:`c-`+n(t)})}let u=42-c.length;for(let e=1;e<=u;e++){let t=new Date(Date.UTC(r,i+1,e));c.push({day:e,date:t,current:!1,key:`n-`+n(t)})}return c}function Ls(e,t,n){let r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return n&&r.getTime()>n.getTime()?e:r}function Rs(e,t){return e.getUTCFullYear()===t.getUTCFullYear()&&e.getUTCMonth()===t.getUTCMonth()}var zs=R(``),Bs=R(``),Vs=R(``),Hs=R(`
MoTuWeThFrSaSu
`);function Us(e,t){E(t,!0);let n=G(t,`offset`,3,0),r=O(()=>Is(t.calendarMonth,n(),e=>io.dateToDateKey(e))),i=O(()=>Rs(t.calendarMonth,io.todayDate())),a=e=>io.dateToDateKey(e.date),o=e=>a(e)>io.currentDateKey(),s=e=>e.current&&a(e)===io.currentDateKey();function c(e,t){let n=t===`start`?Ds.rangeStart():Ds.rangeEnd();return e.current&&!!n&&a(e)===io.dateToDateKey(n)}function l(e){let t=Ds.rangeStart(),n=Ds.rangeEnd();return!e.current||!t||!n?!1:a(e)>=io.dateToDateKey(t)&&a(e)<=io.dateToDateKey(n)}var u=Hs(),d=M(u),f=M(d);let p;var m=P(f,2),h=M(m,!0);T(m);var g=P(m,2),_=e=>{z(e,zs())},v=e=>{var n=Bs();F(()=>n.disabled=I(i)),L(`click`,n,function(...e){t.onnext?.apply(this,e)}),z(e,n)};V(g,e=>{n()===-1?e(_):e(v,-1)}),T(d);var y=P(d,4);H(y,21,()=>I(r),e=>e.key,(e,n)=>{var r=Vs(),i=M(r,!0);T(r),F((e,t)=>{U(r,1,e,`svelte-g7ga4u`),r.disabled=t,B(i,I(n).day)},[()=>Fi([`dp-day`,{"other-month":!I(n).current,today:s(I(n)),"range-start":c(I(n),`start`),"range-end":c(I(n),`end`),"in-range":l(I(n)),disabled:o(I(n))}]),()=>o(I(n))||!I(n).current]),L(`click`,r,()=>t.onselect?.(I(n))),z(e,r)}),T(y),T(u),F(e=>{p=U(f,1,`dp-nav-btn svelte-g7ga4u`,null,p,{"dp-nav-prev-mobile":n()!==-1}),B(h,e)},[()=>Fs(t.calendarMonth,n())]),L(`click`,f,function(...e){t.onprev?.apply(this,e)}),z(e,u),D()}Hr([`click`]);var Ws=R(``),Gs=R(`
`),Ks=Xr(``),qs=Xr(``),Js=R(`
`),Ys=R(`
`);function Xs(e,t){E(t,!0);let n=[`3`,`7`,`14`,`30`,`90`],r=k(!1),i=k(`start`),a=k(j(new Date)),o=k(j({show:!1,x:0,y:0}));function s(){A(r,!I(r)),I(r)&&(Ds.syncToToday(),A(a,io.startOfMonthDate(Ds.customEndDate||io.todayDate()),!0),A(i,`start`))}function c(){A(r,!1),A(o,{show:!1,x:0,y:0},!0)}let l=Ds.syncTick;An(()=>{let e=Ds.syncTick;e!==l&&(l=e,t.onchange?.())});function u(e){Ds.selectPreset(e),A(i,`start`),t.onchange?.(),c()}let d=()=>A(a,Ls(I(a),-1),!0),f=()=>A(a,Ls(I(a),1,io.startOfMonthDate(io.todayDate())),!0);function p(e){let n=new Date(e.date);if(I(i)===`start`){Ds.selectStart(n),A(i,`end`),t.onchange?.();return}Ds.selectEnd(n),A(i,`start`),t.onchange?.(),c()}var m=Ys(),h=M(m),g=P(M(h),2),_=M(g,!0);T(g);var v=P(g,2);let y;T(h);var b=P(h,2),x=e=>{var t=Gs(),r=M(t);H(r,20,()=>n,e=>e,(e,t)=>{var n=Ws();let r;var i=M(n);T(n),F(()=>{r=U(n,1,`preset-btn svelte-ax7ma4`,null,r,{active:Ds.selectedPreset===t}),B(i,`Last ${t??``} days`)}),L(`click`,n,()=>u(t)),z(e,n)}),T(r);var i=P(r,2);H(i,20,()=>[-1,0],e=>e,(e,t)=>{Us(e,{get calendarMonth(){return I(a)},get offset(){return t},onprev:d,onnext:f,onselect:p})}),T(i),T(t),L(`mousemove`,i,e=>A(o,{show:!0,x:e.clientX,y:e.clientY},!0)),Vr(`mouseleave`,i,()=>A(o,{show:!1,x:0,y:0},!0)),z(e,t)};V(b,e=>{I(r)&&e(x)});var S=P(b,2),C=e=>{var t=Js(),n=M(t),r=e=>{z(e,Ks())},a=e=>{z(e,qs())};V(n,e=>{I(i)===`start`?e(r):e(a,-1)});var s=P(n,2),c=M(s,!0);T(s),T(t),F(()=>{Hi(t,`left:${I(o).x??``}px;top:${I(o).y??``}px`),B(c,I(i)===`end`?`Select end date`:`Select start date`)}),z(e,t)};V(S,e=>{I(o).show&&e(C)}),T(m),Mi(m,()=>I(r)?wo(c):void 0),F((e,t)=>{W(h,`title`,e),B(_,t),y=U(v,0,`date-picker-chevron svelte-ax7ma4`,null,y,{open:I(r)})},[()=>Ds.dateRangeSpanLabel(),()=>Ds.dateRangeLabel()]),L(`click`,h,s),z(e,m),D()}Hr([`click`,`mousemove`]);function Zs(e){return e+.5|0}var Qs=(e,t,n)=>Math.max(Math.min(e,n),t);function $s(e){return Qs(Zs(e*2.55),0,255)}function ec(e){return Qs(Zs(e*255),0,255)}function tc(e){return Qs(Zs(e/2.55)/100,0,1)}function nc(e){return Qs(Zs(e*100),0,100)}var rc={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},ic=[...`0123456789ABCDEF`],ac=e=>ic[e&15],oc=e=>ic[(e&240)>>4]+ic[e&15],sc=e=>(e&240)>>4==(e&15),cc=e=>sc(e.r)&&sc(e.g)&&sc(e.b)&&sc(e.a);function lc(e){var t=e.length,n;return e[0]===`#`&&(t===4||t===5?n={r:255&rc[e[1]]*17,g:255&rc[e[2]]*17,b:255&rc[e[3]]*17,a:t===5?rc[e[4]]*17:255}:(t===7||t===9)&&(n={r:rc[e[1]]<<4|rc[e[2]],g:rc[e[3]]<<4|rc[e[4]],b:rc[e[5]]<<4|rc[e[6]],a:t===9?rc[e[7]]<<4|rc[e[8]]:255})),n}var uc=(e,t)=>e<255?t(e):``;function dc(e){var t=cc(e)?ac:oc;return e?`#`+t(e.r)+t(e.g)+t(e.b)+uc(e.a,t):void 0}var fc=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function pc(e,t,n){let r=t*Math.min(n,1-n),i=(t,i=(t+e/30)%12)=>n-r*Math.max(Math.min(i-3,9-i,1),-1);return[i(0),i(8),i(4)]}function mc(e,t,n){let r=(r,i=(r+e/60)%6)=>n-n*t*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function hc(e,t,n){let r=pc(e,1,.5),i;for(t+n>1&&(i=1/(t+n),t*=i,n*=i),i=0;i<3;i++)r[i]*=1-t-n,r[i]+=t;return r}function gc(e,t,n,r,i){return e===i?(t-n)/r+(t.5?l/(2-i-a):l/(i+a),s=gc(t,n,r,l,i),s=s*60+.5),[s|0,c||0,o]}function vc(e,t,n,r){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,r)).map(ec)}function yc(e,t,n){return vc(pc,e,t,n)}function bc(e,t,n){return vc(hc,e,t,n)}function xc(e,t,n){return vc(mc,e,t,n)}function Sc(e){return(e%360+360)%360}function Cc(e){let t=fc.exec(e),n=255,r;if(!t)return;t[5]!==r&&(n=t[6]?$s(+t[5]):ec(+t[5]));let i=Sc(+t[2]),a=t[3]/100,o=t[4]/100;return r=t[1]===`hwb`?bc(i,a,o):t[1]===`hsv`?xc(i,a,o):yc(i,a,o),{r:r[0],g:r[1],b:r[2],a:n}}function wc(e,t){var n=_c(e);n[0]=Sc(n[0]+t),n=yc(n),e.r=n[0],e.g=n[1],e.b=n[2]}function Tc(e){if(!e)return;let t=_c(e),n=t[0],r=nc(t[1]),i=nc(t[2]);return e.a<255?`hsla(${n}, ${r}%, ${i}%, ${tc(e.a)})`:`hsl(${n}, ${r}%, ${i}%)`}var Ec={x:`dark`,Z:`light`,Y:`re`,X:`blu`,W:`gr`,V:`medium`,U:`slate`,A:`ee`,T:`ol`,S:`or`,B:`ra`,C:`lateg`,D:`ights`,R:`in`,Q:`turquois`,E:`hi`,P:`ro`,O:`al`,N:`le`,M:`de`,L:`yello`,F:`en`,K:`ch`,G:`arks`,H:`ea`,I:`ightg`,J:`wh`},Dc={OiceXe:`f0f8ff`,antiquewEte:`faebd7`,aqua:`ffff`,aquamarRe:`7fffd4`,azuY:`f0ffff`,beige:`f5f5dc`,bisque:`ffe4c4`,black:`0`,blanKedOmond:`ffebcd`,Xe:`ff`,XeviTet:`8a2be2`,bPwn:`a52a2a`,burlywood:`deb887`,caMtXe:`5f9ea0`,KartYuse:`7fff00`,KocTate:`d2691e`,cSO:`ff7f50`,cSnflowerXe:`6495ed`,cSnsilk:`fff8dc`,crimson:`dc143c`,cyan:`ffff`,xXe:`8b`,xcyan:`8b8b`,xgTMnPd:`b8860b`,xWay:`a9a9a9`,xgYF:`6400`,xgYy:`a9a9a9`,xkhaki:`bdb76b`,xmagFta:`8b008b`,xTivegYF:`556b2f`,xSange:`ff8c00`,xScEd:`9932cc`,xYd:`8b0000`,xsOmon:`e9967a`,xsHgYF:`8fbc8f`,xUXe:`483d8b`,xUWay:`2f4f4f`,xUgYy:`2f4f4f`,xQe:`ced1`,xviTet:`9400d3`,dAppRk:`ff1493`,dApskyXe:`bfff`,dimWay:`696969`,dimgYy:`696969`,dodgerXe:`1e90ff`,fiYbrick:`b22222`,flSOwEte:`fffaf0`,foYstWAn:`228b22`,fuKsia:`ff00ff`,gaRsbSo:`dcdcdc`,ghostwEte:`f8f8ff`,gTd:`ffd700`,gTMnPd:`daa520`,Way:`808080`,gYF:`8000`,gYFLw:`adff2f`,gYy:`808080`,honeyMw:`f0fff0`,hotpRk:`ff69b4`,RdianYd:`cd5c5c`,Rdigo:`4b0082`,ivSy:`fffff0`,khaki:`f0e68c`,lavFMr:`e6e6fa`,lavFMrXsh:`fff0f5`,lawngYF:`7cfc00`,NmoncEffon:`fffacd`,ZXe:`add8e6`,ZcSO:`f08080`,Zcyan:`e0ffff`,ZgTMnPdLw:`fafad2`,ZWay:`d3d3d3`,ZgYF:`90ee90`,ZgYy:`d3d3d3`,ZpRk:`ffb6c1`,ZsOmon:`ffa07a`,ZsHgYF:`20b2aa`,ZskyXe:`87cefa`,ZUWay:`778899`,ZUgYy:`778899`,ZstAlXe:`b0c4de`,ZLw:`ffffe0`,lime:`ff00`,limegYF:`32cd32`,lRF:`faf0e6`,magFta:`ff00ff`,maPon:`800000`,VaquamarRe:`66cdaa`,VXe:`cd`,VScEd:`ba55d3`,VpurpN:`9370db`,VsHgYF:`3cb371`,VUXe:`7b68ee`,VsprRggYF:`fa9a`,VQe:`48d1cc`,VviTetYd:`c71585`,midnightXe:`191970`,mRtcYam:`f5fffa`,mistyPse:`ffe4e1`,moccasR:`ffe4b5`,navajowEte:`ffdead`,navy:`80`,Tdlace:`fdf5e6`,Tive:`808000`,TivedBb:`6b8e23`,Sange:`ffa500`,SangeYd:`ff4500`,ScEd:`da70d6`,pOegTMnPd:`eee8aa`,pOegYF:`98fb98`,pOeQe:`afeeee`,pOeviTetYd:`db7093`,papayawEp:`ffefd5`,pHKpuff:`ffdab9`,peru:`cd853f`,pRk:`ffc0cb`,plum:`dda0dd`,powMrXe:`b0e0e6`,purpN:`800080`,YbeccapurpN:`663399`,Yd:`ff0000`,Psybrown:`bc8f8f`,PyOXe:`4169e1`,saddNbPwn:`8b4513`,sOmon:`fa8072`,sandybPwn:`f4a460`,sHgYF:`2e8b57`,sHshell:`fff5ee`,siFna:`a0522d`,silver:`c0c0c0`,skyXe:`87ceeb`,UXe:`6a5acd`,UWay:`708090`,UgYy:`708090`,snow:`fffafa`,sprRggYF:`ff7f`,stAlXe:`4682b4`,tan:`d2b48c`,teO:`8080`,tEstN:`d8bfd8`,tomato:`ff6347`,Qe:`40e0d0`,viTet:`ee82ee`,JHt:`f5deb3`,wEte:`ffffff`,wEtesmoke:`f5f5f5`,Lw:`ffff00`,LwgYF:`9acd32`};function Oc(){let e={},t=Object.keys(Dc),n=Object.keys(Ec),r,i,a,o,s;for(r=0;r>16&255,a>>8&255,a&255]}return e}var kc;function Ac(e){kc||(kc=Oc(),kc.transparent=[0,0,0,0]);let t=kc[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var jc=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Mc(e){let t=jc.exec(e),n=255,r,i,a;if(t){if(t[7]!==r){let e=+t[7];n=t[8]?$s(e):Qs(e*255,0,255)}return r=+t[1],i=+t[3],a=+t[5],r=255&(t[2]?$s(r):Qs(r,0,255)),i=255&(t[4]?$s(i):Qs(i,0,255)),a=255&(t[6]?$s(a):Qs(a,0,255)),{r,g:i,b:a,a:n}}}function Nc(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${tc(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}var Pc=e=>e<=.0031308?e*12.92:e**(1/2.4)*1.055-.055,Fc=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Ic(e,t,n){let r=Fc(tc(e.r)),i=Fc(tc(e.g)),a=Fc(tc(e.b));return{r:ec(Pc(r+n*(Fc(tc(t.r))-r))),g:ec(Pc(i+n*(Fc(tc(t.g))-i))),b:ec(Pc(a+n*(Fc(tc(t.b))-a))),a:e.a+n*(t.a-e.a)}}function Lc(e,t,n){if(e){let r=_c(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*n,t===0?360:1)),r=yc(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function Rc(e,t){return e&&Object.assign(t||{},e)}function zc(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=ec(e[3]))):(t=Rc(e,{r:0,g:0,b:0,a:1}),t.a=ec(t.a)),t}function Bc(e){return e.charAt(0)===`r`?Mc(e):Cc(e)}var Vc=class e{constructor(t){if(t instanceof e)return t;let n=typeof t,r;n===`object`?r=zc(t):n===`string`&&(r=lc(t)||Ac(t)||Bc(t)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=Rc(this._rgb);return e&&(e.a=tc(e.a)),e}set rgb(e){this._rgb=zc(e)}rgbString(){return this._valid?Nc(this._rgb):void 0}hexString(){return this._valid?dc(this._rgb):void 0}hslString(){return this._valid?Tc(this._rgb):void 0}mix(e,t){if(e){let n=this.rgb,r=e.rgb,i,a=t===i?.5:t,o=2*a-1,s=n.a-r.a,c=((o*s===-1?o:(o+s)/(1+o*s))+1)/2;i=1-c,n.r=255&c*n.r+i*r.r+.5,n.g=255&c*n.g+i*r.g+.5,n.b=255&c*n.b+i*r.b+.5,n.a=a*n.a+(1-a)*r.a,this.rgb=n}return this}interpolate(e,t){return e&&(this._rgb=Ic(this._rgb,e._rgb,t)),this}clone(){return new e(this.rgb)}alpha(e){return this._rgb.a=ec(e),this}clearer(e){let t=this._rgb;return t.a*=1-e,this}greyscale(){let e=this._rgb;return e.r=e.g=e.b=Zs(e.r*.3+e.g*.59+e.b*.11),this}opaquer(e){let t=this._rgb;return t.a*=1+e,this}negate(){let e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return Lc(this._rgb,2,e),this}darken(e){return Lc(this._rgb,2,-e),this}saturate(e){return Lc(this._rgb,1,e),this}desaturate(e){return Lc(this._rgb,1,-e),this}rotate(e){return wc(this._rgb,e),this}};function Hc(){}var Uc=(()=>{let e=0;return()=>e++})();function Wc(e){return e==null}function Gc(e){if(Array.isArray&&Array.isArray(e))return!0;let t=Object.prototype.toString.call(e);return t.slice(0,7)===`[object`&&t.slice(-6)===`Array]`}function Kc(e){return e!==null&&Object.prototype.toString.call(e)===`[object Object]`}function qc(e){return(typeof e==`number`||e instanceof Number)&&isFinite(+e)}function Jc(e,t){return qc(e)?e:t}function Yc(e,t){return e===void 0?t:e}var Xc=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100:+e/t,Zc=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100*t:+e;function Qc(e,t,n){if(e&&typeof e.call==`function`)return e.apply(n,t)}function $c(e,t,n,r){let i,a,o;if(Gc(e))if(a=e.length,r)for(i=a-1;i>=0;i--)t.call(n,e[i],i);else for(i=0;ie,x:e=>e.x,y:e=>e.y};function cl(e){let t=e.split(`.`),n=[],r=``;for(let e of t)r+=e,r.endsWith(`\\`)?r=r.slice(0,-1)+`.`:(n.push(r),r=``);return n}function ll(e){let t=cl(e);return e=>{for(let n of t){if(n===``)break;e&&=e[n]}return e}}function ul(e,t){return(sl[t]||(sl[t]=ll(t)))(e)}function dl(e){return e.charAt(0).toUpperCase()+e.slice(1)}var fl=e=>e!==void 0,pl=e=>typeof e==`function`,ml=(e,t)=>{if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0};function hl(e){return e.type===`mouseup`||e.type===`click`||e.type===`contextmenu`}var gl=Math.PI,_l=2*gl,vl=_l+gl,yl=1/0,bl=gl/180,xl=gl/2,Sl=gl/4,Cl=gl*2/3,wl=Math.log10,Tl=Math.sign;function El(e,t,n){return Math.abs(e-t)e-t).pop(),t}function kl(e){return typeof e==`symbol`||typeof e==`object`&&!!e&&!(Symbol.toPrimitive in e||`toString`in e||`valueOf`in e)}function Al(e){return!kl(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function jl(e,t){let n=Math.round(e);return n-t<=e&&n+t>=e}function Ml(e,t,n){let r,i,a;for(r=0,i=e.length;rc&&l=Math.min(t,n)-r&&e<=Math.max(t,n)+r}function Wl(e,t,n){n||=(n=>e[n]1;)a=i+r>>1,n(a)?i=a:r=a;return{lo:i,hi:r}}var Gl=(e,t,n,r)=>Wl(e,n,r?r=>{let i=e[r][t];return ie[r][t]Wl(e,n,r=>e[r][t]>=n);function ql(e,t,n){let r=0,i=e.length;for(;rr&&e[i-1]>n;)i--;return r>0||i{let n=`_onData`+dl(t),r=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){let i=r.apply(this,t);return e._chartjs.listeners.forEach(e=>{typeof e[n]==`function`&&e[n](...t)}),i}})})}function Xl(e,t){let n=e._chartjs;if(!n)return;let r=n.listeners,i=r.indexOf(t);i!==-1&&r.splice(i,1),!(r.length>0)&&(Jl.forEach(t=>{delete e[t]}),delete e._chartjs)}function Zl(e){let t=new Set(e);return t.size===e.length?e:Array.from(t)}var Ql=function(){return typeof window>`u`?function(e){return e()}:window.requestAnimationFrame}();function $l(e,t){let n=[],r=!1;return function(...i){n=i,r||(r=!0,Ql.call(window,()=>{r=!1,e.apply(t,n)}))}}function eu(e,t){let n;return function(...r){return t?(clearTimeout(n),n=setTimeout(e,t,r)):e.apply(this,r),t}}var tu=e=>e===`start`?`left`:e===`end`?`right`:`center`,nu=(e,t,n)=>e===`start`?t:e===`end`?n:(t+n)/2,ru=(e,t,n,r)=>e===(r?`left`:`right`)?n:e===`center`?(t+n)/2:t;function iu(e,t,n){let r=t.length,i=0,a=r;if(e._sorted){let{iScale:o,vScale:s,_parsed:c}=e,l=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,u=o.axis,{min:d,max:f,minDefined:p,maxDefined:m}=o.getUserBounds();if(p){if(i=Math.min(Gl(c,u,d).lo,n?r:Gl(t,u,o.getPixelForValue(d)).lo),l){let e=c.slice(0,i+1).reverse().findIndex(e=>!Wc(e[s.axis]));i-=Math.max(0,e)}i=Vl(i,0,r-1)}if(m){let e=Math.max(Gl(c,o.axis,f,!0).hi+1,n?0:Gl(t,u,o.getPixelForValue(f),!0).hi+1);if(l){let t=c.slice(e-1).findIndex(e=>!Wc(e[s.axis]));e+=Math.max(0,t)}a=Vl(e,i,r)-i}else a=r-i}return{start:i,count:a}}function au(e){let{xScale:t,yScale:n,_scaleRanges:r}=e,i={xmin:t.min,xmax:t.max,ymin:n.min,ymax:n.max};if(!r)return e._scaleRanges=i,!0;let a=r.xmin!==t.min||r.xmax!==t.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,i),a}var ou=e=>e===0||e===1,su=(e,t,n)=>-(2**(10*--e)*Math.sin((e-t)*_l/n)),cu=(e,t,n)=>2**(-10*e)*Math.sin((e-t)*_l/n)+1,lu={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>--e*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-(--e*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>--e*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*xl)+1,easeOutSine:e=>Math.sin(e*xl),easeInOutSine:e=>-.5*(Math.cos(gl*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:-(2**(-10*e))+1,easeInOutExpo:e=>ou(e)?e:e<.5?.5*2**(10*(e*2-1)):.5*(-(2**(-10*(e*2-1)))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1- --e*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>ou(e)?e:su(e,.075,.3),easeOutElastic:e=>ou(e)?e:cu(e,.075,.3),easeInOutElastic(e){let t=.1125,n=.45;return ou(e)?e:e<.5?.5*su(e*2,t,n):.5+.5*cu(e*2-1,t,n)},easeInBack(e){return e*e*(2.70158*e-1.70158)},easeOutBack(e){return--e*e*(2.70158*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-lu.easeOutBounce(1-e),easeOutBounce(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},easeInOutBounce:e=>e<.5?lu.easeInBounce(e*2)*.5:lu.easeOutBounce(e*2-1)*.5+.5};function uu(e){if(e&&typeof e==`object`){let t=e.toString();return t===`[object CanvasPattern]`||t===`[object CanvasGradient]`}return!1}function du(e){return uu(e)?e:new Vc(e)}function fu(e){return uu(e)?e:new Vc(e).saturate(.5).darken(.1).hexString()}var pu=[`x`,`y`,`borderWidth`,`radius`,`tension`],mu=[`color`,`borderColor`,`backgroundColor`];function hu(e){e.set(`animation`,{delay:void 0,duration:1e3,easing:`easeOutQuart`,fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe(`animation`,{_fallback:!1,_indexable:!1,_scriptable:e=>e!==`onProgress`&&e!==`onComplete`&&e!==`fn`}),e.set(`animations`,{colors:{type:`color`,properties:mu},numbers:{type:`number`,properties:pu}}),e.describe(`animations`,{_fallback:`animation`}),e.set(`transitions`,{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:`transparent`},visible:{type:`boolean`,duration:0}}},hide:{animations:{colors:{to:`transparent`},visible:{type:`boolean`,easing:`linear`,fn:e=>e|0}}}})}function gu(e){e.set(`layout`,{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}var _u=new Map;function vu(e,t){t||={};let n=e+JSON.stringify(t),r=_u.get(n);return r||(r=new Intl.NumberFormat(e,t),_u.set(n,r)),r}function yu(e,t,n){return vu(t,n).format(e)}var bu={values(e){return Gc(e)?e:``+e},numeric(e,t,n){if(e===0)return`0`;let r=this.chart.options.locale,i,a=e;if(n.length>1){let t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>0x38d7ea4c68000)&&(i=`scientific`),a=xu(e,n)}let o=wl(Math.abs(a)),s=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),c={notation:i,minimumFractionDigits:s,maximumFractionDigits:s};return Object.assign(c,this.options.ticks.format),yu(e,r,c)},logarithmic(e,t,n){if(e===0)return`0`;let r=n[t].significand||e/10**Math.floor(wl(e));return[1,2,3,5,10,15].includes(r)||t>.8*n.length?bu.numeric.call(this,e,t,n):``}};function xu(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var Su={formatters:bu};function Cu(e){e.set(`scale`,{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:`ticks`,clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:``,padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:``,padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Su.formatters.values,minor:{},major:{},align:`center`,crossAlign:`near`,showLabelBackdrop:!1,backdropColor:`rgba(255, 255, 255, 0.75)`,backdropPadding:2}}),e.route(`scale.ticks`,`color`,``,`color`),e.route(`scale.grid`,`color`,``,`borderColor`),e.route(`scale.border`,`color`,``,`borderColor`),e.route(`scale.title`,`color`,``,`color`),e.describe(`scale`,{_fallback:!1,_scriptable:e=>!e.startsWith(`before`)&&!e.startsWith(`after`)&&e!==`callback`&&e!==`parser`,_indexable:e=>e!==`borderDash`&&e!==`tickBorderDash`&&e!==`dash`}),e.describe(`scales`,{_fallback:`scale`}),e.describe(`scale.ticks`,{_scriptable:e=>e!==`backdropPadding`&&e!==`callback`,_indexable:e=>e!==`backdropPadding`})}var wu=Object.create(null),Tu=Object.create(null);function Eu(e,t){if(!t)return e;let n=t.split(`.`);for(let t=0,r=n.length;te.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[`mousemove`,`mouseout`,`click`,`touchstart`,`touchmove`],this.font={family:`'Helvetica Neue', 'Helvetica', 'Arial', sans-serif`,size:12,style:`normal`,lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>fu(t.backgroundColor),this.hoverBorderColor=(e,t)=>fu(t.borderColor),this.hoverColor=(e,t)=>fu(t.color),this.indexAxis=`x`,this.interaction={mode:`nearest`,intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return Du(this,e,t)}get(e){return Eu(this,e)}describe(e,t){return Du(Tu,e,t)}override(e,t){return Du(wu,e,t)}route(e,t,n,r){let i=Eu(this,e),a=Eu(this,n),o=`_`+t;Object.defineProperties(i,{[o]:{value:i[t],writable:!0},[t]:{enumerable:!0,get(){let e=this[o],t=a[r];return Kc(e)?Object.assign({},t,e):Yc(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}({_scriptable:e=>!e.startsWith(`on`),_indexable:e=>e!==`events`,hover:{_fallback:`interaction`},interaction:{_scriptable:!1,_indexable:!1}},[hu,gu,Cu]);function ku(e){return!e||Wc(e.size)||Wc(e.family)?null:(e.style?e.style+` `:``)+(e.weight?e.weight+` `:``)+e.size+`px `+e.family}function Au(e,t,n,r,i){let a=t[i];return a||(a=t[i]=e.measureText(i).width,n.push(i)),a>r&&(r=a),r}function ju(e,t,n,r){r||={};let i=r.data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==t&&(i=r.data={},a=r.garbageCollect=[],r.font=t),e.save(),e.font=t;let o=0,s=n.length,c,l,u,d,f;for(c=0;cn.length){for(c=0;c0&&e.stroke()}}function Iu(e,t,n){return n||=.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&a.strokeColor!==``,c,l;for(e.save(),e.font=i.string,Vu(e,a),c=0;c+e||0;function Xu(e,t){let n={},r=Kc(t),i=r?Object.keys(t):t,a=Kc(e)?r?n=>Yc(e[n],e[t[n]]):t=>e[t]:()=>e;for(let e of i)n[e]=Yu(a(e));return n}function Zu(e){return Xu(e,{top:`y`,right:`x`,bottom:`y`,left:`x`})}function Qu(e){return Xu(e,[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`])}function $u(e){let t=Zu(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function ed(e,t){e||={},t||=Ou.font;let n=Yc(e.size,t.size);typeof n==`string`&&(n=parseInt(n,10));let r=Yc(e.style,t.style);r&&!(``+r).match(qu)&&(console.warn(`Invalid font style specified: "`+r+`"`),r=void 0);let i={family:Yc(e.family,t.family),lineHeight:Ju(Yc(e.lineHeight,t.lineHeight),n),size:n,style:r,weight:Yc(e.weight,t.weight),string:``};return i.string=ku(i),i}function td(e,t,n,r){let i=!0,a,o,s;for(a=0,o=e.length;an&&e===0?0:e+t;return{min:o(r,-Math.abs(a)),max:o(i,a)}}function rd(e,t){return Object.assign(Object.create(e),t)}function id(e,t=[``],n,r,i=()=>e[0]){let a=n||e;return r===void 0&&(r=bd(`_fallback`,e)),new Proxy({[Symbol.toStringTag]:`Object`,_cacheable:!0,_scopes:e,_rootScopes:a,_fallback:r,_getTarget:i,override:n=>id([n,...e],t,a,r)},{deleteProperty(t,n){return delete t[n],delete t._keys,delete e[0][n],!0},get(n,r){return ld(n,r,()=>yd(r,t,e,n))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return xd(e).includes(t)},ownKeys(e){return xd(e)},set(e,t,n){let r=e._storage||=i();return e[t]=r[t]=n,delete e._keys,!0}})}function ad(e,t,n,r){let i={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:od(e,r),setContext:t=>ad(e,t,n,r),override:i=>ad(e.override(i),t,n,r)};return new Proxy(i,{deleteProperty(t,n){return delete t[n],delete e[n],!0},get(e,t,n){return ld(e,t,()=>ud(e,t,n))},getOwnPropertyDescriptor(t,n){return t._descriptors.allKeys?Reflect.has(e,n)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,n)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,n){return Reflect.has(e,n)},ownKeys(){return Reflect.ownKeys(e)},set(t,n,r){return e[n]=r,delete t[n],!0}})}function od(e,t={scriptable:!0,indexable:!0}){let{_scriptable:n=t.scriptable,_indexable:r=t.indexable,_allKeys:i=t.allKeys}=e;return{allKeys:i,scriptable:n,indexable:r,isScriptable:pl(n)?n:()=>n,isIndexable:pl(r)?r:()=>r}}var sd=(e,t)=>e?e+dl(t):t,cd=(e,t)=>Kc(t)&&e!==`adapters`&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function ld(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t)||t===`constructor`)return e[t];let r=n();return e[t]=r,r}function ud(e,t,n){let{_proxy:r,_context:i,_subProxy:a,_descriptors:o}=e,s=r[t];return pl(s)&&o.isScriptable(t)&&(s=dd(t,s,e,n)),Gc(s)&&s.length&&(s=fd(t,s,e,o.isIndexable)),cd(t,s)&&(s=ad(s,i,a&&a[t],o)),s}function dd(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_stack:s}=n;if(s.has(e))throw Error(`Recursion detected: `+Array.from(s).join(`->`)+`->`+e);s.add(e);let c=t(a,o||r);return s.delete(e),cd(e,c)&&(c=gd(i._scopes,i,e,c)),c}function fd(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_descriptors:s}=n;if(a.index!==void 0&&r(e))return t[a.index%t.length];if(Kc(t[0])){let n=t,r=i._scopes.filter(e=>e!==n);t=[];for(let c of n){let n=gd(r,i,e,c);t.push(ad(n,a,o&&o[e],s))}}return t}function pd(e,t,n){return pl(e)?e(t,n):e}var md=(e,t)=>e===!0?t:typeof e==`string`?ul(t,e):void 0;function hd(e,t,n,r,i){for(let a of t){let t=md(n,a);if(t){e.add(t);let a=pd(t._fallback,n,i);if(a!==void 0&&a!==n&&a!==r)return a}else if(t===!1&&r!==void 0&&n!==r)return null}return!1}function gd(e,t,n,r){let i=t._rootScopes,a=pd(t._fallback,n,r),o=[...e,...i],s=new Set;s.add(r);let c=_d(s,o,n,a||n,r);return c===null||a!==void 0&&a!==n&&(c=_d(s,o,a,c,r),c===null)?!1:id(Array.from(s),[``],i,a,()=>vd(t,n,r))}function _d(e,t,n,r,i){for(;n;)n=hd(e,t,n,r,i);return n}function vd(e,t,n){let r=e._getTarget();t in r||(r[t]={});let i=r[t];return Gc(i)&&Kc(n)?n:i||{}}function yd(e,t,n,r){let i;for(let a of t)if(i=bd(sd(a,e),n),i!==void 0)return cd(e,i)?gd(n,r,e,i):i}function bd(e,t){for(let n of t){if(!n)continue;let t=n[e];if(t!==void 0)return t}}function xd(e){let t=e._keys;return t||=e._keys=Sd(e._scopes),t}function Sd(e){let t=new Set;for(let n of e)for(let e of Object.keys(n).filter(e=>!e.startsWith(`_`)))t.add(e);return Array.from(t)}function Cd(e,t,n,r){let{iScale:i}=e,{key:a=`r`}=this._parsing,o=Array(r),s,c,l,u;for(s=0,c=r;ste===`x`?`y`:`x`;function Dd(e,t,n,r){let i=e.skip?t:e,a=t,o=n.skip?t:n,s=Ll(a,i),c=Ll(o,a),l=s/(s+c),u=c/(s+c);l=isNaN(l)?0:l,u=isNaN(u)?0:u;let d=r*l,f=r*u;return{previous:{x:a.x-d*(o.x-i.x),y:a.y-d*(o.y-i.y)},next:{x:a.x+f*(o.x-i.x),y:a.y+f*(o.y-i.y)}}}function Od(e,t,n){let r=e.length,i,a,o,s,c,l=Td(e,0);for(let u=0;u!e.skip)),t.cubicInterpolationMode===`monotone`)Ad(e,i);else{let n=r?e[e.length-1]:e[0];for(a=0,o=e.length;ae.ownerDocument.defaultView.getComputedStyle(e,null);function Rd(e,t){return Ld(e).getPropertyValue(t)}var zd=[`top`,`right`,`bottom`,`left`];function Bd(e,t,n){let r={};n=n?`-`+n:``;for(let i=0;i<4;i++){let a=zd[i];r[a]=parseFloat(e[t+`-`+a+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}var Vd=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function Hd(e,t){let n=e.touches,r=n&&n.length?n[0]:e,{offsetX:i,offsetY:a}=r,o=!1,s,c;if(Vd(i,a,e.target))s=i,c=a;else{let e=t.getBoundingClientRect();s=r.clientX-e.left,c=r.clientY-e.top,o=!0}return{x:s,y:c,box:o}}function Ud(e,t){if(`native`in e)return e;let{canvas:n,currentDevicePixelRatio:r}=t,i=Ld(n),a=i.boxSizing===`border-box`,o=Bd(i,`padding`),s=Bd(i,`border`,`width`),{x:c,y:l,box:u}=Hd(e,n),d=o.left+(u&&s.left),f=o.top+(u&&s.top),{width:p,height:m}=t;return a&&(p-=o.width+s.width,m-=o.height+s.height),{x:Math.round((c-d)/p*n.width/r),y:Math.round((l-f)/m*n.height/r)}}function Wd(e,t,n){let r,i;if(t===void 0||n===void 0){let a=e&&Fd(e);if(!a)t=e.clientWidth,n=e.clientHeight;else{let e=a.getBoundingClientRect(),o=Ld(a),s=Bd(o,`border`,`width`),c=Bd(o,`padding`);t=e.width-c.width-s.width,n=e.height-c.height-s.height,r=Id(o.maxWidth,a,`clientWidth`),i=Id(o.maxHeight,a,`clientHeight`)}}return{width:t,height:n,maxWidth:r||yl,maxHeight:i||yl}}var Gd=e=>Math.round(e*10)/10;function Kd(e,t,n,r){let i=Ld(e),a=Bd(i,`margin`),o=Id(i.maxWidth,e,`clientWidth`)||yl,s=Id(i.maxHeight,e,`clientHeight`)||yl,c=Wd(e,t,n),{width:l,height:u}=c;if(i.boxSizing===`content-box`){let e=Bd(i,`border`,`width`),t=Bd(i,`padding`);l-=t.width+e.width,u-=t.height+e.height}return l=Math.max(0,l-a.width),u=Math.max(0,r?l/r:u-a.height),l=Gd(Math.min(l,o,c.maxWidth)),u=Gd(Math.min(u,s,c.maxHeight)),l&&!u&&(u=Gd(l/2)),(t!==void 0||n!==void 0)&&r&&c.height&&u>c.height&&(u=c.height,l=Gd(Math.floor(u*r))),{width:l,height:u}}function qd(e,t,n){let r=t||1,i=Gd(e.height*r),a=Gd(e.width*r);e.height=Gd(e.height),e.width=Gd(e.width);let o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==r||o.height!==i||o.width!==a?(e.currentDevicePixelRatio=r,o.height=i,o.width=a,e.ctx.setTransform(r,0,0,r,0,0),!0):!1}var Jd=function(){let e=!1;try{let t={get passive(){return e=!0,!1}};Pd()&&(window.addEventListener(`test`,null,t),window.removeEventListener(`test`,null,t))}catch{}return e}();function Yd(e,t){let n=Rd(e,t),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function Xd(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:e.y+n*(t.y-e.y)}}function Zd(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:r===`middle`?n<.5?e.y:t.y:r===`after`?n<1?e.y:t.y:n>0?t.y:e.y}}function Qd(e,t,n,r){let i={x:e.cp2x,y:e.cp2y},a={x:t.cp1x,y:t.cp1y},o=Xd(e,i,n),s=Xd(i,a,n),c=Xd(a,t,n);return Xd(Xd(o,s,n),Xd(s,c,n),n)}var $d=function(e,t){return{x(n){return e+e+t-n},setWidth(e){t=e},textAlign(e){return e===`center`?e:e===`right`?`left`:`right`},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},ef=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function tf(e,t,n){return e?$d(t,n):ef()}function nf(e,t){let n,r;(t===`ltr`||t===`rtl`)&&(n=e.canvas.style,r=[n.getPropertyValue(`direction`),n.getPropertyPriority(`direction`)],n.setProperty(`direction`,t,`important`),e.prevTextDirection=r)}function rf(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty(`direction`,t[0],t[1]))}function af(e){return e===`angle`?{between:Bl,compare:Rl,normalize:zl}:{between:Ul,compare:(e,t)=>e-t,normalize:e=>e}}function of({start:e,end:t,count:n,loop:r,style:i}){return{start:e%n,end:t%n,loop:r&&(t-e+1)%n===0,style:i}}function sf(e,t,n){let{property:r,start:i,end:a}=n,{between:o,normalize:s}=af(r),c=t.length,{start:l,end:u,loop:d}=e,f,p;if(d){for(l+=c,u+=c,f=0,p=c;fc(i,y,_)&&s(i,y)!==0,x=()=>s(a,_)===0||c(a,y,_),S=()=>h||b(),C=()=>!h||x();for(let e=u,n=u;e<=d;++e)v=t[e%o],!v.skip&&(_=l(v[r]),_!==y&&(h=c(_,i,a),g===null&&S()&&(g=s(_,i)===0?e:n),g!==null&&C()&&(m.push(of({start:g,end:e,loop:f,count:o,style:p})),g=null),n=e,y=_));return g!==null&&m.push(of({start:g,end:d,loop:f,count:o,style:p})),m}function lf(e,t){let n=[],r=e.segments;for(let i=0;ii&&e[a%t].skip;)a--;return a%=t,{start:i,end:a}}function df(e,t,n,r){let i=e.length,a=[],o=t,s=e[t],c;for(c=t+1;c<=n;++c){let n=e[c%i];n.skip||n.stop?s.skip||(r=!1,a.push({start:t%i,end:(c-1)%i,loop:r}),t=o=n.stop?c:null):(o=c,s.skip&&(t=c)),s=n}return o!==null&&a.push({start:t%i,end:o%i,loop:r}),a}function ff(e,t){let n=e.points,r=e.options.spanGaps,i=n.length;if(!i)return[];let a=!!e._loop,{start:o,end:s}=uf(n,i,a,r);return r===!0?pf(e,[{start:o,end:s,loop:a}],n,t):pf(e,df(n,o,sr({chart:e,initial:t.initial,numSteps:a,currentStep:Math.min(n-t.start,a)}))}_refresh(){this._request||=(this._running=!0,Ql.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((n,r)=>{if(!n.running||!n.items.length)return;let i=n.items,a=i.length-1,o=!1,s;for(;a>=0;--a)s=i[a],s._active?(s._total>n.duration&&(n.duration=s._total),s.tick(e),o=!0):(i[a]=i[i.length-1],i.pop());o&&(r.draw(),this._notify(r,n,e,`progress`)),i.length||(n.running=!1,this._notify(r,n,e,`complete`),n.initial=!1),t+=i.length}),this._lastDate=e,t===0&&(this._running=!1)}_getAnims(e){let t=this._charts,n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){!t||!t.length||this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){let t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;let t=this._charts.get(e);return!(!t||!t.running||!t.items.length)}stop(e){let t=this._charts.get(e);if(!t||!t.items.length)return;let n=t.items,r=n.length-1;for(;r>=0;--r)n[r].cancel();t.items=[],this._notify(e,t,Date.now(),`complete`)}remove(e){return this._charts.delete(e)}},xf=`transparent`,Sf={boolean(e,t,n){return n>.5?t:e},color(e,t,n){let r=du(e||xf),i=r.valid&&du(t||xf);return i&&i.valid?i.mix(r,n).hexString():t},number(e,t,n){return e+(t-e)*n}},Cf=class{constructor(e,t,n,r){let i=t[n];r=td([e.to,r,i,e.from]);let a=td([e.from,i,r]);this._active=!0,this._fn=e.fn||Sf[e.type||typeof a],this._easing=lu[e.easing]||lu.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=a,this._to=r,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);let r=this._target[this._prop],i=n-this._start,a=this._duration-i;this._start=n,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=td([e.to,t,r,e.from]),this._from=td([e.from,r,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){let t=e-this._start,n=this._duration,r=this._prop,i=this._from,a=this._loop,o=this._to,s;if(this._active=i!==o&&(a||t1?2-s:s,s=this._easing(Math.min(1,Math.max(0,s))),this._target[r]=this._fn(i,o,s)}wait(){let e=this._promises||=[];return new Promise((t,n)=>{e.push({res:t,rej:n})})}_notify(e){let t=e?`res`:`rej`,n=this._promises||[];for(let e=0;e{let i=e[r];if(!Kc(i))return;let a={};for(let e of t)a[e]=i[e];(Gc(i.properties)&&i.properties||[r]).forEach(e=>{(e===r||!n.has(e))&&n.set(e,a)})})}_animateOptions(e,t){let n=t.options,r=Ef(e,n);if(!r)return[];let i=this._createAnimations(r,n);return n.$shared&&Tf(e.options.$animations,n).then(()=>{e.options=n},()=>{}),i}_createAnimations(e,t){let n=this._properties,r=[],i=e.$animations||={},a=Object.keys(t),o=Date.now(),s;for(s=a.length-1;s>=0;--s){let c=a[s];if(c.charAt(0)===`$`)continue;if(c===`options`){r.push(...this._animateOptions(e,t));continue}let l=t[c],u=i[c],d=n.get(c);if(u)if(d&&u.active()){u.update(d,l,o);continue}else u.cancel();if(!d||!d.duration){e[c]=l;continue}i[c]=u=new Cf(d,e,c,l),r.push(u)}return r}update(e,t){if(this._properties.size===0){Object.assign(e,t);return}let n=this._createAnimations(e,t);if(n.length)return bf.add(this._chart,n),!0}};function Tf(e,t){let n=[],r=Object.keys(t);for(let t=0;t0||!n&&t<0)return i.index}return null}function Rf(e,t){let{chart:n,_cachedMeta:r}=e,i=n._stacks||={},{iScale:a,vScale:o,index:s}=r,c=a.axis,l=o.axis,u=Pf(a,o,r),d=t.length,f;for(let e=0;en[e].axis===t).shift()}function Bf(e,t){return rd(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:`default`,type:`dataset`})}function Vf(e,t,n){return rd(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:`default`,type:`data`})}function Hf(e,t){let n=e.controller.index,r=e.vScale&&e.vScale.axis;if(r){t||=e._parsed;for(let e of t){let t=e._stacks;if(!t||t[r]===void 0||t[r][n]===void 0)return;delete t[r][n],t[r]._visualValues!==void 0&&t[r]._visualValues[n]!==void 0&&delete t[r]._visualValues[n]}}}var Uf=e=>e===`reset`||e===`none`,Wf=(e,t)=>t?e:Object.assign({},e),Gf=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:Af(n,!0),values:null},Kf=class{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=Nf(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled(`filler`)&&console.warn(`Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options`)}updateIndex(e){this.index!==e&&Hf(this._cachedMeta),this.index=e}linkScales(){let e=this.chart,t=this._cachedMeta,n=this.getDataset(),r=(e,t,n,r)=>e===`x`?t:e===`r`?r:n,i=t.xAxisID=Yc(n.xAxisID,zf(e,`x`)),a=t.yAxisID=Yc(n.yAxisID,zf(e,`y`)),o=t.rAxisID=Yc(n.rAxisID,zf(e,`r`)),s=t.indexAxis,c=t.iAxisID=r(s,i,a,o),l=t.vAxisID=r(s,a,i,o);t.xScale=this.getScaleForId(i),t.yScale=this.getScaleForId(a),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(c),t.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){let t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update(`reset`)}_destroy(){let e=this._cachedMeta;this._data&&Xl(this._data,this),e._stacked&&Hf(e)}_dataCheck(){let e=this.getDataset(),t=e.data||=[],n=this._data;if(Kc(t)){let e=this._cachedMeta;this._data=Mf(t,e)}else if(n!==t){if(n){Xl(n,this);let e=this._cachedMeta;Hf(e),e._parsed=[]}t&&Object.isExtensible(t)&&Yl(t,this),this._syncList=[],this._data=t}}addElements(){let e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){let t=this._cachedMeta,n=this.getDataset(),r=!1;this._dataCheck();let i=t._stacked;t._stacked=Nf(t.vScale,t),t.stack!==n.stack&&(r=!0,Hf(t),t.stack=n.stack),this._resyncElements(e),(r||i!==t._stacked)&&(Rf(this,t._parsed),t._stacked=Nf(t.vScale,t))}configure(){let e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){let{_cachedMeta:n,_data:r}=this,{iScale:i,_stacked:a}=n,o=i.axis,s=e===0&&t===r.length||n._sorted,c=e>0&&n._parsed[e-1],l,u,d;if(this._parsing===!1)n._parsed=r,n._sorted=!0,d=r;else{d=Gc(r[e])?this.parseArrayData(n,r,e,t):Kc(r[e])?this.parseObjectData(n,r,e,t):this.parsePrimitiveData(n,r,e,t);let i=()=>u[o]===null||c&&u[o]t||u=0;--d)if(!p()){this.updateRangeFromParsed(c,e,f,s);break}}return c}getAllParsedValues(e){let t=this._cachedMeta._parsed,n=[],r,i,a;for(r=0,i=t.length;r=0&&ethis.getContext(n,r,t),u);return p.$shared&&(p.$shared=s,i[a]=Object.freeze(Wf(p,s))),p}_resolveAnimations(e,t,n){let r=this.chart,i=this._cachedDataOpts,a=`animation-${t}`,o=i[a];if(o)return o;let s;if(r.options.animation!==!1){let r=this.chart.config,i=r.datasetAnimationScopeKeys(this._type,t),a=r.getOptionScopes(this.getDataset(),i);s=r.createResolver(a,this.getContext(e,n,t))}let c=new wf(r,s&&s.animations);return s&&s._cacheable&&(i[a]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||=Object.assign({},e)}includeOptions(e,t){return!t||Uf(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){let n=this.resolveDataElementOptions(e,t),r=this._sharedOptions,i=this.getSharedOptions(n),a=this.includeOptions(t,i)||i!==r;return this.updateSharedOptions(i,t,n),{sharedOptions:i,includeOptions:a}}updateElement(e,t,n,r){Uf(r)?Object.assign(e,n):this._resolveAnimations(t,r).update(e,n)}updateSharedOptions(e,t,n){e&&!Uf(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,r){e.active=r;let i=this.getStyle(t,r);this._resolveAnimations(t,n,r).update(e,{options:!r&&this.getSharedOptions(i)||i})}removeHoverStyle(e,t,n){this._setStyle(e,n,`active`,!1)}setHoverStyle(e,t,n){this._setStyle(e,n,`active`,!0)}_removeDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!1)}_setDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!0)}_resyncElements(e){let t=this._data,n=this._cachedMeta.data;for(let[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];let r=n.length,i=t.length,a=Math.min(i,r);a&&this.parse(0,a),i>r?this._insertElements(r,i-r,e):i{for(e.length+=t,o=e.length-1;o>=a;o--)e[o]=e[o-t]};for(s(i),o=e;oe-t))}return e._cache.$bar}function Jf(e){let t=e.iScale,n=qf(t,e.type),r=t._length,i,a,o,s,c=()=>{o===32767||o===-32768||(fl(s)&&(r=Math.min(r,Math.abs(o-s)||r)),s=o)};for(i=0,a=n.length;i0?i[e-1]:null,s=eMath.abs(s)&&(c=s,l=o),t[n.axis]=l,t._custom={barStart:c,barEnd:l,start:i,end:a,min:o,max:s}}function Qf(e,t,n,r){return Gc(e)?Zf(e,t,n,r):t[n.axis]=n.parse(e,r),t}function $f(e,t,n,r){let i=e.iScale,a=e.vScale,o=i.getLabels(),s=i===a,c=[],l,u,d,f;for(l=n,u=n+r;l=n?1:-1):Tl(e)}function np(e){let t,n,r,i,a;return e.horizontal?(t=e.base>e.x,n=`left`,r=`right`):(t=e.basee.controller.options.grouped),i=n.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(t),s=o&&o[n.axis],c=e=>{let t=e._parsed.find(e=>e[n.axis]===s),r=t&&t[e.vScale.axis];if(Wc(r)||isNaN(r))return!0};for(let n of r)if(!(t!==void 0&&c(n))&&((i===!1||a.indexOf(n.stack)===-1||i===void 0&&n.stack===void 0)&&a.push(n.stack),n.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(n=>e[n].axis===t).shift()}_getAxis(){let e={},t=this.getFirstScaleIdForIndexAxis();for(let n of this.chart.data.datasets)e[Yc(this.chart.options.indexAxis===`x`?n.xAxisID:n.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,n){let r=this._getStacks(e,n),i=t===void 0?-1:r.indexOf(t);return i===-1?r.length-1:i}_getRuler(){let e=this.options,t=this._cachedMeta,n=t.iScale,r=[],i,a;for(i=0,a=t.data.length;i=0;--n)t=Math.max(t,e[n].size(this.resolveDataElementOptions(n))/2);return t>0&&t}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart.data.labels||[],{xScale:r,yScale:i}=t,a=this.getParsed(e),o=r.getLabelForValue(a.x),s=i.getLabelForValue(a.y),c=a._custom;return{label:n[e]||``,value:`(`+o+`, `+s+(c?`, `+c:``)+`)`}}update(e){let t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,n,r){let i=r===`reset`,{iScale:a,vScale:o}=this._cachedMeta,{sharedOptions:s,includeOptions:c}=this._getSharedOptions(t,r),l=a.axis,u=o.axis;for(let d=t;dBl(e,s,c,!0)?1:Math.max(t,t*n,r,r*n),m=(e,t,r)=>Bl(e,s,c,!0)?-1:Math.min(t,t*n,r,r*n),h=p(0,l,d),g=p(xl,u,f),_=m(gl,l,d),v=m(gl+xl,u,f);r=(h-_)/2,i=(g-v)/2,a=-(h+_)/2,o=-(g+v)/2}return{ratioX:r,ratioY:i,offsetX:a,offsetY:o}}var dp=class extends Kf{static id=`doughnut`;static defaults={datasetElementType:!1,dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:`number`,properties:[`circumference`,`endAngle`,`innerRadius`,`outerRadius`,`startAngle`,`x`,`y`,`offset`,`borderWidth`,`spacing`]}},cutout:`50%`,rotation:0,circumference:360,radius:`100%`,spacing:0,indexAxis:`r`};static descriptors={_scriptable:e=>e!==`spacing`,_indexable:e=>e!==`spacing`&&!e.startsWith(`borderDash`)&&!e.startsWith(`hoverBorderDash`)};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data,{labels:{pointStyle:n,textAlign:r,color:i,useBorderRadius:a,borderRadius:o}}=e.legend.options;return t.labels.length&&t.datasets.length?t.labels.map((t,s)=>{let c=e.getDatasetMeta(0).controller.getStyle(s);return{text:t,fillStyle:c.backgroundColor,fontColor:i,hidden:!e.getDataVisibility(s),lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:c.borderWidth,strokeStyle:c.borderColor,textAlign:r,pointStyle:n,borderRadius:a&&(o||c.borderRadius),index:s}}):[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}}};constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){let n=this.getDataset().data,r=this._cachedMeta;if(this._parsing===!1)r._parsed=n;else{let i=e=>+n[e];if(Kc(n[e])){let{key:e=`value`}=this._parsing;i=t=>+ul(n[t],e)}let a,o;for(a=e,o=e+t;a0&&!isNaN(e)?Math.abs(e)/t*_l:0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=yu(t._parsed[e],n.options.locale);return{label:r[e]||``,value:i}}getMaxBorderWidth(e){let t=0,n=this.chart,r,i,a,o,s;if(!e){for(r=0,i=n.data.datasets.length;r0&&this.getParsed(t-1);for(let n=0;n=_){v.skip=!0;continue}let b=this.getParsed(n),x=Wc(b[f]),S=v[d]=a.getPixelForValue(b[d],n),C=v[f]=i||x?o.getBasePixel():o.getPixelForValue(s?this.applyStack(o,b,s):b[f],n);v.skip=isNaN(S)||isNaN(C)||x,v.stop=n>0&&Math.abs(b[d]-y[d])>h,m&&(v.parsed=b,v.raw=c.data[n]),u&&(v.options=l||this.resolveDataElementOptions(n,p.active?`active`:r)),g||this.updateElement(p,n,v,r),y=b}}getMaxOverflow(){let e=this._cachedMeta,t=e.dataset,n=t.options&&t.options.borderWidth||0,r=e.data||[];if(!r.length)return n;let i=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(n,i,a)/2}draw(){let e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}},pp=class extends Kf{static id=`polarArea`;static defaults={dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:`number`,properties:[`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`]}},indexAxis:`r`,startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:n,color:r}}=e.legend.options;return t.labels.map((t,i)=>{let a=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,fontColor:r,lineWidth:a.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}})}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}},scales:{r:{type:`radialLinear`,angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=yu(t._parsed[e].r,n.options.locale);return{label:r[e]||``,value:i}}parseObjectData(e,t,n,r){return Cd.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}getMinMax(){let e=this._cachedMeta,t={min:1/0,max:-1/0};return e.data.forEach((e,n)=>{let r=this.getParsed(n).r;!isNaN(r)&&this.chart.getDataVisibility(n)&&(rt.max&&(t.max=r))}),t}_updateRadius(){let e=this.chart,t=e.chartArea,n=e.options,r=Math.min(t.right-t.left,t.bottom-t.top),i=Math.max(r/2,0),a=(i-Math.max(n.cutoutPercentage?i/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();this.outerRadius=i-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(e,t,n,r){let i=r===`reset`,a=this.chart,o=a.options.animation,s=this._cachedMeta.rScale,c=s.xCenter,l=s.yCenter,u=s.getIndexAngle(0)-.5*gl,d=u,f,p=360/this.countVisibleElements();for(f=0;f{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&t++}),t}_computeAngle(e,t,n){return this.chart.getDataVisibility(e)?Nl(this.resolveDataElementOptions(e,t).angle||n):0}},mp=Object.freeze({__proto__:null,BarController:cp,BubbleController:lp,DoughnutController:dp,LineController:fp,PieController:class extends dp{static id=`pie`;static defaults={cutout:0,rotation:0,circumference:360,radius:`100%`}},PolarAreaController:pp,RadarController:class extends Kf{static id=`radar`;static defaults={datasetElementType:`line`,dataElementType:`point`,indexAxis:`r`,showLine:!0,elements:{line:{fill:`start`}}};static overrides={aspectRatio:1,scales:{r:{type:`radialLinear`}}};getLabelAndValue(e){let t=this._cachedMeta.vScale,n=this.getParsed(e);return{label:t.getLabels()[e],value:``+t.getLabelForValue(n[t.axis])}}parseObjectData(e,t,n,r){return Cd.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta,n=t.dataset,r=t.data||[],i=t.iScale.getLabels();if(n.points=r,e!==`resize`){let t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);let a={_loop:!0,_fullLoop:i.length===r.length,options:t};this.updateElement(n,void 0,a,e)}this.updateElements(r,0,r.length,e)}updateElements(e,t,n,r){let i=this._cachedMeta.rScale,a=r===`reset`;for(let o=t;o0&&this.getParsed(t-1);for(let l=t;l0&&Math.abs(n[f]-v[f])>g,h&&(m.parsed=n,m.raw=c.data[l]),d&&(m.options=u||this.resolveDataElementOptions(l,t.active?`active`:r)),_||this.updateElement(t,l,m,r),v=n}this.updateSharedOptions(u,r,l)}getMaxOverflow(){let e=this._cachedMeta,t=e.data||[];if(!this.options.showLine){let e=0;for(let n=t.length-1;n>=0;--n)e=Math.max(e,t[n].size(this.resolveDataElementOptions(n))/2);return e>0&&e}let n=e.dataset,r=n.options&&n.options.borderWidth||0;if(!t.length)return r;let i=t[0].size(this.resolveDataElementOptions(0)),a=t[t.length-1].size(this.resolveDataElementOptions(t.length-1));return Math.max(r,i,a)/2}}});function hp(){throw Error(`This method is not implemented: Check that a complete date adapter is provided.`)}var gp={_date:class e{static override(t){Object.assign(e.prototype,t)}options;constructor(e){this.options=e||{}}init(){}formats(){return hp()}parse(){return hp()}format(){return hp()}add(){return hp()}diff(){return hp()}startOf(){return hp()}endOf(){return hp()}}};function _p(e,t,n,r){let{controller:i,data:a,_sorted:o}=e,s=i._cachedMeta.iScale,c=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(s&&t===s.axis&&t!==`r`&&o&&a.length){let o=s._reversePixels?Kl:Gl;if(!r){let r=o(a,t,n);if(c){let{vScale:t}=i._cachedMeta,{_parsed:n}=e,a=n.slice(0,r.lo+1).reverse().findIndex(e=>!Wc(e[t.axis]));r.lo-=Math.max(0,a);let o=n.slice(r.hi).findIndex(e=>!Wc(e[t.axis]));r.hi+=Math.max(0,o)}return r}else if(i._sharedOptions){let e=a[0],r=typeof e.getRange==`function`&&e.getRange(t);if(r){let e=o(a,t,n-r),i=o(a,t,n+r);return{lo:e.lo,hi:i.hi}}}}return{lo:0,hi:a.length-1}}function vp(e,t,n,r,i){let a=e.getSortedVisibleDatasetMetas(),o=n[t];for(let e=0,n=a.length;e{e[o]&&e[o](t[n],i)&&(a.push({element:e,datasetIndex:r,index:c}),s||=e.inRange(t.x,t.y,i))}),r&&!s?[]:a}var Tp={evaluateInteractionItems:vp,modes:{index(e,t,n,r){let i=Ud(t,e),a=n.axis||`x`,o=n.includeInvisible||!1,s=n.intersect?bp(e,i,a,r,o):Cp(e,i,a,!1,r,o),c=[];return s.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{let t=s[0].index,n=e.data[t];n&&!n.skip&&c.push({element:n,datasetIndex:e.index,index:t})}),c):[]},dataset(e,t,n,r){let i=Ud(t,e),a=n.axis||`xy`,o=n.includeInvisible||!1,s=n.intersect?bp(e,i,a,r,o):Cp(e,i,a,!1,r,o);if(s.length>0){let t=s[0].datasetIndex,n=e.getDatasetMeta(t).data;s=[];for(let e=0;ee.pos===t)}function Op(e,t){return e.filter(e=>Ep.indexOf(e.pos)===-1&&e.box.axis===t)}function kp(e,t){return e.sort((e,n)=>{let r=t?n:e,i=t?e:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight})}function Ap(e){let t=[],n,r,i,a,o,s;for(n=0,r=(e||[]).length;ne.box.fullSize),!0),r=kp(Dp(t,`left`),!0),i=kp(Dp(t,`right`)),a=kp(Dp(t,`top`),!0),o=kp(Dp(t,`bottom`)),s=Op(t,`x`),c=Op(t,`y`);return{fullSize:n,leftAndTop:r.concat(a),rightAndBottom:i.concat(c).concat(o).concat(s),chartArea:Dp(t,`chartArea`),vertical:r.concat(i).concat(c),horizontal:a.concat(o).concat(s)}}function Pp(e,t,n,r){return Math.max(e[n],t[n])+Math.max(e[r],t[r])}function Fp(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function Ip(e,t,n,r){let{pos:i,box:a}=n,o=e.maxPadding;if(!Kc(i)){n.size&&(e[i]-=n.size);let t=r[n.stack]||{size:0,count:1};t.size=Math.max(t.size,n.horizontal?a.height:a.width),n.size=t.size/t.count,e[i]+=n.size}a.getPadding&&Fp(o,a.getPadding());let s=Math.max(0,t.outerWidth-Pp(o,e,`left`,`right`)),c=Math.max(0,t.outerHeight-Pp(o,e,`top`,`bottom`)),l=s!==e.w,u=c!==e.h;return e.w=s,e.h=c,n.horizontal?{same:l,other:u}:{same:u,other:l}}function Lp(e){let t=e.maxPadding;function n(n){let r=Math.max(t[n]-e[n],0);return e[n]+=r,r}e.y+=n(`top`),e.x+=n(`left`),n(`right`),n(`bottom`)}function Rp(e,t){let n=t.maxPadding;function r(e){let r={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{r[e]=Math.max(t[e],n[e])}),r}return r(e?[`left`,`right`]:[`top`,`bottom`])}function zp(e,t,n,r){let i=[],a,o,s,c,l,u;for(a=0,o=e.length,l=0;a{typeof e.beforeLayout==`function`&&e.beforeLayout()});let u=c.reduce((e,t)=>t.box.options&&t.box.options.display===!1?e:e+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:i,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/u,hBoxMaxHeight:o/2}),f=Object.assign({},i);Fp(f,$u(r));let p=Object.assign({maxPadding:f,w:a,h:o,x:i.left,y:i.top},i),m=Mp(c.concat(l),d);zp(s.fullSize,p,d,m),zp(c,p,d,m),zp(l,p,d,m)&&zp(c,p,d,m),Lp(p),Vp(s.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,Vp(s.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},$c(s.chartArea,t=>{let n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}},Up=class{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,r){return t=Math.max(0,t||e.width),n||=e.height,{width:t,height:Math.max(0,r?Math.floor(t/r):n)}}isAttached(e){return!0}updateConfig(e){}},Wp=class extends Up{acquireContext(e){return e&&e.getContext&&e.getContext(`2d`)||null}updateConfig(e){e.options.animation=!1}},Gp=`$chartjs`,Kp={touchstart:`mousedown`,touchmove:`mousemove`,touchend:`mouseup`,pointerenter:`mouseenter`,pointerdown:`mousedown`,pointermove:`mousemove`,pointerup:`mouseup`,pointerleave:`mouseout`,pointerout:`mouseout`},qp=e=>e===null||e===``;function Jp(e,t){let n=e.style,r=e.getAttribute(`height`),i=e.getAttribute(`width`);if(e[Gp]={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||`block`,n.boxSizing=n.boxSizing||`border-box`,qp(i)){let t=Yd(e,`width`);t!==void 0&&(e.width=t)}if(qp(r))if(e.style.height===``)e.height=e.width/(t||2);else{let t=Yd(e,`height`);t!==void 0&&(e.height=t)}return e}var Yp=Jd?{passive:!0}:!1;function Xp(e,t,n){e&&e.addEventListener(t,n,Yp)}function Zp(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,Yp)}function Qp(e,t){let n=Kp[e.type]||e.type,{x:r,y:i}=Ud(e,t);return{type:n,chart:t,native:e,x:r===void 0?null:r,y:i===void 0?null:i}}function $p(e,t){for(let n of e)if(n===t||n.contains(t))return!0}function em(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=$p(n.addedNodes,r),t&&=!$p(n.removedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}function tm(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=$p(n.removedNodes,r),t&&=!$p(n.addedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}var nm=new Map,rm=0;function im(){let e=window.devicePixelRatio;e!==rm&&(rm=e,nm.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function am(e,t){nm.size||window.addEventListener(`resize`,im),nm.set(e,t)}function om(e){nm.delete(e),nm.size||window.removeEventListener(`resize`,im)}function sm(e,t,n){let r=e.canvas,i=r&&Fd(r);if(!i)return;let a=$l((e,t)=>{let r=i.clientWidth;n(e,t),r{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;n===0&&r===0||a(n,r)});return o.observe(i),am(e,a),o}function cm(e,t,n){n&&n.disconnect(),t===`resize`&&om(e)}function lm(e,t,n){let r=e.canvas,i=$l(t=>{e.ctx!==null&&n(Qp(t,e))},e);return Xp(r,t,i),i}var um=class extends Up{acquireContext(e,t){let n=e&&e.getContext&&e.getContext(`2d`);return n&&n.canvas===e?(Jp(e,t),n):null}releaseContext(e){let t=e.canvas;if(!t[Gp])return!1;let n=t[Gp].initial;[`height`,`width`].forEach(e=>{let r=n[e];Wc(r)?t.removeAttribute(e):t.setAttribute(e,r)});let r=n.style||{};return Object.keys(r).forEach(e=>{t.style[e]=r[e]}),t.width=t.width,delete t[Gp],!0}addEventListener(e,t,n){this.removeEventListener(e,t);let r=e.$proxies||={};r[t]=({attach:em,detach:tm,resize:sm}[t]||lm)(e,t,n)}removeEventListener(e,t){let n=e.$proxies||={},r=n[t];r&&(({attach:cm,detach:cm,resize:cm}[t]||Zp)(e,t,r),n[t]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,r){return Kd(e,t,n,r)}isAttached(e){let t=e&&Fd(e);return!!(t&&t.isConnected)}};function dm(e){return!Pd()||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas?Wp:um}var fm=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){let{x:t,y:n}=this.getProps([`x`,`y`],e);return{x:t,y:n}}hasValue(){return Al(this.x)&&Al(this.y)}getProps(e,t){let n=this.$animations;if(!t||!n)return this;let r={};return e.forEach(e=>{r[e]=n[e]&&n[e].active()?n[e]._to:this[e]}),r}};function pm(e,t){let n=e.options.ticks,r=mm(e),i=Math.min(n.maxTicksLimit||r,r),a=n.major.enabled?gm(t):[],o=a.length,s=a[0],c=a[o-1],l=[];if(o>i)return _m(t,l,a,o/i),l;let u=hm(a,t,i);if(o>0){let e,n,r=o>1?Math.round((c-s)/(o-1)):null;for(vm(t,l,u,Wc(r)?0:s-r,s),e=0,n=o-1;ei)return t}return Math.max(i,1)}function gm(e){let t=[],n,r;for(n=0,r=e.length;ne===`left`?`right`:e===`right`?`left`:e,xm=(e,t,n)=>t===`top`||t===`left`?e[t]+n:e[t]-n,Sm=(e,t)=>Math.min(t||e,e);function Cm(e,t){let n=[],r=e.length/t,i=e.length,a=0;for(;ao+s)))return c}function Tm(e,t){$c(e,e=>{let n=e.gc,r=n.length/2,i;if(r>t){for(i=0;in?n:t,n=r&&t>n?t:n,{min:Jc(t,Jc(n,t)),max:Jc(n,Jc(t,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||=this._computeLabelItems(e)}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Qc(this.options.beforeUpdate,[this])}update(e,t,n){let{beginAtZero:r,grace:i,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||=(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=nd(this,i,r),!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let s=o=i||n<=1||!this.isHorizontal()){this.labelRotation=r;return}let l=this._getLabelSizes(),u=l.widest.width,d=l.highest.height,f=Vl(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/n:f/(n-1),u+6>o&&(o=f/(n-(e.offset?.5:1)),s=this.maxHeight-Em(e.grid)-t.padding-Dm(e.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),a=Pl(Math.min(Math.asin(Vl((l.highest.height+6)/o,-1,1)),Math.asin(Vl(s/c,-1,1))-Math.asin(Vl(d/c,-1,1)))),a=Math.max(r,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){Qc(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){Qc(this.options.beforeFit,[this])}fit(){let e={width:0,height:0},{chart:t,options:{ticks:n,title:r,grid:i}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let a=Dm(r,t.options.font);if(o?(e.width=this.maxWidth,e.height=Em(i)+a):(e.height=this.maxHeight,e.width=Em(i)+a),n.display&&this.ticks.length){let{first:t,last:r,widest:i,highest:a}=this._getLabelSizes(),s=n.padding*2,c=Nl(this.labelRotation),l=Math.cos(c),u=Math.sin(c);if(o){let t=n.mirror?0:u*i.width+l*a.height;e.height=Math.min(this.maxHeight,e.height+t+s)}else{let t=n.mirror?0:l*i.width+u*a.height;e.width=Math.min(this.maxWidth,e.width+t+s)}this._calculatePadding(t,r,u,l)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,r){let{ticks:{align:i,padding:a},position:o}=this.options,s=this.labelRotation!==0,c=o!==`top`&&this.axis===`x`;if(this.isHorizontal()){let o=this.getPixelForTick(0)-this.left,l=this.right-this.getPixelForTick(this.ticks.length-1),u=0,d=0;s?c?(u=r*e.width,d=n*t.height):(u=n*e.height,d=r*t.width):i===`start`?d=t.width:i===`end`?u=e.width:i!==`inner`&&(u=e.width/2,d=t.width/2),this.paddingLeft=Math.max((u-o+a)*this.width/(this.width-o),0),this.paddingRight=Math.max((d-l+a)*this.width/(this.width-l),0)}else{let n=t.height/2,r=e.height/2;i===`start`?(n=0,r=e.height):i===`end`&&(n=t.height,r=0),this.paddingTop=n+a,this.paddingBottom=r+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){Qc(this.options.afterFit,[this])}isHorizontal(){let{axis:e,position:t}=this.options;return t===`top`||t===`bottom`||e===`x`}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let t,n;for(t=0,n=e.length;t({width:a[e]||0,height:o[e]||0});return{first:C(0),last:C(t-1),widest:C(x),highest:C(S),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){let t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);let t=this._startPixel+e*this._length;return Hl(this._alignToPixels?Mu(this.chart,t,0):t)}getDecimalForPixel(e){let t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){let t=this.ticks||[];if(e>=0&&eo*r?o/n:s/r:s*r0:!!e}_computeGridLineItems(e){let t=this.axis,n=this.chart,r=this.options,{grid:i,position:a,border:o}=r,s=i.offset,c=this.isHorizontal(),l=this.ticks.length+ +!!s,u=Em(i),d=[],f=o.setContext(this.getContext()),p=f.display?f.width:0,m=p/2,h=function(e){return Mu(n,e,p)},g,_,v,y,b,x,S,C,w,ee,te,ne;if(a===`top`)g=h(this.bottom),x=this.bottom-u,C=g-m,ee=h(e.top)+m,ne=e.bottom;else if(a===`bottom`)g=h(this.top),ee=e.top,ne=h(e.bottom)-m,x=g+m,C=this.top+u;else if(a===`left`)g=h(this.right),b=this.right-u,S=g-m,w=h(e.left)+m,te=e.right;else if(a===`right`)g=h(this.left),w=e.left,te=h(e.right)-m,b=g+m,S=this.left+u;else if(t===`x`){if(a===`center`)g=h((e.top+e.bottom)/2+.5);else if(Kc(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}ee=e.top,ne=e.bottom,x=g+m,C=x+u}else if(t===`y`){if(a===`center`)g=h((e.left+e.right)/2);else if(Kc(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}b=g-m,S=b-u,w=e.left,te=e.right}let re=Yc(r.ticks.maxTicksLimit,l),ie=Math.max(1,Math.ceil(l/re));for(_=0;_0&&(a-=r/2);break}f={left:a,top:i,width:r+t.width,height:n+t.height,color:e.backdropColor}}h.push({label:y,font:w,textOffset:ne,options:{rotation:m,color:n,strokeColor:s,strokeWidth:l,textAlign:d,textBaseline:re,translation:[b,x],backdrop:f}})}return h}_getXAxisLabelAlignment(){let{position:e,ticks:t}=this.options;if(-Nl(this.labelRotation))return e===`top`?`left`:`right`;let n=`center`;return t.align===`start`?n=`left`:t.align===`end`?n=`right`:t.align===`inner`&&(n=`inner`),n}_getYAxisLabelAlignment(e){let{position:t,ticks:{crossAlign:n,mirror:r,padding:i}}=this.options,a=this._getLabelSizes(),o=e+i,s=a.widest.width,c,l;return t===`left`?r?(l=this.right+i,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l+=s)):(l=this.right-o,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l=this.left)):t===`right`?r?(l=this.left+i,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l-=s)):(l=this.left+o,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l=this.right)):c=`right`,{textAlign:c,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;let e=this.chart,t=this.options.position;if(t===`left`||t===`right`)return{top:0,left:this.left,bottom:e.height,right:this.right};if(t===`top`||t===`bottom`)return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){let{ctx:e,options:{backgroundColor:t},left:n,top:r,width:i,height:a}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(n,r,i,a),e.restore())}getLineWidthForValue(e){let t=this.options.grid;if(!this._isVisible()||!t.display)return 0;let n=this.ticks.findIndex(t=>t.value===e);return n>=0?t.setContext(this.getContext(n)).lineWidth:0}drawGrid(e){let t=this.options.grid,n=this.ctx,r=this._gridLineItems||=this._computeGridLineItems(e),i,a,o=(e,t,r)=>{!r.width||!r.color||(n.save(),n.lineWidth=r.width,n.strokeStyle=r.color,n.setLineDash(r.borderDash||[]),n.lineDashOffset=r.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(i=0,a=r.length;i{this.draw(e)}}]:[{z:r,draw:e=>{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:n,draw:e=>{this.drawLabels(e)}}]}getMatchingVisibleMetas(e){let t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+`AxisID`,r=[],i,a;for(i=0,a=t.length;i{let r=n.split(`.`),i=r.pop(),a=[e].concat(r).join(`.`),o=t[n].split(`.`),s=o.pop(),c=o.join(`.`);Ou.route(a,i,c,s)})}function Im(e){return`id`in e&&`defaults`in e}var Lm=new class{constructor(){this.controllers=new Nm(Kf,`datasets`,!0),this.elements=new Nm(fm,`elements`),this.plugins=new Nm(Object,`plugins`),this.scales=new Nm(Mm,`scales`),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each(`register`,e)}remove(...e){this._each(`unregister`,e)}addControllers(...e){this._each(`register`,e,this.controllers)}addElements(...e){this._each(`register`,e,this.elements)}addPlugins(...e){this._each(`register`,e,this.plugins)}addScales(...e){this._each(`register`,e,this.scales)}getController(e){return this._get(e,this.controllers,`controller`)}getElement(e){return this._get(e,this.elements,`element`)}getPlugin(e){return this._get(e,this.plugins,`plugin`)}getScale(e){return this._get(e,this.scales,`scale`)}removeControllers(...e){this._each(`unregister`,e,this.controllers)}removeElements(...e){this._each(`unregister`,e,this.elements)}removePlugins(...e){this._each(`unregister`,e,this.plugins)}removeScales(...e){this._each(`unregister`,e,this.scales)}_each(e,t,n){[...t].forEach(t=>{let r=n||this._getRegistryForType(t);n||r.isForType(t)||r===this.plugins&&t.id?this._exec(e,r,t):$c(t,t=>{let r=n||this._getRegistryForType(t);this._exec(e,r,t)})})}_exec(e,t,n){let r=dl(e);Qc(n[`before`+r],[],n),t[e](n),Qc(n[`after`+r],[],n)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(r(t,n),e,`stop`),this._notify(r(n,t),e,`start`)}};function zm(e){let t={},n=[],r=Object.keys(Lm.plugins.items);for(let e=0;e1&&Km(e[0].toLowerCase());if(t)return t}throw Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function Ym(e,t,n){if(n[t+`AxisID`]===e)return{axis:t}}function Xm(e,t){if(t.data&&t.data.datasets){let n=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(n.length)return Ym(e,`x`,n[0])||Ym(e,`y`,n[0])}return{}}function Zm(e,t){let n=wu[e.type]||{scales:{}},r=t.scales||{},i=Um(e.type,t),a=Object.create(null);return Object.keys(r).forEach(t=>{let o=r[t];if(!Kc(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let s=Jm(t,o,Xm(t,e),Ou.scales[o.type]),c=Gm(s,i),l=n.scales||{};a[t]=al(Object.create(null),[{axis:s},o,l[s],l[c]])}),e.data.datasets.forEach(n=>{let i=n.type||e.type,o=n.indexAxis||Um(i,t),s=(wu[i]||{}).scales||{};Object.keys(s).forEach(e=>{let t=Wm(e,o),i=n[t+`AxisID`]||t;a[i]=a[i]||Object.create(null),al(a[i],[{axis:t},r[i],s[e]])})}),Object.keys(a).forEach(e=>{let t=a[e];al(t,[Ou.scales[t.type],Ou.scale])}),a}function Qm(e){let t=e.options||={};t.plugins=Yc(t.plugins,{}),t.scales=Zm(e,t)}function $m(e){return e||={},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function eh(e){return e||={},e.data=$m(e.data),Qm(e),e}var th=new Map,nh=new Set;function rh(e,t){let n=th.get(e);return n||(n=t(),th.set(e,n),nh.add(n)),n}var ih=(e,t,n)=>{let r=ul(t,n);r!==void 0&&e.add(r)},ah=class{constructor(e){this._config=eh(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=$m(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){let e=this._config;this.clearCache(),Qm(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return rh(e,()=>[[`datasets.${e}`,``]])}datasetAnimationScopeKeys(e,t){return rh(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,``]])}datasetElementScopeKeys(e,t){return rh(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,``]])}pluginScopeKeys(e){let t=e.id,n=this.type;return rh(`${n}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){let n=this._scopeCache,r=n.get(e);return(!r||t)&&(r=new Map,n.set(e,r)),r}getOptionScopes(e,t,n){let{options:r,type:i}=this,a=this._cachedScopes(e,n),o=a.get(t);if(o)return o;let s=new Set;t.forEach(t=>{e&&(s.add(e),t.forEach(t=>ih(s,e,t))),t.forEach(e=>ih(s,r,e)),t.forEach(e=>ih(s,wu[i]||{},e)),t.forEach(e=>ih(s,Ou,e)),t.forEach(e=>ih(s,Tu,e))});let c=Array.from(s);return c.length===0&&c.push(Object.create(null)),nh.has(t)&&a.set(t,c),c}chartOptionScopes(){let{options:e,type:t}=this;return[e,wu[t]||{},Ou.datasets[t]||{},{type:t},Ou,Tu]}resolveNamedOptions(e,t,n,r=[``]){let i={$shared:!0},{resolver:a,subPrefixes:o}=oh(this._resolverCache,e,r),s=a;if(ch(a,t)){i.$shared=!1,n=pl(n)?n():n;let t=this.createResolver(e,n,o);s=ad(a,n,t)}for(let e of t)i[e]=s[e];return i}createResolver(e,t,n=[``],r){let{resolver:i}=oh(this._resolverCache,e,n);return Kc(t)?ad(i,t,void 0,r):i}};function oh(e,t,n){let r=e.get(t);r||(r=new Map,e.set(t,r));let i=n.join(),a=r.get(i);return a||(a={resolver:id(t,n),subPrefixes:n.filter(e=>!e.toLowerCase().includes(`hover`))},r.set(i,a)),a}var sh=e=>Kc(e)&&Object.getOwnPropertyNames(e).some(t=>pl(e[t]));function ch(e,t){let{isScriptable:n,isIndexable:r}=od(e);for(let i of t){let t=n(i),a=r(i),o=(a||t)&&e[i];if(t&&(pl(o)||sh(o))||a&&Gc(o))return!0}return!1}var lh=`4.5.1`,uh=[`top`,`bottom`,`left`,`right`,`chartArea`];function dh(e,t){return e===`top`||e===`bottom`||uh.indexOf(e)===-1&&t===`x`}function fh(e,t){return function(n,r){return n[e]===r[e]?n[t]-r[t]:n[e]-r[e]}}function ph(e){let t=e.chart,n=t.options.animation;t.notifyPlugins(`afterRender`),Qc(n&&n.onComplete,[e],t)}function mh(e){let t=e.chart,n=t.options.animation;Qc(n&&n.onProgress,[e],t)}function hh(e){return Pd()&&typeof e==`string`?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}var gh={},_h=e=>{let t=hh(e);return Object.values(gh).filter(e=>e.canvas===t).pop()};function vh(e,t,n){let r=Object.keys(e);for(let i of r){let r=+i;if(r>=t){let a=e[i];delete e[i],(n>0||r>t)&&(e[r+n]=a)}}}function yh(e,t,n,r){return!n||e.type===`mouseout`?null:r?t:e}var bh=class{static defaults=Ou;static instances=gh;static overrides=wu;static registry=Lm;static version=lh;static getChart=_h;static register(...e){Lm.add(...e),xh()}static unregister(...e){Lm.remove(...e),xh()}constructor(e,t){let n=this.config=new ah(t),r=hh(e),i=_h(r);if(i)throw Error(`Canvas is already in use. Chart with ID '`+i.id+`' must be destroyed before the canvas with ID '`+i.canvas.id+`' can be reused.`);let a=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||(dm(r))),this.platform.updateConfig(n);let o=this.platform.acquireContext(r,a.aspectRatio),s=o&&o.canvas,c=s&&s.height,l=s&&s.width;if(this.id=Uc(),this.ctx=o,this.canvas=s,this.width=l,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Rm,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=eu(e=>this.update(e),a.resizeDelay||0),this._dataChanges=[],gh[this.id]=this,!o||!s){console.error(`Failed to create chart: can't acquire context from the given item`);return}bf.listen(this,`complete`,ph),bf.listen(this,`progress`,mh),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:r,_aspectRatio:i}=this;return Wc(e)?t&&i?i:r?n/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return Lm}_initialize(){return this.notifyPlugins(`beforeInit`),this.options.responsive?this.resize():qd(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(`afterInit`),this}clear(){return Nu(this.canvas,this.ctx),this}stop(){return bf.stop(this),this}resize(e,t){bf.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){let n=this.options,r=this.canvas,i=n.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(r,e,t,i),o=n.devicePixelRatio||this.platform.getDevicePixelRatio(),s=this.width?`resize`:`attach`;this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,qd(this,o,!0)&&(this.notifyPlugins(`resize`,{size:a}),Qc(n.onResize,[this,a],this),this.attached&&this._doResize(s)&&this.render())}ensureScalesHaveIDs(){$c(this.options.scales||{},(e,t)=>{e.id=t})}buildOrUpdateScales(){let e=this.options,t=e.scales,n=this.scales,r=Object.keys(n).reduce((e,t)=>(e[t]=!1,e),{}),i=[];t&&(i=i.concat(Object.keys(t).map(e=>{let n=t[e],r=Jm(e,n),i=r===`r`,a=r===`x`;return{options:n,dposition:i?`chartArea`:a?`bottom`:`left`,dtype:i?`radialLinear`:a?`category`:`linear`}}))),$c(i,t=>{let i=t.options,a=i.id,o=Jm(a,i),s=Yc(i.type,t.dtype);(i.position===void 0||dh(i.position,o)!==dh(t.dposition))&&(i.position=t.dposition),r[a]=!0;let c=null;a in n&&n[a].type===s?c=n[a]:(c=new(Lm.getScale(s))({id:a,type:s,ctx:this.ctx,chart:this}),n[c.id]=c),c.init(i,e)}),$c(r,(e,t)=>{e||delete n[t]}),$c(n,e=>{Hp.configure(this,e,e.options),Hp.addBox(this,e)})}_updateMetasets(){let e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort((e,t)=>e.index-t.index),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,n)=>{t.filter(t=>t===e._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let e=[],t=this.data.datasets,n,r;for(this._removeUnreferencedMetasets(),n=0,r=t.length;n{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins(`reset`)}update(e){let t=this.config;t.update();let n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins(`beforeUpdate`,{mode:e,cancelable:!0})===!1)return;let i=this.buildOrUpdateControllers();this.notifyPlugins(`beforeElementsUpdate`);let a=0;for(let e=0,t=this.data.datasets.length;e{e.reset()}),this._updateDatasets(e),this.notifyPlugins(`afterUpdate`,{mode:e}),this._layers.sort(fh(`z`,`_idx`));let{_active:o,_lastEvent:s}=this;s?this._eventHandler(s,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){$c(this.scales,e=>{Hp.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let e=this.options;(!ml(new Set(Object.keys(this._listeners)),new Set(e.events))||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(let{method:n,start:r,count:i}of t)vh(e,r,n===`_removeElements`?-i:i)}_getUniformDataChanges(){let e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];let t=this.data.datasets.length,n=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+`,`+e.splice(1).join(`,`))),r=n(0);for(let e=1;ee.split(`,`)).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(this.notifyPlugins(`beforeLayout`,{cancelable:!0})===!1)return;Hp.update(this,this.width,this.height,e);let t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],$c(this.boxes,e=>{n&&e.position===`chartArea`||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins(`afterLayout`)}_updateDatasets(e){if(this.notifyPlugins(`beforeDatasetsUpdate`,{mode:e,cancelable:!0})!==!1){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins(`afterDatasetsDraw`)}_drawDataset(e){let t=this.ctx,n={meta:e,index:e.index,cancelable:!0},r=yf(this,e);this.notifyPlugins(`beforeDatasetDraw`,n)!==!1&&(r&&Lu(t,r),e.controller.draw(),r&&Ru(t),n.cancelable=!1,this.notifyPlugins(`afterDatasetDraw`,n))}isPointInArea(e){return Iu(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,n,r){let i=Tp.modes[t];return typeof i==`function`?i(this,e,n,r):[]}getDatasetMeta(e){let t=this.data.datasets[e],n=this._metasets,r=n.filter(e=>e&&e._dataset===t).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(r)),r}getContext(){return this.$context||=rd(null,{chart:this,type:`chart`})}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){let t=this.data.datasets[e];if(!t)return!1;let n=this.getDatasetMeta(e);return typeof n.hidden==`boolean`?!n.hidden:!t.hidden}setDatasetVisibility(e,t){let n=this.getDatasetMeta(e);n.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){let r=n?`show`:`hide`,i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,r);fl(t)?(i.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),a.update(i,{visible:n}),this.update(t=>t.datasetIndex===e?r:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){let t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),bf.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,r),e[n]=r},r=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};$c(this.options.events,e=>n(e,r))}bindResponsiveEvents(){this._responsiveListeners||={};let e=this._responsiveListeners,t=this.platform,n=(n,r)=>{t.addEventListener(this,n,r),e[n]=r},r=(n,r)=>{e[n]&&(t.removeEventListener(this,n,r),delete e[n])},i=(e,t)=>{this.canvas&&this.resize(e,t)},a,o=()=>{r(`attach`,o),this.attached=!0,this.resize(),n(`resize`,i),n(`detach`,a)};a=()=>{this.attached=!1,r(`resize`,i),this._stop(),this._resize(0,0),n(`attach`,o)},t.isAttached(this.canvas)?o():a()}unbindEvents(){$c(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},$c(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){let r=n?`set`:`remove`,i,a,o,s;for(t===`dataset`&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller[`_`+r+`DatasetHoverStyle`]()),o=0,s=e.length;o{let n=this.getDatasetMeta(e);if(!n)throw Error(`No dataset found at index `+e);return{datasetIndex:e,element:n.data[t],index:t}});el(n,t)||(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}isPluginEnabled(e){return this._plugins._cache.filter(t=>t.plugin.id===e).length===1}_updateHoverStyles(e,t,n){let r=this.options.hover,i=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),a=i(t,e),o=n?e:i(e,t);a.length&&this.updateHoverStyle(a,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,t){let n={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},r=t=>(t.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins(`beforeEvent`,n,r)===!1)return;let i=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins(`afterEvent`,n,r),(i||n.changed)&&this.render(),this}_handleEvent(e,t,n){let{_active:r=[],options:i}=this,a=t,o=this._getActiveElements(e,r,n,a),s=hl(e),c=yh(e,this._lastEvent,n,s);n&&(this._lastEvent=null,Qc(i.onHover,[e,o,this],this),s&&Qc(i.onClick,[e,o,this],this));let l=!el(o,r);return(l||t)&&(this._active=o,this._updateHoverStyles(o,r,t)),this._lastEvent=c,l}_getActiveElements(e,t,n,r){if(e.type===`mouseout`)return[];if(!n)return t;let i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,r)}};function xh(){return $c(bh.instances,e=>e._plugins.invalidate())}function Sh(e,t,n){let{startAngle:r,x:i,y:a,outerRadius:o,innerRadius:s,options:c}=t,{borderWidth:l,borderJoinStyle:u}=c,d=Math.min(l/o,zl(r-n));if(e.beginPath(),e.arc(i,a,o-l/2,r+d/2,n-d/2),s>0){let t=Math.min(l/s,zl(r-n));e.arc(i,a,s+l/2,n-t/2,r+t/2,!0)}else{let t=Math.min(l/2,o*zl(r-n));if(u===`round`)e.arc(i,a,t,n-gl/2,r+gl/2,!0);else if(u===`bevel`){let o=2*t*t,s=-o*Math.cos(n+gl/2)+i,c=-o*Math.sin(n+gl/2)+a,l=o*Math.cos(r+gl/2)+i,u=o*Math.sin(r+gl/2)+a;e.lineTo(s,c),e.lineTo(l,u)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip(`evenodd`)}function Ch(e,t,n){let{startAngle:r,pixelMargin:i,x:a,y:o,outerRadius:s,innerRadius:c}=t,l=i/s;e.beginPath(),e.arc(a,o,s,r-l,n+l),c>i?(l=i/c,e.arc(a,o,c,n+l,r-l,!0)):e.arc(a,o,i,n+xl,r-xl),e.closePath(),e.clip()}function wh(e){return Xu(e,[`outerStart`,`outerEnd`,`innerStart`,`innerEnd`])}function Th(e,t,n,r){let i=wh(e.options.borderRadius),a=(n-t)/2,o=Math.min(a,r*t/2),s=e=>{let t=(n-Math.min(a,e))*r/2;return Vl(e,0,Math.min(a,t))};return{outerStart:s(i.outerStart),outerEnd:s(i.outerEnd),innerStart:Vl(i.innerStart,0,o),innerEnd:Vl(i.innerEnd,0,o)}}function Eh(e,t,n,r){return{x:n+e*Math.cos(t),y:r+e*Math.sin(t)}}function Dh(e,t,n,r,i,a){let{x:o,y:s,startAngle:c,pixelMargin:l,innerRadius:u}=t,d=Math.max(t.outerRadius+r+n-l,0),f=u>0?u+r+n+l:0,p=0,m=i-c;if(r){let e=((u>0?u-r:0)+(d>0?d-r:0))/2;p=(m-(e===0?m:m*e/(e+r)))/2}let h=(m-Math.max(.001,m*d-n/gl)/d)/2,g=c+h+p,_=i-h-p,{outerStart:v,outerEnd:y,innerStart:b,innerEnd:x}=Th(t,f,d,_-g),S=d-v,C=d-y,w=g+v/S,ee=_-y/C,te=f+b,ne=f+x,re=g+b/te,ie=_-x/ne;if(e.beginPath(),a){let t=(w+ee)/2;if(e.arc(o,s,d,w,t),e.arc(o,s,d,t,ee),y>0){let t=Eh(C,ee,o,s);e.arc(t.x,t.y,y,ee,_+xl)}let n=Eh(ne,_,o,s);if(e.lineTo(n.x,n.y),x>0){let t=Eh(ne,ie,o,s);e.arc(t.x,t.y,x,_+xl,ie+Math.PI)}let r=(_-x/f+(g+b/f))/2;if(e.arc(o,s,f,_-x/f,r,!0),e.arc(o,s,f,r,g+b/f,!0),b>0){let t=Eh(te,re,o,s);e.arc(t.x,t.y,b,re+Math.PI,g-xl)}let i=Eh(S,g,o,s);if(e.lineTo(i.x,i.y),v>0){let t=Eh(S,w,o,s);e.arc(t.x,t.y,v,g-xl,w)}}else{e.moveTo(o,s);let t=Math.cos(w)*d+o,n=Math.sin(w)*d+s;e.lineTo(t,n);let r=Math.cos(ee)*d+o,i=Math.sin(ee)*d+s;e.lineTo(r,i)}e.closePath()}function Oh(e,t,n,r,i){let{fullCircles:a,startAngle:o,circumference:s}=t,c=t.endAngle;if(a){Dh(e,t,n,r,c,i);for(let t=0;t=gl&&p===0&&u!==`miter`&&Sh(e,t,h),a||(Dh(e,t,n,r,h,i),e.stroke())}var Ah=class extends fm{static id=`arc`;static defaults={borderAlign:`center`,borderColor:`#fff`,borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:`backgroundColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,n){let{angle:r,distance:i}=Il(this.getProps([`x`,`y`],n),{x:e,y:t}),{startAngle:a,endAngle:o,innerRadius:s,outerRadius:c,circumference:l}=this.getProps([`startAngle`,`endAngle`,`innerRadius`,`outerRadius`,`circumference`],n),u=(this.options.spacing+this.options.borderWidth)/2,d=Yc(l,o-a),f=Bl(r,a,o)&&a!==o,p=d>=_l||f,m=Ul(i,s+u,c+u);return p&&m}getCenterPoint(e){let{x:t,y:n,startAngle:r,endAngle:i,innerRadius:a,outerRadius:o}=this.getProps([`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`],e),{offset:s,spacing:c}=this.options,l=(r+i)/2,u=(a+o+c+s)/2;return{x:t+Math.cos(l)*u,y:n+Math.sin(l)*u}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){let{options:t,circumference:n}=this,r=(t.offset||0)/4,i=(t.spacing||0)/2,a=t.circular;if(this.pixelMargin=t.borderAlign===`inner`?.33:0,this.fullCircles=n>_l?Math.floor(n/_l):0,n===0||this.innerRadius<0||this.outerRadius<0)return;e.save();let o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*r,Math.sin(o)*r);let s=r*(1-Math.sin(Math.min(gl,n||0)));e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor,Oh(e,this,s,i,a),kh(e,this,s,i,a),e.restore()}};function jh(e,t,n=t){e.lineCap=Yc(n.borderCapStyle,t.borderCapStyle),e.setLineDash(Yc(n.borderDash,t.borderDash)),e.lineDashOffset=Yc(n.borderDashOffset,t.borderDashOffset),e.lineJoin=Yc(n.borderJoinStyle,t.borderJoinStyle),e.lineWidth=Yc(n.borderWidth,t.borderWidth),e.strokeStyle=Yc(n.borderColor,t.borderColor)}function Mh(e,t,n){e.lineTo(n.x,n.y)}function Nh(e){return e.stepped?zu:e.tension||e.cubicInterpolationMode===`monotone`?Bu:Mh}function Ph(e,t,n={}){let r=e.length,{start:i=0,end:a=r-1}=n,{start:o,end:s}=t,c=Math.max(i,o),l=Math.min(a,s),u=is&&a>s;return{count:r,start:c,loop:t.loop,ilen:l(o+(l?s-e:e))%a,y=()=>{h!==g&&(e.lineTo(u,g),e.lineTo(u,h),e.lineTo(u,_))};for(c&&(p=i[v(0)],e.moveTo(p.x,p.y)),f=0;f<=s;++f){if(p=i[v(f)],p.skip)continue;let t=p.x,n=p.y,r=t|0;r===m?(ng&&(g=n),u=(d*u+t)/++d):(y(),e.lineTo(t,n),m=r,d=0,h=g=n),_=n}y()}function Lh(e){let t=e.options,n=t.borderDash&&t.borderDash.length;return!e._decimated&&!e._loop&&!t.tension&&t.cubicInterpolationMode!==`monotone`&&!t.stepped&&!n?Ih:Fh}function Rh(e){return e.stepped?Zd:e.tension||e.cubicInterpolationMode===`monotone`?Qd:Xd}function zh(e,t,n,r){let i=t._path;i||(i=t._path=new Path2D,t.path(i,n,r)&&i.closePath()),jh(e,t.options),e.stroke(i)}function Bh(e,t,n,r){let{segments:i,options:a}=t,o=Lh(t);for(let s of i)jh(e,a,s.style),e.beginPath(),o(e,t,s,{start:n,end:n+r-1})&&e.closePath(),e.stroke()}var Vh=typeof Path2D==`function`;function Hh(e,t,n,r){Vh&&!t.options.segment?zh(e,t,n,r):Bh(e,t,n,r)}var Uh=class extends fm{static id=`line`;static defaults={borderCapStyle:`butt`,borderDash:[],borderDashOffset:0,borderJoinStyle:`miter`,borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:`default`,fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:`backgroundColor`,borderColor:`borderColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`&&e!==`fill`};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){let n=this.options;if((n.tension||n.cubicInterpolationMode===`monotone`)&&!n.stepped&&!this._pointsUpdated){let r=n.spanGaps?this._loop:this._fullLoop;Nd(this._points,n,e,r,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||=ff(this,this.options.segment)}first(){let e=this.segments,t=this.points;return e.length&&t[e[0].start]}last(){let e=this.segments,t=this.points,n=e.length;return n&&t[e[n-1].end]}interpolate(e,t){let n=this.options,r=e[t],i=this.points,a=lf(this,{property:t,start:r,end:r});if(!a.length)return;let o=[],s=Rh(n),c,l;for(c=0,l=a.length;ce.replace(`rgb(`,`rgba(`).replace(`)`,`, 0.5)`));function ig(e){return ng[e%ng.length]}function ag(e){return rg[e%rg.length]}function og(e,t){return e.borderColor=ig(t),e.backgroundColor=ag(t),++t}function sg(e,t){return e.backgroundColor=e.data.map(()=>ig(t++)),t}function cg(e,t){return e.backgroundColor=e.data.map(()=>ag(t++)),t}function lg(e){let t=0;return(n,r)=>{let i=e.getDatasetMeta(r).controller;i instanceof dp?t=sg(n,t):i instanceof pp?t=cg(n,t):i&&(t=og(n,t))}}function ug(e){let t;for(t in e)if(e[t].borderColor||e[t].backgroundColor)return!0;return!1}function dg(e){return e&&(e.borderColor||e.backgroundColor)}function fg(){return Ou.borderColor!==`rgba(0,0,0,0.1)`||Ou.backgroundColor!==`rgba(0,0,0,0.1)`}var pg={id:`colors`,defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,t,n){if(!n.enabled)return;let{data:{datasets:r},options:i}=e.config,{elements:a}=i,o=ug(r)||dg(i)||a&&ug(a)||fg();if(!n.forceOverride&&o)return;let s=lg(e);r.forEach(s)}};function mg(e,t,n,r,i){let a=i.samples||r;if(a>=n)return e.slice(t,t+n);let o=[],s=(n-2)/(a-2),c=0,l=t+n-1,u=t,d,f,p,m,h;for(o[c++]=e[u],d=0;dp&&(p=m,f=e[a],h=a);o[c++]=f,u=h}return o[c++]=e[l],o}function hg(e,t,n,r){let i=0,a=0,o,s,c,l,u,d,f,p,m,h,g=[],_=t+n-1,v=e[t].x,y=e[_].x-v;for(o=t;oh&&(h=l,f=o),i=(a*i+s.x)/++a;else{let n=o-1;if(!Wc(d)&&!Wc(f)){let t=Math.min(d,f),r=Math.max(d,f);t!==p&&t!==n&&g.push({...e[t],x:i}),r!==p&&r!==n&&g.push({...e[r],x:i})}o>0&&n!==p&&g.push(e[n]),g.push(s),u=t,a=0,m=h=l,d=f=p=o}}return g}function gg(e){if(e._decimated){let t=e._data;delete e._decimated,delete e._data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,writable:!0,value:t})}}function _g(e){e.data.datasets.forEach(e=>{gg(e)})}function vg(e,t){let n=t.length,r=0,i,{iScale:a}=e,{min:o,max:s,minDefined:c,maxDefined:l}=a.getUserBounds();return c&&(r=Vl(Gl(t,a.axis,o).lo,0,n-1)),i=l?Vl(Gl(t,a.axis,s).hi+1,r,n)-r:n-r,{start:r,count:i}}var yg={id:`decimation`,defaults:{algorithm:`min-max`,enabled:!1},beforeElementsUpdate:(e,t,n)=>{if(!n.enabled){_g(e);return}let r=e.width;e.data.datasets.forEach((t,i)=>{let{_data:a,indexAxis:o}=t,s=e.getDatasetMeta(i),c=a||t.data;if(td([o,e.options.indexAxis])===`y`||!s.controller.supportsDecimation)return;let l=e.scales[s.xAxisID];if(l.type!==`linear`&&l.type!==`time`||e.options.parsing)return;let{start:u,count:d}=vg(s,c);if(d<=(n.threshold||4*r)){gg(t);return}Wc(a)&&(t._data=c,delete t.data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(e){this._data=e}}));let f;switch(n.algorithm){case`lttb`:f=mg(c,u,d,r,n);break;case`min-max`:f=hg(c,u,d,r);break;default:throw Error(`Unsupported decimation algorithm '${n.algorithm}'`)}t._decimated=f})},destroy(e){_g(e)}};function bg(e,t,n){let r=e.segments,i=e.points,a=t.points,o=[];for(let e of r){let{start:r,end:s}=e;s=Cg(r,s,i);let c=xg(n,i[r],i[s],e.loop);if(!t.segments){o.push({source:e,target:c,start:i[r],end:i[s]});continue}let l=lf(t,c);for(let t of l){let r=xg(n,a[t.start],a[t.end],t.loop),s=cf(e,i,r);for(let e of s)o.push({source:e,target:t,start:{[n]:wg(c,r,`start`,Math.max)},end:{[n]:wg(c,r,`end`,Math.min)}})}}return o}function xg(e,t,n,r){if(r)return;let i=t[e],a=n[e];return e===`angle`&&(i=zl(i),a=zl(a)),{property:e,start:i,end:a}}function Sg(e,t){let{x:n=null,y:r=null}=e||{},i=t.points,a=[];return t.segments.forEach(({start:e,end:t})=>{t=Cg(e,t,i);let o=i[e],s=i[t];r===null?n!==null&&(a.push({x:n,y:o.y}),a.push({x:n,y:s.y})):(a.push({x:o.x,y:r}),a.push({x:s.x,y:r}))}),a}function Cg(e,t,n){for(;t>e;t--){let e=n[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function wg(e,t,n,r){return e&&t?r(e[n],t[n]):e?e[n]:t?t[n]:0}function Tg(e,t){let n=[],r=!1;return Gc(e)?(r=!0,n=e):n=Sg(e,t),n.length?new Uh({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function Eg(e){return e&&e.fill!==!1}function Dg(e,t,n){let r=e[t].fill,i=[t],a;if(!n)return r;for(;r!==!1&&i.indexOf(r)===-1;){if(!qc(r))return r;if(a=e[r],!a)return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function Og(e,t,n){let r=Mg(e);if(Kc(r))return!isNaN(r.value)&&r;let i=parseFloat(r);return qc(i)&&Math.floor(i)===i?kg(r[0],t,i,n):[`origin`,`start`,`end`,`stack`,`shape`].indexOf(r)>=0&&r}function kg(e,t,n,r){return(e===`-`||e===`+`)&&(n=t+n),n===t||n<0||n>=r?!1:n}function Ag(e,t){let n=null;return e===`start`?n=t.bottom:e===`end`?n=t.top:Kc(e)?n=t.getPixelForValue(e.value):t.getBasePixel&&(n=t.getBasePixel()),n}function jg(e,t,n){let r;return r=e===`start`?n:e===`end`?t.options.reverse?t.min:t.max:Kc(e)?e.value:t.getBaseValue(),r}function Mg(e){let t=e.options,n=t.fill,r=Yc(n&&n.target,n);return r===void 0&&(r=!!t.backgroundColor),r===!1||r===null?!1:r===!0?`origin`:r}function Ng(e){let{scale:t,index:n,line:r}=e,i=[],a=r.segments,o=r.points,s=Pg(t,n);s.push(Tg({x:null,y:t.bottom},r));for(let e=0;e=0;--t){let n=i[t].$filler;n&&(n.line.updateControlPoints(a,n.axis),r&&n.fill&&Ug(e.ctx,n,a))}},beforeDatasetsDraw(e,t,n){if(n.drawTime!==`beforeDatasetsDraw`)return;let r=e.getSortedVisibleDatasetMetas();for(let t=r.length-1;t>=0;--t){let n=r[t].$filler;Eg(n)&&Ug(e.ctx,n,e.chartArea)}},beforeDatasetDraw(e,t,n){let r=t.meta.$filler;!Eg(r)||n.drawTime!==`beforeDatasetDraw`||Ug(e.ctx,r,e.chartArea)},defaults:{propagate:!0,drawTime:`beforeDatasetDraw`}},Zg=(e,t)=>{let{boxHeight:n=t,boxWidth:r=t}=e;return e.usePointStyle&&(n=Math.min(n,t),r=e.pointStyleWidth||Math.min(r,t)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(t,n)}},Qg=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index,$g=class extends fm{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,n){this.maxWidth=e,this.maxHeight=t,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let e=this.options.labels||{},t=Qc(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,n)=>e.sort(t,n,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){let{options:e,ctx:t}=this;if(!e.display){this.width=this.height=0;return}let n=e.labels,r=ed(n.font),i=r.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:s}=Zg(n,i),c,l;t.font=r.string,this.isHorizontal()?(c=this.maxWidth,l=this._fitRows(a,i,o,s)+10):(l=this.maxHeight,c=this._fitCols(a,r,o,s)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,t,n,r){let{ctx:i,maxWidth:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.lineWidths=[0],l=r+o,u=e;i.textAlign=`left`,i.textBaseline=`middle`;let d=-1,f=-l;return this.legendItems.forEach((e,p)=>{let m=n+t/2+i.measureText(e.text).width;(p===0||c[c.length-1]+m+2*o>a)&&(u+=l,c[c.length-(p>0?0:1)]=0,f+=l,d++),s[p]={left:0,top:f,row:d,width:m,height:r},c[c.length-1]+=m+o}),u}_fitCols(e,t,n,r){let{ctx:i,maxHeight:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.columnSizes=[],l=a-e,u=o,d=0,f=0,p=0,m=0;return this.legendItems.forEach((e,a)=>{let{itemWidth:h,itemHeight:g}=e_(n,t,i,e,r);a>0&&f+g+2*o>l&&(u+=d+o,c.push({width:d,height:f}),p+=d+o,m++,d=f=0),s[a]={left:p,top:f,col:m,width:h,height:g},d=Math.max(d,h),f+=g+o}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;let e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:n,labels:{padding:r},rtl:i}}=this,a=tf(i,this.left,this.width);if(this.isHorizontal()){let i=0,o=nu(n,this.left+r,this.right-this.lineWidths[i]);for(let s of t)i!==s.row&&(i=s.row,o=nu(n,this.left+r,this.right-this.lineWidths[i])),s.top+=this.top+e+r,s.left=a.leftForLtr(a.x(o),s.width),o+=s.width+r}else{let i=0,o=nu(n,this.top+e+r,this.bottom-this.columnSizes[i].height);for(let s of t)s.col!==i&&(i=s.col,o=nu(n,this.top+e+r,this.bottom-this.columnSizes[i].height)),s.top=o,s.left+=this.left+r,s.left=a.leftForLtr(a.x(s.left),s.width),o+=s.height+r}}isHorizontal(){return this.options.position===`top`||this.options.position===`bottom`}draw(){if(this.options.display){let e=this.ctx;Lu(e,this),this._draw(),Ru(e)}}_draw(){let{options:e,columnSizes:t,lineWidths:n,ctx:r}=this,{align:i,labels:a}=e,o=Ou.color,s=tf(e.rtl,this.left,this.width),c=ed(a.font),{padding:l}=a,u=c.size,d=u/2,f;this.drawTitle(),r.textAlign=s.textAlign(`left`),r.textBaseline=`middle`,r.lineWidth=.5,r.font=c.string;let{boxWidth:p,boxHeight:m,itemHeight:h}=Zg(a,u),g=function(e,t,n){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;r.save();let i=Yc(n.lineWidth,1);if(r.fillStyle=Yc(n.fillStyle,o),r.lineCap=Yc(n.lineCap,`butt`),r.lineDashOffset=Yc(n.lineDashOffset,0),r.lineJoin=Yc(n.lineJoin,`miter`),r.lineWidth=i,r.strokeStyle=Yc(n.strokeStyle,o),r.setLineDash(Yc(n.lineDash,[])),a.usePointStyle){let o={radius:m*Math.SQRT2/2,pointStyle:n.pointStyle,rotation:n.rotation,borderWidth:i},c=s.xPlus(e,p/2),l=t+d;Fu(r,o,c,l,a.pointStyleWidth&&p)}else{let a=t+Math.max((u-m)/2,0),o=s.leftForLtr(e,p),c=Qu(n.borderRadius);r.beginPath(),Object.values(c).some(e=>e!==0)?Gu(r,{x:o,y:a,w:p,h:m,radius:c}):r.rect(o,a,p,m),r.fill(),i!==0&&r.stroke()}r.restore()},_=function(e,t,n){Wu(r,n.text,e,t+h/2,c,{strikethrough:n.hidden,textAlign:s.textAlign(n.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();f=v?{x:nu(i,this.left+l,this.right-n[0]),y:this.top+l+y,line:0}:{x:this.left+l,y:nu(i,this.top+y+l,this.bottom-t[0].height),line:0},nf(this.ctx,e.textDirection);let b=h+l;this.legendItems.forEach((o,u)=>{r.strokeStyle=o.fontColor,r.fillStyle=o.fontColor;let m=r.measureText(o.text).width,h=s.textAlign(o.textAlign||=a.textAlign),x=p+d+m,S=f.x,C=f.y;s.setWidth(this.width),v?u>0&&S+x+l>this.right&&(C=f.y+=b,f.line++,S=f.x=nu(i,this.left+l,this.right-n[f.line])):u>0&&C+b>this.bottom&&(S=f.x=S+t[f.line].width+l,f.line++,C=f.y=nu(i,this.top+y+l,this.bottom-t[f.line].height));let w=s.x(S);if(g(w,C,o),S=ru(h,S+p+d,v?S+x:this.right,e.rtl),_(s.x(S),C,o),v)f.x+=x+l;else if(typeof o.text!=`string`){let e=c.lineHeight;f.y+=r_(o,e)+l}else f.y+=b}),rf(this.ctx,e.textDirection)}drawTitle(){let e=this.options,t=e.title,n=ed(t.font),r=$u(t.padding);if(!t.display)return;let i=tf(e.rtl,this.left,this.width),a=this.ctx,o=t.position,s=n.size/2,c=r.top+s,l,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),l=this.top+c,u=nu(e.align,u,this.right-d);else{let t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);l=c+nu(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}let f=nu(o,u,u+d);a.textAlign=i.textAlign(tu(o)),a.textBaseline=`middle`,a.strokeStyle=t.color,a.fillStyle=t.color,a.font=n.string,Wu(a,t.text,f,l,n)}_computeTitleHeight(){let e=this.options.title,t=ed(e.font),n=$u(e.padding);return e.display?t.lineHeight+n.height:0}_getLegendItemAt(e,t){let n,r,i;if(Ul(e,this.left,this.right)&&Ul(t,this.top,this.bottom)){for(i=this.legendHitBoxes,n=0;ne.length>t.length?e:t)),t+n.size/2+r.measureText(i).width}function n_(e,t,n){let r=e;return typeof t.text!=`string`&&(r=r_(t,n)),r}function r_(e,t){return t*(e.text?e.text.length:0)}function i_(e,t){return!!((e===`mousemove`||e===`mouseout`)&&(t.onHover||t.onLeave)||t.onClick&&(e===`click`||e===`mouseup`))}var a_={id:`legend`,_element:$g,start(e,t,n){let r=e.legend=new $g({ctx:e.ctx,options:n,chart:e});Hp.configure(e,r,n),Hp.addBox(e,r)},stop(e){Hp.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){let r=e.legend;Hp.configure(e,r,n),r.options=n},afterUpdate(e){let t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:`top`,align:`center`,fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){let r=t.datasetIndex,i=n.chart;i.isDatasetVisible(r)?(i.hide(r),t.hidden=!0):(i.show(r),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){let t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:i,color:a,useBorderRadius:o,borderRadius:s}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{let c=e.controller.getStyle(n?0:void 0),l=$u(c.borderWidth);return{text:t[e.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!e.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:c.borderColor,pointStyle:r||c.pointStyle,rotation:c.rotation,textAlign:i||c.textAlign,borderRadius:o&&(s||c.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:`center`,text:``}},descriptors:{_scriptable:e=>!e.startsWith(`on`),labels:{_scriptable:e=>![`generateLabels`,`filter`,`sort`].includes(e)}}},o_=class extends fm{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){let n=this.options;if(this.left=0,this.top=0,!n.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=t;let r=Gc(n.text)?n.text.length:1;this._padding=$u(n.padding);let i=r*ed(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){let e=this.options.position;return e===`top`||e===`bottom`}_drawArgs(e){let{top:t,left:n,bottom:r,right:i,options:a}=this,o=a.align,s=0,c,l,u;return this.isHorizontal()?(l=nu(o,n,i),u=t+e,c=i-n):(a.position===`left`?(l=n+e,u=nu(o,r,t),s=gl*-.5):(l=i-e,u=nu(o,t,r),s=gl*.5),c=r-t),{titleX:l,titleY:u,maxWidth:c,rotation:s}}draw(){let e=this.ctx,t=this.options;if(!t.display)return;let n=ed(t.font),r=n.lineHeight/2+this._padding.top,{titleX:i,titleY:a,maxWidth:o,rotation:s}=this._drawArgs(r);Wu(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:s,textAlign:tu(t.align),textBaseline:`middle`,translation:[i,a]})}};function s_(e,t){let n=new o_({ctx:e.ctx,options:t,chart:e});Hp.configure(e,n,t),Hp.addBox(e,n),e.titleBlock=n}var c_={id:`title`,_element:o_,start(e,t,n){s_(e,n)},stop(e){let t=e.titleBlock;Hp.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){let r=e.titleBlock;Hp.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`bold`},fullSize:!0,padding:10,position:`top`,text:``,weight:2e3},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},l_=new WeakMap,u_={id:`subtitle`,start(e,t,n){let r=new o_({ctx:e.ctx,options:n,chart:e});Hp.configure(e,r,n),Hp.addBox(e,r),l_.set(e,r)},stop(e){Hp.removeBox(e,l_.get(e)),l_.delete(e)},beforeUpdate(e,t,n){let r=l_.get(e);Hp.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`normal`},fullSize:!0,padding:0,position:`top`,text:``,weight:1500},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},d_={average(e){if(!e.length)return!1;let t,n,r=new Set,i=0,a=0;for(t=0,n=e.length;te+t)/r.size,y:i/a}},nearest(e,t){if(!e.length)return!1;let n=t.x,r=t.y,i=1/0,a,o,s;for(a=0,o=e.length;a-1?e.split(` +`):e}function m_(e,t){let{element:n,datasetIndex:r,index:i}=t,a=e.getDatasetMeta(r).controller,{label:o,value:s}=a.getLabelAndValue(i);return{chart:e,label:o,parsed:a.getParsed(i),raw:e.data.datasets[r].data[i],formattedValue:s,dataset:a.getDataset(),dataIndex:i,datasetIndex:r,element:n}}function h_(e,t){let n=e.chart.ctx,{body:r,footer:i,title:a}=e,{boxWidth:o,boxHeight:s}=t,c=ed(t.bodyFont),l=ed(t.titleFont),u=ed(t.footerFont),d=a.length,f=i.length,p=r.length,m=$u(t.padding),h=m.height,g=0,_=r.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,d&&(h+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),_){let e=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;h+=p*e+(_-p)*c.lineHeight+(_-1)*t.bodySpacing}f&&(h+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let v=0,y=function(e){g=Math.max(g,n.measureText(e).width+v)};return n.save(),n.font=l.string,$c(e.title,y),n.font=c.string,$c(e.beforeBody.concat(e.afterBody),y),v=t.displayColors?o+2+t.boxPadding:0,$c(r,e=>{$c(e.before,y),$c(e.lines,y),$c(e.after,y)}),v=0,n.font=u.string,$c(e.footer,y),n.restore(),g+=m.width,{width:g,height:h}}function g_(e,t){let{y:n,height:r}=t;return ne.height-r/2?`bottom`:`center`}function __(e,t,n,r){let{x:i,width:a}=r,o=n.caretSize+n.caretPadding;if(e===`left`&&i+a+o>t.width||e===`right`&&i-a-o<0)return!0}function v_(e,t,n,r){let{x:i,width:a}=n,{width:o,chartArea:{left:s,right:c}}=e,l=`center`;return r===`center`?l=i<=(s+c)/2?`left`:`right`:i<=a/2?l=`left`:i>=o-a/2&&(l=`right`),__(l,e,t,n)&&(l=`center`),l}function y_(e,t,n){let r=n.yAlign||t.yAlign||g_(e,n);return{xAlign:n.xAlign||t.xAlign||v_(e,t,n,r),yAlign:r}}function b_(e,t){let{x:n,width:r}=e;return t===`right`?n-=r:t===`center`&&(n-=r/2),n}function x_(e,t,n){let{y:r,height:i}=e;return t===`top`?r+=n:t===`bottom`?r-=i+n:r-=i/2,r}function S_(e,t,n,r){let{caretSize:i,caretPadding:a,cornerRadius:o}=e,{xAlign:s,yAlign:c}=n,l=i+a,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:p}=Qu(o),m=b_(t,s),h=x_(t,c,l);return c===`center`?s===`left`?m+=l:s===`right`&&(m-=l):s===`left`?m-=Math.max(u,f)+i:s===`right`&&(m+=Math.max(d,p)+i),{x:Vl(m,0,r.width-t.width),y:Vl(h,0,r.height-t.height)}}function C_(e,t,n){let r=$u(n.padding);return t===`center`?e.x+e.width/2:t===`right`?e.x+e.width-r.right:e.x+r.left}function w_(e){return f_([],p_(e))}function T_(e,t,n){return rd(e,{tooltip:t,tooltipItems:n,type:`tooltip`})}function E_(e,t){let n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}var D_={beforeTitle:Hc,title(e){if(e.length>0){let t=e[0],n=t.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode===`dataset`)return t.dataset.label||``;if(t.label)return t.label;if(r>0&&t.dataIndex{let t={before:[],lines:[],after:[]},i=E_(n,e);f_(t.before,p_(O_(i,`beforeLabel`,this,e))),f_(t.lines,O_(i,`label`,this,e)),f_(t.after,p_(O_(i,`afterLabel`,this,e))),r.push(t)}),r}getAfterBody(e,t){return w_(O_(t.callbacks,`afterBody`,this,e))}getFooter(e,t){let{callbacks:n}=t,r=O_(n,`beforeFooter`,this,e),i=O_(n,`footer`,this,e),a=O_(n,`afterFooter`,this,e),o=[];return o=f_(o,p_(r)),o=f_(o,p_(i)),o=f_(o,p_(a)),o}_createItems(e){let t=this._active,n=this.chart.data,r=[],i=[],a=[],o=[],s,c;for(s=0,c=t.length;se.filter(t,r,i,n))),e.itemSort&&(o=o.sort((t,r)=>e.itemSort(t,r,n))),$c(o,t=>{let n=E_(e.callbacks,t);r.push(O_(n,`labelColor`,this,t)),i.push(O_(n,`labelPointStyle`,this,t)),a.push(O_(n,`labelTextColor`,this,t))}),this.labelColors=r,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=o,o}update(e,t){let n=this.options.setContext(this.getContext()),r=this._active,i,a=[];if(!r.length)this.opacity!==0&&(i={opacity:0});else{let e=d_[n.position].call(this,r,this._eventPosition);a=this._createItems(n),this.title=this.getTitle(a,n),this.beforeBody=this.getBeforeBody(a,n),this.body=this.getBody(a,n),this.afterBody=this.getAfterBody(a,n),this.footer=this.getFooter(a,n);let t=this._size=h_(this,n),o=Object.assign({},e,t),s=y_(this.chart,n,o),c=S_(n,o,s,this.chart);this.xAlign=s.xAlign,this.yAlign=s.yAlign,i={opacity:1,x:c.x,y:c.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,r){let i=this.getCaretPosition(e,n,r);t.lineTo(i.x1,i.y1),t.lineTo(i.x2,i.y2),t.lineTo(i.x3,i.y3)}getCaretPosition(e,t,n){let{xAlign:r,yAlign:i}=this,{caretSize:a,cornerRadius:o}=n,{topLeft:s,topRight:c,bottomLeft:l,bottomRight:u}=Qu(o),{x:d,y:f}=e,{width:p,height:m}=t,h,g,_,v,y,b;return i===`center`?(y=f+m/2,r===`left`?(h=d,g=h-a,v=y+a,b=y-a):(h=d+p,g=h+a,v=y-a,b=y+a),_=h):(g=r===`left`?d+Math.max(s,l)+a:r===`right`?d+p-Math.max(c,u)-a:this.caretX,i===`top`?(v=f,y=v-a,h=g-a,_=g+a):(v=f+m,y=v+a,h=g+a,_=g-a),b=v),{x1:h,x2:g,x3:_,y1:v,y2:y,y3:b}}drawTitle(e,t,n){let r=this.title,i=r.length,a,o,s;if(i){let c=tf(n.rtl,this.x,this.width);for(e.x=C_(this,n.titleAlign,n),t.textAlign=c.textAlign(n.titleAlign),t.textBaseline=`middle`,a=ed(n.titleFont),o=n.titleSpacing,t.fillStyle=n.titleColor,t.font=a.string,s=0;se!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,Gu(e,{x:t,y:p,w:c,h:s,radius:o}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),Gu(e,{x:n,y:p+1,w:c-2,h:s-2,radius:o}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(t,p,c,s),e.strokeRect(t,p,c,s),e.fillStyle=a.backgroundColor,e.fillRect(n,p+1,c-2,s-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){let{body:r}=this,{bodySpacing:i,bodyAlign:a,displayColors:o,boxHeight:s,boxWidth:c,boxPadding:l}=n,u=ed(n.bodyFont),d=u.lineHeight,f=0,p=tf(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+f),e.y+d/2),e.y+=d+i},h=p.textAlign(a),g,_,v,y,b,x,S;for(t.textAlign=a,t.textBaseline=`middle`,t.font=u.string,e.x=C_(this,h,n),t.fillStyle=n.bodyColor,$c(this.beforeBody,m),f=o&&h!==`right`?a===`center`?c/2+l:c+2+l:0,y=0,x=r.length;y0&&t.stroke()}_updateAnimationTarget(e){let t=this.chart,n=this.$animations,r=n&&n.x,i=n&&n.y;if(r||i){let n=d_[e.position].call(this,this._active,this._eventPosition);if(!n)return;let a=this._size=h_(this,e),o=Object.assign({},n,this._size),s=y_(t,e,o),c=S_(e,o,s,t);(r._to!==c.x||i._to!==c.y)&&(this.xAlign=s.xAlign,this.yAlign=s.yAlign,this.width=a.width,this.height=a.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){let t=this.options.setContext(this.getContext()),n=this.opacity;if(!n)return;this._updateAnimationTarget(t);let r={width:this.width,height:this.height},i={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;let a=$u(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=n,this.drawBackground(i,e,r,t),nf(e,t.textDirection),i.y+=a.top,this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),rf(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){let n=this._active,r=e.map(({datasetIndex:e,index:t})=>{let n=this.chart.getDatasetMeta(e);if(!n)throw Error(`Cannot find a dataset at index `+e);return{datasetIndex:e,element:n.data[t],index:t}}),i=!el(n,r),a=this._positionChanged(r,t);(i||a)&&(this._active=r,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,i=this._active||[],a=this._getActiveElements(e,i,t,n),o=this._positionChanged(a,e),s=t||!el(a,i)||o;return s&&(this._active=a,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),s}_getActiveElements(e,t,n,r){let i=this.options;if(e.type===`mouseout`)return[];if(!r)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index)!==void 0);let a=this.chart.getElementsAtEventForMode(e,i.mode,i,n);return i.reverse&&a.reverse(),a}_positionChanged(e,t){let{caretX:n,caretY:r,options:i}=this,a=d_[i.position].call(this,e,t);return a!==!1&&(n!==a.x||r!==a.y)}},A_=Object.freeze({__proto__:null,Colors:pg,Decimation:yg,Filler:Xg,Legend:a_,SubTitle:u_,Title:c_,Tooltip:{id:`tooltip`,_element:k_,positioners:d_,afterInit(e,t,n){n&&(e.tooltip=new k_({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){let t=e.tooltip;if(t&&t._willRender()){let n={tooltip:t};if(e.notifyPlugins(`beforeTooltipDraw`,{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins(`afterTooltipDraw`,n)}},afterEvent(e,t){if(e.tooltip){let n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:`average`,backgroundColor:`rgba(0,0,0,0.8)`,titleColor:`#fff`,titleFont:{weight:`bold`},titleSpacing:2,titleMarginBottom:6,titleAlign:`left`,bodyColor:`#fff`,bodySpacing:2,bodyFont:{},bodyAlign:`left`,footerColor:`#fff`,footerSpacing:2,footerMarginTop:6,footerFont:{weight:`bold`},footerAlign:`left`,padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:`#fff`,displayColors:!0,boxPadding:0,borderColor:`rgba(0,0,0,0)`,borderWidth:0,animation:{duration:400,easing:`easeOutQuart`},animations:{numbers:{type:`number`,properties:[`x`,`y`,`width`,`height`,`caretX`,`caretY`]},opacity:{easing:`linear`,duration:200}},callbacks:D_},defaultRoutes:{bodyFont:`font`,footerFont:`font`,titleFont:`font`},descriptors:{_scriptable:e=>e!==`filter`&&e!==`itemSort`&&e!==`external`,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:`animation`}},additionalOptionScopes:[`interaction`]}}),j_=(e,t,n,r)=>(typeof t==`string`?(n=e.push(t)-1,r.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function M_(e,t,n,r){let i=e.indexOf(t);return i===-1?j_(e,t,n,r):i===e.lastIndexOf(t)?i:n}var N_=(e,t)=>e===null?null:Vl(Math.round(e),0,t);function P_(e){let t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}};function I_(e,t){let n=[],{bounds:r,step:i,min:a,max:o,precision:s,count:c,maxTicks:l,maxDigits:u,includeBounds:d}=e,f=i||1,p=l-1,{min:m,max:h}=t,g=!Wc(a),_=!Wc(o),v=!Wc(c),y=(h-m)/(u+1),b=Dl((h-m)/p/f)*f,x,S,C,w;if(b<1e-14&&!g&&!_)return[{value:m},{value:h}];w=Math.ceil(h/b)-Math.floor(m/b),w>p&&(b=Dl(w*b/p/f)*f),Wc(s)||(x=10**s,b=Math.ceil(b*x)/x),r===`ticks`?(S=Math.floor(m/b)*b,C=Math.ceil(h/b)*b):(S=m,C=h),g&&_&&i&&jl((o-a)/i,b/1e3)?(w=Math.round(Math.min((o-a)/b,l)),b=(o-a)/w,S=a,C=o):v?(S=g?a:S,C=_?o:C,w=c-1,b=(C-S)/w):(w=(C-S)/b,w=El(w,Math.round(w),b/1e3)?Math.round(w):Math.ceil(w));let ee=Math.max(Fl(b),Fl(S));x=10**(Wc(s)?ee:s),S=Math.round(S*x)/x,C=Math.round(C*x)/x;let te=0;for(g&&(d&&S!==a?(n.push({value:a}),So)break;n.push({value:e})}return _&&d&&C!==o?n.length&&El(n[n.length-1].value,o,L_(o,y,e))?n[n.length-1].value=o:n.push({value:o}):(!_||C===o)&&n.push({value:C}),n}function L_(e,t,{horizontal:n,minRotation:r}){let i=Nl(r),a=(n?Math.sin(i):Math.cos(i))||.001,o=.75*t*(``+e).length;return Math.min(t/a,o)}var R_=class extends Mm{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return Wc(e)||(typeof e==`number`||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){let{beginAtZero:e}=this.options,{minDefined:t,maxDefined:n}=this.getUserBounds(),{min:r,max:i}=this,a=e=>r=t?r:e,o=e=>i=n?i:e;if(e){let e=Tl(r),t=Tl(i);e<0&&t<0?o(0):e>0&&t>0&&a(0)}if(r===i){let t=i===0?1:Math.abs(i*.05);o(i+t),e||a(r-t)}this.min=r,this.max=i}getTickLimit(){let{maxTicksLimit:e,stepSize:t}=this.options.ticks,n;return t?(n=Math.ceil(this.max/t)-Math.floor(this.min/t)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${t} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e||=11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return 1/0}buildTicks(){let e=this.options,t=e.ticks,n=this.getTickLimit();n=Math.max(2,n);let r=I_({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:t.includeBounds!==!1},this._range||this);return e.bounds===`ticks`&&Ml(r,this,`value`),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){let e=this.ticks,t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){let r=(n-t)/Math.max(e.length-1,1)/2;t-=r,n+=r}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return yu(e,this.chart.options.locale,this.options.ticks.format)}},z_=class extends R_{static id=`linear`;static defaults={ticks:{callback:Su.formatters.numeric}};determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=qc(e)?e:0,this.max=qc(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){let e=this.isHorizontal(),t=e?this.width:this.height,n=Nl(this.options.ticks.minRotation),r=(e?Math.sin(n):Math.cos(n))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,i.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}},B_=e=>Math.floor(wl(e)),V_=(e,t)=>10**(B_(e)+t);function H_(e){return e/10**B_(e)==1}function U_(e,t,n){let r=10**n,i=Math.floor(e/r);return Math.ceil(t/r)-i}function W_(e,t){let n=B_(t-e);for(;U_(e,t,n)>10;)n++;for(;U_(e,t,n)<10;)n--;return Math.min(n,B_(e))}function G_(e,{min:t,max:n}){t=Jc(e.min,t);let r=[],i=B_(t),a=W_(t,n),o=a<0?10**Math.abs(a):1,s=10**a,c=i>a?10**i:0,l=Math.round((t-c)*o)/o,u=Math.floor((t-c)/s/10)*s*10,d=Math.floor((l-u)/10**a),f=Jc(e.min,Math.round((c+u+d*10**a)*o)/o);for(;f=10?d=d<15?15:20:d++,d>=20&&(a++,d=2,o=a>=0?1:o),f=Math.round((c+u+d*10**a)*o)/o;let p=Jc(e.max,f);return r.push({value:p,major:H_(p),significand:d}),r}var K_=class extends Mm{static id=`logarithmic`;static defaults={ticks:{callback:Su.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){let n=R_.prototype.parse.apply(this,[e,t]);if(n===0){this._zero=!0;return}return qc(n)&&n>0?n:null}determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=qc(e)?Math.max(0,e):null,this.max=qc(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!qc(this._userMin)&&(this.min=e===V_(this.min,0)?V_(this.min,-1):V_(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:e,maxDefined:t}=this.getUserBounds(),n=this.min,r=this.max,i=t=>n=e?n:t,a=e=>r=t?r:e;n===r&&(n<=0?(i(1),a(10)):(i(V_(n,-1)),a(V_(r,1)))),n<=0&&i(V_(r,-1)),r<=0&&a(V_(n,1)),this.min=n,this.max=r}buildTicks(){let e=this.options,t=G_({min:this._userMin,max:this._userMax},this);return e.bounds===`ticks`&&Ml(t,this,`value`),e.reverse?(t.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),t}getLabelForValue(e){return e===void 0?`0`:yu(e,this.chart.options.locale,this.options.ticks.format)}configure(){let e=this.min;super.configure(),this._startValue=wl(e),this._valueRange=wl(this.max)-wl(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(wl(e)-this._startValue)/this._valueRange)}getValueForPixel(e){let t=this.getDecimalForPixel(e);return 10**(this._startValue+t*this._valueRange)}};function q_(e){let t=e.ticks;if(t.display&&e.display){let e=$u(t.backdropPadding);return Yc(t.font&&t.font.size,Ou.font.size)+e.height}return 0}function J_(e,t,n){return n=Gc(n)?n:[n],{w:ju(e,t.string,n),h:n.length*t.lineHeight}}function Y_(e,t,n,r,i){return e===r||e===i?{start:t-n/2,end:t+n/2}:ei?{start:t-n,end:t}:{start:t,end:t+n}}function X_(e){let t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),r=[],i=[],a=e._pointLabels.length,o=e.options.pointLabels,s=o.centerPointLabels?gl/a:0;for(let c=0;ct.r&&(s=(r.end-t.r)/a,e.r=Math.max(e.r,t.r+s)),i.startt.b&&(c=(i.end-t.b)/o,e.b=Math.max(e.b,t.b+c))}function Q_(e,t,n){let r=e.drawingArea,{extra:i,additionalAngle:a,padding:o,size:s}=n,c=e.getPointPosition(t,r+i+o,a),l=Math.round(Pl(zl(c.angle+xl))),u=rv(c.y,s.h,l),d=tv(l),f=nv(c.x,s.w,d);return{visible:!0,x:c.x,y:u,textAlign:d,left:f,top:u,right:f+s.w,bottom:u+s.h}}function $_(e,t){if(!t)return!0;let{left:n,top:r,right:i,bottom:a}=e;return!(Iu({x:n,y:r},t)||Iu({x:n,y:a},t)||Iu({x:i,y:r},t)||Iu({x:i,y:a},t))}function ev(e,t,n){let r=[],i=e._pointLabels.length,a=e.options,{centerPointLabels:o,display:s}=a.pointLabels,c={extra:q_(a)/2,additionalAngle:o?gl/i:0},l;for(let a=0;a270||n<90)&&(e-=t),e}function iv(e,t,n){let{left:r,top:i,right:a,bottom:o}=n,{backdropColor:s}=t;if(!Wc(s)){let n=Qu(t.borderRadius),c=$u(t.backdropPadding);e.fillStyle=s;let l=r-c.left,u=i-c.top,d=a-r+c.width,f=o-i+c.height;Object.values(n).some(e=>e!==0)?(e.beginPath(),Gu(e,{x:l,y:u,w:d,h:f,radius:n}),e.fill()):e.fillRect(l,u,d,f)}}function av(e,t){let{ctx:n,options:{pointLabels:r}}=e;for(let i=t-1;i>=0;i--){let t=e._pointLabelItems[i];if(!t.visible)continue;let a=r.setContext(e.getPointLabelContext(i));iv(n,a,t);let o=ed(a.font),{x:s,y:c,textAlign:l}=t;Wu(n,e._pointLabels[i],s,c+o.lineHeight/2,o,{color:a.color,textAlign:l,textBaseline:`middle`})}}function ov(e,t,n,r){let{ctx:i}=e;if(n)i.arc(e.xCenter,e.yCenter,t,0,_l);else{let n=e.getPointPosition(0,t);i.moveTo(n.x,n.y);for(let a=1;a{let n=Qc(this.options.pointLabels.callback,[e,t],this);return n||n===0?n:``}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){let e=this.options;e.display&&e.pointLabels.display?X_(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,r){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,r))}getIndexAngle(e){let t=_l/(this._pointLabels.length||1),n=this.options.startAngle||0;return zl(e*t+Nl(n))}getDistanceFromCenterForValue(e){if(Wc(e))return NaN;let t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(Wc(e))return NaN;let t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){let t=this._pointLabels||[];if(e>=0&&e{if(t!==0||t===0&&this.min<0){s=this.getDistanceFromCenterForValue(e.value);let n=this.getContext(t),o=r.setContext(n),c=i.setContext(n);sv(this,o,s,a,c)}}),n.display){for(e.save(),o=a-1;o>=0;o--){let r=n.setContext(this.getPointLabelContext(o)),{color:i,lineWidth:a}=r;!a||!i||(e.lineWidth=a,e.strokeStyle=i,e.setLineDash(r.borderDash),e.lineDashOffset=r.borderDashOffset,s=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),c=this.getPointPosition(o,s),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){let e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;let r=this.getIndexAngle(0),i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign=`center`,e.textBaseline=`middle`,this.ticks.forEach((r,o)=>{if(o===0&&this.min>=0&&!t.reverse)return;let s=n.setContext(this.getContext(o)),c=ed(s.font);if(i=this.getDistanceFromCenterForValue(this.ticks[o].value),s.showLabelBackdrop){e.font=c.string,a=e.measureText(r.label).width,e.fillStyle=s.backdropColor;let t=$u(s.backdropPadding);e.fillRect(-a/2-t.left,-i-c.size/2-t.top,a+t.width,c.size+t.height)}Wu(e,r.label,0,-i,c,{color:s.color,strokeColor:s.textStrokeColor,strokeWidth:s.textStrokeWidth})}),e.restore()}drawTitle(){}},uv={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},dv=Object.keys(uv);function fv(e,t){return e-t}function pv(e,t){if(Wc(t))return null;let n=e._adapter,{parser:r,round:i,isoWeekday:a}=e._parseOpts,o=t;return typeof r==`function`&&(o=r(o)),qc(o)||(o=typeof r==`string`?n.parse(o,r):n.parse(o)),o===null?null:(i&&(o=i===`week`&&(Al(a)||a===!0)?n.startOf(o,`isoWeek`,a):n.startOf(o,i)),+o)}function mv(e,t,n,r){let i=dv.length;for(let a=dv.indexOf(e);a=dv.indexOf(n);a--){let n=dv[a];if(uv[n].common&&e._adapter.diff(i,r,n)>=t-1)return n}return dv[n?dv.indexOf(n):0]}function gv(e){for(let t=dv.indexOf(e)+1,n=dv.length;t=t?n[r]:n[i];e[a]=!0}}function vv(e,t,n,r){let i=e._adapter,a=+i.startOf(t[0].value,r),o=t[t.length-1].value,s,c;for(s=a;s<=o;s=+i.add(s,1,r))c=n[s],c>=0&&(t[c].major=!0);return t}function yv(e,t,n){let r=[],i={},a=t.length,o,s;for(o=0;o+e.value))}initOffsets(e=[]){let t=0,n=0,r,i;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),t=e.length===1?1-r:(this.getDecimalForValue(e[1])-r)/2,i=this.getDecimalForValue(e[e.length-1]),n=e.length===1?i:(i-this.getDecimalForValue(e[e.length-2]))/2);let a=e.length<3?.5:.25;t=Vl(t,0,a),n=Vl(n,0,a),this._offsets={start:t,end:n,factor:1/(t+1+n)}}_generate(){let e=this._adapter,t=this.min,n=this.max,r=this.options,i=r.time,a=i.unit||mv(i.minUnit,t,n,this._getLabelCapacity(t)),o=Yc(r.ticks.stepSize,1),s=a===`week`&&i.isoWeekday,c=Al(s)||s===!0,l={},u=t,d,f;if(c&&(u=+e.startOf(u,`isoWeek`,s)),u=+e.startOf(u,c?`day`:a),e.diff(n,t,a)>1e5*o)throw Error(t+` and `+n+` are too far apart with stepSize of `+o+` `+a);let p=r.ticks.source===`data`&&this.getDataTimestamps();for(d=u,f=0;d+e)}getLabelForValue(e){let t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}format(e,t){let n=this.options.time.displayFormats,r=this._unit,i=t||n[r];return this._adapter.format(e,i)}_tickFormatFunction(e,t,n,r){let i=this.options,a=i.ticks.callback;if(a)return Qc(a,[e,t,n],this);let o=i.time.displayFormats,s=this._unit,c=this._majorUnit,l=s&&o[s],u=c&&o[c],d=n[t],f=c&&u&&d&&d.major;return this._adapter.format(e,r||(f?u:l))}generateTickLabels(e){let t,n,r;for(t=0,n=e.length;t0?o:1}getDataTimestamps(){let e=this._cache.data||[],t,n;if(e.length)return e;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(t=0,n=r.length;t=e[r].pos&&t<=e[i].pos&&({lo:r,hi:i}=Gl(e,`pos`,t)),{pos:a,time:s}=e[r],{pos:o,time:c}=e[i]):(t>=e[r].time&&t<=e[i].time&&({lo:r,hi:i}=Gl(e,`time`,t)),{time:a,pos:s}=e[r],{time:o,pos:c}=e[i]);let l=o-a;return l?s+(c-s)*(t-a)/l:s}var Sv=class extends bv{static id=`timeseries`;static defaults=bv.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=xv(t,this.min),this._tableRange=xv(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){let{min:t,max:n}=this,r=[],i=[],a,o,s,c,l;for(a=0,o=e.length;a=t&&c<=n&&r.push(c);if(r.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(a=0,o=r.length;ae-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;let t=this.getDataTimestamps(),n=this.getLabelTimestamps();return e=t.length&&n.length?this.normalize(t.concat(n)):t.length?t:n,e=this._cache.all=e,e}getDecimalForValue(e){return(xv(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){let t=this._offsets,n=this.getDecimalForPixel(e)/t.factor-t.end;return xv(this._table,n*this._tableRange+this._minPos,!0)}},Cv=[mp,tg,A_,Object.freeze({__proto__:null,CategoryScale:F_,LinearScale:z_,LogarithmicScale:K_,RadialLinearScale:lv,TimeScale:bv,TimeSeriesScale:Sv})];bh.register(...Cv);var wv=bh,Tv=R(``);function Ev(e,t){E(t,!0);let n=G(t,`class`,3,``),r=G(t,`ariaLabel`,3,``);function i(e){if(Da.tick,typeof t.build!=`function`)return;let n=t.build();if(!n)return;let r=new wv(e.getContext(`2d`),n);return()=>r.destroy()}var a=Tv();Mi(a,()=>i),F(()=>{U(a,1,Fi(n())),W(a,`aria-label`,r())}),z(e,a),D()}var Dv=R(``),Ov=R(`
`);function kv(e,t){E(t,!0);let n=G(t,`options`,19,()=>[]),r=G(t,`ariaLabel`,3,``),i=G(t,`class`,3,``);var a=Ov();H(a,21,n,e=>e.value,(e,n)=>{var r=Dv();let i;var a=M(r,!0);T(r),F(()=>{i=U(r,1,`segmented-btn svelte-92fh5i`,null,i,{active:t.value===I(n).value}),W(r,`aria-pressed`,t.value===I(n).value),B(a,I(n).label)}),L(`click`,r,()=>t.onchange?.(I(n).value)),z(e,r)}),T(a),F(()=>{U(a,1,Fi([`segmented-control`,i()]),`svelte-92fh5i`),W(a,`aria-label`,r())}),z(e,a),D()}Hr([`click`]);function Av(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function jv(){return{grid:Av(`--chart-grid`),text:Av(`--chart-text`),dayMarker:Av(`--chart-day-marker`),tooltipBg:Av(`--chart-tooltip-bg`),tooltipBorder:Av(`--chart-tooltip-border`),tooltipText:Av(`--chart-tooltip-text`)}}function Mv(){return{size:11,family:`'SF Mono', Menlo, Consolas, monospace`}}function Nv(e,t){return{backgroundColor:e.tooltipBg,borderColor:e.tooltipBorder,borderWidth:1,titleColor:e.tooltipText,bodyColor:e.tooltipText,callbacks:t}}function Pv(e){if(typeof document>`u`||!document.body)return e;let t=document.createElement(`span`);t.style.display=`none`,t.style.color=e,document.body.appendChild(t);let n=getComputedStyle(t).color;return document.body.removeChild(t),n||e}var Fv=[`#c2845a`,`#7a9e7e`,`#d4a574`,`#b8a98e`,`#8b9e6b`,`#7d8a97`,`#c47a5a`,`#6b8e6b`,`#a09486`,`#9b7ea4`,`#c49a6c`];function Iv(){return[...Fv]}function Lv(e){let t=5381,n=String(e||``);for(let e=0;eas(e)}}var Uv={seconds:{apiName:`second`,windowLabel:`Last 60 seconds`,refreshMs:2e3},minutes:{apiName:`minute`,windowLabel:`Last 60 minutes`,refreshMs:5e3},hours:{apiName:`hour`,windowLabel:`Last 24 hours`,refreshMs:2e4},days:{apiName:`day`,windowLabel:`Last 30 days`,refreshMs:6e4}},Wv=[{value:`seconds`,label:`Seconds`},{value:`minutes`,label:`Minutes`},{value:`hours`,label:`Hours`},{value:`days`,label:`Days`}];function Gv(){return{input:0,output:0,prompt:0,local:0}}function Kv(e){return String(e).padStart(2,`0`)}function qv(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function Jv(e,t){if(!Number.isFinite(t))return``;let n=new Date(t);switch(e){case`seconds`:return Kv(n.getHours())+`:`+Kv(n.getMinutes())+`:`+Kv(n.getSeconds());case`minutes`:return Kv(n.getHours())+`:`+Kv(n.getMinutes());case`hours`:return Kv(n.getHours())+`:00`;default:return Kv(n.getMonth()+1)+`-`+Kv(n.getDate())}}function Yv(e,t){let n=[],r=[],i={input:[],output:[],prompt:[],local:[]},a=Gv();for(let o of e||[]){let e=Date.parse(o&&o.start),s=qv(o&&o.input_tokens),c=qv(o&&o.output_tokens),l=qv(o&&o.prompt_cached_tokens),u=qv(o&&o.locally_cached_tokens);n.push(Jv(t,e)),r.push(Number.isFinite(e)?e:null),i.input.push(s),i.output.push(c),i.prompt.push(l),i.local.push(u),a.input+=s,a.output+=c,a.prompt+=l,a.local+=u}return{labels:n,stamps:r,cols:i,totals:a}}function Xv(e){let t=e||Gv();return t.input+t.output+t.prompt+t.local>0}function Zv(e,t){return as(Math.max(0,Math.round(e&&e[t]||0)))}function Qv(e){return(Uv[e]||Uv.minutes).windowLabel}function $v(e,t){return`Live token throughput, `+Qv(t).toLowerCase()+`. Input `+Zv(e,`input`)+`, output `+Zv(e,`output`)+`, prompt cached `+Zv(e,`prompt`)+`, locally cached `+Zv(e,`local`)+` tokens.`}function ey(e,t,n,r){let i=e=>as(Math.max(0,Math.round(e))),a=n.stamps,o=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderWidth:0,borderRadius:0,categoryPercentage:1,barPercentage:1,stack:`tokens`});return{type:`bar`,plugins:[{id:`liveTokensDayMarks`,afterDatasetsDraw:t=>{if(r===`days`)return;let n=t.getDatasetMeta(0),i=t.chartArea;if(!n||!n.data||!i)return;let o=t.ctx;o.save(),o.font=`10px 'SF Mono', Menlo, Consolas, monospace`;let s=null;for(let t=0;t{if(!e.length)return``;let t=a[e[0].dataIndex];if(!t)return e[0].label;let n=new Date(t);return r===`days`?n.toLocaleDateString():n.toLocaleString()},label:e=>e.dataset.label+`: `+i(e.parsed.y),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+i(t)}})}}}}var ty=900,ny=new class{#e=k(`minutes`);get granularity(){return I(this.#e)}set granularity(e){A(this.#e,e,!0)}#t=k(j([]));get buckets(){return I(this.#t)}set buckets(e){A(this.#t,e,!0)}#n=k(!1);get active(){return I(this.#n)}set active(e){A(this.#n,e,!0)}#r=null;#i=null;#a=null;#o=0;#s=null;#c=!1;start(){this.stop(),this.active=!0,this.fetch(),this.#l(),this.#u()}stop(){this.active=!1,this.#r&&=(clearInterval(this.#r),null),this.#i&&=(clearTimeout(this.#i),null),this.#a&&=(clearTimeout(this.#a),null),this.#o=0,this.#s&&=(this.#s.abort(),null),this.buckets=[]}setGranularity(e){!Uv[e]||e===this.granularity||(this.granularity=e,this.buckets=[],this.#l(),this.fetch())}#l(){this.#r&&=(clearInterval(this.#r),null);let e=Uv[this.granularity]||Uv.minutes;this.#r=setInterval(()=>{this.active&&this.fetch()},e.refreshMs)}noteUsageEvent(e){!this.active||e!==`usage.flushed`||(this.#i||=setTimeout(()=>{this.#i=null,this.fetch()},ty))}async fetch(){if(!this.active||this.#c)return;this.#c=!0;let e=this.granularity;try{let t=await uo(`/admin/usage/throughput?granularity=`+(Uv[e]||Uv.minutes).apiName,{label:`token throughput`});if(t.stale||!t.ok||this.granularity!==e)return;this.buckets=t.data&&Array.isArray(t.data.buckets)?t.data.buckets:[]}catch(e){if(po(e))return;console.error(`Failed to fetch token throughput:`,e)}finally{this.#c=!1,this.active&&this.granularity!==e&&this.fetch()}}async#u(){await go.ensureLoaded(),this.active&&go.liveLogsVisible()&&(typeof ReadableStream>`u`||(this.#s&&this.#s.abort(),this.#s=new AbortController,this.#d(this.#s)))}async#d(e){try{let t=await co(`/admin/live/logs?types=usage`,{signal:e.signal});if(!t.ok||!t.body||typeof t.body.getReader!=`function`){this.#p();return}this.#o=0,await zv(t.body.getReader(),e=>this.#f(e)),this.#p()}catch(e){if(po(e))return;console.error(`Live usage stream failed:`,e),this.#p()}}#f(e){if(!e||typeof e!=`object`)return;let t=String(e.type||``).trim();t.indexOf(`usage.`)===0&&this.noteUsageEvent(t)}#p(){if(!this.active||this.#a)return;let{attempt:e,delay:t}=Vv(this.#o);this.#o=e,this.#a=setTimeout(()=>{this.#a=null,this.#u()},t)}},ry=R(`
`),iy=R(`
Waiting for live requests…
`),ay=R(`

Live Token Throughput

`);function oy(e,t){E(t,!0);let n=O(()=>Yv(ny.buckets,ny.granularity)),r=O(()=>I(n).totals);function i(){return{input:Pv(`var(--token-input)`),output:Pv(`var(--token-output)`),prompt:Pv(`var(--token-prompt)`),local:Pv(`var(--token-local)`)}}let a=[{metric:`input`,label:`Input Tokens`,colorVar:`--token-input`},{metric:`output`,label:`Output Tokens`,colorVar:`--token-output`},{metric:`prompt`,label:`Prompt (Input) Cached`,colorVar:`--token-prompt`},{metric:`local`,label:`Locally Cached`,colorVar:`--token-local`}];var o=ay(),s=M(o),c=M(s),l=P(M(c),2),u=M(l);let d;var f=P(u,2),p=M(f,!0);T(f),T(l),T(c),kv(P(c,2),{ariaLabel:`Live token throughput granularity`,get options(){return Wv},get value(){return ny.granularity},onchange:e=>ny.setGranularity(e)}),T(s);var m=P(s,2);H(m,21,()=>a,e=>e.metric,(e,t)=>{var n=ry(),i=M(n),a=P(i,2),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(n),F(e=>{Hi(i,`background: var(${I(t).colorVar??``})`),B(o,I(t).label),B(c,e)},[()=>Zv(I(r),I(t).metric)]),z(e,n)}),T(m);var h=P(m,2),g=M(h);{let e=O(()=>$v(I(r),ny.granularity));Ev(g,{get ariaLabel(){return I(e)},build:()=>ey(jv(),i(),I(n),ny.granularity)})}var _=P(g,2),v=e=>{z(e,iy())},y=O(()=>!Xv(I(r)));V(_,e=>{I(y)&&e(v)}),T(h),T(o),F(e=>{d=U(u,1,`live-dot`,null,d,{"is-streaming":ny.active}),B(p,e)},[()=>Qv(ny.granularity)]),z(e,o),D()}function sy(e){let t=e||{};if(t.total_tokens!==null&&t.total_tokens!==void 0){let e=Number(t.total_tokens);if(Number.isFinite(e))return e}let n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function cy(e,t){if(!t)return 0;let n=e&&e.summary?e.summary:{},r=Number(n.total_hits||0);return Number.isFinite(r)&&r>0?r:0}function ly(e,t,n){let r=Number(e&&e.total_requests||0);return(Number.isFinite(r)?r:0)+cy(t,n)}function uy(e,t,n){let r=cy(t,n);return r<=0?``:ts(ly(e,t,n)-r)+` to providers + `+ts(r)+` from cache`}function dy(e){let t=e&&e.summary?e.summary:{},n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function fy(e,t,n){let r=e=>{let t=Number(e||0);return Number.isFinite(t)&&t>0?t:0},i=e||{},a=r(i.uncached_input_tokens),o=r(i.cached_input_tokens),s=r(i.cache_write_input_tokens),c=t&&t.summary?t.summary:{},l=n?r(c.total_input_tokens):0;return[{key:`uncached`,label:`Regular`,tokens:a+s,colorVar:`--cache-meter-uncached`,note:s>0?`Includes `+ts(s)+` cache-write tokens`:``},{key:`prompt`,label:`Prompt cached`,tokens:o,colorVar:`--cache-meter-prompt`,note:`Provider prompt-cache reads`},{key:`local`,label:`Locally cached`,tokens:l,colorVar:`--cache-meter-local`,note:`Served from GoModel response cache`}]}function py(e,t,n){return fy(e,t,n).reduce((e,t)=>e+t.tokens,0)}function my(e,t,n){return py(e,t,n)>0}function hy(e,t,n){let r=fy(e,t,n),i=r.reduce((e,t)=>e+t.tokens,0);if(i<=0)return r.map(e=>Object.assign({},e,{pct:0}));let a=r.map(e=>{let t=e.tokens/i*100,n=Math.floor(t);return Object.assign({},e,{pct:n,remainder:t-n})}),o=100-a.reduce((e,t)=>e+t.pct,0);return a.map((e,t)=>({index:t,remainder:e.remainder,tokens:e.tokens})).filter(e=>e.tokens>0).sort((e,t)=>t.remainder-e.remainder).forEach(e=>{o>0&&(a[e.index].pct+=1,--o)}),a}function gy(e,t,n){return hy(e,t,n).filter(e=>e.tokens>0)}function _y(e){let t=[e.label+`: `+ts(e.tokens)+` input tokens (`+e.pct+`%)`];return e.note&&t.push(e.note),t.join(` +`)}function vy(e){let t=(e||[]).map(e=>e.label+` `+e.pct+`%`);return`Cache breakdown of input tokens — `+(t.length?t.join(`, `):`no data`)}function yy(e){return e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`)}function by(e,t,n,r){if(t!==`daily`||!n||!r)return e;let i={};(e||[]).forEach(e=>{i[e.date]=e});let a=[];for(let e=new Date(n);e<=r;e.setUTCDate(e.getUTCDate()+1)){let t=yy(e);a.push(i[t]||{date:t,input_tokens:0,output_tokens:0,total_tokens:0,requests:0,input_cost:null,output_cost:null,total_cost:null})}return a}function xy(e,t){let n=e=>Number(e)||0,r=e.map(e=>e.date),i=e.map(e=>n(e.uncached_input_tokens)+n(e.cache_write_input_tokens)+n(e.cached_input_tokens)>0?n(e.uncached_input_tokens)+n(e.cache_write_input_tokens):n(e.input_tokens)),a=e.map(e=>n(e.output_tokens)),o=e.map(e=>n(e.cached_input_tokens)),s={};return(t||[]).forEach(e=>{s[e.date]=e}),{labels:r,inputPaid:i,output:a,prompt:o,local:r.map(e=>{let t=s[e];return t?n(t.input_tokens)+n(t.output_tokens):0})}}function Sy(e){let t=e||{},n=Math.max(0,Number(t.uncached_input_tokens)||0),r=Math.max(0,Number(t.cached_input_tokens)||0),i=Math.max(0,Number(t.cache_write_input_tokens)||0),a=n+r+i;return a>0?r/a*100:0}function Cy(e){let t=e||{};return(Number(t.uncached_input_tokens)||0)+(Number(t.cached_input_tokens)||0)+(Number(t.cache_write_input_tokens)||0)>0}function wy(e){return Cy(e)?Math.round(Sy(e))+`%`:`—`}function Ty(e,t,n={}){let r=!!n.cacheEnabled,i=n.resolve||(e=>e),a=(e,t)=>i(`color-mix(in srgb, `+e+` `+t+`%, transparent)`),o=(e,t,n,r)=>Object.assign({label:e,data:t,borderColor:n,backgroundColor:n,fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4},r||{}),s=[o(`Input Tokens`,t.inputPaid,i(`var(--token-input)`),{fill:`origin`}),o(`Output Tokens`,t.output,i(`var(--token-output)`),{fill:`-1`}),o(`Prompt (Input) Cached`,t.prompt,i(`var(--token-prompt)`),{fill:`-1`,borderDash:[6,4]})];return r&&s.push(o(`Locally Cached`,t.local,a(`var(--info)`,35),{fill:`-1`,borderDash:[2,3]})),{type:`line`,data:{labels:t.labels,datasets:s},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:Nv(e,{label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Mv(),maxRotation:0,autoSkip:!0,maxTicksLimit:10}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:Hv(e)}}}}}function Ey(e,t,n){let r=Math.max(0,Math.min(100,e));return{type:`doughnut`,data:{datasets:[{data:[r,100-r],backgroundColor:[t,n],borderWidth:0,spacing:0}]},options:{rotation:-90,circumference:180,cutout:`84%`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:1},events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}}}}}var Dy=`gomodel_provider_status_details_expanded`,Oy=`gomodel_provider_card_expanded_overrides`,ky=3e3,Ay=`https://gomodel.enterpilot.io/docs/providers/`,jy={anthropic:`anthropic`,azure:`azure`,bailian:`bailian`,bedrock:`bedrock`,"bedrock-mantle":`bedrock-mantle`,cohere:`cohere`,deepseek:`deepseek`,gemini:`gemini`,opencode_go:`opencode-go`,oracle:`oracle`,vertex:`vertex`,vllm:`vllm`,xiaomi:`xiaomi`};function My(){return{summary:{total:0,healthy:0,degraded:0,unhealthy:0,overall_status:`degraded`},providers:[]}}function Ny(e){let t={detailsExpanded:!1,cardOverrides:{}};try{if(e){let n=e.getItem(Dy);n===`true`||n===`false`?t.detailsExpanded=n===`true`:e.setItem(Dy,`false`);let r=JSON.parse(e.getItem(Oy)||`{}`);r&&typeof r==`object`&&!Array.isArray(r)&&(t.cardOverrides=r)}}catch{}return t}function Py(e,t){if(e)try{e.setItem(Dy,t?`true`:`false`)}catch{}}function Fy(e,t){if(e)try{e.setItem(Oy,JSON.stringify(t))}catch{}}function Iy(e,t,n){let r=n&&n.name?String(n.name):``;return r&&Object.prototype.hasOwnProperty.call(e,r)?e[r]===!0:t}function Ly(e){return`is-`+(String(e&&e.overall_status||`degraded`).trim()||`degraded`)}function Ry(e){return`is-`+(String(e||`degraded`).trim()||`degraded`)}function zy(e){let t=e||{};return String(t.healthy||0)+`/`+String(t.total||0)}function By(e){let t=e||{},n=Number(t.total||0),r=Number(t.healthy||0);return n>0&&rString(e&&e.status_label||``).trim().toLowerCase()===`starting`)}function Uy(e){if(!e||!e.runtime)return``;let t=e.runtime.last_model_fetch_at||``,n=e.runtime.last_availability_check_at||``;return t?n&&Date.parse(n)>Date.parse(t)?n:t:n}function Wy(e,t){let n=Uy(e);if(!n||typeof t!=`function`)return`-`;let r=t(n);if(!r||r===`-`)return`-`;let i=String(r).split(` `);return i.length>1?i.slice(1).join(` `):r}function Gy(e,t){let n=Uy(e);return n?typeof t==`function`?t(n):String(n):``}function Ky(e){if(!e)return``;let t=String(e.name||``).trim(),n=String(e.type||e.config&&e.config.type||``).trim();return!n||n===t?``:n}function qy(e){let t=String(e&&(e.type||e.config&&e.config.type)||``).trim().toLowerCase(),n=t?jy[t]:``;return n?Ay+n+`?utm_source=gomodel_dashboard`:``}function Jy(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.retry:null;return t?String(t.max_retries)+` retries, `+t.initial_backoff+` initial, `+t.max_backoff+` max, factor `+t.backoff_factor+`, jitter `+t.jitter_factor:`-`}function Yy(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.circuit_breaker:null;return t?String(t.failure_threshold)+` fail, `+String(t.success_threshold)+` success, `+t.timeout+` timeout`:`-`}function Xy(e){let t=e&&e.config&&Array.isArray(e.config.models)?e.config.models.filter(Boolean):[];return t.length===0?`Automatic`:t.join(`, `)}function Zy(e){if(!e)return``;let t=[];return e.status_reason&&t.push(String(e.status_reason)),e.last_error&&t.push(`Last error: `+String(e.last_error)),t.join(` + +`)}function Qy(e){let t=e&&e.request_health;return t&&typeof t==`object`?t:null}function $y(e){let t=Qy(e);return t?String(t.circuit_state||``).trim():``}function eb(e){let t=$y(e);return t?t.charAt(0).toUpperCase()+t.slice(1):``}function tb(e){let t=$y(e);return t===`open`?`is-unhealthy`:t===`half-open`?`is-degraded`:`is-healthy`}function nb(e){let t=Qy(e);if(!t)return``;let n=Number(t.requests||0),r=Number(t.errors||0),i=Math.round(Number(t.window_seconds||0)/60),a=i>0?`last `+i+` min`:`recent`;return String(n)+` request`+(n===1?``:`s`)+` · `+String(r)+` error`+(r===1?``:`s`)+` (`+a+`)`}function rb(e){let t=Qy(e);return t&&Array.isArray(t.models)?t.models:[]}function ib(e){return e?String(Number(e.errors||0))+`/`+String(Number(e.requests||0))+` failed`:``}function ab(e){let t=e&&e.last_error;return!t||!t.message?``:(t.status_code?`HTTP `+String(t.status_code)+`: `:``)+t.message}function ob(){return{name:``,slug:``,url:``,transport:`http`,description:``,enabled:!0,headers:[],allowed_tools:``,disallowed_tools:``,user_paths:``,tool_timeout_seconds:``}}function sb(){return{server:``,status:``,instructions:``,tools:[],prompts:[],resources:[],templates:[]}}function cb(e){return String(e&&(e.slug||e.name)||``).trim()}function lb(e){return String(e&&e.status||``).trim()||`connecting`}function ub(e){switch(lb(e)){case`connected`:return`status-success`;case`degraded`:return String(e&&e.last_error||``).trim()?`status-error`:`status-warning`;case`connecting`:return`status-neutral`;default:return`status-unknown`}}function db(e,t){let n=lb(e),r=String(e&&e.last_error||``).trim();return r&&n!==`connected`?r:n===`connected`&&e&&e.connected_at?`Connected since `+(typeof t==`function`?t:String)(e.connected_at):``}function fb(e){return String(e&&e.transport||``)===`stdio`?`local command`:String(e&&e.url||``).trim()||`—`}function pb(e){let t=Number(e&&e.prompt_count||0),n=Number(e&&e.resource_count||0);return t+` prompts · `+n+` resources`}function mb(e){let t=String(e||``).normalize(`NFKD`).toLowerCase(),n=t.replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,64).replace(/-+$/g,``);if(n)return n;let r=2166136261;for(let e of t)r=Math.imul((r^e.codePointAt(0))>>>0,16777619)>>>0;return`mcp-`+r.toString(16).padStart(8,`0`)}function hb(e){return String(e||``).split(` +`).map(e=>e.trim()).filter(e=>e)}function gb(e){return!e||typeof e!=`object`||Array.isArray(e)?[]:Object.keys(e).sort().map(t=>({name:t,value:String(e[t]||``)}))}function _b(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=String(e&&e.name||``).trim();n&&(t[n]=String(e&&e.value||``))}),t}function vb(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.slug,e.url,e.transport,e.description,e.status].some(e=>String(e||``).toLowerCase().includes(r)))}function yb(e){return{name:String(e.name||``).trim(),slug:cb(e),url:String(e.url||``).trim(),transport:e.transport===`sse`?`sse`:`http`,description:String(e.description||``).trim(),enabled:e.enabled!==!1,headers:gb(e.headers),allowed_tools:(Array.isArray(e.allowed_tools)?e.allowed_tools:[]).join(`, `),disallowed_tools:(Array.isArray(e.disallowed_tools)?e.disallowed_tools:[]).join(`, `),user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` +`),tool_timeout_seconds:e.tool_timeout_seconds?String(e.tool_timeout_seconds):``}}function bb(e,t,n){let r=String(e.name||``).trim(),i=String(e.slug||mb(r)).trim().toLowerCase(),a=String(e.url||``).trim(),o=e.transport===`sse`?`sse`:`http`;if(!r)return{error:`Name is required.`};if(!/^[a-z0-9][a-z0-9_-]{0,63}$/.test(i))return{error:`Slug must use 1–64 lowercase ASCII letters, numbers, hyphens, or underscores.`};if(t===`create`&&(n||[]).some(e=>cb(e)===i))return{error:`Slug "`+i+`" is already in use.`};if(!a)return{error:`URL is required.`};let s,c=String(e.tool_timeout_seconds||``).trim();if(c!==``){let e=Number(c);if(!Number.isSafeInteger(e)||e<0)return{error:`Tool timeout must be a non-negative whole number of seconds.`};s=e}return{payload:{name:r,slug:i,url:a,transport:o,headers:_b(e.headers),description:String(e.description||``).trim(),enabled:!!e.enabled,allowed_tools:$o(e.allowed_tools),disallowed_tools:$o(e.disallowed_tools),user_paths:hb(e.user_paths),tool_timeout_seconds:s}}}function xb(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=e=>(Array.isArray(e)?e:[]).filter(e=>e&&typeof e==`object`);return{server:String(n.server||e||``).trim(),status:String(n.status||``).trim(),instructions:String(n.instructions||``).trim(),tools:r(n.tools),prompts:r(n.prompts),resources:r(n.resources),templates:r(n.templates)}}function Sb(e,t){return String(e&&e.server||``)+`_`+String(t||``)}function Cb(e){let t=e||sb(),n=(e,t)=>{let n=String(e||``).trim(),r=String(t||``).trim();return n&&r?n+` — `+r:r||n},r=e=>n=>({key:e+`:`+String(n.name||``),name:String(n.name||``),aggregated:Sb(t,n.name),description:String(n.description||``).trim()});return[{key:`tools`,title:`Tools`,items:(t.tools||[]).map(r(`tool`))},{key:`prompts`,title:`Prompts`,items:(t.prompts||[]).map(r(`prompt`))},{key:`resources`,title:`Resources`,items:(t.resources||[]).map(e=>({key:`resource:`+String(e.uri||``),name:String(e.uri||``),aggregated:``,description:n(e.name,e.description)}))},{key:`templates`,title:`Resource templates`,items:(t.templates||[]).map(e=>({key:`template:`+String(e.uri_template||``),name:String(e.uri_template||``),aggregated:``,description:n(e.name,e.description)}))}].filter(e=>e.items.length>0)}function wb(e){return Cb(e).length===0}function Tb(e){return(e||[]).length}function Eb(e){return(e||[]).filter(e=>lb(e)===`connected`).length}function Db(e){return(e||[]).filter(e=>e&&e.enabled!==!1&&lb(e)===`degraded`).length}function Ob(e,t){return!!e&&Tb(t)>0}function kb(e){return String(Eb(e))+`/`+String(Tb(e))}function Ab(e){return Db(e)>0?`is-degraded`:`is-healthy`}function jb(e){let t=Db(e);if(t>0)return String(t)+` server`+(t===1?``:`s`)+` need`+(t===1?`s`:``)+` attention`;let n=Tb(e),r=Eb(e);return n>0&&r===n?`All MCP servers connected`:String(r)+` of `+String(n)+` server`+(n===1?``:`s`)+` connected`}function Mb(){return{interval:`day`,buckets:[],summary:{requests:0},provider_latency:[]}}function Nb(e){let t=e&&typeof e==`object`?e:{};return{interval:t.interval===`hour`?`hour`:`day`,buckets:Array.isArray(t.buckets)?t.buckets:[],summary:t.summary&&typeof t.summary==`object`?t.summary:{requests:0},provider_latency:Array.isArray(t.provider_latency)?t.provider_latency:[]}}function Pb(e){return Number(e&&e.summary&&e.summary.requests||0)>0}function Fb(e){return(e&&Array.isArray(e.provider_latency)?e.provider_latency:[]).length>0}function Ib(e){let t=e&&e.summary?e.summary.success_rate:null;return t==null?`—`:(Math.round(Number(t)*1e3)/10).toFixed(1)+`%`}function Lb(e,t){return Number(e&&e.summary&&e.summary[t]||0)}function Rb(e){let t=Number(e);return Number.isFinite(t)?t>=6e4?(t/6e4).toFixed(1)+` min`:t>=1e3?(t/1e3).toFixed(2)+` s`:Math.round(t)+` ms`:`-`}function zb(e){let t=e&&e.summary?e.summary.avg_duration_ms:null;return t==null?`—`:Rb(Number(t))}function Bb(e,t){try{let n={};return new Intl.DateTimeFormat(`en-US`,{timeZone:t,year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,hourCycle:`h23`}).formatToParts(e).forEach(e=>{n[e.type]=e.value}),{year:n.year,month:n.month,day:n.day,hour:Number(n.hour)}}catch{return{year:String(e.getFullYear()),month:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`][e.getMonth()],day:String(e.getDate()),hour:e.getHours()}}}function Vb(e,t,n){let r=new Date(e.start);if(Number.isNaN(r.getTime()))return String(e.start||``);let i=Bb(r,n),a=i.month+` `+i.day;return t!==`hour`||i.hour===0?a:String(i.hour).padStart(2,`0`)+`:00`}function Hb(e,t,n,r){let i=new Date(e.start);if(Number.isNaN(i.getTime()))return String(e.start||``);if(t===`hour`)return r(e.start);let a=Bb(i,n);return a.month+` `+a.day+`, `+a.year}function Ub(e){return{ok:e(`var(--success)`),clientError:e(`var(--warning)`),serverError:e(`var(--danger)`),other:e(`color-mix(in srgb, var(--text-muted) 55%, transparent)`)}}function Wb(e,t,n={}){let r=n.interval===`hour`?`hour`:`day`,i=n.zone,a=n.resolve||(e=>e),o=n.formatTimestamp||(e=>String(e)),s=t.map(e=>Vb(e,r,i)),c=Ub(a),l=a(`var(--bg-surface)`),u=e=>Number(e)||0,d=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:l,borderWidth:1,borderSkipped:!1,borderRadius:2,maxBarThickness:28}),f=[d(`2xx`,t.map(e=>u(e.status_2xx)),c.ok),d(`4xx`,t.map(e=>u(e.status_4xx)),c.clientError),d(`5xx`,t.map(e=>u(e.status_5xx)),c.serverError)];return t.some(e=>u(e.status_other)>0)&&f.push(d(`Other`,t.map(e=>u(e.status_other)),c.other)),{type:`bar`,data:{labels:s,datasets:f},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:Nv(e,{title:e=>e.length?Hb(t[e[0].dataIndex],r,i,o):``,label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:Mv(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Mv(),precision:0,callback:e=>as(e)}}}}}}function Gb(e=Iv()){let t={};return function(n){return n in t||(t[n]=e[Object.keys(t).length%e.length]),t[n]}}function Kb(e,t,n,r={}){let i=r.interval===`hour`?`hour`:`day`,a=r.zone,o=r.formatTimestamp||(e=>String(e)),s=r.providerColor||Gb();return{type:`line`,data:{labels:t.map(e=>Vb(e,i,a)),datasets:n.map(e=>({label:e.provider,data:(e.avg_duration_ms||[]).map(e=>e==null?null:Number(e)),borderColor:s(e.provider),backgroundColor:s(e.provider),fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4,spanGaps:i===`hour`&&2}))},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:Nv(e,{title:e=>e.length?Hb(t[e[0].dataIndex],i,a,o):``,label:e=>{let t=(n[e.datasetIndex]&&n[e.datasetIndex].requests||[])[e.dataIndex],r=Number(t)||0;return e.dataset.label+`: `+Rb(e.parsed.y)+(r>0?` (`+r.toLocaleString()+` req)`:``)}})},scales:{x:{grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Mv(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Mv(),callback:e=>Rb(e)}}}}}}var qb=class{#e=k(j(My()));get status(){return I(this.#e)}set status(e){A(this.#e,e,!0)}#t=k(!1);get loading(){return I(this.#t)}set loading(e){A(this.#t,e,!0)}#n=k(!1);get loadedOnce(){return I(this.#n)}set loadedOnce(e){A(this.#n,e,!0)}#r=k(!1);get detailsExpanded(){return I(this.#r)}set detailsExpanded(e){A(this.#r,e,!0)}#i=k(j({}));get cardOverrides(){return I(this.#i)}set cardOverrides(e){A(this.#i,e,!0)}#a=null;#o=null;#s=!1;initPreferences(){if(this.#s)return;this.#s=!0;let e=Ny(wa());this.detailsExpanded=e.detailsExpanded,this.cardOverrides=e.cardOverrides}cardExpanded(e){return Iy(this.cardOverrides,this.detailsExpanded,e)}toggleCard(e){let t=e&&e.name?String(e.name):``;if(!t)return;let n={...this.cardOverrides};n[t]=!this.cardExpanded(e),this.cardOverrides=n,Fy(wa(),this.cardOverrides)}toggleDetails(){this.detailsExpanded=!this.detailsExpanded,this.cardOverrides={},Py(wa(),this.detailsExpanded),Fy(wa(),this.cardOverrides)}detailsToggleLabel(){return this.detailsExpanded?`Show Details`:`Hide Details`}async fetch(){this.initPreferences(),this.#a&&this.#a.abort();let e=new AbortController;this.#a=e,this.loading=!0;try{let t=await uo(`/admin/providers/status`,{label:`provider status`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.status=My(),this.#l();return}let n=t.data&&typeof t.data==`object`?t.data:My();n.summary||=My().summary,Array.isArray(n.providers)||(n.providers=[]),this.status=n,this.#c()}catch(e){if(po(e))return;console.error(`Failed to fetch provider status:`,e),this.status=My(),this.#l()}finally{this.#a===e&&(this.#a=null,this.loading=!1,this.loadedOnce=!0)}}#c(){this.#l(),Hy(this.status.providers)&&(this.#o=setTimeout(()=>{this.#o=null,this.fetch()},ky))}#l(){this.#o&&=(clearTimeout(this.#o),null)}stopPolling(){this.#l()}},Jb=class{#e=k(j(Mb()));get stats(){return I(this.#e)}set stats(e){A(this.#e,e,!0)}#t=k(!1);get loading(){return I(this.#t)}set loading(e){A(this.#t,e,!0)}#n=0;async fetch(){let e=++this.#n;this.loading=!0;try{let t=await uo(`/admin/audit/stats?`+Ds.queryStr(),{label:`audit stats`});if(t.stale||e!==this.#n)return;if(!t.ok){this.stats=Mb();return}this.stats=Nb(t.data)}catch(t){if(console.error(`Failed to fetch audit stats:`,t),e!==this.#n)return;this.stats=Mb()}finally{e===this.#n&&(this.loading=!1)}}},Yb=class{#e=k(j([]));get servers(){return I(this.#e)}set servers(e){A(this.#e,e,!0)}#t=k(!1);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}async fetch(){if(await go.ensureLoaded(),!go.mcpVisible()){this.available=!1,this.servers=[];return}this.loading=!0;try{let e=await uo(`/admin/mcp-servers`,{label:`mcp servers`});if(e.stale)return;if(e.status===503||e.status===404){this.available=!1,this.servers=[];return}if(this.available=!0,!e.ok){this.servers=[];return}this.servers=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch MCP servers:`,e),this.servers=[]}finally{this.loading=!1}}},Xb=class{#e=k(j([]));get data(){return I(this.#e)}set data(e){A(this.#e,e,!0)}#t=k(`tokens`);get mode(){return I(this.#t)}set mode(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=null;async fetch(){this.#r&&this.#r.abort();let e=new AbortController;this.#r=e,this.loading=!0;try{let t=await uo(`/admin/usage/daily?days=365&interval=daily`,{label:`calendar`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.data=[];return}this.data=Array.isArray(t.data)?t.data:[]}catch(e){if(po(e))return;console.error(`Failed to fetch calendar data:`,e),this.data=[]}finally{this.#r===e&&(this.#r=null,this.loading=!1)}}},Zb=new qb,Qb=new Jb,$b=new Yb,ex=new Xb,tx=(e,t=f,n=f,r=f,i=f)=>{var a=rx(),o=M(a),s=M(o,!0);T(o);var c=P(o,2),l=M(c),u=M(l),d=M(u,!0);T(u),Ue(),T(l);var p=P(l,4),m=M(p),h=M(m,!0);T(m),Ue(),T(p);var g=P(p,4),_=M(g,!0);T(g),T(c),T(a),F((e,n,r,i,a,o)=>{B(s,t()),W(l,`title`,e),B(d,n),W(p,`title`,r),B(h,i),W(g,`title`,a),B(_,o)},[()=>os(`Input tokens`,n()),()=>as(n()),()=>os(`Output tokens`,r()),()=>as(r()),()=>os(`Total tokens`,i()),()=>as(i())]),z(e,a)},nx=(e,t=f,n=f,r=f,i=f,a=f,o=f)=>{var s=ox(),c=M(s),l=M(c,!0);T(c);var u=P(c,2),d=M(u,!0);T(u);var p=P(u,2),m=e=>{var t=ix(),n=M(t,!0);T(t),F(()=>{W(t,`aria-label`,o().title),W(t,`title`,o().title),B(n,a())}),L(`click`,t,function(...e){o().onclick?.apply(this,e)}),z(e,t)},h=e=>{var t=ax(),n=M(t,!0);T(t),F(()=>B(n,a())),z(e,t)};V(p,e=>{o()?e(m):e(h,-1)}),T(s),F(()=>{U(s,1,`card provider-status-flag ${t()??``} ${n()??``}`,`svelte-6tr9cf`),B(l,r()),B(d,i())}),z(e,s)},rx=R(`
i + o =
`),ix=R(``),ax=R(` `),ox=R(`
`),sx=R(`
Cache Hits
`),cx=R(`
Total Requests
Estimated Cost
Prompt Cache Rate
`);function lx(e,t){E(t,!0);let n=O(()=>Ns.summary),r=O(()=>Ns.cacheOverview),i=O(()=>Ns.cacheAnalyticsEnabled()),a=O(()=>Zb.status.summary);function o(){let e=document.getElementById(`provider-status-section`);e&&(e.scrollIntoView({behavior:`smooth`,block:`start`}),e.focus({preventScroll:!0}))}var s=cx(),c=M(s);{let e=O(()=>sy(I(n)));tx(c,()=>`Tokens`,()=>I(n).total_input_tokens,()=>I(n).total_output_tokens,()=>I(e))}var l=P(c,2),u=P(M(l),2),d=M(u,!0);T(u),T(l);var f=P(l,2),p=e=>{var t=sx(),n=P(M(t),2),i=M(n,!0);T(n),T(t),F(e=>B(i,e),[()=>ts(I(r).summary.total_hits)]),z(e,t)};V(f,e=>{I(i)&&e(p)});var m=P(f,2),h=P(M(m),2),g=M(h,!0);T(h),T(m);var _=P(m,2),v=e=>{{let t=O(()=>dy(I(r)));tx(e,()=>`Local Cache`,()=>I(r).summary.total_input_tokens,()=>I(r).summary.total_output_tokens,()=>I(t))}};V(_,e=>{I(i)&&e(v)});var y=P(_,2),b=P(M(y),2),x=M(b);Ev(x,{build:()=>Ey(Sy(I(n)),Pv(`var(--token-prompt)`),Pv(`var(--bg-surface-hover)`))});var S=P(x,2),C=M(S,!0);T(S),T(b),T(y);var w=P(y,2),ee=e=>{{let t=O(()=>Ly(I(a))),n=O(()=>zy(I(a))),r=O(()=>Vy(I(a))),i=O(()=>By(I(a))?{title:`View providers overview`,onclick:o}:null);nx(e,()=>`provider-status-overview-card`,()=>I(t),()=>`Provider Status`,()=>I(n),()=>I(r),()=>I(i))}};V(w,e=>{I(a).total>0&&e(ee)});var te=P(w,2),ne=e=>{{let t=O(()=>Ab($b.servers)),n=O(()=>kb($b.servers)),r=O(()=>jb($b.servers));nx(e,()=>`mcp-servers-flag`,()=>I(t),()=>`MCP Servers`,()=>I(n),()=>I(r),()=>({title:`View MCP servers`,onclick:()=>Va.navigate(`mcp-servers`)}))}},re=O(()=>Ob($b.available,$b.servers));V(te,e=>{I(re)&&e(ne)}),T(s),F((e,t,n,r,i)=>{W(u,`title`,e),B(d,t),B(g,n),W(b,`aria-label`,r),B(C,i)},[()=>uy(I(n),I(r),I(i)),()=>ts(ly(I(n),I(r),I(i))),()=>ns(I(n).total_cost),()=>`Prompt cache rate `+wy(I(n)),()=>wy(I(n))]),z(e,s),D()}Hr([`click`]);var ux=R(` `),dx=R(`
`),fx=R(`No usage in the selected period yet`),px=R(`
`),mx=R(`

Tokens

Share of input tokens over the selected period
`);function hx(e,t){E(t,!0);let n=O(()=>Ns.cacheAnalyticsEnabled()),r=O(()=>hy(Ns.summary,Ns.cacheOverview,I(n))),i=O(()=>gy(Ns.summary,Ns.cacheOverview,I(n))),a=O(()=>my(Ns.summary,Ns.cacheOverview,I(n)));var o=mx(),s=P(M(o),2);let c;var l=M(s);H(l,17,()=>I(i),e=>e.key,(e,t)=>{var n=dx(),r=M(n),i=e=>{var n=ux(),r=M(n);T(n),F(()=>B(r,`${I(t).pct??``}%`)),z(e,n)};V(r,e=>{I(t).pct>=8&&e(i)}),T(n),F(e=>{Hi(n,`width: ${I(t).pct??``}%; background: var(${I(t).colorVar??``})`),W(n,`title`,e)},[()=>_y(I(t))]),z(e,n)});var u=P(l,2),d=e=>{z(e,fx())};V(u,e=>{I(a)||e(d)}),T(s);var f=P(s,2);H(f,21,()=>I(r),e=>e.key,(e,t)=>{var n=px(),r=M(n),i=P(r,2),a=M(i,!0);T(i);var o=P(i,2),s=M(o);T(o);var c=P(o,2),l=M(c,!0);T(c),T(n),F((e,i)=>{W(n,`title`,e),Hi(r,`background: var(${I(t).colorVar??``})`),B(a,I(t).label),B(s,`${I(t).pct??``}%`),B(l,i)},[()=>_y(I(t)),()=>ts(I(t).tokens)]),z(e,n)}),T(f),T(o),F(e=>{c=U(s,1,`cache-meter-bar svelte-1yzecxj`,null,c,{"is-empty":!I(a)}),W(s,`aria-label`,e)},[()=>vy(I(i))]),z(e,o),D()}var gx=R(``);function _x(e,t){let n=G(t,`size`,3,16),r=G(t,`label`,3,`Loading`),i=G(t,`class`,3,``);var a=gx();F(()=>{U(a,1,Fi([`spinner`,i()]),`svelte-b54l9o`),Hi(a,`--spinner-size: ${n()??``}px`),W(a,`aria-label`,r())}),z(e,a)}var vx=Xr(` `),yx=Xr(``);function bx(e,t){let n=G(t,`label`,3,`No data`);var r=yx(),i=P(M(r),9),a=e=>{var t=vx(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)};V(i,e=>{n()&&e(a)}),T(r),F(()=>{W(r,`role`,n()?`img`:void 0),W(r,`aria-label`,n()||void 0),W(r,`aria-hidden`,n()?void 0:`true`)}),z(e,r)}var xx=R(`
`),Sx=R(`

`);function Cx(e,t){E(t,!0);let n=[`daily`,`weekly`,`monthly`,`yearly`];function r(e){Ds.interval=e,t.onintervalchange?.()}function i(){let e=Ns.daily;if(e.length===0)return null;let t=Ds.rangeStart(),n=Ds.rangeEnd(),r=xy(by(e,Ds.interval,t,n),by(Array.isArray(Ns.cacheOverview.daily)?Ns.cacheOverview.daily:[],Ds.interval,t,n));return Ty(jv(),r,{cacheEnabled:Ns.cacheAnalyticsEnabled(),resolve:Pv})}var a=Sx(),o=M(a),s=M(o),c=M(s,!0);T(s);var l=P(s,2);{let e=O(()=>n.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)})));kv(l,{ariaLabel:`Usage chart interval`,get options(){return I(e)},get value(){return Ds.interval},onchange:r})}T(o);var u=P(o,2),d=M(u);Ev(d,{build:i});var f=P(d,2),p=e=>{var t=xx();_x(M(t),{size:24,label:`Loading usage`}),T(t),z(e,t)},m=e=>{var t=xx();bx(M(t),{}),T(t),z(e,t)};V(f,e=>{Ns.daily.length===0&&Ns.loading?e(p):Ns.daily.length===0&&!q.authError&&e(m,1)}),T(u),T(a),F(e=>B(c,e),[()=>Ds.chartTitle()]),z(e,a),D()}var wx=10,Tx=.7;function Ex(e,t){if(e<=0||t<=0)return 0;let n=(e/t)**+Tx,r=Math.ceil(n*wx);return r<1?1:r>wx?wx:r}function Dx(){let e=[];for(let t=0;t<=wx;t++)e.push(t);return e}function Ox(e,t,n){let r={};(e||[]).forEach(e=>{r[e.date]=e});let i=Ga(qa(n,-364)),a=i.getUTCDay();i.setUTCDate(i.getUTCDate()-a);let o=[];for(let e=new Date(i);Ka(e)<=n;e.setUTCDate(e.getUTCDate()+1)){let n=Ka(e),i=r[n],a=0;i&&(a=t===`costs`?i.total_cost==null?0:i.total_cost:i.total_tokens||0),o.push({dateStr:n,value:a,level:0,empty:!1})}let s=0;for(let e=0;es&&(s=o[e].value);for(let e=0;e0){for(;l.length<7;)l.push({dateStr:``,value:0,level:0,empty:!0});c.push(l)}return c}function kx(e){let t=Ga(qa(e,-364)),n=t.getUTCDay();t.setUTCDate(t.getUTCDate()-n);let r=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],i=[],a={},o=0;for(let n=new Date(t);Ka(n)<=e;n.setUTCDate(n.getUTCDate()+7),o++){let t=null;if(o===0)t=new Date(n);else for(let r=0;r<7;r++){let i=new Date(n);if(i.setUTCDate(n.getUTCDate()+r),Ka(i)>e)break;if(i.getUTCDate()===1){t=i;break}}if(!t)continue;let s=t.getUTCFullYear()+`-`+t.getUTCMonth();a[s]||(i.push({label:r[t.getUTCMonth()],col:o,key:s}),a[s]=!0)}for(let e=0;e `),Nx=R(`
`),Px=R(`
`),Fx=R(`
`),Ix=R(`
`),Lx=R(`

Activity

Mon Wed Fri
`,1);function Rx(e,t){E(t,!0);let n=k(j({show:!1,x:0,y:0,text:``})),r=O(()=>io.currentDateKey()),i=O(()=>Ox(ex.data,ex.mode,I(r))),a=O(()=>kx(I(r)));function o(e,t){t.empty||A(n,{show:!0,x:e.clientX,y:e.clientY,text:jx(t,ex.mode)},!0)}function s(){A(n,{show:!1,x:0,y:0,text:``},!0)}var c=Lx(),l=N(c),u=M(l),d=P(M(u),2),f=e=>{_x(e,{size:14,label:`Loading activity`})};V(d,e=>{ex.loading&&ex.data.length===0&&e(f)}),kv(P(d,2),{ariaLabel:`Activity calendar mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return ex.mode},onchange:e=>ex.mode=e}),T(u);var p=P(u,2),m=P(M(p),2),h=M(m);H(h,21,()=>I(a),e=>e.key,(e,t)=>{var n=Mx(),r=M(n,!0);T(n),F(()=>{Hi(n,`grid-column: ${I(t).col+1} / span ${I(t).span??``}`),B(r,I(t).label)}),z(e,n)}),T(h);var g=P(h,2);H(g,21,()=>I(i),oi,(e,t,n)=>{var r=Px();H(r,23,()=>I(t),(e,t)=>n+`-`+t,(e,t)=>{var n=Nx();F(()=>U(n,1,Fi([`contribution-calendar-cell`,I(t).empty?`empty`:`level-${I(t).level}`]),`svelte-3hfxuq`)),Vr(`mouseenter`,n,e=>o(e,I(t))),Vr(`mouseleave`,n,s),z(e,n)}),T(r),z(e,r)}),T(g),T(m),T(p);var _=P(p,2),v=M(_),y=M(v),b=M(y,!0);T(y),T(v);var x=P(v,2);H(P(M(x),2),16,Dx,e=>e,(e,t)=>{var n=Fx();F(()=>U(n,1,`contribution-calendar-cell level-${t??``}`,`svelte-3hfxuq`)),z(e,n)}),Ue(2),T(x),T(_),T(l);var S=P(l,2),C=e=>{var t=Ix(),r=M(t,!0);T(t),F(()=>{Hi(t,`left: ${I(n).x??``}px; top: ${I(n).y-40}px`),B(r,I(n).text)}),z(e,t)};V(S,e=>{I(n).show&&e(C)}),F(e=>B(b,e),[()=>Ax(ex.data,ex.mode)]),z(e,c),D()}var zx=R(``),Bx=R(`

`),Vx=R(`
`);function Hx(e,t){E(t,!0);let n=G(t,`label`,3,`help`),r=G(t,`text`,3,``),i=G(t,`open`,15,!1),a=G(t,`external`,3,!1),o=O(()=>!!r()||!!t.help||a());var s=Vx(),c=M(s),l=M(c);gi(l,()=>t.title??f);var u=P(l,2),d=e=>{var r=zx();let a;F(()=>{a=U(r,1,`inline-help-toggle svelte-y40or3`,null,a,{"is-open":i()}),W(r,`aria-label`,(i()?`Hide `:`Show `)+n()),W(r,`aria-expanded`,i()),W(r,`aria-controls`,t.copyId)}),L(`click`,r,()=>i(!i())),z(e,r)};V(u,e=>{I(o)&&e(d)}),gi(P(u,2),()=>t.extra??f),T(c);var p=P(c,2),m=e=>{var n=Bx(),i=M(n),a=e=>{var n=Qr();gi(N(n),()=>t.help),z(e,n)},o=e=>{var t=Zr();F(()=>B(t,r())),z(e,t)};V(i,e=>{t.help?e(a):e(o,-1)}),T(n),F(()=>W(n,`id`,t.copyId)),z(e,n)};V(p,e=>{i()&&I(o)&&!a()&&e(m)}),T(s),z(e,s),D()}Hr([`click`]);var Ux=R(`

Provider Latency

`),Wx=R(`
Avg
`),Gx=R(`

Requests by Status

Success 2xx 4xx 5xx
`,1);function Kx(e,t){E(t,!0);let n=Gb(),r=O(()=>Qb.stats);function i(){return{interval:I(r).interval,zone:io.effectiveTimezone(),resolve:Pv,formatTimestamp:e=>io.formatTimestamp(e)}}var a=Qr(),o=N(a),s=e=>{var t=Gx(),a=N(t),o=M(a),s=P(M(o),2),c=M(s),l=P(M(c),2),u=M(l,!0);T(l),T(c);var d=P(c,2),f=P(M(d),4),p=M(f,!0);T(f),T(d);var m=P(d,2),h=P(M(m),4),g=M(h,!0);T(h),T(m);var _=P(m,2),v=P(M(_),4),y=M(v,!0);T(v),T(_),T(s),T(o);var b=P(o,2);Ev(M(b),{build:()=>Wb(jv(),I(r).buckets,i())}),T(b),T(a);var x=P(a,2),S=e=>{var t=Wx(),a=M(t),o=M(a);Hx(o,{copyId:`audit-latency-help-copy`,label:`provider latency help`,text:`Average duration of successful requests as measured at the gateway, per provider. Local cache hits and failed requests are excluded; streamed responses count until the stream completes.`,title:e=>{z(e,Ux())},$$slots:{title:!0}});var s=P(o,2),c=M(s),l=P(M(c),2),u=M(l,!0);T(l),T(c),T(s),T(a);var d=P(a,2);Ev(M(d),{build:()=>Kb(jv(),I(r).buckets,I(r).provider_latency,{...i(),providerColor:n})}),T(d),T(t),F(e=>B(u,e),[()=>zb(I(r))]),z(e,t)},C=O(()=>Fb(I(r)));V(x,e=>{I(C)&&e(S)}),F((e,t,n,r)=>{B(u,e),B(p,t),B(g,n),B(y,r)},[()=>Ib(I(r)),()=>ts(Lb(I(r),`status_2xx`)),()=>ts(Lb(I(r),`status_4xx`)),()=>ts(Lb(I(r),`status_5xx`))]),z(e,t)},c=O(()=>Pb(I(r)));V(o,e=>{I(c)&&e(s)}),z(e,a),D()}var qx=(e,t=f,n=f,r)=>{let i=Ot(()=>h(r?.(),!1));var a=Xx(),o=M(a),s=M(o,!0);T(o);var c=P(o,2),l=e=>{var t=Jx(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)},u=e=>{var t=Yx(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)};V(c,e=>{I(i)?e(l):e(u,-1)}),T(a),F(()=>B(s,t())),z(e,a)},Jx=R(` `),Yx=R(` `),Xx=R(`
`),Zx=R(`

`),Qx=R(`
Breaker State
`),$x=R(`
`),eS=R(`
Models (Recent Traffic)
`),tS=R(`
`),nS=R(`

`);function rS(e,t){E(t,!0);let n=O(()=>tb(t.provider)),r=O(()=>[[`Base URL`,t.provider.config?.base_url],[`API Version`,t.provider.config?.api_version]].filter(([,e])=>!!e));var i=nS();let a;var o=M(i),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=e=>{var n=Zx(),r=M(n,!0);T(n),F(()=>B(r,t.provider.last_error)),z(e,n)};V(l,e=>{t.provider.last_error&&e(u)});var d=P(l,2),f=e=>{var r=tS(),i=M(r);{let e=O(()=>nb(t.provider));qx(i,()=>`Recent Requests`,()=>I(e))}var a=P(i,2),o=e=>{var r=Qx(),i=P(M(r),2),a=M(i),o=M(a,!0);T(a),T(i),T(r),F(e=>{U(a,1,Fi([`provider-status-health-state`,I(n)]),`svelte-6y9wjv`),B(o,e)},[()=>eb(t.provider)]),z(e,r)},s=O(()=>$y(t.provider));V(a,e=>{I(s)&&e(o)});var c=P(a,2),l=e=>{var n=eS(),r=P(M(n),2);H(r,21,()=>rb(t.provider),e=>e.model,(e,t)=>{var n=$x();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(n),F((e,i)=>{r=U(n,1,`provider-status-health-model svelte-6y9wjv`,null,r,{"is-flagged":I(t).flagged}),W(n,`title`,e),B(a,I(t).model),B(s,i)},[()=>ab(I(t)),()=>ib(I(t))]),z(e,n)}),T(r),T(n),z(e,n)},u=O(()=>rb(t.provider).length>0);V(c,e=>{I(u)&&e(l)}),T(r),z(e,r)},p=O(()=>Qy(t.provider));V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=M(m);H(h,17,()=>I(r),([e,t])=>e,(e,t)=>{var n=O(()=>g(I(t),2));qx(e,()=>I(n)[0],()=>I(n)[1],()=>!0)});var _=P(h,2);{let e=O(()=>Xy(t.provider));qx(_,()=>`Configured Models`,()=>I(e))}var v=P(_,2);{let e=O(()=>Jy(t.provider));qx(v,()=>`Retry`,()=>I(e))}var y=P(v,2);{let e=O(()=>Yy(t.provider));qx(y,()=>`Circuit Breaker`,()=>I(e))}T(m),T(o),T(i),F(()=>{a=U(i,1,`provider-status-details svelte-6y9wjv`,null,a,{"is-expanded":t.expanded,"is-collapsed":!t.expanded}),W(i,`aria-hidden`,!t.expanded),B(c,t.provider.status_reason)}),z(e,i),D()}var iS=R(` `),aS=R(``),oS=R(`

Models Available
Last Checked
`);function sS(e,t){E(t,!0);let n=O(()=>Zb.cardExpanded(t.provider)),r=e=>io.formatTimestamp(e);var i=oS(),a=M(i),o=M(a),s=M(o),c=M(s),l=M(c,!0);T(c);var u=P(c,2),d=e=>{var n=iS(),r=M(n);T(n),F(e=>B(r,`(${e??``})`),[()=>Ky(t.provider)]),z(e,n)},f=O(()=>Ky(t.provider));V(u,e=>{I(f)&&e(d)});var p=P(u,2),m=e=>{var n=aS();F((e,t,r)=>{W(n,`href`,e),W(n,`aria-label`,t),W(n,`title`,r)},[()=>qy(t.provider),()=>`View `+(Ky(t.provider)||t.provider.name)+` provider docs`,()=>`View `+(Ky(t.provider)||t.provider.name)+` provider docs`]),z(e,n)},h=O(()=>qy(t.provider));V(p,e=>{I(h)&&e(m)}),T(s),T(o);var g=P(o,2),_=M(g,!0);T(g),T(a);var v=P(a,2),y=M(v),b=P(M(y),2),x=M(b,!0);T(b),T(y);var S=P(y,2),C=P(M(S),2),w=M(C,!0);T(C),T(S),T(v);var ee=P(v,2);rS(ee,{get provider(){return t.provider},get expanded(){return I(n)}});var te=P(ee,2);let ne;K(M(te),{name:`chevron-down`,class:`provider-status-card-toggle-icon`}),T(te),T(i),F((e,r,i,a,o)=>{B(l,t.provider.name),U(g,1,`provider-status-pill ${e??``}`,`svelte-nopjmh`),W(g,`title`,r),B(_,t.provider.status_label),B(x,i),W(C,`title`,a),B(w,o),ne=U(te,1,`provider-status-card-toggle svelte-nopjmh`,null,ne,{"is-expanded":I(n)}),W(te,`aria-expanded`,I(n)),W(te,`aria-label`,(I(n)?`Collapse `:`Expand `)+t.provider.name+` details`),W(te,`title`,I(n)?`Collapse details`:`Expand details`)},[()=>Ry(t.provider.status),()=>Zy(t.provider),()=>ts(t.provider.runtime?.discovered_model_count),()=>Gy(t.provider,r),()=>Wy(t.provider,r)]),L(`click`,te,()=>Zb.toggleCard(t.provider)),z(e,i),D()}Hr([`click`]);var cS=R(`

Providers Overview

`),lS=R(`
`);function uS(e,t){E(t,!0);let n=O(()=>Zb.status.providers);var r=Qr(),i=N(r),a=e=>{var t=cS(),r=M(t),i=P(M(r),2),a=M(i),o=M(a,!0);T(a);var s=P(a,2);let c;T(i),T(r);var l=P(r,2);H(l,21,()=>I(n),e=>e.name,(e,t)=>{sS(e,{get provider(){return I(t)}})}),T(l),T(t),F((e,t)=>{W(i,`aria-checked`,Zb.detailsExpanded),W(i,`title`,e),B(o,t),c=U(s,1,`provider-status-toggle-track svelte-1kx3uw4`,null,c,{"is-active":Zb.detailsExpanded})},[()=>Zb.detailsToggleLabel(),()=>Zb.detailsToggleLabel()]),L(`click`,i,()=>Zb.toggleDetails()),z(e,t)},o=e=>{var t=lS();_x(M(t),{size:18,label:`Loading provider status`}),T(t),z(e,t)};V(i,e=>{I(n).length>0?e(a):Zb.loading&&!Zb.loadedOnce&&e(o,1)}),z(e,r),D()}Hr([`click`]);var dS=R(`
`);function fS(e,t){E(t,!0);function n(){Ns.fetchUsage(),Ns.fetchCacheOverview(``),Qb.fetch(),Zb.fetch(),$b.fetch(),ex.fetch()}function r(){Ns.fetchUsage(),Ns.fetchCacheOverview(``),Qb.fetch()}function i(){r(),ex.fetch()}An(()=>{if(q.refreshTick,Va.page===`overview`)return Er(()=>{n(),ny.start()}),()=>{ny.stop(),Zb.stopPolling()}});var a=dS(),o=M(a);oy(o,{});var s=P(o,4);Xs(M(s),{onchange:i}),T(s);var c=P(s,2);As(c,{});var l=P(c,2);lx(l,{});var u=P(l,2);hx(u,{});var d=P(u,2);Cx(d,{onintervalchange:r});var f=P(d,2);Rx(f,{});var p=P(f,2);Kx(p,{}),uS(P(p,2),{}),T(a),z(e,a),D()}var pS=`/admin/live/logs?types=audit,usage`;function mS(e,t,n){return!!t&&String(e&&e.id||``).trim()===t||!!n&&String(e&&e.request_id||``).trim()===n}function hS(e){switch(e){case`date_range`:return`Live paused — the selected date range does not include today. Set it to today to resume.`;case`filters`:return`Live paused while filters are active. Clear them to resume.`;case`pagination`:return`Live paused on later pages. Go to the first page to resume.`;default:return``}}function gS(e){let t=pS,n=Number(e||0);return Number.isFinite(n)&&n>0&&(t+=`&cursor=`+encodeURIComponent(String(n))),t}function _S(){return{async consumeLiveLogsBody(e){await zv(e,e=>this.applyLiveLogEvent(e))},applyLiveLogEvent(e){if(!e||typeof e!=`object`)return;let t=Number(e.seq||0);Number.isFinite(t)&&t>this.liveLogsLastSeq&&(this.liveLogsLastSeq=t);let n=String(e.type||``).trim();if(n!==`heartbeat`){if(n===`reset`){this.reloadLiveLogSources();return}if(n===`audit.removed`){this.removeLiveAuditEntry(e.data);return}if(n.indexOf(`audit.`)===0){this.mergeLiveAuditEntry(e.data||{},n);return}n.indexOf(`usage.`)===0&&(this.mergeLiveUsageEntry(e.data||{},n),typeof this.noteLiveTokenUsage==`function`&&this.noteLiveTokenUsage(n))}},reloadLiveLogSources(){typeof this.fetchUsage==`function`&&this.fetchUsage(),this.page===`audit-logs`&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},auditLivePauseReason(){return!this.auditLog||this.auditLog.offset!==0?`pagination`:this.auditSearch||this.auditMethod||this.auditStatusCode||this.auditStream?`filters`:!this.followsToday&&(this.customStartDate||this.customEndDate)?`date_range`:null},auditLiveInsertAllowed(){return!this.auditLivePauseReason()},usageLiveInsertAllowed(){return this.usageLog&&this.usageLog.offset===0&&!this.usageLogSearch&&!this.usageFilterModel&&!this.usageFilterProvider&&!this.usageFilterLabel&&!this.usageFilterUserPath},mergeLiveAuditEntry(e,t){if(!e||typeof e!=`object`)return;let n=String(e.id||e.request_id||``).trim();if(!n)return;let r=String(e.request_id||``).trim(),i=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],a=i.findIndex(e=>mS(e,n,r)),o=a>=0&&i[a]||{},s=t===`audit.detail`,c=s?{...e,_detail_loaded:!0,_response_partial:!1,bodies_omitted:!1}:this.liveAuditPatch(o,e,t);if(a>=0){let e=this.mergeLiveAuditPatch(o,c);return i.splice(a,1,e),this.auditLog.entries=[...i],this.regroupLiveAuditHead(e),s||this.fetchExpandedAuditDetailIfReady(e),this.notifyLiveConversation(e),e}let l=this.mergeLiveAuditChild(e,c);if(l)return s||this.fetchExpandedAuditDetailIfReady(l),this.notifyLiveConversation(l),l;if(!this.auditLiveInsertAllowed())return;if(!s&&this.auditGroupSessions){let e=this.foldLiveAuditIntoThread(c);if(e)return this.fetchExpandedAuditDetailIfReady(e),this.notifyLiveConversation(e),e}this.auditLog.entries=[this.mergeLiveAuditUsagePatch(c),...i].slice(0,this.auditLog.limit||25),this.auditLog.total=Number(this.auditLog.total||0)+1;let u=this.auditLog.entries[0];return s||this.fetchExpandedAuditDetailIfReady(u),this.notifyLiveConversation(u),u},liveAuditPatch(e,t,n){let r=this.liveAuditStateAfter(e._live_state,n),i=this.liveAuditEventFlushed(e._live_state)||this.liveAuditEventFlushed(r),a={...t,_live:!0,_live_state:r,_audit_flushed:i,_live_pending:!i};return n===`audit.stream`?a._response_partial=!0:this.liveAuditStateSettled(n)&&(a._response_partial=!1),a},mergeLiveAuditChild(e,t){let n=this.auditThreadChildren;if(!n||typeof n!=`object`)return null;let r=String(e.id||``).trim(),i=String(e.request_id||``).trim(),a=Object.keys(n);for(let e=0;emS(e,r,i));if(c<0)continue;let l=this.mergeLiveAuditPatch(s[c]||{},t),u=[...s];return u.splice(c,1,l),this.auditThreadChildren={...n,[a[e]]:{...o,entries:u}},l}return null},regroupLiveAuditHead(e){if(!this.auditGroupSessions)return null;let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=String(e.id||``).trim(),i=n.findIndex(e=>String(e.id||``).trim()===r);if(i<0)return null;let a=n.findIndex((e,n)=>n!==i&&String(e.session_id||``).trim()===t);if(a<0)return null;let o=n[a],s=Date.parse(o&&o.timestamp),c=Date.parse(e&&e.timestamp),l=Number.isFinite(s)&&Number.isFinite(c)&&s>c,u=l?o:e,d=l?e:o,f={...u,session_count:Math.max(1,Number(o.session_count||1))+Math.max(1,Number(e.session_count||1))},p=n.filter((e,t)=>t!==i&&t!==a);return p.unshift(f),this.auditLog.entries=p,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-1),this.prependLiveAuditThreadChild(t,d),f},foldLiveAuditIntoThread(e){let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(e=>String(e.session_id||``).trim()===t);if(r<0)return null;let i=n[r],a=Number(i.session_count),o=this.mergeLiveAuditUsagePatch({...e,session_count:(Number.isFinite(a)&&a>0?a:1)+1}),s=[...n];return s.splice(r,1),s.unshift(o),this.auditLog.entries=s,this.prependLiveAuditThreadChild(t,i),o},prependLiveAuditThreadChild(e,t){let n=this.auditThreadChildren||{},r=n[e],i={...t};delete i.session_count;let a=r&&Array.isArray(r.entries)?{...r,entries:[i,...r.entries],total:Number(r.total||r.entries.length)+1}:{loading:!1,loaded:!1,entries:[i],total:1};this.auditThreadChildren={...n,[e]:a}},removeLiveAuditThreadChild(e,t){let n=this.auditThreadChildren;!n||typeof n!=`object`||Object.keys(n).forEach(r=>{let i=n[r],a=i&&Array.isArray(i.entries)?i.entries:[],o=a.filter(n=>!mS(n,e,t)),s=a.length-o.length;s!==0&&(this.auditThreadChildren={...this.auditThreadChildren,[r]:{...i,entries:o,total:Math.max(0,Number(i.total||a.length)-s)}},this.decrementLiveAuditThreadCount(r,s))})},decrementLiveAuditThreadCount(e,t){let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(t=>String(t.session_id||``).trim()===e);if(r<0)return;let i=n[r],a=[...n];a.splice(r,1,{...i,session_count:Math.max(1,Number(i.session_count||1)-t)}),this.auditLog.entries=a},mergeLiveAuditPatch(e,t){let n={...e,...t};return t.data===void 0&&e.data!==void 0?n.data=e.data:e.data&&t.data&&typeof e.data==`object`&&typeof t.data==`object`&&!Array.isArray(e.data)&&!Array.isArray(t.data)&&(n.data={...e.data,...t.data}),this.mergeLiveAuditUsagePatch(n)},mergeLiveAuditUsagePatch(e){let t=this.liveUsageEntryForAudit(e);if(!t)return e;let n=this.auditEntryWithLiveUsage(e,t);return this.removeSkippedLiveUsage(t),n},liveUsageEntryForAudit(e){let t=String(e&&e.request_id||``).trim();return t&&((this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[]).find(e=>String(e&&e.request_id||``).trim()===t)||this.skippedLiveUsageByRequestId&&this.skippedLiveUsageByRequestId[t])||null},notifyLiveConversation(e){e&&typeof this.refreshLiveConversation==`function`&&this.refreshLiveConversation(e)},fetchExpandedAuditDetailIfReady(e){!e||!this.isAuditEntryExpanded||!this.isAuditEntryExpanded(e)||String(e._live_state||``).trim()!==`audit.flushed`&&!e._audit_flushed||typeof this.fetchAuditEntryDetail==`function`&&this.fetchAuditEntryDetail(e)},liveAuditStateRank(e){switch(String(e||``).trim()){case`audit.started`:return 10;case`audit.updated`:case`audit.stream`:return 20;case`audit.completed`:return 30;case`audit.failed`:case`audit.flushed`:case`audit.detail`:return 40;default:return 0}},liveAuditStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveAuditStateRank(n)>this.liveAuditStateRank(r)?n:r},liveAuditStateSettled(e){return this.liveAuditStateRank(e)>=this.liveAuditStateRank(`audit.completed`)},liveAuditEventFlushed(e){let t=String(e||``).trim();return t===`audit.failed`||t===`audit.flushed`||t===`audit.detail`},removeLiveAuditEntry(e){if(!e||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim();if(!t&&!n)return;let r=this.auditLog.entries,i=[],a=0,o=0,s=!1;r.forEach(e=>{if(!mS(e,t,n)){i.push(e);return}a++;let r=String(e.session_id||``).trim(),c=Math.max(1,Number(e.session_count||1));if(!this.auditGroupSessions||!r||c<=1)return;o++;let l=this.auditThreadChildren&&this.auditThreadChildren[r],u=l&&Array.isArray(l.entries)?l.entries.filter(e=>!mS(e,t,n)):[];if(u.length===0){s=!0;return}let d={...u[0],session_id:r,session_count:c-1};i.push(d),this.auditThreadChildren={...this.auditThreadChildren,[r]:{...l,entries:u.slice(1),total:Math.max(0,Number(l.total||c)-1)}}}),a>0&&(this.auditLog.entries=i,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-a+o)),this.removeLiveAuditThreadChild(t,n),s&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},mergeLiveUsageEntry(e,t){if(!e||typeof e!=`object`)return;e={...e,_live_state:t||e._live_state||`usage.completed`};let n=String(e.id||``).trim();if(!n)return;let r=this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[],i=r.findIndex(e=>String(e.id||``).trim()===n);if(i>=0){let t=r[i]||{},n=this.mergeLiveUsagePatch(t,e);if(this.applyLiveUsageToAudit(n),this.liveUsageShouldSkip(n)){r.splice(i,1),this.usageLog.entries=[...r],this.usageLog.total=Math.max(0,Number(this.usageLog.total||0)-1),this.storeSkippedLiveUsage(n);return}r.splice(i,1,n),this.usageLog.entries=[...r],this.removeSkippedLiveUsage(n);return}let a=this.mergeLiveUsagePatch(this.liveUsageSeedForEntry(e),e);if(this.applyLiveUsageToAudit(a),this.liveUsageShouldSkip(a)){this.storeSkippedLiveUsage(a);return}this.removeSkippedLiveUsage(a),this.usageLog.entries=[a,...r].slice(0,this.usageLog.limit||50),this.usageLog.total=Number(this.usageLog.total||0)+1},mergeLiveUsagePatch(e,t){e=e&&typeof e==`object`?e:{};let n=this.liveUsageStateAfter(e._live_state,t&&t._live_state),r=this.liveUsageEventFlushed(e)||this.liveUsageEventFlushed({...t,_live_state:n});return{...e,...t,_live:!0,_live_state:n||`usage.completed`,_live_pending:!r,_usage_flushed:r}},liveUsageShouldSkip(e){return!!(this.usageLogHideCached&&this.liveUsageEntryCached(e))||!this.usageLiveInsertAllowed()},liveUsageSeedForEntry(e){return this.skippedLiveUsageForEntry(e)||this.auditLiveUsageForEntry(e)},skippedLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();return t&&this.skippedLiveUsageByRequestId?this.skippedLiveUsageByRequestId[t]:null},auditLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return null;let n=this.auditLog.entries.find(e=>String(e&&e.request_id||``).trim()===t),r=n&&n.usage&&typeof n.usage==`object`&&!Array.isArray(n.usage)?n.usage:null;return r?{id:e&&e.id,request_id:t,entries:r.entries,input_tokens:r.input_tokens,uncached_input_tokens:r.uncached_input_tokens,cached_input_tokens:r.cached_input_tokens,cache_write_input_tokens:r.cache_write_input_tokens,output_tokens:r.output_tokens,total_tokens:r.total_tokens,cached_input_ratio:r.cached_input_ratio,estimated_cached_characters:r.estimated_cached_characters,_live_state:n._usage_live_state,_live_pending:n._usage_live_pending,_usage_flushed:n._usage_flushed}:null},storeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&((!this.skippedLiveUsageByRequestId||typeof this.skippedLiveUsageByRequestId!=`object`||Array.isArray(this.skippedLiveUsageByRequestId))&&(this.skippedLiveUsageByRequestId={}),this.skippedLiveUsageByRequestId[t]=e)},removeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&this.skippedLiveUsageByRequestId&&delete this.skippedLiveUsageByRequestId[t]},liveUsageEntryCached(e){let t=String(e&&e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`||!!(e&&e.cache_hit)},liveUsageEventFlushed(e){let t=String(e&&e._live_state||``).trim();return!!(e&&e._usage_flushed)||t===`usage.failed`||t===`usage.flushed`},liveUsageStateRank(e){switch(String(e||``).trim()){case`usage.completed`:return 10;case`usage.failed`:case`usage.flushed`:return 20;default:return 0}},liveUsageStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveUsageStateRank(n)>this.liveUsageStateRank(r)?n:r},applyLiveUsageToAudit(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let n=this.auditLog.entries.findIndex(e=>String(e.request_id||``).trim()===t);if(n>=0){let t=this.auditLog.entries[n];this.auditLog.entries.splice(n,1,this.auditEntryWithLiveUsage(t,e)),this.auditLog.entries=[...this.auditLog.entries]}let r=this.auditThreadChildren;if(!r||typeof r!=`object`)return;let i=r,a=!1;Object.keys(r).forEach(n=>{let r=i[n],o=r&&Array.isArray(r.entries)?r.entries:[],s=o.findIndex(e=>String(e.request_id||``).trim()===t);if(s<0)return;let c=[...o];c.splice(s,1,this.auditEntryWithLiveUsage(o[s],e)),i={...i,[n]:{...r,entries:c}},a=!0}),a&&(this.auditThreadChildren=i)},auditEntryWithLiveUsage(e,t){let n=this.liveUsageStateAfter(e._usage_live_state,t._live_state||`usage.completed`),r=this.liveUsageEventFlushed({_live_state:n,_usage_flushed:e._usage_flushed||t._usage_flushed});return{...e,usage:this.liveUsageSummary(t,e.usage),_usage_live_state:n||`usage.completed`,_usage_live_pending:!r,_usage_flushed:r}},liveUsageSummary(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=this.liveNumber(e.input_tokens,this.liveNumber(n.input_tokens,0)),i=this.liveNumber(e.output_tokens,this.liveNumber(n.output_tokens,0)),a=this.liveNumber(e.uncached_input_tokens,this.liveNumber(n.uncached_input_tokens,0)),o=this.liveNumber(e.cached_input_tokens,this.liveNumber(n.cached_input_tokens,0)),s=this.liveNumber(e.cache_write_input_tokens,this.liveNumber(n.cache_write_input_tokens,0));r>0&&a+o+s===0&&(a=r);let c=a+o+s||r,l=c+i||this.liveNumber(e.total_tokens,this.liveNumber(n.total_tokens,0)),u=this.liveNumber(e.cached_input_ratio,this.liveNumber(n.cached_input_ratio,c>0?o/c:0));return{entries:Math.max(1,this.liveNumber(e.entries,this.liveNumber(n.entries,1))),input_tokens:c,uncached_input_tokens:a,cached_input_tokens:o,cache_write_input_tokens:s,output_tokens:i,total_tokens:l,cached_input_ratio:u,estimated_cached_characters:this.liveNumber(e.estimated_cached_characters,this.liveNumber(n.estimated_cached_characters,o*4))}},liveNumber(e,t){let n=Number(e);return Number.isFinite(n)?n:t},auditEntryShouldFetchDetail(e){return!e||e._detail_loading||e._detail_loaded||this.auditEntryLiveDetailPending(e)?!1:this.auditEntryNeedsPersistedLiveDetail(e)||e.bodies_omitted?!0:!this.auditEntryHasDetailData(e)},auditEntryLiveDetailPending(e){if(!e||!e._live)return!1;let t=String(e._live_state||``).trim();return t===`audit.failed`||!e._audit_flushed&&t!==`audit.flushed`&&t!==`audit.detail`},auditEntryNeedsPersistedLiveDetail(e){return!!(e&&e._live&&!e._detail_loaded)},auditEntryHasDetailData(e){let t=e&&e.data;return!t||typeof t!=`object`?!1:t.request_headers!==void 0||t.response_headers!==void 0||t.request_body!==void 0||t.response_body!==void 0||t.request_body_too_big_to_handle!==void 0||t.response_body_too_big_to_handle!==void 0||t.user_agent!==void 0||t.api_key_hash!==void 0||t.temperature!==void 0||t.max_tokens!==void 0||t.error_message!==void 0||t.error_code!==void 0},clearAuditDetailLoading(e){if(!e)return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim(),r=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],i=r.find(e=>t&&String(e.id||``).trim()===t?!0:!!(n&&String(e.request_id||``).trim()===n)),a=i||e;a._detail_loading=!1,i&&(this.auditLog.entries=[...r])}}}var vS=class{#e=k(j({entries:[],total:0,limit:25,offset:0}));get auditLog(){return I(this.#e)}set auditLog(e){A(this.#e,e,!0)}#t=k(j({entries:[],total:0,limit:50,offset:0}));get usageLog(){return I(this.#t)}set usageLog(e){A(this.#t,e,!0)}#n=k(``);get auditSearch(){return I(this.#n)}set auditSearch(e){A(this.#n,e,!0)}#r=k(``);get auditMethod(){return I(this.#r)}set auditMethod(e){A(this.#r,e,!0)}#i=k(``);get auditStatusCode(){return I(this.#i)}set auditStatusCode(e){A(this.#i,e,!0)}#a=k(``);get auditStream(){return I(this.#a)}set auditStream(e){A(this.#a,e,!0)}#o=k(Ta(`gomodel_audit_group_sessions`,`true`)!==`false`);get auditGroupSessions(){return I(this.#o)}set auditGroupSessions(e){A(this.#o,e,!0)}#s=k(j({}));get auditThreadChildren(){return I(this.#s)}set auditThreadChildren(e){A(this.#s,e,!0)}#c=k(``);get usageLogSearch(){return I(this.#c)}set usageLogSearch(e){A(this.#c,e,!0)}#l=k(``);get usageFilterModel(){return I(this.#l)}set usageFilterModel(e){A(this.#l,e,!0)}#u=k(``);get usageFilterProvider(){return I(this.#u)}set usageFilterProvider(e){A(this.#u,e,!0)}#d=k(``);get usageFilterLabel(){return I(this.#d)}set usageFilterLabel(e){A(this.#d,e,!0)}#f=k(``);get usageFilterUserPath(){return I(this.#f)}set usageFilterUserPath(e){A(this.#f,e,!0)}#p=k(!1);get usageLogHideCached(){return I(this.#p)}set usageLogHideCached(e){A(this.#p,e,!0)}#m=k(!1);get liveLogsStreaming(){return I(this.#m)}set liveLogsStreaming(e){A(this.#m,e,!0)}liveLogsLastSeq=0;liveLogsReconnectAttempts=0;liveLogsReconnectTimer=null;liveLogsController=null;skippedLiveUsageByRequestId=null;fetchUsage=null;fetchAuditLog=null;isAuditEntryExpanded=null;refreshLiveConversation=null;noteLiveTokenUsage=null;get page(){return Va.page}get customStartDate(){return Ds.customStartDate}get customEndDate(){return Ds.customEndDate}get followsToday(){return Ds.followsToday}liveLogsEnabled(){return go.liveLogsVisible()}async startLiveLogs(){typeof fetch!=`function`||typeof ReadableStream>`u`||(await go.ensureLoaded(),this.liveLogsEnabled()&&(this.stopLiveLogs(),this.liveLogsController=typeof AbortController==`function`?new AbortController:null,this.readLiveLogsStream(this.liveLogsController)))}stopLiveLogs(){this.liveLogsStreaming=!1,this.liveLogsReconnectTimer&&=(clearTimeout(this.liveLogsReconnectTimer),null),this.liveLogsController&&typeof this.liveLogsController.abort==`function`&&this.liveLogsController.abort(),this.liveLogsController=null}ensureLiveLogs(){this.liveLogsController||this.liveLogsReconnectTimer||this.startLiveLogs()}async readLiveLogsStream(e){let t={};e&&(t.signal=e.signal);let n=gS(this.liveLogsLastSeq),r=q.generation;try{let i=await co(n,t);if(i.status===401){if(q.handleUnauthorized(r),r{this.liveLogsReconnectTimer=null,this.startLiveLogs()},t)}async fetchAuditEntryDetail(e){if(!this.auditEntryShouldFetchDetail(e))return;let t=String(e.id||``).trim();if(!t)return;e._detail_loading=!0;let n=e;try{let e=await uo(`/admin/audit/detail?log_id=`+encodeURIComponent(t),{label:`audit detail`});if(e.stale||!e.ok)return;n=this.mergeLiveAuditEntry(e.data,`audit.detail`)||n}catch(e){console.error(`Failed to fetch audit detail:`,e)}finally{this.clearAuditDetailLoading(n)}}};Object.assign(vS.prototype,_S());var yS=new vS;if(typeof window<`u`){let e=!1;window.addEventListener(`pagehide`,()=>{e=!!yS.liveLogsController,yS.stopLiveLogs()}),window.addEventListener(`pageshow`,t=>{t.persisted&&e&&yS.ensureLiveLogs()})}var bS=null;Mn(()=>{An(()=>{let e=q.refreshTick;if(bS===null){bS=e;return}e!==bS&&(bS=e,Er(()=>{yS.stopLiveLogs(),yS.startLiveLogs()}))})});function xS(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,uncached_input_tokens:0,cached_input_tokens:0,cache_write_input_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null,rewrite_tokens_saved:0,rewrite_cost_saved:null}}function SS(){return{entries:[],total:0,limit:50,offset:0}}function CS(e,t){let n=[[`model`,e&&e.model],[`provider`,e&&e.provider],[`label`,e&&e.label],[`user_path`,e&&e.user_path]],r=``;for(let[e,i]of n)!i||e===t||(r+=`&`+e+`=`+encodeURIComponent(i));return r}function wS({limit:e,offset:t,hideCached:n,search:r}){let i=`&limit=`+e+`&offset=`+t;return i+=`&cache_mode=`+(n?`uncached`:`all`),r&&(i+=`&search=`+encodeURIComponent(r)),i}function TS(e,t){let n=new Set(e||[]);return t&&n.add(t),[...n].sort()}function ES(e,t){let n=Number(t&&t.total_requests||0)-Number(e&&e.total_requests||0);return Number.isFinite(n)&&n>0?n:0}function DS(e,t,n){let r=n?e:t,i=Number(r&&r.total_requests||0);return Number.isFinite(i)?i:0}function OS(e,t,n){let r=ES(e,t);return r<=0?``:n?ts(r)+` cached requests hidden`:ts(Number(e&&e.total_requests||0))+` to providers + `+ts(r)+` from cache`}function kS(e){let t=e||{};return t.total_input_cost===null||t.total_input_cost===void 0?``:ns(t.total_input_cost)+` input + `+ns(t.total_output_cost)+` output`}function AS(e){let t=Number(e&&e.rewrite_tokens_saved||0);return Number.isFinite(t)&&t>0?t:0}function jS(e){return AS(e)>0}function MS(e){let t=e||{};return t.rewrite_cost_saved===void 0?null:t.rewrite_cost_saved}function NS(){return`Estimated at 4 net characters removed per token`}function PS(e,t){return t===`costs`?ns(MS(e)):as(AS(e))}function FS(e,t){let n=t===`costs`,r=n?Number(MS(e)):AS(e);if(!Number.isFinite(r)||r<=0)return null;let i=e&&(n?e.total_cost:e.total_input_tokens);if(i==null)return null;let a=Number(i);return!Number.isFinite(a)||a<0?null:r/(a+r)*100}function IS(e,t){let n=FS(e,t);return n===null?``:(n<.1?`<0.1`:n.toFixed(1))+`% less`}function LS(e,t){let n=AS(e);if(n<=0)return``;let r=[ts(n)+` estimated prompt token-transmissions removed across provider requests`,NS(),`Savings are summed per provider request; resent conversation history is counted again`],i=MS(e);i!=null&&(r.push(ns(i)+` estimated gross input cost avoided`),r.push(`Prompt-cache changes caused by rewriting are not included`));let a=IS(e,t);return a&&r.push(a+` than the same traffic without rewriting (`+(t===`costs`?`cost`:`tokens`)+`)`),r.join(` +`)}function RS(e){return String(e&&e.cost_source||``).trim()}function zS(e){let t=RS(e);return t===`openrouter_credits`||t===`xai_cost_in_usd_ticks`}function BS(e){switch(RS(e)){case`openrouter_credits`:return`Costs from OpenRouter USD-based credits.`;case`xai_cost_in_usd_ticks`:return`Costs from xAI usage.cost_in_usd_ticks.`;default:return``}}function VS(e){return String(e&&e.cache_type||``).trim().toLowerCase()}function HS(e){let t=VS(e);return t===`exact`||t===`semantic`}function US(e){let t=VS(e);return t===`exact`?`Exact`:t===`semantic`?`Semantic`:`-`}function WS(e,t){let n=t?String(t):``;return HS(e)?n?`Saved by cache — not charged +`+n:`Saved by cache — not charged`:n}function GS(e){let t=Number(e&&e.cached_input_ratio);return!Number.isFinite(t)||t<=0?0:Math.min(1,t)}function KS(e){return Number(e&&e.cached_input_tokens||0)>0}function qS(e){return KS(e)?(GS(e)*100).toFixed(1)+`%`:``}function JS(e){if(!KS(e))return``;let t=Number(e.cached_input_tokens||0),n=Number(e.uncached_input_tokens||0),r=Number(e.cache_write_input_tokens||0),i=t+n+r,a=[ts(t)+` cached / `+ts(i)+` input tokens`];return r>0&&a.push(ts(r)+` cache write`),a.join(` +`)}function YS(e){let t=[];if(BS(e)&&(t.push(BS(e)),t.push(``)),t.push(`Input: `+ns(e.input_cost)),t.push(`Output: `+ns(e.output_cost)),e.raw_data){t.push(``);for(let[n,r]of Object.entries(e.raw_data)){let e=n.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),i=r&&typeof r==`object`?JSON.stringify(r):ts(r);t.push(e+`: `+i)}}return t.join(` +`)}function XS(e){return Array.isArray(e&&e.labels)?e.labels:[]}function ZS(e,t,n){return(e||[]).length>0||t?!0:(n||[]).some(e=>XS(e).length>0)}function QS(e){return e&&typeof e.total_tokens==`number`?e.total_tokens:(e&&e.input_tokens||0)+(e&&e.output_tokens||0)}function $S(e,t){return t?e.total_cost||0:QS(e)}function eC(e,t){return[...e||[]].sort((e,n)=>t?(n.total_cost||0)-(e.total_cost||0):$S(n,t)-$S(e,t))}function tC(e){let t=Array.isArray(e)?e:[];if(t.length===0)return!1;if(t.length!==1)return!0;let n=String(t[0]&&t[0].user_path||``).trim();return n!==``&&n!==`/`}function nC(e){return(e||`chart`)===`chart`||e===`stacked`}function rC(e,t,n){let r=eC(e,n),i=e=>Number(e)||0,a=e=>n?Math.min(i(e.cached_input_cost),i(e.input_cost)):i(e.cached_input_tokens),o=e=>n?i(e.input_cost)-a(e):i(e.uncached_input_tokens)+i(e.cached_input_tokens)+i(e.cache_write_input_tokens)>0?i(e.uncached_input_tokens)+i(e.cache_write_input_tokens):i(e.input_tokens),s=e=>i(n?e.output_cost:e.output_tokens),c=e=>n?0:i(e.local_cached_input_tokens),l=e=>n?0:i(e.local_cached_output_tokens),u=r.slice(0,10),d=r.slice(10),f=u.map(t),p=u.map(o),m=u.map(s),h=u.map(a),g=u.map(c),_=u.map(l);if(d.length>0){f.push(`Other`);let e=e=>d.reduce((t,n)=>t+e(n),0);p.push(e(o)),m.push(e(s)),h.push(e(a)),g.push(e(c)),_.push(e(l))}return{labels:f,inputs:p,outputs:m,prompts:h,localIns:g,localOuts:_}}function iC(e){return Math.max(200,e*32+72)}var J=new class{#e=k(`tokens`);get usageMode(){return I(this.#e)}set usageMode(e){A(this.#e,e,!0)}get usageFilterModel(){return yS.usageFilterModel}set usageFilterModel(e){yS.usageFilterModel=e}get usageFilterProvider(){return yS.usageFilterProvider}set usageFilterProvider(e){yS.usageFilterProvider=e}get usageFilterLabel(){return yS.usageFilterLabel}set usageFilterLabel(e){yS.usageFilterLabel=e}get usageFilterUserPath(){return yS.usageFilterUserPath}set usageFilterUserPath(e){yS.usageFilterUserPath=e}#t=k(j({models:[],providers:[],labels:[]}));get usageFacetOptions(){return I(this.#t)}set usageFacetOptions(e){A(this.#t,e,!0)}#n=k(j(xS()));get usageSummary(){return I(this.#n)}set usageSummary(e){A(this.#n,e,!0)}#r=k(j(xS()));get usageSummaryAll(){return I(this.#r)}set usageSummaryAll(e){A(this.#r,e,!0)}#i=k(j([]));get modelUsage(){return I(this.#i)}set modelUsage(e){A(this.#i,e,!0)}#a=k(j([]));get userPathUsage(){return I(this.#a)}set userPathUsage(e){A(this.#a,e,!0)}#o=k(j([]));get labelUsage(){return I(this.#o)}set labelUsage(e){A(this.#o,e,!0)}get usageLog(){return yS.usageLog}set usageLog(e){yS.usageLog=e}get usageLogSearch(){return yS.usageLogSearch}set usageLogSearch(e){yS.usageLogSearch=e}get usageLogHideCached(){return yS.usageLogHideCached}set usageLogHideCached(e){yS.usageLogHideCached=e}#s=k(`chart`);get modelUsageView(){return I(this.#s)}set modelUsageView(e){A(this.#s,e,!0)}#c=k(`chart`);get userPathUsageView(){return I(this.#c)}set userPathUsageView(e){A(this.#c,e,!0)}#l=k(`chart`);get labelUsageView(){return I(this.#l)}set labelUsageView(e){A(this.#l,e,!0)}#u=k(!1);get summaryLoading(){return I(this.#u)}set summaryLoading(e){A(this.#u,e,!0)}#d=k(!1);get modelUsageLoading(){return I(this.#d)}set modelUsageLoading(e){A(this.#d,e,!0)}#f=k(!1);get userPathUsageLoading(){return I(this.#f)}set userPathUsageLoading(e){A(this.#f,e,!0)}#p=k(!1);get labelUsageLoading(){return I(this.#p)}set labelUsageLoading(e){A(this.#p,e,!0)}#m=k(!1);get usageLogLoading(){return I(this.#m)}set usageLogLoading(e){A(this.#m,e,!0)}#h={};#g(e){this.#h[e]&&this.#h[e].abort();let t=new AbortController;return this.#h[e]=t,t}#_(e,t){this.#h[e]===t&&(this.#h[e]=null)}filterQueryStr(e){return CS({model:this.usageFilterModel,provider:this.usageFilterProvider,label:this.usageFilterLabel,user_path:this.usageFilterUserPath},e)}onUsageFilterChanged(){this.fetchUsagePage()}toggleUsageLabelFilter(e){this.usageFilterLabel=this.usageFilterLabel===e?``:e,this.onUsageFilterChanged()}usageLabelChipTitle(e){return this.usageFilterLabel===e?`Clear label filter`:`Filter usage by "`+e+`"`}toggleUsageMode(e){this.usageMode=e,Va.navigate(`usage`,e===`costs`?`costs`:null)}toggleUsageChartView(e,t){e===`model`&&(this.modelUsageView=t),e===`userPath`&&(this.userPathUsageView=t),e===`label`&&(this.labelUsageView=t)}usageFilterModelOptions(){return TS(this.usageFacetOptions.models,this.usageFilterModel)}usageFilterProviderOptions(){return TS(this.usageFacetOptions.providers,this.usageFilterProvider)}usageFilterLabelOptions(){return TS(this.usageFacetOptions.labels,this.usageFilterLabel)}async fetchUsagePage(){await go.ensureLoaded();let e=[this.fetchUsagePageSummary(),this.fetchUsageFacetOptions(),this.fetchModelUsage(),this.fetchUserPathUsage(),this.fetchLabelUsage(),this.fetchUsageLog(!0)];Ns.cacheAnalyticsEnabled()&&e.push(Ns.fetchCacheOverview(this.filterQueryStr())),await Promise.all(e)}async fetchUsagePageSummary(){let e=this.#g(`summary`);this.summaryLoading=!0;try{let t=Ds.queryStr()+this.filterQueryStr(),[n,r]=await Promise.all([uo(`/admin/usage/summary?`+t+`&cache_mode=uncached`,{label:`usage page summary`,signal:e.signal}),uo(`/admin/usage/summary?`+t+`&cache_mode=all`,{label:`usage page summary (all)`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.usageSummary=xS(),this.usageSummaryAll=xS();return}this.usageSummary=n.data&&typeof n.data==`object`?n.data:xS(),this.usageSummaryAll=r.data&&typeof r.data==`object`?r.data:xS()}catch(e){if(po(e))return;console.error(`Failed to fetch usage page summary:`,e),this.usageSummary=xS(),this.usageSummaryAll=xS()}finally{this.#_(`summary`,e),this.#h.summary===null&&(this.summaryLoading=!1)}}async fetchUsageFacetOptions(){let e=this.#g(`facets`);try{let t=async(t,n)=>{let r=await uo(t+`?`+Ds.queryStr()+this.filterQueryStr(n),{label:`usage facet options`,signal:e.signal});return r.stale?null:r.ok&&Array.isArray(r.data)?r.data:[]},n=t(`/admin/usage/models`,`model`),r=!this.usageFilterModel&&!this.usageFilterProvider,[i,a,o]=await Promise.all([n,r?n:t(`/admin/usage/models`,`provider`),t(`/admin/usage/labels`,`label`)]);if(e.signal.aborted||i===null||a===null||o===null)return;this.usageFacetOptions={models:i.map(e=>e&&e.model).filter(Boolean),providers:a.map(e=>ds(e)).filter(Boolean),labels:o.map(e=>e&&e.label).filter(Boolean)}}catch(e){if(po(e))return;console.error(`Failed to fetch usage facet options:`,e),this.usageFacetOptions={models:[],providers:[],labels:[]}}finally{this.#_(`facets`,e)}}async#v(e,t,n,r,i){let a=this.#g(e);i(!0);try{let e=await uo(t+`?`+Ds.queryStr()+this.filterQueryStr(),{label:n,signal:a.signal});if(e.stale||a.signal.aborted)return;if(!e.ok){r([]);return}r(Array.isArray(e.data)?e.data:[])}catch(e){if(po(e))return;console.error(`Failed to fetch `+n+`:`,e),r([])}finally{this.#_(e,a),this.#h[e]===null&&i(!1)}}fetchModelUsage(){return this.#v(`modelUsage`,`/admin/usage/models`,`usage models`,e=>this.modelUsage=e,e=>this.modelUsageLoading=e)}fetchUserPathUsage(){return this.#v(`userPathUsage`,`/admin/usage/user-paths`,`usage user paths`,e=>this.userPathUsage=e,e=>this.userPathUsageLoading=e)}fetchLabelUsage(){return this.#v(`labelUsage`,`/admin/usage/labels`,`usage labels`,e=>this.labelUsage=e,e=>this.labelUsageLoading=e)}async fetchUsageLog(e){let t=this.#g(`usageLog`);this.usageLogLoading=!0;try{e&&(this.usageLog.offset=0);let n=Ds.queryStr()+this.filterQueryStr();n+=wS({limit:this.usageLog.limit,offset:this.usageLog.offset,hideCached:this.usageLogHideCached,search:this.usageLogSearch});let r=await uo(`/admin/usage/log?`+n,{label:`usage log`,signal:t.signal});if(r.stale||t.signal.aborted)return;if(!r.ok){this.usageLog=SS();return}let i=r.data&&typeof r.data==`object`?r.data:SS();i.entries||=[],this.usageLog=i}catch(e){if(po(e))return;console.error(`Failed to fetch usage log:`,e),this.usageLog=SS()}finally{this.#_(`usageLog`,t),this.#h.usageLog===null&&(this.usageLogLoading=!1)}}usageLogNextPage(){this.usageLog.offset+this.usageLog.limit0&&(this.usageLog.offset=Math.max(0,this.usageLog.offset-this.usageLog.limit),this.fetchUsageLog(!1))}};yS.fetchUsage=()=>{Va.page===`usage`&&J.fetchUsagePage()};var aC=R(`
`);function oC(e,t){E(t,!0);let n=G(t,`value`,15,``),r=G(t,`placeholder`,3,``),i=G(t,`label`,3,``),a=G(t,`id`,3,void 0),o=G(t,`oninput`,3,void 0),s=G(t,`class`,3,``);var c=aC(),l=M(c);K(l,{name:`search`,class:`filter-input-icon`});var u=P(l,2);na(u),T(c),F(()=>{U(c,1,Fi([`filter-input-wrap`,s()]),`svelte-30xz1k`),W(u,`id`,a()),W(u,`placeholder`,r()),W(u,`aria-label`,i())}),L(`input`,u,function(...e){o()?.apply(this,e)}),da(u,n),z(e,c),D()}Hr([`input`]);function sC(e,t=300){let n=null,r=(...r)=>{clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)};return r.cancel=()=>{clearTimeout(n),n=null},r}var cC=R(``),lC=R(``),uC=R(`
`);function dC(e,t){E(t,!0);let n=sC(()=>J.onUsageFilterChanged());An(()=>n.cancel);var r=uC(),i=M(r),a=M(i);a.value=a.__value=``,H(P(a),16,()=>J.usageFilterModelOptions(),e=>e,(e,t)=>{var n=cC(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(i);var o=P(i,2),s=M(o);s.value=s.__value=``,H(P(s),16,()=>J.usageFilterProviderOptions(),e=>e,(e,t)=>{var n=cC(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(o);var c=P(o,2),l=e=>{var t=lC(),n=M(t);n.value=n.__value=``,H(P(n),16,()=>J.usageFilterLabelOptions(),e=>e,(e,t)=>{var n=cC(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(t),L(`change`,t,()=>J.onUsageFilterChanged()),Gi(t,()=>J.usageFilterLabel,e=>J.usageFilterLabel=e),z(e,t)},u=O(()=>J.usageFilterLabelOptions().length>0);V(c,e=>{I(u)&&e(l)}),oC(P(c,2),{class:`usage-page-filters-user-path`,placeholder:`User path /team/alpha`,label:`Filter by user path`,get oninput(){return n},get value(){return J.usageFilterUserPath},set value(e){J.usageFilterUserPath=e}}),T(r),L(`change`,i,()=>J.onUsageFilterChanged()),Gi(i,()=>J.usageFilterModel,e=>J.usageFilterModel=e),L(`change`,o,()=>J.onUsageFilterChanged()),Gi(o,()=>J.usageFilterProvider,e=>J.usageFilterProvider=e),z(e,r),D()}Hr([`change`]);var fC=R(`
Cache Saved
Cache Hits
`,1);function pC(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=fC(),n=N(t),r=P(M(n),2),i=M(r,!0);T(r),T(n);var a=P(n,2),o=P(M(a),2),s=M(o,!0);T(o),T(a),F((e,t)=>{B(i,e),B(s,t)},[()=>ns(Ns.cacheOverview.summary.total_saved_cost),()=>ts(Ns.cacheOverview.summary.total_hits)]),z(e,t)},a=O(()=>Ns.cacheAnalyticsEnabled());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}var mC=R(` `),hC=R(`
Pro Saved
`),gC=R(`
Total Requests
Estimated Cost
`);function _C(e,t){E(t,!0);let n=O(()=>jS(J.usageSummary)),r=O(()=>PS(J.usageSummary,J.usageMode)),i=O(()=>IS(J.usageSummary,J.usageMode));var a=gC(),o=M(a),s=P(M(o),2),c=M(s),l=e=>{_x(e,{size:18,label:`Loading usage summary`})},u=e=>{var t=Zr();F(e=>B(t,e),[()=>ts(DS(J.usageSummary,J.usageSummaryAll,J.usageLogHideCached))]),z(e,t)};V(c,e=>{J.summaryLoading?e(l):e(u,-1)}),T(s),T(o);var d=P(o,2),f=P(M(d),2),p=M(f),m=e=>{_x(e,{size:18,label:`Loading usage summary`})},h=e=>{var t=Zr();F(e=>B(t,e),[()=>ns(J.usageSummary.total_cost)]),z(e,t)};V(p,e=>{J.summaryLoading?e(m):e(h,-1)}),T(f),T(d);var g=P(d,2),_=e=>{var t=hC(),n=P(M(t),2),a=M(n),o=M(a,!0);T(a);var s=P(a,2),c=e=>{var t=mC(),n=M(t,!0);T(t),F(()=>B(n,I(i))),z(e,t)};V(s,e=>{I(i)&&e(c)}),T(n),T(t),F(e=>{W(n,`title`,e),B(o,I(r))},[()=>LS(J.usageSummary,J.usageMode)]),z(e,t)};V(g,e=>{I(n)&&e(_)}),pC(P(g,2),{}),T(a),F((e,t)=>{W(s,`title`,e),W(f,`title`,t)},[()=>OS(J.usageSummary,J.usageSummaryAll,J.usageLogHideCached),()=>kS(J.usageSummary)]),z(e,a),D()}function vC(e,t,n,r){let{stacked:i=!1,costs:a=!1,resolve:o=e=>e}=r||{},s=e=>a?`$`+Math.abs(e).toFixed(2):as(Math.abs(e)),c=e=>a?`$`+Math.abs(e).toFixed(4):Math.abs(e).toLocaleString(),l=e=>e.map(e=>i?Math.abs(e):-Math.abs(e)),u=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:`transparent`,borderWidth:0,borderRadius:4,maxBarThickness:22}),d=e=>(e||[]).some(e=>Math.abs(e)>0),f=[u(a?`Input Cost`:`Input Tokens`,l(n.inputs),o(`var(--token-input)`)),u(a?`Output Cost`:`Output Tokens`,n.outputs,o(`var(--token-output)`))];return d(n.prompts)&&f.push(u(a?`Prompt Cached Cost`:`Prompt Cached`,l(n.prompts),o(`var(--token-prompt)`))),!a&&d(n.localIns)&&f.push(u(`Locally Cached (Input)`,l(n.localIns),o(`var(--token-local)`))),!a&&d(n.localOuts)&&f.push(u(`Locally Cached (Output)`,n.localOuts,o(`var(--token-local)`))),{type:`bar`,data:{labels:t,datasets:f},options:{indexAxis:`y`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:{top:8}},scales:{x:{stacked:!0,beginAtZero:!0,grid:i?{color:e.grid}:{color:t=>t.tick&&t.tick.value===0?e.text:e.grid},border:{display:!1},ticks:{color:e.text,font:Mv(),callback:e=>s(e)}},y:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:Mv(),autoSkip:!1}}},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:Nv(e,{label:e=>e.dataset.label+`: `+c(e.parsed.x),footer:e=>{let t=0;return e.forEach(e=>{t+=Math.abs(Number(e.parsed.x))||0}),`Total: `+c(t)}})}}}}var yC=R(`
`),bC=R(`

`),xC=R(`

`,1),SC=R(`
`),CC=R(`Model Provider`,1),wC=R(`User Path`),TC=R(`Label Requests`,1),EC=R(` `,1),DC=R(` `),OC=R(` `,1),kC=R(` `),AC=R(`
Input TokensOutput TokensPrompt CachedLocal CachedTotal TokensInput CostOutput CostTotal Cost
`),jC=R(`
`),MC=R(`
`);function NC(e,t){E(t,!0);let n=e=>{var n=yC(),r=M(n);let a;var o=P(r,2);let s;var l=P(o,2);let u;T(n),F(()=>{W(n,`aria-label`,I(i).group),a=U(r,1,`chart-view-btn svelte-1kee4g8`,null,a,{active:I(c)===`chart`}),W(r,`aria-pressed`,I(c)===`chart`),W(r,`aria-label`,`Show ${I(i).noun??``} chart`),s=U(o,1,`chart-view-btn svelte-1kee4g8`,null,s,{active:I(c)===`stacked`}),W(o,`aria-pressed`,I(c)===`stacked`),W(o,`aria-label`,`Show ${I(i).noun??``} stacked chart`),u=U(l,1,`chart-view-btn svelte-1kee4g8`,null,u,{active:I(c)===`table`}),W(l,`aria-pressed`,I(c)===`table`),W(l,`aria-label`,`Show ${I(i).noun??``} table`)}),L(`click`,r,()=>J.toggleUsageChartView(t.kind,`chart`)),L(`click`,o,()=>J.toggleUsageChartView(t.kind,`stacked`)),L(`click`,l,()=>J.toggleUsageChartView(t.kind,`table`)),z(e,n)},r={model:{group:`Model usage view`,noun:`model usage`,tokensTitle:`Token Usage by Model`,costsTitle:`Cost by Model`},userPath:{group:`User path usage view`,noun:`user path usage`,tokensTitle:`Usage by User Path`,costsTitle:`Cost by User Path`},label:{group:`Label usage view`,noun:`label usage`,tokensTitle:`Usage by Label`,costsTitle:`Cost by Label`}},i=O(()=>r[t.kind]),a=O(()=>t.kind===`model`?e=>ps(e):t.kind===`userPath`?e=>e.user_path||`/`:e=>e.label);function o(e){return t.kind===`model`?(e.provider_name||e.provider||`-`)+`/`+e.model:t.kind===`userPath`?e.user_path||`/`:e.label}let s=O(()=>t.kind===`model`?J.modelUsage:t.kind===`userPath`?J.userPathUsage:J.labelUsage),c=O(()=>t.kind===`model`?J.modelUsageView:t.kind===`userPath`?J.userPathUsageView:J.labelUsageView),l=O(()=>t.kind===`model`?J.modelUsageLoading:t.kind===`userPath`?J.userPathUsageLoading:J.labelUsageLoading),u=O(()=>J.usageMode===`costs`),d=O(()=>t.kind===`userPath`?tC(I(s)):I(s).length>0),f=O(()=>I(u)?I(i).costsTitle:I(i).tokensTitle),p=O(()=>rC(I(s),I(a),I(u))),m=O(()=>eC(I(s),I(u)));function h(){return nC(I(c))?vC(jv(),I(p).labels,I(p),{stacked:I(c)===`stacked`,costs:I(u),resolve:Pv}):null}var g=Qr(),_=N(g),v=e=>{var r=jC(),a=M(r),s=M(a),u=e=>{Hx(e,{copyId:`label-usage-help-copy`,label:`label usage help`,text:`One request can have multiple labels. Such a request counts once under each of its labels, so label rows can overlap and add up to more than the period totals.`,title:e=>{var t=bC(),n=M(t,!0);T(t),F(()=>B(n,I(f))),z(e,t)},extra:e=>{var t=Qr(),n=N(t),r=e=>{_x(e,{size:14,get label(){return`Loading ${I(i).noun??``}`}})};V(n,e=>{I(l)&&e(r)}),z(e,t)},$$slots:{title:!0,extra:!0}})},d=e=>{var t=xC(),n=N(t),r=M(n,!0);T(n);var a=P(n,2),o=e=>{_x(e,{size:14,get label(){return`Loading ${I(i).noun??``}`}})};V(a,e=>{I(l)&&e(o)}),F(()=>B(r,I(f))),z(e,t)};V(s,e=>{t.kind===`label`?e(u):e(d,-1)});var g=P(s,2);n(g),T(a);var _=P(a,2),v=e=>{var t=SC();let n;Ev(M(t),{build:h}),T(t),F(e=>n=Hi(t,``,n,e),[()=>({height:`${iC(I(p).labels.length)??``}px`})]),z(e,t)},y=O(()=>nC(I(c))),b=e=>{var n=AC(),r=M(n),i=M(r),a=M(i),s=M(a),c=e=>{var t=CC();Ue(2),z(e,t)},l=e=>{z(e,wC())},u=e=>{var t=TC();Ue(2),z(e,t)};V(s,e=>{t.kind===`model`?e(c):t.kind===`userPath`?e(l,1):e(u,-1)}),Ue(8),T(a),T(i);var d=P(i);H(d,21,()=>I(m),e=>o(e),(e,n)=>{var r=kC(),i=M(r),a=e=>{var t=EC(),r=N(t),i=M(r,!0);T(r);var a=P(r,2),o=M(a),s=M(o,!0);T(o),T(a),F(e=>{B(i,I(n).model||`-`),B(s,e)},[()=>ds(I(n))||`-`]),z(e,t)},o=e=>{var t=DC(),r=M(t,!0);T(t),F(()=>B(r,I(n).user_path||`/`)),z(e,t)},s=e=>{var t=OC(),r=N(t),i=M(r);let a;var o=M(i,!0);T(i),T(r);var s=P(r,2),c=M(s,!0);T(s),F((e,t,r)=>{a=U(i,1,`usage-label-chip`,null,a,{active:J.usageFilterLabel===I(n).label}),Hi(i,`--label-color: ${e??``}`),W(i,`title`,t),B(o,I(n).label),B(c,r)},[()=>Lv(I(n).label),()=>J.usageLabelChipTitle(I(n).label),()=>ts(I(n).requests)]),L(`click`,i,()=>J.toggleUsageLabelFilter(I(n).label)),z(e,t)};V(i,e=>{t.kind===`model`?e(a):t.kind===`userPath`?e(o,1):e(s,-1)});var c=P(i),l=M(c,!0);T(c);var u=P(c),d=M(u,!0);T(u);var f=P(u),p=M(f,!0);T(f);var m=P(f),h=M(m,!0);T(m);var g=P(m),_=M(g,!0);T(g);var v=P(g),y=M(v,!0);T(v);var b=P(v),x=M(b,!0);T(b);var S=P(b),C=M(S,!0);T(S),T(r),F((e,t,n,r,i,a,o,s,c,u,g)=>{B(l,e),B(d,t),W(f,`title`,n),B(p,r),W(m,`title`,`${i??``} input + ${a??``} output`),B(h,o),B(_,s),B(y,c),B(x,u),B(C,g)},[()=>ts(I(n).input_tokens),()=>ts(I(n).output_tokens),()=>I(n).cached_input_cost==null?``:`~`+ns(I(n).cached_input_cost)+` at current cached-input pricing`,()=>ts(I(n).cached_input_tokens||0),()=>ts(I(n).local_cached_input_tokens||0),()=>ts(I(n).local_cached_output_tokens||0),()=>ts((I(n).local_cached_input_tokens||0)+(I(n).local_cached_output_tokens||0)),()=>ts(QS(I(n))),()=>ns(I(n).input_cost),()=>ns(I(n).output_cost),()=>ns(I(n).total_cost)]),z(e,r)}),T(d),T(r),T(n),z(e,n)};V(_,e=>{I(y)?e(v):e(b,-1)}),T(r),z(e,r)},y=e=>{var t=MC();_x(M(t),{size:20,get label(){return`Loading ${I(i).noun??``}`}}),T(t),z(e,t)};V(_,e=>{I(d)?e(v):I(l)&&e(y,1)}),z(e,g),D()}Hr([`click`]);var PC=R(``);function FC(e,t){E(t,!0);let n=G(t,`total`,3,0),r=G(t,`offset`,3,0),i=G(t,`limit`,3,25);var a=Qr(),o=N(a),s=e=>{var a=PC(),o=M(a),s=M(o);T(o);var c=P(o,2),l=M(c),u=P(l,2);T(c),T(a),F(e=>{B(s,`Showing ${r()+1}-${e??``} of ${n()??``}`),l.disabled=r()===0,u.disabled=r()+i()>=n()},[()=>Math.min(r()+i(),n())]),L(`click`,l,()=>t.onprev?.()),L(`click`,u,()=>t.onnext?.()),z(e,a)};V(o,e=>{n()>0&&e(s)}),z(e,a),D()}Hr([`click`]);var IC=(e,t=f)=>{var n=Qr(),r=N(n),i=e=>{var n=RC();H(n,20,()=>XS(t()),e=>e,(e,t)=>{var n=LC();let r;var i=M(n,!0);T(n),F((e,a)=>{r=U(n,1,`usage-label-chip`,null,r,{active:J.usageFilterLabel===t}),Hi(n,`--label-color: ${e??``}`),W(n,`title`,a),B(i,t)},[()=>Lv(t),()=>J.usageLabelChipTitle(t)]),L(`click`,n,()=>J.toggleUsageLabelFilter(t)),z(e,n)}),T(n),z(e,n)},a=O(()=>XS(t()).length>0),o=e=>{z(e,zC())};V(r,e=>{I(a)?e(i):e(o,-1)}),z(e,n)},LC=R(``),RC=R(`
`),zC=R(`-`),BC=R(`Labels`),VC=R(`Cost`),HC=R(``),UC=R(` `),WC=R(``),GC=R(` `),KC=R(` `),qC=R(`
TimestampProviderModelUser PathCacheProvider Cache
`),JC=R(`
`),YC=R(`
`),XC=R(`

Request Log

`);function ZC(e,t){E(t,!0);let n=O(()=>J.usageMode===`costs`),r=O(()=>ZS(J.labelUsage,J.usageFilterLabel,J.usageLog.entries)),i=sC(()=>J.fetchUsageLog(!0));An(()=>i.cancel);var a=XC(),o=P(M(a),2),s=M(o);oC(M(s),{placeholder:`Search by request ID, model, provider...`,label:`Search by request ID, model, provider`,get oninput(){return i},get value(){return J.usageLogSearch},set value(e){J.usageLogSearch=e}}),T(s);var c=P(s,2),l=M(c),u=M(l);na(u),Ue(2),T(l),T(c),T(o);var d=P(o,2),f=e=>{var t=qC(),i=M(t),a=M(i),o=M(a),s=P(M(o),4),c=e=>{z(e,BC())};V(s,e=>{I(r)&&e(c)});var l=P(s,3),u=M(l,!0);T(l);var d=P(l),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=e=>{z(e,VC())};V(h,e=>{I(n)||e(g)}),T(o),T(a);var _=P(a);H(_,21,()=>J.usageLog.entries,e=>e.id,(e,t)=>{var i=KC();let a;var o=M(i),s=M(o,!0);T(o);var c=P(o),l=M(c),u=M(l,!0);T(l),T(c);var d=P(c),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=e=>{var n=HC();IC(M(n),()=>I(t)),T(n),z(e,n)};V(h,e=>{I(r)&&e(g)});var _=P(h),v=M(_,!0);T(_);var y=P(_),b=M(y),x=e=>{var n=UC(),r=M(n,!0);T(n),F(e=>B(r,e),[()=>qS(I(t))]),z(e,n)},S=O(()=>KS(I(t))),C=e=>{z(e,zC())};V(b,e=>{I(S)?e(x):e(C,-1)}),T(y);var w=P(y),ee=M(w,!0);T(w);var te=P(w),ne=M(te,!0);T(te);var re=P(te),ie=M(re),ae=M(ie,!0);T(ie);var oe=P(ie,2),se=e=>{{let n=O(()=>BS(I(t)));K(e,{name:`circle-dollar-sign`,class:`cost-source-icon`,get title(){return I(n)}})}},ce=O(()=>I(n)&&zS(I(t)));V(oe,e=>{I(ce)&&e(se)});var le=P(oe,2),ue=e=>{K(e,{name:`database-zap`,class:`cache-savings-icon`})},de=O(()=>I(n)&&HS(I(t)));V(le,e=>{I(de)&&e(ue)});var fe=P(le,2),pe=e=>{var n=WC();F(()=>W(n,`title`,I(t).costs_calculation_caveat)),z(e,n)};V(fe,e=>{I(n)&&I(t).costs_calculation_caveat&&e(pe)}),T(re);var me=P(re),he=e=>{var n=GC(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{{let n=O(()=>BS(I(t)));K(e,{name:`circle-dollar-sign`,class:`cost-source-icon`,get title(){return I(n)}})}},s=O(()=>zS(I(t)));V(a,e=>{I(s)&&e(o)});var c=P(a,2),l=e=>{K(e,{name:`database-zap`,class:`cache-savings-icon`})},u=O(()=>HS(I(t)));V(c,e=>{I(u)&&e(l)});var d=P(c,2),f=e=>{var n=WC();F(()=>W(n,`title`,I(t).costs_calculation_caveat)),z(e,n)};V(d,e=>{I(t).costs_calculation_caveat&&e(f)}),T(n),F((e,t)=>{W(n,`title`,e),B(i,t)},[()=>WS(I(t),YS(I(t))),()=>ns(I(t).total_cost)]),z(e,n)};V(me,e=>{I(n)||e(he)}),T(i),F((e,n,r,c,l,d,p,h,g,_,b,x,S)=>{a=U(i,1,`svelte-hg4ill`,null,a,e),W(o,`title`,n),B(s,r),B(u,c),B(f,I(t).model),B(m,I(t).user_path||`-`),B(v,l),W(y,`title`,d),W(w,`title`,p),B(ee,h),W(te,`title`,g),B(ne,_),W(re,`title`,b),W(ie,`title`,x),B(ae,S)},[()=>({"usage-log-row-cached":HS(I(t))}),()=>ls(I(t).timestamp),()=>io.formatTimestamp(I(t).timestamp),()=>ds(I(t))||`-`,()=>US(I(t)),()=>JS(I(t)),()=>I(n)?ts(I(t).input_tokens)+` tokens`:``,()=>I(n)?ns(I(t).input_cost):ts(I(t).input_tokens),()=>I(n)?ts(I(t).output_tokens)+` tokens`:``,()=>I(n)?ns(I(t).output_cost):ts(I(t).output_tokens),()=>I(n)?WS(I(t),``):``,()=>I(n)?WS(I(t),ts(I(t).total_tokens)+` tokens +`+YS(I(t))):``,()=>I(n)?ns(I(t).total_cost):ts(I(t).total_tokens)]),z(e,i)}),T(_),T(i),T(t),F(()=>{B(u,I(n)?`Input Cost`:`Input`),B(f,I(n)?`Output Cost`:`Output`),B(m,I(n)?`Total Cost`:`Total`)}),z(e,t)},p=e=>{var t=JC();_x(M(t),{size:20,label:`Loading request log`}),T(t),z(e,t)},m=e=>{var t=YC();bx(M(t),{}),T(t),z(e,t)};V(d,e=>{J.usageLog.entries.length>0?e(f):J.usageLogLoading?e(p,1):e(m,-1)}),FC(P(d,2),{get total(){return J.usageLog.total},get offset(){return J.usageLog.offset},get limit(){return J.usageLog.limit},onprev:()=>J.usageLogPrevPage(),onnext:()=>J.usageLogNextPage()}),T(a),L(`change`,u,()=>J.fetchUsageLog(!0)),fa(u,()=>J.usageLogHideCached,e=>J.usageLogHideCached=e),z(e,a),D()}Hr([`click`,`change`]);var QC=R(`
`);function $C(e,t){E(t,!0);let n=`usage`;An(()=>{q.refreshTick,Va.page===n&&(J.fetchUsagePage(),yS.ensureLiveLogs())}),An(()=>{Va.page===n&&(J.usageMode=Va.sub===`costs`?`costs`:`tokens`)});var r=QC(),i=P(M(r),2),a=M(i);kv(a,{ariaLabel:`Usage mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return J.usageMode},onchange:e=>J.toggleUsageMode(e)}),Xs(P(a,2),{onchange:()=>J.fetchUsagePage()}),T(i);var o=P(i,2);dC(o,{});var s=P(o,2);_C(s,{});var c=P(s,2),l=M(c);NC(l,{kind:`model`});var u=P(l,2);NC(u,{kind:`userPath`}),NC(P(u,2),{kind:`label`}),T(c),ZC(P(c,2),{}),T(r),z(e,r),D()}var ew=R(`
`);function tw(e,t){let n=G(t,`label`,3,`Loading...`),r=G(t,`class`,3,``);var i=ew(),a=P(M(i),2),o=M(a,!0);T(a),T(i),F(()=>{U(i,1,Fi([`loading-state`,r()]),`svelte-hzxv1d`),B(o,n())}),z(e,i)}var nw=R(``);function rw(e,t){let n=G(t,`label`,3,``),r=G(t,`class`,3,``),i=G(t,`disabled`,3,!1);var a=nw();gi(M(a),()=>t.children??f),T(a),F(()=>{U(a,1,Fi([`table-action-btn`,r()])),W(a,`aria-label`,n()),W(a,`title`,n()),a.disabled=i()}),L(`click`,a,function(...e){t.onclick?.apply(this,e)}),z(e,a)}Hr([`click`]);async function iw(e,{label:t,errorFallback:n=`Unable to load ${t}.`,unavailableStatuses:r=[503],normalize:i=e=>Array.isArray(e)?e:[],options:a}){let o;try{o=await uo(e,{...a||{},label:t})}catch(e){return po(e)||console.error(`Failed to fetch ${t}:`,e),{status:`error`,items:[],error:n,result:null}}return o.stale?{status:`stale`,items:[],error:``,result:o}:r.includes(o.status)?{status:`unavailable`,items:[],error:``,result:o}:o.ok?{status:`ok`,items:i(o.data),error:``,result:o}:{status:`error`,items:[],error:o.status===401?``:ao(o.data,n),result:o}}async function aw(e,t,n,{label:r,errorFallback:i=`Unable to ${r}.`,unavailableStatuses:a=[503],unavailableMessage:o=`This feature is unavailable on the gateway.`,options:s}){let c;try{c=await fo(e,t,n,{...s||{},label:r})}catch(e){return po(e)||console.error(`Failed to ${r}:`,e),{status:`error`,error:i,result:null}}return c.stale?{status:`stale`,error:``,result:c}:a.includes(c.status)?{status:`unavailable`,error:o,result:c}:c.ok?{status:`ok`,error:``,result:c}:{status:`error`,error:c.status===401?`Authentication required.`:ao(c.data,i),result:c}}function ow(){return{scope:`user_path`,subject:`/`,period:`daily`,period_seconds:86400,amount:``,source:`manual`}}function sw(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},label:{label:`Label`,chip:`label`,fieldLabel:`Label`,placeholder:`Mobile-App-iOS`}};return t[e]||t.user_path}function cw(){return[`user_path`,`label`].map(e=>({value:e,label:sw(e).label}))}function lw(e){return String(e&&e.scope||``).trim()||`user_path`}function uw(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function dw(e){return sw(lw(e)).chip}function fw(e){return lw(e)===`label`?`budget-label`:`budget-user-path`}function pw(e){return sw(String(e&&e.scope||``)).fieldLabel}function mw(e){return sw(String(e&&e.scope||``)).placeholder}function hw(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function gw(){return[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`},{value:`custom`,label:`Custom seconds`}]}function _w(e){switch(String(e||``).trim().toLowerCase()){case`hourly`:return 3600;case`daily`:return 86400;case`weekly`:return 604800;case`monthly`:return 2592e3;default:return 0}}function vw(e){switch(Number(e||0)){case 3600:return`hourly`;case 86400:return`daily`;case 604800:return`weekly`;case 2592e3:return`monthly`;default:return`custom`}}function yw(e){return lw(e)+`:`+uw(e)+`:`+String(e&&e.period_seconds||``)}function bw(e,t){if(!t||!Array.isArray(e))return null;let n=yw(t);return e.find(e=>yw(e)===n)||null}function xw(e){let t=String(e||``).trim();if(!t)return`User path is required.`;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function Sw(e){if(xw(e))return``;let t=String(e||``).trim(),n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function Cw(e){return`/`+String(e||``).trimStart().replace(/^\/+/,``)}function ww(e){return Array.isArray(e)?e:e&&Array.isArray(e.budgets)?e.budgets:[]}function Tw(e){let t=Number(e&&e.period_seconds||0);return[uw(e),dw(e),Hw(e),vw(t),t?String(t)+`s`:``,t?String(t)+` seconds`:``].join(` `).toLowerCase()}var Ew={user_path:0,label:1};function Dw(e,t){let n=Array.isArray(e)?e.slice():[],r=String(t||`subject`);return n.sort((e,t)=>{let n=(Ew[lw(e)]||0)-(Ew[lw(t)]||0),i=uw(e).localeCompare(uw(t)),a=Number(t&&t.period_seconds||0)-Number(e&&e.period_seconds||0);return r===`period`?a||n||i:n||i||a}),n}function Ow(e,t,n){let r=Array.isArray(e)?e:[],i=String(t||``).trim().toLowerCase();return Dw(i?r.filter(e=>Tw(e).includes(i)):r.slice(),n)}function kw(e){let t=e||{},n=lw(t),r=String(t.subject||``).trim();if(n===`user_path`){let e=xw(r);if(e)return{payload:null,error:e}}else if(!r)return{payload:null,error:`Label is required.`};let i=Number(t.amount);if(!Number.isFinite(i)||i<=0)return{payload:null,error:`Amount must be greater than 0.`};let a=String(t.period||``).trim(),o=_w(a);return a===`custom`&&(o=Number(t.period_seconds)),!Number.isFinite(o)||o<=0?{payload:null,error:`Period seconds must be greater than 0.`}:{payload:{scope:n,subject:n===`user_path`?Sw(r):r,period_seconds:Math.trunc(o),amount:i,source:String(t.source||`manual`).trim()||`manual`},error:``}}function Aw(e){return{scope:lw(e),subject:uw(e),budget_key:{period_seconds:e.period_seconds},amount:e.amount}}function jw(e){return{scope:lw(e),subject:uw(e),budget_key:{period_seconds:e.period_seconds}}}function Mw(e){return{scope:lw(e),subject:uw(e),period_seconds:e.period_seconds}}function Nw(e){return ns(e)}function Pw(e,t){let n=e||{},r=t||{};return`A budget for "`+((uw(n)||uw(r))+` `+Hw({period_seconds:n.period_seconds||r.period_seconds,period_label:r.period_label}))+`" already exists. Saving will override the current `+Nw(r.amount)+` limit with `+Nw(n.amount)+`.`}function Fw(e){let t=Number(e);return!Number.isFinite(t)||t<0?0:t}function Iw(e,t){let n=Fw(e);return Math.round((t?Math.min(n,1):n)*1e3)/10}function Lw(e){return Fw(e&&e.usage_ratio)}function Rw(e){return Iw(Lw(e),!0)}function zw(e){return Iw(e&&e.period_ratio,!0)}function Bw(e){return Iw(Lw(e),!1).toFixed(1).replace(/\.0$/,``)+`%`}function Vw(e){return zw(e).toFixed(1).replace(/\.0$/,``)+`%`}function Hw(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`Hourly`;case 86400:return`Daily`;case 604800:return`Weekly`;case 2592e3:return`Monthly`;default:{let n=String(e&&e.period_label||``).trim();return n?`Custom `+n:`Custom `+String(t||``)+`s`}}}function Uw(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`budget-period-label-hourly`;case 86400:return`budget-period-label-daily`;case 604800:return`budget-period-label-weekly`;case 2592e3:return`budget-period-label-monthly`;default:return`budget-period-label-custom`}}function Ww(e){return Uw(e).replace(`budget-period-label-`,`budget-bar-fill-period-`)}function Gw(e){return Uw(e).replace(`budget-period-label-`,`budget-bar-track-period-`)}function Kw(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`clock`;case 86400:return`sun`;case 604800:return`calendar-days`;case 2592e3:return`calendar`;default:return`settings-2`}}function qw(e){let t=Math.max(0,Math.trunc(Number(e||0)));return t+` `+(t===1?`second`:`seconds`)}function Jw(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`1 hour`;case 86400:return`1 day`;case 604800:return`1 week`;case 2592e3:return`1 month`;default:return qw(t)}}function Yw(e){return String(e&&e.source||``).trim()||`manual`}function Xw(e){let t=Yw(e).toLowerCase();return t===`manual`?`Created from the dashboard.`:t===`config`?`Loaded from configuration.`:`Budget source: `+t}function Zw(e){let t=Number(e&&e.remaining);return Number.isFinite(t)?t<0?ns(Math.abs(t))+` over`:ns(t)+` remaining`:``}var Y=new class{#e=k(j([]));get budgets(){return I(this.#e)}set budgets(e){A(this.#e,e,!0)}#t=k(!0);get budgetsAvailable(){return I(this.#t)}set budgetsAvailable(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get filter(){return I(this.#r)}set filter(e){A(this.#r,e,!0)}#i=k(`subject`);get sortBy(){return I(this.#i)}set sortBy(e){A(this.#i,e,!0)}#a=k(``);get error(){return I(this.#a)}set error(e){A(this.#a,e,!0)}#o=k(!1);get formOpen(){return I(this.#o)}set formOpen(e){A(this.#o,e,!0)}#s=k(!1);get formSubmitting(){return I(this.#s)}set formSubmitting(e){A(this.#s,e,!0)}#c=k(``);get formError(){return I(this.#c)}set formError(e){A(this.#c,e,!0)}#l=k(!1);get editing(){return I(this.#l)}set editing(e){A(this.#l,e,!0)}#u=k(j(ow()));get form(){return I(this.#u)}set form(e){A(this.#u,e,!0)}#d=k(!1);get overrideDialogOpen(){return I(this.#d)}set overrideDialogOpen(e){A(this.#d,e,!0)}#f=k(null);get overridePendingPayload(){return I(this.#f)}set overridePendingPayload(e){A(this.#f,e,!0)}#p=k(null);get overrideExistingBudget(){return I(this.#p)}set overrideExistingBudget(e){A(this.#p,e,!0)}#m=k(``);get resettingKey(){return I(this.#m)}set resettingKey(e){A(this.#m,e,!0)}#h=k(``);get deletingKey(){return I(this.#h)}set deletingKey(e){A(this.#h,e,!0)}#g=k(!1);get resetAllLoading(){return I(this.#g)}set resetAllLoading(e){A(this.#g,e,!0)}#_=null;managementEnabled(){return go.budgetsVisible()}filteredBudgets(){return Ow(this.budgets,this.filter,this.sortBy)}async fetchBudgetsPage(){if(await go.ensureLoaded(),!this.managementEnabled()){this.budgets=[],this.budgetsAvailable=!1,this.error=``;return}return this.#_||=this.fetchBudgets().finally(()=>{this.#_=null}),this.#_}async fetchBudgets(){this.loading=!0,this.error=``;let e=await iw(`/admin/budgets`,{label:`budgets`,errorFallback:`Unable to load budgets.`,normalize:ww});if(this.loading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.budgetsAvailable=!1,this.budgets=[];return}if(!e.result){this.budgets=[],this.error=e.error;return}if(this.budgetsAvailable=!0,e.status===`error`){this.error=e.error;return}this.budgets=e.items}}openForm(e){if(this.editing=!!e,this.formError=``,e){let t=Number(e.period_seconds||0);this.form={scope:lw(e),subject:uw(e),period:vw(t),period_seconds:t,amount:String(e.amount||``),source:String(e.source||`manual`)}}else this.form=ow();this.formOpen=!0}syncPeriodSeconds(){let e=_w(String(this.form.period||``).trim());e>0&&(this.form.period_seconds=e)}setFormSubject(e){this.form.subject=this.form.scope===`label`?String(e??``):Cw(e)}syncScope(){hw(this.form)}closeForm(){this.closeOverrideDialog(),this.formOpen=!1,this.formSubmitting=!1,this.formError=``,this.editing=!1,this.form=ow()}async submitForm(){if(this.formSubmitting)return;let{payload:e,error:t}=kw(this.form);if(!e){this.formError=t;return}if(!this.editing){let t=bw(this.budgets,e);if(t){this.openOverrideDialog(t,e);return}}await this.saveBudgetPayload(e)}async saveBudgetPayload(e){if(this.formSubmitting||!e)return;this.formSubmitting=!0,this.formError=``;let t=await aw(`/admin/budgets`,`PUT`,Aw(e),{label:`save budget`,errorFallback:`Unable to save budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.formSubmitting=!1,t.status!==`stale`){if(t.status===`unavailable`){this.budgetsAvailable=!1,this.formError=t.error;return}if(t.status===`error`){this.formError=t.error;return}this.closeForm(),qo.success(`Budget saved.`),this.fetchBudgets()}}openOverrideDialog(e,t){this.overrideExistingBudget=e||null,this.overridePendingPayload=t||null,this.overrideDialogOpen=!0}closeOverrideDialog(){this.overrideDialogOpen=!1,this.overridePendingPayload=null,this.overrideExistingBudget=null}async confirmOverride(){if(!this.overridePendingPayload){this.closeOverrideDialog();return}let e=this.overridePendingPayload;this.closeOverrideDialog(),await this.saveBudgetPayload(e)}async resetBudget(e){if(!e)return;let t=yw(e);if(this.resettingKey===t)return;let n=uw(e)+` `+Hw(e);if(!confirm(`Reset budget "`+n+`"?`))return;this.resettingKey=t;let r=await aw(`/admin/budgets/reset-one`,`POST`,Mw(e),{label:`reset budget`,errorFallback:`Unable to reset budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.resettingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,qo.error(r.error);return}if(r.status===`error`){qo.error(r.error);return}qo.success(`Budget reset.`),this.fetchBudgets()}}async deleteBudget(e){if(!e)return;let t=yw(e);if(this.deletingKey===t)return;let n=uw(e)+` `+Hw(e);if(!confirm(`Delete budget "`+n+`"? This cannot be undone.`))return;this.deletingKey=t;let r=await aw(`/admin/budgets`,`DELETE`,jw(e),{label:`delete budget`,errorFallback:`Unable to delete budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.deletingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,qo.error(r.error);return}if(r.status===`error`){qo.error(r.error);return}this.budgets=ww(r.result.data),qo.success(`Budget deleted.`)}}openResetDialog(){Mo.open({title:`Reset Budgets`,titleId:`budgetResetDialogTitle`,inputId:`budget-reset-confirmation`,requiredText:`reset`,confirmLabel:`Reset All Budgets`,icon:`rotate-ccw`,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.resetAllBudgets()})}async resetAllBudgets(){if(this.resetAllLoading)return;this.resetAllLoading=!0;let e=await aw(`/admin/budgets/reset`,`POST`,{confirmation:`reset`},{label:`reset budgets`,errorFallback:`Unable to reset budgets.`,unavailableStatuses:[]});if(this.resetAllLoading=!1,e.status!==`stale`){if(e.status!==`ok`){Mo.error=e.error;return}Mo.close(),qo.success(`Budgets reset.`),Va.page===`budgets`&&this.fetchBudgets()}}},Qw=R(` Edit`,1),$w=R(` `,1),eT=R(`
Usage
Period
`),tT=R(`
`);function nT(e,t){E(t,!0);let n=G(t,`budgets`,19,()=>[]);function r(e){if(!e)return``;let t=io.formatTimestamp(e);return!t||t===`-`?``:t+` `+io.effectiveTimeZoneLabel()}var i=tT();H(i,21,n,e=>yw(e),(e,t)=>{var n=eT(),i=M(n),a=M(i),o=M(a),s=M(o),c=e=>{K(e,{name:`tag`,class:`budget-scope-icon`})},l=O(()=>lw(I(t))===`label`);V(s,e=>{I(l)&&e(c)});var u=P(s);T(o);var d=P(o,2),f=M(d),p=M(f);{let e=O(()=>Kw(I(t)));K(p,{get name(){return I(e)},class:`budget-period-icon`})}var m=P(p,2),h=M(m,!0);T(m),T(f),T(d);var g=P(d,2),_=M(g),v=M(_),y=M(v,!0);T(v),T(_);var b=P(_,2),x=M(b);rw(x,{label:`Edit budget`,class:`budget-action-btn`,onclick:()=>Y.openForm(I(t)),children:(e,t)=>{var n=Qw();K(N(n),{name:`pencil`,class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}});var S=P(x,2);{let e=O(()=>Y.resettingKey===yw(I(t))?`Resetting budget`:`Reset budget`),n=O(()=>Y.resettingKey===yw(I(t)));rw(S,{get label(){return I(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>Y.resetBudget(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=$w(),i=N(r);K(i,{name:`rotate-ccw`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>Y.resettingKey===yw(I(t))?`Resetting`:`Reset`]),z(e,r)},$$slots:{default:!0}})}var C=P(S,2);{let e=O(()=>Y.deletingKey===yw(I(t))?`Deleting budget`:`Delete budget`),n=O(()=>Y.deletingKey===yw(I(t)));rw(C,{get label(){return I(e)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>Y.deleteBudget(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=$w(),i=N(r);K(i,{name:`trash-2`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>Y.deletingKey===yw(I(t))?`Deleting`:`Delete`]),z(e,r)},$$slots:{default:!0}})}T(b),T(g),T(a);var w=P(a,2),ee=M(w),te=M(ee),ne=P(M(te),2),re=M(ne,!0);T(ne),T(te);var ie=P(te,2),ae=M(ie);let oe;var se=P(ae,2),ce=M(se),le=M(ce,!0);T(ce);var ue=P(ce,2),de=M(ue,!0);T(ue),T(se);var fe=P(se,2),pe=M(fe),me=M(pe,!0);T(pe);var he=P(pe,2),ge=M(he,!0);T(he),T(fe),T(ie),T(ee);var _e=P(ee,2),ve=M(_e),ye=P(M(ve),2),be=M(ye,!0);T(ye),T(ve);var xe=P(ve,2),Se=M(xe),Ce=P(Se,2),we=M(Ce),Te=M(we,!0);T(we);var Ee=P(we,2),De=M(Ee,!0);T(Ee);var Oe=P(Ee,2),ke=M(Oe,!0);T(Oe),T(Ce);var Ae=P(Ce,2),je=M(Ae),Me=M(je,!0);T(je);var Ne=P(je,2),Pe=M(Ne,!0);T(Ne);var Fe=P(Ne,2),Ie=M(Fe,!0);T(Fe),T(Ae),T(xe),T(_e),T(w),T(i),T(n),F((e,t,n,r,i,a,s,c,l,d,p,m,g,_,b,x,S,C,w,ee,te,ne,se,ce,ue,fe,pe,he,_e,ve)=>{U(o,1,`budget-scope-value ${e??``}`,`svelte-1jm56wo`),Hi(o,t),W(o,`title`,n),B(u,` ${r??``}`),U(f,1,`budget-period-label ${i??``}`,`svelte-1jm56wo`),B(h,a),W(v,`title`,s),B(y,c),B(re,l),W(ie,`aria-valuenow`,d),W(ie,`aria-label`,p),Hi(ie,`--budget-progress: ${m??``}%`),oe=U(ae,1,`budget-bar-fill budget-bar-fill-usage`,null,oe,g),B(le,_),B(de,b),B(me,x),B(ge,S),B(be,C),U(xe,1,`budget-bar-track ${w??``}`,`svelte-1jm56wo`),W(xe,`aria-valuenow`,ee),Hi(xe,`--budget-progress: ${te??``}%`),U(Se,1,`budget-bar-fill budget-bar-fill-period ${ne??``}`,`svelte-1jm56wo`),W(we,`title`,se),B(Te,ce),B(De,ue),W(Oe,`title`,fe),B(ke,pe),B(Me,he),B(Pe,_e),B(Ie,ve)},[()=>fw(I(t)),()=>lw(I(t))===`label`?`--label-color: `+Lv(uw(I(t))):void 0,()=>dw(I(t))+`: `+uw(I(t)),()=>uw(I(t)),()=>Uw(I(t)),()=>Hw(I(t)),()=>Xw(I(t)),()=>Yw(I(t)),()=>Bw(I(t)),()=>Rw(I(t)),()=>`Budget usage: `+ns(I(t).spent)+` of `+ns(I(t).amount)+`, `+Zw(I(t)),()=>Rw(I(t)),()=>({"budget-bar-fill-danger":Lw(I(t))>=1}),()=>ns(I(t).spent)+` of `+ns(I(t).amount),()=>Zw(I(t)),()=>ns(I(t).spent)+` of `+ns(I(t).amount),()=>Zw(I(t)),()=>Vw(I(t)),()=>Gw(I(t)),()=>zw(I(t)),()=>zw(I(t)),()=>Ww(I(t)),()=>r(I(t).period_start),()=>io.formatTimestamp(I(t).period_start),()=>Jw(I(t)),()=>r(I(t).period_end),()=>io.formatTimestamp(I(t).period_end),()=>io.formatTimestamp(I(t).period_start),()=>Jw(I(t)),()=>io.formatTimestamp(I(t).period_end)]),z(e,n)}),T(i),z(e,i),D()}var rT=R(`

`,1),iT=R(``),aT=R(``),oT=R(`
`);function sT(e,t){E(t,!0);let n=G(t,`open`,3,!1),r=G(t,`title`,3,``),i=G(t,`ariaLabel`,3,``),a=G(t,`error`,3,``),o=G(t,`submitting`,3,!1),s=G(t,`submitDisabled`,3,!1),c=G(t,`submitLabel`,3,`Save`),l=G(t,`submittingLabel`,3,`Saving...`),u=G(t,`submitIcon`,3,`save`),d=G(t,`cancel`,3,!0),p=G(t,`dialogClass`,3,``),m=G(t,`novalidate`,3,!1),h=G(t,`canClose`,3,()=>!0);function g(){q.dialogOpen||h()()&&t.onclose?.()}Do(e,{get open(){return n()},variant:`editor`,onclose:g,children:(e,n)=>{var h=oT(),g=M(h),_=M(g),v=M(_),y=M(v),b=e=>{var n=Qr();gi(N(n),()=>t.header),z(e,n)},x=e=>{var n=rT(),i=N(n),a=M(i,!0);T(i);var o=P(i,2),s=e=>{var n=Qr();gi(N(n),()=>t.headerHint),z(e,n)};V(o,e=>{t.headerHint&&e(s)}),F(()=>B(a,r())),z(e,n)};V(y,e=>{t.header?e(b):e(x,-1)}),T(v);var S=P(v,2);{let e=O(()=>`Close `+(i()||r()).toLowerCase());Co(S,{get label(){return I(e)},onclick:()=>t.onclose?.()})}T(_);var C=P(_,2);gi(C,()=>t.children??f);var w=P(C,2),ee=e=>{var t=iT(),n=M(t,!0);T(t),F(()=>B(n,a())),z(e,t)};V(w,e=>{a()&&e(ee)});var te=P(w,2),ne=M(te),re=e=>{var n=aT();L(`click`,n,()=>t.onclose?.()),z(e,n)};V(ne,e=>{d()&&e(re)});var ie=P(ne,2),ae=e=>{var n=Qr();gi(N(n),()=>t.extraActions),z(e,n)};V(ie,e=>{t.extraActions&&e(ae)});var oe=P(ie,2),se=M(oe);K(se,{get name(){return u()},class:`form-action-icon`});var ce=P(se,2),le=M(ce,!0);T(ce),T(oe),T(te),T(g),T(h),F(()=>{U(h,1,Fi([`model-editor`,p()])),W(h,`aria-label`,i()||r()),g.noValidate=m(),oe.disabled=o()||s(),B(le,o()?l():c())}),Vr(`submit`,g,e=>{e.preventDefault(),t.onsubmit?.()}),z(e,h)},$$slots:{default:!0}}),D()}Hr([`click`]);var cT=R(`
`);function lT(e,t){let n=G(t,`label`,3,``);var r=cT(),i=M(r),a=M(i,!0);T(i),gi(P(i,2),()=>t.children??f),T(r),F(()=>{W(i,`for`,t.id),B(a,n())}),z(e,r)}var uT=R(``),dT=R(``),fT=R(``),pT=R(``),mT=R(``),hT=R(``),gT=R(`

Editing a budget updates its limit only. Use Reset to start a new + budget period.

`),_T=R(`
`,1),vT=R(``),yT=R(` `,1);function bT(e,t){E(t,!0);function n(e){Y.setFormSubject(e.target.value),e.target.value=Y.form.subject}var r=yT(),i=N(r);{let e=O(()=>Y.editing?`Edit Budget`:`Create Budget`);sT(i,{get open(){return Y.formOpen},get title(){return I(e)},ariaLabel:`Budget editor`,get error(){return Y.formError},get submitting(){return Y.formSubmitting},submitLabel:`Save Budget`,dialogClass:`budget-editor`,canClose:()=>!Y.overrideDialogOpen,onclose:()=>Y.closeForm(),onsubmit:()=>Y.submitForm(),children:(e,t)=>{var r=_T(),i=N(r),a=M(i);lT(a,{id:`budget-scope`,label:`Scope`,children:(e,t)=>{var n=dT();H(n,21,cw,e=>e.value,(e,t)=>{var n=uT(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),F(()=>n.disabled=Y.editing),L(`change`,n,()=>Y.syncScope()),Gi(n,()=>Y.form.scope,e=>Y.form.scope=e),z(e,n)},$$slots:{default:!0}});var o=P(a,2);{let e=O(()=>pw(Y.form));lT(o,{id:`budget-subject`,get label(){return I(e)},children:(e,t)=>{var r=fT();na(r),F(e=>{W(r,`placeholder`,e),ra(r,Y.form.subject),r.disabled=Y.editing,W(r,`data-modal-autofocus`,!Y.editing||void 0)},[()=>mw(Y.form)]),L(`input`,r,n),z(e,r)},$$slots:{default:!0}})}var s=P(o,2);lT(s,{id:`budget-period`,label:`Period`,children:(e,t)=>{var n=pT();H(n,21,gw,e=>e.value,(e,t)=>{var n=uT(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),F(()=>n.disabled=Y.editing),L(`change`,n,()=>Y.syncPeriodSeconds()),Gi(n,()=>Y.form.period,e=>Y.form.period=e),z(e,n)},$$slots:{default:!0}});var c=P(s,2),l=e=>{lT(e,{id:`budget-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=mT();na(n),F(()=>n.disabled=Y.editing),da(n,()=>Y.form.period_seconds,e=>Y.form.period_seconds=e),z(e,n)},$$slots:{default:!0}})};V(c,e=>{Y.form.period===`custom`&&e(l)}),lT(P(c,2),{id:`budget-amount`,label:`Amount`,children:(e,t)=>{var n=hT();na(n),F(()=>W(n,`data-modal-autofocus`,Y.editing||void 0)),da(n,()=>Y.form.amount,e=>Y.form.amount=e),z(e,n)},$$slots:{default:!0}}),T(i);var u=P(i,2),d=e=>{z(e,gT())};V(u,e=>{Y.editing&&e(d)}),z(e,r)},$$slots:{default:!0}})}Do(P(i,2),{get open(){return Y.overrideDialogOpen},variant:`auth`,onclose:()=>Y.closeOverrideDialog(),children:(e,t)=>{var n=vT(),r=M(n);Co(P(M(r),2),{label:`Close budget override dialog`,onclick:()=>Y.closeOverrideDialog(),class:`auth-dialog-close`,iconClass:``}),T(r);var i=P(r,2),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=P(c,2),u=M(l);K(u,{name:`save`,class:`form-action-icon`});var d=P(u,2),f=M(d,!0);T(d),T(l),T(s),T(i),T(n),F(e=>{B(o,e),l.disabled=Y.formSubmitting,B(f,Y.formSubmitting?`Saving...`:`Override Budget`)},[()=>Pw(Y.overridePendingPayload,Y.overrideExistingBudget)]),Vr(`submit`,i,e=>{e.preventDefault(),Y.confirmOverride()}),L(`click`,c,()=>Y.closeOverrideDialog()),z(e,n)},$$slots:{default:!0}}),z(e,r),D()}Hr([`change`,`input`,`click`]);var xT=R(`

Budgets

`),ST=R(``),CT=R(`
Budget management is unavailable.
`),wT=R(``),TT=R(`
`),ET=R(`

No budgets configured yet.

`),DT=R(`

No budgets match your filter.

`),OT=R(`
`);function kT(e,t){E(t,!0),An(()=>{q.refreshTick,Va.page===`budgets`&&Y.fetchBudgetsPage()});let n=O(()=>Y.filteredBudgets());var r=OT(),i=M(r),a=M(i);Hx(M(a),{copyId:`budgets-help-copy`,label:`budgets help`,title:e=>{z(e,xT())},help:e=>{Ue(),z(e,Zr(`Budgets are evaluated from tracked usage cost records for each user + path subtree. Enforcement runs only when Budget is enabled for the + active workflow.`))},$$slots:{title:!0,help:!0}}),T(a);var o=P(a,2),s=M(o),c=e=>{var t=ST();K(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=Y.formSubmitting),L(`click`,t,()=>Y.openForm()),z(e,t)},l=O(()=>Y.managementEnabled()&&Y.budgetsAvailable&&!q.authError);V(s,e=>{I(l)&&e(c)}),T(o),T(i);var u=P(i,2);As(u,{});var d=P(u,2),f=e=>{z(e,CT())},p=O(()=>(!Y.managementEnabled()||!Y.budgetsAvailable)&&!q.authError);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{var t=wT(),n=M(t,!0);T(t),F(()=>B(n,Y.error)),z(e,t)};V(m,e=>{Y.error&&!q.authError&&e(h)});var g=P(m,2),_=e=>{tw(e,{label:`Loading budgets...`})};V(g,e=>{Y.loading&&!q.authError&&e(_)});var v=P(g,2),y=e=>{var t=TT(),n=M(t);oC(M(n),{id:`budget-filter`,placeholder:`Filter by user path, label, or period...`,label:`Filter budgets by user path or period`,get value(){return Y.filter},set value(e){Y.filter=e}}),T(n);var r=P(n,2),i=P(M(r),2),a=M(i);a.value=a.__value=`subject`;var o=P(a);o.value=o.__value=`period`,T(i),T(r),T(t),Gi(i,()=>Y.sortBy,e=>Y.sortBy=e),z(e,t)};V(v,e=>{(Y.budgets.length>0||Y.filter)&&Y.budgetsAvailable&&!q.authError&&!Y.formOpen&&e(y)});var b=P(v,2);bT(b,{});var x=P(b,2),S=e=>{nT(e,{get budgets(){return I(n)}})};V(x,e=>{I(n).length>0&&Y.budgetsAvailable&&!q.authError&&e(S)});var C=P(x,2),w=e=>{z(e,ET())},ee=O(()=>Y.budgets.length===0&&!Y.filter&&!Y.loading&&!q.authError&&!Y.error&&Y.budgetsAvailable&&Y.managementEnabled());V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{z(e,DT())},re=O(()=>Y.budgets.length>0&&I(n).length===0&&Y.filter&&!Y.loading&&!q.authError&&!Y.error&&Y.budgetsAvailable&&Y.managementEnabled());V(te,e=>{I(re)&&e(ne)}),T(r),z(e,r),D()}Hr([`click`]);function AT(){return{scope:`user_path`,subject:`/`,period:`minute`,period_seconds:60,max_requests:``,max_tokens:``,source:`manual`}}function jT(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},provider:{label:`Provider`,chip:`provider`,fieldLabel:`Provider Name`,placeholder:`openai`},model:{label:`Model`,chip:`model`,fieldLabel:`Model`,placeholder:`openai/gpt-4o`}};return t[e]||t.user_path}function MT(){return[`user_path`,`provider`,`model`].map(e=>({value:e,label:jT(e).label}))}function NT(e){return String(e&&e.scope||``).trim()||`user_path`}function PT(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function FT(e){return jT(NT(e)).chip}function IT(e){return jT(String(e&&e.scope||``)).fieldLabel}function LT(e){return jT(String(e&&e.scope||``)).placeholder}function RT(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function zT(){return[{value:`minute`,label:`Per minute`},{value:`hour`,label:`Per hour`},{value:`day`,label:`Per day`},{value:`concurrent`,label:`Concurrent (in-flight)`},{value:`custom`,label:`Custom seconds`}]}function BT(e){switch(String(e||``).trim().toLowerCase()){case`minute`:return 60;case`hour`:return 3600;case`day`:return 86400;case`concurrent`:return 0;default:return-1}}function VT(e){switch(Number(e||0)){case 60:return`minute`;case 3600:return`hour`;case 86400:return`day`;case 0:return`concurrent`;default:return`custom`}}function HT(e){let t=String(e&&e.period||``).trim(),n=BT(t);n>=0&&(e.period_seconds=n),t===`concurrent`&&(e.max_tokens=``)}function UT(e){return NT(e)+`:`+PT(e)+`:`+String(e&&e.period_seconds||`0`)}function WT(e){return Number(e&&e.period_seconds||0)===0}function GT(e){return String(e&&e.period_label||``).trim()||VT(Number(e&&e.period_seconds||0))}function KT(e){return String(e&&e.source||``)===`config`?`config`:`manual`}function qT(e){return String(e&&e.source||``)===`config`}function JT(e){let t=Number(e);return Number.isFinite(t)?t.toLocaleString():`0`}function YT(e,t){let n=Number(e),r=Number(t);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=0)return 0;let i=Math.round(n/r*100);return Math.min(Math.max(i,0),100)}function XT(e,t){let n=String(t||``).trim().toLowerCase(),r=Array.isArray(e)?e.slice():[],i={user_path:0,provider:1,model:2};return r.sort((e,t)=>{let n=(i[NT(e)]||0)-(i[NT(t)]||0);if(n!==0)return n;let r=PT(e).localeCompare(PT(t));return r===0?Number(e.period_seconds||0)-Number(t.period_seconds||0):r}),n?r.filter(e=>{let t=PT(e).toLowerCase(),r=FT(e).toLowerCase(),i=GT(e).toLowerCase();return t.includes(n)||r.includes(n)||i.includes(n)}):r}function ZT(e){return!e||!Array.isArray(e.rate_limits)?[]:e.rate_limits}function QT(e,t,n){let r=String(t||``).trim();return r=e===`provider`||e===`model`?r.toLowerCase():`/`+r.split(`/`).map(e=>e.trim()).filter(Boolean).join(`/`),e+`:`+r+`:`+Number(n||0)}function $T(e,t){return e?QT(t.scope,t.subject,t.limit_key.period_seconds)!==QT(e.scope,e.subject,e.period_seconds):!1}function eE(e){let t=e||{},n=String(t.scope||`user_path`),r=String(t.subject||``).trim();if(n!==`user_path`&&!r)return{error:IT(t)+` is required.`};let i=String(t.period||``)===`concurrent`,a=t.period_seconds;if(a===``||a==null)return{error:`Period seconds is required.`};let o=Number(a);if(!Number.isInteger(o)||o<0||o===0&&!i)return{error:`Period seconds must be a positive integer (0 only for the concurrent period).`};let s=String(t.max_requests===void 0||t.max_requests===null?``:t.max_requests).trim(),c=String(t.max_tokens===void 0||t.max_tokens===null?``:t.max_tokens).trim();if(!s&&!c)return{error:`Set max requests, max tokens, or both.`};if(i&&c)return{error:`Token limits are not valid for the concurrent period.`};let l={scope:n,subject:r||`/`,limit_key:{period_seconds:o}};if(s){let e=Number(s);if(!Number.isInteger(e)||e<=0)return{error:`Max requests must be a positive integer.`};l.max_requests=e}if(c){let e=Number(c);if(!Number.isInteger(e)||e<=0)return{error:`Max tokens must be a positive integer.`};l.max_tokens=e}return{payload:l}}function tE(e,t,n){if(NT(e)!==`model`)return!1;let r=String(PT(e)).toLowerCase(),i=String(n||``).trim().toLowerCase();if(!i)return!1;if(r===i)return!0;let a=String(t||``).trim().toLowerCase();return a?r===a+`/`+i||i.startsWith(a+`/`)&&r===i.slice(a.length+1):!1}function nE(e,t){return NT(e)===`provider`&&String(PT(e)).toLowerCase()===String(t||``).trim().toLowerCase()}function rE(e){let t=e||{},n=String(t.model||``),r=String(t.provider||``);return!r||n.toLowerCase().startsWith(r+`/`)?n:r+`/`+n}function iE(e,t){let n=e||{},r=Array.isArray(t)?t:[],i=[];return n.kind===`model`&&i.push({key:`model`,title:`Model limits`,scope:`model`,subject:rE(n),hint:``,items:r.filter(e=>tE(e,n.provider,n.model))}),i.push({key:`provider`,title:`Provider limits (`+n.provider+`)`,scope:`provider`,subject:n.provider,hint:n.kind===`model`?`Shared by every model routed to this provider.`:``,items:r.filter(e=>nE(e,n.provider))}),i.push({key:`global`,title:`Global limits`,scope:`user_path`,subject:`/`,hint:`Root user-path rules throttle all traffic. Narrower user-path rules also apply, per consumer.`,items:r.filter(e=>NT(e)===`user_path`&&PT(e)===`/`)}),i}function aE(e){return WT(e)?YT(e.in_flight,e.max_requests):Math.max(YT(e.requests_used,e.max_requests),YT(e.tokens_used,e.max_tokens))}function oE(e){return`--rate-limit-pressure: `+aE(e)+`%`}function sE(e){let t=aE(e);return t>=100?`rate-limit-pressure-row rate-limit-pressure-full`:t>=75?`rate-limit-pressure-row rate-limit-pressure-high`:`rate-limit-pressure-row`}function cE(e){return(Array.isArray(e)?e:[]).some(e=>NT(e)===`user_path`&&PT(e)===`/`)}function lE(e,t,n){let r=Array.isArray(e)?e:[];return r.some(e=>tE(e,t,n))?`table-action-btn-active`:r.some(e=>nE(e,t))||cE(r)?`rate-limit-gauge-inherited`:``}function uE(e,t){let n=Array.isArray(e)?e:[];return n.some(e=>nE(e,t))?`table-action-btn-active`:cE(n)?`rate-limit-gauge-inherited`:``}function dE(e,t){let n=`Rate limits for `+e;return t===`table-action-btn-active`?n+` (direct limits configured)`:t?n+` (inherited limits apply)`:n}function fE(e){if(WT(e))return JT(e.in_flight)+` of `+JT(e.max_requests)+` in flight`;let t=[];return e.max_requests!==null&&e.max_requests!==void 0&&t.push(JT(e.requests_used)+`/`+JT(e.max_requests)+` req`),e.max_tokens!==null&&e.max_tokens!==void 0&&t.push(JT(e.tokens_used)+`/`+JT(e.max_tokens)+` tok`),t.join(` · `)}var X=new class{#e=k(j([]));get rateLimits(){return I(this.#e)}set rateLimits(e){A(this.#e,e,!0)}#t=k(!0);get rateLimitsAvailable(){return I(this.#t)}set rateLimitsAvailable(e){A(this.#t,e,!0)}#n=k(!1);get rateLimitsLoading(){return I(this.#n)}set rateLimitsLoading(e){A(this.#n,e,!0)}rateLimitFetchPromise=null;#r=k(``);get rateLimitFilter(){return I(this.#r)}set rateLimitFilter(e){A(this.#r,e,!0)}#i=k(``);get rateLimitError(){return I(this.#i)}set rateLimitError(e){A(this.#i,e,!0)}#a=k(!1);get rateLimitFormOpen(){return I(this.#a)}set rateLimitFormOpen(e){A(this.#a,e,!0)}#o=k(!1);get rateLimitFormSubmitting(){return I(this.#o)}set rateLimitFormSubmitting(e){A(this.#o,e,!0)}#s=k(``);get rateLimitFormError(){return I(this.#s)}set rateLimitFormError(e){A(this.#s,e,!0)}#c=k(!1);get rateLimitEditing(){return I(this.#c)}set rateLimitEditing(e){A(this.#c,e,!0)}rateLimitEditingOriginal=null;rateLimitFormReturnToInspector=!1;#l=k(``);get rateLimitResettingKey(){return I(this.#l)}set rateLimitResettingKey(e){A(this.#l,e,!0)}#u=k(``);get rateLimitDeletingKey(){return I(this.#u)}set rateLimitDeletingKey(e){A(this.#u,e,!0)}#d=k(!1);get rateLimitInspectorOpen(){return I(this.#d)}set rateLimitInspectorOpen(e){A(this.#d,e,!0)}#f=k(j({kind:``,provider:``,model:``,title:``}));get rateLimitInspector(){return I(this.#f)}set rateLimitInspector(e){A(this.#f,e,!0)}#p=k(j(AT()));get rateLimitForm(){return I(this.#p)}set rateLimitForm(e){A(this.#p,e,!0)}rateLimitsEnabled(){return go.rateLimitsVisible()}defaultRateLimitForm(){return AT()}rateLimitScopeMeta(e){return jT(e)}rateLimitScopeOptions(){return MT()}rateLimitScope(e){return NT(e)}rateLimitSubject(e){return PT(e)}rateLimitScopeLabel(e){return FT(e)}rateLimitSubjectFieldLabel(){return IT(this.rateLimitForm)}rateLimitSubjectPlaceholder(){return LT(this.rateLimitForm)}syncRateLimitScope(){RT(this.rateLimitForm)}rateLimitPeriodOptions(){return zT()}rateLimitPeriodSeconds(e){return BT(e)}rateLimitPeriodFromSeconds(e){return VT(e)}syncRateLimitPeriodSeconds(){HT(this.rateLimitForm)}rateLimitKey(e){return UT(e)}rateLimitIsConcurrent(e){return WT(e)}rateLimitPeriodLabel(e){return GT(e)}rateLimitSourceLabel(e){return KT(e)}rateLimitIsReadOnly(e){return qT(e)}formatRateLimitNumber(e){return JT(e)}rateLimitUsagePercent(e,t){return YT(e,t)}filteredRateLimits(){return XT(this.rateLimits,this.rateLimitFilter)}normalizeRateLimitListPayload(e){return ZT(e)}async fetchRateLimitsPage(){if(await go.ensureLoaded(),!this.rateLimitsEnabled()){this.rateLimits=[],this.rateLimitsAvailable=!1,this.rateLimitError=``;return}return this.rateLimitFetchPromise||=this.fetchRateLimits().finally(()=>{this.rateLimitFetchPromise=null}),this.rateLimitFetchPromise}async fetchRateLimits(){this.rateLimitsLoading=!0,this.rateLimitError=``;let e=await iw(`/admin/rate-limits`,{label:`rate limits`,errorFallback:`Unable to load rate limits.`,normalize:ZT});if(this.rateLimitsLoading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.rateLimitsAvailable=!1,this.rateLimits=[];return}if(!e.result){this.rateLimits=[],this.rateLimitError=e.error;return}if(this.rateLimitsAvailable=!0,e.status===`error`){this.rateLimitError=e.error;return}this.rateLimits=e.items}}openRateLimitForm(e){if(this.rateLimitEditing=!!e,this.rateLimitFormError=``,e){let t=Number(e.period_seconds||0);this.rateLimitEditingOriginal={scope:NT(e),subject:PT(e),period_seconds:t},this.rateLimitForm={scope:NT(e),subject:PT(e),period:VT(t),period_seconds:t,max_requests:e.max_requests===null||e.max_requests===void 0?``:String(e.max_requests),max_tokens:e.max_tokens===null||e.max_tokens===void 0?``:String(e.max_tokens),source:String(e.source||`manual`)}}else this.rateLimitEditingOriginal=null,this.rateLimitForm=AT();this.rateLimitFormOpen=!0}closeRateLimitForm(){this.rateLimitFormOpen=!1,this.rateLimitFormSubmitting=!1,this.rateLimitFormError=``,this.rateLimitEditing=!1,this.rateLimitEditingOriginal=null,this.rateLimitForm=AT(),this.rateLimitFormReturnToInspector&&(this.rateLimitFormReturnToInspector=!1,this.rateLimitInspectorOpen=!0)}rateLimitNormalizedIdentity(e,t,n){return QT(e,t,n)}rateLimitIdentityMoved(e){return $T(this.rateLimitEditingOriginal,e)}setRateLimitFormSubject(e){this.rateLimitForm.subject=String(e||``)}rateLimitFormPayload(){return eE(this.rateLimitForm)}async submitRateLimitForm(){if(this.rateLimitFormSubmitting)return;let{payload:e,error:t}=this.rateLimitFormPayload();if(t){this.rateLimitFormError=t;return}let n=this.rateLimitIdentityMoved(e),r=this.rateLimitEditingOriginal;this.rateLimitFormSubmitting=!0,this.rateLimitFormError=``;try{let t=await aw(`/admin/rate-limits`,`PUT`,e,{label:`save rate limit`,errorFallback:`Unable to save rate limit.`,unavailableStatuses:[]});if(t.status===`stale`)return;if(t.status!==`ok`){this.rateLimitFormError=t.error;return}if(this.rateLimits=ZT(t.result.data),n&&!await this.deleteMovedRateLimitOriginal(r))return;this.closeRateLimitForm(),qo.success(n?`Rate limit moved; live counters restarted.`:`Rate limit saved.`)}finally{this.rateLimitFormSubmitting=!1}}async deleteMovedRateLimitOriginal(e){let t=await aw(`/admin/rate-limits`,`DELETE`,{scope:e.scope,subject:e.subject,limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`remove the moved rate limit`,errorFallback:`The new rule was saved, but the previous one could not be removed. Delete it manually.`,unavailableStatuses:[]});return t.status===`stale`?!1:t.status===`ok`?(this.rateLimits=ZT(t.result.data),!0):(this.rateLimitFormError=t.error,!1)}async deleteRateLimit(e){let t=UT(e);if(this.rateLimitDeletingKey===t)return;this.rateLimitDeletingKey=t;let n=await aw(`/admin/rate-limits`,`DELETE`,{scope:NT(e),subject:PT(e),limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`delete rate limit`,errorFallback:`Unable to delete rate limit.`,unavailableStatuses:[]});if(this.rateLimitDeletingKey=``,n.status!==`stale`){if(n.status!==`ok`){qo.error(n.error);return}this.rateLimits=ZT(n.result.data),qo.success(`Rate limit deleted.`)}}async resetRateLimit(e){let t=UT(e);if(this.rateLimitResettingKey===t)return;this.rateLimitResettingKey=t;let n=await aw(`/admin/rate-limits/reset-one`,`POST`,{scope:NT(e),subject:PT(e),period_seconds:Number(e.period_seconds||0)},{label:`reset rate limit`,errorFallback:`Unable to reset rate limit.`,unavailableStatuses:[]});if(this.rateLimitResettingKey=``,n.status!==`stale`){if(n.status!==`ok`){qo.error(n.error);return}this.rateLimits=ZT(n.result.data),qo.success(`Rate limit counters reset.`)}}rateLimitInspectorModelID(e){return String(e&&e.model&&e.model.id||``).trim()}openRateLimitInspectorForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`model`,provider:n,model:t,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}openRateLimitInspectorForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`provider`,provider:t,model:``,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}showRateLimitInspector(){this.rateLimitInspectorOpen=!0,this.fetchRateLimitsPage()}closeRateLimitInspector(){this.rateLimitInspectorOpen=!1}rateLimitRuleMatchesModel(e,t,n){return tE(e,t,n)}rateLimitRuleMatchesProvider(e,t){return nE(e,t)}rateLimitInspectorQualifiedModel(){return rE(this.rateLimitInspector)}rateLimitInspectorSections(){return iE(this.rateLimitInspector,this.rateLimits)}rateLimitPressurePercent(e){return aE(e)}rateLimitPressureStyle(e){return oE(e)}rateLimitPressureClass(e){return sE(e)}rateLimitGaugeCache={rules:null,states:{}};rateLimitGaugeMemo(e,t){this.rateLimitGaugeCache.rules!==this.rateLimits&&(this.rateLimitGaugeCache={rules:this.rateLimits,states:{}});let n=this.rateLimitGaugeCache.states;return e in n||(n[e]=t()),n[e]}rateLimitGaugeClassForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase(),r=this.rateLimits;return this.rateLimitGaugeMemo(`model:`+n+`/`+t,()=>lE(r,n,t))}rateLimitGaugeClassForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase(),n=this.rateLimits;return this.rateLimitGaugeMemo(`provider:`+t,()=>uE(n,t))}hasGlobalRateLimits(){let e=this.rateLimits;return this.rateLimitGaugeMemo(`global`,()=>cE(e))}rateLimitGaugeTitle(e,t){return dE(e,t)}rateLimitInspectorSummary(e){return fE(e)}openRateLimitFormFromInspector(e,t,n){this.rateLimitInspectorOpen=!1,this.rateLimitFormReturnToInspector=!0,this.openRateLimitForm(n||void 0),n||(this.rateLimitForm.scope=e,this.rateLimitForm.subject=t)}},pE=R(``),mE=R(``),hE=R(``),gE=R(``),_E=R(``),vE=R(``),yE=R(``),bE=R(`

Scope, subject, and period identify the rule: changing any of them + moves the rule to a new key and restarts its live counters.

`),xE=R(`

A user path rule limits the whole subtree; provider and model rules cap + all traffic routed there and make load balancing skip the target while + it is saturated. One shared counter per rule. Leave a field empty to + skip that limit. Token limits require usage tracking.

`,1);function SE(e,t){E(t,!0);{let t=O(()=>X.rateLimitEditing?`Edit Rate Limit`:`Create Rate Limit`);sT(e,{get open(){return X.rateLimitFormOpen},get title(){return I(t)},ariaLabel:`Rate limit editor`,get error(){return X.rateLimitFormError},get submitting(){return X.rateLimitFormSubmitting},submitLabel:`Save Rate Limit`,dialogClass:`budget-editor`,novalidate:!0,onclose:()=>X.closeRateLimitForm(),onsubmit:()=>X.submitRateLimitForm(),children:(e,t)=>{var n=xE(),r=N(n),i=M(r);lT(i,{id:`rate-limit-scope`,label:`Scope`,children:(e,t)=>{var n=mE();H(n,21,()=>X.rateLimitScopeOptions(),e=>e.value,(e,t)=>{var n=pE(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),L(`change`,n,()=>X.syncRateLimitScope()),Gi(n,()=>X.rateLimitForm.scope,e=>X.rateLimitForm.scope=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2);{let e=O(()=>X.rateLimitSubjectFieldLabel());lT(a,{id:`rate-limit-subject`,get label(){return I(e)},children:(e,t)=>{var n=hE();na(n),F(e=>{W(n,`placeholder`,e),W(n,`data-modal-autofocus`,!X.rateLimitEditing||void 0),ra(n,X.rateLimitForm.subject)},[()=>X.rateLimitSubjectPlaceholder()]),L(`input`,n,e=>X.setRateLimitFormSubject(e.currentTarget.value)),z(e,n)},$$slots:{default:!0}})}var o=P(a,2);lT(o,{id:`rate-limit-period`,label:`Period`,children:(e,t)=>{var n=gE();H(n,21,()=>X.rateLimitPeriodOptions(),e=>e.value,(e,t)=>{var n=pE(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),L(`change`,n,()=>X.syncRateLimitPeriodSeconds()),Gi(n,()=>X.rateLimitForm.period,e=>X.rateLimitForm.period=e),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=e=>{lT(e,{id:`rate-limit-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=_E();na(n),da(n,()=>X.rateLimitForm.period_seconds,e=>X.rateLimitForm.period_seconds=e),z(e,n)},$$slots:{default:!0}})};V(s,e=>{X.rateLimitForm.period===`custom`&&e(c)});var l=P(s,2);{let e=O(()=>X.rateLimitForm.period===`concurrent`?`Max In-Flight Requests`:`Max Requests`);lT(l,{id:`rate-limit-max-requests`,get label(){return I(e)},children:(e,t)=>{var n=vE();na(n),F(()=>W(n,`data-modal-autofocus`,X.rateLimitEditing?!0:void 0)),da(n,()=>X.rateLimitForm.max_requests,e=>X.rateLimitForm.max_requests=e),z(e,n)},$$slots:{default:!0}})}var u=P(l,2),d=e=>{lT(e,{id:`rate-limit-max-tokens`,label:`Max Tokens`,children:(e,t)=>{var n=yE();na(n),da(n,()=>X.rateLimitForm.max_tokens,e=>X.rateLimitForm.max_tokens=e),z(e,n)},$$slots:{default:!0}})};V(u,e=>{X.rateLimitForm.period!==`concurrent`&&e(d)}),T(r);var f=P(r,4),p=e=>{z(e,bE())};V(f,e=>{X.rateLimitEditing&&e(p)}),z(e,n)},$$slots:{default:!0}})}D()}Hr([`change`,`input`]);var CE=R(` `),wE=R(` Edit`,1),TE=R(` `,1),EE=R(`
In-flight
`),DE=R(`
Requests
`),OE=R(`
Tokens
`),kE=R(`
`),AE=R(`
`);function jE(e,t){E(t,!0);var n=AE();H(n,21,()=>t.rules,e=>X.rateLimitKey(e),(e,t)=>{var n=kE(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=e=>{var n=CE(),r=M(n);{let e=O(()=>X.rateLimitScope(I(t))===`provider`?`server`:`box`);K(r,{get name(){return I(e)},class:`budget-period-icon`})}var i=P(r,2),a=M(i,!0);T(i),T(n),F((e,t)=>{W(n,`title`,e),B(a,t)},[()=>`Rule scope: `+X.rateLimitScopeLabel(I(t)),()=>X.rateLimitScopeLabel(I(t))]),z(e,n)},u=O(()=>X.rateLimitScope(I(t))!==`user_path`);V(c,e=>{I(u)&&e(l)});var d=P(c,2),f=M(d);{let e=O(()=>X.rateLimitIsConcurrent(I(t))?`activity`:`timer`);K(f,{get name(){return I(e)},class:`budget-period-icon`})}var p=P(f,2),m=M(p,!0);T(p),T(d),T(s);var h=P(s,2),g=M(h),_=M(g),v=M(_,!0);T(_),T(g);var y=P(g,2),b=M(y),x=e=>{rw(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>X.openRateLimitForm(I(t)),children:(e,t)=>{var n=wE();K(N(n),{name:`pencil`,class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}})},S=O(()=>!X.rateLimitIsReadOnly(I(t)));V(b,e=>{I(S)&&e(x)});var C=P(b,2);{let e=O(()=>X.rateLimitResettingKey===X.rateLimitKey(I(t))?`Resetting counters`:`Reset counters`),n=O(()=>X.rateLimitResettingKey===X.rateLimitKey(I(t)));rw(C,{get label(){return I(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>X.resetRateLimit(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=TE(),i=N(r);K(i,{name:`rotate-ccw`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>X.rateLimitResettingKey===X.rateLimitKey(I(t))?`Resetting`:`Reset`]),z(e,r)},$$slots:{default:!0}})}var w=P(C,2),ee=e=>{{let n=O(()=>X.rateLimitDeletingKey===X.rateLimitKey(I(t))?`Deleting rate limit`:`Delete rate limit`),r=O(()=>X.rateLimitDeletingKey===X.rateLimitKey(I(t)));rw(e,{get label(){return I(n)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>X.deleteRateLimit(I(t)),get disabled(){return I(r)},children:(e,n)=>{var r=TE(),i=N(r);K(i,{name:`trash-2`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>X.rateLimitDeletingKey===X.rateLimitKey(I(t))?`Deleting`:`Delete`]),z(e,r)},$$slots:{default:!0}})}},te=O(()=>!X.rateLimitIsReadOnly(I(t)));V(w,e=>{I(te)&&e(ee)}),T(y),T(h),T(i);var ne=P(i,2),re=M(ne),ie=e=>{var n=EE(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u),T(l),T(o),T(n),F((e,t,n,r,i,l)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l)},[()=>X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)+`%`,()=>X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests),()=>`In-flight requests: `+X.formatRateLimitNumber(I(t).in_flight)+` of `+X.formatRateLimitNumber(I(t).max_requests),()=>`--budget-progress: `+X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)>=100}),()=>X.formatRateLimitNumber(I(t).in_flight)+` of `+X.formatRateLimitNumber(I(t).max_requests)+` in flight`]),z(e,n)},ae=O(()=>X.rateLimitIsConcurrent(I(t)));V(re,e=>{I(ae)&&e(ie)});var oe=P(re,2),se=e=>{var n=DE(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=M(f,!0);T(f),T(l),T(o),T(n),F((e,t,n,r,i,l,u)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l),B(p,u)},[()=>X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)+`%`,()=>X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests),()=>`Requests used: `+X.formatRateLimitNumber(I(t).requests_used)+` of `+X.formatRateLimitNumber(I(t).max_requests),()=>`--budget-progress: `+X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)>=100}),()=>X.formatRateLimitNumber(I(t).requests_used)+` of `+X.formatRateLimitNumber(I(t).max_requests)+` requests`,()=>X.formatRateLimitNumber(I(t).requests_remaining)+` left`]),z(e,n)},ce=O(()=>!X.rateLimitIsConcurrent(I(t))&&I(t).max_requests);V(oe,e=>{I(ce)&&e(se)});var le=P(oe,2),ue=e=>{var n=OE(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=M(f,!0);T(f),T(l),T(o),T(n),F((e,t,n,r,i,l,u)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l),B(p,u)},[()=>X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)+`%`,()=>X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens),()=>`Tokens used: `+X.formatRateLimitNumber(I(t).tokens_used)+` of `+X.formatRateLimitNumber(I(t).max_tokens),()=>`--budget-progress: `+X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)+`%`,()=>({"budget-bar-fill-danger":X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)>=100}),()=>X.formatRateLimitNumber(I(t).tokens_used)+` of `+X.formatRateLimitNumber(I(t).max_tokens)+` tokens`,()=>X.formatRateLimitNumber(I(t).tokens_remaining)+` left`]),z(e,n)},de=O(()=>!X.rateLimitIsConcurrent(I(t))&&I(t).max_tokens);V(le,e=>{I(de)&&e(ue)}),T(ne),T(r),T(n),F((e,t,n,r,i)=>{W(a,`title`,e),B(o,t),B(m,n),W(_,`title`,r),B(v,i)},[()=>X.rateLimitScopeLabel(I(t))+`: `+X.rateLimitSubject(I(t)),()=>X.rateLimitSubject(I(t)),()=>X.rateLimitPeriodLabel(I(t)),()=>X.rateLimitIsReadOnly(I(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>X.rateLimitSourceLabel(I(t))]),z(e,n)}),T(n),z(e,n),D()}var ME=R(`

Rate Limits

`),NE=R(``),PE=R(`
Rate limit management is unavailable.
`),FE=R(``),IE=R(`
`),LE=R(`

No rate limits configured yet.

`),RE=R(`

No rate limits match your filter.

`),zE=R(`
`);function BE(e,t){E(t,!0),An(()=>{q.refreshTick,Va.page===`rate-limits`&&X.fetchRateLimitsPage()});let n=O(()=>X.filteredRateLimits());var r=zE(),i=M(r),a=M(i);Hx(M(a),{copyId:`rate-limits-help-copy`,label:`rate limits help`,text:`Rate limits cap requests, tokens, and in-flight concurrency for a user path subtree, a provider, or a model. Consumer (user path) breaches return 429 with Retry-After and x-ratelimit-* headers; saturated providers and models are skipped by load balancing and failover while capacity exists elsewhere. Counters are per gateway instance and reset on restart; token limits need usage tracking.`,title:e=>{z(e,ME())},$$slots:{title:!0}}),T(a);var o=P(a,2),s=M(o),c=e=>{var t=NE();K(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=X.rateLimitFormSubmitting),L(`click`,t,()=>X.openRateLimitForm()),z(e,t)},l=O(()=>X.rateLimitsEnabled()&&X.rateLimitsAvailable&&!q.authError);V(s,e=>{I(l)&&e(c)}),T(o),T(i);var u=P(i,2);As(u,{});var d=P(u,2),f=e=>{z(e,PE())},p=O(()=>(!X.rateLimitsEnabled()||!X.rateLimitsAvailable)&&!q.authError);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{var t=FE(),n=M(t,!0);T(t),F(()=>B(n,X.rateLimitError)),z(e,t)};V(m,e=>{X.rateLimitError&&!q.authError&&e(h)});var g=P(m,2),_=e=>{tw(e,{label:`Loading rate limits...`})};V(g,e=>{X.rateLimitsLoading&&!q.authError&&e(_)});var v=P(g,2),y=e=>{var t=IE(),n=M(t);oC(M(n),{id:`rate-limit-filter`,placeholder:`Filter by subject, scope, or period...`,label:`Filter rate limits by subject, scope, or period`,get value(){return X.rateLimitFilter},set value(e){X.rateLimitFilter=e}}),T(n),T(t),z(e,t)};V(v,e=>{(X.rateLimits.length>0||X.rateLimitFilter)&&X.rateLimitsAvailable&&!q.authError&&!X.rateLimitFormOpen&&e(y)});var b=P(v,2);SE(b,{});var x=P(b,2),S=e=>{jE(e,{get rules(){return I(n)}})};V(x,e=>{I(n).length>0&&X.rateLimitsAvailable&&!q.authError&&e(S)});var C=P(x,2),w=e=>{z(e,LE())},ee=O(()=>X.rateLimits.length===0&&!X.rateLimitFilter&&!X.rateLimitsLoading&&!q.authError&&!X.rateLimitError&&X.rateLimitsAvailable&&X.rateLimitsEnabled());V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{z(e,RE())},re=O(()=>X.rateLimits.length>0&&I(n).length===0&&X.rateLimitFilter&&!X.rateLimitsLoading&&!q.authError&&!X.rateLimitError&&X.rateLimitsAvailable&&X.rateLimitsEnabled());V(te,e=>{I(re)&&e(ne)}),T(r),z(e,r),D()}Hr([`click`]);function VE(e){return String(e||``).trim().toLowerCase()}function HE(e){if(!e)return``;let t=String(e.selector||``).trim();if(t)return t;if(!e.model||!e.model.id)return``;let n=String(e.model.id||``).trim(),r=String(e.provider_name||``).trim();if(r)return r+`/`+n;let i=String(e.provider_type||``).trim();return!i||n.includes(`/`)?n:i+`/`+n}function UE(e,t,n,r){let i=new Set,a=String(e||``).trim().toLowerCase(),o=String(t||``).trim().toLowerCase(),s=String(n||``).trim().toLowerCase(),c=String(r||``).trim().toLowerCase();if(c&&i.add(c),!a)return i;i.add(a),s&&i.add(s+`/`+a),o&&!a.includes(`/`)&&i.add(o+`/`+a);let l=a.split(`/`);return l.length===2&&l[1]&&i.add(l[1]),i}function WE(e){return UE(e&&e.model?e.model.id:``,e?e.provider_type:``,e?e.provider_name:``,e?e.selector:``)}function GE(e){let t=new Set,n=String(e.resolved_model||``).trim().toLowerCase(),r=String(e.target_model||``).trim().toLowerCase(),i=String(e.target_provider||``).trim().toLowerCase();if(n){t.add(n);let e=n.split(`/`);e.length===2&&e[1]&&t.add(e[1])}if(r){t.add(r);let e=r.split(`/`);e.length===2&&e[1]&&t.add(e[1])}return r&&i&&t.add(i+`/`+r),t}function KE(e){if(!e)return``;let t=String(e.provider||``).trim(),n=String(e.model||``).trim();return!t||!n||n===t||n.startsWith(t+`/`)?n:t+`/`+n}function qE(e){if(e===``||e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function JE(e,t){let n={model:e},r=qE(t);return r!==null&&(n.weight=r),n}function YE(e){let t=Array.isArray(e)?e:[],n=[];for(let e of t){let t=String(e&&e.model||``).trim();t&&n.push(JE(t,e&&e.weight))}return n}function XE(e){switch(String(e||``).toLowerCase()){case`cost`:return`lowest cost`;case`round_robin`:case``:return`round robin`;default:return e}}var ZE={round_robin:`Round-robin (rotate across targets; honors weights)`,cost:`Lowest cost (cheapest target per request)`,adaptive:`Adaptive (target chosen by the registered routing extension)`};function QE(e,t){let n=Array.isArray(e)?[...e]:[],r=String(t||``).trim().toLowerCase();return r&&!n.includes(r)&&n.push(r),n.map(e=>({value:e,label:ZE[e]||e}))}function $E(e){let t=Array.isArray(e.targets)?e.targets:[],n=t.length>0?t[0]:{},r=t.map(e=>{let t={provider:e.provider||``,model:e.model||``};return e.weight&&(t.weight=e.weight),t});return{name:e.source,target_provider:n.provider||``,target_model:n.model||``,targets:r,strategy:e.strategy||``,session_affinity:e.session_affinity!==!1,description:e.description||``,enabled:e.enabled!==!1,managed:!!e.managed,valid:!!e.valid,resolved_model:e.resolved_model||``,provider_type:e.provider_type||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[]}}function eD(e){let t=Array.isArray(e)?e:[],n=[],r=[];for(let e of t)!e||typeof e!=`object`||(e.kind===`redirect`?n.push($E(e)):e.kind===`policy`&&r.push({selector:e.source,provider_name:e.provider_name||``,model:e.model||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[],description:e.description||``,enabled:e.enabled!==!1,managed:!!e.managed,scope_kind:e.scope_kind||``}));return{aliases:n,policies:r}}function tD(e){if(!e)return`—`;let t=Array.isArray(e.targets)?e.targets:[];return t.length>1?t.length+` targets · `+XE(e.strategy):e.resolved_model?e.resolved_model:e.target_provider?e.target_provider+`/`+e.target_model:e.target_model||`—`}function nD(e){return e?e.enabled===!1?`is-disabled`:e.valid?`is-valid`:`is-invalid`:`is-invalid`}function rD(e){return e?e.enabled===!1?`Disabled`:e.valid?`Active`:`Invalid`:`Invalid`}function iD(e){return Array.isArray(e)&&e.length>0&&e.indexOf(`/`)===-1}function aD(e,t){return!t||!e?``:e.effective_enabled===!1?`is-disabled`:iD(e.user_paths)?`is-restricted`:`is-enabled`}function oD(e){if(!e)return``;let t=[];e.effective_enabled===!1&&t.push(e.default_enabled===!1?`Disabled by default`:`Disabled`);let n=Array.isArray(e.user_paths)?e.user_paths:[];return n.length>0&&t.push(`Allowed for `+n.join(`, `)),t.join(` · `)}function sD({models:e,aliases:t,virtualModelsAvailable:n,activeCategory:r}){let i=Array.isArray(e)?e:[],a=Array.isArray(t)?t:[],o=new Map;if(n)for(let e of a){let t=VE(e&&e.name);!t||e.enabled===!1||!e.valid||o.set(t,e)}let s=new Map,c=i.map(e=>{let t=HE(e),n=null;for(let t of WE(e))s.has(t)||s.set(t,e),!n&&o.has(t)&&(n=o.get(t));let r=e&&e.access?e.access:null;return{key:`model:`+t,display_name:t,secondary_name:``,provider_name:e.provider_name||``,provider_type:e.provider_type||``,model:e.model,selector:e.selector||``,is_alias:!1,alias:null,access:r,masking_alias:n,has_virtual_model:!!(n||r&&r.override),alias_state_class:``,alias_state_text:``}});if(!n)return c;for(let e of a){let t=s.get(VE(e&&e.name));if(e&&e.enabled!==!1&&e.valid&&t)continue;let n=null;for(let t of GE(e))if(n=s.get(t)||null,n)break;!n&&r&&r!==`all`||c.push({key:`alias:`+e.name,display_name:e.name,secondary_name:tD(e),provider_name:n&&n.provider_name||``,provider_type:n?n.provider_type||e.provider_type||``:e.provider_type||``,model:n?n.model:{id:e.name,object:`model`},selector:``,is_alias:!0,alias:e,access:null,masking_alias:null,source_model_exists:!!t,has_virtual_model:!0,alias_state_class:nD(e),alias_state_text:rD(e)})}return c.sort((e,t)=>e.is_alias===t.is_alias?String(e.display_name||``).localeCompare(String(t.display_name||``)):e.is_alias?-1:1)}function cD(e,t){if(!t)return e;let n=String(t).toLowerCase();return e.filter(e=>[e.display_name,e.secondary_name,e.provider_name,e.provider_type,e.model&&e.model.owned_by,e.alias&&e.alias.description,e.alias&&e.alias_state_text,e.model&&e.model.metadata&&e.model.metadata.modes?e.model.metadata.modes.join(`,`):``,e.model&&e.model.metadata&&e.model.metadata.categories?e.model.metadata.categories.join(`,`):``].some(e=>String(e||``).toLowerCase().includes(n)))}function lD(e,t){return String(e||``).trim()||String(t||``).trim()||`Unassigned`}function uD(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return!r||r===n?``:r}function dD(e){let t=String(e||``).trim();return t?t+`/`:``}function fD(e){let t=Array.isArray(e)?e:[],n=t.filter(e=>e&&!e.is_alias).length,r=t.filter(e=>e&&e.is_alias).length,i=[];return n>0&&i.push(n+(n===1?` model`:` models`)),r>0&&i.push(r+(r===1?` alias`:` aliases`)),i.join(` · `)}function pD(e,t,n){let r=String(t||``).trim(),i=String(n||``).trim();for(let t of Array.isArray(e)?e:[]){let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim();if(!(r&&e!==r)&&!(!r&&i&&n!==i)&&t&&t.access)return t.access.default_enabled!==!1}return!0}function mD(e){for(let t of Array.isArray(e)?e:[])if(t&&t.access)return t.access.default_enabled!==!1;return!0}function hD(e,t){let n=String(t||``).trim();if(!n)return null;for(let t of Array.isArray(e)?e:[])if(String(t&&t.selector||``).trim()===n)return t;return null}function gD(e,t,n,r){let i=dD(t),a=r&&r.get(`/`)||null,o=i&&r&&r.get(i)||null,s=pD(e,t,n),c=o||a,l=c&&Array.isArray(c.user_paths)?Array.from(new Set(c.user_paths)).sort():[];return{selector:i,default_enabled:s,effective_enabled:c?c.enabled!==!1:s,user_paths:l,override:o}}function _D(e,t,n){if(!Array.isArray(e)||e.length===0)return[];let r=new Map;for(let e of Array.isArray(n)?n:[]){let t=String(e&&e.selector||``).trim();t&&r.set(t,e)}let i=[],a=new Map;for(let t of e){if(t&&t.is_alias){i.push(t);continue}let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim(),r=`provider-group:`+(e||n||`unassigned`);a.has(r)||a.set(r,{key:r,provider_name:e,provider_type:n,display_name:lD(e,n),type_label:uD(e,n),rows:[]});let o=a.get(r);!o.provider_name&&e&&(o.provider_name=e),!o.provider_type&&n&&(o.provider_type=n),o.display_name=lD(o.provider_name,o.provider_type),o.type_label=uD(o.provider_name,o.provider_type),o.rows.push(t)}let o=Array.from(a.values()).map(e=>{let n=gD(t,e.provider_name,e.provider_type,r);return{...e,access:n,access_summary:oD(n),item_count_label:fD(e.rows)}}).sort((e,t)=>String(e.display_name||``).localeCompare(String(t.display_name||``)));return i.length>0&&o.unshift({key:`virtual-model-group`,is_virtual_models:!0,provider_name:``,provider_type:``,display_name:`Virtual models`,type_label:``,rows:i,access:{selector:``},access_summary:``,item_count_label:fD(i)}),o}function vD(e,t){let n=hD(t,`/`),r=mD(e),i=n&&Array.isArray(n.user_paths)?n.user_paths:[];return{key:`scope-global`,is_alias:!1,display_name:`all providers and models`,access:{selector:`/`,default_enabled:r,effective_enabled:n?n.enabled!==!1:r,user_paths:i,override:n}}}function yD(e){return e?String(e.access&&e.access.selector||``).trim()||String(e.override_selector||``).trim()||HE(e):``}function bD(e){if(!e)return[];let t=[];return e.is_alias?t.push(`alias-row`,nD(e.alias)):e.has_virtual_model&&t.push(`alias-row`,`is-valid`),!e.is_alias&&e.masking_alias&&t.push(`masked-model-row`),!e.is_alias&&e.access&&e.access.effective_enabled===!1&&t.push(`model-access-disabled-row`),t}function xD(e){return!!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)}function SD(e){return!!(e&&!e.is_alias&&e.masking_alias&&e.masking_alias.name&&!e.masking_alias.managed)}function CD(e){return e&&e.is_alias&&e.alias&&e.alias.name?`alias-row-`+String(e.alias.name).replace(/[^a-zA-Z0-9_-]+/g,`-`):``}function wD(e){return e?e.is_alias?!!(e.alias&&e.alias.managed):!!(e.access&&e.access.override&&e.access.override.managed||e.masking_alias&&e.masking_alias.managed):!1}function TD(e){return!!(e&&e.override)}function ED(e){return e?`table-action-btn-active`:``}function DD(e,t){let n=`Edit `+String(e||`model access`);return t?n+` (virtual model exists)`:n}function OD(){return{source:``,target_model:``,target_weight:1,targets:[],strategy:`round_robin`,session_affinity:!0,user_paths:``,description:``,enabled:!0}}function kD(e){return String(e&&e.target_model||``).trim()!==``}function AD(e){return String(e&&e.target_model||``).trim()?!0:YE(e&&e.targets).length>0}function jD(e){return!!e&&Array.isArray(e.targets)&&e.targets.length>0}function MD(e){return jD(e)&&String(e&&e.strategy||``).toLowerCase()!==`cost`}function ND(e){let t=Array.isArray(e.targets)?e.targets:[];if(t.length>0){let n=t.shift();e.target_model=n.model||``,e.target_weight=n.weight||1;return}e.target_model=``,e.target_weight=1}function PD(e){let t=Array.isArray(e&&e.targets)?e.targets:[];return t.length>0?{primaryModel:KE(t[0]),primaryWeight:t[0].weight||1,extraTargets:t.slice(1).map(e=>({model:KE(e),weight:e.weight||1}))}:{primaryModel:e&&e.target_provider?e.target_provider+`/`+e.target_model:e&&e.target_model||``,primaryWeight:1,extraTargets:[]}}function FD(e){return String(e||``).split(/\r?\n|,/).map(e=>String(e||``).trim()).filter(Boolean)}function ID(e,t,n){let r=String(e&&e.source||``).trim(),i=String(e&&e.target_model||``).trim(),a=YE(e&&e.targets),o=AD(e),s=String(t||``).trim(),c=n===`edit`&&!!s&&r!==s,l={source:r,user_paths:FD(e&&e.user_paths),description:String(e&&e.description||``).trim(),enabled:!!(e&&e.enabled)};if(c&&(l.old_source=s),o){let t=[];if(i&&t.push(JE(i,e.target_weight)),t.push(...a),t.length>1){let n=e.strategy||`round_robin`;l.targets=n===`cost`?t.map(e=>({model:e.model})):t,l.strategy=n,e&&e.session_affinity===!1&&(l.session_affinity=!1)}else l.target_model=t[0].model}return{payload:l,source:r,isRedirect:o,isRename:c}}function LD(e){let t={source:e.name,description:String(e.description||``).trim(),user_paths:Array.isArray(e.user_paths)?e.user_paths:[],enabled:e.enabled===!1},n=Array.isArray(e.targets)?e.targets:[];return n.length>1?(t.strategy=e.strategy||`round_robin`,e.session_affinity===!1&&(t.session_affinity=!1),t.targets=t.strategy===`cost`?n.map(e=>({model:KE(e)})):n.map(e=>JE(KE(e),e.weight))):n.length===1?t.target_model=KE(n[0]):t.target_model=e.target_provider?e.target_provider+`/`+e.target_model:e.target_model,t}function RD(e,t,n){let r=n||{},i=r.effective_enabled===!1,a=t&&Array.isArray(t.user_paths)?t.user_paths:[],o=`PUT`,s;return i===!1?s={source:e,enabled:!1,user_paths:a}:t&&a.length===0&&r.default_enabled!==!1?(o=`DELETE`,s={source:e}):s={source:e,enabled:!0,user_paths:a},{method:o,payload:s,desired:i}}function zD(e,t,n){let r=Math.max(1,Number(t||75)),i=Math.min(n,e+r);return{limit:i,rendering:isD({models:Os.models,aliases:this.aliases,virtualModelsAvailable:this.virtualModelsAvailable,activeCategory:Os.activeCategory}));get displayModels(){return I(this.#T)}set displayModels(e){A(this.#T,e)}#E=O(()=>_D(this.displayModels,Os.models,this.modelOverrideViews));get displayModelGroups(){return I(this.#E)}set displayModelGroups(e){A(this.#E,e)}#D=O(()=>cD(this.displayModels,Os.filter));get filteredDisplayModels(){return I(this.#D)}set filteredDisplayModels(e){A(this.#D,e)}#O=O(()=>{let e=this.filteredDisplayModels,t=Math.max(0,Math.min(Number(this.modelRenderLimit||0),e.length));return!Os.filter&&t>=this.displayModels.length?this.displayModelGroups:_D(e.slice(0,t),Os.models,this.modelOverrideViews)});get filteredDisplayModelGroups(){return I(this.#O)}set filteredDisplayModelGroups(e){A(this.#O,e)}#k=O(()=>vD(Os.models,this.modelOverrideViews));get globalScopeRow(){return I(this.#k)}set globalScopeRow(e){A(this.#k,e)}modelsBusy(){return!!(Os.loading||this.modelsRendering)}modelLoadingText(){if(Os.loading)return this.displayModels.length>0?`Refreshing models...`:`Loading models...`;let e=this.filteredDisplayModels.length;return`Rendering models... `+Math.min(Number(this.modelRenderLimit||0),e)+` / `+e}restartModelRendering(e){let t=++this.#a,n=BD(this.modelRenderBatchSize,e);this.modelRenderLimit=n.limit,this.modelsRendering=n.rendering,n.rendering&&this.#A(t)}stopModelRendering(){this.#a++,this.modelsRendering=!1}#A(e){let t=()=>{if(e!==this.#a)return;let t=zD(this.modelRenderLimit,this.modelRenderBatchSize,this.filteredDisplayModels.length);this.modelRenderLimit=t.limit,this.modelsRendering=t.rendering,t.rendering&&this.#A(e)};typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>setTimeout(t,0)):setTimeout(t,0)}async fetchVirtualModels(){this.aliasLoading=!0,this.aliasError=``;try{let e=await uo(`/admin/virtual-models`,{label:`virtual models`});if(e.status===503){this.virtualModelsAvailable=!1,this.aliases=[],this.modelOverrideViews=[];return}if(e.stale)return;if(this.virtualModelsAvailable=!0,!e.ok){this.aliases=[],this.modelOverrideViews=[];return}let{aliases:t,policies:n}=eD(e.data);this.aliases=t,this.modelOverrideViews=n}catch(e){console.error(`Failed to fetch virtual models:`,e),this.aliases=[],this.modelOverrideViews=[],this.aliasError=`Unable to load virtual models.`}finally{this.aliasLoading=!1}}qualifiedModelName(e){return HE(e)}findModelOverrideView(e){return hD(this.modelOverrideViews,e)}hasGlobalModelOverride(){return!!this.findModelOverrideView(`/`)}findExistingAliasByName(e){let t=VE(e);if(!t)return null;for(let e of this.aliases)if(VE(e&&e.name)===t)return e;return null}findConcreteModelByName(e){let t=VE(e);if(!t)return null;for(let e of Os.models)if(WE(e).has(t))return e;return null}rowToggleEnabled(e){return e?e.is_alias?e.alias&&e.alias.enabled!==!1:!!(e.access&&e.access.effective_enabled!==!1):!1}rowToggleLabel(e){return this.rowTogglingKey&&this.rowTogglingKey===e.key?`Updating...`:this.rowToggleRestricted(e)?`Restricted`:this.rowToggleEnabled(e)?`Enabled`:`Disabled`}rowToggleRestricted(e){return!!e&&!e.is_alias&&aD(e.access,this.virtualModelsAvailable)===`is-restricted`}rowToggleAriaLabel(e){if(!e)return``;let t=this.rowToggleEnabled(e)?`Disable `:`Enable `,n;return n=e.is_alias?`alias `+String(e.alias&&e.alias.name||``):String(e.display_name||e.access&&e.access.selector||`model`),t+n.trim()}async toggleRowEnabled(e){if(this.virtualModelsAvailable&&!(!e||this.rowTogglingKey===e.key)){if(wD(e)){qo.success(`This virtual model is managed by configuration and is read-only.`);return}if(e.is_alias){await this.toggleAliasRow(e);return}await this.toggleModelRow(e)}}async toggleAliasRow(e){let t=e.alias;if(!t||!t.name)return;this.rowTogglingKey=e.key;let n=LD(t);try{let e=await fo(`/admin/virtual-models`,`PUT`,n,{label:`alias state`});if(e.status===503){this.virtualModelsAvailable=!1,qo.error(`Virtual models feature is unavailable.`);return}if(e.stale)return;if(!e.ok){qo.error(e.status===401?`Authentication required.`:oo(e,`Failed to update alias state.`));return}qo.success(n.enabled?`Alias enabled.`:`Alias disabled.`),this.fetchVirtualModels()}catch(e){console.error(`Failed to toggle alias state:`,e),qo.error(`Failed to update alias state.`)}finally{this.rowTogglingKey=``}}async toggleModelRow(e){let t=yD(e);if(!t)return;let{method:n,payload:r,desired:i}=RD(t,this.findModelOverrideView(t),e.access||{});this.rowTogglingKey=e.key;try{let e=await fo(`/admin/virtual-models`,n,r,{label:`model access`});if(e.status===503){this.virtualModelsAvailable=!1,qo.error(`Virtual models feature is unavailable.`);return}if(!(n===`DELETE`&&e.status===404)){if(e.stale)return;if(!e.ok){qo.error(e.status===401?`Authentication required.`:oo(e,`Failed to update model access.`));return}}qo.success(i?`Model enabled.`:`Model disabled.`),Promise.all([Os.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to toggle model access:`,e),qo.error(`Failed to update model access.`)}finally{this.rowTogglingKey=``}}async removeAliasRow(e){if(!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)||this.rowDeletingKey)return;let t=String(e.alias.name||``).trim();t&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the virtual model alias "`+t+`"?`,method:`DELETE`,payload:{source:t},operation:`virtual model`,failureMessage:`Failed to remove virtual model.`,notice:`Virtual model removed.`,ignoreNotFound:!0})}async removeRedirectRow(e){let t=e&&e.masking_alias;if(!(e&&!e.is_alias&&t&&t.name&&!t.managed)||this.rowDeletingKey)return;let n=String(t.name||``).trim();n&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the redirect for "`+n+`"? Other virtual model settings will be preserved.`,method:`PUT`,payload:{source:n,user_paths:Array.isArray(t.user_paths)?t.user_paths:[],description:String(t.description||``).trim(),enabled:t.enabled!==!1},operation:`virtual model redirect`,failureMessage:`Failed to remove redirect.`,notice:`Redirect removed. Other virtual model settings were preserved.`})}async mutateVirtualModelRow(e){if(!this.rowDeletingKey&&window.confirm(e.confirmMessage)){this.rowDeletingKey=e.rowKey;try{let t=await fo(`/admin/virtual-models`,e.method,e.payload,{label:e.operation});if(t.status===503){this.virtualModelsAvailable=!1,qo.error(`Virtual models feature is unavailable.`);return}if(!(e.ignoreNotFound&&t.status===404)){if(t.stale)return;if(!t.ok){qo.error(t.status===401?`Authentication required.`:oo(t,e.failureMessage));return}}this.virtualModelsAvailable=!0,qo.success(e.notice),Promise.all([Os.fetchModels(),this.fetchVirtualModels()])}catch(t){console.error(e.failureMessage,t),qo.error(e.failureMessage)}finally{this.rowDeletingKey=``}}}addVmTarget(){Array.isArray(this.vmForm.targets)||(this.vmForm.targets=[]),this.vmForm.targets.push({model:``,weight:1})}removeVmTarget(e){Array.isArray(this.vmForm.targets)&&this.vmForm.targets.splice(e,1)}removePrimaryTarget(){ND(this.vmForm)}vmFormHasPrimaryTarget(){return kD(this.vmForm)}vmFormShowStrategy(){return jD(this.vmForm)}vmStrategyOptions(){return QE(go.virtualModelStrategies(),this.vmForm.strategy)}vmFormShowWeights(){return MD(this.vmForm)}vmFormToggleRestricted(){return!!(this.vmForm&&this.vmForm.enabled)&&iD(FD(this.vmForm.user_paths))}vmFormToggleLabel(){return!this.vmForm||!this.vmForm.enabled?`Disabled`:this.vmFormToggleRestricted()?`Restricted`:`Enabled`}resetVirtualModelForm(){this.vmFormError=``,this.vmFormHelpOpen=!1,this.vmFormUserPathsHelpOpen=!1,this.vmSubmitting=!1,this.vmDeleting=!1,this.vmFormHasExisting=!1,this.vmFormDefaultEnabled=!0,this.vmFormEffectiveEnabled=!0,this.vmFormDisplayName=``,this.vmFormSourceLocked=!1,this.vmFormOriginalSource=``,this.vmFormManaged=!1,this.vmForm=OD()}closeVirtualModelForm(){this.vmFormOpen=!1,this.resetVirtualModelForm()}openVirtualModelCreate(e){this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`create`,this.vmFormSourceLocked=!1,this.vmFormDisplayName=`New virtual model`,e&&e.model&&e.model.id&&(this.vmForm.target_model=HE(e))}openVirtualModelEditAlias(e){if(!e)return;this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!1,this.vmFormHasExisting=!0,this.vmFormManaged=!!e.managed,this.vmFormOriginalSource=e.name||``,this.vmFormDisplayName=e.name||``,this.vmFormDefaultEnabled=mD(Os.models),this.vmFormEffectiveEnabled=e.enabled!==!1;let{primaryModel:t,primaryWeight:n,extraTargets:r}=PD(e);this.vmForm={source:e.name||``,target_model:t,target_weight:n,targets:r,strategy:e.strategy||`round_robin`,session_affinity:e.session_affinity!==!1,user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` +`),description:e.description||``,enabled:e.enabled!==!1}}openVirtualModelEditModel(e){if(!e||e.is_alias)return;let t=e.access||{},n=t.override||null,r=n&&Array.isArray(n.user_paths)?n.user_paths:Array.isArray(t.user_paths)?t.user_paths:[],i=yD(e);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!n,this.vmFormOriginalSource=i;let a=n?n.enabled!==!1:t.effective_enabled!==!1;this.vmFormDefaultEnabled=t.default_enabled!==!1,this.vmFormEffectiveEnabled=a,this.vmFormManaged=!!(n&&n.managed),this.vmFormDisplayName=e.access_display_name||e.display_name||i||``,this.vmForm={source:i,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:r.join(` +`),description:n&&n.description?n.description:``,enabled:a}}openGlobalModelOverrideEdit(){let e=this.findModelOverrideView(`/`),t=e&&Array.isArray(e.user_paths)?e.user_paths:[],n=mD(Os.models);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!e,this.vmFormOriginalSource=`/`,this.vmFormDefaultEnabled=n,this.vmFormEffectiveEnabled=e?e.enabled!==!1:n,this.vmFormManaged=!!(e&&e.managed),this.vmFormDisplayName=`All providers and models`,this.vmForm={source:`/`,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:t.join(` +`),description:e&&e.description?e.description:``,enabled:e?e.enabled!==!1:n}}openProviderOverrideEdit(e){!e||!e.access||!e.access.selector||this.openVirtualModelEditModel({display_name:e.display_name,access_display_name:`All models in `+e.display_name,provider_name:e.provider_name,provider_type:e.provider_type,access:e.access,override_selector:e.access.selector,is_alias:!1})}async submitVirtualModelForm(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be edited here.`;return}let{payload:e,source:t,isRedirect:n,isRename:r}=ID(this.vmForm,this.vmFormOriginalSource,this.vmFormMode);if(!t){this.vmFormError=`Source is required.`;return}if(this.vmFormError=``,this.vmFormMode!==`edit`){let e=this.findExistingAliasByName(t),r=e?null:this.findModelOverrideView(t);if(e||r){let n=e?`A virtual model named "`+e.name+`" already exists. Saving will update that virtual model. Continue?`:`An access policy for "`+t+`" already exists. Saving will update that virtual model. Continue?`;if(!window.confirm(n)){this.vmFormError=`Choose a different source or edit the existing virtual model.`;return}}else if(n){let e=this.findConcreteModelByName(t);if(e){let t=HE(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Creating this alias will mask that model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}else if(r){let e=(this.aliases||[]).find(e=>e&&e.name===t)||null,r=e?null:this.findModelOverrideView(t);if(e||r){this.vmFormError=`A virtual model for "`+t+`" already exists. Choose a different source.`;return}if(n){let e=this.findConcreteModelByName(t);if(e){let t=HE(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Renaming to that name will mask the model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}this.vmSubmitting=!0;try{let t=await fo(`/admin/virtual-models`,`PUT`,e,{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:oo(t,`Failed to save virtual model.`);return}let r=!n&&t.status===204;this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),qo.success(n?`Alias saved.`:r?`Model access reset to inherited/default.`:`Model access saved.`),Promise.all([Os.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to save virtual model:`,e),this.vmFormError=`Failed to save virtual model.`}finally{this.vmSubmitting=!1}}async deleteVirtualModel(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be removed here.`;return}let e=String(this.vmForm.source||this.vmFormOriginalSource||``).trim();if(!(!e||!this.vmFormHasExisting)&&window.confirm(`Remove the virtual model for "`+e+`"? This reverts to inherited/default behavior.`)){this.vmDeleting=!0,this.vmFormError=``;try{let t=await fo(`/admin/virtual-models`,`DELETE`,{source:e},{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:oo(t,`Failed to remove virtual model.`);return}}this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),qo.success(`Virtual model removed.`),Promise.all([Os.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to delete virtual model:`,e),this.vmFormError=`Failed to remove virtual model.`}finally{this.vmDeleting=!1}}}},HD=[{value:`input_per_mtok`,label:`Input $/MTok`,group:`Tokens`},{value:`output_per_mtok`,label:`Output $/MTok`,group:`Tokens`},{value:`cached_input_per_mtok`,label:`Cached input $/MTok`,group:`Tokens`},{value:`cache_write_per_mtok`,label:`Cache write $/MTok`,group:`Tokens`},{value:`reasoning_output_per_mtok`,label:`Reasoning output $/MTok`,group:`Tokens`},{value:`batch_input_per_mtok`,label:`Batch input $/MTok`,group:`Batch`},{value:`batch_output_per_mtok`,label:`Batch output $/MTok`,group:`Batch`},{value:`audio_input_per_mtok`,label:`Audio input $/MTok`,group:`Audio`},{value:`audio_output_per_mtok`,label:`Audio output $/MTok`,group:`Audio`},{value:`per_image`,label:`$/Image`,group:`Image`},{value:`input_per_image`,label:`Input $/Image`,group:`Image`},{value:`per_second_input`,label:`Input $/Second`,group:`Audio/Video`},{value:`per_second_output`,label:`Output $/Second`,group:`Video`},{value:`per_character_input`,label:`$/Character`,group:`Audio`},{value:`per_page`,label:`$/Page`,group:`Utility`},{value:`per_request`,label:`$/Request`,group:`Utility`}];function UD(e){let t=HD.find(t=>t.value===e);return t?t.label:String(e||``).replace(/_/g,` `)}function WD(e){return e&&typeof e==`object`?JSON.parse(JSON.stringify(e)):{}}function GD(e,t){let n=WD(e),r=t&&t.pricing?t.pricing:t;if(!r||typeof r!=`object`)return n;for(let e of HD)r[e.value]!==null&&r[e.value]!==void 0&&(n[e.value]=Number(r[e.value]));return Array.isArray(r.tiers)&&r.tiers.length>0&&(n.tiers=WD(r.tiers)),n}function KD(e){switch(String(e||``).trim()){case`config_yaml`:return`config.yaml`;case`model_registry`:return`Model registry`;default:return e?String(e):`Unknown`}}function qD(e){let t=e&&e.pricing?e.pricing:{},n=e&&e.pricing_sources&&typeof e.pricing_sources==`object`?e.pricing_sources:{},r={};for(let e of HD)t[e.value]!==null&&t[e.value]!==void 0&&(r[e.value]=KD(n[e.value]||`model_registry`));return r}function JD(e){let t=String(e&&e.selector||``).trim();return t?`Dashboard/API override (`+t+`)`:`Dashboard/API override`}function YD(e){let t=String(e||``).trim();return t?t+`/`:``}function XD(e){return String(e&&e.model&&e.model.id||``).trim()}function ZD(e){let t=String(e&&e.provider_name||``).trim(),n=XD(e);return t&&n?t+`/`+n:n}function QD(e){return XD(e)}function $D(e){let t=new Map;for(let n of Array.isArray(e)?e:[]){let e=String(n&&n.selector||``).trim();e&&t.set(e,n)}return t}function eO(e,t){let n=String(t||``).trim();return n&&$D(e).get(n)||null}function tO(e,t,n){let r=$D(e),i=ZD(t),a=QD(t),o=YD(t&&t.provider_name),s=String(n||``).trim();for(let e of[i,a,o,`/`]){if(!e||e===s)continue;let t=r.get(e);if(t)return t}return null}function nO(e,t,n){let r=e&&e.model&&e.model.metadata?e.model.metadata:null,i=WD(r&&r.pricing),a=qD(r),o=tO(t,e,n),s=o&&o.pricing?o.pricing:null;if(s){let e=JD(o);for(let t of HD)s[t.value]!==null&&s[t.value]!==void 0&&(i[t.value]=Number(s[t.value]),a[t.value]=e);Array.isArray(s.tiers)&&s.tiers.length>0&&(i.tiers=WD(s.tiers),a.tiers=e)}return{pricing:i,sources:a}}function rO(e,t){let n=e&&e.pricing?e.pricing:{},r=[];for(let e of HD)n[e.value]!==null&&n[e.value]!==void 0&&r.push({id:t(),field:e.value,value:String(n[e.value])});return r}function iO(e,t){let n=new Set;for(let r of Array.isArray(e)?e:[]){if(t&&r.id===t)continue;let e=String(r.field||``).trim();e&&n.add(e)}return n}function aO(e,t){let n=iO(e,t&&t.id);return HD.filter(e=>e.value===(t&&t.field)||!n.has(e.value))}function oO(e,t){let n={},r=new Set;for(let t of Array.isArray(e)?e:[]){let e=String(t.field||``).trim();if(!e)return{error:`Choose a price type for every row.`};if(r.has(e))return{error:`Each price type can only be used once.`};r.add(e);let i=String(t.value||``).trim();if(i===``)return{error:`Enter a value for `+UD(e)+`.`};let a=Number(i);if(!Number.isFinite(a)||a<0)return{error:`Pricing values must be numbers greater than or equal to 0.`};n[e]=a}let i=Array.isArray(t)?t:[];return i.length>0&&(n.tiers=WD(i)),Object.keys(n).length===0?{error:`Add at least one pricing field before saving.`}:{pricing:n}}function sO(e,t,n){let r=e||{},i=t||{},a=n||{},o=GD(r,a);return HD.map(e=>{let t=a[e.value]!==null&&a[e.value]!==void 0,n=r[e.value]!==null&&r[e.value]!==void 0;return{field:e.value,label:e.label,value:o[e.value],source:t?`Form/API value`:n?i[e.value]||`Model registry`:`Unset`}}).filter(e=>e.source!==`Unset`||e.value!==void 0)}var cO=new class{#e=k(!0);get modelPricingOverridesAvailable(){return I(this.#e)}set modelPricingOverridesAvailable(e){A(this.#e,e,!0)}#t=k(j([]));get modelPricingOverrideViews(){return I(this.#t)}set modelPricingOverrideViews(e){A(this.#t,e,!0)}#n=k(``);get modelPricingOverrideError(){return I(this.#n)}set modelPricingOverrideError(e){A(this.#n,e,!0)}#r=k(!1);get modelPricingOverrideFormOpen(){return I(this.#r)}set modelPricingOverrideFormOpen(e){A(this.#r,e,!0)}#i=k(!1);get modelPricingOverrideSubmitting(){return I(this.#i)}set modelPricingOverrideSubmitting(e){A(this.#i,e,!0)}#a=k(!1);get modelPricingOverrideFormHasExistingOverride(){return I(this.#a)}set modelPricingOverrideFormHasExistingOverride(e){A(this.#a,e,!0)}#o=k(``);get modelPricingOverrideFormDisplayName(){return I(this.#o)}set modelPricingOverrideFormDisplayName(e){A(this.#o,e,!0)}#s=k(``);get modelPricingOverrideFormScope(){return I(this.#s)}set modelPricingOverrideFormScope(e){A(this.#s,e,!0)}#c=k(j([]));get modelPricingOverrideFormScopeOptions(){return I(this.#c)}set modelPricingOverrideFormScopeOptions(e){A(this.#c,e,!0)}#l=k(null);get modelPricingOverrideFormRow(){return I(this.#l)}set modelPricingOverrideFormRow(e){A(this.#l,e,!0)}#u=k(null);get modelPricingOverrideFormBasePricing(){return I(this.#u)}set modelPricingOverrideFormBasePricing(e){A(this.#u,e,!0)}#d=k(null);get modelPricingOverrideFormBasePricingSources(){return I(this.#d)}set modelPricingOverrideFormBasePricingSources(e){A(this.#d,e,!0)}#f=k(j([]));get modelPricingOverrideFormPreservedTiers(){return I(this.#f)}set modelPricingOverrideFormPreservedTiers(e){A(this.#f,e,!0)}#p=k(j([]));get modelPricingOverrideRows(){return I(this.#p)}set modelPricingOverrideRows(e){A(this.#p,e,!0)}#m=k(j({selector:``}));get modelPricingOverrideForm(){return I(this.#m)}set modelPricingOverrideForm(e){A(this.#m,e,!0)}_modelPricingOverrideRowID=0;pricingFieldOptions(){return HD}pricingFieldLabel(e){return UD(e)}async fetchModelPricingOverrides(){this.modelPricingOverrideError=``;try{let e=await uo(`/admin/model-pricing-overrides`,{label:`model pricing overrides`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideViews=[];return}if(e.stale)return;if(this.modelPricingOverridesAvailable=!0,!e.ok){this.modelPricingOverrideViews=[];return}this.modelPricingOverrideViews=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch model pricing overrides:`,e),this.modelPricingOverrideViews=[],this.modelPricingOverrideError=`Unable to load model pricing overrides.`}}findModelPricingOverrideView(e){return eO(this.modelPricingOverrideViews,e)}hasGlobalPricingOverride(){return!!this.findModelPricingOverrideView(`/`)}hasProviderPricingOverride(e){return!!this.findModelPricingOverrideView(YD(e&&e.provider_name))}hasModelPricingOverride(e){return!!this.findModelPricingOverrideView(ZD(e))}modelPricingButtonClass(e){return e?`table-action-btn-active`:``}modelPricingButtonLabel(e,t){let n=`Edit `+String(e||`model pricing`);return t?n+` (override exists)`:n}modelRowPricing(e){return nO(e,this.modelPricingOverrideViews).pricing}openGlobalPricingOverrideEdit(){this.openModelPricingOverrideForm({displayName:`All providers and models`,selector:`/`,scope:`global`,scopeOptions:[{value:`global`,label:`All providers and models`,selector:`/`}],row:null})}openProviderPricingOverrideEdit(e){let t=YD(e&&e.provider_name);t&&this.openModelPricingOverrideForm({displayName:`All models in `+(e.display_name||e.provider_name||t),selector:t,scope:`provider`,scopeOptions:[{value:`provider`,label:`Provider`,selector:t}],row:null})}openModelPricingOverrideEdit(e){if(!e||e.is_alias)return;let t=ZD(e),n=QD(e),r=[{value:`exact`,label:`This provider and model`,selector:t}];n&&n!==t&&r.push({value:`model`,label:`This model across providers`,selector:n}),this.openModelPricingOverrideForm({displayName:e.display_name||t,selector:t,scope:`exact`,scopeOptions:r,row:e})}openModelPricingOverrideForm(e){let t=e||{};this.modelPricingOverrideFormOpen=!0,this.modelPricingOverrideError=``,this.modelPricingOverrideFormDisplayName=t.displayName||t.selector||`Pricing`,this.modelPricingOverrideFormScope=t.scope||``,this.modelPricingOverrideFormScopeOptions=Array.isArray(t.scopeOptions)?t.scopeOptions:[],this.modelPricingOverrideFormRow=t.row||null,this.modelPricingOverrideForm={selector:t.selector||``},this.loadModelPricingOverrideFormSelector(t.selector||``)}loadModelPricingOverrideFormSelector(e){e=String(e||``).trim();let t=this.findModelPricingOverrideView(e);this.modelPricingOverrideFormHasExistingOverride=!!t,this.modelPricingOverrideRows=rO(t,()=>this.nextModelPricingOverrideRowID()),this.modelPricingOverrideFormPreservedTiers=t&&t.pricing&&Array.isArray(t.pricing.tiers)?WD(t.pricing.tiers):[],this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow();let n=this.modelPricingOverrideFormRow,r=n?nO(n,this.modelPricingOverrideViews,e):{pricing:{},sources:{}};this.modelPricingOverrideFormBasePricing=r.pricing,this.modelPricingOverrideFormBasePricingSources=r.sources}setModelPricingOverrideScope(e){this.modelPricingOverrideFormScope=e;let t=this.modelPricingOverrideFormScopeOptions.find(t=>t.value===e);t&&(this.modelPricingOverrideForm.selector=t.selector,this.loadModelPricingOverrideFormSelector(t.selector))}nextModelPricingOverrideRowID(){return this._modelPricingOverrideRowID=(this._modelPricingOverrideRowID||0)+1,`pricing-row-`+this._modelPricingOverrideRowID}availablePricingFieldOptions(e){return aO(this.modelPricingOverrideRows,e)}addModelPricingOverrideRow(){let e=iO(this.modelPricingOverrideRows),t=HD.find(t=>!e.has(t.value))||HD[0];t&&this.modelPricingOverrideRows.push({id:this.nextModelPricingOverrideRowID(),field:t.value,value:``})}removeModelPricingOverrideRow(e){this.modelPricingOverrideRows=this.modelPricingOverrideRows.filter(t=>t.id!==e.id),this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow()}modelPricingOverridePayload(){return oO(this.modelPricingOverrideRows,this.modelPricingOverrideFormPreservedTiers)}modelPricingOverrideDraftPricing(){let e=this.modelPricingOverridePayload();return e&&e.pricing?e.pricing:{}}modelPricingEffectivePreviewRows(){return sO(this.modelPricingOverrideFormBasePricing,this.modelPricingOverrideFormBasePricingSources,this.modelPricingOverrideDraftPricing())}closeModelPricingOverrideForm(){this.modelPricingOverrideFormOpen=!1,this.modelPricingOverrideSubmitting=!1,this.modelPricingOverrideError=``,this.modelPricingOverrideFormHasExistingOverride=!1,this.modelPricingOverrideFormDisplayName=``,this.modelPricingOverrideFormScope=``,this.modelPricingOverrideFormScopeOptions=[],this.modelPricingOverrideFormRow=null,this.modelPricingOverrideFormBasePricing=null,this.modelPricingOverrideFormBasePricingSources=null,this.modelPricingOverrideFormPreservedTiers=[],this.modelPricingOverrideRows=[],this.modelPricingOverrideForm={selector:``}}async submitModelPricingOverrideForm(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!e){this.modelPricingOverrideError=`Model pricing selector is required.`;return}let t=this.modelPricingOverridePayload();if(t.error){this.modelPricingOverrideError=t.error;return}let n={selector:e,...t};this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let e=await fo(`/admin/model-pricing-overrides`,`PUT`,n,{label:`model pricing override`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(e.stale)return;if(!e.ok){this.modelPricingOverrideError=e.status===401?`Authentication required.`:oo(e,`Failed to save model pricing.`);return}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),qo.success(`Model pricing saved.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to save model pricing override:`,e),this.modelPricingOverrideError=`Failed to save model pricing.`}finally{this.modelPricingOverrideSubmitting=!1}}async deleteModelPricingOverride(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!(!e||!this.modelPricingOverrideFormHasExistingOverride)&&window.confirm(`Remove the model pricing override for "`+e+`"?`)){this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let t=await fo(`/admin/model-pricing-overrides`,`DELETE`,{selector:e},{label:`model pricing override`});if(t.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.modelPricingOverrideError=t.status===401?`Authentication required.`:oo(t,`Failed to remove model pricing override.`);return}}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),qo.success(`Model pricing override removed.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to delete model pricing override:`,e),this.modelPricingOverrideError=`Failed to remove model pricing override.`}finally{this.modelPricingOverrideSubmitting=!1}}}},lO=R(``);function uO(e,t){E(t,!0);var n=lO();let r;var i=P(M(n),2),a=M(i,!0);T(i),T(n),F((e,i,o)=>{r=U(n,1,`alias-toggle`,null,r,e),n.disabled=VD.rowTogglingKey===t.row.key||!VD.virtualModelsAvailable,W(n,`aria-label`,i),B(a,o)},[()=>({enabled:VD.rowToggleEnabled(t.row),restricted:VD.rowToggleRestricted(t.row)}),()=>VD.rowToggleAriaLabel(t.row),()=>VD.rowToggleLabel(t.row)]),L(`click`,n,()=>VD.toggleRowEnabled(t.row)),z(e,n),D()}Hr([`click`]);var dO=R(`
`);function fO(e,t){E(t,!0);var n=dO(),r=M(n),i=e=>{uO(e,{get row(){return VD.globalScopeRow}})};V(r,e=>{VD.virtualModelsAvailable&&e(i)});var a=P(r,2),o=e=>{{let t=O(()=>cO.modelPricingButtonLabel(`global model pricing`,cO.hasGlobalPricingOverride())),n=O(()=>cO.modelPricingButtonClass(cO.hasGlobalPricingOverride()));rw(e,{get label(){return I(t)},get class(){return`table-icon-btn ${I(n)??``}`},onclick:()=>cO.openGlobalPricingOverrideEdit(),children:(e,t)=>{K(e,{name:`circle-dollar-sign`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(a,e=>{cO.modelPricingOverridesAvailable&&e(o)});var s=P(a,2),c=e=>{{let t=O(()=>DD(`global model access`,VD.hasGlobalModelOverride())),n=O(()=>ED(VD.hasGlobalModelOverride()));rw(e,{get label(){return I(t)},get class(){return`table-icon-btn ${I(n)??``}`},onclick:()=>VD.openGlobalModelOverrideEdit(),children:(e,t)=>{K(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(s,e=>{VD.virtualModelsAvailable&&e(c)}),T(n),z(e,n),D()}function pO(e){return String(e&&(e.primary_model||e.source)||``).trim()}function mO(e){return Array.isArray(e&&e.fallback_models)?e.fallback_models:Array.isArray(e&&e.targets)?e.targets:[]}function hO(e){return Array.isArray(e)?e.map(e=>({...e,source:pO(e),targets:mO(e)})):[]}function gO(e){let t=mO(e);return t.length===0?`-`:t.join(`, `)}function _O(e){return e&&e.enabled===!1?`Off`:e&&e.managed?`Config`:`On`}function vO(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>pO(e)===n)||null}function yO(e,t){if(!t||t.is_alias)return!1;let n=vO(e,HE(t));return!!(n&&n.enabled!==!1&&mO(n).length>0)}function bO(e,t){return yO(e,t)?`table-action-btn-failover-active`:``}function xO(e,t){let n=`Edit failover for `+(t&&t.display_name?t.display_name:`model`);return yO(e,t)?n+` (active)`:n}function SO(e){let t=[e&&e.target_model];return(Array.isArray(e&&e.targets)?e.targets:[]).forEach(e=>t.push(e&&e.model)),t.map(e=>String(e||``).trim()).filter(Boolean)}function CO(e){let t=Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(Boolean):[];return{target_model:t[0]||``,targets:t.slice(1).map(e=>({model:e}))}}function wO(e){return{primary_model:String(e&&e.source||``).trim(),fallback_models:SO(e),enabled:!(e&&e.enabled===!1)}}function TO(e){return pO(e)}function EO(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=TO(e);n&&(t[n]=!0)}),t}function DO(e,t){let n=TO(t);return!!(n&&e&&e[n])}function OO(e,t){return(Array.isArray(e)?e:[]).filter(e=>DO(t,e))}function kO(e,t){let n=Array.isArray(e)?e:[];return n.length>0&&OO(n,t).length===n.length}function AO(e){return[pO(e),mO(e).join(` `)].join(` `).toLowerCase()}function jO(e,t){let n=Array.isArray(e)?e:[],r=String(t||``).trim().toLowerCase();return r?n.filter(e=>AO(e).includes(r)):n}function MO(e){return{primary_model:pO(e),fallback_models:mO(e).map(e=>String(e||``).trim()).filter(Boolean),enabled:!!(e&&e.enabled!==!1)}}function NO(){return{source:``,target_model:``,targets:[],enabled:!0}}var Z=new class{#e=k(!0);get failoverAvailable(){return I(this.#e)}set failoverAvailable(e){A(this.#e,e,!0)}#t=k(j([]));get failoverRules(){return I(this.#t)}set failoverRules(e){A(this.#t,e,!0)}#n=k(!1);get failoverLoading(){return I(this.#n)}set failoverLoading(e){A(this.#n,e,!0)}#r=k(!1);get failoverSaving(){return I(this.#r)}set failoverSaving(e){A(this.#r,e,!0)}#i=k(!1);get failoverGenerating(){return I(this.#i)}set failoverGenerating(e){A(this.#i,e,!0)}#a=k(``);get failoverError(){return I(this.#a)}set failoverError(e){A(this.#a,e,!0)}#o=k(j([]));get failoverGeneratedRules(){return I(this.#o)}set failoverGeneratedRules(e){A(this.#o,e,!0)}#s=k(!1);get failoverDraftsOpen(){return I(this.#s)}set failoverDraftsOpen(e){A(this.#s,e,!0)}#c=k(j({}));get failoverDraftSelections(){return I(this.#c)}set failoverDraftSelections(e){A(this.#c,e,!0)}#l=k(``);get failoverDraftFilter(){return I(this.#l)}set failoverDraftFilter(e){A(this.#l,e,!0)}#u=k(!1);get failoverDraftSaving(){return I(this.#u)}set failoverDraftSaving(e){A(this.#u,e,!0)}#d=k(!1);get failoverFormOpen(){return I(this.#d)}set failoverFormOpen(e){A(this.#d,e,!0)}#f=k(`create`);get failoverFormMode(){return I(this.#f)}set failoverFormMode(e){A(this.#f,e,!0)}#p=k(!1);get failoverFormManaged(){return I(this.#p)}set failoverFormManaged(e){A(this.#p,e,!0)}#m=k(j(NO()));get failoverForm(){return I(this.#m)}set failoverForm(e){A(this.#m,e,!0)}failoverEnabled(){return go.booleanFlag(`FAILOVER_ENABLED`,!0)}async fetchFailoverRules(){if(!this.failoverEnabled()){this.failoverAvailable=!1,this.failoverRules=[],this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,this.failoverError=``,this.failoverLoading=!1;return}this.failoverLoading=!0,this.failoverError=``;try{let e=await uo(`/admin/failover`,{label:`failover mappings`});if(e.status===503){this.failoverAvailable=!1,this.failoverRules=[];return}if(e.stale)return;if(this.failoverAvailable=!0,!e.ok){this.failoverRules=[];return}this.failoverRules=hO(e.data)}catch(e){console.error(`Failed to fetch failover mappings:`,e),this.failoverRules=[],this.failoverError=`Unable to load failover mappings.`}finally{this.failoverLoading=!1}}resetFailoverForm(){this.failoverFormMode=`create`,this.failoverFormManaged=!1,this.failoverForm=NO()}openFailoverCreate(){this.resetFailoverForm(),this.failoverFormOpen=!0,this.focusFailoverEditor()}openFailoverEdit(e){if(!e)return;this.resetFailoverForm(),this.failoverFormMode=`edit`,this.failoverFormOpen=!0,this.failoverFormManaged=!!e.managed;let t=this.failoverPrimaryModel(e),n=this.failoverTargets(e);this.failoverForm={source:t,target_model:n[0]||``,targets:n.slice(1).map(e=>({model:e})),enabled:e.enabled!==!1},this.focusFailoverEditor()}openFailoverForModel(e){if(!e||e.is_alias)return;let t=this.qualifiedModelName(e),n=this.failoverRules.find(e=>this.failoverPrimaryModel(e)===t);if(n){this.openFailoverEdit(n);return}this.resetFailoverForm(),this.failoverFormMode=`create`,this.failoverFormOpen=!0,this.failoverForm.source=t,this.focusFailoverEditor()}closeFailoverForm(){this.failoverFormOpen=!1}closeFailoverDraftsModal(){this.failoverDraftSaving||(this.failoverDraftsOpen=!1)}failoverFormTargets(){return SO(this.failoverForm)}setFailoverFormTargets(e){let t=CO(e);this.failoverForm.target_model=t.target_model,this.failoverForm.targets=t.targets}addFailoverTarget(){Array.isArray(this.failoverForm.targets)||(this.failoverForm.targets=[]),this.failoverForm.targets.push({model:``}),this.focusFailoverEditor()}removeFailoverTarget(e){if(!Array.isArray(this.failoverForm.targets)){this.failoverForm.targets=[];return}this.failoverForm.targets.splice(e,1)}removePrimaryFailoverTarget(){let e=Array.isArray(this.failoverForm.targets)?this.failoverForm.targets:[];if(e.length>0){let t=e.shift();this.failoverForm.target_model=t&&t.model?t.model:``,this.failoverForm.targets=e;return}this.failoverForm.target_model=``}failoverRulePayload(){return wO(this.failoverForm)}async submitFailoverForm(){if(this.failoverSaving||this.failoverGenerating||this.failoverFormManaged)return;let e=this.failoverRulePayload();if(!e.primary_model){this.failoverError=`Primary model is required.`;return}if(e.enabled&&e.fallback_models.length===0){this.failoverError=`Add at least one failover target.`;return}this.failoverSaving=!0,this.failoverError=``;try{let t=await fo(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to save failover mapping.`;return}qo.success(`Failover mapping saved.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to save failover mapping:`,e),this.failoverError=`Failed to save failover mapping.`}finally{this.failoverSaving=!1}}async deleteFailoverRule(e){let t=String(e&&this.failoverPrimaryModel(e)||this.failoverForm.source||``).trim();if(!(!t||this.failoverSaving||this.failoverGenerating)&&confirm(`Remove failover mapping for "`+t+`"?`)){this.failoverSaving=!0,this.failoverError=``;try{let e=await fo(`/admin/failover`,`DELETE`,{primary_model:t},{label:`failover mapping`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mapping.`;return}qo.success(`Failover mapping removed.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to remove failover mapping:`,e),this.failoverError=`Failed to remove failover mapping.`}finally{this.failoverSaving=!1}}}async generateFailoverForForm(){if(this.failoverGenerating||this.failoverSaving||this.failoverFormManaged)return;let e=String(this.failoverForm.source||``).trim();if(!e){this.failoverError=`Primary model is required.`;return}this.failoverGenerating=!0,this.failoverError=``;try{let t=await fo(`/admin/failover/generate`,`POST`,{primary_model:e},{label:`failover generation`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to generate failover mapping.`;return}let n=hO(t.data),r=n.find(t=>this.failoverPrimaryModel(t)===e)||n[0]||null,i=this.failoverTargets(r);if(i.length===0){this.failoverError=`No failover suggestions were generated for this model.`;return}this.setFailoverFormTargets(i),qo.success(`Generated `+i.length+` fallback model`+(i.length===1?`.`:`s.`)),this.focusFailoverEditor()}catch(e){console.error(`Failed to generate failover mapping:`,e),this.failoverError=`Failed to generate failover mapping.`}finally{this.failoverGenerating=!1}}openFailoverResetDialog(){Mo.open({title:`Remove failover models`,titleId:`failoverResetDialogTitle`,inputId:`failover-reset-confirmation`,message:`Remove every dashboard-managed failover mapping. Configuration-managed mappings remain active.`,requiredText:`remove`,confirmLabel:`Remove Failover`,icon:`trash-2`,dialogClass:`budget-reset-dialog`,onConfirm:async()=>{await this.resetFailoverRules(),this.failoverError&&(Mo.error=this.failoverError)}})}async resetFailoverRules(){if(!this.failoverSaving){this.failoverSaving=!0,this.failoverError=``;try{let e=await fo(`/admin/failover/reset`,`POST`,void 0,{label:`failover removal`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mappings.`;return}this.failoverRules=hO(e.data),this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,qo.success(`Dashboard-managed failover mappings removed.`),Mo.close()}catch(e){console.error(`Failed to remove failover mappings:`,e),this.failoverError=`Failed to remove failover mappings.`}finally{this.failoverSaving=!1}}}async generateFailoverRules(){if(!(this.failoverGenerating||this.failoverDraftSaving)){this.failoverGenerating=!0,this.failoverError=``,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!0;try{let e=await fo(`/admin/failover/generate`,`POST`,void 0,{label:`failover generation`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to generate failover mappings.`;return}this.failoverGeneratedRules=hO(e.data),this.selectAllFailoverDrafts(this.failoverGeneratedRules)}catch(e){console.error(`Failed to generate failover mappings:`,e),this.failoverError=`Failed to generate failover mappings.`}finally{this.failoverGenerating=!1}}}failoverDraftKey(e){return TO(e)}selectAllFailoverDrafts(e){this.failoverDraftSelections=EO(e)}failoverDraftSelected(e){return DO(this.failoverDraftSelections,e)}setFailoverDraftSelected(e,t){let n=this.failoverDraftKey(e);n&&(this.failoverDraftSelections={...this.failoverDraftSelections,[n]:!!t})}selectedFailoverDrafts(){return OO(this.failoverGeneratedRules,this.failoverDraftSelections)}selectedFailoverDraftCount(){return this.selectedFailoverDrafts().length}failoverDraftCountLabel(){return this.selectedFailoverDraftCount()+` / `+this.failoverGeneratedRules.length+` selected`}allFailoverDraftsSelected(){return kO(this.failoverGeneratedRules,this.failoverDraftSelections)}toggleAllFailoverDrafts(){if(!(this.failoverDraftSaving||this.failoverGenerating||this.failoverGeneratedRules.length===0)){if(this.allFailoverDraftsSelected()){this.failoverDraftSelections={};return}this.selectAllFailoverDrafts(this.failoverGeneratedRules)}}failoverDraftSearchText(e){return AO(e)}filteredFailoverDrafts(){return jO(this.failoverGeneratedRules,this.failoverDraftFilter)}failoverDraftPayload(e){return MO(e)}async saveSelectedFailoverDrafts(){if(this.failoverDraftSaving||this.failoverGenerating)return;let e=this.selectedFailoverDrafts();if(e.length===0){this.failoverError=`Select at least one failover draft.`;return}this.failoverDraftSaving=!0,this.failoverError=``;try{for(let t of e){let e=this.failoverDraftPayload(t);if(!e.primary_model||e.fallback_models.length===0){this.failoverError=`Generated failover draft is missing model data.`;return}let n=await fo(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(n.stale)return;if(!n.ok){this.failoverError=`Failed to save failover mapping.`;return}}qo.success(`Saved `+e.length+` failover mapping`+(e.length===1?`.`:`s.`)),this.failoverDraftsOpen=!1,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.fetchFailoverRules()}catch(e){console.error(`Failed to save generated failover mappings:`,e),this.failoverError=`Failed to save failover mappings.`}finally{this.failoverDraftSaving=!1}}focusFailoverEditor(){setTimeout(()=>{let e=document.querySelector(`[data-failover-editor]`),t=e&&e.querySelector?e.querySelector(`[data-modal-autofocus], input:not([disabled]), textarea:not([disabled]), button:not([disabled])`):null;t&&typeof t.focus==`function`&&t.focus({preventScroll:!0})},0)}failoverTargetLabel(e){return gO(e)}failoverPrimaryModel(e){return pO(e)}failoverTargets(e){return mO(e)}findFailoverMapping(e){return vO(this.failoverRules,e)}hasActiveFailoverMapping(e){return yO(this.failoverRules,e)}failoverButtonClass(e){return bO(this.failoverRules,e)}failoverButtonLabel(e){return xO(this.failoverRules,e)}normalizeFailoverRules(e){return hO(e)}failoverRuleStatus(e){return _O(e)}qualifiedModelName(e){return HE(e)}},PO=R(``),FO=R(``),IO=R(`Config`),LO=R(`
Targets
`),RO=R(``),zO=R(`
Redirects to
`),BO=R(` `),VO=R(`
`),HO=R(`
`),UO=R(`
`);function WO(e,t){E(t,!0);let n=O(()=>cO.modelRowPricing(t.row));var r=UO(),i=M(r),a=M(i),o=M(a),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=e=>{z(e,PO())};V(l,e=>{t.row.is_alias&&e(u)});var d=P(l,2),f=e=>{z(e,FO())};V(d,e=>{!t.row.is_alias&&t.row.masking_alias&&e(f)});var p=P(d,2),m=e=>{z(e,IO())},h=O(()=>wD(t.row));V(p,e=>{I(h)&&e(m)}),T(o);var g=P(o,2),_=e=>{var n=LO(),r=P(M(n)),i=M(r,!0);T(r),T(n),F(()=>B(i,t.row.secondary_name)),z(e,n)};V(g,e=>{t.row.is_alias&&e(_)});var v=P(g,2),y=e=>{var n=zO(),r=P(M(n)),i=M(r,!0);T(r);var a=P(r,2),o=e=>{var n=RO();F(e=>{W(n,`aria-label`,VD.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),W(n,`title`,VD.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),n.disabled=e},[()=>!!VD.rowDeletingKey]),L(`click`,n,()=>VD.removeRedirectRow(t.row)),z(e,n)},s=O(()=>VD.virtualModelsAvailable&&SD(t.row));V(a,e=>{I(s)&&e(o)}),T(n),F(e=>B(i,e),[()=>tD(t.row.masking_alias)]),z(e,n)};V(v,e=>{!t.row.is_alias&&t.row.masking_alias&&e(y)}),T(a),T(i);var b=P(i);H(b,17,()=>t.columns,oi,(e,r)=>{var i=BO(),a=M(i,!0);T(i),F(e=>{U(i,1,Fi(I(r).class),`svelte-1iynym`),B(a,e)},[()=>I(r).value(t.row,I(n))]),z(e,i)});var x=P(b),S=M(x),C=e=>{var n=VO(),r=M(n);uO(r,{get row(){return t.row}});var i=P(r,2),a=e=>{{let n=O(()=>VD.rowDeletingKey===t.row.key?`Removing alias `+t.row.alias.name:`Remove alias `+t.row.alias.name),r=O(()=>!!VD.rowDeletingKey);rw(e,{get label(){return I(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>VD.removeAliasRow(t.row),get disabled(){return I(r)},children:(e,t)=>{K(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}})}},o=O(()=>VD.virtualModelsAvailable&&xD(t.row));V(i,e=>{I(o)&&e(a)});var s=P(i,2),c=e=>{{let n=O(()=>`Edit alias `+t.row.alias.name);rw(e,{get label(){return I(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>VD.openVirtualModelEditAlias(t.row.alias),children:(e,t)=>{K(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(s,e=>{VD.virtualModelsAvailable&&e(c)}),T(n),z(e,n)},w=e=>{var n=HO(),r=M(n);uO(r,{get row(){return t.row}});var i=P(r,2),a=e=>{{let n=O(()=>cO.modelPricingButtonLabel(`model pricing for `+t.row.display_name,cO.hasModelPricingOverride(t.row))),r=O(()=>cO.modelPricingButtonClass(cO.hasModelPricingOverride(t.row)));rw(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>cO.openModelPricingOverrideEdit(t.row),children:(e,t)=>{K(e,{name:`circle-dollar-sign`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(i,e=>{cO.modelPricingOverridesAvailable&&e(a)});var o=P(i,2),s=e=>{{let n=O(()=>Z.failoverButtonLabel(t.row)),r=O(()=>Z.failoverButtonClass(t.row));rw(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>Z.openFailoverForModel(t.row),children:(e,t)=>{K(e,{name:`shuffle`,class:`table-icon-svg`})},$$slots:{default:!0}})}},c=O(()=>Z.failoverAvailable&&Z.failoverEnabled());V(o,e=>{I(c)&&e(s)});var l=P(o,2),u=e=>{{let n=O(()=>X.rateLimitGaugeTitle(t.row.display_name,X.rateLimitGaugeClassForModel(t.row))),r=O(()=>X.rateLimitGaugeClassForModel(t.row));rw(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>X.openRateLimitInspectorForModel(t.row),children:(e,t)=>{K(e,{name:`gauge`,class:`table-icon-svg`})},$$slots:{default:!0}})}},d=O(()=>X.rateLimitsEnabled()&&X.rateLimitInspectorModelID(t.row));V(l,e=>{I(d)&&e(u)});var f=P(l,2),p=e=>{{let n=O(()=>`Edit redirect for `+t.row.display_name);rw(e,{get label(){return I(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>VD.openVirtualModelEditAlias(t.row.masking_alias),children:(e,t)=>{K(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(f,e=>{VD.virtualModelsAvailable&&t.row.masking_alias&&t.row.masking_alias.name&&e(p)});var m=P(f,2),h=e=>{{let n=O(()=>DD(`model access for `+t.row.display_name,TD(t.row.access))),r=O(()=>ED(TD(t.row.access)));rw(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>VD.openVirtualModelEditModel(t.row),children:(e,t)=>{K(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(m,e=>{VD.virtualModelsAvailable&&!t.row.masking_alias&&e(h)}),T(n),z(e,n)};V(S,e=>{t.row.is_alias?e(C):e(w,-1)}),T(x),T(r),F((e,n)=>{W(r,`id`,e),U(r,1,n,`svelte-1iynym`),B(c,t.row.display_name)},[()=>CD(t.row)||void 0,()=>Fi(bD(t.row))]),z(e,r),D()}Hr([`click`]);var GO={headerLines:[`Modes`],value:e=>(e.model?.metadata?.modes??[]).join(`, `)||`-`};function KO(e,t){return{headerLines:e,class:`col-price`,value:t}}var qO=KO([`Input / Output ($/MTok)`],(e,t)=>rs(t?.input_per_mtok)+` / `+rs(t?.output_per_mtok)),JO={all:[GO,qO],text_generation:[GO,qO,KO([`Cached $/MTok`],(e,t)=>rs(t?.cached_input_per_mtok))],embedding:[KO([`Input`,`$/MTok`],(e,t)=>rs(t?.input_per_mtok))],image:[KO([`$/Image`],(e,t)=>is(t?.per_image))],audio:[KO([`$/Second`],(e,t)=>is(t?.per_second_input)),KO([`$/Character`],(e,t)=>is(t?.per_character_input))],video:[KO([`$/Second (In)`],(e,t)=>is(t?.per_second_input)),KO([`$/Second (Out)`],(e,t)=>is(t?.per_second_output))],utility:[KO([`$/Page`],(e,t)=>is(t?.per_page)),KO([`$/Request`],(e,t)=>is(t?.per_request))]};function YO(e){return JO[e]||JO.all}function XO(e){return YO(e).length+2}var ZO=R(`
`),QO=R(` `,1),$O=R(``),ek=R(` `),tk=R(` `),nk=R(`
`),rk=R(`
`),ik=R(`
Model
`);function ak(e,t){E(t,!0);let n=O(()=>Os.activeCategory||`all`),r=O(()=>YO(I(n))),i=O(()=>XO(I(n)));var a=ik(),o=M(a),s=M(o),c=M(s),l=P(M(c));H(l,17,()=>I(r),oi,(e,t)=>{var n=$O();H(n,21,()=>I(t).headerLines,oi,(e,t,n)=>{var r=QO(),i=N(r),a=e=>{z(e,ZO())};V(i,e=>{n>0&&e(a)});var o=P(i,1,!0);F(()=>B(o,I(t))),z(e,r)}),T(n),F(()=>U(n,1,Fi(I(t).class),`svelte-1911hy6`)),z(e,n)});var u=P(l);fO(M(u),{}),T(u),T(c),T(s),H(P(s),17,()=>VD.filteredDisplayModelGroups,e=>e.key,(e,t)=>{var n=rk(),a=M(n),o=M(a),s=M(o),c=M(s),l=M(c),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=e=>{var n=ek(),r=M(n,!0);T(n),F(()=>B(r,`(`+I(t).type_label+`)`)),z(e,n)};V(f,e=>{I(t).type_label&&e(p)});var m=P(f,2),h=e=>{var n=tk(),r=M(n,!0);T(n),F(()=>B(r,I(t).item_count_label)),z(e,n)};V(m,e=>{I(t).item_count_label&&e(h)}),T(l);var g=P(l,2),_=e=>{var n=nk(),r=M(n,!0);T(n),F(()=>B(r,I(t).access_summary)),z(e,n)};V(g,e=>{I(t).access_summary&&e(_)}),T(c);var v=P(c,2),y=M(v),b=e=>{uO(e,{get row(){return I(t)}})};V(y,e=>{I(t).access.selector&&e(b)});var x=P(y,2),S=e=>{{let n=O(()=>cO.modelPricingButtonLabel(`provider pricing for `+I(t).display_name,cO.hasProviderPricingOverride(I(t)))),r=O(()=>cO.modelPricingButtonClass(cO.hasProviderPricingOverride(I(t))));rw(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>cO.openProviderPricingOverrideEdit(I(t)),children:(e,t)=>{K(e,{name:`circle-dollar-sign`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(x,e=>{cO.modelPricingOverridesAvailable&&I(t).provider_name&&e(S)});var C=P(x,2),w=e=>{{let n=O(()=>X.rateLimitGaugeTitle(`provider `+I(t).display_name,X.rateLimitGaugeClassForProvider(I(t)))),r=O(()=>X.rateLimitGaugeClassForProvider(I(t)));rw(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>X.openRateLimitInspectorForProvider(I(t)),children:(e,t)=>{K(e,{name:`gauge`,class:`table-icon-svg`})},$$slots:{default:!0}})}},ee=O(()=>X.rateLimitsEnabled()&&I(t).provider_name);V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{{let n=O(()=>DD(`provider access for `+I(t).display_name,TD(I(t).access))),r=O(()=>ED(TD(I(t).access)));rw(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>VD.openProviderOverrideEdit(I(t)),children:(e,t)=>{K(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(te,e=>{VD.virtualModelsAvailable&&I(t).access.selector&&e(ne)}),T(v),T(s),T(o),T(a),H(P(a),17,()=>I(t).rows,e=>e.key,(e,t)=>{WO(e,{get row(){return I(t)},get columns(){return I(r)}})}),T(n),F(()=>{W(o,`colspan`,I(i)),B(d,I(t).display_name)}),z(e,n)}),T(o),T(a),z(e,a),D()}var ok=R(``);function sk(e,t){let n=G(t,`enabled`,3,!1),r=G(t,`label`,3,``),i=G(t,`disabled`,3,!1),a=G(t,`restricted`,3,!1);var o=ok();let s;var c=P(M(o),2),l=M(c,!0);T(c),T(o),F(()=>{s=U(o,1,`alias-toggle`,null,s,{enabled:n(),restricted:a()}),o.disabled=i(),W(o,`aria-label`,(n()?`Disable `:`Enable `)+r()),B(l,t.text??(n()?`Enabled`:`Disabled`))}),L(`click`,o,function(...e){t.onclick?.apply(this,e)}),z(e,o)}Hr([`click`]);var ck=R(``),lk=R(`
`);function uk(e,t){E(t,!0);let n=G(t,`model`,15,``),r=G(t,`weight`,15),i=G(t,`id`,3,void 0),a=G(t,`placeholder`,3,`openai/gpt-4o`),o=G(t,`showRemove`,3,!0);var s=lk(),c=M(s);na(c);var l=P(c,2),u=e=>{var t=ck();na(t),F(()=>t.disabled=VD.vmFormManaged),da(t,r),z(e,t)},d=O(()=>VD.vmFormShowWeights());V(l,e=>{I(d)&&e(u)});var f=P(l,2),p=e=>{rw(e,{label:`Remove target`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,get onclick(){return t.onremove},get disabled(){return VD.vmFormManaged},children:(e,t)=>{K(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}})};V(f,e=>{o()&&e(p)}),T(s),F(()=>{W(c,`id`,i()),W(c,`placeholder`,a()),c.disabled=VD.vmFormManaged}),da(c,n),z(e,s),D()}var dk=R(`

`),fk=R(`adaptive lets the registered routing extension pick the target per + request.`,1),pk=R(`Add one target to make this a redirect/alias, or two or more to load + balance across them, then pick a strategy: round_robin rotates across targets + (weight biases the share) and cost always routes to the cheapest available + target. Leave Targets empty to make it only an access policy on the Source selector. The selector uses / for all providers and + models, for one provider, or for one model. user_paths is + matched against the effective request user_path: the managed API key user_path when present, otherwise the configured user path request header.`,1),mk=R(``),hk=R(`

This virtual model is defined in configuration (config.yaml / VIRTUAL_MODELS) and is read-only here. Edit your configuration to change it.

`),gk=R(``),_k=R(``),vk=R(``),yk=R(`
`,1),bk=R(``),xk=R(`Use / to allow every user path. Use a team path to restrict to that + subtree, or an unused path to make the selector unavailable.`,1),Sk=R(``),Ck=R(` `),wk=R(`
Targets
`,1);function Tk(e,t){E(t,!0);let n=VD;An(()=>{n.vmFormOpen&&go.ensureLoaded()});{let t=e=>{Hx(e,{copyId:`virtual-model-help-copy`,label:`virtual model help`,get open(){return n.vmFormHelpOpen},set open(e){n.vmFormHelpOpen=e},title:e=>{var t=dk(),r=M(t,!0);T(t),F(()=>B(r,n.vmFormDisplayName||n.vmForm.source||`Virtual model`)),z(e,t)},help:e=>{Ue();var t=pk(),n=P(N(t),7),r=e=>{var t=fk();Ue(),z(e,t)},i=O(()=>go.virtualModelStrategies().includes(`adaptive`));V(n,e=>{I(i)&&e(r)});var a=P(n,8);a.textContent=`{provider_name}/`;var o=P(a,2);o.textContent=`{provider_name}/{model}`,Ue(7),z(e,t)},$$slots:{title:!0,help:!0}})},r=e=>{var t=Qr(),r=N(t),i=e=>{var t=mk();F(()=>t.disabled=n.vmDeleting||n.vmSubmitting),L(`click`,t,()=>n.deleteVirtualModel()),z(e,t)};V(r,e=>{n.vmFormHasExisting&&!n.vmFormManaged&&e(i)}),z(e,t)},i=O(()=>n.vmDeleting||n.vmFormManaged),a=O(()=>n.vmFormMode===`edit`?`Save`:`Create`),o=O(()=>n.vmFormMode===`edit`?`save`:`plus`);sT(e,{get open(){return n.vmFormOpen},ariaLabel:`Virtual model editor`,get error(){return n.vmFormError},get submitting(){return n.vmSubmitting},get submitDisabled(){return I(i)},get submitLabel(){return I(a)},get submitIcon(){return I(o)},onclose:()=>n.closeVirtualModelForm(),onsubmit:()=>n.submitVirtualModelForm(),header:t,extraActions:r,children:(e,t)=>{var r=wk(),i=N(r),a=e=>{z(e,hk())};V(i,e=>{n.vmFormManaged&&e(a)});var o=P(i,2);lT(o,{id:`virtual-model-source`,label:`Source`,children:(e,t)=>{var r=gk();na(r),F(()=>r.disabled=n.vmFormSourceLocked||n.vmFormManaged),da(r,()=>n.vmForm.source,e=>n.vmForm.source=e),z(e,r)},$$slots:{default:!0}});var s=P(o,2);H(s,21,()=>Os.models,e=>HE(e),(e,t)=>{var n=_k(),r=M(n,!0);T(n);var i={};F((e,t)=>{B(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>HE(I(t)),()=>HE(I(t))]),z(e,n)}),T(s);var c=P(s,2),l=P(M(c),2);{let e=O(()=>n.vmFormHasPrimaryTarget());uk(l,{id:`virtual-model-target`,get showRemove(){return I(e)},onremove:()=>n.removePrimaryTarget(),get model(){return n.vmForm.target_model},set model(e){n.vmForm.target_model=e},get weight(){return n.vmForm.target_weight},set weight(e){n.vmForm.target_weight=e}})}var u=P(l,2);H(u,17,()=>n.vmForm.targets,oi,(e,t,r)=>{uk(e,{placeholder:`groq/llama`,onremove:()=>n.removeVmTarget(r),get model(){return I(t).model},set model(e){I(t).model=e},get weight(){return I(t).weight},set weight(e){I(t).weight=e}})});var d=P(u,2),f=M(d);K(M(f),{name:`plus`,class:`form-action-icon`}),Ue(2),T(f),T(d),T(c);var p=P(c,2),m=e=>{var t=yk(),r=N(t);lT(r,{id:`virtual-model-strategy`,label:`Load-balancing strategy`,children:(e,t)=>{var r=vk();H(r,21,()=>n.vmStrategyOptions(),e=>e.value,(e,t)=>{var n=_k(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(r),F(()=>r.disabled=n.vmFormManaged),Gi(r,()=>n.vmForm.strategy,e=>n.vmForm.strategy=e),z(e,r)},$$slots:{default:!0}});var i=P(r,2),a=M(i),o=M(a);na(o),Ue(2),T(a),T(i),F(()=>o.disabled=n.vmFormManaged),fa(o,()=>n.vmForm.session_affinity,e=>n.vmForm.session_affinity=e),z(e,t)},h=O(()=>n.vmFormShowStrategy());V(p,e=>{I(h)&&e(m)});var g=P(p,2),_=M(g);Hx(_,{copyId:`virtual-model-user-paths-help`,label:`user paths help`,get open(){return n.vmFormUserPathsHelpOpen},set open(e){n.vmFormUserPathsHelpOpen=e},title:e=>{z(e,bk())},help:e=>{Ue();var t=xk();Ue(2),z(e,t)},$$slots:{title:!0,help:!0}});var v=P(_,2);ft(v),W(v,`placeholder`,`/ +/team/alpha +/non-existing`),T(g);var y=P(g,2);lT(y,{id:`virtual-model-description`,label:`Description`,children:(e,t)=>{var r=Sk();ft(r),F(()=>r.disabled=n.vmFormManaged),da(r,()=>n.vmForm.description,e=>n.vmForm.description=e),z(e,r)},$$slots:{default:!0}});var b=P(y,2),x=M(b),S=e=>{var t=Ck(),r=M(t,!0);T(t),F(()=>B(r,`Default enabled: `+(n.vmFormDefaultEnabled?`yes`:`no`)+` · Effective now: `+(n.vmFormEffectiveEnabled?`yes`:`no`))),z(e,t)};V(x,e=>{n.vmFormMode===`edit`&&e(S)});var C=P(x,2),w=M(C);{let e=O(()=>n.vmFormToggleRestricted()),t=O(()=>n.vmFormToggleLabel());sk(w,{get enabled(){return n.vmForm.enabled},get restricted(){return I(e)},label:`virtual model`,get disabled(){return n.vmFormManaged},get text(){return I(t)},onclick:()=>{n.vmFormManaged||(n.vmForm.enabled=!n.vmForm.enabled)}})}T(C),T(b),F(()=>{f.disabled=n.vmFormManaged,v.disabled=n.vmFormManaged}),L(`click`,f,()=>n.addVmTarget()),da(v,()=>n.vmForm.user_paths,e=>n.vmForm.user_paths=e),z(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}})}D()}Hr([`click`]);var Ek=R(`

Pricing override

`,1),Dk=R(``),Ok=R(``),kk=R(``),Ak=R(``),jk=R(`
`),Mk=R(`
Tiered pricing exists for this override and will be preserved. Tier editing can be added + without a database migration.
`),Nk=R(`
No pricing fields set.
`),Pk=R(`
`),Fk=R(`

Currency is USD. Saved fields override model registry and config.yaml pricing for this + selector; unset fields continue to inherit.

Price Type USD Source
`,1);function Ik(e,t){E(t,!0);let n=cO;sT(e,{get open(){return n.modelPricingOverrideFormOpen},ariaLabel:`Model pricing editor`,dialogClass:`model-pricing-editor`,get error(){return n.modelPricingOverrideError},get submitting(){return n.modelPricingOverrideSubmitting},submitLabel:`Save Pricing`,onclose:()=>n.closeModelPricingOverrideForm(),onsubmit:()=>n.submitModelPricingOverrideForm(),header:e=>{var t=Ek(),r=P(N(t),2),i=M(r,!0);T(r),F(()=>B(i,n.modelPricingOverrideFormDisplayName||n.modelPricingOverrideForm.selector||`Pricing`)),z(e,t)},extraActions:e=>{var t=Qr(),r=N(t),i=e=>{var t=Dk();F(()=>t.disabled=n.modelPricingOverrideSubmitting),L(`click`,t,()=>n.deleteModelPricingOverride()),z(e,t)};V(r,e=>{n.modelPricingOverrideFormHasExistingOverride&&e(i)}),z(e,t)},children:(e,t)=>{var r=Fk(),i=N(r),a=M(i);lT(a,{id:`model-pricing-override-selector`,label:`Selector`,children:(e,t)=>{var r=Ok();na(r),da(r,()=>n.modelPricingOverrideForm.selector,e=>n.modelPricingOverrideForm.selector=e),z(e,r)},$$slots:{default:!0}});var o=P(a,2),s=e=>{lT(e,{id:`model-pricing-override-scope`,label:`Scope`,children:(e,t)=>{var r=Ak();H(r,21,()=>n.modelPricingOverrideFormScopeOptions,e=>e.value,(e,t)=>{var n=kk(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(r),L(`change`,r,()=>n.setModelPricingOverrideScope(n.modelPricingOverrideFormScope)),Gi(r,()=>n.modelPricingOverrideFormScope,e=>n.modelPricingOverrideFormScope=e),z(e,r)},$$slots:{default:!0}})};V(o,e=>{n.modelPricingOverrideFormScopeOptions.length>1&&e(s)}),T(i);var c=P(i,4);H(c,21,()=>n.modelPricingOverrideRows,e=>e.id,(e,t,r)=>{var i=jk(),a=M(i),o=M(a),s=P(o,2);H(s,21,()=>n.availablePricingFieldOptions(I(t)),e=>e.value,(e,t)=>{var n=kk(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).group+` - `+I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(s),T(a);var c=P(a,2),l=M(c),u=P(l,2);na(u),T(c);var d=P(c,2);{let e=O(()=>`Remove `+n.pricingFieldLabel(I(t).field));rw(d,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn pricing-override-remove-row`,onclick:()=>n.removeModelPricingOverrideRow(I(t)),children:(e,t)=>{K(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}T(i),F(()=>{W(o,`for`,`pricing-type-`+I(t).id),W(s,`id`,`pricing-type-`+I(t).id),W(l,`for`,`pricing-value-`+I(t).id),W(u,`id`,`pricing-value-`+I(t).id)}),Gi(s,()=>I(t).field,e=>I(t).field=e),da(u,()=>I(t).value,e=>I(t).value=e),z(e,i)}),T(c);var l=P(c,2),u=M(l);K(M(u),{name:`plus`,class:`form-action-icon`}),Ue(2),T(u),T(l);var d=P(l,2),f=e=>{z(e,Mk())};V(d,e=>{n.modelPricingOverrideFormPreservedTiers.length>0&&e(f)});var p=P(d,2),m=P(M(p),2),h=e=>{z(e,Nk())},g=O(()=>n.modelPricingEffectivePreviewRows().length===0);V(m,e=>{I(g)&&e(h)}),H(P(m,2),17,()=>n.modelPricingEffectivePreviewRows(),e=>e.field,(e,t)=>{var n=Pk(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(n),F(e=>{B(i,I(t).label),B(o,e),B(c,I(t).source)},[()=>I(t).value===null||I(t).value===void 0?`-`:is(Number(I(t).value))]),z(e,n)}),T(p),L(`click`,u,()=>n.addModelPricingOverrideRow()),z(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}}),D()}Hr([`click`,`change`]);var Lk=R(`

Failover mapping

`,1),Rk=R(``),zk=R(`

This failover mapping is defined in configuration and is read-only here.

`),Bk=R(``),Vk=R(`
`),Hk=R(`
`,1),Uk=R(`
`);function Wk(e,t){E(t,!0);{let t=e=>{var t=Lk(),n=P(N(t),2),r=M(n,!0);T(n),F(()=>B(r,Z.failoverForm.source||`Failover`)),z(e,t)},n=e=>{var t=Qr(),n=N(t),r=e=>{var t=Rk();F(()=>t.disabled=Z.failoverSaving||Z.failoverGenerating),L(`click`,t,()=>Z.deleteFailoverRule()),z(e,t)};V(n,e=>{Z.failoverFormMode===`edit`&&!Z.failoverFormManaged&&e(r)}),z(e,t)},r=O(()=>Z.failoverGenerating||Z.failoverFormManaged);sT(e,{get open(){return Z.failoverFormOpen},ariaLabel:`Failover editor`,get error(){return Z.failoverError},get submitting(){return Z.failoverSaving},get submitDisabled(){return I(r)},submitLabel:`Save`,onclose:()=>Z.closeFailoverForm(),onsubmit:()=>Z.submitFailoverForm(),header:t,extraActions:n,children:(e,t)=>{var n=Uk(),r=M(n),i=e=>{z(e,zk())};V(r,e=>{Z.failoverFormManaged&&e(i)});var a=P(r,2);H(a,21,()=>Os.models,oi,(e,t)=>{var n=Bk(),r=M(n,!0);T(n);var i={};F((e,t)=>{B(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>HE(I(t)),()=>HE(I(t))]),z(e,n)}),T(a);var o=P(a,2);lT(o,{id:`failover-target`,label:`Fallback models`,children:(e,t)=>{var n=Hk(),r=N(n),i=M(r),a=M(i);na(a);var o=P(a,2),s=e=>{rw(e,{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Z.removePrimaryFailoverTarget(),get disabled(){return Z.failoverFormManaged},children:(e,t)=>{K(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}})};V(o,e=>{Z.failoverForm.target_model&&e(s)}),T(i),H(P(i,2),17,()=>Z.failoverForm.targets,oi,(e,t,n)=>{var r=Vk(),i=M(r);na(i),rw(P(i,2),{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Z.removeFailoverTarget(n),get disabled(){return Z.failoverFormManaged},children:(e,t)=>{K(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}}),T(r),F(()=>i.disabled=Z.failoverFormManaged),da(i,()=>I(t).model,e=>I(t).model=e),z(e,r)}),T(r);var c=P(r,2),l=M(c);K(M(l),{name:`plus`,class:`form-action-icon`}),Ue(2),T(l);var u=P(l,2),d=M(u);K(d,{name:`wand-sparkles`,class:`form-action-icon`});var f=P(d,2),p=M(f,!0);T(f),T(u),T(c),F(e=>{a.disabled=Z.failoverFormManaged,l.disabled=Z.failoverFormManaged||Z.failoverGenerating||Z.failoverSaving,u.disabled=e,B(p,Z.failoverGenerating?`Generating...`:`Generate automatically`)},[()=>Z.failoverFormManaged||Z.failoverGenerating||Z.failoverSaving||!Z.failoverEnabled()]),da(a,()=>Z.failoverForm.target_model,e=>Z.failoverForm.target_model=e),L(`click`,l,()=>Z.addFailoverTarget()),L(`click`,u,()=>Z.generateFailoverForForm()),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=M(s);sk(M(c),{get enabled(){return Z.failoverForm.enabled},label:`failover mapping`,get disabled(){return Z.failoverFormManaged},onclick:()=>{Z.failoverFormManaged||(Z.failoverForm.enabled=!Z.failoverForm.enabled)}}),T(c),T(s),T(n),z(e,n)},$$slots:{header:!0,extraActions:!0,default:!0}})}D()}Hr([`click`]);var Gk=R(` `),Kk=R(`
`),qk=R(``),Jk=R(`
`),Yk=R(`

No failover suggestions were generated.

`),Xk=R(`

No failover drafts match the filter.

`),Zk=R(``),Qk=R(``);function $k(e,t){E(t,!0),Do(e,{get open(){return Z.failoverDraftsOpen},variant:`editor`,onclose:()=>Z.closeFailoverDraftsModal(),children:(e,t)=>{var n=Qk(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=Gk(),n=M(t,!0);T(t),F(e=>B(n,e),[()=>Z.failoverDraftCountLabel()]),z(e,t)};V(a,e=>{Z.failoverGeneratedRules.length>0&&e(o)}),Co(P(a,2),{label:`Close failover drafts`,onclick:()=>Z.closeFailoverDraftsModal(),get disabled(){return Z.failoverDraftSaving}}),T(i),T(r);var s=P(r,2),c=e=>{tw(e,{label:`Generating failover drafts...`,class:`failover-drafts-loading`})};V(s,e=>{Z.failoverGenerating&&e(c)});var l=P(s,2),u=e=>{var t=Kk(),n=M(t);oC(n,{placeholder:`Filter failover drafts...`,label:`Filter failover drafts`,get value(){return Z.failoverDraftFilter},set value(e){Z.failoverDraftFilter=e}});var r=P(n,2),i=M(r);K(i,{name:`check`,class:`form-action-icon`});var a=P(i,2),o=M(a,!0);T(a),T(r),T(t),F(e=>{r.disabled=Z.failoverDraftSaving,B(o,e)},[()=>Z.allFailoverDraftsSelected()?`Deselect all`:`Select all`]),L(`click`,r,()=>Z.toggleAllFailoverDrafts()),z(e,t)};V(l,e=>{!Z.failoverGenerating&&Z.failoverGeneratedRules.length>0&&e(u)});var d=P(l,2),f=e=>{var t=Jk();H(t,21,()=>Z.filteredFailoverDrafts(),e=>`failover-draft:`+Z.failoverPrimaryModel(e),(e,t)=>{var n=qk(),r=M(n);na(r);var i=P(r,2),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(i),T(n),F((e,t,n,i)=>{ia(r,e),r.disabled=Z.failoverDraftSaving,W(r,`aria-label`,t),B(o,n),B(c,i)},[()=>Z.failoverDraftSelected(I(t)),()=>`Select failover draft for `+Z.failoverPrimaryModel(I(t)),()=>Z.failoverPrimaryModel(I(t)),()=>Z.failoverTargetLabel(I(t))]),L(`change`,r,e=>Z.setFailoverDraftSelected(I(t),e.currentTarget.checked)),z(e,n)}),T(t),z(e,t)},p=O(()=>!Z.failoverGenerating&&Z.filteredFailoverDrafts().length>0);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{z(e,Yk())};V(m,e=>{!Z.failoverGenerating&&Z.failoverGeneratedRules.length===0&&!Z.failoverError&&e(h)});var g=P(m,2),_=e=>{z(e,Xk())},v=O(()=>!Z.failoverGenerating&&Z.failoverGeneratedRules.length>0&&Z.filteredFailoverDrafts().length===0);V(g,e=>{I(v)&&e(_)});var y=P(g,2),b=e=>{var t=Zk(),n=M(t,!0);T(t),F(()=>B(n,Z.failoverError)),z(e,t)};V(y,e=>{Z.failoverError&&e(b)});var x=P(y,2),S=M(x),C=P(S,2),w=M(C);K(w,{name:`save`,class:`form-action-icon`});var ee=P(w,2),te=M(ee,!0);T(ee),T(C),T(x),T(n),F(e=>{S.disabled=Z.failoverDraftSaving,C.disabled=e,B(te,Z.failoverDraftSaving?`Saving...`:`Save selected`)},[()=>Z.failoverGenerating||Z.failoverDraftSaving||Z.selectedFailoverDraftCount()===0]),L(`click`,S,()=>Z.closeFailoverDraftsModal()),L(`click`,C,()=>Z.saveSelectedFailoverDrafts()),z(e,n)},$$slots:{default:!0}}),D()}Hr([`click`,`change`]);var eA=R(`
Rate limit management is unavailable.
`),tA=R(` Add`,1),nA=R(`

`),rA=R(`

No rules.

`),iA=R(` Edit`,1),aA=R(`
`),oA=R(`
`),sA=R(`

`),cA=R(``),lA=R(``);function uA(e,t){E(t,!0);function n(){q.dialogOpen||X.closeRateLimitInspector()}Do(e,{get open(){return X.rateLimitInspectorOpen},variant:`editor`,onclose:n,children:(e,t)=>{var n=lA(),r=M(n),i=M(r),a=P(M(i),2),o=M(a),s=M(o,!0);T(o),T(a),T(i),Co(P(i,2),{label:`Close rate limits inspector`,onclick:()=>X.closeRateLimitInspector()}),T(r);var c=P(r,2),l=e=>{tw(e,{label:`Loading rate limits...`})},u=e=>{z(e,eA())},d=e=>{var t=Qr();H(N(t),17,()=>X.rateLimitInspectorSections(),e=>e.key,(e,t)=>{var n=sA(),r=M(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2);{let e=O(()=>`Add `+I(t).title.toLowerCase());rw(o,{get label(){return I(e)},class:`budget-action-btn`,onclick:()=>X.openRateLimitFormFromInspector(I(t).scope,I(t).subject),children:(e,t)=>{var n=tA();K(N(n),{name:`plus`,class:`table-icon-svg`}),Ue(2),z(e,n)},$$slots:{default:!0}})}T(r);var s=P(r,2),c=e=>{var n=nA(),r=M(n,!0);T(n),F(()=>B(r,I(t).hint)),z(e,n)};V(s,e=>{I(t).hint&&e(c)});var l=P(s,2),u=e=>{z(e,rA())},d=e=>{var n=oA();H(n,21,()=>I(t).items,e=>X.rateLimitKey(e),(e,t)=>{var n=aA(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=M(c);{let e=O(()=>X.rateLimitIsConcurrent(I(t))?`activity`:`timer`);K(l,{get name(){return I(e)},class:`budget-period-icon`})}var u=P(l,2),d=M(u,!0);T(u),T(c),T(s);var f=P(s,2),p=M(f),m=M(p),h=M(m,!0);T(m);var g=P(m,2),_=M(g,!0);T(g),T(p);var v=P(p,2),y=M(v),b=e=>{rw(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>X.openRateLimitFormFromInspector(null,null,I(t)),children:(e,t)=>{var n=iA();K(N(n),{name:`pencil`,class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}})},x=O(()=>!X.rateLimitIsReadOnly(I(t)));V(y,e=>{I(x)&&e(b)}),T(v),T(f),T(i),T(r),T(n),F((e,t,r,i,a,s,c,l)=>{U(n,1,`budget-row ${e??``}`),Hi(n,t),W(n,`title`,r),B(o,i),B(d,a),B(h,s),W(g,`title`,c),B(_,l)},[()=>X.rateLimitPressureClass(I(t)),()=>X.rateLimitPressureStyle(I(t)),()=>X.rateLimitPressurePercent(I(t))+`% of the most constrained cap used`,()=>X.rateLimitSubject(I(t)),()=>X.rateLimitPeriodLabel(I(t)),()=>X.rateLimitInspectorSummary(I(t)),()=>X.rateLimitIsReadOnly(I(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>X.rateLimitSourceLabel(I(t))]),z(e,n)}),T(n),z(e,n)};V(l,e=>{I(t).items.length===0?e(u):e(d,-1)}),T(n),F(()=>B(a,I(t).title)),z(e,n)}),z(e,t)};V(c,e=>{X.rateLimitsLoading?e(l):X.rateLimitsAvailable?e(d,-1):e(u,1)});var f=P(c,2),p=M(f),m=P(p,2),h=e=>{var t=cA();L(`click`,t,()=>{X.closeRateLimitInspector(),Va.navigate(`rate-limits`)}),z(e,t)},g=O(()=>X.rateLimitsEnabled());V(m,e=>{I(g)&&e(h)}),T(f),T(n),F(()=>B(s,X.rateLimitInspector.title)),L(`click`,p,()=>X.closeRateLimitInspector()),z(e,n)},$$slots:{default:!0}}),D()}Hr([`click`]);var dA=R(`
models
`),fA=R(`
Virtual models feature is unavailable.
`),pA=R(`
`),mA=R(``),hA=R(`
`),gA=R(``),_A=R(`
`),vA=R(`

No models registered.

`),yA=R(`

No models in this category.

`),bA=R(`

No models match your filter.

`),xA=R(`
`);function SA(e,t){E(t,!0),An(()=>{q.refreshTick,Va.page===`models`&&(VD.fetchVirtualModels(),cO.fetchModelPricingOverrides(),Z.fetchFailoverRules(),X.fetchRateLimitsPage())}),An(()=>{let e=VD.filteredDisplayModels.length;return Er(()=>VD.restartModelRendering(e)),()=>VD.stopModelRendering()});let n=O(()=>q.needsAuth);var r=xA(),i=M(r),a=P(M(i),2),o=e=>{var t=dA(),n=M(t),r=M(n,!0);T(n),Ue(),T(t),F(()=>B(r,Os.filter?VD.filteredDisplayModels.length+` / `+VD.displayModels.length:VD.displayModels.length)),z(e,t)};V(a,e=>{VD.displayModels.length>0&&e(o)}),T(i);var s=P(i,2);As(s,{});var c=P(s,2),l=e=>{z(e,fA())};V(c,e=>{!VD.virtualModelsAvailable&&!I(n)&&e(l)});var u=P(c,2),d=e=>{var t=pA(),n=M(t,!0);T(t),F(()=>B(n,VD.aliasError)),z(e,t)};V(u,e=>{VD.aliasError&&!I(n)&&e(d)});var f=P(u,2),p=e=>{var t=pA(),n=M(t,!0);T(t),F(()=>B(n,cO.modelPricingOverrideError)),z(e,t)};V(f,e=>{cO.modelPricingOverrideError&&!I(n)&&!cO.modelPricingOverrideFormOpen&&e(p)});var m=P(f,2),h=e=>{var t=hA();H(t,21,()=>Os.categories,e=>e.category,(e,t)=>{var n=mA();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(n),F(()=>{r=U(n,1,`category-tab svelte-scpjps`,null,r,{active:Os.activeCategory===I(t).category}),B(a,I(t).display_name),B(s,I(t).count)}),L(`click`,n,()=>Os.selectCategory(I(t).category)),z(e,n)}),T(t),z(e,t)};V(m,e=>{Os.categories.length>0&&e(h)});var g=P(m,2),_=e=>{var t=_A(),n=M(t);oC(M(n),{placeholder:`Filter by provider, provider/model, alias, or owner...`,label:`Filter models by provider, provider/model, alias, or owner`,get value(){return Os.filter},set value(e){Os.filter=e}}),T(n);var r=P(n,2),i=M(r),a=e=>{var t=gA();K(M(t),{name:`plus`,class:`alias-create-icon`}),Ue(2),T(t),L(`click`,t,()=>VD.openVirtualModelCreate()),z(e,t)};V(i,e=>{VD.virtualModelsAvailable&&e(a)}),T(r),T(t),z(e,t)};V(g,e=>{(VD.displayModels.length>0||Os.filter||VD.virtualModelsAvailable)&&e(_)});var v=P(g,2),y=e=>{{let t=O(()=>VD.modelLoadingText());tw(e,{get label(){return I(t)},class:`models-loading-state`})}},b=O(()=>VD.modelsBusy()&&!I(n));V(v,e=>{I(b)&&e(y)});var x=P(v,2);Tk(x,{});var S=P(x,2);Ik(S,{});var C=P(S,2),w=e=>{ak(e,{})};V(C,e=>{(VD.displayModels.length>0||Os.filter)&&e(w)});var ee=P(C,2),te=e=>{z(e,vA())};V(ee,e=>{VD.displayModels.length===0&&!Os.loading&&!I(n)&&!Os.filter&&(Os.activeCategory===`all`||!Os.activeCategory)&&e(te)});var ne=P(ee,2),re=e=>{z(e,yA())};V(ne,e=>{VD.displayModels.length===0&&!Os.loading&&!I(n)&&!Os.filter&&Os.activeCategory&&Os.activeCategory!==`all`&&e(re)});var ie=P(ne,2),ae=e=>{z(e,bA())};V(ie,e=>{VD.displayModels.length>0&&VD.filteredDisplayModels.length===0&&Os.filter&&e(ae)});var oe=P(ie,2);uA(oe,{});var se=P(oe,2);SE(se,{});var ce=P(se,2);Wk(ce,{}),$k(P(ce,2),{}),T(r),z(e,r),D()}Hr([`click`]);var CA=`draft-workflow-preview`;function wA(){return{scope_provider:``,scope_model:``,scope_user_path:``,name:``,description:``,features:{cache:!0,audit:!0,usage:!0,budget:!0,guardrails:!1,failover:!0},guardrails:[]}}function TA(){return{scope_provider:``,scope_model:``,scope_user_path:``}}function EA(e){return{ref:``,step:Number.isFinite(e)?e:10}}function DA(e){let t=e==null?``:String(e).trim();if(t===``)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function OA(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=t.charAt(0).toUpperCase()+t.slice(1);for(let n of[t,r])if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==null&&e[n]!==void 0)return e[n];return n}function kA(e,t){return!e||typeof e!=`object`||Array.isArray(e)?!1:[t,t.charAt(0).toUpperCase()+t.slice(1)].some(t=>Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==null&&e[t]!==void 0)}function AA(e){return{cache:!!OA(e,`cache`,!1),audit:!!OA(e,`audit`,!1),usage:!!OA(e,`usage`,!1),budget:OA(e,`budget`,!0)!==!1,guardrails:!!OA(e,`guardrails`,!1),failover:OA(e,`failover`,!0)!==!1}}function jA(e,t){let n=AA(e),r=t||{},i=n.usage&&!!r.usage;return{cache:n.cache&&!!r.cache,audit:n.audit&&!!r.audit,usage:i,budget:i&&n.budget&&!!r.budget,guardrails:n.guardrails&&!!r.guardrails,failover:n.failover&&!!r.failover}}function MA(e,t){let n=e&&e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:e&&e.features?e.features:{};return{...jA((e&&e.effective_features&&typeof e.effective_features==`object`&&!Array.isArray(e.effective_features)?e.effective_features:null)||n,t),failover:AA(n).failover}}function NA(e,t){return MA(e,t).failover?`On`:`Off`}function PA(e){return(Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:Array.isArray(e&&e.guardrails)?e.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:DA(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0)}function FA(e,t){return MA(e,t).guardrails&&Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[]}function IA(e){return String(e&&(e.scope_provider_name||e.scope_provider)||``).trim()}function LA(e){return String(e&&(e.provider_name||e.provider_type)||``).trim()}function RA(e,t){let n=new Set,r=String(t&&t.scope_provider||``).trim();return r&&n.add(r),(Array.isArray(e)?e:[]).forEach(e=>{let t=LA(e);t&&n.add(t)}),[...n].sort()}function zA(e,t,n){let r=String(t||``).trim(),i=new Set,a=String(n&&n.scope_provider||``).trim(),o=String(n&&n.scope_model||``).trim();return r&&r===a&&o&&i.add(o),(Array.isArray(e)?e:[]).forEach(e=>{if(r&&LA(e)!==r)return;let t=String(e&&e.model&&e.model.id||``).trim();t&&i.add(t)}),[...i].sort()}function BA(e){let t=String(e&&e.scope_type||``).trim();return t===`provider_model`?`Provider Name + Model`:t===`provider_model_path`?`Provider Name + Model + Path`:t===`provider_path`?`Provider Name + Path`:t===`path`?`Path`:t===`provider`?`Provider Name`:`Global`}function VA(e){return String(e&&e.scope_display||`global`).trim()||`global`}function HA(e){let t=String(e&&e.name||``).trim();if(t)return t;let n=VA(e);return n===`global`?`All models`:n}function UA(e){let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function WA(e){if(UA(e))return``;let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function GA(e){let t=e||wA(),n=String(t.scope_provider||``).trim(),r=WA(t.scope_user_path);return{scope_provider:n,scope_model:n?String(t.scope_model||``).trim():``,scope_user_path:r}}function KA(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=WA(e&&e.scope_user_path);return!t&&!r?`global`:!t&&r?`path`:!n&&!r?`provider`:!n&&r?`provider_path`:r?`provider_model_path`:`provider_model`}function qA(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=WA(e&&e.scope_user_path),i=KA({scope_provider:t,scope_model:n,scope_user_path:r});return i===`global`?`global`:i===`path`?r:i===`provider`?t:i===`provider_path`?t+` @ `+r:i===`provider_model_path`?t+`/`+n+` @ `+r:t+`/`+n}function JA(e,t){let n=t||TA(),r=IA(e&&e.scope),i=r?String(e&&e.scope&&e.scope.scope_model||``).trim():``,a=WA(e&&e.scope&&e.scope.scope_user_path);return r===String(n.scope_provider||``).trim()&&i===String(n.scope_model||``).trim()&&a===WA(n.scope_user_path)}function YA(e,t,n){let r=GA(t);return!(r.scope_provider!==``||r.scope_model!==``||r.scope_user_path!==``)&&!n?null:(Array.isArray(e)?e:[]).find(e=>JA(e,r))||null}function XA(e){return String(e&&e.scope_type||``).trim()!==`global`}function ZA(e){let t=String(e||``).trim();return t?t.length<=14?t:t.slice(0,12)+`…`:`—`}function QA(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.description,e.scope_display,e.scope_type,IA(e&&e.scope),e.scope&&e.scope.scope_model,e.scope&&e.scope.scope_user_path,e.workflow_hash,...Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>e.ref):[]].some(e=>String(e||``).toLowerCase().includes(r)))}function $A(e,t){let n=e||wA(),r=GA(n),i=AA(n.features||{}),a=jA(i,t);a.failover=i.failover;let o=!!a.guardrails,s=o?PA(n):[];return{id:CA,scope_type:KA(r),scope_display:qA(r),scope:{scope_provider_name:r.scope_provider,scope_model:r.scope_model,...r.scope_user_path?{scope_user_path:r.scope_user_path}:{}},name:String(n.name||``).trim(),description:String(n.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!a.cache,audit:!!a.audit,usage:!!a.usage,budget:!!a.budget,guardrails:o,failover:!!a.failover},guardrails:s}}}function ej({form:e,caps:t,workflows:n=[],formHydrated:r=!1,hydratedScope:i=null}){let a=e||wA(),o=String(a.scope_provider||``).trim(),s=o?String(a.scope_model||``).trim():``,c=WA(a.scope_user_path),l=AA(a.features||{}),u=jA(l,t),d=YA(n,a,r),f=d&&d.workflow_payload&&d.workflow_payload.features,p=kA(f,`failover`),m=p?OA(f,`failover`,!0)!==!1:null,h=i||TA(),g=String(h.scope_provider||``).trim()===o&&String(h.scope_model||``).trim()===s&&WA(h.scope_user_path)===WA(c),_=!!(t&&t.failover),v=_||!!r&&g&&Object.prototype.hasOwnProperty.call(l,`failover`)||!r&&!!d&&p,y=u.guardrails?(Array.isArray(a.guardrails)?a.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:DA(e&&e.step)})):[],b={scope_provider_name:o,scope_model:s,...c?{scope_user_path:c}:{},name:String(a.name||``).trim(),description:String(a.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!u.cache,audit:!!u.audit,usage:!!u.usage,budget:!!u.budget,guardrails:!!u.guardrails},guardrails:y}};return v&&(b.workflow_payload.features.failover=!_&&!r&&d&&p?m:!!l.failover),b}function tj(e,{models:t=[],hydratedScope:n=null}={}){let r=n||TA(),i=String(r.scope_provider||``).trim(),a=String(r.scope_model||``).trim(),o=String(e&&(e.scope_provider_name||e.scope_provider)||``).trim(),s=String(e&&e.scope_model||``).trim();if(o&&!RA(t,r).includes(o)&&o!==i)return`Choose a registered provider name.`;if(s&&!o)return`Model selection requires a provider name.`;if(s){let e=zA(t,o,r),n=o===i&&s===a;if(!e.includes(s)&&!n)return`Choose a registered model for the selected provider name.`}let c=UA(e.scope_user_path);if(c)return c;let l=e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:{},u=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[];if(!l.guardrails)return``;let d=new Set;for(let e of u){if(!e.ref)return`Each guardrail step needs a guardrail ref.`;if(!Number.isInteger(e.step)||e.step<0)return`Each guardrail step must use a non-negative integer step number.`;if(d.has(e.ref))return`Each guardrail ref may appear only once in a workflow.`;d.add(e.ref)}return``}var nj=new class{#e=k(j([]));get workflows(){return I(this.#e)}set workflows(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get submitting(){return I(this.#o)}set submitting(e){A(this.#o,e,!0)}#s=k(``);get deactivatingID(){return I(this.#s)}set deactivatingID(e){A(this.#s,e,!0)}#c=k(``);get formError(){return I(this.#c)}set formError(e){A(this.#c,e,!0)}#l=k(!1);get formHydrated(){return I(this.#l)}set formHydrated(e){A(this.#l,e,!0)}#u=k(j(TA()));get hydratedScope(){return I(this.#u)}set hydratedScope(e){A(this.#u,e,!0)}#d=k(j([]));get guardrailRefs(){return I(this.#d)}set guardrailRefs(e){A(this.#d,e,!0)}#f=k(j(wA()));get form(){return I(this.#f)}set form(e){A(this.#f,e,!0)}#p=null;failoverVisible(){return go.booleanFlag(`FAILOVER_ENABLED`,!0)}featureCaps(){return{cache:go.cacheVisible(),audit:go.auditVisible(),usage:go.usageVisible(),budget:go.budgetsVisible(),guardrails:go.guardrailsVisible(),failover:this.failoverVisible()}}get filteredWorkflows(){return QA(this.workflows,this.filter)}providerOptions(){return RA(Os.models,this.hydratedScope)}modelOptions(e){return zA(Os.models,e,this.hydratedScope)}activeScopeMatch(){return YA(this.workflows,this.form,this.formHydrated)}submitMode(){return this.activeScopeMatch()?`save`:`create`}submitLabel(){return this.submitMode()===`save`?`Save`:`Create`}submittingLabel(){return this.submitMode()===`save`?`Saving...`:`Creating...`}preview(){return $A(this.form,this.featureCaps())}openCreate(e){if(this.formOpen=!0,this.submitting=!1,this.formError=``,!e){this.formHydrated=!1,this.hydratedScope=TA(),this.form=wA();return}this.formHydrated=!0,this.hydratedScope={scope_provider:IA(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``).trim(),scope_user_path:String(e.scope&&e.scope.scope_user_path||``).trim()};let t=e.workflow_payload&&e.workflow_payload.features?AA(e.workflow_payload.features):MA(e,this.featureCaps()),n=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>({ref:String(e&&e.ref||``).trim(),step:DA(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0):PA(e);this.form={scope_provider:IA(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``),scope_user_path:String(e.scope&&e.scope.scope_user_path||``),name:String(e.name||``),description:String(e.description||``),features:{cache:!!t.cache,audit:!!t.audit,usage:!!t.usage,budget:!!t.budget,guardrails:!!t.guardrails,failover:!!t.failover},guardrails:n.map(e=>({ref:String(e&&e.ref||``),step:Number.isFinite(e&&e.step)?e.step:10}))}}closeForm(){this.formOpen=!1,this.submitting=!1,this.formError=``,this.formHydrated=!1,this.hydratedScope=TA(),this.form=wA()}setProvider(e){if(this.form.scope_provider=String(e||``).trim(),!this.form.scope_provider){this.form.scope_model=``;return}this.modelOptions(this.form.scope_provider).includes(String(this.form.scope_model||``).trim())||(this.form.scope_model=``)}addGuardrailStep(){let e=(Array.isArray(this.form.guardrails)?this.form.guardrails:[]).reduce((e,t)=>{let n=Number(t&&t.step);return Number.isFinite(n)?Math.max(e,n):e},0)+10;this.form.guardrails.push(EA(e))}removeGuardrailStep(e){Array.isArray(this.form.guardrails)&&this.form.guardrails.splice(e,1)}buildRequest(){return ej({form:this.form,caps:this.featureCaps(),workflows:this.workflows,formHydrated:this.formHydrated,hydratedScope:this.hydratedScope})}async fetchWorkflows(){this.#p&&this.#p.abort();let e=new AbortController;this.#p=e,this.loading=!0,this.error=``;let t=setTimeout(()=>e.abort(),1e4),n=await iw(`/admin/workflows`,{label:`workflows`,options:{signal:e.signal}});if(clearTimeout(t),this.#p===e&&(this.#p=null,this.loading=!1,n.status!==`stale`)){if(n.status===`unavailable`){this.available=!1,this.workflows=[];return}if(n.result&&(this.available=!0),n.status===`error`){this.workflows=[],this.error=e.signal.aborted?`Loading workflows timed out.`:n.error;return}this.workflows=n.items}}async fetchGuardrailRefs(){let e=await iw(`/admin/workflows/guardrails`,{label:`workflow guardrails`});e.status!==`stale`&&(this.guardrailRefs=e.items)}async fetchPage(){await Promise.all([go.ensureLoaded(),this.fetchWorkflows(),this.fetchGuardrailRefs()])}async submitForm(){if(this.submitting)return;this.formError=``;let e=this.buildRequest(),t=tj(e,{models:Os.models,hydratedScope:this.hydratedScope});if(t){this.formError=t;return}this.submitting=!0;try{let t=await aw(`/admin/workflows`,`POST`,e,{label:`create workflow`,unavailableStatuses:[]});if(t.status===`stale`||t.result&&t.result.status===401)return;if(t.status===`error`){this.formError=t.error;return}qo.success(`Workflow created and activated.`),this.closeForm(),this.fetchPage()}finally{this.submitting=!1}}async deactivate(e){let t=String(e&&e.id||``).trim();if(!t||this.deactivatingID||!XA(e))return;let n=HA(e);if(confirm(`Deactivate workflow "`+n+`"? Requests will fall back to the next active workflow for this scope.`)){this.deactivatingID=t;try{let e=await aw(`/admin/workflows/`+encodeURIComponent(t)+`/deactivate`,`POST`,void 0,{label:`deactivate workflow`,unavailableStatuses:[]});if(e.status===`stale`||e.result&&e.result.status===401)return;if(e.status===`error`){qo.error(e.error);return}qo.success(`Workflow deactivated.`),this.fetchPage()}finally{this.deactivatingID=``}}}};function rj(e){let t=String(e??``),n=typeof navigator<`u`?navigator.clipboard:null;if(n&&typeof n.writeText==`function`)return n.writeText(t);let r=typeof document<`u`?document:null;if(!r||!r.body||typeof r.execCommand!=`function`)return Promise.reject(Error(`Clipboard API unavailable`));let i=r.createElement(`textarea`);i.value=t,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.top=`0`,i.style.left=`0`,i.style.opacity=`0`;try{if(r.body.appendChild(i),i.focus(),i.select(),i.setSelectionRange(0,i.value.length),!r.execCommand(`copy`))throw Error(`execCommand copy returned false`)}finally{i.parentNode&&i.parentNode.removeChild(i)}return Promise.resolve()}function ij({resetDelayMs:e=2e3,logPrefix:t}={}){let n=j({copied:!1,error:!1}),r=null;function i(){r!==null&&clearTimeout(r),r=null}function a(){i(),r=setTimeout(()=>{n.copied=!1,n.error=!1,r=null},e)}return{get copied(){return n.copied},get error(){return n.error},reset(){i(),n.copied=!1,n.error=!1},async copy(e,r){if(!(e==null||e===``)){i(),n.copied=!1,n.error=!1;try{await rj(typeof r==`function`?r(e):String(e)),n.copied=!0,n.error=!1}catch(e){console.error(t||`Failed to copy text:`,e),n.copied=!1,n.error=!0}a()}}}}var aj=R(``);function oj(e,t){E(t,!0);let n=G(t,`workflowID`,3,``),r=ij({logPrefix:`Failed to copy workflow ID:`});An(()=>{n(),r.reset()});let i=O(()=>r.error?`Unable to copy workflow ID`:r.copied?`Workflow ID copied`:`Copy workflow ID`),a=O(()=>n()?I(i)+` `+n():I(i));async function o(e){e.preventDefault(),n()&&await r.copy(n())}var s=aj();let c;var l=P(M(s),4),u=M(l,!0);T(l);var d=P(l,2);K(M(d),{name:`copy`}),T(d),T(s),F(()=>{c=U(s,1,`workflow-pipeline-meta mono svelte-1viff7o`,null,c,{"workflow-pipeline-meta-copied":r.copied,"workflow-pipeline-meta-error":r.error}),W(s,`title`,I(i)),W(s,`aria-label`,I(a)),B(u,n())}),L(`click`,s,o),z(e,s),D()}Hr([`click`]);var sj=(e,t)=>{let n=()=>(t?.()).icon,r=()=>(t?.()).label,i=Ot(()=>h((t?.()).variant,`workflow-node-feature`)),a=()=>(t?.()).state,o=()=>(t?.()).sub,s=()=>(t?.()).badge;var c=dj(),l=M(c),u=e=>{var t=cj();let r;K(M(t),{get name(){return n()}}),T(t),F(()=>r=U(t,1,`workflow-node-icon svelte-nbptrg`,null,r,{"workflow-node-icon-endpoint":I(i)===`workflow-node-endpoint`})),z(e,t)};V(l,e=>{n()&&e(u)});var d=P(l,2),f=M(d,!0);T(d);var p=P(d,2),m=e=>{var t=lj(),n=M(t,!0);T(t),F(()=>B(n,s())),z(e,t)};V(p,e=>{s()&&e(m)});var g=P(p,2),_=e=>{var t=uj(),n=M(t,!0);T(t),F(()=>B(n,o())),z(e,t)};V(g,e=>{o()&&e(_)}),T(c),F(()=>{U(c,1,Fi([`workflow-node`,I(i),a()]),`svelte-nbptrg`),B(f,r())}),z(e,c)},cj=R(`
`),lj=R(` `),uj=R(` `),dj=R(`
`),fj=R(`
`,1),pj=R(`
`,1),mj=R(`
`),hj=R(`
Async
`),gj=R(`
`);function _j(e,t){E(t,!0);let n=G(t,`chart`,19,()=>({}));var r=gj();let i;var a=M(r),o=e=>{oj(e,{get workflowID(){return n().workflowID}})};V(a,e=>{n().workflowID&&e(o)});var s=P(a,2),c=M(s);sj(c,()=>({icon:`user`,label:`Client`,variant:`workflow-node-endpoint`}));var l=P(c,4);sj(l,()=>({icon:`database`,label:`Auth`,state:n().authNodeClass,sub:n().authNodeSublabel}));var u=P(l,2),d=e=>{var t=fj(),r=N(t);sj(P(r,2),()=>({icon:`database`,label:`Cache`,state:n().cacheNodeClass,badge:n().cacheStatusLabel})),F(()=>U(r,1,Fi([`workflow-conn`,n().cacheConnClass]),`svelte-nbptrg`)),z(e,t)};V(u,e=>{n().showCache&&e(d)});var f=P(u,2),p=e=>{var t=pj();sj(P(N(t),2),()=>({icon:`wallet`,label:`Budget`,state:n().budgetNodeClass,badge:n().budgetStatusLabel})),z(e,t)};V(f,e=>{n().showBudget&&e(p)});var m=P(f,2),h=e=>{var t=pj();sj(P(N(t),2),()=>({icon:`shield`,label:`Guardrails`,sub:n().guardrailLabel})),z(e,t)};V(m,e=>{n().showGuardrails&&e(h)});var g=P(m,2),_=P(g,2);sj(_,()=>({label:n().aiLabel,variant:`workflow-node-ai`,state:n().aiNodeClass,sub:n().aiSublabel}));var v=P(_,2),y=e=>{var t=fj(),r=N(t);sj(P(r,2),()=>({icon:`maximize-2`,label:`Failover`,state:n().failoverNodeClass,badge:n().failoverStatusLabel,sub:n().failoverTargetLabel})),F(()=>U(r,1,Fi([`workflow-conn`,n().failoverConnClass]),`svelte-nbptrg`)),z(e,t)};V(v,e=>{n().showFailover&&e(y)});var b=P(v,2);sj(P(b,2),()=>({icon:`circle-check-big`,label:`Response`,variant:`workflow-node-endpoint`,state:n().responseNodeClass,sub:n().responseNodeSublabel})),T(s);var x=P(s,2),S=e=>{var t=hj(),r=M(t),i=M(r),a=e=>{sj(e,()=>({icon:`chart-column-increasing`,label:`Usage`,variant:`workflow-node-feature workflow-node-async`,state:n().usageNodeClass}))};V(i,e=>{n().showUsage&&e(a)});var o=P(i,2),s=e=>{z(e,mj())};V(o,e=>{n().showUsage&&n().showAudit&&e(s)});var c=P(o,2),l=e=>{sj(e,()=>({icon:`file-text`,label:`Audit Log`,variant:`workflow-node-feature workflow-node-async`,state:n().auditNodeClass}))};V(c,e=>{n().showAudit&&e(l)}),T(r),Ue(4),T(t),z(e,t)};V(x,e=>{n().showAsync&&e(S)}),T(r),F(()=>{i=U(r,1,`workflow-pipeline svelte-nbptrg`,null,i,{"workflow-pipeline-has-meta":n().workflowID}),U(g,1,Fi([`workflow-conn`,n().aiConnClass]),`svelte-nbptrg`),U(b,1,Fi([`workflow-conn`,n().responseConnClass]),`svelte-nbptrg`)}),z(e,r),D()}function vj(e){let t=PA(e).length;return t===0?``:t===1?`1 step`:t+` steps`}function yj(e,t){return t&&t.provider?t.provider:IA(e&&e.scope)||`AI`}function bj(e,t){return t&&t.model?t.model:e&&e.scope&&e.scope.scope_model||null}function xj(e,t){let n=String(e&&e.id||``).trim();if(n&&n!==`draft-workflow-preview`)return n;let r=String(t&&t.workflow_version_id||``).trim();return r&&r!==`draft-workflow-preview`?r:null}function Sj(e){let t=e&&e.data&&e.data.workflow_features;return!t||typeof t!=`object`||Array.isArray(t)?null:AA(t)}function Cj(e){let t=e&&e.data&&e.data.failover;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=String(t.target_model||t.targetModel||``).trim()||null;return n?{targetModel:n}:null}function wj(e,t=0){if(t>4||e==null)return``;if(typeof e==`string`){let n=e.trim();if(!n||n[0]!==`{`&&n[0]!==`[`)return``;try{return wj(JSON.parse(n),t+1)}catch{return``}}if(Array.isArray(e)){for(let n of e){let e=wj(n,t+1);if(e)return e}return``}return typeof e==`object`?String(e.code||``).trim()||(e.error===void 0?``:wj(e.error,t+1)):``}function Tj(e){let t=e&&e.data&&typeof e.data==`object`&&!Array.isArray(e.data)?e.data:{};return String(t.error_code||t.errorCode||``).trim()||wj(t.response_body)}function Ej(e){let t=String(e||``).trim();if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{provider:t.slice(0,n),model:t.slice(n+1)}}function Dj(e,t){let n=String(e&&(e.requested_model||e.model)||``).trim(),r=Cj(e);if(!(r&&r.targetModel))return{provider:String(e&&e.provider||``).trim()||null,model:n||null};let i=Ej(n);if(i)return i;let a=IA(t&&t.scope),o=a?String(t&&t.scope&&t.scope.scope_model||``).trim():``;return a||o?{provider:a||null,model:o||n||null}:{provider:null,model:n||null}}function Oj(e,t){if(!e)return null;let n=(()=>{let t=String(e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`?t:null})(),r=(()=>{if(e.status_code===void 0||e.status_code===null)return null;let t=String(e.status_code).trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null})(),i=n?!0:e.cache_hit!==void 0&&e.cache_hit!==null&&!!e.cache_hit,a=Cj(e),o=Dj(e,t),s=Number.isFinite(r)&&r>=200&&r<300,c=String(e.error_type||``).trim().toLowerCase()===`authentication_error`,l=String(e.auth_method||``).trim().toLowerCase()||null,u=Tj(e).toLowerCase()===`budget_exceeded`;return{cacheHit:i,cacheType:n||null,failoverTarget:a&&a.targetModel?a.targetModel:null,provider:o.provider,model:o.model,statusCode:r,responseSuccess:s,aiSuccess:s&&!i,authError:c,authMethod:l,budgetExceeded:u}}function kj(e){return!!(e&&e.cacheHit)}function Aj(e){return!!(e&&e.failoverTarget)}function jj(e){return!!(e&&e.budgetExceeded)}function Mj(e,t){return t?`workflow-node-current`:e&&e.cacheHit?`workflow-node-success`:``}function Nj(e){return e&&e.cacheHit?`workflow-conn-hit`:``}function Pj(e){return!e||!e.cacheHit?null:e.cacheType===`semantic`?`Hit (Semantic)`:`Hit (Exact)`}function Fj(e,t,n,r){return e?jj(t)?`workflow-node-error`:r?`workflow-node-current`:n?`workflow-node-success`:``:``}function Ij(e){return jj(e)?`Exceeded`:null}function Lj(e){return e&&e.cacheHit?`workflow-node-skipped`:e&&e.failoverTarget?`workflow-node-success`:``}function Rj(e){return e&&e.cacheHit?`workflow-conn-dim`:e&&e.failoverTarget?`workflow-conn-hit`:``}function zj(e){return e&&e.failoverTarget?`Redirected`:null}function Bj(e){return e&&e.failoverTarget?e.failoverTarget:null}function Vj(e){return e&&e.cacheHit?`workflow-conn-dim`:``}function Hj(e,t){return e?e.cacheHit?`workflow-node-skipped`:t?`workflow-node-current`:e.aiSuccess?`workflow-node-success`:``:``}function Uj(e,t){if(!e)return``;let n=e.statusCode;return!Number.isFinite(n)&&t?`workflow-node-current`:Number.isFinite(n)?n>=500?`workflow-node-error`:n>=400?`workflow-node-warning`:n>=300?`workflow-node-neutral`:n>=200?`workflow-node-success`:``:``}function Wj(e){return!e||!Number.isFinite(e.statusCode)?null:String(e.statusCode)}function Gj(e,t){return e?e.authError?`workflow-node-error`:t?`workflow-node-current`:e.authMethod===`api_key`||e.authMethod===`master_key`?`workflow-node-success`:``:``}function Kj(e){return!e||!e.authMethod?null:e.authMethod}function qj(e,t,n){return e?n?`workflow-node-current`:t?`workflow-node-success`:``:``}function Jj(e,t){if(!e||!e._live)return!!t;let n=String(e._live_state||``).trim();return!!e._audit_flushed||n===`audit.flushed`||n===`audit.detail`}function Yj(e,t){if(!e)return!!t;let n=e.usage||{},r=Number(n.entries||0)>0;if(!e._live)return r;let i=String(e._usage_live_state||``).trim();return e._usage_flushed||i===`usage.flushed`?!0:!e._usage_live_pending&&r&&!e._live_pending}function Xj(e){return!!(e&&e._live&&e._usage_live_pending&&!e._usage_flushed)}function Zj(e,t){return!e||!e._live||Jj(e,!1)?!1:String(e._live_state||``).trim()===`audit.completed`||!!(t&&Number.isFinite(t.statusCode))}function Qj(e,t,n){return!e||!e._live?``:Xj(e)?`usage`:Zj(e,t)?`audit`:Jj(e,!1)&&!e._live_pending?``:t&&t.cacheHit?`cache`:t&&(t.provider||t.model)?`ai`:n&&n.budget&&(e.workflow_version_id||e.requested_model)?`budget`:t&&t.authMethod?``:`auth`}function $j(e,t,n,r){let i=n||{},a=i.features&&typeof i.features==`object`&&!Array.isArray(i.features)?AA(i.features):MA(e,r),o=!!i.forceAudit,s=!!i.highlightAsyncPresent,c=!!a.budget||jj(t),l=!!a.guardrails,u=!!a.usage,d=o||!!a.audit,f=!!i.forceAsync||!!(u||d),p=!!a.failover||Aj(t),m=xj(e,i.entry),h=Qj(i.entry,t,a),g=Xj(i.entry),_=Zj(i.entry,t),v=Jj(i.entry,s),y=Yj(i.entry,s);return{showBudget:c,budgetNodeClass:Fj(c,t,s,h===`budget`),budgetStatusLabel:Ij(t),showGuardrails:l,guardrailLabel:l?vj(e):``,showCache:!!i.forceCache||!!a.cache||kj(t),cacheNodeClass:Mj(t,h===`cache`),cacheConnClass:Nj(t),cacheStatusLabel:Pj(t),showFailover:p,failoverNodeClass:p?Lj(t):``,failoverConnClass:p?Rj(t):``,failoverStatusLabel:p?zj(t):null,failoverTargetLabel:p?Bj(t):null,aiLabel:yj(e,t),aiSublabel:bj(e,t),aiConnClass:Vj(t),aiNodeClass:Hj(t,h===`ai`),responseConnClass:Vj(t),responseNodeClass:Uj(t,h===`response`),responseNodeSublabel:Wj(t),authNodeClass:Gj(t,h===`auth`),authNodeSublabel:Kj(t),usageNodeClass:qj(u,y,g),auditNodeClass:qj(d,v,_),showAsync:f,showUsage:u,showAudit:d,workflowID:m}}function eM(e,t){return $j(e,null,{forceCache:!1},t)}function tM(e,t,n){return $j(t,Oj(e,t),{entry:e,features:Sj(e)||(t?MA(t,n):{cache:!1,audit:!1,usage:!1,budget:!1,guardrails:!1,failover:!1}),forceAudit:!0,forceAsync:!0,highlightAsyncPresent:!0},n)}var nM=R(`

`),rM=R(`

`),iM=R(`
`),aM=R(`
`),oM=R(`

No guardrails configured for this workflow.

`),sM=R(`

Guardrails

`),cM=R(``),lM=R(`

`);function uM(e,t){E(t,!0);let n=G(t,`preview`,3,!1),r=O(()=>nj.featureCaps()),i=O(()=>HA(t.workflow)),a=O(()=>FA(t.workflow,I(r))),o=O(()=>eM(t.workflow,I(r))),s=O(()=>n()?`draft-workflow-preview-guardrail-`:t.workflow.id+`-guardrail-`);var c=lM();let l;var u=M(c),d=M(u),f=M(d),p=M(f,!0);T(f);var m=P(f,2),h=M(m,!0);T(m),T(d);var g=P(d,2),_=M(g),v=M(_,!0);T(_),T(g),T(u);var y=P(u,2),b=e=>{var n=nM(),r=M(n,!0);T(n),F(()=>B(r,t.workflow.description)),z(e,n)};V(y,e=>{t.workflow.description&&e(b)});var x=P(y,2),S=e=>{var n=rM(),i=M(n);T(n),F(e=>B(i,`Failover: ${e??``}`),[()=>NA(t.workflow,I(r))]),z(e,n)},C=O(()=>nj.failoverVisible());V(x,e=>{I(C)&&e(S)});var w=P(x,2);_j(w,{get chart(){return I(o)}});var ee=P(w,2),te=e=>{var t=sM(),n=M(t),r=P(M(n),2),i=M(r,!0);T(r),T(n);var o=P(n,2),c=e=>{var t=aM();H(t,23,()=>I(a),(e,t)=>I(s)+t,(e,t)=>{var n=iM(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=M(a);T(a),T(n),F(()=>{B(i,I(t).ref),B(o,`step ${I(t).step??``}`)}),z(e,n)}),T(t),z(e,t)},l=e=>{z(e,oM())};V(o,e=>{I(a).length>0?e(c):e(l,-1)}),T(t),F(()=>B(i,I(a).length?I(a).length+` steps`:`None`)),z(e,t)},ne=O(()=>go.guardrailsVisible());V(ee,e=>{I(ne)&&e(te)});var re=P(ee,2),ie=e=>{var n=cM(),r=M(n),a=M(r),o=M(a,!0);T(a);var s=P(a,2);{let e=O(()=>`Edit workflow `+I(i));rw(s,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>nj.openCreate(t.workflow),children:(e,t)=>{K(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}T(r);var c=P(r,2),l=M(c),u=M(l);T(l);var d=P(l,2),f=M(d);T(d);var p=P(d,2),m=M(p);T(p),T(c),T(n),F((e,n,r,s)=>{a.disabled=e,W(a,`aria-label`,`Deactivate workflow `+I(i)),W(a,`title`,n),B(o,nj.deactivatingID===t.workflow.id?`Deactivating...`:`Deactivate`),B(u,`version: v${t.workflow.version??``}`),B(f,`created: ${r??``}`),B(m,`hash: ${s??``}`)},[()=>nj.deactivatingID===t.workflow.id||!XA(t.workflow),()=>XA(t.workflow)?`Deactivate active workflow`:`The global workflow cannot be deactivated.`,()=>io.formatTimestamp(t.workflow.created_at),()=>ZA(t.workflow.workflow_hash)]),L(`click`,a,()=>nj.deactivate(t.workflow)),z(e,n)};V(re,e=>{n()||e(ie)}),T(c),F((e,t)=>{l=U(c,1,`workflow-card svelte-1fo9fvq`,null,l,{"workflow-preview-card":n()}),B(p,e),B(h,I(i)),B(v,t)},[()=>BA(t.workflow),()=>VA(t.workflow)]),z(e,c),D()}Hr([`click`]);var dM=R(`

`),fM=R(``),pM=R(``),mM=R(``),hM=R(``),gM=R(``),_M=R(``),vM=R(``),yM=R(``),bM=R(``),xM=R(``),SM=R(``),CM=R(``),wM=R(`
No named guardrails are currently registered on this deployment. You can still draft a workflow, but guardrail-backed creation may be rejected.
`),TM=R(`
`),EM=R(`
`),DM=R(`

No guardrail steps configured yet.

`),OM=R(`

Guardrail Steps

Guardrails in the same numeric step run together. Later steps wait for earlier ones to finish.

`),kM=R(`

Leave provider name empty to target all providers and models. Select a provider name without a model to target all models for that configured provider.

Add a path to scope the workflow to that subtree. Leading slashes are optional and will be normalized; you can enter "team/alpha" or "/team/alpha". Matching checks the deepest user path first, then falls back toward the root.

If you leave the name empty, the workflow will display as the matched provider/model scope or “All models”.

Preview

Live
`,1);function AM(e,t){E(t,!0);{let t=e=>{Hx(e,{copyId:`workflow-help-copy`,label:`workflow help`,text:`Create immutable version. Submitting activates it for the selected scope.`,title:e=>{var t=dM(),n=M(t,!0);T(t),F(e=>B(n,e),[()=>nj.submitMode()===`save`?`Edit Workflow`:`Create Workflow`]),z(e,t)},$$slots:{title:!0}})},n=O(()=>nj.submitLabel()),r=O(()=>nj.submittingLabel()),i=O(()=>nj.submitMode()===`create`?`plus`:`save`);sT(e,{get open(){return nj.formOpen},ariaLabel:`Workflow editor`,get error(){return nj.formError},get submitting(){return nj.submitting},get submitLabel(){return I(n)},get submittingLabel(){return I(r)},get submitIcon(){return I(i)},dialogClass:`workflow-editor`,onclose:()=>nj.closeForm(),onsubmit:()=>nj.submitForm(),header:t,children:(e,t)=>{var n=kM(),r=N(n),i=M(r);lT(i,{id:`workflow-scope-provider`,label:`Provider Name`,children:(e,t)=>{var n=pM(),r=M(n);r.value=r.__value=``,H(P(r),16,()=>nj.providerOptions(),e=>e,(e,t)=>{var n=fM(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(n),L(`change`,n,e=>nj.setProvider(e.currentTarget.value)),Gi(n,()=>nj.form.scope_provider,e=>nj.form.scope_provider=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2),o=e=>{lT(e,{id:`workflow-scope-model`,label:`Model`,children:(e,t)=>{var n=mM(),r=M(n);r.value=r.__value=``,H(P(r),17,()=>nj.modelOptions(nj.form.scope_provider),e=>nj.form.scope_provider+`-`+e,(e,t)=>{var n=fM(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t)),i!==(i=I(t))&&(n.value=(n.__value=I(t))??``)}),z(e,n)}),T(n),Gi(n,()=>nj.form.scope_model,e=>nj.form.scope_model=e),z(e,n)},$$slots:{default:!0}})};V(a,e=>{nj.form.scope_provider&&e(o)});var s=P(a,2);lT(s,{id:`workflow-name`,label:`Name`,children:(e,t)=>{var n=hM();na(n),da(n,()=>nj.form.name,e=>nj.form.name=e),z(e,n)},$$slots:{default:!0}}),lT(P(s,2),{id:`workflow-user-path`,label:`User Path`,children:(e,t)=>{var n=gM();na(n),da(n,()=>nj.form.scope_user_path,e=>nj.form.scope_user_path=e),z(e,n)},$$slots:{default:!0}}),T(r);var c=P(r,8);lT(c,{id:`workflow-description`,label:`Description`,children:(e,t)=>{var n=_M();ft(n),da(n,()=>nj.form.description,e=>nj.form.description=e),z(e,n)},$$slots:{default:!0}});var l=P(c,2),u=M(l),d=e=>{var t=vM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>nj.form.features.cache,e=>nj.form.features.cache=e),z(e,t)},f=O(()=>go.cacheVisible());V(u,e=>{I(f)&&e(d)});var p=P(u,2),m=e=>{var t=yM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>nj.form.features.audit,e=>nj.form.features.audit=e),z(e,t)},h=O(()=>go.auditVisible());V(p,e=>{I(h)&&e(m)});var g=P(p,2),_=e=>{var t=bM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>nj.form.features.usage,e=>nj.form.features.usage=e),z(e,t)},v=O(()=>go.usageVisible());V(g,e=>{I(v)&&e(_)});var y=P(g,2),b=e=>{var t=xM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>nj.form.features.budget,e=>nj.form.features.budget=e),z(e,t)},x=O(()=>go.budgetsVisible());V(y,e=>{I(x)&&e(b)});var S=P(y,2),C=e=>{var t=SM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>nj.form.features.guardrails,e=>nj.form.features.guardrails=e),z(e,t)},w=O(()=>go.guardrailsVisible());V(S,e=>{I(w)&&e(C)});var ee=P(S,2),te=e=>{var t=CM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>nj.form.features.failover,e=>nj.form.features.failover=e),z(e,t)},ne=O(()=>nj.failoverVisible());V(ee,e=>{I(ne)&&e(te)}),T(l);var re=P(l,2),ie=P(M(re),2);{let e=O(()=>nj.preview());uM(ie,{get workflow(){return I(e)},preview:!0})}T(re);var ae=P(re,2),oe=e=>{var t=OM(),n=M(t),r=P(M(n),2);T(n);var i=P(n,2),a=e=>{var t=wM(),n=P(M(t),2);T(t),L(`click`,n,()=>Va.navigate(`guardrails`)),z(e,t)};V(i,e=>{nj.guardrailRefs.length===0&&e(a)});var o=P(i,2),s=e=>{var t=EM();H(t,21,()=>nj.form.guardrails,oi,(e,t,n)=>{var r=TM(),i=M(r),a=M(i);W(a,`for`,`workflow-guardrail-ref-`+n);var o=P(a,2);na(o),W(o,`id`,`workflow-guardrail-ref-`+n),W(o,`aria-label`,`Guardrail reference `+(n+1)),T(i);var s=P(i,2),c=M(s);W(c,`for`,`workflow-guardrail-step-`+n);var l=P(c,2);na(l),W(l,`id`,`workflow-guardrail-step-`+n),W(l,`aria-label`,`Guardrail step `+(n+1)),T(s);var u=P(s,2);T(r),da(o,()=>I(t).ref,e=>I(t).ref=e),da(l,()=>I(t).step,e=>I(t).step=e),L(`click`,u,()=>nj.removeGuardrailStep(n)),z(e,r)}),T(t),z(e,t)},c=e=>{z(e,DM())};V(o,e=>{nj.form.guardrails.length>0?e(s):e(c,-1)}),T(t),L(`click`,r,()=>nj.addGuardrailStep()),z(e,t)},se=O(()=>nj.form.features.guardrails&&go.guardrailsVisible());V(ae,e=>{I(se)&&e(oe)}),z(e,n)},$$slots:{header:!0,default:!0}})}D()}Hr([`change`,`click`]);var jM=R(`

Loading workflows...

`),MM=R(`
`),NM=R(`

No active workflows found.

`),PM=R(`

No workflows match your filter.

`),FM=R(`
`);function IM(e,t){E(t,!0);var n=FM(),r=M(n),i=e=>{var t=jM();_x(M(t),{size:16,label:`Loading workflows`}),Ue(),T(t),z(e,t)};V(r,e=>{nj.loading&&!q.authError&&e(i)});var a=P(r,2),o=e=>{var t=MM();H(t,21,()=>nj.filteredWorkflows,e=>e.id,(e,t)=>{uM(e,{get workflow(){return I(t)}})}),T(t),z(e,t)};V(a,e=>{nj.filteredWorkflows.length>0&&e(o)});var s=P(a,2),c=e=>{z(e,NM())};V(s,e=>{nj.workflows.length===0&&!nj.loading&&!q.authError&&nj.available&&e(c)});var l=P(s,2),u=e=>{z(e,PM())};V(l,e=>{nj.workflows.length>0&&nj.filteredWorkflows.length===0&&!nj.loading&&e(u)}),T(n),z(e,n),D()}var LM=R(``),RM=R(`
Workflows feature is unavailable.
`),zM=R(`
`),BM=R(`
`),VM=R(``),HM=R(`
`);function UM(e,t){E(t,!0),An(()=>{q.refreshTick,nj.fetchPage()});var n=HM(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=LM();K(M(t),{name:`plus`,class:`form-action-icon`,"aria-hidden":`true`}),Ue(2),T(t),L(`click`,t,()=>nj.openCreate()),z(e,t)};V(a,e=>{nj.available&&e(o)}),T(i),T(r);var s=P(r,2),c=e=>{z(e,RM())};V(s,e=>{!nj.available&&!q.authError&&e(c)});var l=P(s,2),u=e=>{var t=zM(),n=M(t,!0);T(t),F(()=>B(n,nj.error)),z(e,t)};V(l,e=>{nj.error&&!q.authError&&e(u)});var d=P(l,2),f=e=>{var t=BM(),n=M(t);oC(M(n),{placeholder:`Filter by scope, name, hash, or guardrail...`,label:`Filter workflows by scope, name, hash, or guardrail`,get value(){return nj.filter},set value(e){nj.filter=e}}),T(n);var r=P(n,2),i=M(r),a=M(i,!0);T(i),T(r),T(t),F(()=>B(a,nj.filteredWorkflows.length+` active scopes`)),z(e,t)};V(d,e=>{nj.available&&e(f)});var p=P(d,2);AM(p,{});var m=P(p,2);IM(m,{});var h=P(m,2);H(h,20,()=>nj.guardrailRefs,e=>e,(e,t)=>{var n=VM(),r={};F(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(h),T(n),z(e,n),D()}Hr([`click`]);function WM(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Wo}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=GM(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function GM(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var KM=null;function qM(){return KM===null&&(KM=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`)),!!(KM&&KM.matches)}function JM(e){return qM()?0:e}function YM(e,t){return!t||!t.live?{duration:0}:Ho(e,{duration:JM(150)})}var XM=new class{#e=k(j({}));get workflowVersionsByID(){return I(this.#e)}set workflowVersionsByID(e){A(this.#e,e,!0)}workflowVersionRequests={};workflowFeatureCaps(){return{cache:go.cacheVisible(),audit:go.auditVisible(),usage:go.usageVisible(),budget:go.budgetsVisible(),guardrails:go.guardrailsVisible(),failover:go.booleanFlag(`FAILOVER_ENABLED`,!0)}}cacheWorkflowVersion(e){let t=String(e&&e.id||``).trim();return t?(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:e},e):null}cacheMissingWorkflowVersion(e){let t=String(e||``).trim();t&&(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:null})}workflowVersionCacheHas(e){return Object.prototype.hasOwnProperty.call(this.workflowVersionsByID||{},String(e||``).trim())}workflowVersionByID(e){let t=String(e||``).trim();return t&&this.workflowVersionCacheHas(t)?this.workflowVersionsByID[t]:null}async fetchWorkflowVersion(e){let t=String(e||``).trim();if(!t)return null;if(this.workflowVersionCacheHas(t))return this.workflowVersionsByID[t];if(this.workflowVersionRequests[t])return this.workflowVersionRequests[t];let n=(async()=>{let e=typeof AbortController==`function`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1e4):null;try{let n=await uo(`/admin/workflows/`+encodeURIComponent(t),{label:`workflow`,signal:e?e.signal:void 0});if(n.stale)return null;if(n.status===404)return this.cacheMissingWorkflowVersion(t),null;if(!n.ok)return null;let r=n.data;return!r||typeof r!=`object`||Array.isArray(r)?(this.cacheMissingWorkflowVersion(t),null):this.cacheWorkflowVersion(r)}catch(e){return e&&e.name===`AbortError`||console.error(`Failed to fetch workflow version:`,e),null}finally{n!==null&&clearTimeout(n),delete this.workflowVersionRequests[t]}})();return this.workflowVersionRequests[t]=n,n}async prefetchAuditWorkflows(e){let t=[...new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.workflow_version_id||``).trim()).filter(Boolean))];t.length!==0&&await Promise.all(t.map(e=>this.fetchWorkflowVersion(e)))}auditEntryWorkflow(e){let t=String(e&&e.workflow_version_id||``).trim();return t?this.workflowVersionByID(t):null}},ZM=6;function QM(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function $M(e,t=0,n=null){let r=String(e||``).trim();if(!r)return``;if(t>ZM)return r;let i=QM(r);return i==null?r:eN(i,t+1,n)||n&&n(i)||r}function eN(e,t=0,n=null,r=null){if(e==null||t>ZM)return``;if(typeof e==`string`){let i=QM(e.trim());return i==null?``:eN(i,t+1,n,r)}if(typeof e!=`object`)return``;let i=r||new Set;if(i.has(e))return``;if(i.add(e),Array.isArray(e)){for(let r=0;r=400||rN(t&&t.response_body)}function aN(e){let t=e&&e.data?e.data:null;return t?tN(t.error_message)||(iN(e,t)?eN(t.response_body,0):``):``}function oN(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return!Number.isInteger(t)||t<0?null:t}function sN(e){let t=oN(e);return t===null?``:t===0?`Audit logs are retained indefinitely.`:t===1?`Audit logs are retained for 1 day.`:`Audit logs are retained for `+t+` days.`}function cN(e){let t=oN(e);return t===null?``:t===0?`Audit logs are retained `:`Audit logs are retained for `}function lN(e){let t=oN(e);return t===null?``:t===0?`indefinitely`:t===1?`1 day`:t+` days`}function uN({dateQuery:e,limit:t,offset:n,search:r,method:i,statusCode:a,stream:o}){let s=e;return s+=`&limit=`+t+`&offset=`+n,r&&(s+=`&search=`+encodeURIComponent(r)),i&&(s+=`&method=`+encodeURIComponent(i)),a&&(s+=`&status_code=`+encodeURIComponent(a)),o&&(s+=`&stream=`+encodeURIComponent(o)),s}function dN({sessionId:e,limit:t}){return`session_id=`+encodeURIComponent(e)+`&limit=`+(t||100)+`&offset=0`}function fN(e){return String(e&&e.session_id||``).trim()}function pN(e){let t=Number(e&&e.session_count);return Number.isFinite(t)&&t>1?t:1}function mN(e){return!!fN(e)&&pN(e)>1}function hN(e){return{entries:(Array.isArray(e&&e.sessions)?e.sessions:[]).filter(e=>e&&e.latest).map(e=>({...e.latest,session_id:fN(e.latest)||String(e.session_id||``).trim(),session_count:Number(e.count||1)})),total:Number(e&&e.total||0),limit:Number(e&&e.limit||25),offset:Number(e&&e.offset||0)}}function gN(e,t,n){let r=new Set((Array.isArray(n)?n:[]).flatMap(e=>bN(e))),i=(Array.isArray(t)?t:[]).filter(e=>!bN(e).some(e=>r.has(e))),a=new Set([...r,...i.flatMap(e=>bN(e))]),o=(e&&Array.isArray(e.entries)?e.entries:[]).filter(e=>e&&e._live&&!bN(e).some(e=>a.has(e)));return{entries:[...o,...i],preservedCount:o.length}}function _N(e,t){let n=e||{};if(!t)return n;if(n[t]){let e={...n};return delete e[t],e}return{...n,[t]:!0}}function vN(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>fN(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=n[e];return}a=!0}),a?i:n}function yN(e){return String(e&&e.id||``).trim()}function bN(e){if(!e)return[];let t=[],n=String(e.id||``).trim(),r=String(e.request_id||``).trim();return n&&t.push(`id:`+n),r&&t.push(`request:`+r),t}function xN(e){return!!(e&&e._live&&e._live_pending&&!e._audit_flushed)}function SN(e){let t=e&&e.customStartDate,n=e&&e.customEndDate;if(!t&&!n)return!0;let r=new Date;if(t){let e=new Date(t);if(e.setHours(0,0,0,0),Number.isFinite(e.getTime())&&re)return!1}return!0}function CN(e,t){return e&&Number(e.offset||0)===0&&!(t&&t.search)&&!(t&&t.method)&&!(t&&t.statusCode)&&!(t&&t.stream)&&SN(t)}function wN(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!CN(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>xN(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>bN(e))),s=[];return a.forEach(e=>{let t=bN(e);t.length!==0&&(t.some(e=>o.has(e))||(t.forEach(e=>o.add(e)),s.push(e)))}),s.length===0?r:(r.entries=[...s,...i].slice(0,r.limit||25),r.total=Number(r.total||0)+s.length,r)}function TN(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!CN(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>xN(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>bN(e))),s=new Map;i.forEach((e,t)=>{let n=fN(e);n&&!s.has(n)&&s.set(n,t)});let c=[],l=i;return a.forEach(e=>{let t=bN(e);if(t.length===0||t.some(e=>o.has(e)))return;let n=fN(e);if(n&&s.has(n)){let r=s.get(n);l===i&&(l=[...i]),l[r]={...e,session_count:Math.max(pN(l[r]),pN(e))},t.forEach(e=>o.add(e));return}t.forEach(e=>o.add(e)),c.push(e)}),r.entries=[...c,...l].slice(0,r.limit||25),r.total=Number(r.total||0)+c.length,r}function EN(e,t){let n=yN(t),r=e||{};if(!n)return r;if(r[n]){let e={...r};return delete e[n],e}return{...r,[n]:!0}}function DN(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>yN(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=!0;return}a=!0}),a?i:n}function ON(e){if(e==null)return`-`;let t=Number(e);return Number.isFinite(t)?t<=0?`pending`:t<1e6?Math.round(t/1e3)+` µs`:t<1e9?(t/1e6).toFixed(2)+` ms`:(t/1e9).toFixed(2)+` s`:`-`}function kN(e){if(e==null||e===``)return`status-unknown`;let t=Number(e);return Number.isFinite(t)?t>=500?`status-error`:t>=400?`status-warning`:t>=300?`status-neutral`:`status-success`:`status-unknown`}function AN(e){if(!e||!e._live||!e._live_pending)return!1;let t=String(e._live_state||``).trim();if(t===`audit.completed`||t===`audit.flushed`||t===`audit.detail`)return!1;if(e._response_partial)return!0;if(e.status_code!==null&&e.status_code!==void 0&&e.status_code!==``||Number(e.duration_ns||0)>0||e.error_type||e.error_message)return!1;let n=e.data||{};return!(n.response_headers||n.response_body||n.error_message)}function jN(e){let t=e&&e.data&&e.data.failover;return!t||typeof t!=`object`||Array.isArray(t)?null:String(t.target_model||t.targetModel||``).trim()||null}function MN(e){return(e&&e.data&&Array.isArray(e.data.attempts)?e.data.attempts:[]).map((e,t)=>({...e,seq:Number(e&&e.seq||t+1)})).sort((e,t)=>e.seq-t.seq)}function NN(e){let t=MN(e);return t.length>1||t.some(e=>!(e&&e.success))}function PN(e){if(!e)return`-`;let t=e.status_code||e.status;return t?String(t):e.success?`ok`:`error`}function FN(e){return String(e&&e.kind||``).trim()||`attempt`}function IN(e){if(!e)return`-`;let t=String(e.provider_name||``).trim(),n=String(e.provider_type||e.provider||``).trim();return t&&n&&t!==n?t+` (`+n+`)`:t||n||`-`}function LN(e){return String(e&&e.model||``).trim()||`-`}function RN(e){let t=MN(e);return t.length>1||t.some(e=>!(e&&e.success))?t:[]}function zN(e){return MN(e).length+`×`}function BN(e){let t=MN(e),n=t.filter(e=>!(e&&e.success)).length,r=t.length===1?`attempt`:`attempts`,i=t.length+` provider `+r;return n>0?i+` · `+n+` failed`:i}function VN(e){if(!e)return``;let t=[`#`+Number(e.seq||0)],n=FN(e);n&&n!==`attempt`&&t.push(n),t.push(PN(e));let r=IN(e);r&&r!==`-`&&t.push(r);let i=LN(e);return i&&i!==`-`&&t.push(i),t.push(e.success?`succeeded`:`failed`),t.join(` · `)}function HN(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t&&t.response_body!=null?t.response_body:null}return t.response_body!=null&&t.response_body!==``?t.response_body:null}function UN(e){if(!e||e.success)return``;let t=String(e.error_message||``).trim(),n=String(e.error_code||``).trim(),r=String(e.error_type||``).trim();return t&&n?n+`: `+t:t||n||r||`Provider attempt failed`}function WN(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t?t.response_headers:null}return t.response_headers||null}function GN(e){let t=Number(e&&e.status_code);return Number.isFinite(t)&&t>0?t:null}function KN(e,t){let n=!!(t&&t.success),r=e&&e.data?e.data:null,i=HN(e,t),a=WN(e,t),o=UN(t),s=i!=null&&i!==``,c=FN(t),l=MN(e).length<=1;return{title:`Response`,direction:`response`,seq:l?0:Number(t&&t.seq||0),kind:l||c===`attempt`?``:c,statusCode:l?null:GN(t),layout:`split`,entry:e,copyHeaders:a,copyBody:i,showErrorMessage:!!o,errorMessage:o,showHeaders:!!a,headers:a,showBody:s,body:i,showEmpty:!o&&!s&&!a,emptyMessage:`No response was captured for this attempt.`,showTooLarge:!!(n&&r&&r.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function qN(e){return e&&e.data&&Array.isArray(e.data.request_revisions)?e.data.request_revisions:[]}function JN(e){return qN(e).filter(e=>!(e&&e.no_change))}function YN(e){return qN(e).filter(e=>e&&e.no_change).map(e=>{let t=String(e.rewriter||`rewriter`);return{id:`step-`+Number(e.seq||0),rewriter:t,label:t+`: no change`,title:t+` ran and forwarded the request unchanged`}})}function XN(e){let t=Number(e&&e.bytes_before),n=Number(e&&e.bytes_after);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n>=t)return``;let r=(1-n/t)*100;return`-`+(r>=10?String(Math.round(r)):r.toFixed(1))+`%`}function ZN(e,t){let n=t&&t.body,r=n!=null&&n!==``,i=JN(e).length<=1,a={rewriter:t&&t.rewriter||``,bytes:Number(t&&t.bytes_before||0)+` → `+Number(t&&t.bytes_after||0)};return t&&t.detail!=null&&(a.detail=t.detail),{title:`Rewritten`,direction:`request`,seq:i?0:Number(t&&t.seq||0),kind:t&&t.rewriter?String(t.rewriter):``,savingsLabel:XN(t),layout:`split`,entry:e,copyHeaders:a,copyBody:n,showErrorMessage:!1,errorMessage:null,showHeaders:!0,headers:a,headersTitle:`What changed`,showBody:r,body:n,showEmpty:!1,emptyMessage:``,showTooLarge:!r,tooLargeMessage:`Rewritten body not captured (body logging disabled or body too large).`}}function QN(e){let t=e&&e.usage;return!t||typeof t!=`object`?null:t}function $N(e){let t=QN(e);return Number(t&&t.cached_input_tokens||0)>0}function eP(e){let t=QN(e),n=Number(t&&t.input_tokens||0),r=Number(t&&t.cached_input_tokens||0);return!Number.isFinite(n)||n<=0||!Number.isFinite(r)||r<=0?0:Math.max(0,Math.min(100,r/n*100))}function tP(e){let t=QN(e);if(!t)return``;let n=Number(t.input_tokens||0),r=Number(t.cached_input_tokens||0);return n<=0?ts(r)+` cached`:eP(e).toFixed(1)+`% cached`}function nP(e){return $N(e)?tP(e):``}function rP(e,t){let n=QN(e);if(!n||!e||!e.data||!e.data.request_body)return null;let r=Number(n.estimated_cached_characters||0);if(!Number.isFinite(r)||r<=0||typeof t!=`function`)return null;let i=t(e.data.request_body);return!Array.isArray(i)||i.length===0?null:{characters:r,segments:i}}function iP(e,t){let n=e&&e.data?e.data:null,r=!n||!n.request_headers&&!n.request_body,i=r&&AN(e);return{title:`Request`,direction:`request`,layout:`split`,entry:e,copyHeaders:n&&n.request_headers,copyBody:n&&n.request_body,showErrorMessage:!1,errorMessage:null,showHeaders:!!(n&&n.request_headers),headers:n&&n.request_headers,showBody:!!(n&&n.request_body),body:n&&n.request_body,bodyCacheRatioLabel:nP(e),promptCacheHighlight:rP(e,t),noChangeSteps:YN(e),showEmpty:r&&!i,emptyMessage:`Request details were not captured.`,showPending:i,pendingMessage:`Waiting for request data…`,showTooLarge:!!(n&&n.request_body_too_big_to_handle),tooLargeMessage:`Request body was too large to capture.`}}function aP(e){let t=e&&e.data?e.data:null,n=aN(e),r=!t||!n&&!t.response_headers&&!t.response_body,i=r&&AN(e);return{title:`Response`,direction:`response`,layout:`split`,entry:e,copyHeaders:t&&t.response_headers,copyBody:t&&t.response_body,showErrorMessage:!!n,errorMessage:n,showHeaders:!!(t&&t.response_headers),headers:t&&t.response_headers,showBody:!!(t&&t.response_body),body:t&&t.response_body,streaming:!!(e&&e._response_partial&&t&&t.response_body)&&AN(e),showEmpty:r&&!i,emptyMessage:`Response details were not captured.`,showPending:i,pendingMessage:`Response in progress…`,showTooLarge:!!(t&&t.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function oP(e,t){let n=[{id:`request`,pane:iP(e,t)}];return JN(e).forEach(t=>{n.push({id:`revision-`+Number(t&&t.seq||0),pane:ZN(e,t)})}),NN(e)?MN(e).forEach(t=>{n.push({id:`response-`+Number(t&&t.seq||0),pane:KN(e,t)})}):n.push({id:`response`,pane:aP(e)}),n}function sP(e){if(!NN(e))return`response`;let t=MN(e),n=null;return t.forEach(e=>{e&&e.success&&(n=e)}),n||=t[t.length-1],n?`response-`+Number(n.seq||0):`request`}function cP(e,t,n){return e&&(Array.isArray(n)?n:oP(t)).some(t=>t.id===e)?e:sP(t)}function lP(e,t,n){if(!t||!t.length)return null;let r=t.indexOf(n);r<0&&(r=0);let i;switch(e){case`ArrowRight`:case`ArrowDown`:i=(r+1)%t.length;break;case`ArrowLeft`:case`ArrowUp`:i=(r-1+t.length)%t.length;break;case`Home`:i=0;break;case`End`:i=t.length-1;break;default:return null}return t[i]}var uP=100;function dP(){return{entries:[],total:0,limit:25,offset:0}}var fP=new class{#e=k(j({}));get auditExpandedEntries(){return I(this.#e)}set auditExpandedEntries(e){A(this.#e,e,!0)}#t=k(j({}));get auditExpandedThreads(){return I(this.#t)}set auditExpandedThreads(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}auditFetchToken=0;get auditLog(){return yS.auditLog}set auditLog(e){yS.auditLog=e}get auditSearch(){return yS.auditSearch}set auditSearch(e){yS.auditSearch=e}get auditMethod(){return yS.auditMethod}set auditMethod(e){yS.auditMethod=e}get auditStatusCode(){return yS.auditStatusCode}set auditStatusCode(e){yS.auditStatusCode=e}get auditStream(){return yS.auditStream}set auditStream(e){yS.auditStream=e}get auditGroupSessions(){return yS.auditGroupSessions}liveFilters(){return{search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream,customStartDate:Ds.customStartDate,customEndDate:Ds.customEndDate}}toggleAuditGroupSessions(){yS.auditGroupSessions=!yS.auditGroupSessions,Ea(`gomodel_audit_group_sessions`,yS.auditGroupSessions),this.auditExpandedThreads={},yS.auditThreadChildren={},this.fetchAuditLog(!0)}async fetchAuditLog(e){let t=++this.auditFetchToken;this.loading=!0;try{e&&(this.auditLog.offset=0);let n=this.auditGroupSessions,r=uN({dateQuery:Ds.queryStr(),limit:this.auditLog.limit,offset:this.auditLog.offset,search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream}),i=await uo((n?`/admin/audit/sessions?`:`/admin/audit/log?`)+r,{label:`audit log`});if(i.stale||t!==this.auditFetchToken)return;if(!i.ok){this.auditLog=dP();return}let a=n?hN(i.data):i.data,o=(n?TN:wN)(a,this.auditLog&&this.auditLog.entries,this.liveFilters());Array.isArray(o.entries)||(o.entries=[]),this.auditLog=o,this.auditExpandedThreads=vN(this.auditExpandedThreads,o.entries),yS.auditThreadChildren=vN(yS.auditThreadChildren,o.entries);let s=[...o.entries,...this.loadedThreadChildren()];this.auditExpandedEntries=DN(this.auditExpandedEntries,s);try{await XM.prefetchAuditWorkflows(s)}catch(e){console.error(`Failed to prefetch audit workflows:`,e)}}catch(e){if(console.error(`Failed to fetch audit log:`,e),t!==this.auditFetchToken)return;this.auditLog=dP()}finally{t===this.auditFetchToken&&(this.loading=!1)}}loadedThreadChildren(){let e=yS.auditThreadChildren||{};return Object.keys(e).flatMap(t=>Array.isArray(e[t]&&e[t].entries)?e[t].entries:[])}isThreadExpanded(e){return!!(e&&this.auditExpandedThreads[e])}threadChildren(e){return e&&yS.auditThreadChildren[e]||null}async toggleThread(e){let t=fN(e);if(!t)return;let n=!this.isThreadExpanded(t);this.auditExpandedThreads=_N(this.auditExpandedThreads,t);let r=yS.auditThreadChildren[t];n&&!(r&&(r.loaded||r.loading))&&await this.fetchThreadEntries(e)}async fetchThreadEntries(e){let t=fN(e);if(!t)return;let n=yS.auditThreadChildren[t];yS.auditThreadChildren={...yS.auditThreadChildren,[t]:{loading:!0,loaded:!1,entries:n&&Array.isArray(n.entries)?n.entries:[],total:Number(n&&n.total||0)}};let r=()=>{let e={...yS.auditThreadChildren},n=e[t],r=n&&Array.isArray(n.entries)?n.entries:[];r.length>0?e[t]={loading:!1,loaded:!1,entries:r,total:r.length}:(delete e[t],this.auditExpandedThreads[t]&&(this.auditExpandedThreads=_N(this.auditExpandedThreads,t))),yS.auditThreadChildren=e};try{let n=await uo(`/admin/audit/log?`+dN({sessionId:t,limit:uP}),{label:`audit session`});if(n.stale){r();return}if(!n.ok)throw Error(`audit session fetch failed`);let i=yS.auditThreadChildren[t],a=this.auditLog.entries.find(e=>fN(e)===t),o=gN(i,n.data.entries,a?[a]:[e]);yS.auditThreadChildren={...yS.auditThreadChildren,[t]:{loading:!1,loaded:!0,entries:o.entries,total:Number(n.data.total||0)+o.preservedCount}}}catch(e){console.error(`Failed to fetch audit session entries:`,e),r()}}clearAuditFilters(){this.auditSearch=``,this.auditMethod=``,this.auditStatusCode=``,this.auditStream=``,this.fetchAuditLog(!0)}auditLogNextPage(){this.auditLog.offset+this.auditLog.limit0&&(this.auditLog.offset=Math.max(0,this.auditLog.offset-this.auditLog.limit),this.fetchAuditLog(!1))}isAuditEntryExpanded(e){let t=yN(e);return t?!!(this.auditExpandedEntries&&this.auditExpandedEntries[t]):!1}toggleAuditEntryExpanded(e){this.auditExpandedEntries=EN(this.auditExpandedEntries,e);let t=this.isAuditEntryExpanded(e);return t&&typeof yS.fetchAuditEntryDetail==`function`&&yS.fetchAuditEntryDetail(e),t}expandAuditEntry(e){this.isAuditEntryExpanded(e)||this.toggleAuditEntryExpanded(e)}};yS.fetchAuditLog=e=>fP.fetchAuditLog(e),yS.isAuditEntryExpanded=e=>fP.isAuditEntryExpanded(e);var pP=R(`
`);function mP(e,t){E(t,!0);let n=sC(()=>fP.fetchAuditLog(!0));An(()=>n.cancel);var r=pP(),i=M(r);oC(M(i),{id:`audit-filter-search`,placeholder:`Search by request ID, model, provider, path, user path, or error...`,label:`Search by request ID, model, provider, path, user path, or error`,get oninput(){return n},get value(){return fP.auditSearch},set value(e){fP.auditSearch=e}}),T(i);var a=P(i,2),o=M(a),s=M(o);s.value=s.__value=``;var c=P(s);c.value=c.__value=`GET`;var l=P(c);l.value=l.__value=`POST`;var u=P(l);u.value=u.__value=`PUT`;var d=P(u);d.value=d.__value=`PATCH`;var f=P(d);f.value=f.__value=`DELETE`,T(o);var p=P(o,2),m=M(p);m.value=m.__value=``;var h=P(m);h.value=h.__value=`200`;var g=P(h);g.value=g.__value=`201`;var _=P(g);_.value=_.__value=`400`;var v=P(_);v.value=v.__value=`401`;var y=P(v);y.value=y.__value=`403`;var b=P(y);b.value=b.__value=`404`;var x=P(b);x.value=x.__value=`429`;var S=P(x);S.value=S.__value=`500`;var C=P(S);C.value=C.__value=`502`;var w=P(C);w.value=w.__value=`503`;var ee=P(w);ee.value=ee.__value=`504`,T(p);var te=P(p,2),ne=M(te);ne.value=ne.__value=``;var re=P(ne);re.value=re.__value=`true`;var ie=P(re);ie.value=ie.__value=`false`,T(te);var ae=P(te,2);K(M(ae),{name:`x`,class:`table-icon-svg`}),Ue(2),T(ae),T(a),T(r),L(`change`,o,()=>fP.fetchAuditLog(!0)),Gi(o,()=>fP.auditMethod,e=>fP.auditMethod=e),L(`change`,p,()=>fP.fetchAuditLog(!0)),Gi(p,()=>fP.auditStatusCode,e=>fP.auditStatusCode=e),L(`change`,te,()=>fP.fetchAuditLog(!0)),Gi(te,()=>fP.auditStream,e=>fP.auditStream=e),L(`click`,ae,()=>fP.clearAuditFilters()),z(e,r),D()}Hr([`change`,`click`]);var hP=R(`Live stream connecting…`),gP=R(` `),_P=R(`Live`),vP=R(` `);function yP(e,t){E(t,!0);let n=O(()=>yS.auditLivePauseReason()),r=O(()=>yS.liveLogsStreaming&&!I(n));var i=Qr(),a=N(i),o=e=>{var t=vP(),i=M(t);let a;var o=P(i,2),s=e=>{z(e,hP())},c=e=>{var t=gP(),r=M(t,!0);T(t),F(e=>B(r,e),[()=>hS(I(n))]),z(e,t)},l=e=>{z(e,_P())};V(o,e=>{yS.liveLogsStreaming?I(n)?e(c,1):e(l,-1):e(s)}),T(t),F(()=>a=U(i,1,`live-dot svelte-tve6yv`,null,a,{"is-streaming":I(r)})),z(e,t)},s=O(()=>go.liveLogsVisible());V(a,e=>{I(s)&&e(o)}),z(e,i),D()}var bP=R(` `),xP=R(``);function SP(e,t){E(t,!0);let n=O(()=>[{key:`provider`,text:ds(t.entry)||`-`},{key:`model`,text:t.entry.requested_model||t.entry.model||`-`,mono:!0},{key:`user_path`,text:t.entry.user_path,mono:!0},{key:`request_id`,text:`request_id: `+(t.entry.request_id||`-`),mono:!0},{key:`ip`,text:t.entry.client_ip&&`ip: `+t.entry.client_ip,mono:!0},{key:`auth_key_id`,text:t.entry.auth_key_id&&`auth_key_id: `+t.entry.auth_key_id,mono:!0},{key:`alias`,text:t.entry.alias_used&&`alias`,class:`audit-alias-badge`},{key:`resolved`,text:t.entry.alias_used&&t.entry.resolved_model&&`resolved: `+ms(t.entry),mono:!0},{key:`failover`,text:jN(t.entry)&&`failover: `+jN(t.entry),mono:!0},{key:`stream`,text:t.entry.stream&&`stream`},{key:`error_type`,text:t.entry.error_type}].filter(e=>!!e.text));var r=xP(),i=P(M(r),2);H(i,21,()=>I(n),e=>e.key,(e,t)=>{var n=bP(),r=M(n,!0);T(n),F(()=>{U(n,1,Fi([`provider-badge`,I(t).class,{mono:I(t).mono}]),`svelte-hyopt0`),B(r,I(t).text)}),z(e,n)}),T(i),T(r),z(e,r),D()}var CP=R(``),wP=R(` `);function TP(e,t){E(t,!0);let n=O(()=>RN(t.entry)),r=O(()=>I(n).length>0?BN(t.entry):``),i=O(()=>I(n).length>0?zN(t.entry):``);var a=Qr(),o=N(a),s=e=>{var a=wP(),o=M(a);H(o,21,()=>I(n),e=>t.entry.id+`-pip-`+e.seq,(e,t)=>{var n=CP();let r;F(e=>{r=U(n,1,`audit-attempt-pip svelte-1eu22xn`,null,r,{"audit-attempt-success":!!(I(t)&&I(t).success),"audit-attempt-error":!(I(t)&&I(t).success)}),W(n,`title`,e)},[()=>VN(I(t))]),z(e,n)}),T(o);var s=P(o,2),c=M(s,!0);T(s),T(a),F(()=>{W(a,`title`,I(r)),W(a,`aria-label`,I(r)),B(c,I(i))}),z(e,a)};V(o,e=>{I(n).length>0&&e(s)}),z(e,a),D()}var EP=new Set([`instructions`,`messages`,`input`,`previous_response_id`,`choices`,`output`]);function DP(e){if(e==null)return``;if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>typeof e==`string`?e:!e||typeof e!=`object`?``:typeof e.text==`string`?e.text:typeof e.output_text==`string`?e.output_text:``).filter(Boolean).join(` +`).trim();if(typeof e==`object`){if(typeof e.text==`string`)return e.text.trim();try{return JSON.stringify(e,null,2)}catch{return``}}return String(e).trim()}function OP(e){if(e==null)return[];if(typeof e==`string`)return e?[e]:[];if(Array.isArray(e))return e.flatMap(e=>typeof e==`string`?e?[e]:[]:!e||typeof e!=`object`?[]:typeof e.text==`string`?e.text?[e.text]:[]:typeof e.output_text==`string`&&e.output_text?[e.output_text]:[]);if(typeof e==`object`)return typeof e.text==`string`&&e.text?[e.text]:[];let t=String(e);return t?[t]:[]}function kP(e){if(e==null)return[];if(typeof e==`string`){let t=e.trim();return t?[{role:`user`,text:t}]:[]}if(!Array.isArray(e)){let t=DP(e);return t?[{role:`user`,text:t}]:[]}return e.map(e=>{if(!e||typeof e!=`object`)return null;let t=String(e.role||`user`).toLowerCase(),n=DP(e.content);return n?{role:t,text:n}:null}).filter(Boolean)}function AP(e){return!e||typeof e!=`object`?``:Array.isArray(e.content)?e.content.map(e=>e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(` +`).trim():DP(e.content)}function jP(e){if(!e||typeof e!=`object`)return[];let t=[];return t.push(...OP(e.instructions)),Array.isArray(e.messages)&&e.messages.forEach(e=>{!e||typeof e!=`object`||t.push(...OP(e.content))}),typeof e.input==`string`?t.push(e.input):Array.isArray(e.input)?e.input.forEach(e=>{!e||typeof e!=`object`||(t.push(...OP(e.content)),typeof e.text==`string`&&t.push(e.text))}):e.input&&typeof e.input==`object`&&(t.push(...OP(e.input.content)),typeof e.input.text==`string`&&t.push(e.input.text)),t.map(e=>String(e||``)).filter(e=>e.length>0)}var MP=e=>DP(e);function NP(e){if(!e||!e.data)return``;let t=eN(e.data.response_body,0,MP);if(t)return t;let n=e.data.error_message;if(n==null)return``;if(typeof n==`string`){let e=n.trim();return e?eN(QM(e),0,MP)||e:``}return eN(n,0,MP)||DP(n)}function PP(e){return Array.isArray(e)?e.some(e=>!e||typeof e!=`object`?!1:e.type===`message`||e.role===`assistant`||e.role===`user`||e.role===`system`?!0:Array.isArray(e.content)?e.content.some(e=>!e||typeof e!=`object`?!1:typeof e.text==`string`||e.type===`output_text`||e.type===`input_text`):!1):!1}function FP(e){if(!e)return!1;let t=String(e).toLowerCase();return t===`/v1/embeddings`||t===`/v1/embeddings/`||t.startsWith(`/v1/embeddings?`)||t.startsWith(`/v1/embeddings/`)}function IP(e){return e?!!RP(e):!1}function LP(e){let t=String(e||``).trim().split(`?`)[0].replace(/\/+$/,``).toLowerCase();return t.startsWith(`/v1/`)?t.slice(3):t}function RP(e){switch(LP(e)){case`/chat/completions`:return`chat`;case`/responses`:return`responses`;case`/messages`:return`messages`;default:return``}}function zP(e){if(!e||typeof e!=`object`)return null;try{return JSON.parse(JSON.stringify(e))}catch{return null}}function BP(e,t){if(!t||typeof t!=`object`)return;let n=e[e.length-1];try{if(n&&JSON.stringify(n)===JSON.stringify(t))return}catch{}e.push(t)}function VP(e){let t=RP(e&&e.path),n=e&&e.data&&e.data.request_body;return!t||!n||typeof n!=`object`?!1:t!==`responses`||(e.data&&e.data.response_body&&typeof e.data.response_body.id==`string`?e.data.response_body.id.trim():``)!==``||bF(n)!==``}function HP(e,t){let n=String(t||``).trim(),r=RP(e&&e.path),i=zP(e&&e.data&&e.data.request_body);if(!n||!r||!i)return null;let a=e&&e.data?e.data.response_body:null;if(r===`responses`){let e=a&&typeof a.id==`string`?a.id.trim():``,t=bF(i);return!e&&!t?null:(i.input=n,e&&!t?i.previous_response_id=e:delete i.previous_response_id,i)}let o=Array.isArray(i.messages)?i.messages:[];if(r===`chat`){let e=a&&Array.isArray(a.choices)?a.choices[0]:null;e&&e.message&&BP(o,zP(e.message)),o.push({role:`user`,content:n})}else a&&a.content!==void 0&&BP(o,{role:String(a.role||`assistant`),content:zP(a.content)||a.content}),o.push({role:`user`,content:n});return i.messages=o,i}var UP=new Set(`authorization.proxy-authorization.cookie.content-type.content-length.host.accept.connection.accept-encoding.content-encoding.transfer-encoding.user-agent.date.expect.upgrade.via.te.trailer.keep-alive.origin.referer.forwarded.x-real-ip.traceparent.tracestate.x-request-id.idempotency-key.x-idempotency-key.x-gomodel-timezone.x-gomodel-interaction-parent`.split(`.`));function WP(e,t,n=``){let r=e&&e.data&&e.data.request_headers,i={};return r&&typeof r==`object`&&Object.keys(r).forEach(e=>{let t=String(e).toLowerCase(),n=String(r[e]==null?``:r[e]);!e||!n||n===`[REDACTED]`||UP.has(t)||t.startsWith(`sec-`)||t.startsWith(`cf-`)||t.startsWith(`x-forwarded-`)||(i[e]=n)}),i[`X-GoModel-Interaction-Parent`]=String(t||e&&e.id||``).trim(),String(n||``).trim()&&(i[`X-Request-ID`]=String(n).trim()),i}function GP(e,t){let n=String(t||``).trim();return!n||!Array.isArray(e)?null:e.find(e=>String(e&&e.request_id||``).trim()===n)||null}function KP(e,t,n,r,i){let a=Array.isArray(e)?e:[],o=String(i&&i.id||``).trim(),s=String(i&&i.request_id||``).trim(),c=String(i&&i.session_id||``).trim(),l=String(r||``).trim(),u=qP(i),d=a.some(e=>o&&String(e&&e.id||``).trim()===o||s&&String(e&&e.request_id||``).trim()===s),f=!!l&&s===l,p=!!n&&c===String(n).trim(),m=!!u&&(u===String(t||``).trim()||a.some(e=>String(e&&e.id||``).trim()===u)),h=d||f||!l&&(p||m);return{accepted:h,submittedChild:f,followUpRequestID:h&&f&&o?``:l}}function qP(e){let t=e&&e.data&&e.data.request_headers;if(!t||typeof t!=`object`)return``;let n=Object.keys(t).find(e=>e.toLowerCase()===`x-gomodel-interaction-parent`);return n?String(t[n]||``).trim():``}function JP(e,t){return!Array.isArray(e)||!t?null:e.find(e=>String(e&&e.id||``)===String(t))||null}function YP(e){return!Array.isArray(e)||e.length===0?null:e.reduce((e,t)=>e?xF(t,e)>=0?t:e:t,null)}function XP(e,t){let n=new Set(Array.isArray(t)?t.map(String):[]);return YP((Array.isArray(e)?e:[]).filter(e=>{let t=String(e&&e.id||``);return n.has(t)&&e&&e.data&&e.data.request_body!=null}))}function ZP(e,t){let n=YP(e);return!!n&&String(n.id||``)===String(t||``)}function QP(e){if(e&&e.conversation_payload)return!0;let t=e&&e.data?e.data.request_body:null,n=e&&e.data?e.data.response_body:null,r=t&&(Array.isArray(t.messages)||t.input!==void 0||typeof t.instructions==`string`||typeof t.previous_response_id==`string`),i=n&&(Array.isArray(n.choices)||PP(n.output));return!!(r||i)}function $P(e){return!e||FP(e.path)?!1:IP(e.path)||QP(e)}function eF(e){let t=0,n=!1,r=!1,i=String(e||``);for(let e=0;e0&&a+1`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`)}function iF(e){return!!(e&&typeof e==`object`&&e.__audio__===!0)}function aF(e){let t=Number(e||0);if(!Number.isFinite(t)||t<=0)return`0 B`;let n=[`B`,`KB`,`MB`,`GB`],r=0,i=t;for(;i>=1024&&r`
`+rF(t)+``+rF(sF(e[t]))+`
`);return t.length?``:``}function lF(e){let t=oF(e.content_type),n=rF(t+` · `+aF(e.bytes)),r=cF(e.meta);if(e.stored&&e.encoding===`base64`&&e.data){let i=String(e.data).replace(/[^A-Za-z0-9+/=]/g,``);return`
`+n+`
`+r+`
`}let i=e.too_large?`Audio too large to store.`:`Audio not logged. Set LOGGING_LOG_AUDIO_BODIES=true to capture playable audio.`;return`
`+n+`
`+rF(i)+`
`+r+`
`}function uF(e){try{return JSON.stringify(String(e)).slice(1,-1)}catch{return``}}function dF(e){if(!e||typeof e!=`object`)return null;let t=Number(e.characters||0);if(!Number.isFinite(t)||t<=0)return null;let n=Array.isArray(e.segments)?e.segments.map(e=>String(e||``)).filter(Boolean):[];return n.length===0?null:{remaining:Math.floor(t),segments:n,segmentIndex:0}}function fF(e,t){if(!t||t.remaining<=0||t.segmentIndex>=t.segments.length)return rF(e);let n=``,r=0,i=0;for(;t.remaining>0&&t.segmentIndex`+rF(l)+``,r=s+l.length,i=s+o.length,t.remaining-=c,c>=a.length){t.segmentIndex++;continue}break}return n?n+rF(e.slice(r)):rF(e)}function pF(e,t,n){let r=n&&typeof n.formatJSON==`function`?n.formatJSON:e=>String(e),i=n&&typeof n.canShowConversation==`function`?n.canShowConversation:()=>!1,a=dF(n&&n.promptCacheHighlight),o=r(t);if(!o||o===`Not captured`)return rF(o);if(!i(e))return o.split(` +`).map(e=>fF(e,a)).join(` +`);let s=o.split(` +`),c=[],l=0;for(;lfF(e,a)).join(` +`);c.push(``+o+``),l=r+1;continue}c.push(fF(e,a)),l++}return c.join(` +`)}function mF(e){let t=String(e||``).toLowerCase();return t===`system`||t===`developer`?{role:`system`,label:`System Prompt`,className:`role-system`}:t===`assistant`?{role:`assistant`,label:`Agent`,className:`role-assistant`}:t===`error`?{role:`error`,label:`Error`,className:`role-error`}:t===`function_call`?{role:`function_call`,label:`Function Call`,className:`role-function-call`}:t===`function_result`?{role:`function_result`,label:`Function Result`,className:`role-function-result`}:{role:`user`,label:`User`,className:`role-user`}}function hF(e,t,{timestamp:n,entryID:r,isAnchor:i,isAfterAnchor:a,index:o,toolCalls:s,functionName:c}){let l=mF(e);return{uid:r+`-`+o,entryID:r,timestamp:n,text:t,role:l.role,roleLabel:l.label,roleClass:l.className,isAnchor:i,isAfterAnchor:a,toolCalls:Array.isArray(s)&&s.length>0?s:null,functionName:c||``}}function gF(e){return Array.isArray(e)?e.map(e=>{if(!e)return null;let t=e.function||e;return{name:t.name||e.name||``,arguments:t.arguments||e.arguments||``}}).filter(Boolean):[]}function _F(e,t,n){if(t&&Array.isArray(t.messages)&&t.messages.forEach(t=>{!t||!Array.isArray(t.tool_calls)||t.tool_calls.forEach(t=>{if(!t)return;let n=t.id||``,r=(t.function||t).name||t.name||``;n&&r&&(e[n]=r)})}),t&&Array.isArray(t.input)&&t.input.forEach(t=>{if(!t||typeof t!=`object`||t.type!==`function_call`)return;let n=t.id||t.call_id||``,r=t.name||``;n&&r&&(e[n]=r)}),n&&Array.isArray(n.choices)){let t=n.choices[0];t&&t.message&&Array.isArray(t.message.tool_calls)&&t.message.tool_calls.forEach(t=>{if(!t)return;let n=t.id||``,r=(t.function||t).name||t.name||``;n&&r&&(e[n]=r)})}n&&Array.isArray(n.output)&&n.output.forEach(t=>{if(!t||t.type!==`function_call`)return;let n=t.id||t.call_id||``,r=t.name||``;n&&r&&(e[n]=r)})}function vF(e){return Array.isArray(e)?`[`+e.map(vF).join(`,`)+`]`:e&&typeof e==`object`?`{`+Object.keys(e).sort().map(t=>JSON.stringify(t)+`:`+vF(e[t])).join(`,`)+`}`:JSON.stringify(e)}function yF(e){if(!e||typeof e!=`object`)return null;let t=[];if(e.system!==void 0&&t.push({system:e.system}),e.instructions!==void 0&&t.push({instructions:e.instructions}),Array.isArray(e.messages))t.push(...e.messages);else if(Array.isArray(e.input)&&e.previous_response_id==null&&e.conversation==null)t.push(...e.input);else return null;return t.map(vF)}function bF(e){let t=e&&e.conversation;return typeof t==`string`?t.trim():t&&typeof t.id==`string`?t.id.trim():``}function xF(e,t){let n=new Date(e&&e.timestamp).getTime(),r=new Date(t&&t.timestamp).getTime();if(Number.isFinite(n)&&Number.isFinite(r)&&n!==r)return n-r;let i=String(e&&e.timestamp||``).localeCompare(String(t&&t.timestamp||``));if(i!==0)return i;let a=String(e&&e.id||``),o=String(t&&t.id||``);return ao)}function SF(e,t){if(!Array.isArray(e)||e.length===0)return{messages:[],entryIDs:[]};let n=[...e].sort(xF),r={};n.forEach(e=>{let t=e.data&&e.data.request_body?e.data.request_body:null,n=e.data&&e.data.response_body?e.data.response_body:null;_F(r,t,n)});let i=[],a=new Set,o=new Set,s=new Set,c=[],l=null,u=0,d=n.findIndex(e=>e.id===t),f=e=>JSON.stringify({role:e.role,text:e.text,toolCalls:e.toolCalls,functionName:e.functionName});return n.forEach((e,n)=>{let p=e.id===t,m=d>=0&&n>d,h=e.timestamp,g=e.data&&e.data.request_body?e.data.request_body:null,_=e.data&&e.data.response_body?e.data.response_body:null,v=i.length,y=(t,n,{toolCalls:r,functionName:i}={})=>hF(t,n,{timestamp:h,entryID:e.id,isAnchor:p,isAfterAnchor:m,index:++u,toolCalls:r,functionName:i});if(g&&g.system!==void 0){let e=DP(g.system);e&&i.push(y(`system`,e))}if(g&&g.instructions!==void 0){let e=DP(g.instructions);e&&i.push(y(`system`,e))}g&&Array.isArray(g.messages)&&g.messages.forEach(e=>{if(!e)return;let t=(e.role||`user`).toLowerCase();if(t===`tool`){let t=DP(e.content),n=e.name||r[e.tool_call_id]||``;t&&i.push(y(`function_result`,t,{functionName:n}));return}if(t===`assistant`){let n=DP(e.content),r=gF(e.tool_calls);(n||r.length>0)&&i.push(y(t,n,{toolCalls:r}));return}let n=DP(e.content);n&&i.push(y(t,n))}),g&&g.input!==void 0&&(Array.isArray(g.input)?g.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call_output`){let t=typeof e.output==`string`?e.output:DP(e.output);t&&i.push(y(`function_result`,t,{functionName:r[e.call_id]||``}))}else if(e.type===`function_call`)i.push(y(`function_call`,``,{toolCalls:[{name:e.name||``,arguments:e.arguments||``}]}));else if(e.role){let t=String(e.role).toLowerCase(),n=DP(e.content);n&&i.push(y(t,n))}}}):kP(g.input).forEach(e=>{e.text&&i.push(y(e.role,e.text))}));let b=i.splice(v),x=b.map(f),S=yF(g),C=S!==null,w=qP(e),ee=!!w&&a.has(w),te=String(g&&g.previous_response_id||``).trim(),ne=bF(g),re=ee||!!te&&o.has(te)||!!ne&&s.has(ne);if(m){let e=C&&l&&l.length>0&&l.every((e,t)=>S[t]===e);if(C&&!e&&!ee||!C&&!re)return}p&&C&&(l=[...S]);let ie=String(e.id||``).trim();p&&(a.clear(),o.clear(),s.clear()),ie&&(p||m)&&a.add(ie),ne&&s.add(ne);let ae=0;for(;ae0;){let t=c.slice(-e),n=x.slice(0,e);if(t.every((e,t)=>e===n[t]))break;e--}i.push(...b.slice(e)),c.push(...x.slice(e))}if(_&&Array.isArray(_.choices)){let e=_.choices[0];if(e&&e.message){let t=(e.message.role||`assistant`).toLowerCase(),n=DP(e.message.content),r=gF(e.message.tool_calls);if(n||r.length>0){let e=y(t,n,{toolCalls:r});i.push(e),c.push(f(e))}}}if(_&&Array.isArray(_.output)&&_.output.forEach(e=>{if(!e)return;if(e.type===`function_call`){let t=y(`function_call`,``,{toolCalls:[{name:e.name||``,arguments:e.arguments||``}]});i.push(t),c.push(f(t));return}let t=(e.role||`assistant`).toLowerCase(),n=AP(e);if(n){let e=y(t,n);i.push(e),c.push(f(e))}}),_&&_.content!==void 0&&!Array.isArray(_.choices)&&!Array.isArray(_.output)){let e=String(_.role||`assistant`).toLowerCase(),t=DP(_.content);if(t){let n=y(e,t);i.push(n),c.push(f(n))}}let oe=NP(e);oe&&i.push(y(`error`,oe));let se=String(_&&_.id||``).trim();se&&o.add(se)}),{messages:i,entryIDs:[...a]}}function CF(e){return e.role===`function_call`?(e.toolCalls||[]).map(function(e){let t=e.arguments||``;try{t=JSON.stringify(JSON.parse(t),null,2)}catch{}return e.name+`(`+t+`)`}).join(` + +`):e.text||``}var wF=600*1e3,TF=15*1e3,EF=250,DF=class{#e=k(!1);get conversationOpen(){return I(this.#e)}set conversationOpen(e){A(this.#e,e,!0)}#t=k(!1);get conversationLoading(){return I(this.#t)}set conversationLoading(e){A(this.#t,e,!0)}#n=k(``);get conversationError(){return I(this.#n)}set conversationError(e){A(this.#n,e,!0)}#r=k(``);get conversationAnchorID(){return I(this.#r)}set conversationAnchorID(e){A(this.#r,e,!0)}#i=k(j([]));get conversationEntries(){return I(this.#i)}set conversationEntries(e){A(this.#i,e,!0)}#a=k(j([]));get conversationMessages(){return I(this.#a)}set conversationMessages(e){A(this.#a,e,!0)}#o=k(j([]));get conversationBranchEntryIDs(){return I(this.#o)}set conversationBranchEntryIDs(e){A(this.#o,e,!0)}#s=k(``);get conversationSessionID(){return I(this.#s)}set conversationSessionID(e){A(this.#s,e,!0)}#c=k(!1);get conversationTruncated(){return I(this.#c)}set conversationTruncated(e){A(this.#c,e,!0)}#l=k(!1);get conversationFollowLatest(){return I(this.#l)}set conversationFollowLatest(e){A(this.#l,e,!0)}#u=k(``);get conversationOpenedFromID(){return I(this.#u)}set conversationOpenedFromID(e){A(this.#u,e,!0)}#d=k(``);get followUpText(){return I(this.#d)}set followUpText(e){A(this.#d,e,!0)}#f=k(!1);get followUpSending(){return I(this.#f)}set followUpSending(e){A(this.#f,e,!0)}#p=k(``);get followUpError(){return I(this.#p)}set followUpError(e){A(this.#p,e,!0)}followUpRequestID=``;followUpAbort=null;conversationRequestToken=0;conversationReturnFocusEl=null;bodyPointerStart=null;#m=k(null);get conversationDialogEl(){return I(this.#m)}set conversationDialogEl(e){A(this.#m,e,!0)}#h=k(null);get conversationCloseBtnEl(){return I(this.#h)}set conversationCloseBtnEl(e){A(this.#h,e,!0)}#g=k(null);get conversationThreadEl(){return I(this.#g)}set conversationThreadEl(e){A(this.#g,e,!0)}canShowConversation(e){return $P(e)}startBodyInteraction(e){this.bodyPointerStart={x:e.clientX,y:e.clientY}}_isBodyDrag(e){if(!this.bodyPointerStart)return!1;let t=Math.abs(e.clientX-this.bodyPointerStart.x),n=Math.abs(e.clientY-this.bodyPointerStart.y);return t>4||n>4}_hasActiveSelection(){let e=window.getSelection?window.getSelection():null;return!e||e.isCollapsed?!1:String(e.toString()||``).trim().length>0}handleBodyConversationClick(e,t){let n=this._isBodyDrag(e);if(this.bodyPointerStart=null,n||this._hasActiveSelection()||!this.canShowConversation(t))return;let r=e.target&&e.target.closest?e.target.closest(`[data-conversation-trigger="1"]`):null;r&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,r))}handleErrorConversationClick(e,t){let n=this._isBodyDrag(e);this.bodyPointerStart=null,!n&&(this._hasActiveSelection()||this.canShowConversation(t)&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,e.currentTarget)))}formatJSON(e){return es(e)}renderBodyWithConversationHighlights(e,t,n){return pF(e,t,{formatJSON:e=>this.formatJSON(e),canShowConversation:e=>this.canShowConversation(e),promptCacheHighlight:n&&n.promptCacheHighlight})}async openConversation(e,t){if(!e||!e.id||!this.canShowConversation(e))return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;t instanceof HTMLElement?this.conversationReturnFocusEl=t:n&&n!==document.body&&(this.conversationReturnFocusEl=n);let r=++this.conversationRequestToken;if(this.conversationOpen=!0,this.conversationError=``,this.conversationAnchorID=e.id,this.conversationOpenedFromID=e.id,this.conversationSessionID=String(e.session_id||``).trim(),this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[],this.conversationTruncated=!1,this.conversationFollowLatest=!1,this.followUpText=``,this.followUpError=``,this.followUpRequestID=``,document.body.classList.add(`conversation-drawer-open`),requestAnimationFrame(()=>this._focusConversationDrawer()),this._conversationEntryLivePending(e)){this.conversationFollowLatest=!0,this.conversationLoading=!1,this.applyLiveConversationEntry(e),this._scheduleLatestScroll();return}this.conversationLoading=!0,await this.fetchConversation(e.id,r,!0,!0)}_conversationEntryLivePending(e){return typeof yS.auditEntryLiveDetailPending==`function`&&yS.auditEntryLiveDetailPending(e)}applyLiveConversationEntry(e){let t=[...this.conversationEntries||[]],n=String(e.id||``).trim(),r=String(e.request_id||``).trim(),i=t.findIndex(e=>n&&String(e.id||``).trim()===n||r&&String(e.request_id||``).trim()===r);i>=0?t.splice(i,1,{...t[i],...e}):t.push(e),this.conversationEntries=t,!this.conversationSessionID&&e.session_id&&(this.conversationSessionID=String(e.session_id).trim()),this._applyConversationView(t),this.conversationFollowLatest&&this._scheduleLatestScroll()}_applyConversationView(e){let t=SF(e,this.conversationAnchorID);if(this.conversationFollowLatest){let n=XP(e,t.entryIDs);n&&n.id&&String(n.id)!==this.conversationAnchorID&&(this.conversationAnchorID=String(n.id),t=SF(e,this.conversationAnchorID))}this.conversationBranchEntryIDs=t.entryIDs,this.conversationMessages=t.messages}refreshLiveConversation(e){if(!this.conversationOpen||!e)return;let t=String(e.id||``).trim(),n=KP(this.conversationEntries,this.conversationAnchorID,this.conversationSessionID,this.followUpRequestID,e);if(!n.accepted)return;this.followUpRequestID=n.followUpRequestID,t&&n.submittedChild&&(this.conversationAnchorID=t,this.conversationFollowLatest=!0);let r=String(e._live_state||``).trim();if(r===`audit.flushed`||r===`audit.detail`){this.applyLiveConversationEntry(e),this.conversationMessages.length===0&&(this.conversationLoading=!0);let n=++this.conversationRequestToken;this.fetchConversation(this.conversationAnchorID||t,n,!1);return}this.applyLiveConversationEntry(e)}conversationLiveWaiting(){if(!this.conversationOpen)return!1;let e=new Set(this.conversationBranchEntryIDs||[]);return(this.conversationEntries||[]).some(t=>e.has(String(t&&t.id||``))&&t._live&&(typeof yS.liveAuditStateSettled!=`function`||!yS.liveAuditStateSettled(t._live_state)))}conversationLiveStatusText(){return(this.conversationMessages||[]).length>0?`Model is responding…`:`Waiting for request data…`}closeConversation(){this.followUpAbort&&this.followUpAbort.abort(),this.conversationOpen=!1,this.conversationRequestToken++,this.conversationSessionID=``,this.conversationBranchEntryIDs=[],this.conversationFollowLatest=!1,this.conversationOpenedFromID=``,this.followUpRequestID=``,this.followUpSending=!1,document.body.classList.remove(`conversation-drawer-open`);let e=this.conversationReturnFocusEl;this.conversationReturnFocusEl=null,e&&typeof e.focus==`function`&&document.contains(e)&&requestAnimationFrame(()=>e.focus())}_focusConversationDrawer(){if(!this.conversationOpen)return;let e=this.conversationCloseBtnEl;if(e&&typeof e.focus==`function`){e.focus();return}let t=this.conversationDialogEl;t&&typeof t.focus==`function`&&t.focus()}async fetchConversation(e,t,n=!0,r=!1){try{let i=await uo(`/admin/audit/conversation?`+(`log_id=`+encodeURIComponent(e)+`&limit=120`),{label:`audit conversation`});if(t!==this.conversationRequestToken||i.stale)return;if(!i.ok){this.conversationError=`Unable to load interactions.`,this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[];return}let a=i.data||{},o=a.anchor_id||e;this.conversationEntries=Array.isArray(a.entries)?a.entries:[],r&&(this.conversationFollowLatest=ZP(this.conversationEntries,o)),this.conversationAnchorID=o;let s=this.conversationEntries.find(e=>e.id===this.conversationAnchorID);s&&s.session_id&&(this.conversationSessionID=String(s.session_id).trim()),this.conversationTruncated=!!a.truncated,this._applyConversationView(this.conversationEntries),this.conversationFollowLatest?this._scheduleLatestScroll():n&&this._scheduleAnchorScroll()}catch(e){if(t!==this.conversationRequestToken)return;console.error(`Failed to fetch audit conversation:`,e),this.conversationError=`Failed to load interactions.`,this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[]}finally{t===this.conversationRequestToken&&(this.conversationLoading=!1)}}selectedConversationEntry(){return JP(this.conversationEntries,this.conversationAnchorID)}followUpKind(){let e=this.selectedConversationEntry();return VP(e)?RP(e.path):``}canSendFollowUp(){return!!this.followUpKind()&&!!String(this.followUpText||``).trim()&&!this.followUpSending&&!this.conversationLiveWaiting()}async sendFollowUp(){if(!this.canSendFollowUp())return;let e=this.selectedConversationEntry(),t=HP(e,this.followUpText);if(!e||!t)return;let n=this.conversationAnchorID,r=kF(),i=new AbortController,a=!1,o=setTimeout(()=>{a=!0,i.abort()},wF);this.followUpSending=!0,this.followUpError=``,this.followUpRequestID=r,this.followUpAbort=i;try{let a=WP(e,n,r),o=await co(e.path,{method:`POST`,headers:a,body:JSON.stringify(t),signal:i.signal}),s=String(o.headers.get(`X-Request-ID`)||``).trim();if(s&&this.followUpRequestID&&(this.followUpRequestID=s),!o.ok){let e=`Unable to send message.`;try{let t=await o.json();e=t&&t.error&&t.error.message||e}catch{}this.followUpError=e,(this.followUpRequestID===r||this.followUpRequestID===s)&&(this.followUpRequestID=``);return}if(this.followUpText=``,await OF(o),!yS.liveLogsStreaming&&this.conversationOpen){let e=++this.conversationRequestToken;await this._selectPersistedFollowUp(n,this.followUpRequestID,e,i.signal)}}catch(e){po(e)||i.signal.aborted?a&&this.conversationOpen&&(this.followUpError=`The request timed out.`):(console.error(`Failed to send interaction follow-up:`,e),this.followUpError=`Failed to send message.`)}finally{clearTimeout(o),this.followUpAbort===i&&(this.followUpAbort=null,this.followUpSending=!1)}}async _selectPersistedFollowUp(e,t,n,r){let i=Date.now()+TF;for(;this.conversationOpen&&n===this.conversationRequestToken&&Date.now(){let e=this.conversationThreadEl;if(!e)return;let t=e.querySelectorAll(`[data-conversation-anchor="true"]`),n=t[t.length-1];n&&typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`center`})})}_scheduleLatestScroll(){requestAnimationFrame(()=>{let e=this.conversationThreadEl;if(!e)return;let t=e.lastElementChild;t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`end`})})}};async function OF(e){let t=e&&e.body&&typeof e.body.getReader==`function`?e.body.getReader():null;if(!t){await e.text();return}for(;!(await t.read()).done;);}function kF(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`?globalThis.crypto.randomUUID():`dashboard-`+Date.now().toString(36)+`-`+Math.random().toString(36).slice(2)}function AF(e,t){return new Promise((n,r)=>{let i,a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};if(i=setTimeout(()=>{t&&t.removeEventListener(`abort`,a),n()},e),t){if(t.aborted){a();return}t.addEventListener(`abort`,a,{once:!0})}})}var jF=new DF;yS.refreshLiveConversation=e=>jF.refreshLiveConversation(e);var MF=R(``),NF=R(` `),PF=R(``),FF=R(`
`);function IF(e,t){E(t,!0);let n=G(t,`thread`,3,null),r=G(t,`expanded`,3,!1),i=G(t,`onactivate`,3,null);function a(e){e.preventDefault(),i()&&i()()}function o(e){e.stopPropagation(),e.preventDefault(),n().ontoggle()}function s(e){e.stopPropagation(),e.preventDefault(),fP.expandAuditEntry(t.entry),jF.openConversation(t.entry,e.currentTarget)}var c=FF();let l;var u=M(c),d=M(u),f=e=>{var t=MF(),r=M(t);{let e=O(()=>n().expanded?`chevron-down`:`chevron-right`);K(r,{get name(){return I(e)},class:`audit-thread-expander-svg`})}var i=P(r,2),a=M(i,!0);T(i),T(t),F(()=>{W(t,`aria-expanded`,n().expanded),W(t,`title`,`Session with `+n().count+` requests`),W(t,`aria-label`,`Session with `+n().count+` requests, `+(n().expanded?`collapse`:`expand`)),B(a,n().count)}),L(`click`,t,o),z(e,t)};V(d,e=>{n()&&e(f)});var p=P(d,2),m=M(p,!0);T(p);var h=P(p,2),g=M(h,!0);T(h);var _=P(h,2),v=e=>{var n=NF(),r=M(n,!0);T(n),F(e=>B(r,e),[()=>hs(t.entry)]),z(e,n)};V(_,e=>{(t.entry.requested_model||t.entry.model)&&e(v)});var y=P(_,2),b=M(y,!0);T(y),T(u);var x=P(u,2),S=M(x);TP(S,{get entry(){return t.entry}});var C=P(S,2),w=M(C,!0);T(C);var ee=P(C,2),te=M(ee,!0);T(ee);var ne=P(ee,2),re=e=>{var t=PF();K(M(t),{name:`chevron-right`,class:`audit-conversation-trigger-svg`}),T(t),L(`click`,t,s),z(e,t)},ie=O(()=>jF.canShowConversation(t.entry));V(ne,e=>{I(ie)&&e(re)}),T(x),T(c),F((e,n,i,a,o)=>{l=U(c,1,`audit-entry-summary svelte-17mysgz`,null,l,e),W(c,`aria-expanded`,r()),U(p,1,`audit-status-badge ${n??``}`,`svelte-17mysgz`),B(m,t.entry.status_code||`-`),B(g,t.entry.method||`-`),B(b,t.entry.path||`-`),W(C,`title`,i),B(w,a),B(te,o)},[()=>({"audit-entry-summary-live-in-progress":AN(t.entry)}),()=>kN(t.entry.status_code),()=>ls(t.entry.timestamp),()=>io.formatTimestamp(t.entry.timestamp),()=>ON(t.entry.duration_ns)]),L(`click`,c,a),z(e,c),D()}Hr([`click`]);var LF=R(``);function RF(e,t){E(t,!0);let n=G(t,`label`,3,`Copy`),r=G(t,`copiedLabel`,3,`Copied`),i=G(t,`errorLabel`,3,``),a=G(t,`class`,3,`btn`),o=O(()=>t.state.error&&i()?i():t.state.copied?r():n());var s=LF();let c;var l=M(s),u=e=>{K(e,{name:`circle-check`,width:`14`,height:`14`,"stroke-width":`2.5`})},d=e=>{K(e,{name:`copy`,width:`14`,height:`14`})};V(l,e=>{t.state.copied?e(u):e(d,-1)});var f=P(l,2),p=M(f,!0);T(f),T(s),F(()=>{c=U(s,1,Fi([`copy-feedback-btn`,a()]),null,c,{"copy-feedback-btn-copied":t.state.copied}),B(p,I(o))}),L(`click`,s,e=>{e.preventDefault(),t.onclick?.(e)}),z(e,s),D()}Hr([`click`]);var zF=R(`
Error Message
 
`),BF=R(`
 
`),VF=R(` `),HF=R(` streaming`),UF=R(`
Body
`),WF=R(`

`),GF=R(`

`),KF=R(`

`),qF=R(`
`);function JF(e,t){E(t,!0);let n=ij({logPrefix:`Failed to copy audit payload:`}),r=ij({logPrefix:`Failed to copy audit payload:`}),i=O(()=>t.pane&&t.pane.showHeaders?es(t.pane.headers):``),a=O(()=>!t.pane||!t.pane.showBody?``:iF(t.pane.body)?lF(t.pane.body):jF.renderBodyWithConversationHighlights(t.pane.entry,t.pane.body,{promptCacheHighlight:t.pane.promptCacheHighlight})),o=O(()=>!!(t.pane&&jF.canShowConversation(t.pane.entry)));function s(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),jF.handleErrorConversationClick(e,t.pane.entry))}var c=qF();let l;var u=M(c),d=e=>{var n=zF(),r=P(M(n),2);let i;var a=M(r,!0);T(r),T(n),F(()=>{i=U(r,1,`audit-json audit-pane-error-message svelte-1h5puht`,null,i,{"audit-pane-clickable-preview":I(o)}),W(r,`role`,I(o)?`button`:null),W(r,`tabindex`,I(o)?0:null),B(a,t.pane.errorMessage)}),L(`mousedown`,r,e=>jF.startBodyInteraction(e)),L(`keydown`,r,s),L(`click`,r,e=>jF.handleErrorConversationClick(e,t.pane.entry)),z(e,n)};V(u,e=>{t.pane.showErrorMessage&&e(d)});var f=P(u,2),p=e=>{var n=BF(),a=M(n),o=M(a),s=M(o,!0);T(o),RF(P(o,2),{get state(){return r},label:`Copy Headers`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>r.copy(t.pane.copyHeaders,es)}),T(a);var c=P(a,2),l=M(c,!0);T(c),T(n),F(()=>{B(s,t.pane.headersTitle||`Headers`),B(l,I(i))}),z(e,n)};V(f,e=>{t.pane.showHeaders&&e(p)});var m=P(f,2),h=e=>{var r=UF(),i=M(r),o=M(i),s=P(M(o),2),c=e=>{var n=VF(),r=M(n,!0);T(n),F(()=>B(r,t.pane.bodyCacheRatioLabel)),z(e,n)};V(s,e=>{t.pane.bodyCacheRatioLabel&&e(c)});var l=P(s,2),u=e=>{z(e,HF())};V(l,e=>{t.pane.streaming&&e(u)}),T(o),RF(P(o,2),{get state(){return n},label:`Copy Body`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>n.copy(t.pane.copyBody,es)}),T(i);var d=P(i,2);hi(d,()=>I(a),!0),T(d),T(r),L(`mousedown`,d,e=>jF.startBodyInteraction(e)),L(`click`,d,e=>jF.handleBodyConversationClick(e,t.pane.entry)),z(e,r)};V(m,e=>{t.pane.showBody&&e(h)});var g=P(m,2),_=e=>{var n=WF(),r=M(n,!0);T(n),F(()=>B(r,t.pane.emptyMessage)),z(e,n)};V(g,e=>{t.pane.showEmpty&&e(_)});var v=P(g,2),y=e=>{var n=GF(),r=P(M(n),2),i=M(r,!0);T(r),T(n),F(()=>B(i,t.pane.pendingMessage)),z(e,n)};V(v,e=>{t.pane.showPending&&e(y)});var b=P(v,2),x=e=>{var n=KF(),r=M(n,!0);T(n),F(()=>B(r,t.pane.tooLargeMessage)),z(e,n)};V(b,e=>{t.pane.showTooLarge&&e(x)}),T(c),F(()=>l=U(c,1,`audit-pane svelte-1h5puht`,null,l,{"audit-pane-split":t.pane&&t.pane.layout===`split`,"audit-pane-split-single":t.pane&&t.pane.layout===`split`&&!(t.pane.showHeaders&&t.pane.showBody)})),z(e,c),D()}Hr([`mousedown`,`keydown`,`click`]);var YF=R(` `),XF=R(` `),ZF=R(` `),QF=R(` `),$F=R(``),eI=R(`
`),tI=R(`
`);function nI(e,t){E(t,!0);let n=G(t,`panes`,19,()=>[]),r=k(null),i=O(()=>cP(I(r),t.entry,n())),a=e=>`audit-tab-`+t.entry.id+`-`+e,o=e=>`audit-tabpanel-`+t.entry.id+`-`+e;function s(e,t){let i=n().map(e=>e.id),a=lP(e.key,i,t);a!=null&&(e.preventDefault(),((e.currentTarget?.closest?.(`.audit-pane-tablist`))?.querySelectorAll(`.audit-pane-tab`)[i.indexOf(a)])?.focus?.(),A(r,a,!0))}var c=tI(),l=M(c);H(l,21,n,e=>e.id,(e,t)=>{var n=$F();let c;var l=M(n),u=M(l),d=e=>{K(e,{name:`arrow-right`})},f=e=>{K(e,{name:`arrow-left`})};V(u,e=>{I(t).pane.direction===`request`?e(d):I(t).pane.direction===`response`&&e(f,1)}),T(l);var p=P(l,2),m=M(p,!0);T(p);var h=P(p,2),g=e=>{var n=YF(),r=M(n);T(n),F(()=>B(r,`#${I(t).pane.seq??``}`)),z(e,n)};V(h,e=>{I(t).pane.seq&&e(g)});var _=P(h,2),v=e=>{var n=XF(),r=M(n,!0);T(n),F(()=>{U(n,1,`provider-badge audit-pane-kind audit-pane-kind-${I(t).pane.kind??``}`,`svelte-1bc5vi5`),B(r,I(t).pane.kind)}),z(e,n)};V(_,e=>{I(t).pane.kind&&e(v)});var y=P(_,2);H(y,17,()=>I(t).pane.noChangeSteps||[],e=>e.id,(e,t)=>{var n=ZF(),r=M(n,!0);T(n),F(()=>{W(n,`title`,I(t).title),B(r,I(t).label)}),z(e,n)});var b=P(y,2),x=e=>{var n=QF(),r=M(n,!0);T(n),F(()=>B(r,I(t).pane.savingsLabel)),z(e,n)};V(b,e=>{I(t).pane.savingsLabel&&e(x)});var S=P(b,2),C=e=>{var n=XF(),r=M(n,!0);T(n),F(e=>{U(n,1,`audit-status-badge ${e??``}`,`svelte-1bc5vi5`),B(r,I(t).pane.statusCode)},[()=>kN(I(t).pane.statusCode)]),z(e,n)};V(S,e=>{I(t).pane.statusCode&&e(C)}),T(n),F((e,r)=>{c=U(n,1,`audit-pane-tab svelte-1bc5vi5`,null,c,{"audit-pane-tab-active":I(i)===I(t).id}),W(n,`aria-selected`,I(i)===I(t).id),W(n,`id`,e),W(n,`aria-controls`,r),W(n,`tabindex`,I(i)===I(t).id?0:-1),U(l,1,Fi([`audit-pane-icon`,I(t).pane.direction&&`audit-pane-icon-${I(t).pane.direction}`]),`svelte-1bc5vi5`),B(m,I(t).pane.title)},[()=>a(I(t).id),()=>o(I(t).id)]),L(`keydown`,n,e=>s(e,I(t).id)),L(`click`,n,()=>A(r,I(t).id,!0)),z(e,n)}),T(l),H(P(l,2),17,n,e=>e.id,(e,t)=>{var n=eI();let r;JF(M(n),{get pane(){return I(t).pane}}),T(n),F((e,a)=>{W(n,`id`,e),W(n,`aria-labelledby`,a),r=Hi(n,``,r,{display:I(i)===I(t).id?null:`none`})},[()=>o(I(t).id),()=>a(I(t).id)]),z(e,n)}),T(c),z(e,c),D()}Hr([`keydown`,`click`]);var rI=R(`
`),iI=R(`
`);function aI(e,t){E(t,!0);let n=G(t,`thread`,3,null),r=O(()=>fP.isAuditEntryExpanded(t.entry)),i=O(()=>jF.conversationOpen&&String(jF.conversationAnchorID||``)===String(t.entry.id||``)),a=O(()=>I(r)?oP(t.entry,jP):[]),o=O(()=>I(r)?tM(t.entry,XM.auditEntryWorkflow(t.entry),XM.workflowFeatureCaps()):null);function s(){fP.toggleAuditEntryExpanded(t.entry)}var c=iI();let l;var u=M(c);IF(u,{get entry(){return t.entry},get thread(){return n()},get expanded(){return I(r)},onactivate:s});var d=P(u,2),f=e=>{var n=rI(),r=M(n),i=e=>{_j(e,{get chart(){return I(o)}})};V(r,e=>{I(o)&&e(i)});var s=P(r,2);nI(s,{get entry(){return t.entry},get panes(){return I(a)}}),SP(P(s,2),{get entry(){return t.entry}}),T(n),ki(3,n,()=>Vo,()=>({y:-6,duration:JM(150)})),z(e,n)};V(d,e=>{I(r)&&e(f)}),T(c),F(()=>l=U(c,1,`audit-entry svelte-cmjgwr`,null,l,{"audit-entry-interactions-open":I(i)})),z(e,c),D()}var oI=R(`
`),sI=R(`
`),cI=R(`

`),lI=R(`
`),uI=R(`
`);function dI(e,t){E(t,!0);let n=O(()=>fN(t.entry)),r=O(()=>fP.isThreadExpanded(I(n))),i=O(()=>fP.threadChildren(I(n))),a=O(()=>I(i)&&!I(i).loading&&Number(I(i).total||0)>I(i).entries.length+1);var o=Qr(),s=N(o),c=e=>{aI(e,{get entry(){return t.entry}})},l=O(()=>!mN(t.entry)),u=e=>{var n=uI(),o=M(n);{let e=O(()=>({count:pN(t.entry),expanded:I(r),ontoggle:()=>fP.toggleThread(t.entry)}));aI(o,{get entry(){return t.entry},get thread(){return I(e)}})}var s=P(o,2),c=e=>{var t=lI(),n=M(t),r=e=>{var t=oI();_x(M(t),{size:14,label:`Loading session requests`}),T(t),z(e,t)};V(n,e=>{I(i)&&I(i).loading&&e(r)});var o=P(n,2);H(o,17,()=>I(i)&&I(i).entries||[],e=>e.id,(e,t)=>{var n=sI();aI(M(n),{get entry(){return I(t)}}),T(n),z(e,n)});var s=P(o,2),c=e=>{var t=cI(),n=M(t);T(t),F(()=>B(n,`Showing the latest ${I(i).entries.length+1} of ${I(i).total??``} + requests in this session.`)),z(e,t)};V(s,e=>{I(a)&&e(c)}),T(t),ki(3,t,()=>Ho,()=>({duration:JM(150)})),z(e,t)};V(s,e=>{I(r)&&e(c)}),T(n),z(e,n)};V(s,e=>{I(l)?e(c):e(u,-1)}),z(e,o),D()}var fI=R(`
 
`),pI=R(`
 
`),mI=R(`
`),hI=R(`
`),gI=R(`
`,1),_I=R(`
`);function vI(e,t){E(t,!0);let n=O(()=>t.msg.role===`function_call`||t.msg.role===`function_result`);function r(e){return e.role===`function_call`?(e.toolCalls||[]).map(e=>e.name+`()`).join(`, `):(e.functionName?e.functionName+`: `:``)+e.text}var i=_I(),a=M(i),o=e=>{var n=fI(),i=M(n),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(i);var l=P(i,2),u=M(l,!0);T(l),T(n),F((e,n)=>{B(o,t.msg.roleLabel),B(c,e),B(u,n)},[()=>r(t.msg),()=>CF(t.msg)]),z(e,n)},s=e=>{var n=gI(),r=N(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(r);var c=P(r,2),l=e=>{var n=pI(),r=M(n,!0);T(n),F(()=>B(r,t.msg.text)),z(e,n)};V(c,e=>{t.msg.text&&e(l)});var u=P(c,2),d=e=>{var n=hI();H(n,23,()=>t.msg.toolCalls,(e,t)=>e.name+`-`+t,(e,t)=>{var n=mI(),r=M(n),i=M(r,!0);T(r),T(n),F(()=>B(i,I(t).name+`()`)),z(e,n)}),T(n),z(e,n)};V(u,e=>{t.msg.toolCalls&&e(d)}),F(e=>{B(a,t.msg.roleLabel),B(s,e)},[()=>io.formatTimestamp(t.msg.timestamp)]),z(e,n)};V(a,e=>{I(n)?e(o):e(s,-1)}),T(i),F(()=>{U(i,1,Fi([I(n)?`chat-function-note`:`chat-message`,t.msg.roleClass,{"is-anchor":t.msg.isAnchor,"is-after-anchor":t.msg.isAfterAnchor}]),`svelte-12s99s5`),W(i,`data-conversation-anchor`,t.msg.isAnchor?`true`:void 0),W(i,`data-entry-id`,t.msg.entryID)}),z(e,i),D()}var yI=R(``),bI=R(`
`),xI=R(`

Loading interactions...

`),SI=R(`

No interaction data available for this entry.

`),CI=R(`
`),wI=R(`

Showing the newest part of this session and the selected log.

`),TI=R(`
`),EI=R(``),DI=R(`
`),OI=R(``),kI=R(`

Interactions

`,1);function AI(e,t){E(t,!0);let n=jF;An(()=>{if(!n.conversationOpen)return;let e=Er(()=>ka.opened()),t=e=>{e.key===`Escape`&&ka.openCount<=1&&n.closeConversation()};return window.addEventListener(`keydown`,t),()=>{ka.closed(e),window.removeEventListener(`keydown`,t)}});var r=kI(),i=N(r),a=e=>{var t=yI();L(`click`,t,()=>n.closeConversation()),z(e,t)};V(i,e=>{n.conversationOpen&&e(a)});var o=P(i,2);let s;var c=M(o);Co(P(M(c),2),{label:`Close interactions`,onclick:()=>n.closeConversation(),get el(){return n.conversationCloseBtnEl},set el(e){n.conversationCloseBtnEl=e}}),T(c);var l=P(c,2),u=M(l),d=e=>{var t=bI(),r=M(t,!0);T(t),F(()=>B(r,n.conversationError)),z(e,t)};V(u,e=>{n.conversationError&&e(d)});var f=P(u,2),p=e=>{z(e,xI())};V(f,e=>{n.conversationLoading&&e(p)});var m=P(f,2),h=e=>{z(e,SI())},g=O(()=>!n.conversationLoading&&!n.followUpSending&&!n.conversationError&&n.conversationMessages.length===0&&!n.conversationLiveWaiting());V(m,e=>{I(g)&&e(h)});var _=P(m,2),v=e=>{var t=CI();H(t,21,()=>n.conversationMessages,e=>e.uid,(e,t)=>{vI(e,{get msg(){return I(t)}})}),T(t),ga(t,e=>n.conversationThreadEl=e,()=>n?.conversationThreadEl),z(e,t)};V(_,e=>{n.conversationMessages.length>0&&e(v)});var y=P(_,2),b=e=>{z(e,wI())};V(y,e=>{n.conversationTruncated&&e(b)});var x=P(y,2),S=e=>{var t=TI(),r=P(M(t),2),i=M(r,!0);T(r),T(t),F(e=>B(i,e),[()=>n.conversationLiveStatusText()]),z(e,t)},C=O(()=>n.conversationLiveWaiting());V(x,e=>{I(C)&&e(S)}),T(l);var w=P(l,2),ee=e=>{var t=OI(),r=M(t),i=e=>{var t=DI(),r=P(M(t),2);ft(r);var i=P(r,2),a=e=>{var t=EI(),r=M(t,!0);T(t),F(()=>B(r,n.followUpError)),z(e,t)};V(i,e=>{n.followUpError&&e(a)});var o=P(i,2),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=M(l,!0);T(l),T(o),T(t),F((e,t,i)=>{r.disabled=e,B(c,t),l.disabled=i,B(u,n.followUpSending?`Sending…`:`Send`)},[()=>n.followUpSending||n.conversationLiveWaiting(),()=>n.selectedConversationEntry()?.path||``,()=>!n.canSendFollowUp()]),Vr(`submit`,t,e=>{e.preventDefault(),n.sendFollowUp()}),da(r,()=>n.followUpText,e=>n.followUpText=e),z(e,t)},a=O(()=>n.followUpKind());V(r,e=>{I(a)&&e(i)});var o=P(r,2),s=M(o,!0);T(o),T(t),F(()=>B(s,n.conversationFollowLatest?`Following latest interaction`:`Opened from log: `+n.conversationOpenedFromID)),z(e,t)};V(w,e=>{n.conversationAnchorID&&e(ee)}),T(o),ga(o,e=>n.conversationDialogEl=e,()=>n?.conversationDialogEl),F(()=>{s=U(o,1,`conversation-drawer`,null,s,{open:n.conversationOpen}),W(o,`aria-hidden`,!n.conversationOpen)}),z(e,r),D()}Hr([`click`]);var jI=R(`

.

`),MI=R(`
Audit logging is off. Live entries are temporary and disappear after + refresh. Set LOGGING_ENABLED=true to persist them.
`),NI=R(`

`),PI=R(`
`),FI=R(`
`),II=R(`
`),LI=R(`
`),RI=R(`
`);function zI(e,t){E(t,!0);let n=O(()=>go.config&&go.config.LOGGING_RETENTION_DAYS);An(()=>{if(q.refreshTick,Va.page===`audit-logs`)return Er(()=>r())});function r(){let e=!1;return(async()=>{try{await go.ensureLoaded()}finally{await fP.fetchAuditLog(!0),!e&&go.liveLogsVisible()&&yS.ensureLiveLogs()}})(),()=>{e=!0,yS.stopLiveLogs()}}var i=RI(),a=M(i),o=M(a),s=P(M(o),2),c=e=>{Hx(e,{copyId:`audit-retention-help-copy`,label:`retention help`,text:`If you want to change the retention period, set LOGGING_RETENTION_DAYS (env var) or logging.retention_days (config.yaml) and restart the gateway. Default is 30 days; 0 keeps audit logs forever.`,title:e=>{var t=jI(),r=M(t,!0),i=P(r),a=M(i,!0);T(i),Ue(),T(t),F((e,t)=>{B(r,e),B(a,t)},[()=>cN(I(n)),()=>lN(I(n))]),z(e,t)},$$slots:{title:!0}})},l=O(()=>sN(I(n)));V(s,e=>{I(l)&&e(c)}),T(o),T(a);var u=P(a,2);Xs(M(u),{onchange:()=>fP.fetchAuditLog(!0)}),T(u);var d=P(u,2);As(d,{});var f=P(d,2),p=e=>{z(e,MI())},m=O(()=>go.loaded&&!go.auditVisible()&&!q.needsAuth);V(f,e=>{I(m)&&e(p)});var h=P(f,2),g=M(h);mP(g,{});var _=P(g,2),v=M(_),y=M(v),b=e=>{var t=NI(),n=M(t);T(t),F(e=>B(n,`Showing ${fP.auditLog.offset+1}-${e??``} of ${fP.auditLog.total??``} + ${fP.auditGroupSessions?`sessions`:`logs`}`),[()=>Math.min(fP.auditLog.offset+fP.auditLog.limit,fP.auditLog.total)]),z(e,t)};V(y,e=>{fP.auditLog.total>0&&e(b)});var x=P(y,2),S=M(x);na(S),Ue(2),T(x),T(v),yP(P(v,2),{}),T(_);var C=P(_,2),w=e=>{var t=PI();_x(M(t),{size:18,label:`Loading audit logs`}),T(t),z(e,t)},ee=e=>{var t=II();H(t,29,()=>fP.auditLog.entries,e=>e.id,(e,t)=>{var n=FI(),r=M(n),i=e=>{dI(e,{get entry(){return I(t)}})},a=e=>{aI(e,{get entry(){return I(t)}})};V(r,e=>{fP.auditGroupSessions?e(i):e(a,-1)}),T(n),Oi(n,()=>WM,()=>({duration:JM(150)})),ki(1,n,()=>YM,()=>({live:I(t)._live})),z(e,n)}),T(t),z(e,t)};V(C,e=>{fP.loading&&fP.auditLog.entries.length===0?e(w):fP.auditLog.entries.length>0&&e(ee,1)});var te=P(C,2),ne=e=>{var t=LI();bx(M(t),{}),T(t),z(e,t)};V(te,e=>{fP.auditLog.entries.length===0&&!fP.loading&&!q.needsAuth&&e(ne)}),FC(P(te,2),{get total(){return fP.auditLog.total},get offset(){return fP.auditLog.offset},get limit(){return fP.auditLog.limit},onprev:()=>fP.auditLogPrevPage(),onnext:()=>fP.auditLogNextPage()}),T(h),AI(P(h,2),{}),T(i),F(()=>ia(S,fP.auditGroupSessions)),L(`change`,S,()=>fP.toggleAuditGroupSessions()),z(e,i),D()}Hr([`change`]);function BI(e){try{let t=JSON.parse(JSON.stringify(e||{}));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function VI(e){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(e=>e):e==null?[]:String(e).split(`,`).map(e=>e.trim()).filter(e=>e)}function HI(e,t){let n=String(t||``).trim();return(e||[]).find(e=>String(e&&e.type||``).trim()===n)||null}function UI(e){return Array.isArray(e)&&e.length>0&&String(e[0].type||``).trim()||`system_prompt`}function WI(e,t){let n=String(t||``).trim();return n&&HI(e,n)?n:UI(e)}function GI(e,t){let n=HI(e,t);return!n||!n.defaults?{}:BI(n.defaults)}function KI(e,t,n){return{...GI(e,n),...BI(t)}}function qI(e,t){let n=WI(e,t);return{name:``,type:n,description:``,user_path:``,config:GI(e,n)}}function JI(e,t){if(!t)return e||[];let n=String(t).toLowerCase();return(e||[]).filter(e=>[e.name,e.type,e.user_path,e.description,e.summary].some(e=>String(e||``).toLowerCase().includes(n)))}function YI(e,t){let n=HI(e,t);return n&&n.label?n.label:t||`Unknown`}function XI(e,t){let n=HI(e,t);return Array.isArray(n&&n.fields)?n.fields:[]}function ZI(e,t){if(!t||!e)return t&&t.input===`checkboxes`?[]:``;let n=e[t.key];return n==null?t.input===`checkboxes`?[]:``:t.input===`checkboxes`?VI(n):n}function QI(e,t,n){if(!t)return e;let r=BI(e);if(t.input===`number`){let e=String(n||``).trim();if(e===``)delete r[t.key];else{let n=Number(e);r[t.key]=Number.isFinite(n)?n:e}}else t.input===`checkboxes`?r[t.key]=VI(n):r[t.key]=n;return r}function $I(e,t,n){return ZI(e,t).includes(String(n||``).trim())}function eL(e,t,n,r){let i=VI(ZI(e,t)),a=String(n||``).trim();return a?QI(e,t,r?Array.from(new Set([...i,a])):i.filter(e=>e!==a)):e}function tL(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),description:String(e&&e.description||``).trim()||void 0,user_path:String(e&&e.user_path||``).trim()||void 0,config:BI(e&&e.config)}}var nL=new class{#e=k(j([]));get guardrails(){return I(this.#e)}set guardrails(e){A(this.#e,e,!0)}#t=k(j([]));get types(){return I(this.#t)}set types(e){A(this.#t,e,!0)}#n=k(!0);get available(){return I(this.#n)}set available(e){A(this.#n,e,!0)}#r=k(!1);get loading(){return I(this.#r)}set loading(e){A(this.#r,e,!0)}#i=k(!1);get typesLoading(){return I(this.#i)}set typesLoading(e){A(this.#i,e,!0)}#a=k(``);get error(){return I(this.#a)}set error(e){A(this.#a,e,!0)}#o=k(``);get filter(){return I(this.#o)}set filter(e){A(this.#o,e,!0)}#s=k(!1);get formOpen(){return I(this.#s)}set formOpen(e){A(this.#s,e,!0)}#c=k(!1);get formSubmitting(){return I(this.#c)}set formSubmitting(e){A(this.#c,e,!0)}#l=k(``);get deletingName(){return I(this.#l)}set deletingName(e){A(this.#l,e,!0)}#u=k(`create`);get formMode(){return I(this.#u)}set formMode(e){A(this.#u,e,!0)}#d=k(``);get formOriginalName(){return I(this.#d)}set formOriginalName(e){A(this.#d,e,!0)}#f=k(j({name:``,type:``,description:``,user_path:``,config:{}}));get form(){return I(this.#f)}set form(e){A(this.#f,e,!0)}get filtered(){return JI(this.guardrails,this.filter)}typeLabel(e){return YI(this.types,e)}typeFields(e){return XI(this.types,e)}fieldValue(e){return ZI(this.form&&this.form.config,e)}setFieldValue(e,t){this.form={...this.form,config:QI(this.form.config,e,t)}}arrayFieldSelected(e,t){return $I(this.form&&this.form.config,e,t)}toggleArrayFieldValue(e,t,n){this.form={...this.form,config:eL(this.form.config,e,t,n)}}openCreate(){this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=qI(this.types,UI(this.types)),this.formOpen=!0}openEdit(e){let t=WI(this.types,e&&e.type);this.formMode=`edit`,this.formOriginalName=String(e&&e.name||``).trim(),this.error=``,this.form={name:this.formOriginalName,type:t,description:String(e&&e.description||``).trim(),user_path:String(e&&e.user_path||``).trim(),config:KI(this.types,e&&e.config,t)},this.formOpen=!0}closeForm(){this.formOpen=!1,this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=qI(this.types,UI(this.types))}changeType(e){let t=WI(this.types,e);this.form={...this.form,type:t,config:GI(this.types,t)}}async fetchTypes(){this.typesLoading=!0;try{let e=await iw(`/admin/guardrails/types`,{label:`guardrail types`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.types=[];return}if(e.result&&(this.available=!0),this.types=e.items,e.status===`error`){this.error=e.error;return}let t=WI(this.types,this.form.type);this.form={...this.form,type:t,config:KI(this.types,this.form.config,t)}}finally{this.typesLoading=!1}}async fetchGuardrails(){this.loading=!0,this.error=``;try{let e=await iw(`/admin/guardrails`,{label:`guardrails`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.guardrails=[];return}e.result&&(this.available=!0),this.guardrails=e.items,this.error=e.error}finally{this.loading=!1}}async fetchPage(){await Promise.all([this.fetchTypes(),this.fetchGuardrails()])}async submitForm(){let e=String(this.form.name||``).trim(),t=String(this.form.type||``).trim();if(!e){this.error=`Name is required.`;return}if(!t){this.error=`Type is required.`;return}this.error=``,this.formSubmitting=!0;let n=tL(this.form);try{let t=await aw(`/admin/guardrails`,`PUT`,n,{label:`save guardrail`,errorFallback:`Failed to save guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}qo.success(`Guardrail "`+e+`" saved.`),this.closeForm(),this.fetchGuardrails()}finally{this.formSubmitting=!1}}async deleteGuardrail(e){let t=String(e&&e.name||``).trim();if(!(!t||this.deletingName)&&window.confirm(`Delete guardrail "`+t+`"? Workflows that still reference it must be updated first.`)){this.deletingName=t;try{let e=await aw(`/admin/guardrails`,`DELETE`,{name:t},{label:`delete guardrail`,errorFallback:`Failed to delete guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,qo.error(e.error);return}if(e.status===`error`){qo.error(e.error);return}qo.success(`Guardrail "`+t+`" deleted.`),this.formOpen&&this.formOriginalName===t&&this.closeForm(),this.fetchGuardrails()}finally{this.deletingName=``}}}},rL=R(`
`),iL=R(`

Loading guardrails...

`),aL=R(`
`),oL=R(`
`),sL=R(`
NameTypeUser PathSummaryActions
`),cL=R(`

No guardrails defined yet.

`),lL=R(`

Instances

Each instance has a reusable name, a type, an optional user path for + future UI visibility scoping, and a JSON-backed config payload for + that type.

`);function uL(e,t){E(t,!0);var n=lL(),r=M(n),i=P(M(r),2);K(M(i),{name:`plus`,class:`form-action-icon`}),Ue(2),T(i),T(r);var a=P(r,2),o=e=>{var t=rL(),n=M(t);oC(M(n),{id:`guardrail-filter`,placeholder:`Filter by name, type, user path, summary...`,label:`Guardrail filter`,get value(){return nL.filter},set value(e){nL.filter=e}}),T(n),T(t),z(e,t)};V(a,e=>{nL.available&&e(o)});var s=P(a,2),c=e=>{var t=iL();_x(M(t),{size:16,label:`Loading guardrails`}),Ue(),T(t),z(e,t)};V(s,e=>{nL.loading&&nL.filtered.length===0&&e(c)});var l=P(s,2),u=e=>{var t=sL(),n=M(t),r=P(M(n));H(r,21,()=>nL.filtered,e=>e.name,(e,t)=>{var n=oL(),r=M(n),i=M(r,!0);T(r);var a=P(r),o=M(a),s=M(o,!0);T(o),T(a);var c=P(a),l=M(c,!0);T(c);var u=P(c),d=M(u),f=M(d,!0);T(d);var p=P(d,2),m=e=>{var n=aL(),r=M(n,!0);T(n),F(()=>B(r,I(t).description)),z(e,n)};V(p,e=>{I(t).description&&e(m)}),T(u);var h=P(u),g=M(h),_=M(g);{let e=O(()=>`Edit guardrail `+I(t).name);rw(_,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>nL.openEdit(I(t)),children:(e,t)=>{K(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}var v=P(_,2);{let e=O(()=>(nL.deletingName===I(t).name?`Deleting guardrail `:`Delete guardrail `)+I(t).name),n=O(()=>nL.deletingName===I(t).name);rw(v,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>nL.deleteGuardrail(I(t)),get disabled(){return I(n)},children:(e,t)=>{K(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}T(g),T(h),T(n),F(e=>{B(i,I(t).name),B(s,e),B(l,I(t).user_path||`—`),B(f,I(t).summary||I(t).description||`No summary yet.`)},[()=>nL.typeLabel(I(t).type)]),z(e,n)}),T(r),T(n),T(t),z(e,t)};V(l,e=>{nL.filtered.length>0&&e(u)});var d=P(l,2),f=e=>{z(e,cL())};V(d,e=>{nL.filtered.length===0&&!nL.loading&&nL.available&&!nL.error&&!q.authError&&e(f)}),T(n),F(()=>i.disabled=nL.typesLoading||nL.formSubmitting||!nL.available),L(`click`,i,()=>nL.openCreate()),z(e,n),D()}Hr([`click`]);var dL=R(`

Workflows reference these names directly, so renames are + intentionally avoided after creation.

`),fL=R(``),pL=R(``),mL=R(``),hL=R(``),gL=R(``),_L=R(``),vL=R(``),yL=R(``),bL=R(``),xL=R(`
`),SL=R(``),CL=R(` `),wL=R(`
`),TL=R(`
`);function EL(e,t){E(t,!0);let n=O(()=>nL.formMode===`edit`);{let t=e=>{z(e,dL())},r=O(()=>I(n)?`Edit Guardrail`:`Create Guardrail`);sT(e,{get open(){return nL.formOpen},get title(){return I(r)},ariaLabel:`Guardrail editor`,get error(){return nL.error},get submitting(){return nL.formSubmitting},submitLabel:`Save Guardrail`,dialogClass:`settings-guardrails-editor guardrails-editor-wide`,onclose:()=>nL.closeForm(),onsubmit:()=>nL.submitForm(),headerHint:t,children:(e,t)=>{var r=TL(),i=M(r);lT(i,{id:`guardrail-name`,label:`Name`,children:(e,t)=>{var r=fL();na(r),F(()=>{r.disabled=I(n),W(r,`data-modal-autofocus`,!I(n)||void 0)}),da(r,()=>nL.form.name,e=>nL.form.name=e),z(e,r)},$$slots:{default:!0}});var a=P(i,2);lT(a,{id:`guardrail-type`,label:`Type`,children:(e,t)=>{var r=mL();H(r,21,()=>nL.types,e=>e.type,(e,t)=>{var n=pL(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).type)&&(n.value=(n.__value=I(t).type)??``)}),z(e,n)}),T(r);var i;Wi(r),F(()=>{r.disabled=I(n),i!==(i=nL.form.type)&&(r.value=(r.__value=nL.form.type)??``,Ui(r,nL.form.type))}),L(`change`,r,e=>nL.changeType(e.currentTarget.value)),z(e,r)},$$slots:{default:!0}});var o=P(a,2);lT(o,{id:`guardrail-description`,label:`Description`,children:(e,t)=>{var r=hL();na(r),F(()=>W(r,`data-modal-autofocus`,I(n)?!0:void 0)),da(r,()=>nL.form.description,e=>nL.form.description=e),z(e,r)},$$slots:{default:!0}});var s=P(o,2),c=M(s);Hx(c,{copyId:`guardrail-user-path-help-copy`,label:`guardrail user path help`,text:`Only used for auxiliary rewrite (llm_based_altering) guardrails; ignored for other guardrail types.`,title:e=>{z(e,gL())},$$slots:{title:!0}});var l=P(c,2);na(l),T(s),H(P(s,2),17,()=>nL.typeFields(nL.form.type),e=>e.key,(e,t)=>{var n=Qr(),r=N(n),i=e=>{var n=xL(),r=M(n);{let e=e=>{var n=_L(),r=M(n,!0);T(n),F(()=>{W(n,`for`,`guardrail-field-`+I(t).key),B(r,I(t).label)}),z(e,n)},n=O(()=>`guardrail-field-help-`+I(t).key),i=O(()=>I(t).label+` help`),a=O(()=>I(t).help||``);Hx(r,{get copyId(){return I(n)},get label(){return I(i)},get text(){return I(a)},title:e,$$slots:{title:!0}})}var i=P(r,2),a=e=>{var n=vL();H(n,21,()=>I(t).options||[],e=>e.value,(e,t)=>{var n=pL(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n);var r;Wi(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0),r!==(r=e)&&(n.value=(n.__value=e)??``,Ui(n,e))},[()=>nL.fieldValue(I(t))]),L(`change`,n,e=>nL.setFieldValue(I(t),e.currentTarget.value)),z(e,n)},o=e=>{var n=yL();ft(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`placeholder`,I(t).placeholder||``),ra(n,e),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0)},[()=>nL.fieldValue(I(t))]),L(`input`,n,e=>nL.setFieldValue(I(t),e.currentTarget.value)),z(e,n)},s=e=>{var n=bL();na(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`type`,I(t).input||`text`),W(n,`placeholder`,I(t).placeholder||``),ra(n,e),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0)},[()=>nL.fieldValue(I(t))]),L(`input`,n,e=>nL.setFieldValue(I(t),e.currentTarget.value)),z(e,n)};V(i,e=>{I(t).input===`select`?e(a):I(t).input===`textarea`?e(o,1):e(s,-1)}),T(n),z(e,n)},a=e=>{var n=wL(),r=M(n),i=M(r,!0);T(r);var a=P(r,2);H(a,21,()=>I(t).options||[],e=>I(t).key+`-`+e.value,(e,n)=>{var r=SL(),i=M(r);na(i);var a=P(i,2),o=M(a,!0);T(a),T(r),F(e=>{ia(i,e),B(o,I(n).label)},[()=>nL.arrayFieldSelected(I(t),I(n).value)]),L(`change`,i,e=>nL.toggleArrayFieldValue(I(t),I(n).value,e.currentTarget.checked)),z(e,r)}),T(a);var o=P(a,2),s=e=>{var n=CL(),r=M(n,!0);T(n),F(()=>{W(n,`id`,`guardrail-field-help-`+I(t).key),B(r,I(t).help)}),z(e,n)};V(o,e=>{I(t).help&&e(s)}),T(n),F(()=>{W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0),B(i,I(t).label)}),z(e,n)};V(r,e=>{I(t).input===`checkboxes`?e(a,-1):e(i)}),z(e,n)}),T(r),da(l,()=>nL.form.user_path,e=>nL.form.user_path=e),z(e,r)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`change`,`input`]);var DL=R(`

Guardrails

`),OL=R(`
Runtime guardrail execution is currently off because GUARDRAILS_ENABLED is disabled. You can still manage + definitions here.
`),kL=R(`
Guardrails feature is unavailable.
`),AL=R(`
`),jL=R(`

Reusable Policy Objects

Guardrail Library

Store guardrails in the database, keep them hot in memory, and attach + them to workflows by reference.

Instances
Types
`);function ML(e,t){E(t,!0),An(()=>{q.refreshTick,Va.page===`guardrails`&&(go.ensureLoaded(),nL.fetchPage())});var n=jL(),r=M(n),i=M(r);Hx(M(i),{copyId:`guardrails-help-copy`,label:`guardrails help`,text:`Reusable policy objects stored in the database and kept hot in memory for workflow execution.`,title:e=>{z(e,DL())},$$slots:{title:!0}}),T(i),T(r);var a=P(r,2),o=P(M(a),2),s=M(o),c=P(M(s),2),l=M(c,!0);T(c),T(s);var u=P(s,2),d=P(M(u),2),f=M(d,!0);T(d),T(u),T(o),T(a);var p=P(a,2);As(p,{});var m=P(p,2),h=e=>{z(e,OL())},g=O(()=>!go.guardrailsVisible());V(m,e=>{I(g)&&e(h)});var _=P(m,2),v=e=>{z(e,kL())};V(_,e=>{!q.authError&&!nL.available&&e(v)});var y=P(_,2),b=e=>{var t=AL(),n=M(t,!0);T(t),F(()=>B(n,nL.error)),z(e,t)};V(y,e=>{!q.authError&&nL.error&&!nL.formOpen&&e(b)});var x=P(y,2);EL(x,{}),uL(P(x,2),{}),T(n),F((e,t)=>{B(l,e),B(f,t)},[()=>ts(nL.guardrails.length),()=>ts(nL.types.length)]),z(e,n),D()}var Q=new class{#e=k(j([]));get servers(){return I(this.#e)}set servers(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get formSubmitting(){return I(this.#o)}set formSubmitting(e){A(this.#o,e,!0)}#s=k(`create`);get formMode(){return I(this.#s)}set formMode(e){A(this.#s,e,!0)}#c=k(!1);get slugEdited(){return I(this.#c)}set slugEdited(e){A(this.#c,e,!0)}#l=k(!1);get advancedOpen(){return I(this.#l)}set advancedOpen(e){A(this.#l,e,!0)}#u=k(j(ob()));get form(){return I(this.#u)}set form(e){A(this.#u,e,!0)}#d=k(``);get deletingName(){return I(this.#d)}set deletingName(e){A(this.#d,e,!0)}#f=k(``);get reconnectingName(){return I(this.#f)}set reconnectingName(e){A(this.#f,e,!0)}#p=k(!1);get catalogOpen(){return I(this.#p)}set catalogOpen(e){A(this.#p,e,!0)}#m=k(!1);get catalogLoading(){return I(this.#m)}set catalogLoading(e){A(this.#m,e,!0)}#h=k(``);get catalogError(){return I(this.#h)}set catalogError(e){A(this.#h,e,!0)}#g=k(j(sb()));get catalog(){return I(this.#g)}set catalog(e){A(this.#g,e,!0)}#_=O(()=>vb(this.servers,this.filter));get filtered(){return I(this.#_)}set filtered(e){A(this.#_,e)}async fetchServers(){if(await go.ensureLoaded(),!go.mcpVisible()){this.available=!1,this.servers=[],this.error=``,this.loading=!1;return}this.loading=!0,this.error=``;try{let e=await iw(`/admin/mcp-servers`,{label:`mcp servers`,errorFallback:`Failed to load MCP servers.`,unavailableStatuses:[503,404]});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.servers=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.servers=[],this.error=e.error;return}this.available=!0,this.servers=e.items}finally{this.loading=!1}}openCreate(){this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=ob(),this.formOpen=!0}openEdit(e){!e||e.managed||(this.formMode=`edit`,this.slugEdited=!0,this.advancedOpen=!1,this.error=``,this.form=yb(e),this.formOpen=!0)}closeForm(){this.formOpen=!1,this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=ob()}syncSlugFromName(){this.formMode===`create`&&!this.slugEdited&&(this.form.slug=mb(this.form.name))}markSlugEdited(){this.formMode===`create`&&(this.slugEdited=!0)}addHeader(){this.form.headers.push({name:``,value:``})}removeHeader(e){this.form.headers.splice(e,1)}async submitForm(){let e=bb(this.form,this.formMode,this.servers);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await aw(`/admin/mcp-servers`,`PUT`,e.payload,{label:`save mcp server`,errorFallback:`Failed to save MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}qo.success(`MCP server "`+e.payload.name+`" saved.`),this.closeForm(),this.fetchServers()}finally{this.formSubmitting=!1}}async deleteServer(e){let t=String(e&&e.name||``).trim(),n=cb(e);if(!(!n||this.deletingName||e&&e.managed)&&confirm(`Delete MCP server "`+t+`"? Clients lose access to its tools immediately.`)){this.deletingName=n;try{let e=await aw(`/admin/mcp-servers/`+encodeURIComponent(n),`DELETE`,void 0,{label:`delete mcp server`,errorFallback:`Failed to delete MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,qo.error(e.error);return}if(e.status===`error`){qo.error(e.error);return}qo.success(`MCP server "`+t+`" deleted.`),this.formOpen&&this.form.slug===n&&this.closeForm(),this.fetchServers()}finally{this.deletingName=``}}}async reconnectServer(e){let t=String(e&&e.name||``).trim(),n=cb(e);if(!(!n||this.reconnectingName)){this.reconnectingName=n;try{let e=await aw(`/admin/mcp-servers/`+encodeURIComponent(n)+`/reconnect`,`POST`,void 0,{label:`reconnect mcp server`,errorFallback:`Failed to reconnect MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,qo.error(e.error);return}if(e.status===`error`){qo.error(e.error);return}let r=e.result.data,i=lb(r);i===`connected`?qo.success(`MCP server "`+t+`" reconnected.`):i===`disabled`?qo.success(`MCP server "`+t+`" is disabled; no connection was attempted.`):qo.error(`Reconnect attempted, but MCP server "`+t+`" is still `+i+`.`),r&&r.name?this.servers=(this.servers||[]).map(e=>cb(e)===cb(r)?r:e):this.fetchServers()}finally{this.reconnectingName=``}}}async openCatalog(e){let t=String(e&&e.name||``).trim(),n=cb(e);if(n){this.catalogOpen=!0,this.catalogLoading=!0,this.catalogError=``,this.catalog={...sb(),server:n,status:lb(e)};try{let e=await uo(`/admin/mcp-servers/`+encodeURIComponent(n)+`/catalog`,{label:`mcp server catalog`});if(e.stale)return;if(e.status===503){this.available=!1,this.catalogError=`MCP server management is unavailable.`;return}if(e.status===404){this.catalogError=`MCP server "`+t+`" was not found.`;return}if(!e.ok){this.catalogError=e.status===401?`Authentication required.`:ao(e.data,`Failed to load MCP server catalog.`);return}this.catalog=xb(n,e.data)}catch(e){console.error(`Failed to load MCP server catalog:`,e),this.catalogError=`Failed to load MCP server catalog.`}finally{this.catalogLoading=!1}}}closeCatalog(){this.catalogOpen=!1,this.catalogLoading=!1,this.catalogError=``,this.catalog=sb()}},NL=R(``),PL=R(`

`),FL=R(`
`),IL=R(`

`),LL=R(`
  • `),RL=R(`

      `),zL=R(`

      No tools listed — the server may still be connecting or degraded.

      `),BL=R(` `,1),VL=R(``);function HL(e,t){E(t,!0);let n=O(()=>Cb(Q.catalog));Do(e,{get open(){return Q.catalogOpen},variant:`editor`,onclose:()=>Q.closeCatalog(),children:(e,t)=>{var r=VL(),i=M(r),a=M(i),o=P(M(a),2),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=M(l,!0);T(l),T(o),T(a),Co(P(a,2),{label:`Close MCP server catalog`,onclick:()=>Q.closeCatalog()}),T(i);var d=P(i,2),f=e=>{tw(e,{label:`Loading catalog...`})},p=e=>{var t=NL(),n=M(t,!0);T(t),F(()=>B(n,Q.catalogError)),z(e,t)},m=e=>{var t=BL(),r=N(t),i=e=>{var t=PL(),n=M(t,!0);T(t),F(()=>B(n,Q.catalog.instructions)),z(e,t)};V(r,e=>{Q.catalog.instructions&&e(i)});var a=P(r,2);H(a,17,()=>I(n),e=>e.key,(e,t)=>{var n=RL(),r=M(n),i=M(r,!0);T(r);var a=P(r,2);H(a,21,()=>I(t).items,e=>e.key,(e,t)=>{var n=LL(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{var n=FL(),r=M(n,!0);T(n),F(()=>{W(n,`title`,`Exposed on the aggregated /mcp endpoint as `+I(t).aggregated),B(r,I(t).aggregated)}),z(e,n)};V(a,e=>{I(t).aggregated&&e(o)});var s=P(a,2),c=e=>{var n=IL(),r=M(n,!0);T(n),F(()=>B(r,I(t).description)),z(e,n)};V(s,e=>{I(t).description&&e(c)}),T(n),F(()=>{W(r,`title`,I(t).aggregated||I(t).name),B(i,I(t).name)}),z(e,n)}),T(a),T(n),F(()=>B(i,I(t).title)),z(e,n)});var o=P(a,2),s=e=>{z(e,zL())},c=O(()=>wb(Q.catalog));V(o,e=>{I(c)&&e(s)}),z(e,t)};V(d,e=>{Q.catalogLoading?e(f):Q.catalogError?e(p,1):e(m,-1)});var h=P(d,2),g=M(h);T(h),T(r),F((e,t)=>{B(c,Q.catalog.server),U(l,1,`audit-status-badge ${e??``}`,`svelte-1xqrzco`),B(u,t)},[()=>ub(Q.catalog),()=>lb(Q.catalog)]),L(`click`,g,()=>Q.closeCatalog()),z(e,r)},$$slots:{default:!0}}),D()}Hr([`click`]);var UL=R(`

      The display name can change. The slug is the stable client-facing identity.

      `),WL=R(` Human-readable and Unicode-friendly. You can change it later.`,1),GL=R(`Derived from the name. You may edit it before saving.`),KL=R(`Immutable because it is used in URLs, scope headers, and aggregated tool names.`),qL=R(` `,1),JL=R(` stdio servers are config-only: declare them in config.yaml under mcp.servers.`,1),YL=R(``),XL=R(`
      `),ZL=R(`
      Headers
      Sent only to the configured server origin. Saved values are shown as ***; leave *** unchanged to keep the stored value.
      Advanced settings Description, access rules, and timeout
      `,1);function QL(e,t){E(t,!0);{let t=e=>{z(e,UL())},n=O(()=>Q.formMode===`edit`?`Edit MCP Server`:`Add MCP Server`);sT(e,{get open(){return Q.formOpen},get title(){return I(n)},ariaLabel:`MCP server editor`,get error(){return Q.error},get submitting(){return Q.formSubmitting},onclose:()=>Q.closeForm(),onsubmit:()=>Q.submitForm(),headerHint:t,children:(e,t)=>{var n=ZL(),r=N(n);lT(r,{id:`mcp-server-name`,label:`Name`,children:(e,t)=>{var n=WL(),r=N(n);na(r),Ue(2),L(`input`,r,()=>Q.syncSlugFromName()),da(r,()=>Q.form.name,e=>Q.form.name=e),z(e,n)},$$slots:{default:!0}});var i=P(r,2);lT(i,{id:`mcp-server-slug`,label:`Slug`,children:(e,t)=>{var n=qL(),r=N(n);na(r);var i=P(r,2),a=e=>{z(e,GL())},o=e=>{z(e,KL())};V(i,e=>{Q.formMode===`create`?e(a):e(o,-1)}),F(()=>r.disabled=Q.formMode===`edit`),L(`input`,r,()=>Q.markSlugEdited()),da(r,()=>Q.form.slug,e=>Q.form.slug=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2);lT(a,{id:`mcp-server-transport`,label:`Transport`,children:(e,t)=>{var n=JL(),r=N(n),i=M(r);i.value=i.__value=`http`;var a=P(i);a.value=a.__value=`sse`,T(r),Ue(2),Gi(r,()=>Q.form.transport,e=>Q.form.transport=e),z(e,n)},$$slots:{default:!0}});var o=P(a,2);lT(o,{id:`mcp-server-url`,label:`URL`,children:(e,t)=>{var n=YL();na(n),da(n,()=>Q.form.url,e=>Q.form.url=e),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=P(M(s),2);H(c,21,()=>Q.form.headers,oi,(e,t,n)=>{var r=XL(),i=M(r);na(i);var a=P(i,2);na(a),rw(P(a,2),{label:`Remove header`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removeHeader(n),children:(e,t)=>{K(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}}),T(r),da(i,()=>I(t).name,e=>I(t).name=e),da(a,()=>I(t).value,e=>I(t).value=e),z(e,r)}),T(c);var l=P(c,2),u=M(l);K(M(u),{name:`plus`,class:`form-action-icon`}),Ue(2),T(u),T(l),Ue(2),T(s);var d=P(s,2),f=M(d);sk(M(f),{get enabled(){return Q.form.enabled},label:`MCP server`,onclick:()=>Q.form.enabled=!Q.form.enabled}),T(f),T(d);var p=P(d,2),m=P(M(p),2),h=M(m),g=P(M(h),2);na(g),T(h);var _=P(h,2),v=P(M(_),2);na(v),T(_);var y=P(_,2),b=P(M(y),2);na(b),T(y);var x=P(y,2),S=P(M(x),2);ft(S),W(S,`placeholder`,`/ +/team/alpha`),T(x);var C=P(x,2),w=P(M(C),2);na(w),T(C),T(m),T(p),F(()=>p.open=Q.advancedOpen),L(`click`,u,()=>Q.addHeader()),Vr(`toggle`,p,e=>Q.advancedOpen=e.currentTarget.open),da(g,()=>Q.form.description,e=>Q.form.description=e),da(v,()=>Q.form.allowed_tools,e=>Q.form.allowed_tools=e),da(b,()=>Q.form.disallowed_tools,e=>Q.form.disallowed_tools=e),da(S,()=>Q.form.user_paths,e=>Q.form.user_paths=e),da(w,()=>Q.form.tool_timeout_seconds,e=>Q.form.tool_timeout_seconds=e),z(e,n)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`input`,`click`]);var $L=R(`Config`),eR=R(`
      `),tR=R(`
      `),nR=R(`
      NameTransportEndpointStatusToolsEnabledActions
      `);function rR(e,t){E(t,!0);function n(e){return db(e,e=>io.formatTimestamp(e))}var r=nR(),i=M(r),a=P(M(i));H(a,21,()=>Q.filtered,e=>cb(e),(e,t)=>{var r=tR(),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=e=>{z(e,$L())};V(s,e=>{I(t).managed&&e(c)});var l=P(s,2),u=M(l,!0);T(l),T(i);var d=P(i),f=M(d),p=M(f,!0);T(f),T(d);var m=P(d),h=M(m,!0);T(m);var g=P(m),_=M(g),v=M(_,!0);T(_);var y=P(_,2),b=e=>{var n=eR(),r=M(n,!0);T(n),F(()=>B(r,I(t).last_error)),z(e,n)},x=O(()=>lb(I(t))===`degraded`&&I(t).last_error);V(y,e=>{I(x)&&e(b)}),T(g);var S=P(g),C=M(S),w=M(C,!0);T(C);var ee=P(C,2),te=M(ee,!0);T(ee),T(S);var ne=P(S),re=M(ne),ie=M(re,!0);T(re),T(ne);var ae=P(ne),oe=M(ae),se=M(oe),ce=e=>{{let n=O(()=>`Edit MCP server `+I(t).name);rw(e,{get label(){return I(n)},class:`table-icon-btn`,onclick:()=>Q.openEdit(I(t)),children:(e,t)=>{K(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(se,e=>{I(t).managed||e(ce)});var le=P(se,2);{let e=O(()=>`Inspect catalog of MCP server `+I(t).name);rw(le,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Q.openCatalog(I(t)),children:(e,t)=>{K(e,{name:`list`,class:`form-action-icon`})},$$slots:{default:!0}})}var ue=P(le,2);{let e=O(()=>(Q.reconnectingName===cb(I(t))?`Reconnecting MCP server `:`Reconnect MCP server `)+I(t).name),n=O(()=>Q.reconnectingName===cb(I(t)));rw(ue,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Q.reconnectServer(I(t)),get disabled(){return I(n)},children:(e,t)=>{K(e,{name:`refresh-cw`,class:`form-action-icon`})},$$slots:{default:!0}})}var de=P(ue,2),fe=e=>{{let n=O(()=>(Q.deletingName===cb(I(t))?`Deleting MCP server `:`Delete MCP server `)+I(t).name),r=O(()=>Q.deletingName===cb(I(t)));rw(e,{get label(){return I(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>Q.deleteServer(I(t)),get disabled(){return I(r)},children:(e,t)=>{K(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(de,e=>{I(t).managed||e(fe)}),T(oe),T(ae),T(r),F((e,n,r,i,a,s,c,l)=>{B(o,I(t).name),B(u,e),B(p,I(t).transport||`http`),W(m,`title`,n),B(h,r),U(_,1,`audit-status-badge ${i??``}`,`svelte-ah8nrt`),W(_,`title`,a),B(v,s),B(w,c),B(te,l),U(re,1,Fi([`auth-key-status-badge`,I(t).enabled?`auth-key-status-active`:`auth-key-status-inactive`])),B(ie,I(t).enabled?`Enabled`:`Disabled`)},[()=>cb(I(t)),()=>fb(I(t)),()=>fb(I(t)),()=>ub(I(t)),()=>n(I(t)),()=>lb(I(t)),()=>ts(I(t).tool_count||0),()=>pb(I(t))]),z(e,r)}),T(a),T(i),T(r),z(e,r),D()}var iR=R(`

      MCP Servers

      `),aR=R(``),oR=R(`
      MCP server management is unavailable.
      `),sR=R(``),cR=R(`
      `),lR=R(`

      No MCP servers yet. Add one here, or declare servers in config.yaml under mcp.servers.

      `),uR=R(`

      No MCP servers match your filter.

      `),dR=R(`
      `);function fR(e,t){E(t,!0),An(()=>{q.refreshTick,Va.page===`mcp-servers`&&Q.fetchServers()});var n=dR(),r=M(n),i=M(r);Hx(M(i),{copyId:`mcp-servers-help-copy`,label:`MCP servers help`,text:`Upstream Model Context Protocol servers whose tools, prompts, and resources the gateway exposes to clients. Servers added here connect over HTTP or SSE; stdio servers and rows marked Config are declared in config.yaml under mcp.servers and are read-only in the dashboard. Saved header values are masked in API and dashboard responses.`,title:e=>{z(e,iR())},$$slots:{title:!0}}),T(i);var a=P(i,2),o=M(a),s=e=>{var t=aR();K(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=Q.formSubmitting),L(`click`,t,()=>Q.openCreate()),z(e,t)};V(o,e=>{Q.available&&!q.authError&&e(s)}),T(a),T(r);var c=P(r,2),l=e=>{z(e,oR())};V(c,e=>{!Q.available&&!q.authError&&e(l)});var u=P(c,2),d=e=>{var t=sR(),n=M(t,!0);T(t),F(()=>B(n,Q.error)),z(e,t)};V(u,e=>{Q.error&&!q.authError&&!Q.formOpen&&e(d)});var f=P(u,2),p=e=>{tw(e,{label:`Loading MCP servers...`})};V(f,e=>{Q.loading&&!q.authError&&e(p)});var m=P(f,2),h=e=>{var t=cR(),n=M(t);oC(M(n),{id:`mcp-server-filter`,placeholder:`Filter by name, slug, URL, transport, or status...`,label:`Filter MCP servers by name, slug, URL, transport, or status`,get value(){return Q.filter},set value(e){Q.filter=e}}),T(n),T(t),z(e,t)};V(m,e=>{(Q.servers.length>0||Q.filter)&&Q.available&&!q.authError&&e(h)});var g=P(m,2);QL(g,{});var _=P(g,2);HL(_,{});var v=P(_,2),y=e=>{rR(e,{})};V(v,e=>{Q.filtered.length>0&&Q.available&&!q.authError&&e(y)});var b=P(v,2),x=e=>{z(e,lR())};V(b,e=>{Q.servers.length===0&&!Q.filter&&!Q.loading&&!q.authError&&!Q.error&&Q.available&&e(x)});var S=P(b,2),C=e=>{z(e,uR())};V(S,e=>{Q.servers.length>0&&Q.filtered.length===0&&Q.filter&&!Q.loading&&!q.authError&&Q.available&&e(C)}),T(n),z(e,n),D()}Hr([`click`]);var pR=`api_keys`,mR=`session_sticky_keys`,hR=`base_url`,gR=`service_account_json`,_R=`models`,vR={[pR]:{label:`API Keys`,control:`keys`,hint:`Identified sessions stay on one key by default, improving provider prompt-cache hits. Saved values are shown as ***********; leave the asterisks unchanged to keep the stored key.`},[mR]:{label:`Session-sticky API keys`,control:`checkbox`,hint:`Keep each identified conversation on one API key to preserve provider prompt-cache affinity. Turn off to rotate keys round-robin on every request.`},[hR]:{label:`Base URL`,control:`text`},api_version:{label:`API Version`,control:`text`,placeholder:`e.g. 2024-10-01-preview`,hint:`Leave empty for the provider default. Realtime endpoints may need a newer version.`},backend:{label:`Backend`,control:`select`,hint:`Which Google surface to call. Vertex authenticates with Google credentials instead of an API key.`},auth_type:{label:`Auth Type`,control:`select`,hint:`How to obtain Google credentials. Leave on the default to use Application Default Credentials.`},api_mode:{label:`API Mode`,control:`select`,hint:`Which request shape to send upstream.`},vertex_project:{label:`Vertex Project`,control:`text`,placeholder:`my-gcp-project`},vertex_location:{label:`Vertex Location`,control:`text`,placeholder:`us-central1`},service_account_file:{label:`Service Account File`,control:`text`,placeholder:`/path/to/service-account.json`,hint:`Path readable by the gateway process.`},[gR]:{label:`Service Account JSON`,control:`textarea`,placeholder:`Paste service account JSON`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value, or clear it to remove.`},service_account_json_base64:{label:`Service Account JSON (base64)`,control:`text`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value.`},gcp_scope:{label:`GCP Scope`,control:`text`,placeholder:`https://www.googleapis.com/auth/cloud-platform`},[_R]:{label:`Models (comma-separated)`,control:`text`,placeholder:`gpt-4o, gpt-4o-mini`,hint:`Leave empty to auto-discover models from the provider's /models endpoint where supported.`}};function yR(e){return vR[e]||{label:String(e||``).split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),control:`text`}}function bR(){return{name:``,type:``,api_keys:[],session_sticky_keys:!0,base_url:``,api_version:``,backend:``,auth_type:``,api_mode:``,vertex_project:``,vertex_location:``,service_account_file:``,service_account_json:``,service_account_json_base64:``,gcp_scope:``,models:``,enabled:!0}}function xR(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.type,e.base_url].some(e=>String(e||``).toLowerCase().includes(r)))}function SR(e,t){let n=(Array.isArray(e)?e:[]).map(e=>String(e&&e.type||``).trim()).filter(Boolean),r=String(t||``).trim();return r&&!n.includes(r)&&n.push(r),n}function CR(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>String(e&&e.type||``).trim()===n)||null}function wR(e,t){let n=e&&Array.isArray(e.fields)&&e.fields.length>0?e.fields:Object.keys(vR).map(e=>({name:e,advanced:e!==pR})),r=t||e&&e.default_base_url||``,i=[],a=[];for(let e of n){let t=String(e&&e.name||``).trim();if(!t)continue;let n={...yR(t),name:t,required:!!(e&&e.required),options:Array.isArray(e&&e.options)?e.options:[]};t===`base_url`&&r&&(n.placeholder=r,n.hint=`Defaults to `+r),n.options.length>0&&(n.control=`select`),(e&&e.advanced?a:i).push(n)}return{primary:i,advanced:a}}var TR=new Set([`name`,`type`,`enabled`]);function ER(e,t){let n=new Set([...t.primary||[],...t.advanced||[]].map(e=>e.name)),r=bR(),i={...e};for(let e of Object.keys(r))!TR.has(e)&&!n.has(e)&&(i[e]=r[e]);return i}function DR(e){let t=Array.isArray(e&&e.api_keys)?e.api_keys.length:0;return t>0?t+` key`+(t===1?``:`s`):String(e&&e.service_account_json||``).trim()||String(e&&e.service_account_json_base64||``).trim()||String(e&&e.service_account_file||``).trim()?`service account`:String(e&&e.vertex_project||``).trim()?`ADC`:`keyless`}function OR(e){let t=Array.isArray(e&&e.models)?e.models:[];return t.length===0?`auto-discovered`:t.length+` model`+(t.length===1?``:`s`)}function kR(e){return(Array.isArray(e)?e:[]).map(e=>({value:String(e||``)}))}function AR(e){return(Array.isArray(e)?e:[]).map(e=>String(e&&e.value||``))}function jR(e,t){let n=String(t||``).trim();if(!n)return``;let r=new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.name||``).trim()));if(!r.has(n))return n;let i=1;for(;r.has(n+`-`+i);)i+=1;return n+`-`+i}function MR(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),api_keys:kR(e&&e.api_keys),session_sticky_keys:!e||e.session_sticky_keys!==!1,base_url:String(e&&e.base_url||``),api_version:String(e&&e.api_version||``),backend:String(e&&e.backend||``),auth_type:String(e&&e.auth_type||``),api_mode:String(e&&e.api_mode||``),vertex_project:String(e&&e.vertex_project||``),vertex_location:String(e&&e.vertex_location||``),service_account_file:String(e&&e.service_account_file||``),service_account_json:String(e&&e.service_account_json||``),service_account_json_base64:String(e&&e.service_account_json_base64||``),gcp_scope:String(e&&e.gcp_scope||``),models:(Array.isArray(e&&e.models)?e.models:[]).join(`, `),enabled:!e||e.enabled!==!1}}function NR(e){let t=String(e||``).trim();return t.length>=3&&/^\*+$/.test(t)}function PR(e,t,n,r){let i={},a=String(e&&e.name||``).trim();String(e&&e.type||``).trim()||(i.type=`Select a provider type.`),a?a.includes(`/`)?i.name=`Name cannot contain '/' — it separates the provider from the model.`:t===`create`&&(Array.isArray(n)?n:[]).some(e=>String(e&&e.name||``).trim()===a)&&(i.name=`Provider "`+a+`" already exists.`):i.name=`Name is required.`;let{primary:o,advanced:s}=wR(r);for(let t of[...o,...s]){let n=FR(e,t);n&&(i[t.name]=n)}return i}function FR(e,t){if(t.name===`api_keys`){let n=AR(e&&e.api_keys);return t.required&&!n.some(e=>e.trim())?`At least one API key is required for this provider type.`:n.some(e=>!e.trim())?`Remove the empty row instead of leaving a key blank.`:``}let n=String(e&&e[t.name]||``).trim();if(t.required&&!n)return t.label+` is required for this provider type.`;if(!n)return``;if(t.name===`base_url`&&!n.includes(`://`)&&/[./]/.test(n))return`Include the scheme, e.g. https://`+n;if(t.name===`service_account_json`&&!NR(n))try{JSON.parse(n)}catch{return`Paste the service account JSON file's contents — this is not valid JSON.`}return``}function IR(e,t){let n={name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),enabled:!!(e&&e.enabled)},{primary:r,advanced:i}=wR(t),a=!!(t&&Array.isArray(t.fields)&&t.fields.length>0),o=new Set;for(let t of[...r,...i])!a&&t.name===`session_sticky_keys`||(o.add(t.name),n[t.name]=LR(e,t.name));for(let t of Object.keys(vR)){if(o.has(t)||t===`session_sticky_keys`)continue;let r=LR(e,t);(Array.isArray(r)?r.length>0:String(r).trim()!==``)&&(n[t]=r)}return n}function LR(e,t){switch(t){case pR:return AR(e&&e.api_keys);case _R:return $o(e&&e.models);case mR:return!!(e&&e.session_sticky_keys);case gR:return e&&e.service_account_json||``;default:return String(e&&e[t]||``).trim()}}var $=new class{#e=k(j([]));get rows(){return I(this.#e)}set rows(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get formSubmitting(){return I(this.#o)}set formSubmitting(e){A(this.#o,e,!0)}#s=k(`create`);get formMode(){return I(this.#s)}set formMode(e){A(this.#s,e,!0)}#c=k(!1);get advancedOpen(){return I(this.#c)}set advancedOpen(e){A(this.#c,e,!0)}#l=k(j(bR()));get form(){return I(this.#l)}set form(e){A(this.#l,e,!0)}#u=k(j({}));get fieldErrors(){return I(this.#u)}set fieldErrors(e){A(this.#u,e,!0)}#d=k(``);get focusField(){return I(this.#d)}set focusField(e){A(this.#d,e,!0)}#f=k(``);get deletingName(){return I(this.#f)}set deletingName(e){A(this.#f,e,!0)}#p=k(!1);get deleteSubmitting(){return I(this.#p)}set deleteSubmitting(e){A(this.#p,e,!0)}#m=k(j([]));get types(){return I(this.#m)}set types(e){A(this.#m,e,!0)}#h=k(!1);get typesLoaded(){return I(this.#h)}set typesLoaded(e){A(this.#h,e,!0)}#g=null;get filteredRows(){return xR(this.rows,this.filter)}get schema(){return CR(this.types,this.form.type)}get formFields(){if(!String(this.form.type||``).trim())return{primary:[],advanced:[]};let e=this.schema;return wR(e,e&&e.default_base_url)}async fetchTypes(){let e=await iw(`/admin/provider-credentials/types`,{label:`provider credential types`});e.status===`ok`&&(this.types=e.items,this.typesLoaded=!0)}async fetchPage(){this.#g&&this.#g.abort();let e=new AbortController;this.#g=e,this.loading=!0,this.error=``;try{let t=await iw(`/admin/provider-credentials`,{label:`provider credentials`,errorFallback:`Failed to load provider credentials.`,unavailableStatuses:[503,404],options:{signal:e.signal}});if(t.status===`stale`||e.signal.aborted)return;if(t.status===`unavailable`){this.available=!1,this.rows=[];return}if(t.status===`error`){t.result&&(this.available=!0),this.rows=[],this.error=t.error;return}this.available=!0,this.rows=t.items,this.typesLoaded||await this.fetchTypes()}finally{this.#g===e&&(this.#g=null,this.loading=!1)}}#_(e,t){this.formMode=e,this.form=t,this.advancedOpen=!1,this.error=``,this.fieldErrors={},this.focusField=``}openCreate(){this.#_(`create`,bR()),this.formOpen=!0,this.typesLoaded||this.fetchTypes()}openEdit(e){!e||e.managed||(this.#_(`edit`,MR(e)),this.formOpen=!0,this.typesLoaded||this.fetchTypes())}closeForm(){this.formOpen=!1,this.#_(`create`,bR())}selectType(){this.fieldErrors={};let e=this.formFields;this.formMode===`create`&&(this.form=ER(this.form,e));let t=e.primary.find(e=>e.name===`api_keys`);t&&t.required&&this.form.api_keys.length===0&&(this.form.api_keys=[{value:``}])}clearFieldError(e){if(this.fieldErrors[e]===void 0)return;let{[e]:t,...n}=this.fieldErrors;this.fieldErrors=n}addApiKeyRow(){this.form.api_keys.push({value:``}),this.clearFieldError(`api_keys`)}removeApiKeyRow(e){this.form.api_keys.splice(e,1),this.clearFieldError(`api_keys`)}#v(e){let t=ao(e,`Failed to save provider credential.`),n=String(e&&e.error&&typeof e.error==`object`&&e.error.param||``).trim();if(n&&this.#y(n)){this.fieldErrors={...this.fieldErrors,[n]:t},this.error=``,this.#b();return}this.error=t}#y(e){if(e===`name`||e===`type`)return!0;let{primary:t,advanced:n}=this.formFields;return[...t,...n].some(t=>t.name===e)}#b(){let e=Object.keys(this.fieldErrors);if(e.length===0)return;let{primary:t,advanced:n}=this.formFields;n.some(t=>e.includes(t.name))&&(this.advancedOpen=!0);let r=[`type`,`name`,...t.map(e=>e.name),...n.map(e=>e.name)];this.focusField=r.find(t=>e.includes(t))||e[0]}#x(){Os.fetchModels(),Os.fetchCategories()}async submitForm(){let e=this.schema,t=PR(this.form,this.formMode,this.rows,e);if(Object.keys(t).length>0){this.fieldErrors=t,this.error=``,this.#b();return}let n=IR(this.form,e);this.error=``,this.fieldErrors={},this.formSubmitting=!0;try{let e=await aw(`/admin/provider-credentials`,`PUT`,n,{label:`save provider credential`,errorFallback:`Failed to save provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.error=e.error;return}if(e.status===`error`){e.result&&e.result.status!==401?this.#v(e.result.data):this.error=e.error;return}qo.success(`Provider "`+n.name+`" saved.`),this.closeForm(),this.#x(),this.fetchPage()}finally{this.formSubmitting=!1}}async performDelete(e){this.deleteSubmitting=!0,this.deletingName=e;try{let t=await aw(`/admin/provider-credentials/`+encodeURIComponent(e),`DELETE`,void 0,{label:`delete provider credential`,errorFallback:`Failed to delete provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,Mo.error=t.error;return}if(t.status===`error`){Mo.error=t.error;return}qo.success(`Provider "`+e+`" deleted.`),Mo.close(),this.formOpen&&this.form.name===e&&this.closeForm(),this.#x(),this.fetchPage()}finally{this.deleteSubmitting=!1,this.deletingName=``}}requestDelete(e){let t=String(e||``).trim();if(!t||this.deleteSubmitting)return;let n=(this.rows||[]).find(e=>String(e&&e.name||``).trim()===t);n&&n.managed||Mo.open({title:`Delete Provider`,titleId:`providerCredentialDeleteDialogTitle`,inputId:`provider-credential-delete-confirmation`,message:`Type "`+t+`" to permanently delete this provider credential. Requests routed to it will fail until it is reconfigured.`,requiredText:t,confirmLabel:`Delete Provider`,icon:`trash-2`,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.performDelete(t)})}},RR=R(`Config`),zR=R(` `,1),BR=R(`
      `),VR=R(`
      NameTypeBase URLAuthModelsEnabledUpdatedActions
      `);function HR(e,t){E(t,!0);var n=VR(),r=M(n),i=P(M(r));H(i,21,()=>$.filteredRows,e=>e.name,(e,t)=>{var n=BR(),r=M(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2),s=e=>{z(e,RR())};V(o,e=>{I(t).managed&&e(s)}),T(r);var c=P(r),l=M(c),u=M(l,!0);T(l),T(c);var d=P(c),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=M(h,!0);T(h);var _=P(h),v=M(_);let y;var b=M(v,!0);T(v),T(_);var x=P(_),S=M(x,!0);T(x);var C=P(x),w=M(C),ee=M(w),te=e=>{var n=zR(),r=N(n);{let e=O(()=>`Edit provider `+I(t).name);rw(r,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>$.openEdit(I(t)),children:(e,t)=>{K(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}var i=P(r,2);{let e=O(()=>($.deletingName===I(t).name?`Deleting provider `:`Delete provider `)+I(t).name),n=O(()=>$.deletingName===I(t).name);rw(i,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>$.requestDelete(I(t).name),get disabled(){return I(n)},children:(e,t)=>{K(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}z(e,n)};V(ee,e=>{I(t).managed||e(te)}),T(w),T(C),T(n),F((e,n,r)=>{B(a,I(t).name),B(u,I(t).type),W(d,`title`,I(t).base_url||``),B(f,I(t).base_url||`—`),B(m,e),B(g,n),y=U(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":I(t).enabled,"auth-key-status-inactive":!I(t).enabled}),B(b,I(t).enabled?`Enabled`:`Disabled`),B(S,r)},[()=>DR(I(t)),()=>OR(I(t)),()=>io.formatTimestamp(I(t).updated_at)]),z(e,n)}),T(i),T(r),T(n),z(e,n),D()}var UR=R(``),WR=R(`
      `),GR=R(`
      `,1),KR=R(``),qR=R(``),JR=R(``),YR=R(``),XR=R(``),ZR=R(` `),QR=R(` `),$R=R(`
      `);function ez(e,t){E(t,!0);let n=O(()=>`provider-credential-`+t.field.name),r=O(()=>$.fieldErrors[t.field.name]||``),i=O(()=>I(r)?I(n)+`-error`:t.field.hint?I(n)+`-hint`:void 0),a=O(()=>{let e=String($.form[t.field.name]||``).trim();return!e||t.field.options.includes(e)?t.field.options:[...t.field.options,e]});function o(){$.clearFieldError(t.field.name)}var s=$R(),c=M(s),l=M(c),u=P(l),d=e=>{z(e,UR())};V(u,e=>{t.field.required&&e(d)}),T(c);var f=P(c,2),p=e=>{var t=GR(),a=N(t);H(a,21,()=>$.form.api_keys,oi,(e,t,a)=>{var s=WR(),c=M(s);na(c),W(c,`aria-label`,`API key `+(a+1)),rw(P(c,2),{label:`Remove API key `+(a+1),class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>$.removeApiKeyRow(a),children:(e,t)=>{K(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}}),T(s),F(()=>{W(c,`id`,a===0?I(n):I(n)+`-`+a),W(c,`aria-invalid`,I(r)?`true`:void 0),W(c,`aria-describedby`,a===0?I(i):void 0)}),L(`input`,c,o),da(c,()=>I(t).value,e=>I(t).value=e),z(e,s)}),T(a);var s=P(a,2),c=M(s);K(M(c),{name:`plus`,class:`form-action-icon`}),Ue(2),T(c),T(s),F(()=>W(c,`id`,$.form.api_keys.length===0?I(n):void 0)),L(`click`,c,()=>$.addApiKeyRow()),z(e,t)},m=e=>{var s=qR(),c=M(s);c.value=c.__value=``,H(P(c),16,()=>I(a),e=>e,(e,t)=>{var n=KR(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(s),F(()=>{W(s,`id`,I(n)),W(s,`aria-invalid`,I(r)?`true`:void 0),W(s,`aria-describedby`,I(i))}),L(`change`,s,o),Gi(s,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,s)},h=e=>{var a=JR();na(a),F(()=>{W(a,`id`,I(n)),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`change`,a,o),fa(a,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,a)},g=e=>{var a=YR();ft(a),F(()=>{W(a,`id`,I(n)),W(a,`placeholder`,t.field.placeholder||``),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`input`,a,o),da(a,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,a)},_=e=>{var a=XR();na(a),F(()=>{W(a,`id`,I(n)),W(a,`placeholder`,t.field.placeholder||``),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`input`,a,o),da(a,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,a)};V(f,e=>{t.field.control===`keys`?e(p):t.field.control===`select`?e(m,1):t.field.control===`checkbox`?e(h,2):t.field.control===`textarea`?e(g,3):e(_,-1)});var v=P(f,2),y=e=>{var t=ZR(),i=M(t,!0);T(t),F(()=>{W(t,`id`,I(n)+`-error`),B(i,I(r))}),z(e,t)},b=e=>{var r=QR(),i=M(r,!0);T(r),F(()=>{W(r,`id`,I(n)+`-hint`),B(i,t.field.hint)}),z(e,r)};V(v,e=>{I(r)?e(y):t.field.hint&&e(b,1)}),T(s),F(()=>{W(c,`for`,I(n)),B(l,`${t.field.label??``} `)}),z(e,s),D()}Hr([`input`,`click`,`change`]);var tz=R(`

      The name is the stable identity used for routing and cannot change once created.

      `),nz=R(``),rz=R(` `),iz=R(`Determines which fields the gateway uses to build requests.`),az=R(` `),oz=R(`Suggested from the selected type; used to route requests to this provider instance and editable before saving.`),sz=R(`Immutable once created.`),cz=R(`

      Pick a type to configure its credentials — each provider type asks for different settings.

      `),lz=R(`
      Advanced settings
      `),uz=R(`
      `,1);function dz(e,t){E(t,!0);let n=O(()=>SR($.types,$.form.type)),r=O(()=>$.formFields),i=O(()=>$.fieldErrors.name||``),a=O(()=>$.fieldErrors.type||``);function o(){$.selectType(),$.formMode===`create`&&($.form.name=jR($.rows,$.form.type))}An(()=>{let e=$.focusField;if(!e)return;$.focusField=``;let t=document.getElementById(`provider-credential-`+e);t&&(t.scrollIntoView({block:`center`}),t.focus({preventScroll:!0}))});{let t=e=>{z(e,tz())},s=O(()=>$.formMode===`edit`?`Edit Provider`:`Add Provider`);sT(e,{get open(){return $.formOpen},get title(){return I(s)},ariaLabel:`Provider credential editor`,get error(){return $.error},get submitting(){return $.formSubmitting},novalidate:!0,onclose:()=>$.closeForm(),onsubmit:()=>$.submitForm(),headerHint:t,children:(e,t)=>{var s=uz(),c=N(s),l=P(M(c),2),u=M(l);u.value=u.__value=``,H(P(u),16,()=>I(n),e=>e,(e,t)=>{var n=nz(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(l);var d=P(l,2),f=e=>{var t=rz(),n=M(t,!0);T(t),F(()=>B(n,I(a))),z(e,t)},p=e=>{z(e,iz())};V(d,e=>{I(a)?e(f):e(p,-1)}),T(c);var m=P(c,2),h=P(M(m),2);na(h);var g=P(h,2),_=e=>{var t=az(),n=M(t,!0);T(t),F(()=>B(n,I(i))),z(e,t)},v=e=>{z(e,oz())},y=e=>{z(e,sz())};V(g,e=>{I(i)?e(_):$.formMode===`create`?e(v,1):e(y,-1)}),T(m);var b=P(m,2),x=e=>{z(e,cz())};V(b,e=>{$.form.type||e(x)});var S=P(b,2);H(S,17,()=>I(r).primary,e=>e.name,(e,t)=>{ez(e,{get field(){return I(t)}})});var C=P(S,2),w=M(C);sk(M(w),{get enabled(){return $.form.enabled},label:`provider`,onclick:()=>$.form.enabled=!$.form.enabled}),T(w),T(C);var ee=P(C,2),te=e=>{var t=lz(),n=M(t),i=M(n),a=P(M(i),2),o=M(a,!0);T(a),T(i),T(n);var s=P(n,2);H(s,21,()=>I(r).advanced,e=>e.name,(e,t)=>{ez(e,{get field(){return I(t)}})}),T(s),T(t),F(e=>{t.open=$.advancedOpen,B(o,e)},[()=>I(r).advanced.map(e=>e.label).join(`, `)]),Vr(`toggle`,t,e=>$.advancedOpen=e.currentTarget.open),z(e,t)};V(ee,e=>{I(r).advanced.length>0&&e(te)}),F(()=>{l.disabled=$.formMode===`edit`,W(l,`aria-invalid`,I(a)?`true`:void 0),W(l,`aria-describedby`,I(a)?`provider-credential-type-error`:`provider-credential-type-hint`),h.disabled=$.formMode===`edit`,W(h,`aria-invalid`,I(i)?`true`:void 0),W(h,`aria-describedby`,I(i)?`provider-credential-name-error`:`provider-credential-name-hint`)}),L(`change`,l,o),Gi(l,()=>$.form.type,e=>$.form.type=e),L(`input`,h,()=>$.clearFieldError(`name`)),da(h,()=>$.form.name,e=>$.form.name=e),z(e,s)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`change`,`input`]);var fz=R(`

      Providers

      `),pz=R(``),mz=R(`
      Provider credential management is unavailable.
      `),hz=R(``),gz=R(`
      `),_z=R(`

      No dashboard-managed providers yet. Add one here, or declare providers in config.yaml / environment variables.

      `),vz=R(`

      No providers match your filter.

      `),yz=R(`
      `);function bz(e,t){E(t,!0),An(()=>{q.refreshTick,Va.page===`providers-config`&&$.fetchPage()});var n=yz(),r=M(n),i=M(r);Hx(M(i),{copyId:`providers-config-help-copy`,label:`model providers help`,title:e=>{z(e,fz())},help:e=>{Ue(),z(e,Zr(`Configure LLM provider credentials here instead of setting API keys as + environment variables. Providers declared in config.yaml or env vars + are read-only (Config badge) and cannot be edited or deleted from the + dashboard. Keys are masked after saving.`))},$$slots:{title:!0,help:!0}}),T(i);var a=P(i,2),o=M(a),s=e=>{var t=pz();K(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=$.formSubmitting),L(`click`,t,()=>$.openCreate()),z(e,t)};V(o,e=>{$.available&&!q.needsAuth&&e(s)}),T(a),T(r);var c=P(r,2),l=e=>{z(e,mz())};V(c,e=>{!$.available&&!q.needsAuth&&e(l)});var u=P(c,2),d=e=>{var t=hz(),n=M(t,!0);T(t),F(()=>B(n,$.error)),z(e,t)};V(u,e=>{$.error&&!q.needsAuth&&!$.formOpen&&e(d)});var f=P(u,2),p=e=>{tw(e,{label:`Loading providers...`})};V(f,e=>{$.loading&&!q.needsAuth&&e(p)});var m=P(f,2),h=e=>{var t=gz(),n=M(t);oC(M(n),{id:`provider-credential-filter`,placeholder:`Filter by name, type, or base URL...`,label:`Filter providers by name, type, or base URL`,get value(){return $.filter},set value(e){$.filter=e}}),T(n),T(t),z(e,t)};V(m,e=>{($.rows.length>0||$.filter)&&$.available&&!q.needsAuth&&e(h)});var g=P(m,2);dz(g,{});var _=P(g,2),v=e=>{HR(e,{})};V(_,e=>{$.filteredRows.length>0&&$.available&&!q.needsAuth&&e(v)});var y=P(_,2),b=e=>{z(e,_z())};V(y,e=>{$.rows.length===0&&!$.filter&&!$.loading&&!q.needsAuth&&!$.error&&$.available&&e(b)});var x=P(y,2),S=e=>{z(e,vz())};V(x,e=>{$.rows.length>0&&$.filteredRows.length===0&&$.filter&&!$.loading&&!q.needsAuth&&$.available&&e(S)}),T(n),z(e,n),D()}Hr([`click`]);function xz(){return{name:``,description:``,user_path:``,labels:``,dashboard_access:!1,expires_at:``}}function Sz(e){let t=[];for(let n of String(e||``).split(`,`)){let e=n.trim();e&&!t.includes(e)&&t.push(e)}return t}function Cz(e){let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t;for(let e of n.split(`/`)){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function wz(e){if(Cz(e))return``;let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t,r=[];for(let e of n.split(`/`)){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function Tz(e){let t=e||{},n=String(t.name||``).trim();if(!n)return{error:`Name is required.`};let r=Cz(t.user_path);if(r)return{error:r};let i=wz(t.user_path),a=Sz(t.labels),o={name:n,description:String(t.description||``).trim()||void 0,user_path:i||void 0,labels:a.length?a:void 0,dashboard_access:t.dashboard_access?!0:void 0};return t.expires_at&&(o.expires_at=t.expires_at+`T23:59:59Z`),{payload:o}}function Ez(e,t=Date.now()){let n=e&&e.expires_at;if(!n)return!1;let r=Date.parse(n);return Number.isFinite(r)&&r<=t}function Dz(e){return e?!!e.deactivated_at||e.enabled===!1:!1}function Oz(e,t=Date.now()){return!e||e.active===!1||Dz(e)?!1:!Ez(e,t)}function kz(e){return[e.name,e.description,e.user_path,e.redacted_value,...e.labels||[]].filter(Boolean).join(` `).toLowerCase()}function Az(e,t={}){let{query:n=``,showInactive:r=!1,now:i=Date.now()}=t,a=String(n||``).trim().toLowerCase();return(Array.isArray(e)?e:[]).filter(e=>!r&&!Oz(e,i)?!1:!a||kz(e).includes(a))}function jz(e,t){return Dz(e)?2:+!Oz(e,t)}function Mz(e){let t=e&&e.expires_at;if(!t)return 1/0;let n=Date.parse(t);return Number.isFinite(n)?n:1/0}function Nz(e){let t=Date.parse(e&&e.deactivated_at||``);return Number.isFinite(t)?t:-1/0}function Pz(e,t=Date.now()){return(Array.isArray(e)?e.slice():[]).sort((e,n)=>{let r=jz(e,t),i=jz(n,t);if(r!==i)return r-i;let[a,o]=r===2?[Nz(e),Nz(n)]:[Mz(e),Mz(n)];return a===o?String(e.name||``).localeCompare(String(n.name||``)):a>o?-1:1})}function Fz(e,t=Date.now()){return(Array.isArray(e)?e:[]).reduce((e,n)=>e+ +!Oz(n,t),0)}function Iz(){return{open:!1,id:``,name:``,value:``,submitting:!1,error:``}}var Lz=new class{#e=k(j([]));get keys(){return I(this.#e)}set keys(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get showInactive(){return I(this.#a)}set showInactive(e){A(this.#a,e,!0)}#o=O(()=>Pz(Az(this.keys,{query:this.filter,showInactive:this.showInactive})));get visibleKeys(){return I(this.#o)}set visibleKeys(e){A(this.#o,e)}#s=O(()=>Fz(this.keys));get inactiveCount(){return I(this.#s)}set inactiveCount(e){A(this.#s,e)}#c=k(!1);get formOpen(){return I(this.#c)}set formOpen(e){A(this.#c,e,!0)}#l=k(!1);get formSubmitting(){return I(this.#l)}set formSubmitting(e){A(this.#l,e,!0)}#u=k(``);get issuedValue(){return I(this.#u)}set issuedValue(e){A(this.#u,e,!0)}#d=k(``);get deactivatingID(){return I(this.#d)}set deactivatingID(e){A(this.#d,e,!0)}#f=k(``);get dashboardAccessID(){return I(this.#f)}set dashboardAccessID(e){A(this.#f,e,!0)}#p=k(j(xz()));get form(){return I(this.#p)}set form(e){A(this.#p,e,!0)}#m=k(j(Iz()));get labelsEditor(){return I(this.#m)}set labelsEditor(e){A(this.#m,e,!0)}copyState=ij({logPrefix:`Failed to copy auth key:`});async fetchKeys(){this.loading=!0,this.error=``;try{let e=await iw(`/admin/auth-keys`,{label:`auth keys`,errorFallback:`Unable to load API keys.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.keys=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.error=e.error;return}this.available=!0,this.keys=e.items}finally{this.loading=!1}}openForm(){this.formSubmitting||this.formOpen||(this.formOpen=!0,this.error=``,this.issuedValue||(this.copyState.reset(),this.form=xz()))}closeForm(){this.formOpen&&(this.formOpen=!1,this.error=``,this.copyState.reset(),!this.formSubmitting&&!this.issuedValue&&(this.form=xz()))}copyIssuedValue(){return this.copyState.copy(this.issuedValue)}dismissIssuedKey(){this.issuedValue=``,this.copyState.reset(),this.form=xz()}async submitForm(){let e=Tz(this.form);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await aw(`/admin/auth-keys`,`POST`,e.payload,{label:`create API key`,errorFallback:`Failed to create API key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error,t.result&&t.result.status!==401&&console.error(`Failed to create API key:`,t.result.status,this.error);return}let n=t.result.data||{};this.issuedValue=n.value||``,this.formOpen=!0,this.copyState.reset(),this.form=xz(),this.fetchKeys()}finally{this.formSubmitting=!1}}openLabelsEditor(e){!e||this.labelsEditor.submitting||(this.labelsEditor={open:!0,id:e.id,name:e.name||``,value:(e.labels||[]).join(`, `),submitting:!1,error:``})}closeLabelsEditor(){!this.labelsEditor.open||this.labelsEditor.submitting||(this.labelsEditor=Iz())}async submitLabelsEditor(){let e=this.labelsEditor;if(!e.open||e.submitting||!e.id)return;e.submitting=!0,e.error=``;let t={labels:Sz(e.value)};try{let n=await aw(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/labels`,`PUT`,t,{label:`update API key labels`,errorFallback:`Failed to update labels.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,e.error=n.error;return}if(n.status===`error`){e.error=n.error,n.result&&n.result.status!==401&&console.error(`Failed to update auth key labels:`,n.result.status,e.error);return}qo.success(`Labels updated for key "`+e.name+`".`),e.submitting=!1,this.closeLabelsEditor(),this.fetchKeys()}finally{e.submitting=!1}}async toggleDashboardAccess(e){if(!e||!e.active||this.dashboardAccessID)return;let t=!e.dashboard_access;this.dashboardAccessID=e.id;try{let n=await aw(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/dashboard-access`,`PUT`,{dashboard_access:t},{label:`update API key dashboard access`,errorFallback:`Failed to update dashboard access.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,qo.error(n.error);return}if(n.status===`error`){n.result&&n.result.status!==401&&console.error(`Failed to update auth key dashboard access:`,n.result.status,n.error),qo.error(n.error);return}qo.success(`Dashboard access `+(t?`granted to`:`revoked for`)+` key "`+e.name+`".`),this.fetchKeys()}finally{this.dashboardAccessID=``}}async deactivateKey(e){if(!(!e||!e.active)&&window.confirm(`Deactivate key "`+e.name+`"? This cannot be undone.`)){this.deactivatingID=e.id;try{let t=await aw(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/deactivate`,`POST`,void 0,{label:`deactivate API key`,errorFallback:`Failed to deactivate key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,qo.error(t.error);return}if(t.status===`error`){t.result&&t.result.status!==401&&console.error(`Failed to deactivate auth key:`,t.result.status,t.error),qo.error(t.error);return}qo.success(`Key "`+e.name+`" deactivated.`),this.fetchKeys()}finally{this.deactivatingID=``}}}},Rz=R(``),zz=R(`

      Store this key securely — it won’t be shown again.

      `),Bz=R(``),Vz=R(``),Hz=R(``),Uz=R(``),Wz=R(`
      `);function Gz(e,t){E(t,!0);{let t=O(()=>Lz.issuedValue?``:Lz.error),n=O(()=>Lz.issuedValue?`Done, I’ve stored it`:`Create API Key`),r=O(()=>Lz.issuedValue?`check`:`plus`);sT(e,{get open(){return Lz.formOpen},title:`Create API Key`,ariaLabel:`API key editor`,get error(){return I(t)},get submitting(){return Lz.formSubmitting},get submitLabel(){return I(n)},submittingLabel:`Creating...`,get submitIcon(){return I(r)},cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>Lz.closeForm(),onsubmit:()=>Lz.issuedValue?Lz.dismissIssuedKey():Lz.submitForm(),children:(e,t)=>{var n=Qr(),r=N(n),i=e=>{var t=zz(),n=P(M(t),2),r=M(n),i=M(r,!0);T(r),RF(P(r,2),{get state(){return Lz.copyState},onclick:()=>Lz.copyIssuedValue()}),T(n);var a=P(n,2),o=e=>{z(e,Rz())};V(a,e=>{Lz.copyState.error&&e(o)}),T(t),F(()=>B(i,Lz.issuedValue)),z(e,t)},a=e=>{var t=Wz(),n=M(t),r=M(n),i=P(M(r),2);na(i),T(r);var a=P(r,2),o=P(M(a),2);na(o),T(a),T(n);var s=P(n,2),c=M(s);Hx(c,{copyId:`auth-key-user-path-help-copy`,label:`API key user path help`,title:e=>{z(e,Bz())},help:e=>{Ue(),z(e,Zr(`When set, this key overrides the configured user path request + header for audit logging and downstream request context.`))},$$slots:{title:!0,help:!0}});var l=P(c,2);na(l),T(s);var u=P(s,2),d=M(u);Hx(d,{copyId:`auth-key-labels-help-copy`,label:`API key labels help`,title:e=>{z(e,Vz())},help:e=>{Ue(),z(e,Zr(`Every request authenticated with this key gets these labels, in + addition to any labels from tagging headers. Labels show up in + usage analytics, the request log, and audit logs.`))},$$slots:{title:!0,help:!0}});var f=P(d,2);na(f),T(u);var p=P(u,2),m=M(p);Hx(m,{copyId:`auth-key-dashboard-access-help-copy`,label:`API key dashboard access help`,title:e=>{z(e,Hz())},help:e=>{Ue(),z(e,Zr(`When off, this key is denied the dashboard and every /admin API + endpoint. Model endpoints and GET /v1/usage stay available to + the key. The master key always has dashboard access.`))},$$slots:{title:!0,help:!0}});var h=P(m,2),g=M(h);na(g),Ue(2),T(h),T(p),lT(P(p,2),{id:`auth-key-description`,label:`Description (optional)`,children:(e,t)=>{var n=Uz();ft(n),da(n,()=>Lz.form.description,e=>Lz.form.description=e),z(e,n)},$$slots:{default:!0}}),T(t),da(i,()=>Lz.form.name,e=>Lz.form.name=e),da(o,()=>Lz.form.expires_at,e=>Lz.form.expires_at=e),da(l,()=>Lz.form.user_path,e=>Lz.form.user_path=e),da(f,()=>Lz.form.labels,e=>Lz.form.labels=e),fa(g,()=>Lz.form.dashboard_access,e=>Lz.form.dashboard_access=e),z(e,t)};V(r,e=>{Lz.issuedValue?e(i):e(a,-1)}),z(e,n)},$$slots:{default:!0}})}D()}var Kz=R(`

      `),qz=R(`

      Applies to new requests made with this key. Leave empty to remove all labels.

      `,1);function Jz(e,t){E(t,!0),sT(e,{get open(){return Lz.labelsEditor.open},title:`Edit Labels`,ariaLabel:`API key labels editor`,get error(){return Lz.labelsEditor.error},get submitting(){return Lz.labelsEditor.submitting},submitLabel:`Save Labels`,cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>Lz.closeLabelsEditor(),onsubmit:()=>Lz.submitLabelsEditor(),headerHint:e=>{var t=Kz(),n=M(t,!0);T(t),F(()=>B(n,Lz.labelsEditor.name)),z(e,t)},children:(e,t)=>{lT(e,{id:`auth-key-labels-edit`,label:`Labels (comma-separated)`,children:(e,t)=>{var n=qz(),r=N(n);na(r),Ue(2),da(r,()=>Lz.labelsEditor.value,e=>Lz.labelsEditor.value=e),z(e,n)},$$slots:{default:!0}})},$$slots:{headerHint:!0,default:!0}}),D()}var Yz=R(` `),Xz=R(`
      `),Zz=R(``),Qz=R(`Expired`),$z=R(` `),eB=R(` `,1),tB=R(`Deactivated`),nB=R(`
      `),rB=R(`
      NameDescriptionUser PathLabelsTokenDashboard Access ExpiresCreated
      `);function iB(e,t){E(t,!0);var n=rB(),r=M(n),i=M(r),a=M(i),o=P(M(a),5),s=M(o);K(P(M(s)),{name:`info`,width:`13`,height:`13`}),T(s),T(o),Ue(3),T(a),T(i);var c=P(i);H(c,21,()=>Lz.visibleKeys,e=>e.id,(e,t)=>{var n=nB();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i),s=M(o,!0);T(o);var c=P(o),l=M(c,!0);T(c);var u=P(c),d=M(u),f=e=>{var n=Xz();H(n,20,()=>I(t).labels||[],e=>e,(e,t)=>{var n=Yz(),r=M(n,!0);T(n),F(e=>{Hi(n,e),B(r,t)},[()=>Rv(t)]),z(e,n)}),T(n),z(e,n)},p=e=>{z(e,Zz())};V(d,e=>{(I(t).labels||[]).length>0?e(f):e(p,-1)}),T(u);var m=P(u),h=M(m),g=M(h,!0);T(h),T(m);var _=P(m),v=M(_);let y;var b=M(v,!0);T(v),T(_);var x=P(_),S=M(x),C=e=>{var n=$z(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{z(e,Qz())},s=O(()=>Ez(I(t)));V(a,e=>{I(s)&&e(o)}),T(n),F(e=>B(i,e),[()=>cs(I(t).expires_at)]),z(e,n)},w=e=>{z(e,Zr(`—`))};V(S,e=>{I(t).expires_at?e(C):e(w,-1)}),T(x);var ee=P(x),te=M(ee,!0);T(ee);var ne=P(ee),re=M(ne),ie=M(re),ae=e=>{var n=eB(),r=N(n);{let e=O(()=>(I(t).dashboard_access?`Revoke dashboard access for API key `:`Grant dashboard access to API key `)+I(t).name),n=O(()=>!!Lz.dashboardAccessID);rw(r,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Lz.toggleDashboardAccess(I(t)),get disabled(){return I(n)},children:(e,n)=>{{let n=O(()=>I(t).dashboard_access?`shield-off`:`shield-check`);K(e,{get name(){return I(n)},class:`table-icon-svg`})}},$$slots:{default:!0}})}var i=P(r,2);{let e=O(()=>`Edit labels for API key `+I(t).name);rw(i,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Lz.openLabelsEditor(I(t)),children:(e,t)=>{K(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}var a=P(i,2);{let e=O(()=>(Lz.deactivatingID===I(t).id?`Deactivating API key `:`Deactivate API key `)+I(t).name),n=O(()=>Lz.deactivatingID===I(t).id);rw(a,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>Lz.deactivateKey(I(t)),get disabled(){return I(n)},children:(e,t)=>{K(e,{name:`power`,class:`table-icon-svg`})},$$slots:{default:!0}})}z(e,n)},oe=e=>{var n=tB();F(e=>W(n,`title`,e),[()=>I(t).deactivated_at?`Deactivated on `+ls(I(t).deactivated_at):`Deactivated`]),z(e,n)},se=O(()=>Dz(I(t)));V(ie,e=>{I(t).active?e(ae):I(se)&&e(oe,1)}),T(re),T(ne),T(n),F((e,i,o)=>{r=U(n,1,`svelte-nf0ldb`,null,r,e),B(a,I(t).name),B(s,I(t).description||`—`),B(l,I(t).user_path||`—`),B(g,I(t).redacted_value),y=U(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":I(t).dashboard_access,"auth-key-status-inactive":!I(t).dashboard_access}),B(b,I(t).dashboard_access?`Allowed`:`Denied`),W(x,`title`,i),B(te,o)},[()=>({"auth-key-row-deactivated":Dz(I(t))}),()=>I(t).expires_at?ls(I(t).expires_at):``,()=>io.formatTimestamp(I(t).created_at)]),z(e,n)}),T(c),T(r),T(n),z(e,n),D()}var aB=R(``),oB=R(`
      API key management is unavailable.
      `),sB=R(``),cB=R(`

      Managed API keys authenticate requests to the gateway. Deactivation is + permanent — create a new key if access needs to be restored.

      `),lB=R(`
      `),uB=R(`
      `),dB=R(`

      `),fB=R(`

      No API keys yet. Issue a key to get started.

      `),pB=R(`
      `);function mB(e,t){E(t,!0),An(()=>{q.refreshTick,Va.page===`auth-keys`&&Lz.fetchKeys()});var n=pB(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=aB();K(M(t),{name:`plus`,class:`table-icon-svg`}),Ue(2),T(t),F(()=>t.disabled=Lz.formSubmitting),L(`click`,t,()=>{Lz.formSubmitting||Lz.openForm()}),z(e,t)};V(a,e=>{Lz.available&&!q.authError&&e(o)}),T(i),T(r);var s=P(r,2),c=e=>{z(e,oB())};V(s,e=>{!Lz.available&&!q.authError&&e(c)});var l=P(s,2),u=e=>{var t=sB(),n=M(t,!0);T(t),F(()=>B(n,Lz.error)),z(e,t)};V(l,e=>{Lz.error&&!q.authError&&!Lz.formOpen&&e(u)});var d=P(l,2),f=e=>{z(e,cB())};V(d,e=>{Lz.available&&!q.authError&&e(f)});var p=P(d,2);Gz(p,{});var m=P(p,2);Jz(m,{});var h=P(m,2),g=e=>{var t=lB();_x(M(t),{size:18,label:`Loading API keys`}),T(t),z(e,t)};V(h,e=>{Lz.loading&&Lz.keys.length===0&&e(g)});var _=P(h,2),v=e=>{var t=uB(),n=M(t);oC(M(n),{placeholder:`Filter by name, description, user path, label, or token...`,label:`Filter API keys by name, description, user path, label, or token`,get value(){return Lz.filter},set value(e){Lz.filter=e}}),T(n);var r=P(n,2),i=M(r),a=M(i);na(a);var o=P(a,2),s=P(M(o)),c=e=>{var t=Zr();F(()=>B(t,`(${Lz.inactiveCount??``})`)),z(e,t)};V(s,e=>{Lz.inactiveCount>0&&e(c)}),T(o),T(i),T(r),T(t),fa(a,()=>Lz.showInactive,e=>Lz.showInactive=e),z(e,t)};V(_,e=>{Lz.keys.length>0&&Lz.available&&e(v)});var y=P(_,2),b=e=>{iB(e,{})};V(y,e=>{Lz.visibleKeys.length>0&&Lz.available&&e(b)});var x=P(y,2),S=e=>{var t=dB(),n=M(t);T(t),F(()=>B(n,`No API keys match the current filter.${Lz.inactiveCount>0&&!Lz.showInactive?` `+Lz.inactiveCount+` inactive `+(Lz.inactiveCount===1?`key is`:`keys are`)+` hidden.`:``}`)),z(e,t)};V(x,e=>{Lz.keys.length>0&&Lz.visibleKeys.length===0&&Lz.available&&e(S)});var C=P(x,2),w=e=>{z(e,fB())};V(C,e=>{Lz.keys.length===0&&!Lz.loading&&!q.authError&&!Lz.error&&Lz.available&&e(w)}),T(n),z(e,n),D()}Hr([`click`]);var hB=R(`

      Timezone

      `),gB=R(``),_B=R(``),vB=R(`
      `,1);function yB(e,t){E(t,!0);function n(){io.saveOverride(),q.refresh()}function r(){io.clearOverride(),q.refresh()}var i=vB(),a=N(i);Hx(M(a),{copyId:`timezone-help-copy`,label:`timezone help`,text:`Day-based analytics, charts, and date filters use your effective timezone. Usage and audit logs keep UTC in the hover title while rendering row timestamps in your effective timezone.`,title:e=>{z(e,hB())},$$slots:{title:!0}}),T(a);var o=P(a,2),s=M(o),c=P(M(s),2),l=M(c),u=M(l);T(l),l.value=l.__value=``,H(P(l),17,()=>io.options,e=>e.value,(e,t)=>{var n=gB(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(c),T(s),T(o);var d=P(o,2),f=M(d),p=e=>{var t=_B();L(`click`,t,r),z(e,t)};V(f,e=>{io.override&&e(p)}),T(d),F(e=>B(u,`Automatic (${e??``})`),[()=>io.detectedTimeZoneLabel()]),Vr(`focus`,c,()=>io.ensureOptions()),L(`change`,c,n),Gi(c,()=>io.override,e=>io.override=e),z(e,i),D()}Hr([`change`,`click`]);var bB=R(``),xB=R(`

      Failover

      `,1);function SB(e,t){E(t,!0);let n=O(()=>Z.failoverSaving||Z.failoverGenerating||Z.failoverDraftSaving||!Z.failoverAvailable||!Z.failoverEnabled());var r=xB(),i=N(r),a=P(M(i),2),o=M(a),s=M(o);K(s,{name:`wand-sparkles`,class:`form-action-icon`});var c=P(s,2),l=M(c,!0);T(c),T(o);var u=P(o,2);K(M(u),{name:`trash-2`,class:`form-action-icon`}),Ue(2),T(u),T(a),T(i);var d=P(i,2),f=M(d),p=e=>{var t=bB(),n=M(t,!0);T(t),F(()=>B(n,Z.failoverError)),z(e,t)};V(f,e=>{Z.failoverError&&e(p)}),T(d),$k(P(d,2),{}),F(()=>{o.disabled=I(n),B(l,Z.failoverGenerating?`Generating...`:`Generate failover models automatically`),u.disabled=I(n)}),L(`click`,o,()=>Z.generateFailoverRules()),L(`click`,u,()=>Z.openFailoverResetDialog()),z(e,r),D()}Hr([`click`]);function CB(){return{daily_reset_hour:0,daily_reset_minute:0,weekly_reset_weekday:1,weekly_reset_hour:0,weekly_reset_minute:0,monthly_reset_day:1,monthly_reset_hour:0,monthly_reset_minute:0}}function wB(e,t){let n=t||{},r=(e,t)=>{if(e===``)return t;let n=Number(e);return Number.isFinite(n)&&Number.isInteger(n)?Math.trunc(n):t},i=(e,t)=>r(n[e],t),a=(t,n)=>e?r(e[t],n):n;return{daily_reset_hour:a(`daily_reset_hour`,i(`daily_reset_hour`,0)),daily_reset_minute:a(`daily_reset_minute`,i(`daily_reset_minute`,0)),weekly_reset_weekday:a(`weekly_reset_weekday`,i(`weekly_reset_weekday`,1)),weekly_reset_hour:a(`weekly_reset_hour`,i(`weekly_reset_hour`,0)),weekly_reset_minute:a(`weekly_reset_minute`,i(`weekly_reset_minute`,0)),monthly_reset_day:a(`monthly_reset_day`,i(`monthly_reset_day`,1)),monthly_reset_hour:a(`monthly_reset_hour`,i(`monthly_reset_hour`,0)),monthly_reset_minute:a(`monthly_reset_minute`,i(`monthly_reset_minute`,0))}}function TB(){return[{value:0,label:`Sunday`},{value:1,label:`Monday`},{value:2,label:`Tuesday`},{value:3,label:`Wednesday`},{value:4,label:`Thursday`},{value:5,label:`Friday`},{value:6,label:`Saturday`}]}var EB=R(`

      Budget Resets

      `),DB=R(``),OB=R(`

      If the selected day does not exist in a month, the reset runs on + the last day of that month.

      `),kB=R(``),AB=R(``),jB=R(`
      Monthly
      Weekly
      Daily
      `,1);function MB(e,t){E(t,!0);let n=k(j(CB())),r=k(!1),i=k(!1),a=k(``),o=k(!1),s=O(()=>go.budgetsVisible());async function c(){if(await go.ensureLoaded(),!go.budgetsVisible()){A(a,``);return}A(r,!0),A(a,``);try{let e=await uo(`/admin/budgets/settings`,{label:`budget settings`});if(e.stale)return;if(!e.ok){A(a,`Unable to load budget settings.`);return}A(n,wB(e.data,I(n)),!0)}catch(e){console.error(`Failed to fetch budget settings:`,e),A(a,`Unable to load budget settings.`)}finally{A(r,!1)}}async function l(){if(!I(i)){A(i,!0);try{let e=await fo(`/admin/budgets/settings`,`PUT`,wB(I(n),I(n)),{label:`budget settings`});if(e.stale)return;if(!e.ok){qo.error(`Unable to save budget settings.`);return}A(n,wB(e.data,I(n)),!0),A(a,``),qo.success(`Budget settings saved.`)}catch(e){console.error(`Failed to save budget settings:`,e),qo.error(`Unable to save budget settings.`)}finally{A(i,!1)}}}An(()=>{q.refreshTick,c()});var u=Qr(),d=N(u),f=e=>{var t=jB(),s=N(t),c=M(s);Hx(c,{copyId:`budget-settings-help-copy`,label:`budget help`,text:`Budget reset anchors are stored in the database and evaluated in UTC. Hourly budgets reset at the top of each hour.`,title:e=>{z(e,EB())},$$slots:{title:!0}});var u=P(c,2),d=M(u),f=P(M(d),2),p=M(f);Hx(p,{copyId:`budget-monthly-day-help-copy`,label:`day of month help`,external:!0,get open(){return I(o)},set open(e){A(o,e,!0)},title:e=>{z(e,DB())},$$slots:{title:!0}});var m=P(p,2);na(m),T(f);var h=P(f,2),g=P(M(h),2);na(g),T(h);var _=P(h,2),v=P(M(_),2);na(v),T(_);var y=P(_,2),b=M(y),x=e=>{z(e,OB())};V(b,e=>{I(o)&&e(x)}),T(y),T(d);var S=P(d,2),C=P(M(S),2),w=P(M(C),2);H(w,21,TB,e=>e.value,(e,t)=>{var n=kB(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(w),T(C);var ee=P(C,2),te=P(M(ee),2);na(te),T(ee);var ne=P(ee,2),re=P(M(ne),2);na(re),T(ne),Ue(2),T(S);var ie=P(S,2),ae=P(M(ie),4),oe=P(M(ae),2);na(oe),T(ae);var se=P(ae,2),ce=P(M(se),2);na(ce),T(se),Ue(2),T(ie),T(u);var le=P(u,2),ue=M(le);K(M(ue),{name:`save`,class:`form-action-icon`}),Ue(2),T(ue);var de=P(ue,2),fe=e=>{_x(e,{size:16,label:`Loading budget settings`})};V(de,e=>{I(r)&&e(fe)}),T(le),T(s);var pe=P(s,2),me=M(pe),he=e=>{var t=AB(),n=M(t,!0);T(t),F(()=>B(n,I(a))),z(e,t)};V(me,e=>{I(a)&&e(he)}),T(pe),F(()=>{ue.disabled=I(i)||I(r),W(ue,`aria-busy`,I(i)?`true`:`false`)}),da(m,()=>I(n).monthly_reset_day,e=>I(n).monthly_reset_day=e),da(g,()=>I(n).monthly_reset_hour,e=>I(n).monthly_reset_hour=e),da(v,()=>I(n).monthly_reset_minute,e=>I(n).monthly_reset_minute=e),Gi(w,()=>I(n).weekly_reset_weekday,e=>I(n).weekly_reset_weekday=e),da(te,()=>I(n).weekly_reset_hour,e=>I(n).weekly_reset_hour=e),da(re,()=>I(n).weekly_reset_minute,e=>I(n).weekly_reset_minute=e),da(oe,()=>I(n).daily_reset_hour,e=>I(n).daily_reset_hour=e),da(ce,()=>I(n).daily_reset_minute,e=>I(n).daily_reset_minute=e),L(`click`,ue,l),z(e,t)};V(d,e=>{I(s)&&e(f)}),z(e,u),D()}Hr([`click`]);var NB=R(`

      Reset All Budgets

      Start new budget periods for every configured budget without changing + the limits.

      `);function PB(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=NB(),n=P(M(t),2),r=M(n);K(M(r),{name:`rotate-ccw`,class:`form-action-icon`}),Ue(2),T(r),T(n),T(t),F(()=>r.disabled=Y.resetAllLoading),L(`click`,r,()=>Y.openResetDialog()),z(e,t)},a=O(()=>go.budgetsVisible());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}Hr([`click`]);function FB(){return{header:``,prefix:``,do_not_pass:!1,delimiter:``,managed:!1}}function IB(e){return(e&&Array.isArray(e.headers)?e.headers:[]).map(e=>({header:typeof e.header==`string`?e.header:``,prefix:typeof e.prefix==`string`?e.prefix:``,do_not_pass:e.do_not_pass===!0,delimiter:typeof e.delimiter==`string`&&e.delimiter!==`,`?e.delimiter:``,managed:e.managed===!0}))}function LB(e){return{headers:(Array.isArray(e)?e:[]).filter(e=>!e.managed&&e.header.trim()!==``).map(e=>({header:e.header.trim(),prefix:e.prefix,do_not_pass:e.do_not_pass,delimiter:e.delimiter}))}}function RB(e){return e&&e.error&&e.error.message?e.error.message:``}var zB=R(`

      Tagging based on headers

      `),BB=R(`config`),VB=R(``),HB=R(`
      `),UB=R(`

      No tagging headers configured. Requests are not labelled.

      `),WB=R(``),GB=R(`
      `,1);function KB(e,t){E(t,!0);let n=k(j([])),r=k(!0),i=k(!1),a=k(!1),o=k(``);function s(){I(n).push(FB())}function c(e){let t=I(n)[e];!t||t.managed||I(n).splice(e,1)}async function l(){A(i,!0),A(o,``);try{let e=await uo(`/admin/tagging/settings`,{label:`tagging settings`});if(e.stale)return;if(!e.ok){A(o,`Unable to load tagging settings.`);return}A(n,IB(e.data),!0),A(r,e.data&&e.data.editable!==!1,!0)}catch(e){console.error(`Failed to fetch tagging settings:`,e),A(o,`Unable to load tagging settings.`)}finally{A(i,!1)}}async function u(){if(!(I(a)||!I(r))){A(a,!0);try{let e=await fo(`/admin/tagging/settings`,`PUT`,LB(I(n)),{label:`tagging settings`});if(e.stale)return;if(!e.ok){qo.error(e.status!==401&&RB(e.data)||`Unable to save tagging settings.`);return}A(n,IB(e.data),!0),A(r,e.data&&e.data.editable!==!1,!0),A(o,``),qo.success(`Tagging settings saved.`)}catch(e){console.error(`Failed to save tagging settings:`,e),qo.error(`Unable to save tagging settings.`)}finally{A(a,!1)}}}An(()=>{q.refreshTick,l()});var d=GB(),f=N(d),p=M(f);Hx(p,{copyId:`tagging-settings-help-copy`,label:`tagging help`,text:`Each request is labelled from the listed headers; labels land in usage tracking and audit logs. A header value can carry several labels split by the delimiter (default: comma). The prefix is trimmed from each label only — the header itself is forwarded unchanged unless 'Do not pass' is checked. Rows marked CONFIG come from config.yaml or TAGGING_HEADER_* env vars and are read-only here.`,title:e=>{z(e,zB())},$$slots:{title:!0}});var m=P(p,2),h=M(m);H(h,17,()=>I(n),oi,(e,t,n)=>{var i=HB(),a=M(i),o=M(a);W(o,`for`,`tagging-header-`+n);var s=P(o,2);na(s),W(s,`id`,`tagging-header-`+n),T(a);var l=P(a,2),u=M(l);W(u,`for`,`tagging-prefix-`+n);var d=P(u,2);na(d),W(d,`id`,`tagging-prefix-`+n),T(l);var f=P(l,2),p=M(f);W(p,`for`,`tagging-delimiter-`+n);var m=P(p,2);na(m),W(m,`id`,`tagging-delimiter-`+n),T(f);var h=P(f,2),g=M(h);na(g),Ue(2),T(h);var _=P(h,2),v=M(_),y=e=>{z(e,BB())},b=e=>{var i=VB();F(()=>{i.disabled=!I(r),W(i,`aria-label`,`Remove tagging header `+(I(t).header||n+1))}),L(`click`,i,()=>c(n)),z(e,i)};V(v,e=>{I(t).managed?e(y):e(b,-1)}),T(_),T(i),F(()=>{s.disabled=I(t).managed||!I(r),d.disabled=I(t).managed||!I(r),m.disabled=I(t).managed||!I(r),g.disabled=I(t).managed||!I(r)}),da(s,()=>I(t).header,e=>I(t).header=e),da(d,()=>I(t).prefix,e=>I(t).prefix=e),da(m,()=>I(t).delimiter,e=>I(t).delimiter=e),fa(g,()=>I(t).do_not_pass,e=>I(t).do_not_pass=e),z(e,i)});var g=P(h,2),_=e=>{_x(e,{size:16,label:`Loading tagging settings`})};V(g,e=>{I(i)&&e(_)});var v=P(g,2),y=e=>{z(e,UB())};V(v,e=>{!I(i)&&I(n).length===0&&e(y)}),T(m);var b=P(m,2),x=M(b);K(M(x),{name:`plus`,class:`form-action-icon`}),Ue(2),T(x);var S=P(x,2);K(M(S),{name:`save`,class:`form-action-icon`}),Ue(2),T(S),T(b),T(f);var C=P(f,2),w=M(C),ee=e=>{var t=WB(),n=M(t,!0);T(t),F(()=>B(n,I(o))),z(e,t)};V(w,e=>{I(o)&&e(ee)}),T(C),F(()=>{x.disabled=!I(r)||I(a)||I(i),S.disabled=!I(r)||I(a)||I(i),W(S,`aria-busy`,I(a)?`true`:`false`)}),L(`click`,x,s),L(`click`,S,u),z(e,d),D()}Hr([`click`]);function qB(e){let t=e||{};if(t.selectedPreset)return{days:parseInt(t.selectedPreset,10)||30};let n=t.customStartDate?ss(t.customStartDate):``,r=t.customEndDate||t.today||null;return{start_date:n,end_date:r?ss(r):``}}function JB(e,t,n,r){return{...qB(e),user_path:String(t||``).trim(),selector:String(n||``).trim(),confirmation:r}}function YB(e){let t=Number(e&&e.matched||0),n=Number(e&&e.recalculated||0),r=Number(e&&e.without_pricing||0),i=`Pricing recalculated for `+n+` of `+t+` usage record`+(t===1?``:`s`)+`.`;return r>0&&(i+=` `+r+` usage record`+(r===1?` still lacks`:`s still lack`)+` pricing metadata.`),i}var XB=R(`

      Usage Pricing Recalculation

      `),ZB=R(`
      `);function QB(e,t){E(t,!0);let n=k(``),r=k(``),i=k(!1),a=O(()=>go.booleanFlag(`USAGE_PRICING_RECALCULATION_ENABLED`,!1));function o(){if(!I(a)){qo.error(`Usage pricing recalculation is unavailable.`);return}I(i)||Mo.open({title:`Recalculate Pricing`,titleId:`pricingRecalculateDialogTitle`,inputId:`pricing-recalculate-confirmation`,requiredText:`recalculate`,confirmLabel:`Recalculate Pricing`,icon:`calculator`,dialogClass:`pricing-recalculate-dialog`,message:`Stored usage cost fields matching the selected filters will be overwritten.`,onConfirm:()=>s()})}async function s(){if(!I(a)){qo.error(`Usage pricing recalculation is unavailable.`);return}if(!I(i)){A(i,!0);try{let e=await fo(`/admin/usage/recalculate-pricing`,`POST`,JB({selectedPreset:Ds.selectedPreset,customStartDate:Ds.customStartDate,customEndDate:Ds.customEndDate,today:io.todayDate()},I(n),I(r),`recalculate`),{label:`pricing recalculation`});if(e.stale)return;if(!e.ok){Mo.error=`Unable to recalculate pricing.`;return}Mo.close(),qo.success(YB(e.data)),Ns.fetchUsage()}catch(e){console.error(`Failed to recalculate pricing:`,e),Mo.error=`Unable to recalculate pricing.`}finally{A(i,!1)}}}var c=Qr(),l=N(c),u=e=>{var t=ZB(),s=M(t);Hx(s,{copyId:`pricing-recalculate-help-copy`,label:`pricing recalculation help`,text:`Recalculate stored input, output, total, and Pro Saved costs from the current model pricing metadata. This overwrites matching historical cost fields. Filters are applied to the selected date range, user path subtree, and provider/model selector or alias.`,title:e=>{z(e,XB())},$$slots:{title:!0}});var c=P(s,2),l=M(c),u=P(M(l),2);Xs(M(u),{}),T(u),T(l);var d=P(l,2),f=P(M(d),2);na(f),T(d);var p=P(d,2),m=P(M(p),2);na(m),T(p),T(c);var h=P(c,2),g=M(h);K(M(g),{name:`calculator`,class:`form-action-icon`}),Ue(2),T(g),T(h),T(t),F(()=>{g.disabled=I(i)||!I(a),W(g,`aria-busy`,I(i)?`true`:`false`)}),da(f,()=>I(n),e=>A(n,e)),da(m,()=>I(r),e=>A(r,e)),L(`click`,g,o),z(e,t)};V(l,e=>{I(a)&&e(u)}),z(e,c),D()}Hr([`click`]);function $B(e){return String(e&&e.status||`ok`).toLowerCase()}function eV(e){if(!e||typeof e!=`object`)return`Runtime refresh completed.`;let t=Number(e.model_count||0),n=Number(e.provider_count||0),r=$B(e);return(r===`ok`?`Runtime refreshed.`:r===`partial`?`Runtime refresh completed with warnings.`:`Runtime refresh failed.`)+` `+t+` model`+(t===1?``:`s`)+` across `+n+` provider`+(n===1?``:`s`)+`.`}function tV(e){return!!e&&$B(e)===`ok`}function nV(e){let t=e&&e.steps;return Array.isArray(t)?t:[]}function rV(e){let t=String(e&&e.name||``).replace(/_/g,` `),n=String(e&&e.status||``).trim(),r=String(e&&(e.error||e.message)||``).trim();return t?r?t+`: `+n+` - `+r:t+`: `+n:r||n||``}var iV=R(`

      Runtime Refresh

      `),aV=R(`
    • `),oV=R(`
        `),sV=R(`
        `,1);function cV(e,t){E(t,!0);let n=k(!1),r=k(null);async function i(){if(!I(n)){A(n,!0),A(r,null);try{let e=await fo(`/admin/runtime/refresh`,`POST`,void 0,{label:`runtime refresh`});if(e.stale)return;if(!e.ok){qo.error(`Runtime refresh failed.`);return}A(r,e.data&&typeof e.data==`object`?e.data:null,!0),tV(I(r))?qo.success(eV(I(r))):qo.error(eV(I(r))),q.refresh()}catch(e){console.error(`Failed to refresh runtime:`,e),qo.error(`Runtime refresh failed.`)}finally{A(n,!1)}}}var a=sV(),o=N(a),s=M(o);Hx(s,{copyId:`runtime-refresh-help-copy`,label:`runtime refresh help`,text:`Pull the latest model metadata, provider inventory, API keys, aliases, model access rules, guardrails, and workflows.`,title:e=>{z(e,iV())},$$slots:{title:!0}});var c=P(s,2),l=M(c);let u;K(M(l),{name:`refresh-cw`,class:`settings-refresh-icon`}),Ue(2),T(l),T(c),T(o);var d=P(o,2),f=M(d),p=e=>{var t=oV();H(t,21,()=>nV(I(r)),e=>e.name,(e,t)=>{var n=aV(),r=M(n,!0);T(n),F(e=>{U(n,1,`runtime-refresh-step is-${I(t).status??``}`,`svelte-yeq2mp`),B(r,e)},[()=>rV(I(t))]),z(e,n)}),T(t),z(e,t)},m=O(()=>nV(I(r)).length>0);V(f,e=>{I(m)&&e(p)}),T(d),F(()=>{u=U(l,1,`btn btn-primary btn-with-icon settings-refresh-btn`,null,u,{"is-refreshing":I(n)}),l.disabled=I(n),W(l,`aria-busy`,I(n)?`true`:`false`)}),L(`click`,l,i),z(e,a),D()}Hr([`click`]);var lV=R(`
        `);function uV(e,t){E(t,!0),An(()=>{q.refreshTick,Va.page===`settings`&&(io.ensureOptions(),go.ensureLoaded())});var n=lV(),r=P(M(n),2),i=M(r);yB(i,{});var a=P(i,2);SB(a,{});var o=P(a,2);MB(o,{});var s=P(o,2);PB(s,{});var c=P(s,2);KB(c,{});var l=P(c,2);QB(l,{}),cV(P(l,2),{}),T(r);var u=P(r,2),d=M(u,!0);T(u),T(n),F(e=>B(d,e),[()=>Ia()]),z(e,n),D()}var dV=R(`
        `);function fV(e,t){E(t,!0);let n={overview:fS,usage:$C,budgets:kT,"rate-limits":BE,models:SA,workflows:UM,"audit-logs":zI,guardrails:ML,"mcp-servers":fR,"providers-config":bz,"auth-keys":mB,settings:uV};io.init(),Ds.init(),q.init(),Da.init(),Oa.init(),Va.init(),An(()=>{q.refreshTick,go.fetch(),Os.fetchModels(),Os.fetchCategories()}),An(()=>{document.body.classList.toggle(`dashboard-modal-open`,ka.anyOpen)});let r=O(()=>n[Va.page]||fS);var i=dV(),a=M(i);xo(a,{});var o=P(a,2),s=M(o);Qo(s,{}),_i(P(s,2),()=>I(r),(e,t)=>{t(e,{})}),T(o);var c=P(o,2);Ao(c,{});var l=P(c,2);Io(l,{}),Xo(P(l,2),{}),T(i),z(e,i),D()}ti(fV,{target:document.getElementById(`app`)}); \ No newline at end of file diff --git a/internal/admin/dashboard/static/dist/assets/index-DzO__mgM.js b/internal/admin/dashboard/static/dist/assets/index-DzO__mgM.js deleted file mode 100644 index 0f13e586..00000000 --- a/internal/admin/dashboard/static/dist/assets/index-DzO__mgM.js +++ /dev/null @@ -1,68 +0,0 @@ -(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function h(e,t,n=!1){return e===void 0?n?t():t:e}function g(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,C=32768,w=1<<25,ee=65536,te=1<<19,ne=1<<20,re=1<<25,ie=65536,ae=1<<21,oe=1<<22,se=1<<23,ce=Symbol(`$state`),le=Symbol(`legacy props`),ue=Symbol(``),de=Symbol(`attributes`),fe=Symbol(`class`),pe=Symbol(`style`),me=Symbol(`text`),he=Symbol(`form reset`),ge=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},_e=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function ve(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function ye(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function be(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function xe(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Se(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Ce(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function we(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Te(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ee(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function De(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Oe(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var ke={},Ae=Symbol(`uninitialized`),je=`http://www.w3.org/1999/xhtml`,Me=`http://www.w3.org/2000/svg`,Ne=`http://www.w3.org/1998/Math/MathML`;function Pe(){console.warn(`https://svelte.dev/e/derived_inert`)}function Fe(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ie(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Le(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var Re=!1;function ze(e){Re=e}var Be;function Ve(e){if(e===null)throw Fe(),ke;return Be=e}function He(){return Ve(bn(Be))}function T(e){if(Re){if(bn(Be)!==null)throw Fe(),ke;Be=e}}function Ue(e=1){if(Re){for(var t=e,n=Be;t--;)n=bn(n);Be=n}}function We(e=!0){for(var t=0,n=Be;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=bn(n);e&&n.remove(),n=i}}function Ge(e){if(!e||e.nodeType!==8)throw Fe(),ke;return e.data}function Ke(e){return e===this.v}function qe(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Je(e){return!qe(e,this.v)}var Ye=null;function Xe(e){Ye=e}function E(e,t=!1,n){Ye={p:Ye,i:!1,c:null,e:null,s:e,x:null,r:ir,l:null}}function D(e){var t=Ye,n=t.e;if(n!==null){t.e=null;for(var r of n)jn(r)}return e!==void 0&&(t.x=e),t.i=!0,Ye=t.p,e??{}}function Ze(){return!0}var Qe=[];function $e(){var e=Qe;Qe=[],p(e)}function et(e){if(Qe.length===0&&!zt){var t=Qe;queueMicrotask(()=>{t===Qe&&$e()})}Qe.push(e)}function tt(){for(;Qe.length>0;)$e()}function nt(e){var t=ir;if(t===null)return tr.f|=se,e;if(!(t.f&32768)&&!(t.f&4))throw e;rt(e,t)}function rt(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var it=~(y|b|v);function at(e,t){e.f=e.f&it|t}function ot(e){e.f&512||e.deps===null?at(e,v):at(e,b)}function st(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=ie,st(t.deps))}function ct(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),st(e.deps),at(e,v)}var lt=!1;function ut(e){var t=lt;try{return lt=!1,[e(),lt]}finally{lt=t}}function dt(e,t){if(t){let t=document.body;e.autofocus=!0,et(()=>{document.activeElement===t&&e.focus()})}}function ft(e){Re&&yn(e)!==null&&xn(e)}var pt=!1;function mt(){pt||(pt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[he]?.()})},{capture:!0}))}function ht(e){var t=tr,n=ir;rr(null),ar(null);try{return e()}finally{rr(t),ar(n)}}function gt(e,t,n,r=n){e.addEventListener(t,()=>ht(n));let i=e[he];i?e[he]=()=>{i(),r(!0)}:e[he]=()=>r(!0),mt()}function _t(e){let t=0,n=an(0),r;return()=>{On()&&(I(n),In(()=>(t===0&&(r=Er(()=>e(()=>ln(n)))),t+=1,()=>{et(()=>{--t,t===0&&(r?.(),r=void 0,ln(n))})})))}}var vt=ee|te;function yt(e,t,n,r){new bt(e,t,n,r)}var bt=class{parent;is_pending=!1;transform_error;#e;#t=Re?Be:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=_t(()=>(this.#m=an(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=ir;t.b=this,t.f|=128,n(e)},this.parent=ir.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Ln(()=>{if(Re){let e=this.#t;He();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},vt),Re&&(this.#e=Be)}#g(){try{this.#a=zn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=zn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=zn(()=>e(this.#e)),et(()=>{var e=this.#c=document.createDocumentFragment(),t=vn();e.append(t),this.#a=this.#x(()=>zn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Kn(this.#o,()=>{this.#o=null}),this.#b(Ft))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=zn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Xn(this.#a,e);let t=this.#n.pending;this.#o=zn(()=>t(this.#e))}else this.#b(Ft)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){ct(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=ir,n=tr,r=Ye;ar(this.#i),rr(this.#i),Xe(this.#i.ctx);try{return Gt.ensure(),e()}catch(e){return nt(e),null}finally{ar(t),rr(n),Xe(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Kn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,et(()=>{this.#d=!1,this.#m&&sn(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),I(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;Ft?.is_fork?(this.#a&&Ft.skip_effect(this.#a),this.#o&&Ft.skip_effect(this.#o),this.#s&&Ft.skip_effect(this.#s),Ft.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Un(this.#a),null),this.#o&&=(Un(this.#o),null),this.#s&&=(Un(this.#s),null),Re&&(Ve(this.#t),Ue(),Ve(We()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Le();return}r=!0,i&&Oe(),this.#s!==null&&Kn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){rt(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return zn(()=>{var t=ir;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return rt(e,this.#i.parent),null}}))};et(()=>{var t;try{t=this.transform_error(e)}catch(e){rt(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>rt(e,this.#i&&this.#i.parent)):o(t)})}};function xt(e,t,n,r){let i=Ze()?Tt:Ot;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=ir,c=St(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){rt(e,s)}Ct()}}var d=wt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Dt(e))).then(u).catch(e=>rt(e,s)).finally(d)}l?l.then(()=>{c(),f(),Ct()}):f()}function St(){var e=ir,t=tr,n=Ye,r=Ft;return function(i=!0){ar(e),rr(t),Xe(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function Ct(e=!0){ar(null),rr(null),Xe(null),e&&Ft?.deactivate()}function wt(){var e=ir,t=e.b,n=Ft,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Tt(e){var t=2|y;return ir!==null&&(ir.f|=te),{ctx:Ye,deps:null,effects:null,equals:Ke,f:t,fn:e,reactions:null,rv:0,v:Ae,wv:0,parent:ir,ac:null}}var Et=Symbol(`obsolete`);function Dt(e,t,n){let r=ir;r===null&&ve();var i=void 0,a=an(Ae),o=!tr,s=new Set;return Fn(()=>{var t=ir,n=m();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ge&&n.reject(e)}).finally(Ct)}catch(e){n.reject(e),Ct()}var c=Ft;if(o){if(t.f&32768)var l=wt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(Et);else for(let e of s.values())e.reject(Et);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==Et&&(c.activate(),t?(a.f|=se,sn(a,t)):(a.f&8388608&&(a.f^=se),sn(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),kn(()=>{for(let e of s)e.reject(Et)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function O(e){let t=Tt(e);return sr(t),t}function Ot(e){let t=Tt(e);return t.equals=Je,t}function kt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(ge),t.ac=null}),t.fn!==null&&(t.teardown=f),xr(t,0),Vn(t))}function Nt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Sr(t)}var Pt=null,Ft=null,It=null,Lt=null,Rt=null,zt=!1,Bt=!1,Vt=null,Ht=null,Ut=0,Wt=1,Gt=class e{id=Wt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Pt===null?Pt=this:(Pt.#n=this,this.#t=Pt),Pt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)at(r,y),t(r);for(r of n.m)at(r,b),t(r)}this.#p.add(e)}#g(){this.#e=!0,Ut++>1e3&&(this.#x(),qt());for(let e of this.#u)this.#d.delete(e),at(e,y),this.schedule(e);for(let e of this.#d)at(e,b),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=Vt=[],r=[],i=Ht=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw en(e),this.#h()||this.discard(),t}if(Ft=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Vt=null,Ht=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)$t(e,t);i.length>0&&Ft.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),It=this,Yt(r),Yt(n),It=null,this.#s?.resolve();var s=Ft;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):_r(r)&&(i&16&&this.#d.add(r),Sr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),at(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),Ft=this,this.#g()}#b(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=m()).promise}static ensure(){if(Ft===null){let t=Ft=new e;!Bt&&!zt&&et(()=>{t.#e||t.flush()})}return Ft}apply(){Lt=null}schedule(e){if(Rt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Vt!==null&&t===ir&&(tr===null||!(tr.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Pt=e:t.#t=e,this.linked=!1}}};function Kt(e){var t=zt;zt=!0;try{var n;for(e&&(Ft!==null&&!Ft.is_fork&&Ft.flush(),n=e());;){if(tt(),Ft===null)return n;Ft.flush()}}finally{zt=t}}function qt(){try{Ce()}catch(e){rt(e,Rt)}}var Jt=null;function Yt(e){var t=e.length;if(t!==0){for(var n=0;n0)){nn.clear();for(let e of Jt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Jt.has(n)&&(Jt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Sr(n)}}Jt.clear()}}Jt=null}}function Xt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Xt(i,t,n,r):e&4194320&&!(e&2048)&&Zt(i,t,r)&&(at(i,y),Qt(i))}}function Zt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Zt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Qt(e){Ft.schedule(e)}function $t(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),at(e,v);for(var n=e.first;n!==null;)$t(n,t),n=n.next}}function en(e){at(e,v);for(var t=e.first;t!==null;)en(t),t=t.next}var tn=new Set,nn=new Map,rn=!1;function an(e,t){return{f:0,v:e,reactions:null,equals:Ke,rv:0,wv:0}}function k(e,t){let n=an(e,t);return sr(n),n}function on(e,t=!1,n=!0){let r=an(e);return t||(r.equals=Je),r}function A(e,t,n=!1){return tr!==null&&(!nr||tr.f&131072)&&Ze()&&tr.f&4325394&&(or===null||!or.has(e))&&De(),sn(e,n?j(t):t,Ht)}function sn(e,t,n=null){if(!e.equals(t)){nn.set(e,$n?t:e.v);var r=Gt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&At(t),Lt===null&&ot(t)}e.wv=gr(),un(e,y,n),Ze()&&ir!==null&&ir.f&1024&&!(ir.f&96)&&(ur===null?dr([e]):ur.push(e)),!r.is_fork&&tn.size>0&&!rn&&cn()}return t}function cn(){rn=!1;for(let e of tn){e.f&1024&&at(e,b);let t;try{t=_r(e)}catch{t=!0}t&&Sr(e)}tn.clear()}function ln(e){A(e,e.v+1)}function un(e,t,n){var r=e.reactions;if(r!==null)for(var i=Ze(),a=r.length,o=0;o{if(mr===d)return e();var t=tr,n=mr;rr(null),hr(d);var r=e();return rr(t),hr(n),r};return i&&r.set(`length`,k(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Te();var i=r.get(t);return i===void 0?f(()=>{var e=k(n.value,u);return r.set(t,e),e}):A(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>k(Ae,u));r.set(t,e),ln(o)}}else A(n,Ae),ln(o);return!0},get(e,n,i){if(n===ce)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>k(j(s?e[n]:Ae),u)),r.set(n,o)),o!==void 0){var c=I(o);return c===Ae?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=I(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==Ae)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===ce)return!0;var n=r.get(t),i=n!==void 0&&n.v!==Ae||Reflect.has(e,t);return(n!==void 0||ir!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>k(i?j(e[t]):Ae,u)),r.set(t,n)),I(n)===Ae)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;dk(Ae,u)),r.set(d+``,p)):A(p,Ae)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>k(void 0,u)),A(c,j(n)),r.set(t,c));else{l=c.v!==Ae;var m=f(()=>j(n));A(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&A(g,_+1)}ln(o)}return!0},ownKeys(e){I(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==Ae});for(var[n,i]of r)i.v!==Ae&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ee()}})}function dn(e){try{if(typeof e==`object`&&e&&ce in e)return e[ce]}catch{}return e}function fn(e,t){return Object.is(dn(e),dn(t))}var pn,mn,hn,gn;function _n(){if(pn===void 0){pn=window,mn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;hn=a(t,`firstChild`).get,gn=a(t,`nextSibling`).get,u(e)&&(e[fe]=void 0,e[de]=null,e[pe]=void 0,e.__e=void 0),u(n)&&(n[me]=void 0)}}function vn(e=``){return document.createTextNode(e)}function yn(e){return hn.call(e)}function bn(e){return gn.call(e)}function M(e,t){if(!Re)return yn(e);var n=yn(Be);if(n===null)n=Be.appendChild(vn());else if(t&&n.nodeType!==3){var r=vn();return n?.before(r),Ve(r),r}return t&&wn(n),Ve(n),n}function N(e,t=!1){if(!Re){var n=yn(e);return n instanceof Comment&&n.data===``?bn(n):n}if(t){if(Be?.nodeType!==3){var r=vn();return Be?.before(r),Ve(r),r}wn(Be)}return Be}function P(e,t=1,n=!1){let r=Re?Be:e;for(var i;t--;)i=r,r=bn(r);if(!Re)return r;if(n){if(r?.nodeType!==3){var a=vn();return r===null?i?.after(a):r.before(a),Ve(a),a}wn(r)}return Ve(r),r}function xn(e){e.textContent=``}function Sn(){return!1}function Cn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function wn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Tn(e){ir===null&&(tr===null&&Se(e),xe()),$n&&be(e)}function En(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Dn(e,t){var n=ir;n!==null&&n.f&8192&&(e|=x);var r={ctx:Ye,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Ft?.register_created_effect(r);var i=r;if(e&4)Vt===null?Gt.ensure().schedule(r):Vt.push(r);else if(t!==null){try{Sr(r)}catch(e){throw Un(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=ee))}if(i!==null&&(i.parent=n,n!==null&&En(i,n),tr!==null&&tr.f&2&&!(e&64))){var a=tr;(a.effects??=[]).push(i)}return r}function On(){return tr!==null&&!nr}function kn(e){let t=Dn(8,null);return at(t,v),t.teardown=e,t}function An(e){Tn(`$effect`);var t=ir.f;if(!tr&&t&32&&Ye!==null&&!Ye.i){var n=Ye;(n.e??=[]).push(e)}else return jn(e)}function jn(e){return Dn(4|ne,e)}function Mn(e){Gt.ensure();let t=Dn(64|te,e);return()=>{Un(t)}}function Nn(e){Gt.ensure();let t=Dn(64|te,e);return(e={})=>new Promise(n=>{e.outro?Kn(t,()=>{Un(t),n(void 0)}):(Un(t),n(void 0))})}function Pn(e){return Dn(4,e)}function Fn(e){return Dn(oe|te,e)}function In(e,t=0){return Dn(8|t,e)}function F(e,t=[],n=[],r=[]){xt(r,t,n,t=>{Dn(8,()=>{e(...t.map(I))})})}function Ln(e,t=0){return Dn(16|t,e)}function Rn(e,t=0){return Dn(_|t,e)}function zn(e){return Dn(32|te,e)}function Bn(e){var t=e.teardown;if(t!==null){let e=$n,n=tr;er(!0),rr(null);try{t.call(null)}finally{er(e),rr(n)}}}function Vn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&ht(()=>{e.abort(ge)});var r=n.next;n.f&64?n.parent=null:Un(n,t),n=r}}function Hn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Un(t),t=n}}function Un(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Wn(e.nodes.start,e.nodes.end),n=!0),e.f|=w,Vn(e,t&&!n),xr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Bn(e),e.f^=w,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&Gn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Wn(e,t){for(;e!==null;){var n=e===t?null:bn(e);e.remove(),e=n}}function Gn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Kn(e,t,n=!0){var r=[];qn(e,r,!0);var i=()=>{n&&Un(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function qn(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;qn(i,t,o?n:!1)}i=a}}}function Jn(e){Yn(e,!0)}function Yn(e,t){if(e.f&8192){e.f^=x,e.f&1024||(at(e,y),Gt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Yn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Xn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:bn(n);t.append(n),n=i}}var Zn=null,Qn=!1,$n=!1;function er(e){$n=e}var tr=null,nr=!1;function rr(e){tr=e}var ir=null;function ar(e){ir=e}var or=null;function sr(e){tr!==null&&(or??=new Set).add(e)}var cr=null,lr=0,ur=null;function dr(e){ur=e}var fr=1,pr=0,mr=pr;function hr(e){mr=e}function gr(){return++fr}function _r(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~ie),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&Lt===null&&at(e,v)}return!1}function vr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(or!==null&&or.has(e)))for(var i=0;i{e.ac.abort(ge)}),e.ac=null);try{e.f|=ae;var u=e.fn,d=u();e.f|=C;var f=e.deps,p=Ft?.is_fork;if(cr!==null){var m;if(p||xr(e,lr),f!==null&&lr>0)for(f.length=lr+cr.length,m=0;m{s.ac.abort(ge),s.ac=null,at(s,y)}),Mt(s),xr(s,0)}}function xr(e,t){var n=e.deps;if(n!==null)for(var r=t;rn?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?et(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Vr(e,t,n,r,i){var a={capture:r,passive:i},o=Br(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&kn(()=>{t.removeEventListener(e,o,a)})}function L(e,t,n){(t[Lr]??={})[e]=n}function Hr(e){for(var t=0;t{throw e});throw p}}finally{e[Lr]=t,delete e.currentTarget,rr(d),ar(f)}}}var Gr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Kr(e){return Gr?.createHTML(e)??e}function qr(e){var t=Cn(`template`);return t.innerHTML=Kr(e.replaceAll(``,``)),t.content}function Jr(e,t){var n=ir;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function R(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(Re)return Jr(Be,null),Be;i===void 0&&(i=qr(a?e:``+e),n||(i=yn(i)));var t=r||mn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=yn(t),s=t.lastChild;Jr(o,s)}else Jr(t,t);return t}}function Yr(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}`,o;return()=>{if(Re)return Jr(Be,null),Be;if(!o){var e=yn(qr(a));if(i)for(o=document.createDocumentFragment();yn(e);)o.appendChild(yn(e));else o=yn(e)}var t=o.cloneNode(!0);if(i){var n=yn(t),r=t.lastChild;Jr(n,r)}else Jr(t,t);return t}}function Xr(e,t){return Yr(e,t,`svg`)}function Zr(e=``){if(!Re){var t=vn(e+``);return Jr(t,t),t}var n=Be;return n.nodeType===3?wn(n):(n.before(n=vn()),Ve(n)),Jr(n,n),n}function Qr(){if(Re)return Jr(Be,null),Be;var e=document.createDocumentFragment(),t=document.createComment(``),n=vn();return e.append(t,n),Jr(t,n),e}function z(e,t){if(Re){var n=ir;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=Be),He();return}e!==null&&e.before(t)}var $r=!0;function ei(e){$r=e}function B(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[me]??=e.nodeValue)&&(e[me]=n,e.nodeValue=`${n}`)}function ti(e,t){return ri(e,t)}var ni=new Map;function ri(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){_n();var l=void 0,u=Nn(()=>{var u=n??t.appendChild(vn());yt(u,{pending:()=>{}},t=>{E({});var n=Ye;if(o&&(n.c=o),a&&(i.$$events=a),Re&&Jr(t,null),$r=s,l=e(t,i)||{},$r=!0,Re&&(ir.nodes.end=Be,Be===null||Be.nodeType!==8||Be.data!==`]`))throw Fe(),ke;D()},c);var d=new Set,f=e=>{for(var n=0;n{for(var e of d)for(let n of[t,document]){var r=ni.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Wr),r.delete(e),r.size===0&&ni.delete(n)):r.set(e,i)}zr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return ii.set(l,u),l}var ii=new WeakMap,ai=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Jn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Jn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Un(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Xn(r,t),t.append(vn()),this.#n.set(e,{effect:r,fragment:t})}else Un(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Kn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Un(n.effect),this.#n.delete(e))};ensure(e,t){var n=Ft,r=Sn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=vn();i.append(a),this.#n.set(e,{effect:zn(()=>t(a)),fragment:i})}else this.#t.set(e,zn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else Re&&(this.anchor=Be),this.#a(n)}};function V(e,t,n=!1){var r;Re&&(r=Be,He());var i=new ai(e),a=n?ee:0;function o(e,t){if(Re){var n=Ge(r);if(e!==parseInt(n.substring(1))){var a=We();Ve(a),i.anchor=a,ze(!1),i.ensure(e,t),ze(!0);return}}i.ensure(e,t)}Ln(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function oi(e,t){return t}function si(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;ci(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;xn(d),d.append(u),e.items.clear()}ci(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function ci(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,di(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=re,pi(d,null,c)):Jn(d):Kn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Ln(()=>{p=I(f);var e=p.length;let t=!1;Re&&Ge(c)===`[!`!=(e===0)&&(c=We(),Ve(c),ze(!1),t=!0);for(var r=new Set,u=Ft,v=Sn(),y=0;ys(c)):(d=zn(()=>s(li??=vn())),d.f|=re)),e>r.size&&ye(``,``,``),Re&&e>0&&Ve(We()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&ze(!0),I(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,Re&&(c=Be)}function ui(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function di(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=ui(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var te=i&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function fi(e,t,n,r,i,a,o,s){var c=o&1?o&16?an(n):on(n,!1,!1):null,l=o&2?an(i):null;return{v:c,i:l,e:zn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function pi(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=bn(r);if(a.before(r),r===i)return;r=o}}function mi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function hi(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;Re&&(o=Ve(yn(c)))}F(()=>{var e=ir;if(s===(s=t()??``)){Re&&He();return}if(n&&!Re){e.nodes=null,c.innerHTML=s,s!==``&&Jr(yn(c),c.lastChild);return}if(e.nodes!==null&&(Wn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(Re){for(var a=Be.data,l=He(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=bn(l);if(l===null)throw Fe(),ke;Jr(Be,u),o=Ve(l);return}var d=Cn(r?`svg`:i?`math`:`template`,r?Me:i?Ne:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(Jr(yn(f),f.lastChild),r||i)for(;yn(f);)o.before(yn(f));else o.before(f)}})}function gi(e,t,...n){var r=new ai(e);Ln(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},ee)}function _i(e,t,n){var r;Re&&(r=Be,He());var i=new ai(e);Ln(()=>{var e=t()??null;if(Re&&Ge(r)===`[`!=(e!==null)){var a=We();Ve(a),i.anchor=a,ze(!1),i.ensure(e,e&&(t=>n(t,e))),ze(!0);return}i.ensure(e,e&&(t=>n(t,e)))},ee)}var vi=()=>performance.now(),yi={tick:e=>requestAnimationFrame(e),now:()=>vi(),tasks:new Set};function bi(){let e=yi.now();yi.tasks.forEach(t=>{t.c(e)||(yi.tasks.delete(t),t.f())}),yi.tasks.size!==0&&yi.tick(bi)}function xi(e){let t;return yi.tasks.size===0&&yi.tick(bi),{promise:new Promise(n=>{yi.tasks.add(t={c:e,f:n})}),abort(){yi.tasks.delete(t)}}}function Si(e,t){ht(()=>{e.dispatchEvent(new CustomEvent(t))})}function Ci(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function wi(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=Ci(n.trim());t[i]=r.trim()}return t}var Ti=e=>e,Ei=null;function Di(e){Ei=e}function Oi(e,t,n){var r=(Ei??ir).nodes,i,a,o,s=null;r.a??={element:e,measure(){i=this.element.getBoundingClientRect()},apply(){if(o?.abort(),a=this.element.getBoundingClientRect(),i.left!==a.left||i.right!==a.right||i.top!==a.top||i.bottom!==a.bottom){let e=t()(this.element,{from:i,to:a},n?.());o=Ai(this.element,e,void 0,1,()=>{},()=>{o?.abort(),o=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var a=e.style;s={position:a.position,width:a.width,height:a.height,transform:a.transform},a.position=`absolute`,a.width=n,a.height=r;var o=e.getBoundingClientRect();if(i.left!==o.left||i.top!==o.top){var c=`translate(${i.left-o.left}px, ${i.top-o.top}px)`;a.transform=a.transform?`${a.transform} ${c}`:c}}}},unfix(){if(s){var t=e.style;t.position=s.position,t.width=s.width,t.height=s.height,t.transform=s.transform}}},r.a.element=e}function ki(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return ht(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=Ai(t,m(),p,1,()=>{Si(t,`introstart`)},()=>{Si(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=Ai(t,m(),f,0,()=>{Si(t,`outrostart`)},()=>{Si(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=ir;if((g.nodes.t??=[]).push(h),i&&$r){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&Pn(()=>{Er(()=>h.in())})}}function Ai(e,t,n,r,i,a){var o=r===1;if(d(t)){var s,c=!1;return et(()=>{c||(s=Ai(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s?.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:f,deactivate:f,reset:f,t:()=>r};let{delay:l=0,css:u,tick:p,easing:m=Ti}=t;var h=[];if(o&&n===void 0&&(p&&p(0,1),u)){var g=wi(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{v.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var d=!1;if(u)for(var f=Math.ceil(c/(1e3/60)),h=0;h<=f;h+=1){var g=o+s*m(h/f),y=wi(u(g,1-g));l.push(y),d||=y.overflow===`hidden`}d&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return o+s*m(e/c)},p&&xi(()=>{if(v.playState!==`running`)return!1;var e=_();return p(e,1-e),!0})}v=e.animate(l,{duration:c,fill:`forwards`}),v.onfinish=()=>{_=()=>r,p?.(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=f)},deactivate:()=>{a=f},reset:()=>{r===0&&p?.(1,0)},t:()=>_()}}function ji(e,t,n,r,i,a){let o=Re;Re&&He();var s=null;Re&&Be.nodeType===1&&(s=Be,He());var c=Re?Be:e,l=ir,u=new ai(c,!1);Ln(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Me:void 0;if(e===null){u.ensure(null,null),ei(!0);return}return u.ensure(e,t=>{if(e){if(s=Re?s:Cn(e,a),Jr(s,s),r){var n=null;Re&&Ir(e)&&s.append(n=document.createComment(``));var i=Re?yn(s):s.appendChild(vn());Re&&(i===null?ze(!1):Ve(i)),Di(l),r(s,i),n?.remove(),Di(null)}ir.nodes.end=s,t.before(s)}Re&&Ve(t)}),ei(!0),()=>{e&&ei(!1)}},ee),kn(()=>{ei(!0)}),o&&(ze(!0),Ve(c))}function Mi(e,t){var n=void 0,r;Rn(()=>{n!==(n=t())&&(r&&=(Un(r),null),n&&(r=zn(()=>{Pn(()=>n(e))})))})}function Ni(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Ii.includes(r[o-1]))&&(s===r.length||Ii.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Ri(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function zi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Bi(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(zi)),i&&c.push(...Object.keys(i).map(zi));var l=0,u=-1;let t=e.length;for(var d=0;d{Ui(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),kn(()=>{t.disconnect()})}function Gi(e,t,n=t){var r=new WeakSet,i=!0;gt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Ki);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Ki(o)}n(a),e.__value=a,Ft!==null&&r.add(Ft)}),Pn(()=>{var a=t();if(e===document.activeElement){var o=Ft;if(r.has(o))return}if(Ui(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Ki(s),n(a))}e.__value=a,i=!1}),Wi(e)}function Ki(e){return`__value`in e?e.__value:e.value}var qi=Symbol(`class`),Ji=Symbol(`style`),Yi=Symbol(`is custom element`),Xi=Symbol(`is html`),Zi=_e?`link`:`LINK`,Qi=_e?`input`:`INPUT`,$i=_e?`option`:`OPTION`,ea=_e?`select`:`SELECT`,ta=_e?`progress`:`PROGRESS`;function na(e){if(Re){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;W(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;W(e,`checked`,null),e.checked=r}}};e[he]=n,et(n),mt()}}function ra(e,t){var n=ca(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==ta)||(e.value=t??``)}function ia(e,t){var n=ca(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function aa(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function W(e,t,n,r){var i=ca(e);Re&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Zi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ue]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ua(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function oa(e,t,n,r,i=!1,a=!1){if(Re&&i&&e.nodeName===Qi){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||na(o)}var s=ca(e),c=s[Yi],l=!s[Xi];let u=Re&&c;u&&ze(!1);var d=t||{},f=e.nodeName===$i;for(var p in t)p in n||(n[p]=null);n.class?n.class=Fi(n.class):(r||n[qi])&&(n.class=null),n[Ji]&&(n.style??=null);var m=ua(e);if(e.nodeName===Qi&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,W(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){U(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[qi],n[qi]),d[i]=o,d[qi]=n[qi];continue}if(i===`style`){Hi(e,o,t?.[Ji],n[Ji]),d[i]=o,d[Ji]=n[Ji];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=kr(r);if(Dr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)L(r,e,o),Hr([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=Br(r,e,a,t)}}else if(i===`style`)W(e,i,o);else if(i===`autofocus`)dt(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)aa(e,o);else{var y=i;l||(y=Mr(y));var b=y===`defaultValue`||y===`defaultChecked`;if(o==null&&!c&&!b)if(s[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else b||m.includes(y)&&(c||typeof o!=`string`)?(e[y]=o,y in s&&(s[y]=Ae)):typeof o!=`function`&&W(e,y,o,a)}}}return u&&ze(!0),d}function sa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){xt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===ea,l=!1;if(Rn(()=>{var u=t(...n.map(I)),d=oa(e,r,u,a,o,s);l&&c&&`value`in u&&Ui(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Un(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Un(i[t]),i[t]=zn(()=>Mi(e,()=>f))),d[t]=f}r=d}),c){var u=e;Pn(()=>{Ui(u,r.value,!0),Wi(u)})}l=!0})}function ca(e){return e[de]??={[Yi]:e.nodeName.includes(`-`),[Xi]:e.namespaceURI===je}}var la=new Map;function ua(e){var t=e.getAttribute(`is`)||e.nodeName,n=la.get(t);if(n)return n;la.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function da(e,t,n=t){var r=new WeakSet;gt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=pa(e)?ma(a):a,n(a),Ft!==null&&r.add(Ft),await Cr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(Re&&e.defaultValue!==e.value||Er(t)==null&&e.value)&&(n(pa(e)?ma(e.value):e.value),Ft!==null&&r.add(Ft)),In(()=>{var n=t();if(e===document.activeElement){var i=Ft;if(r.has(i))return}pa(e)&&n===ma(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function fa(e,t,n=t){gt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(Re&&e.defaultChecked!==e.checked||Er(t)==null)&&n(e.checked),In(()=>{e.checked=!!t()})}function pa(e){var t=e.type;return t===`number`||t===`range`}function ma(e){return e===``?null:+e}function ha(e,t){return e===t||e?.[ce]===t}function ga(e={},t,n,r){var i=Ye.r,a=ir;return Pn(()=>{var o,s;return In(()=>{o=s,s=r?.()||[],Er(()=>{ha(n(...s),e)||(t(e,...s),o&&ha(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&ha(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var _a={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function va(e,t,n){return new Proxy({props:e,exclude:t},_a)}function ya(e,t,n,r){var i=!0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Tt(r),I(u)):(l&&(l=!1,c=s?Er(r):r),c);let f;if(o){var p=ce in e||le in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=ut(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&we(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Tt:Ot)(()=>(v=!1,g()));o&&I(y);var b=ir;return(function(e,t){if(arguments.length>0){let n=t?I(y):i&&o?j(e):e;return A(y,n),v=!0,c!==void 0&&(c=n),e}return $n&&v||b.f&16384?y.v:I(y)})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var ba={activity:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`}]],"arrow-left":[[`path`,{d:`m12 19-7-7 7-7`}],[`path`,{d:`M19 12H5`}]],"arrow-right":[[`path`,{d:`M5 12h14`}],[`path`,{d:`m12 5 7 7-7 7`}]],box:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]],calculator:[[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`6`,y2:`6`}],[`line`,{x1:`16`,x2:`16`,y1:`14`,y2:`18`}],[`path`,{d:`M16 10h.01`}],[`path`,{d:`M12 10h.01`}],[`path`,{d:`M8 10h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M8 18h.01`}]],calendar:[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}]],"calendar-days":[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M16 14h.01`}],[`path`,{d:`M8 18h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M16 18h.01`}]],"chart-column":[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M18 17V9`}],[`path`,{d:`M13 17V5`}],[`path`,{d:`M8 17v-3`}]],"chart-column-increasing":[[`path`,{d:`M13 17V9`}],[`path`,{d:`M18 17V5`}],[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M8 17v-3`}]],check:[[`path`,{d:`M20 6 9 17l-5-5`}]],"chevron-down":[[`path`,{d:`m6 9 6 6 6-6`}]],"chevron-right":[[`path`,{d:`m9 18 6-6-6-6`}]],"circle-check":[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m9 12 2 2 4-4`}]],"circle-check-big":[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]],"circle-dollar-sign":[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`}],[`path`,{d:`M12 18V6`}]],clock:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 6v6l4 2`}]],copy:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]],database:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]],"database-zap":[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`}],[`path`,{d:`M21 5V8`}],[`path`,{d:`M21 12L18 17H22L19 22`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`}]],"file-text":[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]],gauge:[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]],history:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`path`,{d:`M12 7v5l4 2`}]],inbox:[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`}]],info:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]],"key-round":[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],"layout-dashboard":[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]],list:[[`path`,{d:`M3 5h.01`}],[`path`,{d:`M3 12h.01`}],[`path`,{d:`M3 19h.01`}],[`path`,{d:`M8 5h13`}],[`path`,{d:`M8 12h13`}],[`path`,{d:`M8 19h13`}]],"lock-keyhole":[[`circle`,{cx:`12`,cy:`16`,r:`1`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`}]],"maximize-2":[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`m21 3-7 7`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M9 21H3v-6`}]],monitor:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`}]],moon:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`}]],pencil:[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]],plug:[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]],plus:[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]],power:[[`path`,{d:`M12 2v10`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`}]],"refresh-cw":[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]],"rotate-ccw":[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}]],save:[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]],search:[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]],server:[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`}]],"server-cog":[[`path`,{d:`m10.852 14.772-.383.923`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`}],[`path`,{d:`m13.148 9.228.383-.923`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`}],[`path`,{d:`m14.772 10.852.923-.383`}],[`path`,{d:`m14.772 13.148.923.383`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`}],[`path`,{d:`M6 18h.01`}],[`path`,{d:`M6 6h.01`}],[`path`,{d:`m9.228 10.852-.923-.383`}],[`path`,{d:`m9.228 13.148-.923.383`}]],settings:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]],"settings-2":[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]],shield:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}]],"shield-check":[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}],[`path`,{d:`m9 12 2 2 4-4`}]],"shield-off":[[`path`,{d:`m2 2 20 20`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`}]],shuffle:[[`path`,{d:`m18 14 4 4-4 4`}],[`path`,{d:`m18 2 4 4-4 4`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`}]],sun:[[`circle`,{cx:`12`,cy:`12`,r:`4`}],[`path`,{d:`M12 2v2`}],[`path`,{d:`M12 20v2`}],[`path`,{d:`m4.93 4.93 1.41 1.41`}],[`path`,{d:`m17.66 17.66 1.41 1.41`}],[`path`,{d:`M2 12h2`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`m6.34 17.66-1.41 1.41`}],[`path`,{d:`m19.07 4.93-1.41 1.41`}]],tag:[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],timer:[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`}],[`circle`,{cx:`12`,cy:`14`,r:`8`}]],"trash-2":[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],"triangle-alert":[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]],user:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]],wallet:[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`}]],"wand-sparkles":[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`}],[`path`,{d:`m14 7 3 3`}],[`path`,{d:`M5 6v4`}],[`path`,{d:`M19 14v4`}],[`path`,{d:`M10 2v2`}],[`path`,{d:`M7 8H3`}],[`path`,{d:`M21 16h-4`}],[`path`,{d:`M11 3H9`}]],workflow:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`}]],x:[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]]},xa=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`class`]),Sa=Xr(``);function G(e,t){E(t,!0);let n=ya(t,`name`,3,``),r=ya(t,`class`,3,``),i=va(t,xa),a=O(()=>ba[n()]||[]);var o=Sa();sa(o,()=>({xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:r(),"aria-hidden":`true`,focusable:`false`,...i}));{let e=(t,n=f)=>{var r=Qr();H(N(r),17,n,oi,(t,n)=>{var r=O(()=>g(I(n),3));let i=()=>I(r)[0],a=()=>I(r)[1],o=()=>I(r)[2];var s=Qr();ji(N(s),i,!0,(t,n)=>{sa(t,()=>({xmlns:`http://www.w3.org/2000/svg`,...a()}));var r=Qr(),i=N(r),s=t=>{e(t,o)},c=O(()=>Array.isArray(o()));V(i,e=>{I(c)&&e(s)}),z(n,r)}),z(t,s)}),z(t,r)};e(M(o),()=>I(a)),T(o)}z(e,o),D()}var Ca=Xr(``);function wa(e){z(e,Ca())}function Ta(){try{return typeof localStorage>`u`?null:localStorage}catch{return null}}function Ea(e,t=null){let n=Ta();if(!n)return t;try{return n.getItem(e)??t}catch{return t}}function Da(e,t){let n=Ta();if(n)try{n.setItem(e,String(t))}catch{}}var Oa=new class{#e=k(`system`);get theme(){return I(this.#e)}set theme(e){A(this.#e,e,!0)}#t=k(0);get tick(){return I(this.#t)}set tick(e){A(this.#t,e,!0)}init(){this.theme=Ea(`gomodel_theme`,`system`),this.apply(),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{this.theme===`system`&&this.tick++})}set(e){this.theme=e,Da(`gomodel_theme`,e),this.apply(),this.tick++}toggle(){let e=[`light`,`system`,`dark`];this.set(e[(e.indexOf(this.theme)+1)%e.length])}apply(){let e=document.documentElement;this.theme===`system`?e.removeAttribute(`data-theme`):e.setAttribute(`data-theme`,this.theme)}},ka=new class{#e=k(!1);get collapsed(){return I(this.#e)}set collapsed(e){A(this.#e,e,!0)}init(){this.collapsed=Ea(`gomodel_sidebar_collapsed`)===`true`}toggle(){this.collapsed=!this.collapsed,Da(`gomodel_sidebar_collapsed`,this.collapsed)}},Aa=new class{#e=k(j([]));get stack(){return I(this.#e)}set stack(e){A(this.#e,e,!0)}#t=1;opened(){let e=this.#t++;return this.stack=[...this.stack,e],e}closed(e){this.stack=this.stack.filter(t=>t!==e)}isTop(e){return this.stack.length>0&&this.stack[this.stack.length-1]===e}get openCount(){return this.stack.length}get anyOpen(){return this.stack.length>0}},ja=R(``),Ma=R(`
        `,1);function Na(e,t){E(t,!0);let n=ya(t,`compact`,3,!1),r=[{value:`light`,icon:`sun`,label:`Light theme`},{value:`system`,icon:`monitor`,label:`System theme`},{value:`dark`,icon:`moon`,label:`Dark theme`}],i=O(()=>r.find(e=>e.value===Oa.theme)||r[1]),a=O(()=>`Change theme (currently `+I(i).label+`)`);var o=Ma(),s=N(o);let c;H(s,21,()=>r,e=>e.value,(e,t)=>{var n=ja();let r;G(M(n),{get name(){return I(t).icon},class:`theme-icon`}),T(n),F(()=>{r=U(n,1,`theme-btn svelte-1keql7b`,null,r,{active:Oa.theme===I(t).value}),W(n,`aria-pressed`,Oa.theme===I(t).value),W(n,`title`,I(t).label),W(n,`aria-label`,I(t).label)}),L(`click`,n,()=>Oa.set(I(t).value)),z(e,n)}),T(s);var l=P(s,2);let u;G(M(l),{get name(){return I(i).icon},class:`theme-icon`}),T(l),F(()=>{c=U(s,1,`theme-toggle svelte-1keql7b`,null,c,{"is-compact":n()}),u=U(l,1,`theme-toggle-mobile svelte-1keql7b`,null,u,{"is-compact":n()}),W(l,`title`,I(a)),W(l,`aria-label`,I(a))}),L(`click`,l,()=>Oa.toggle()),z(e,o),D()}Hr([`click`]);function Pa(){return typeof window>`u`?`/`:window.GOMODEL_BASE_PATH||`/`}function Fa(e){let t=Pa();return!e||e.charAt(0)!==`/`||e.indexOf(`//`)===0||t===`/`||e===t||e.indexOf(t+`/`)===0?e:t+e}function Ia(e){let t=Pa();return t===`/`||!e?e:e===t?`/`:e.indexOf(t+`/`)===0?e.slice(t.length)||`/`:e}function La(){return typeof window>`u`?``:window.GOMODEL_VERSION||``}function Ra(){return typeof window>`u`?!1:window.GOMODEL_DEMO_MODE===!0}var za=[`overview`,`usage`,`budgets`,`rate-limits`,`models`,`workflows`,`audit-logs`,`guardrails`,`mcp-servers`,`providers-config`,`auth-keys`,`settings`];function Ba(e){return e.startsWith(`/admin/static/`)?`/`+e.slice(14).replace(/^\/+/,``):e}function Va(e){let t=Ba(Ia(e)).replace(/\/$/,``).replace(`/admin/dashboard`,``).replace(/^\//,``).split(`/`),n=t[0];n===`audit`&&(n=`audit-logs`);let r=t[1]||null;return n===`settings`&&r===`guardrails`?{page:`guardrails`,sub:null}:(n=za.includes(n)?n:`overview`,{page:n,sub:r})}var Ha=new class{#e=k(`overview`);get page(){return I(this.#e)}set page(e){A(this.#e,e,!0)}#t=k(null);get sub(){return I(this.#t)}set sub(e){A(this.#t,e,!0)}init(){let{page:e,sub:t}=Va(window.location.pathname);this.page=e,this.sub=t,window.addEventListener(`popstate`,()=>{let{page:e,sub:t}=Va(window.location.pathname);this.page=e,this.sub=t})}navigate(e,t=null){let n=t?`/`+t:``;history.pushState(null,``,Fa(`/admin/dashboard/`+e+n)),this.page=e,this.sub=t}},Ua=`gomodel_api_key`;function Wa(e){let t=String(e||``).trim();if(/^Bearer\s*$/i.test(t))return``;let n=t.match(/^Bearer\s+(.+)$/i);return n?n[1].trim():t}var K=new class{#e=k(``);get apiKey(){return I(this.#e)}set apiKey(e){A(this.#e,e,!0)}#t=k(!1);get needsAuth(){return I(this.#t)}set needsAuth(e){A(this.#t,e,!0)}#n=k(!1);get authError(){return I(this.#n)}set authError(e){A(this.#n,e,!0)}#r=k(``);get authErrorMessage(){return I(this.#r)}set authErrorMessage(e){A(this.#r,e,!0)}#i=k(!1);get dialogOpen(){return I(this.#i)}set dialogOpen(e){A(this.#i,e,!0)}#a=k(0);get generation(){return I(this.#a)}set generation(e){A(this.#a,e,!0)}#o=k(0);get refreshTick(){return I(this.#o)}set refreshTick(e){A(this.#o,e,!0)}init(){try{this.apiKey=Wa(localStorage.getItem(Ua)||``)}catch{this.apiKey=``}}hasApiKey(){return Wa(this.apiKey)!==``}save(){this.apiKey=Wa(this.apiKey);try{localStorage.setItem(Ua,this.apiKey)}catch{}}openDialog(){this.dialogOpen=!0}closeDialog(){this.dialogOpen=!1}submit(){let e=Wa(this.apiKey);return e?(this.apiKey=e,this.save(),this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!1,this.closeDialog(),this.refresh(),!0):(this.apiKey=``,this.authError=!0,this.authErrorMessage=``,this.needsAuth=!0,this.openDialog(),!1)}refresh(){this.refreshTick++}handleUnauthorized(e,t=``){return typeof e==`number`&&e{r[e.type]=e.value}),r.year+`-`+r.month+`-`+r.day}formatTimestampInTimeZone(e,t){if(e==null)return`-`;let n=new Date(e);if(Number.isNaN(n.getTime()))return`-`;let r=to(`en-CA`,{timeZone:no(t)?t:Za,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}).formatToParts(n),i={};return r.forEach(e=>{i[e.type]=e.value}),i.year+`-`+i.month+`-`+i.day+` `+i.hour+`:`+i.minute+`:`+i.second}formatTimestamp(e){return this.formatTimestampInTimeZone(e,this.effectiveTimezone())}currentDateKey(e){return this.dateKeyInTimeZone(e||new Date,this.effectiveTimezone())}dateKeyToDate(e){return Ka(e)}dateToDateKey(e){return qa(e)}addDaysToDateKey(e,t){return Ja(e,t)}todayDate(){return this.dateKeyToDate(this.currentDateKey())}startOfMonthDate(e){let t=e instanceof Date?e:this.todayDate();return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1))}timeZoneOffsetLabel(e,t){let n=no(e)?e:Za;try{let e=to(`en-US`,{timeZone:n,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`,timeZoneName:`longOffset`}).formatToParts(t||new Date).find(e=>e.type===`timeZoneName`);if(!e||!e.value)return`UTC+00:00`;let r=e.value.replace(`GMT`,`UTC`);return r===`UTC`?`UTC+00:00`:r}catch{return`UTC+00:00`}}timeZoneOffsetMinutes(e,t){let n=/^UTC([+-])(\d{2}):(\d{2})$/.exec(this.timeZoneOffsetLabel(e,t));if(!n)return 0;let r=Number(n[2])*60+Number(n[3]);return n[1]===`-`?-r:r}timeZoneOptionLabel(e,t){return e+` (`+this.timeZoneOffsetLabel(e,t)+`)`}detectedTimeZoneLabel(){return this.timeZoneOptionLabel(this.detectedTimezone)}effectiveTimeZoneLabel(){return this.timeZoneOptionLabel(this.effectiveTimezone())}ensureOptions(){if(this.optionsLoaded)return;let e=new Date,t=[];try{typeof Intl.supportedValuesOf==`function`&&(t=Intl.supportedValuesOf(`timeZone`))}catch{t=[]}[Za,this.detectedTimezone,this.override].forEach(e=>{e&&t.indexOf(e)===-1&&no(e)&&t.push(e)}),t=t.filter(e=>no(e)),t.sort((t,n)=>{let r=this.timeZoneOffsetMinutes(t,e)-this.timeZoneOffsetMinutes(n,e);return r===0?t.localeCompare(n):r}),this.options=t.map(t=>({value:t,label:this.timeZoneOptionLabel(t,e)})),this.optionsLoaded=!0}saveOverride(){let e=Ta();if(e)if(this.override&&no(this.override))try{e.setItem(Qa,this.override)}catch{}else{try{e.removeItem(Qa)}catch{}this.override=``}this.optionsLoaded=!1,this.ensureOptions()}clearOverride(){let e=Ta();if(e)try{e.removeItem(Qa)}catch{}this.override=``}calendarTimeZoneText(){let e=this.override?`manual override`:`auto-detected`;return`Activity grouped by `+this.effectiveTimeZoneLabel()+` (`+e+`)`}};function oo(e,t){let n=e&&typeof e==`object`&&e.error&&e.error.message;return(typeof n==`string`?n.trim():``)||t}function so(e,t){let n=e&&e.data;if(n&&typeof n==`object`){let e=[n.message,n.error,n.error&&typeof n.error==`object`?n.error.message:null];for(let t of e)if(typeof t==`string`&&t.trim())return t.trim()}return t}function co(){let e={"Content-Type":`application/json`},t=Wa(K.apiKey);return t&&(e.Authorization=`Bearer `+t),e[`X-GoModel-Timezone`]=ao.effectiveTimezone(),e}function lo(e,t={}){return fetch(Fa(e),{...t,headers:{...co(),...t.headers||{}}})}async function uo(e,t,{label:n=e,parse:r=!0}={}){let i=K.generation,a=await lo(e,t);if(a.status===401)return K.handleUnauthorized(i),{ok:!1,stale:ie.trim()).filter(Boolean);return e.length>0?e:go}cacheVisible(){if(this.flag(`CACHE_ENABLED`)!==``)return this.booleanFlag(`CACHE_ENABLED`,!1);let e=this.flag(`REDIS_URL`),t=this.flag(`SEMANTIC_CACHE_ENABLED`);return e===``&&t===``||this.booleanFlag(`REDIS_URL`,!1)||this.booleanFlag(`SEMANTIC_CACHE_ENABLED`,!1)}auditVisible(){return this.booleanFlag(`LOGGING_ENABLED`,!0)}usageVisible(){return this.booleanFlag(`USAGE_ENABLED`,!0)}budgetsVisible(){return this.booleanFlag(`BUDGETS_ENABLED`,!0)}rateLimitsVisible(){return this.booleanFlag(`RATE_LIMITS_ENABLED`,!0)}guardrailsVisible(){return this.booleanFlag(`GUARDRAILS_ENABLED`,!0)}mcpVisible(){return this.booleanFlag(`MCP_ENABLED`,!0)}liveLogsVisible(){return this.booleanFlag(`DASHBOARD_LIVE_LOGS_ENABLED`,!0)}fetch(){return this.#n||=this.#r().finally(()=>{this.#n=null}),this.#n}async ensureLoaded(){if(this.#n){await this.#n;return}this.loaded||await this.fetch()}async#r(){let e=typeof AbortController==`function`?new AbortController:null,t=e?setTimeout(()=>e.abort(),1e4):null;try{let t=await fo(`/admin/runtime/config`,{label:`dashboard config`,signal:e?e.signal:void 0});if(t.stale)return;if(!t.ok){this.config={},this.loaded=!1;return}let n=t.data,r={};for(let e of ho)n&&typeof n==`object`&&!Array.isArray(n)&&n[e]!==void 0&&n[e]!==null&&(r[e]=String(n[e]).trim());this.config=r,this.loaded=!0}catch(e){console.error(`Failed to fetch dashboard config:`,e),this.config={},this.loaded=!1}finally{t!==null&&clearTimeout(t)}}},vo=[{page:`overview`,label:`Overview`,icon:`layout-dashboard`},{page:`providers-config`,label:`Providers`,icon:`server-cog`},{page:`models`,label:`Models`,icon:`box`},{page:`audit-logs`,label:`Audit Logs`,icon:`history`},{page:`usage`,label:`Usage`,icon:`chart-column`},{page:`budgets`,label:`Budgets`,icon:`wallet`,visible:()=>_o.budgetsVisible()},{page:`rate-limits`,label:`Rate Limits`,icon:`gauge`,visible:()=>_o.rateLimitsVisible()},{page:`auth-keys`,label:`API Keys`,icon:`key-round`},{page:`workflows`,label:`Workflows`,icon:`workflow`},{page:`guardrails`,label:`Guardrails (experimental)`,icon:`shield-check`,visible:()=>_o.guardrailsVisible()},{page:`mcp-servers`,label:`MCP Servers`,icon:`plug`,visible:()=>_o.mcpVisible()},{page:`settings`,label:`Settings`,icon:`settings`}],yo=R(` `),bo=R(`
        `),xo=R(` `,1);function So(e,t){E(t,!0);let n=O(()=>vo.filter(e=>!e.visible||e.visible()));var r=xo(),i=N(r);let a;var o=M(i),s=M(o);wa(M(s),{}),T(s),Ue(4),T(o);var c=P(o,2);H(c,21,()=>I(n),e=>e.page,(e,t)=>{var n=yo();let r;var i=M(n);G(i,{get name(){return I(t).icon},class:`nav-icon`});var a=P(i,2),o=M(a,!0);T(a),T(n),F(e=>{W(n,`href`,e),r=U(n,1,`nav-item svelte-1nwtzae`,null,r,{active:Ha.page===I(t).page}),W(n,`title`,I(t).label),B(o,I(t).label)},[()=>Fa(`/admin/dashboard/`+I(t).page)]),L(`click`,n,e=>{e.preventDefault(),Ha.navigate(I(t).page)}),z(e,n)}),T(c);var l=P(c,2),u=M(l);Na(u,{get compact(){return ka.collapsed}});var d=P(u,2),f=e=>{var t=bo(),n=M(t),r=M(n);G(r,{name:`lock-keyhole`,class:`api-key-open-icon`});var i=P(r,2),a=M(i,!0);T(i),T(n),T(t),F(()=>{W(n,`aria-label`,K.needsAuth?`Enter API key`:`Change API key`),B(a,K.needsAuth?`Enter API key`:`Change API key`)}),L(`click`,n,()=>K.openDialog()),z(e,t)},p=O(()=>K.needsAuth||K.hasApiKey());V(d,e=>{I(p)&&e(f)}),T(l),T(i);var m=P(i,2);let h;F(()=>{a=U(i,1,`sidebar svelte-1nwtzae`,null,a,{"sidebar-collapsed":ka.collapsed}),h=U(m,1,`sidebar-toggle svelte-1nwtzae`,null,h,{collapsed:ka.collapsed}),W(m,`title`,ka.collapsed?`Expand sidebar`:`Collapse sidebar`),W(m,`aria-label`,ka.collapsed?`Expand sidebar`:`Collapse sidebar`),W(m,`aria-expanded`,!ka.collapsed)}),L(`click`,m,()=>ka.toggle()),z(e,r),D()}Hr([`click`]);var Co=R(``);function wo(e,t){E(t,!0);let n=ya(t,`label`,3,`Close`),r=ya(t,`class`,3,``),i=ya(t,`iconClass`,3,`table-icon-svg`),a=ya(t,`disabled`,3,!1),o=ya(t,`el`,15,null);var s=Co();G(M(s),{name:`x`,get class(){return i()}}),T(s),ga(s,e=>o(e),()=>o()),F(()=>{U(s,1,Fi([`dialog-close-btn`,r()]),`svelte-11l1bb5`),W(s,`aria-label`,n()),s.disabled=a()}),L(`click`,s,function(...e){t.onclick?.apply(this,e)}),z(e,s),D()}Hr([`click`]);var To=R(`
        `,1);function Eo(e,t){E(t,!0);let n=ya(t,`open`,3,!1),r=ya(t,`variant`,3,`editor`),i=ya(t,`closeOnBackdrop`,3,!0),a=O(()=>r()===`auth`?`auth-dialog-backdrop`:`editor-modal-backdrop`),o=O(()=>r()===`auth`?`auth-dialog-shell`:`editor-modal-shell`),s=k(null);An(()=>{if(!n())return;let e=Er(()=>Aa.opened());Cr().then(()=>{let e=I(s)&&I(s).querySelector(`[data-modal-autofocus]`);e&&typeof e.focus==`function`&&e.focus()});let r=n=>{n.key===`Escape`&&Aa.isTop(e)&&t.onclose?.()};return window.addEventListener(`keydown`,r),()=>{Aa.closed(e),window.removeEventListener(`keydown`,r)}});function c(e){i()&&e.target===I(s)&&t.onclose?.()}var l=Qr(),u=N(l),d=e=>{var n=To(),r=N(n),i=P(r,2);gi(M(i),()=>t.children??f),T(i),ga(i,e=>A(s,e),()=>I(s)),F(()=>{U(r,1,Fi(I(a)),`svelte-17e0w4c`),U(i,1,Fi(I(o)),`svelte-17e0w4c`)}),L(`click`,i,c),z(e,n)};V(u,e=>{n()&&e(d)}),z(e,l),D()}Hr([`click`]);var Do=R(``),Oo=R(``);function ko(e,t){E(t,!0),Eo(e,{get open(){return K.dialogOpen},variant:`auth`,onclose:()=>K.closeDialog(),children:(e,t)=>{var n=Oo(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a),T(i),wo(P(i,2),{label:`Close authentication dialog`,onclick:()=>K.closeDialog(),class:`auth-dialog-close`,iconClass:``}),T(r);var s=P(r,2),c=M(s),l=M(c);G(l,{name:`lock-keyhole`,class:`auth-dialog-input-icon`});var u=P(l,2);na(u),T(c);var d=P(c,2),f=e=>{var t=Do(),n=M(t,!0);T(t),F(()=>B(n,K.authErrorMessage||`Enter a valid API key to continue.`)),z(e,t)};V(d,e=>{K.authError&&e(f)});var p=P(d,4),m=M(p),h=M(m);G(h,{name:`check`,class:`auth-dialog-submit-icon`});var g=P(h,2),_=M(g,!0);T(g),T(m),T(p),T(s),T(n),F(()=>{B(o,K.needsAuth?`Dashboard locked`:`Change API key`),B(_,K.needsAuth?`Unlock dashboard`:`Save API key`)}),Vr(`submit`,s,e=>{e.preventDefault(),K.submit()}),da(u,()=>K.apiKey,e=>K.apiKey=e),z(e,n)},$$slots:{default:!0}}),D()}function Ao(){return{open:!1,title:``,titleId:`typedConfirmationDialogTitle`,inputId:`typed-confirmation-input`,message:``,requiredText:``,value:``,confirmLabel:`Confirm`,icon:`triangle-alert`,dialogClass:``,loading:!1,onConfirm:null,onClose:null}}var jo=new class{#e=k(j(Ao()));get state(){return I(this.#e)}set state(e){A(this.#e,e,!0)}#t=k(``);get error(){return I(this.#t)}set error(e){A(this.#t,e,!0)}open(e){this.error=``,this.state={...Ao(),open:!0,...e||{}}}close(){let e=this.state;typeof e.onClose==`function`&&e.onClose(),this.state=Ao(),this.error=``}ready(){return String(this.state.value||``).trim().toLowerCase()===String(this.state.requiredText||``).trim().toLowerCase()}inputLabel(){return`Type `+String(this.state.requiredText||``).trim()+` to confirm`}async submit(){if(!this.ready()){this.error=this.inputLabel()+`.`;return}if(typeof this.state.onConfirm==`function`){this.state.loading=!0;try{await this.state.onConfirm()}finally{this.state.loading=!1}}}},Mo=R(`

        `),No=R(``),Po=R(`

        `);function Fo(e,t){E(t,!0);let n=O(()=>jo.state);Eo(e,{get open(){return I(n).open},variant:`auth`,onclose:()=>jo.close(),children:(e,t)=>{var r=Po(),i=M(r),a=M(i),o=M(a,!0);T(a),wo(P(a,2),{label:`Close confirmation dialog`,onclick:()=>jo.close(),class:`auth-dialog-close`,iconClass:``}),T(i);var s=P(i,2),c=M(s),l=e=>{var t=Mo(),r=M(t,!0);T(t),F(()=>B(r,I(n).message)),z(e,t)};V(c,e=>{I(n).message&&e(l)});var u=P(c,2),d=M(u),f=M(d,!0);T(d);var p=P(d,2);na(p),T(u);var m=P(u,2),h=e=>{var t=No(),n=M(t,!0);T(t),F(()=>B(n,jo.error)),z(e,t)};V(m,e=>{jo.error&&e(h)});var g=P(m,2),_=M(g),v=P(_,2),y=M(v);G(y,{get name(){return I(n).icon},class:`form-action-icon`});var b=P(y,2),x=M(b,!0);T(b),T(v),T(g),T(s),T(r),F((e,t)=>{U(r,1,`auth-dialog ${I(n).dialogClass??``}`),W(r,`aria-labelledby`,I(n).titleId),W(a,`id`,I(n).titleId),B(o,I(n).title),W(d,`for`,I(n).inputId),B(f,e),W(p,`id`,I(n).inputId),v.disabled=t,B(x,I(n).confirmLabel)},[()=>jo.inputLabel(),()=>I(n).loading||!jo.ready()]),Vr(`submit`,s,e=>{e.preventDefault(),jo.submit()}),da(p,()=>jo.state.value,e=>jo.state.value=e),L(`click`,_,()=>jo.close()),z(e,r)},$$slots:{default:!0}}),D()}Hr([`click`]);var Io=e=>e;function Lo(e){let t=e-1;return t*t*t+1}function Ro(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function zo(e,{delay:t=0,duration:n=400,easing:r=Io}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}function Bo(e,{delay:t=0,duration:n=400,easing:r=Lo,x:i=0,y:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=c*(1-o),[d,f]=Ro(i),[p,m]=Ro(a);return{delay:t,duration:n,easing:r,css:(e,t)=>` - transform: ${l} translate(${(1-e)*d}${f}, ${(1-e)*p}${m}); - opacity: ${c-u*t}`}}function Vo(e,{delay:t=0,duration:n=400,easing:r=Lo,axis:i=`y`}={}){let a=getComputedStyle(e),o=+a.opacity,s=i===`y`?`height`:`width`,c=parseFloat(a[s]),l=i===`y`?[`top`,`bottom`]:[`left`,`right`],u=l.map(e=>`${e[0].toUpperCase()}${e.slice(1)}`),d=parseFloat(a[`padding${u[0]}`]),f=parseFloat(a[`padding${u[1]}`]),p=parseFloat(a[`margin${u[0]}`]),m=parseFloat(a[`margin${u[1]}`]),h=parseFloat(a[`border${u[0]}Width`]),g=parseFloat(a[`border${u[1]}Width`]);return{delay:t,duration:n,easing:r,css:e=>`overflow: hidden;opacity: ${Math.min(e*20,1)*o};${s}: ${e*c}px;padding-${l[0]}: ${e*d}px;padding-${l[1]}: ${e*f}px;margin-${l[0]}: ${e*p}px;margin-${l[1]}: ${e*m}px;border-${l[0]}-width: ${e*h}px;border-${l[1]}-width: ${e*g}px;min-${s}: 0`}}function Ho(e){return--e*e*(2.70158*e+1.70158)+1}function Uo(e){let t=e-1;return t*t*t+1}var Wo=5e3,Go=8e3,q=new class{#e=k(j([]));get toasts(){return I(this.#e)}set toasts(e){A(this.#e,e,!0)}#t=0;#n=new Map;success(e){this.#r(`success`,e,Wo)}error(e){this.#r(`error`,e,Go)}dismiss(e){let t=this.#n.get(e);t&&(clearTimeout(t),this.#n.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}#r(e,t,n){let r=String(t||``).trim();if(!r)return;let i=this.toasts.find(t=>t.kind===e&&t.text===r);i&&this.dismiss(i.id);let a=++this.#t;this.toasts=[...this.toasts,{id:a,kind:e,text:r}],this.#n.set(a,setTimeout(()=>this.dismiss(a),n))}},Ko=R(`
        `),qo=R(`
        `);function Jo(e,t){E(t,!0);var n=qo();H(n,21,()=>q.toasts,e=>e.id,(e,t)=>{var n=Ko();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2);T(n),F(()=>{r=U(n,1,`flash-toast svelte-1i257xg`,null,r,{"flash-toast-success":I(t).kind===`success`,"flash-toast-error":I(t).kind===`error`}),W(n,`role`,I(t).kind===`error`?`alert`:`status`),W(n,`aria-live`,I(t).kind===`error`?`assertive`:`polite`),B(a,I(t).text)}),L(`click`,o,()=>q.dismiss(I(t).id)),ki(1,n,()=>Bo,()=>({y:-24,duration:360,easing:Ho})),ki(2,n,()=>zo,()=>({duration:150})),z(e,n)}),T(n),z(e,n),D()}Hr([`click`]);var Yo=R(``);function Xo(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{z(e,Yo())},a=O(()=>Ra());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}function Zo(e){return String(e||``).split(`,`).map(e=>e.trim()).filter(e=>e)}function Qo(e){if(e==null||e===``)return`Not captured`;if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function $o(e){return e==null||e===void 0?`-`:e.toLocaleString()}function es(e){if(e==null)return`---`;let t=Number(e);return Number.isFinite(t)?t>0&&t<1e-4?`<$0.0001`:`$`+t.toFixed(4).replace(/(\.\d{2}\d*?)0+$/,`$1`):`---`}function ts(e){return e==null||e===void 0?`—`:`$`+e.toFixed(2)}function ns(e){return e==null||e===void 0?`—`:e<.01?`$`+e.toFixed(6):`$`+e.toFixed(4)}function rs(e){if(e==null||e===``)return`-`;let t=Number(e);if(!Number.isFinite(t))return`-`;let n=Math.abs(t),r=[{threshold:1e9,suffix:`B`},{threshold:1e6,suffix:`M`},{threshold:1e3,suffix:`K`}];for(let e=0;e=i.threshold){let n=t/i.threshold;return Math.abs(Number(n.toFixed(1)))>=1e3&&e>0&&(i=r[e-1],n=t/i.threshold),n.toFixed(1).replace(/\.0$/,``)+i.suffix}}return String(t)}function is(e,t){let n=t==null||t===``?NaN:Number(t),r=Number.isFinite(n)?$o(n):`-`;return String(e||`Tokens`)+`: `+r}function as(e){return e?typeof e==`string`?e:e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`):``}function os(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)}function ss(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)+` `+String(t.getUTCHours()).padStart(2,`0`)+`:`+String(t.getUTCMinutes()).padStart(2,`0`)+`:`+String(t.getUTCSeconds()).padStart(2,`0`)+` UTC`}function cs(e){return String(e&&e.provider||``).trim()}function ls(e){return String(e&&e.provider_name||``).trim()||cs(e)}function us(e,t){let n=String(t||``).trim();if(!n)return`-`;let r=ls(e);return!r||n===r||n.startsWith(r+`/`)?n:r+`/`+n}function ds(e){return us(e,e&&e.model)}function fs(e){return us(e,e&&e.resolved_model)}function ps(e){let t=String(e&&(e.requested_model||e.model)||``).trim();if(!e)return t;let n=String(e.data&&e.data.failover&&e.data.failover.target_model||``).trim();if(n&&n!==t)return t+` ⮕ `+n;if(e.alias_used&&e.resolved_model){let n=fs(e);if(n&&n!==`-`&&n!==t)return t+` ⮕ `+n}return t}var ms=`gomodel_date_range`,hs=1;function gs(e){return/^[1-9]\d*$/.test(String(e??``))}var _s=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function vs({selectedPreset:e,startKey:t,endKey:n,followsToday:r}){return e&&gs(e)?{v:hs,mode:`preset`,days:String(e)}:e?null:Ya(t)&&Ya(n)?{v:hs,mode:`custom`,start:t,end:n,follow:r===!0}:null}function ys(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return null}return!t||typeof t!=`object`?null:t.mode===`preset`?gs(t.days)?{mode:`preset`,days:String(t.days)}:null:t.mode===`custom`&&Ya(t.start)&&Ya(t.end)&&t.start<=t.end?{mode:`custom`,start:t.start,end:t.end,follow:t.follow===!0}:null}function bs(e,t,n){let r=Xa(e,t);return r<1||!Ya(n)?{start:e,end:t}:{start:Ja(n,-(r-1)),end:n}}function xs(e,t){if(e===t)return`Today`;let[n,r,i]=e.split(`-`);return _s[Number(r)-1]+` `+Number(i)+`, `+n}function Ss({selectedPreset:e,startKey:t,endKey:n,followsToday:r,todayKey:i}){if(e)return`Last `+e+` days`;if(!Ya(t)||!Ya(n))return``;let a=Xa(t,n);return r||n===i?a===1?`Today`:`Last `+a+` days`:a===1?`1 day`:a+` days`}function Cs({selectedPreset:e,startKey:t,endKey:n,todayKey:r}){if(e)return`Last `+e+` days`;let i=e=>xs(e,r);return Ya(t)&&Ya(n)?t===n?i(t):i(t)+` – `+i(n):Ya(t)?i(t)+` – ...`:`Last 30 days`}var ws=6e4,Ts=new class{#e=k(j(`30`));get days(){return I(this.#e)}set days(e){A(this.#e,e,!0)}#t=k(j(`30`));get selectedPreset(){return I(this.#t)}set selectedPreset(e){A(this.#t,e,!0)}#n=k(null);get customStartDate(){return I(this.#n)}set customStartDate(e){A(this.#n,e,!0)}#r=k(null);get customEndDate(){return I(this.#r)}set customEndDate(e){A(this.#r,e,!0)}#i=k(!1);get followsToday(){return I(this.#i)}set followsToday(e){A(this.#i,e,!0)}#a=k(`daily`);get interval(){return I(this.#a)}set interval(e){A(this.#a,e,!0)}#o=k(0);get syncTick(){return I(this.#o)}set syncTick(e){A(this.#o,e,!0)}init(){this.restore(),this.syncToToday(),typeof setInterval==`function`&&setInterval(()=>this.syncToToday(),ws)}queryStr(){return this.customStartDate&&this.customEndDate?`start_date=`+as(this.customStartDate)+`&end_date=`+as(this.customEndDate):`days=`+this.days}selectPreset(e){this.selectedPreset=e,this.customStartDate=null,this.customEndDate=null,this.followsToday=!1,this.days=e,this.persist()}selectStart(e){this.selectedPreset=null,this.customStartDate=e,this.customEndDate&&this.customEndDatet.category===e);return t?t.count:0}get filteredModels(){if(!this.filter)return this.models;let e=this.filter.toLowerCase();return this.models.filter(t=>(t.model?.id??``).toLowerCase().includes(e)||(t.provider_name??``).toLowerCase().includes(e)||(t.provider_type??``).toLowerCase().includes(e)||(t.selector??``).toLowerCase().includes(e)||(t.model?.owned_by??``).toLowerCase().includes(e)||(t.model?.metadata?.modes??[]).join(`,`).toLowerCase().includes(e)||(t.model?.metadata?.categories??[]).join(`,`).toLowerCase().includes(e))}},Ds=R(``);function Os(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=Ds(),n=P(M(t),2);T(t),L(`click`,n,()=>K.openDialog()),z(e,t)};V(r,e=>{K.authError&&e(i)}),z(e,n),D()}Hr([`click`]);function ks(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null}}function As(){return{summary:{total_hits:0,exact_hits:0,semantic_hits:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_saved_cost:null},daily:[]}}var js=new class{#e=k(j(ks()));get summary(){return I(this.#e)}set summary(e){A(this.#e,e,!0)}#t=k(j([]));get daily(){return I(this.#t)}set daily(e){A(this.#t,e,!0)}#n=k(j(As()));get cacheOverview(){return I(this.#n)}set cacheOverview(e){A(this.#n,e,!0)}#r=k(!1);get loading(){return I(this.#r)}set loading(e){A(this.#r,e,!0)}#i=null;#a=null;cacheAnalyticsEnabled(){return _o.cacheVisible()}async fetchUsage(){this.#i&&this.#i.abort();let e=new AbortController;this.#i=e,this.loading=!0;try{let t=Ts.queryStr()+`&interval=`+Ts.interval,[n,r]=await Promise.all([fo(`/admin/usage/summary?`+t,{label:`usage summary`,signal:e.signal}),fo(`/admin/usage/daily?`+t,{label:`usage daily`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.summary=ks(),this.daily=[],this.cacheOverview=As();return}this.summary=n.data||ks(),this.daily=Array.isArray(r.data)?r.data:[]}catch(e){if(mo(e))return;console.error(`Failed to fetch usage:`,e),this.summary=ks(),this.daily=[]}finally{this.#i===e&&(this.#i=null,this.loading=!1)}}async fetchCacheOverview(e=``){if(await _o.ensureLoaded(),!this.cacheAnalyticsEnabled()){this.cacheOverview=As();return}this.#a&&this.#a.abort();let t=new AbortController;this.#a=t;try{let n=await fo(`/admin/cache/overview?`+(Ts.queryStr()+`&interval=`+Ts.interval+e),{label:`cache overview`,signal:t.signal});if(n.stale||t.signal.aborted)return;if(!n.ok){this.cacheOverview=As();return}let r=n.data&&typeof n.data==`object`?n.data:As();r.summary||=As().summary,Array.isArray(r.daily)||(r.daily=[]),this.cacheOverview=r}catch(e){if(mo(e))return;console.error(`Failed to fetch cache overview:`,e),this.cacheOverview=As()}finally{this.#a===t&&(this.#a=null)}}},Ms=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`];function Ns(e,t){let n=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return Ms[n.getUTCMonth()]+` `+n.getUTCFullYear()}function Ps(e,t,n){let r=e.getUTCFullYear(),i=e.getUTCMonth()+t,a=new Date(Date.UTC(r,i,1)),o=new Date(Date.UTC(r,i+1,0)),s=(a.getUTCDay()+6)%7,c=[],l=new Date(Date.UTC(r,i,0));for(let e=s-1;e>=0;e--){let t=l.getUTCDate()-e,a=new Date(Date.UTC(r,i-1,t));c.push({day:t,date:a,current:!1,key:`p-`+n(a)})}for(let e=1;e<=o.getUTCDate();e++){let t=new Date(Date.UTC(r,i,e));c.push({day:e,date:t,current:!0,key:`c-`+n(t)})}let u=42-c.length;for(let e=1;e<=u;e++){let t=new Date(Date.UTC(r,i+1,e));c.push({day:e,date:t,current:!1,key:`n-`+n(t)})}return c}function Fs(e,t,n){let r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return n&&r.getTime()>n.getTime()?e:r}function Is(e,t){return e.getUTCFullYear()===t.getUTCFullYear()&&e.getUTCMonth()===t.getUTCMonth()}var Ls=R(``),Rs=R(``),zs=R(``),Bs=R(`
        MoTuWeThFrSaSu
        `);function Vs(e,t){E(t,!0);let n=ya(t,`offset`,3,0),r=O(()=>Ps(t.calendarMonth,n(),e=>ao.dateToDateKey(e))),i=O(()=>Is(t.calendarMonth,ao.todayDate())),a=e=>ao.dateToDateKey(e.date),o=e=>a(e)>ao.currentDateKey(),s=e=>e.current&&a(e)===ao.currentDateKey();function c(e,t){let n=t===`start`?Ts.rangeStart():Ts.rangeEnd();return e.current&&!!n&&a(e)===ao.dateToDateKey(n)}function l(e){let t=Ts.rangeStart(),n=Ts.rangeEnd();return!e.current||!t||!n?!1:a(e)>=ao.dateToDateKey(t)&&a(e)<=ao.dateToDateKey(n)}var u=Bs(),d=M(u),f=M(d);let p;var m=P(f,2),h=M(m,!0);T(m);var g=P(m,2),_=e=>{z(e,Ls())},v=e=>{var n=Rs();F(()=>n.disabled=I(i)),L(`click`,n,function(...e){t.onnext?.apply(this,e)}),z(e,n)};V(g,e=>{n()===-1?e(_):e(v,-1)}),T(d);var y=P(d,4);H(y,21,()=>I(r),e=>e.key,(e,n)=>{var r=zs(),i=M(r,!0);T(r),F((e,t)=>{U(r,1,e,`svelte-g7ga4u`),r.disabled=t,B(i,I(n).day)},[()=>Fi([`dp-day`,{"other-month":!I(n).current,today:s(I(n)),"range-start":c(I(n),`start`),"range-end":c(I(n),`end`),"in-range":l(I(n)),disabled:o(I(n))}]),()=>o(I(n))||!I(n).current]),L(`click`,r,()=>t.onselect?.(I(n))),z(e,r)}),T(y),T(u),F(e=>{p=U(f,1,`dp-nav-btn svelte-g7ga4u`,null,p,{"dp-nav-prev-mobile":n()!==-1}),B(h,e)},[()=>Ns(t.calendarMonth,n())]),L(`click`,f,function(...e){t.onprev?.apply(this,e)}),z(e,u),D()}Hr([`click`]);var Hs=R(``),Us=R(`
        `),Ws=Xr(``),Gs=Xr(``),Ks=R(`
        `),qs=R(`
        `);function Js(e,t){E(t,!0);let n=[`3`,`7`,`14`,`30`,`90`],r=k(!1),i=k(`start`),a=k(j(new Date)),o=k(j({show:!1,x:0,y:0})),s=k(null);function c(){A(r,!I(r)),I(r)&&(Ts.syncToToday(),A(a,ao.startOfMonthDate(Ts.customEndDate||ao.todayDate()),!0),A(i,`start`))}function l(){A(r,!1),A(o,{show:!1,x:0,y:0},!0)}An(()=>{if(!I(r))return;let e=e=>{I(s)&&!I(s).contains(e.target)&&l()},t=e=>{e.key===`Escape`&&l()};return document.addEventListener(`click`,e,!0),window.addEventListener(`keydown`,t),()=>{document.removeEventListener(`click`,e,!0),window.removeEventListener(`keydown`,t)}});let u=Ts.syncTick;An(()=>{let e=Ts.syncTick;e!==u&&(u=e,t.onchange?.())});function d(e){Ts.selectPreset(e),A(i,`start`),t.onchange?.(),l()}let f=()=>A(a,Fs(I(a),-1),!0),p=()=>A(a,Fs(I(a),1,ao.startOfMonthDate(ao.todayDate())),!0);function m(e){let n=new Date(e.date);if(I(i)===`start`){Ts.selectStart(n),A(i,`end`),t.onchange?.();return}Ts.selectEnd(n),A(i,`start`),t.onchange?.(),l()}var h=qs(),g=M(h),_=P(M(g),2),v=M(_,!0);T(_);var y=P(_,2);let b;T(g);var x=P(g,2),S=e=>{var t=Us(),r=M(t);H(r,20,()=>n,e=>e,(e,t)=>{var n=Hs();let r;var i=M(n);T(n),F(()=>{r=U(n,1,`preset-btn svelte-ax7ma4`,null,r,{active:Ts.selectedPreset===t}),B(i,`Last ${t??``} days`)}),L(`click`,n,()=>d(t)),z(e,n)}),T(r);var i=P(r,2);H(i,20,()=>[-1,0],e=>e,(e,t)=>{Vs(e,{get calendarMonth(){return I(a)},get offset(){return t},onprev:f,onnext:p,onselect:m})}),T(i),T(t),L(`mousemove`,i,e=>A(o,{show:!0,x:e.clientX,y:e.clientY},!0)),Vr(`mouseleave`,i,()=>A(o,{show:!1,x:0,y:0},!0)),z(e,t)};V(x,e=>{I(r)&&e(S)});var C=P(x,2),w=e=>{var t=Ks(),n=M(t),r=e=>{z(e,Ws())},a=e=>{z(e,Gs())};V(n,e=>{I(i)===`start`?e(r):e(a,-1)});var s=P(n,2),c=M(s,!0);T(s),T(t),F(()=>{Hi(t,`left:${I(o).x??``}px;top:${I(o).y??``}px`),B(c,I(i)===`end`?`Select end date`:`Select start date`)}),z(e,t)};V(C,e=>{I(o).show&&e(w)}),T(h),ga(h,e=>A(s,e),()=>I(s)),F((e,t)=>{W(g,`title`,e),B(v,t),b=U(y,0,`date-picker-chevron svelte-ax7ma4`,null,b,{open:I(r)})},[()=>Ts.dateRangeSpanLabel(),()=>Ts.dateRangeLabel()]),L(`click`,g,c),z(e,h),D()}Hr([`click`,`mousemove`]);function Ys(e){return e+.5|0}var Xs=(e,t,n)=>Math.max(Math.min(e,n),t);function Zs(e){return Xs(Ys(e*2.55),0,255)}function Qs(e){return Xs(Ys(e*255),0,255)}function $s(e){return Xs(Ys(e/2.55)/100,0,1)}function ec(e){return Xs(Ys(e*100),0,100)}var tc={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},nc=[...`0123456789ABCDEF`],rc=e=>nc[e&15],ic=e=>nc[(e&240)>>4]+nc[e&15],ac=e=>(e&240)>>4==(e&15),oc=e=>ac(e.r)&&ac(e.g)&&ac(e.b)&&ac(e.a);function sc(e){var t=e.length,n;return e[0]===`#`&&(t===4||t===5?n={r:255&tc[e[1]]*17,g:255&tc[e[2]]*17,b:255&tc[e[3]]*17,a:t===5?tc[e[4]]*17:255}:(t===7||t===9)&&(n={r:tc[e[1]]<<4|tc[e[2]],g:tc[e[3]]<<4|tc[e[4]],b:tc[e[5]]<<4|tc[e[6]],a:t===9?tc[e[7]]<<4|tc[e[8]]:255})),n}var cc=(e,t)=>e<255?t(e):``;function lc(e){var t=oc(e)?rc:ic;return e?`#`+t(e.r)+t(e.g)+t(e.b)+cc(e.a,t):void 0}var uc=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function dc(e,t,n){let r=t*Math.min(n,1-n),i=(t,i=(t+e/30)%12)=>n-r*Math.max(Math.min(i-3,9-i,1),-1);return[i(0),i(8),i(4)]}function fc(e,t,n){let r=(r,i=(r+e/60)%6)=>n-n*t*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function pc(e,t,n){let r=dc(e,1,.5),i;for(t+n>1&&(i=1/(t+n),t*=i,n*=i),i=0;i<3;i++)r[i]*=1-t-n,r[i]+=t;return r}function mc(e,t,n,r,i){return e===i?(t-n)/r+(t.5?l/(2-i-a):l/(i+a),s=mc(t,n,r,l,i),s=s*60+.5),[s|0,c||0,o]}function gc(e,t,n,r){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,r)).map(Qs)}function _c(e,t,n){return gc(dc,e,t,n)}function vc(e,t,n){return gc(pc,e,t,n)}function yc(e,t,n){return gc(fc,e,t,n)}function bc(e){return(e%360+360)%360}function xc(e){let t=uc.exec(e),n=255,r;if(!t)return;t[5]!==r&&(n=t[6]?Zs(+t[5]):Qs(+t[5]));let i=bc(+t[2]),a=t[3]/100,o=t[4]/100;return r=t[1]===`hwb`?vc(i,a,o):t[1]===`hsv`?yc(i,a,o):_c(i,a,o),{r:r[0],g:r[1],b:r[2],a:n}}function Sc(e,t){var n=hc(e);n[0]=bc(n[0]+t),n=_c(n),e.r=n[0],e.g=n[1],e.b=n[2]}function Cc(e){if(!e)return;let t=hc(e),n=t[0],r=ec(t[1]),i=ec(t[2]);return e.a<255?`hsla(${n}, ${r}%, ${i}%, ${$s(e.a)})`:`hsl(${n}, ${r}%, ${i}%)`}var wc={x:`dark`,Z:`light`,Y:`re`,X:`blu`,W:`gr`,V:`medium`,U:`slate`,A:`ee`,T:`ol`,S:`or`,B:`ra`,C:`lateg`,D:`ights`,R:`in`,Q:`turquois`,E:`hi`,P:`ro`,O:`al`,N:`le`,M:`de`,L:`yello`,F:`en`,K:`ch`,G:`arks`,H:`ea`,I:`ightg`,J:`wh`},Tc={OiceXe:`f0f8ff`,antiquewEte:`faebd7`,aqua:`ffff`,aquamarRe:`7fffd4`,azuY:`f0ffff`,beige:`f5f5dc`,bisque:`ffe4c4`,black:`0`,blanKedOmond:`ffebcd`,Xe:`ff`,XeviTet:`8a2be2`,bPwn:`a52a2a`,burlywood:`deb887`,caMtXe:`5f9ea0`,KartYuse:`7fff00`,KocTate:`d2691e`,cSO:`ff7f50`,cSnflowerXe:`6495ed`,cSnsilk:`fff8dc`,crimson:`dc143c`,cyan:`ffff`,xXe:`8b`,xcyan:`8b8b`,xgTMnPd:`b8860b`,xWay:`a9a9a9`,xgYF:`6400`,xgYy:`a9a9a9`,xkhaki:`bdb76b`,xmagFta:`8b008b`,xTivegYF:`556b2f`,xSange:`ff8c00`,xScEd:`9932cc`,xYd:`8b0000`,xsOmon:`e9967a`,xsHgYF:`8fbc8f`,xUXe:`483d8b`,xUWay:`2f4f4f`,xUgYy:`2f4f4f`,xQe:`ced1`,xviTet:`9400d3`,dAppRk:`ff1493`,dApskyXe:`bfff`,dimWay:`696969`,dimgYy:`696969`,dodgerXe:`1e90ff`,fiYbrick:`b22222`,flSOwEte:`fffaf0`,foYstWAn:`228b22`,fuKsia:`ff00ff`,gaRsbSo:`dcdcdc`,ghostwEte:`f8f8ff`,gTd:`ffd700`,gTMnPd:`daa520`,Way:`808080`,gYF:`8000`,gYFLw:`adff2f`,gYy:`808080`,honeyMw:`f0fff0`,hotpRk:`ff69b4`,RdianYd:`cd5c5c`,Rdigo:`4b0082`,ivSy:`fffff0`,khaki:`f0e68c`,lavFMr:`e6e6fa`,lavFMrXsh:`fff0f5`,lawngYF:`7cfc00`,NmoncEffon:`fffacd`,ZXe:`add8e6`,ZcSO:`f08080`,Zcyan:`e0ffff`,ZgTMnPdLw:`fafad2`,ZWay:`d3d3d3`,ZgYF:`90ee90`,ZgYy:`d3d3d3`,ZpRk:`ffb6c1`,ZsOmon:`ffa07a`,ZsHgYF:`20b2aa`,ZskyXe:`87cefa`,ZUWay:`778899`,ZUgYy:`778899`,ZstAlXe:`b0c4de`,ZLw:`ffffe0`,lime:`ff00`,limegYF:`32cd32`,lRF:`faf0e6`,magFta:`ff00ff`,maPon:`800000`,VaquamarRe:`66cdaa`,VXe:`cd`,VScEd:`ba55d3`,VpurpN:`9370db`,VsHgYF:`3cb371`,VUXe:`7b68ee`,VsprRggYF:`fa9a`,VQe:`48d1cc`,VviTetYd:`c71585`,midnightXe:`191970`,mRtcYam:`f5fffa`,mistyPse:`ffe4e1`,moccasR:`ffe4b5`,navajowEte:`ffdead`,navy:`80`,Tdlace:`fdf5e6`,Tive:`808000`,TivedBb:`6b8e23`,Sange:`ffa500`,SangeYd:`ff4500`,ScEd:`da70d6`,pOegTMnPd:`eee8aa`,pOegYF:`98fb98`,pOeQe:`afeeee`,pOeviTetYd:`db7093`,papayawEp:`ffefd5`,pHKpuff:`ffdab9`,peru:`cd853f`,pRk:`ffc0cb`,plum:`dda0dd`,powMrXe:`b0e0e6`,purpN:`800080`,YbeccapurpN:`663399`,Yd:`ff0000`,Psybrown:`bc8f8f`,PyOXe:`4169e1`,saddNbPwn:`8b4513`,sOmon:`fa8072`,sandybPwn:`f4a460`,sHgYF:`2e8b57`,sHshell:`fff5ee`,siFna:`a0522d`,silver:`c0c0c0`,skyXe:`87ceeb`,UXe:`6a5acd`,UWay:`708090`,UgYy:`708090`,snow:`fffafa`,sprRggYF:`ff7f`,stAlXe:`4682b4`,tan:`d2b48c`,teO:`8080`,tEstN:`d8bfd8`,tomato:`ff6347`,Qe:`40e0d0`,viTet:`ee82ee`,JHt:`f5deb3`,wEte:`ffffff`,wEtesmoke:`f5f5f5`,Lw:`ffff00`,LwgYF:`9acd32`};function Ec(){let e={},t=Object.keys(Tc),n=Object.keys(wc),r,i,a,o,s;for(r=0;r>16&255,a>>8&255,a&255]}return e}var Dc;function Oc(e){Dc||(Dc=Ec(),Dc.transparent=[0,0,0,0]);let t=Dc[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var kc=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Ac(e){let t=kc.exec(e),n=255,r,i,a;if(t){if(t[7]!==r){let e=+t[7];n=t[8]?Zs(e):Xs(e*255,0,255)}return r=+t[1],i=+t[3],a=+t[5],r=255&(t[2]?Zs(r):Xs(r,0,255)),i=255&(t[4]?Zs(i):Xs(i,0,255)),a=255&(t[6]?Zs(a):Xs(a,0,255)),{r,g:i,b:a,a:n}}}function jc(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${$s(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}var Mc=e=>e<=.0031308?e*12.92:e**(1/2.4)*1.055-.055,Nc=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Pc(e,t,n){let r=Nc($s(e.r)),i=Nc($s(e.g)),a=Nc($s(e.b));return{r:Qs(Mc(r+n*(Nc($s(t.r))-r))),g:Qs(Mc(i+n*(Nc($s(t.g))-i))),b:Qs(Mc(a+n*(Nc($s(t.b))-a))),a:e.a+n*(t.a-e.a)}}function Fc(e,t,n){if(e){let r=hc(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*n,t===0?360:1)),r=_c(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function Ic(e,t){return e&&Object.assign(t||{},e)}function Lc(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=Qs(e[3]))):(t=Ic(e,{r:0,g:0,b:0,a:1}),t.a=Qs(t.a)),t}function Rc(e){return e.charAt(0)===`r`?Ac(e):xc(e)}var zc=class e{constructor(t){if(t instanceof e)return t;let n=typeof t,r;n===`object`?r=Lc(t):n===`string`&&(r=sc(t)||Oc(t)||Rc(t)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=Ic(this._rgb);return e&&(e.a=$s(e.a)),e}set rgb(e){this._rgb=Lc(e)}rgbString(){return this._valid?jc(this._rgb):void 0}hexString(){return this._valid?lc(this._rgb):void 0}hslString(){return this._valid?Cc(this._rgb):void 0}mix(e,t){if(e){let n=this.rgb,r=e.rgb,i,a=t===i?.5:t,o=2*a-1,s=n.a-r.a,c=((o*s===-1?o:(o+s)/(1+o*s))+1)/2;i=1-c,n.r=255&c*n.r+i*r.r+.5,n.g=255&c*n.g+i*r.g+.5,n.b=255&c*n.b+i*r.b+.5,n.a=a*n.a+(1-a)*r.a,this.rgb=n}return this}interpolate(e,t){return e&&(this._rgb=Pc(this._rgb,e._rgb,t)),this}clone(){return new e(this.rgb)}alpha(e){return this._rgb.a=Qs(e),this}clearer(e){let t=this._rgb;return t.a*=1-e,this}greyscale(){let e=this._rgb;return e.r=e.g=e.b=Ys(e.r*.3+e.g*.59+e.b*.11),this}opaquer(e){let t=this._rgb;return t.a*=1+e,this}negate(){let e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return Fc(this._rgb,2,e),this}darken(e){return Fc(this._rgb,2,-e),this}saturate(e){return Fc(this._rgb,1,e),this}desaturate(e){return Fc(this._rgb,1,-e),this}rotate(e){return Sc(this._rgb,e),this}};function Bc(){}var Vc=(()=>{let e=0;return()=>e++})();function Hc(e){return e==null}function Uc(e){if(Array.isArray&&Array.isArray(e))return!0;let t=Object.prototype.toString.call(e);return t.slice(0,7)===`[object`&&t.slice(-6)===`Array]`}function Wc(e){return e!==null&&Object.prototype.toString.call(e)===`[object Object]`}function Gc(e){return(typeof e==`number`||e instanceof Number)&&isFinite(+e)}function Kc(e,t){return Gc(e)?e:t}function qc(e,t){return e===void 0?t:e}var Jc=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100:+e/t,Yc=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100*t:+e;function Xc(e,t,n){if(e&&typeof e.call==`function`)return e.apply(n,t)}function Zc(e,t,n,r){let i,a,o;if(Uc(e))if(a=e.length,r)for(i=a-1;i>=0;i--)t.call(n,e[i],i);else for(i=0;ie,x:e=>e.x,y:e=>e.y};function ol(e){let t=e.split(`.`),n=[],r=``;for(let e of t)r+=e,r.endsWith(`\\`)?r=r.slice(0,-1)+`.`:(n.push(r),r=``);return n}function sl(e){let t=ol(e);return e=>{for(let n of t){if(n===``)break;e&&=e[n]}return e}}function cl(e,t){return(al[t]||(al[t]=sl(t)))(e)}function ll(e){return e.charAt(0).toUpperCase()+e.slice(1)}var ul=e=>e!==void 0,dl=e=>typeof e==`function`,fl=(e,t)=>{if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0};function pl(e){return e.type===`mouseup`||e.type===`click`||e.type===`contextmenu`}var ml=Math.PI,hl=2*ml,gl=hl+ml,_l=1/0,vl=ml/180,yl=ml/2,bl=ml/4,xl=ml*2/3,Sl=Math.log10,Cl=Math.sign;function wl(e,t,n){return Math.abs(e-t)e-t).pop(),t}function Dl(e){return typeof e==`symbol`||typeof e==`object`&&!!e&&!(Symbol.toPrimitive in e||`toString`in e||`valueOf`in e)}function Ol(e){return!Dl(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function kl(e,t){let n=Math.round(e);return n-t<=e&&n+t>=e}function Al(e,t,n){let r,i,a;for(r=0,i=e.length;rc&&l=Math.min(t,n)-r&&e<=Math.max(t,n)+r}function Hl(e,t,n){n||=(n=>e[n]1;)a=i+r>>1,n(a)?i=a:r=a;return{lo:i,hi:r}}var Ul=(e,t,n,r)=>Hl(e,n,r?r=>{let i=e[r][t];return ie[r][t]Hl(e,n,r=>e[r][t]>=n);function Gl(e,t,n){let r=0,i=e.length;for(;rr&&e[i-1]>n;)i--;return r>0||i{let n=`_onData`+ll(t),r=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){let i=r.apply(this,t);return e._chartjs.listeners.forEach(e=>{typeof e[n]==`function`&&e[n](...t)}),i}})})}function Jl(e,t){let n=e._chartjs;if(!n)return;let r=n.listeners,i=r.indexOf(t);i!==-1&&r.splice(i,1),!(r.length>0)&&(Kl.forEach(t=>{delete e[t]}),delete e._chartjs)}function Yl(e){let t=new Set(e);return t.size===e.length?e:Array.from(t)}var Xl=function(){return typeof window>`u`?function(e){return e()}:window.requestAnimationFrame}();function Zl(e,t){let n=[],r=!1;return function(...i){n=i,r||(r=!0,Xl.call(window,()=>{r=!1,e.apply(t,n)}))}}function Ql(e,t){let n;return function(...r){return t?(clearTimeout(n),n=setTimeout(e,t,r)):e.apply(this,r),t}}var $l=e=>e===`start`?`left`:e===`end`?`right`:`center`,eu=(e,t,n)=>e===`start`?t:e===`end`?n:(t+n)/2,tu=(e,t,n,r)=>e===(r?`left`:`right`)?n:e===`center`?(t+n)/2:t;function nu(e,t,n){let r=t.length,i=0,a=r;if(e._sorted){let{iScale:o,vScale:s,_parsed:c}=e,l=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,u=o.axis,{min:d,max:f,minDefined:p,maxDefined:m}=o.getUserBounds();if(p){if(i=Math.min(Ul(c,u,d).lo,n?r:Ul(t,u,o.getPixelForValue(d)).lo),l){let e=c.slice(0,i+1).reverse().findIndex(e=>!Hc(e[s.axis]));i-=Math.max(0,e)}i=zl(i,0,r-1)}if(m){let e=Math.max(Ul(c,o.axis,f,!0).hi+1,n?0:Ul(t,u,o.getPixelForValue(f),!0).hi+1);if(l){let t=c.slice(e-1).findIndex(e=>!Hc(e[s.axis]));e+=Math.max(0,t)}a=zl(e,i,r)-i}else a=r-i}return{start:i,count:a}}function ru(e){let{xScale:t,yScale:n,_scaleRanges:r}=e,i={xmin:t.min,xmax:t.max,ymin:n.min,ymax:n.max};if(!r)return e._scaleRanges=i,!0;let a=r.xmin!==t.min||r.xmax!==t.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,i),a}var iu=e=>e===0||e===1,au=(e,t,n)=>-(2**(10*--e)*Math.sin((e-t)*hl/n)),ou=(e,t,n)=>2**(-10*e)*Math.sin((e-t)*hl/n)+1,su={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>--e*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-(--e*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>--e*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*yl)+1,easeOutSine:e=>Math.sin(e*yl),easeInOutSine:e=>-.5*(Math.cos(ml*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:-(2**(-10*e))+1,easeInOutExpo:e=>iu(e)?e:e<.5?.5*2**(10*(e*2-1)):.5*(-(2**(-10*(e*2-1)))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1- --e*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>iu(e)?e:au(e,.075,.3),easeOutElastic:e=>iu(e)?e:ou(e,.075,.3),easeInOutElastic(e){let t=.1125,n=.45;return iu(e)?e:e<.5?.5*au(e*2,t,n):.5+.5*ou(e*2-1,t,n)},easeInBack(e){return e*e*(2.70158*e-1.70158)},easeOutBack(e){return--e*e*(2.70158*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-su.easeOutBounce(1-e),easeOutBounce(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},easeInOutBounce:e=>e<.5?su.easeInBounce(e*2)*.5:su.easeOutBounce(e*2-1)*.5+.5};function cu(e){if(e&&typeof e==`object`){let t=e.toString();return t===`[object CanvasPattern]`||t===`[object CanvasGradient]`}return!1}function lu(e){return cu(e)?e:new zc(e)}function uu(e){return cu(e)?e:new zc(e).saturate(.5).darken(.1).hexString()}var du=[`x`,`y`,`borderWidth`,`radius`,`tension`],fu=[`color`,`borderColor`,`backgroundColor`];function pu(e){e.set(`animation`,{delay:void 0,duration:1e3,easing:`easeOutQuart`,fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe(`animation`,{_fallback:!1,_indexable:!1,_scriptable:e=>e!==`onProgress`&&e!==`onComplete`&&e!==`fn`}),e.set(`animations`,{colors:{type:`color`,properties:fu},numbers:{type:`number`,properties:du}}),e.describe(`animations`,{_fallback:`animation`}),e.set(`transitions`,{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:`transparent`},visible:{type:`boolean`,duration:0}}},hide:{animations:{colors:{to:`transparent`},visible:{type:`boolean`,easing:`linear`,fn:e=>e|0}}}})}function mu(e){e.set(`layout`,{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}var hu=new Map;function gu(e,t){t||={};let n=e+JSON.stringify(t),r=hu.get(n);return r||(r=new Intl.NumberFormat(e,t),hu.set(n,r)),r}function _u(e,t,n){return gu(t,n).format(e)}var vu={values(e){return Uc(e)?e:``+e},numeric(e,t,n){if(e===0)return`0`;let r=this.chart.options.locale,i,a=e;if(n.length>1){let t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>0x38d7ea4c68000)&&(i=`scientific`),a=yu(e,n)}let o=Sl(Math.abs(a)),s=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),c={notation:i,minimumFractionDigits:s,maximumFractionDigits:s};return Object.assign(c,this.options.ticks.format),_u(e,r,c)},logarithmic(e,t,n){if(e===0)return`0`;let r=n[t].significand||e/10**Math.floor(Sl(e));return[1,2,3,5,10,15].includes(r)||t>.8*n.length?vu.numeric.call(this,e,t,n):``}};function yu(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var bu={formatters:vu};function xu(e){e.set(`scale`,{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:`ticks`,clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:``,padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:``,padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:bu.formatters.values,minor:{},major:{},align:`center`,crossAlign:`near`,showLabelBackdrop:!1,backdropColor:`rgba(255, 255, 255, 0.75)`,backdropPadding:2}}),e.route(`scale.ticks`,`color`,``,`color`),e.route(`scale.grid`,`color`,``,`borderColor`),e.route(`scale.border`,`color`,``,`borderColor`),e.route(`scale.title`,`color`,``,`color`),e.describe(`scale`,{_fallback:!1,_scriptable:e=>!e.startsWith(`before`)&&!e.startsWith(`after`)&&e!==`callback`&&e!==`parser`,_indexable:e=>e!==`borderDash`&&e!==`tickBorderDash`&&e!==`dash`}),e.describe(`scales`,{_fallback:`scale`}),e.describe(`scale.ticks`,{_scriptable:e=>e!==`backdropPadding`&&e!==`callback`,_indexable:e=>e!==`backdropPadding`})}var Su=Object.create(null),Cu=Object.create(null);function wu(e,t){if(!t)return e;let n=t.split(`.`);for(let t=0,r=n.length;te.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[`mousemove`,`mouseout`,`click`,`touchstart`,`touchmove`],this.font={family:`'Helvetica Neue', 'Helvetica', 'Arial', sans-serif`,size:12,style:`normal`,lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>uu(t.backgroundColor),this.hoverBorderColor=(e,t)=>uu(t.borderColor),this.hoverColor=(e,t)=>uu(t.color),this.indexAxis=`x`,this.interaction={mode:`nearest`,intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return Tu(this,e,t)}get(e){return wu(this,e)}describe(e,t){return Tu(Cu,e,t)}override(e,t){return Tu(Su,e,t)}route(e,t,n,r){let i=wu(this,e),a=wu(this,n),o=`_`+t;Object.defineProperties(i,{[o]:{value:i[t],writable:!0},[t]:{enumerable:!0,get(){let e=this[o],t=a[r];return Wc(e)?Object.assign({},t,e):qc(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}({_scriptable:e=>!e.startsWith(`on`),_indexable:e=>e!==`events`,hover:{_fallback:`interaction`},interaction:{_scriptable:!1,_indexable:!1}},[pu,mu,xu]);function Du(e){return!e||Hc(e.size)||Hc(e.family)?null:(e.style?e.style+` `:``)+(e.weight?e.weight+` `:``)+e.size+`px `+e.family}function Ou(e,t,n,r,i){let a=t[i];return a||(a=t[i]=e.measureText(i).width,n.push(i)),a>r&&(r=a),r}function ku(e,t,n,r){r||={};let i=r.data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==t&&(i=r.data={},a=r.garbageCollect=[],r.font=t),e.save(),e.font=t;let o=0,s=n.length,c,l,u,d,f;for(c=0;cn.length){for(c=0;c0&&e.stroke()}}function Pu(e,t,n){return n||=.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&a.strokeColor!==``,c,l;for(e.save(),e.font=i.string,zu(e,a),c=0;c+e||0;function Ju(e,t){let n={},r=Wc(t),i=r?Object.keys(t):t,a=Wc(e)?r?n=>qc(e[n],e[t[n]]):t=>e[t]:()=>e;for(let e of i)n[e]=qu(a(e));return n}function Yu(e){return Ju(e,{top:`y`,right:`x`,bottom:`y`,left:`x`})}function Xu(e){return Ju(e,[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`])}function Zu(e){let t=Yu(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function Qu(e,t){e||={},t||=Eu.font;let n=qc(e.size,t.size);typeof n==`string`&&(n=parseInt(n,10));let r=qc(e.style,t.style);r&&!(``+r).match(Gu)&&(console.warn(`Invalid font style specified: "`+r+`"`),r=void 0);let i={family:qc(e.family,t.family),lineHeight:Ku(qc(e.lineHeight,t.lineHeight),n),size:n,style:r,weight:qc(e.weight,t.weight),string:``};return i.string=Du(i),i}function $u(e,t,n,r){let i=!0,a,o,s;for(a=0,o=e.length;an&&e===0?0:e+t;return{min:o(r,-Math.abs(a)),max:o(i,a)}}function td(e,t){return Object.assign(Object.create(e),t)}function nd(e,t=[``],n,r,i=()=>e[0]){let a=n||e;return r===void 0&&(r=vd(`_fallback`,e)),new Proxy({[Symbol.toStringTag]:`Object`,_cacheable:!0,_scopes:e,_rootScopes:a,_fallback:r,_getTarget:i,override:n=>nd([n,...e],t,a,r)},{deleteProperty(t,n){return delete t[n],delete t._keys,delete e[0][n],!0},get(n,r){return sd(n,r,()=>_d(r,t,e,n))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return yd(e).includes(t)},ownKeys(e){return yd(e)},set(e,t,n){let r=e._storage||=i();return e[t]=r[t]=n,delete e._keys,!0}})}function rd(e,t,n,r){let i={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:id(e,r),setContext:t=>rd(e,t,n,r),override:i=>rd(e.override(i),t,n,r)};return new Proxy(i,{deleteProperty(t,n){return delete t[n],delete e[n],!0},get(e,t,n){return sd(e,t,()=>cd(e,t,n))},getOwnPropertyDescriptor(t,n){return t._descriptors.allKeys?Reflect.has(e,n)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,n)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,n){return Reflect.has(e,n)},ownKeys(){return Reflect.ownKeys(e)},set(t,n,r){return e[n]=r,delete t[n],!0}})}function id(e,t={scriptable:!0,indexable:!0}){let{_scriptable:n=t.scriptable,_indexable:r=t.indexable,_allKeys:i=t.allKeys}=e;return{allKeys:i,scriptable:n,indexable:r,isScriptable:dl(n)?n:()=>n,isIndexable:dl(r)?r:()=>r}}var ad=(e,t)=>e?e+ll(t):t,od=(e,t)=>Wc(t)&&e!==`adapters`&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function sd(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t)||t===`constructor`)return e[t];let r=n();return e[t]=r,r}function cd(e,t,n){let{_proxy:r,_context:i,_subProxy:a,_descriptors:o}=e,s=r[t];return dl(s)&&o.isScriptable(t)&&(s=ld(t,s,e,n)),Uc(s)&&s.length&&(s=ud(t,s,e,o.isIndexable)),od(t,s)&&(s=rd(s,i,a&&a[t],o)),s}function ld(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_stack:s}=n;if(s.has(e))throw Error(`Recursion detected: `+Array.from(s).join(`->`)+`->`+e);s.add(e);let c=t(a,o||r);return s.delete(e),od(e,c)&&(c=md(i._scopes,i,e,c)),c}function ud(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_descriptors:s}=n;if(a.index!==void 0&&r(e))return t[a.index%t.length];if(Wc(t[0])){let n=t,r=i._scopes.filter(e=>e!==n);t=[];for(let c of n){let n=md(r,i,e,c);t.push(rd(n,a,o&&o[e],s))}}return t}function dd(e,t,n){return dl(e)?e(t,n):e}var fd=(e,t)=>e===!0?t:typeof e==`string`?cl(t,e):void 0;function pd(e,t,n,r,i){for(let a of t){let t=fd(n,a);if(t){e.add(t);let a=dd(t._fallback,n,i);if(a!==void 0&&a!==n&&a!==r)return a}else if(t===!1&&r!==void 0&&n!==r)return null}return!1}function md(e,t,n,r){let i=t._rootScopes,a=dd(t._fallback,n,r),o=[...e,...i],s=new Set;s.add(r);let c=hd(s,o,n,a||n,r);return c===null||a!==void 0&&a!==n&&(c=hd(s,o,a,c,r),c===null)?!1:nd(Array.from(s),[``],i,a,()=>gd(t,n,r))}function hd(e,t,n,r,i){for(;n;)n=pd(e,t,n,r,i);return n}function gd(e,t,n){let r=e._getTarget();t in r||(r[t]={});let i=r[t];return Uc(i)&&Wc(n)?n:i||{}}function _d(e,t,n,r){let i;for(let a of t)if(i=vd(ad(a,e),n),i!==void 0)return od(e,i)?md(n,r,e,i):i}function vd(e,t){for(let n of t){if(!n)continue;let t=n[e];if(t!==void 0)return t}}function yd(e){let t=e._keys;return t||=e._keys=bd(e._scopes),t}function bd(e){let t=new Set;for(let n of e)for(let e of Object.keys(n).filter(e=>!e.startsWith(`_`)))t.add(e);return Array.from(t)}function xd(e,t,n,r){let{iScale:i}=e,{key:a=`r`}=this._parsing,o=Array(r),s,c,l,u;for(s=0,c=r;ste===`x`?`y`:`x`;function Td(e,t,n,r){let i=e.skip?t:e,a=t,o=n.skip?t:n,s=Fl(a,i),c=Fl(o,a),l=s/(s+c),u=c/(s+c);l=isNaN(l)?0:l,u=isNaN(u)?0:u;let d=r*l,f=r*u;return{previous:{x:a.x-d*(o.x-i.x),y:a.y-d*(o.y-i.y)},next:{x:a.x+f*(o.x-i.x),y:a.y+f*(o.y-i.y)}}}function Ed(e,t,n){let r=e.length,i,a,o,s,c,l=Cd(e,0);for(let u=0;u!e.skip)),t.cubicInterpolationMode===`monotone`)Od(e,i);else{let n=r?e[e.length-1]:e[0];for(a=0,o=e.length;ae.ownerDocument.defaultView.getComputedStyle(e,null);function Id(e,t){return Fd(e).getPropertyValue(t)}var Ld=[`top`,`right`,`bottom`,`left`];function Rd(e,t,n){let r={};n=n?`-`+n:``;for(let i=0;i<4;i++){let a=Ld[i];r[a]=parseFloat(e[t+`-`+a+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}var zd=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function Bd(e,t){let n=e.touches,r=n&&n.length?n[0]:e,{offsetX:i,offsetY:a}=r,o=!1,s,c;if(zd(i,a,e.target))s=i,c=a;else{let e=t.getBoundingClientRect();s=r.clientX-e.left,c=r.clientY-e.top,o=!0}return{x:s,y:c,box:o}}function Vd(e,t){if(`native`in e)return e;let{canvas:n,currentDevicePixelRatio:r}=t,i=Fd(n),a=i.boxSizing===`border-box`,o=Rd(i,`padding`),s=Rd(i,`border`,`width`),{x:c,y:l,box:u}=Bd(e,n),d=o.left+(u&&s.left),f=o.top+(u&&s.top),{width:p,height:m}=t;return a&&(p-=o.width+s.width,m-=o.height+s.height),{x:Math.round((c-d)/p*n.width/r),y:Math.round((l-f)/m*n.height/r)}}function Hd(e,t,n){let r,i;if(t===void 0||n===void 0){let a=e&&Nd(e);if(!a)t=e.clientWidth,n=e.clientHeight;else{let e=a.getBoundingClientRect(),o=Fd(a),s=Rd(o,`border`,`width`),c=Rd(o,`padding`);t=e.width-c.width-s.width,n=e.height-c.height-s.height,r=Pd(o.maxWidth,a,`clientWidth`),i=Pd(o.maxHeight,a,`clientHeight`)}}return{width:t,height:n,maxWidth:r||_l,maxHeight:i||_l}}var Ud=e=>Math.round(e*10)/10;function Wd(e,t,n,r){let i=Fd(e),a=Rd(i,`margin`),o=Pd(i.maxWidth,e,`clientWidth`)||_l,s=Pd(i.maxHeight,e,`clientHeight`)||_l,c=Hd(e,t,n),{width:l,height:u}=c;if(i.boxSizing===`content-box`){let e=Rd(i,`border`,`width`),t=Rd(i,`padding`);l-=t.width+e.width,u-=t.height+e.height}return l=Math.max(0,l-a.width),u=Math.max(0,r?l/r:u-a.height),l=Ud(Math.min(l,o,c.maxWidth)),u=Ud(Math.min(u,s,c.maxHeight)),l&&!u&&(u=Ud(l/2)),(t!==void 0||n!==void 0)&&r&&c.height&&u>c.height&&(u=c.height,l=Ud(Math.floor(u*r))),{width:l,height:u}}function Gd(e,t,n){let r=t||1,i=Ud(e.height*r),a=Ud(e.width*r);e.height=Ud(e.height),e.width=Ud(e.width);let o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==r||o.height!==i||o.width!==a?(e.currentDevicePixelRatio=r,o.height=i,o.width=a,e.ctx.setTransform(r,0,0,r,0,0),!0):!1}var Kd=function(){let e=!1;try{let t={get passive(){return e=!0,!1}};Md()&&(window.addEventListener(`test`,null,t),window.removeEventListener(`test`,null,t))}catch{}return e}();function qd(e,t){let n=Id(e,t),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function Jd(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:e.y+n*(t.y-e.y)}}function Yd(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:r===`middle`?n<.5?e.y:t.y:r===`after`?n<1?e.y:t.y:n>0?t.y:e.y}}function Xd(e,t,n,r){let i={x:e.cp2x,y:e.cp2y},a={x:t.cp1x,y:t.cp1y},o=Jd(e,i,n),s=Jd(i,a,n),c=Jd(a,t,n);return Jd(Jd(o,s,n),Jd(s,c,n),n)}var Zd=function(e,t){return{x(n){return e+e+t-n},setWidth(e){t=e},textAlign(e){return e===`center`?e:e===`right`?`left`:`right`},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},Qd=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function $d(e,t,n){return e?Zd(t,n):Qd()}function ef(e,t){let n,r;(t===`ltr`||t===`rtl`)&&(n=e.canvas.style,r=[n.getPropertyValue(`direction`),n.getPropertyPriority(`direction`)],n.setProperty(`direction`,t,`important`),e.prevTextDirection=r)}function tf(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty(`direction`,t[0],t[1]))}function nf(e){return e===`angle`?{between:Rl,compare:Il,normalize:Ll}:{between:Vl,compare:(e,t)=>e-t,normalize:e=>e}}function rf({start:e,end:t,count:n,loop:r,style:i}){return{start:e%n,end:t%n,loop:r&&(t-e+1)%n===0,style:i}}function af(e,t,n){let{property:r,start:i,end:a}=n,{between:o,normalize:s}=nf(r),c=t.length,{start:l,end:u,loop:d}=e,f,p;if(d){for(l+=c,u+=c,f=0,p=c;fc(i,y,_)&&s(i,y)!==0,x=()=>s(a,_)===0||c(a,y,_),S=()=>h||b(),C=()=>!h||x();for(let e=u,n=u;e<=d;++e)v=t[e%o],!v.skip&&(_=l(v[r]),_!==y&&(h=c(_,i,a),g===null&&S()&&(g=s(_,i)===0?e:n),g!==null&&C()&&(m.push(rf({start:g,end:e,loop:f,count:o,style:p})),g=null),n=e,y=_));return g!==null&&m.push(rf({start:g,end:d,loop:f,count:o,style:p})),m}function sf(e,t){let n=[],r=e.segments;for(let i=0;ii&&e[a%t].skip;)a--;return a%=t,{start:i,end:a}}function lf(e,t,n,r){let i=e.length,a=[],o=t,s=e[t],c;for(c=t+1;c<=n;++c){let n=e[c%i];n.skip||n.stop?s.skip||(r=!1,a.push({start:t%i,end:(c-1)%i,loop:r}),t=o=n.stop?c:null):(o=c,s.skip&&(t=c)),s=n}return o!==null&&a.push({start:t%i,end:o%i,loop:r}),a}function uf(e,t){let n=e.points,r=e.options.spanGaps,i=n.length;if(!i)return[];let a=!!e._loop,{start:o,end:s}=cf(n,i,a,r);return r===!0?df(e,[{start:o,end:s,loop:a}],n,t):df(e,lf(n,o,sr({chart:e,initial:t.initial,numSteps:a,currentStep:Math.min(n-t.start,a)}))}_refresh(){this._request||=(this._running=!0,Xl.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((n,r)=>{if(!n.running||!n.items.length)return;let i=n.items,a=i.length-1,o=!1,s;for(;a>=0;--a)s=i[a],s._active?(s._total>n.duration&&(n.duration=s._total),s.tick(e),o=!0):(i[a]=i[i.length-1],i.pop());o&&(r.draw(),this._notify(r,n,e,`progress`)),i.length||(n.running=!1,this._notify(r,n,e,`complete`),n.initial=!1),t+=i.length}),this._lastDate=e,t===0&&(this._running=!1)}_getAnims(e){let t=this._charts,n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){!t||!t.length||this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){let t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;let t=this._charts.get(e);return!(!t||!t.running||!t.items.length)}stop(e){let t=this._charts.get(e);if(!t||!t.items.length)return;let n=t.items,r=n.length-1;for(;r>=0;--r)n[r].cancel();t.items=[],this._notify(e,t,Date.now(),`complete`)}remove(e){return this._charts.delete(e)}},yf=`transparent`,bf={boolean(e,t,n){return n>.5?t:e},color(e,t,n){let r=lu(e||yf),i=r.valid&&lu(t||yf);return i&&i.valid?i.mix(r,n).hexString():t},number(e,t,n){return e+(t-e)*n}},xf=class{constructor(e,t,n,r){let i=t[n];r=$u([e.to,r,i,e.from]);let a=$u([e.from,i,r]);this._active=!0,this._fn=e.fn||bf[e.type||typeof a],this._easing=su[e.easing]||su.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=a,this._to=r,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);let r=this._target[this._prop],i=n-this._start,a=this._duration-i;this._start=n,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=$u([e.to,t,r,e.from]),this._from=$u([e.from,r,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){let t=e-this._start,n=this._duration,r=this._prop,i=this._from,a=this._loop,o=this._to,s;if(this._active=i!==o&&(a||t1?2-s:s,s=this._easing(Math.min(1,Math.max(0,s))),this._target[r]=this._fn(i,o,s)}wait(){let e=this._promises||=[];return new Promise((t,n)=>{e.push({res:t,rej:n})})}_notify(e){let t=e?`res`:`rej`,n=this._promises||[];for(let e=0;e{let i=e[r];if(!Wc(i))return;let a={};for(let e of t)a[e]=i[e];(Uc(i.properties)&&i.properties||[r]).forEach(e=>{(e===r||!n.has(e))&&n.set(e,a)})})}_animateOptions(e,t){let n=t.options,r=wf(e,n);if(!r)return[];let i=this._createAnimations(r,n);return n.$shared&&Cf(e.options.$animations,n).then(()=>{e.options=n},()=>{}),i}_createAnimations(e,t){let n=this._properties,r=[],i=e.$animations||={},a=Object.keys(t),o=Date.now(),s;for(s=a.length-1;s>=0;--s){let c=a[s];if(c.charAt(0)===`$`)continue;if(c===`options`){r.push(...this._animateOptions(e,t));continue}let l=t[c],u=i[c],d=n.get(c);if(u)if(d&&u.active()){u.update(d,l,o);continue}else u.cancel();if(!d||!d.duration){e[c]=l;continue}i[c]=u=new xf(d,e,c,l),r.push(u)}return r}update(e,t){if(this._properties.size===0){Object.assign(e,t);return}let n=this._createAnimations(e,t);if(n.length)return vf.add(this._chart,n),!0}};function Cf(e,t){let n=[],r=Object.keys(t);for(let t=0;t0||!n&&t<0)return i.index}return null}function If(e,t){let{chart:n,_cachedMeta:r}=e,i=n._stacks||={},{iScale:a,vScale:o,index:s}=r,c=a.axis,l=o.axis,u=Mf(a,o,r),d=t.length,f;for(let e=0;en[e].axis===t).shift()}function Rf(e,t){return td(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:`default`,type:`dataset`})}function zf(e,t,n){return td(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:`default`,type:`data`})}function Bf(e,t){let n=e.controller.index,r=e.vScale&&e.vScale.axis;if(r){t||=e._parsed;for(let e of t){let t=e._stacks;if(!t||t[r]===void 0||t[r][n]===void 0)return;delete t[r][n],t[r]._visualValues!==void 0&&t[r]._visualValues[n]!==void 0&&delete t[r]._visualValues[n]}}}var Vf=e=>e===`reset`||e===`none`,Hf=(e,t)=>t?e:Object.assign({},e),Uf=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:Of(n,!0),values:null},Wf=class{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=jf(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled(`filler`)&&console.warn(`Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options`)}updateIndex(e){this.index!==e&&Bf(this._cachedMeta),this.index=e}linkScales(){let e=this.chart,t=this._cachedMeta,n=this.getDataset(),r=(e,t,n,r)=>e===`x`?t:e===`r`?r:n,i=t.xAxisID=qc(n.xAxisID,Lf(e,`x`)),a=t.yAxisID=qc(n.yAxisID,Lf(e,`y`)),o=t.rAxisID=qc(n.rAxisID,Lf(e,`r`)),s=t.indexAxis,c=t.iAxisID=r(s,i,a,o),l=t.vAxisID=r(s,a,i,o);t.xScale=this.getScaleForId(i),t.yScale=this.getScaleForId(a),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(c),t.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){let t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update(`reset`)}_destroy(){let e=this._cachedMeta;this._data&&Jl(this._data,this),e._stacked&&Bf(e)}_dataCheck(){let e=this.getDataset(),t=e.data||=[],n=this._data;if(Wc(t)){let e=this._cachedMeta;this._data=Af(t,e)}else if(n!==t){if(n){Jl(n,this);let e=this._cachedMeta;Bf(e),e._parsed=[]}t&&Object.isExtensible(t)&&ql(t,this),this._syncList=[],this._data=t}}addElements(){let e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){let t=this._cachedMeta,n=this.getDataset(),r=!1;this._dataCheck();let i=t._stacked;t._stacked=jf(t.vScale,t),t.stack!==n.stack&&(r=!0,Bf(t),t.stack=n.stack),this._resyncElements(e),(r||i!==t._stacked)&&(If(this,t._parsed),t._stacked=jf(t.vScale,t))}configure(){let e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){let{_cachedMeta:n,_data:r}=this,{iScale:i,_stacked:a}=n,o=i.axis,s=e===0&&t===r.length||n._sorted,c=e>0&&n._parsed[e-1],l,u,d;if(this._parsing===!1)n._parsed=r,n._sorted=!0,d=r;else{d=Uc(r[e])?this.parseArrayData(n,r,e,t):Wc(r[e])?this.parseObjectData(n,r,e,t):this.parsePrimitiveData(n,r,e,t);let i=()=>u[o]===null||c&&u[o]t||u=0;--d)if(!p()){this.updateRangeFromParsed(c,e,f,s);break}}return c}getAllParsedValues(e){let t=this._cachedMeta._parsed,n=[],r,i,a;for(r=0,i=t.length;r=0&&ethis.getContext(n,r,t),u);return p.$shared&&(p.$shared=s,i[a]=Object.freeze(Hf(p,s))),p}_resolveAnimations(e,t,n){let r=this.chart,i=this._cachedDataOpts,a=`animation-${t}`,o=i[a];if(o)return o;let s;if(r.options.animation!==!1){let r=this.chart.config,i=r.datasetAnimationScopeKeys(this._type,t),a=r.getOptionScopes(this.getDataset(),i);s=r.createResolver(a,this.getContext(e,n,t))}let c=new Sf(r,s&&s.animations);return s&&s._cacheable&&(i[a]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||=Object.assign({},e)}includeOptions(e,t){return!t||Vf(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){let n=this.resolveDataElementOptions(e,t),r=this._sharedOptions,i=this.getSharedOptions(n),a=this.includeOptions(t,i)||i!==r;return this.updateSharedOptions(i,t,n),{sharedOptions:i,includeOptions:a}}updateElement(e,t,n,r){Vf(r)?Object.assign(e,n):this._resolveAnimations(t,r).update(e,n)}updateSharedOptions(e,t,n){e&&!Vf(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,r){e.active=r;let i=this.getStyle(t,r);this._resolveAnimations(t,n,r).update(e,{options:!r&&this.getSharedOptions(i)||i})}removeHoverStyle(e,t,n){this._setStyle(e,n,`active`,!1)}setHoverStyle(e,t,n){this._setStyle(e,n,`active`,!0)}_removeDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!1)}_setDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!0)}_resyncElements(e){let t=this._data,n=this._cachedMeta.data;for(let[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];let r=n.length,i=t.length,a=Math.min(i,r);a&&this.parse(0,a),i>r?this._insertElements(r,i-r,e):i{for(e.length+=t,o=e.length-1;o>=a;o--)e[o]=e[o-t]};for(s(i),o=e;oe-t))}return e._cache.$bar}function Kf(e){let t=e.iScale,n=Gf(t,e.type),r=t._length,i,a,o,s,c=()=>{o===32767||o===-32768||(ul(s)&&(r=Math.min(r,Math.abs(o-s)||r)),s=o)};for(i=0,a=n.length;i0?i[e-1]:null,s=eMath.abs(s)&&(c=s,l=o),t[n.axis]=l,t._custom={barStart:c,barEnd:l,start:i,end:a,min:o,max:s}}function Xf(e,t,n,r){return Uc(e)?Yf(e,t,n,r):t[n.axis]=n.parse(e,r),t}function Zf(e,t,n,r){let i=e.iScale,a=e.vScale,o=i.getLabels(),s=i===a,c=[],l,u,d,f;for(l=n,u=n+r;l=n?1:-1):Cl(e)}function ep(e){let t,n,r,i,a;return e.horizontal?(t=e.base>e.x,n=`left`,r=`right`):(t=e.basee.controller.options.grouped),i=n.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(t),s=o&&o[n.axis],c=e=>{let t=e._parsed.find(e=>e[n.axis]===s),r=t&&t[e.vScale.axis];if(Hc(r)||isNaN(r))return!0};for(let n of r)if(!(t!==void 0&&c(n))&&((i===!1||a.indexOf(n.stack)===-1||i===void 0&&n.stack===void 0)&&a.push(n.stack),n.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(n=>e[n].axis===t).shift()}_getAxis(){let e={},t=this.getFirstScaleIdForIndexAxis();for(let n of this.chart.data.datasets)e[qc(this.chart.options.indexAxis===`x`?n.xAxisID:n.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,n){let r=this._getStacks(e,n),i=t===void 0?-1:r.indexOf(t);return i===-1?r.length-1:i}_getRuler(){let e=this.options,t=this._cachedMeta,n=t.iScale,r=[],i,a;for(i=0,a=t.data.length;i=0;--n)t=Math.max(t,e[n].size(this.resolveDataElementOptions(n))/2);return t>0&&t}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart.data.labels||[],{xScale:r,yScale:i}=t,a=this.getParsed(e),o=r.getLabelForValue(a.x),s=i.getLabelForValue(a.y),c=a._custom;return{label:n[e]||``,value:`(`+o+`, `+s+(c?`, `+c:``)+`)`}}update(e){let t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,n,r){let i=r===`reset`,{iScale:a,vScale:o}=this._cachedMeta,{sharedOptions:s,includeOptions:c}=this._getSharedOptions(t,r),l=a.axis,u=o.axis;for(let d=t;dRl(e,s,c,!0)?1:Math.max(t,t*n,r,r*n),m=(e,t,r)=>Rl(e,s,c,!0)?-1:Math.min(t,t*n,r,r*n),h=p(0,l,d),g=p(yl,u,f),_=m(ml,l,d),v=m(ml+yl,u,f);r=(h-_)/2,i=(g-v)/2,a=-(h+_)/2,o=-(g+v)/2}return{ratioX:r,ratioY:i,offsetX:a,offsetY:o}}var lp=class extends Wf{static id=`doughnut`;static defaults={datasetElementType:!1,dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:`number`,properties:[`circumference`,`endAngle`,`innerRadius`,`outerRadius`,`startAngle`,`x`,`y`,`offset`,`borderWidth`,`spacing`]}},cutout:`50%`,rotation:0,circumference:360,radius:`100%`,spacing:0,indexAxis:`r`};static descriptors={_scriptable:e=>e!==`spacing`,_indexable:e=>e!==`spacing`&&!e.startsWith(`borderDash`)&&!e.startsWith(`hoverBorderDash`)};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data,{labels:{pointStyle:n,textAlign:r,color:i,useBorderRadius:a,borderRadius:o}}=e.legend.options;return t.labels.length&&t.datasets.length?t.labels.map((t,s)=>{let c=e.getDatasetMeta(0).controller.getStyle(s);return{text:t,fillStyle:c.backgroundColor,fontColor:i,hidden:!e.getDataVisibility(s),lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:c.borderWidth,strokeStyle:c.borderColor,textAlign:r,pointStyle:n,borderRadius:a&&(o||c.borderRadius),index:s}}):[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}}};constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){let n=this.getDataset().data,r=this._cachedMeta;if(this._parsing===!1)r._parsed=n;else{let i=e=>+n[e];if(Wc(n[e])){let{key:e=`value`}=this._parsing;i=t=>+cl(n[t],e)}let a,o;for(a=e,o=e+t;a0&&!isNaN(e)?Math.abs(e)/t*hl:0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=_u(t._parsed[e],n.options.locale);return{label:r[e]||``,value:i}}getMaxBorderWidth(e){let t=0,n=this.chart,r,i,a,o,s;if(!e){for(r=0,i=n.data.datasets.length;r0&&this.getParsed(t-1);for(let n=0;n=_){v.skip=!0;continue}let b=this.getParsed(n),x=Hc(b[f]),S=v[d]=a.getPixelForValue(b[d],n),C=v[f]=i||x?o.getBasePixel():o.getPixelForValue(s?this.applyStack(o,b,s):b[f],n);v.skip=isNaN(S)||isNaN(C)||x,v.stop=n>0&&Math.abs(b[d]-y[d])>h,m&&(v.parsed=b,v.raw=c.data[n]),u&&(v.options=l||this.resolveDataElementOptions(n,p.active?`active`:r)),g||this.updateElement(p,n,v,r),y=b}}getMaxOverflow(){let e=this._cachedMeta,t=e.dataset,n=t.options&&t.options.borderWidth||0,r=e.data||[];if(!r.length)return n;let i=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(n,i,a)/2}draw(){let e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}},dp=class extends Wf{static id=`polarArea`;static defaults={dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:`number`,properties:[`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`]}},indexAxis:`r`,startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:n,color:r}}=e.legend.options;return t.labels.map((t,i)=>{let a=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,fontColor:r,lineWidth:a.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}})}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}},scales:{r:{type:`radialLinear`,angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=_u(t._parsed[e].r,n.options.locale);return{label:r[e]||``,value:i}}parseObjectData(e,t,n,r){return xd.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}getMinMax(){let e=this._cachedMeta,t={min:1/0,max:-1/0};return e.data.forEach((e,n)=>{let r=this.getParsed(n).r;!isNaN(r)&&this.chart.getDataVisibility(n)&&(rt.max&&(t.max=r))}),t}_updateRadius(){let e=this.chart,t=e.chartArea,n=e.options,r=Math.min(t.right-t.left,t.bottom-t.top),i=Math.max(r/2,0),a=(i-Math.max(n.cutoutPercentage?i/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();this.outerRadius=i-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(e,t,n,r){let i=r===`reset`,a=this.chart,o=a.options.animation,s=this._cachedMeta.rScale,c=s.xCenter,l=s.yCenter,u=s.getIndexAngle(0)-.5*ml,d=u,f,p=360/this.countVisibleElements();for(f=0;f{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&t++}),t}_computeAngle(e,t,n){return this.chart.getDataVisibility(e)?jl(this.resolveDataElementOptions(e,t).angle||n):0}},fp=Object.freeze({__proto__:null,BarController:op,BubbleController:sp,DoughnutController:lp,LineController:up,PieController:class extends lp{static id=`pie`;static defaults={cutout:0,rotation:0,circumference:360,radius:`100%`}},PolarAreaController:dp,RadarController:class extends Wf{static id=`radar`;static defaults={datasetElementType:`line`,dataElementType:`point`,indexAxis:`r`,showLine:!0,elements:{line:{fill:`start`}}};static overrides={aspectRatio:1,scales:{r:{type:`radialLinear`}}};getLabelAndValue(e){let t=this._cachedMeta.vScale,n=this.getParsed(e);return{label:t.getLabels()[e],value:``+t.getLabelForValue(n[t.axis])}}parseObjectData(e,t,n,r){return xd.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta,n=t.dataset,r=t.data||[],i=t.iScale.getLabels();if(n.points=r,e!==`resize`){let t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);let a={_loop:!0,_fullLoop:i.length===r.length,options:t};this.updateElement(n,void 0,a,e)}this.updateElements(r,0,r.length,e)}updateElements(e,t,n,r){let i=this._cachedMeta.rScale,a=r===`reset`;for(let o=t;o0&&this.getParsed(t-1);for(let l=t;l0&&Math.abs(n[f]-v[f])>g,h&&(m.parsed=n,m.raw=c.data[l]),d&&(m.options=u||this.resolveDataElementOptions(l,t.active?`active`:r)),_||this.updateElement(t,l,m,r),v=n}this.updateSharedOptions(u,r,l)}getMaxOverflow(){let e=this._cachedMeta,t=e.data||[];if(!this.options.showLine){let e=0;for(let n=t.length-1;n>=0;--n)e=Math.max(e,t[n].size(this.resolveDataElementOptions(n))/2);return e>0&&e}let n=e.dataset,r=n.options&&n.options.borderWidth||0;if(!t.length)return r;let i=t[0].size(this.resolveDataElementOptions(0)),a=t[t.length-1].size(this.resolveDataElementOptions(t.length-1));return Math.max(r,i,a)/2}}});function pp(){throw Error(`This method is not implemented: Check that a complete date adapter is provided.`)}var mp={_date:class e{static override(t){Object.assign(e.prototype,t)}options;constructor(e){this.options=e||{}}init(){}formats(){return pp()}parse(){return pp()}format(){return pp()}add(){return pp()}diff(){return pp()}startOf(){return pp()}endOf(){return pp()}}};function hp(e,t,n,r){let{controller:i,data:a,_sorted:o}=e,s=i._cachedMeta.iScale,c=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(s&&t===s.axis&&t!==`r`&&o&&a.length){let o=s._reversePixels?Wl:Ul;if(!r){let r=o(a,t,n);if(c){let{vScale:t}=i._cachedMeta,{_parsed:n}=e,a=n.slice(0,r.lo+1).reverse().findIndex(e=>!Hc(e[t.axis]));r.lo-=Math.max(0,a);let o=n.slice(r.hi).findIndex(e=>!Hc(e[t.axis]));r.hi+=Math.max(0,o)}return r}else if(i._sharedOptions){let e=a[0],r=typeof e.getRange==`function`&&e.getRange(t);if(r){let e=o(a,t,n-r),i=o(a,t,n+r);return{lo:e.lo,hi:i.hi}}}}return{lo:0,hi:a.length-1}}function gp(e,t,n,r,i){let a=e.getSortedVisibleDatasetMetas(),o=n[t];for(let e=0,n=a.length;e{e[o]&&e[o](t[n],i)&&(a.push({element:e,datasetIndex:r,index:c}),s||=e.inRange(t.x,t.y,i))}),r&&!s?[]:a}var Cp={evaluateInteractionItems:gp,modes:{index(e,t,n,r){let i=Vd(t,e),a=n.axis||`x`,o=n.includeInvisible||!1,s=n.intersect?vp(e,i,a,r,o):xp(e,i,a,!1,r,o),c=[];return s.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{let t=s[0].index,n=e.data[t];n&&!n.skip&&c.push({element:n,datasetIndex:e.index,index:t})}),c):[]},dataset(e,t,n,r){let i=Vd(t,e),a=n.axis||`xy`,o=n.includeInvisible||!1,s=n.intersect?vp(e,i,a,r,o):xp(e,i,a,!1,r,o);if(s.length>0){let t=s[0].datasetIndex,n=e.getDatasetMeta(t).data;s=[];for(let e=0;ee.pos===t)}function Ep(e,t){return e.filter(e=>wp.indexOf(e.pos)===-1&&e.box.axis===t)}function Dp(e,t){return e.sort((e,n)=>{let r=t?n:e,i=t?e:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight})}function Op(e){let t=[],n,r,i,a,o,s;for(n=0,r=(e||[]).length;ne.box.fullSize),!0),r=Dp(Tp(t,`left`),!0),i=Dp(Tp(t,`right`)),a=Dp(Tp(t,`top`),!0),o=Dp(Tp(t,`bottom`)),s=Ep(t,`x`),c=Ep(t,`y`);return{fullSize:n,leftAndTop:r.concat(a),rightAndBottom:i.concat(c).concat(o).concat(s),chartArea:Tp(t,`chartArea`),vertical:r.concat(i).concat(c),horizontal:a.concat(o).concat(s)}}function Mp(e,t,n,r){return Math.max(e[n],t[n])+Math.max(e[r],t[r])}function Np(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function Pp(e,t,n,r){let{pos:i,box:a}=n,o=e.maxPadding;if(!Wc(i)){n.size&&(e[i]-=n.size);let t=r[n.stack]||{size:0,count:1};t.size=Math.max(t.size,n.horizontal?a.height:a.width),n.size=t.size/t.count,e[i]+=n.size}a.getPadding&&Np(o,a.getPadding());let s=Math.max(0,t.outerWidth-Mp(o,e,`left`,`right`)),c=Math.max(0,t.outerHeight-Mp(o,e,`top`,`bottom`)),l=s!==e.w,u=c!==e.h;return e.w=s,e.h=c,n.horizontal?{same:l,other:u}:{same:u,other:l}}function Fp(e){let t=e.maxPadding;function n(n){let r=Math.max(t[n]-e[n],0);return e[n]+=r,r}e.y+=n(`top`),e.x+=n(`left`),n(`right`),n(`bottom`)}function Ip(e,t){let n=t.maxPadding;function r(e){let r={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{r[e]=Math.max(t[e],n[e])}),r}return r(e?[`left`,`right`]:[`top`,`bottom`])}function Lp(e,t,n,r){let i=[],a,o,s,c,l,u;for(a=0,o=e.length,l=0;a{typeof e.beforeLayout==`function`&&e.beforeLayout()});let u=c.reduce((e,t)=>t.box.options&&t.box.options.display===!1?e:e+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:i,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/u,hBoxMaxHeight:o/2}),f=Object.assign({},i);Np(f,Zu(r));let p=Object.assign({maxPadding:f,w:a,h:o,x:i.left,y:i.top},i),m=Ap(c.concat(l),d);Lp(s.fullSize,p,d,m),Lp(c,p,d,m),Lp(l,p,d,m)&&Lp(c,p,d,m),Fp(p),zp(s.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,zp(s.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},Zc(s.chartArea,t=>{let n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}},Vp=class{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,r){return t=Math.max(0,t||e.width),n||=e.height,{width:t,height:Math.max(0,r?Math.floor(t/r):n)}}isAttached(e){return!0}updateConfig(e){}},Hp=class extends Vp{acquireContext(e){return e&&e.getContext&&e.getContext(`2d`)||null}updateConfig(e){e.options.animation=!1}},Up=`$chartjs`,Wp={touchstart:`mousedown`,touchmove:`mousemove`,touchend:`mouseup`,pointerenter:`mouseenter`,pointerdown:`mousedown`,pointermove:`mousemove`,pointerup:`mouseup`,pointerleave:`mouseout`,pointerout:`mouseout`},Gp=e=>e===null||e===``;function Kp(e,t){let n=e.style,r=e.getAttribute(`height`),i=e.getAttribute(`width`);if(e[Up]={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||`block`,n.boxSizing=n.boxSizing||`border-box`,Gp(i)){let t=qd(e,`width`);t!==void 0&&(e.width=t)}if(Gp(r))if(e.style.height===``)e.height=e.width/(t||2);else{let t=qd(e,`height`);t!==void 0&&(e.height=t)}return e}var qp=Kd?{passive:!0}:!1;function Jp(e,t,n){e&&e.addEventListener(t,n,qp)}function Yp(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,qp)}function Xp(e,t){let n=Wp[e.type]||e.type,{x:r,y:i}=Vd(e,t);return{type:n,chart:t,native:e,x:r===void 0?null:r,y:i===void 0?null:i}}function Zp(e,t){for(let n of e)if(n===t||n.contains(t))return!0}function Qp(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=Zp(n.addedNodes,r),t&&=!Zp(n.removedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}function $p(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=Zp(n.removedNodes,r),t&&=!Zp(n.addedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}var em=new Map,tm=0;function nm(){let e=window.devicePixelRatio;e!==tm&&(tm=e,em.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function rm(e,t){em.size||window.addEventListener(`resize`,nm),em.set(e,t)}function im(e){em.delete(e),em.size||window.removeEventListener(`resize`,nm)}function am(e,t,n){let r=e.canvas,i=r&&Nd(r);if(!i)return;let a=Zl((e,t)=>{let r=i.clientWidth;n(e,t),r{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;n===0&&r===0||a(n,r)});return o.observe(i),rm(e,a),o}function om(e,t,n){n&&n.disconnect(),t===`resize`&&im(e)}function sm(e,t,n){let r=e.canvas,i=Zl(t=>{e.ctx!==null&&n(Xp(t,e))},e);return Jp(r,t,i),i}var cm=class extends Vp{acquireContext(e,t){let n=e&&e.getContext&&e.getContext(`2d`);return n&&n.canvas===e?(Kp(e,t),n):null}releaseContext(e){let t=e.canvas;if(!t[Up])return!1;let n=t[Up].initial;[`height`,`width`].forEach(e=>{let r=n[e];Hc(r)?t.removeAttribute(e):t.setAttribute(e,r)});let r=n.style||{};return Object.keys(r).forEach(e=>{t.style[e]=r[e]}),t.width=t.width,delete t[Up],!0}addEventListener(e,t,n){this.removeEventListener(e,t);let r=e.$proxies||={};r[t]=({attach:Qp,detach:$p,resize:am}[t]||sm)(e,t,n)}removeEventListener(e,t){let n=e.$proxies||={},r=n[t];r&&(({attach:om,detach:om,resize:om}[t]||Yp)(e,t,r),n[t]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,r){return Wd(e,t,n,r)}isAttached(e){let t=e&&Nd(e);return!!(t&&t.isConnected)}};function lm(e){return!Md()||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas?Hp:cm}var um=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){let{x:t,y:n}=this.getProps([`x`,`y`],e);return{x:t,y:n}}hasValue(){return Ol(this.x)&&Ol(this.y)}getProps(e,t){let n=this.$animations;if(!t||!n)return this;let r={};return e.forEach(e=>{r[e]=n[e]&&n[e].active()?n[e]._to:this[e]}),r}};function dm(e,t){let n=e.options.ticks,r=fm(e),i=Math.min(n.maxTicksLimit||r,r),a=n.major.enabled?mm(t):[],o=a.length,s=a[0],c=a[o-1],l=[];if(o>i)return hm(t,l,a,o/i),l;let u=pm(a,t,i);if(o>0){let e,n,r=o>1?Math.round((c-s)/(o-1)):null;for(gm(t,l,u,Hc(r)?0:s-r,s),e=0,n=o-1;ei)return t}return Math.max(i,1)}function mm(e){let t=[],n,r;for(n=0,r=e.length;ne===`left`?`right`:e===`right`?`left`:e,ym=(e,t,n)=>t===`top`||t===`left`?e[t]+n:e[t]-n,bm=(e,t)=>Math.min(t||e,e);function xm(e,t){let n=[],r=e.length/t,i=e.length,a=0;for(;ao+s)))return c}function Cm(e,t){Zc(e,e=>{let n=e.gc,r=n.length/2,i;if(r>t){for(i=0;in?n:t,n=r&&t>n?t:n,{min:Kc(t,Kc(n,t)),max:Kc(n,Kc(t,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||=this._computeLabelItems(e)}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Xc(this.options.beforeUpdate,[this])}update(e,t,n){let{beginAtZero:r,grace:i,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||=(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=ed(this,i,r),!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let s=o=i||n<=1||!this.isHorizontal()){this.labelRotation=r;return}let l=this._getLabelSizes(),u=l.widest.width,d=l.highest.height,f=zl(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/n:f/(n-1),u+6>o&&(o=f/(n-(e.offset?.5:1)),s=this.maxHeight-wm(e.grid)-t.padding-Tm(e.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),a=Ml(Math.min(Math.asin(zl((l.highest.height+6)/o,-1,1)),Math.asin(zl(s/c,-1,1))-Math.asin(zl(d/c,-1,1)))),a=Math.max(r,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){Xc(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){Xc(this.options.beforeFit,[this])}fit(){let e={width:0,height:0},{chart:t,options:{ticks:n,title:r,grid:i}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let a=Tm(r,t.options.font);if(o?(e.width=this.maxWidth,e.height=wm(i)+a):(e.height=this.maxHeight,e.width=wm(i)+a),n.display&&this.ticks.length){let{first:t,last:r,widest:i,highest:a}=this._getLabelSizes(),s=n.padding*2,c=jl(this.labelRotation),l=Math.cos(c),u=Math.sin(c);if(o){let t=n.mirror?0:u*i.width+l*a.height;e.height=Math.min(this.maxHeight,e.height+t+s)}else{let t=n.mirror?0:l*i.width+u*a.height;e.width=Math.min(this.maxWidth,e.width+t+s)}this._calculatePadding(t,r,u,l)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,r){let{ticks:{align:i,padding:a},position:o}=this.options,s=this.labelRotation!==0,c=o!==`top`&&this.axis===`x`;if(this.isHorizontal()){let o=this.getPixelForTick(0)-this.left,l=this.right-this.getPixelForTick(this.ticks.length-1),u=0,d=0;s?c?(u=r*e.width,d=n*t.height):(u=n*e.height,d=r*t.width):i===`start`?d=t.width:i===`end`?u=e.width:i!==`inner`&&(u=e.width/2,d=t.width/2),this.paddingLeft=Math.max((u-o+a)*this.width/(this.width-o),0),this.paddingRight=Math.max((d-l+a)*this.width/(this.width-l),0)}else{let n=t.height/2,r=e.height/2;i===`start`?(n=0,r=e.height):i===`end`&&(n=t.height,r=0),this.paddingTop=n+a,this.paddingBottom=r+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){Xc(this.options.afterFit,[this])}isHorizontal(){let{axis:e,position:t}=this.options;return t===`top`||t===`bottom`||e===`x`}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let t,n;for(t=0,n=e.length;t({width:a[e]||0,height:o[e]||0});return{first:C(0),last:C(t-1),widest:C(x),highest:C(S),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){let t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);let t=this._startPixel+e*this._length;return Bl(this._alignToPixels?Au(this.chart,t,0):t)}getDecimalForPixel(e){let t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){let t=this.ticks||[];if(e>=0&&eo*r?o/n:s/r:s*r0:!!e}_computeGridLineItems(e){let t=this.axis,n=this.chart,r=this.options,{grid:i,position:a,border:o}=r,s=i.offset,c=this.isHorizontal(),l=this.ticks.length+ +!!s,u=wm(i),d=[],f=o.setContext(this.getContext()),p=f.display?f.width:0,m=p/2,h=function(e){return Au(n,e,p)},g,_,v,y,b,x,S,C,w,ee,te,ne;if(a===`top`)g=h(this.bottom),x=this.bottom-u,C=g-m,ee=h(e.top)+m,ne=e.bottom;else if(a===`bottom`)g=h(this.top),ee=e.top,ne=h(e.bottom)-m,x=g+m,C=this.top+u;else if(a===`left`)g=h(this.right),b=this.right-u,S=g-m,w=h(e.left)+m,te=e.right;else if(a===`right`)g=h(this.left),w=e.left,te=h(e.right)-m,b=g+m,S=this.left+u;else if(t===`x`){if(a===`center`)g=h((e.top+e.bottom)/2+.5);else if(Wc(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}ee=e.top,ne=e.bottom,x=g+m,C=x+u}else if(t===`y`){if(a===`center`)g=h((e.left+e.right)/2);else if(Wc(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}b=g-m,S=b-u,w=e.left,te=e.right}let re=qc(r.ticks.maxTicksLimit,l),ie=Math.max(1,Math.ceil(l/re));for(_=0;_0&&(a-=r/2);break}f={left:a,top:i,width:r+t.width,height:n+t.height,color:e.backdropColor}}h.push({label:y,font:w,textOffset:ne,options:{rotation:m,color:n,strokeColor:s,strokeWidth:l,textAlign:d,textBaseline:re,translation:[b,x],backdrop:f}})}return h}_getXAxisLabelAlignment(){let{position:e,ticks:t}=this.options;if(-jl(this.labelRotation))return e===`top`?`left`:`right`;let n=`center`;return t.align===`start`?n=`left`:t.align===`end`?n=`right`:t.align===`inner`&&(n=`inner`),n}_getYAxisLabelAlignment(e){let{position:t,ticks:{crossAlign:n,mirror:r,padding:i}}=this.options,a=this._getLabelSizes(),o=e+i,s=a.widest.width,c,l;return t===`left`?r?(l=this.right+i,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l+=s)):(l=this.right-o,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l=this.left)):t===`right`?r?(l=this.left+i,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l-=s)):(l=this.left+o,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l=this.right)):c=`right`,{textAlign:c,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;let e=this.chart,t=this.options.position;if(t===`left`||t===`right`)return{top:0,left:this.left,bottom:e.height,right:this.right};if(t===`top`||t===`bottom`)return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){let{ctx:e,options:{backgroundColor:t},left:n,top:r,width:i,height:a}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(n,r,i,a),e.restore())}getLineWidthForValue(e){let t=this.options.grid;if(!this._isVisible()||!t.display)return 0;let n=this.ticks.findIndex(t=>t.value===e);return n>=0?t.setContext(this.getContext(n)).lineWidth:0}drawGrid(e){let t=this.options.grid,n=this.ctx,r=this._gridLineItems||=this._computeGridLineItems(e),i,a,o=(e,t,r)=>{!r.width||!r.color||(n.save(),n.lineWidth=r.width,n.strokeStyle=r.color,n.setLineDash(r.borderDash||[]),n.lineDashOffset=r.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(i=0,a=r.length;i{this.draw(e)}}]:[{z:r,draw:e=>{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:n,draw:e=>{this.drawLabels(e)}}]}getMatchingVisibleMetas(e){let t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+`AxisID`,r=[],i,a;for(i=0,a=t.length;i{let r=n.split(`.`),i=r.pop(),a=[e].concat(r).join(`.`),o=t[n].split(`.`),s=o.pop(),c=o.join(`.`);Eu.route(a,i,c,s)})}function Pm(e){return`id`in e&&`defaults`in e}var Fm=new class{constructor(){this.controllers=new jm(Wf,`datasets`,!0),this.elements=new jm(um,`elements`),this.plugins=new jm(Object,`plugins`),this.scales=new jm(Am,`scales`),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each(`register`,e)}remove(...e){this._each(`unregister`,e)}addControllers(...e){this._each(`register`,e,this.controllers)}addElements(...e){this._each(`register`,e,this.elements)}addPlugins(...e){this._each(`register`,e,this.plugins)}addScales(...e){this._each(`register`,e,this.scales)}getController(e){return this._get(e,this.controllers,`controller`)}getElement(e){return this._get(e,this.elements,`element`)}getPlugin(e){return this._get(e,this.plugins,`plugin`)}getScale(e){return this._get(e,this.scales,`scale`)}removeControllers(...e){this._each(`unregister`,e,this.controllers)}removeElements(...e){this._each(`unregister`,e,this.elements)}removePlugins(...e){this._each(`unregister`,e,this.plugins)}removeScales(...e){this._each(`unregister`,e,this.scales)}_each(e,t,n){[...t].forEach(t=>{let r=n||this._getRegistryForType(t);n||r.isForType(t)||r===this.plugins&&t.id?this._exec(e,r,t):Zc(t,t=>{let r=n||this._getRegistryForType(t);this._exec(e,r,t)})})}_exec(e,t,n){let r=ll(e);Xc(n[`before`+r],[],n),t[e](n),Xc(n[`after`+r],[],n)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(r(t,n),e,`stop`),this._notify(r(n,t),e,`start`)}};function Lm(e){let t={},n=[],r=Object.keys(Fm.plugins.items);for(let e=0;e1&&Wm(e[0].toLowerCase());if(t)return t}throw Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function qm(e,t,n){if(n[t+`AxisID`]===e)return{axis:t}}function Jm(e,t){if(t.data&&t.data.datasets){let n=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(n.length)return qm(e,`x`,n[0])||qm(e,`y`,n[0])}return{}}function Ym(e,t){let n=Su[e.type]||{scales:{}},r=t.scales||{},i=Vm(e.type,t),a=Object.create(null);return Object.keys(r).forEach(t=>{let o=r[t];if(!Wc(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let s=Km(t,o,Jm(t,e),Eu.scales[o.type]),c=Um(s,i),l=n.scales||{};a[t]=rl(Object.create(null),[{axis:s},o,l[s],l[c]])}),e.data.datasets.forEach(n=>{let i=n.type||e.type,o=n.indexAxis||Vm(i,t),s=(Su[i]||{}).scales||{};Object.keys(s).forEach(e=>{let t=Hm(e,o),i=n[t+`AxisID`]||t;a[i]=a[i]||Object.create(null),rl(a[i],[{axis:t},r[i],s[e]])})}),Object.keys(a).forEach(e=>{let t=a[e];rl(t,[Eu.scales[t.type],Eu.scale])}),a}function Xm(e){let t=e.options||={};t.plugins=qc(t.plugins,{}),t.scales=Ym(e,t)}function Zm(e){return e||={},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function Qm(e){return e||={},e.data=Zm(e.data),Xm(e),e}var $m=new Map,eh=new Set;function th(e,t){let n=$m.get(e);return n||(n=t(),$m.set(e,n),eh.add(n)),n}var nh=(e,t,n)=>{let r=cl(t,n);r!==void 0&&e.add(r)},rh=class{constructor(e){this._config=Qm(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=Zm(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){let e=this._config;this.clearCache(),Xm(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return th(e,()=>[[`datasets.${e}`,``]])}datasetAnimationScopeKeys(e,t){return th(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,``]])}datasetElementScopeKeys(e,t){return th(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,``]])}pluginScopeKeys(e){let t=e.id,n=this.type;return th(`${n}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){let n=this._scopeCache,r=n.get(e);return(!r||t)&&(r=new Map,n.set(e,r)),r}getOptionScopes(e,t,n){let{options:r,type:i}=this,a=this._cachedScopes(e,n),o=a.get(t);if(o)return o;let s=new Set;t.forEach(t=>{e&&(s.add(e),t.forEach(t=>nh(s,e,t))),t.forEach(e=>nh(s,r,e)),t.forEach(e=>nh(s,Su[i]||{},e)),t.forEach(e=>nh(s,Eu,e)),t.forEach(e=>nh(s,Cu,e))});let c=Array.from(s);return c.length===0&&c.push(Object.create(null)),eh.has(t)&&a.set(t,c),c}chartOptionScopes(){let{options:e,type:t}=this;return[e,Su[t]||{},Eu.datasets[t]||{},{type:t},Eu,Cu]}resolveNamedOptions(e,t,n,r=[``]){let i={$shared:!0},{resolver:a,subPrefixes:o}=ih(this._resolverCache,e,r),s=a;if(oh(a,t)){i.$shared=!1,n=dl(n)?n():n;let t=this.createResolver(e,n,o);s=rd(a,n,t)}for(let e of t)i[e]=s[e];return i}createResolver(e,t,n=[``],r){let{resolver:i}=ih(this._resolverCache,e,n);return Wc(t)?rd(i,t,void 0,r):i}};function ih(e,t,n){let r=e.get(t);r||(r=new Map,e.set(t,r));let i=n.join(),a=r.get(i);return a||(a={resolver:nd(t,n),subPrefixes:n.filter(e=>!e.toLowerCase().includes(`hover`))},r.set(i,a)),a}var ah=e=>Wc(e)&&Object.getOwnPropertyNames(e).some(t=>dl(e[t]));function oh(e,t){let{isScriptable:n,isIndexable:r}=id(e);for(let i of t){let t=n(i),a=r(i),o=(a||t)&&e[i];if(t&&(dl(o)||ah(o))||a&&Uc(o))return!0}return!1}var sh=`4.5.1`,ch=[`top`,`bottom`,`left`,`right`,`chartArea`];function lh(e,t){return e===`top`||e===`bottom`||ch.indexOf(e)===-1&&t===`x`}function uh(e,t){return function(n,r){return n[e]===r[e]?n[t]-r[t]:n[e]-r[e]}}function dh(e){let t=e.chart,n=t.options.animation;t.notifyPlugins(`afterRender`),Xc(n&&n.onComplete,[e],t)}function fh(e){let t=e.chart,n=t.options.animation;Xc(n&&n.onProgress,[e],t)}function ph(e){return Md()&&typeof e==`string`?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}var mh={},hh=e=>{let t=ph(e);return Object.values(mh).filter(e=>e.canvas===t).pop()};function gh(e,t,n){let r=Object.keys(e);for(let i of r){let r=+i;if(r>=t){let a=e[i];delete e[i],(n>0||r>t)&&(e[r+n]=a)}}}function _h(e,t,n,r){return!n||e.type===`mouseout`?null:r?t:e}var vh=class{static defaults=Eu;static instances=mh;static overrides=Su;static registry=Fm;static version=sh;static getChart=hh;static register(...e){Fm.add(...e),yh()}static unregister(...e){Fm.remove(...e),yh()}constructor(e,t){let n=this.config=new rh(t),r=ph(e),i=hh(r);if(i)throw Error(`Canvas is already in use. Chart with ID '`+i.id+`' must be destroyed before the canvas with ID '`+i.canvas.id+`' can be reused.`);let a=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||(lm(r))),this.platform.updateConfig(n);let o=this.platform.acquireContext(r,a.aspectRatio),s=o&&o.canvas,c=s&&s.height,l=s&&s.width;if(this.id=Vc(),this.ctx=o,this.canvas=s,this.width=l,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Im,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Ql(e=>this.update(e),a.resizeDelay||0),this._dataChanges=[],mh[this.id]=this,!o||!s){console.error(`Failed to create chart: can't acquire context from the given item`);return}vf.listen(this,`complete`,dh),vf.listen(this,`progress`,fh),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:r,_aspectRatio:i}=this;return Hc(e)?t&&i?i:r?n/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return Fm}_initialize(){return this.notifyPlugins(`beforeInit`),this.options.responsive?this.resize():Gd(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(`afterInit`),this}clear(){return ju(this.canvas,this.ctx),this}stop(){return vf.stop(this),this}resize(e,t){vf.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){let n=this.options,r=this.canvas,i=n.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(r,e,t,i),o=n.devicePixelRatio||this.platform.getDevicePixelRatio(),s=this.width?`resize`:`attach`;this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,Gd(this,o,!0)&&(this.notifyPlugins(`resize`,{size:a}),Xc(n.onResize,[this,a],this),this.attached&&this._doResize(s)&&this.render())}ensureScalesHaveIDs(){Zc(this.options.scales||{},(e,t)=>{e.id=t})}buildOrUpdateScales(){let e=this.options,t=e.scales,n=this.scales,r=Object.keys(n).reduce((e,t)=>(e[t]=!1,e),{}),i=[];t&&(i=i.concat(Object.keys(t).map(e=>{let n=t[e],r=Km(e,n),i=r===`r`,a=r===`x`;return{options:n,dposition:i?`chartArea`:a?`bottom`:`left`,dtype:i?`radialLinear`:a?`category`:`linear`}}))),Zc(i,t=>{let i=t.options,a=i.id,o=Km(a,i),s=qc(i.type,t.dtype);(i.position===void 0||lh(i.position,o)!==lh(t.dposition))&&(i.position=t.dposition),r[a]=!0;let c=null;a in n&&n[a].type===s?c=n[a]:(c=new(Fm.getScale(s))({id:a,type:s,ctx:this.ctx,chart:this}),n[c.id]=c),c.init(i,e)}),Zc(r,(e,t)=>{e||delete n[t]}),Zc(n,e=>{Bp.configure(this,e,e.options),Bp.addBox(this,e)})}_updateMetasets(){let e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort((e,t)=>e.index-t.index),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,n)=>{t.filter(t=>t===e._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let e=[],t=this.data.datasets,n,r;for(this._removeUnreferencedMetasets(),n=0,r=t.length;n{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins(`reset`)}update(e){let t=this.config;t.update();let n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins(`beforeUpdate`,{mode:e,cancelable:!0})===!1)return;let i=this.buildOrUpdateControllers();this.notifyPlugins(`beforeElementsUpdate`);let a=0;for(let e=0,t=this.data.datasets.length;e{e.reset()}),this._updateDatasets(e),this.notifyPlugins(`afterUpdate`,{mode:e}),this._layers.sort(uh(`z`,`_idx`));let{_active:o,_lastEvent:s}=this;s?this._eventHandler(s,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){Zc(this.scales,e=>{Bp.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let e=this.options;(!fl(new Set(Object.keys(this._listeners)),new Set(e.events))||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(let{method:n,start:r,count:i}of t)gh(e,r,n===`_removeElements`?-i:i)}_getUniformDataChanges(){let e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];let t=this.data.datasets.length,n=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+`,`+e.splice(1).join(`,`))),r=n(0);for(let e=1;ee.split(`,`)).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(this.notifyPlugins(`beforeLayout`,{cancelable:!0})===!1)return;Bp.update(this,this.width,this.height,e);let t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],Zc(this.boxes,e=>{n&&e.position===`chartArea`||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins(`afterLayout`)}_updateDatasets(e){if(this.notifyPlugins(`beforeDatasetsUpdate`,{mode:e,cancelable:!0})!==!1){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins(`afterDatasetsDraw`)}_drawDataset(e){let t=this.ctx,n={meta:e,index:e.index,cancelable:!0},r=_f(this,e);this.notifyPlugins(`beforeDatasetDraw`,n)!==!1&&(r&&Fu(t,r),e.controller.draw(),r&&Iu(t),n.cancelable=!1,this.notifyPlugins(`afterDatasetDraw`,n))}isPointInArea(e){return Pu(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,n,r){let i=Cp.modes[t];return typeof i==`function`?i(this,e,n,r):[]}getDatasetMeta(e){let t=this.data.datasets[e],n=this._metasets,r=n.filter(e=>e&&e._dataset===t).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(r)),r}getContext(){return this.$context||=td(null,{chart:this,type:`chart`})}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){let t=this.data.datasets[e];if(!t)return!1;let n=this.getDatasetMeta(e);return typeof n.hidden==`boolean`?!n.hidden:!t.hidden}setDatasetVisibility(e,t){let n=this.getDatasetMeta(e);n.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){let r=n?`show`:`hide`,i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,r);ul(t)?(i.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),a.update(i,{visible:n}),this.update(t=>t.datasetIndex===e?r:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){let t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),vf.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,r),e[n]=r},r=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};Zc(this.options.events,e=>n(e,r))}bindResponsiveEvents(){this._responsiveListeners||={};let e=this._responsiveListeners,t=this.platform,n=(n,r)=>{t.addEventListener(this,n,r),e[n]=r},r=(n,r)=>{e[n]&&(t.removeEventListener(this,n,r),delete e[n])},i=(e,t)=>{this.canvas&&this.resize(e,t)},a,o=()=>{r(`attach`,o),this.attached=!0,this.resize(),n(`resize`,i),n(`detach`,a)};a=()=>{this.attached=!1,r(`resize`,i),this._stop(),this._resize(0,0),n(`attach`,o)},t.isAttached(this.canvas)?o():a()}unbindEvents(){Zc(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},Zc(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){let r=n?`set`:`remove`,i,a,o,s;for(t===`dataset`&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller[`_`+r+`DatasetHoverStyle`]()),o=0,s=e.length;o{let n=this.getDatasetMeta(e);if(!n)throw Error(`No dataset found at index `+e);return{datasetIndex:e,element:n.data[t],index:t}});Qc(n,t)||(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}isPluginEnabled(e){return this._plugins._cache.filter(t=>t.plugin.id===e).length===1}_updateHoverStyles(e,t,n){let r=this.options.hover,i=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),a=i(t,e),o=n?e:i(e,t);a.length&&this.updateHoverStyle(a,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,t){let n={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},r=t=>(t.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins(`beforeEvent`,n,r)===!1)return;let i=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins(`afterEvent`,n,r),(i||n.changed)&&this.render(),this}_handleEvent(e,t,n){let{_active:r=[],options:i}=this,a=t,o=this._getActiveElements(e,r,n,a),s=pl(e),c=_h(e,this._lastEvent,n,s);n&&(this._lastEvent=null,Xc(i.onHover,[e,o,this],this),s&&Xc(i.onClick,[e,o,this],this));let l=!Qc(o,r);return(l||t)&&(this._active=o,this._updateHoverStyles(o,r,t)),this._lastEvent=c,l}_getActiveElements(e,t,n,r){if(e.type===`mouseout`)return[];if(!n)return t;let i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,r)}};function yh(){return Zc(vh.instances,e=>e._plugins.invalidate())}function bh(e,t,n){let{startAngle:r,x:i,y:a,outerRadius:o,innerRadius:s,options:c}=t,{borderWidth:l,borderJoinStyle:u}=c,d=Math.min(l/o,Ll(r-n));if(e.beginPath(),e.arc(i,a,o-l/2,r+d/2,n-d/2),s>0){let t=Math.min(l/s,Ll(r-n));e.arc(i,a,s+l/2,n-t/2,r+t/2,!0)}else{let t=Math.min(l/2,o*Ll(r-n));if(u===`round`)e.arc(i,a,t,n-ml/2,r+ml/2,!0);else if(u===`bevel`){let o=2*t*t,s=-o*Math.cos(n+ml/2)+i,c=-o*Math.sin(n+ml/2)+a,l=o*Math.cos(r+ml/2)+i,u=o*Math.sin(r+ml/2)+a;e.lineTo(s,c),e.lineTo(l,u)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip(`evenodd`)}function xh(e,t,n){let{startAngle:r,pixelMargin:i,x:a,y:o,outerRadius:s,innerRadius:c}=t,l=i/s;e.beginPath(),e.arc(a,o,s,r-l,n+l),c>i?(l=i/c,e.arc(a,o,c,n+l,r-l,!0)):e.arc(a,o,i,n+yl,r-yl),e.closePath(),e.clip()}function Sh(e){return Ju(e,[`outerStart`,`outerEnd`,`innerStart`,`innerEnd`])}function Ch(e,t,n,r){let i=Sh(e.options.borderRadius),a=(n-t)/2,o=Math.min(a,r*t/2),s=e=>{let t=(n-Math.min(a,e))*r/2;return zl(e,0,Math.min(a,t))};return{outerStart:s(i.outerStart),outerEnd:s(i.outerEnd),innerStart:zl(i.innerStart,0,o),innerEnd:zl(i.innerEnd,0,o)}}function wh(e,t,n,r){return{x:n+e*Math.cos(t),y:r+e*Math.sin(t)}}function Th(e,t,n,r,i,a){let{x:o,y:s,startAngle:c,pixelMargin:l,innerRadius:u}=t,d=Math.max(t.outerRadius+r+n-l,0),f=u>0?u+r+n+l:0,p=0,m=i-c;if(r){let e=((u>0?u-r:0)+(d>0?d-r:0))/2;p=(m-(e===0?m:m*e/(e+r)))/2}let h=(m-Math.max(.001,m*d-n/ml)/d)/2,g=c+h+p,_=i-h-p,{outerStart:v,outerEnd:y,innerStart:b,innerEnd:x}=Ch(t,f,d,_-g),S=d-v,C=d-y,w=g+v/S,ee=_-y/C,te=f+b,ne=f+x,re=g+b/te,ie=_-x/ne;if(e.beginPath(),a){let t=(w+ee)/2;if(e.arc(o,s,d,w,t),e.arc(o,s,d,t,ee),y>0){let t=wh(C,ee,o,s);e.arc(t.x,t.y,y,ee,_+yl)}let n=wh(ne,_,o,s);if(e.lineTo(n.x,n.y),x>0){let t=wh(ne,ie,o,s);e.arc(t.x,t.y,x,_+yl,ie+Math.PI)}let r=(_-x/f+(g+b/f))/2;if(e.arc(o,s,f,_-x/f,r,!0),e.arc(o,s,f,r,g+b/f,!0),b>0){let t=wh(te,re,o,s);e.arc(t.x,t.y,b,re+Math.PI,g-yl)}let i=wh(S,g,o,s);if(e.lineTo(i.x,i.y),v>0){let t=wh(S,w,o,s);e.arc(t.x,t.y,v,g-yl,w)}}else{e.moveTo(o,s);let t=Math.cos(w)*d+o,n=Math.sin(w)*d+s;e.lineTo(t,n);let r=Math.cos(ee)*d+o,i=Math.sin(ee)*d+s;e.lineTo(r,i)}e.closePath()}function Eh(e,t,n,r,i){let{fullCircles:a,startAngle:o,circumference:s}=t,c=t.endAngle;if(a){Th(e,t,n,r,c,i);for(let t=0;t=ml&&p===0&&u!==`miter`&&bh(e,t,h),a||(Th(e,t,n,r,h,i),e.stroke())}var Oh=class extends um{static id=`arc`;static defaults={borderAlign:`center`,borderColor:`#fff`,borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:`backgroundColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,n){let{angle:r,distance:i}=Pl(this.getProps([`x`,`y`],n),{x:e,y:t}),{startAngle:a,endAngle:o,innerRadius:s,outerRadius:c,circumference:l}=this.getProps([`startAngle`,`endAngle`,`innerRadius`,`outerRadius`,`circumference`],n),u=(this.options.spacing+this.options.borderWidth)/2,d=qc(l,o-a),f=Rl(r,a,o)&&a!==o,p=d>=hl||f,m=Vl(i,s+u,c+u);return p&&m}getCenterPoint(e){let{x:t,y:n,startAngle:r,endAngle:i,innerRadius:a,outerRadius:o}=this.getProps([`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`],e),{offset:s,spacing:c}=this.options,l=(r+i)/2,u=(a+o+c+s)/2;return{x:t+Math.cos(l)*u,y:n+Math.sin(l)*u}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){let{options:t,circumference:n}=this,r=(t.offset||0)/4,i=(t.spacing||0)/2,a=t.circular;if(this.pixelMargin=t.borderAlign===`inner`?.33:0,this.fullCircles=n>hl?Math.floor(n/hl):0,n===0||this.innerRadius<0||this.outerRadius<0)return;e.save();let o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*r,Math.sin(o)*r);let s=r*(1-Math.sin(Math.min(ml,n||0)));e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor,Eh(e,this,s,i,a),Dh(e,this,s,i,a),e.restore()}};function kh(e,t,n=t){e.lineCap=qc(n.borderCapStyle,t.borderCapStyle),e.setLineDash(qc(n.borderDash,t.borderDash)),e.lineDashOffset=qc(n.borderDashOffset,t.borderDashOffset),e.lineJoin=qc(n.borderJoinStyle,t.borderJoinStyle),e.lineWidth=qc(n.borderWidth,t.borderWidth),e.strokeStyle=qc(n.borderColor,t.borderColor)}function Ah(e,t,n){e.lineTo(n.x,n.y)}function jh(e){return e.stepped?Lu:e.tension||e.cubicInterpolationMode===`monotone`?Ru:Ah}function Mh(e,t,n={}){let r=e.length,{start:i=0,end:a=r-1}=n,{start:o,end:s}=t,c=Math.max(i,o),l=Math.min(a,s),u=is&&a>s;return{count:r,start:c,loop:t.loop,ilen:l(o+(l?s-e:e))%a,y=()=>{h!==g&&(e.lineTo(u,g),e.lineTo(u,h),e.lineTo(u,_))};for(c&&(p=i[v(0)],e.moveTo(p.x,p.y)),f=0;f<=s;++f){if(p=i[v(f)],p.skip)continue;let t=p.x,n=p.y,r=t|0;r===m?(ng&&(g=n),u=(d*u+t)/++d):(y(),e.lineTo(t,n),m=r,d=0,h=g=n),_=n}y()}function Fh(e){let t=e.options,n=t.borderDash&&t.borderDash.length;return!e._decimated&&!e._loop&&!t.tension&&t.cubicInterpolationMode!==`monotone`&&!t.stepped&&!n?Ph:Nh}function Ih(e){return e.stepped?Yd:e.tension||e.cubicInterpolationMode===`monotone`?Xd:Jd}function Lh(e,t,n,r){let i=t._path;i||(i=t._path=new Path2D,t.path(i,n,r)&&i.closePath()),kh(e,t.options),e.stroke(i)}function Rh(e,t,n,r){let{segments:i,options:a}=t,o=Fh(t);for(let s of i)kh(e,a,s.style),e.beginPath(),o(e,t,s,{start:n,end:n+r-1})&&e.closePath(),e.stroke()}var zh=typeof Path2D==`function`;function Bh(e,t,n,r){zh&&!t.options.segment?Lh(e,t,n,r):Rh(e,t,n,r)}var Vh=class extends um{static id=`line`;static defaults={borderCapStyle:`butt`,borderDash:[],borderDashOffset:0,borderJoinStyle:`miter`,borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:`default`,fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:`backgroundColor`,borderColor:`borderColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`&&e!==`fill`};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){let n=this.options;if((n.tension||n.cubicInterpolationMode===`monotone`)&&!n.stepped&&!this._pointsUpdated){let r=n.spanGaps?this._loop:this._fullLoop;jd(this._points,n,e,r,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||=uf(this,this.options.segment)}first(){let e=this.segments,t=this.points;return e.length&&t[e[0].start]}last(){let e=this.segments,t=this.points,n=e.length;return n&&t[e[n-1].end]}interpolate(e,t){let n=this.options,r=e[t],i=this.points,a=sf(this,{property:t,start:r,end:r});if(!a.length)return;let o=[],s=Ih(n),c,l;for(c=0,l=a.length;ce.replace(`rgb(`,`rgba(`).replace(`)`,`, 0.5)`));function ng(e){return eg[e%eg.length]}function rg(e){return tg[e%tg.length]}function ig(e,t){return e.borderColor=ng(t),e.backgroundColor=rg(t),++t}function ag(e,t){return e.backgroundColor=e.data.map(()=>ng(t++)),t}function og(e,t){return e.backgroundColor=e.data.map(()=>rg(t++)),t}function sg(e){let t=0;return(n,r)=>{let i=e.getDatasetMeta(r).controller;i instanceof lp?t=ag(n,t):i instanceof dp?t=og(n,t):i&&(t=ig(n,t))}}function cg(e){let t;for(t in e)if(e[t].borderColor||e[t].backgroundColor)return!0;return!1}function lg(e){return e&&(e.borderColor||e.backgroundColor)}function ug(){return Eu.borderColor!==`rgba(0,0,0,0.1)`||Eu.backgroundColor!==`rgba(0,0,0,0.1)`}var dg={id:`colors`,defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,t,n){if(!n.enabled)return;let{data:{datasets:r},options:i}=e.config,{elements:a}=i,o=cg(r)||lg(i)||a&&cg(a)||ug();if(!n.forceOverride&&o)return;let s=sg(e);r.forEach(s)}};function fg(e,t,n,r,i){let a=i.samples||r;if(a>=n)return e.slice(t,t+n);let o=[],s=(n-2)/(a-2),c=0,l=t+n-1,u=t,d,f,p,m,h;for(o[c++]=e[u],d=0;dp&&(p=m,f=e[a],h=a);o[c++]=f,u=h}return o[c++]=e[l],o}function pg(e,t,n,r){let i=0,a=0,o,s,c,l,u,d,f,p,m,h,g=[],_=t+n-1,v=e[t].x,y=e[_].x-v;for(o=t;oh&&(h=l,f=o),i=(a*i+s.x)/++a;else{let n=o-1;if(!Hc(d)&&!Hc(f)){let t=Math.min(d,f),r=Math.max(d,f);t!==p&&t!==n&&g.push({...e[t],x:i}),r!==p&&r!==n&&g.push({...e[r],x:i})}o>0&&n!==p&&g.push(e[n]),g.push(s),u=t,a=0,m=h=l,d=f=p=o}}return g}function mg(e){if(e._decimated){let t=e._data;delete e._decimated,delete e._data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,writable:!0,value:t})}}function hg(e){e.data.datasets.forEach(e=>{mg(e)})}function gg(e,t){let n=t.length,r=0,i,{iScale:a}=e,{min:o,max:s,minDefined:c,maxDefined:l}=a.getUserBounds();return c&&(r=zl(Ul(t,a.axis,o).lo,0,n-1)),i=l?zl(Ul(t,a.axis,s).hi+1,r,n)-r:n-r,{start:r,count:i}}var _g={id:`decimation`,defaults:{algorithm:`min-max`,enabled:!1},beforeElementsUpdate:(e,t,n)=>{if(!n.enabled){hg(e);return}let r=e.width;e.data.datasets.forEach((t,i)=>{let{_data:a,indexAxis:o}=t,s=e.getDatasetMeta(i),c=a||t.data;if($u([o,e.options.indexAxis])===`y`||!s.controller.supportsDecimation)return;let l=e.scales[s.xAxisID];if(l.type!==`linear`&&l.type!==`time`||e.options.parsing)return;let{start:u,count:d}=gg(s,c);if(d<=(n.threshold||4*r)){mg(t);return}Hc(a)&&(t._data=c,delete t.data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(e){this._data=e}}));let f;switch(n.algorithm){case`lttb`:f=fg(c,u,d,r,n);break;case`min-max`:f=pg(c,u,d,r);break;default:throw Error(`Unsupported decimation algorithm '${n.algorithm}'`)}t._decimated=f})},destroy(e){hg(e)}};function vg(e,t,n){let r=e.segments,i=e.points,a=t.points,o=[];for(let e of r){let{start:r,end:s}=e;s=xg(r,s,i);let c=yg(n,i[r],i[s],e.loop);if(!t.segments){o.push({source:e,target:c,start:i[r],end:i[s]});continue}let l=sf(t,c);for(let t of l){let r=yg(n,a[t.start],a[t.end],t.loop),s=of(e,i,r);for(let e of s)o.push({source:e,target:t,start:{[n]:Sg(c,r,`start`,Math.max)},end:{[n]:Sg(c,r,`end`,Math.min)}})}}return o}function yg(e,t,n,r){if(r)return;let i=t[e],a=n[e];return e===`angle`&&(i=Ll(i),a=Ll(a)),{property:e,start:i,end:a}}function bg(e,t){let{x:n=null,y:r=null}=e||{},i=t.points,a=[];return t.segments.forEach(({start:e,end:t})=>{t=xg(e,t,i);let o=i[e],s=i[t];r===null?n!==null&&(a.push({x:n,y:o.y}),a.push({x:n,y:s.y})):(a.push({x:o.x,y:r}),a.push({x:s.x,y:r}))}),a}function xg(e,t,n){for(;t>e;t--){let e=n[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function Sg(e,t,n,r){return e&&t?r(e[n],t[n]):e?e[n]:t?t[n]:0}function Cg(e,t){let n=[],r=!1;return Uc(e)?(r=!0,n=e):n=bg(e,t),n.length?new Vh({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function wg(e){return e&&e.fill!==!1}function Tg(e,t,n){let r=e[t].fill,i=[t],a;if(!n)return r;for(;r!==!1&&i.indexOf(r)===-1;){if(!Gc(r))return r;if(a=e[r],!a)return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function Eg(e,t,n){let r=Ag(e);if(Wc(r))return!isNaN(r.value)&&r;let i=parseFloat(r);return Gc(i)&&Math.floor(i)===i?Dg(r[0],t,i,n):[`origin`,`start`,`end`,`stack`,`shape`].indexOf(r)>=0&&r}function Dg(e,t,n,r){return(e===`-`||e===`+`)&&(n=t+n),n===t||n<0||n>=r?!1:n}function Og(e,t){let n=null;return e===`start`?n=t.bottom:e===`end`?n=t.top:Wc(e)?n=t.getPixelForValue(e.value):t.getBasePixel&&(n=t.getBasePixel()),n}function kg(e,t,n){let r;return r=e===`start`?n:e===`end`?t.options.reverse?t.min:t.max:Wc(e)?e.value:t.getBaseValue(),r}function Ag(e){let t=e.options,n=t.fill,r=qc(n&&n.target,n);return r===void 0&&(r=!!t.backgroundColor),r===!1||r===null?!1:r===!0?`origin`:r}function jg(e){let{scale:t,index:n,line:r}=e,i=[],a=r.segments,o=r.points,s=Mg(t,n);s.push(Cg({x:null,y:t.bottom},r));for(let e=0;e=0;--t){let n=i[t].$filler;n&&(n.line.updateControlPoints(a,n.axis),r&&n.fill&&Vg(e.ctx,n,a))}},beforeDatasetsDraw(e,t,n){if(n.drawTime!==`beforeDatasetsDraw`)return;let r=e.getSortedVisibleDatasetMetas();for(let t=r.length-1;t>=0;--t){let n=r[t].$filler;wg(n)&&Vg(e.ctx,n,e.chartArea)}},beforeDatasetDraw(e,t,n){let r=t.meta.$filler;!wg(r)||n.drawTime!==`beforeDatasetDraw`||Vg(e.ctx,r,e.chartArea)},defaults:{propagate:!0,drawTime:`beforeDatasetDraw`}},Yg=(e,t)=>{let{boxHeight:n=t,boxWidth:r=t}=e;return e.usePointStyle&&(n=Math.min(n,t),r=e.pointStyleWidth||Math.min(r,t)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(t,n)}},Xg=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index,Zg=class extends um{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,n){this.maxWidth=e,this.maxHeight=t,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let e=this.options.labels||{},t=Xc(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,n)=>e.sort(t,n,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){let{options:e,ctx:t}=this;if(!e.display){this.width=this.height=0;return}let n=e.labels,r=Qu(n.font),i=r.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:s}=Yg(n,i),c,l;t.font=r.string,this.isHorizontal()?(c=this.maxWidth,l=this._fitRows(a,i,o,s)+10):(l=this.maxHeight,c=this._fitCols(a,r,o,s)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,t,n,r){let{ctx:i,maxWidth:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.lineWidths=[0],l=r+o,u=e;i.textAlign=`left`,i.textBaseline=`middle`;let d=-1,f=-l;return this.legendItems.forEach((e,p)=>{let m=n+t/2+i.measureText(e.text).width;(p===0||c[c.length-1]+m+2*o>a)&&(u+=l,c[c.length-(p>0?0:1)]=0,f+=l,d++),s[p]={left:0,top:f,row:d,width:m,height:r},c[c.length-1]+=m+o}),u}_fitCols(e,t,n,r){let{ctx:i,maxHeight:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.columnSizes=[],l=a-e,u=o,d=0,f=0,p=0,m=0;return this.legendItems.forEach((e,a)=>{let{itemWidth:h,itemHeight:g}=Qg(n,t,i,e,r);a>0&&f+g+2*o>l&&(u+=d+o,c.push({width:d,height:f}),p+=d+o,m++,d=f=0),s[a]={left:p,top:f,col:m,width:h,height:g},d=Math.max(d,h),f+=g+o}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;let e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:n,labels:{padding:r},rtl:i}}=this,a=$d(i,this.left,this.width);if(this.isHorizontal()){let i=0,o=eu(n,this.left+r,this.right-this.lineWidths[i]);for(let s of t)i!==s.row&&(i=s.row,o=eu(n,this.left+r,this.right-this.lineWidths[i])),s.top+=this.top+e+r,s.left=a.leftForLtr(a.x(o),s.width),o+=s.width+r}else{let i=0,o=eu(n,this.top+e+r,this.bottom-this.columnSizes[i].height);for(let s of t)s.col!==i&&(i=s.col,o=eu(n,this.top+e+r,this.bottom-this.columnSizes[i].height)),s.top=o,s.left+=this.left+r,s.left=a.leftForLtr(a.x(s.left),s.width),o+=s.height+r}}isHorizontal(){return this.options.position===`top`||this.options.position===`bottom`}draw(){if(this.options.display){let e=this.ctx;Fu(e,this),this._draw(),Iu(e)}}_draw(){let{options:e,columnSizes:t,lineWidths:n,ctx:r}=this,{align:i,labels:a}=e,o=Eu.color,s=$d(e.rtl,this.left,this.width),c=Qu(a.font),{padding:l}=a,u=c.size,d=u/2,f;this.drawTitle(),r.textAlign=s.textAlign(`left`),r.textBaseline=`middle`,r.lineWidth=.5,r.font=c.string;let{boxWidth:p,boxHeight:m,itemHeight:h}=Yg(a,u),g=function(e,t,n){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;r.save();let i=qc(n.lineWidth,1);if(r.fillStyle=qc(n.fillStyle,o),r.lineCap=qc(n.lineCap,`butt`),r.lineDashOffset=qc(n.lineDashOffset,0),r.lineJoin=qc(n.lineJoin,`miter`),r.lineWidth=i,r.strokeStyle=qc(n.strokeStyle,o),r.setLineDash(qc(n.lineDash,[])),a.usePointStyle){let o={radius:m*Math.SQRT2/2,pointStyle:n.pointStyle,rotation:n.rotation,borderWidth:i},c=s.xPlus(e,p/2),l=t+d;Nu(r,o,c,l,a.pointStyleWidth&&p)}else{let a=t+Math.max((u-m)/2,0),o=s.leftForLtr(e,p),c=Xu(n.borderRadius);r.beginPath(),Object.values(c).some(e=>e!==0)?Uu(r,{x:o,y:a,w:p,h:m,radius:c}):r.rect(o,a,p,m),r.fill(),i!==0&&r.stroke()}r.restore()},_=function(e,t,n){Hu(r,n.text,e,t+h/2,c,{strikethrough:n.hidden,textAlign:s.textAlign(n.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();f=v?{x:eu(i,this.left+l,this.right-n[0]),y:this.top+l+y,line:0}:{x:this.left+l,y:eu(i,this.top+y+l,this.bottom-t[0].height),line:0},ef(this.ctx,e.textDirection);let b=h+l;this.legendItems.forEach((o,u)=>{r.strokeStyle=o.fontColor,r.fillStyle=o.fontColor;let m=r.measureText(o.text).width,h=s.textAlign(o.textAlign||=a.textAlign),x=p+d+m,S=f.x,C=f.y;s.setWidth(this.width),v?u>0&&S+x+l>this.right&&(C=f.y+=b,f.line++,S=f.x=eu(i,this.left+l,this.right-n[f.line])):u>0&&C+b>this.bottom&&(S=f.x=S+t[f.line].width+l,f.line++,C=f.y=eu(i,this.top+y+l,this.bottom-t[f.line].height));let w=s.x(S);if(g(w,C,o),S=tu(h,S+p+d,v?S+x:this.right,e.rtl),_(s.x(S),C,o),v)f.x+=x+l;else if(typeof o.text!=`string`){let e=c.lineHeight;f.y+=t_(o,e)+l}else f.y+=b}),tf(this.ctx,e.textDirection)}drawTitle(){let e=this.options,t=e.title,n=Qu(t.font),r=Zu(t.padding);if(!t.display)return;let i=$d(e.rtl,this.left,this.width),a=this.ctx,o=t.position,s=n.size/2,c=r.top+s,l,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),l=this.top+c,u=eu(e.align,u,this.right-d);else{let t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);l=c+eu(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}let f=eu(o,u,u+d);a.textAlign=i.textAlign($l(o)),a.textBaseline=`middle`,a.strokeStyle=t.color,a.fillStyle=t.color,a.font=n.string,Hu(a,t.text,f,l,n)}_computeTitleHeight(){let e=this.options.title,t=Qu(e.font),n=Zu(e.padding);return e.display?t.lineHeight+n.height:0}_getLegendItemAt(e,t){let n,r,i;if(Vl(e,this.left,this.right)&&Vl(t,this.top,this.bottom)){for(i=this.legendHitBoxes,n=0;ne.length>t.length?e:t)),t+n.size/2+r.measureText(i).width}function e_(e,t,n){let r=e;return typeof t.text!=`string`&&(r=t_(t,n)),r}function t_(e,t){return t*(e.text?e.text.length:0)}function n_(e,t){return!!((e===`mousemove`||e===`mouseout`)&&(t.onHover||t.onLeave)||t.onClick&&(e===`click`||e===`mouseup`))}var r_={id:`legend`,_element:Zg,start(e,t,n){let r=e.legend=new Zg({ctx:e.ctx,options:n,chart:e});Bp.configure(e,r,n),Bp.addBox(e,r)},stop(e){Bp.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){let r=e.legend;Bp.configure(e,r,n),r.options=n},afterUpdate(e){let t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:`top`,align:`center`,fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){let r=t.datasetIndex,i=n.chart;i.isDatasetVisible(r)?(i.hide(r),t.hidden=!0):(i.show(r),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){let t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:i,color:a,useBorderRadius:o,borderRadius:s}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{let c=e.controller.getStyle(n?0:void 0),l=Zu(c.borderWidth);return{text:t[e.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!e.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:c.borderColor,pointStyle:r||c.pointStyle,rotation:c.rotation,textAlign:i||c.textAlign,borderRadius:o&&(s||c.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:`center`,text:``}},descriptors:{_scriptable:e=>!e.startsWith(`on`),labels:{_scriptable:e=>![`generateLabels`,`filter`,`sort`].includes(e)}}},i_=class extends um{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){let n=this.options;if(this.left=0,this.top=0,!n.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=t;let r=Uc(n.text)?n.text.length:1;this._padding=Zu(n.padding);let i=r*Qu(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){let e=this.options.position;return e===`top`||e===`bottom`}_drawArgs(e){let{top:t,left:n,bottom:r,right:i,options:a}=this,o=a.align,s=0,c,l,u;return this.isHorizontal()?(l=eu(o,n,i),u=t+e,c=i-n):(a.position===`left`?(l=n+e,u=eu(o,r,t),s=ml*-.5):(l=i-e,u=eu(o,t,r),s=ml*.5),c=r-t),{titleX:l,titleY:u,maxWidth:c,rotation:s}}draw(){let e=this.ctx,t=this.options;if(!t.display)return;let n=Qu(t.font),r=n.lineHeight/2+this._padding.top,{titleX:i,titleY:a,maxWidth:o,rotation:s}=this._drawArgs(r);Hu(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:s,textAlign:$l(t.align),textBaseline:`middle`,translation:[i,a]})}};function a_(e,t){let n=new i_({ctx:e.ctx,options:t,chart:e});Bp.configure(e,n,t),Bp.addBox(e,n),e.titleBlock=n}var o_={id:`title`,_element:i_,start(e,t,n){a_(e,n)},stop(e){let t=e.titleBlock;Bp.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){let r=e.titleBlock;Bp.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`bold`},fullSize:!0,padding:10,position:`top`,text:``,weight:2e3},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},s_=new WeakMap,c_={id:`subtitle`,start(e,t,n){let r=new i_({ctx:e.ctx,options:n,chart:e});Bp.configure(e,r,n),Bp.addBox(e,r),s_.set(e,r)},stop(e){Bp.removeBox(e,s_.get(e)),s_.delete(e)},beforeUpdate(e,t,n){let r=s_.get(e);Bp.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`normal`},fullSize:!0,padding:0,position:`top`,text:``,weight:1500},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},l_={average(e){if(!e.length)return!1;let t,n,r=new Set,i=0,a=0;for(t=0,n=e.length;te+t)/r.size,y:i/a}},nearest(e,t){if(!e.length)return!1;let n=t.x,r=t.y,i=1/0,a,o,s;for(a=0,o=e.length;a-1?e.split(` -`):e}function f_(e,t){let{element:n,datasetIndex:r,index:i}=t,a=e.getDatasetMeta(r).controller,{label:o,value:s}=a.getLabelAndValue(i);return{chart:e,label:o,parsed:a.getParsed(i),raw:e.data.datasets[r].data[i],formattedValue:s,dataset:a.getDataset(),dataIndex:i,datasetIndex:r,element:n}}function p_(e,t){let n=e.chart.ctx,{body:r,footer:i,title:a}=e,{boxWidth:o,boxHeight:s}=t,c=Qu(t.bodyFont),l=Qu(t.titleFont),u=Qu(t.footerFont),d=a.length,f=i.length,p=r.length,m=Zu(t.padding),h=m.height,g=0,_=r.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,d&&(h+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),_){let e=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;h+=p*e+(_-p)*c.lineHeight+(_-1)*t.bodySpacing}f&&(h+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let v=0,y=function(e){g=Math.max(g,n.measureText(e).width+v)};return n.save(),n.font=l.string,Zc(e.title,y),n.font=c.string,Zc(e.beforeBody.concat(e.afterBody),y),v=t.displayColors?o+2+t.boxPadding:0,Zc(r,e=>{Zc(e.before,y),Zc(e.lines,y),Zc(e.after,y)}),v=0,n.font=u.string,Zc(e.footer,y),n.restore(),g+=m.width,{width:g,height:h}}function m_(e,t){let{y:n,height:r}=t;return ne.height-r/2?`bottom`:`center`}function h_(e,t,n,r){let{x:i,width:a}=r,o=n.caretSize+n.caretPadding;if(e===`left`&&i+a+o>t.width||e===`right`&&i-a-o<0)return!0}function g_(e,t,n,r){let{x:i,width:a}=n,{width:o,chartArea:{left:s,right:c}}=e,l=`center`;return r===`center`?l=i<=(s+c)/2?`left`:`right`:i<=a/2?l=`left`:i>=o-a/2&&(l=`right`),h_(l,e,t,n)&&(l=`center`),l}function __(e,t,n){let r=n.yAlign||t.yAlign||m_(e,n);return{xAlign:n.xAlign||t.xAlign||g_(e,t,n,r),yAlign:r}}function v_(e,t){let{x:n,width:r}=e;return t===`right`?n-=r:t===`center`&&(n-=r/2),n}function y_(e,t,n){let{y:r,height:i}=e;return t===`top`?r+=n:t===`bottom`?r-=i+n:r-=i/2,r}function b_(e,t,n,r){let{caretSize:i,caretPadding:a,cornerRadius:o}=e,{xAlign:s,yAlign:c}=n,l=i+a,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:p}=Xu(o),m=v_(t,s),h=y_(t,c,l);return c===`center`?s===`left`?m+=l:s===`right`&&(m-=l):s===`left`?m-=Math.max(u,f)+i:s===`right`&&(m+=Math.max(d,p)+i),{x:zl(m,0,r.width-t.width),y:zl(h,0,r.height-t.height)}}function x_(e,t,n){let r=Zu(n.padding);return t===`center`?e.x+e.width/2:t===`right`?e.x+e.width-r.right:e.x+r.left}function S_(e){return u_([],d_(e))}function C_(e,t,n){return td(e,{tooltip:t,tooltipItems:n,type:`tooltip`})}function w_(e,t){let n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}var T_={beforeTitle:Bc,title(e){if(e.length>0){let t=e[0],n=t.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode===`dataset`)return t.dataset.label||``;if(t.label)return t.label;if(r>0&&t.dataIndex{let t={before:[],lines:[],after:[]},i=w_(n,e);u_(t.before,d_(E_(i,`beforeLabel`,this,e))),u_(t.lines,E_(i,`label`,this,e)),u_(t.after,d_(E_(i,`afterLabel`,this,e))),r.push(t)}),r}getAfterBody(e,t){return S_(E_(t.callbacks,`afterBody`,this,e))}getFooter(e,t){let{callbacks:n}=t,r=E_(n,`beforeFooter`,this,e),i=E_(n,`footer`,this,e),a=E_(n,`afterFooter`,this,e),o=[];return o=u_(o,d_(r)),o=u_(o,d_(i)),o=u_(o,d_(a)),o}_createItems(e){let t=this._active,n=this.chart.data,r=[],i=[],a=[],o=[],s,c;for(s=0,c=t.length;se.filter(t,r,i,n))),e.itemSort&&(o=o.sort((t,r)=>e.itemSort(t,r,n))),Zc(o,t=>{let n=w_(e.callbacks,t);r.push(E_(n,`labelColor`,this,t)),i.push(E_(n,`labelPointStyle`,this,t)),a.push(E_(n,`labelTextColor`,this,t))}),this.labelColors=r,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=o,o}update(e,t){let n=this.options.setContext(this.getContext()),r=this._active,i,a=[];if(!r.length)this.opacity!==0&&(i={opacity:0});else{let e=l_[n.position].call(this,r,this._eventPosition);a=this._createItems(n),this.title=this.getTitle(a,n),this.beforeBody=this.getBeforeBody(a,n),this.body=this.getBody(a,n),this.afterBody=this.getAfterBody(a,n),this.footer=this.getFooter(a,n);let t=this._size=p_(this,n),o=Object.assign({},e,t),s=__(this.chart,n,o),c=b_(n,o,s,this.chart);this.xAlign=s.xAlign,this.yAlign=s.yAlign,i={opacity:1,x:c.x,y:c.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,r){let i=this.getCaretPosition(e,n,r);t.lineTo(i.x1,i.y1),t.lineTo(i.x2,i.y2),t.lineTo(i.x3,i.y3)}getCaretPosition(e,t,n){let{xAlign:r,yAlign:i}=this,{caretSize:a,cornerRadius:o}=n,{topLeft:s,topRight:c,bottomLeft:l,bottomRight:u}=Xu(o),{x:d,y:f}=e,{width:p,height:m}=t,h,g,_,v,y,b;return i===`center`?(y=f+m/2,r===`left`?(h=d,g=h-a,v=y+a,b=y-a):(h=d+p,g=h+a,v=y-a,b=y+a),_=h):(g=r===`left`?d+Math.max(s,l)+a:r===`right`?d+p-Math.max(c,u)-a:this.caretX,i===`top`?(v=f,y=v-a,h=g-a,_=g+a):(v=f+m,y=v+a,h=g+a,_=g-a),b=v),{x1:h,x2:g,x3:_,y1:v,y2:y,y3:b}}drawTitle(e,t,n){let r=this.title,i=r.length,a,o,s;if(i){let c=$d(n.rtl,this.x,this.width);for(e.x=x_(this,n.titleAlign,n),t.textAlign=c.textAlign(n.titleAlign),t.textBaseline=`middle`,a=Qu(n.titleFont),o=n.titleSpacing,t.fillStyle=n.titleColor,t.font=a.string,s=0;se!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,Uu(e,{x:t,y:p,w:c,h:s,radius:o}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),Uu(e,{x:n,y:p+1,w:c-2,h:s-2,radius:o}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(t,p,c,s),e.strokeRect(t,p,c,s),e.fillStyle=a.backgroundColor,e.fillRect(n,p+1,c-2,s-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){let{body:r}=this,{bodySpacing:i,bodyAlign:a,displayColors:o,boxHeight:s,boxWidth:c,boxPadding:l}=n,u=Qu(n.bodyFont),d=u.lineHeight,f=0,p=$d(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+f),e.y+d/2),e.y+=d+i},h=p.textAlign(a),g,_,v,y,b,x,S;for(t.textAlign=a,t.textBaseline=`middle`,t.font=u.string,e.x=x_(this,h,n),t.fillStyle=n.bodyColor,Zc(this.beforeBody,m),f=o&&h!==`right`?a===`center`?c/2+l:c+2+l:0,y=0,x=r.length;y0&&t.stroke()}_updateAnimationTarget(e){let t=this.chart,n=this.$animations,r=n&&n.x,i=n&&n.y;if(r||i){let n=l_[e.position].call(this,this._active,this._eventPosition);if(!n)return;let a=this._size=p_(this,e),o=Object.assign({},n,this._size),s=__(t,e,o),c=b_(e,o,s,t);(r._to!==c.x||i._to!==c.y)&&(this.xAlign=s.xAlign,this.yAlign=s.yAlign,this.width=a.width,this.height=a.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){let t=this.options.setContext(this.getContext()),n=this.opacity;if(!n)return;this._updateAnimationTarget(t);let r={width:this.width,height:this.height},i={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;let a=Zu(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=n,this.drawBackground(i,e,r,t),ef(e,t.textDirection),i.y+=a.top,this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),tf(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){let n=this._active,r=e.map(({datasetIndex:e,index:t})=>{let n=this.chart.getDatasetMeta(e);if(!n)throw Error(`Cannot find a dataset at index `+e);return{datasetIndex:e,element:n.data[t],index:t}}),i=!Qc(n,r),a=this._positionChanged(r,t);(i||a)&&(this._active=r,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,i=this._active||[],a=this._getActiveElements(e,i,t,n),o=this._positionChanged(a,e),s=t||!Qc(a,i)||o;return s&&(this._active=a,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),s}_getActiveElements(e,t,n,r){let i=this.options;if(e.type===`mouseout`)return[];if(!r)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index)!==void 0);let a=this.chart.getElementsAtEventForMode(e,i.mode,i,n);return i.reverse&&a.reverse(),a}_positionChanged(e,t){let{caretX:n,caretY:r,options:i}=this,a=l_[i.position].call(this,e,t);return a!==!1&&(n!==a.x||r!==a.y)}},O_=Object.freeze({__proto__:null,Colors:dg,Decimation:_g,Filler:Jg,Legend:r_,SubTitle:c_,Title:o_,Tooltip:{id:`tooltip`,_element:D_,positioners:l_,afterInit(e,t,n){n&&(e.tooltip=new D_({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){let t=e.tooltip;if(t&&t._willRender()){let n={tooltip:t};if(e.notifyPlugins(`beforeTooltipDraw`,{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins(`afterTooltipDraw`,n)}},afterEvent(e,t){if(e.tooltip){let n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:`average`,backgroundColor:`rgba(0,0,0,0.8)`,titleColor:`#fff`,titleFont:{weight:`bold`},titleSpacing:2,titleMarginBottom:6,titleAlign:`left`,bodyColor:`#fff`,bodySpacing:2,bodyFont:{},bodyAlign:`left`,footerColor:`#fff`,footerSpacing:2,footerMarginTop:6,footerFont:{weight:`bold`},footerAlign:`left`,padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:`#fff`,displayColors:!0,boxPadding:0,borderColor:`rgba(0,0,0,0)`,borderWidth:0,animation:{duration:400,easing:`easeOutQuart`},animations:{numbers:{type:`number`,properties:[`x`,`y`,`width`,`height`,`caretX`,`caretY`]},opacity:{easing:`linear`,duration:200}},callbacks:T_},defaultRoutes:{bodyFont:`font`,footerFont:`font`,titleFont:`font`},descriptors:{_scriptable:e=>e!==`filter`&&e!==`itemSort`&&e!==`external`,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:`animation`}},additionalOptionScopes:[`interaction`]}}),k_=(e,t,n,r)=>(typeof t==`string`?(n=e.push(t)-1,r.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function A_(e,t,n,r){let i=e.indexOf(t);return i===-1?k_(e,t,n,r):i===e.lastIndexOf(t)?i:n}var j_=(e,t)=>e===null?null:zl(Math.round(e),0,t);function M_(e){let t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}};function P_(e,t){let n=[],{bounds:r,step:i,min:a,max:o,precision:s,count:c,maxTicks:l,maxDigits:u,includeBounds:d}=e,f=i||1,p=l-1,{min:m,max:h}=t,g=!Hc(a),_=!Hc(o),v=!Hc(c),y=(h-m)/(u+1),b=Tl((h-m)/p/f)*f,x,S,C,w;if(b<1e-14&&!g&&!_)return[{value:m},{value:h}];w=Math.ceil(h/b)-Math.floor(m/b),w>p&&(b=Tl(w*b/p/f)*f),Hc(s)||(x=10**s,b=Math.ceil(b*x)/x),r===`ticks`?(S=Math.floor(m/b)*b,C=Math.ceil(h/b)*b):(S=m,C=h),g&&_&&i&&kl((o-a)/i,b/1e3)?(w=Math.round(Math.min((o-a)/b,l)),b=(o-a)/w,S=a,C=o):v?(S=g?a:S,C=_?o:C,w=c-1,b=(C-S)/w):(w=(C-S)/b,w=wl(w,Math.round(w),b/1e3)?Math.round(w):Math.ceil(w));let ee=Math.max(Nl(b),Nl(S));x=10**(Hc(s)?ee:s),S=Math.round(S*x)/x,C=Math.round(C*x)/x;let te=0;for(g&&(d&&S!==a?(n.push({value:a}),So)break;n.push({value:e})}return _&&d&&C!==o?n.length&&wl(n[n.length-1].value,o,F_(o,y,e))?n[n.length-1].value=o:n.push({value:o}):(!_||C===o)&&n.push({value:C}),n}function F_(e,t,{horizontal:n,minRotation:r}){let i=jl(r),a=(n?Math.sin(i):Math.cos(i))||.001,o=.75*t*(``+e).length;return Math.min(t/a,o)}var I_=class extends Am{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return Hc(e)||(typeof e==`number`||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){let{beginAtZero:e}=this.options,{minDefined:t,maxDefined:n}=this.getUserBounds(),{min:r,max:i}=this,a=e=>r=t?r:e,o=e=>i=n?i:e;if(e){let e=Cl(r),t=Cl(i);e<0&&t<0?o(0):e>0&&t>0&&a(0)}if(r===i){let t=i===0?1:Math.abs(i*.05);o(i+t),e||a(r-t)}this.min=r,this.max=i}getTickLimit(){let{maxTicksLimit:e,stepSize:t}=this.options.ticks,n;return t?(n=Math.ceil(this.max/t)-Math.floor(this.min/t)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${t} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e||=11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return 1/0}buildTicks(){let e=this.options,t=e.ticks,n=this.getTickLimit();n=Math.max(2,n);let r=P_({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:t.includeBounds!==!1},this._range||this);return e.bounds===`ticks`&&Al(r,this,`value`),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){let e=this.ticks,t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){let r=(n-t)/Math.max(e.length-1,1)/2;t-=r,n+=r}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return _u(e,this.chart.options.locale,this.options.ticks.format)}},L_=class extends I_{static id=`linear`;static defaults={ticks:{callback:bu.formatters.numeric}};determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=Gc(e)?e:0,this.max=Gc(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){let e=this.isHorizontal(),t=e?this.width:this.height,n=jl(this.options.ticks.minRotation),r=(e?Math.sin(n):Math.cos(n))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,i.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}},R_=e=>Math.floor(Sl(e)),z_=(e,t)=>10**(R_(e)+t);function B_(e){return e/10**R_(e)==1}function V_(e,t,n){let r=10**n,i=Math.floor(e/r);return Math.ceil(t/r)-i}function H_(e,t){let n=R_(t-e);for(;V_(e,t,n)>10;)n++;for(;V_(e,t,n)<10;)n--;return Math.min(n,R_(e))}function U_(e,{min:t,max:n}){t=Kc(e.min,t);let r=[],i=R_(t),a=H_(t,n),o=a<0?10**Math.abs(a):1,s=10**a,c=i>a?10**i:0,l=Math.round((t-c)*o)/o,u=Math.floor((t-c)/s/10)*s*10,d=Math.floor((l-u)/10**a),f=Kc(e.min,Math.round((c+u+d*10**a)*o)/o);for(;f=10?d=d<15?15:20:d++,d>=20&&(a++,d=2,o=a>=0?1:o),f=Math.round((c+u+d*10**a)*o)/o;let p=Kc(e.max,f);return r.push({value:p,major:B_(p),significand:d}),r}var W_=class extends Am{static id=`logarithmic`;static defaults={ticks:{callback:bu.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){let n=I_.prototype.parse.apply(this,[e,t]);if(n===0){this._zero=!0;return}return Gc(n)&&n>0?n:null}determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=Gc(e)?Math.max(0,e):null,this.max=Gc(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!Gc(this._userMin)&&(this.min=e===z_(this.min,0)?z_(this.min,-1):z_(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:e,maxDefined:t}=this.getUserBounds(),n=this.min,r=this.max,i=t=>n=e?n:t,a=e=>r=t?r:e;n===r&&(n<=0?(i(1),a(10)):(i(z_(n,-1)),a(z_(r,1)))),n<=0&&i(z_(r,-1)),r<=0&&a(z_(n,1)),this.min=n,this.max=r}buildTicks(){let e=this.options,t=U_({min:this._userMin,max:this._userMax},this);return e.bounds===`ticks`&&Al(t,this,`value`),e.reverse?(t.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),t}getLabelForValue(e){return e===void 0?`0`:_u(e,this.chart.options.locale,this.options.ticks.format)}configure(){let e=this.min;super.configure(),this._startValue=Sl(e),this._valueRange=Sl(this.max)-Sl(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(Sl(e)-this._startValue)/this._valueRange)}getValueForPixel(e){let t=this.getDecimalForPixel(e);return 10**(this._startValue+t*this._valueRange)}};function G_(e){let t=e.ticks;if(t.display&&e.display){let e=Zu(t.backdropPadding);return qc(t.font&&t.font.size,Eu.font.size)+e.height}return 0}function K_(e,t,n){return n=Uc(n)?n:[n],{w:ku(e,t.string,n),h:n.length*t.lineHeight}}function q_(e,t,n,r,i){return e===r||e===i?{start:t-n/2,end:t+n/2}:ei?{start:t-n,end:t}:{start:t,end:t+n}}function J_(e){let t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),r=[],i=[],a=e._pointLabels.length,o=e.options.pointLabels,s=o.centerPointLabels?ml/a:0;for(let c=0;ct.r&&(s=(r.end-t.r)/a,e.r=Math.max(e.r,t.r+s)),i.startt.b&&(c=(i.end-t.b)/o,e.b=Math.max(e.b,t.b+c))}function X_(e,t,n){let r=e.drawingArea,{extra:i,additionalAngle:a,padding:o,size:s}=n,c=e.getPointPosition(t,r+i+o,a),l=Math.round(Ml(Ll(c.angle+yl))),u=tv(c.y,s.h,l),d=$_(l),f=ev(c.x,s.w,d);return{visible:!0,x:c.x,y:u,textAlign:d,left:f,top:u,right:f+s.w,bottom:u+s.h}}function Z_(e,t){if(!t)return!0;let{left:n,top:r,right:i,bottom:a}=e;return!(Pu({x:n,y:r},t)||Pu({x:n,y:a},t)||Pu({x:i,y:r},t)||Pu({x:i,y:a},t))}function Q_(e,t,n){let r=[],i=e._pointLabels.length,a=e.options,{centerPointLabels:o,display:s}=a.pointLabels,c={extra:G_(a)/2,additionalAngle:o?ml/i:0},l;for(let a=0;a270||n<90)&&(e-=t),e}function nv(e,t,n){let{left:r,top:i,right:a,bottom:o}=n,{backdropColor:s}=t;if(!Hc(s)){let n=Xu(t.borderRadius),c=Zu(t.backdropPadding);e.fillStyle=s;let l=r-c.left,u=i-c.top,d=a-r+c.width,f=o-i+c.height;Object.values(n).some(e=>e!==0)?(e.beginPath(),Uu(e,{x:l,y:u,w:d,h:f,radius:n}),e.fill()):e.fillRect(l,u,d,f)}}function rv(e,t){let{ctx:n,options:{pointLabels:r}}=e;for(let i=t-1;i>=0;i--){let t=e._pointLabelItems[i];if(!t.visible)continue;let a=r.setContext(e.getPointLabelContext(i));nv(n,a,t);let o=Qu(a.font),{x:s,y:c,textAlign:l}=t;Hu(n,e._pointLabels[i],s,c+o.lineHeight/2,o,{color:a.color,textAlign:l,textBaseline:`middle`})}}function iv(e,t,n,r){let{ctx:i}=e;if(n)i.arc(e.xCenter,e.yCenter,t,0,hl);else{let n=e.getPointPosition(0,t);i.moveTo(n.x,n.y);for(let a=1;a{let n=Xc(this.options.pointLabels.callback,[e,t],this);return n||n===0?n:``}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){let e=this.options;e.display&&e.pointLabels.display?J_(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,r){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,r))}getIndexAngle(e){let t=hl/(this._pointLabels.length||1),n=this.options.startAngle||0;return Ll(e*t+jl(n))}getDistanceFromCenterForValue(e){if(Hc(e))return NaN;let t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(Hc(e))return NaN;let t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){let t=this._pointLabels||[];if(e>=0&&e{if(t!==0||t===0&&this.min<0){s=this.getDistanceFromCenterForValue(e.value);let n=this.getContext(t),o=r.setContext(n),c=i.setContext(n);av(this,o,s,a,c)}}),n.display){for(e.save(),o=a-1;o>=0;o--){let r=n.setContext(this.getPointLabelContext(o)),{color:i,lineWidth:a}=r;!a||!i||(e.lineWidth=a,e.strokeStyle=i,e.setLineDash(r.borderDash),e.lineDashOffset=r.borderDashOffset,s=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),c=this.getPointPosition(o,s),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){let e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;let r=this.getIndexAngle(0),i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign=`center`,e.textBaseline=`middle`,this.ticks.forEach((r,o)=>{if(o===0&&this.min>=0&&!t.reverse)return;let s=n.setContext(this.getContext(o)),c=Qu(s.font);if(i=this.getDistanceFromCenterForValue(this.ticks[o].value),s.showLabelBackdrop){e.font=c.string,a=e.measureText(r.label).width,e.fillStyle=s.backdropColor;let t=Zu(s.backdropPadding);e.fillRect(-a/2-t.left,-i-c.size/2-t.top,a+t.width,c.size+t.height)}Hu(e,r.label,0,-i,c,{color:s.color,strokeColor:s.textStrokeColor,strokeWidth:s.textStrokeWidth})}),e.restore()}drawTitle(){}},cv={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},lv=Object.keys(cv);function uv(e,t){return e-t}function dv(e,t){if(Hc(t))return null;let n=e._adapter,{parser:r,round:i,isoWeekday:a}=e._parseOpts,o=t;return typeof r==`function`&&(o=r(o)),Gc(o)||(o=typeof r==`string`?n.parse(o,r):n.parse(o)),o===null?null:(i&&(o=i===`week`&&(Ol(a)||a===!0)?n.startOf(o,`isoWeek`,a):n.startOf(o,i)),+o)}function fv(e,t,n,r){let i=lv.length;for(let a=lv.indexOf(e);a=lv.indexOf(n);a--){let n=lv[a];if(cv[n].common&&e._adapter.diff(i,r,n)>=t-1)return n}return lv[n?lv.indexOf(n):0]}function mv(e){for(let t=lv.indexOf(e)+1,n=lv.length;t=t?n[r]:n[i];e[a]=!0}}function gv(e,t,n,r){let i=e._adapter,a=+i.startOf(t[0].value,r),o=t[t.length-1].value,s,c;for(s=a;s<=o;s=+i.add(s,1,r))c=n[s],c>=0&&(t[c].major=!0);return t}function _v(e,t,n){let r=[],i={},a=t.length,o,s;for(o=0;o+e.value))}initOffsets(e=[]){let t=0,n=0,r,i;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),t=e.length===1?1-r:(this.getDecimalForValue(e[1])-r)/2,i=this.getDecimalForValue(e[e.length-1]),n=e.length===1?i:(i-this.getDecimalForValue(e[e.length-2]))/2);let a=e.length<3?.5:.25;t=zl(t,0,a),n=zl(n,0,a),this._offsets={start:t,end:n,factor:1/(t+1+n)}}_generate(){let e=this._adapter,t=this.min,n=this.max,r=this.options,i=r.time,a=i.unit||fv(i.minUnit,t,n,this._getLabelCapacity(t)),o=qc(r.ticks.stepSize,1),s=a===`week`&&i.isoWeekday,c=Ol(s)||s===!0,l={},u=t,d,f;if(c&&(u=+e.startOf(u,`isoWeek`,s)),u=+e.startOf(u,c?`day`:a),e.diff(n,t,a)>1e5*o)throw Error(t+` and `+n+` are too far apart with stepSize of `+o+` `+a);let p=r.ticks.source===`data`&&this.getDataTimestamps();for(d=u,f=0;d+e)}getLabelForValue(e){let t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}format(e,t){let n=this.options.time.displayFormats,r=this._unit,i=t||n[r];return this._adapter.format(e,i)}_tickFormatFunction(e,t,n,r){let i=this.options,a=i.ticks.callback;if(a)return Xc(a,[e,t,n],this);let o=i.time.displayFormats,s=this._unit,c=this._majorUnit,l=s&&o[s],u=c&&o[c],d=n[t],f=c&&u&&d&&d.major;return this._adapter.format(e,r||(f?u:l))}generateTickLabels(e){let t,n,r;for(t=0,n=e.length;t0?o:1}getDataTimestamps(){let e=this._cache.data||[],t,n;if(e.length)return e;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(t=0,n=r.length;t=e[r].pos&&t<=e[i].pos&&({lo:r,hi:i}=Ul(e,`pos`,t)),{pos:a,time:s}=e[r],{pos:o,time:c}=e[i]):(t>=e[r].time&&t<=e[i].time&&({lo:r,hi:i}=Ul(e,`time`,t)),{time:a,pos:s}=e[r],{time:o,pos:c}=e[i]);let l=o-a;return l?s+(c-s)*(t-a)/l:s}var bv=class extends vv{static id=`timeseries`;static defaults=vv.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=yv(t,this.min),this._tableRange=yv(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){let{min:t,max:n}=this,r=[],i=[],a,o,s,c,l;for(a=0,o=e.length;a=t&&c<=n&&r.push(c);if(r.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(a=0,o=r.length;ae-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;let t=this.getDataTimestamps(),n=this.getLabelTimestamps();return e=t.length&&n.length?this.normalize(t.concat(n)):t.length?t:n,e=this._cache.all=e,e}getDecimalForValue(e){return(yv(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){let t=this._offsets,n=this.getDecimalForPixel(e)/t.factor-t.end;return yv(this._table,n*this._tableRange+this._minPos,!0)}},xv=[fp,$h,O_,Object.freeze({__proto__:null,CategoryScale:N_,LinearScale:L_,LogarithmicScale:W_,RadialLinearScale:sv,TimeScale:vv,TimeSeriesScale:bv})];vh.register(...xv);var Sv=vh,Cv=R(``);function wv(e,t){E(t,!0);let n=ya(t,`class`,3,``),r=ya(t,`ariaLabel`,3,``),i=k(null),a=null;An(()=>{if(Oa.tick,!I(i)||typeof t.build!=`function`)return;let e=t.build();if(!e){a&&=(a.destroy(),null);return}return a&&=(a.destroy(),null),a=new Sv(I(i).getContext(`2d`),e),()=>{a&&=(a.destroy(),null)}});var o=Cv();ga(o,e=>A(i,e),()=>I(i)),F(()=>{U(o,1,Fi(n())),W(o,`aria-label`,r())}),z(e,o),D()}var Tv=R(``),Ev=R(`
        `);function Dv(e,t){E(t,!0);let n=ya(t,`options`,19,()=>[]),r=ya(t,`ariaLabel`,3,``),i=ya(t,`class`,3,``);var a=Ev();H(a,21,n,e=>e.value,(e,n)=>{var r=Tv();let i;var a=M(r,!0);T(r),F(()=>{i=U(r,1,`segmented-btn svelte-92fh5i`,null,i,{active:t.value===I(n).value}),W(r,`aria-pressed`,t.value===I(n).value),B(a,I(n).label)}),L(`click`,r,()=>t.onchange?.(I(n).value)),z(e,r)}),T(a),F(()=>{U(a,1,Fi([`segmented-control`,i()]),`svelte-92fh5i`),W(a,`aria-label`,r())}),z(e,a),D()}Hr([`click`]);function Ov(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function kv(){return{grid:Ov(`--chart-grid`),text:Ov(`--chart-text`),dayMarker:Ov(`--chart-day-marker`),tooltipBg:Ov(`--chart-tooltip-bg`),tooltipBorder:Ov(`--chart-tooltip-border`),tooltipText:Ov(`--chart-tooltip-text`)}}function Av(){return{size:11,family:`'SF Mono', Menlo, Consolas, monospace`}}function jv(e,t){return{backgroundColor:e.tooltipBg,borderColor:e.tooltipBorder,borderWidth:1,titleColor:e.tooltipText,bodyColor:e.tooltipText,callbacks:t}}function Mv(e){if(typeof document>`u`||!document.body)return e;let t=document.createElement(`span`);t.style.display=`none`,t.style.color=e,document.body.appendChild(t);let n=getComputedStyle(t).color;return document.body.removeChild(t),n||e}var Nv=[`#c2845a`,`#7a9e7e`,`#d4a574`,`#b8a98e`,`#8b9e6b`,`#7d8a97`,`#c47a5a`,`#6b8e6b`,`#a09486`,`#9b7ea4`,`#c49a6c`];function Pv(){return[...Nv]}function Fv(e){let t=5381,n=String(e||``);for(let e=0;ers(e)}}var Rv={seconds:{apiName:`second`,windowLabel:`Last 60 seconds`,refreshMs:2e3},minutes:{apiName:`minute`,windowLabel:`Last 60 minutes`,refreshMs:5e3},hours:{apiName:`hour`,windowLabel:`Last 24 hours`,refreshMs:2e4},days:{apiName:`day`,windowLabel:`Last 30 days`,refreshMs:6e4}},zv=[{value:`seconds`,label:`Seconds`},{value:`minutes`,label:`Minutes`},{value:`hours`,label:`Hours`},{value:`days`,label:`Days`}];function Bv(){return{input:0,output:0,prompt:0,local:0}}function Vv(e){return String(e).padStart(2,`0`)}function Hv(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function Uv(e,t){if(!Number.isFinite(t))return``;let n=new Date(t);switch(e){case`seconds`:return Vv(n.getHours())+`:`+Vv(n.getMinutes())+`:`+Vv(n.getSeconds());case`minutes`:return Vv(n.getHours())+`:`+Vv(n.getMinutes());case`hours`:return Vv(n.getHours())+`:00`;default:return Vv(n.getMonth()+1)+`-`+Vv(n.getDate())}}function Wv(e,t){let n=[],r=[],i={input:[],output:[],prompt:[],local:[]},a=Bv();for(let o of e||[]){let e=Date.parse(o&&o.start),s=Hv(o&&o.input_tokens),c=Hv(o&&o.output_tokens),l=Hv(o&&o.prompt_cached_tokens),u=Hv(o&&o.locally_cached_tokens);n.push(Uv(t,e)),r.push(Number.isFinite(e)?e:null),i.input.push(s),i.output.push(c),i.prompt.push(l),i.local.push(u),a.input+=s,a.output+=c,a.prompt+=l,a.local+=u}return{labels:n,stamps:r,cols:i,totals:a}}function Gv(e){let t=e||Bv();return t.input+t.output+t.prompt+t.local>0}function Kv(e,t){return rs(Math.max(0,Math.round(e&&e[t]||0)))}function qv(e){return(Rv[e]||Rv.minutes).windowLabel}function Jv(e,t){return`Live token throughput, `+qv(t).toLowerCase()+`. Input `+Kv(e,`input`)+`, output `+Kv(e,`output`)+`, prompt cached `+Kv(e,`prompt`)+`, locally cached `+Kv(e,`local`)+` tokens.`}function Yv(e,t,n,r){let i=e=>rs(Math.max(0,Math.round(e))),a=n.stamps,o=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderWidth:0,borderRadius:0,categoryPercentage:1,barPercentage:1,stack:`tokens`});return{type:`bar`,plugins:[{id:`liveTokensDayMarks`,afterDatasetsDraw:t=>{if(r===`days`)return;let n=t.getDatasetMeta(0),i=t.chartArea;if(!n||!n.data||!i)return;let o=t.ctx;o.save(),o.font=`10px 'SF Mono', Menlo, Consolas, monospace`;let s=null;for(let t=0;t{if(!e.length)return``;let t=a[e[0].dataIndex];if(!t)return e[0].label;let n=new Date(t);return r===`days`?n.toLocaleDateString():n.toLocaleString()},label:e=>e.dataset.label+`: `+i(e.parsed.y),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+i(t)}})}}}}var Xv=900,Zv=6,Qv=new class{#e=k(`minutes`);get granularity(){return I(this.#e)}set granularity(e){A(this.#e,e,!0)}#t=k(j([]));get buckets(){return I(this.#t)}set buckets(e){A(this.#t,e,!0)}#n=k(!1);get active(){return I(this.#n)}set active(e){A(this.#n,e,!0)}#r=null;#i=null;#a=null;#o=0;#s=null;#c=!1;start(){this.stop(),this.active=!0,this.fetch(),this.#l(),this.#u()}stop(){this.active=!1,this.#r&&=(clearInterval(this.#r),null),this.#i&&=(clearTimeout(this.#i),null),this.#a&&=(clearTimeout(this.#a),null),this.#o=0,this.#s&&=(this.#s.abort(),null),this.buckets=[]}setGranularity(e){!Rv[e]||e===this.granularity||(this.granularity=e,this.buckets=[],this.#l(),this.fetch())}#l(){this.#r&&=(clearInterval(this.#r),null);let e=Rv[this.granularity]||Rv.minutes;this.#r=setInterval(()=>{this.active&&this.fetch()},e.refreshMs)}noteUsageEvent(e){!this.active||e!==`usage.flushed`||(this.#i||=setTimeout(()=>{this.#i=null,this.fetch()},Xv))}async fetch(){if(!this.active||this.#c)return;this.#c=!0;let e=this.granularity;try{let t=await fo(`/admin/usage/throughput?granularity=`+(Rv[e]||Rv.minutes).apiName,{label:`token throughput`});if(t.stale||!t.ok||this.granularity!==e)return;this.buckets=t.data&&Array.isArray(t.data.buckets)?t.data.buckets:[]}catch(e){if(mo(e))return;console.error(`Failed to fetch token throughput:`,e)}finally{this.#c=!1,this.active&&this.granularity!==e&&this.fetch()}}async#u(){await _o.ensureLoaded(),this.active&&_o.liveLogsVisible()&&(typeof ReadableStream>`u`||(this.#s&&this.#s.abort(),this.#s=new AbortController,this.#d(this.#s)))}async#d(e){try{let t=await lo(`/admin/live/logs?types=usage`,{signal:e.signal});if(!t.ok||!t.body||typeof t.body.getReader!=`function`){this.#m();return}this.#o=0,await this.#f(t.body.getReader()),this.#m()}catch(e){if(mo(e))return;console.error(`Live usage stream failed:`,e),this.#m()}}async#f(e){let t=new TextDecoder,n=``;for(;;){let r=await e.read();if(r.done)break;n+=t.decode(r.value,{stream:!0});let i;for(;i=n.match(/\r?\n\r?\n/);){let e=i.index,t=n.slice(0,e);n=n.slice(e+i[0].length),this.#p(t)}}n+=t.decode(),n.trim()&&this.#p(n)}#p(e){let t=String(e||``).split(/\r?\n/),n=[];for(let e of t)e.indexOf(`data:`)===0&&n.push(e.slice(5).trimStart());if(n.length===0)return;let r;try{r=JSON.parse(n.join(` -`))}catch{return}if(!r||typeof r!=`object`)return;let i=String(r.type||``).trim();i.indexOf(`usage.`)===0&&this.noteUsageEvent(i)}#m(){if(!this.active||this.#a)return;let e=Math.min(this.#o+1,Zv);this.#o=e;let t=Math.min(3e4,500*2**(e-1));this.#a=setTimeout(()=>{this.#a=null,this.#u()},t)}},$v=R(`
        `),ey=R(`
        Waiting for live requests…
        `),ty=R(`

        Live Token Throughput

        `);function ny(e,t){E(t,!0);let n=O(()=>Wv(Qv.buckets,Qv.granularity)),r=O(()=>I(n).totals);function i(){return{input:Mv(`var(--token-input)`),output:Mv(`var(--token-output)`),prompt:Mv(`var(--token-prompt)`),local:Mv(`var(--token-local)`)}}let a=[{metric:`input`,label:`Input Tokens`,colorVar:`--token-input`},{metric:`output`,label:`Output Tokens`,colorVar:`--token-output`},{metric:`prompt`,label:`Prompt (Input) Cached`,colorVar:`--token-prompt`},{metric:`local`,label:`Locally Cached`,colorVar:`--token-local`}];var o=ty(),s=M(o),c=M(s),l=P(M(c),2),u=M(l);let d;var f=P(u,2),p=M(f,!0);T(f),T(l),T(c),Dv(P(c,2),{ariaLabel:`Live token throughput granularity`,get options(){return zv},get value(){return Qv.granularity},onchange:e=>Qv.setGranularity(e)}),T(s);var m=P(s,2);H(m,21,()=>a,e=>e.metric,(e,t)=>{var n=$v(),i=M(n),a=P(i,2),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(n),F(e=>{Hi(i,`background: var(${I(t).colorVar??``})`),B(o,I(t).label),B(c,e)},[()=>Kv(I(r),I(t).metric)]),z(e,n)}),T(m);var h=P(m,2),g=M(h);{let e=O(()=>Jv(I(r),Qv.granularity));wv(g,{get ariaLabel(){return I(e)},build:()=>Yv(kv(),i(),I(n),Qv.granularity)})}var _=P(g,2),v=e=>{z(e,ey())},y=O(()=>!Gv(I(r)));V(_,e=>{I(y)&&e(v)}),T(h),T(o),F(e=>{d=U(u,1,`live-dot`,null,d,{"is-streaming":Qv.active}),B(p,e)},[()=>qv(Qv.granularity)]),z(e,o),D()}function ry(e){let t=e||{};if(t.total_tokens!==null&&t.total_tokens!==void 0){let e=Number(t.total_tokens);if(Number.isFinite(e))return e}let n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function iy(e,t){if(!t)return 0;let n=e&&e.summary?e.summary:{},r=Number(n.total_hits||0);return Number.isFinite(r)&&r>0?r:0}function ay(e,t,n){let r=Number(e&&e.total_requests||0);return(Number.isFinite(r)?r:0)+iy(t,n)}function oy(e,t,n){let r=iy(t,n);return r<=0?``:$o(ay(e,t,n)-r)+` to providers + `+$o(r)+` from cache`}function sy(e){let t=e&&e.summary?e.summary:{},n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function cy(e,t,n){let r=e=>{let t=Number(e||0);return Number.isFinite(t)&&t>0?t:0},i=e||{},a=r(i.uncached_input_tokens),o=r(i.cached_input_tokens),s=r(i.cache_write_input_tokens),c=t&&t.summary?t.summary:{},l=n?r(c.total_input_tokens):0;return[{key:`uncached`,label:`Regular`,tokens:a+s,colorVar:`--cache-meter-uncached`,note:s>0?`Includes `+$o(s)+` cache-write tokens`:``},{key:`prompt`,label:`Prompt cached`,tokens:o,colorVar:`--cache-meter-prompt`,note:`Provider prompt-cache reads`},{key:`local`,label:`Locally cached`,tokens:l,colorVar:`--cache-meter-local`,note:`Served from GoModel response cache`}]}function ly(e,t,n){return cy(e,t,n).reduce((e,t)=>e+t.tokens,0)}function uy(e,t,n){return ly(e,t,n)>0}function dy(e,t,n){let r=cy(e,t,n),i=r.reduce((e,t)=>e+t.tokens,0);if(i<=0)return r.map(e=>Object.assign({},e,{pct:0}));let a=r.map(e=>{let t=e.tokens/i*100,n=Math.floor(t);return Object.assign({},e,{pct:n,remainder:t-n})}),o=100-a.reduce((e,t)=>e+t.pct,0);return a.map((e,t)=>({index:t,remainder:e.remainder,tokens:e.tokens})).filter(e=>e.tokens>0).sort((e,t)=>t.remainder-e.remainder).forEach(e=>{o>0&&(a[e.index].pct+=1,--o)}),a}function fy(e,t,n){return dy(e,t,n).filter(e=>e.tokens>0)}function py(e){let t=[e.label+`: `+$o(e.tokens)+` input tokens (`+e.pct+`%)`];return e.note&&t.push(e.note),t.join(` -`)}function my(e){let t=(e||[]).map(e=>e.label+` `+e.pct+`%`);return`Cache breakdown of input tokens — `+(t.length?t.join(`, `):`no data`)}function hy(e){return e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`)}function gy(e,t,n,r){if(t!==`daily`||!n||!r)return e;let i={};(e||[]).forEach(e=>{i[e.date]=e});let a=[];for(let e=new Date(n);e<=r;e.setUTCDate(e.getUTCDate()+1)){let t=hy(e);a.push(i[t]||{date:t,input_tokens:0,output_tokens:0,total_tokens:0,requests:0,input_cost:null,output_cost:null,total_cost:null})}return a}function _y(e,t){let n=e=>Number(e)||0,r=e.map(e=>e.date),i=e.map(e=>n(e.uncached_input_tokens)+n(e.cache_write_input_tokens)+n(e.cached_input_tokens)>0?n(e.uncached_input_tokens)+n(e.cache_write_input_tokens):n(e.input_tokens)),a=e.map(e=>n(e.output_tokens)),o=e.map(e=>n(e.cached_input_tokens)),s={};return(t||[]).forEach(e=>{s[e.date]=e}),{labels:r,inputPaid:i,output:a,prompt:o,local:r.map(e=>{let t=s[e];return t?n(t.input_tokens)+n(t.output_tokens):0})}}function vy(e){let t=e||{},n=Math.max(0,Number(t.uncached_input_tokens)||0),r=Math.max(0,Number(t.cached_input_tokens)||0),i=Math.max(0,Number(t.cache_write_input_tokens)||0),a=n+r+i;return a>0?r/a*100:0}function yy(e){let t=e||{};return(Number(t.uncached_input_tokens)||0)+(Number(t.cached_input_tokens)||0)+(Number(t.cache_write_input_tokens)||0)>0}function by(e){return yy(e)?Math.round(vy(e))+`%`:`—`}function xy(e,t,n={}){let r=!!n.cacheEnabled,i=n.resolve||(e=>e),a=(e,t)=>i(`color-mix(in srgb, `+e+` `+t+`%, transparent)`),o=(e,t,n,r)=>Object.assign({label:e,data:t,borderColor:n,backgroundColor:n,fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4},r||{}),s=[o(`Input Tokens`,t.inputPaid,i(`var(--token-input)`),{fill:`origin`}),o(`Output Tokens`,t.output,i(`var(--token-output)`),{fill:`-1`}),o(`Prompt (Input) Cached`,t.prompt,i(`var(--token-prompt)`),{fill:`-1`,borderDash:[6,4]})];return r&&s.push(o(`Locally Cached`,t.local,a(`var(--info)`,35),{fill:`-1`,borderDash:[2,3]})),{type:`line`,data:{labels:t.labels,datasets:s},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:jv(e,{label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Av(),maxRotation:0,autoSkip:!0,maxTicksLimit:10}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:Lv(e)}}}}}function Sy(e,t,n){let r=Math.max(0,Math.min(100,e));return{type:`doughnut`,data:{datasets:[{data:[r,100-r],backgroundColor:[t,n],borderWidth:0,spacing:0}]},options:{rotation:-90,circumference:180,cutout:`84%`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:1},events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}}}}}var Cy=`gomodel_provider_status_details_expanded`,wy=`gomodel_provider_card_expanded_overrides`,Ty=3e3,Ey=`https://gomodel.enterpilot.io/docs/providers/`,Dy={anthropic:`anthropic`,azure:`azure`,bailian:`bailian`,bedrock:`bedrock`,"bedrock-mantle":`bedrock-mantle`,cohere:`cohere`,deepseek:`deepseek`,gemini:`gemini`,opencode_go:`opencode-go`,oracle:`oracle`,vertex:`vertex`,vllm:`vllm`,xiaomi:`xiaomi`};function Oy(){return{summary:{total:0,healthy:0,degraded:0,unhealthy:0,overall_status:`degraded`},providers:[]}}function ky(e){let t={detailsExpanded:!1,cardOverrides:{}};try{if(e){let n=e.getItem(Cy);n===`true`||n===`false`?t.detailsExpanded=n===`true`:e.setItem(Cy,`false`);let r=JSON.parse(e.getItem(wy)||`{}`);r&&typeof r==`object`&&!Array.isArray(r)&&(t.cardOverrides=r)}}catch{}return t}function Ay(e,t){if(e)try{e.setItem(Cy,t?`true`:`false`)}catch{}}function jy(e,t){if(e)try{e.setItem(wy,JSON.stringify(t))}catch{}}function My(e,t,n){let r=n&&n.name?String(n.name):``;return r&&Object.prototype.hasOwnProperty.call(e,r)?e[r]===!0:t}function Ny(e){return`is-`+(String(e&&e.overall_status||`degraded`).trim()||`degraded`)}function Py(e){return`is-`+(String(e||`degraded`).trim()||`degraded`)}function Fy(e){let t=e||{};return String(t.healthy||0)+`/`+String(t.total||0)}function Iy(e){let t=e||{},n=Number(t.total||0),r=Number(t.healthy||0);return n>0&&rString(e&&e.status_label||``).trim().toLowerCase()===`starting`)}function zy(e){if(!e||!e.runtime)return``;let t=e.runtime.last_model_fetch_at||``,n=e.runtime.last_availability_check_at||``;return t?n&&Date.parse(n)>Date.parse(t)?n:t:n}function By(e,t){let n=zy(e);if(!n||typeof t!=`function`)return`-`;let r=t(n);if(!r||r===`-`)return`-`;let i=String(r).split(` `);return i.length>1?i.slice(1).join(` `):r}function Vy(e,t){let n=zy(e);return n?typeof t==`function`?t(n):String(n):``}function Hy(e){if(!e)return``;let t=String(e.name||``).trim(),n=String(e.type||e.config&&e.config.type||``).trim();return!n||n===t?``:n}function Uy(e){let t=String(e&&(e.type||e.config&&e.config.type)||``).trim().toLowerCase(),n=t?Dy[t]:``;return n?Ey+n+`?utm_source=gomodel_dashboard`:``}function Wy(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.retry:null;return t?String(t.max_retries)+` retries, `+t.initial_backoff+` initial, `+t.max_backoff+` max, factor `+t.backoff_factor+`, jitter `+t.jitter_factor:`-`}function Gy(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.circuit_breaker:null;return t?String(t.failure_threshold)+` fail, `+String(t.success_threshold)+` success, `+t.timeout+` timeout`:`-`}function Ky(e){let t=e&&e.config&&Array.isArray(e.config.models)?e.config.models.filter(Boolean):[];return t.length===0?`Automatic`:t.join(`, `)}function qy(e){if(!e)return``;let t=[];return e.status_reason&&t.push(String(e.status_reason)),e.last_error&&t.push(`Last error: `+String(e.last_error)),t.join(` - -`)}function Jy(e){let t=e&&e.request_health;return t&&typeof t==`object`?t:null}function Yy(e){let t=Jy(e);return t?String(t.circuit_state||``).trim():``}function Xy(e){let t=Yy(e);return t?t.charAt(0).toUpperCase()+t.slice(1):``}function Zy(e){let t=Yy(e);return t===`open`?`is-unhealthy`:t===`half-open`?`is-degraded`:`is-healthy`}function Qy(e){let t=Jy(e);if(!t)return``;let n=Number(t.requests||0),r=Number(t.errors||0),i=Math.round(Number(t.window_seconds||0)/60),a=i>0?`last `+i+` min`:`recent`;return String(n)+` request`+(n===1?``:`s`)+` · `+String(r)+` error`+(r===1?``:`s`)+` (`+a+`)`}function $y(e){let t=Jy(e);return t&&Array.isArray(t.models)?t.models:[]}function eb(e){return e?String(Number(e.errors||0))+`/`+String(Number(e.requests||0))+` failed`:``}function tb(e){let t=e&&e.last_error;return!t||!t.message?``:(t.status_code?`HTTP `+String(t.status_code)+`: `:``)+t.message}function nb(){return{name:``,slug:``,url:``,transport:`http`,description:``,enabled:!0,headers:[],allowed_tools:``,disallowed_tools:``,user_paths:``,tool_timeout_seconds:``}}function rb(){return{server:``,status:``,instructions:``,tools:[],prompts:[],resources:[],templates:[]}}function ib(e){return String(e&&(e.slug||e.name)||``).trim()}function ab(e){return String(e&&e.status||``).trim()||`connecting`}function ob(e){switch(ab(e)){case`connected`:return`status-success`;case`degraded`:return String(e&&e.last_error||``).trim()?`status-error`:`status-warning`;case`connecting`:return`status-neutral`;default:return`status-unknown`}}function sb(e,t){let n=ab(e),r=String(e&&e.last_error||``).trim();return r&&n!==`connected`?r:n===`connected`&&e&&e.connected_at?`Connected since `+(typeof t==`function`?t:String)(e.connected_at):``}function cb(e){return String(e&&e.transport||``)===`stdio`?`local command`:String(e&&e.url||``).trim()||`—`}function lb(e){let t=Number(e&&e.prompt_count||0),n=Number(e&&e.resource_count||0);return t+` prompts · `+n+` resources`}function ub(e){let t=String(e||``).normalize(`NFKD`).toLowerCase(),n=t.replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,64).replace(/-+$/g,``);if(n)return n;let r=2166136261;for(let e of t)r=Math.imul((r^e.codePointAt(0))>>>0,16777619)>>>0;return`mcp-`+r.toString(16).padStart(8,`0`)}function db(e){return String(e||``).split(` -`).map(e=>e.trim()).filter(e=>e)}function fb(e){return!e||typeof e!=`object`||Array.isArray(e)?[]:Object.keys(e).sort().map(t=>({name:t,value:String(e[t]||``)}))}function pb(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=String(e&&e.name||``).trim();n&&(t[n]=String(e&&e.value||``))}),t}function mb(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.slug,e.url,e.transport,e.description,e.status].some(e=>String(e||``).toLowerCase().includes(r)))}function hb(e){return{name:String(e.name||``).trim(),slug:ib(e),url:String(e.url||``).trim(),transport:e.transport===`sse`?`sse`:`http`,description:String(e.description||``).trim(),enabled:e.enabled!==!1,headers:fb(e.headers),allowed_tools:(Array.isArray(e.allowed_tools)?e.allowed_tools:[]).join(`, `),disallowed_tools:(Array.isArray(e.disallowed_tools)?e.disallowed_tools:[]).join(`, `),user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` -`),tool_timeout_seconds:e.tool_timeout_seconds?String(e.tool_timeout_seconds):``}}function gb(e,t,n){let r=String(e.name||``).trim(),i=String(e.slug||ub(r)).trim().toLowerCase(),a=String(e.url||``).trim(),o=e.transport===`sse`?`sse`:`http`;if(!r)return{error:`Name is required.`};if(!/^[a-z0-9][a-z0-9_-]{0,63}$/.test(i))return{error:`Slug must use 1–64 lowercase ASCII letters, numbers, hyphens, or underscores.`};if(t===`create`&&(n||[]).some(e=>ib(e)===i))return{error:`Slug "`+i+`" is already in use.`};if(!a)return{error:`URL is required.`};let s,c=String(e.tool_timeout_seconds||``).trim();if(c!==``){let e=Number(c);if(!Number.isSafeInteger(e)||e<0)return{error:`Tool timeout must be a non-negative whole number of seconds.`};s=e}return{payload:{name:r,slug:i,url:a,transport:o,headers:pb(e.headers),description:String(e.description||``).trim(),enabled:!!e.enabled,allowed_tools:Zo(e.allowed_tools),disallowed_tools:Zo(e.disallowed_tools),user_paths:db(e.user_paths),tool_timeout_seconds:s}}}function _b(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=e=>(Array.isArray(e)?e:[]).filter(e=>e&&typeof e==`object`);return{server:String(n.server||e||``).trim(),status:String(n.status||``).trim(),instructions:String(n.instructions||``).trim(),tools:r(n.tools),prompts:r(n.prompts),resources:r(n.resources),templates:r(n.templates)}}function vb(e,t){return String(e&&e.server||``)+`_`+String(t||``)}function yb(e){let t=e||rb(),n=(e,t)=>{let n=String(e||``).trim(),r=String(t||``).trim();return n&&r?n+` — `+r:r||n},r=e=>n=>({key:e+`:`+String(n.name||``),name:String(n.name||``),aggregated:vb(t,n.name),description:String(n.description||``).trim()});return[{key:`tools`,title:`Tools`,items:(t.tools||[]).map(r(`tool`))},{key:`prompts`,title:`Prompts`,items:(t.prompts||[]).map(r(`prompt`))},{key:`resources`,title:`Resources`,items:(t.resources||[]).map(e=>({key:`resource:`+String(e.uri||``),name:String(e.uri||``),aggregated:``,description:n(e.name,e.description)}))},{key:`templates`,title:`Resource templates`,items:(t.templates||[]).map(e=>({key:`template:`+String(e.uri_template||``),name:String(e.uri_template||``),aggregated:``,description:n(e.name,e.description)}))}].filter(e=>e.items.length>0)}function bb(e){return yb(e).length===0}function xb(e){return(e||[]).length}function Sb(e){return(e||[]).filter(e=>ab(e)===`connected`).length}function Cb(e){return(e||[]).filter(e=>e&&e.enabled!==!1&&ab(e)===`degraded`).length}function wb(e,t){return!!e&&xb(t)>0}function Tb(e){return String(Sb(e))+`/`+String(xb(e))}function Eb(e){return Cb(e)>0?`is-degraded`:`is-healthy`}function Db(e){let t=Cb(e);if(t>0)return String(t)+` server`+(t===1?``:`s`)+` need`+(t===1?`s`:``)+` attention`;let n=xb(e),r=Sb(e);return n>0&&r===n?`All MCP servers connected`:String(r)+` of `+String(n)+` server`+(n===1?``:`s`)+` connected`}function Ob(){return{interval:`day`,buckets:[],summary:{requests:0},provider_latency:[]}}function kb(e){let t=e&&typeof e==`object`?e:{};return{interval:t.interval===`hour`?`hour`:`day`,buckets:Array.isArray(t.buckets)?t.buckets:[],summary:t.summary&&typeof t.summary==`object`?t.summary:{requests:0},provider_latency:Array.isArray(t.provider_latency)?t.provider_latency:[]}}function Ab(e){return Number(e&&e.summary&&e.summary.requests||0)>0}function jb(e){return(e&&Array.isArray(e.provider_latency)?e.provider_latency:[]).length>0}function Mb(e){let t=e&&e.summary?e.summary.success_rate:null;return t==null?`—`:(Math.round(Number(t)*1e3)/10).toFixed(1)+`%`}function Nb(e,t){return Number(e&&e.summary&&e.summary[t]||0)}function Pb(e){let t=Number(e);return Number.isFinite(t)?t>=6e4?(t/6e4).toFixed(1)+` min`:t>=1e3?(t/1e3).toFixed(2)+` s`:Math.round(t)+` ms`:`-`}function Fb(e){let t=e&&e.summary?e.summary.avg_duration_ms:null;return t==null?`—`:Pb(Number(t))}function Ib(e,t){try{let n={};return new Intl.DateTimeFormat(`en-US`,{timeZone:t,year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,hourCycle:`h23`}).formatToParts(e).forEach(e=>{n[e.type]=e.value}),{year:n.year,month:n.month,day:n.day,hour:Number(n.hour)}}catch{return{year:String(e.getFullYear()),month:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`][e.getMonth()],day:String(e.getDate()),hour:e.getHours()}}}function Lb(e,t,n){let r=new Date(e.start);if(Number.isNaN(r.getTime()))return String(e.start||``);let i=Ib(r,n),a=i.month+` `+i.day;return t!==`hour`||i.hour===0?a:String(i.hour).padStart(2,`0`)+`:00`}function Rb(e,t,n,r){let i=new Date(e.start);if(Number.isNaN(i.getTime()))return String(e.start||``);if(t===`hour`)return r(e.start);let a=Ib(i,n);return a.month+` `+a.day+`, `+a.year}function zb(e){return{ok:e(`var(--success)`),clientError:e(`var(--warning)`),serverError:e(`var(--danger)`),other:e(`color-mix(in srgb, var(--text-muted) 55%, transparent)`)}}function Bb(e,t,n={}){let r=n.interval===`hour`?`hour`:`day`,i=n.zone,a=n.resolve||(e=>e),o=n.formatTimestamp||(e=>String(e)),s=t.map(e=>Lb(e,r,i)),c=zb(a),l=a(`var(--bg-surface)`),u=e=>Number(e)||0,d=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:l,borderWidth:1,borderSkipped:!1,borderRadius:2,maxBarThickness:28}),f=[d(`2xx`,t.map(e=>u(e.status_2xx)),c.ok),d(`4xx`,t.map(e=>u(e.status_4xx)),c.clientError),d(`5xx`,t.map(e=>u(e.status_5xx)),c.serverError)];return t.some(e=>u(e.status_other)>0)&&f.push(d(`Other`,t.map(e=>u(e.status_other)),c.other)),{type:`bar`,data:{labels:s,datasets:f},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:jv(e,{title:e=>e.length?Rb(t[e[0].dataIndex],r,i,o):``,label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:Av(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Av(),precision:0,callback:e=>rs(e)}}}}}}function Vb(e=Pv()){let t={};return function(n){return n in t||(t[n]=e[Object.keys(t).length%e.length]),t[n]}}function Hb(e,t,n,r={}){let i=r.interval===`hour`?`hour`:`day`,a=r.zone,o=r.formatTimestamp||(e=>String(e)),s=r.providerColor||Vb();return{type:`line`,data:{labels:t.map(e=>Lb(e,i,a)),datasets:n.map(e=>({label:e.provider,data:(e.avg_duration_ms||[]).map(e=>e==null?null:Number(e)),borderColor:s(e.provider),backgroundColor:s(e.provider),fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4,spanGaps:i===`hour`&&2}))},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:jv(e,{title:e=>e.length?Rb(t[e[0].dataIndex],i,a,o):``,label:e=>{let t=(n[e.datasetIndex]&&n[e.datasetIndex].requests||[])[e.dataIndex],r=Number(t)||0;return e.dataset.label+`: `+Pb(e.parsed.y)+(r>0?` (`+r.toLocaleString()+` req)`:``)}})},scales:{x:{grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Av(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Av(),callback:e=>Pb(e)}}}}}}var Ub=class{#e=k(j(Oy()));get status(){return I(this.#e)}set status(e){A(this.#e,e,!0)}#t=k(!1);get loading(){return I(this.#t)}set loading(e){A(this.#t,e,!0)}#n=k(!1);get loadedOnce(){return I(this.#n)}set loadedOnce(e){A(this.#n,e,!0)}#r=k(!1);get detailsExpanded(){return I(this.#r)}set detailsExpanded(e){A(this.#r,e,!0)}#i=k(j({}));get cardOverrides(){return I(this.#i)}set cardOverrides(e){A(this.#i,e,!0)}#a=null;#o=null;#s=!1;initPreferences(){if(this.#s)return;this.#s=!0;let e=ky(Ta());this.detailsExpanded=e.detailsExpanded,this.cardOverrides=e.cardOverrides}cardExpanded(e){return My(this.cardOverrides,this.detailsExpanded,e)}toggleCard(e){let t=e&&e.name?String(e.name):``;if(!t)return;let n={...this.cardOverrides};n[t]=!this.cardExpanded(e),this.cardOverrides=n,jy(Ta(),this.cardOverrides)}toggleDetails(){this.detailsExpanded=!this.detailsExpanded,this.cardOverrides={},Ay(Ta(),this.detailsExpanded),jy(Ta(),this.cardOverrides)}detailsToggleLabel(){return this.detailsExpanded?`Show Details`:`Hide Details`}async fetch(){this.initPreferences(),this.#a&&this.#a.abort();let e=new AbortController;this.#a=e,this.loading=!0;try{let t=await fo(`/admin/providers/status`,{label:`provider status`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.status=Oy(),this.#l();return}let n=t.data&&typeof t.data==`object`?t.data:Oy();n.summary||=Oy().summary,Array.isArray(n.providers)||(n.providers=[]),this.status=n,this.#c()}catch(e){if(mo(e))return;console.error(`Failed to fetch provider status:`,e),this.status=Oy(),this.#l()}finally{this.#a===e&&(this.#a=null,this.loading=!1,this.loadedOnce=!0)}}#c(){this.#l(),Ry(this.status.providers)&&(this.#o=setTimeout(()=>{this.#o=null,this.fetch()},Ty))}#l(){this.#o&&=(clearTimeout(this.#o),null)}stopPolling(){this.#l()}},Wb=class{#e=k(j(Ob()));get stats(){return I(this.#e)}set stats(e){A(this.#e,e,!0)}#t=k(!1);get loading(){return I(this.#t)}set loading(e){A(this.#t,e,!0)}#n=0;async fetch(){let e=++this.#n;this.loading=!0;try{let t=await fo(`/admin/audit/stats?`+Ts.queryStr(),{label:`audit stats`});if(t.stale||e!==this.#n)return;if(!t.ok){this.stats=Ob();return}this.stats=kb(t.data)}catch(t){if(console.error(`Failed to fetch audit stats:`,t),e!==this.#n)return;this.stats=Ob()}finally{e===this.#n&&(this.loading=!1)}}},Gb=class{#e=k(j([]));get servers(){return I(this.#e)}set servers(e){A(this.#e,e,!0)}#t=k(!1);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}async fetch(){if(await _o.ensureLoaded(),!_o.mcpVisible()){this.available=!1,this.servers=[];return}this.loading=!0;try{let e=await fo(`/admin/mcp-servers`,{label:`mcp servers`});if(e.stale)return;if(e.status===503||e.status===404){this.available=!1,this.servers=[];return}if(this.available=!0,!e.ok){this.servers=[];return}this.servers=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch MCP servers:`,e),this.servers=[]}finally{this.loading=!1}}},Kb=class{#e=k(j([]));get data(){return I(this.#e)}set data(e){A(this.#e,e,!0)}#t=k(`tokens`);get mode(){return I(this.#t)}set mode(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=null;async fetch(){this.#r&&this.#r.abort();let e=new AbortController;this.#r=e,this.loading=!0;try{let t=await fo(`/admin/usage/daily?days=365&interval=daily`,{label:`calendar`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.data=[];return}this.data=Array.isArray(t.data)?t.data:[]}catch(e){if(mo(e))return;console.error(`Failed to fetch calendar data:`,e),this.data=[]}finally{this.#r===e&&(this.#r=null,this.loading=!1)}}},qb=new Ub,Jb=new Wb,Yb=new Gb,Xb=new Kb,Zb=(e,t=f,n=f,r=f,i=f)=>{var a=$b(),o=M(a),s=M(o,!0);T(o);var c=P(o,2),l=M(c),u=M(l),d=M(u,!0);T(u),Ue(),T(l);var p=P(l,4),m=M(p),h=M(m,!0);T(m),Ue(),T(p);var g=P(p,4),_=M(g,!0);T(g),T(c),T(a),F((e,n,r,i,a,o)=>{B(s,t()),W(l,`title`,e),B(d,n),W(p,`title`,r),B(h,i),W(g,`title`,a),B(_,o)},[()=>is(`Input tokens`,n()),()=>rs(n()),()=>is(`Output tokens`,r()),()=>rs(r()),()=>is(`Total tokens`,i()),()=>rs(i())]),z(e,a)},Qb=(e,t=f,n=f,r=f,i=f,a=f,o=f)=>{var s=nx(),c=M(s),l=M(c,!0);T(c);var u=P(c,2),d=M(u,!0);T(u);var p=P(u,2),m=e=>{var t=ex(),n=M(t,!0);T(t),F(()=>{W(t,`aria-label`,o().title),W(t,`title`,o().title),B(n,a())}),L(`click`,t,function(...e){o().onclick?.apply(this,e)}),z(e,t)},h=e=>{var t=tx(),n=M(t,!0);T(t),F(()=>B(n,a())),z(e,t)};V(p,e=>{o()?e(m):e(h,-1)}),T(s),F(()=>{U(s,1,`card provider-status-flag ${t()??``} ${n()??``}`,`svelte-6tr9cf`),B(l,r()),B(d,i())}),z(e,s)},$b=R(`
        i + o =
        `),ex=R(``),tx=R(` `),nx=R(`
        `),rx=R(`
        Cache Hits
        `),ix=R(`
        Total Requests
        Estimated Cost
        Prompt Cache Rate
        `);function ax(e,t){E(t,!0);let n=O(()=>js.summary),r=O(()=>js.cacheOverview),i=O(()=>js.cacheAnalyticsEnabled()),a=O(()=>qb.status.summary);function o(){let e=document.getElementById(`provider-status-section`);e&&(e.scrollIntoView({behavior:`smooth`,block:`start`}),e.focus({preventScroll:!0}))}var s=ix(),c=M(s);{let e=O(()=>ry(I(n)));Zb(c,()=>`Tokens`,()=>I(n).total_input_tokens,()=>I(n).total_output_tokens,()=>I(e))}var l=P(c,2),u=P(M(l),2),d=M(u,!0);T(u),T(l);var f=P(l,2),p=e=>{var t=rx(),n=P(M(t),2),i=M(n,!0);T(n),T(t),F(e=>B(i,e),[()=>$o(I(r).summary.total_hits)]),z(e,t)};V(f,e=>{I(i)&&e(p)});var m=P(f,2),h=P(M(m),2),g=M(h,!0);T(h),T(m);var _=P(m,2),v=e=>{{let t=O(()=>sy(I(r)));Zb(e,()=>`Local Cache`,()=>I(r).summary.total_input_tokens,()=>I(r).summary.total_output_tokens,()=>I(t))}};V(_,e=>{I(i)&&e(v)});var y=P(_,2),b=P(M(y),2),x=M(b);wv(x,{build:()=>Sy(vy(I(n)),Mv(`var(--token-prompt)`),Mv(`var(--bg-surface-hover)`))});var S=P(x,2),C=M(S,!0);T(S),T(b),T(y);var w=P(y,2),ee=e=>{{let t=O(()=>Ny(I(a))),n=O(()=>Fy(I(a))),r=O(()=>Ly(I(a))),i=O(()=>Iy(I(a))?{title:`View providers overview`,onclick:o}:null);Qb(e,()=>`provider-status-overview-card`,()=>I(t),()=>`Provider Status`,()=>I(n),()=>I(r),()=>I(i))}};V(w,e=>{I(a).total>0&&e(ee)});var te=P(w,2),ne=e=>{{let t=O(()=>Eb(Yb.servers)),n=O(()=>Tb(Yb.servers)),r=O(()=>Db(Yb.servers));Qb(e,()=>`mcp-servers-flag`,()=>I(t),()=>`MCP Servers`,()=>I(n),()=>I(r),()=>({title:`View MCP servers`,onclick:()=>Ha.navigate(`mcp-servers`)}))}},re=O(()=>wb(Yb.available,Yb.servers));V(te,e=>{I(re)&&e(ne)}),T(s),F((e,t,n,r,i)=>{W(u,`title`,e),B(d,t),B(g,n),W(b,`aria-label`,r),B(C,i)},[()=>oy(I(n),I(r),I(i)),()=>$o(ay(I(n),I(r),I(i))),()=>es(I(n).total_cost),()=>`Prompt cache rate `+by(I(n)),()=>by(I(n))]),z(e,s),D()}Hr([`click`]);var ox=R(` `),sx=R(`
        `),cx=R(`No usage in the selected period yet`),lx=R(`
        `),ux=R(`

        Tokens

        Share of input tokens over the selected period
        `);function dx(e,t){E(t,!0);let n=O(()=>js.cacheAnalyticsEnabled()),r=O(()=>dy(js.summary,js.cacheOverview,I(n))),i=O(()=>fy(js.summary,js.cacheOverview,I(n))),a=O(()=>uy(js.summary,js.cacheOverview,I(n)));var o=ux(),s=P(M(o),2);let c;var l=M(s);H(l,17,()=>I(i),e=>e.key,(e,t)=>{var n=sx(),r=M(n),i=e=>{var n=ox(),r=M(n);T(n),F(()=>B(r,`${I(t).pct??``}%`)),z(e,n)};V(r,e=>{I(t).pct>=8&&e(i)}),T(n),F(e=>{Hi(n,`width: ${I(t).pct??``}%; background: var(${I(t).colorVar??``})`),W(n,`title`,e)},[()=>py(I(t))]),z(e,n)});var u=P(l,2),d=e=>{z(e,cx())};V(u,e=>{I(a)||e(d)}),T(s);var f=P(s,2);H(f,21,()=>I(r),e=>e.key,(e,t)=>{var n=lx(),r=M(n),i=P(r,2),a=M(i,!0);T(i);var o=P(i,2),s=M(o);T(o);var c=P(o,2),l=M(c,!0);T(c),T(n),F((e,i)=>{W(n,`title`,e),Hi(r,`background: var(${I(t).colorVar??``})`),B(a,I(t).label),B(s,`${I(t).pct??``}%`),B(l,i)},[()=>py(I(t)),()=>$o(I(t).tokens)]),z(e,n)}),T(f),T(o),F(e=>{c=U(s,1,`cache-meter-bar svelte-1yzecxj`,null,c,{"is-empty":!I(a)}),W(s,`aria-label`,e)},[()=>my(I(i))]),z(e,o),D()}var fx=R(``);function px(e,t){let n=ya(t,`size`,3,16),r=ya(t,`label`,3,`Loading`),i=ya(t,`class`,3,``);var a=fx();F(()=>{U(a,1,Fi([`spinner`,i()]),`svelte-b54l9o`),Hi(a,`--spinner-size: ${n()??``}px`),W(a,`aria-label`,r())}),z(e,a)}var mx=Xr(` `),hx=Xr(``);function gx(e,t){let n=ya(t,`label`,3,`No data`);var r=hx(),i=P(M(r),9),a=e=>{var t=mx(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)};V(i,e=>{n()&&e(a)}),T(r),F(()=>{W(r,`role`,n()?`img`:void 0),W(r,`aria-label`,n()||void 0),W(r,`aria-hidden`,n()?void 0:`true`)}),z(e,r)}var _x=R(`
        `),vx=R(`

        `);function yx(e,t){E(t,!0);let n=[`daily`,`weekly`,`monthly`,`yearly`];function r(e){Ts.interval=e,t.onintervalchange?.()}function i(){let e=js.daily;if(e.length===0)return null;let t=Ts.rangeStart(),n=Ts.rangeEnd(),r=_y(gy(e,Ts.interval,t,n),gy(Array.isArray(js.cacheOverview.daily)?js.cacheOverview.daily:[],Ts.interval,t,n));return xy(kv(),r,{cacheEnabled:js.cacheAnalyticsEnabled(),resolve:Mv})}var a=vx(),o=M(a),s=M(o),c=M(s,!0);T(s);var l=P(s,2);{let e=O(()=>n.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)})));Dv(l,{ariaLabel:`Usage chart interval`,get options(){return I(e)},get value(){return Ts.interval},onchange:r})}T(o);var u=P(o,2),d=M(u);wv(d,{build:i});var f=P(d,2),p=e=>{var t=_x();px(M(t),{size:24,label:`Loading usage`}),T(t),z(e,t)},m=e=>{var t=_x();gx(M(t),{}),T(t),z(e,t)};V(f,e=>{js.daily.length===0&&js.loading?e(p):js.daily.length===0&&!K.authError&&e(m,1)}),T(u),T(a),F(e=>B(c,e),[()=>Ts.chartTitle()]),z(e,a),D()}var bx=10,xx=.7;function Sx(e,t){if(e<=0||t<=0)return 0;let n=(e/t)**+xx,r=Math.ceil(n*bx);return r<1?1:r>bx?bx:r}function Cx(){let e=[];for(let t=0;t<=bx;t++)e.push(t);return e}function wx(e,t,n){let r={};(e||[]).forEach(e=>{r[e.date]=e});let i=Ka(Ja(n,-364)),a=i.getUTCDay();i.setUTCDate(i.getUTCDate()-a);let o=[];for(let e=new Date(i);qa(e)<=n;e.setUTCDate(e.getUTCDate()+1)){let n=qa(e),i=r[n],a=0;i&&(a=t===`costs`?i.total_cost==null?0:i.total_cost:i.total_tokens||0),o.push({dateStr:n,value:a,level:0,empty:!1})}let s=0;for(let e=0;es&&(s=o[e].value);for(let e=0;e0){for(;l.length<7;)l.push({dateStr:``,value:0,level:0,empty:!0});c.push(l)}return c}function Tx(e){let t=Ka(Ja(e,-364)),n=t.getUTCDay();t.setUTCDate(t.getUTCDate()-n);let r=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],i=[],a={},o=0;for(let n=new Date(t);qa(n)<=e;n.setUTCDate(n.getUTCDate()+7),o++){let t=null;if(o===0)t=new Date(n);else for(let r=0;r<7;r++){let i=new Date(n);if(i.setUTCDate(n.getUTCDate()+r),qa(i)>e)break;if(i.getUTCDate()===1){t=i;break}}if(!t)continue;let s=t.getUTCFullYear()+`-`+t.getUTCMonth();a[s]||(i.push({label:r[t.getUTCMonth()],col:o,key:s}),a[s]=!0)}for(let e=0;e `),kx=R(`
        `),Ax=R(`
        `),jx=R(`
        `),Mx=R(`
        `),Nx=R(`

        Activity

        Mon Wed Fri
        `,1);function Px(e,t){E(t,!0);let n=k(j({show:!1,x:0,y:0,text:``})),r=O(()=>ao.currentDateKey()),i=O(()=>wx(Xb.data,Xb.mode,I(r))),a=O(()=>Tx(I(r)));function o(e,t){t.empty||A(n,{show:!0,x:e.clientX,y:e.clientY,text:Dx(t,Xb.mode)},!0)}function s(){A(n,{show:!1,x:0,y:0,text:``},!0)}var c=Nx(),l=N(c),u=M(l),d=P(M(u),2),f=e=>{px(e,{size:14,label:`Loading activity`})};V(d,e=>{Xb.loading&&Xb.data.length===0&&e(f)}),Dv(P(d,2),{ariaLabel:`Activity calendar mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return Xb.mode},onchange:e=>Xb.mode=e}),T(u);var p=P(u,2),m=P(M(p),2),h=M(m);H(h,21,()=>I(a),e=>e.key,(e,t)=>{var n=Ox(),r=M(n,!0);T(n),F(()=>{Hi(n,`grid-column: ${I(t).col+1} / span ${I(t).span??``}`),B(r,I(t).label)}),z(e,n)}),T(h);var g=P(h,2);H(g,21,()=>I(i),oi,(e,t,n)=>{var r=Ax();H(r,23,()=>I(t),(e,t)=>n+`-`+t,(e,t)=>{var n=kx();F(()=>U(n,1,Fi([`contribution-calendar-cell`,I(t).empty?`empty`:`level-${I(t).level}`]),`svelte-3hfxuq`)),Vr(`mouseenter`,n,e=>o(e,I(t))),Vr(`mouseleave`,n,s),z(e,n)}),T(r),z(e,r)}),T(g),T(m),T(p);var _=P(p,2),v=M(_),y=M(v),b=M(y,!0);T(y),T(v);var x=P(v,2);H(P(M(x),2),16,Cx,e=>e,(e,t)=>{var n=jx();F(()=>U(n,1,`contribution-calendar-cell level-${t??``}`,`svelte-3hfxuq`)),z(e,n)}),Ue(2),T(x),T(_),T(l);var S=P(l,2),C=e=>{var t=Mx(),r=M(t,!0);T(t),F(()=>{Hi(t,`left: ${I(n).x??``}px; top: ${I(n).y-40}px`),B(r,I(n).text)}),z(e,t)};V(S,e=>{I(n).show&&e(C)}),F(e=>B(b,e),[()=>Ex(Xb.data,Xb.mode)]),z(e,c),D()}var Fx=R(``),Ix=R(`

        `),Lx=R(`
        `);function Rx(e,t){E(t,!0);let n=ya(t,`label`,3,`help`),r=ya(t,`text`,3,``),i=ya(t,`open`,15,!1),a=ya(t,`external`,3,!1),o=O(()=>!!r()||!!t.help||a());var s=Lx(),c=M(s),l=M(c);gi(l,()=>t.title??f);var u=P(l,2),d=e=>{var r=Fx();let a;F(()=>{a=U(r,1,`inline-help-toggle svelte-y40or3`,null,a,{"is-open":i()}),W(r,`aria-label`,(i()?`Hide `:`Show `)+n()),W(r,`aria-expanded`,i()),W(r,`aria-controls`,t.copyId)}),L(`click`,r,()=>i(!i())),z(e,r)};V(u,e=>{I(o)&&e(d)}),gi(P(u,2),()=>t.extra??f),T(c);var p=P(c,2),m=e=>{var n=Ix(),i=M(n),a=e=>{var n=Qr();gi(N(n),()=>t.help),z(e,n)},o=e=>{var t=Zr();F(()=>B(t,r())),z(e,t)};V(i,e=>{t.help?e(a):e(o,-1)}),T(n),F(()=>W(n,`id`,t.copyId)),z(e,n)};V(p,e=>{i()&&I(o)&&!a()&&e(m)}),T(s),z(e,s),D()}Hr([`click`]);var zx=R(`

        Provider Latency

        `),Bx=R(`
        Avg
        `),Vx=R(`

        Requests by Status

        Success 2xx 4xx 5xx
        `,1);function Hx(e,t){E(t,!0);let n=Vb(),r=O(()=>Jb.stats);function i(){return{interval:I(r).interval,zone:ao.effectiveTimezone(),resolve:Mv,formatTimestamp:e=>ao.formatTimestamp(e)}}var a=Qr(),o=N(a),s=e=>{var t=Vx(),a=N(t),o=M(a),s=P(M(o),2),c=M(s),l=P(M(c),2),u=M(l,!0);T(l),T(c);var d=P(c,2),f=P(M(d),4),p=M(f,!0);T(f),T(d);var m=P(d,2),h=P(M(m),4),g=M(h,!0);T(h),T(m);var _=P(m,2),v=P(M(_),4),y=M(v,!0);T(v),T(_),T(s),T(o);var b=P(o,2);wv(M(b),{build:()=>Bb(kv(),I(r).buckets,i())}),T(b),T(a);var x=P(a,2),S=e=>{var t=Bx(),a=M(t),o=M(a);Rx(o,{copyId:`audit-latency-help-copy`,label:`provider latency help`,text:`Average duration of successful requests as measured at the gateway, per provider. Local cache hits and failed requests are excluded; streamed responses count until the stream completes.`,title:e=>{z(e,zx())},$$slots:{title:!0}});var s=P(o,2),c=M(s),l=P(M(c),2),u=M(l,!0);T(l),T(c),T(s),T(a);var d=P(a,2);wv(M(d),{build:()=>Hb(kv(),I(r).buckets,I(r).provider_latency,{...i(),providerColor:n})}),T(d),T(t),F(e=>B(u,e),[()=>Fb(I(r))]),z(e,t)},C=O(()=>jb(I(r)));V(x,e=>{I(C)&&e(S)}),F((e,t,n,r)=>{B(u,e),B(p,t),B(g,n),B(y,r)},[()=>Mb(I(r)),()=>$o(Nb(I(r),`status_2xx`)),()=>$o(Nb(I(r),`status_4xx`)),()=>$o(Nb(I(r),`status_5xx`))]),z(e,t)},c=O(()=>Ab(I(r)));V(o,e=>{I(c)&&e(s)}),z(e,a),D()}var Ux=(e,t=f,n=f,r)=>{let i=Ot(()=>h(r?.(),!1));var a=Kx(),o=M(a),s=M(o,!0);T(o);var c=P(o,2),l=e=>{var t=Wx(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)},u=e=>{var t=Gx(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)};V(c,e=>{I(i)?e(l):e(u,-1)}),T(a),F(()=>B(s,t())),z(e,a)},Wx=R(` `),Gx=R(` `),Kx=R(`
        `),qx=R(`

        `),Jx=R(`
        Breaker State
        `),Yx=R(`
        `),Xx=R(`
        Models (Recent Traffic)
        `),Zx=R(`
        `),Qx=R(`

        `);function $x(e,t){E(t,!0);let n=O(()=>Zy(t.provider)),r=O(()=>[[`Base URL`,t.provider.config?.base_url],[`API Version`,t.provider.config?.api_version]].filter(([,e])=>!!e));var i=Qx();let a;var o=M(i),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=e=>{var n=qx(),r=M(n,!0);T(n),F(()=>B(r,t.provider.last_error)),z(e,n)};V(l,e=>{t.provider.last_error&&e(u)});var d=P(l,2),f=e=>{var r=Zx(),i=M(r);{let e=O(()=>Qy(t.provider));Ux(i,()=>`Recent Requests`,()=>I(e))}var a=P(i,2),o=e=>{var r=Jx(),i=P(M(r),2),a=M(i),o=M(a,!0);T(a),T(i),T(r),F(e=>{U(a,1,Fi([`provider-status-health-state`,I(n)]),`svelte-6y9wjv`),B(o,e)},[()=>Xy(t.provider)]),z(e,r)},s=O(()=>Yy(t.provider));V(a,e=>{I(s)&&e(o)});var c=P(a,2),l=e=>{var n=Xx(),r=P(M(n),2);H(r,21,()=>$y(t.provider),e=>e.model,(e,t)=>{var n=Yx();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(n),F((e,i)=>{r=U(n,1,`provider-status-health-model svelte-6y9wjv`,null,r,{"is-flagged":I(t).flagged}),W(n,`title`,e),B(a,I(t).model),B(s,i)},[()=>tb(I(t)),()=>eb(I(t))]),z(e,n)}),T(r),T(n),z(e,n)},u=O(()=>$y(t.provider).length>0);V(c,e=>{I(u)&&e(l)}),T(r),z(e,r)},p=O(()=>Jy(t.provider));V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=M(m);H(h,17,()=>I(r),([e,t])=>e,(e,t)=>{var n=O(()=>g(I(t),2));Ux(e,()=>I(n)[0],()=>I(n)[1],()=>!0)});var _=P(h,2);{let e=O(()=>Ky(t.provider));Ux(_,()=>`Configured Models`,()=>I(e))}var v=P(_,2);{let e=O(()=>Wy(t.provider));Ux(v,()=>`Retry`,()=>I(e))}var y=P(v,2);{let e=O(()=>Gy(t.provider));Ux(y,()=>`Circuit Breaker`,()=>I(e))}T(m),T(o),T(i),F(()=>{a=U(i,1,`provider-status-details svelte-6y9wjv`,null,a,{"is-expanded":t.expanded,"is-collapsed":!t.expanded}),W(i,`aria-hidden`,!t.expanded),B(c,t.provider.status_reason)}),z(e,i),D()}var eS=R(` `),tS=R(``),nS=R(`

        Models Available
        Last Checked
        `);function rS(e,t){E(t,!0);let n=O(()=>qb.cardExpanded(t.provider)),r=e=>ao.formatTimestamp(e);var i=nS(),a=M(i),o=M(a),s=M(o),c=M(s),l=M(c,!0);T(c);var u=P(c,2),d=e=>{var n=eS(),r=M(n);T(n),F(e=>B(r,`(${e??``})`),[()=>Hy(t.provider)]),z(e,n)},f=O(()=>Hy(t.provider));V(u,e=>{I(f)&&e(d)});var p=P(u,2),m=e=>{var n=tS();F((e,t,r)=>{W(n,`href`,e),W(n,`aria-label`,t),W(n,`title`,r)},[()=>Uy(t.provider),()=>`View `+(Hy(t.provider)||t.provider.name)+` provider docs`,()=>`View `+(Hy(t.provider)||t.provider.name)+` provider docs`]),z(e,n)},h=O(()=>Uy(t.provider));V(p,e=>{I(h)&&e(m)}),T(s),T(o);var g=P(o,2),_=M(g,!0);T(g),T(a);var v=P(a,2),y=M(v),b=P(M(y),2),x=M(b,!0);T(b),T(y);var S=P(y,2),C=P(M(S),2),w=M(C,!0);T(C),T(S),T(v);var ee=P(v,2);$x(ee,{get provider(){return t.provider},get expanded(){return I(n)}});var te=P(ee,2);let ne;G(M(te),{name:`chevron-down`,class:`provider-status-card-toggle-icon`}),T(te),T(i),F((e,r,i,a,o)=>{B(l,t.provider.name),U(g,1,`provider-status-pill ${e??``}`,`svelte-nopjmh`),W(g,`title`,r),B(_,t.provider.status_label),B(x,i),W(C,`title`,a),B(w,o),ne=U(te,1,`provider-status-card-toggle svelte-nopjmh`,null,ne,{"is-expanded":I(n)}),W(te,`aria-expanded`,I(n)),W(te,`aria-label`,(I(n)?`Collapse `:`Expand `)+t.provider.name+` details`),W(te,`title`,I(n)?`Collapse details`:`Expand details`)},[()=>Py(t.provider.status),()=>qy(t.provider),()=>$o(t.provider.runtime?.discovered_model_count),()=>Vy(t.provider,r),()=>By(t.provider,r)]),L(`click`,te,()=>qb.toggleCard(t.provider)),z(e,i),D()}Hr([`click`]);var iS=R(`

        Providers Overview

        `),aS=R(`
        `);function oS(e,t){E(t,!0);let n=O(()=>qb.status.providers);var r=Qr(),i=N(r),a=e=>{var t=iS(),r=M(t),i=P(M(r),2),a=M(i),o=M(a,!0);T(a);var s=P(a,2);let c;T(i),T(r);var l=P(r,2);H(l,21,()=>I(n),e=>e.name,(e,t)=>{rS(e,{get provider(){return I(t)}})}),T(l),T(t),F((e,t)=>{W(i,`aria-checked`,qb.detailsExpanded),W(i,`title`,e),B(o,t),c=U(s,1,`provider-status-toggle-track svelte-1kx3uw4`,null,c,{"is-active":qb.detailsExpanded})},[()=>qb.detailsToggleLabel(),()=>qb.detailsToggleLabel()]),L(`click`,i,()=>qb.toggleDetails()),z(e,t)},o=e=>{var t=aS();px(M(t),{size:18,label:`Loading provider status`}),T(t),z(e,t)};V(i,e=>{I(n).length>0?e(a):qb.loading&&!qb.loadedOnce&&e(o,1)}),z(e,r),D()}Hr([`click`]);var sS=R(`
        `);function cS(e,t){E(t,!0);function n(){js.fetchUsage(),js.fetchCacheOverview(``),Jb.fetch(),qb.fetch(),Yb.fetch(),Xb.fetch()}function r(){js.fetchUsage(),js.fetchCacheOverview(``),Jb.fetch()}function i(){r(),Xb.fetch()}An(()=>{if(K.refreshTick,Ha.page===`overview`)return Er(()=>{n(),Qv.start()}),()=>{Qv.stop(),qb.stopPolling()}});var a=sS(),o=M(a);ny(o,{});var s=P(o,4);Js(M(s),{onchange:i}),T(s);var c=P(s,2);Os(c,{});var l=P(c,2);ax(l,{});var u=P(l,2);dx(u,{});var d=P(u,2);yx(d,{onintervalchange:r});var f=P(d,2);Px(f,{});var p=P(f,2);Hx(p,{}),oS(P(p,2),{}),T(a),z(e,a),D()}var lS=`/admin/live/logs?types=audit,usage`;function uS(e,t,n){return!!t&&String(e&&e.id||``).trim()===t||!!n&&String(e&&e.request_id||``).trim()===n}function dS(e){switch(e){case`date_range`:return`Live paused — the selected date range does not include today. Set it to today to resume.`;case`filters`:return`Live paused while filters are active. Clear them to resume.`;case`pagination`:return`Live paused on later pages. Go to the first page to resume.`;default:return``}}function fS(e){let t=lS,n=Number(e||0);return Number.isFinite(n)&&n>0&&(t+=`&cursor=`+encodeURIComponent(String(n))),t}function pS(){return{async consumeLiveLogsBody(e){let t=new TextDecoder,n=``;for(;;){let r=await e.read();if(r.done)break;n+=t.decode(r.value,{stream:!0});let i;for(;i=n.match(/\r?\n\r?\n/);){let e=i.index,t=n.slice(0,e);n=n.slice(e+i[0].length),this.handleLiveLogsFrame(t)}}n+=t.decode(),n.trim()&&this.handleLiveLogsFrame(n)},handleLiveLogsFrame(e){let t=String(e||``).split(/\r?\n/),n=[];for(let e of t)e.indexOf(`data:`)===0&&n.push(e.slice(5).trimStart());if(n.length===0)return;let r;try{r=JSON.parse(n.join(` -`))}catch{return}this.applyLiveLogEvent(r)},applyLiveLogEvent(e){if(!e||typeof e!=`object`)return;let t=Number(e.seq||0);Number.isFinite(t)&&t>this.liveLogsLastSeq&&(this.liveLogsLastSeq=t);let n=String(e.type||``).trim();if(n!==`heartbeat`){if(n===`reset`){this.reloadLiveLogSources();return}if(n===`audit.removed`){this.removeLiveAuditEntry(e.data);return}if(n.indexOf(`audit.`)===0){this.mergeLiveAuditEntry(e.data||{},n);return}n.indexOf(`usage.`)===0&&(this.mergeLiveUsageEntry(e.data||{},n),typeof this.noteLiveTokenUsage==`function`&&this.noteLiveTokenUsage(n))}},reloadLiveLogSources(){typeof this.fetchUsage==`function`&&this.fetchUsage(),this.page===`audit-logs`&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},auditLivePauseReason(){return!this.auditLog||this.auditLog.offset!==0?`pagination`:this.auditSearch||this.auditMethod||this.auditStatusCode||this.auditStream?`filters`:!this.followsToday&&(this.customStartDate||this.customEndDate)?`date_range`:null},auditLiveInsertAllowed(){return!this.auditLivePauseReason()},usageLiveInsertAllowed(){return this.usageLog&&this.usageLog.offset===0&&!this.usageLogSearch&&!this.usageFilterModel&&!this.usageFilterProvider&&!this.usageFilterLabel&&!this.usageFilterUserPath},mergeLiveAuditEntry(e,t){if(!e||typeof e!=`object`)return;let n=String(e.id||e.request_id||``).trim();if(!n)return;let r=String(e.request_id||``).trim(),i=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],a=i.findIndex(e=>uS(e,n,r)),o=a>=0&&i[a]||{},s=t===`audit.detail`,c=s?{...e,_detail_loaded:!0,_response_partial:!1,bodies_omitted:!1}:this.liveAuditPatch(o,e,t);if(a>=0){let e=this.mergeLiveAuditPatch(o,c);return i.splice(a,1,e),this.auditLog.entries=[...i],this.regroupLiveAuditHead(e),s||this.fetchExpandedAuditDetailIfReady(e),this.notifyLiveConversation(e),e}let l=this.mergeLiveAuditChild(e,c);if(l)return s||this.fetchExpandedAuditDetailIfReady(l),this.notifyLiveConversation(l),l;if(!this.auditLiveInsertAllowed())return;if(!s&&this.auditGroupSessions){let e=this.foldLiveAuditIntoThread(c);if(e)return this.fetchExpandedAuditDetailIfReady(e),this.notifyLiveConversation(e),e}this.auditLog.entries=[this.mergeLiveAuditUsagePatch(c),...i].slice(0,this.auditLog.limit||25),this.auditLog.total=Number(this.auditLog.total||0)+1;let u=this.auditLog.entries[0];return s||this.fetchExpandedAuditDetailIfReady(u),this.notifyLiveConversation(u),u},liveAuditPatch(e,t,n){let r=this.liveAuditStateAfter(e._live_state,n),i=this.liveAuditEventFlushed(e._live_state)||this.liveAuditEventFlushed(r),a={...t,_live:!0,_live_state:r,_audit_flushed:i,_live_pending:!i};return n===`audit.stream`?a._response_partial=!0:this.liveAuditStateSettled(n)&&(a._response_partial=!1),a},mergeLiveAuditChild(e,t){let n=this.auditThreadChildren;if(!n||typeof n!=`object`)return null;let r=String(e.id||``).trim(),i=String(e.request_id||``).trim(),a=Object.keys(n);for(let e=0;euS(e,r,i));if(c<0)continue;let l=this.mergeLiveAuditPatch(s[c]||{},t),u=[...s];return u.splice(c,1,l),this.auditThreadChildren={...n,[a[e]]:{...o,entries:u}},l}return null},regroupLiveAuditHead(e){if(!this.auditGroupSessions)return null;let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=String(e.id||``).trim(),i=n.findIndex(e=>String(e.id||``).trim()===r);if(i<0)return null;let a=n.findIndex((e,n)=>n!==i&&String(e.session_id||``).trim()===t);if(a<0)return null;let o=n[a],s=Date.parse(o&&o.timestamp),c=Date.parse(e&&e.timestamp),l=Number.isFinite(s)&&Number.isFinite(c)&&s>c,u=l?o:e,d=l?e:o,f={...u,session_count:Math.max(1,Number(o.session_count||1))+Math.max(1,Number(e.session_count||1))},p=n.filter((e,t)=>t!==i&&t!==a);return p.unshift(f),this.auditLog.entries=p,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-1),this.prependLiveAuditThreadChild(t,d),f},foldLiveAuditIntoThread(e){let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(e=>String(e.session_id||``).trim()===t);if(r<0)return null;let i=n[r],a=Number(i.session_count),o=this.mergeLiveAuditUsagePatch({...e,session_count:(Number.isFinite(a)&&a>0?a:1)+1}),s=[...n];return s.splice(r,1),s.unshift(o),this.auditLog.entries=s,this.prependLiveAuditThreadChild(t,i),o},prependLiveAuditThreadChild(e,t){let n=this.auditThreadChildren||{},r=n[e],i={...t};delete i.session_count;let a=r&&Array.isArray(r.entries)?{...r,entries:[i,...r.entries],total:Number(r.total||r.entries.length)+1}:{loading:!1,loaded:!1,entries:[i],total:1};this.auditThreadChildren={...n,[e]:a}},removeLiveAuditThreadChild(e,t){let n=this.auditThreadChildren;!n||typeof n!=`object`||Object.keys(n).forEach(r=>{let i=n[r],a=i&&Array.isArray(i.entries)?i.entries:[],o=a.filter(n=>!uS(n,e,t)),s=a.length-o.length;s!==0&&(this.auditThreadChildren={...this.auditThreadChildren,[r]:{...i,entries:o,total:Math.max(0,Number(i.total||a.length)-s)}},this.decrementLiveAuditThreadCount(r,s))})},decrementLiveAuditThreadCount(e,t){let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(t=>String(t.session_id||``).trim()===e);if(r<0)return;let i=n[r],a=[...n];a.splice(r,1,{...i,session_count:Math.max(1,Number(i.session_count||1)-t)}),this.auditLog.entries=a},mergeLiveAuditPatch(e,t){let n={...e,...t};return t.data===void 0&&e.data!==void 0?n.data=e.data:e.data&&t.data&&typeof e.data==`object`&&typeof t.data==`object`&&!Array.isArray(e.data)&&!Array.isArray(t.data)&&(n.data={...e.data,...t.data}),this.mergeLiveAuditUsagePatch(n)},mergeLiveAuditUsagePatch(e){let t=this.liveUsageEntryForAudit(e);if(!t)return e;let n=this.auditEntryWithLiveUsage(e,t);return this.removeSkippedLiveUsage(t),n},liveUsageEntryForAudit(e){let t=String(e&&e.request_id||``).trim();return t&&((this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[]).find(e=>String(e&&e.request_id||``).trim()===t)||this.skippedLiveUsageByRequestId&&this.skippedLiveUsageByRequestId[t])||null},notifyLiveConversation(e){e&&typeof this.refreshLiveConversation==`function`&&this.refreshLiveConversation(e)},fetchExpandedAuditDetailIfReady(e){!e||!this.isAuditEntryExpanded||!this.isAuditEntryExpanded(e)||String(e._live_state||``).trim()!==`audit.flushed`&&!e._audit_flushed||typeof this.fetchAuditEntryDetail==`function`&&this.fetchAuditEntryDetail(e)},liveAuditStateRank(e){switch(String(e||``).trim()){case`audit.started`:return 10;case`audit.updated`:case`audit.stream`:return 20;case`audit.completed`:return 30;case`audit.failed`:case`audit.flushed`:case`audit.detail`:return 40;default:return 0}},liveAuditStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveAuditStateRank(n)>this.liveAuditStateRank(r)?n:r},liveAuditStateSettled(e){return this.liveAuditStateRank(e)>=this.liveAuditStateRank(`audit.completed`)},liveAuditEventFlushed(e){let t=String(e||``).trim();return t===`audit.failed`||t===`audit.flushed`||t===`audit.detail`},removeLiveAuditEntry(e){if(!e||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim();if(!t&&!n)return;let r=this.auditLog.entries,i=[],a=0,o=0,s=!1;r.forEach(e=>{if(!uS(e,t,n)){i.push(e);return}a++;let r=String(e.session_id||``).trim(),c=Math.max(1,Number(e.session_count||1));if(!this.auditGroupSessions||!r||c<=1)return;o++;let l=this.auditThreadChildren&&this.auditThreadChildren[r],u=l&&Array.isArray(l.entries)?l.entries.filter(e=>!uS(e,t,n)):[];if(u.length===0){s=!0;return}let d={...u[0],session_id:r,session_count:c-1};i.push(d),this.auditThreadChildren={...this.auditThreadChildren,[r]:{...l,entries:u.slice(1),total:Math.max(0,Number(l.total||c)-1)}}}),a>0&&(this.auditLog.entries=i,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-a+o)),this.removeLiveAuditThreadChild(t,n),s&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},mergeLiveUsageEntry(e,t){if(!e||typeof e!=`object`)return;e={...e,_live_state:t||e._live_state||`usage.completed`};let n=String(e.id||``).trim();if(!n)return;let r=this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[],i=r.findIndex(e=>String(e.id||``).trim()===n);if(i>=0){let t=r[i]||{},n=this.mergeLiveUsagePatch(t,e);if(this.applyLiveUsageToAudit(n),this.liveUsageShouldSkip(n)){r.splice(i,1),this.usageLog.entries=[...r],this.usageLog.total=Math.max(0,Number(this.usageLog.total||0)-1),this.storeSkippedLiveUsage(n);return}r.splice(i,1,n),this.usageLog.entries=[...r],this.removeSkippedLiveUsage(n);return}let a=this.mergeLiveUsagePatch(this.liveUsageSeedForEntry(e),e);if(this.applyLiveUsageToAudit(a),this.liveUsageShouldSkip(a)){this.storeSkippedLiveUsage(a);return}this.removeSkippedLiveUsage(a),this.usageLog.entries=[a,...r].slice(0,this.usageLog.limit||50),this.usageLog.total=Number(this.usageLog.total||0)+1},mergeLiveUsagePatch(e,t){e=e&&typeof e==`object`?e:{};let n=this.liveUsageStateAfter(e._live_state,t&&t._live_state),r=this.liveUsageEventFlushed(e)||this.liveUsageEventFlushed({...t,_live_state:n});return{...e,...t,_live:!0,_live_state:n||`usage.completed`,_live_pending:!r,_usage_flushed:r}},liveUsageShouldSkip(e){return!!(this.usageLogHideCached&&this.liveUsageEntryCached(e))||!this.usageLiveInsertAllowed()},liveUsageSeedForEntry(e){return this.skippedLiveUsageForEntry(e)||this.auditLiveUsageForEntry(e)},skippedLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();return t&&this.skippedLiveUsageByRequestId?this.skippedLiveUsageByRequestId[t]:null},auditLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return null;let n=this.auditLog.entries.find(e=>String(e&&e.request_id||``).trim()===t),r=n&&n.usage&&typeof n.usage==`object`&&!Array.isArray(n.usage)?n.usage:null;return r?{id:e&&e.id,request_id:t,entries:r.entries,input_tokens:r.input_tokens,uncached_input_tokens:r.uncached_input_tokens,cached_input_tokens:r.cached_input_tokens,cache_write_input_tokens:r.cache_write_input_tokens,output_tokens:r.output_tokens,total_tokens:r.total_tokens,cached_input_ratio:r.cached_input_ratio,estimated_cached_characters:r.estimated_cached_characters,_live_state:n._usage_live_state,_live_pending:n._usage_live_pending,_usage_flushed:n._usage_flushed}:null},storeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&((!this.skippedLiveUsageByRequestId||typeof this.skippedLiveUsageByRequestId!=`object`||Array.isArray(this.skippedLiveUsageByRequestId))&&(this.skippedLiveUsageByRequestId={}),this.skippedLiveUsageByRequestId[t]=e)},removeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&this.skippedLiveUsageByRequestId&&delete this.skippedLiveUsageByRequestId[t]},liveUsageEntryCached(e){let t=String(e&&e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`||!!(e&&e.cache_hit)},liveUsageEventFlushed(e){let t=String(e&&e._live_state||``).trim();return!!(e&&e._usage_flushed)||t===`usage.failed`||t===`usage.flushed`},liveUsageStateRank(e){switch(String(e||``).trim()){case`usage.completed`:return 10;case`usage.failed`:case`usage.flushed`:return 20;default:return 0}},liveUsageStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveUsageStateRank(n)>this.liveUsageStateRank(r)?n:r},applyLiveUsageToAudit(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let n=this.auditLog.entries.findIndex(e=>String(e.request_id||``).trim()===t);if(n>=0){let t=this.auditLog.entries[n];this.auditLog.entries.splice(n,1,this.auditEntryWithLiveUsage(t,e)),this.auditLog.entries=[...this.auditLog.entries]}let r=this.auditThreadChildren;if(!r||typeof r!=`object`)return;let i=r,a=!1;Object.keys(r).forEach(n=>{let r=i[n],o=r&&Array.isArray(r.entries)?r.entries:[],s=o.findIndex(e=>String(e.request_id||``).trim()===t);if(s<0)return;let c=[...o];c.splice(s,1,this.auditEntryWithLiveUsage(o[s],e)),i={...i,[n]:{...r,entries:c}},a=!0}),a&&(this.auditThreadChildren=i)},auditEntryWithLiveUsage(e,t){let n=this.liveUsageStateAfter(e._usage_live_state,t._live_state||`usage.completed`),r=this.liveUsageEventFlushed({_live_state:n,_usage_flushed:e._usage_flushed||t._usage_flushed});return{...e,usage:this.liveUsageSummary(t,e.usage),_usage_live_state:n||`usage.completed`,_usage_live_pending:!r,_usage_flushed:r}},liveUsageSummary(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=this.liveNumber(e.input_tokens,this.liveNumber(n.input_tokens,0)),i=this.liveNumber(e.output_tokens,this.liveNumber(n.output_tokens,0)),a=this.liveNumber(e.uncached_input_tokens,this.liveNumber(n.uncached_input_tokens,0)),o=this.liveNumber(e.cached_input_tokens,this.liveNumber(n.cached_input_tokens,0)),s=this.liveNumber(e.cache_write_input_tokens,this.liveNumber(n.cache_write_input_tokens,0));r>0&&a+o+s===0&&(a=r);let c=a+o+s||r,l=c+i||this.liveNumber(e.total_tokens,this.liveNumber(n.total_tokens,0)),u=this.liveNumber(e.cached_input_ratio,this.liveNumber(n.cached_input_ratio,c>0?o/c:0));return{entries:Math.max(1,this.liveNumber(e.entries,this.liveNumber(n.entries,1))),input_tokens:c,uncached_input_tokens:a,cached_input_tokens:o,cache_write_input_tokens:s,output_tokens:i,total_tokens:l,cached_input_ratio:u,estimated_cached_characters:this.liveNumber(e.estimated_cached_characters,this.liveNumber(n.estimated_cached_characters,o*4))}},liveNumber(e,t){let n=Number(e);return Number.isFinite(n)?n:t},auditEntryShouldFetchDetail(e){return!e||e._detail_loading||e._detail_loaded||this.auditEntryLiveDetailPending(e)?!1:this.auditEntryNeedsPersistedLiveDetail(e)||e.bodies_omitted?!0:!this.auditEntryHasDetailData(e)},auditEntryLiveDetailPending(e){if(!e||!e._live)return!1;let t=String(e._live_state||``).trim();return t===`audit.failed`||!e._audit_flushed&&t!==`audit.flushed`&&t!==`audit.detail`},auditEntryNeedsPersistedLiveDetail(e){return!!(e&&e._live&&!e._detail_loaded)},auditEntryHasDetailData(e){let t=e&&e.data;return!t||typeof t!=`object`?!1:t.request_headers!==void 0||t.response_headers!==void 0||t.request_body!==void 0||t.response_body!==void 0||t.request_body_too_big_to_handle!==void 0||t.response_body_too_big_to_handle!==void 0||t.user_agent!==void 0||t.api_key_hash!==void 0||t.temperature!==void 0||t.max_tokens!==void 0||t.error_message!==void 0||t.error_code!==void 0},clearAuditDetailLoading(e){if(!e)return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim(),r=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],i=r.find(e=>t&&String(e.id||``).trim()===t?!0:!!(n&&String(e.request_id||``).trim()===n)),a=i||e;a._detail_loading=!1,i&&(this.auditLog.entries=[...r])}}}var mS=class{#e=k(j({entries:[],total:0,limit:25,offset:0}));get auditLog(){return I(this.#e)}set auditLog(e){A(this.#e,e,!0)}#t=k(j({entries:[],total:0,limit:50,offset:0}));get usageLog(){return I(this.#t)}set usageLog(e){A(this.#t,e,!0)}#n=k(``);get auditSearch(){return I(this.#n)}set auditSearch(e){A(this.#n,e,!0)}#r=k(``);get auditMethod(){return I(this.#r)}set auditMethod(e){A(this.#r,e,!0)}#i=k(``);get auditStatusCode(){return I(this.#i)}set auditStatusCode(e){A(this.#i,e,!0)}#a=k(``);get auditStream(){return I(this.#a)}set auditStream(e){A(this.#a,e,!0)}#o=k(Ea(`gomodel_audit_group_sessions`,`true`)!==`false`);get auditGroupSessions(){return I(this.#o)}set auditGroupSessions(e){A(this.#o,e,!0)}#s=k(j({}));get auditThreadChildren(){return I(this.#s)}set auditThreadChildren(e){A(this.#s,e,!0)}#c=k(``);get usageLogSearch(){return I(this.#c)}set usageLogSearch(e){A(this.#c,e,!0)}#l=k(``);get usageFilterModel(){return I(this.#l)}set usageFilterModel(e){A(this.#l,e,!0)}#u=k(``);get usageFilterProvider(){return I(this.#u)}set usageFilterProvider(e){A(this.#u,e,!0)}#d=k(``);get usageFilterLabel(){return I(this.#d)}set usageFilterLabel(e){A(this.#d,e,!0)}#f=k(``);get usageFilterUserPath(){return I(this.#f)}set usageFilterUserPath(e){A(this.#f,e,!0)}#p=k(!1);get usageLogHideCached(){return I(this.#p)}set usageLogHideCached(e){A(this.#p,e,!0)}#m=k(!1);get liveLogsStreaming(){return I(this.#m)}set liveLogsStreaming(e){A(this.#m,e,!0)}liveLogsLastSeq=0;liveLogsReconnectAttempts=0;liveLogsReconnectTimer=null;liveLogsController=null;skippedLiveUsageByRequestId=null;fetchUsage=null;fetchAuditLog=null;isAuditEntryExpanded=null;refreshLiveConversation=null;noteLiveTokenUsage=null;get page(){return Ha.page}get customStartDate(){return Ts.customStartDate}get customEndDate(){return Ts.customEndDate}get followsToday(){return Ts.followsToday}liveLogsEnabled(){return _o.liveLogsVisible()}async startLiveLogs(){typeof fetch!=`function`||typeof ReadableStream>`u`||(await _o.ensureLoaded(),this.liveLogsEnabled()&&(this.stopLiveLogs(),this.liveLogsController=typeof AbortController==`function`?new AbortController:null,this.readLiveLogsStream(this.liveLogsController)))}stopLiveLogs(){this.liveLogsStreaming=!1,this.liveLogsReconnectTimer&&=(clearTimeout(this.liveLogsReconnectTimer),null),this.liveLogsController&&typeof this.liveLogsController.abort==`function`&&this.liveLogsController.abort(),this.liveLogsController=null}ensureLiveLogs(){this.liveLogsController||this.liveLogsReconnectTimer||this.startLiveLogs()}async readLiveLogsStream(e){let t={};e&&(t.signal=e.signal);let n=fS(this.liveLogsLastSeq),r=K.generation;try{let i=await lo(n,t);if(i.status===401){if(K.handleUnauthorized(r),r{this.liveLogsReconnectTimer=null,this.startLiveLogs()},t)}async fetchAuditEntryDetail(e){if(!this.auditEntryShouldFetchDetail(e))return;let t=String(e.id||``).trim();if(!t)return;e._detail_loading=!0;let n=e;try{let e=await fo(`/admin/audit/detail?log_id=`+encodeURIComponent(t),{label:`audit detail`});if(e.stale||!e.ok)return;n=this.mergeLiveAuditEntry(e.data,`audit.detail`)||n}catch(e){console.error(`Failed to fetch audit detail:`,e)}finally{this.clearAuditDetailLoading(n)}}};Object.assign(mS.prototype,pS());var hS=new mS;if(typeof window<`u`){let e=!1;window.addEventListener(`pagehide`,()=>{e=!!hS.liveLogsController,hS.stopLiveLogs()}),window.addEventListener(`pageshow`,t=>{t.persisted&&e&&hS.ensureLiveLogs()})}var gS=null;Mn(()=>{An(()=>{let e=K.refreshTick;if(gS===null){gS=e;return}e!==gS&&(gS=e,Er(()=>{hS.stopLiveLogs(),hS.startLiveLogs()}))})});function _S(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,uncached_input_tokens:0,cached_input_tokens:0,cache_write_input_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null,rewrite_tokens_saved:0,rewrite_cost_saved:null}}function vS(){return{entries:[],total:0,limit:50,offset:0}}function yS(e,t){let n=[[`model`,e&&e.model],[`provider`,e&&e.provider],[`label`,e&&e.label],[`user_path`,e&&e.user_path]],r=``;for(let[e,i]of n)!i||e===t||(r+=`&`+e+`=`+encodeURIComponent(i));return r}function bS({limit:e,offset:t,hideCached:n,search:r}){let i=`&limit=`+e+`&offset=`+t;return i+=`&cache_mode=`+(n?`uncached`:`all`),r&&(i+=`&search=`+encodeURIComponent(r)),i}function xS(e,t){let n=new Set(e||[]);return t&&n.add(t),[...n].sort()}function SS(e,t){let n=Number(t&&t.total_requests||0)-Number(e&&e.total_requests||0);return Number.isFinite(n)&&n>0?n:0}function CS(e,t,n){let r=n?e:t,i=Number(r&&r.total_requests||0);return Number.isFinite(i)?i:0}function wS(e,t,n){let r=SS(e,t);return r<=0?``:n?$o(r)+` cached requests hidden`:$o(Number(e&&e.total_requests||0))+` to providers + `+$o(r)+` from cache`}function TS(e){let t=e||{};return t.total_input_cost===null||t.total_input_cost===void 0?``:es(t.total_input_cost)+` input + `+es(t.total_output_cost)+` output`}function ES(e){let t=Number(e&&e.rewrite_tokens_saved||0);return Number.isFinite(t)&&t>0?t:0}function DS(e){return ES(e)>0}function OS(e){let t=e||{};return t.rewrite_cost_saved===void 0?null:t.rewrite_cost_saved}function kS(){return`Estimated at 4 net characters removed per token`}function AS(e,t){return t===`costs`?es(OS(e)):rs(ES(e))}function jS(e,t){let n=t===`costs`,r=n?Number(OS(e)):ES(e);if(!Number.isFinite(r)||r<=0)return null;let i=e&&(n?e.total_cost:e.total_input_tokens);if(i==null)return null;let a=Number(i);return!Number.isFinite(a)||a<0?null:r/(a+r)*100}function MS(e,t){let n=jS(e,t);return n===null?``:(n<.1?`<0.1`:n.toFixed(1))+`% less`}function NS(e,t){let n=ES(e);if(n<=0)return``;let r=[$o(n)+` estimated prompt token-transmissions removed across provider requests`,kS(),`Savings are summed per provider request; resent conversation history is counted again`],i=OS(e);i!=null&&(r.push(es(i)+` estimated gross input cost avoided`),r.push(`Prompt-cache changes caused by rewriting are not included`));let a=MS(e,t);return a&&r.push(a+` than the same traffic without rewriting (`+(t===`costs`?`cost`:`tokens`)+`)`),r.join(` -`)}function PS(e){return String(e&&e.cost_source||``).trim()}function FS(e){let t=PS(e);return t===`openrouter_credits`||t===`xai_cost_in_usd_ticks`}function IS(e){switch(PS(e)){case`openrouter_credits`:return`Costs from OpenRouter USD-based credits.`;case`xai_cost_in_usd_ticks`:return`Costs from xAI usage.cost_in_usd_ticks.`;default:return``}}function LS(e){return String(e&&e.cache_type||``).trim().toLowerCase()}function RS(e){let t=LS(e);return t===`exact`||t===`semantic`}function zS(e){let t=LS(e);return t===`exact`?`Exact`:t===`semantic`?`Semantic`:`-`}function BS(e,t){let n=t?String(t):``;return RS(e)?n?`Saved by cache — not charged -`+n:`Saved by cache — not charged`:n}function VS(e){let t=Number(e&&e.cached_input_ratio);return!Number.isFinite(t)||t<=0?0:Math.min(1,t)}function HS(e){return Number(e&&e.cached_input_tokens||0)>0}function US(e){return HS(e)?(VS(e)*100).toFixed(1)+`%`:``}function WS(e){if(!HS(e))return``;let t=Number(e.cached_input_tokens||0),n=Number(e.uncached_input_tokens||0),r=Number(e.cache_write_input_tokens||0),i=t+n+r,a=[$o(t)+` cached / `+$o(i)+` input tokens`];return r>0&&a.push($o(r)+` cache write`),a.join(` -`)}function GS(e){let t=[];if(IS(e)&&(t.push(IS(e)),t.push(``)),t.push(`Input: `+es(e.input_cost)),t.push(`Output: `+es(e.output_cost)),e.raw_data){t.push(``);for(let[n,r]of Object.entries(e.raw_data)){let e=n.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),i=r&&typeof r==`object`?JSON.stringify(r):$o(r);t.push(e+`: `+i)}}return t.join(` -`)}function KS(e){return Array.isArray(e&&e.labels)?e.labels:[]}function qS(e,t,n){return(e||[]).length>0||t?!0:(n||[]).some(e=>KS(e).length>0)}function JS(e){return e&&typeof e.total_tokens==`number`?e.total_tokens:(e&&e.input_tokens||0)+(e&&e.output_tokens||0)}function YS(e,t){return t?e.total_cost||0:JS(e)}function XS(e,t){return[...e||[]].sort((e,n)=>t?(n.total_cost||0)-(e.total_cost||0):YS(n,t)-YS(e,t))}function ZS(e){let t=Array.isArray(e)?e:[];if(t.length===0)return!1;if(t.length!==1)return!0;let n=String(t[0]&&t[0].user_path||``).trim();return n!==``&&n!==`/`}function QS(e){return(e||`chart`)===`chart`||e===`stacked`}function $S(e,t,n){let r=XS(e,n),i=e=>Number(e)||0,a=e=>n?Math.min(i(e.cached_input_cost),i(e.input_cost)):i(e.cached_input_tokens),o=e=>n?i(e.input_cost)-a(e):i(e.uncached_input_tokens)+i(e.cached_input_tokens)+i(e.cache_write_input_tokens)>0?i(e.uncached_input_tokens)+i(e.cache_write_input_tokens):i(e.input_tokens),s=e=>i(n?e.output_cost:e.output_tokens),c=e=>n?0:i(e.local_cached_input_tokens),l=e=>n?0:i(e.local_cached_output_tokens),u=r.slice(0,10),d=r.slice(10),f=u.map(t),p=u.map(o),m=u.map(s),h=u.map(a),g=u.map(c),_=u.map(l);if(d.length>0){f.push(`Other`);let e=e=>d.reduce((t,n)=>t+e(n),0);p.push(e(o)),m.push(e(s)),h.push(e(a)),g.push(e(c)),_.push(e(l))}return{labels:f,inputs:p,outputs:m,prompts:h,localIns:g,localOuts:_}}function eC(e){return Math.max(200,e*32+72)}var J=new class{#e=k(`tokens`);get usageMode(){return I(this.#e)}set usageMode(e){A(this.#e,e,!0)}get usageFilterModel(){return hS.usageFilterModel}set usageFilterModel(e){hS.usageFilterModel=e}get usageFilterProvider(){return hS.usageFilterProvider}set usageFilterProvider(e){hS.usageFilterProvider=e}get usageFilterLabel(){return hS.usageFilterLabel}set usageFilterLabel(e){hS.usageFilterLabel=e}get usageFilterUserPath(){return hS.usageFilterUserPath}set usageFilterUserPath(e){hS.usageFilterUserPath=e}#t=k(j({models:[],providers:[],labels:[]}));get usageFacetOptions(){return I(this.#t)}set usageFacetOptions(e){A(this.#t,e,!0)}#n=k(j(_S()));get usageSummary(){return I(this.#n)}set usageSummary(e){A(this.#n,e,!0)}#r=k(j(_S()));get usageSummaryAll(){return I(this.#r)}set usageSummaryAll(e){A(this.#r,e,!0)}#i=k(j([]));get modelUsage(){return I(this.#i)}set modelUsage(e){A(this.#i,e,!0)}#a=k(j([]));get userPathUsage(){return I(this.#a)}set userPathUsage(e){A(this.#a,e,!0)}#o=k(j([]));get labelUsage(){return I(this.#o)}set labelUsage(e){A(this.#o,e,!0)}get usageLog(){return hS.usageLog}set usageLog(e){hS.usageLog=e}get usageLogSearch(){return hS.usageLogSearch}set usageLogSearch(e){hS.usageLogSearch=e}get usageLogHideCached(){return hS.usageLogHideCached}set usageLogHideCached(e){hS.usageLogHideCached=e}#s=k(`chart`);get modelUsageView(){return I(this.#s)}set modelUsageView(e){A(this.#s,e,!0)}#c=k(`chart`);get userPathUsageView(){return I(this.#c)}set userPathUsageView(e){A(this.#c,e,!0)}#l=k(`chart`);get labelUsageView(){return I(this.#l)}set labelUsageView(e){A(this.#l,e,!0)}#u=k(!1);get summaryLoading(){return I(this.#u)}set summaryLoading(e){A(this.#u,e,!0)}#d=k(!1);get modelUsageLoading(){return I(this.#d)}set modelUsageLoading(e){A(this.#d,e,!0)}#f=k(!1);get userPathUsageLoading(){return I(this.#f)}set userPathUsageLoading(e){A(this.#f,e,!0)}#p=k(!1);get labelUsageLoading(){return I(this.#p)}set labelUsageLoading(e){A(this.#p,e,!0)}#m=k(!1);get usageLogLoading(){return I(this.#m)}set usageLogLoading(e){A(this.#m,e,!0)}#h={};#g(e){this.#h[e]&&this.#h[e].abort();let t=new AbortController;return this.#h[e]=t,t}#_(e,t){this.#h[e]===t&&(this.#h[e]=null)}filterQueryStr(e){return yS({model:this.usageFilterModel,provider:this.usageFilterProvider,label:this.usageFilterLabel,user_path:this.usageFilterUserPath},e)}onUsageFilterChanged(){this.fetchUsagePage()}toggleUsageLabelFilter(e){this.usageFilterLabel=this.usageFilterLabel===e?``:e,this.onUsageFilterChanged()}usageLabelChipTitle(e){return this.usageFilterLabel===e?`Clear label filter`:`Filter usage by "`+e+`"`}toggleUsageMode(e){this.usageMode=e,Ha.navigate(`usage`,e===`costs`?`costs`:null)}toggleUsageChartView(e,t){e===`model`&&(this.modelUsageView=t),e===`userPath`&&(this.userPathUsageView=t),e===`label`&&(this.labelUsageView=t)}usageFilterModelOptions(){return xS(this.usageFacetOptions.models,this.usageFilterModel)}usageFilterProviderOptions(){return xS(this.usageFacetOptions.providers,this.usageFilterProvider)}usageFilterLabelOptions(){return xS(this.usageFacetOptions.labels,this.usageFilterLabel)}async fetchUsagePage(){await _o.ensureLoaded();let e=[this.fetchUsagePageSummary(),this.fetchUsageFacetOptions(),this.fetchModelUsage(),this.fetchUserPathUsage(),this.fetchLabelUsage(),this.fetchUsageLog(!0)];js.cacheAnalyticsEnabled()&&e.push(js.fetchCacheOverview(this.filterQueryStr())),await Promise.all(e)}async fetchUsagePageSummary(){let e=this.#g(`summary`);this.summaryLoading=!0;try{let t=Ts.queryStr()+this.filterQueryStr(),[n,r]=await Promise.all([fo(`/admin/usage/summary?`+t+`&cache_mode=uncached`,{label:`usage page summary`,signal:e.signal}),fo(`/admin/usage/summary?`+t+`&cache_mode=all`,{label:`usage page summary (all)`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.usageSummary=_S(),this.usageSummaryAll=_S();return}this.usageSummary=n.data&&typeof n.data==`object`?n.data:_S(),this.usageSummaryAll=r.data&&typeof r.data==`object`?r.data:_S()}catch(e){if(mo(e))return;console.error(`Failed to fetch usage page summary:`,e),this.usageSummary=_S(),this.usageSummaryAll=_S()}finally{this.#_(`summary`,e),this.#h.summary===null&&(this.summaryLoading=!1)}}async fetchUsageFacetOptions(){let e=this.#g(`facets`);try{let t=async(t,n)=>{let r=await fo(t+`?`+Ts.queryStr()+this.filterQueryStr(n),{label:`usage facet options`,signal:e.signal});return r.stale?null:r.ok&&Array.isArray(r.data)?r.data:[]},n=t(`/admin/usage/models`,`model`),r=!this.usageFilterModel&&!this.usageFilterProvider,[i,a,o]=await Promise.all([n,r?n:t(`/admin/usage/models`,`provider`),t(`/admin/usage/labels`,`label`)]);if(e.signal.aborted||i===null||a===null||o===null)return;this.usageFacetOptions={models:i.map(e=>e&&e.model).filter(Boolean),providers:a.map(e=>ls(e)).filter(Boolean),labels:o.map(e=>e&&e.label).filter(Boolean)}}catch(e){if(mo(e))return;console.error(`Failed to fetch usage facet options:`,e),this.usageFacetOptions={models:[],providers:[],labels:[]}}finally{this.#_(`facets`,e)}}async#v(e,t,n,r,i){let a=this.#g(e);i(!0);try{let e=await fo(t+`?`+Ts.queryStr()+this.filterQueryStr(),{label:n,signal:a.signal});if(e.stale||a.signal.aborted)return;if(!e.ok){r([]);return}r(Array.isArray(e.data)?e.data:[])}catch(e){if(mo(e))return;console.error(`Failed to fetch `+n+`:`,e),r([])}finally{this.#_(e,a),this.#h[e]===null&&i(!1)}}fetchModelUsage(){return this.#v(`modelUsage`,`/admin/usage/models`,`usage models`,e=>this.modelUsage=e,e=>this.modelUsageLoading=e)}fetchUserPathUsage(){return this.#v(`userPathUsage`,`/admin/usage/user-paths`,`usage user paths`,e=>this.userPathUsage=e,e=>this.userPathUsageLoading=e)}fetchLabelUsage(){return this.#v(`labelUsage`,`/admin/usage/labels`,`usage labels`,e=>this.labelUsage=e,e=>this.labelUsageLoading=e)}async fetchUsageLog(e){let t=this.#g(`usageLog`);this.usageLogLoading=!0;try{e&&(this.usageLog.offset=0);let n=Ts.queryStr()+this.filterQueryStr();n+=bS({limit:this.usageLog.limit,offset:this.usageLog.offset,hideCached:this.usageLogHideCached,search:this.usageLogSearch});let r=await fo(`/admin/usage/log?`+n,{label:`usage log`,signal:t.signal});if(r.stale||t.signal.aborted)return;if(!r.ok){this.usageLog=vS();return}let i=r.data&&typeof r.data==`object`?r.data:vS();i.entries||=[],this.usageLog=i}catch(e){if(mo(e))return;console.error(`Failed to fetch usage log:`,e),this.usageLog=vS()}finally{this.#_(`usageLog`,t),this.#h.usageLog===null&&(this.usageLogLoading=!1)}}usageLogNextPage(){this.usageLog.offset+this.usageLog.limit0&&(this.usageLog.offset=Math.max(0,this.usageLog.offset-this.usageLog.limit),this.fetchUsageLog(!1))}};hS.fetchUsage=()=>{Ha.page===`usage`&&J.fetchUsagePage()};var tC=R(`
        `);function nC(e,t){E(t,!0);let n=ya(t,`value`,15,``),r=ya(t,`placeholder`,3,``),i=ya(t,`label`,3,``),a=ya(t,`id`,3,void 0),o=ya(t,`oninput`,3,void 0),s=ya(t,`class`,3,``);var c=tC(),l=M(c);G(l,{name:`search`,class:`filter-input-icon`});var u=P(l,2);na(u),T(c),F(()=>{U(c,1,Fi([`filter-input-wrap`,s()]),`svelte-30xz1k`),W(u,`id`,a()),W(u,`placeholder`,r()),W(u,`aria-label`,i())}),L(`input`,u,function(...e){o()?.apply(this,e)}),da(u,n),z(e,c),D()}Hr([`input`]);function rC(e,t=300){let n=null,r=(...r)=>{clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)};return r.cancel=()=>{clearTimeout(n),n=null},r}var iC=R(``),aC=R(``),oC=R(`
        `);function sC(e,t){E(t,!0);let n=rC(()=>J.onUsageFilterChanged());An(()=>n.cancel);var r=oC(),i=M(r),a=M(i);a.value=a.__value=``,H(P(a),16,()=>J.usageFilterModelOptions(),e=>e,(e,t)=>{var n=iC(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(i);var o=P(i,2),s=M(o);s.value=s.__value=``,H(P(s),16,()=>J.usageFilterProviderOptions(),e=>e,(e,t)=>{var n=iC(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(o);var c=P(o,2),l=e=>{var t=aC(),n=M(t);n.value=n.__value=``,H(P(n),16,()=>J.usageFilterLabelOptions(),e=>e,(e,t)=>{var n=iC(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(t),L(`change`,t,()=>J.onUsageFilterChanged()),Gi(t,()=>J.usageFilterLabel,e=>J.usageFilterLabel=e),z(e,t)},u=O(()=>J.usageFilterLabelOptions().length>0);V(c,e=>{I(u)&&e(l)}),nC(P(c,2),{class:`usage-page-filters-user-path`,placeholder:`User path /team/alpha`,label:`Filter by user path`,get oninput(){return n},get value(){return J.usageFilterUserPath},set value(e){J.usageFilterUserPath=e}}),T(r),L(`change`,i,()=>J.onUsageFilterChanged()),Gi(i,()=>J.usageFilterModel,e=>J.usageFilterModel=e),L(`change`,o,()=>J.onUsageFilterChanged()),Gi(o,()=>J.usageFilterProvider,e=>J.usageFilterProvider=e),z(e,r),D()}Hr([`change`]);var cC=R(`
        Cache Saved
        Cache Hits
        `,1);function lC(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=cC(),n=N(t),r=P(M(n),2),i=M(r,!0);T(r),T(n);var a=P(n,2),o=P(M(a),2),s=M(o,!0);T(o),T(a),F((e,t)=>{B(i,e),B(s,t)},[()=>es(js.cacheOverview.summary.total_saved_cost),()=>$o(js.cacheOverview.summary.total_hits)]),z(e,t)},a=O(()=>js.cacheAnalyticsEnabled());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}var uC=R(` `),dC=R(`
        Pro Saved
        `),fC=R(`
        Total Requests
        Estimated Cost
        `);function pC(e,t){E(t,!0);let n=O(()=>DS(J.usageSummary)),r=O(()=>AS(J.usageSummary,J.usageMode)),i=O(()=>MS(J.usageSummary,J.usageMode));var a=fC(),o=M(a),s=P(M(o),2),c=M(s),l=e=>{px(e,{size:18,label:`Loading usage summary`})},u=e=>{var t=Zr();F(e=>B(t,e),[()=>$o(CS(J.usageSummary,J.usageSummaryAll,J.usageLogHideCached))]),z(e,t)};V(c,e=>{J.summaryLoading?e(l):e(u,-1)}),T(s),T(o);var d=P(o,2),f=P(M(d),2),p=M(f),m=e=>{px(e,{size:18,label:`Loading usage summary`})},h=e=>{var t=Zr();F(e=>B(t,e),[()=>es(J.usageSummary.total_cost)]),z(e,t)};V(p,e=>{J.summaryLoading?e(m):e(h,-1)}),T(f),T(d);var g=P(d,2),_=e=>{var t=dC(),n=P(M(t),2),a=M(n),o=M(a,!0);T(a);var s=P(a,2),c=e=>{var t=uC(),n=M(t,!0);T(t),F(()=>B(n,I(i))),z(e,t)};V(s,e=>{I(i)&&e(c)}),T(n),T(t),F(e=>{W(n,`title`,e),B(o,I(r))},[()=>NS(J.usageSummary,J.usageMode)]),z(e,t)};V(g,e=>{I(n)&&e(_)}),lC(P(g,2),{}),T(a),F((e,t)=>{W(s,`title`,e),W(f,`title`,t)},[()=>wS(J.usageSummary,J.usageSummaryAll,J.usageLogHideCached),()=>TS(J.usageSummary)]),z(e,a),D()}function mC(e,t,n,r){let{stacked:i=!1,costs:a=!1,resolve:o=e=>e}=r||{},s=e=>a?`$`+Math.abs(e).toFixed(2):rs(Math.abs(e)),c=e=>a?`$`+Math.abs(e).toFixed(4):Math.abs(e).toLocaleString(),l=e=>e.map(e=>i?Math.abs(e):-Math.abs(e)),u=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:`transparent`,borderWidth:0,borderRadius:4,maxBarThickness:22}),d=e=>(e||[]).some(e=>Math.abs(e)>0),f=[u(a?`Input Cost`:`Input Tokens`,l(n.inputs),o(`var(--token-input)`)),u(a?`Output Cost`:`Output Tokens`,n.outputs,o(`var(--token-output)`))];return d(n.prompts)&&f.push(u(a?`Prompt Cached Cost`:`Prompt Cached`,l(n.prompts),o(`var(--token-prompt)`))),!a&&d(n.localIns)&&f.push(u(`Locally Cached (Input)`,l(n.localIns),o(`var(--token-local)`))),!a&&d(n.localOuts)&&f.push(u(`Locally Cached (Output)`,n.localOuts,o(`var(--token-local)`))),{type:`bar`,data:{labels:t,datasets:f},options:{indexAxis:`y`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:{top:8}},scales:{x:{stacked:!0,beginAtZero:!0,grid:i?{color:e.grid}:{color:t=>t.tick&&t.tick.value===0?e.text:e.grid},border:{display:!1},ticks:{color:e.text,font:Av(),callback:e=>s(e)}},y:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:Av(),autoSkip:!1}}},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:jv(e,{label:e=>e.dataset.label+`: `+c(e.parsed.x),footer:e=>{let t=0;return e.forEach(e=>{t+=Math.abs(Number(e.parsed.x))||0}),`Total: `+c(t)}})}}}}var hC=R(`
        `),gC=R(`

        `),_C=R(`

        `,1),vC=R(`
        `),yC=R(`Model Provider`,1),bC=R(`User Path`),xC=R(`Label Requests`,1),SC=R(` `,1),CC=R(` `),wC=R(` `,1),TC=R(` `),EC=R(`
        Input TokensOutput TokensPrompt CachedLocal CachedTotal TokensInput CostOutput CostTotal Cost
        `),DC=R(`
        `),OC=R(`
        `);function kC(e,t){E(t,!0);let n=e=>{var n=hC(),r=M(n);let a;var o=P(r,2);let s;var l=P(o,2);let u;T(n),F(()=>{W(n,`aria-label`,I(i).group),a=U(r,1,`chart-view-btn svelte-1kee4g8`,null,a,{active:I(c)===`chart`}),W(r,`aria-pressed`,I(c)===`chart`),W(r,`aria-label`,`Show ${I(i).noun??``} chart`),s=U(o,1,`chart-view-btn svelte-1kee4g8`,null,s,{active:I(c)===`stacked`}),W(o,`aria-pressed`,I(c)===`stacked`),W(o,`aria-label`,`Show ${I(i).noun??``} stacked chart`),u=U(l,1,`chart-view-btn svelte-1kee4g8`,null,u,{active:I(c)===`table`}),W(l,`aria-pressed`,I(c)===`table`),W(l,`aria-label`,`Show ${I(i).noun??``} table`)}),L(`click`,r,()=>J.toggleUsageChartView(t.kind,`chart`)),L(`click`,o,()=>J.toggleUsageChartView(t.kind,`stacked`)),L(`click`,l,()=>J.toggleUsageChartView(t.kind,`table`)),z(e,n)},r={model:{group:`Model usage view`,noun:`model usage`,tokensTitle:`Token Usage by Model`,costsTitle:`Cost by Model`},userPath:{group:`User path usage view`,noun:`user path usage`,tokensTitle:`Usage by User Path`,costsTitle:`Cost by User Path`},label:{group:`Label usage view`,noun:`label usage`,tokensTitle:`Usage by Label`,costsTitle:`Cost by Label`}},i=O(()=>r[t.kind]),a=O(()=>t.kind===`model`?e=>ds(e):t.kind===`userPath`?e=>e.user_path||`/`:e=>e.label);function o(e){return t.kind===`model`?(e.provider_name||e.provider||`-`)+`/`+e.model:t.kind===`userPath`?e.user_path||`/`:e.label}let s=O(()=>t.kind===`model`?J.modelUsage:t.kind===`userPath`?J.userPathUsage:J.labelUsage),c=O(()=>t.kind===`model`?J.modelUsageView:t.kind===`userPath`?J.userPathUsageView:J.labelUsageView),l=O(()=>t.kind===`model`?J.modelUsageLoading:t.kind===`userPath`?J.userPathUsageLoading:J.labelUsageLoading),u=O(()=>J.usageMode===`costs`),d=O(()=>t.kind===`userPath`?ZS(I(s)):I(s).length>0),f=O(()=>I(u)?I(i).costsTitle:I(i).tokensTitle),p=O(()=>$S(I(s),I(a),I(u))),m=O(()=>XS(I(s),I(u)));function h(){return QS(I(c))?mC(kv(),I(p).labels,I(p),{stacked:I(c)===`stacked`,costs:I(u),resolve:Mv}):null}var g=Qr(),_=N(g),v=e=>{var r=DC(),a=M(r),s=M(a),u=e=>{Rx(e,{copyId:`label-usage-help-copy`,label:`label usage help`,text:`One request can have multiple labels. Such a request counts once under each of its labels, so label rows can overlap and add up to more than the period totals.`,title:e=>{var t=gC(),n=M(t,!0);T(t),F(()=>B(n,I(f))),z(e,t)},extra:e=>{var t=Qr(),n=N(t),r=e=>{px(e,{size:14,get label(){return`Loading ${I(i).noun??``}`}})};V(n,e=>{I(l)&&e(r)}),z(e,t)},$$slots:{title:!0,extra:!0}})},d=e=>{var t=_C(),n=N(t),r=M(n,!0);T(n);var a=P(n,2),o=e=>{px(e,{size:14,get label(){return`Loading ${I(i).noun??``}`}})};V(a,e=>{I(l)&&e(o)}),F(()=>B(r,I(f))),z(e,t)};V(s,e=>{t.kind===`label`?e(u):e(d,-1)});var g=P(s,2);n(g),T(a);var _=P(a,2),v=e=>{var t=vC();let n;wv(M(t),{build:h}),T(t),F(e=>n=Hi(t,``,n,e),[()=>({height:`${eC(I(p).labels.length)??``}px`})]),z(e,t)},y=O(()=>QS(I(c))),b=e=>{var n=EC(),r=M(n),i=M(r),a=M(i),s=M(a),c=e=>{var t=yC();Ue(2),z(e,t)},l=e=>{z(e,bC())},u=e=>{var t=xC();Ue(2),z(e,t)};V(s,e=>{t.kind===`model`?e(c):t.kind===`userPath`?e(l,1):e(u,-1)}),Ue(8),T(a),T(i);var d=P(i);H(d,21,()=>I(m),e=>o(e),(e,n)=>{var r=TC(),i=M(r),a=e=>{var t=SC(),r=N(t),i=M(r,!0);T(r);var a=P(r,2),o=M(a),s=M(o,!0);T(o),T(a),F(e=>{B(i,I(n).model||`-`),B(s,e)},[()=>ls(I(n))||`-`]),z(e,t)},o=e=>{var t=CC(),r=M(t,!0);T(t),F(()=>B(r,I(n).user_path||`/`)),z(e,t)},s=e=>{var t=wC(),r=N(t),i=M(r);let a;var o=M(i,!0);T(i),T(r);var s=P(r,2),c=M(s,!0);T(s),F((e,t,r)=>{a=U(i,1,`usage-label-chip`,null,a,{active:J.usageFilterLabel===I(n).label}),Hi(i,`--label-color: ${e??``}`),W(i,`title`,t),B(o,I(n).label),B(c,r)},[()=>Fv(I(n).label),()=>J.usageLabelChipTitle(I(n).label),()=>$o(I(n).requests)]),L(`click`,i,()=>J.toggleUsageLabelFilter(I(n).label)),z(e,t)};V(i,e=>{t.kind===`model`?e(a):t.kind===`userPath`?e(o,1):e(s,-1)});var c=P(i),l=M(c,!0);T(c);var u=P(c),d=M(u,!0);T(u);var f=P(u),p=M(f,!0);T(f);var m=P(f),h=M(m,!0);T(m);var g=P(m),_=M(g,!0);T(g);var v=P(g),y=M(v,!0);T(v);var b=P(v),x=M(b,!0);T(b);var S=P(b),C=M(S,!0);T(S),T(r),F((e,t,n,r,i,a,o,s,c,u,g)=>{B(l,e),B(d,t),W(f,`title`,n),B(p,r),W(m,`title`,`${i??``} input + ${a??``} output`),B(h,o),B(_,s),B(y,c),B(x,u),B(C,g)},[()=>$o(I(n).input_tokens),()=>$o(I(n).output_tokens),()=>I(n).cached_input_cost==null?``:`~`+es(I(n).cached_input_cost)+` at current cached-input pricing`,()=>$o(I(n).cached_input_tokens||0),()=>$o(I(n).local_cached_input_tokens||0),()=>$o(I(n).local_cached_output_tokens||0),()=>$o((I(n).local_cached_input_tokens||0)+(I(n).local_cached_output_tokens||0)),()=>$o(JS(I(n))),()=>es(I(n).input_cost),()=>es(I(n).output_cost),()=>es(I(n).total_cost)]),z(e,r)}),T(d),T(r),T(n),z(e,n)};V(_,e=>{I(y)?e(v):e(b,-1)}),T(r),z(e,r)},y=e=>{var t=OC();px(M(t),{size:20,get label(){return`Loading ${I(i).noun??``}`}}),T(t),z(e,t)};V(_,e=>{I(d)?e(v):I(l)&&e(y,1)}),z(e,g),D()}Hr([`click`]);var AC=R(``);function jC(e,t){E(t,!0);let n=ya(t,`total`,3,0),r=ya(t,`offset`,3,0),i=ya(t,`limit`,3,25);var a=Qr(),o=N(a),s=e=>{var a=AC(),o=M(a),s=M(o);T(o);var c=P(o,2),l=M(c),u=P(l,2);T(c),T(a),F(e=>{B(s,`Showing ${r()+1}-${e??``} of ${n()??``}`),l.disabled=r()===0,u.disabled=r()+i()>=n()},[()=>Math.min(r()+i(),n())]),L(`click`,l,()=>t.onprev?.()),L(`click`,u,()=>t.onnext?.()),z(e,a)};V(o,e=>{n()>0&&e(s)}),z(e,a),D()}Hr([`click`]);var MC=(e,t=f)=>{var n=Qr(),r=N(n),i=e=>{var n=PC();H(n,20,()=>KS(t()),e=>e,(e,t)=>{var n=NC();let r;var i=M(n,!0);T(n),F((e,a)=>{r=U(n,1,`usage-label-chip`,null,r,{active:J.usageFilterLabel===t}),Hi(n,`--label-color: ${e??``}`),W(n,`title`,a),B(i,t)},[()=>Fv(t),()=>J.usageLabelChipTitle(t)]),L(`click`,n,()=>J.toggleUsageLabelFilter(t)),z(e,n)}),T(n),z(e,n)},a=O(()=>KS(t()).length>0),o=e=>{z(e,FC())};V(r,e=>{I(a)?e(i):e(o,-1)}),z(e,n)},NC=R(``),PC=R(`
        `),FC=R(`-`),IC=R(`Labels`),LC=R(`Cost`),RC=R(``),zC=R(` `),BC=R(``),VC=R(` `),HC=R(` `),UC=R(`
        TimestampProviderModelUser PathCacheProvider Cache
        `),WC=R(`
        `),GC=R(`
        `),KC=R(`

        Request Log

        `);function qC(e,t){E(t,!0);let n=O(()=>J.usageMode===`costs`),r=O(()=>qS(J.labelUsage,J.usageFilterLabel,J.usageLog.entries)),i=rC(()=>J.fetchUsageLog(!0));An(()=>i.cancel);var a=KC(),o=P(M(a),2),s=M(o);nC(M(s),{placeholder:`Search by request ID, model, provider...`,label:`Search by request ID, model, provider`,get oninput(){return i},get value(){return J.usageLogSearch},set value(e){J.usageLogSearch=e}}),T(s);var c=P(s,2),l=M(c),u=M(l);na(u),Ue(2),T(l),T(c),T(o);var d=P(o,2),f=e=>{var t=UC(),i=M(t),a=M(i),o=M(a),s=P(M(o),4),c=e=>{z(e,IC())};V(s,e=>{I(r)&&e(c)});var l=P(s,3),u=M(l,!0);T(l);var d=P(l),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=e=>{z(e,LC())};V(h,e=>{I(n)||e(g)}),T(o),T(a);var _=P(a);H(_,21,()=>J.usageLog.entries,e=>e.id,(e,t)=>{var i=HC();let a;var o=M(i),s=M(o,!0);T(o);var c=P(o),l=M(c),u=M(l,!0);T(l),T(c);var d=P(c),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=e=>{var n=RC();MC(M(n),()=>I(t)),T(n),z(e,n)};V(h,e=>{I(r)&&e(g)});var _=P(h),v=M(_,!0);T(_);var y=P(_),b=M(y),x=e=>{var n=zC(),r=M(n,!0);T(n),F(e=>B(r,e),[()=>US(I(t))]),z(e,n)},S=O(()=>HS(I(t))),C=e=>{z(e,FC())};V(b,e=>{I(S)?e(x):e(C,-1)}),T(y);var w=P(y),ee=M(w,!0);T(w);var te=P(w),ne=M(te,!0);T(te);var re=P(te),ie=M(re),ae=M(ie,!0);T(ie);var oe=P(ie,2),se=e=>{{let n=O(()=>IS(I(t)));G(e,{name:`circle-dollar-sign`,class:`cost-source-icon`,get title(){return I(n)}})}},ce=O(()=>I(n)&&FS(I(t)));V(oe,e=>{I(ce)&&e(se)});var le=P(oe,2),ue=e=>{G(e,{name:`database-zap`,class:`cache-savings-icon`})},de=O(()=>I(n)&&RS(I(t)));V(le,e=>{I(de)&&e(ue)});var fe=P(le,2),pe=e=>{var n=BC();F(()=>W(n,`title`,I(t).costs_calculation_caveat)),z(e,n)};V(fe,e=>{I(n)&&I(t).costs_calculation_caveat&&e(pe)}),T(re);var me=P(re),he=e=>{var n=VC(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{{let n=O(()=>IS(I(t)));G(e,{name:`circle-dollar-sign`,class:`cost-source-icon`,get title(){return I(n)}})}},s=O(()=>FS(I(t)));V(a,e=>{I(s)&&e(o)});var c=P(a,2),l=e=>{G(e,{name:`database-zap`,class:`cache-savings-icon`})},u=O(()=>RS(I(t)));V(c,e=>{I(u)&&e(l)});var d=P(c,2),f=e=>{var n=BC();F(()=>W(n,`title`,I(t).costs_calculation_caveat)),z(e,n)};V(d,e=>{I(t).costs_calculation_caveat&&e(f)}),T(n),F((e,t)=>{W(n,`title`,e),B(i,t)},[()=>BS(I(t),GS(I(t))),()=>es(I(t).total_cost)]),z(e,n)};V(me,e=>{I(n)||e(he)}),T(i),F((e,n,r,c,l,d,p,h,g,_,b,x,S)=>{a=U(i,1,`svelte-hg4ill`,null,a,e),W(o,`title`,n),B(s,r),B(u,c),B(f,I(t).model),B(m,I(t).user_path||`-`),B(v,l),W(y,`title`,d),W(w,`title`,p),B(ee,h),W(te,`title`,g),B(ne,_),W(re,`title`,b),W(ie,`title`,x),B(ae,S)},[()=>({"usage-log-row-cached":RS(I(t))}),()=>ss(I(t).timestamp),()=>ao.formatTimestamp(I(t).timestamp),()=>ls(I(t))||`-`,()=>zS(I(t)),()=>WS(I(t)),()=>I(n)?$o(I(t).input_tokens)+` tokens`:``,()=>I(n)?es(I(t).input_cost):$o(I(t).input_tokens),()=>I(n)?$o(I(t).output_tokens)+` tokens`:``,()=>I(n)?es(I(t).output_cost):$o(I(t).output_tokens),()=>I(n)?BS(I(t),``):``,()=>I(n)?BS(I(t),$o(I(t).total_tokens)+` tokens -`+GS(I(t))):``,()=>I(n)?es(I(t).total_cost):$o(I(t).total_tokens)]),z(e,i)}),T(_),T(i),T(t),F(()=>{B(u,I(n)?`Input Cost`:`Input`),B(f,I(n)?`Output Cost`:`Output`),B(m,I(n)?`Total Cost`:`Total`)}),z(e,t)},p=e=>{var t=WC();px(M(t),{size:20,label:`Loading request log`}),T(t),z(e,t)},m=e=>{var t=GC();gx(M(t),{}),T(t),z(e,t)};V(d,e=>{J.usageLog.entries.length>0?e(f):J.usageLogLoading?e(p,1):e(m,-1)}),jC(P(d,2),{get total(){return J.usageLog.total},get offset(){return J.usageLog.offset},get limit(){return J.usageLog.limit},onprev:()=>J.usageLogPrevPage(),onnext:()=>J.usageLogNextPage()}),T(a),L(`change`,u,()=>J.fetchUsageLog(!0)),fa(u,()=>J.usageLogHideCached,e=>J.usageLogHideCached=e),z(e,a),D()}Hr([`click`,`change`]);var JC=R(`
        `);function YC(e,t){E(t,!0);let n=`usage`;An(()=>{K.refreshTick,Ha.page===n&&(J.fetchUsagePage(),hS.ensureLiveLogs())}),An(()=>{Ha.page===n&&(J.usageMode=Ha.sub===`costs`?`costs`:`tokens`)});var r=JC(),i=P(M(r),2),a=M(i);Dv(a,{ariaLabel:`Usage mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return J.usageMode},onchange:e=>J.toggleUsageMode(e)}),Js(P(a,2),{onchange:()=>J.fetchUsagePage()}),T(i);var o=P(i,2);sC(o,{});var s=P(o,2);pC(s,{});var c=P(s,2),l=M(c);kC(l,{kind:`model`});var u=P(l,2);kC(u,{kind:`userPath`}),kC(P(u,2),{kind:`label`}),T(c),qC(P(c,2),{}),T(r),z(e,r),D()}var XC=R(`
        `);function ZC(e,t){let n=ya(t,`label`,3,`Loading...`),r=ya(t,`class`,3,``);var i=XC(),a=P(M(i),2),o=M(a,!0);T(a),T(i),F(()=>{U(i,1,Fi([`loading-state`,r()]),`svelte-hzxv1d`),B(o,n())}),z(e,i)}var QC=R(``);function $C(e,t){let n=ya(t,`label`,3,``),r=ya(t,`class`,3,``),i=ya(t,`disabled`,3,!1);var a=QC();gi(M(a),()=>t.children??f),T(a),F(()=>{U(a,1,Fi([`table-action-btn`,r()])),W(a,`aria-label`,n()),W(a,`title`,n()),a.disabled=i()}),L(`click`,a,function(...e){t.onclick?.apply(this,e)}),z(e,a)}Hr([`click`]);async function ew(e,{label:t,errorFallback:n=`Unable to load ${t}.`,unavailableStatuses:r=[503],normalize:i=e=>Array.isArray(e)?e:[],options:a}){let o;try{o=await fo(e,{...a||{},label:t})}catch(e){return mo(e)||console.error(`Failed to fetch ${t}:`,e),{status:`error`,items:[],error:n,result:null}}return o.stale?{status:`stale`,items:[],error:``,result:o}:r.includes(o.status)?{status:`unavailable`,items:[],error:``,result:o}:o.ok?{status:`ok`,items:i(o.data),error:``,result:o}:{status:`error`,items:[],error:o.status===401?``:oo(o.data,n),result:o}}async function tw(e,t,n,{label:r,errorFallback:i=`Unable to ${r}.`,unavailableStatuses:a=[503],unavailableMessage:o=`This feature is unavailable on the gateway.`,options:s}){let c;try{c=await po(e,t,n,{...s||{},label:r})}catch(e){return mo(e)||console.error(`Failed to ${r}:`,e),{status:`error`,error:i,result:null}}return c.stale?{status:`stale`,error:``,result:c}:a.includes(c.status)?{status:`unavailable`,error:o,result:c}:c.ok?{status:`ok`,error:``,result:c}:{status:`error`,error:c.status===401?`Authentication required.`:oo(c.data,i),result:c}}function nw(){return{scope:`user_path`,subject:`/`,period:`daily`,period_seconds:86400,amount:``,source:`manual`}}function rw(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},label:{label:`Label`,chip:`label`,fieldLabel:`Label`,placeholder:`Mobile-App-iOS`}};return t[e]||t.user_path}function iw(){return[`user_path`,`label`].map(e=>({value:e,label:rw(e).label}))}function aw(e){return String(e&&e.scope||``).trim()||`user_path`}function ow(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function sw(e){return rw(aw(e)).chip}function cw(e){return aw(e)===`label`?`budget-label`:`budget-user-path`}function lw(e){return rw(String(e&&e.scope||``)).fieldLabel}function uw(e){return rw(String(e&&e.scope||``)).placeholder}function dw(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function fw(){return[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`},{value:`custom`,label:`Custom seconds`}]}function pw(e){switch(String(e||``).trim().toLowerCase()){case`hourly`:return 3600;case`daily`:return 86400;case`weekly`:return 604800;case`monthly`:return 2592e3;default:return 0}}function mw(e){switch(Number(e||0)){case 3600:return`hourly`;case 86400:return`daily`;case 604800:return`weekly`;case 2592e3:return`monthly`;default:return`custom`}}function hw(e){return aw(e)+`:`+ow(e)+`:`+String(e&&e.period_seconds||``)}function gw(e,t){if(!t||!Array.isArray(e))return null;let n=hw(t);return e.find(e=>hw(e)===n)||null}function _w(e){let t=String(e||``).trim();if(!t)return`User path is required.`;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function vw(e){if(_w(e))return``;let t=String(e||``).trim(),n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function yw(e){return`/`+String(e||``).trimStart().replace(/^\/+/,``)}function bw(e){return Array.isArray(e)?e:e&&Array.isArray(e.budgets)?e.budgets:[]}function xw(e){let t=Number(e&&e.period_seconds||0);return[ow(e),sw(e),Rw(e),mw(t),t?String(t)+`s`:``,t?String(t)+` seconds`:``].join(` `).toLowerCase()}var Sw={user_path:0,label:1};function Cw(e,t){let n=Array.isArray(e)?e.slice():[],r=String(t||`subject`);return n.sort((e,t)=>{let n=(Sw[aw(e)]||0)-(Sw[aw(t)]||0),i=ow(e).localeCompare(ow(t)),a=Number(t&&t.period_seconds||0)-Number(e&&e.period_seconds||0);return r===`period`?a||n||i:n||i||a}),n}function ww(e,t,n){let r=Array.isArray(e)?e:[],i=String(t||``).trim().toLowerCase();return Cw(i?r.filter(e=>xw(e).includes(i)):r.slice(),n)}function Tw(e){let t=e||{},n=aw(t),r=String(t.subject||``).trim();if(n===`user_path`){let e=_w(r);if(e)return{payload:null,error:e}}else if(!r)return{payload:null,error:`Label is required.`};let i=Number(t.amount);if(!Number.isFinite(i)||i<=0)return{payload:null,error:`Amount must be greater than 0.`};let a=String(t.period||``).trim(),o=pw(a);return a===`custom`&&(o=Number(t.period_seconds)),!Number.isFinite(o)||o<=0?{payload:null,error:`Period seconds must be greater than 0.`}:{payload:{scope:n,subject:n===`user_path`?vw(r):r,period_seconds:Math.trunc(o),amount:i,source:String(t.source||`manual`).trim()||`manual`},error:``}}function Ew(e){return{scope:aw(e),subject:ow(e),budget_key:{period_seconds:e.period_seconds},amount:e.amount}}function Dw(e){return{scope:aw(e),subject:ow(e),budget_key:{period_seconds:e.period_seconds}}}function Ow(e){return{scope:aw(e),subject:ow(e),period_seconds:e.period_seconds}}function kw(e){return es(e)}function Aw(e,t){let n=e||{},r=t||{};return`A budget for "`+((ow(n)||ow(r))+` `+Rw({period_seconds:n.period_seconds||r.period_seconds,period_label:r.period_label}))+`" already exists. Saving will override the current `+kw(r.amount)+` limit with `+kw(n.amount)+`.`}function jw(e){let t=Number(e);return!Number.isFinite(t)||t<0?0:t}function Mw(e,t){let n=jw(e);return Math.round((t?Math.min(n,1):n)*1e3)/10}function Nw(e){return jw(e&&e.usage_ratio)}function Pw(e){return Mw(Nw(e),!0)}function Fw(e){return Mw(e&&e.period_ratio,!0)}function Iw(e){return Mw(Nw(e),!1).toFixed(1).replace(/\.0$/,``)+`%`}function Lw(e){return Fw(e).toFixed(1).replace(/\.0$/,``)+`%`}function Rw(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`Hourly`;case 86400:return`Daily`;case 604800:return`Weekly`;case 2592e3:return`Monthly`;default:{let n=String(e&&e.period_label||``).trim();return n?`Custom `+n:`Custom `+String(t||``)+`s`}}}function zw(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`budget-period-label-hourly`;case 86400:return`budget-period-label-daily`;case 604800:return`budget-period-label-weekly`;case 2592e3:return`budget-period-label-monthly`;default:return`budget-period-label-custom`}}function Bw(e){return zw(e).replace(`budget-period-label-`,`budget-bar-fill-period-`)}function Vw(e){return zw(e).replace(`budget-period-label-`,`budget-bar-track-period-`)}function Hw(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`clock`;case 86400:return`sun`;case 604800:return`calendar-days`;case 2592e3:return`calendar`;default:return`settings-2`}}function Uw(e){let t=Math.max(0,Math.trunc(Number(e||0)));return t+` `+(t===1?`second`:`seconds`)}function Ww(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`1 hour`;case 86400:return`1 day`;case 604800:return`1 week`;case 2592e3:return`1 month`;default:return Uw(t)}}function Gw(e){return String(e&&e.source||``).trim()||`manual`}function Kw(e){let t=Gw(e).toLowerCase();return t===`manual`?`Created from the dashboard.`:t===`config`?`Loaded from configuration.`:`Budget source: `+t}function qw(e){let t=Number(e&&e.remaining);return Number.isFinite(t)?t<0?es(Math.abs(t))+` over`:es(t)+` remaining`:``}var Y=new class{#e=k(j([]));get budgets(){return I(this.#e)}set budgets(e){A(this.#e,e,!0)}#t=k(!0);get budgetsAvailable(){return I(this.#t)}set budgetsAvailable(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get filter(){return I(this.#r)}set filter(e){A(this.#r,e,!0)}#i=k(`subject`);get sortBy(){return I(this.#i)}set sortBy(e){A(this.#i,e,!0)}#a=k(``);get error(){return I(this.#a)}set error(e){A(this.#a,e,!0)}#o=k(!1);get formOpen(){return I(this.#o)}set formOpen(e){A(this.#o,e,!0)}#s=k(!1);get formSubmitting(){return I(this.#s)}set formSubmitting(e){A(this.#s,e,!0)}#c=k(``);get formError(){return I(this.#c)}set formError(e){A(this.#c,e,!0)}#l=k(!1);get editing(){return I(this.#l)}set editing(e){A(this.#l,e,!0)}#u=k(j(nw()));get form(){return I(this.#u)}set form(e){A(this.#u,e,!0)}#d=k(!1);get overrideDialogOpen(){return I(this.#d)}set overrideDialogOpen(e){A(this.#d,e,!0)}#f=k(null);get overridePendingPayload(){return I(this.#f)}set overridePendingPayload(e){A(this.#f,e,!0)}#p=k(null);get overrideExistingBudget(){return I(this.#p)}set overrideExistingBudget(e){A(this.#p,e,!0)}#m=k(``);get resettingKey(){return I(this.#m)}set resettingKey(e){A(this.#m,e,!0)}#h=k(``);get deletingKey(){return I(this.#h)}set deletingKey(e){A(this.#h,e,!0)}#g=k(!1);get resetAllLoading(){return I(this.#g)}set resetAllLoading(e){A(this.#g,e,!0)}#_=null;managementEnabled(){return _o.budgetsVisible()}filteredBudgets(){return ww(this.budgets,this.filter,this.sortBy)}async fetchBudgetsPage(){if(await _o.ensureLoaded(),!this.managementEnabled()){this.budgets=[],this.budgetsAvailable=!1,this.error=``;return}return this.#_||=this.fetchBudgets().finally(()=>{this.#_=null}),this.#_}async fetchBudgets(){this.loading=!0,this.error=``;let e=await ew(`/admin/budgets`,{label:`budgets`,errorFallback:`Unable to load budgets.`,normalize:bw});if(this.loading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.budgetsAvailable=!1,this.budgets=[];return}if(!e.result){this.budgets=[],this.error=e.error;return}if(this.budgetsAvailable=!0,e.status===`error`){this.error=e.error;return}this.budgets=e.items}}openForm(e){if(this.editing=!!e,this.formError=``,e){let t=Number(e.period_seconds||0);this.form={scope:aw(e),subject:ow(e),period:mw(t),period_seconds:t,amount:String(e.amount||``),source:String(e.source||`manual`)}}else this.form=nw();this.formOpen=!0}syncPeriodSeconds(){let e=pw(String(this.form.period||``).trim());e>0&&(this.form.period_seconds=e)}setFormSubject(e){this.form.subject=this.form.scope===`label`?String(e??``):yw(e)}syncScope(){dw(this.form)}closeForm(){this.closeOverrideDialog(),this.formOpen=!1,this.formSubmitting=!1,this.formError=``,this.editing=!1,this.form=nw()}async submitForm(){if(this.formSubmitting)return;let{payload:e,error:t}=Tw(this.form);if(!e){this.formError=t;return}if(!this.editing){let t=gw(this.budgets,e);if(t){this.openOverrideDialog(t,e);return}}await this.saveBudgetPayload(e)}async saveBudgetPayload(e){if(this.formSubmitting||!e)return;this.formSubmitting=!0,this.formError=``;let t=await tw(`/admin/budgets`,`PUT`,Ew(e),{label:`save budget`,errorFallback:`Unable to save budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.formSubmitting=!1,t.status!==`stale`){if(t.status===`unavailable`){this.budgetsAvailable=!1,this.formError=t.error;return}if(t.status===`error`){this.formError=t.error;return}this.closeForm(),q.success(`Budget saved.`),this.fetchBudgets()}}openOverrideDialog(e,t){this.overrideExistingBudget=e||null,this.overridePendingPayload=t||null,this.overrideDialogOpen=!0}closeOverrideDialog(){this.overrideDialogOpen=!1,this.overridePendingPayload=null,this.overrideExistingBudget=null}async confirmOverride(){if(!this.overridePendingPayload){this.closeOverrideDialog();return}let e=this.overridePendingPayload;this.closeOverrideDialog(),await this.saveBudgetPayload(e)}async resetBudget(e){if(!e)return;let t=hw(e);if(this.resettingKey===t)return;let n=ow(e)+` `+Rw(e);if(!confirm(`Reset budget "`+n+`"?`))return;this.resettingKey=t;let r=await tw(`/admin/budgets/reset-one`,`POST`,Ow(e),{label:`reset budget`,errorFallback:`Unable to reset budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.resettingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,q.error(r.error);return}if(r.status===`error`){q.error(r.error);return}q.success(`Budget reset.`),this.fetchBudgets()}}async deleteBudget(e){if(!e)return;let t=hw(e);if(this.deletingKey===t)return;let n=ow(e)+` `+Rw(e);if(!confirm(`Delete budget "`+n+`"? This cannot be undone.`))return;this.deletingKey=t;let r=await tw(`/admin/budgets`,`DELETE`,Dw(e),{label:`delete budget`,errorFallback:`Unable to delete budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.deletingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,q.error(r.error);return}if(r.status===`error`){q.error(r.error);return}this.budgets=bw(r.result.data),q.success(`Budget deleted.`)}}openResetDialog(){jo.open({title:`Reset Budgets`,titleId:`budgetResetDialogTitle`,inputId:`budget-reset-confirmation`,requiredText:`reset`,confirmLabel:`Reset All Budgets`,icon:`rotate-ccw`,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.resetAllBudgets()})}async resetAllBudgets(){if(this.resetAllLoading)return;this.resetAllLoading=!0;let e=await tw(`/admin/budgets/reset`,`POST`,{confirmation:`reset`},{label:`reset budgets`,errorFallback:`Unable to reset budgets.`,unavailableStatuses:[]});if(this.resetAllLoading=!1,e.status!==`stale`){if(e.status!==`ok`){jo.error=e.error;return}jo.close(),q.success(`Budgets reset.`),Ha.page===`budgets`&&this.fetchBudgets()}}},Jw=R(` Edit`,1),Yw=R(` `,1),Xw=R(`
        Usage
        Period
        `),Zw=R(`
        `);function Qw(e,t){E(t,!0);let n=ya(t,`budgets`,19,()=>[]);function r(e){if(!e)return``;let t=ao.formatTimestamp(e);return!t||t===`-`?``:t+` `+ao.effectiveTimeZoneLabel()}var i=Zw();H(i,21,n,e=>hw(e),(e,t)=>{var n=Xw(),i=M(n),a=M(i),o=M(a),s=M(o),c=e=>{G(e,{name:`tag`,class:`budget-scope-icon`})},l=O(()=>aw(I(t))===`label`);V(s,e=>{I(l)&&e(c)});var u=P(s);T(o);var d=P(o,2),f=M(d),p=M(f);{let e=O(()=>Hw(I(t)));G(p,{get name(){return I(e)},class:`budget-period-icon`})}var m=P(p,2),h=M(m,!0);T(m),T(f),T(d);var g=P(d,2),_=M(g),v=M(_),y=M(v,!0);T(v),T(_);var b=P(_,2),x=M(b);$C(x,{label:`Edit budget`,class:`budget-action-btn`,onclick:()=>Y.openForm(I(t)),children:(e,t)=>{var n=Jw();G(N(n),{name:`pencil`,class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}});var S=P(x,2);{let e=O(()=>Y.resettingKey===hw(I(t))?`Resetting budget`:`Reset budget`),n=O(()=>Y.resettingKey===hw(I(t)));$C(S,{get label(){return I(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>Y.resetBudget(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=Yw(),i=N(r);G(i,{name:`rotate-ccw`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>Y.resettingKey===hw(I(t))?`Resetting`:`Reset`]),z(e,r)},$$slots:{default:!0}})}var C=P(S,2);{let e=O(()=>Y.deletingKey===hw(I(t))?`Deleting budget`:`Delete budget`),n=O(()=>Y.deletingKey===hw(I(t)));$C(C,{get label(){return I(e)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>Y.deleteBudget(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=Yw(),i=N(r);G(i,{name:`trash-2`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>Y.deletingKey===hw(I(t))?`Deleting`:`Delete`]),z(e,r)},$$slots:{default:!0}})}T(b),T(g),T(a);var w=P(a,2),ee=M(w),te=M(ee),ne=P(M(te),2),re=M(ne,!0);T(ne),T(te);var ie=P(te,2),ae=M(ie);let oe;var se=P(ae,2),ce=M(se),le=M(ce,!0);T(ce);var ue=P(ce,2),de=M(ue,!0);T(ue),T(se);var fe=P(se,2),pe=M(fe),me=M(pe,!0);T(pe);var he=P(pe,2),ge=M(he,!0);T(he),T(fe),T(ie),T(ee);var _e=P(ee,2),ve=M(_e),ye=P(M(ve),2),be=M(ye,!0);T(ye),T(ve);var xe=P(ve,2),Se=M(xe),Ce=P(Se,2),we=M(Ce),Te=M(we,!0);T(we);var Ee=P(we,2),De=M(Ee,!0);T(Ee);var Oe=P(Ee,2),ke=M(Oe,!0);T(Oe),T(Ce);var Ae=P(Ce,2),je=M(Ae),Me=M(je,!0);T(je);var Ne=P(je,2),Pe=M(Ne,!0);T(Ne);var Fe=P(Ne,2),Ie=M(Fe,!0);T(Fe),T(Ae),T(xe),T(_e),T(w),T(i),T(n),F((e,t,n,r,i,a,s,c,l,d,p,m,g,_,b,x,S,C,w,ee,te,ne,se,ce,ue,fe,pe,he,_e,ve)=>{U(o,1,`budget-scope-value ${e??``}`,`svelte-1jm56wo`),Hi(o,t),W(o,`title`,n),B(u,` ${r??``}`),U(f,1,`budget-period-label ${i??``}`,`svelte-1jm56wo`),B(h,a),W(v,`title`,s),B(y,c),B(re,l),W(ie,`aria-valuenow`,d),W(ie,`aria-label`,p),Hi(ie,`--budget-progress: ${m??``}%`),oe=U(ae,1,`budget-bar-fill budget-bar-fill-usage`,null,oe,g),B(le,_),B(de,b),B(me,x),B(ge,S),B(be,C),U(xe,1,`budget-bar-track ${w??``}`,`svelte-1jm56wo`),W(xe,`aria-valuenow`,ee),Hi(xe,`--budget-progress: ${te??``}%`),U(Se,1,`budget-bar-fill budget-bar-fill-period ${ne??``}`,`svelte-1jm56wo`),W(we,`title`,se),B(Te,ce),B(De,ue),W(Oe,`title`,fe),B(ke,pe),B(Me,he),B(Pe,_e),B(Ie,ve)},[()=>cw(I(t)),()=>aw(I(t))===`label`?`--label-color: `+Fv(ow(I(t))):void 0,()=>sw(I(t))+`: `+ow(I(t)),()=>ow(I(t)),()=>zw(I(t)),()=>Rw(I(t)),()=>Kw(I(t)),()=>Gw(I(t)),()=>Iw(I(t)),()=>Pw(I(t)),()=>`Budget usage: `+es(I(t).spent)+` of `+es(I(t).amount)+`, `+qw(I(t)),()=>Pw(I(t)),()=>({"budget-bar-fill-danger":Nw(I(t))>=1}),()=>es(I(t).spent)+` of `+es(I(t).amount),()=>qw(I(t)),()=>es(I(t).spent)+` of `+es(I(t).amount),()=>qw(I(t)),()=>Lw(I(t)),()=>Vw(I(t)),()=>Fw(I(t)),()=>Fw(I(t)),()=>Bw(I(t)),()=>r(I(t).period_start),()=>ao.formatTimestamp(I(t).period_start),()=>Ww(I(t)),()=>r(I(t).period_end),()=>ao.formatTimestamp(I(t).period_end),()=>ao.formatTimestamp(I(t).period_start),()=>Ww(I(t)),()=>ao.formatTimestamp(I(t).period_end)]),z(e,n)}),T(i),z(e,i),D()}var $w=R(`

        `,1),eT=R(``),tT=R(``),nT=R(`
        `);function rT(e,t){E(t,!0);let n=ya(t,`open`,3,!1),r=ya(t,`title`,3,``),i=ya(t,`ariaLabel`,3,``),a=ya(t,`error`,3,``),o=ya(t,`submitting`,3,!1),s=ya(t,`submitDisabled`,3,!1),c=ya(t,`submitLabel`,3,`Save`),l=ya(t,`submittingLabel`,3,`Saving...`),u=ya(t,`submitIcon`,3,`save`),d=ya(t,`cancel`,3,!0),p=ya(t,`dialogClass`,3,``),m=ya(t,`novalidate`,3,!1),h=ya(t,`canClose`,3,()=>!0);function g(){K.dialogOpen||h()()&&t.onclose?.()}Eo(e,{get open(){return n()},variant:`editor`,onclose:g,children:(e,n)=>{var h=nT(),g=M(h),_=M(g),v=M(_),y=M(v),b=e=>{var n=Qr();gi(N(n),()=>t.header),z(e,n)},x=e=>{var n=$w(),i=N(n),a=M(i,!0);T(i);var o=P(i,2),s=e=>{var n=Qr();gi(N(n),()=>t.headerHint),z(e,n)};V(o,e=>{t.headerHint&&e(s)}),F(()=>B(a,r())),z(e,n)};V(y,e=>{t.header?e(b):e(x,-1)}),T(v);var S=P(v,2);{let e=O(()=>`Close `+(i()||r()).toLowerCase());wo(S,{get label(){return I(e)},onclick:()=>t.onclose?.()})}T(_);var C=P(_,2);gi(C,()=>t.children??f);var w=P(C,2),ee=e=>{var t=eT(),n=M(t,!0);T(t),F(()=>B(n,a())),z(e,t)};V(w,e=>{a()&&e(ee)});var te=P(w,2),ne=M(te),re=e=>{var n=tT();L(`click`,n,()=>t.onclose?.()),z(e,n)};V(ne,e=>{d()&&e(re)});var ie=P(ne,2),ae=e=>{var n=Qr();gi(N(n),()=>t.extraActions),z(e,n)};V(ie,e=>{t.extraActions&&e(ae)});var oe=P(ie,2),se=M(oe);G(se,{get name(){return u()},class:`form-action-icon`});var ce=P(se,2),le=M(ce,!0);T(ce),T(oe),T(te),T(g),T(h),F(()=>{U(h,1,Fi([`model-editor`,p()])),W(h,`aria-label`,i()||r()),g.noValidate=m(),oe.disabled=o()||s(),B(le,o()?l():c())}),Vr(`submit`,g,e=>{e.preventDefault(),t.onsubmit?.()}),z(e,h)},$$slots:{default:!0}}),D()}Hr([`click`]);var iT=R(`
        `);function aT(e,t){let n=ya(t,`label`,3,``);var r=iT(),i=M(r),a=M(i,!0);T(i),gi(P(i,2),()=>t.children??f),T(r),F(()=>{W(i,`for`,t.id),B(a,n())}),z(e,r)}var oT=R(``),sT=R(``),cT=R(``),lT=R(``),uT=R(``),dT=R(``),fT=R(`

        Editing a budget updates its limit only. Use Reset to start a new - budget period.

        `),pT=R(`
        `,1),mT=R(``),hT=R(` `,1);function gT(e,t){E(t,!0);function n(e){Y.setFormSubject(e.target.value),e.target.value=Y.form.subject}var r=hT(),i=N(r);{let e=O(()=>Y.editing?`Edit Budget`:`Create Budget`);rT(i,{get open(){return Y.formOpen},get title(){return I(e)},ariaLabel:`Budget editor`,get error(){return Y.formError},get submitting(){return Y.formSubmitting},submitLabel:`Save Budget`,dialogClass:`budget-editor`,canClose:()=>!Y.overrideDialogOpen,onclose:()=>Y.closeForm(),onsubmit:()=>Y.submitForm(),children:(e,t)=>{var r=pT(),i=N(r),a=M(i);aT(a,{id:`budget-scope`,label:`Scope`,children:(e,t)=>{var n=sT();H(n,21,iw,e=>e.value,(e,t)=>{var n=oT(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),F(()=>n.disabled=Y.editing),L(`change`,n,()=>Y.syncScope()),Gi(n,()=>Y.form.scope,e=>Y.form.scope=e),z(e,n)},$$slots:{default:!0}});var o=P(a,2);{let e=O(()=>lw(Y.form));aT(o,{id:`budget-subject`,get label(){return I(e)},children:(e,t)=>{var r=cT();na(r),F(e=>{W(r,`placeholder`,e),ra(r,Y.form.subject),r.disabled=Y.editing,W(r,`data-modal-autofocus`,!Y.editing||void 0)},[()=>uw(Y.form)]),L(`input`,r,n),z(e,r)},$$slots:{default:!0}})}var s=P(o,2);aT(s,{id:`budget-period`,label:`Period`,children:(e,t)=>{var n=lT();H(n,21,fw,e=>e.value,(e,t)=>{var n=oT(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),F(()=>n.disabled=Y.editing),L(`change`,n,()=>Y.syncPeriodSeconds()),Gi(n,()=>Y.form.period,e=>Y.form.period=e),z(e,n)},$$slots:{default:!0}});var c=P(s,2),l=e=>{aT(e,{id:`budget-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=uT();na(n),F(()=>n.disabled=Y.editing),da(n,()=>Y.form.period_seconds,e=>Y.form.period_seconds=e),z(e,n)},$$slots:{default:!0}})};V(c,e=>{Y.form.period===`custom`&&e(l)}),aT(P(c,2),{id:`budget-amount`,label:`Amount`,children:(e,t)=>{var n=dT();na(n),F(()=>W(n,`data-modal-autofocus`,Y.editing||void 0)),da(n,()=>Y.form.amount,e=>Y.form.amount=e),z(e,n)},$$slots:{default:!0}}),T(i);var u=P(i,2),d=e=>{z(e,fT())};V(u,e=>{Y.editing&&e(d)}),z(e,r)},$$slots:{default:!0}})}Eo(P(i,2),{get open(){return Y.overrideDialogOpen},variant:`auth`,onclose:()=>Y.closeOverrideDialog(),children:(e,t)=>{var n=mT(),r=M(n);wo(P(M(r),2),{label:`Close budget override dialog`,onclick:()=>Y.closeOverrideDialog(),class:`auth-dialog-close`,iconClass:``}),T(r);var i=P(r,2),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=P(c,2),u=M(l);G(u,{name:`save`,class:`form-action-icon`});var d=P(u,2),f=M(d,!0);T(d),T(l),T(s),T(i),T(n),F(e=>{B(o,e),l.disabled=Y.formSubmitting,B(f,Y.formSubmitting?`Saving...`:`Override Budget`)},[()=>Aw(Y.overridePendingPayload,Y.overrideExistingBudget)]),Vr(`submit`,i,e=>{e.preventDefault(),Y.confirmOverride()}),L(`click`,c,()=>Y.closeOverrideDialog()),z(e,n)},$$slots:{default:!0}}),z(e,r),D()}Hr([`change`,`input`,`click`]);var _T=R(`

        Budgets

        `),vT=R(``),yT=R(`
        Budget management is unavailable.
        `),bT=R(``),xT=R(`
        `),ST=R(`

        No budgets configured yet.

        `),CT=R(`

        No budgets match your filter.

        `),wT=R(`
        `);function TT(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`budgets`&&Y.fetchBudgetsPage()});let n=O(()=>Y.filteredBudgets());var r=wT(),i=M(r),a=M(i);Rx(M(a),{copyId:`budgets-help-copy`,label:`budgets help`,title:e=>{z(e,_T())},help:e=>{Ue(),z(e,Zr(`Budgets are evaluated from tracked usage cost records for each user - path subtree. Enforcement runs only when Budget is enabled for the - active workflow.`))},$$slots:{title:!0,help:!0}}),T(a);var o=P(a,2),s=M(o),c=e=>{var t=vT();G(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=Y.formSubmitting),L(`click`,t,()=>Y.openForm()),z(e,t)},l=O(()=>Y.managementEnabled()&&Y.budgetsAvailable&&!K.authError);V(s,e=>{I(l)&&e(c)}),T(o),T(i);var u=P(i,2);Os(u,{});var d=P(u,2),f=e=>{z(e,yT())},p=O(()=>(!Y.managementEnabled()||!Y.budgetsAvailable)&&!K.authError);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{var t=bT(),n=M(t,!0);T(t),F(()=>B(n,Y.error)),z(e,t)};V(m,e=>{Y.error&&!K.authError&&e(h)});var g=P(m,2),_=e=>{ZC(e,{label:`Loading budgets...`})};V(g,e=>{Y.loading&&!K.authError&&e(_)});var v=P(g,2),y=e=>{var t=xT(),n=M(t);nC(M(n),{id:`budget-filter`,placeholder:`Filter by user path, label, or period...`,label:`Filter budgets by user path or period`,get value(){return Y.filter},set value(e){Y.filter=e}}),T(n);var r=P(n,2),i=P(M(r),2),a=M(i);a.value=a.__value=`subject`;var o=P(a);o.value=o.__value=`period`,T(i),T(r),T(t),Gi(i,()=>Y.sortBy,e=>Y.sortBy=e),z(e,t)};V(v,e=>{(Y.budgets.length>0||Y.filter)&&Y.budgetsAvailable&&!K.authError&&!Y.formOpen&&e(y)});var b=P(v,2);gT(b,{});var x=P(b,2),S=e=>{Qw(e,{get budgets(){return I(n)}})};V(x,e=>{I(n).length>0&&Y.budgetsAvailable&&!K.authError&&e(S)});var C=P(x,2),w=e=>{z(e,ST())},ee=O(()=>Y.budgets.length===0&&!Y.filter&&!Y.loading&&!K.authError&&!Y.error&&Y.budgetsAvailable&&Y.managementEnabled());V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{z(e,CT())},re=O(()=>Y.budgets.length>0&&I(n).length===0&&Y.filter&&!Y.loading&&!K.authError&&!Y.error&&Y.budgetsAvailable&&Y.managementEnabled());V(te,e=>{I(re)&&e(ne)}),T(r),z(e,r),D()}Hr([`click`]);function ET(){return{scope:`user_path`,subject:`/`,period:`minute`,period_seconds:60,max_requests:``,max_tokens:``,source:`manual`}}function DT(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},provider:{label:`Provider`,chip:`provider`,fieldLabel:`Provider Name`,placeholder:`openai`},model:{label:`Model`,chip:`model`,fieldLabel:`Model`,placeholder:`openai/gpt-4o`}};return t[e]||t.user_path}function OT(){return[`user_path`,`provider`,`model`].map(e=>({value:e,label:DT(e).label}))}function kT(e){return String(e&&e.scope||``).trim()||`user_path`}function AT(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function jT(e){return DT(kT(e)).chip}function MT(e){return DT(String(e&&e.scope||``)).fieldLabel}function NT(e){return DT(String(e&&e.scope||``)).placeholder}function PT(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function FT(){return[{value:`minute`,label:`Per minute`},{value:`hour`,label:`Per hour`},{value:`day`,label:`Per day`},{value:`concurrent`,label:`Concurrent (in-flight)`},{value:`custom`,label:`Custom seconds`}]}function IT(e){switch(String(e||``).trim().toLowerCase()){case`minute`:return 60;case`hour`:return 3600;case`day`:return 86400;case`concurrent`:return 0;default:return-1}}function LT(e){switch(Number(e||0)){case 60:return`minute`;case 3600:return`hour`;case 86400:return`day`;case 0:return`concurrent`;default:return`custom`}}function RT(e){let t=String(e&&e.period||``).trim(),n=IT(t);n>=0&&(e.period_seconds=n),t===`concurrent`&&(e.max_tokens=``)}function zT(e){return kT(e)+`:`+AT(e)+`:`+String(e&&e.period_seconds||`0`)}function BT(e){return Number(e&&e.period_seconds||0)===0}function VT(e){return String(e&&e.period_label||``).trim()||LT(Number(e&&e.period_seconds||0))}function HT(e){return String(e&&e.source||``)===`config`?`config`:`manual`}function UT(e){return String(e&&e.source||``)===`config`}function WT(e){let t=Number(e);return Number.isFinite(t)?t.toLocaleString():`0`}function GT(e,t){let n=Number(e),r=Number(t);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=0)return 0;let i=Math.round(n/r*100);return Math.min(Math.max(i,0),100)}function KT(e,t){let n=String(t||``).trim().toLowerCase(),r=Array.isArray(e)?e.slice():[],i={user_path:0,provider:1,model:2};return r.sort((e,t)=>{let n=(i[kT(e)]||0)-(i[kT(t)]||0);if(n!==0)return n;let r=AT(e).localeCompare(AT(t));return r===0?Number(e.period_seconds||0)-Number(t.period_seconds||0):r}),n?r.filter(e=>{let t=AT(e).toLowerCase(),r=jT(e).toLowerCase(),i=VT(e).toLowerCase();return t.includes(n)||r.includes(n)||i.includes(n)}):r}function qT(e){return!e||!Array.isArray(e.rate_limits)?[]:e.rate_limits}function JT(e,t,n){let r=String(t||``).trim();return r=e===`provider`||e===`model`?r.toLowerCase():`/`+r.split(`/`).map(e=>e.trim()).filter(Boolean).join(`/`),e+`:`+r+`:`+Number(n||0)}function YT(e,t){return e?JT(t.scope,t.subject,t.limit_key.period_seconds)!==JT(e.scope,e.subject,e.period_seconds):!1}function XT(e){let t=e||{},n=String(t.scope||`user_path`),r=String(t.subject||``).trim();if(n!==`user_path`&&!r)return{error:MT(t)+` is required.`};let i=String(t.period||``)===`concurrent`,a=t.period_seconds;if(a===``||a==null)return{error:`Period seconds is required.`};let o=Number(a);if(!Number.isInteger(o)||o<0||o===0&&!i)return{error:`Period seconds must be a positive integer (0 only for the concurrent period).`};let s=String(t.max_requests===void 0||t.max_requests===null?``:t.max_requests).trim(),c=String(t.max_tokens===void 0||t.max_tokens===null?``:t.max_tokens).trim();if(!s&&!c)return{error:`Set max requests, max tokens, or both.`};if(i&&c)return{error:`Token limits are not valid for the concurrent period.`};let l={scope:n,subject:r||`/`,limit_key:{period_seconds:o}};if(s){let e=Number(s);if(!Number.isInteger(e)||e<=0)return{error:`Max requests must be a positive integer.`};l.max_requests=e}if(c){let e=Number(c);if(!Number.isInteger(e)||e<=0)return{error:`Max tokens must be a positive integer.`};l.max_tokens=e}return{payload:l}}function ZT(e,t,n){if(kT(e)!==`model`)return!1;let r=String(AT(e)).toLowerCase(),i=String(n||``).trim().toLowerCase();if(!i)return!1;if(r===i)return!0;let a=String(t||``).trim().toLowerCase();return a?r===a+`/`+i||i.startsWith(a+`/`)&&r===i.slice(a.length+1):!1}function QT(e,t){return kT(e)===`provider`&&String(AT(e)).toLowerCase()===String(t||``).trim().toLowerCase()}function $T(e){let t=e||{},n=String(t.model||``),r=String(t.provider||``);return!r||n.toLowerCase().startsWith(r+`/`)?n:r+`/`+n}function eE(e,t){let n=e||{},r=Array.isArray(t)?t:[],i=[];return n.kind===`model`&&i.push({key:`model`,title:`Model limits`,scope:`model`,subject:$T(n),hint:``,items:r.filter(e=>ZT(e,n.provider,n.model))}),i.push({key:`provider`,title:`Provider limits (`+n.provider+`)`,scope:`provider`,subject:n.provider,hint:n.kind===`model`?`Shared by every model routed to this provider.`:``,items:r.filter(e=>QT(e,n.provider))}),i.push({key:`global`,title:`Global limits`,scope:`user_path`,subject:`/`,hint:`Root user-path rules throttle all traffic. Narrower user-path rules also apply, per consumer.`,items:r.filter(e=>kT(e)===`user_path`&&AT(e)===`/`)}),i}function tE(e){return BT(e)?GT(e.in_flight,e.max_requests):Math.max(GT(e.requests_used,e.max_requests),GT(e.tokens_used,e.max_tokens))}function nE(e){return`--rate-limit-pressure: `+tE(e)+`%`}function rE(e){let t=tE(e);return t>=100?`rate-limit-pressure-row rate-limit-pressure-full`:t>=75?`rate-limit-pressure-row rate-limit-pressure-high`:`rate-limit-pressure-row`}function iE(e){return(Array.isArray(e)?e:[]).some(e=>kT(e)===`user_path`&&AT(e)===`/`)}function aE(e,t,n){let r=Array.isArray(e)?e:[];return r.some(e=>ZT(e,t,n))?`table-action-btn-active`:r.some(e=>QT(e,t))||iE(r)?`rate-limit-gauge-inherited`:``}function oE(e,t){let n=Array.isArray(e)?e:[];return n.some(e=>QT(e,t))?`table-action-btn-active`:iE(n)?`rate-limit-gauge-inherited`:``}function sE(e,t){let n=`Rate limits for `+e;return t===`table-action-btn-active`?n+` (direct limits configured)`:t?n+` (inherited limits apply)`:n}function cE(e){if(BT(e))return WT(e.in_flight)+` of `+WT(e.max_requests)+` in flight`;let t=[];return e.max_requests!==null&&e.max_requests!==void 0&&t.push(WT(e.requests_used)+`/`+WT(e.max_requests)+` req`),e.max_tokens!==null&&e.max_tokens!==void 0&&t.push(WT(e.tokens_used)+`/`+WT(e.max_tokens)+` tok`),t.join(` · `)}var X=new class{#e=k(j([]));get rateLimits(){return I(this.#e)}set rateLimits(e){A(this.#e,e,!0)}#t=k(!0);get rateLimitsAvailable(){return I(this.#t)}set rateLimitsAvailable(e){A(this.#t,e,!0)}#n=k(!1);get rateLimitsLoading(){return I(this.#n)}set rateLimitsLoading(e){A(this.#n,e,!0)}rateLimitFetchPromise=null;#r=k(``);get rateLimitFilter(){return I(this.#r)}set rateLimitFilter(e){A(this.#r,e,!0)}#i=k(``);get rateLimitError(){return I(this.#i)}set rateLimitError(e){A(this.#i,e,!0)}#a=k(!1);get rateLimitFormOpen(){return I(this.#a)}set rateLimitFormOpen(e){A(this.#a,e,!0)}#o=k(!1);get rateLimitFormSubmitting(){return I(this.#o)}set rateLimitFormSubmitting(e){A(this.#o,e,!0)}#s=k(``);get rateLimitFormError(){return I(this.#s)}set rateLimitFormError(e){A(this.#s,e,!0)}#c=k(!1);get rateLimitEditing(){return I(this.#c)}set rateLimitEditing(e){A(this.#c,e,!0)}rateLimitEditingOriginal=null;rateLimitFormReturnToInspector=!1;#l=k(``);get rateLimitResettingKey(){return I(this.#l)}set rateLimitResettingKey(e){A(this.#l,e,!0)}#u=k(``);get rateLimitDeletingKey(){return I(this.#u)}set rateLimitDeletingKey(e){A(this.#u,e,!0)}#d=k(!1);get rateLimitInspectorOpen(){return I(this.#d)}set rateLimitInspectorOpen(e){A(this.#d,e,!0)}#f=k(j({kind:``,provider:``,model:``,title:``}));get rateLimitInspector(){return I(this.#f)}set rateLimitInspector(e){A(this.#f,e,!0)}#p=k(j(ET()));get rateLimitForm(){return I(this.#p)}set rateLimitForm(e){A(this.#p,e,!0)}rateLimitsEnabled(){return _o.rateLimitsVisible()}defaultRateLimitForm(){return ET()}rateLimitScopeMeta(e){return DT(e)}rateLimitScopeOptions(){return OT()}rateLimitScope(e){return kT(e)}rateLimitSubject(e){return AT(e)}rateLimitScopeLabel(e){return jT(e)}rateLimitSubjectFieldLabel(){return MT(this.rateLimitForm)}rateLimitSubjectPlaceholder(){return NT(this.rateLimitForm)}syncRateLimitScope(){PT(this.rateLimitForm)}rateLimitPeriodOptions(){return FT()}rateLimitPeriodSeconds(e){return IT(e)}rateLimitPeriodFromSeconds(e){return LT(e)}syncRateLimitPeriodSeconds(){RT(this.rateLimitForm)}rateLimitKey(e){return zT(e)}rateLimitIsConcurrent(e){return BT(e)}rateLimitPeriodLabel(e){return VT(e)}rateLimitSourceLabel(e){return HT(e)}rateLimitIsReadOnly(e){return UT(e)}formatRateLimitNumber(e){return WT(e)}rateLimitUsagePercent(e,t){return GT(e,t)}filteredRateLimits(){return KT(this.rateLimits,this.rateLimitFilter)}normalizeRateLimitListPayload(e){return qT(e)}async fetchRateLimitsPage(){if(await _o.ensureLoaded(),!this.rateLimitsEnabled()){this.rateLimits=[],this.rateLimitsAvailable=!1,this.rateLimitError=``;return}return this.rateLimitFetchPromise||=this.fetchRateLimits().finally(()=>{this.rateLimitFetchPromise=null}),this.rateLimitFetchPromise}async fetchRateLimits(){this.rateLimitsLoading=!0,this.rateLimitError=``;let e=await ew(`/admin/rate-limits`,{label:`rate limits`,errorFallback:`Unable to load rate limits.`,normalize:qT});if(this.rateLimitsLoading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.rateLimitsAvailable=!1,this.rateLimits=[];return}if(!e.result){this.rateLimits=[],this.rateLimitError=e.error;return}if(this.rateLimitsAvailable=!0,e.status===`error`){this.rateLimitError=e.error;return}this.rateLimits=e.items}}openRateLimitForm(e){if(this.rateLimitEditing=!!e,this.rateLimitFormError=``,e){let t=Number(e.period_seconds||0);this.rateLimitEditingOriginal={scope:kT(e),subject:AT(e),period_seconds:t},this.rateLimitForm={scope:kT(e),subject:AT(e),period:LT(t),period_seconds:t,max_requests:e.max_requests===null||e.max_requests===void 0?``:String(e.max_requests),max_tokens:e.max_tokens===null||e.max_tokens===void 0?``:String(e.max_tokens),source:String(e.source||`manual`)}}else this.rateLimitEditingOriginal=null,this.rateLimitForm=ET();this.rateLimitFormOpen=!0}closeRateLimitForm(){this.rateLimitFormOpen=!1,this.rateLimitFormSubmitting=!1,this.rateLimitFormError=``,this.rateLimitEditing=!1,this.rateLimitEditingOriginal=null,this.rateLimitForm=ET(),this.rateLimitFormReturnToInspector&&(this.rateLimitFormReturnToInspector=!1,this.rateLimitInspectorOpen=!0)}rateLimitNormalizedIdentity(e,t,n){return JT(e,t,n)}rateLimitIdentityMoved(e){return YT(this.rateLimitEditingOriginal,e)}setRateLimitFormSubject(e){this.rateLimitForm.subject=String(e||``)}rateLimitFormPayload(){return XT(this.rateLimitForm)}async submitRateLimitForm(){if(this.rateLimitFormSubmitting)return;let{payload:e,error:t}=this.rateLimitFormPayload();if(t){this.rateLimitFormError=t;return}let n=this.rateLimitIdentityMoved(e),r=this.rateLimitEditingOriginal;this.rateLimitFormSubmitting=!0,this.rateLimitFormError=``;try{let t=await tw(`/admin/rate-limits`,`PUT`,e,{label:`save rate limit`,errorFallback:`Unable to save rate limit.`,unavailableStatuses:[]});if(t.status===`stale`)return;if(t.status!==`ok`){this.rateLimitFormError=t.error;return}if(this.rateLimits=qT(t.result.data),n&&!await this.deleteMovedRateLimitOriginal(r))return;this.closeRateLimitForm(),q.success(n?`Rate limit moved; live counters restarted.`:`Rate limit saved.`)}finally{this.rateLimitFormSubmitting=!1}}async deleteMovedRateLimitOriginal(e){let t=await tw(`/admin/rate-limits`,`DELETE`,{scope:e.scope,subject:e.subject,limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`remove the moved rate limit`,errorFallback:`The new rule was saved, but the previous one could not be removed. Delete it manually.`,unavailableStatuses:[]});return t.status===`stale`?!1:t.status===`ok`?(this.rateLimits=qT(t.result.data),!0):(this.rateLimitFormError=t.error,!1)}async deleteRateLimit(e){let t=zT(e);if(this.rateLimitDeletingKey===t)return;this.rateLimitDeletingKey=t;let n=await tw(`/admin/rate-limits`,`DELETE`,{scope:kT(e),subject:AT(e),limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`delete rate limit`,errorFallback:`Unable to delete rate limit.`,unavailableStatuses:[]});if(this.rateLimitDeletingKey=``,n.status!==`stale`){if(n.status!==`ok`){q.error(n.error);return}this.rateLimits=qT(n.result.data),q.success(`Rate limit deleted.`)}}async resetRateLimit(e){let t=zT(e);if(this.rateLimitResettingKey===t)return;this.rateLimitResettingKey=t;let n=await tw(`/admin/rate-limits/reset-one`,`POST`,{scope:kT(e),subject:AT(e),period_seconds:Number(e.period_seconds||0)},{label:`reset rate limit`,errorFallback:`Unable to reset rate limit.`,unavailableStatuses:[]});if(this.rateLimitResettingKey=``,n.status!==`stale`){if(n.status!==`ok`){q.error(n.error);return}this.rateLimits=qT(n.result.data),q.success(`Rate limit counters reset.`)}}rateLimitInspectorModelID(e){return String(e&&e.model&&e.model.id||``).trim()}openRateLimitInspectorForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`model`,provider:n,model:t,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}openRateLimitInspectorForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`provider`,provider:t,model:``,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}showRateLimitInspector(){this.rateLimitInspectorOpen=!0,this.fetchRateLimitsPage()}closeRateLimitInspector(){this.rateLimitInspectorOpen=!1}rateLimitRuleMatchesModel(e,t,n){return ZT(e,t,n)}rateLimitRuleMatchesProvider(e,t){return QT(e,t)}rateLimitInspectorQualifiedModel(){return $T(this.rateLimitInspector)}rateLimitInspectorSections(){return eE(this.rateLimitInspector,this.rateLimits)}rateLimitPressurePercent(e){return tE(e)}rateLimitPressureStyle(e){return nE(e)}rateLimitPressureClass(e){return rE(e)}rateLimitGaugeCache={rules:null,states:{}};rateLimitGaugeMemo(e,t){this.rateLimitGaugeCache.rules!==this.rateLimits&&(this.rateLimitGaugeCache={rules:this.rateLimits,states:{}});let n=this.rateLimitGaugeCache.states;return e in n||(n[e]=t()),n[e]}rateLimitGaugeClassForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase(),r=this.rateLimits;return this.rateLimitGaugeMemo(`model:`+n+`/`+t,()=>aE(r,n,t))}rateLimitGaugeClassForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase(),n=this.rateLimits;return this.rateLimitGaugeMemo(`provider:`+t,()=>oE(n,t))}hasGlobalRateLimits(){let e=this.rateLimits;return this.rateLimitGaugeMemo(`global`,()=>iE(e))}rateLimitGaugeTitle(e,t){return sE(e,t)}rateLimitInspectorSummary(e){return cE(e)}openRateLimitFormFromInspector(e,t,n){this.rateLimitInspectorOpen=!1,this.rateLimitFormReturnToInspector=!0,this.openRateLimitForm(n||void 0),n||(this.rateLimitForm.scope=e,this.rateLimitForm.subject=t)}},lE=R(``),uE=R(``),dE=R(``),fE=R(``),pE=R(``),mE=R(``),hE=R(``),gE=R(`

        Scope, subject, and period identify the rule: changing any of them - moves the rule to a new key and restarts its live counters.

        `),_E=R(`

        A user path rule limits the whole subtree; provider and model rules cap - all traffic routed there and make load balancing skip the target while - it is saturated. One shared counter per rule. Leave a field empty to - skip that limit. Token limits require usage tracking.

        `,1);function vE(e,t){E(t,!0);{let t=O(()=>X.rateLimitEditing?`Edit Rate Limit`:`Create Rate Limit`);rT(e,{get open(){return X.rateLimitFormOpen},get title(){return I(t)},ariaLabel:`Rate limit editor`,get error(){return X.rateLimitFormError},get submitting(){return X.rateLimitFormSubmitting},submitLabel:`Save Rate Limit`,dialogClass:`budget-editor`,novalidate:!0,onclose:()=>X.closeRateLimitForm(),onsubmit:()=>X.submitRateLimitForm(),children:(e,t)=>{var n=_E(),r=N(n),i=M(r);aT(i,{id:`rate-limit-scope`,label:`Scope`,children:(e,t)=>{var n=uE();H(n,21,()=>X.rateLimitScopeOptions(),e=>e.value,(e,t)=>{var n=lE(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),L(`change`,n,()=>X.syncRateLimitScope()),Gi(n,()=>X.rateLimitForm.scope,e=>X.rateLimitForm.scope=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2);{let e=O(()=>X.rateLimitSubjectFieldLabel());aT(a,{id:`rate-limit-subject`,get label(){return I(e)},children:(e,t)=>{var n=dE();na(n),F(e=>{W(n,`placeholder`,e),W(n,`data-modal-autofocus`,!X.rateLimitEditing||void 0),ra(n,X.rateLimitForm.subject)},[()=>X.rateLimitSubjectPlaceholder()]),L(`input`,n,e=>X.setRateLimitFormSubject(e.currentTarget.value)),z(e,n)},$$slots:{default:!0}})}var o=P(a,2);aT(o,{id:`rate-limit-period`,label:`Period`,children:(e,t)=>{var n=fE();H(n,21,()=>X.rateLimitPeriodOptions(),e=>e.value,(e,t)=>{var n=lE(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),L(`change`,n,()=>X.syncRateLimitPeriodSeconds()),Gi(n,()=>X.rateLimitForm.period,e=>X.rateLimitForm.period=e),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=e=>{aT(e,{id:`rate-limit-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=pE();na(n),da(n,()=>X.rateLimitForm.period_seconds,e=>X.rateLimitForm.period_seconds=e),z(e,n)},$$slots:{default:!0}})};V(s,e=>{X.rateLimitForm.period===`custom`&&e(c)});var l=P(s,2);{let e=O(()=>X.rateLimitForm.period===`concurrent`?`Max In-Flight Requests`:`Max Requests`);aT(l,{id:`rate-limit-max-requests`,get label(){return I(e)},children:(e,t)=>{var n=mE();na(n),F(()=>W(n,`data-modal-autofocus`,X.rateLimitEditing?!0:void 0)),da(n,()=>X.rateLimitForm.max_requests,e=>X.rateLimitForm.max_requests=e),z(e,n)},$$slots:{default:!0}})}var u=P(l,2),d=e=>{aT(e,{id:`rate-limit-max-tokens`,label:`Max Tokens`,children:(e,t)=>{var n=hE();na(n),da(n,()=>X.rateLimitForm.max_tokens,e=>X.rateLimitForm.max_tokens=e),z(e,n)},$$slots:{default:!0}})};V(u,e=>{X.rateLimitForm.period!==`concurrent`&&e(d)}),T(r);var f=P(r,4),p=e=>{z(e,gE())};V(f,e=>{X.rateLimitEditing&&e(p)}),z(e,n)},$$slots:{default:!0}})}D()}Hr([`change`,`input`]);var yE=R(` `),bE=R(` Edit`,1),xE=R(` `,1),SE=R(`
        In-flight
        `),CE=R(`
        Requests
        `),wE=R(`
        Tokens
        `),TE=R(`
        `),EE=R(`
        `);function DE(e,t){E(t,!0);var n=EE();H(n,21,()=>t.rules,e=>X.rateLimitKey(e),(e,t)=>{var n=TE(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=e=>{var n=yE(),r=M(n);{let e=O(()=>X.rateLimitScope(I(t))===`provider`?`server`:`box`);G(r,{get name(){return I(e)},class:`budget-period-icon`})}var i=P(r,2),a=M(i,!0);T(i),T(n),F((e,t)=>{W(n,`title`,e),B(a,t)},[()=>`Rule scope: `+X.rateLimitScopeLabel(I(t)),()=>X.rateLimitScopeLabel(I(t))]),z(e,n)},u=O(()=>X.rateLimitScope(I(t))!==`user_path`);V(c,e=>{I(u)&&e(l)});var d=P(c,2),f=M(d);{let e=O(()=>X.rateLimitIsConcurrent(I(t))?`activity`:`timer`);G(f,{get name(){return I(e)},class:`budget-period-icon`})}var p=P(f,2),m=M(p,!0);T(p),T(d),T(s);var h=P(s,2),g=M(h),_=M(g),v=M(_,!0);T(_),T(g);var y=P(g,2),b=M(y),x=e=>{$C(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>X.openRateLimitForm(I(t)),children:(e,t)=>{var n=bE();G(N(n),{name:`pencil`,class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}})},S=O(()=>!X.rateLimitIsReadOnly(I(t)));V(b,e=>{I(S)&&e(x)});var C=P(b,2);{let e=O(()=>X.rateLimitResettingKey===X.rateLimitKey(I(t))?`Resetting counters`:`Reset counters`),n=O(()=>X.rateLimitResettingKey===X.rateLimitKey(I(t)));$C(C,{get label(){return I(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>X.resetRateLimit(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=xE(),i=N(r);G(i,{name:`rotate-ccw`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>X.rateLimitResettingKey===X.rateLimitKey(I(t))?`Resetting`:`Reset`]),z(e,r)},$$slots:{default:!0}})}var w=P(C,2),ee=e=>{{let n=O(()=>X.rateLimitDeletingKey===X.rateLimitKey(I(t))?`Deleting rate limit`:`Delete rate limit`),r=O(()=>X.rateLimitDeletingKey===X.rateLimitKey(I(t)));$C(e,{get label(){return I(n)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>X.deleteRateLimit(I(t)),get disabled(){return I(r)},children:(e,n)=>{var r=xE(),i=N(r);G(i,{name:`trash-2`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>X.rateLimitDeletingKey===X.rateLimitKey(I(t))?`Deleting`:`Delete`]),z(e,r)},$$slots:{default:!0}})}},te=O(()=>!X.rateLimitIsReadOnly(I(t)));V(w,e=>{I(te)&&e(ee)}),T(y),T(h),T(i);var ne=P(i,2),re=M(ne),ie=e=>{var n=SE(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u),T(l),T(o),T(n),F((e,t,n,r,i,l)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l)},[()=>X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)+`%`,()=>X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests),()=>`In-flight requests: `+X.formatRateLimitNumber(I(t).in_flight)+` of `+X.formatRateLimitNumber(I(t).max_requests),()=>`--budget-progress: `+X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)>=100}),()=>X.formatRateLimitNumber(I(t).in_flight)+` of `+X.formatRateLimitNumber(I(t).max_requests)+` in flight`]),z(e,n)},ae=O(()=>X.rateLimitIsConcurrent(I(t)));V(re,e=>{I(ae)&&e(ie)});var oe=P(re,2),se=e=>{var n=CE(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=M(f,!0);T(f),T(l),T(o),T(n),F((e,t,n,r,i,l,u)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l),B(p,u)},[()=>X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)+`%`,()=>X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests),()=>`Requests used: `+X.formatRateLimitNumber(I(t).requests_used)+` of `+X.formatRateLimitNumber(I(t).max_requests),()=>`--budget-progress: `+X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)>=100}),()=>X.formatRateLimitNumber(I(t).requests_used)+` of `+X.formatRateLimitNumber(I(t).max_requests)+` requests`,()=>X.formatRateLimitNumber(I(t).requests_remaining)+` left`]),z(e,n)},ce=O(()=>!X.rateLimitIsConcurrent(I(t))&&I(t).max_requests);V(oe,e=>{I(ce)&&e(se)});var le=P(oe,2),ue=e=>{var n=wE(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=M(f,!0);T(f),T(l),T(o),T(n),F((e,t,n,r,i,l,u)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l),B(p,u)},[()=>X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)+`%`,()=>X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens),()=>`Tokens used: `+X.formatRateLimitNumber(I(t).tokens_used)+` of `+X.formatRateLimitNumber(I(t).max_tokens),()=>`--budget-progress: `+X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)+`%`,()=>({"budget-bar-fill-danger":X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)>=100}),()=>X.formatRateLimitNumber(I(t).tokens_used)+` of `+X.formatRateLimitNumber(I(t).max_tokens)+` tokens`,()=>X.formatRateLimitNumber(I(t).tokens_remaining)+` left`]),z(e,n)},de=O(()=>!X.rateLimitIsConcurrent(I(t))&&I(t).max_tokens);V(le,e=>{I(de)&&e(ue)}),T(ne),T(r),T(n),F((e,t,n,r,i)=>{W(a,`title`,e),B(o,t),B(m,n),W(_,`title`,r),B(v,i)},[()=>X.rateLimitScopeLabel(I(t))+`: `+X.rateLimitSubject(I(t)),()=>X.rateLimitSubject(I(t)),()=>X.rateLimitPeriodLabel(I(t)),()=>X.rateLimitIsReadOnly(I(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>X.rateLimitSourceLabel(I(t))]),z(e,n)}),T(n),z(e,n),D()}var OE=R(`

        Rate Limits

        `),kE=R(``),AE=R(`
        Rate limit management is unavailable.
        `),jE=R(``),ME=R(`
        `),NE=R(`

        No rate limits configured yet.

        `),PE=R(`

        No rate limits match your filter.

        `),FE=R(`
        `);function IE(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`rate-limits`&&X.fetchRateLimitsPage()});let n=O(()=>X.filteredRateLimits());var r=FE(),i=M(r),a=M(i);Rx(M(a),{copyId:`rate-limits-help-copy`,label:`rate limits help`,text:`Rate limits cap requests, tokens, and in-flight concurrency for a user path subtree, a provider, or a model. Consumer (user path) breaches return 429 with Retry-After and x-ratelimit-* headers; saturated providers and models are skipped by load balancing and failover while capacity exists elsewhere. Counters are per gateway instance and reset on restart; token limits need usage tracking.`,title:e=>{z(e,OE())},$$slots:{title:!0}}),T(a);var o=P(a,2),s=M(o),c=e=>{var t=kE();G(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=X.rateLimitFormSubmitting),L(`click`,t,()=>X.openRateLimitForm()),z(e,t)},l=O(()=>X.rateLimitsEnabled()&&X.rateLimitsAvailable&&!K.authError);V(s,e=>{I(l)&&e(c)}),T(o),T(i);var u=P(i,2);Os(u,{});var d=P(u,2),f=e=>{z(e,AE())},p=O(()=>(!X.rateLimitsEnabled()||!X.rateLimitsAvailable)&&!K.authError);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{var t=jE(),n=M(t,!0);T(t),F(()=>B(n,X.rateLimitError)),z(e,t)};V(m,e=>{X.rateLimitError&&!K.authError&&e(h)});var g=P(m,2),_=e=>{ZC(e,{label:`Loading rate limits...`})};V(g,e=>{X.rateLimitsLoading&&!K.authError&&e(_)});var v=P(g,2),y=e=>{var t=ME(),n=M(t);nC(M(n),{id:`rate-limit-filter`,placeholder:`Filter by subject, scope, or period...`,label:`Filter rate limits by subject, scope, or period`,get value(){return X.rateLimitFilter},set value(e){X.rateLimitFilter=e}}),T(n),T(t),z(e,t)};V(v,e=>{(X.rateLimits.length>0||X.rateLimitFilter)&&X.rateLimitsAvailable&&!K.authError&&!X.rateLimitFormOpen&&e(y)});var b=P(v,2);vE(b,{});var x=P(b,2),S=e=>{DE(e,{get rules(){return I(n)}})};V(x,e=>{I(n).length>0&&X.rateLimitsAvailable&&!K.authError&&e(S)});var C=P(x,2),w=e=>{z(e,NE())},ee=O(()=>X.rateLimits.length===0&&!X.rateLimitFilter&&!X.rateLimitsLoading&&!K.authError&&!X.rateLimitError&&X.rateLimitsAvailable&&X.rateLimitsEnabled());V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{z(e,PE())},re=O(()=>X.rateLimits.length>0&&I(n).length===0&&X.rateLimitFilter&&!X.rateLimitsLoading&&!K.authError&&!X.rateLimitError&&X.rateLimitsAvailable&&X.rateLimitsEnabled());V(te,e=>{I(re)&&e(ne)}),T(r),z(e,r),D()}Hr([`click`]);function LE(e){return String(e||``).trim().toLowerCase()}function RE(e){if(!e)return``;let t=String(e.selector||``).trim();if(t)return t;if(!e.model||!e.model.id)return``;let n=String(e.model.id||``).trim(),r=String(e.provider_name||``).trim();if(r)return r+`/`+n;let i=String(e.provider_type||``).trim();return!i||n.includes(`/`)?n:i+`/`+n}function zE(e,t,n,r){let i=new Set,a=String(e||``).trim().toLowerCase(),o=String(t||``).trim().toLowerCase(),s=String(n||``).trim().toLowerCase(),c=String(r||``).trim().toLowerCase();if(c&&i.add(c),!a)return i;i.add(a),s&&i.add(s+`/`+a),o&&!a.includes(`/`)&&i.add(o+`/`+a);let l=a.split(`/`);return l.length===2&&l[1]&&i.add(l[1]),i}function BE(e){return zE(e&&e.model?e.model.id:``,e?e.provider_type:``,e?e.provider_name:``,e?e.selector:``)}function VE(e){let t=new Set,n=String(e.resolved_model||``).trim().toLowerCase(),r=String(e.target_model||``).trim().toLowerCase(),i=String(e.target_provider||``).trim().toLowerCase();if(n){t.add(n);let e=n.split(`/`);e.length===2&&e[1]&&t.add(e[1])}if(r){t.add(r);let e=r.split(`/`);e.length===2&&e[1]&&t.add(e[1])}return r&&i&&t.add(i+`/`+r),t}function HE(e){if(!e)return``;let t=String(e.provider||``).trim(),n=String(e.model||``).trim();return!t||!n||n===t||n.startsWith(t+`/`)?n:t+`/`+n}function UE(e){if(e===``||e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function WE(e,t){let n={model:e},r=UE(t);return r!==null&&(n.weight=r),n}function GE(e){let t=Array.isArray(e)?e:[],n=[];for(let e of t){let t=String(e&&e.model||``).trim();t&&n.push(WE(t,e&&e.weight))}return n}function KE(e){switch(String(e||``).toLowerCase()){case`cost`:return`lowest cost`;case`round_robin`:case``:return`round robin`;default:return e}}var qE={round_robin:`Round-robin (rotate across targets; honors weights)`,cost:`Lowest cost (cheapest target per request)`,adaptive:`Adaptive (target chosen by the registered routing extension)`};function JE(e,t){let n=Array.isArray(e)?[...e]:[],r=String(t||``).trim().toLowerCase();return r&&!n.includes(r)&&n.push(r),n.map(e=>({value:e,label:qE[e]||e}))}function YE(e){let t=Array.isArray(e.targets)?e.targets:[],n=t.length>0?t[0]:{},r=t.map(e=>{let t={provider:e.provider||``,model:e.model||``};return e.weight&&(t.weight=e.weight),t});return{name:e.source,target_provider:n.provider||``,target_model:n.model||``,targets:r,strategy:e.strategy||``,session_affinity:e.session_affinity!==!1,description:e.description||``,enabled:e.enabled!==!1,managed:!!e.managed,valid:!!e.valid,resolved_model:e.resolved_model||``,provider_type:e.provider_type||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[]}}function XE(e){let t=Array.isArray(e)?e:[],n=[],r=[];for(let e of t)!e||typeof e!=`object`||(e.kind===`redirect`?n.push(YE(e)):e.kind===`policy`&&r.push({selector:e.source,provider_name:e.provider_name||``,model:e.model||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[],description:e.description||``,enabled:e.enabled!==!1,managed:!!e.managed,scope_kind:e.scope_kind||``}));return{aliases:n,policies:r}}function ZE(e){if(!e)return`—`;let t=Array.isArray(e.targets)?e.targets:[];return t.length>1?t.length+` targets · `+KE(e.strategy):e.resolved_model?e.resolved_model:e.target_provider?e.target_provider+`/`+e.target_model:e.target_model||`—`}function QE(e){return e?e.enabled===!1?`is-disabled`:e.valid?`is-valid`:`is-invalid`:`is-invalid`}function $E(e){return e?e.enabled===!1?`Disabled`:e.valid?`Active`:`Invalid`:`Invalid`}function eD(e){return Array.isArray(e)&&e.length>0&&e.indexOf(`/`)===-1}function tD(e,t){return!t||!e?``:e.effective_enabled===!1?`is-disabled`:eD(e.user_paths)?`is-restricted`:`is-enabled`}function nD(e){if(!e)return``;let t=[];e.effective_enabled===!1&&t.push(e.default_enabled===!1?`Disabled by default`:`Disabled`);let n=Array.isArray(e.user_paths)?e.user_paths:[];return n.length>0&&t.push(`Allowed for `+n.join(`, `)),t.join(` · `)}function rD({models:e,aliases:t,virtualModelsAvailable:n,activeCategory:r}){let i=Array.isArray(e)?e:[],a=Array.isArray(t)?t:[],o=new Map;if(n)for(let e of a){let t=LE(e&&e.name);!t||e.enabled===!1||!e.valid||o.set(t,e)}let s=new Map,c=i.map(e=>{let t=RE(e),n=null;for(let t of BE(e))s.has(t)||s.set(t,e),!n&&o.has(t)&&(n=o.get(t));let r=e&&e.access?e.access:null;return{key:`model:`+t,display_name:t,secondary_name:``,provider_name:e.provider_name||``,provider_type:e.provider_type||``,model:e.model,selector:e.selector||``,is_alias:!1,alias:null,access:r,masking_alias:n,has_virtual_model:!!(n||r&&r.override),alias_state_class:``,alias_state_text:``}});if(!n)return c;for(let e of a){let t=s.get(LE(e&&e.name));if(e&&e.enabled!==!1&&e.valid&&t)continue;let n=null;for(let t of VE(e))if(n=s.get(t)||null,n)break;!n&&r&&r!==`all`||c.push({key:`alias:`+e.name,display_name:e.name,secondary_name:ZE(e),provider_name:n&&n.provider_name||``,provider_type:n?n.provider_type||e.provider_type||``:e.provider_type||``,model:n?n.model:{id:e.name,object:`model`},selector:``,is_alias:!0,alias:e,access:null,masking_alias:null,source_model_exists:!!t,has_virtual_model:!0,alias_state_class:QE(e),alias_state_text:$E(e)})}return c.sort((e,t)=>e.is_alias===t.is_alias?String(e.display_name||``).localeCompare(String(t.display_name||``)):e.is_alias?-1:1)}function iD(e,t){if(!t)return e;let n=String(t).toLowerCase();return e.filter(e=>[e.display_name,e.secondary_name,e.provider_name,e.provider_type,e.model&&e.model.owned_by,e.alias&&e.alias.description,e.alias&&e.alias_state_text,e.model&&e.model.metadata&&e.model.metadata.modes?e.model.metadata.modes.join(`,`):``,e.model&&e.model.metadata&&e.model.metadata.categories?e.model.metadata.categories.join(`,`):``].some(e=>String(e||``).toLowerCase().includes(n)))}function aD(e,t){return String(e||``).trim()||String(t||``).trim()||`Unassigned`}function oD(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return!r||r===n?``:r}function sD(e){let t=String(e||``).trim();return t?t+`/`:``}function cD(e){let t=Array.isArray(e)?e:[],n=t.filter(e=>e&&!e.is_alias).length,r=t.filter(e=>e&&e.is_alias).length,i=[];return n>0&&i.push(n+(n===1?` model`:` models`)),r>0&&i.push(r+(r===1?` alias`:` aliases`)),i.join(` · `)}function lD(e,t,n){let r=String(t||``).trim(),i=String(n||``).trim();for(let t of Array.isArray(e)?e:[]){let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim();if(!(r&&e!==r)&&!(!r&&i&&n!==i)&&t&&t.access)return t.access.default_enabled!==!1}return!0}function uD(e){for(let t of Array.isArray(e)?e:[])if(t&&t.access)return t.access.default_enabled!==!1;return!0}function dD(e,t){let n=String(t||``).trim();if(!n)return null;for(let t of Array.isArray(e)?e:[])if(String(t&&t.selector||``).trim()===n)return t;return null}function fD(e,t,n,r){let i=sD(t),a=r&&r.get(`/`)||null,o=i&&r&&r.get(i)||null,s=lD(e,t,n),c=o||a,l=c&&Array.isArray(c.user_paths)?Array.from(new Set(c.user_paths)).sort():[];return{selector:i,default_enabled:s,effective_enabled:c?c.enabled!==!1:s,user_paths:l,override:o}}function pD(e,t,n){if(!Array.isArray(e)||e.length===0)return[];let r=new Map;for(let e of Array.isArray(n)?n:[]){let t=String(e&&e.selector||``).trim();t&&r.set(t,e)}let i=[],a=new Map;for(let t of e){if(t&&t.is_alias){i.push(t);continue}let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim(),r=`provider-group:`+(e||n||`unassigned`);a.has(r)||a.set(r,{key:r,provider_name:e,provider_type:n,display_name:aD(e,n),type_label:oD(e,n),rows:[]});let o=a.get(r);!o.provider_name&&e&&(o.provider_name=e),!o.provider_type&&n&&(o.provider_type=n),o.display_name=aD(o.provider_name,o.provider_type),o.type_label=oD(o.provider_name,o.provider_type),o.rows.push(t)}let o=Array.from(a.values()).map(e=>{let n=fD(t,e.provider_name,e.provider_type,r);return{...e,access:n,access_summary:nD(n),item_count_label:cD(e.rows)}}).sort((e,t)=>String(e.display_name||``).localeCompare(String(t.display_name||``)));return i.length>0&&o.unshift({key:`virtual-model-group`,is_virtual_models:!0,provider_name:``,provider_type:``,display_name:`Virtual models`,type_label:``,rows:i,access:{selector:``},access_summary:``,item_count_label:cD(i)}),o}function mD(e,t){let n=dD(t,`/`),r=uD(e),i=n&&Array.isArray(n.user_paths)?n.user_paths:[];return{key:`scope-global`,is_alias:!1,display_name:`all providers and models`,access:{selector:`/`,default_enabled:r,effective_enabled:n?n.enabled!==!1:r,user_paths:i,override:n}}}function hD(e){return e?String(e.access&&e.access.selector||``).trim()||String(e.override_selector||``).trim()||RE(e):``}function gD(e){if(!e)return[];let t=[];return e.is_alias?t.push(`alias-row`,QE(e.alias)):e.has_virtual_model&&t.push(`alias-row`,`is-valid`),!e.is_alias&&e.masking_alias&&t.push(`masked-model-row`),!e.is_alias&&e.access&&e.access.effective_enabled===!1&&t.push(`model-access-disabled-row`),t}function _D(e){return!!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)}function vD(e){return!!(e&&!e.is_alias&&e.masking_alias&&e.masking_alias.name&&!e.masking_alias.managed)}function yD(e){return e&&e.is_alias&&e.alias&&e.alias.name?`alias-row-`+String(e.alias.name).replace(/[^a-zA-Z0-9_-]+/g,`-`):``}function bD(e){return e?e.is_alias?!!(e.alias&&e.alias.managed):!!(e.access&&e.access.override&&e.access.override.managed||e.masking_alias&&e.masking_alias.managed):!1}function xD(e){return!!(e&&e.override)}function SD(e){return e?`table-action-btn-active`:``}function CD(e,t){let n=`Edit `+String(e||`model access`);return t?n+` (virtual model exists)`:n}function wD(){return{source:``,target_model:``,target_weight:1,targets:[],strategy:`round_robin`,session_affinity:!0,user_paths:``,description:``,enabled:!0}}function TD(e){return String(e&&e.target_model||``).trim()!==``}function ED(e){return String(e&&e.target_model||``).trim()?!0:GE(e&&e.targets).length>0}function DD(e){return!!e&&Array.isArray(e.targets)&&e.targets.length>0}function OD(e){return DD(e)&&String(e&&e.strategy||``).toLowerCase()!==`cost`}function kD(e){let t=Array.isArray(e.targets)?e.targets:[];if(t.length>0){let n=t.shift();e.target_model=n.model||``,e.target_weight=n.weight||1;return}e.target_model=``,e.target_weight=1}function AD(e){let t=Array.isArray(e&&e.targets)?e.targets:[];return t.length>0?{primaryModel:HE(t[0]),primaryWeight:t[0].weight||1,extraTargets:t.slice(1).map(e=>({model:HE(e),weight:e.weight||1}))}:{primaryModel:e&&e.target_provider?e.target_provider+`/`+e.target_model:e&&e.target_model||``,primaryWeight:1,extraTargets:[]}}function jD(e){return String(e||``).split(/\r?\n|,/).map(e=>String(e||``).trim()).filter(Boolean)}function MD(e,t,n){let r=String(e&&e.source||``).trim(),i=String(e&&e.target_model||``).trim(),a=GE(e&&e.targets),o=ED(e),s=String(t||``).trim(),c=n===`edit`&&!!s&&r!==s,l={source:r,user_paths:jD(e&&e.user_paths),description:String(e&&e.description||``).trim(),enabled:!!(e&&e.enabled)};if(c&&(l.old_source=s),o){let t=[];if(i&&t.push(WE(i,e.target_weight)),t.push(...a),t.length>1){let n=e.strategy||`round_robin`;l.targets=n===`cost`?t.map(e=>({model:e.model})):t,l.strategy=n,e&&e.session_affinity===!1&&(l.session_affinity=!1)}else l.target_model=t[0].model}return{payload:l,source:r,isRedirect:o,isRename:c}}function ND(e){let t={source:e.name,description:String(e.description||``).trim(),user_paths:Array.isArray(e.user_paths)?e.user_paths:[],enabled:e.enabled===!1},n=Array.isArray(e.targets)?e.targets:[];return n.length>1?(t.strategy=e.strategy||`round_robin`,e.session_affinity===!1&&(t.session_affinity=!1),t.targets=t.strategy===`cost`?n.map(e=>({model:HE(e)})):n.map(e=>WE(HE(e),e.weight))):n.length===1?t.target_model=HE(n[0]):t.target_model=e.target_provider?e.target_provider+`/`+e.target_model:e.target_model,t}function PD(e,t,n){let r=n||{},i=r.effective_enabled===!1,a=t&&Array.isArray(t.user_paths)?t.user_paths:[],o=`PUT`,s;return i===!1?s={source:e,enabled:!1,user_paths:a}:t&&a.length===0&&r.default_enabled!==!1?(o=`DELETE`,s={source:e}):s={source:e,enabled:!0,user_paths:a},{method:o,payload:s,desired:i}}function FD(e,t,n){let r=Math.max(1,Number(t||75)),i=Math.min(n,e+r);return{limit:i,rendering:irD({models:Es.models,aliases:this.aliases,virtualModelsAvailable:this.virtualModelsAvailable,activeCategory:Es.activeCategory}));get displayModels(){return I(this.#T)}set displayModels(e){A(this.#T,e)}#E=O(()=>pD(this.displayModels,Es.models,this.modelOverrideViews));get displayModelGroups(){return I(this.#E)}set displayModelGroups(e){A(this.#E,e)}#D=O(()=>iD(this.displayModels,Es.filter));get filteredDisplayModels(){return I(this.#D)}set filteredDisplayModels(e){A(this.#D,e)}#O=O(()=>{let e=this.filteredDisplayModels,t=Math.max(0,Math.min(Number(this.modelRenderLimit||0),e.length));return!Es.filter&&t>=this.displayModels.length?this.displayModelGroups:pD(e.slice(0,t),Es.models,this.modelOverrideViews)});get filteredDisplayModelGroups(){return I(this.#O)}set filteredDisplayModelGroups(e){A(this.#O,e)}#k=O(()=>mD(Es.models,this.modelOverrideViews));get globalScopeRow(){return I(this.#k)}set globalScopeRow(e){A(this.#k,e)}modelsBusy(){return!!(Es.loading||this.modelsRendering)}modelLoadingText(){if(Es.loading)return this.displayModels.length>0?`Refreshing models...`:`Loading models...`;let e=this.filteredDisplayModels.length;return`Rendering models... `+Math.min(Number(this.modelRenderLimit||0),e)+` / `+e}restartModelRendering(e){let t=++this.#a,n=ID(this.modelRenderBatchSize,e);this.modelRenderLimit=n.limit,this.modelsRendering=n.rendering,n.rendering&&this.#A(t)}stopModelRendering(){this.#a++,this.modelsRendering=!1}#A(e){let t=()=>{if(e!==this.#a)return;let t=FD(this.modelRenderLimit,this.modelRenderBatchSize,this.filteredDisplayModels.length);this.modelRenderLimit=t.limit,this.modelsRendering=t.rendering,t.rendering&&this.#A(e)};typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>setTimeout(t,0)):setTimeout(t,0)}async fetchVirtualModels(){this.aliasLoading=!0,this.aliasError=``;try{let e=await fo(`/admin/virtual-models`,{label:`virtual models`});if(e.status===503){this.virtualModelsAvailable=!1,this.aliases=[],this.modelOverrideViews=[];return}if(e.stale)return;if(this.virtualModelsAvailable=!0,!e.ok){this.aliases=[],this.modelOverrideViews=[];return}let{aliases:t,policies:n}=XE(e.data);this.aliases=t,this.modelOverrideViews=n}catch(e){console.error(`Failed to fetch virtual models:`,e),this.aliases=[],this.modelOverrideViews=[],this.aliasError=`Unable to load virtual models.`}finally{this.aliasLoading=!1}}qualifiedModelName(e){return RE(e)}findModelOverrideView(e){return dD(this.modelOverrideViews,e)}hasGlobalModelOverride(){return!!this.findModelOverrideView(`/`)}findExistingAliasByName(e){let t=LE(e);if(!t)return null;for(let e of this.aliases)if(LE(e&&e.name)===t)return e;return null}findConcreteModelByName(e){let t=LE(e);if(!t)return null;for(let e of Es.models)if(BE(e).has(t))return e;return null}rowToggleEnabled(e){return e?e.is_alias?e.alias&&e.alias.enabled!==!1:!!(e.access&&e.access.effective_enabled!==!1):!1}rowToggleLabel(e){return this.rowTogglingKey&&this.rowTogglingKey===e.key?`Updating...`:this.rowToggleRestricted(e)?`Restricted`:this.rowToggleEnabled(e)?`Enabled`:`Disabled`}rowToggleRestricted(e){return!!e&&!e.is_alias&&tD(e.access,this.virtualModelsAvailable)===`is-restricted`}rowToggleAriaLabel(e){if(!e)return``;let t=this.rowToggleEnabled(e)?`Disable `:`Enable `,n;return n=e.is_alias?`alias `+String(e.alias&&e.alias.name||``):String(e.display_name||e.access&&e.access.selector||`model`),t+n.trim()}async toggleRowEnabled(e){if(this.virtualModelsAvailable&&!(!e||this.rowTogglingKey===e.key)){if(bD(e)){q.success(`This virtual model is managed by configuration and is read-only.`);return}if(e.is_alias){await this.toggleAliasRow(e);return}await this.toggleModelRow(e)}}async toggleAliasRow(e){let t=e.alias;if(!t||!t.name)return;this.rowTogglingKey=e.key;let n=ND(t);try{let e=await po(`/admin/virtual-models`,`PUT`,n,{label:`alias state`});if(e.status===503){this.virtualModelsAvailable=!1,q.error(`Virtual models feature is unavailable.`);return}if(e.stale)return;if(!e.ok){q.error(e.status===401?`Authentication required.`:so(e,`Failed to update alias state.`));return}q.success(n.enabled?`Alias enabled.`:`Alias disabled.`),this.fetchVirtualModels()}catch(e){console.error(`Failed to toggle alias state:`,e),q.error(`Failed to update alias state.`)}finally{this.rowTogglingKey=``}}async toggleModelRow(e){let t=hD(e);if(!t)return;let{method:n,payload:r,desired:i}=PD(t,this.findModelOverrideView(t),e.access||{});this.rowTogglingKey=e.key;try{let e=await po(`/admin/virtual-models`,n,r,{label:`model access`});if(e.status===503){this.virtualModelsAvailable=!1,q.error(`Virtual models feature is unavailable.`);return}if(!(n===`DELETE`&&e.status===404)){if(e.stale)return;if(!e.ok){q.error(e.status===401?`Authentication required.`:so(e,`Failed to update model access.`));return}}q.success(i?`Model enabled.`:`Model disabled.`),Promise.all([Es.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to toggle model access:`,e),q.error(`Failed to update model access.`)}finally{this.rowTogglingKey=``}}async removeAliasRow(e){if(!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)||this.rowDeletingKey)return;let t=String(e.alias.name||``).trim();t&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the virtual model alias "`+t+`"?`,method:`DELETE`,payload:{source:t},operation:`virtual model`,failureMessage:`Failed to remove virtual model.`,notice:`Virtual model removed.`,ignoreNotFound:!0})}async removeRedirectRow(e){let t=e&&e.masking_alias;if(!(e&&!e.is_alias&&t&&t.name&&!t.managed)||this.rowDeletingKey)return;let n=String(t.name||``).trim();n&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the redirect for "`+n+`"? Other virtual model settings will be preserved.`,method:`PUT`,payload:{source:n,user_paths:Array.isArray(t.user_paths)?t.user_paths:[],description:String(t.description||``).trim(),enabled:t.enabled!==!1},operation:`virtual model redirect`,failureMessage:`Failed to remove redirect.`,notice:`Redirect removed. Other virtual model settings were preserved.`})}async mutateVirtualModelRow(e){if(!this.rowDeletingKey&&window.confirm(e.confirmMessage)){this.rowDeletingKey=e.rowKey;try{let t=await po(`/admin/virtual-models`,e.method,e.payload,{label:e.operation});if(t.status===503){this.virtualModelsAvailable=!1,q.error(`Virtual models feature is unavailable.`);return}if(!(e.ignoreNotFound&&t.status===404)){if(t.stale)return;if(!t.ok){q.error(t.status===401?`Authentication required.`:so(t,e.failureMessage));return}}this.virtualModelsAvailable=!0,q.success(e.notice),Promise.all([Es.fetchModels(),this.fetchVirtualModels()])}catch(t){console.error(e.failureMessage,t),q.error(e.failureMessage)}finally{this.rowDeletingKey=``}}}addVmTarget(){Array.isArray(this.vmForm.targets)||(this.vmForm.targets=[]),this.vmForm.targets.push({model:``,weight:1})}removeVmTarget(e){Array.isArray(this.vmForm.targets)&&this.vmForm.targets.splice(e,1)}removePrimaryTarget(){kD(this.vmForm)}vmFormHasPrimaryTarget(){return TD(this.vmForm)}vmFormShowStrategy(){return DD(this.vmForm)}vmStrategyOptions(){return JE(_o.virtualModelStrategies(),this.vmForm.strategy)}vmFormShowWeights(){return OD(this.vmForm)}vmFormToggleRestricted(){return!!(this.vmForm&&this.vmForm.enabled)&&eD(jD(this.vmForm.user_paths))}vmFormToggleLabel(){return!this.vmForm||!this.vmForm.enabled?`Disabled`:this.vmFormToggleRestricted()?`Restricted`:`Enabled`}resetVirtualModelForm(){this.vmFormError=``,this.vmFormHelpOpen=!1,this.vmFormUserPathsHelpOpen=!1,this.vmSubmitting=!1,this.vmDeleting=!1,this.vmFormHasExisting=!1,this.vmFormDefaultEnabled=!0,this.vmFormEffectiveEnabled=!0,this.vmFormDisplayName=``,this.vmFormSourceLocked=!1,this.vmFormOriginalSource=``,this.vmFormManaged=!1,this.vmForm=wD()}closeVirtualModelForm(){this.vmFormOpen=!1,this.resetVirtualModelForm()}openVirtualModelCreate(e){this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`create`,this.vmFormSourceLocked=!1,this.vmFormDisplayName=`New virtual model`,e&&e.model&&e.model.id&&(this.vmForm.target_model=RE(e))}openVirtualModelEditAlias(e){if(!e)return;this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!1,this.vmFormHasExisting=!0,this.vmFormManaged=!!e.managed,this.vmFormOriginalSource=e.name||``,this.vmFormDisplayName=e.name||``,this.vmFormDefaultEnabled=uD(Es.models),this.vmFormEffectiveEnabled=e.enabled!==!1;let{primaryModel:t,primaryWeight:n,extraTargets:r}=AD(e);this.vmForm={source:e.name||``,target_model:t,target_weight:n,targets:r,strategy:e.strategy||`round_robin`,session_affinity:e.session_affinity!==!1,user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` -`),description:e.description||``,enabled:e.enabled!==!1}}openVirtualModelEditModel(e){if(!e||e.is_alias)return;let t=e.access||{},n=t.override||null,r=n&&Array.isArray(n.user_paths)?n.user_paths:Array.isArray(t.user_paths)?t.user_paths:[],i=hD(e);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!n,this.vmFormOriginalSource=i;let a=n?n.enabled!==!1:t.effective_enabled!==!1;this.vmFormDefaultEnabled=t.default_enabled!==!1,this.vmFormEffectiveEnabled=a,this.vmFormManaged=!!(n&&n.managed),this.vmFormDisplayName=e.access_display_name||e.display_name||i||``,this.vmForm={source:i,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:r.join(` -`),description:n&&n.description?n.description:``,enabled:a}}openGlobalModelOverrideEdit(){let e=this.findModelOverrideView(`/`),t=e&&Array.isArray(e.user_paths)?e.user_paths:[],n=uD(Es.models);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!e,this.vmFormOriginalSource=`/`,this.vmFormDefaultEnabled=n,this.vmFormEffectiveEnabled=e?e.enabled!==!1:n,this.vmFormManaged=!!(e&&e.managed),this.vmFormDisplayName=`All providers and models`,this.vmForm={source:`/`,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:t.join(` -`),description:e&&e.description?e.description:``,enabled:e?e.enabled!==!1:n}}openProviderOverrideEdit(e){!e||!e.access||!e.access.selector||this.openVirtualModelEditModel({display_name:e.display_name,access_display_name:`All models in `+e.display_name,provider_name:e.provider_name,provider_type:e.provider_type,access:e.access,override_selector:e.access.selector,is_alias:!1})}async submitVirtualModelForm(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be edited here.`;return}let{payload:e,source:t,isRedirect:n,isRename:r}=MD(this.vmForm,this.vmFormOriginalSource,this.vmFormMode);if(!t){this.vmFormError=`Source is required.`;return}if(this.vmFormError=``,this.vmFormMode!==`edit`){let e=this.findExistingAliasByName(t),r=e?null:this.findModelOverrideView(t);if(e||r){let n=e?`A virtual model named "`+e.name+`" already exists. Saving will update that virtual model. Continue?`:`An access policy for "`+t+`" already exists. Saving will update that virtual model. Continue?`;if(!window.confirm(n)){this.vmFormError=`Choose a different source or edit the existing virtual model.`;return}}else if(n){let e=this.findConcreteModelByName(t);if(e){let t=RE(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Creating this alias will mask that model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}else if(r){let e=(this.aliases||[]).find(e=>e&&e.name===t)||null,r=e?null:this.findModelOverrideView(t);if(e||r){this.vmFormError=`A virtual model for "`+t+`" already exists. Choose a different source.`;return}if(n){let e=this.findConcreteModelByName(t);if(e){let t=RE(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Renaming to that name will mask the model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}this.vmSubmitting=!0;try{let t=await po(`/admin/virtual-models`,`PUT`,e,{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:so(t,`Failed to save virtual model.`);return}let r=!n&&t.status===204;this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),q.success(n?`Alias saved.`:r?`Model access reset to inherited/default.`:`Model access saved.`),Promise.all([Es.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to save virtual model:`,e),this.vmFormError=`Failed to save virtual model.`}finally{this.vmSubmitting=!1}}async deleteVirtualModel(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be removed here.`;return}let e=String(this.vmForm.source||this.vmFormOriginalSource||``).trim();if(!(!e||!this.vmFormHasExisting)&&window.confirm(`Remove the virtual model for "`+e+`"? This reverts to inherited/default behavior.`)){this.vmDeleting=!0,this.vmFormError=``;try{let t=await po(`/admin/virtual-models`,`DELETE`,{source:e},{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:so(t,`Failed to remove virtual model.`);return}}this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),q.success(`Virtual model removed.`),Promise.all([Es.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to delete virtual model:`,e),this.vmFormError=`Failed to remove virtual model.`}finally{this.vmDeleting=!1}}}},RD=[{value:`input_per_mtok`,label:`Input $/MTok`,group:`Tokens`},{value:`output_per_mtok`,label:`Output $/MTok`,group:`Tokens`},{value:`cached_input_per_mtok`,label:`Cached input $/MTok`,group:`Tokens`},{value:`cache_write_per_mtok`,label:`Cache write $/MTok`,group:`Tokens`},{value:`reasoning_output_per_mtok`,label:`Reasoning output $/MTok`,group:`Tokens`},{value:`batch_input_per_mtok`,label:`Batch input $/MTok`,group:`Batch`},{value:`batch_output_per_mtok`,label:`Batch output $/MTok`,group:`Batch`},{value:`audio_input_per_mtok`,label:`Audio input $/MTok`,group:`Audio`},{value:`audio_output_per_mtok`,label:`Audio output $/MTok`,group:`Audio`},{value:`per_image`,label:`$/Image`,group:`Image`},{value:`input_per_image`,label:`Input $/Image`,group:`Image`},{value:`per_second_input`,label:`Input $/Second`,group:`Audio/Video`},{value:`per_second_output`,label:`Output $/Second`,group:`Video`},{value:`per_character_input`,label:`$/Character`,group:`Audio`},{value:`per_page`,label:`$/Page`,group:`Utility`},{value:`per_request`,label:`$/Request`,group:`Utility`}];function zD(e){let t=RD.find(t=>t.value===e);return t?t.label:String(e||``).replace(/_/g,` `)}function BD(e){return e&&typeof e==`object`?JSON.parse(JSON.stringify(e)):{}}function VD(e,t){let n=BD(e),r=t&&t.pricing?t.pricing:t;if(!r||typeof r!=`object`)return n;for(let e of RD)r[e.value]!==null&&r[e.value]!==void 0&&(n[e.value]=Number(r[e.value]));return Array.isArray(r.tiers)&&r.tiers.length>0&&(n.tiers=BD(r.tiers)),n}function HD(e){switch(String(e||``).trim()){case`config_yaml`:return`config.yaml`;case`model_registry`:return`Model registry`;default:return e?String(e):`Unknown`}}function UD(e){let t=e&&e.pricing?e.pricing:{},n=e&&e.pricing_sources&&typeof e.pricing_sources==`object`?e.pricing_sources:{},r={};for(let e of RD)t[e.value]!==null&&t[e.value]!==void 0&&(r[e.value]=HD(n[e.value]||`model_registry`));return r}function WD(e){let t=String(e&&e.selector||``).trim();return t?`Dashboard/API override (`+t+`)`:`Dashboard/API override`}function GD(e){let t=String(e||``).trim();return t?t+`/`:``}function KD(e){return String(e&&e.model&&e.model.id||``).trim()}function qD(e){let t=String(e&&e.provider_name||``).trim(),n=KD(e);return t&&n?t+`/`+n:n}function JD(e){return KD(e)}function YD(e){let t=new Map;for(let n of Array.isArray(e)?e:[]){let e=String(n&&n.selector||``).trim();e&&t.set(e,n)}return t}function XD(e,t){let n=String(t||``).trim();return n&&YD(e).get(n)||null}function ZD(e,t,n){let r=YD(e),i=qD(t),a=JD(t),o=GD(t&&t.provider_name),s=String(n||``).trim();for(let e of[i,a,o,`/`]){if(!e||e===s)continue;let t=r.get(e);if(t)return t}return null}function QD(e,t,n){let r=e&&e.model&&e.model.metadata?e.model.metadata:null,i=BD(r&&r.pricing),a=UD(r),o=ZD(t,e,n),s=o&&o.pricing?o.pricing:null;if(s){let e=WD(o);for(let t of RD)s[t.value]!==null&&s[t.value]!==void 0&&(i[t.value]=Number(s[t.value]),a[t.value]=e);Array.isArray(s.tiers)&&s.tiers.length>0&&(i.tiers=BD(s.tiers),a.tiers=e)}return{pricing:i,sources:a}}function $D(e,t){let n=e&&e.pricing?e.pricing:{},r=[];for(let e of RD)n[e.value]!==null&&n[e.value]!==void 0&&r.push({id:t(),field:e.value,value:String(n[e.value])});return r}function eO(e,t){let n=new Set;for(let r of Array.isArray(e)?e:[]){if(t&&r.id===t)continue;let e=String(r.field||``).trim();e&&n.add(e)}return n}function tO(e,t){let n=eO(e,t&&t.id);return RD.filter(e=>e.value===(t&&t.field)||!n.has(e.value))}function nO(e,t){let n={},r=new Set;for(let t of Array.isArray(e)?e:[]){let e=String(t.field||``).trim();if(!e)return{error:`Choose a price type for every row.`};if(r.has(e))return{error:`Each price type can only be used once.`};r.add(e);let i=String(t.value||``).trim();if(i===``)return{error:`Enter a value for `+zD(e)+`.`};let a=Number(i);if(!Number.isFinite(a)||a<0)return{error:`Pricing values must be numbers greater than or equal to 0.`};n[e]=a}let i=Array.isArray(t)?t:[];return i.length>0&&(n.tiers=BD(i)),Object.keys(n).length===0?{error:`Add at least one pricing field before saving.`}:{pricing:n}}function rO(e,t,n){let r=e||{},i=t||{},a=n||{},o=VD(r,a);return RD.map(e=>{let t=a[e.value]!==null&&a[e.value]!==void 0,n=r[e.value]!==null&&r[e.value]!==void 0;return{field:e.value,label:e.label,value:o[e.value],source:t?`Form/API value`:n?i[e.value]||`Model registry`:`Unset`}}).filter(e=>e.source!==`Unset`||e.value!==void 0)}var iO=new class{#e=k(!0);get modelPricingOverridesAvailable(){return I(this.#e)}set modelPricingOverridesAvailable(e){A(this.#e,e,!0)}#t=k(j([]));get modelPricingOverrideViews(){return I(this.#t)}set modelPricingOverrideViews(e){A(this.#t,e,!0)}#n=k(``);get modelPricingOverrideError(){return I(this.#n)}set modelPricingOverrideError(e){A(this.#n,e,!0)}#r=k(!1);get modelPricingOverrideFormOpen(){return I(this.#r)}set modelPricingOverrideFormOpen(e){A(this.#r,e,!0)}#i=k(!1);get modelPricingOverrideSubmitting(){return I(this.#i)}set modelPricingOverrideSubmitting(e){A(this.#i,e,!0)}#a=k(!1);get modelPricingOverrideFormHasExistingOverride(){return I(this.#a)}set modelPricingOverrideFormHasExistingOverride(e){A(this.#a,e,!0)}#o=k(``);get modelPricingOverrideFormDisplayName(){return I(this.#o)}set modelPricingOverrideFormDisplayName(e){A(this.#o,e,!0)}#s=k(``);get modelPricingOverrideFormScope(){return I(this.#s)}set modelPricingOverrideFormScope(e){A(this.#s,e,!0)}#c=k(j([]));get modelPricingOverrideFormScopeOptions(){return I(this.#c)}set modelPricingOverrideFormScopeOptions(e){A(this.#c,e,!0)}#l=k(null);get modelPricingOverrideFormRow(){return I(this.#l)}set modelPricingOverrideFormRow(e){A(this.#l,e,!0)}#u=k(null);get modelPricingOverrideFormBasePricing(){return I(this.#u)}set modelPricingOverrideFormBasePricing(e){A(this.#u,e,!0)}#d=k(null);get modelPricingOverrideFormBasePricingSources(){return I(this.#d)}set modelPricingOverrideFormBasePricingSources(e){A(this.#d,e,!0)}#f=k(j([]));get modelPricingOverrideFormPreservedTiers(){return I(this.#f)}set modelPricingOverrideFormPreservedTiers(e){A(this.#f,e,!0)}#p=k(j([]));get modelPricingOverrideRows(){return I(this.#p)}set modelPricingOverrideRows(e){A(this.#p,e,!0)}#m=k(j({selector:``}));get modelPricingOverrideForm(){return I(this.#m)}set modelPricingOverrideForm(e){A(this.#m,e,!0)}_modelPricingOverrideRowID=0;pricingFieldOptions(){return RD}pricingFieldLabel(e){return zD(e)}async fetchModelPricingOverrides(){this.modelPricingOverrideError=``;try{let e=await fo(`/admin/model-pricing-overrides`,{label:`model pricing overrides`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideViews=[];return}if(e.stale)return;if(this.modelPricingOverridesAvailable=!0,!e.ok){this.modelPricingOverrideViews=[];return}this.modelPricingOverrideViews=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch model pricing overrides:`,e),this.modelPricingOverrideViews=[],this.modelPricingOverrideError=`Unable to load model pricing overrides.`}}findModelPricingOverrideView(e){return XD(this.modelPricingOverrideViews,e)}hasGlobalPricingOverride(){return!!this.findModelPricingOverrideView(`/`)}hasProviderPricingOverride(e){return!!this.findModelPricingOverrideView(GD(e&&e.provider_name))}hasModelPricingOverride(e){return!!this.findModelPricingOverrideView(qD(e))}modelPricingButtonClass(e){return e?`table-action-btn-active`:``}modelPricingButtonLabel(e,t){let n=`Edit `+String(e||`model pricing`);return t?n+` (override exists)`:n}modelRowPricing(e){return QD(e,this.modelPricingOverrideViews).pricing}openGlobalPricingOverrideEdit(){this.openModelPricingOverrideForm({displayName:`All providers and models`,selector:`/`,scope:`global`,scopeOptions:[{value:`global`,label:`All providers and models`,selector:`/`}],row:null})}openProviderPricingOverrideEdit(e){let t=GD(e&&e.provider_name);t&&this.openModelPricingOverrideForm({displayName:`All models in `+(e.display_name||e.provider_name||t),selector:t,scope:`provider`,scopeOptions:[{value:`provider`,label:`Provider`,selector:t}],row:null})}openModelPricingOverrideEdit(e){if(!e||e.is_alias)return;let t=qD(e),n=JD(e),r=[{value:`exact`,label:`This provider and model`,selector:t}];n&&n!==t&&r.push({value:`model`,label:`This model across providers`,selector:n}),this.openModelPricingOverrideForm({displayName:e.display_name||t,selector:t,scope:`exact`,scopeOptions:r,row:e})}openModelPricingOverrideForm(e){let t=e||{};this.modelPricingOverrideFormOpen=!0,this.modelPricingOverrideError=``,this.modelPricingOverrideFormDisplayName=t.displayName||t.selector||`Pricing`,this.modelPricingOverrideFormScope=t.scope||``,this.modelPricingOverrideFormScopeOptions=Array.isArray(t.scopeOptions)?t.scopeOptions:[],this.modelPricingOverrideFormRow=t.row||null,this.modelPricingOverrideForm={selector:t.selector||``},this.loadModelPricingOverrideFormSelector(t.selector||``)}loadModelPricingOverrideFormSelector(e){e=String(e||``).trim();let t=this.findModelPricingOverrideView(e);this.modelPricingOverrideFormHasExistingOverride=!!t,this.modelPricingOverrideRows=$D(t,()=>this.nextModelPricingOverrideRowID()),this.modelPricingOverrideFormPreservedTiers=t&&t.pricing&&Array.isArray(t.pricing.tiers)?BD(t.pricing.tiers):[],this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow();let n=this.modelPricingOverrideFormRow,r=n?QD(n,this.modelPricingOverrideViews,e):{pricing:{},sources:{}};this.modelPricingOverrideFormBasePricing=r.pricing,this.modelPricingOverrideFormBasePricingSources=r.sources}setModelPricingOverrideScope(e){this.modelPricingOverrideFormScope=e;let t=this.modelPricingOverrideFormScopeOptions.find(t=>t.value===e);t&&(this.modelPricingOverrideForm.selector=t.selector,this.loadModelPricingOverrideFormSelector(t.selector))}nextModelPricingOverrideRowID(){return this._modelPricingOverrideRowID=(this._modelPricingOverrideRowID||0)+1,`pricing-row-`+this._modelPricingOverrideRowID}availablePricingFieldOptions(e){return tO(this.modelPricingOverrideRows,e)}addModelPricingOverrideRow(){let e=eO(this.modelPricingOverrideRows),t=RD.find(t=>!e.has(t.value))||RD[0];t&&this.modelPricingOverrideRows.push({id:this.nextModelPricingOverrideRowID(),field:t.value,value:``})}removeModelPricingOverrideRow(e){this.modelPricingOverrideRows=this.modelPricingOverrideRows.filter(t=>t.id!==e.id),this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow()}modelPricingOverridePayload(){return nO(this.modelPricingOverrideRows,this.modelPricingOverrideFormPreservedTiers)}modelPricingOverrideDraftPricing(){let e=this.modelPricingOverridePayload();return e&&e.pricing?e.pricing:{}}modelPricingEffectivePreviewRows(){return rO(this.modelPricingOverrideFormBasePricing,this.modelPricingOverrideFormBasePricingSources,this.modelPricingOverrideDraftPricing())}closeModelPricingOverrideForm(){this.modelPricingOverrideFormOpen=!1,this.modelPricingOverrideSubmitting=!1,this.modelPricingOverrideError=``,this.modelPricingOverrideFormHasExistingOverride=!1,this.modelPricingOverrideFormDisplayName=``,this.modelPricingOverrideFormScope=``,this.modelPricingOverrideFormScopeOptions=[],this.modelPricingOverrideFormRow=null,this.modelPricingOverrideFormBasePricing=null,this.modelPricingOverrideFormBasePricingSources=null,this.modelPricingOverrideFormPreservedTiers=[],this.modelPricingOverrideRows=[],this.modelPricingOverrideForm={selector:``}}async submitModelPricingOverrideForm(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!e){this.modelPricingOverrideError=`Model pricing selector is required.`;return}let t=this.modelPricingOverridePayload();if(t.error){this.modelPricingOverrideError=t.error;return}let n={selector:e,...t};this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let e=await po(`/admin/model-pricing-overrides`,`PUT`,n,{label:`model pricing override`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(e.stale)return;if(!e.ok){this.modelPricingOverrideError=e.status===401?`Authentication required.`:so(e,`Failed to save model pricing.`);return}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),q.success(`Model pricing saved.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to save model pricing override:`,e),this.modelPricingOverrideError=`Failed to save model pricing.`}finally{this.modelPricingOverrideSubmitting=!1}}async deleteModelPricingOverride(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!(!e||!this.modelPricingOverrideFormHasExistingOverride)&&window.confirm(`Remove the model pricing override for "`+e+`"?`)){this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let t=await po(`/admin/model-pricing-overrides`,`DELETE`,{selector:e},{label:`model pricing override`});if(t.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.modelPricingOverrideError=t.status===401?`Authentication required.`:so(t,`Failed to remove model pricing override.`);return}}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),q.success(`Model pricing override removed.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to delete model pricing override:`,e),this.modelPricingOverrideError=`Failed to remove model pricing override.`}finally{this.modelPricingOverrideSubmitting=!1}}}},aO=R(``);function oO(e,t){E(t,!0);var n=aO();let r;var i=P(M(n),2),a=M(i,!0);T(i),T(n),F((e,i,o)=>{r=U(n,1,`alias-toggle`,null,r,e),n.disabled=LD.rowTogglingKey===t.row.key||!LD.virtualModelsAvailable,W(n,`aria-label`,i),B(a,o)},[()=>({enabled:LD.rowToggleEnabled(t.row),restricted:LD.rowToggleRestricted(t.row)}),()=>LD.rowToggleAriaLabel(t.row),()=>LD.rowToggleLabel(t.row)]),L(`click`,n,()=>LD.toggleRowEnabled(t.row)),z(e,n),D()}Hr([`click`]);var sO=R(`
        `);function cO(e,t){E(t,!0);var n=sO(),r=M(n),i=e=>{oO(e,{get row(){return LD.globalScopeRow}})};V(r,e=>{LD.virtualModelsAvailable&&e(i)});var a=P(r,2),o=e=>{{let t=O(()=>iO.modelPricingButtonLabel(`global model pricing`,iO.hasGlobalPricingOverride())),n=O(()=>iO.modelPricingButtonClass(iO.hasGlobalPricingOverride()));$C(e,{get label(){return I(t)},get class(){return`table-icon-btn ${I(n)??``}`},onclick:()=>iO.openGlobalPricingOverrideEdit(),children:(e,t)=>{G(e,{name:`circle-dollar-sign`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(a,e=>{iO.modelPricingOverridesAvailable&&e(o)});var s=P(a,2),c=e=>{{let t=O(()=>CD(`global model access`,LD.hasGlobalModelOverride())),n=O(()=>SD(LD.hasGlobalModelOverride()));$C(e,{get label(){return I(t)},get class(){return`table-icon-btn ${I(n)??``}`},onclick:()=>LD.openGlobalModelOverrideEdit(),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(s,e=>{LD.virtualModelsAvailable&&e(c)}),T(n),z(e,n),D()}function lO(e){return String(e&&(e.primary_model||e.source)||``).trim()}function uO(e){return Array.isArray(e&&e.fallback_models)?e.fallback_models:Array.isArray(e&&e.targets)?e.targets:[]}function dO(e){return Array.isArray(e)?e.map(e=>({...e,source:lO(e),targets:uO(e)})):[]}function fO(e){let t=uO(e);return t.length===0?`-`:t.join(`, `)}function pO(e){return e&&e.enabled===!1?`Off`:e&&e.managed?`Config`:`On`}function mO(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>lO(e)===n)||null}function hO(e,t){if(!t||t.is_alias)return!1;let n=mO(e,RE(t));return!!(n&&n.enabled!==!1&&uO(n).length>0)}function gO(e,t){return hO(e,t)?`table-action-btn-failover-active`:``}function _O(e,t){let n=`Edit failover for `+(t&&t.display_name?t.display_name:`model`);return hO(e,t)?n+` (active)`:n}function vO(e){let t=[e&&e.target_model];return(Array.isArray(e&&e.targets)?e.targets:[]).forEach(e=>t.push(e&&e.model)),t.map(e=>String(e||``).trim()).filter(Boolean)}function yO(e){let t=Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(Boolean):[];return{target_model:t[0]||``,targets:t.slice(1).map(e=>({model:e}))}}function bO(e){return{primary_model:String(e&&e.source||``).trim(),fallback_models:vO(e),enabled:!(e&&e.enabled===!1)}}function xO(e){return lO(e)}function SO(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=xO(e);n&&(t[n]=!0)}),t}function CO(e,t){let n=xO(t);return!!(n&&e&&e[n])}function wO(e,t){return(Array.isArray(e)?e:[]).filter(e=>CO(t,e))}function TO(e,t){let n=Array.isArray(e)?e:[];return n.length>0&&wO(n,t).length===n.length}function EO(e){return[lO(e),uO(e).join(` `)].join(` `).toLowerCase()}function DO(e,t){let n=Array.isArray(e)?e:[],r=String(t||``).trim().toLowerCase();return r?n.filter(e=>EO(e).includes(r)):n}function OO(e){return{primary_model:lO(e),fallback_models:uO(e).map(e=>String(e||``).trim()).filter(Boolean),enabled:!!(e&&e.enabled!==!1)}}function kO(){return{source:``,target_model:``,targets:[],enabled:!0}}var Z=new class{#e=k(!0);get failoverAvailable(){return I(this.#e)}set failoverAvailable(e){A(this.#e,e,!0)}#t=k(j([]));get failoverRules(){return I(this.#t)}set failoverRules(e){A(this.#t,e,!0)}#n=k(!1);get failoverLoading(){return I(this.#n)}set failoverLoading(e){A(this.#n,e,!0)}#r=k(!1);get failoverSaving(){return I(this.#r)}set failoverSaving(e){A(this.#r,e,!0)}#i=k(!1);get failoverGenerating(){return I(this.#i)}set failoverGenerating(e){A(this.#i,e,!0)}#a=k(``);get failoverError(){return I(this.#a)}set failoverError(e){A(this.#a,e,!0)}#o=k(j([]));get failoverGeneratedRules(){return I(this.#o)}set failoverGeneratedRules(e){A(this.#o,e,!0)}#s=k(!1);get failoverDraftsOpen(){return I(this.#s)}set failoverDraftsOpen(e){A(this.#s,e,!0)}#c=k(j({}));get failoverDraftSelections(){return I(this.#c)}set failoverDraftSelections(e){A(this.#c,e,!0)}#l=k(``);get failoverDraftFilter(){return I(this.#l)}set failoverDraftFilter(e){A(this.#l,e,!0)}#u=k(!1);get failoverDraftSaving(){return I(this.#u)}set failoverDraftSaving(e){A(this.#u,e,!0)}#d=k(!1);get failoverFormOpen(){return I(this.#d)}set failoverFormOpen(e){A(this.#d,e,!0)}#f=k(`create`);get failoverFormMode(){return I(this.#f)}set failoverFormMode(e){A(this.#f,e,!0)}#p=k(!1);get failoverFormManaged(){return I(this.#p)}set failoverFormManaged(e){A(this.#p,e,!0)}#m=k(j(kO()));get failoverForm(){return I(this.#m)}set failoverForm(e){A(this.#m,e,!0)}failoverEnabled(){return _o.booleanFlag(`FAILOVER_ENABLED`,!0)}async fetchFailoverRules(){if(!this.failoverEnabled()){this.failoverAvailable=!1,this.failoverRules=[],this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,this.failoverError=``,this.failoverLoading=!1;return}this.failoverLoading=!0,this.failoverError=``;try{let e=await fo(`/admin/failover`,{label:`failover mappings`});if(e.status===503){this.failoverAvailable=!1,this.failoverRules=[];return}if(e.stale)return;if(this.failoverAvailable=!0,!e.ok){this.failoverRules=[];return}this.failoverRules=dO(e.data)}catch(e){console.error(`Failed to fetch failover mappings:`,e),this.failoverRules=[],this.failoverError=`Unable to load failover mappings.`}finally{this.failoverLoading=!1}}resetFailoverForm(){this.failoverFormMode=`create`,this.failoverFormManaged=!1,this.failoverForm=kO()}openFailoverCreate(){this.resetFailoverForm(),this.failoverFormOpen=!0,this.focusFailoverEditor()}openFailoverEdit(e){if(!e)return;this.resetFailoverForm(),this.failoverFormMode=`edit`,this.failoverFormOpen=!0,this.failoverFormManaged=!!e.managed;let t=this.failoverPrimaryModel(e),n=this.failoverTargets(e);this.failoverForm={source:t,target_model:n[0]||``,targets:n.slice(1).map(e=>({model:e})),enabled:e.enabled!==!1},this.focusFailoverEditor()}openFailoverForModel(e){if(!e||e.is_alias)return;let t=this.qualifiedModelName(e),n=this.failoverRules.find(e=>this.failoverPrimaryModel(e)===t);if(n){this.openFailoverEdit(n);return}this.resetFailoverForm(),this.failoverFormMode=`create`,this.failoverFormOpen=!0,this.failoverForm.source=t,this.focusFailoverEditor()}closeFailoverForm(){this.failoverFormOpen=!1}closeFailoverDraftsModal(){this.failoverDraftSaving||(this.failoverDraftsOpen=!1)}failoverFormTargets(){return vO(this.failoverForm)}setFailoverFormTargets(e){let t=yO(e);this.failoverForm.target_model=t.target_model,this.failoverForm.targets=t.targets}addFailoverTarget(){Array.isArray(this.failoverForm.targets)||(this.failoverForm.targets=[]),this.failoverForm.targets.push({model:``}),this.focusFailoverEditor()}removeFailoverTarget(e){if(!Array.isArray(this.failoverForm.targets)){this.failoverForm.targets=[];return}this.failoverForm.targets.splice(e,1)}removePrimaryFailoverTarget(){let e=Array.isArray(this.failoverForm.targets)?this.failoverForm.targets:[];if(e.length>0){let t=e.shift();this.failoverForm.target_model=t&&t.model?t.model:``,this.failoverForm.targets=e;return}this.failoverForm.target_model=``}failoverRulePayload(){return bO(this.failoverForm)}async submitFailoverForm(){if(this.failoverSaving||this.failoverGenerating||this.failoverFormManaged)return;let e=this.failoverRulePayload();if(!e.primary_model){this.failoverError=`Primary model is required.`;return}if(e.enabled&&e.fallback_models.length===0){this.failoverError=`Add at least one failover target.`;return}this.failoverSaving=!0,this.failoverError=``;try{let t=await po(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to save failover mapping.`;return}q.success(`Failover mapping saved.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to save failover mapping:`,e),this.failoverError=`Failed to save failover mapping.`}finally{this.failoverSaving=!1}}async deleteFailoverRule(e){let t=String(e&&this.failoverPrimaryModel(e)||this.failoverForm.source||``).trim();if(!(!t||this.failoverSaving||this.failoverGenerating)&&confirm(`Remove failover mapping for "`+t+`"?`)){this.failoverSaving=!0,this.failoverError=``;try{let e=await po(`/admin/failover`,`DELETE`,{primary_model:t},{label:`failover mapping`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mapping.`;return}q.success(`Failover mapping removed.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to remove failover mapping:`,e),this.failoverError=`Failed to remove failover mapping.`}finally{this.failoverSaving=!1}}}async generateFailoverForForm(){if(this.failoverGenerating||this.failoverSaving||this.failoverFormManaged)return;let e=String(this.failoverForm.source||``).trim();if(!e){this.failoverError=`Primary model is required.`;return}this.failoverGenerating=!0,this.failoverError=``;try{let t=await po(`/admin/failover/generate`,`POST`,{primary_model:e},{label:`failover generation`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to generate failover mapping.`;return}let n=dO(t.data),r=n.find(t=>this.failoverPrimaryModel(t)===e)||n[0]||null,i=this.failoverTargets(r);if(i.length===0){this.failoverError=`No failover suggestions were generated for this model.`;return}this.setFailoverFormTargets(i),q.success(`Generated `+i.length+` fallback model`+(i.length===1?`.`:`s.`)),this.focusFailoverEditor()}catch(e){console.error(`Failed to generate failover mapping:`,e),this.failoverError=`Failed to generate failover mapping.`}finally{this.failoverGenerating=!1}}openFailoverResetDialog(){jo.open({title:`Remove failover models`,titleId:`failoverResetDialogTitle`,inputId:`failover-reset-confirmation`,message:`Remove every dashboard-managed failover mapping. Configuration-managed mappings remain active.`,requiredText:`remove`,confirmLabel:`Remove Failover`,icon:`trash-2`,dialogClass:`budget-reset-dialog`,onConfirm:async()=>{await this.resetFailoverRules(),this.failoverError&&(jo.error=this.failoverError)}})}async resetFailoverRules(){if(!this.failoverSaving){this.failoverSaving=!0,this.failoverError=``;try{let e=await po(`/admin/failover/reset`,`POST`,void 0,{label:`failover removal`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mappings.`;return}this.failoverRules=dO(e.data),this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,q.success(`Dashboard-managed failover mappings removed.`),jo.close()}catch(e){console.error(`Failed to remove failover mappings:`,e),this.failoverError=`Failed to remove failover mappings.`}finally{this.failoverSaving=!1}}}async generateFailoverRules(){if(!(this.failoverGenerating||this.failoverDraftSaving)){this.failoverGenerating=!0,this.failoverError=``,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!0;try{let e=await po(`/admin/failover/generate`,`POST`,void 0,{label:`failover generation`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to generate failover mappings.`;return}this.failoverGeneratedRules=dO(e.data),this.selectAllFailoverDrafts(this.failoverGeneratedRules)}catch(e){console.error(`Failed to generate failover mappings:`,e),this.failoverError=`Failed to generate failover mappings.`}finally{this.failoverGenerating=!1}}}failoverDraftKey(e){return xO(e)}selectAllFailoverDrafts(e){this.failoverDraftSelections=SO(e)}failoverDraftSelected(e){return CO(this.failoverDraftSelections,e)}setFailoverDraftSelected(e,t){let n=this.failoverDraftKey(e);n&&(this.failoverDraftSelections={...this.failoverDraftSelections,[n]:!!t})}selectedFailoverDrafts(){return wO(this.failoverGeneratedRules,this.failoverDraftSelections)}selectedFailoverDraftCount(){return this.selectedFailoverDrafts().length}failoverDraftCountLabel(){return this.selectedFailoverDraftCount()+` / `+this.failoverGeneratedRules.length+` selected`}allFailoverDraftsSelected(){return TO(this.failoverGeneratedRules,this.failoverDraftSelections)}toggleAllFailoverDrafts(){if(!(this.failoverDraftSaving||this.failoverGenerating||this.failoverGeneratedRules.length===0)){if(this.allFailoverDraftsSelected()){this.failoverDraftSelections={};return}this.selectAllFailoverDrafts(this.failoverGeneratedRules)}}failoverDraftSearchText(e){return EO(e)}filteredFailoverDrafts(){return DO(this.failoverGeneratedRules,this.failoverDraftFilter)}failoverDraftPayload(e){return OO(e)}async saveSelectedFailoverDrafts(){if(this.failoverDraftSaving||this.failoverGenerating)return;let e=this.selectedFailoverDrafts();if(e.length===0){this.failoverError=`Select at least one failover draft.`;return}this.failoverDraftSaving=!0,this.failoverError=``;try{for(let t of e){let e=this.failoverDraftPayload(t);if(!e.primary_model||e.fallback_models.length===0){this.failoverError=`Generated failover draft is missing model data.`;return}let n=await po(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(n.stale)return;if(!n.ok){this.failoverError=`Failed to save failover mapping.`;return}}q.success(`Saved `+e.length+` failover mapping`+(e.length===1?`.`:`s.`)),this.failoverDraftsOpen=!1,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.fetchFailoverRules()}catch(e){console.error(`Failed to save generated failover mappings:`,e),this.failoverError=`Failed to save failover mappings.`}finally{this.failoverDraftSaving=!1}}focusFailoverEditor(){setTimeout(()=>{let e=document.querySelector(`[data-failover-editor]`),t=e&&e.querySelector?e.querySelector(`[data-modal-autofocus], input:not([disabled]), textarea:not([disabled]), button:not([disabled])`):null;t&&typeof t.focus==`function`&&t.focus({preventScroll:!0})},0)}failoverTargetLabel(e){return fO(e)}failoverPrimaryModel(e){return lO(e)}failoverTargets(e){return uO(e)}findFailoverMapping(e){return mO(this.failoverRules,e)}hasActiveFailoverMapping(e){return hO(this.failoverRules,e)}failoverButtonClass(e){return gO(this.failoverRules,e)}failoverButtonLabel(e){return _O(this.failoverRules,e)}normalizeFailoverRules(e){return dO(e)}failoverRuleStatus(e){return pO(e)}qualifiedModelName(e){return RE(e)}},AO=R(``),jO=R(``),MO=R(`Config`),NO=R(`
        Targets
        `),PO=R(``),FO=R(`
        Redirects to
        `),IO=R(` `),LO=R(`
        `),RO=R(`
        `),zO=R(`
        `);function BO(e,t){E(t,!0);let n=O(()=>iO.modelRowPricing(t.row));var r=zO(),i=M(r),a=M(i),o=M(a),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=e=>{z(e,AO())};V(l,e=>{t.row.is_alias&&e(u)});var d=P(l,2),f=e=>{z(e,jO())};V(d,e=>{!t.row.is_alias&&t.row.masking_alias&&e(f)});var p=P(d,2),m=e=>{z(e,MO())},h=O(()=>bD(t.row));V(p,e=>{I(h)&&e(m)}),T(o);var g=P(o,2),_=e=>{var n=NO(),r=P(M(n)),i=M(r,!0);T(r),T(n),F(()=>B(i,t.row.secondary_name)),z(e,n)};V(g,e=>{t.row.is_alias&&e(_)});var v=P(g,2),y=e=>{var n=FO(),r=P(M(n)),i=M(r,!0);T(r);var a=P(r,2),o=e=>{var n=PO();F(e=>{W(n,`aria-label`,LD.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),W(n,`title`,LD.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),n.disabled=e},[()=>!!LD.rowDeletingKey]),L(`click`,n,()=>LD.removeRedirectRow(t.row)),z(e,n)},s=O(()=>LD.virtualModelsAvailable&&vD(t.row));V(a,e=>{I(s)&&e(o)}),T(n),F(e=>B(i,e),[()=>ZE(t.row.masking_alias)]),z(e,n)};V(v,e=>{!t.row.is_alias&&t.row.masking_alias&&e(y)}),T(a),T(i);var b=P(i);H(b,17,()=>t.columns,oi,(e,r)=>{var i=IO(),a=M(i,!0);T(i),F(e=>{U(i,1,Fi(I(r).class),`svelte-1iynym`),B(a,e)},[()=>I(r).value(t.row,I(n))]),z(e,i)});var x=P(b),S=M(x),C=e=>{var n=LO(),r=M(n);oO(r,{get row(){return t.row}});var i=P(r,2),a=e=>{{let n=O(()=>LD.rowDeletingKey===t.row.key?`Removing alias `+t.row.alias.name:`Remove alias `+t.row.alias.name),r=O(()=>!!LD.rowDeletingKey);$C(e,{get label(){return I(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>LD.removeAliasRow(t.row),get disabled(){return I(r)},children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}})}},o=O(()=>LD.virtualModelsAvailable&&_D(t.row));V(i,e=>{I(o)&&e(a)});var s=P(i,2),c=e=>{{let n=O(()=>`Edit alias `+t.row.alias.name);$C(e,{get label(){return I(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>LD.openVirtualModelEditAlias(t.row.alias),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(s,e=>{LD.virtualModelsAvailable&&e(c)}),T(n),z(e,n)},w=e=>{var n=RO(),r=M(n);oO(r,{get row(){return t.row}});var i=P(r,2),a=e=>{{let n=O(()=>iO.modelPricingButtonLabel(`model pricing for `+t.row.display_name,iO.hasModelPricingOverride(t.row))),r=O(()=>iO.modelPricingButtonClass(iO.hasModelPricingOverride(t.row)));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>iO.openModelPricingOverrideEdit(t.row),children:(e,t)=>{G(e,{name:`circle-dollar-sign`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(i,e=>{iO.modelPricingOverridesAvailable&&e(a)});var o=P(i,2),s=e=>{{let n=O(()=>Z.failoverButtonLabel(t.row)),r=O(()=>Z.failoverButtonClass(t.row));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>Z.openFailoverForModel(t.row),children:(e,t)=>{G(e,{name:`shuffle`,class:`table-icon-svg`})},$$slots:{default:!0}})}},c=O(()=>Z.failoverAvailable&&Z.failoverEnabled());V(o,e=>{I(c)&&e(s)});var l=P(o,2),u=e=>{{let n=O(()=>X.rateLimitGaugeTitle(t.row.display_name,X.rateLimitGaugeClassForModel(t.row))),r=O(()=>X.rateLimitGaugeClassForModel(t.row));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>X.openRateLimitInspectorForModel(t.row),children:(e,t)=>{G(e,{name:`gauge`,class:`table-icon-svg`})},$$slots:{default:!0}})}},d=O(()=>X.rateLimitsEnabled()&&X.rateLimitInspectorModelID(t.row));V(l,e=>{I(d)&&e(u)});var f=P(l,2),p=e=>{{let n=O(()=>`Edit redirect for `+t.row.display_name);$C(e,{get label(){return I(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>LD.openVirtualModelEditAlias(t.row.masking_alias),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(f,e=>{LD.virtualModelsAvailable&&t.row.masking_alias&&t.row.masking_alias.name&&e(p)});var m=P(f,2),h=e=>{{let n=O(()=>CD(`model access for `+t.row.display_name,xD(t.row.access))),r=O(()=>SD(xD(t.row.access)));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>LD.openVirtualModelEditModel(t.row),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(m,e=>{LD.virtualModelsAvailable&&!t.row.masking_alias&&e(h)}),T(n),z(e,n)};V(S,e=>{t.row.is_alias?e(C):e(w,-1)}),T(x),T(r),F((e,n)=>{W(r,`id`,e),U(r,1,n,`svelte-1iynym`),B(c,t.row.display_name)},[()=>yD(t.row)||void 0,()=>Fi(gD(t.row))]),z(e,r),D()}Hr([`click`]);var VO={headerLines:[`Modes`],value:e=>(e.model?.metadata?.modes??[]).join(`, `)||`-`};function HO(e,t){return{headerLines:e,class:`col-price`,value:t}}var UO=HO([`Input / Output ($/MTok)`],(e,t)=>ts(t?.input_per_mtok)+` / `+ts(t?.output_per_mtok)),WO={all:[VO,UO],text_generation:[VO,UO,HO([`Cached $/MTok`],(e,t)=>ts(t?.cached_input_per_mtok))],embedding:[HO([`Input`,`$/MTok`],(e,t)=>ts(t?.input_per_mtok))],image:[HO([`$/Image`],(e,t)=>ns(t?.per_image))],audio:[HO([`$/Second`],(e,t)=>ns(t?.per_second_input)),HO([`$/Character`],(e,t)=>ns(t?.per_character_input))],video:[HO([`$/Second (In)`],(e,t)=>ns(t?.per_second_input)),HO([`$/Second (Out)`],(e,t)=>ns(t?.per_second_output))],utility:[HO([`$/Page`],(e,t)=>ns(t?.per_page)),HO([`$/Request`],(e,t)=>ns(t?.per_request))]};function GO(e){return WO[e]||WO.all}function KO(e){return GO(e).length+2}var qO=R(`
        `),JO=R(` `,1),YO=R(``),XO=R(` `),ZO=R(` `),QO=R(`
        `),$O=R(`
        `),ek=R(`
        Model
        `);function tk(e,t){E(t,!0);let n=O(()=>Es.activeCategory||`all`),r=O(()=>GO(I(n))),i=O(()=>KO(I(n)));var a=ek(),o=M(a),s=M(o),c=M(s),l=P(M(c));H(l,17,()=>I(r),oi,(e,t)=>{var n=YO();H(n,21,()=>I(t).headerLines,oi,(e,t,n)=>{var r=JO(),i=N(r),a=e=>{z(e,qO())};V(i,e=>{n>0&&e(a)});var o=P(i,1,!0);F(()=>B(o,I(t))),z(e,r)}),T(n),F(()=>U(n,1,Fi(I(t).class),`svelte-1911hy6`)),z(e,n)});var u=P(l);cO(M(u),{}),T(u),T(c),T(s),H(P(s),17,()=>LD.filteredDisplayModelGroups,e=>e.key,(e,t)=>{var n=$O(),a=M(n),o=M(a),s=M(o),c=M(s),l=M(c),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=e=>{var n=XO(),r=M(n,!0);T(n),F(()=>B(r,`(`+I(t).type_label+`)`)),z(e,n)};V(f,e=>{I(t).type_label&&e(p)});var m=P(f,2),h=e=>{var n=ZO(),r=M(n,!0);T(n),F(()=>B(r,I(t).item_count_label)),z(e,n)};V(m,e=>{I(t).item_count_label&&e(h)}),T(l);var g=P(l,2),_=e=>{var n=QO(),r=M(n,!0);T(n),F(()=>B(r,I(t).access_summary)),z(e,n)};V(g,e=>{I(t).access_summary&&e(_)}),T(c);var v=P(c,2),y=M(v),b=e=>{oO(e,{get row(){return I(t)}})};V(y,e=>{I(t).access.selector&&e(b)});var x=P(y,2),S=e=>{{let n=O(()=>iO.modelPricingButtonLabel(`provider pricing for `+I(t).display_name,iO.hasProviderPricingOverride(I(t)))),r=O(()=>iO.modelPricingButtonClass(iO.hasProviderPricingOverride(I(t))));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>iO.openProviderPricingOverrideEdit(I(t)),children:(e,t)=>{G(e,{name:`circle-dollar-sign`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(x,e=>{iO.modelPricingOverridesAvailable&&I(t).provider_name&&e(S)});var C=P(x,2),w=e=>{{let n=O(()=>X.rateLimitGaugeTitle(`provider `+I(t).display_name,X.rateLimitGaugeClassForProvider(I(t)))),r=O(()=>X.rateLimitGaugeClassForProvider(I(t)));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>X.openRateLimitInspectorForProvider(I(t)),children:(e,t)=>{G(e,{name:`gauge`,class:`table-icon-svg`})},$$slots:{default:!0}})}},ee=O(()=>X.rateLimitsEnabled()&&I(t).provider_name);V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{{let n=O(()=>CD(`provider access for `+I(t).display_name,xD(I(t).access))),r=O(()=>SD(xD(I(t).access)));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>LD.openProviderOverrideEdit(I(t)),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(te,e=>{LD.virtualModelsAvailable&&I(t).access.selector&&e(ne)}),T(v),T(s),T(o),T(a),H(P(a),17,()=>I(t).rows,e=>e.key,(e,t)=>{BO(e,{get row(){return I(t)},get columns(){return I(r)}})}),T(n),F(()=>{W(o,`colspan`,I(i)),B(d,I(t).display_name)}),z(e,n)}),T(o),T(a),z(e,a),D()}var nk=R(``);function rk(e,t){let n=ya(t,`enabled`,3,!1),r=ya(t,`label`,3,``),i=ya(t,`disabled`,3,!1),a=ya(t,`restricted`,3,!1);var o=nk();let s;var c=P(M(o),2),l=M(c,!0);T(c),T(o),F(()=>{s=U(o,1,`alias-toggle`,null,s,{enabled:n(),restricted:a()}),o.disabled=i(),W(o,`aria-label`,(n()?`Disable `:`Enable `)+r()),B(l,t.text??(n()?`Enabled`:`Disabled`))}),L(`click`,o,function(...e){t.onclick?.apply(this,e)}),z(e,o)}Hr([`click`]);var ik=R(``),ak=R(`
        `);function ok(e,t){E(t,!0);let n=ya(t,`model`,15,``),r=ya(t,`weight`,15),i=ya(t,`id`,3,void 0),a=ya(t,`placeholder`,3,`openai/gpt-4o`),o=ya(t,`showRemove`,3,!0);var s=ak(),c=M(s);na(c);var l=P(c,2),u=e=>{var t=ik();na(t),F(()=>t.disabled=LD.vmFormManaged),da(t,r),z(e,t)},d=O(()=>LD.vmFormShowWeights());V(l,e=>{I(d)&&e(u)});var f=P(l,2),p=e=>{$C(e,{label:`Remove target`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,get onclick(){return t.onremove},get disabled(){return LD.vmFormManaged},children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}})};V(f,e=>{o()&&e(p)}),T(s),F(()=>{W(c,`id`,i()),W(c,`placeholder`,a()),c.disabled=LD.vmFormManaged}),da(c,n),z(e,s),D()}var sk=R(`

        `),ck=R(`adaptive lets the registered routing extension pick the target per - request.`,1),lk=R(`Add one target to make this a redirect/alias, or two or more to load - balance across them, then pick a strategy: round_robin rotates across targets - (weight biases the share) and cost always routes to the cheapest available - target. Leave Targets empty to make it only an access policy on the Source selector. The selector uses / for all providers and - models, for one provider, or for one model. user_paths is - matched against the effective request user_path: the managed API key user_path when present, otherwise the configured user path request header.`,1),uk=R(``),dk=R(`

        This virtual model is defined in configuration (config.yaml / VIRTUAL_MODELS) and is read-only here. Edit your configuration to change it.

        `),fk=R(``),pk=R(``),mk=R(``),hk=R(`
        `,1),gk=R(``),_k=R(`Use / to allow every user path. Use a team path to restrict to that - subtree, or an unused path to make the selector unavailable.`,1),vk=R(``),yk=R(` `),bk=R(`
        Targets
        `,1);function xk(e,t){E(t,!0);let n=LD;An(()=>{n.vmFormOpen&&_o.ensureLoaded()});{let t=e=>{Rx(e,{copyId:`virtual-model-help-copy`,label:`virtual model help`,get open(){return n.vmFormHelpOpen},set open(e){n.vmFormHelpOpen=e},title:e=>{var t=sk(),r=M(t,!0);T(t),F(()=>B(r,n.vmFormDisplayName||n.vmForm.source||`Virtual model`)),z(e,t)},help:e=>{Ue();var t=lk(),n=P(N(t),7),r=e=>{var t=ck();Ue(),z(e,t)},i=O(()=>_o.virtualModelStrategies().includes(`adaptive`));V(n,e=>{I(i)&&e(r)});var a=P(n,8);a.textContent=`{provider_name}/`;var o=P(a,2);o.textContent=`{provider_name}/{model}`,Ue(7),z(e,t)},$$slots:{title:!0,help:!0}})},r=e=>{var t=Qr(),r=N(t),i=e=>{var t=uk();F(()=>t.disabled=n.vmDeleting||n.vmSubmitting),L(`click`,t,()=>n.deleteVirtualModel()),z(e,t)};V(r,e=>{n.vmFormHasExisting&&!n.vmFormManaged&&e(i)}),z(e,t)},i=O(()=>n.vmDeleting||n.vmFormManaged),a=O(()=>n.vmFormMode===`edit`?`Save`:`Create`),o=O(()=>n.vmFormMode===`edit`?`save`:`plus`);rT(e,{get open(){return n.vmFormOpen},ariaLabel:`Virtual model editor`,get error(){return n.vmFormError},get submitting(){return n.vmSubmitting},get submitDisabled(){return I(i)},get submitLabel(){return I(a)},get submitIcon(){return I(o)},onclose:()=>n.closeVirtualModelForm(),onsubmit:()=>n.submitVirtualModelForm(),header:t,extraActions:r,children:(e,t)=>{var r=bk(),i=N(r),a=e=>{z(e,dk())};V(i,e=>{n.vmFormManaged&&e(a)});var o=P(i,2);aT(o,{id:`virtual-model-source`,label:`Source`,children:(e,t)=>{var r=fk();na(r),F(()=>r.disabled=n.vmFormSourceLocked||n.vmFormManaged),da(r,()=>n.vmForm.source,e=>n.vmForm.source=e),z(e,r)},$$slots:{default:!0}});var s=P(o,2);H(s,21,()=>Es.models,e=>RE(e),(e,t)=>{var n=pk(),r=M(n,!0);T(n);var i={};F((e,t)=>{B(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>RE(I(t)),()=>RE(I(t))]),z(e,n)}),T(s);var c=P(s,2),l=P(M(c),2);{let e=O(()=>n.vmFormHasPrimaryTarget());ok(l,{id:`virtual-model-target`,get showRemove(){return I(e)},onremove:()=>n.removePrimaryTarget(),get model(){return n.vmForm.target_model},set model(e){n.vmForm.target_model=e},get weight(){return n.vmForm.target_weight},set weight(e){n.vmForm.target_weight=e}})}var u=P(l,2);H(u,17,()=>n.vmForm.targets,oi,(e,t,r)=>{ok(e,{placeholder:`groq/llama`,onremove:()=>n.removeVmTarget(r),get model(){return I(t).model},set model(e){I(t).model=e},get weight(){return I(t).weight},set weight(e){I(t).weight=e}})});var d=P(u,2),f=M(d);G(M(f),{name:`plus`,class:`form-action-icon`}),Ue(2),T(f),T(d),T(c);var p=P(c,2),m=e=>{var t=hk(),r=N(t);aT(r,{id:`virtual-model-strategy`,label:`Load-balancing strategy`,children:(e,t)=>{var r=mk();H(r,21,()=>n.vmStrategyOptions(),e=>e.value,(e,t)=>{var n=pk(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(r),F(()=>r.disabled=n.vmFormManaged),Gi(r,()=>n.vmForm.strategy,e=>n.vmForm.strategy=e),z(e,r)},$$slots:{default:!0}});var i=P(r,2),a=M(i),o=M(a);na(o),Ue(2),T(a),T(i),F(()=>o.disabled=n.vmFormManaged),fa(o,()=>n.vmForm.session_affinity,e=>n.vmForm.session_affinity=e),z(e,t)},h=O(()=>n.vmFormShowStrategy());V(p,e=>{I(h)&&e(m)});var g=P(p,2),_=M(g);Rx(_,{copyId:`virtual-model-user-paths-help`,label:`user paths help`,get open(){return n.vmFormUserPathsHelpOpen},set open(e){n.vmFormUserPathsHelpOpen=e},title:e=>{z(e,gk())},help:e=>{Ue();var t=_k();Ue(2),z(e,t)},$$slots:{title:!0,help:!0}});var v=P(_,2);ft(v),W(v,`placeholder`,`/ -/team/alpha -/non-existing`),T(g);var y=P(g,2);aT(y,{id:`virtual-model-description`,label:`Description`,children:(e,t)=>{var r=vk();ft(r),F(()=>r.disabled=n.vmFormManaged),da(r,()=>n.vmForm.description,e=>n.vmForm.description=e),z(e,r)},$$slots:{default:!0}});var b=P(y,2),x=M(b),S=e=>{var t=yk(),r=M(t,!0);T(t),F(()=>B(r,`Default enabled: `+(n.vmFormDefaultEnabled?`yes`:`no`)+` · Effective now: `+(n.vmFormEffectiveEnabled?`yes`:`no`))),z(e,t)};V(x,e=>{n.vmFormMode===`edit`&&e(S)});var C=P(x,2),w=M(C);{let e=O(()=>n.vmFormToggleRestricted()),t=O(()=>n.vmFormToggleLabel());rk(w,{get enabled(){return n.vmForm.enabled},get restricted(){return I(e)},label:`virtual model`,get disabled(){return n.vmFormManaged},get text(){return I(t)},onclick:()=>{n.vmFormManaged||(n.vmForm.enabled=!n.vmForm.enabled)}})}T(C),T(b),F(()=>{f.disabled=n.vmFormManaged,v.disabled=n.vmFormManaged}),L(`click`,f,()=>n.addVmTarget()),da(v,()=>n.vmForm.user_paths,e=>n.vmForm.user_paths=e),z(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}})}D()}Hr([`click`]);var Sk=R(`

        Pricing override

        `,1),Ck=R(``),wk=R(``),Tk=R(``),Ek=R(``),Dk=R(`
        `),Ok=R(`
        Tiered pricing exists for this override and will be preserved. Tier editing can be added - without a database migration.
        `),kk=R(`
        No pricing fields set.
        `),Ak=R(`
        `),jk=R(`

        Currency is USD. Saved fields override model registry and config.yaml pricing for this - selector; unset fields continue to inherit.

        Price Type USD Source
        `,1);function Mk(e,t){E(t,!0);let n=iO;rT(e,{get open(){return n.modelPricingOverrideFormOpen},ariaLabel:`Model pricing editor`,dialogClass:`model-pricing-editor`,get error(){return n.modelPricingOverrideError},get submitting(){return n.modelPricingOverrideSubmitting},submitLabel:`Save Pricing`,onclose:()=>n.closeModelPricingOverrideForm(),onsubmit:()=>n.submitModelPricingOverrideForm(),header:e=>{var t=Sk(),r=P(N(t),2),i=M(r,!0);T(r),F(()=>B(i,n.modelPricingOverrideFormDisplayName||n.modelPricingOverrideForm.selector||`Pricing`)),z(e,t)},extraActions:e=>{var t=Qr(),r=N(t),i=e=>{var t=Ck();F(()=>t.disabled=n.modelPricingOverrideSubmitting),L(`click`,t,()=>n.deleteModelPricingOverride()),z(e,t)};V(r,e=>{n.modelPricingOverrideFormHasExistingOverride&&e(i)}),z(e,t)},children:(e,t)=>{var r=jk(),i=N(r),a=M(i);aT(a,{id:`model-pricing-override-selector`,label:`Selector`,children:(e,t)=>{var r=wk();na(r),da(r,()=>n.modelPricingOverrideForm.selector,e=>n.modelPricingOverrideForm.selector=e),z(e,r)},$$slots:{default:!0}});var o=P(a,2),s=e=>{aT(e,{id:`model-pricing-override-scope`,label:`Scope`,children:(e,t)=>{var r=Ek();H(r,21,()=>n.modelPricingOverrideFormScopeOptions,e=>e.value,(e,t)=>{var n=Tk(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(r),L(`change`,r,()=>n.setModelPricingOverrideScope(n.modelPricingOverrideFormScope)),Gi(r,()=>n.modelPricingOverrideFormScope,e=>n.modelPricingOverrideFormScope=e),z(e,r)},$$slots:{default:!0}})};V(o,e=>{n.modelPricingOverrideFormScopeOptions.length>1&&e(s)}),T(i);var c=P(i,4);H(c,21,()=>n.modelPricingOverrideRows,e=>e.id,(e,t,r)=>{var i=Dk(),a=M(i),o=M(a),s=P(o,2);H(s,21,()=>n.availablePricingFieldOptions(I(t)),e=>e.value,(e,t)=>{var n=Tk(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).group+` - `+I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(s),T(a);var c=P(a,2),l=M(c),u=P(l,2);na(u),T(c);var d=P(c,2);{let e=O(()=>`Remove `+n.pricingFieldLabel(I(t).field));$C(d,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn pricing-override-remove-row`,onclick:()=>n.removeModelPricingOverrideRow(I(t)),children:(e,t)=>{G(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}T(i),F(()=>{W(o,`for`,`pricing-type-`+I(t).id),W(s,`id`,`pricing-type-`+I(t).id),W(l,`for`,`pricing-value-`+I(t).id),W(u,`id`,`pricing-value-`+I(t).id)}),Gi(s,()=>I(t).field,e=>I(t).field=e),da(u,()=>I(t).value,e=>I(t).value=e),z(e,i)}),T(c);var l=P(c,2),u=M(l);G(M(u),{name:`plus`,class:`form-action-icon`}),Ue(2),T(u),T(l);var d=P(l,2),f=e=>{z(e,Ok())};V(d,e=>{n.modelPricingOverrideFormPreservedTiers.length>0&&e(f)});var p=P(d,2),m=P(M(p),2),h=e=>{z(e,kk())},g=O(()=>n.modelPricingEffectivePreviewRows().length===0);V(m,e=>{I(g)&&e(h)}),H(P(m,2),17,()=>n.modelPricingEffectivePreviewRows(),e=>e.field,(e,t)=>{var n=Ak(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(n),F(e=>{B(i,I(t).label),B(o,e),B(c,I(t).source)},[()=>I(t).value===null||I(t).value===void 0?`-`:ns(Number(I(t).value))]),z(e,n)}),T(p),L(`click`,u,()=>n.addModelPricingOverrideRow()),z(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}}),D()}Hr([`click`,`change`]);var Nk=R(`

        Failover mapping

        `,1),Pk=R(``),Fk=R(`

        This failover mapping is defined in configuration and is read-only here.

        `),Ik=R(``),Lk=R(`
        `),Rk=R(`
        `,1),zk=R(`
        `);function Bk(e,t){E(t,!0);{let t=e=>{var t=Nk(),n=P(N(t),2),r=M(n,!0);T(n),F(()=>B(r,Z.failoverForm.source||`Failover`)),z(e,t)},n=e=>{var t=Qr(),n=N(t),r=e=>{var t=Pk();F(()=>t.disabled=Z.failoverSaving||Z.failoverGenerating),L(`click`,t,()=>Z.deleteFailoverRule()),z(e,t)};V(n,e=>{Z.failoverFormMode===`edit`&&!Z.failoverFormManaged&&e(r)}),z(e,t)},r=O(()=>Z.failoverGenerating||Z.failoverFormManaged);rT(e,{get open(){return Z.failoverFormOpen},ariaLabel:`Failover editor`,get error(){return Z.failoverError},get submitting(){return Z.failoverSaving},get submitDisabled(){return I(r)},submitLabel:`Save`,onclose:()=>Z.closeFailoverForm(),onsubmit:()=>Z.submitFailoverForm(),header:t,extraActions:n,children:(e,t)=>{var n=zk(),r=M(n),i=e=>{z(e,Fk())};V(r,e=>{Z.failoverFormManaged&&e(i)});var a=P(r,2);H(a,21,()=>Es.models,oi,(e,t)=>{var n=Ik(),r=M(n,!0);T(n);var i={};F((e,t)=>{B(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>RE(I(t)),()=>RE(I(t))]),z(e,n)}),T(a);var o=P(a,2);aT(o,{id:`failover-target`,label:`Fallback models`,children:(e,t)=>{var n=Rk(),r=N(n),i=M(r),a=M(i);na(a);var o=P(a,2),s=e=>{$C(e,{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Z.removePrimaryFailoverTarget(),get disabled(){return Z.failoverFormManaged},children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}})};V(o,e=>{Z.failoverForm.target_model&&e(s)}),T(i),H(P(i,2),17,()=>Z.failoverForm.targets,oi,(e,t,n)=>{var r=Lk(),i=M(r);na(i),$C(P(i,2),{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Z.removeFailoverTarget(n),get disabled(){return Z.failoverFormManaged},children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}}),T(r),F(()=>i.disabled=Z.failoverFormManaged),da(i,()=>I(t).model,e=>I(t).model=e),z(e,r)}),T(r);var c=P(r,2),l=M(c);G(M(l),{name:`plus`,class:`form-action-icon`}),Ue(2),T(l);var u=P(l,2),d=M(u);G(d,{name:`wand-sparkles`,class:`form-action-icon`});var f=P(d,2),p=M(f,!0);T(f),T(u),T(c),F(e=>{a.disabled=Z.failoverFormManaged,l.disabled=Z.failoverFormManaged||Z.failoverGenerating||Z.failoverSaving,u.disabled=e,B(p,Z.failoverGenerating?`Generating...`:`Generate automatically`)},[()=>Z.failoverFormManaged||Z.failoverGenerating||Z.failoverSaving||!Z.failoverEnabled()]),da(a,()=>Z.failoverForm.target_model,e=>Z.failoverForm.target_model=e),L(`click`,l,()=>Z.addFailoverTarget()),L(`click`,u,()=>Z.generateFailoverForForm()),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=M(s);rk(M(c),{get enabled(){return Z.failoverForm.enabled},label:`failover mapping`,get disabled(){return Z.failoverFormManaged},onclick:()=>{Z.failoverFormManaged||(Z.failoverForm.enabled=!Z.failoverForm.enabled)}}),T(c),T(s),T(n),z(e,n)},$$slots:{header:!0,extraActions:!0,default:!0}})}D()}Hr([`click`]);var Vk=R(` `),Hk=R(`
        `),Uk=R(``),Wk=R(`
        `),Gk=R(`

        No failover suggestions were generated.

        `),Kk=R(`

        No failover drafts match the filter.

        `),qk=R(``),Jk=R(``);function Yk(e,t){E(t,!0),Eo(e,{get open(){return Z.failoverDraftsOpen},variant:`editor`,onclose:()=>Z.closeFailoverDraftsModal(),children:(e,t)=>{var n=Jk(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=Vk(),n=M(t,!0);T(t),F(e=>B(n,e),[()=>Z.failoverDraftCountLabel()]),z(e,t)};V(a,e=>{Z.failoverGeneratedRules.length>0&&e(o)}),wo(P(a,2),{label:`Close failover drafts`,onclick:()=>Z.closeFailoverDraftsModal(),get disabled(){return Z.failoverDraftSaving}}),T(i),T(r);var s=P(r,2),c=e=>{ZC(e,{label:`Generating failover drafts...`,class:`failover-drafts-loading`})};V(s,e=>{Z.failoverGenerating&&e(c)});var l=P(s,2),u=e=>{var t=Hk(),n=M(t);nC(n,{placeholder:`Filter failover drafts...`,label:`Filter failover drafts`,get value(){return Z.failoverDraftFilter},set value(e){Z.failoverDraftFilter=e}});var r=P(n,2),i=M(r);G(i,{name:`check`,class:`form-action-icon`});var a=P(i,2),o=M(a,!0);T(a),T(r),T(t),F(e=>{r.disabled=Z.failoverDraftSaving,B(o,e)},[()=>Z.allFailoverDraftsSelected()?`Deselect all`:`Select all`]),L(`click`,r,()=>Z.toggleAllFailoverDrafts()),z(e,t)};V(l,e=>{!Z.failoverGenerating&&Z.failoverGeneratedRules.length>0&&e(u)});var d=P(l,2),f=e=>{var t=Wk();H(t,21,()=>Z.filteredFailoverDrafts(),e=>`failover-draft:`+Z.failoverPrimaryModel(e),(e,t)=>{var n=Uk(),r=M(n);na(r);var i=P(r,2),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(i),T(n),F((e,t,n,i)=>{ia(r,e),r.disabled=Z.failoverDraftSaving,W(r,`aria-label`,t),B(o,n),B(c,i)},[()=>Z.failoverDraftSelected(I(t)),()=>`Select failover draft for `+Z.failoverPrimaryModel(I(t)),()=>Z.failoverPrimaryModel(I(t)),()=>Z.failoverTargetLabel(I(t))]),L(`change`,r,e=>Z.setFailoverDraftSelected(I(t),e.currentTarget.checked)),z(e,n)}),T(t),z(e,t)},p=O(()=>!Z.failoverGenerating&&Z.filteredFailoverDrafts().length>0);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{z(e,Gk())};V(m,e=>{!Z.failoverGenerating&&Z.failoverGeneratedRules.length===0&&!Z.failoverError&&e(h)});var g=P(m,2),_=e=>{z(e,Kk())},v=O(()=>!Z.failoverGenerating&&Z.failoverGeneratedRules.length>0&&Z.filteredFailoverDrafts().length===0);V(g,e=>{I(v)&&e(_)});var y=P(g,2),b=e=>{var t=qk(),n=M(t,!0);T(t),F(()=>B(n,Z.failoverError)),z(e,t)};V(y,e=>{Z.failoverError&&e(b)});var x=P(y,2),S=M(x),C=P(S,2),w=M(C);G(w,{name:`save`,class:`form-action-icon`});var ee=P(w,2),te=M(ee,!0);T(ee),T(C),T(x),T(n),F(e=>{S.disabled=Z.failoverDraftSaving,C.disabled=e,B(te,Z.failoverDraftSaving?`Saving...`:`Save selected`)},[()=>Z.failoverGenerating||Z.failoverDraftSaving||Z.selectedFailoverDraftCount()===0]),L(`click`,S,()=>Z.closeFailoverDraftsModal()),L(`click`,C,()=>Z.saveSelectedFailoverDrafts()),z(e,n)},$$slots:{default:!0}}),D()}Hr([`click`,`change`]);var Xk=R(`
        Rate limit management is unavailable.
        `),Zk=R(` Add`,1),Qk=R(`

        `),$k=R(`

        No rules.

        `),eA=R(` Edit`,1),tA=R(`
        `),nA=R(`
        `),rA=R(`

        `),iA=R(``),aA=R(``);function oA(e,t){E(t,!0);function n(){K.dialogOpen||X.closeRateLimitInspector()}Eo(e,{get open(){return X.rateLimitInspectorOpen},variant:`editor`,onclose:n,children:(e,t)=>{var n=aA(),r=M(n),i=M(r),a=P(M(i),2),o=M(a),s=M(o,!0);T(o),T(a),T(i),wo(P(i,2),{label:`Close rate limits inspector`,onclick:()=>X.closeRateLimitInspector()}),T(r);var c=P(r,2),l=e=>{ZC(e,{label:`Loading rate limits...`})},u=e=>{z(e,Xk())},d=e=>{var t=Qr();H(N(t),17,()=>X.rateLimitInspectorSections(),e=>e.key,(e,t)=>{var n=rA(),r=M(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2);{let e=O(()=>`Add `+I(t).title.toLowerCase());$C(o,{get label(){return I(e)},class:`budget-action-btn`,onclick:()=>X.openRateLimitFormFromInspector(I(t).scope,I(t).subject),children:(e,t)=>{var n=Zk();G(N(n),{name:`plus`,class:`table-icon-svg`}),Ue(2),z(e,n)},$$slots:{default:!0}})}T(r);var s=P(r,2),c=e=>{var n=Qk(),r=M(n,!0);T(n),F(()=>B(r,I(t).hint)),z(e,n)};V(s,e=>{I(t).hint&&e(c)});var l=P(s,2),u=e=>{z(e,$k())},d=e=>{var n=nA();H(n,21,()=>I(t).items,e=>X.rateLimitKey(e),(e,t)=>{var n=tA(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=M(c);{let e=O(()=>X.rateLimitIsConcurrent(I(t))?`activity`:`timer`);G(l,{get name(){return I(e)},class:`budget-period-icon`})}var u=P(l,2),d=M(u,!0);T(u),T(c),T(s);var f=P(s,2),p=M(f),m=M(p),h=M(m,!0);T(m);var g=P(m,2),_=M(g,!0);T(g),T(p);var v=P(p,2),y=M(v),b=e=>{$C(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>X.openRateLimitFormFromInspector(null,null,I(t)),children:(e,t)=>{var n=eA();G(N(n),{name:`pencil`,class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}})},x=O(()=>!X.rateLimitIsReadOnly(I(t)));V(y,e=>{I(x)&&e(b)}),T(v),T(f),T(i),T(r),T(n),F((e,t,r,i,a,s,c,l)=>{U(n,1,`budget-row ${e??``}`),Hi(n,t),W(n,`title`,r),B(o,i),B(d,a),B(h,s),W(g,`title`,c),B(_,l)},[()=>X.rateLimitPressureClass(I(t)),()=>X.rateLimitPressureStyle(I(t)),()=>X.rateLimitPressurePercent(I(t))+`% of the most constrained cap used`,()=>X.rateLimitSubject(I(t)),()=>X.rateLimitPeriodLabel(I(t)),()=>X.rateLimitInspectorSummary(I(t)),()=>X.rateLimitIsReadOnly(I(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>X.rateLimitSourceLabel(I(t))]),z(e,n)}),T(n),z(e,n)};V(l,e=>{I(t).items.length===0?e(u):e(d,-1)}),T(n),F(()=>B(a,I(t).title)),z(e,n)}),z(e,t)};V(c,e=>{X.rateLimitsLoading?e(l):X.rateLimitsAvailable?e(d,-1):e(u,1)});var f=P(c,2),p=M(f),m=P(p,2),h=e=>{var t=iA();L(`click`,t,()=>{X.closeRateLimitInspector(),Ha.navigate(`rate-limits`)}),z(e,t)},g=O(()=>X.rateLimitsEnabled());V(m,e=>{I(g)&&e(h)}),T(f),T(n),F(()=>B(s,X.rateLimitInspector.title)),L(`click`,p,()=>X.closeRateLimitInspector()),z(e,n)},$$slots:{default:!0}}),D()}Hr([`click`]);var sA=R(`
        models
        `),cA=R(`
        Virtual models feature is unavailable.
        `),lA=R(`
        `),uA=R(``),dA=R(`
        `),fA=R(``),pA=R(`
        `),mA=R(`

        No models registered.

        `),hA=R(`

        No models in this category.

        `),gA=R(`

        No models match your filter.

        `),_A=R(`
        `);function vA(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`models`&&(LD.fetchVirtualModels(),iO.fetchModelPricingOverrides(),Z.fetchFailoverRules(),X.fetchRateLimitsPage())}),An(()=>{let e=LD.filteredDisplayModels.length;return Er(()=>LD.restartModelRendering(e)),()=>LD.stopModelRendering()});let n=O(()=>K.needsAuth);var r=_A(),i=M(r),a=P(M(i),2),o=e=>{var t=sA(),n=M(t),r=M(n,!0);T(n),Ue(),T(t),F(()=>B(r,Es.filter?LD.filteredDisplayModels.length+` / `+LD.displayModels.length:LD.displayModels.length)),z(e,t)};V(a,e=>{LD.displayModels.length>0&&e(o)}),T(i);var s=P(i,2);Os(s,{});var c=P(s,2),l=e=>{z(e,cA())};V(c,e=>{!LD.virtualModelsAvailable&&!I(n)&&e(l)});var u=P(c,2),d=e=>{var t=lA(),n=M(t,!0);T(t),F(()=>B(n,LD.aliasError)),z(e,t)};V(u,e=>{LD.aliasError&&!I(n)&&e(d)});var f=P(u,2),p=e=>{var t=lA(),n=M(t,!0);T(t),F(()=>B(n,iO.modelPricingOverrideError)),z(e,t)};V(f,e=>{iO.modelPricingOverrideError&&!I(n)&&!iO.modelPricingOverrideFormOpen&&e(p)});var m=P(f,2),h=e=>{var t=dA();H(t,21,()=>Es.categories,e=>e.category,(e,t)=>{var n=uA();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(n),F(()=>{r=U(n,1,`category-tab svelte-scpjps`,null,r,{active:Es.activeCategory===I(t).category}),B(a,I(t).display_name),B(s,I(t).count)}),L(`click`,n,()=>Es.selectCategory(I(t).category)),z(e,n)}),T(t),z(e,t)};V(m,e=>{Es.categories.length>0&&e(h)});var g=P(m,2),_=e=>{var t=pA(),n=M(t);nC(M(n),{placeholder:`Filter by provider, provider/model, alias, or owner...`,label:`Filter models by provider, provider/model, alias, or owner`,get value(){return Es.filter},set value(e){Es.filter=e}}),T(n);var r=P(n,2),i=M(r),a=e=>{var t=fA();G(M(t),{name:`plus`,class:`alias-create-icon`}),Ue(2),T(t),L(`click`,t,()=>LD.openVirtualModelCreate()),z(e,t)};V(i,e=>{LD.virtualModelsAvailable&&e(a)}),T(r),T(t),z(e,t)};V(g,e=>{(LD.displayModels.length>0||Es.filter||LD.virtualModelsAvailable)&&e(_)});var v=P(g,2),y=e=>{{let t=O(()=>LD.modelLoadingText());ZC(e,{get label(){return I(t)},class:`models-loading-state`})}},b=O(()=>LD.modelsBusy()&&!I(n));V(v,e=>{I(b)&&e(y)});var x=P(v,2);xk(x,{});var S=P(x,2);Mk(S,{});var C=P(S,2),w=e=>{tk(e,{})};V(C,e=>{(LD.displayModels.length>0||Es.filter)&&e(w)});var ee=P(C,2),te=e=>{z(e,mA())};V(ee,e=>{LD.displayModels.length===0&&!Es.loading&&!I(n)&&!Es.filter&&(Es.activeCategory===`all`||!Es.activeCategory)&&e(te)});var ne=P(ee,2),re=e=>{z(e,hA())};V(ne,e=>{LD.displayModels.length===0&&!Es.loading&&!I(n)&&!Es.filter&&Es.activeCategory&&Es.activeCategory!==`all`&&e(re)});var ie=P(ne,2),ae=e=>{z(e,gA())};V(ie,e=>{LD.displayModels.length>0&&LD.filteredDisplayModels.length===0&&Es.filter&&e(ae)});var oe=P(ie,2);oA(oe,{});var se=P(oe,2);vE(se,{});var ce=P(se,2);Bk(ce,{}),Yk(P(ce,2),{}),T(r),z(e,r),D()}Hr([`click`]);var yA=`draft-workflow-preview`;function bA(){return{scope_provider:``,scope_model:``,scope_user_path:``,name:``,description:``,features:{cache:!0,audit:!0,usage:!0,budget:!0,guardrails:!1,failover:!0},guardrails:[]}}function xA(){return{scope_provider:``,scope_model:``,scope_user_path:``}}function SA(e){return{ref:``,step:Number.isFinite(e)?e:10}}function CA(e){let t=e==null?``:String(e).trim();if(t===``)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function wA(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=t.charAt(0).toUpperCase()+t.slice(1);for(let n of[t,r])if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==null&&e[n]!==void 0)return e[n];return n}function TA(e,t){return!e||typeof e!=`object`||Array.isArray(e)?!1:[t,t.charAt(0).toUpperCase()+t.slice(1)].some(t=>Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==null&&e[t]!==void 0)}function EA(e){return{cache:!!wA(e,`cache`,!1),audit:!!wA(e,`audit`,!1),usage:!!wA(e,`usage`,!1),budget:wA(e,`budget`,!0)!==!1,guardrails:!!wA(e,`guardrails`,!1),failover:wA(e,`failover`,!0)!==!1}}function DA(e,t){let n=EA(e),r=t||{},i=n.usage&&!!r.usage;return{cache:n.cache&&!!r.cache,audit:n.audit&&!!r.audit,usage:i,budget:i&&n.budget&&!!r.budget,guardrails:n.guardrails&&!!r.guardrails,failover:n.failover&&!!r.failover}}function OA(e,t){let n=e&&e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:e&&e.features?e.features:{};return{...DA((e&&e.effective_features&&typeof e.effective_features==`object`&&!Array.isArray(e.effective_features)?e.effective_features:null)||n,t),failover:EA(n).failover}}function kA(e,t){return OA(e,t).failover?`On`:`Off`}function AA(e){return(Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:Array.isArray(e&&e.guardrails)?e.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:CA(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0)}function jA(e,t){return OA(e,t).guardrails&&Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[]}function MA(e){return String(e&&(e.scope_provider_name||e.scope_provider)||``).trim()}function NA(e){return String(e&&(e.provider_name||e.provider_type)||``).trim()}function PA(e,t){let n=new Set,r=String(t&&t.scope_provider||``).trim();return r&&n.add(r),(Array.isArray(e)?e:[]).forEach(e=>{let t=NA(e);t&&n.add(t)}),[...n].sort()}function FA(e,t,n){let r=String(t||``).trim(),i=new Set,a=String(n&&n.scope_provider||``).trim(),o=String(n&&n.scope_model||``).trim();return r&&r===a&&o&&i.add(o),(Array.isArray(e)?e:[]).forEach(e=>{if(r&&NA(e)!==r)return;let t=String(e&&e.model&&e.model.id||``).trim();t&&i.add(t)}),[...i].sort()}function IA(e){let t=String(e&&e.scope_type||``).trim();return t===`provider_model`?`Provider Name + Model`:t===`provider_model_path`?`Provider Name + Model + Path`:t===`provider_path`?`Provider Name + Path`:t===`path`?`Path`:t===`provider`?`Provider Name`:`Global`}function LA(e){return String(e&&e.scope_display||`global`).trim()||`global`}function RA(e){let t=String(e&&e.name||``).trim();if(t)return t;let n=LA(e);return n===`global`?`All models`:n}function zA(e){let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function BA(e){if(zA(e))return``;let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function VA(e){let t=e||bA(),n=String(t.scope_provider||``).trim(),r=BA(t.scope_user_path);return{scope_provider:n,scope_model:n?String(t.scope_model||``).trim():``,scope_user_path:r}}function HA(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=BA(e&&e.scope_user_path);return!t&&!r?`global`:!t&&r?`path`:!n&&!r?`provider`:!n&&r?`provider_path`:r?`provider_model_path`:`provider_model`}function UA(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=BA(e&&e.scope_user_path),i=HA({scope_provider:t,scope_model:n,scope_user_path:r});return i===`global`?`global`:i===`path`?r:i===`provider`?t:i===`provider_path`?t+` @ `+r:i===`provider_model_path`?t+`/`+n+` @ `+r:t+`/`+n}function WA(e,t){let n=t||xA(),r=MA(e&&e.scope),i=r?String(e&&e.scope&&e.scope.scope_model||``).trim():``,a=BA(e&&e.scope&&e.scope.scope_user_path);return r===String(n.scope_provider||``).trim()&&i===String(n.scope_model||``).trim()&&a===BA(n.scope_user_path)}function GA(e,t,n){let r=VA(t);return!(r.scope_provider!==``||r.scope_model!==``||r.scope_user_path!==``)&&!n?null:(Array.isArray(e)?e:[]).find(e=>WA(e,r))||null}function KA(e){return String(e&&e.scope_type||``).trim()!==`global`}function qA(e){let t=String(e||``).trim();return t?t.length<=14?t:t.slice(0,12)+`…`:`—`}function JA(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.description,e.scope_display,e.scope_type,MA(e&&e.scope),e.scope&&e.scope.scope_model,e.scope&&e.scope.scope_user_path,e.workflow_hash,...Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>e.ref):[]].some(e=>String(e||``).toLowerCase().includes(r)))}function YA(e,t){let n=e||bA(),r=VA(n),i=EA(n.features||{}),a=DA(i,t);a.failover=i.failover;let o=!!a.guardrails,s=o?AA(n):[];return{id:yA,scope_type:HA(r),scope_display:UA(r),scope:{scope_provider_name:r.scope_provider,scope_model:r.scope_model,...r.scope_user_path?{scope_user_path:r.scope_user_path}:{}},name:String(n.name||``).trim(),description:String(n.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!a.cache,audit:!!a.audit,usage:!!a.usage,budget:!!a.budget,guardrails:o,failover:!!a.failover},guardrails:s}}}function XA({form:e,caps:t,workflows:n=[],formHydrated:r=!1,hydratedScope:i=null}){let a=e||bA(),o=String(a.scope_provider||``).trim(),s=o?String(a.scope_model||``).trim():``,c=BA(a.scope_user_path),l=EA(a.features||{}),u=DA(l,t),d=GA(n,a,r),f=d&&d.workflow_payload&&d.workflow_payload.features,p=TA(f,`failover`),m=p?wA(f,`failover`,!0)!==!1:null,h=i||xA(),g=String(h.scope_provider||``).trim()===o&&String(h.scope_model||``).trim()===s&&BA(h.scope_user_path)===BA(c),_=!!(t&&t.failover),v=_||!!r&&g&&Object.prototype.hasOwnProperty.call(l,`failover`)||!r&&!!d&&p,y=u.guardrails?(Array.isArray(a.guardrails)?a.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:CA(e&&e.step)})):[],b={scope_provider_name:o,scope_model:s,...c?{scope_user_path:c}:{},name:String(a.name||``).trim(),description:String(a.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!u.cache,audit:!!u.audit,usage:!!u.usage,budget:!!u.budget,guardrails:!!u.guardrails},guardrails:y}};return v&&(b.workflow_payload.features.failover=!_&&!r&&d&&p?m:!!l.failover),b}function ZA(e,{models:t=[],hydratedScope:n=null}={}){let r=n||xA(),i=String(r.scope_provider||``).trim(),a=String(r.scope_model||``).trim(),o=String(e&&(e.scope_provider_name||e.scope_provider)||``).trim(),s=String(e&&e.scope_model||``).trim();if(o&&!PA(t,r).includes(o)&&o!==i)return`Choose a registered provider name.`;if(s&&!o)return`Model selection requires a provider name.`;if(s){let e=FA(t,o,r),n=o===i&&s===a;if(!e.includes(s)&&!n)return`Choose a registered model for the selected provider name.`}let c=zA(e.scope_user_path);if(c)return c;let l=e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:{},u=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[];if(!l.guardrails)return``;let d=new Set;for(let e of u){if(!e.ref)return`Each guardrail step needs a guardrail ref.`;if(!Number.isInteger(e.step)||e.step<0)return`Each guardrail step must use a non-negative integer step number.`;if(d.has(e.ref))return`Each guardrail ref may appear only once in a workflow.`;d.add(e.ref)}return``}var QA=new class{#e=k(j([]));get workflows(){return I(this.#e)}set workflows(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get submitting(){return I(this.#o)}set submitting(e){A(this.#o,e,!0)}#s=k(``);get deactivatingID(){return I(this.#s)}set deactivatingID(e){A(this.#s,e,!0)}#c=k(``);get formError(){return I(this.#c)}set formError(e){A(this.#c,e,!0)}#l=k(!1);get formHydrated(){return I(this.#l)}set formHydrated(e){A(this.#l,e,!0)}#u=k(j(xA()));get hydratedScope(){return I(this.#u)}set hydratedScope(e){A(this.#u,e,!0)}#d=k(j([]));get guardrailRefs(){return I(this.#d)}set guardrailRefs(e){A(this.#d,e,!0)}#f=k(j(bA()));get form(){return I(this.#f)}set form(e){A(this.#f,e,!0)}#p=null;failoverVisible(){return _o.booleanFlag(`FAILOVER_ENABLED`,!0)}featureCaps(){return{cache:_o.cacheVisible(),audit:_o.auditVisible(),usage:_o.usageVisible(),budget:_o.budgetsVisible(),guardrails:_o.guardrailsVisible(),failover:this.failoverVisible()}}get filteredWorkflows(){return JA(this.workflows,this.filter)}providerOptions(){return PA(Es.models,this.hydratedScope)}modelOptions(e){return FA(Es.models,e,this.hydratedScope)}activeScopeMatch(){return GA(this.workflows,this.form,this.formHydrated)}submitMode(){return this.activeScopeMatch()?`save`:`create`}submitLabel(){return this.submitMode()===`save`?`Save`:`Create`}submittingLabel(){return this.submitMode()===`save`?`Saving...`:`Creating...`}preview(){return YA(this.form,this.featureCaps())}openCreate(e){if(this.formOpen=!0,this.submitting=!1,this.formError=``,!e){this.formHydrated=!1,this.hydratedScope=xA(),this.form=bA();return}this.formHydrated=!0,this.hydratedScope={scope_provider:MA(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``).trim(),scope_user_path:String(e.scope&&e.scope.scope_user_path||``).trim()};let t=e.workflow_payload&&e.workflow_payload.features?EA(e.workflow_payload.features):OA(e,this.featureCaps()),n=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>({ref:String(e&&e.ref||``).trim(),step:CA(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0):AA(e);this.form={scope_provider:MA(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``),scope_user_path:String(e.scope&&e.scope.scope_user_path||``),name:String(e.name||``),description:String(e.description||``),features:{cache:!!t.cache,audit:!!t.audit,usage:!!t.usage,budget:!!t.budget,guardrails:!!t.guardrails,failover:!!t.failover},guardrails:n.map(e=>({ref:String(e&&e.ref||``),step:Number.isFinite(e&&e.step)?e.step:10}))}}closeForm(){this.formOpen=!1,this.submitting=!1,this.formError=``,this.formHydrated=!1,this.hydratedScope=xA(),this.form=bA()}setProvider(e){if(this.form.scope_provider=String(e||``).trim(),!this.form.scope_provider){this.form.scope_model=``;return}this.modelOptions(this.form.scope_provider).includes(String(this.form.scope_model||``).trim())||(this.form.scope_model=``)}addGuardrailStep(){let e=(Array.isArray(this.form.guardrails)?this.form.guardrails:[]).reduce((e,t)=>{let n=Number(t&&t.step);return Number.isFinite(n)?Math.max(e,n):e},0)+10;this.form.guardrails.push(SA(e))}removeGuardrailStep(e){Array.isArray(this.form.guardrails)&&this.form.guardrails.splice(e,1)}buildRequest(){return XA({form:this.form,caps:this.featureCaps(),workflows:this.workflows,formHydrated:this.formHydrated,hydratedScope:this.hydratedScope})}async fetchWorkflows(){this.#p&&this.#p.abort();let e=new AbortController;this.#p=e,this.loading=!0,this.error=``;let t=setTimeout(()=>e.abort(),1e4),n=await ew(`/admin/workflows`,{label:`workflows`,options:{signal:e.signal}});if(clearTimeout(t),this.#p===e&&(this.#p=null,this.loading=!1,n.status!==`stale`)){if(n.status===`unavailable`){this.available=!1,this.workflows=[];return}if(n.result&&(this.available=!0),n.status===`error`){this.workflows=[],this.error=e.signal.aborted?`Loading workflows timed out.`:n.error;return}this.workflows=n.items}}async fetchGuardrailRefs(){let e=await ew(`/admin/workflows/guardrails`,{label:`workflow guardrails`});e.status!==`stale`&&(this.guardrailRefs=e.items)}async fetchPage(){await Promise.all([_o.ensureLoaded(),this.fetchWorkflows(),this.fetchGuardrailRefs()])}async submitForm(){if(this.submitting)return;this.formError=``;let e=this.buildRequest(),t=ZA(e,{models:Es.models,hydratedScope:this.hydratedScope});if(t){this.formError=t;return}this.submitting=!0;try{let t=await tw(`/admin/workflows`,`POST`,e,{label:`create workflow`,unavailableStatuses:[]});if(t.status===`stale`||t.result&&t.result.status===401)return;if(t.status===`error`){this.formError=t.error;return}q.success(`Workflow created and activated.`),this.closeForm(),this.fetchPage()}finally{this.submitting=!1}}async deactivate(e){let t=String(e&&e.id||``).trim();if(!t||this.deactivatingID||!KA(e))return;let n=RA(e);if(confirm(`Deactivate workflow "`+n+`"? Requests will fall back to the next active workflow for this scope.`)){this.deactivatingID=t;try{let e=await tw(`/admin/workflows/`+encodeURIComponent(t)+`/deactivate`,`POST`,void 0,{label:`deactivate workflow`,unavailableStatuses:[]});if(e.status===`stale`||e.result&&e.result.status===401)return;if(e.status===`error`){q.error(e.error);return}q.success(`Workflow deactivated.`),this.fetchPage()}finally{this.deactivatingID=``}}}};function $A(e){let t=String(e??``),n=typeof navigator<`u`?navigator.clipboard:null;if(n&&typeof n.writeText==`function`)return n.writeText(t);let r=typeof document<`u`?document:null;if(!r||!r.body||typeof r.execCommand!=`function`)return Promise.reject(Error(`Clipboard API unavailable`));let i=r.createElement(`textarea`);i.value=t,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.top=`0`,i.style.left=`0`,i.style.opacity=`0`;try{if(r.body.appendChild(i),i.focus(),i.select(),i.setSelectionRange(0,i.value.length),!r.execCommand(`copy`))throw Error(`execCommand copy returned false`)}finally{i.parentNode&&i.parentNode.removeChild(i)}return Promise.resolve()}function ej({resetDelayMs:e=2e3,logPrefix:t}={}){let n=j({copied:!1,error:!1}),r=null;function i(){r!==null&&clearTimeout(r),r=null}function a(){i(),r=setTimeout(()=>{n.copied=!1,n.error=!1,r=null},e)}return{get copied(){return n.copied},get error(){return n.error},reset(){i(),n.copied=!1,n.error=!1},async copy(e,r){if(!(e==null||e===``)){i(),n.copied=!1,n.error=!1;try{await $A(typeof r==`function`?r(e):String(e)),n.copied=!0,n.error=!1}catch(e){console.error(t||`Failed to copy text:`,e),n.copied=!1,n.error=!0}a()}}}}var tj=R(``);function nj(e,t){E(t,!0);let n=ya(t,`workflowID`,3,``),r=ej({logPrefix:`Failed to copy workflow ID:`});An(()=>{n(),r.reset()});let i=O(()=>r.error?`Unable to copy workflow ID`:r.copied?`Workflow ID copied`:`Copy workflow ID`),a=O(()=>n()?I(i)+` `+n():I(i));async function o(e){e.preventDefault(),n()&&await r.copy(n())}var s=tj();let c;var l=P(M(s),4),u=M(l,!0);T(l);var d=P(l,2);G(M(d),{name:`copy`}),T(d),T(s),F(()=>{c=U(s,1,`workflow-pipeline-meta mono svelte-1viff7o`,null,c,{"workflow-pipeline-meta-copied":r.copied,"workflow-pipeline-meta-error":r.error}),W(s,`title`,I(i)),W(s,`aria-label`,I(a)),B(u,n())}),L(`click`,s,o),z(e,s),D()}Hr([`click`]);var rj=(e,t)=>{let n=()=>(t?.()).icon,r=()=>(t?.()).label,i=Ot(()=>h((t?.()).variant,`workflow-node-feature`)),a=()=>(t?.()).state,o=()=>(t?.()).sub,s=()=>(t?.()).badge;var c=sj(),l=M(c),u=e=>{var t=ij();let r;G(M(t),{get name(){return n()}}),T(t),F(()=>r=U(t,1,`workflow-node-icon svelte-nbptrg`,null,r,{"workflow-node-icon-endpoint":I(i)===`workflow-node-endpoint`})),z(e,t)};V(l,e=>{n()&&e(u)});var d=P(l,2),f=M(d,!0);T(d);var p=P(d,2),m=e=>{var t=aj(),n=M(t,!0);T(t),F(()=>B(n,s())),z(e,t)};V(p,e=>{s()&&e(m)});var g=P(p,2),_=e=>{var t=oj(),n=M(t,!0);T(t),F(()=>B(n,o())),z(e,t)};V(g,e=>{o()&&e(_)}),T(c),F(()=>{U(c,1,Fi([`workflow-node`,I(i),a()]),`svelte-nbptrg`),B(f,r())}),z(e,c)},ij=R(`
        `),aj=R(` `),oj=R(` `),sj=R(`
        `),cj=R(`
        `,1),lj=R(`
        `,1),uj=R(`
        `),dj=R(`
        Async
        `),fj=R(`
        `);function pj(e,t){E(t,!0);let n=ya(t,`chart`,19,()=>({}));var r=fj();let i;var a=M(r),o=e=>{nj(e,{get workflowID(){return n().workflowID}})};V(a,e=>{n().workflowID&&e(o)});var s=P(a,2),c=M(s);rj(c,()=>({icon:`user`,label:`Client`,variant:`workflow-node-endpoint`}));var l=P(c,4);rj(l,()=>({icon:`database`,label:`Auth`,state:n().authNodeClass,sub:n().authNodeSublabel}));var u=P(l,2),d=e=>{var t=cj(),r=N(t);rj(P(r,2),()=>({icon:`database`,label:`Cache`,state:n().cacheNodeClass,badge:n().cacheStatusLabel})),F(()=>U(r,1,Fi([`workflow-conn`,n().cacheConnClass]),`svelte-nbptrg`)),z(e,t)};V(u,e=>{n().showCache&&e(d)});var f=P(u,2),p=e=>{var t=lj();rj(P(N(t),2),()=>({icon:`wallet`,label:`Budget`,state:n().budgetNodeClass,badge:n().budgetStatusLabel})),z(e,t)};V(f,e=>{n().showBudget&&e(p)});var m=P(f,2),h=e=>{var t=lj();rj(P(N(t),2),()=>({icon:`shield`,label:`Guardrails`,sub:n().guardrailLabel})),z(e,t)};V(m,e=>{n().showGuardrails&&e(h)});var g=P(m,2),_=P(g,2);rj(_,()=>({label:n().aiLabel,variant:`workflow-node-ai`,state:n().aiNodeClass,sub:n().aiSublabel}));var v=P(_,2),y=e=>{var t=cj(),r=N(t);rj(P(r,2),()=>({icon:`maximize-2`,label:`Failover`,state:n().failoverNodeClass,badge:n().failoverStatusLabel,sub:n().failoverTargetLabel})),F(()=>U(r,1,Fi([`workflow-conn`,n().failoverConnClass]),`svelte-nbptrg`)),z(e,t)};V(v,e=>{n().showFailover&&e(y)});var b=P(v,2);rj(P(b,2),()=>({icon:`circle-check-big`,label:`Response`,variant:`workflow-node-endpoint`,state:n().responseNodeClass,sub:n().responseNodeSublabel})),T(s);var x=P(s,2),S=e=>{var t=dj(),r=M(t),i=M(r),a=e=>{rj(e,()=>({icon:`chart-column-increasing`,label:`Usage`,variant:`workflow-node-feature workflow-node-async`,state:n().usageNodeClass}))};V(i,e=>{n().showUsage&&e(a)});var o=P(i,2),s=e=>{z(e,uj())};V(o,e=>{n().showUsage&&n().showAudit&&e(s)});var c=P(o,2),l=e=>{rj(e,()=>({icon:`file-text`,label:`Audit Log`,variant:`workflow-node-feature workflow-node-async`,state:n().auditNodeClass}))};V(c,e=>{n().showAudit&&e(l)}),T(r),Ue(4),T(t),z(e,t)};V(x,e=>{n().showAsync&&e(S)}),T(r),F(()=>{i=U(r,1,`workflow-pipeline svelte-nbptrg`,null,i,{"workflow-pipeline-has-meta":n().workflowID}),U(g,1,Fi([`workflow-conn`,n().aiConnClass]),`svelte-nbptrg`),U(b,1,Fi([`workflow-conn`,n().responseConnClass]),`svelte-nbptrg`)}),z(e,r),D()}function mj(e){let t=AA(e).length;return t===0?``:t===1?`1 step`:t+` steps`}function hj(e,t){return t&&t.provider?t.provider:MA(e&&e.scope)||`AI`}function gj(e,t){return t&&t.model?t.model:e&&e.scope&&e.scope.scope_model||null}function _j(e,t){let n=String(e&&e.id||``).trim();if(n&&n!==`draft-workflow-preview`)return n;let r=String(t&&t.workflow_version_id||``).trim();return r&&r!==`draft-workflow-preview`?r:null}function vj(e){let t=e&&e.data&&e.data.workflow_features;return!t||typeof t!=`object`||Array.isArray(t)?null:EA(t)}function yj(e){let t=e&&e.data&&e.data.failover;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=String(t.target_model||t.targetModel||``).trim()||null;return n?{targetModel:n}:null}function bj(e,t=0){if(t>4||e==null)return``;if(typeof e==`string`){let n=e.trim();if(!n||n[0]!==`{`&&n[0]!==`[`)return``;try{return bj(JSON.parse(n),t+1)}catch{return``}}if(Array.isArray(e)){for(let n of e){let e=bj(n,t+1);if(e)return e}return``}return typeof e==`object`?String(e.code||``).trim()||(e.error===void 0?``:bj(e.error,t+1)):``}function xj(e){let t=e&&e.data&&typeof e.data==`object`&&!Array.isArray(e.data)?e.data:{};return String(t.error_code||t.errorCode||``).trim()||bj(t.response_body)}function Sj(e){let t=String(e||``).trim();if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{provider:t.slice(0,n),model:t.slice(n+1)}}function Cj(e,t){let n=String(e&&(e.requested_model||e.model)||``).trim(),r=yj(e);if(!(r&&r.targetModel))return{provider:String(e&&e.provider||``).trim()||null,model:n||null};let i=Sj(n);if(i)return i;let a=MA(t&&t.scope),o=a?String(t&&t.scope&&t.scope.scope_model||``).trim():``;return a||o?{provider:a||null,model:o||n||null}:{provider:null,model:n||null}}function wj(e,t){if(!e)return null;let n=(()=>{let t=String(e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`?t:null})(),r=(()=>{if(e.status_code===void 0||e.status_code===null)return null;let t=String(e.status_code).trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null})(),i=n?!0:e.cache_hit!==void 0&&e.cache_hit!==null&&!!e.cache_hit,a=yj(e),o=Cj(e,t),s=Number.isFinite(r)&&r>=200&&r<300,c=String(e.error_type||``).trim().toLowerCase()===`authentication_error`,l=String(e.auth_method||``).trim().toLowerCase()||null,u=xj(e).toLowerCase()===`budget_exceeded`;return{cacheHit:i,cacheType:n||null,failoverTarget:a&&a.targetModel?a.targetModel:null,provider:o.provider,model:o.model,statusCode:r,responseSuccess:s,aiSuccess:s&&!i,authError:c,authMethod:l,budgetExceeded:u}}function Tj(e){return!!(e&&e.cacheHit)}function Ej(e){return!!(e&&e.failoverTarget)}function Dj(e){return!!(e&&e.budgetExceeded)}function Oj(e,t){return t?`workflow-node-current`:e&&e.cacheHit?`workflow-node-success`:``}function kj(e){return e&&e.cacheHit?`workflow-conn-hit`:``}function Aj(e){return!e||!e.cacheHit?null:e.cacheType===`semantic`?`Hit (Semantic)`:`Hit (Exact)`}function jj(e,t,n,r){return e?Dj(t)?`workflow-node-error`:r?`workflow-node-current`:n?`workflow-node-success`:``:``}function Mj(e){return Dj(e)?`Exceeded`:null}function Nj(e){return e&&e.cacheHit?`workflow-node-skipped`:e&&e.failoverTarget?`workflow-node-success`:``}function Pj(e){return e&&e.cacheHit?`workflow-conn-dim`:e&&e.failoverTarget?`workflow-conn-hit`:``}function Fj(e){return e&&e.failoverTarget?`Redirected`:null}function Ij(e){return e&&e.failoverTarget?e.failoverTarget:null}function Lj(e){return e&&e.cacheHit?`workflow-conn-dim`:``}function Rj(e,t){return e?e.cacheHit?`workflow-node-skipped`:t?`workflow-node-current`:e.aiSuccess?`workflow-node-success`:``:``}function zj(e,t){if(!e)return``;let n=e.statusCode;return!Number.isFinite(n)&&t?`workflow-node-current`:Number.isFinite(n)?n>=500?`workflow-node-error`:n>=400?`workflow-node-warning`:n>=300?`workflow-node-neutral`:n>=200?`workflow-node-success`:``:``}function Bj(e){return!e||!Number.isFinite(e.statusCode)?null:String(e.statusCode)}function Vj(e,t){return e?e.authError?`workflow-node-error`:t?`workflow-node-current`:e.authMethod===`api_key`||e.authMethod===`master_key`?`workflow-node-success`:``:``}function Hj(e){return!e||!e.authMethod?null:e.authMethod}function Uj(e,t,n){return e?n?`workflow-node-current`:t?`workflow-node-success`:``:``}function Wj(e,t){if(!e||!e._live)return!!t;let n=String(e._live_state||``).trim();return!!e._audit_flushed||n===`audit.flushed`||n===`audit.detail`}function Gj(e,t){if(!e)return!!t;let n=e.usage||{},r=Number(n.entries||0)>0;if(!e._live)return r;let i=String(e._usage_live_state||``).trim();return e._usage_flushed||i===`usage.flushed`?!0:!e._usage_live_pending&&r&&!e._live_pending}function Kj(e){return!!(e&&e._live&&e._usage_live_pending&&!e._usage_flushed)}function qj(e,t){return!e||!e._live||Wj(e,!1)?!1:String(e._live_state||``).trim()===`audit.completed`||!!(t&&Number.isFinite(t.statusCode))}function Jj(e,t,n){return!e||!e._live?``:Kj(e)?`usage`:qj(e,t)?`audit`:Wj(e,!1)&&!e._live_pending?``:t&&t.cacheHit?`cache`:t&&(t.provider||t.model)?`ai`:n&&n.budget&&(e.workflow_version_id||e.requested_model)?`budget`:t&&t.authMethod?``:`auth`}function Yj(e,t,n,r){let i=n||{},a=i.features&&typeof i.features==`object`&&!Array.isArray(i.features)?EA(i.features):OA(e,r),o=!!i.forceAudit,s=!!i.highlightAsyncPresent,c=!!a.budget||Dj(t),l=!!a.guardrails,u=!!a.usage,d=o||!!a.audit,f=!!i.forceAsync||!!(u||d),p=!!a.failover||Ej(t),m=_j(e,i.entry),h=Jj(i.entry,t,a),g=Kj(i.entry),_=qj(i.entry,t),v=Wj(i.entry,s),y=Gj(i.entry,s);return{showBudget:c,budgetNodeClass:jj(c,t,s,h===`budget`),budgetStatusLabel:Mj(t),showGuardrails:l,guardrailLabel:l?mj(e):``,showCache:!!i.forceCache||!!a.cache||Tj(t),cacheNodeClass:Oj(t,h===`cache`),cacheConnClass:kj(t),cacheStatusLabel:Aj(t),showFailover:p,failoverNodeClass:p?Nj(t):``,failoverConnClass:p?Pj(t):``,failoverStatusLabel:p?Fj(t):null,failoverTargetLabel:p?Ij(t):null,aiLabel:hj(e,t),aiSublabel:gj(e,t),aiConnClass:Lj(t),aiNodeClass:Rj(t,h===`ai`),responseConnClass:Lj(t),responseNodeClass:zj(t,h===`response`),responseNodeSublabel:Bj(t),authNodeClass:Vj(t,h===`auth`),authNodeSublabel:Hj(t),usageNodeClass:Uj(u,y,g),auditNodeClass:Uj(d,v,_),showAsync:f,showUsage:u,showAudit:d,workflowID:m}}function Xj(e,t){return Yj(e,null,{forceCache:!1},t)}function Zj(e,t,n){return Yj(t,wj(e,t),{entry:e,features:vj(e)||(t?OA(t,n):{cache:!1,audit:!1,usage:!1,budget:!1,guardrails:!1,failover:!1}),forceAudit:!0,forceAsync:!0,highlightAsyncPresent:!0},n)}var Qj=R(`

        `),$j=R(`

        `),eM=R(`
        `),tM=R(`
        `),nM=R(`

        No guardrails configured for this workflow.

        `),rM=R(`

        Guardrails

        `),iM=R(``),aM=R(`

        `);function oM(e,t){E(t,!0);let n=ya(t,`preview`,3,!1),r=O(()=>QA.featureCaps()),i=O(()=>RA(t.workflow)),a=O(()=>jA(t.workflow,I(r))),o=O(()=>Xj(t.workflow,I(r))),s=O(()=>n()?`draft-workflow-preview-guardrail-`:t.workflow.id+`-guardrail-`);var c=aM();let l;var u=M(c),d=M(u),f=M(d),p=M(f,!0);T(f);var m=P(f,2),h=M(m,!0);T(m),T(d);var g=P(d,2),_=M(g),v=M(_,!0);T(_),T(g),T(u);var y=P(u,2),b=e=>{var n=Qj(),r=M(n,!0);T(n),F(()=>B(r,t.workflow.description)),z(e,n)};V(y,e=>{t.workflow.description&&e(b)});var x=P(y,2),S=e=>{var n=$j(),i=M(n);T(n),F(e=>B(i,`Failover: ${e??``}`),[()=>kA(t.workflow,I(r))]),z(e,n)},C=O(()=>QA.failoverVisible());V(x,e=>{I(C)&&e(S)});var w=P(x,2);pj(w,{get chart(){return I(o)}});var ee=P(w,2),te=e=>{var t=rM(),n=M(t),r=P(M(n),2),i=M(r,!0);T(r),T(n);var o=P(n,2),c=e=>{var t=tM();H(t,23,()=>I(a),(e,t)=>I(s)+t,(e,t)=>{var n=eM(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=M(a);T(a),T(n),F(()=>{B(i,I(t).ref),B(o,`step ${I(t).step??``}`)}),z(e,n)}),T(t),z(e,t)},l=e=>{z(e,nM())};V(o,e=>{I(a).length>0?e(c):e(l,-1)}),T(t),F(()=>B(i,I(a).length?I(a).length+` steps`:`None`)),z(e,t)},ne=O(()=>_o.guardrailsVisible());V(ee,e=>{I(ne)&&e(te)});var re=P(ee,2),ie=e=>{var n=iM(),r=M(n),a=M(r),o=M(a,!0);T(a);var s=P(a,2);{let e=O(()=>`Edit workflow `+I(i));$C(s,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>QA.openCreate(t.workflow),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}T(r);var c=P(r,2),l=M(c),u=M(l);T(l);var d=P(l,2),f=M(d);T(d);var p=P(d,2),m=M(p);T(p),T(c),T(n),F((e,n,r,s)=>{a.disabled=e,W(a,`aria-label`,`Deactivate workflow `+I(i)),W(a,`title`,n),B(o,QA.deactivatingID===t.workflow.id?`Deactivating...`:`Deactivate`),B(u,`version: v${t.workflow.version??``}`),B(f,`created: ${r??``}`),B(m,`hash: ${s??``}`)},[()=>QA.deactivatingID===t.workflow.id||!KA(t.workflow),()=>KA(t.workflow)?`Deactivate active workflow`:`The global workflow cannot be deactivated.`,()=>ao.formatTimestamp(t.workflow.created_at),()=>qA(t.workflow.workflow_hash)]),L(`click`,a,()=>QA.deactivate(t.workflow)),z(e,n)};V(re,e=>{n()||e(ie)}),T(c),F((e,t)=>{l=U(c,1,`workflow-card svelte-1fo9fvq`,null,l,{"workflow-preview-card":n()}),B(p,e),B(h,I(i)),B(v,t)},[()=>IA(t.workflow),()=>LA(t.workflow)]),z(e,c),D()}Hr([`click`]);var sM=R(`

        `),cM=R(``),lM=R(``),uM=R(``),dM=R(``),fM=R(``),pM=R(``),mM=R(``),hM=R(``),gM=R(``),_M=R(``),vM=R(``),yM=R(``),bM=R(`
        No named guardrails are currently registered on this deployment. You can still draft a workflow, but guardrail-backed creation may be rejected.
        `),xM=R(`
        `),SM=R(`
        `),CM=R(`

        No guardrail steps configured yet.

        `),wM=R(`

        Guardrail Steps

        Guardrails in the same numeric step run together. Later steps wait for earlier ones to finish.

        `),TM=R(`

        Leave provider name empty to target all providers and models. Select a provider name without a model to target all models for that configured provider.

        Add a path to scope the workflow to that subtree. Leading slashes are optional and will be normalized; you can enter "team/alpha" or "/team/alpha". Matching checks the deepest user path first, then falls back toward the root.

        If you leave the name empty, the workflow will display as the matched provider/model scope or “All models”.

        Preview

        Live
        `,1);function EM(e,t){E(t,!0);{let t=e=>{Rx(e,{copyId:`workflow-help-copy`,label:`workflow help`,text:`Create immutable version. Submitting activates it for the selected scope.`,title:e=>{var t=sM(),n=M(t,!0);T(t),F(e=>B(n,e),[()=>QA.submitMode()===`save`?`Edit Workflow`:`Create Workflow`]),z(e,t)},$$slots:{title:!0}})},n=O(()=>QA.submitLabel()),r=O(()=>QA.submittingLabel()),i=O(()=>QA.submitMode()===`create`?`plus`:`save`);rT(e,{get open(){return QA.formOpen},ariaLabel:`Workflow editor`,get error(){return QA.formError},get submitting(){return QA.submitting},get submitLabel(){return I(n)},get submittingLabel(){return I(r)},get submitIcon(){return I(i)},dialogClass:`workflow-editor`,onclose:()=>QA.closeForm(),onsubmit:()=>QA.submitForm(),header:t,children:(e,t)=>{var n=TM(),r=N(n),i=M(r);aT(i,{id:`workflow-scope-provider`,label:`Provider Name`,children:(e,t)=>{var n=lM(),r=M(n);r.value=r.__value=``,H(P(r),16,()=>QA.providerOptions(),e=>e,(e,t)=>{var n=cM(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(n),L(`change`,n,e=>QA.setProvider(e.currentTarget.value)),Gi(n,()=>QA.form.scope_provider,e=>QA.form.scope_provider=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2),o=e=>{aT(e,{id:`workflow-scope-model`,label:`Model`,children:(e,t)=>{var n=uM(),r=M(n);r.value=r.__value=``,H(P(r),17,()=>QA.modelOptions(QA.form.scope_provider),e=>QA.form.scope_provider+`-`+e,(e,t)=>{var n=cM(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t)),i!==(i=I(t))&&(n.value=(n.__value=I(t))??``)}),z(e,n)}),T(n),Gi(n,()=>QA.form.scope_model,e=>QA.form.scope_model=e),z(e,n)},$$slots:{default:!0}})};V(a,e=>{QA.form.scope_provider&&e(o)});var s=P(a,2);aT(s,{id:`workflow-name`,label:`Name`,children:(e,t)=>{var n=dM();na(n),da(n,()=>QA.form.name,e=>QA.form.name=e),z(e,n)},$$slots:{default:!0}}),aT(P(s,2),{id:`workflow-user-path`,label:`User Path`,children:(e,t)=>{var n=fM();na(n),da(n,()=>QA.form.scope_user_path,e=>QA.form.scope_user_path=e),z(e,n)},$$slots:{default:!0}}),T(r);var c=P(r,8);aT(c,{id:`workflow-description`,label:`Description`,children:(e,t)=>{var n=pM();ft(n),da(n,()=>QA.form.description,e=>QA.form.description=e),z(e,n)},$$slots:{default:!0}});var l=P(c,2),u=M(l),d=e=>{var t=mM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.cache,e=>QA.form.features.cache=e),z(e,t)},f=O(()=>_o.cacheVisible());V(u,e=>{I(f)&&e(d)});var p=P(u,2),m=e=>{var t=hM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.audit,e=>QA.form.features.audit=e),z(e,t)},h=O(()=>_o.auditVisible());V(p,e=>{I(h)&&e(m)});var g=P(p,2),_=e=>{var t=gM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.usage,e=>QA.form.features.usage=e),z(e,t)},v=O(()=>_o.usageVisible());V(g,e=>{I(v)&&e(_)});var y=P(g,2),b=e=>{var t=_M(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.budget,e=>QA.form.features.budget=e),z(e,t)},x=O(()=>_o.budgetsVisible());V(y,e=>{I(x)&&e(b)});var S=P(y,2),C=e=>{var t=vM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.guardrails,e=>QA.form.features.guardrails=e),z(e,t)},w=O(()=>_o.guardrailsVisible());V(S,e=>{I(w)&&e(C)});var ee=P(S,2),te=e=>{var t=yM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.failover,e=>QA.form.features.failover=e),z(e,t)},ne=O(()=>QA.failoverVisible());V(ee,e=>{I(ne)&&e(te)}),T(l);var re=P(l,2),ie=P(M(re),2);{let e=O(()=>QA.preview());oM(ie,{get workflow(){return I(e)},preview:!0})}T(re);var ae=P(re,2),oe=e=>{var t=wM(),n=M(t),r=P(M(n),2);T(n);var i=P(n,2),a=e=>{var t=bM(),n=P(M(t),2);T(t),L(`click`,n,()=>Ha.navigate(`guardrails`)),z(e,t)};V(i,e=>{QA.guardrailRefs.length===0&&e(a)});var o=P(i,2),s=e=>{var t=SM();H(t,21,()=>QA.form.guardrails,oi,(e,t,n)=>{var r=xM(),i=M(r),a=M(i);W(a,`for`,`workflow-guardrail-ref-`+n);var o=P(a,2);na(o),W(o,`id`,`workflow-guardrail-ref-`+n),W(o,`aria-label`,`Guardrail reference `+(n+1)),T(i);var s=P(i,2),c=M(s);W(c,`for`,`workflow-guardrail-step-`+n);var l=P(c,2);na(l),W(l,`id`,`workflow-guardrail-step-`+n),W(l,`aria-label`,`Guardrail step `+(n+1)),T(s);var u=P(s,2);T(r),da(o,()=>I(t).ref,e=>I(t).ref=e),da(l,()=>I(t).step,e=>I(t).step=e),L(`click`,u,()=>QA.removeGuardrailStep(n)),z(e,r)}),T(t),z(e,t)},c=e=>{z(e,CM())};V(o,e=>{QA.form.guardrails.length>0?e(s):e(c,-1)}),T(t),L(`click`,r,()=>QA.addGuardrailStep()),z(e,t)},se=O(()=>QA.form.features.guardrails&&_o.guardrailsVisible());V(ae,e=>{I(se)&&e(oe)}),z(e,n)},$$slots:{header:!0,default:!0}})}D()}Hr([`change`,`click`]);var DM=R(`

        Loading workflows...

        `),OM=R(`
        `),kM=R(`

        No active workflows found.

        `),AM=R(`

        No workflows match your filter.

        `),jM=R(`
        `);function MM(e,t){E(t,!0);var n=jM(),r=M(n),i=e=>{var t=DM();px(M(t),{size:16,label:`Loading workflows`}),Ue(),T(t),z(e,t)};V(r,e=>{QA.loading&&!K.authError&&e(i)});var a=P(r,2),o=e=>{var t=OM();H(t,21,()=>QA.filteredWorkflows,e=>e.id,(e,t)=>{oM(e,{get workflow(){return I(t)}})}),T(t),z(e,t)};V(a,e=>{QA.filteredWorkflows.length>0&&e(o)});var s=P(a,2),c=e=>{z(e,kM())};V(s,e=>{QA.workflows.length===0&&!QA.loading&&!K.authError&&QA.available&&e(c)});var l=P(s,2),u=e=>{z(e,AM())};V(l,e=>{QA.workflows.length>0&&QA.filteredWorkflows.length===0&&!QA.loading&&e(u)}),T(n),z(e,n),D()}var NM=R(``),PM=R(`
        Workflows feature is unavailable.
        `),FM=R(`
        `),IM=R(`
        `),LM=R(``),RM=R(`
        `);function zM(e,t){E(t,!0),An(()=>{K.refreshTick,QA.fetchPage()});var n=RM(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=NM();G(M(t),{name:`plus`,class:`form-action-icon`,"aria-hidden":`true`}),Ue(2),T(t),L(`click`,t,()=>QA.openCreate()),z(e,t)};V(a,e=>{QA.available&&e(o)}),T(i),T(r);var s=P(r,2),c=e=>{z(e,PM())};V(s,e=>{!QA.available&&!K.authError&&e(c)});var l=P(s,2),u=e=>{var t=FM(),n=M(t,!0);T(t),F(()=>B(n,QA.error)),z(e,t)};V(l,e=>{QA.error&&!K.authError&&e(u)});var d=P(l,2),f=e=>{var t=IM(),n=M(t);nC(M(n),{placeholder:`Filter by scope, name, hash, or guardrail...`,label:`Filter workflows by scope, name, hash, or guardrail`,get value(){return QA.filter},set value(e){QA.filter=e}}),T(n);var r=P(n,2),i=M(r),a=M(i,!0);T(i),T(r),T(t),F(()=>B(a,QA.filteredWorkflows.length+` active scopes`)),z(e,t)};V(d,e=>{QA.available&&e(f)});var p=P(d,2);EM(p,{});var m=P(p,2);MM(m,{});var h=P(m,2);H(h,20,()=>QA.guardrailRefs,e=>e,(e,t)=>{var n=LM(),r={};F(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(h),T(n),z(e,n),D()}Hr([`click`]);function BM(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Uo}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=VM(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function VM(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var HM=null;function UM(){return HM===null&&(HM=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`)),!!(HM&&HM.matches)}function WM(e){return UM()?0:e}function GM(e,t){return!t||!t.live?{duration:0}:Vo(e,{duration:WM(150)})}var KM=new class{#e=k(j({}));get workflowVersionsByID(){return I(this.#e)}set workflowVersionsByID(e){A(this.#e,e,!0)}workflowVersionRequests={};workflowFeatureCaps(){return{cache:_o.cacheVisible(),audit:_o.auditVisible(),usage:_o.usageVisible(),budget:_o.budgetsVisible(),guardrails:_o.guardrailsVisible(),failover:_o.booleanFlag(`FAILOVER_ENABLED`,!0)}}cacheWorkflowVersion(e){let t=String(e&&e.id||``).trim();return t?(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:e},e):null}cacheMissingWorkflowVersion(e){let t=String(e||``).trim();t&&(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:null})}workflowVersionCacheHas(e){return Object.prototype.hasOwnProperty.call(this.workflowVersionsByID||{},String(e||``).trim())}workflowVersionByID(e){let t=String(e||``).trim();return t&&this.workflowVersionCacheHas(t)?this.workflowVersionsByID[t]:null}async fetchWorkflowVersion(e){let t=String(e||``).trim();if(!t)return null;if(this.workflowVersionCacheHas(t))return this.workflowVersionsByID[t];if(this.workflowVersionRequests[t])return this.workflowVersionRequests[t];let n=(async()=>{let e=typeof AbortController==`function`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1e4):null;try{let n=await fo(`/admin/workflows/`+encodeURIComponent(t),{label:`workflow`,signal:e?e.signal:void 0});if(n.stale)return null;if(n.status===404)return this.cacheMissingWorkflowVersion(t),null;if(!n.ok)return null;let r=n.data;return!r||typeof r!=`object`||Array.isArray(r)?(this.cacheMissingWorkflowVersion(t),null):this.cacheWorkflowVersion(r)}catch(e){return e&&e.name===`AbortError`||console.error(`Failed to fetch workflow version:`,e),null}finally{n!==null&&clearTimeout(n),delete this.workflowVersionRequests[t]}})();return this.workflowVersionRequests[t]=n,n}async prefetchAuditWorkflows(e){let t=[...new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.workflow_version_id||``).trim()).filter(Boolean))];t.length!==0&&await Promise.all(t.map(e=>this.fetchWorkflowVersion(e)))}auditEntryWorkflow(e){let t=String(e&&e.workflow_version_id||``).trim();return t?this.workflowVersionByID(t):null}},qM=6;function JM(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function YM(e,t=0,n=null){let r=String(e||``).trim();if(!r)return``;if(t>qM)return r;let i=JM(r);return i==null?r:XM(i,t+1,n)||n&&n(i)||r}function XM(e,t=0,n=null,r=null){if(e==null||t>qM)return``;if(typeof e==`string`){let i=JM(e.trim());return i==null?``:XM(i,t+1,n,r)}if(typeof e!=`object`)return``;let i=r||new Set;if(i.has(e))return``;if(i.add(e),Array.isArray(e)){for(let r=0;r=400||$M(t&&t.response_body)}function tN(e){let t=e&&e.data?e.data:null;return t?ZM(t.error_message)||(eN(e,t)?XM(t.response_body,0):``):``}function nN(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return!Number.isInteger(t)||t<0?null:t}function rN(e){let t=nN(e);return t===null?``:t===0?`Audit logs are retained indefinitely.`:t===1?`Audit logs are retained for 1 day.`:`Audit logs are retained for `+t+` days.`}function iN(e){let t=nN(e);return t===null?``:t===0?`Audit logs are retained `:`Audit logs are retained for `}function aN(e){let t=nN(e);return t===null?``:t===0?`indefinitely`:t===1?`1 day`:t+` days`}function oN({dateQuery:e,limit:t,offset:n,search:r,method:i,statusCode:a,stream:o}){let s=e;return s+=`&limit=`+t+`&offset=`+n,r&&(s+=`&search=`+encodeURIComponent(r)),i&&(s+=`&method=`+encodeURIComponent(i)),a&&(s+=`&status_code=`+encodeURIComponent(a)),o&&(s+=`&stream=`+encodeURIComponent(o)),s}function sN({sessionId:e,limit:t}){return`session_id=`+encodeURIComponent(e)+`&limit=`+(t||100)+`&offset=0`}function cN(e){return String(e&&e.session_id||``).trim()}function lN(e){let t=Number(e&&e.session_count);return Number.isFinite(t)&&t>1?t:1}function uN(e){return!!cN(e)&&lN(e)>1}function dN(e){return{entries:(Array.isArray(e&&e.sessions)?e.sessions:[]).filter(e=>e&&e.latest).map(e=>({...e.latest,session_id:cN(e.latest)||String(e.session_id||``).trim(),session_count:Number(e.count||1)})),total:Number(e&&e.total||0),limit:Number(e&&e.limit||25),offset:Number(e&&e.offset||0)}}function fN(e,t,n){let r=new Set((Array.isArray(n)?n:[]).flatMap(e=>gN(e))),i=(Array.isArray(t)?t:[]).filter(e=>!gN(e).some(e=>r.has(e))),a=new Set([...r,...i.flatMap(e=>gN(e))]),o=(e&&Array.isArray(e.entries)?e.entries:[]).filter(e=>e&&e._live&&!gN(e).some(e=>a.has(e)));return{entries:[...o,...i],preservedCount:o.length}}function pN(e,t){let n=e||{};if(!t)return n;if(n[t]){let e={...n};return delete e[t],e}return{...n,[t]:!0}}function mN(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>cN(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=n[e];return}a=!0}),a?i:n}function hN(e){return String(e&&e.id||``).trim()}function gN(e){if(!e)return[];let t=[],n=String(e.id||``).trim(),r=String(e.request_id||``).trim();return n&&t.push(`id:`+n),r&&t.push(`request:`+r),t}function _N(e){return!!(e&&e._live&&e._live_pending&&!e._audit_flushed)}function vN(e){let t=e&&e.customStartDate,n=e&&e.customEndDate;if(!t&&!n)return!0;let r=new Date;if(t){let e=new Date(t);if(e.setHours(0,0,0,0),Number.isFinite(e.getTime())&&re)return!1}return!0}function yN(e,t){return e&&Number(e.offset||0)===0&&!(t&&t.search)&&!(t&&t.method)&&!(t&&t.statusCode)&&!(t&&t.stream)&&vN(t)}function bN(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!yN(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>_N(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>gN(e))),s=[];return a.forEach(e=>{let t=gN(e);t.length!==0&&(t.some(e=>o.has(e))||(t.forEach(e=>o.add(e)),s.push(e)))}),s.length===0?r:(r.entries=[...s,...i].slice(0,r.limit||25),r.total=Number(r.total||0)+s.length,r)}function xN(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!yN(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>_N(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>gN(e))),s=new Map;i.forEach((e,t)=>{let n=cN(e);n&&!s.has(n)&&s.set(n,t)});let c=[],l=i;return a.forEach(e=>{let t=gN(e);if(t.length===0||t.some(e=>o.has(e)))return;let n=cN(e);if(n&&s.has(n)){let r=s.get(n);l===i&&(l=[...i]),l[r]={...e,session_count:Math.max(lN(l[r]),lN(e))},t.forEach(e=>o.add(e));return}t.forEach(e=>o.add(e)),c.push(e)}),r.entries=[...c,...l].slice(0,r.limit||25),r.total=Number(r.total||0)+c.length,r}function SN(e,t){let n=hN(t),r=e||{};if(!n)return r;if(r[n]){let e={...r};return delete e[n],e}return{...r,[n]:!0}}function CN(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>hN(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=!0;return}a=!0}),a?i:n}function wN(e){if(e==null)return`-`;let t=Number(e);return Number.isFinite(t)?t<=0?`pending`:t<1e6?Math.round(t/1e3)+` µs`:t<1e9?(t/1e6).toFixed(2)+` ms`:(t/1e9).toFixed(2)+` s`:`-`}function TN(e){if(e==null||e===``)return`status-unknown`;let t=Number(e);return Number.isFinite(t)?t>=500?`status-error`:t>=400?`status-warning`:t>=300?`status-neutral`:`status-success`:`status-unknown`}function EN(e){if(!e||!e._live||!e._live_pending)return!1;let t=String(e._live_state||``).trim();if(t===`audit.completed`||t===`audit.flushed`||t===`audit.detail`)return!1;if(e._response_partial)return!0;if(e.status_code!==null&&e.status_code!==void 0&&e.status_code!==``||Number(e.duration_ns||0)>0||e.error_type||e.error_message)return!1;let n=e.data||{};return!(n.response_headers||n.response_body||n.error_message)}function DN(e){let t=e&&e.data&&e.data.failover;return!t||typeof t!=`object`||Array.isArray(t)?null:String(t.target_model||t.targetModel||``).trim()||null}function ON(e){return(e&&e.data&&Array.isArray(e.data.attempts)?e.data.attempts:[]).map((e,t)=>({...e,seq:Number(e&&e.seq||t+1)})).sort((e,t)=>e.seq-t.seq)}function kN(e){let t=ON(e);return t.length>1||t.some(e=>!(e&&e.success))}function AN(e){if(!e)return`-`;let t=e.status_code||e.status;return t?String(t):e.success?`ok`:`error`}function jN(e){return String(e&&e.kind||``).trim()||`attempt`}function MN(e){if(!e)return`-`;let t=String(e.provider_name||``).trim(),n=String(e.provider_type||e.provider||``).trim();return t&&n&&t!==n?t+` (`+n+`)`:t||n||`-`}function NN(e){return String(e&&e.model||``).trim()||`-`}function PN(e){let t=ON(e);return t.length>1||t.some(e=>!(e&&e.success))?t:[]}function FN(e){return ON(e).length+`×`}function IN(e){let t=ON(e),n=t.filter(e=>!(e&&e.success)).length,r=t.length===1?`attempt`:`attempts`,i=t.length+` provider `+r;return n>0?i+` · `+n+` failed`:i}function LN(e){if(!e)return``;let t=[`#`+Number(e.seq||0)],n=jN(e);n&&n!==`attempt`&&t.push(n),t.push(AN(e));let r=MN(e);r&&r!==`-`&&t.push(r);let i=NN(e);return i&&i!==`-`&&t.push(i),t.push(e.success?`succeeded`:`failed`),t.join(` · `)}function RN(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t&&t.response_body!=null?t.response_body:null}return t.response_body!=null&&t.response_body!==``?t.response_body:null}function zN(e){if(!e||e.success)return``;let t=String(e.error_message||``).trim(),n=String(e.error_code||``).trim(),r=String(e.error_type||``).trim();return t&&n?n+`: `+t:t||n||r||`Provider attempt failed`}function BN(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t?t.response_headers:null}return t.response_headers||null}function VN(e){let t=Number(e&&e.status_code);return Number.isFinite(t)&&t>0?t:null}function HN(e,t){let n=!!(t&&t.success),r=e&&e.data?e.data:null,i=RN(e,t),a=BN(e,t),o=zN(t),s=i!=null&&i!==``,c=jN(t),l=ON(e).length<=1;return{title:`Response`,direction:`response`,seq:l?0:Number(t&&t.seq||0),kind:l||c===`attempt`?``:c,statusCode:l?null:VN(t),layout:`split`,entry:e,copyHeaders:a,copyBody:i,showErrorMessage:!!o,errorMessage:o,showHeaders:!!a,headers:a,showBody:s,body:i,showEmpty:!o&&!s&&!a,emptyMessage:`No response was captured for this attempt.`,showTooLarge:!!(n&&r&&r.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function UN(e){return e&&e.data&&Array.isArray(e.data.request_revisions)?e.data.request_revisions:[]}function WN(e){return UN(e).filter(e=>!(e&&e.no_change))}function GN(e){return UN(e).filter(e=>e&&e.no_change).map(e=>{let t=String(e.rewriter||`rewriter`);return{id:`step-`+Number(e.seq||0),rewriter:t,label:t+`: no change`,title:t+` ran and forwarded the request unchanged`}})}function KN(e){let t=Number(e&&e.bytes_before),n=Number(e&&e.bytes_after);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n>=t)return``;let r=(1-n/t)*100;return`-`+(r>=10?String(Math.round(r)):r.toFixed(1))+`%`}function qN(e,t){let n=t&&t.body,r=n!=null&&n!==``,i=WN(e).length<=1,a={rewriter:t&&t.rewriter||``,bytes:Number(t&&t.bytes_before||0)+` → `+Number(t&&t.bytes_after||0)};return t&&t.detail!=null&&(a.detail=t.detail),{title:`Rewritten`,direction:`request`,seq:i?0:Number(t&&t.seq||0),kind:t&&t.rewriter?String(t.rewriter):``,savingsLabel:KN(t),layout:`split`,entry:e,copyHeaders:a,copyBody:n,showErrorMessage:!1,errorMessage:null,showHeaders:!0,headers:a,headersTitle:`What changed`,showBody:r,body:n,showEmpty:!1,emptyMessage:``,showTooLarge:!r,tooLargeMessage:`Rewritten body not captured (body logging disabled or body too large).`}}function JN(e){let t=e&&e.usage;return!t||typeof t!=`object`?null:t}function YN(e){let t=JN(e);return Number(t&&t.cached_input_tokens||0)>0}function XN(e){let t=JN(e),n=Number(t&&t.input_tokens||0),r=Number(t&&t.cached_input_tokens||0);return!Number.isFinite(n)||n<=0||!Number.isFinite(r)||r<=0?0:Math.max(0,Math.min(100,r/n*100))}function ZN(e){let t=JN(e);if(!t)return``;let n=Number(t.input_tokens||0),r=Number(t.cached_input_tokens||0);return n<=0?$o(r)+` cached`:XN(e).toFixed(1)+`% cached`}function QN(e){return YN(e)?ZN(e):``}function $N(e,t){let n=JN(e);if(!n||!e||!e.data||!e.data.request_body)return null;let r=Number(n.estimated_cached_characters||0);if(!Number.isFinite(r)||r<=0||typeof t!=`function`)return null;let i=t(e.data.request_body);return!Array.isArray(i)||i.length===0?null:{characters:r,segments:i}}function eP(e,t){let n=e&&e.data?e.data:null,r=!n||!n.request_headers&&!n.request_body,i=r&&EN(e);return{title:`Request`,direction:`request`,layout:`split`,entry:e,copyHeaders:n&&n.request_headers,copyBody:n&&n.request_body,showErrorMessage:!1,errorMessage:null,showHeaders:!!(n&&n.request_headers),headers:n&&n.request_headers,showBody:!!(n&&n.request_body),body:n&&n.request_body,bodyCacheRatioLabel:QN(e),promptCacheHighlight:$N(e,t),noChangeSteps:GN(e),showEmpty:r&&!i,emptyMessage:`Request details were not captured.`,showPending:i,pendingMessage:`Waiting for request data…`,showTooLarge:!!(n&&n.request_body_too_big_to_handle),tooLargeMessage:`Request body was too large to capture.`}}function tP(e){let t=e&&e.data?e.data:null,n=tN(e),r=!t||!n&&!t.response_headers&&!t.response_body,i=r&&EN(e);return{title:`Response`,direction:`response`,layout:`split`,entry:e,copyHeaders:t&&t.response_headers,copyBody:t&&t.response_body,showErrorMessage:!!n,errorMessage:n,showHeaders:!!(t&&t.response_headers),headers:t&&t.response_headers,showBody:!!(t&&t.response_body),body:t&&t.response_body,streaming:!!(e&&e._response_partial&&t&&t.response_body)&&EN(e),showEmpty:r&&!i,emptyMessage:`Response details were not captured.`,showPending:i,pendingMessage:`Response in progress…`,showTooLarge:!!(t&&t.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function nP(e,t){let n=[{id:`request`,pane:eP(e,t)}];return WN(e).forEach(t=>{n.push({id:`revision-`+Number(t&&t.seq||0),pane:qN(e,t)})}),kN(e)?ON(e).forEach(t=>{n.push({id:`response-`+Number(t&&t.seq||0),pane:HN(e,t)})}):n.push({id:`response`,pane:tP(e)}),n}function rP(e){if(!kN(e))return`response`;let t=ON(e),n=null;return t.forEach(e=>{e&&e.success&&(n=e)}),n||=t[t.length-1],n?`response-`+Number(n.seq||0):`request`}function iP(e,t,n){return e&&(Array.isArray(n)?n:nP(t)).some(t=>t.id===e)?e:rP(t)}function aP(e,t,n){if(!t||!t.length)return null;let r=t.indexOf(n);r<0&&(r=0);let i;switch(e){case`ArrowRight`:case`ArrowDown`:i=(r+1)%t.length;break;case`ArrowLeft`:case`ArrowUp`:i=(r-1+t.length)%t.length;break;case`Home`:i=0;break;case`End`:i=t.length-1;break;default:return null}return t[i]}var oP=100;function sP(){return{entries:[],total:0,limit:25,offset:0}}var cP=new class{#e=k(j({}));get auditExpandedEntries(){return I(this.#e)}set auditExpandedEntries(e){A(this.#e,e,!0)}#t=k(j({}));get auditExpandedThreads(){return I(this.#t)}set auditExpandedThreads(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}auditFetchToken=0;get auditLog(){return hS.auditLog}set auditLog(e){hS.auditLog=e}get auditSearch(){return hS.auditSearch}set auditSearch(e){hS.auditSearch=e}get auditMethod(){return hS.auditMethod}set auditMethod(e){hS.auditMethod=e}get auditStatusCode(){return hS.auditStatusCode}set auditStatusCode(e){hS.auditStatusCode=e}get auditStream(){return hS.auditStream}set auditStream(e){hS.auditStream=e}get auditGroupSessions(){return hS.auditGroupSessions}liveFilters(){return{search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream,customStartDate:Ts.customStartDate,customEndDate:Ts.customEndDate}}toggleAuditGroupSessions(){hS.auditGroupSessions=!hS.auditGroupSessions,Da(`gomodel_audit_group_sessions`,hS.auditGroupSessions),this.auditExpandedThreads={},hS.auditThreadChildren={},this.fetchAuditLog(!0)}async fetchAuditLog(e){let t=++this.auditFetchToken;this.loading=!0;try{e&&(this.auditLog.offset=0);let n=this.auditGroupSessions,r=oN({dateQuery:Ts.queryStr(),limit:this.auditLog.limit,offset:this.auditLog.offset,search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream}),i=await fo((n?`/admin/audit/sessions?`:`/admin/audit/log?`)+r,{label:`audit log`});if(i.stale||t!==this.auditFetchToken)return;if(!i.ok){this.auditLog=sP();return}let a=n?dN(i.data):i.data,o=(n?xN:bN)(a,this.auditLog&&this.auditLog.entries,this.liveFilters());Array.isArray(o.entries)||(o.entries=[]),this.auditLog=o,this.auditExpandedThreads=mN(this.auditExpandedThreads,o.entries),hS.auditThreadChildren=mN(hS.auditThreadChildren,o.entries);let s=[...o.entries,...this.loadedThreadChildren()];this.auditExpandedEntries=CN(this.auditExpandedEntries,s);try{await KM.prefetchAuditWorkflows(s)}catch(e){console.error(`Failed to prefetch audit workflows:`,e)}}catch(e){if(console.error(`Failed to fetch audit log:`,e),t!==this.auditFetchToken)return;this.auditLog=sP()}finally{t===this.auditFetchToken&&(this.loading=!1)}}loadedThreadChildren(){let e=hS.auditThreadChildren||{};return Object.keys(e).flatMap(t=>Array.isArray(e[t]&&e[t].entries)?e[t].entries:[])}isThreadExpanded(e){return!!(e&&this.auditExpandedThreads[e])}threadChildren(e){return e&&hS.auditThreadChildren[e]||null}async toggleThread(e){let t=cN(e);if(!t)return;let n=!this.isThreadExpanded(t);this.auditExpandedThreads=pN(this.auditExpandedThreads,t);let r=hS.auditThreadChildren[t];n&&!(r&&(r.loaded||r.loading))&&await this.fetchThreadEntries(e)}async fetchThreadEntries(e){let t=cN(e);if(!t)return;let n=hS.auditThreadChildren[t];hS.auditThreadChildren={...hS.auditThreadChildren,[t]:{loading:!0,loaded:!1,entries:n&&Array.isArray(n.entries)?n.entries:[],total:Number(n&&n.total||0)}};let r=()=>{let e={...hS.auditThreadChildren},n=e[t],r=n&&Array.isArray(n.entries)?n.entries:[];r.length>0?e[t]={loading:!1,loaded:!1,entries:r,total:r.length}:(delete e[t],this.auditExpandedThreads[t]&&(this.auditExpandedThreads=pN(this.auditExpandedThreads,t))),hS.auditThreadChildren=e};try{let n=await fo(`/admin/audit/log?`+sN({sessionId:t,limit:oP}),{label:`audit session`});if(n.stale){r();return}if(!n.ok)throw Error(`audit session fetch failed`);let i=hS.auditThreadChildren[t],a=this.auditLog.entries.find(e=>cN(e)===t),o=fN(i,n.data.entries,a?[a]:[e]);hS.auditThreadChildren={...hS.auditThreadChildren,[t]:{loading:!1,loaded:!0,entries:o.entries,total:Number(n.data.total||0)+o.preservedCount}}}catch(e){console.error(`Failed to fetch audit session entries:`,e),r()}}clearAuditFilters(){this.auditSearch=``,this.auditMethod=``,this.auditStatusCode=``,this.auditStream=``,this.fetchAuditLog(!0)}auditLogNextPage(){this.auditLog.offset+this.auditLog.limit0&&(this.auditLog.offset=Math.max(0,this.auditLog.offset-this.auditLog.limit),this.fetchAuditLog(!1))}isAuditEntryExpanded(e){let t=hN(e);return t?!!(this.auditExpandedEntries&&this.auditExpandedEntries[t]):!1}toggleAuditEntryExpanded(e){this.auditExpandedEntries=SN(this.auditExpandedEntries,e);let t=this.isAuditEntryExpanded(e);return t&&typeof hS.fetchAuditEntryDetail==`function`&&hS.fetchAuditEntryDetail(e),t}expandAuditEntry(e){this.isAuditEntryExpanded(e)||this.toggleAuditEntryExpanded(e)}};hS.fetchAuditLog=e=>cP.fetchAuditLog(e),hS.isAuditEntryExpanded=e=>cP.isAuditEntryExpanded(e);var lP=R(`
        `);function uP(e,t){E(t,!0);let n=rC(()=>cP.fetchAuditLog(!0));An(()=>n.cancel);var r=lP(),i=M(r);nC(M(i),{id:`audit-filter-search`,placeholder:`Search by request ID, model, provider, path, user path, or error...`,label:`Search by request ID, model, provider, path, user path, or error`,get oninput(){return n},get value(){return cP.auditSearch},set value(e){cP.auditSearch=e}}),T(i);var a=P(i,2),o=M(a),s=M(o);s.value=s.__value=``;var c=P(s);c.value=c.__value=`GET`;var l=P(c);l.value=l.__value=`POST`;var u=P(l);u.value=u.__value=`PUT`;var d=P(u);d.value=d.__value=`PATCH`;var f=P(d);f.value=f.__value=`DELETE`,T(o);var p=P(o,2),m=M(p);m.value=m.__value=``;var h=P(m);h.value=h.__value=`200`;var g=P(h);g.value=g.__value=`201`;var _=P(g);_.value=_.__value=`400`;var v=P(_);v.value=v.__value=`401`;var y=P(v);y.value=y.__value=`403`;var b=P(y);b.value=b.__value=`404`;var x=P(b);x.value=x.__value=`429`;var S=P(x);S.value=S.__value=`500`;var C=P(S);C.value=C.__value=`502`;var w=P(C);w.value=w.__value=`503`;var ee=P(w);ee.value=ee.__value=`504`,T(p);var te=P(p,2),ne=M(te);ne.value=ne.__value=``;var re=P(ne);re.value=re.__value=`true`;var ie=P(re);ie.value=ie.__value=`false`,T(te);var ae=P(te,2);G(M(ae),{name:`x`,class:`table-icon-svg`}),Ue(2),T(ae),T(a),T(r),L(`change`,o,()=>cP.fetchAuditLog(!0)),Gi(o,()=>cP.auditMethod,e=>cP.auditMethod=e),L(`change`,p,()=>cP.fetchAuditLog(!0)),Gi(p,()=>cP.auditStatusCode,e=>cP.auditStatusCode=e),L(`change`,te,()=>cP.fetchAuditLog(!0)),Gi(te,()=>cP.auditStream,e=>cP.auditStream=e),L(`click`,ae,()=>cP.clearAuditFilters()),z(e,r),D()}Hr([`change`,`click`]);var dP=R(`Live stream connecting…`),fP=R(` `),pP=R(`Live`),mP=R(` `);function hP(e,t){E(t,!0);let n=O(()=>hS.auditLivePauseReason()),r=O(()=>hS.liveLogsStreaming&&!I(n));var i=Qr(),a=N(i),o=e=>{var t=mP(),i=M(t);let a;var o=P(i,2),s=e=>{z(e,dP())},c=e=>{var t=fP(),r=M(t,!0);T(t),F(e=>B(r,e),[()=>dS(I(n))]),z(e,t)},l=e=>{z(e,pP())};V(o,e=>{hS.liveLogsStreaming?I(n)?e(c,1):e(l,-1):e(s)}),T(t),F(()=>a=U(i,1,`live-dot svelte-tve6yv`,null,a,{"is-streaming":I(r)})),z(e,t)},s=O(()=>_o.liveLogsVisible());V(a,e=>{I(s)&&e(o)}),z(e,i),D()}var gP=R(` `),_P=R(``);function vP(e,t){E(t,!0);let n=O(()=>[{key:`provider`,text:ls(t.entry)||`-`},{key:`model`,text:t.entry.requested_model||t.entry.model||`-`,mono:!0},{key:`user_path`,text:t.entry.user_path,mono:!0},{key:`request_id`,text:`request_id: `+(t.entry.request_id||`-`),mono:!0},{key:`ip`,text:t.entry.client_ip&&`ip: `+t.entry.client_ip,mono:!0},{key:`auth_key_id`,text:t.entry.auth_key_id&&`auth_key_id: `+t.entry.auth_key_id,mono:!0},{key:`alias`,text:t.entry.alias_used&&`alias`,class:`audit-alias-badge`},{key:`resolved`,text:t.entry.alias_used&&t.entry.resolved_model&&`resolved: `+fs(t.entry),mono:!0},{key:`failover`,text:DN(t.entry)&&`failover: `+DN(t.entry),mono:!0},{key:`stream`,text:t.entry.stream&&`stream`},{key:`error_type`,text:t.entry.error_type}].filter(e=>!!e.text));var r=_P(),i=P(M(r),2);H(i,21,()=>I(n),e=>e.key,(e,t)=>{var n=gP(),r=M(n,!0);T(n),F(()=>{U(n,1,Fi([`provider-badge`,I(t).class,{mono:I(t).mono}]),`svelte-hyopt0`),B(r,I(t).text)}),z(e,n)}),T(i),T(r),z(e,r),D()}var yP=R(``),bP=R(` `);function xP(e,t){E(t,!0);let n=O(()=>PN(t.entry)),r=O(()=>I(n).length>0?IN(t.entry):``),i=O(()=>I(n).length>0?FN(t.entry):``);var a=Qr(),o=N(a),s=e=>{var a=bP(),o=M(a);H(o,21,()=>I(n),e=>t.entry.id+`-pip-`+e.seq,(e,t)=>{var n=yP();let r;F(e=>{r=U(n,1,`audit-attempt-pip svelte-1eu22xn`,null,r,{"audit-attempt-success":!!(I(t)&&I(t).success),"audit-attempt-error":!(I(t)&&I(t).success)}),W(n,`title`,e)},[()=>LN(I(t))]),z(e,n)}),T(o);var s=P(o,2),c=M(s,!0);T(s),T(a),F(()=>{W(a,`title`,I(r)),W(a,`aria-label`,I(r)),B(c,I(i))}),z(e,a)};V(o,e=>{I(n).length>0&&e(s)}),z(e,a),D()}var SP=new Set([`instructions`,`messages`,`input`,`previous_response_id`,`choices`,`output`]);function CP(e){if(e==null)return``;if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>typeof e==`string`?e:!e||typeof e!=`object`?``:typeof e.text==`string`?e.text:typeof e.output_text==`string`?e.output_text:``).filter(Boolean).join(` -`).trim();if(typeof e==`object`){if(typeof e.text==`string`)return e.text.trim();try{return JSON.stringify(e,null,2)}catch{return``}}return String(e).trim()}function wP(e){if(e==null)return[];if(typeof e==`string`)return e?[e]:[];if(Array.isArray(e))return e.flatMap(e=>typeof e==`string`?e?[e]:[]:!e||typeof e!=`object`?[]:typeof e.text==`string`?e.text?[e.text]:[]:typeof e.output_text==`string`&&e.output_text?[e.output_text]:[]);if(typeof e==`object`)return typeof e.text==`string`&&e.text?[e.text]:[];let t=String(e);return t?[t]:[]}function TP(e){if(e==null)return[];if(typeof e==`string`){let t=e.trim();return t?[{role:`user`,text:t}]:[]}if(!Array.isArray(e)){let t=CP(e);return t?[{role:`user`,text:t}]:[]}return e.map(e=>{if(!e||typeof e!=`object`)return null;let t=String(e.role||`user`).toLowerCase(),n=CP(e.content);return n?{role:t,text:n}:null}).filter(Boolean)}function EP(e){return!e||typeof e!=`object`?``:Array.isArray(e.content)?e.content.map(e=>e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(` -`).trim():CP(e.content)}function DP(e){if(!e||typeof e!=`object`)return[];let t=[];return t.push(...wP(e.instructions)),Array.isArray(e.messages)&&e.messages.forEach(e=>{!e||typeof e!=`object`||t.push(...wP(e.content))}),typeof e.input==`string`?t.push(e.input):Array.isArray(e.input)?e.input.forEach(e=>{!e||typeof e!=`object`||(t.push(...wP(e.content)),typeof e.text==`string`&&t.push(e.text))}):e.input&&typeof e.input==`object`&&(t.push(...wP(e.input.content)),typeof e.input.text==`string`&&t.push(e.input.text)),t.map(e=>String(e||``)).filter(e=>e.length>0)}var OP=e=>CP(e);function kP(e){if(!e||!e.data)return``;let t=XM(e.data.response_body,0,OP);if(t)return t;let n=e.data.error_message;if(n==null)return``;if(typeof n==`string`){let e=n.trim();return e?XM(JM(e),0,OP)||e:``}return XM(n,0,OP)||CP(n)}function AP(e){return Array.isArray(e)?e.some(e=>!e||typeof e!=`object`?!1:e.type===`message`||e.role===`assistant`||e.role===`user`||e.role===`system`?!0:Array.isArray(e.content)?e.content.some(e=>!e||typeof e!=`object`?!1:typeof e.text==`string`||e.type===`output_text`||e.type===`input_text`):!1):!1}function jP(e){if(!e)return!1;let t=String(e).toLowerCase();return t===`/v1/embeddings`||t===`/v1/embeddings/`||t.startsWith(`/v1/embeddings?`)||t.startsWith(`/v1/embeddings/`)}function MP(e){return e?!!PP(e):!1}function NP(e){let t=String(e||``).trim().split(`?`)[0].replace(/\/+$/,``).toLowerCase();return t.startsWith(`/v1/`)?t.slice(3):t}function PP(e){switch(NP(e)){case`/chat/completions`:return`chat`;case`/responses`:return`responses`;case`/messages`:return`messages`;default:return``}}function FP(e){if(!e||typeof e!=`object`)return null;try{return JSON.parse(JSON.stringify(e))}catch{return null}}function IP(e,t){if(!t||typeof t!=`object`)return;let n=e[e.length-1];try{if(n&&JSON.stringify(n)===JSON.stringify(t))return}catch{}e.push(t)}function LP(e){let t=PP(e&&e.path),n=e&&e.data&&e.data.request_body;return!t||!n||typeof n!=`object`?!1:t!==`responses`||(e.data&&e.data.response_body&&typeof e.data.response_body.id==`string`?e.data.response_body.id.trim():``)!==``||gF(n)!==``}function RP(e,t){let n=String(t||``).trim(),r=PP(e&&e.path),i=FP(e&&e.data&&e.data.request_body);if(!n||!r||!i)return null;let a=e&&e.data?e.data.response_body:null;if(r===`responses`){let e=a&&typeof a.id==`string`?a.id.trim():``,t=gF(i);return!e&&!t?null:(i.input=n,e&&!t?i.previous_response_id=e:delete i.previous_response_id,i)}let o=Array.isArray(i.messages)?i.messages:[];if(r===`chat`){let e=a&&Array.isArray(a.choices)?a.choices[0]:null;e&&e.message&&IP(o,FP(e.message)),o.push({role:`user`,content:n})}else a&&a.content!==void 0&&IP(o,{role:String(a.role||`assistant`),content:FP(a.content)||a.content}),o.push({role:`user`,content:n});return i.messages=o,i}var zP=new Set(`authorization.proxy-authorization.cookie.content-type.content-length.host.accept.connection.accept-encoding.content-encoding.transfer-encoding.user-agent.date.expect.upgrade.via.te.trailer.keep-alive.origin.referer.forwarded.x-real-ip.traceparent.tracestate.x-request-id.idempotency-key.x-idempotency-key.x-gomodel-timezone.x-gomodel-interaction-parent`.split(`.`));function BP(e,t,n=``){let r=e&&e.data&&e.data.request_headers,i={};return r&&typeof r==`object`&&Object.keys(r).forEach(e=>{let t=String(e).toLowerCase(),n=String(r[e]==null?``:r[e]);!e||!n||n===`[REDACTED]`||zP.has(t)||t.startsWith(`sec-`)||t.startsWith(`cf-`)||t.startsWith(`x-forwarded-`)||(i[e]=n)}),i[`X-GoModel-Interaction-Parent`]=String(t||e&&e.id||``).trim(),String(n||``).trim()&&(i[`X-Request-ID`]=String(n).trim()),i}function VP(e,t){let n=String(t||``).trim();return!n||!Array.isArray(e)?null:e.find(e=>String(e&&e.request_id||``).trim()===n)||null}function HP(e,t,n,r,i){let a=Array.isArray(e)?e:[],o=String(i&&i.id||``).trim(),s=String(i&&i.request_id||``).trim(),c=String(i&&i.session_id||``).trim(),l=String(r||``).trim(),u=UP(i),d=a.some(e=>o&&String(e&&e.id||``).trim()===o||s&&String(e&&e.request_id||``).trim()===s),f=!!l&&s===l,p=!!n&&c===String(n).trim(),m=!!u&&(u===String(t||``).trim()||a.some(e=>String(e&&e.id||``).trim()===u)),h=d||f||!l&&(p||m);return{accepted:h,submittedChild:f,followUpRequestID:h&&f&&o?``:l}}function UP(e){let t=e&&e.data&&e.data.request_headers;if(!t||typeof t!=`object`)return``;let n=Object.keys(t).find(e=>e.toLowerCase()===`x-gomodel-interaction-parent`);return n?String(t[n]||``).trim():``}function WP(e,t){return!Array.isArray(e)||!t?null:e.find(e=>String(e&&e.id||``)===String(t))||null}function GP(e){return!Array.isArray(e)||e.length===0?null:e.reduce((e,t)=>e?_F(t,e)>=0?t:e:t,null)}function KP(e,t){let n=new Set(Array.isArray(t)?t.map(String):[]);return GP((Array.isArray(e)?e:[]).filter(e=>{let t=String(e&&e.id||``);return n.has(t)&&e&&e.data&&e.data.request_body!=null}))}function qP(e,t){let n=GP(e);return!!n&&String(n.id||``)===String(t||``)}function JP(e){if(e&&e.conversation_payload)return!0;let t=e&&e.data?e.data.request_body:null,n=e&&e.data?e.data.response_body:null,r=t&&(Array.isArray(t.messages)||t.input!==void 0||typeof t.instructions==`string`||typeof t.previous_response_id==`string`),i=n&&(Array.isArray(n.choices)||AP(n.output));return!!(r||i)}function YP(e){return!e||jP(e.path)?!1:MP(e.path)||JP(e)}function XP(e){let t=0,n=!1,r=!1,i=String(e||``);for(let e=0;e0&&a+1`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`)}function eF(e){return!!(e&&typeof e==`object`&&e.__audio__===!0)}function tF(e){let t=Number(e||0);if(!Number.isFinite(t)||t<=0)return`0 B`;let n=[`B`,`KB`,`MB`,`GB`],r=0,i=t;for(;i>=1024&&r`
        `+$P(t)+``+$P(rF(e[t]))+`
        `);return t.length?``:``}function aF(e){let t=nF(e.content_type),n=$P(t+` · `+tF(e.bytes)),r=iF(e.meta);if(e.stored&&e.encoding===`base64`&&e.data){let i=String(e.data).replace(/[^A-Za-z0-9+/=]/g,``);return`
        `+n+`
        `+r+`
        `}let i=e.too_large?`Audio too large to store.`:`Audio not logged. Set LOGGING_LOG_AUDIO_BODIES=true to capture playable audio.`;return`
        `+n+`
        `+$P(i)+`
        `+r+`
        `}function oF(e){try{return JSON.stringify(String(e)).slice(1,-1)}catch{return``}}function sF(e){if(!e||typeof e!=`object`)return null;let t=Number(e.characters||0);if(!Number.isFinite(t)||t<=0)return null;let n=Array.isArray(e.segments)?e.segments.map(e=>String(e||``)).filter(Boolean):[];return n.length===0?null:{remaining:Math.floor(t),segments:n,segmentIndex:0}}function cF(e,t){if(!t||t.remaining<=0||t.segmentIndex>=t.segments.length)return $P(e);let n=``,r=0,i=0;for(;t.remaining>0&&t.segmentIndex`+$P(l)+``,r=s+l.length,i=s+o.length,t.remaining-=c,c>=a.length){t.segmentIndex++;continue}break}return n?n+$P(e.slice(r)):$P(e)}function lF(e,t,n){let r=n&&typeof n.formatJSON==`function`?n.formatJSON:e=>String(e),i=n&&typeof n.canShowConversation==`function`?n.canShowConversation:()=>!1,a=sF(n&&n.promptCacheHighlight),o=r(t);if(!o||o===`Not captured`)return $P(o);if(!i(e))return o.split(` -`).map(e=>cF(e,a)).join(` -`);let s=o.split(` -`),c=[],l=0;for(;lcF(e,a)).join(` -`);c.push(``+o+``),l=r+1;continue}c.push(cF(e,a)),l++}return c.join(` -`)}function uF(e){let t=String(e||``).toLowerCase();return t===`system`||t===`developer`?{role:`system`,label:`System Prompt`,className:`role-system`}:t===`assistant`?{role:`assistant`,label:`Agent`,className:`role-assistant`}:t===`error`?{role:`error`,label:`Error`,className:`role-error`}:t===`function_call`?{role:`function_call`,label:`Function Call`,className:`role-function-call`}:t===`function_result`?{role:`function_result`,label:`Function Result`,className:`role-function-result`}:{role:`user`,label:`User`,className:`role-user`}}function dF(e,t,{timestamp:n,entryID:r,isAnchor:i,isAfterAnchor:a,index:o,toolCalls:s,functionName:c}){let l=uF(e);return{uid:r+`-`+o,entryID:r,timestamp:n,text:t,role:l.role,roleLabel:l.label,roleClass:l.className,isAnchor:i,isAfterAnchor:a,toolCalls:Array.isArray(s)&&s.length>0?s:null,functionName:c||``}}function fF(e){return Array.isArray(e)?e.map(e=>{if(!e)return null;let t=e.function||e;return{name:t.name||e.name||``,arguments:t.arguments||e.arguments||``}}).filter(Boolean):[]}function pF(e,t,n){if(t&&Array.isArray(t.messages)&&t.messages.forEach(t=>{!t||!Array.isArray(t.tool_calls)||t.tool_calls.forEach(t=>{if(!t)return;let n=t.id||``,r=(t.function||t).name||t.name||``;n&&r&&(e[n]=r)})}),t&&Array.isArray(t.input)&&t.input.forEach(t=>{if(!t||typeof t!=`object`||t.type!==`function_call`)return;let n=t.id||t.call_id||``,r=t.name||``;n&&r&&(e[n]=r)}),n&&Array.isArray(n.choices)){let t=n.choices[0];t&&t.message&&Array.isArray(t.message.tool_calls)&&t.message.tool_calls.forEach(t=>{if(!t)return;let n=t.id||``,r=(t.function||t).name||t.name||``;n&&r&&(e[n]=r)})}n&&Array.isArray(n.output)&&n.output.forEach(t=>{if(!t||t.type!==`function_call`)return;let n=t.id||t.call_id||``,r=t.name||``;n&&r&&(e[n]=r)})}function mF(e){return Array.isArray(e)?`[`+e.map(mF).join(`,`)+`]`:e&&typeof e==`object`?`{`+Object.keys(e).sort().map(t=>JSON.stringify(t)+`:`+mF(e[t])).join(`,`)+`}`:JSON.stringify(e)}function hF(e){if(!e||typeof e!=`object`)return null;let t=[];if(e.system!==void 0&&t.push({system:e.system}),e.instructions!==void 0&&t.push({instructions:e.instructions}),Array.isArray(e.messages))t.push(...e.messages);else if(Array.isArray(e.input)&&e.previous_response_id==null&&e.conversation==null)t.push(...e.input);else return null;return t.map(mF)}function gF(e){let t=e&&e.conversation;return typeof t==`string`?t.trim():t&&typeof t.id==`string`?t.id.trim():``}function _F(e,t){let n=new Date(e&&e.timestamp).getTime(),r=new Date(t&&t.timestamp).getTime();if(Number.isFinite(n)&&Number.isFinite(r)&&n!==r)return n-r;let i=String(e&&e.timestamp||``).localeCompare(String(t&&t.timestamp||``));if(i!==0)return i;let a=String(e&&e.id||``),o=String(t&&t.id||``);return ao)}function vF(e,t){if(!Array.isArray(e)||e.length===0)return{messages:[],entryIDs:[]};let n=[...e].sort(_F),r={};n.forEach(e=>{let t=e.data&&e.data.request_body?e.data.request_body:null,n=e.data&&e.data.response_body?e.data.response_body:null;pF(r,t,n)});let i=[],a=new Set,o=new Set,s=new Set,c=[],l=null,u=0,d=n.findIndex(e=>e.id===t),f=e=>JSON.stringify({role:e.role,text:e.text,toolCalls:e.toolCalls,functionName:e.functionName});return n.forEach((e,n)=>{let p=e.id===t,m=d>=0&&n>d,h=e.timestamp,g=e.data&&e.data.request_body?e.data.request_body:null,_=e.data&&e.data.response_body?e.data.response_body:null,v=i.length,y=(t,n,{toolCalls:r,functionName:i}={})=>dF(t,n,{timestamp:h,entryID:e.id,isAnchor:p,isAfterAnchor:m,index:++u,toolCalls:r,functionName:i});if(g&&g.system!==void 0){let e=CP(g.system);e&&i.push(y(`system`,e))}if(g&&g.instructions!==void 0){let e=CP(g.instructions);e&&i.push(y(`system`,e))}g&&Array.isArray(g.messages)&&g.messages.forEach(e=>{if(!e)return;let t=(e.role||`user`).toLowerCase();if(t===`tool`){let t=CP(e.content),n=e.name||r[e.tool_call_id]||``;t&&i.push(y(`function_result`,t,{functionName:n}));return}if(t===`assistant`){let n=CP(e.content),r=fF(e.tool_calls);(n||r.length>0)&&i.push(y(t,n,{toolCalls:r}));return}let n=CP(e.content);n&&i.push(y(t,n))}),g&&g.input!==void 0&&(Array.isArray(g.input)?g.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call_output`){let t=typeof e.output==`string`?e.output:CP(e.output);t&&i.push(y(`function_result`,t,{functionName:r[e.call_id]||``}))}else if(e.type===`function_call`)i.push(y(`function_call`,``,{toolCalls:[{name:e.name||``,arguments:e.arguments||``}]}));else if(e.role){let t=String(e.role).toLowerCase(),n=CP(e.content);n&&i.push(y(t,n))}}}):TP(g.input).forEach(e=>{e.text&&i.push(y(e.role,e.text))}));let b=i.splice(v),x=b.map(f),S=hF(g),C=S!==null,w=UP(e),ee=!!w&&a.has(w),te=String(g&&g.previous_response_id||``).trim(),ne=gF(g),re=ee||!!te&&o.has(te)||!!ne&&s.has(ne);if(m){let e=C&&l&&l.length>0&&l.every((e,t)=>S[t]===e);if(C&&!e&&!ee||!C&&!re)return}p&&C&&(l=[...S]);let ie=String(e.id||``).trim();p&&(a.clear(),o.clear(),s.clear()),ie&&(p||m)&&a.add(ie),ne&&s.add(ne);let ae=0;for(;ae0;){let t=c.slice(-e),n=x.slice(0,e);if(t.every((e,t)=>e===n[t]))break;e--}i.push(...b.slice(e)),c.push(...x.slice(e))}if(_&&Array.isArray(_.choices)){let e=_.choices[0];if(e&&e.message){let t=(e.message.role||`assistant`).toLowerCase(),n=CP(e.message.content),r=fF(e.message.tool_calls);if(n||r.length>0){let e=y(t,n,{toolCalls:r});i.push(e),c.push(f(e))}}}if(_&&Array.isArray(_.output)&&_.output.forEach(e=>{if(!e)return;if(e.type===`function_call`){let t=y(`function_call`,``,{toolCalls:[{name:e.name||``,arguments:e.arguments||``}]});i.push(t),c.push(f(t));return}let t=(e.role||`assistant`).toLowerCase(),n=EP(e);if(n){let e=y(t,n);i.push(e),c.push(f(e))}}),_&&_.content!==void 0&&!Array.isArray(_.choices)&&!Array.isArray(_.output)){let e=String(_.role||`assistant`).toLowerCase(),t=CP(_.content);if(t){let n=y(e,t);i.push(n),c.push(f(n))}}let oe=kP(e);oe&&i.push(y(`error`,oe));let se=String(_&&_.id||``).trim();se&&o.add(se)}),{messages:i,entryIDs:[...a]}}function yF(e){return e.role===`function_call`?(e.toolCalls||[]).map(function(e){let t=e.arguments||``;try{t=JSON.stringify(JSON.parse(t),null,2)}catch{}return e.name+`(`+t+`)`}).join(` - -`):e.text||``}var bF=600*1e3,xF=15*1e3,SF=250,CF=class{#e=k(!1);get conversationOpen(){return I(this.#e)}set conversationOpen(e){A(this.#e,e,!0)}#t=k(!1);get conversationLoading(){return I(this.#t)}set conversationLoading(e){A(this.#t,e,!0)}#n=k(``);get conversationError(){return I(this.#n)}set conversationError(e){A(this.#n,e,!0)}#r=k(``);get conversationAnchorID(){return I(this.#r)}set conversationAnchorID(e){A(this.#r,e,!0)}#i=k(j([]));get conversationEntries(){return I(this.#i)}set conversationEntries(e){A(this.#i,e,!0)}#a=k(j([]));get conversationMessages(){return I(this.#a)}set conversationMessages(e){A(this.#a,e,!0)}#o=k(j([]));get conversationBranchEntryIDs(){return I(this.#o)}set conversationBranchEntryIDs(e){A(this.#o,e,!0)}#s=k(``);get conversationSessionID(){return I(this.#s)}set conversationSessionID(e){A(this.#s,e,!0)}#c=k(!1);get conversationTruncated(){return I(this.#c)}set conversationTruncated(e){A(this.#c,e,!0)}#l=k(!1);get conversationFollowLatest(){return I(this.#l)}set conversationFollowLatest(e){A(this.#l,e,!0)}#u=k(``);get conversationOpenedFromID(){return I(this.#u)}set conversationOpenedFromID(e){A(this.#u,e,!0)}#d=k(``);get followUpText(){return I(this.#d)}set followUpText(e){A(this.#d,e,!0)}#f=k(!1);get followUpSending(){return I(this.#f)}set followUpSending(e){A(this.#f,e,!0)}#p=k(``);get followUpError(){return I(this.#p)}set followUpError(e){A(this.#p,e,!0)}followUpRequestID=``;followUpAbort=null;conversationRequestToken=0;conversationReturnFocusEl=null;bodyPointerStart=null;#m=k(null);get conversationDialogEl(){return I(this.#m)}set conversationDialogEl(e){A(this.#m,e,!0)}#h=k(null);get conversationCloseBtnEl(){return I(this.#h)}set conversationCloseBtnEl(e){A(this.#h,e,!0)}#g=k(null);get conversationThreadEl(){return I(this.#g)}set conversationThreadEl(e){A(this.#g,e,!0)}canShowConversation(e){return YP(e)}startBodyInteraction(e){this.bodyPointerStart={x:e.clientX,y:e.clientY}}_isBodyDrag(e){if(!this.bodyPointerStart)return!1;let t=Math.abs(e.clientX-this.bodyPointerStart.x),n=Math.abs(e.clientY-this.bodyPointerStart.y);return t>4||n>4}_hasActiveSelection(){let e=window.getSelection?window.getSelection():null;return!e||e.isCollapsed?!1:String(e.toString()||``).trim().length>0}handleBodyConversationClick(e,t){let n=this._isBodyDrag(e);if(this.bodyPointerStart=null,n||this._hasActiveSelection()||!this.canShowConversation(t))return;let r=e.target&&e.target.closest?e.target.closest(`[data-conversation-trigger="1"]`):null;r&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,r))}handleErrorConversationClick(e,t){let n=this._isBodyDrag(e);this.bodyPointerStart=null,!n&&(this._hasActiveSelection()||this.canShowConversation(t)&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,e.currentTarget)))}formatJSON(e){return Qo(e)}renderBodyWithConversationHighlights(e,t,n){return lF(e,t,{formatJSON:e=>this.formatJSON(e),canShowConversation:e=>this.canShowConversation(e),promptCacheHighlight:n&&n.promptCacheHighlight})}async openConversation(e,t){if(!e||!e.id||!this.canShowConversation(e))return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;t instanceof HTMLElement?this.conversationReturnFocusEl=t:n&&n!==document.body&&(this.conversationReturnFocusEl=n);let r=++this.conversationRequestToken;if(this.conversationOpen=!0,this.conversationError=``,this.conversationAnchorID=e.id,this.conversationOpenedFromID=e.id,this.conversationSessionID=String(e.session_id||``).trim(),this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[],this.conversationTruncated=!1,this.conversationFollowLatest=!1,this.followUpText=``,this.followUpError=``,this.followUpRequestID=``,document.body.classList.add(`conversation-drawer-open`),requestAnimationFrame(()=>this._focusConversationDrawer()),this._conversationEntryLivePending(e)){this.conversationFollowLatest=!0,this.conversationLoading=!1,this.applyLiveConversationEntry(e),this._scheduleLatestScroll();return}this.conversationLoading=!0,await this.fetchConversation(e.id,r,!0,!0)}_conversationEntryLivePending(e){return typeof hS.auditEntryLiveDetailPending==`function`&&hS.auditEntryLiveDetailPending(e)}applyLiveConversationEntry(e){let t=[...this.conversationEntries||[]],n=String(e.id||``).trim(),r=String(e.request_id||``).trim(),i=t.findIndex(e=>n&&String(e.id||``).trim()===n||r&&String(e.request_id||``).trim()===r);i>=0?t.splice(i,1,{...t[i],...e}):t.push(e),this.conversationEntries=t,!this.conversationSessionID&&e.session_id&&(this.conversationSessionID=String(e.session_id).trim()),this._applyConversationView(t),this.conversationFollowLatest&&this._scheduleLatestScroll()}_applyConversationView(e){let t=vF(e,this.conversationAnchorID);if(this.conversationFollowLatest){let n=KP(e,t.entryIDs);n&&n.id&&String(n.id)!==this.conversationAnchorID&&(this.conversationAnchorID=String(n.id),t=vF(e,this.conversationAnchorID))}this.conversationBranchEntryIDs=t.entryIDs,this.conversationMessages=t.messages}refreshLiveConversation(e){if(!this.conversationOpen||!e)return;let t=String(e.id||``).trim(),n=HP(this.conversationEntries,this.conversationAnchorID,this.conversationSessionID,this.followUpRequestID,e);if(!n.accepted)return;this.followUpRequestID=n.followUpRequestID,t&&n.submittedChild&&(this.conversationAnchorID=t,this.conversationFollowLatest=!0);let r=String(e._live_state||``).trim();if(r===`audit.flushed`||r===`audit.detail`){this.applyLiveConversationEntry(e),this.conversationMessages.length===0&&(this.conversationLoading=!0);let n=++this.conversationRequestToken;this.fetchConversation(this.conversationAnchorID||t,n,!1);return}this.applyLiveConversationEntry(e)}conversationLiveWaiting(){if(!this.conversationOpen)return!1;let e=new Set(this.conversationBranchEntryIDs||[]);return(this.conversationEntries||[]).some(t=>e.has(String(t&&t.id||``))&&t._live&&(typeof hS.liveAuditStateSettled!=`function`||!hS.liveAuditStateSettled(t._live_state)))}conversationLiveStatusText(){return(this.conversationMessages||[]).length>0?`Model is responding…`:`Waiting for request data…`}closeConversation(){this.followUpAbort&&this.followUpAbort.abort(),this.conversationOpen=!1,this.conversationRequestToken++,this.conversationSessionID=``,this.conversationBranchEntryIDs=[],this.conversationFollowLatest=!1,this.conversationOpenedFromID=``,this.followUpRequestID=``,this.followUpSending=!1,document.body.classList.remove(`conversation-drawer-open`);let e=this.conversationReturnFocusEl;this.conversationReturnFocusEl=null,e&&typeof e.focus==`function`&&document.contains(e)&&requestAnimationFrame(()=>e.focus())}_focusConversationDrawer(){if(!this.conversationOpen)return;let e=this.conversationCloseBtnEl;if(e&&typeof e.focus==`function`){e.focus();return}let t=this.conversationDialogEl;t&&typeof t.focus==`function`&&t.focus()}async fetchConversation(e,t,n=!0,r=!1){try{let i=await fo(`/admin/audit/conversation?`+(`log_id=`+encodeURIComponent(e)+`&limit=120`),{label:`audit conversation`});if(t!==this.conversationRequestToken||i.stale)return;if(!i.ok){this.conversationError=`Unable to load interactions.`,this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[];return}let a=i.data||{},o=a.anchor_id||e;this.conversationEntries=Array.isArray(a.entries)?a.entries:[],r&&(this.conversationFollowLatest=qP(this.conversationEntries,o)),this.conversationAnchorID=o;let s=this.conversationEntries.find(e=>e.id===this.conversationAnchorID);s&&s.session_id&&(this.conversationSessionID=String(s.session_id).trim()),this.conversationTruncated=!!a.truncated,this._applyConversationView(this.conversationEntries),this.conversationFollowLatest?this._scheduleLatestScroll():n&&this._scheduleAnchorScroll()}catch(e){if(t!==this.conversationRequestToken)return;console.error(`Failed to fetch audit conversation:`,e),this.conversationError=`Failed to load interactions.`,this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[]}finally{t===this.conversationRequestToken&&(this.conversationLoading=!1)}}selectedConversationEntry(){return WP(this.conversationEntries,this.conversationAnchorID)}followUpKind(){let e=this.selectedConversationEntry();return LP(e)?PP(e.path):``}canSendFollowUp(){return!!this.followUpKind()&&!!String(this.followUpText||``).trim()&&!this.followUpSending&&!this.conversationLiveWaiting()}async sendFollowUp(){if(!this.canSendFollowUp())return;let e=this.selectedConversationEntry(),t=RP(e,this.followUpText);if(!e||!t)return;let n=this.conversationAnchorID,r=TF(),i=new AbortController,a=!1,o=setTimeout(()=>{a=!0,i.abort()},bF);this.followUpSending=!0,this.followUpError=``,this.followUpRequestID=r,this.followUpAbort=i;try{let a=BP(e,n,r),o=await lo(e.path,{method:`POST`,headers:a,body:JSON.stringify(t),signal:i.signal}),s=String(o.headers.get(`X-Request-ID`)||``).trim();if(s&&this.followUpRequestID&&(this.followUpRequestID=s),!o.ok){let e=`Unable to send message.`;try{let t=await o.json();e=t&&t.error&&t.error.message||e}catch{}this.followUpError=e,(this.followUpRequestID===r||this.followUpRequestID===s)&&(this.followUpRequestID=``);return}if(this.followUpText=``,await wF(o),!hS.liveLogsStreaming&&this.conversationOpen){let e=++this.conversationRequestToken;await this._selectPersistedFollowUp(n,this.followUpRequestID,e,i.signal)}}catch(e){mo(e)||i.signal.aborted?a&&this.conversationOpen&&(this.followUpError=`The request timed out.`):(console.error(`Failed to send interaction follow-up:`,e),this.followUpError=`Failed to send message.`)}finally{clearTimeout(o),this.followUpAbort===i&&(this.followUpAbort=null,this.followUpSending=!1)}}async _selectPersistedFollowUp(e,t,n,r){let i=Date.now()+xF;for(;this.conversationOpen&&n===this.conversationRequestToken&&Date.now(){let e=this.conversationThreadEl;if(!e)return;let t=e.querySelectorAll(`[data-conversation-anchor="true"]`),n=t[t.length-1];n&&typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`center`})})}_scheduleLatestScroll(){requestAnimationFrame(()=>{let e=this.conversationThreadEl;if(!e)return;let t=e.lastElementChild;t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`end`})})}};async function wF(e){let t=e&&e.body&&typeof e.body.getReader==`function`?e.body.getReader():null;if(!t){await e.text();return}for(;!(await t.read()).done;);}function TF(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`?globalThis.crypto.randomUUID():`dashboard-`+Date.now().toString(36)+`-`+Math.random().toString(36).slice(2)}function EF(e,t){return new Promise((n,r)=>{let i,a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};if(i=setTimeout(()=>{t&&t.removeEventListener(`abort`,a),n()},e),t){if(t.aborted){a();return}t.addEventListener(`abort`,a,{once:!0})}})}var DF=new CF;hS.refreshLiveConversation=e=>DF.refreshLiveConversation(e);var OF=R(``),kF=R(` `),AF=R(``),jF=R(`
        `);function MF(e,t){E(t,!0);let n=ya(t,`thread`,3,null),r=ya(t,`expanded`,3,!1),i=ya(t,`onactivate`,3,null);function a(e){e.preventDefault(),i()&&i()()}function o(e){e.stopPropagation(),e.preventDefault(),n().ontoggle()}function s(e){e.stopPropagation(),e.preventDefault(),cP.expandAuditEntry(t.entry),DF.openConversation(t.entry,e.currentTarget)}var c=jF();let l;var u=M(c),d=M(u),f=e=>{var t=OF(),r=M(t);{let e=O(()=>n().expanded?`chevron-down`:`chevron-right`);G(r,{get name(){return I(e)},class:`audit-thread-expander-svg`})}var i=P(r,2),a=M(i,!0);T(i),T(t),F(()=>{W(t,`aria-expanded`,n().expanded),W(t,`title`,`Session with `+n().count+` requests`),W(t,`aria-label`,`Session with `+n().count+` requests, `+(n().expanded?`collapse`:`expand`)),B(a,n().count)}),L(`click`,t,o),z(e,t)};V(d,e=>{n()&&e(f)});var p=P(d,2),m=M(p,!0);T(p);var h=P(p,2),g=M(h,!0);T(h);var _=P(h,2),v=e=>{var n=kF(),r=M(n,!0);T(n),F(e=>B(r,e),[()=>ps(t.entry)]),z(e,n)};V(_,e=>{(t.entry.requested_model||t.entry.model)&&e(v)});var y=P(_,2),b=M(y,!0);T(y),T(u);var x=P(u,2),S=M(x);xP(S,{get entry(){return t.entry}});var C=P(S,2),w=M(C,!0);T(C);var ee=P(C,2),te=M(ee,!0);T(ee);var ne=P(ee,2),re=e=>{var t=AF();G(M(t),{name:`chevron-right`,class:`audit-conversation-trigger-svg`}),T(t),L(`click`,t,s),z(e,t)},ie=O(()=>DF.canShowConversation(t.entry));V(ne,e=>{I(ie)&&e(re)}),T(x),T(c),F((e,n,i,a,o)=>{l=U(c,1,`audit-entry-summary svelte-17mysgz`,null,l,e),W(c,`aria-expanded`,r()),U(p,1,`audit-status-badge ${n??``}`,`svelte-17mysgz`),B(m,t.entry.status_code||`-`),B(g,t.entry.method||`-`),B(b,t.entry.path||`-`),W(C,`title`,i),B(w,a),B(te,o)},[()=>({"audit-entry-summary-live-in-progress":EN(t.entry)}),()=>TN(t.entry.status_code),()=>ss(t.entry.timestamp),()=>ao.formatTimestamp(t.entry.timestamp),()=>wN(t.entry.duration_ns)]),L(`click`,c,a),z(e,c),D()}Hr([`click`]);var NF=R(``);function PF(e,t){E(t,!0);let n=ya(t,`label`,3,`Copy`),r=ya(t,`copiedLabel`,3,`Copied`),i=ya(t,`errorLabel`,3,``),a=ya(t,`class`,3,`btn`),o=O(()=>t.state.error&&i()?i():t.state.copied?r():n());var s=NF();let c;var l=M(s),u=e=>{G(e,{name:`circle-check`,width:`14`,height:`14`,"stroke-width":`2.5`})},d=e=>{G(e,{name:`copy`,width:`14`,height:`14`})};V(l,e=>{t.state.copied?e(u):e(d,-1)});var f=P(l,2),p=M(f,!0);T(f),T(s),F(()=>{c=U(s,1,Fi([`copy-feedback-btn`,a()]),null,c,{"copy-feedback-btn-copied":t.state.copied}),B(p,I(o))}),L(`click`,s,e=>{e.preventDefault(),t.onclick?.(e)}),z(e,s),D()}Hr([`click`]);var FF=R(`
        Error Message
         
        `),IF=R(`
         
        `),LF=R(` `),RF=R(` streaming`),zF=R(`
        Body
        `),BF=R(`

        `),VF=R(`

        `),HF=R(`

        `),UF=R(`
        `);function WF(e,t){E(t,!0);let n=ej({logPrefix:`Failed to copy audit payload:`}),r=ej({logPrefix:`Failed to copy audit payload:`}),i=O(()=>t.pane&&t.pane.showHeaders?Qo(t.pane.headers):``),a=O(()=>!t.pane||!t.pane.showBody?``:eF(t.pane.body)?aF(t.pane.body):DF.renderBodyWithConversationHighlights(t.pane.entry,t.pane.body,{promptCacheHighlight:t.pane.promptCacheHighlight})),o=O(()=>!!(t.pane&&DF.canShowConversation(t.pane.entry)));function s(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),DF.handleErrorConversationClick(e,t.pane.entry))}var c=UF();let l;var u=M(c),d=e=>{var n=FF(),r=P(M(n),2);let i;var a=M(r,!0);T(r),T(n),F(()=>{i=U(r,1,`audit-json audit-pane-error-message svelte-1h5puht`,null,i,{"audit-pane-clickable-preview":I(o)}),W(r,`role`,I(o)?`button`:null),W(r,`tabindex`,I(o)?0:null),B(a,t.pane.errorMessage)}),L(`mousedown`,r,e=>DF.startBodyInteraction(e)),L(`keydown`,r,s),L(`click`,r,e=>DF.handleErrorConversationClick(e,t.pane.entry)),z(e,n)};V(u,e=>{t.pane.showErrorMessage&&e(d)});var f=P(u,2),p=e=>{var n=IF(),a=M(n),o=M(a),s=M(o,!0);T(o),PF(P(o,2),{get state(){return r},label:`Copy Headers`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>r.copy(t.pane.copyHeaders,Qo)}),T(a);var c=P(a,2),l=M(c,!0);T(c),T(n),F(()=>{B(s,t.pane.headersTitle||`Headers`),B(l,I(i))}),z(e,n)};V(f,e=>{t.pane.showHeaders&&e(p)});var m=P(f,2),h=e=>{var r=zF(),i=M(r),o=M(i),s=P(M(o),2),c=e=>{var n=LF(),r=M(n,!0);T(n),F(()=>B(r,t.pane.bodyCacheRatioLabel)),z(e,n)};V(s,e=>{t.pane.bodyCacheRatioLabel&&e(c)});var l=P(s,2),u=e=>{z(e,RF())};V(l,e=>{t.pane.streaming&&e(u)}),T(o),PF(P(o,2),{get state(){return n},label:`Copy Body`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>n.copy(t.pane.copyBody,Qo)}),T(i);var d=P(i,2);hi(d,()=>I(a),!0),T(d),T(r),L(`mousedown`,d,e=>DF.startBodyInteraction(e)),L(`click`,d,e=>DF.handleBodyConversationClick(e,t.pane.entry)),z(e,r)};V(m,e=>{t.pane.showBody&&e(h)});var g=P(m,2),_=e=>{var n=BF(),r=M(n,!0);T(n),F(()=>B(r,t.pane.emptyMessage)),z(e,n)};V(g,e=>{t.pane.showEmpty&&e(_)});var v=P(g,2),y=e=>{var n=VF(),r=P(M(n),2),i=M(r,!0);T(r),T(n),F(()=>B(i,t.pane.pendingMessage)),z(e,n)};V(v,e=>{t.pane.showPending&&e(y)});var b=P(v,2),x=e=>{var n=HF(),r=M(n,!0);T(n),F(()=>B(r,t.pane.tooLargeMessage)),z(e,n)};V(b,e=>{t.pane.showTooLarge&&e(x)}),T(c),F(()=>l=U(c,1,`audit-pane svelte-1h5puht`,null,l,{"audit-pane-split":t.pane&&t.pane.layout===`split`,"audit-pane-split-single":t.pane&&t.pane.layout===`split`&&!(t.pane.showHeaders&&t.pane.showBody)})),z(e,c),D()}Hr([`mousedown`,`keydown`,`click`]);var GF=R(` `),KF=R(` `),qF=R(` `),JF=R(` `),YF=R(``),XF=R(`
        `),ZF=R(`
        `);function QF(e,t){E(t,!0);let n=ya(t,`panes`,19,()=>[]),r=k(null),i=O(()=>iP(I(r),t.entry,n())),a=e=>`audit-tab-`+t.entry.id+`-`+e,o=e=>`audit-tabpanel-`+t.entry.id+`-`+e;function s(e,t){let i=n().map(e=>e.id),a=aP(e.key,i,t);a!=null&&(e.preventDefault(),((e.currentTarget?.closest?.(`.audit-pane-tablist`))?.querySelectorAll(`.audit-pane-tab`)[i.indexOf(a)])?.focus?.(),A(r,a,!0))}var c=ZF(),l=M(c);H(l,21,n,e=>e.id,(e,t)=>{var n=YF();let c;var l=M(n),u=M(l),d=e=>{G(e,{name:`arrow-right`})},f=e=>{G(e,{name:`arrow-left`})};V(u,e=>{I(t).pane.direction===`request`?e(d):I(t).pane.direction===`response`&&e(f,1)}),T(l);var p=P(l,2),m=M(p,!0);T(p);var h=P(p,2),g=e=>{var n=GF(),r=M(n);T(n),F(()=>B(r,`#${I(t).pane.seq??``}`)),z(e,n)};V(h,e=>{I(t).pane.seq&&e(g)});var _=P(h,2),v=e=>{var n=KF(),r=M(n,!0);T(n),F(()=>{U(n,1,`provider-badge audit-pane-kind audit-pane-kind-${I(t).pane.kind??``}`,`svelte-1bc5vi5`),B(r,I(t).pane.kind)}),z(e,n)};V(_,e=>{I(t).pane.kind&&e(v)});var y=P(_,2);H(y,17,()=>I(t).pane.noChangeSteps||[],e=>e.id,(e,t)=>{var n=qF(),r=M(n,!0);T(n),F(()=>{W(n,`title`,I(t).title),B(r,I(t).label)}),z(e,n)});var b=P(y,2),x=e=>{var n=JF(),r=M(n,!0);T(n),F(()=>B(r,I(t).pane.savingsLabel)),z(e,n)};V(b,e=>{I(t).pane.savingsLabel&&e(x)});var S=P(b,2),C=e=>{var n=KF(),r=M(n,!0);T(n),F(e=>{U(n,1,`audit-status-badge ${e??``}`,`svelte-1bc5vi5`),B(r,I(t).pane.statusCode)},[()=>TN(I(t).pane.statusCode)]),z(e,n)};V(S,e=>{I(t).pane.statusCode&&e(C)}),T(n),F((e,r)=>{c=U(n,1,`audit-pane-tab svelte-1bc5vi5`,null,c,{"audit-pane-tab-active":I(i)===I(t).id}),W(n,`aria-selected`,I(i)===I(t).id),W(n,`id`,e),W(n,`aria-controls`,r),W(n,`tabindex`,I(i)===I(t).id?0:-1),U(l,1,Fi([`audit-pane-icon`,I(t).pane.direction&&`audit-pane-icon-${I(t).pane.direction}`]),`svelte-1bc5vi5`),B(m,I(t).pane.title)},[()=>a(I(t).id),()=>o(I(t).id)]),L(`keydown`,n,e=>s(e,I(t).id)),L(`click`,n,()=>A(r,I(t).id,!0)),z(e,n)}),T(l),H(P(l,2),17,n,e=>e.id,(e,t)=>{var n=XF();let r;WF(M(n),{get pane(){return I(t).pane}}),T(n),F((e,a)=>{W(n,`id`,e),W(n,`aria-labelledby`,a),r=Hi(n,``,r,{display:I(i)===I(t).id?null:`none`})},[()=>o(I(t).id),()=>a(I(t).id)]),z(e,n)}),T(c),z(e,c),D()}Hr([`keydown`,`click`]);var $F=R(`
        `),eI=R(`
        `);function tI(e,t){E(t,!0);let n=ya(t,`thread`,3,null),r=O(()=>cP.isAuditEntryExpanded(t.entry)),i=O(()=>DF.conversationOpen&&String(DF.conversationAnchorID||``)===String(t.entry.id||``)),a=O(()=>I(r)?nP(t.entry,DP):[]),o=O(()=>I(r)?Zj(t.entry,KM.auditEntryWorkflow(t.entry),KM.workflowFeatureCaps()):null);function s(){cP.toggleAuditEntryExpanded(t.entry)}var c=eI();let l;var u=M(c);MF(u,{get entry(){return t.entry},get thread(){return n()},get expanded(){return I(r)},onactivate:s});var d=P(u,2),f=e=>{var n=$F(),r=M(n),i=e=>{pj(e,{get chart(){return I(o)}})};V(r,e=>{I(o)&&e(i)});var s=P(r,2);QF(s,{get entry(){return t.entry},get panes(){return I(a)}}),vP(P(s,2),{get entry(){return t.entry}}),T(n),ki(3,n,()=>Bo,()=>({y:-6,duration:WM(150)})),z(e,n)};V(d,e=>{I(r)&&e(f)}),T(c),F(()=>l=U(c,1,`audit-entry svelte-cmjgwr`,null,l,{"audit-entry-interactions-open":I(i)})),z(e,c),D()}var nI=R(`
        `),rI=R(`
        `),iI=R(`

        `),aI=R(`
        `),oI=R(`
        `);function sI(e,t){E(t,!0);let n=O(()=>cN(t.entry)),r=O(()=>cP.isThreadExpanded(I(n))),i=O(()=>cP.threadChildren(I(n))),a=O(()=>I(i)&&!I(i).loading&&Number(I(i).total||0)>I(i).entries.length+1);var o=Qr(),s=N(o),c=e=>{tI(e,{get entry(){return t.entry}})},l=O(()=>!uN(t.entry)),u=e=>{var n=oI(),o=M(n);{let e=O(()=>({count:lN(t.entry),expanded:I(r),ontoggle:()=>cP.toggleThread(t.entry)}));tI(o,{get entry(){return t.entry},get thread(){return I(e)}})}var s=P(o,2),c=e=>{var t=aI(),n=M(t),r=e=>{var t=nI();px(M(t),{size:14,label:`Loading session requests`}),T(t),z(e,t)};V(n,e=>{I(i)&&I(i).loading&&e(r)});var o=P(n,2);H(o,17,()=>I(i)&&I(i).entries||[],e=>e.id,(e,t)=>{var n=rI();tI(M(n),{get entry(){return I(t)}}),T(n),z(e,n)});var s=P(o,2),c=e=>{var t=iI(),n=M(t);T(t),F(()=>B(n,`Showing the latest ${I(i).entries.length+1} of ${I(i).total??``} - requests in this session.`)),z(e,t)};V(s,e=>{I(a)&&e(c)}),T(t),ki(3,t,()=>Vo,()=>({duration:WM(150)})),z(e,t)};V(s,e=>{I(r)&&e(c)}),T(n),z(e,n)};V(s,e=>{I(l)?e(c):e(u,-1)}),z(e,o),D()}var cI=R(`
         
        `),lI=R(`
         
        `),uI=R(`
        `),dI=R(`
        `),fI=R(`
        `,1),pI=R(`
        `);function mI(e,t){E(t,!0);let n=O(()=>t.msg.role===`function_call`||t.msg.role===`function_result`);function r(e){return e.role===`function_call`?(e.toolCalls||[]).map(e=>e.name+`()`).join(`, `):(e.functionName?e.functionName+`: `:``)+e.text}var i=pI(),a=M(i),o=e=>{var n=cI(),i=M(n),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(i);var l=P(i,2),u=M(l,!0);T(l),T(n),F((e,n)=>{B(o,t.msg.roleLabel),B(c,e),B(u,n)},[()=>r(t.msg),()=>yF(t.msg)]),z(e,n)},s=e=>{var n=fI(),r=N(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(r);var c=P(r,2),l=e=>{var n=lI(),r=M(n,!0);T(n),F(()=>B(r,t.msg.text)),z(e,n)};V(c,e=>{t.msg.text&&e(l)});var u=P(c,2),d=e=>{var n=dI();H(n,23,()=>t.msg.toolCalls,(e,t)=>e.name+`-`+t,(e,t)=>{var n=uI(),r=M(n),i=M(r,!0);T(r),T(n),F(()=>B(i,I(t).name+`()`)),z(e,n)}),T(n),z(e,n)};V(u,e=>{t.msg.toolCalls&&e(d)}),F(e=>{B(a,t.msg.roleLabel),B(s,e)},[()=>ao.formatTimestamp(t.msg.timestamp)]),z(e,n)};V(a,e=>{I(n)?e(o):e(s,-1)}),T(i),F(()=>{U(i,1,Fi([I(n)?`chat-function-note`:`chat-message`,t.msg.roleClass,{"is-anchor":t.msg.isAnchor,"is-after-anchor":t.msg.isAfterAnchor}]),`svelte-12s99s5`),W(i,`data-conversation-anchor`,t.msg.isAnchor?`true`:void 0),W(i,`data-entry-id`,t.msg.entryID)}),z(e,i),D()}var hI=R(``),gI=R(`
        `),_I=R(`

        Loading interactions...

        `),vI=R(`

        No interaction data available for this entry.

        `),yI=R(`
        `),bI=R(`

        Showing the newest part of this session and the selected log.

        `),xI=R(`
        `),SI=R(``),CI=R(`
        `),wI=R(``),TI=R(`

        Interactions

        `,1);function EI(e,t){E(t,!0);let n=DF;An(()=>{if(!n.conversationOpen)return;let e=Er(()=>Aa.opened()),t=e=>{e.key===`Escape`&&Aa.openCount<=1&&n.closeConversation()};return window.addEventListener(`keydown`,t),()=>{Aa.closed(e),window.removeEventListener(`keydown`,t)}});var r=TI(),i=N(r),a=e=>{var t=hI();L(`click`,t,()=>n.closeConversation()),z(e,t)};V(i,e=>{n.conversationOpen&&e(a)});var o=P(i,2);let s;var c=M(o);wo(P(M(c),2),{label:`Close interactions`,onclick:()=>n.closeConversation(),get el(){return n.conversationCloseBtnEl},set el(e){n.conversationCloseBtnEl=e}}),T(c);var l=P(c,2),u=M(l),d=e=>{var t=gI(),r=M(t,!0);T(t),F(()=>B(r,n.conversationError)),z(e,t)};V(u,e=>{n.conversationError&&e(d)});var f=P(u,2),p=e=>{z(e,_I())};V(f,e=>{n.conversationLoading&&e(p)});var m=P(f,2),h=e=>{z(e,vI())},g=O(()=>!n.conversationLoading&&!n.followUpSending&&!n.conversationError&&n.conversationMessages.length===0&&!n.conversationLiveWaiting());V(m,e=>{I(g)&&e(h)});var _=P(m,2),v=e=>{var t=yI();H(t,21,()=>n.conversationMessages,e=>e.uid,(e,t)=>{mI(e,{get msg(){return I(t)}})}),T(t),ga(t,e=>n.conversationThreadEl=e,()=>n?.conversationThreadEl),z(e,t)};V(_,e=>{n.conversationMessages.length>0&&e(v)});var y=P(_,2),b=e=>{z(e,bI())};V(y,e=>{n.conversationTruncated&&e(b)});var x=P(y,2),S=e=>{var t=xI(),r=P(M(t),2),i=M(r,!0);T(r),T(t),F(e=>B(i,e),[()=>n.conversationLiveStatusText()]),z(e,t)},C=O(()=>n.conversationLiveWaiting());V(x,e=>{I(C)&&e(S)}),T(l);var w=P(l,2),ee=e=>{var t=wI(),r=M(t),i=e=>{var t=CI(),r=P(M(t),2);ft(r);var i=P(r,2),a=e=>{var t=SI(),r=M(t,!0);T(t),F(()=>B(r,n.followUpError)),z(e,t)};V(i,e=>{n.followUpError&&e(a)});var o=P(i,2),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=M(l,!0);T(l),T(o),T(t),F((e,t,i)=>{r.disabled=e,B(c,t),l.disabled=i,B(u,n.followUpSending?`Sending…`:`Send`)},[()=>n.followUpSending||n.conversationLiveWaiting(),()=>n.selectedConversationEntry()?.path||``,()=>!n.canSendFollowUp()]),Vr(`submit`,t,e=>{e.preventDefault(),n.sendFollowUp()}),da(r,()=>n.followUpText,e=>n.followUpText=e),z(e,t)},a=O(()=>n.followUpKind());V(r,e=>{I(a)&&e(i)});var o=P(r,2),s=M(o,!0);T(o),T(t),F(()=>B(s,n.conversationFollowLatest?`Following latest interaction`:`Opened from log: `+n.conversationOpenedFromID)),z(e,t)};V(w,e=>{n.conversationAnchorID&&e(ee)}),T(o),ga(o,e=>n.conversationDialogEl=e,()=>n?.conversationDialogEl),F(()=>{s=U(o,1,`conversation-drawer`,null,s,{open:n.conversationOpen}),W(o,`aria-hidden`,!n.conversationOpen)}),z(e,r),D()}Hr([`click`]);var DI=R(`

        .

        `),OI=R(`
        Audit logging is off. Live entries are temporary and disappear after - refresh. Set LOGGING_ENABLED=true to persist them.
        `),kI=R(`

        `),AI=R(`
        `),jI=R(`
        `),MI=R(`
        `),NI=R(`
        `),PI=R(`
        `);function FI(e,t){E(t,!0);let n=O(()=>_o.config&&_o.config.LOGGING_RETENTION_DAYS);An(()=>{if(K.refreshTick,Ha.page===`audit-logs`)return Er(()=>r())});function r(){let e=!1;return(async()=>{try{await _o.ensureLoaded()}finally{await cP.fetchAuditLog(!0),!e&&_o.liveLogsVisible()&&hS.ensureLiveLogs()}})(),()=>{e=!0,hS.stopLiveLogs()}}var i=PI(),a=M(i),o=M(a),s=P(M(o),2),c=e=>{Rx(e,{copyId:`audit-retention-help-copy`,label:`retention help`,text:`If you want to change the retention period, set LOGGING_RETENTION_DAYS (env var) or logging.retention_days (config.yaml) and restart the gateway. Default is 30 days; 0 keeps audit logs forever.`,title:e=>{var t=DI(),r=M(t,!0),i=P(r),a=M(i,!0);T(i),Ue(),T(t),F((e,t)=>{B(r,e),B(a,t)},[()=>iN(I(n)),()=>aN(I(n))]),z(e,t)},$$slots:{title:!0}})},l=O(()=>rN(I(n)));V(s,e=>{I(l)&&e(c)}),T(o),T(a);var u=P(a,2);Js(M(u),{onchange:()=>cP.fetchAuditLog(!0)}),T(u);var d=P(u,2);Os(d,{});var f=P(d,2),p=e=>{z(e,OI())},m=O(()=>_o.loaded&&!_o.auditVisible()&&!K.needsAuth);V(f,e=>{I(m)&&e(p)});var h=P(f,2),g=M(h);uP(g,{});var _=P(g,2),v=M(_),y=M(v),b=e=>{var t=kI(),n=M(t);T(t),F(e=>B(n,`Showing ${cP.auditLog.offset+1}-${e??``} of ${cP.auditLog.total??``} - ${cP.auditGroupSessions?`sessions`:`logs`}`),[()=>Math.min(cP.auditLog.offset+cP.auditLog.limit,cP.auditLog.total)]),z(e,t)};V(y,e=>{cP.auditLog.total>0&&e(b)});var x=P(y,2),S=M(x);na(S),Ue(2),T(x),T(v),hP(P(v,2),{}),T(_);var C=P(_,2),w=e=>{var t=AI();px(M(t),{size:18,label:`Loading audit logs`}),T(t),z(e,t)},ee=e=>{var t=MI();H(t,29,()=>cP.auditLog.entries,e=>e.id,(e,t)=>{var n=jI(),r=M(n),i=e=>{sI(e,{get entry(){return I(t)}})},a=e=>{tI(e,{get entry(){return I(t)}})};V(r,e=>{cP.auditGroupSessions?e(i):e(a,-1)}),T(n),Oi(n,()=>BM,()=>({duration:WM(150)})),ki(1,n,()=>GM,()=>({live:I(t)._live})),z(e,n)}),T(t),z(e,t)};V(C,e=>{cP.loading&&cP.auditLog.entries.length===0?e(w):cP.auditLog.entries.length>0&&e(ee,1)});var te=P(C,2),ne=e=>{var t=NI();gx(M(t),{}),T(t),z(e,t)};V(te,e=>{cP.auditLog.entries.length===0&&!cP.loading&&!K.needsAuth&&e(ne)}),jC(P(te,2),{get total(){return cP.auditLog.total},get offset(){return cP.auditLog.offset},get limit(){return cP.auditLog.limit},onprev:()=>cP.auditLogPrevPage(),onnext:()=>cP.auditLogNextPage()}),T(h),EI(P(h,2),{}),T(i),F(()=>ia(S,cP.auditGroupSessions)),L(`change`,S,()=>cP.toggleAuditGroupSessions()),z(e,i),D()}Hr([`change`]);function II(e){try{let t=JSON.parse(JSON.stringify(e||{}));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function LI(e){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(e=>e):e==null?[]:String(e).split(`,`).map(e=>e.trim()).filter(e=>e)}function RI(e,t){let n=String(t||``).trim();return(e||[]).find(e=>String(e&&e.type||``).trim()===n)||null}function zI(e){return Array.isArray(e)&&e.length>0&&String(e[0].type||``).trim()||`system_prompt`}function BI(e,t){let n=String(t||``).trim();return n&&RI(e,n)?n:zI(e)}function VI(e,t){let n=RI(e,t);return!n||!n.defaults?{}:II(n.defaults)}function HI(e,t,n){return{...VI(e,n),...II(t)}}function UI(e,t){let n=BI(e,t);return{name:``,type:n,description:``,user_path:``,config:VI(e,n)}}function WI(e,t){if(!t)return e||[];let n=String(t).toLowerCase();return(e||[]).filter(e=>[e.name,e.type,e.user_path,e.description,e.summary].some(e=>String(e||``).toLowerCase().includes(n)))}function GI(e,t){let n=RI(e,t);return n&&n.label?n.label:t||`Unknown`}function KI(e,t){let n=RI(e,t);return Array.isArray(n&&n.fields)?n.fields:[]}function qI(e,t){if(!t||!e)return t&&t.input===`checkboxes`?[]:``;let n=e[t.key];return n==null?t.input===`checkboxes`?[]:``:t.input===`checkboxes`?LI(n):n}function JI(e,t,n){if(!t)return e;let r=II(e);if(t.input===`number`){let e=String(n||``).trim();if(e===``)delete r[t.key];else{let n=Number(e);r[t.key]=Number.isFinite(n)?n:e}}else t.input===`checkboxes`?r[t.key]=LI(n):r[t.key]=n;return r}function YI(e,t,n){return qI(e,t).includes(String(n||``).trim())}function XI(e,t,n,r){let i=LI(qI(e,t)),a=String(n||``).trim();return a?JI(e,t,r?Array.from(new Set([...i,a])):i.filter(e=>e!==a)):e}function ZI(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),description:String(e&&e.description||``).trim()||void 0,user_path:String(e&&e.user_path||``).trim()||void 0,config:II(e&&e.config)}}var QI=new class{#e=k(j([]));get guardrails(){return I(this.#e)}set guardrails(e){A(this.#e,e,!0)}#t=k(j([]));get types(){return I(this.#t)}set types(e){A(this.#t,e,!0)}#n=k(!0);get available(){return I(this.#n)}set available(e){A(this.#n,e,!0)}#r=k(!1);get loading(){return I(this.#r)}set loading(e){A(this.#r,e,!0)}#i=k(!1);get typesLoading(){return I(this.#i)}set typesLoading(e){A(this.#i,e,!0)}#a=k(``);get error(){return I(this.#a)}set error(e){A(this.#a,e,!0)}#o=k(``);get filter(){return I(this.#o)}set filter(e){A(this.#o,e,!0)}#s=k(!1);get formOpen(){return I(this.#s)}set formOpen(e){A(this.#s,e,!0)}#c=k(!1);get formSubmitting(){return I(this.#c)}set formSubmitting(e){A(this.#c,e,!0)}#l=k(``);get deletingName(){return I(this.#l)}set deletingName(e){A(this.#l,e,!0)}#u=k(`create`);get formMode(){return I(this.#u)}set formMode(e){A(this.#u,e,!0)}#d=k(``);get formOriginalName(){return I(this.#d)}set formOriginalName(e){A(this.#d,e,!0)}#f=k(j({name:``,type:``,description:``,user_path:``,config:{}}));get form(){return I(this.#f)}set form(e){A(this.#f,e,!0)}get filtered(){return WI(this.guardrails,this.filter)}typeLabel(e){return GI(this.types,e)}typeFields(e){return KI(this.types,e)}fieldValue(e){return qI(this.form&&this.form.config,e)}setFieldValue(e,t){this.form={...this.form,config:JI(this.form.config,e,t)}}arrayFieldSelected(e,t){return YI(this.form&&this.form.config,e,t)}toggleArrayFieldValue(e,t,n){this.form={...this.form,config:XI(this.form.config,e,t,n)}}openCreate(){this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=UI(this.types,zI(this.types)),this.formOpen=!0}openEdit(e){let t=BI(this.types,e&&e.type);this.formMode=`edit`,this.formOriginalName=String(e&&e.name||``).trim(),this.error=``,this.form={name:this.formOriginalName,type:t,description:String(e&&e.description||``).trim(),user_path:String(e&&e.user_path||``).trim(),config:HI(this.types,e&&e.config,t)},this.formOpen=!0}closeForm(){this.formOpen=!1,this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=UI(this.types,zI(this.types))}changeType(e){let t=BI(this.types,e);this.form={...this.form,type:t,config:VI(this.types,t)}}async fetchTypes(){this.typesLoading=!0;try{let e=await ew(`/admin/guardrails/types`,{label:`guardrail types`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.types=[];return}if(e.result&&(this.available=!0),this.types=e.items,e.status===`error`){this.error=e.error;return}let t=BI(this.types,this.form.type);this.form={...this.form,type:t,config:HI(this.types,this.form.config,t)}}finally{this.typesLoading=!1}}async fetchGuardrails(){this.loading=!0,this.error=``;try{let e=await ew(`/admin/guardrails`,{label:`guardrails`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.guardrails=[];return}e.result&&(this.available=!0),this.guardrails=e.items,this.error=e.error}finally{this.loading=!1}}async fetchPage(){await Promise.all([this.fetchTypes(),this.fetchGuardrails()])}async submitForm(){let e=String(this.form.name||``).trim(),t=String(this.form.type||``).trim();if(!e){this.error=`Name is required.`;return}if(!t){this.error=`Type is required.`;return}this.error=``,this.formSubmitting=!0;let n=ZI(this.form);try{let t=await tw(`/admin/guardrails`,`PUT`,n,{label:`save guardrail`,errorFallback:`Failed to save guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}q.success(`Guardrail "`+e+`" saved.`),this.closeForm(),this.fetchGuardrails()}finally{this.formSubmitting=!1}}async deleteGuardrail(e){let t=String(e&&e.name||``).trim();if(!(!t||this.deletingName)&&window.confirm(`Delete guardrail "`+t+`"? Workflows that still reference it must be updated first.`)){this.deletingName=t;try{let e=await tw(`/admin/guardrails`,`DELETE`,{name:t},{label:`delete guardrail`,errorFallback:`Failed to delete guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,q.error(e.error);return}if(e.status===`error`){q.error(e.error);return}q.success(`Guardrail "`+t+`" deleted.`),this.formOpen&&this.formOriginalName===t&&this.closeForm(),this.fetchGuardrails()}finally{this.deletingName=``}}}},$I=R(`
        `),eL=R(`

        Loading guardrails...

        `),tL=R(`
        `),nL=R(`
        `),rL=R(`
        NameTypeUser PathSummaryActions
        `),iL=R(`

        No guardrails defined yet.

        `),aL=R(`

        Instances

        Each instance has a reusable name, a type, an optional user path for - future UI visibility scoping, and a JSON-backed config payload for - that type.

        `);function oL(e,t){E(t,!0);var n=aL(),r=M(n),i=P(M(r),2);G(M(i),{name:`plus`,class:`form-action-icon`}),Ue(2),T(i),T(r);var a=P(r,2),o=e=>{var t=$I(),n=M(t);nC(M(n),{id:`guardrail-filter`,placeholder:`Filter by name, type, user path, summary...`,label:`Guardrail filter`,get value(){return QI.filter},set value(e){QI.filter=e}}),T(n),T(t),z(e,t)};V(a,e=>{QI.available&&e(o)});var s=P(a,2),c=e=>{var t=eL();px(M(t),{size:16,label:`Loading guardrails`}),Ue(),T(t),z(e,t)};V(s,e=>{QI.loading&&QI.filtered.length===0&&e(c)});var l=P(s,2),u=e=>{var t=rL(),n=M(t),r=P(M(n));H(r,21,()=>QI.filtered,e=>e.name,(e,t)=>{var n=nL(),r=M(n),i=M(r,!0);T(r);var a=P(r),o=M(a),s=M(o,!0);T(o),T(a);var c=P(a),l=M(c,!0);T(c);var u=P(c),d=M(u),f=M(d,!0);T(d);var p=P(d,2),m=e=>{var n=tL(),r=M(n,!0);T(n),F(()=>B(r,I(t).description)),z(e,n)};V(p,e=>{I(t).description&&e(m)}),T(u);var h=P(u),g=M(h),_=M(g);{let e=O(()=>`Edit guardrail `+I(t).name);$C(_,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>QI.openEdit(I(t)),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}var v=P(_,2);{let e=O(()=>(QI.deletingName===I(t).name?`Deleting guardrail `:`Delete guardrail `)+I(t).name),n=O(()=>QI.deletingName===I(t).name);$C(v,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>QI.deleteGuardrail(I(t)),get disabled(){return I(n)},children:(e,t)=>{G(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}T(g),T(h),T(n),F(e=>{B(i,I(t).name),B(s,e),B(l,I(t).user_path||`—`),B(f,I(t).summary||I(t).description||`No summary yet.`)},[()=>QI.typeLabel(I(t).type)]),z(e,n)}),T(r),T(n),T(t),z(e,t)};V(l,e=>{QI.filtered.length>0&&e(u)});var d=P(l,2),f=e=>{z(e,iL())};V(d,e=>{QI.filtered.length===0&&!QI.loading&&QI.available&&!QI.error&&!K.authError&&e(f)}),T(n),F(()=>i.disabled=QI.typesLoading||QI.formSubmitting||!QI.available),L(`click`,i,()=>QI.openCreate()),z(e,n),D()}Hr([`click`]);var sL=R(`

        Workflows reference these names directly, so renames are - intentionally avoided after creation.

        `),cL=R(``),lL=R(``),uL=R(``),dL=R(``),fL=R(``),pL=R(``),mL=R(``),hL=R(``),gL=R(``),_L=R(`
        `),vL=R(``),yL=R(` `),bL=R(`
        `),xL=R(`
        `);function SL(e,t){E(t,!0);let n=O(()=>QI.formMode===`edit`);{let t=e=>{z(e,sL())},r=O(()=>I(n)?`Edit Guardrail`:`Create Guardrail`);rT(e,{get open(){return QI.formOpen},get title(){return I(r)},ariaLabel:`Guardrail editor`,get error(){return QI.error},get submitting(){return QI.formSubmitting},submitLabel:`Save Guardrail`,dialogClass:`settings-guardrails-editor guardrails-editor-wide`,onclose:()=>QI.closeForm(),onsubmit:()=>QI.submitForm(),headerHint:t,children:(e,t)=>{var r=xL(),i=M(r);aT(i,{id:`guardrail-name`,label:`Name`,children:(e,t)=>{var r=cL();na(r),F(()=>{r.disabled=I(n),W(r,`data-modal-autofocus`,!I(n)||void 0)}),da(r,()=>QI.form.name,e=>QI.form.name=e),z(e,r)},$$slots:{default:!0}});var a=P(i,2);aT(a,{id:`guardrail-type`,label:`Type`,children:(e,t)=>{var r=uL();H(r,21,()=>QI.types,e=>e.type,(e,t)=>{var n=lL(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).type)&&(n.value=(n.__value=I(t).type)??``)}),z(e,n)}),T(r);var i;Wi(r),F(()=>{r.disabled=I(n),i!==(i=QI.form.type)&&(r.value=(r.__value=QI.form.type)??``,Ui(r,QI.form.type))}),L(`change`,r,e=>QI.changeType(e.currentTarget.value)),z(e,r)},$$slots:{default:!0}});var o=P(a,2);aT(o,{id:`guardrail-description`,label:`Description`,children:(e,t)=>{var r=dL();na(r),F(()=>W(r,`data-modal-autofocus`,I(n)?!0:void 0)),da(r,()=>QI.form.description,e=>QI.form.description=e),z(e,r)},$$slots:{default:!0}});var s=P(o,2),c=M(s);Rx(c,{copyId:`guardrail-user-path-help-copy`,label:`guardrail user path help`,text:`Only used for auxiliary rewrite (llm_based_altering) guardrails; ignored for other guardrail types.`,title:e=>{z(e,fL())},$$slots:{title:!0}});var l=P(c,2);na(l),T(s),H(P(s,2),17,()=>QI.typeFields(QI.form.type),e=>e.key,(e,t)=>{var n=Qr(),r=N(n),i=e=>{var n=_L(),r=M(n);{let e=e=>{var n=pL(),r=M(n,!0);T(n),F(()=>{W(n,`for`,`guardrail-field-`+I(t).key),B(r,I(t).label)}),z(e,n)},n=O(()=>`guardrail-field-help-`+I(t).key),i=O(()=>I(t).label+` help`),a=O(()=>I(t).help||``);Rx(r,{get copyId(){return I(n)},get label(){return I(i)},get text(){return I(a)},title:e,$$slots:{title:!0}})}var i=P(r,2),a=e=>{var n=mL();H(n,21,()=>I(t).options||[],e=>e.value,(e,t)=>{var n=lL(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n);var r;Wi(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0),r!==(r=e)&&(n.value=(n.__value=e)??``,Ui(n,e))},[()=>QI.fieldValue(I(t))]),L(`change`,n,e=>QI.setFieldValue(I(t),e.currentTarget.value)),z(e,n)},o=e=>{var n=hL();ft(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`placeholder`,I(t).placeholder||``),ra(n,e),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0)},[()=>QI.fieldValue(I(t))]),L(`input`,n,e=>QI.setFieldValue(I(t),e.currentTarget.value)),z(e,n)},s=e=>{var n=gL();na(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`type`,I(t).input||`text`),W(n,`placeholder`,I(t).placeholder||``),ra(n,e),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0)},[()=>QI.fieldValue(I(t))]),L(`input`,n,e=>QI.setFieldValue(I(t),e.currentTarget.value)),z(e,n)};V(i,e=>{I(t).input===`select`?e(a):I(t).input===`textarea`?e(o,1):e(s,-1)}),T(n),z(e,n)},a=e=>{var n=bL(),r=M(n),i=M(r,!0);T(r);var a=P(r,2);H(a,21,()=>I(t).options||[],e=>I(t).key+`-`+e.value,(e,n)=>{var r=vL(),i=M(r);na(i);var a=P(i,2),o=M(a,!0);T(a),T(r),F(e=>{ia(i,e),B(o,I(n).label)},[()=>QI.arrayFieldSelected(I(t),I(n).value)]),L(`change`,i,e=>QI.toggleArrayFieldValue(I(t),I(n).value,e.currentTarget.checked)),z(e,r)}),T(a);var o=P(a,2),s=e=>{var n=yL(),r=M(n,!0);T(n),F(()=>{W(n,`id`,`guardrail-field-help-`+I(t).key),B(r,I(t).help)}),z(e,n)};V(o,e=>{I(t).help&&e(s)}),T(n),F(()=>{W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0),B(i,I(t).label)}),z(e,n)};V(r,e=>{I(t).input===`checkboxes`?e(a,-1):e(i)}),z(e,n)}),T(r),da(l,()=>QI.form.user_path,e=>QI.form.user_path=e),z(e,r)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`change`,`input`]);var CL=R(`

        Guardrails

        `),wL=R(`
        Runtime guardrail execution is currently off because GUARDRAILS_ENABLED is disabled. You can still manage - definitions here.
        `),TL=R(`
        Guardrails feature is unavailable.
        `),EL=R(`
        `),DL=R(`

        Reusable Policy Objects

        Guardrail Library

        Store guardrails in the database, keep them hot in memory, and attach - them to workflows by reference.

        Instances
        Types
        `);function OL(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`guardrails`&&(_o.ensureLoaded(),QI.fetchPage())});var n=DL(),r=M(n),i=M(r);Rx(M(i),{copyId:`guardrails-help-copy`,label:`guardrails help`,text:`Reusable policy objects stored in the database and kept hot in memory for workflow execution.`,title:e=>{z(e,CL())},$$slots:{title:!0}}),T(i),T(r);var a=P(r,2),o=P(M(a),2),s=M(o),c=P(M(s),2),l=M(c,!0);T(c),T(s);var u=P(s,2),d=P(M(u),2),f=M(d,!0);T(d),T(u),T(o),T(a);var p=P(a,2);Os(p,{});var m=P(p,2),h=e=>{z(e,wL())},g=O(()=>!_o.guardrailsVisible());V(m,e=>{I(g)&&e(h)});var _=P(m,2),v=e=>{z(e,TL())};V(_,e=>{!K.authError&&!QI.available&&e(v)});var y=P(_,2),b=e=>{var t=EL(),n=M(t,!0);T(t),F(()=>B(n,QI.error)),z(e,t)};V(y,e=>{!K.authError&&QI.error&&!QI.formOpen&&e(b)});var x=P(y,2);SL(x,{}),oL(P(x,2),{}),T(n),F((e,t)=>{B(l,e),B(f,t)},[()=>$o(QI.guardrails.length),()=>$o(QI.types.length)]),z(e,n),D()}var Q=new class{#e=k(j([]));get servers(){return I(this.#e)}set servers(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get formSubmitting(){return I(this.#o)}set formSubmitting(e){A(this.#o,e,!0)}#s=k(`create`);get formMode(){return I(this.#s)}set formMode(e){A(this.#s,e,!0)}#c=k(!1);get slugEdited(){return I(this.#c)}set slugEdited(e){A(this.#c,e,!0)}#l=k(!1);get advancedOpen(){return I(this.#l)}set advancedOpen(e){A(this.#l,e,!0)}#u=k(j(nb()));get form(){return I(this.#u)}set form(e){A(this.#u,e,!0)}#d=k(``);get deletingName(){return I(this.#d)}set deletingName(e){A(this.#d,e,!0)}#f=k(``);get reconnectingName(){return I(this.#f)}set reconnectingName(e){A(this.#f,e,!0)}#p=k(!1);get catalogOpen(){return I(this.#p)}set catalogOpen(e){A(this.#p,e,!0)}#m=k(!1);get catalogLoading(){return I(this.#m)}set catalogLoading(e){A(this.#m,e,!0)}#h=k(``);get catalogError(){return I(this.#h)}set catalogError(e){A(this.#h,e,!0)}#g=k(j(rb()));get catalog(){return I(this.#g)}set catalog(e){A(this.#g,e,!0)}#_=O(()=>mb(this.servers,this.filter));get filtered(){return I(this.#_)}set filtered(e){A(this.#_,e)}async fetchServers(){if(await _o.ensureLoaded(),!_o.mcpVisible()){this.available=!1,this.servers=[],this.error=``,this.loading=!1;return}this.loading=!0,this.error=``;try{let e=await ew(`/admin/mcp-servers`,{label:`mcp servers`,errorFallback:`Failed to load MCP servers.`,unavailableStatuses:[503,404]});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.servers=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.servers=[],this.error=e.error;return}this.available=!0,this.servers=e.items}finally{this.loading=!1}}openCreate(){this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=nb(),this.formOpen=!0}openEdit(e){!e||e.managed||(this.formMode=`edit`,this.slugEdited=!0,this.advancedOpen=!1,this.error=``,this.form=hb(e),this.formOpen=!0)}closeForm(){this.formOpen=!1,this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=nb()}syncSlugFromName(){this.formMode===`create`&&!this.slugEdited&&(this.form.slug=ub(this.form.name))}markSlugEdited(){this.formMode===`create`&&(this.slugEdited=!0)}addHeader(){this.form.headers.push({name:``,value:``})}removeHeader(e){this.form.headers.splice(e,1)}async submitForm(){let e=gb(this.form,this.formMode,this.servers);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await tw(`/admin/mcp-servers`,`PUT`,e.payload,{label:`save mcp server`,errorFallback:`Failed to save MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}q.success(`MCP server "`+e.payload.name+`" saved.`),this.closeForm(),this.fetchServers()}finally{this.formSubmitting=!1}}async deleteServer(e){let t=String(e&&e.name||``).trim(),n=ib(e);if(!(!n||this.deletingName||e&&e.managed)&&confirm(`Delete MCP server "`+t+`"? Clients lose access to its tools immediately.`)){this.deletingName=n;try{let e=await tw(`/admin/mcp-servers/`+encodeURIComponent(n),`DELETE`,void 0,{label:`delete mcp server`,errorFallback:`Failed to delete MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,q.error(e.error);return}if(e.status===`error`){q.error(e.error);return}q.success(`MCP server "`+t+`" deleted.`),this.formOpen&&this.form.slug===n&&this.closeForm(),this.fetchServers()}finally{this.deletingName=``}}}async reconnectServer(e){let t=String(e&&e.name||``).trim(),n=ib(e);if(!(!n||this.reconnectingName)){this.reconnectingName=n;try{let e=await tw(`/admin/mcp-servers/`+encodeURIComponent(n)+`/reconnect`,`POST`,void 0,{label:`reconnect mcp server`,errorFallback:`Failed to reconnect MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,q.error(e.error);return}if(e.status===`error`){q.error(e.error);return}let r=e.result.data,i=ab(r);i===`connected`?q.success(`MCP server "`+t+`" reconnected.`):i===`disabled`?q.success(`MCP server "`+t+`" is disabled; no connection was attempted.`):q.error(`Reconnect attempted, but MCP server "`+t+`" is still `+i+`.`),r&&r.name?this.servers=(this.servers||[]).map(e=>ib(e)===ib(r)?r:e):this.fetchServers()}finally{this.reconnectingName=``}}}async openCatalog(e){let t=String(e&&e.name||``).trim(),n=ib(e);if(n){this.catalogOpen=!0,this.catalogLoading=!0,this.catalogError=``,this.catalog={...rb(),server:n,status:ab(e)};try{let e=await fo(`/admin/mcp-servers/`+encodeURIComponent(n)+`/catalog`,{label:`mcp server catalog`});if(e.stale)return;if(e.status===503){this.available=!1,this.catalogError=`MCP server management is unavailable.`;return}if(e.status===404){this.catalogError=`MCP server "`+t+`" was not found.`;return}if(!e.ok){this.catalogError=e.status===401?`Authentication required.`:oo(e.data,`Failed to load MCP server catalog.`);return}this.catalog=_b(n,e.data)}catch(e){console.error(`Failed to load MCP server catalog:`,e),this.catalogError=`Failed to load MCP server catalog.`}finally{this.catalogLoading=!1}}}closeCatalog(){this.catalogOpen=!1,this.catalogLoading=!1,this.catalogError=``,this.catalog=rb()}},kL=R(``),AL=R(`

        `),jL=R(`
        `),ML=R(`

        `),NL=R(`
      • `),PL=R(`

          `),FL=R(`

          No tools listed — the server may still be connecting or degraded.

          `),IL=R(` `,1),LL=R(``);function RL(e,t){E(t,!0);let n=O(()=>yb(Q.catalog));Eo(e,{get open(){return Q.catalogOpen},variant:`editor`,onclose:()=>Q.closeCatalog(),children:(e,t)=>{var r=LL(),i=M(r),a=M(i),o=P(M(a),2),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=M(l,!0);T(l),T(o),T(a),wo(P(a,2),{label:`Close MCP server catalog`,onclick:()=>Q.closeCatalog()}),T(i);var d=P(i,2),f=e=>{ZC(e,{label:`Loading catalog...`})},p=e=>{var t=kL(),n=M(t,!0);T(t),F(()=>B(n,Q.catalogError)),z(e,t)},m=e=>{var t=IL(),r=N(t),i=e=>{var t=AL(),n=M(t,!0);T(t),F(()=>B(n,Q.catalog.instructions)),z(e,t)};V(r,e=>{Q.catalog.instructions&&e(i)});var a=P(r,2);H(a,17,()=>I(n),e=>e.key,(e,t)=>{var n=PL(),r=M(n),i=M(r,!0);T(r);var a=P(r,2);H(a,21,()=>I(t).items,e=>e.key,(e,t)=>{var n=NL(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{var n=jL(),r=M(n,!0);T(n),F(()=>{W(n,`title`,`Exposed on the aggregated /mcp endpoint as `+I(t).aggregated),B(r,I(t).aggregated)}),z(e,n)};V(a,e=>{I(t).aggregated&&e(o)});var s=P(a,2),c=e=>{var n=ML(),r=M(n,!0);T(n),F(()=>B(r,I(t).description)),z(e,n)};V(s,e=>{I(t).description&&e(c)}),T(n),F(()=>{W(r,`title`,I(t).aggregated||I(t).name),B(i,I(t).name)}),z(e,n)}),T(a),T(n),F(()=>B(i,I(t).title)),z(e,n)});var o=P(a,2),s=e=>{z(e,FL())},c=O(()=>bb(Q.catalog));V(o,e=>{I(c)&&e(s)}),z(e,t)};V(d,e=>{Q.catalogLoading?e(f):Q.catalogError?e(p,1):e(m,-1)});var h=P(d,2),g=M(h);T(h),T(r),F((e,t)=>{B(c,Q.catalog.server),U(l,1,`audit-status-badge ${e??``}`,`svelte-1xqrzco`),B(u,t)},[()=>ob(Q.catalog),()=>ab(Q.catalog)]),L(`click`,g,()=>Q.closeCatalog()),z(e,r)},$$slots:{default:!0}}),D()}Hr([`click`]);var zL=R(`

          The display name can change. The slug is the stable client-facing identity.

          `),BL=R(` Human-readable and Unicode-friendly. You can change it later.`,1),VL=R(`Derived from the name. You may edit it before saving.`),HL=R(`Immutable because it is used in URLs, scope headers, and aggregated tool names.`),UL=R(` `,1),WL=R(` stdio servers are config-only: declare them in config.yaml under mcp.servers.`,1),GL=R(``),KL=R(`
          `),qL=R(`
          Headers
          Sent only to the configured server origin. Saved values are shown as ***; leave *** unchanged to keep the stored value.
          Advanced settings Description, access rules, and timeout
          `,1);function JL(e,t){E(t,!0);{let t=e=>{z(e,zL())},n=O(()=>Q.formMode===`edit`?`Edit MCP Server`:`Add MCP Server`);rT(e,{get open(){return Q.formOpen},get title(){return I(n)},ariaLabel:`MCP server editor`,get error(){return Q.error},get submitting(){return Q.formSubmitting},onclose:()=>Q.closeForm(),onsubmit:()=>Q.submitForm(),headerHint:t,children:(e,t)=>{var n=qL(),r=N(n);aT(r,{id:`mcp-server-name`,label:`Name`,children:(e,t)=>{var n=BL(),r=N(n);na(r),Ue(2),L(`input`,r,()=>Q.syncSlugFromName()),da(r,()=>Q.form.name,e=>Q.form.name=e),z(e,n)},$$slots:{default:!0}});var i=P(r,2);aT(i,{id:`mcp-server-slug`,label:`Slug`,children:(e,t)=>{var n=UL(),r=N(n);na(r);var i=P(r,2),a=e=>{z(e,VL())},o=e=>{z(e,HL())};V(i,e=>{Q.formMode===`create`?e(a):e(o,-1)}),F(()=>r.disabled=Q.formMode===`edit`),L(`input`,r,()=>Q.markSlugEdited()),da(r,()=>Q.form.slug,e=>Q.form.slug=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2);aT(a,{id:`mcp-server-transport`,label:`Transport`,children:(e,t)=>{var n=WL(),r=N(n),i=M(r);i.value=i.__value=`http`;var a=P(i);a.value=a.__value=`sse`,T(r),Ue(2),Gi(r,()=>Q.form.transport,e=>Q.form.transport=e),z(e,n)},$$slots:{default:!0}});var o=P(a,2);aT(o,{id:`mcp-server-url`,label:`URL`,children:(e,t)=>{var n=GL();na(n),da(n,()=>Q.form.url,e=>Q.form.url=e),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=P(M(s),2);H(c,21,()=>Q.form.headers,oi,(e,t,n)=>{var r=KL(),i=M(r);na(i);var a=P(i,2);na(a),$C(P(a,2),{label:`Remove header`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removeHeader(n),children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}}),T(r),da(i,()=>I(t).name,e=>I(t).name=e),da(a,()=>I(t).value,e=>I(t).value=e),z(e,r)}),T(c);var l=P(c,2),u=M(l);G(M(u),{name:`plus`,class:`form-action-icon`}),Ue(2),T(u),T(l),Ue(2),T(s);var d=P(s,2),f=M(d);rk(M(f),{get enabled(){return Q.form.enabled},label:`MCP server`,onclick:()=>Q.form.enabled=!Q.form.enabled}),T(f),T(d);var p=P(d,2),m=P(M(p),2),h=M(m),g=P(M(h),2);na(g),T(h);var _=P(h,2),v=P(M(_),2);na(v),T(_);var y=P(_,2),b=P(M(y),2);na(b),T(y);var x=P(y,2),S=P(M(x),2);ft(S),W(S,`placeholder`,`/ -/team/alpha`),T(x);var C=P(x,2),w=P(M(C),2);na(w),T(C),T(m),T(p),F(()=>p.open=Q.advancedOpen),L(`click`,u,()=>Q.addHeader()),Vr(`toggle`,p,e=>Q.advancedOpen=e.currentTarget.open),da(g,()=>Q.form.description,e=>Q.form.description=e),da(v,()=>Q.form.allowed_tools,e=>Q.form.allowed_tools=e),da(b,()=>Q.form.disallowed_tools,e=>Q.form.disallowed_tools=e),da(S,()=>Q.form.user_paths,e=>Q.form.user_paths=e),da(w,()=>Q.form.tool_timeout_seconds,e=>Q.form.tool_timeout_seconds=e),z(e,n)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`input`,`click`]);var YL=R(`Config`),XL=R(`
          `),ZL=R(`
          `),QL=R(`
          NameTransportEndpointStatusToolsEnabledActions
          `);function $L(e,t){E(t,!0);function n(e){return sb(e,e=>ao.formatTimestamp(e))}var r=QL(),i=M(r),a=P(M(i));H(a,21,()=>Q.filtered,e=>ib(e),(e,t)=>{var r=ZL(),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=e=>{z(e,YL())};V(s,e=>{I(t).managed&&e(c)});var l=P(s,2),u=M(l,!0);T(l),T(i);var d=P(i),f=M(d),p=M(f,!0);T(f),T(d);var m=P(d),h=M(m,!0);T(m);var g=P(m),_=M(g),v=M(_,!0);T(_);var y=P(_,2),b=e=>{var n=XL(),r=M(n,!0);T(n),F(()=>B(r,I(t).last_error)),z(e,n)},x=O(()=>ab(I(t))===`degraded`&&I(t).last_error);V(y,e=>{I(x)&&e(b)}),T(g);var S=P(g),C=M(S),w=M(C,!0);T(C);var ee=P(C,2),te=M(ee,!0);T(ee),T(S);var ne=P(S),re=M(ne),ie=M(re,!0);T(re),T(ne);var ae=P(ne),oe=M(ae),se=M(oe),ce=e=>{{let n=O(()=>`Edit MCP server `+I(t).name);$C(e,{get label(){return I(n)},class:`table-icon-btn`,onclick:()=>Q.openEdit(I(t)),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(se,e=>{I(t).managed||e(ce)});var le=P(se,2);{let e=O(()=>`Inspect catalog of MCP server `+I(t).name);$C(le,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Q.openCatalog(I(t)),children:(e,t)=>{G(e,{name:`list`,class:`form-action-icon`})},$$slots:{default:!0}})}var ue=P(le,2);{let e=O(()=>(Q.reconnectingName===ib(I(t))?`Reconnecting MCP server `:`Reconnect MCP server `)+I(t).name),n=O(()=>Q.reconnectingName===ib(I(t)));$C(ue,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Q.reconnectServer(I(t)),get disabled(){return I(n)},children:(e,t)=>{G(e,{name:`refresh-cw`,class:`form-action-icon`})},$$slots:{default:!0}})}var de=P(ue,2),fe=e=>{{let n=O(()=>(Q.deletingName===ib(I(t))?`Deleting MCP server `:`Delete MCP server `)+I(t).name),r=O(()=>Q.deletingName===ib(I(t)));$C(e,{get label(){return I(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>Q.deleteServer(I(t)),get disabled(){return I(r)},children:(e,t)=>{G(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(de,e=>{I(t).managed||e(fe)}),T(oe),T(ae),T(r),F((e,n,r,i,a,s,c,l)=>{B(o,I(t).name),B(u,e),B(p,I(t).transport||`http`),W(m,`title`,n),B(h,r),U(_,1,`audit-status-badge ${i??``}`,`svelte-ah8nrt`),W(_,`title`,a),B(v,s),B(w,c),B(te,l),U(re,1,Fi([`auth-key-status-badge`,I(t).enabled?`auth-key-status-active`:`auth-key-status-inactive`])),B(ie,I(t).enabled?`Enabled`:`Disabled`)},[()=>ib(I(t)),()=>cb(I(t)),()=>cb(I(t)),()=>ob(I(t)),()=>n(I(t)),()=>ab(I(t)),()=>$o(I(t).tool_count||0),()=>lb(I(t))]),z(e,r)}),T(a),T(i),T(r),z(e,r),D()}var eR=R(`

          MCP Servers

          `),tR=R(``),nR=R(`
          MCP server management is unavailable.
          `),rR=R(``),iR=R(`
          `),aR=R(`

          No MCP servers yet. Add one here, or declare servers in config.yaml under mcp.servers.

          `),oR=R(`

          No MCP servers match your filter.

          `),sR=R(`
          `);function cR(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`mcp-servers`&&Q.fetchServers()});var n=sR(),r=M(n),i=M(r);Rx(M(i),{copyId:`mcp-servers-help-copy`,label:`MCP servers help`,text:`Upstream Model Context Protocol servers whose tools, prompts, and resources the gateway exposes to clients. Servers added here connect over HTTP or SSE; stdio servers and rows marked Config are declared in config.yaml under mcp.servers and are read-only in the dashboard. Saved header values are masked in API and dashboard responses.`,title:e=>{z(e,eR())},$$slots:{title:!0}}),T(i);var a=P(i,2),o=M(a),s=e=>{var t=tR();G(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=Q.formSubmitting),L(`click`,t,()=>Q.openCreate()),z(e,t)};V(o,e=>{Q.available&&!K.authError&&e(s)}),T(a),T(r);var c=P(r,2),l=e=>{z(e,nR())};V(c,e=>{!Q.available&&!K.authError&&e(l)});var u=P(c,2),d=e=>{var t=rR(),n=M(t,!0);T(t),F(()=>B(n,Q.error)),z(e,t)};V(u,e=>{Q.error&&!K.authError&&!Q.formOpen&&e(d)});var f=P(u,2),p=e=>{ZC(e,{label:`Loading MCP servers...`})};V(f,e=>{Q.loading&&!K.authError&&e(p)});var m=P(f,2),h=e=>{var t=iR(),n=M(t);nC(M(n),{id:`mcp-server-filter`,placeholder:`Filter by name, slug, URL, transport, or status...`,label:`Filter MCP servers by name, slug, URL, transport, or status`,get value(){return Q.filter},set value(e){Q.filter=e}}),T(n),T(t),z(e,t)};V(m,e=>{(Q.servers.length>0||Q.filter)&&Q.available&&!K.authError&&e(h)});var g=P(m,2);JL(g,{});var _=P(g,2);RL(_,{});var v=P(_,2),y=e=>{$L(e,{})};V(v,e=>{Q.filtered.length>0&&Q.available&&!K.authError&&e(y)});var b=P(v,2),x=e=>{z(e,aR())};V(b,e=>{Q.servers.length===0&&!Q.filter&&!Q.loading&&!K.authError&&!Q.error&&Q.available&&e(x)});var S=P(b,2),C=e=>{z(e,oR())};V(S,e=>{Q.servers.length>0&&Q.filtered.length===0&&Q.filter&&!Q.loading&&!K.authError&&Q.available&&e(C)}),T(n),z(e,n),D()}Hr([`click`]);var lR=`api_keys`,uR=`session_sticky_keys`,dR=`base_url`,fR=`service_account_json`,pR=`models`,mR={[lR]:{label:`API Keys`,control:`keys`,hint:`Identified sessions stay on one key by default, improving provider prompt-cache hits. Saved values are shown as ***********; leave the asterisks unchanged to keep the stored key.`},[uR]:{label:`Session-sticky API keys`,control:`checkbox`,hint:`Keep each identified conversation on one API key to preserve provider prompt-cache affinity. Turn off to rotate keys round-robin on every request.`},[dR]:{label:`Base URL`,control:`text`},api_version:{label:`API Version`,control:`text`,placeholder:`e.g. 2024-10-01-preview`,hint:`Leave empty for the provider default. Realtime endpoints may need a newer version.`},backend:{label:`Backend`,control:`select`,hint:`Which Google surface to call. Vertex authenticates with Google credentials instead of an API key.`},auth_type:{label:`Auth Type`,control:`select`,hint:`How to obtain Google credentials. Leave on the default to use Application Default Credentials.`},api_mode:{label:`API Mode`,control:`select`,hint:`Which request shape to send upstream.`},vertex_project:{label:`Vertex Project`,control:`text`,placeholder:`my-gcp-project`},vertex_location:{label:`Vertex Location`,control:`text`,placeholder:`us-central1`},service_account_file:{label:`Service Account File`,control:`text`,placeholder:`/path/to/service-account.json`,hint:`Path readable by the gateway process.`},[fR]:{label:`Service Account JSON`,control:`textarea`,placeholder:`Paste service account JSON`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value, or clear it to remove.`},service_account_json_base64:{label:`Service Account JSON (base64)`,control:`text`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value.`},gcp_scope:{label:`GCP Scope`,control:`text`,placeholder:`https://www.googleapis.com/auth/cloud-platform`},[pR]:{label:`Models (comma-separated)`,control:`text`,placeholder:`gpt-4o, gpt-4o-mini`,hint:`Leave empty to auto-discover models from the provider's /models endpoint where supported.`}};function hR(e){return mR[e]||{label:String(e||``).split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),control:`text`}}function gR(){return{name:``,type:``,api_keys:[],session_sticky_keys:!0,base_url:``,api_version:``,backend:``,auth_type:``,api_mode:``,vertex_project:``,vertex_location:``,service_account_file:``,service_account_json:``,service_account_json_base64:``,gcp_scope:``,models:``,enabled:!0}}function _R(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.type,e.base_url].some(e=>String(e||``).toLowerCase().includes(r)))}function vR(e,t){let n=(Array.isArray(e)?e:[]).map(e=>String(e&&e.type||``).trim()).filter(Boolean),r=String(t||``).trim();return r&&!n.includes(r)&&n.push(r),n}function yR(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>String(e&&e.type||``).trim()===n)||null}function bR(e,t){let n=e&&Array.isArray(e.fields)&&e.fields.length>0?e.fields:Object.keys(mR).map(e=>({name:e,advanced:e!==lR})),r=t||e&&e.default_base_url||``,i=[],a=[];for(let e of n){let t=String(e&&e.name||``).trim();if(!t)continue;let n={...hR(t),name:t,required:!!(e&&e.required),options:Array.isArray(e&&e.options)?e.options:[]};t===`base_url`&&r&&(n.placeholder=r,n.hint=`Defaults to `+r),n.options.length>0&&(n.control=`select`),(e&&e.advanced?a:i).push(n)}return{primary:i,advanced:a}}var xR=new Set([`name`,`type`,`enabled`]);function SR(e,t){let n=new Set([...t.primary||[],...t.advanced||[]].map(e=>e.name)),r=gR(),i={...e};for(let e of Object.keys(r))!xR.has(e)&&!n.has(e)&&(i[e]=r[e]);return i}function CR(e){let t=Array.isArray(e&&e.api_keys)?e.api_keys.length:0;return t>0?t+` key`+(t===1?``:`s`):String(e&&e.service_account_json||``).trim()||String(e&&e.service_account_json_base64||``).trim()||String(e&&e.service_account_file||``).trim()?`service account`:String(e&&e.vertex_project||``).trim()?`ADC`:`keyless`}function wR(e){let t=Array.isArray(e&&e.models)?e.models:[];return t.length===0?`auto-discovered`:t.length+` model`+(t.length===1?``:`s`)}function TR(e){return(Array.isArray(e)?e:[]).map(e=>({value:String(e||``)}))}function ER(e){return(Array.isArray(e)?e:[]).map(e=>String(e&&e.value||``))}function DR(e,t){let n=String(t||``).trim();if(!n)return``;let r=new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.name||``).trim()));if(!r.has(n))return n;let i=1;for(;r.has(n+`-`+i);)i+=1;return n+`-`+i}function OR(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),api_keys:TR(e&&e.api_keys),session_sticky_keys:!e||e.session_sticky_keys!==!1,base_url:String(e&&e.base_url||``),api_version:String(e&&e.api_version||``),backend:String(e&&e.backend||``),auth_type:String(e&&e.auth_type||``),api_mode:String(e&&e.api_mode||``),vertex_project:String(e&&e.vertex_project||``),vertex_location:String(e&&e.vertex_location||``),service_account_file:String(e&&e.service_account_file||``),service_account_json:String(e&&e.service_account_json||``),service_account_json_base64:String(e&&e.service_account_json_base64||``),gcp_scope:String(e&&e.gcp_scope||``),models:(Array.isArray(e&&e.models)?e.models:[]).join(`, `),enabled:!e||e.enabled!==!1}}function kR(e){let t=String(e||``).trim();return t.length>=3&&/^\*+$/.test(t)}function AR(e,t,n,r){let i={},a=String(e&&e.name||``).trim();String(e&&e.type||``).trim()||(i.type=`Select a provider type.`),a?a.includes(`/`)?i.name=`Name cannot contain '/' — it separates the provider from the model.`:t===`create`&&(Array.isArray(n)?n:[]).some(e=>String(e&&e.name||``).trim()===a)&&(i.name=`Provider "`+a+`" already exists.`):i.name=`Name is required.`;let{primary:o,advanced:s}=bR(r);for(let t of[...o,...s]){let n=jR(e,t);n&&(i[t.name]=n)}return i}function jR(e,t){if(t.name===`api_keys`){let n=ER(e&&e.api_keys);return t.required&&!n.some(e=>e.trim())?`At least one API key is required for this provider type.`:n.some(e=>!e.trim())?`Remove the empty row instead of leaving a key blank.`:``}let n=String(e&&e[t.name]||``).trim();if(t.required&&!n)return t.label+` is required for this provider type.`;if(!n)return``;if(t.name===`base_url`&&!n.includes(`://`)&&/[./]/.test(n))return`Include the scheme, e.g. https://`+n;if(t.name===`service_account_json`&&!kR(n))try{JSON.parse(n)}catch{return`Paste the service account JSON file's contents — this is not valid JSON.`}return``}function MR(e,t){let n={name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),enabled:!!(e&&e.enabled)},{primary:r,advanced:i}=bR(t),a=!!(t&&Array.isArray(t.fields)&&t.fields.length>0),o=new Set;for(let t of[...r,...i])!a&&t.name===`session_sticky_keys`||(o.add(t.name),n[t.name]=NR(e,t.name));for(let t of Object.keys(mR)){if(o.has(t)||t===`session_sticky_keys`)continue;let r=NR(e,t);(Array.isArray(r)?r.length>0:String(r).trim()!==``)&&(n[t]=r)}return n}function NR(e,t){switch(t){case lR:return ER(e&&e.api_keys);case pR:return Zo(e&&e.models);case uR:return!!(e&&e.session_sticky_keys);case fR:return e&&e.service_account_json||``;default:return String(e&&e[t]||``).trim()}}var $=new class{#e=k(j([]));get rows(){return I(this.#e)}set rows(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get formSubmitting(){return I(this.#o)}set formSubmitting(e){A(this.#o,e,!0)}#s=k(`create`);get formMode(){return I(this.#s)}set formMode(e){A(this.#s,e,!0)}#c=k(!1);get advancedOpen(){return I(this.#c)}set advancedOpen(e){A(this.#c,e,!0)}#l=k(j(gR()));get form(){return I(this.#l)}set form(e){A(this.#l,e,!0)}#u=k(j({}));get fieldErrors(){return I(this.#u)}set fieldErrors(e){A(this.#u,e,!0)}#d=k(``);get focusField(){return I(this.#d)}set focusField(e){A(this.#d,e,!0)}#f=k(``);get deletingName(){return I(this.#f)}set deletingName(e){A(this.#f,e,!0)}#p=k(!1);get deleteSubmitting(){return I(this.#p)}set deleteSubmitting(e){A(this.#p,e,!0)}#m=k(j([]));get types(){return I(this.#m)}set types(e){A(this.#m,e,!0)}#h=k(!1);get typesLoaded(){return I(this.#h)}set typesLoaded(e){A(this.#h,e,!0)}#g=null;get filteredRows(){return _R(this.rows,this.filter)}get schema(){return yR(this.types,this.form.type)}get formFields(){if(!String(this.form.type||``).trim())return{primary:[],advanced:[]};let e=this.schema;return bR(e,e&&e.default_base_url)}async fetchTypes(){let e=await ew(`/admin/provider-credentials/types`,{label:`provider credential types`});e.status===`ok`&&(this.types=e.items,this.typesLoaded=!0)}async fetchPage(){this.#g&&this.#g.abort();let e=new AbortController;this.#g=e,this.loading=!0,this.error=``;try{let t=await ew(`/admin/provider-credentials`,{label:`provider credentials`,errorFallback:`Failed to load provider credentials.`,unavailableStatuses:[503,404],options:{signal:e.signal}});if(t.status===`stale`||e.signal.aborted)return;if(t.status===`unavailable`){this.available=!1,this.rows=[];return}if(t.status===`error`){t.result&&(this.available=!0),this.rows=[],this.error=t.error;return}this.available=!0,this.rows=t.items,this.typesLoaded||await this.fetchTypes()}finally{this.#g===e&&(this.#g=null,this.loading=!1)}}#_(e,t){this.formMode=e,this.form=t,this.advancedOpen=!1,this.error=``,this.fieldErrors={},this.focusField=``}openCreate(){this.#_(`create`,gR()),this.formOpen=!0,this.typesLoaded||this.fetchTypes()}openEdit(e){!e||e.managed||(this.#_(`edit`,OR(e)),this.formOpen=!0,this.typesLoaded||this.fetchTypes())}closeForm(){this.formOpen=!1,this.#_(`create`,gR())}selectType(){this.fieldErrors={};let e=this.formFields;this.formMode===`create`&&(this.form=SR(this.form,e));let t=e.primary.find(e=>e.name===`api_keys`);t&&t.required&&this.form.api_keys.length===0&&(this.form.api_keys=[{value:``}])}clearFieldError(e){if(this.fieldErrors[e]===void 0)return;let{[e]:t,...n}=this.fieldErrors;this.fieldErrors=n}addApiKeyRow(){this.form.api_keys.push({value:``}),this.clearFieldError(`api_keys`)}removeApiKeyRow(e){this.form.api_keys.splice(e,1),this.clearFieldError(`api_keys`)}#v(e){let t=oo(e,`Failed to save provider credential.`),n=String(e&&e.error&&typeof e.error==`object`&&e.error.param||``).trim();if(n&&this.#y(n)){this.fieldErrors={...this.fieldErrors,[n]:t},this.error=``,this.#b();return}this.error=t}#y(e){if(e===`name`||e===`type`)return!0;let{primary:t,advanced:n}=this.formFields;return[...t,...n].some(t=>t.name===e)}#b(){let e=Object.keys(this.fieldErrors);if(e.length===0)return;let{primary:t,advanced:n}=this.formFields;n.some(t=>e.includes(t.name))&&(this.advancedOpen=!0);let r=[`type`,`name`,...t.map(e=>e.name),...n.map(e=>e.name)];this.focusField=r.find(t=>e.includes(t))||e[0]}#x(){Es.fetchModels(),Es.fetchCategories()}async submitForm(){let e=this.schema,t=AR(this.form,this.formMode,this.rows,e);if(Object.keys(t).length>0){this.fieldErrors=t,this.error=``,this.#b();return}let n=MR(this.form,e);this.error=``,this.fieldErrors={},this.formSubmitting=!0;try{let e=await tw(`/admin/provider-credentials`,`PUT`,n,{label:`save provider credential`,errorFallback:`Failed to save provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.error=e.error;return}if(e.status===`error`){e.result&&e.result.status!==401?this.#v(e.result.data):this.error=e.error;return}q.success(`Provider "`+n.name+`" saved.`),this.closeForm(),this.#x(),this.fetchPage()}finally{this.formSubmitting=!1}}async performDelete(e){this.deleteSubmitting=!0,this.deletingName=e;try{let t=await tw(`/admin/provider-credentials/`+encodeURIComponent(e),`DELETE`,void 0,{label:`delete provider credential`,errorFallback:`Failed to delete provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,jo.error=t.error;return}if(t.status===`error`){jo.error=t.error;return}q.success(`Provider "`+e+`" deleted.`),jo.close(),this.formOpen&&this.form.name===e&&this.closeForm(),this.#x(),this.fetchPage()}finally{this.deleteSubmitting=!1,this.deletingName=``}}requestDelete(e){let t=String(e||``).trim();if(!t||this.deleteSubmitting)return;let n=(this.rows||[]).find(e=>String(e&&e.name||``).trim()===t);n&&n.managed||jo.open({title:`Delete Provider`,titleId:`providerCredentialDeleteDialogTitle`,inputId:`provider-credential-delete-confirmation`,message:`Type "`+t+`" to permanently delete this provider credential. Requests routed to it will fail until it is reconfigured.`,requiredText:t,confirmLabel:`Delete Provider`,icon:`trash-2`,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.performDelete(t)})}},PR=R(`Config`),FR=R(` `,1),IR=R(`
          `),LR=R(`
          NameTypeBase URLAuthModelsEnabledUpdatedActions
          `);function RR(e,t){E(t,!0);var n=LR(),r=M(n),i=P(M(r));H(i,21,()=>$.filteredRows,e=>e.name,(e,t)=>{var n=IR(),r=M(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2),s=e=>{z(e,PR())};V(o,e=>{I(t).managed&&e(s)}),T(r);var c=P(r),l=M(c),u=M(l,!0);T(l),T(c);var d=P(c),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=M(h,!0);T(h);var _=P(h),v=M(_);let y;var b=M(v,!0);T(v),T(_);var x=P(_),S=M(x,!0);T(x);var C=P(x),w=M(C),ee=M(w),te=e=>{var n=FR(),r=N(n);{let e=O(()=>`Edit provider `+I(t).name);$C(r,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>$.openEdit(I(t)),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}var i=P(r,2);{let e=O(()=>($.deletingName===I(t).name?`Deleting provider `:`Delete provider `)+I(t).name),n=O(()=>$.deletingName===I(t).name);$C(i,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>$.requestDelete(I(t).name),get disabled(){return I(n)},children:(e,t)=>{G(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}z(e,n)};V(ee,e=>{I(t).managed||e(te)}),T(w),T(C),T(n),F((e,n,r)=>{B(a,I(t).name),B(u,I(t).type),W(d,`title`,I(t).base_url||``),B(f,I(t).base_url||`—`),B(m,e),B(g,n),y=U(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":I(t).enabled,"auth-key-status-inactive":!I(t).enabled}),B(b,I(t).enabled?`Enabled`:`Disabled`),B(S,r)},[()=>CR(I(t)),()=>wR(I(t)),()=>ao.formatTimestamp(I(t).updated_at)]),z(e,n)}),T(i),T(r),T(n),z(e,n),D()}var zR=R(``),BR=R(`
          `),VR=R(`
          `,1),HR=R(``),UR=R(``),WR=R(``),GR=R(``),KR=R(``),qR=R(` `),JR=R(` `),YR=R(`
          `);function XR(e,t){E(t,!0);let n=O(()=>`provider-credential-`+t.field.name),r=O(()=>$.fieldErrors[t.field.name]||``),i=O(()=>I(r)?I(n)+`-error`:t.field.hint?I(n)+`-hint`:void 0),a=O(()=>{let e=String($.form[t.field.name]||``).trim();return!e||t.field.options.includes(e)?t.field.options:[...t.field.options,e]});function o(){$.clearFieldError(t.field.name)}var s=YR(),c=M(s),l=M(c),u=P(l),d=e=>{z(e,zR())};V(u,e=>{t.field.required&&e(d)}),T(c);var f=P(c,2),p=e=>{var t=VR(),a=N(t);H(a,21,()=>$.form.api_keys,oi,(e,t,a)=>{var s=BR(),c=M(s);na(c),W(c,`aria-label`,`API key `+(a+1)),$C(P(c,2),{label:`Remove API key `+(a+1),class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>$.removeApiKeyRow(a),children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}}),T(s),F(()=>{W(c,`id`,a===0?I(n):I(n)+`-`+a),W(c,`aria-invalid`,I(r)?`true`:void 0),W(c,`aria-describedby`,a===0?I(i):void 0)}),L(`input`,c,o),da(c,()=>I(t).value,e=>I(t).value=e),z(e,s)}),T(a);var s=P(a,2),c=M(s);G(M(c),{name:`plus`,class:`form-action-icon`}),Ue(2),T(c),T(s),F(()=>W(c,`id`,$.form.api_keys.length===0?I(n):void 0)),L(`click`,c,()=>$.addApiKeyRow()),z(e,t)},m=e=>{var s=UR(),c=M(s);c.value=c.__value=``,H(P(c),16,()=>I(a),e=>e,(e,t)=>{var n=HR(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(s),F(()=>{W(s,`id`,I(n)),W(s,`aria-invalid`,I(r)?`true`:void 0),W(s,`aria-describedby`,I(i))}),L(`change`,s,o),Gi(s,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,s)},h=e=>{var a=WR();na(a),F(()=>{W(a,`id`,I(n)),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`change`,a,o),fa(a,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,a)},g=e=>{var a=GR();ft(a),F(()=>{W(a,`id`,I(n)),W(a,`placeholder`,t.field.placeholder||``),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`input`,a,o),da(a,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,a)},_=e=>{var a=KR();na(a),F(()=>{W(a,`id`,I(n)),W(a,`placeholder`,t.field.placeholder||``),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`input`,a,o),da(a,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,a)};V(f,e=>{t.field.control===`keys`?e(p):t.field.control===`select`?e(m,1):t.field.control===`checkbox`?e(h,2):t.field.control===`textarea`?e(g,3):e(_,-1)});var v=P(f,2),y=e=>{var t=qR(),i=M(t,!0);T(t),F(()=>{W(t,`id`,I(n)+`-error`),B(i,I(r))}),z(e,t)},b=e=>{var r=JR(),i=M(r,!0);T(r),F(()=>{W(r,`id`,I(n)+`-hint`),B(i,t.field.hint)}),z(e,r)};V(v,e=>{I(r)?e(y):t.field.hint&&e(b,1)}),T(s),F(()=>{W(c,`for`,I(n)),B(l,`${t.field.label??``} `)}),z(e,s),D()}Hr([`input`,`click`,`change`]);var ZR=R(`

          The name is the stable identity used for routing and cannot change once created.

          `),QR=R(``),$R=R(` `),ez=R(`Determines which fields the gateway uses to build requests.`),tz=R(` `),nz=R(`Suggested from the selected type; used to route requests to this provider instance and editable before saving.`),rz=R(`Immutable once created.`),iz=R(`

          Pick a type to configure its credentials — each provider type asks for different settings.

          `),az=R(`
          Advanced settings
          `),oz=R(`
          `,1);function sz(e,t){E(t,!0);let n=O(()=>vR($.types,$.form.type)),r=O(()=>$.formFields),i=O(()=>$.fieldErrors.name||``),a=O(()=>$.fieldErrors.type||``);function o(){$.selectType(),$.formMode===`create`&&($.form.name=DR($.rows,$.form.type))}An(()=>{let e=$.focusField;if(!e)return;$.focusField=``;let t=document.getElementById(`provider-credential-`+e);t&&(t.scrollIntoView({block:`center`}),t.focus({preventScroll:!0}))});{let t=e=>{z(e,ZR())},s=O(()=>$.formMode===`edit`?`Edit Provider`:`Add Provider`);rT(e,{get open(){return $.formOpen},get title(){return I(s)},ariaLabel:`Provider credential editor`,get error(){return $.error},get submitting(){return $.formSubmitting},novalidate:!0,onclose:()=>$.closeForm(),onsubmit:()=>$.submitForm(),headerHint:t,children:(e,t)=>{var s=oz(),c=N(s),l=P(M(c),2),u=M(l);u.value=u.__value=``,H(P(u),16,()=>I(n),e=>e,(e,t)=>{var n=QR(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(l);var d=P(l,2),f=e=>{var t=$R(),n=M(t,!0);T(t),F(()=>B(n,I(a))),z(e,t)},p=e=>{z(e,ez())};V(d,e=>{I(a)?e(f):e(p,-1)}),T(c);var m=P(c,2),h=P(M(m),2);na(h);var g=P(h,2),_=e=>{var t=tz(),n=M(t,!0);T(t),F(()=>B(n,I(i))),z(e,t)},v=e=>{z(e,nz())},y=e=>{z(e,rz())};V(g,e=>{I(i)?e(_):$.formMode===`create`?e(v,1):e(y,-1)}),T(m);var b=P(m,2),x=e=>{z(e,iz())};V(b,e=>{$.form.type||e(x)});var S=P(b,2);H(S,17,()=>I(r).primary,e=>e.name,(e,t)=>{XR(e,{get field(){return I(t)}})});var C=P(S,2),w=M(C);rk(M(w),{get enabled(){return $.form.enabled},label:`provider`,onclick:()=>$.form.enabled=!$.form.enabled}),T(w),T(C);var ee=P(C,2),te=e=>{var t=az(),n=M(t),i=M(n),a=P(M(i),2),o=M(a,!0);T(a),T(i),T(n);var s=P(n,2);H(s,21,()=>I(r).advanced,e=>e.name,(e,t)=>{XR(e,{get field(){return I(t)}})}),T(s),T(t),F(e=>{t.open=$.advancedOpen,B(o,e)},[()=>I(r).advanced.map(e=>e.label).join(`, `)]),Vr(`toggle`,t,e=>$.advancedOpen=e.currentTarget.open),z(e,t)};V(ee,e=>{I(r).advanced.length>0&&e(te)}),F(()=>{l.disabled=$.formMode===`edit`,W(l,`aria-invalid`,I(a)?`true`:void 0),W(l,`aria-describedby`,I(a)?`provider-credential-type-error`:`provider-credential-type-hint`),h.disabled=$.formMode===`edit`,W(h,`aria-invalid`,I(i)?`true`:void 0),W(h,`aria-describedby`,I(i)?`provider-credential-name-error`:`provider-credential-name-hint`)}),L(`change`,l,o),Gi(l,()=>$.form.type,e=>$.form.type=e),L(`input`,h,()=>$.clearFieldError(`name`)),da(h,()=>$.form.name,e=>$.form.name=e),z(e,s)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`change`,`input`]);var cz=R(`

          Providers

          `),lz=R(``),uz=R(`
          Provider credential management is unavailable.
          `),dz=R(``),fz=R(`
          `),pz=R(`

          No dashboard-managed providers yet. Add one here, or declare providers in config.yaml / environment variables.

          `),mz=R(`

          No providers match your filter.

          `),hz=R(`
          `);function gz(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`providers-config`&&$.fetchPage()});var n=hz(),r=M(n),i=M(r);Rx(M(i),{copyId:`providers-config-help-copy`,label:`model providers help`,title:e=>{z(e,cz())},help:e=>{Ue(),z(e,Zr(`Configure LLM provider credentials here instead of setting API keys as - environment variables. Providers declared in config.yaml or env vars - are read-only (Config badge) and cannot be edited or deleted from the - dashboard. Keys are masked after saving.`))},$$slots:{title:!0,help:!0}}),T(i);var a=P(i,2),o=M(a),s=e=>{var t=lz();G(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=$.formSubmitting),L(`click`,t,()=>$.openCreate()),z(e,t)};V(o,e=>{$.available&&!K.needsAuth&&e(s)}),T(a),T(r);var c=P(r,2),l=e=>{z(e,uz())};V(c,e=>{!$.available&&!K.needsAuth&&e(l)});var u=P(c,2),d=e=>{var t=dz(),n=M(t,!0);T(t),F(()=>B(n,$.error)),z(e,t)};V(u,e=>{$.error&&!K.needsAuth&&!$.formOpen&&e(d)});var f=P(u,2),p=e=>{ZC(e,{label:`Loading providers...`})};V(f,e=>{$.loading&&!K.needsAuth&&e(p)});var m=P(f,2),h=e=>{var t=fz(),n=M(t);nC(M(n),{id:`provider-credential-filter`,placeholder:`Filter by name, type, or base URL...`,label:`Filter providers by name, type, or base URL`,get value(){return $.filter},set value(e){$.filter=e}}),T(n),T(t),z(e,t)};V(m,e=>{($.rows.length>0||$.filter)&&$.available&&!K.needsAuth&&e(h)});var g=P(m,2);sz(g,{});var _=P(g,2),v=e=>{RR(e,{})};V(_,e=>{$.filteredRows.length>0&&$.available&&!K.needsAuth&&e(v)});var y=P(_,2),b=e=>{z(e,pz())};V(y,e=>{$.rows.length===0&&!$.filter&&!$.loading&&!K.needsAuth&&!$.error&&$.available&&e(b)});var x=P(y,2),S=e=>{z(e,mz())};V(x,e=>{$.rows.length>0&&$.filteredRows.length===0&&$.filter&&!$.loading&&!K.needsAuth&&$.available&&e(S)}),T(n),z(e,n),D()}Hr([`click`]);function _z(){return{name:``,description:``,user_path:``,labels:``,dashboard_access:!1,expires_at:``}}function vz(e){let t=[];for(let n of String(e||``).split(`,`)){let e=n.trim();e&&!t.includes(e)&&t.push(e)}return t}function yz(e){let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t;for(let e of n.split(`/`)){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function bz(e){if(yz(e))return``;let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t,r=[];for(let e of n.split(`/`)){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function xz(e){let t=e||{},n=String(t.name||``).trim();if(!n)return{error:`Name is required.`};let r=yz(t.user_path);if(r)return{error:r};let i=bz(t.user_path),a=vz(t.labels),o={name:n,description:String(t.description||``).trim()||void 0,user_path:i||void 0,labels:a.length?a:void 0,dashboard_access:t.dashboard_access?!0:void 0};return t.expires_at&&(o.expires_at=t.expires_at+`T23:59:59Z`),{payload:o}}function Sz(e,t=Date.now()){let n=e&&e.expires_at;if(!n)return!1;let r=Date.parse(n);return Number.isFinite(r)&&r<=t}function Cz(e){return e?!!e.deactivated_at||e.enabled===!1:!1}function wz(e,t=Date.now()){return!e||e.active===!1||Cz(e)?!1:!Sz(e,t)}function Tz(e){return[e.name,e.description,e.user_path,e.redacted_value,...e.labels||[]].filter(Boolean).join(` `).toLowerCase()}function Ez(e,t={}){let{query:n=``,showInactive:r=!1,now:i=Date.now()}=t,a=String(n||``).trim().toLowerCase();return(Array.isArray(e)?e:[]).filter(e=>!r&&!wz(e,i)?!1:!a||Tz(e).includes(a))}function Dz(e,t){return Cz(e)?2:+!wz(e,t)}function Oz(e){let t=e&&e.expires_at;if(!t)return 1/0;let n=Date.parse(t);return Number.isFinite(n)?n:1/0}function kz(e){let t=Date.parse(e&&e.deactivated_at||``);return Number.isFinite(t)?t:-1/0}function Az(e,t=Date.now()){return(Array.isArray(e)?e.slice():[]).sort((e,n)=>{let r=Dz(e,t),i=Dz(n,t);if(r!==i)return r-i;let[a,o]=r===2?[kz(e),kz(n)]:[Oz(e),Oz(n)];return a===o?String(e.name||``).localeCompare(String(n.name||``)):a>o?-1:1})}function jz(e,t=Date.now()){return(Array.isArray(e)?e:[]).reduce((e,n)=>e+ +!wz(n,t),0)}function Mz(){return{open:!1,id:``,name:``,value:``,submitting:!1,error:``}}var Nz=new class{#e=k(j([]));get keys(){return I(this.#e)}set keys(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get showInactive(){return I(this.#a)}set showInactive(e){A(this.#a,e,!0)}#o=O(()=>Az(Ez(this.keys,{query:this.filter,showInactive:this.showInactive})));get visibleKeys(){return I(this.#o)}set visibleKeys(e){A(this.#o,e)}#s=O(()=>jz(this.keys));get inactiveCount(){return I(this.#s)}set inactiveCount(e){A(this.#s,e)}#c=k(!1);get formOpen(){return I(this.#c)}set formOpen(e){A(this.#c,e,!0)}#l=k(!1);get formSubmitting(){return I(this.#l)}set formSubmitting(e){A(this.#l,e,!0)}#u=k(``);get issuedValue(){return I(this.#u)}set issuedValue(e){A(this.#u,e,!0)}#d=k(``);get deactivatingID(){return I(this.#d)}set deactivatingID(e){A(this.#d,e,!0)}#f=k(``);get dashboardAccessID(){return I(this.#f)}set dashboardAccessID(e){A(this.#f,e,!0)}#p=k(j(_z()));get form(){return I(this.#p)}set form(e){A(this.#p,e,!0)}#m=k(j(Mz()));get labelsEditor(){return I(this.#m)}set labelsEditor(e){A(this.#m,e,!0)}copyState=ej({logPrefix:`Failed to copy auth key:`});async fetchKeys(){this.loading=!0,this.error=``;try{let e=await ew(`/admin/auth-keys`,{label:`auth keys`,errorFallback:`Unable to load API keys.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.keys=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.error=e.error;return}this.available=!0,this.keys=e.items}finally{this.loading=!1}}openForm(){this.formSubmitting||this.formOpen||(this.formOpen=!0,this.error=``,this.issuedValue||(this.copyState.reset(),this.form=_z()))}closeForm(){this.formOpen&&(this.formOpen=!1,this.error=``,this.copyState.reset(),!this.formSubmitting&&!this.issuedValue&&(this.form=_z()))}copyIssuedValue(){return this.copyState.copy(this.issuedValue)}dismissIssuedKey(){this.issuedValue=``,this.copyState.reset(),this.form=_z()}async submitForm(){let e=xz(this.form);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await tw(`/admin/auth-keys`,`POST`,e.payload,{label:`create API key`,errorFallback:`Failed to create API key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error,t.result&&t.result.status!==401&&console.error(`Failed to create API key:`,t.result.status,this.error);return}let n=t.result.data||{};this.issuedValue=n.value||``,this.formOpen=!0,this.copyState.reset(),this.form=_z(),this.fetchKeys()}finally{this.formSubmitting=!1}}openLabelsEditor(e){!e||this.labelsEditor.submitting||(this.labelsEditor={open:!0,id:e.id,name:e.name||``,value:(e.labels||[]).join(`, `),submitting:!1,error:``})}closeLabelsEditor(){!this.labelsEditor.open||this.labelsEditor.submitting||(this.labelsEditor=Mz())}async submitLabelsEditor(){let e=this.labelsEditor;if(!e.open||e.submitting||!e.id)return;e.submitting=!0,e.error=``;let t={labels:vz(e.value)};try{let n=await tw(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/labels`,`PUT`,t,{label:`update API key labels`,errorFallback:`Failed to update labels.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,e.error=n.error;return}if(n.status===`error`){e.error=n.error,n.result&&n.result.status!==401&&console.error(`Failed to update auth key labels:`,n.result.status,e.error);return}q.success(`Labels updated for key "`+e.name+`".`),e.submitting=!1,this.closeLabelsEditor(),this.fetchKeys()}finally{e.submitting=!1}}async toggleDashboardAccess(e){if(!e||!e.active||this.dashboardAccessID)return;let t=!e.dashboard_access;this.dashboardAccessID=e.id;try{let n=await tw(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/dashboard-access`,`PUT`,{dashboard_access:t},{label:`update API key dashboard access`,errorFallback:`Failed to update dashboard access.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,q.error(n.error);return}if(n.status===`error`){n.result&&n.result.status!==401&&console.error(`Failed to update auth key dashboard access:`,n.result.status,n.error),q.error(n.error);return}q.success(`Dashboard access `+(t?`granted to`:`revoked for`)+` key "`+e.name+`".`),this.fetchKeys()}finally{this.dashboardAccessID=``}}async deactivateKey(e){if(!(!e||!e.active)&&window.confirm(`Deactivate key "`+e.name+`"? This cannot be undone.`)){this.deactivatingID=e.id;try{let t=await tw(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/deactivate`,`POST`,void 0,{label:`deactivate API key`,errorFallback:`Failed to deactivate key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,q.error(t.error);return}if(t.status===`error`){t.result&&t.result.status!==401&&console.error(`Failed to deactivate auth key:`,t.result.status,t.error),q.error(t.error);return}q.success(`Key "`+e.name+`" deactivated.`),this.fetchKeys()}finally{this.deactivatingID=``}}}},Pz=R(``),Fz=R(`

          Store this key securely — it won’t be shown again.

          `),Iz=R(``),Lz=R(``),Rz=R(``),zz=R(``),Bz=R(`
          `);function Vz(e,t){E(t,!0);{let t=O(()=>Nz.issuedValue?``:Nz.error),n=O(()=>Nz.issuedValue?`Done, I’ve stored it`:`Create API Key`),r=O(()=>Nz.issuedValue?`check`:`plus`);rT(e,{get open(){return Nz.formOpen},title:`Create API Key`,ariaLabel:`API key editor`,get error(){return I(t)},get submitting(){return Nz.formSubmitting},get submitLabel(){return I(n)},submittingLabel:`Creating...`,get submitIcon(){return I(r)},cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>Nz.closeForm(),onsubmit:()=>Nz.issuedValue?Nz.dismissIssuedKey():Nz.submitForm(),children:(e,t)=>{var n=Qr(),r=N(n),i=e=>{var t=Fz(),n=P(M(t),2),r=M(n),i=M(r,!0);T(r),PF(P(r,2),{get state(){return Nz.copyState},onclick:()=>Nz.copyIssuedValue()}),T(n);var a=P(n,2),o=e=>{z(e,Pz())};V(a,e=>{Nz.copyState.error&&e(o)}),T(t),F(()=>B(i,Nz.issuedValue)),z(e,t)},a=e=>{var t=Bz(),n=M(t),r=M(n),i=P(M(r),2);na(i),T(r);var a=P(r,2),o=P(M(a),2);na(o),T(a),T(n);var s=P(n,2),c=M(s);Rx(c,{copyId:`auth-key-user-path-help-copy`,label:`API key user path help`,title:e=>{z(e,Iz())},help:e=>{Ue(),z(e,Zr(`When set, this key overrides the configured user path request - header for audit logging and downstream request context.`))},$$slots:{title:!0,help:!0}});var l=P(c,2);na(l),T(s);var u=P(s,2),d=M(u);Rx(d,{copyId:`auth-key-labels-help-copy`,label:`API key labels help`,title:e=>{z(e,Lz())},help:e=>{Ue(),z(e,Zr(`Every request authenticated with this key gets these labels, in - addition to any labels from tagging headers. Labels show up in - usage analytics, the request log, and audit logs.`))},$$slots:{title:!0,help:!0}});var f=P(d,2);na(f),T(u);var p=P(u,2),m=M(p);Rx(m,{copyId:`auth-key-dashboard-access-help-copy`,label:`API key dashboard access help`,title:e=>{z(e,Rz())},help:e=>{Ue(),z(e,Zr(`When off, this key is denied the dashboard and every /admin API - endpoint. Model endpoints and GET /v1/usage stay available to - the key. The master key always has dashboard access.`))},$$slots:{title:!0,help:!0}});var h=P(m,2),g=M(h);na(g),Ue(2),T(h),T(p),aT(P(p,2),{id:`auth-key-description`,label:`Description (optional)`,children:(e,t)=>{var n=zz();ft(n),da(n,()=>Nz.form.description,e=>Nz.form.description=e),z(e,n)},$$slots:{default:!0}}),T(t),da(i,()=>Nz.form.name,e=>Nz.form.name=e),da(o,()=>Nz.form.expires_at,e=>Nz.form.expires_at=e),da(l,()=>Nz.form.user_path,e=>Nz.form.user_path=e),da(f,()=>Nz.form.labels,e=>Nz.form.labels=e),fa(g,()=>Nz.form.dashboard_access,e=>Nz.form.dashboard_access=e),z(e,t)};V(r,e=>{Nz.issuedValue?e(i):e(a,-1)}),z(e,n)},$$slots:{default:!0}})}D()}var Hz=R(`

          `),Uz=R(`

          Applies to new requests made with this key. Leave empty to remove all labels.

          `,1);function Wz(e,t){E(t,!0),rT(e,{get open(){return Nz.labelsEditor.open},title:`Edit Labels`,ariaLabel:`API key labels editor`,get error(){return Nz.labelsEditor.error},get submitting(){return Nz.labelsEditor.submitting},submitLabel:`Save Labels`,cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>Nz.closeLabelsEditor(),onsubmit:()=>Nz.submitLabelsEditor(),headerHint:e=>{var t=Hz(),n=M(t,!0);T(t),F(()=>B(n,Nz.labelsEditor.name)),z(e,t)},children:(e,t)=>{aT(e,{id:`auth-key-labels-edit`,label:`Labels (comma-separated)`,children:(e,t)=>{var n=Uz(),r=N(n);na(r),Ue(2),da(r,()=>Nz.labelsEditor.value,e=>Nz.labelsEditor.value=e),z(e,n)},$$slots:{default:!0}})},$$slots:{headerHint:!0,default:!0}}),D()}var Gz=R(` `),Kz=R(`
          `),qz=R(``),Jz=R(`Expired`),Yz=R(` `),Xz=R(` `,1),Zz=R(`Deactivated`),Qz=R(`
          `),$z=R(`
          NameDescriptionUser PathLabelsTokenDashboard Access ExpiresCreated
          `);function eB(e,t){E(t,!0);var n=$z(),r=M(n),i=M(r),a=M(i),o=P(M(a),5),s=M(o);G(P(M(s)),{name:`info`,width:`13`,height:`13`}),T(s),T(o),Ue(3),T(a),T(i);var c=P(i);H(c,21,()=>Nz.visibleKeys,e=>e.id,(e,t)=>{var n=Qz();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i),s=M(o,!0);T(o);var c=P(o),l=M(c,!0);T(c);var u=P(c),d=M(u),f=e=>{var n=Kz();H(n,20,()=>I(t).labels||[],e=>e,(e,t)=>{var n=Gz(),r=M(n,!0);T(n),F(e=>{Hi(n,e),B(r,t)},[()=>Iv(t)]),z(e,n)}),T(n),z(e,n)},p=e=>{z(e,qz())};V(d,e=>{(I(t).labels||[]).length>0?e(f):e(p,-1)}),T(u);var m=P(u),h=M(m),g=M(h,!0);T(h),T(m);var _=P(m),v=M(_);let y;var b=M(v,!0);T(v),T(_);var x=P(_),S=M(x),C=e=>{var n=Yz(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{z(e,Jz())},s=O(()=>Sz(I(t)));V(a,e=>{I(s)&&e(o)}),T(n),F(e=>B(i,e),[()=>os(I(t).expires_at)]),z(e,n)},w=e=>{z(e,Zr(`—`))};V(S,e=>{I(t).expires_at?e(C):e(w,-1)}),T(x);var ee=P(x),te=M(ee,!0);T(ee);var ne=P(ee),re=M(ne),ie=M(re),ae=e=>{var n=Xz(),r=N(n);{let e=O(()=>(I(t).dashboard_access?`Revoke dashboard access for API key `:`Grant dashboard access to API key `)+I(t).name),n=O(()=>!!Nz.dashboardAccessID);$C(r,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Nz.toggleDashboardAccess(I(t)),get disabled(){return I(n)},children:(e,n)=>{{let n=O(()=>I(t).dashboard_access?`shield-off`:`shield-check`);G(e,{get name(){return I(n)},class:`table-icon-svg`})}},$$slots:{default:!0}})}var i=P(r,2);{let e=O(()=>`Edit labels for API key `+I(t).name);$C(i,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Nz.openLabelsEditor(I(t)),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}var a=P(i,2);{let e=O(()=>(Nz.deactivatingID===I(t).id?`Deactivating API key `:`Deactivate API key `)+I(t).name),n=O(()=>Nz.deactivatingID===I(t).id);$C(a,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>Nz.deactivateKey(I(t)),get disabled(){return I(n)},children:(e,t)=>{G(e,{name:`power`,class:`table-icon-svg`})},$$slots:{default:!0}})}z(e,n)},oe=e=>{var n=Zz();F(e=>W(n,`title`,e),[()=>I(t).deactivated_at?`Deactivated on `+ss(I(t).deactivated_at):`Deactivated`]),z(e,n)},se=O(()=>Cz(I(t)));V(ie,e=>{I(t).active?e(ae):I(se)&&e(oe,1)}),T(re),T(ne),T(n),F((e,i,o)=>{r=U(n,1,`svelte-nf0ldb`,null,r,e),B(a,I(t).name),B(s,I(t).description||`—`),B(l,I(t).user_path||`—`),B(g,I(t).redacted_value),y=U(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":I(t).dashboard_access,"auth-key-status-inactive":!I(t).dashboard_access}),B(b,I(t).dashboard_access?`Allowed`:`Denied`),W(x,`title`,i),B(te,o)},[()=>({"auth-key-row-deactivated":Cz(I(t))}),()=>I(t).expires_at?ss(I(t).expires_at):``,()=>ao.formatTimestamp(I(t).created_at)]),z(e,n)}),T(c),T(r),T(n),z(e,n),D()}var tB=R(``),nB=R(`
          API key management is unavailable.
          `),rB=R(``),iB=R(`

          Managed API keys authenticate requests to the gateway. Deactivation is - permanent — create a new key if access needs to be restored.

          `),aB=R(`
          `),oB=R(`
          `),sB=R(`

          `),cB=R(`

          No API keys yet. Issue a key to get started.

          `),lB=R(`
          `);function uB(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`auth-keys`&&Nz.fetchKeys()});var n=lB(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=tB();G(M(t),{name:`plus`,class:`table-icon-svg`}),Ue(2),T(t),F(()=>t.disabled=Nz.formSubmitting),L(`click`,t,()=>{Nz.formSubmitting||Nz.openForm()}),z(e,t)};V(a,e=>{Nz.available&&!K.authError&&e(o)}),T(i),T(r);var s=P(r,2),c=e=>{z(e,nB())};V(s,e=>{!Nz.available&&!K.authError&&e(c)});var l=P(s,2),u=e=>{var t=rB(),n=M(t,!0);T(t),F(()=>B(n,Nz.error)),z(e,t)};V(l,e=>{Nz.error&&!K.authError&&!Nz.formOpen&&e(u)});var d=P(l,2),f=e=>{z(e,iB())};V(d,e=>{Nz.available&&!K.authError&&e(f)});var p=P(d,2);Vz(p,{});var m=P(p,2);Wz(m,{});var h=P(m,2),g=e=>{var t=aB();px(M(t),{size:18,label:`Loading API keys`}),T(t),z(e,t)};V(h,e=>{Nz.loading&&Nz.keys.length===0&&e(g)});var _=P(h,2),v=e=>{var t=oB(),n=M(t);nC(M(n),{placeholder:`Filter by name, description, user path, label, or token...`,label:`Filter API keys by name, description, user path, label, or token`,get value(){return Nz.filter},set value(e){Nz.filter=e}}),T(n);var r=P(n,2),i=M(r),a=M(i);na(a);var o=P(a,2),s=P(M(o)),c=e=>{var t=Zr();F(()=>B(t,`(${Nz.inactiveCount??``})`)),z(e,t)};V(s,e=>{Nz.inactiveCount>0&&e(c)}),T(o),T(i),T(r),T(t),fa(a,()=>Nz.showInactive,e=>Nz.showInactive=e),z(e,t)};V(_,e=>{Nz.keys.length>0&&Nz.available&&e(v)});var y=P(_,2),b=e=>{eB(e,{})};V(y,e=>{Nz.visibleKeys.length>0&&Nz.available&&e(b)});var x=P(y,2),S=e=>{var t=sB(),n=M(t);T(t),F(()=>B(n,`No API keys match the current filter.${Nz.inactiveCount>0&&!Nz.showInactive?` `+Nz.inactiveCount+` inactive `+(Nz.inactiveCount===1?`key is`:`keys are`)+` hidden.`:``}`)),z(e,t)};V(x,e=>{Nz.keys.length>0&&Nz.visibleKeys.length===0&&Nz.available&&e(S)});var C=P(x,2),w=e=>{z(e,cB())};V(C,e=>{Nz.keys.length===0&&!Nz.loading&&!K.authError&&!Nz.error&&Nz.available&&e(w)}),T(n),z(e,n),D()}Hr([`click`]);var dB=R(`

          Timezone

          `),fB=R(``),pB=R(``),mB=R(`
          `,1);function hB(e,t){E(t,!0);function n(){ao.saveOverride(),K.refresh()}function r(){ao.clearOverride(),K.refresh()}var i=mB(),a=N(i);Rx(M(a),{copyId:`timezone-help-copy`,label:`timezone help`,text:`Day-based analytics, charts, and date filters use your effective timezone. Usage and audit logs keep UTC in the hover title while rendering row timestamps in your effective timezone.`,title:e=>{z(e,dB())},$$slots:{title:!0}}),T(a);var o=P(a,2),s=M(o),c=P(M(s),2),l=M(c),u=M(l);T(l),l.value=l.__value=``,H(P(l),17,()=>ao.options,e=>e.value,(e,t)=>{var n=fB(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(c),T(s),T(o);var d=P(o,2),f=M(d),p=e=>{var t=pB();L(`click`,t,r),z(e,t)};V(f,e=>{ao.override&&e(p)}),T(d),F(e=>B(u,`Automatic (${e??``})`),[()=>ao.detectedTimeZoneLabel()]),Vr(`focus`,c,()=>ao.ensureOptions()),L(`change`,c,n),Gi(c,()=>ao.override,e=>ao.override=e),z(e,i),D()}Hr([`change`,`click`]);var gB=R(``),_B=R(`

          Failover

          `,1);function vB(e,t){E(t,!0);let n=O(()=>Z.failoverSaving||Z.failoverGenerating||Z.failoverDraftSaving||!Z.failoverAvailable||!Z.failoverEnabled());var r=_B(),i=N(r),a=P(M(i),2),o=M(a),s=M(o);G(s,{name:`wand-sparkles`,class:`form-action-icon`});var c=P(s,2),l=M(c,!0);T(c),T(o);var u=P(o,2);G(M(u),{name:`trash-2`,class:`form-action-icon`}),Ue(2),T(u),T(a),T(i);var d=P(i,2),f=M(d),p=e=>{var t=gB(),n=M(t,!0);T(t),F(()=>B(n,Z.failoverError)),z(e,t)};V(f,e=>{Z.failoverError&&e(p)}),T(d),Yk(P(d,2),{}),F(()=>{o.disabled=I(n),B(l,Z.failoverGenerating?`Generating...`:`Generate failover models automatically`),u.disabled=I(n)}),L(`click`,o,()=>Z.generateFailoverRules()),L(`click`,u,()=>Z.openFailoverResetDialog()),z(e,r),D()}Hr([`click`]);function yB(){return{daily_reset_hour:0,daily_reset_minute:0,weekly_reset_weekday:1,weekly_reset_hour:0,weekly_reset_minute:0,monthly_reset_day:1,monthly_reset_hour:0,monthly_reset_minute:0}}function bB(e,t){let n=t||{},r=(e,t)=>{if(e===``)return t;let n=Number(e);return Number.isFinite(n)&&Number.isInteger(n)?Math.trunc(n):t},i=(e,t)=>r(n[e],t),a=(t,n)=>e?r(e[t],n):n;return{daily_reset_hour:a(`daily_reset_hour`,i(`daily_reset_hour`,0)),daily_reset_minute:a(`daily_reset_minute`,i(`daily_reset_minute`,0)),weekly_reset_weekday:a(`weekly_reset_weekday`,i(`weekly_reset_weekday`,1)),weekly_reset_hour:a(`weekly_reset_hour`,i(`weekly_reset_hour`,0)),weekly_reset_minute:a(`weekly_reset_minute`,i(`weekly_reset_minute`,0)),monthly_reset_day:a(`monthly_reset_day`,i(`monthly_reset_day`,1)),monthly_reset_hour:a(`monthly_reset_hour`,i(`monthly_reset_hour`,0)),monthly_reset_minute:a(`monthly_reset_minute`,i(`monthly_reset_minute`,0))}}function xB(){return[{value:0,label:`Sunday`},{value:1,label:`Monday`},{value:2,label:`Tuesday`},{value:3,label:`Wednesday`},{value:4,label:`Thursday`},{value:5,label:`Friday`},{value:6,label:`Saturday`}]}var SB=R(`

          Budget Resets

          `),CB=R(``),wB=R(`

          If the selected day does not exist in a month, the reset runs on - the last day of that month.

          `),TB=R(``),EB=R(``),DB=R(`
          Monthly
          Weekly
          Daily
          `,1);function OB(e,t){E(t,!0);let n=k(j(yB())),r=k(!1),i=k(!1),a=k(``),o=k(!1),s=O(()=>_o.budgetsVisible());async function c(){if(await _o.ensureLoaded(),!_o.budgetsVisible()){A(a,``);return}A(r,!0),A(a,``);try{let e=await fo(`/admin/budgets/settings`,{label:`budget settings`});if(e.stale)return;if(!e.ok){A(a,`Unable to load budget settings.`);return}A(n,bB(e.data,I(n)),!0)}catch(e){console.error(`Failed to fetch budget settings:`,e),A(a,`Unable to load budget settings.`)}finally{A(r,!1)}}async function l(){if(!I(i)){A(i,!0);try{let e=await po(`/admin/budgets/settings`,`PUT`,bB(I(n),I(n)),{label:`budget settings`});if(e.stale)return;if(!e.ok){q.error(`Unable to save budget settings.`);return}A(n,bB(e.data,I(n)),!0),A(a,``),q.success(`Budget settings saved.`)}catch(e){console.error(`Failed to save budget settings:`,e),q.error(`Unable to save budget settings.`)}finally{A(i,!1)}}}An(()=>{K.refreshTick,c()});var u=Qr(),d=N(u),f=e=>{var t=DB(),s=N(t),c=M(s);Rx(c,{copyId:`budget-settings-help-copy`,label:`budget help`,text:`Budget reset anchors are stored in the database and evaluated in UTC. Hourly budgets reset at the top of each hour.`,title:e=>{z(e,SB())},$$slots:{title:!0}});var u=P(c,2),d=M(u),f=P(M(d),2),p=M(f);Rx(p,{copyId:`budget-monthly-day-help-copy`,label:`day of month help`,external:!0,get open(){return I(o)},set open(e){A(o,e,!0)},title:e=>{z(e,CB())},$$slots:{title:!0}});var m=P(p,2);na(m),T(f);var h=P(f,2),g=P(M(h),2);na(g),T(h);var _=P(h,2),v=P(M(_),2);na(v),T(_);var y=P(_,2),b=M(y),x=e=>{z(e,wB())};V(b,e=>{I(o)&&e(x)}),T(y),T(d);var S=P(d,2),C=P(M(S),2),w=P(M(C),2);H(w,21,xB,e=>e.value,(e,t)=>{var n=TB(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(w),T(C);var ee=P(C,2),te=P(M(ee),2);na(te),T(ee);var ne=P(ee,2),re=P(M(ne),2);na(re),T(ne),Ue(2),T(S);var ie=P(S,2),ae=P(M(ie),4),oe=P(M(ae),2);na(oe),T(ae);var se=P(ae,2),ce=P(M(se),2);na(ce),T(se),Ue(2),T(ie),T(u);var le=P(u,2),ue=M(le);G(M(ue),{name:`save`,class:`form-action-icon`}),Ue(2),T(ue);var de=P(ue,2),fe=e=>{px(e,{size:16,label:`Loading budget settings`})};V(de,e=>{I(r)&&e(fe)}),T(le),T(s);var pe=P(s,2),me=M(pe),he=e=>{var t=EB(),n=M(t,!0);T(t),F(()=>B(n,I(a))),z(e,t)};V(me,e=>{I(a)&&e(he)}),T(pe),F(()=>{ue.disabled=I(i)||I(r),W(ue,`aria-busy`,I(i)?`true`:`false`)}),da(m,()=>I(n).monthly_reset_day,e=>I(n).monthly_reset_day=e),da(g,()=>I(n).monthly_reset_hour,e=>I(n).monthly_reset_hour=e),da(v,()=>I(n).monthly_reset_minute,e=>I(n).monthly_reset_minute=e),Gi(w,()=>I(n).weekly_reset_weekday,e=>I(n).weekly_reset_weekday=e),da(te,()=>I(n).weekly_reset_hour,e=>I(n).weekly_reset_hour=e),da(re,()=>I(n).weekly_reset_minute,e=>I(n).weekly_reset_minute=e),da(oe,()=>I(n).daily_reset_hour,e=>I(n).daily_reset_hour=e),da(ce,()=>I(n).daily_reset_minute,e=>I(n).daily_reset_minute=e),L(`click`,ue,l),z(e,t)};V(d,e=>{I(s)&&e(f)}),z(e,u),D()}Hr([`click`]);var kB=R(`

          Reset All Budgets

          Start new budget periods for every configured budget without changing - the limits.

          `);function AB(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=kB(),n=P(M(t),2),r=M(n);G(M(r),{name:`rotate-ccw`,class:`form-action-icon`}),Ue(2),T(r),T(n),T(t),F(()=>r.disabled=Y.resetAllLoading),L(`click`,r,()=>Y.openResetDialog()),z(e,t)},a=O(()=>_o.budgetsVisible());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}Hr([`click`]);function jB(){return{header:``,prefix:``,do_not_pass:!1,delimiter:``,managed:!1}}function MB(e){return(e&&Array.isArray(e.headers)?e.headers:[]).map(e=>({header:typeof e.header==`string`?e.header:``,prefix:typeof e.prefix==`string`?e.prefix:``,do_not_pass:e.do_not_pass===!0,delimiter:typeof e.delimiter==`string`&&e.delimiter!==`,`?e.delimiter:``,managed:e.managed===!0}))}function NB(e){return{headers:(Array.isArray(e)?e:[]).filter(e=>!e.managed&&e.header.trim()!==``).map(e=>({header:e.header.trim(),prefix:e.prefix,do_not_pass:e.do_not_pass,delimiter:e.delimiter}))}}function PB(e){return e&&e.error&&e.error.message?e.error.message:``}var FB=R(`

          Tagging based on headers

          `),IB=R(`config`),LB=R(``),RB=R(`
          `),zB=R(`

          No tagging headers configured. Requests are not labelled.

          `),BB=R(``),VB=R(`
          `,1);function HB(e,t){E(t,!0);let n=k(j([])),r=k(!0),i=k(!1),a=k(!1),o=k(``);function s(){I(n).push(jB())}function c(e){let t=I(n)[e];!t||t.managed||I(n).splice(e,1)}async function l(){A(i,!0),A(o,``);try{let e=await fo(`/admin/tagging/settings`,{label:`tagging settings`});if(e.stale)return;if(!e.ok){A(o,`Unable to load tagging settings.`);return}A(n,MB(e.data),!0),A(r,e.data&&e.data.editable!==!1,!0)}catch(e){console.error(`Failed to fetch tagging settings:`,e),A(o,`Unable to load tagging settings.`)}finally{A(i,!1)}}async function u(){if(!(I(a)||!I(r))){A(a,!0);try{let e=await po(`/admin/tagging/settings`,`PUT`,NB(I(n)),{label:`tagging settings`});if(e.stale)return;if(!e.ok){q.error(e.status!==401&&PB(e.data)||`Unable to save tagging settings.`);return}A(n,MB(e.data),!0),A(r,e.data&&e.data.editable!==!1,!0),A(o,``),q.success(`Tagging settings saved.`)}catch(e){console.error(`Failed to save tagging settings:`,e),q.error(`Unable to save tagging settings.`)}finally{A(a,!1)}}}An(()=>{K.refreshTick,l()});var d=VB(),f=N(d),p=M(f);Rx(p,{copyId:`tagging-settings-help-copy`,label:`tagging help`,text:`Each request is labelled from the listed headers; labels land in usage tracking and audit logs. A header value can carry several labels split by the delimiter (default: comma). The prefix is trimmed from each label only — the header itself is forwarded unchanged unless 'Do not pass' is checked. Rows marked CONFIG come from config.yaml or TAGGING_HEADER_* env vars and are read-only here.`,title:e=>{z(e,FB())},$$slots:{title:!0}});var m=P(p,2),h=M(m);H(h,17,()=>I(n),oi,(e,t,n)=>{var i=RB(),a=M(i),o=M(a);W(o,`for`,`tagging-header-`+n);var s=P(o,2);na(s),W(s,`id`,`tagging-header-`+n),T(a);var l=P(a,2),u=M(l);W(u,`for`,`tagging-prefix-`+n);var d=P(u,2);na(d),W(d,`id`,`tagging-prefix-`+n),T(l);var f=P(l,2),p=M(f);W(p,`for`,`tagging-delimiter-`+n);var m=P(p,2);na(m),W(m,`id`,`tagging-delimiter-`+n),T(f);var h=P(f,2),g=M(h);na(g),Ue(2),T(h);var _=P(h,2),v=M(_),y=e=>{z(e,IB())},b=e=>{var i=LB();F(()=>{i.disabled=!I(r),W(i,`aria-label`,`Remove tagging header `+(I(t).header||n+1))}),L(`click`,i,()=>c(n)),z(e,i)};V(v,e=>{I(t).managed?e(y):e(b,-1)}),T(_),T(i),F(()=>{s.disabled=I(t).managed||!I(r),d.disabled=I(t).managed||!I(r),m.disabled=I(t).managed||!I(r),g.disabled=I(t).managed||!I(r)}),da(s,()=>I(t).header,e=>I(t).header=e),da(d,()=>I(t).prefix,e=>I(t).prefix=e),da(m,()=>I(t).delimiter,e=>I(t).delimiter=e),fa(g,()=>I(t).do_not_pass,e=>I(t).do_not_pass=e),z(e,i)});var g=P(h,2),_=e=>{px(e,{size:16,label:`Loading tagging settings`})};V(g,e=>{I(i)&&e(_)});var v=P(g,2),y=e=>{z(e,zB())};V(v,e=>{!I(i)&&I(n).length===0&&e(y)}),T(m);var b=P(m,2),x=M(b);G(M(x),{name:`plus`,class:`form-action-icon`}),Ue(2),T(x);var S=P(x,2);G(M(S),{name:`save`,class:`form-action-icon`}),Ue(2),T(S),T(b),T(f);var C=P(f,2),w=M(C),ee=e=>{var t=BB(),n=M(t,!0);T(t),F(()=>B(n,I(o))),z(e,t)};V(w,e=>{I(o)&&e(ee)}),T(C),F(()=>{x.disabled=!I(r)||I(a)||I(i),S.disabled=!I(r)||I(a)||I(i),W(S,`aria-busy`,I(a)?`true`:`false`)}),L(`click`,x,s),L(`click`,S,u),z(e,d),D()}Hr([`click`]);function UB(e){let t=e||{};if(t.selectedPreset)return{days:parseInt(t.selectedPreset,10)||30};let n=t.customStartDate?as(t.customStartDate):``,r=t.customEndDate||t.today||null;return{start_date:n,end_date:r?as(r):``}}function WB(e,t,n,r){return{...UB(e),user_path:String(t||``).trim(),selector:String(n||``).trim(),confirmation:r}}function GB(e){let t=Number(e&&e.matched||0),n=Number(e&&e.recalculated||0),r=Number(e&&e.without_pricing||0),i=`Pricing recalculated for `+n+` of `+t+` usage record`+(t===1?``:`s`)+`.`;return r>0&&(i+=` `+r+` usage record`+(r===1?` still lacks`:`s still lack`)+` pricing metadata.`),i}var KB=R(`

          Usage Pricing Recalculation

          `),qB=R(`
          `);function JB(e,t){E(t,!0);let n=k(``),r=k(``),i=k(!1),a=O(()=>_o.booleanFlag(`USAGE_PRICING_RECALCULATION_ENABLED`,!1));function o(){if(!I(a)){q.error(`Usage pricing recalculation is unavailable.`);return}I(i)||jo.open({title:`Recalculate Pricing`,titleId:`pricingRecalculateDialogTitle`,inputId:`pricing-recalculate-confirmation`,requiredText:`recalculate`,confirmLabel:`Recalculate Pricing`,icon:`calculator`,dialogClass:`pricing-recalculate-dialog`,message:`Stored usage cost fields matching the selected filters will be overwritten.`,onConfirm:()=>s()})}async function s(){if(!I(a)){q.error(`Usage pricing recalculation is unavailable.`);return}if(!I(i)){A(i,!0);try{let e=await po(`/admin/usage/recalculate-pricing`,`POST`,WB({selectedPreset:Ts.selectedPreset,customStartDate:Ts.customStartDate,customEndDate:Ts.customEndDate,today:ao.todayDate()},I(n),I(r),`recalculate`),{label:`pricing recalculation`});if(e.stale)return;if(!e.ok){jo.error=`Unable to recalculate pricing.`;return}jo.close(),q.success(GB(e.data)),js.fetchUsage()}catch(e){console.error(`Failed to recalculate pricing:`,e),jo.error=`Unable to recalculate pricing.`}finally{A(i,!1)}}}var c=Qr(),l=N(c),u=e=>{var t=qB(),s=M(t);Rx(s,{copyId:`pricing-recalculate-help-copy`,label:`pricing recalculation help`,text:`Recalculate stored input, output, total, and Pro Saved costs from the current model pricing metadata. This overwrites matching historical cost fields. Filters are applied to the selected date range, user path subtree, and provider/model selector or alias.`,title:e=>{z(e,KB())},$$slots:{title:!0}});var c=P(s,2),l=M(c),u=P(M(l),2);Js(M(u),{}),T(u),T(l);var d=P(l,2),f=P(M(d),2);na(f),T(d);var p=P(d,2),m=P(M(p),2);na(m),T(p),T(c);var h=P(c,2),g=M(h);G(M(g),{name:`calculator`,class:`form-action-icon`}),Ue(2),T(g),T(h),T(t),F(()=>{g.disabled=I(i)||!I(a),W(g,`aria-busy`,I(i)?`true`:`false`)}),da(f,()=>I(n),e=>A(n,e)),da(m,()=>I(r),e=>A(r,e)),L(`click`,g,o),z(e,t)};V(l,e=>{I(a)&&e(u)}),z(e,c),D()}Hr([`click`]);function YB(e){return String(e&&e.status||`ok`).toLowerCase()}function XB(e){if(!e||typeof e!=`object`)return`Runtime refresh completed.`;let t=Number(e.model_count||0),n=Number(e.provider_count||0),r=YB(e);return(r===`ok`?`Runtime refreshed.`:r===`partial`?`Runtime refresh completed with warnings.`:`Runtime refresh failed.`)+` `+t+` model`+(t===1?``:`s`)+` across `+n+` provider`+(n===1?``:`s`)+`.`}function ZB(e){return!!e&&YB(e)===`ok`}function QB(e){let t=e&&e.steps;return Array.isArray(t)?t:[]}function $B(e){let t=String(e&&e.name||``).replace(/_/g,` `),n=String(e&&e.status||``).trim(),r=String(e&&(e.error||e.message)||``).trim();return t?r?t+`: `+n+` - `+r:t+`: `+n:r||n||``}var eV=R(`

          Runtime Refresh

          `),tV=R(`
        • `),nV=R(`
            `),rV=R(`
            `,1);function iV(e,t){E(t,!0);let n=k(!1),r=k(null);async function i(){if(!I(n)){A(n,!0),A(r,null);try{let e=await po(`/admin/runtime/refresh`,`POST`,void 0,{label:`runtime refresh`});if(e.stale)return;if(!e.ok){q.error(`Runtime refresh failed.`);return}A(r,e.data&&typeof e.data==`object`?e.data:null,!0),ZB(I(r))?q.success(XB(I(r))):q.error(XB(I(r))),K.refresh()}catch(e){console.error(`Failed to refresh runtime:`,e),q.error(`Runtime refresh failed.`)}finally{A(n,!1)}}}var a=rV(),o=N(a),s=M(o);Rx(s,{copyId:`runtime-refresh-help-copy`,label:`runtime refresh help`,text:`Pull the latest model metadata, provider inventory, API keys, aliases, model access rules, guardrails, and workflows.`,title:e=>{z(e,eV())},$$slots:{title:!0}});var c=P(s,2),l=M(c);let u;G(M(l),{name:`refresh-cw`,class:`settings-refresh-icon`}),Ue(2),T(l),T(c),T(o);var d=P(o,2),f=M(d),p=e=>{var t=nV();H(t,21,()=>QB(I(r)),e=>e.name,(e,t)=>{var n=tV(),r=M(n,!0);T(n),F(e=>{U(n,1,`runtime-refresh-step is-${I(t).status??``}`,`svelte-yeq2mp`),B(r,e)},[()=>$B(I(t))]),z(e,n)}),T(t),z(e,t)},m=O(()=>QB(I(r)).length>0);V(f,e=>{I(m)&&e(p)}),T(d),F(()=>{u=U(l,1,`btn btn-primary btn-with-icon settings-refresh-btn`,null,u,{"is-refreshing":I(n)}),l.disabled=I(n),W(l,`aria-busy`,I(n)?`true`:`false`)}),L(`click`,l,i),z(e,a),D()}Hr([`click`]);var aV=R(`
            `);function oV(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`settings`&&(ao.ensureOptions(),_o.ensureLoaded())});var n=aV(),r=P(M(n),2),i=M(r);hB(i,{});var a=P(i,2);vB(a,{});var o=P(a,2);OB(o,{});var s=P(o,2);AB(s,{});var c=P(s,2);HB(c,{});var l=P(c,2);JB(l,{}),iV(P(l,2),{}),T(r);var u=P(r,2),d=M(u,!0);T(u),T(n),F(e=>B(d,e),[()=>La()]),z(e,n),D()}var sV=R(`
            `);function cV(e,t){E(t,!0);let n={overview:cS,usage:YC,budgets:TT,"rate-limits":IE,models:vA,workflows:zM,"audit-logs":FI,guardrails:OL,"mcp-servers":cR,"providers-config":gz,"auth-keys":uB,settings:oV};ao.init(),Ts.init(),K.init(),Oa.init(),ka.init(),Ha.init(),An(()=>{K.refreshTick,_o.fetch(),Es.fetchModels(),Es.fetchCategories()}),An(()=>{document.body.classList.toggle(`dashboard-modal-open`,Aa.anyOpen)});let r=O(()=>n[Ha.page]||cS);var i=sV(),a=M(i);So(a,{});var o=P(a,2),s=M(o);Xo(s,{}),_i(P(s,2),()=>I(r),(e,t)=>{t(e,{})}),T(o);var c=P(o,2);ko(c,{});var l=P(c,2);Fo(l,{}),Jo(P(l,2),{}),T(i),z(e,i),D()}ti(cV,{target:document.getElementById(`app`)}); \ No newline at end of file diff --git a/internal/admin/dashboard/static/dist/index.html b/internal/admin/dashboard/static/dist/index.html index 94b8a970..cbc90251 100644 --- a/internal/admin/dashboard/static/dist/index.html +++ b/internal/admin/dashboard/static/dist/index.html @@ -7,7 +7,7 @@ GoModel Dashboard - + diff --git a/web/dashboard/CONVENTIONS.md b/web/dashboard/CONVENTIONS.md index cd0e17a0..586dc781 100644 --- a/web/dashboard/CONVENTIONS.md +++ b/web/dashboard/CONVENTIONS.md @@ -107,7 +107,14 @@ provider/model display) · `dateKeys.js` (UTC "YYYY-MM-DD" day-key math shared by the timezone store, the reporting window and the contribution calendar) · `chartTheme.js` (theme colors + the shared Chart.js style fragments) · `clipboard.svelte.js` · `debounce.js` · `storage.js` (localStorage can be -absent or blocked — never touch it directly) · `api/paths.js` (`gomodelPath`). +absent or blocked — never touch it directly) · `api/paths.js` (`gomodelPath`) · +`attachments.js` (`{@attach ...}` behaviours: `dismissOnOutside`, +`autofocusWithin`). + +For DOM behaviour tied to one element, prefer an attachment over `bind:this` + +`$effect`: the element arrives as the argument, the returned teardown runs with +the element, and a falsy expression (`{@attach open ? x(…) : undefined}`) +switches it off. ## Page skeleton diff --git a/web/dashboard/src/lib/api/eventStream.js b/web/dashboard/src/lib/api/eventStream.js new file mode 100644 index 00000000..8887bd67 --- /dev/null +++ b/web/dashboard/src/lib/api/eventStream.js @@ -0,0 +1,74 @@ +// Client for the gateway's SSE-framed admin streams (GET /admin/live/logs). +// +// Two consumers read that endpoint — the audit-log live stream +// (pages/audit-logs/live-logs-logic.js) and the overview's token-throughput +// signal stream (pages/overview/liveTokensState.svelte.js) — and each used to +// carry its own copy of the framing, the `data:` parsing and the reconnect +// backoff. The transport lives here once; the consumers keep their own +// policy (what to do with an event, when reconnecting is allowed). +// +// No imports, no runes: `live-logs-logic.js` is loaded directly by node --test, +// which cannot resolve the `$lib` alias, so it imports this module by relative +// path while bundled code uses `$lib/api/eventStream.js`. + +/** Stop retrying after this many consecutive failures (the delay stays capped). */ +export const MAX_RECONNECT_ATTEMPTS = 6; + +/** + * Read an SSE body to completion, decoding each frame's `data:` lines and + * handing the parsed JSON to `onEvent`. Frames that are not valid JSON are + * skipped; a trailing frame with no blank-line terminator is still flushed. + * + * @param {{read: () => Promise<{done: boolean, value?: Uint8Array}>}} reader + * @param {(event: unknown) => void} onEvent + */ +export async function consumeEventStream(reader, onEvent) { + const decoder = new TextDecoder(); + let buffer = ""; + while (true) { + const chunk = await reader.read(); + if (chunk.done) break; + buffer += decoder.decode(chunk.value, { stream: true }); + let delimiter; + while ((delimiter = buffer.match(/\r?\n\r?\n/))) { + const splitAt = delimiter.index; + const frame = buffer.slice(0, splitAt); + buffer = buffer.slice(splitAt + delimiter[0].length); + emitFrame(frame, onEvent); + } + } + buffer += decoder.decode(); + if (buffer.trim()) { + emitFrame(buffer, onEvent); + } +} + +function emitFrame(frame, onEvent) { + const lines = String(frame || "").split(/\r?\n/); + const data = []; + for (const line of lines) { + if (line.indexOf("data:") === 0) { + data.push(line.slice(5).trimStart()); + } + } + if (data.length === 0) return; + let event; + try { + event = JSON.parse(data.join("\n")); + } catch { + return; + } + onEvent(event); +} + +/** + * Next attempt number and its exponential backoff delay (500ms doubling, + * capped at 30s). `attempts` is the count of consecutive failures so far. + * + * @param {number} attempts + * @returns {{attempt: number, delay: number}} + */ +export function nextReconnect(attempts) { + const attempt = Math.min(Number(attempts || 0) + 1, MAX_RECONNECT_ATTEMPTS); + return { attempt, delay: Math.min(30000, 500 * Math.pow(2, attempt - 1)) }; +} diff --git a/web/dashboard/src/lib/components/atoms/Modal.svelte b/web/dashboard/src/lib/components/atoms/Modal.svelte index 9481c156..2550882a 100644 --- a/web/dashboard/src/lib/components/atoms/Modal.svelte +++ b/web/dashboard/src/lib/components/atoms/Modal.svelte @@ -4,8 +4,9 @@ // lock (via the modals store), and autofocus of [data-modal-autofocus]. // Children render inside the shell; give the top-level child the dialog // role/class (e.g.