tokentracker-cli 0.29.2 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +3 -1
- package/README.ko.md +3 -1
- package/README.md +3 -1
- package/README.zh-CN.md +3 -1
- package/dashboard/dist/assets/ActivityHeatmap-D8lXQtTi.js +42 -0
- package/dashboard/dist/assets/{Card-DSgpCS30.js → Card-CzL-eInd.js} +1 -1
- package/dashboard/dist/assets/DashboardPage-CsR8XWxj.js +19 -0
- package/dashboard/dist/assets/{DevicePage-CvrCNfjD.js → DevicePage-XTngLOwj.js} +1 -1
- package/dashboard/dist/assets/DialogTitle-Csg36lAf.js +12 -0
- package/dashboard/dist/assets/FadeIn-Db32waF2.js +1 -0
- package/dashboard/dist/assets/{HeaderGithubStar-B98VaHbR.js → HeaderGithubStar-DliHDaOa.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-CJxv_Sd8.js → IpCheckPage-F5CeRlub.js} +1 -1
- package/dashboard/dist/assets/LandingPage-2_sEF9mN.js +4356 -0
- package/dashboard/dist/assets/{LeaderboardAvatar-D6qRteef.js → LeaderboardAvatar-C9VP8195.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-CgtoFmMi.js → LeaderboardPage-Za_4Qq0N.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfileModal-OTLhvzV6.js → LeaderboardProfileModal-BGDd6bjd.js} +2 -2
- package/dashboard/dist/assets/LeaderboardProfilePage-CuGbG8_n.js +1 -0
- package/dashboard/dist/assets/LimitsPage-DlcSiBHP.js +2 -0
- package/dashboard/dist/assets/{LocalOnlyNotice-3LPVUJ2h.js → LocalOnlyNotice-BNFZWAB2.js} +1 -1
- package/dashboard/dist/assets/LoginPage-UkyGRtTz.js +1 -0
- package/dashboard/dist/assets/PopoverPopup-Bg0LqxYF.js +1 -0
- package/dashboard/dist/assets/SettingsPage-D3gNWvI6.js +1 -0
- package/dashboard/dist/assets/SkillsPage-ChO2jmQM.js +1 -0
- package/dashboard/dist/assets/WidgetsPage-BzPEEeI3.js +1 -0
- package/dashboard/dist/assets/{WrappedPage-Cp8uyLbu.js → WrappedPage-DpP5X0ug.js} +1 -1
- package/dashboard/dist/assets/agent-logos-BgjfCDVs.js +1 -0
- package/dashboard/dist/assets/{arrow-up-right-CBzDSqD7.js → arrow-up-right-BTb5Q4za.js} +1 -1
- package/dashboard/dist/assets/check-L6OoQyFg.js +1 -0
- package/dashboard/dist/assets/{chevron-down--Hb5e71i.js → chevron-down-DaLDjB50.js} +1 -1
- package/dashboard/dist/assets/{download-BaVXaxbw.js → download-B3izgOD2.js} +1 -1
- package/dashboard/dist/assets/{info-WGRGGnfx.js → info-D9m3SBry.js} +1 -1
- package/dashboard/dist/assets/main-CvZdsRCc.css +1 -0
- package/dashboard/dist/assets/main-y2PTR9Ni.js +959 -0
- package/dashboard/dist/assets/{use-limits-display-prefs-C1AkRZcO.js → use-limits-display-prefs--sTkiVYR.js} +1 -1
- package/dashboard/dist/assets/{use-native-settings-DdooJHwm.js → use-native-settings-CI8nzpC4.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-D1mepldk.js → use-usage-limits-DHoQOqOL.js} +1 -1
- package/dashboard/dist/assets/useCurrency-DyV36y25.js +1 -0
- package/dashboard/dist/dashboard-dark.png +0 -0
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist/share.html +2 -2
- package/package.json +1 -1
- package/src/lib/local-api.js +67 -0
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/skill-usage.js +267 -0
- package/src/lib/skills-manager.js +371 -13
- package/dashboard/dist/assets/ActivityHeatmap-C7-tnMYf.js +0 -42
- package/dashboard/dist/assets/DashboardPage-CB6VzM2W.js +0 -1
- package/dashboard/dist/assets/DialogTitle-B-afswln.js +0 -12
- package/dashboard/dist/assets/FadeIn-D1-QPLIW.js +0 -1
- package/dashboard/dist/assets/LandingPage-CIOqWNDm.js +0 -4356
- package/dashboard/dist/assets/LeaderboardProfilePage-C7OaZcf2.js +0 -1
- package/dashboard/dist/assets/LimitsPage-pyyJbh3F.js +0 -2
- package/dashboard/dist/assets/LoginPage-CDLz8PnP.js +0 -1
- package/dashboard/dist/assets/PopoverPopup-97Rik7mb.js +0 -1
- package/dashboard/dist/assets/ProviderIcon-XOgnf2pw.js +0 -1
- package/dashboard/dist/assets/SettingsPage-KVjKUepK.js +0 -1
- package/dashboard/dist/assets/SkillsPage-DyIY1U9O.js +0 -1
- package/dashboard/dist/assets/WidgetsPage-BU7ejAYd.js +0 -1
- package/dashboard/dist/assets/check-Bsgzg2T8.js +0 -1
- package/dashboard/dist/assets/main-ClqhPPd3.css +0 -1
- package/dashboard/dist/assets/main-DDTfmaoo.js +0 -854
- package/dashboard/dist/assets/use-reduced-motion-wvh7iFTi.js +0 -1
- package/dashboard/dist/assets/useCurrency-C3szwbkj.js +0 -1
|
@@ -1,854 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardPage-CB6VzM2W.js","assets/use-usage-limits-D1mepldk.js","assets/useCurrency-C3szwbkj.js","assets/ActivityHeatmap-C7-tnMYf.js","assets/info-WGRGGnfx.js","assets/DialogTitle-B-afswln.js","assets/PopoverPopup-97Rik7mb.js","assets/Card-DSgpCS30.js","assets/use-reduced-motion-wvh7iFTi.js","assets/ProviderIcon-XOgnf2pw.js","assets/FadeIn-D1-QPLIW.js","assets/LandingPage-CIOqWNDm.js","assets/HeaderGithubStar-B98VaHbR.js","assets/LeaderboardPage-CgtoFmMi.js","assets/LeaderboardAvatar-D6qRteef.js","assets/chevron-down--Hb5e71i.js","assets/LeaderboardProfilePage-C7OaZcf2.js","assets/LeaderboardProfileModal-OTLhvzV6.js","assets/arrow-up-right-CBzDSqD7.js","assets/check-Bsgzg2T8.js","assets/LimitsPage-pyyJbh3F.js","assets/use-limits-display-prefs-C1AkRZcO.js","assets/LocalOnlyNotice-3LPVUJ2h.js","assets/download-BaVXaxbw.js","assets/SettingsPage-KVjKUepK.js","assets/use-native-settings-DdooJHwm.js","assets/SkillsPage-DyIY1U9O.js","assets/WidgetsPage-BU7ejAYd.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
function ES(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&&!Array.isArray(r)){for(const o in r)if(o!=="default"&&!(o in e)){const s=Object.getOwnPropertyDescriptor(r,o);s&&Object.defineProperty(e,o,s.get?s:{enumerable:!0,get:()=>r[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const c of s.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&r(c)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();function R_(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function AS(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if(typeof t=="function"){var n=function r(){var o=!1;try{o=this instanceof r}catch{}return o?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),n}var gh={exports:{}},us={},yh={exports:{}},Ze={};var Oy;function RS(){if(Oy)return Ze;Oy=1;var e=Symbol.for("react.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),c=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),y=Symbol.iterator;function k(M){return M===null||typeof M!="object"?null:(M=y&&M[y]||M["@@iterator"],typeof M=="function"?M:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x=Object.assign,C={};function S(M,q,xe){this.props=M,this.context=q,this.refs=C,this.updater=xe||w}S.prototype.isReactComponent={},S.prototype.setState=function(M,q){if(typeof M!="object"&&typeof M!="function"&&M!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,M,q,"setState")},S.prototype.forceUpdate=function(M){this.updater.enqueueForceUpdate(this,M,"forceUpdate")};function D(){}D.prototype=S.prototype;function L(M,q,xe){this.props=M,this.context=q,this.refs=C,this.updater=xe||w}var R=L.prototype=new D;R.constructor=L,x(R,S.prototype),R.isPureReactComponent=!0;var O=Array.isArray,K=Object.prototype.hasOwnProperty,W={current:null},z={key:!0,ref:!0,__self:!0,__source:!0};function P(M,q,xe){var Re,Pe={},Te=null,Ke=null;if(q!=null)for(Re in q.ref!==void 0&&(Ke=q.ref),q.key!==void 0&&(Te=""+q.key),q)K.call(q,Re)&&!z.hasOwnProperty(Re)&&(Pe[Re]=q[Re]);var Qe=arguments.length-2;if(Qe===1)Pe.children=xe;else if(1<Qe){for(var Ue=Array(Qe),jt=0;jt<Qe;jt++)Ue[jt]=arguments[jt+2];Pe.children=Ue}if(M&&M.defaultProps)for(Re in Qe=M.defaultProps,Qe)Pe[Re]===void 0&&(Pe[Re]=Qe[Re]);return{$$typeof:e,type:M,key:Te,ref:Ke,props:Pe,_owner:W.current}}function Y(M,q){return{$$typeof:e,type:M.type,key:q,ref:M.ref,props:M.props,_owner:M._owner}}function X(M){return typeof M=="object"&&M!==null&&M.$$typeof===e}function ue(M){var q={"=":"=0",":":"=2"};return"$"+M.replace(/[=:]/g,function(xe){return q[xe]})}var se=/\/+/g;function Ae(M,q){return typeof M=="object"&&M!==null&&M.key!=null?ue(""+M.key):q.toString(36)}function pe(M,q,xe,Re,Pe){var Te=typeof M;(Te==="undefined"||Te==="boolean")&&(M=null);var Ke=!1;if(M===null)Ke=!0;else switch(Te){case"string":case"number":Ke=!0;break;case"object":switch(M.$$typeof){case e:case t:Ke=!0}}if(Ke)return Ke=M,Pe=Pe(Ke),M=Re===""?"."+Ae(Ke,0):Re,O(Pe)?(xe="",M!=null&&(xe=M.replace(se,"$&/")+"/"),pe(Pe,q,xe,"",function(jt){return jt})):Pe!=null&&(X(Pe)&&(Pe=Y(Pe,xe+(!Pe.key||Ke&&Ke.key===Pe.key?"":(""+Pe.key).replace(se,"$&/")+"/")+M)),q.push(Pe)),1;if(Ke=0,Re=Re===""?".":Re+":",O(M))for(var Qe=0;Qe<M.length;Qe++){Te=M[Qe];var Ue=Re+Ae(Te,Qe);Ke+=pe(Te,q,xe,Ue,Pe)}else if(Ue=k(M),typeof Ue=="function")for(M=Ue.call(M),Qe=0;!(Te=M.next()).done;)Te=Te.value,Ue=Re+Ae(Te,Qe++),Ke+=pe(Te,q,xe,Ue,Pe);else if(Te==="object")throw q=String(M),Error("Objects are not valid as a React child (found: "+(q==="[object Object]"?"object with keys {"+Object.keys(M).join(", ")+"}":q)+"). If you meant to render a collection of children, use an array instead.");return Ke}function le(M,q,xe){if(M==null)return M;var Re=[],Pe=0;return pe(M,Re,"","",function(Te){return q.call(xe,Te,Pe++)}),Re}function fe(M){if(M._status===-1){var q=M._result;q=q(),q.then(function(xe){(M._status===0||M._status===-1)&&(M._status=1,M._result=xe)},function(xe){(M._status===0||M._status===-1)&&(M._status=2,M._result=xe)}),M._status===-1&&(M._status=0,M._result=q)}if(M._status===1)return M._result.default;throw M._result}var Ne={current:null},G={transition:null},Z={ReactCurrentDispatcher:Ne,ReactCurrentBatchConfig:G,ReactCurrentOwner:W};function $(){throw Error("act(...) is not supported in production builds of React.")}return Ze.Children={map:le,forEach:function(M,q,xe){le(M,function(){q.apply(this,arguments)},xe)},count:function(M){var q=0;return le(M,function(){q++}),q},toArray:function(M){return le(M,function(q){return q})||[]},only:function(M){if(!X(M))throw Error("React.Children.only expected to receive a single React element child.");return M}},Ze.Component=S,Ze.Fragment=n,Ze.Profiler=o,Ze.PureComponent=L,Ze.StrictMode=r,Ze.Suspense=h,Ze.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Z,Ze.act=$,Ze.cloneElement=function(M,q,xe){if(M==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+M+".");var Re=x({},M.props),Pe=M.key,Te=M.ref,Ke=M._owner;if(q!=null){if(q.ref!==void 0&&(Te=q.ref,Ke=W.current),q.key!==void 0&&(Pe=""+q.key),M.type&&M.type.defaultProps)var Qe=M.type.defaultProps;for(Ue in q)K.call(q,Ue)&&!z.hasOwnProperty(Ue)&&(Re[Ue]=q[Ue]===void 0&&Qe!==void 0?Qe[Ue]:q[Ue])}var Ue=arguments.length-2;if(Ue===1)Re.children=xe;else if(1<Ue){Qe=Array(Ue);for(var jt=0;jt<Ue;jt++)Qe[jt]=arguments[jt+2];Re.children=Qe}return{$$typeof:e,type:M.type,key:Pe,ref:Te,props:Re,_owner:Ke}},Ze.createContext=function(M){return M={$$typeof:c,_currentValue:M,_currentValue2:M,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},M.Provider={$$typeof:s,_context:M},M.Consumer=M},Ze.createElement=P,Ze.createFactory=function(M){var q=P.bind(null,M);return q.type=M,q},Ze.createRef=function(){return{current:null}},Ze.forwardRef=function(M){return{$$typeof:u,render:M}},Ze.isValidElement=X,Ze.lazy=function(M){return{$$typeof:m,_payload:{_status:-1,_result:M},_init:fe}},Ze.memo=function(M,q){return{$$typeof:p,type:M,compare:q===void 0?null:q}},Ze.startTransition=function(M){var q=G.transition;G.transition={};try{M()}finally{G.transition=q}},Ze.unstable_act=$,Ze.useCallback=function(M,q){return Ne.current.useCallback(M,q)},Ze.useContext=function(M){return Ne.current.useContext(M)},Ze.useDebugValue=function(){},Ze.useDeferredValue=function(M){return Ne.current.useDeferredValue(M)},Ze.useEffect=function(M,q){return Ne.current.useEffect(M,q)},Ze.useId=function(){return Ne.current.useId()},Ze.useImperativeHandle=function(M,q,xe){return Ne.current.useImperativeHandle(M,q,xe)},Ze.useInsertionEffect=function(M,q){return Ne.current.useInsertionEffect(M,q)},Ze.useLayoutEffect=function(M,q){return Ne.current.useLayoutEffect(M,q)},Ze.useMemo=function(M,q){return Ne.current.useMemo(M,q)},Ze.useReducer=function(M,q,xe){return Ne.current.useReducer(M,q,xe)},Ze.useRef=function(M){return Ne.current.useRef(M)},Ze.useState=function(M){return Ne.current.useState(M)},Ze.useSyncExternalStore=function(M,q,xe){return Ne.current.useSyncExternalStore(M,q,xe)},Ze.useTransition=function(){return Ne.current.useTransition()},Ze.version="18.3.1",Ze}var jy;function Xp(){return jy||(jy=1,yh.exports=RS()),yh.exports}var Uy;function LS(){if(Uy)return us;Uy=1;var e=Xp(),t=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,o=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(u,h,p){var m,y={},k=null,w=null;p!==void 0&&(k=""+p),h.key!==void 0&&(k=""+h.key),h.ref!==void 0&&(w=h.ref);for(m in h)r.call(h,m)&&!s.hasOwnProperty(m)&&(y[m]=h[m]);if(u&&u.defaultProps)for(m in h=u.defaultProps,h)y[m]===void 0&&(y[m]=h[m]);return{$$typeof:t,type:u,key:k,ref:w,props:y,_owner:o.current}}return us.Fragment=n,us.jsx=c,us.jsxs=c,us}var By;function DS(){return By||(By=1,gh.exports=LS()),gh.exports}var N=DS(),b=Xp();const Ls=R_(b),IS=ES({__proto__:null,default:Ls},[b]);var uc={},vh={exports:{}},vn={},kh={exports:{}},_h={};var Fy;function MS(){return Fy||(Fy=1,(function(e){function t(G,Z){var $=G.length;G.push(Z);e:for(;0<$;){var M=$-1>>>1,q=G[M];if(0<o(q,Z))G[M]=Z,G[$]=q,$=M;else break e}}function n(G){return G.length===0?null:G[0]}function r(G){if(G.length===0)return null;var Z=G[0],$=G.pop();if($!==Z){G[0]=$;e:for(var M=0,q=G.length,xe=q>>>1;M<xe;){var Re=2*(M+1)-1,Pe=G[Re],Te=Re+1,Ke=G[Te];if(0>o(Pe,$))Te<q&&0>o(Ke,Pe)?(G[M]=Ke,G[Te]=$,M=Te):(G[M]=Pe,G[Re]=$,M=Re);else if(Te<q&&0>o(Ke,$))G[M]=Ke,G[Te]=$,M=Te;else break e}}return Z}function o(G,Z){var $=G.sortIndex-Z.sortIndex;return $!==0?$:G.id-Z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var c=Date,u=c.now();e.unstable_now=function(){return c.now()-u}}var h=[],p=[],m=1,y=null,k=3,w=!1,x=!1,C=!1,S=typeof setTimeout=="function"?setTimeout:null,D=typeof clearTimeout=="function"?clearTimeout:null,L=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function R(G){for(var Z=n(p);Z!==null;){if(Z.callback===null)r(p);else if(Z.startTime<=G)r(p),Z.sortIndex=Z.expirationTime,t(h,Z);else break;Z=n(p)}}function O(G){if(C=!1,R(G),!x)if(n(h)!==null)x=!0,fe(K);else{var Z=n(p);Z!==null&&Ne(O,Z.startTime-G)}}function K(G,Z){x=!1,C&&(C=!1,D(P),P=-1),w=!0;var $=k;try{for(R(Z),y=n(h);y!==null&&(!(y.expirationTime>Z)||G&&!ue());){var M=y.callback;if(typeof M=="function"){y.callback=null,k=y.priorityLevel;var q=M(y.expirationTime<=Z);Z=e.unstable_now(),typeof q=="function"?y.callback=q:y===n(h)&&r(h),R(Z)}else r(h);y=n(h)}if(y!==null)var xe=!0;else{var Re=n(p);Re!==null&&Ne(O,Re.startTime-Z),xe=!1}return xe}finally{y=null,k=$,w=!1}}var W=!1,z=null,P=-1,Y=5,X=-1;function ue(){return!(e.unstable_now()-X<Y)}function se(){if(z!==null){var G=e.unstable_now();X=G;var Z=!0;try{Z=z(!0,G)}finally{Z?Ae():(W=!1,z=null)}}else W=!1}var Ae;if(typeof L=="function")Ae=function(){L(se)};else if(typeof MessageChannel<"u"){var pe=new MessageChannel,le=pe.port2;pe.port1.onmessage=se,Ae=function(){le.postMessage(null)}}else Ae=function(){S(se,0)};function fe(G){z=G,W||(W=!0,Ae())}function Ne(G,Z){P=S(function(){G(e.unstable_now())},Z)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(G){G.callback=null},e.unstable_continueExecution=function(){x||w||(x=!0,fe(K))},e.unstable_forceFrameRate=function(G){0>G||125<G?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Y=0<G?Math.floor(1e3/G):5},e.unstable_getCurrentPriorityLevel=function(){return k},e.unstable_getFirstCallbackNode=function(){return n(h)},e.unstable_next=function(G){switch(k){case 1:case 2:case 3:var Z=3;break;default:Z=k}var $=k;k=Z;try{return G()}finally{k=$}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(G,Z){switch(G){case 1:case 2:case 3:case 4:case 5:break;default:G=3}var $=k;k=G;try{return Z()}finally{k=$}},e.unstable_scheduleCallback=function(G,Z,$){var M=e.unstable_now();switch(typeof $=="object"&&$!==null?($=$.delay,$=typeof $=="number"&&0<$?M+$:M):$=M,G){case 1:var q=-1;break;case 2:q=250;break;case 5:q=1073741823;break;case 4:q=1e4;break;default:q=5e3}return q=$+q,G={id:m++,callback:Z,priorityLevel:G,startTime:$,expirationTime:q,sortIndex:-1},$>M?(G.sortIndex=$,t(p,G),n(h)===null&&G===n(p)&&(C?(D(P),P=-1):C=!0,Ne(O,$-M))):(G.sortIndex=q,t(h,G),x||w||(x=!0,fe(K))),G},e.unstable_shouldYield=ue,e.unstable_wrapCallback=function(G){var Z=k;return function(){var $=k;k=Z;try{return G.apply(this,arguments)}finally{k=$}}}})(_h)),_h}var Vy;function NS(){return Vy||(Vy=1,kh.exports=MS()),kh.exports}var zy;function OS(){if(zy)return vn;zy=1;var e=Xp(),t=NS();function n(a){for(var i="https://reactjs.org/docs/error-decoder.html?invariant="+a,l=1;l<arguments.length;l++)i+="&args[]="+encodeURIComponent(arguments[l]);return"Minified React error #"+a+"; visit "+i+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var r=new Set,o={};function s(a,i){c(a,i),c(a+"Capture",i)}function c(a,i){for(o[a]=i,a=0;a<i.length;a++)r.add(i[a])}var u=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),h=Object.prototype.hasOwnProperty,p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,m={},y={};function k(a){return h.call(y,a)?!0:h.call(m,a)?!1:p.test(a)?y[a]=!0:(m[a]=!0,!1)}function w(a,i,l,d){if(l!==null&&l.type===0)return!1;switch(typeof i){case"function":case"symbol":return!0;case"boolean":return d?!1:l!==null?!l.acceptsBooleans:(a=a.toLowerCase().slice(0,5),a!=="data-"&&a!=="aria-");default:return!1}}function x(a,i,l,d){if(i===null||typeof i>"u"||w(a,i,l,d))return!0;if(d)return!1;if(l!==null)switch(l.type){case 3:return!i;case 4:return i===!1;case 5:return isNaN(i);case 6:return isNaN(i)||1>i}return!1}function C(a,i,l,d,f,g,_){this.acceptsBooleans=i===2||i===3||i===4,this.attributeName=d,this.attributeNamespace=f,this.mustUseProperty=l,this.propertyName=a,this.type=i,this.sanitizeURL=g,this.removeEmptyString=_}var S={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){S[a]=new C(a,0,!1,a,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var i=a[0];S[i]=new C(i,1,!1,a[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(a){S[a]=new C(a,2,!1,a.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){S[a]=new C(a,2,!1,a,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){S[a]=new C(a,3,!1,a.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(a){S[a]=new C(a,3,!0,a,null,!1,!1)}),["capture","download"].forEach(function(a){S[a]=new C(a,4,!1,a,null,!1,!1)}),["cols","rows","size","span"].forEach(function(a){S[a]=new C(a,6,!1,a,null,!1,!1)}),["rowSpan","start"].forEach(function(a){S[a]=new C(a,5,!1,a.toLowerCase(),null,!1,!1)});var D=/[\-:]([a-z])/g;function L(a){return a[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var i=a.replace(D,L);S[i]=new C(i,1,!1,a,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var i=a.replace(D,L);S[i]=new C(i,1,!1,a,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(a){var i=a.replace(D,L);S[i]=new C(i,1,!1,a,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(a){S[a]=new C(a,1,!1,a.toLowerCase(),null,!1,!1)}),S.xlinkHref=new C("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(a){S[a]=new C(a,1,!1,a.toLowerCase(),null,!0,!0)});function R(a,i,l,d){var f=S.hasOwnProperty(i)?S[i]:null;(f!==null?f.type!==0:d||!(2<i.length)||i[0]!=="o"&&i[0]!=="O"||i[1]!=="n"&&i[1]!=="N")&&(x(i,l,f,d)&&(l=null),d||f===null?k(i)&&(l===null?a.removeAttribute(i):a.setAttribute(i,""+l)):f.mustUseProperty?a[f.propertyName]=l===null?f.type===3?!1:"":l:(i=f.attributeName,d=f.attributeNamespace,l===null?a.removeAttribute(i):(f=f.type,l=f===3||f===4&&l===!0?"":""+l,d?a.setAttributeNS(d,i,l):a.setAttribute(i,l))))}var O=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,K=Symbol.for("react.element"),W=Symbol.for("react.portal"),z=Symbol.for("react.fragment"),P=Symbol.for("react.strict_mode"),Y=Symbol.for("react.profiler"),X=Symbol.for("react.provider"),ue=Symbol.for("react.context"),se=Symbol.for("react.forward_ref"),Ae=Symbol.for("react.suspense"),pe=Symbol.for("react.suspense_list"),le=Symbol.for("react.memo"),fe=Symbol.for("react.lazy"),Ne=Symbol.for("react.offscreen"),G=Symbol.iterator;function Z(a){return a===null||typeof a!="object"?null:(a=G&&a[G]||a["@@iterator"],typeof a=="function"?a:null)}var $=Object.assign,M;function q(a){if(M===void 0)try{throw Error()}catch(l){var i=l.stack.trim().match(/\n( *(at )?)/);M=i&&i[1]||""}return`
|
|
3
|
-
`+M+a}var xe=!1;function Re(a,i){if(!a||xe)return"";xe=!0;var l=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(i)if(i=function(){throw Error()},Object.defineProperty(i.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(i,[])}catch(H){var d=H}Reflect.construct(a,[],i)}else{try{i.call()}catch(H){d=H}a.call(i.prototype)}else{try{throw Error()}catch(H){d=H}a()}}catch(H){if(H&&d&&typeof H.stack=="string"){for(var f=H.stack.split(`
|
|
4
|
-
`),g=d.stack.split(`
|
|
5
|
-
`),_=f.length-1,E=g.length-1;1<=_&&0<=E&&f[_]!==g[E];)E--;for(;1<=_&&0<=E;_--,E--)if(f[_]!==g[E]){if(_!==1||E!==1)do if(_--,E--,0>E||f[_]!==g[E]){var I=`
|
|
6
|
-
`+f[_].replace(" at new "," at ");return a.displayName&&I.includes("<anonymous>")&&(I=I.replace("<anonymous>",a.displayName)),I}while(1<=_&&0<=E);break}}}finally{xe=!1,Error.prepareStackTrace=l}return(a=a?a.displayName||a.name:"")?q(a):""}function Pe(a){switch(a.tag){case 5:return q(a.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return a=Re(a.type,!1),a;case 11:return a=Re(a.type.render,!1),a;case 1:return a=Re(a.type,!0),a;default:return""}}function Te(a){if(a==null)return null;if(typeof a=="function")return a.displayName||a.name||null;if(typeof a=="string")return a;switch(a){case z:return"Fragment";case W:return"Portal";case Y:return"Profiler";case P:return"StrictMode";case Ae:return"Suspense";case pe:return"SuspenseList"}if(typeof a=="object")switch(a.$$typeof){case ue:return(a.displayName||"Context")+".Consumer";case X:return(a._context.displayName||"Context")+".Provider";case se:var i=a.render;return a=a.displayName,a||(a=i.displayName||i.name||"",a=a!==""?"ForwardRef("+a+")":"ForwardRef"),a;case le:return i=a.displayName||null,i!==null?i:Te(a.type)||"Memo";case fe:i=a._payload,a=a._init;try{return Te(a(i))}catch{}}return null}function Ke(a){var i=a.type;switch(a.tag){case 24:return"Cache";case 9:return(i.displayName||"Context")+".Consumer";case 10:return(i._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return a=i.render,a=a.displayName||a.name||"",i.displayName||(a!==""?"ForwardRef("+a+")":"ForwardRef");case 7:return"Fragment";case 5:return i;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Te(i);case 8:return i===P?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof i=="function")return i.displayName||i.name||null;if(typeof i=="string")return i}return null}function Qe(a){switch(typeof a){case"boolean":case"number":case"string":case"undefined":return a;case"object":return a;default:return""}}function Ue(a){var i=a.type;return(a=a.nodeName)&&a.toLowerCase()==="input"&&(i==="checkbox"||i==="radio")}function jt(a){var i=Ue(a)?"checked":"value",l=Object.getOwnPropertyDescriptor(a.constructor.prototype,i),d=""+a[i];if(!a.hasOwnProperty(i)&&typeof l<"u"&&typeof l.get=="function"&&typeof l.set=="function"){var f=l.get,g=l.set;return Object.defineProperty(a,i,{configurable:!0,get:function(){return f.call(this)},set:function(_){d=""+_,g.call(this,_)}}),Object.defineProperty(a,i,{enumerable:l.enumerable}),{getValue:function(){return d},setValue:function(_){d=""+_},stopTracking:function(){a._valueTracker=null,delete a[i]}}}}function $n(a){a._valueTracker||(a._valueTracker=jt(a))}function Ca(a){if(!a)return!1;var i=a._valueTracker;if(!i)return!0;var l=i.getValue(),d="";return a&&(d=Ue(a)?a.checked?"true":"false":a.value),a=d,a!==l?(i.setValue(a),!0):!1}function ft(a){if(a=a||(typeof document<"u"?document:void 0),typeof a>"u")return null;try{return a.activeElement||a.body}catch{return a.body}}function en(a,i){var l=i.checked;return $({},i,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:l??a._wrapperState.initialChecked})}function Po(a,i){var l=i.defaultValue==null?"":i.defaultValue,d=i.checked!=null?i.checked:i.defaultChecked;l=Qe(i.value!=null?i.value:l),a._wrapperState={initialChecked:d,initialValue:l,controlled:i.type==="checkbox"||i.type==="radio"?i.checked!=null:i.value!=null}}function al(a,i){i=i.checked,i!=null&&R(a,"checked",i,!1)}function Wn(a,i){al(a,i);var l=Qe(i.value),d=i.type;if(l!=null)d==="number"?(l===0&&a.value===""||a.value!=l)&&(a.value=""+l):a.value!==""+l&&(a.value=""+l);else if(d==="submit"||d==="reset"){a.removeAttribute("value");return}i.hasOwnProperty("value")?So(a,i.type,l):i.hasOwnProperty("defaultValue")&&So(a,i.type,Qe(i.defaultValue)),i.checked==null&&i.defaultChecked!=null&&(a.defaultChecked=!!i.defaultChecked)}function rl(a,i,l){if(i.hasOwnProperty("value")||i.hasOwnProperty("defaultValue")){var d=i.type;if(!(d!=="submit"&&d!=="reset"||i.value!==void 0&&i.value!==null))return;i=""+a._wrapperState.initialValue,l||i===a.value||(a.value=i),a.defaultValue=i}l=a.name,l!==""&&(a.name=""),a.defaultChecked=!!a._wrapperState.initialChecked,l!==""&&(a.name=l)}function So(a,i,l){(i!=="number"||ft(a.ownerDocument)!==a)&&(l==null?a.defaultValue=""+a._wrapperState.initialValue:a.defaultValue!==""+l&&(a.defaultValue=""+l))}var qa=Array.isArray;function Ya(a,i,l,d){if(a=a.options,i){i={};for(var f=0;f<l.length;f++)i["$"+l[f]]=!0;for(l=0;l<a.length;l++)f=i.hasOwnProperty("$"+a[l].value),a[l].selected!==f&&(a[l].selected=f),f&&d&&(a[l].defaultSelected=!0)}else{for(l=""+Qe(l),i=null,f=0;f<a.length;f++){if(a[f].value===l){a[f].selected=!0,d&&(a[f].defaultSelected=!0);return}i!==null||a[f].disabled||(i=a[f])}i!==null&&(i.selected=!0)}}function Co(a,i){if(i.dangerouslySetInnerHTML!=null)throw Error(n(91));return $({},i,{value:void 0,defaultValue:void 0,children:""+a._wrapperState.initialValue})}function il(a,i){var l=i.value;if(l==null){if(l=i.children,i=i.defaultValue,l!=null){if(i!=null)throw Error(n(92));if(qa(l)){if(1<l.length)throw Error(n(93));l=l[0]}i=l}i==null&&(i=""),l=i}a._wrapperState={initialValue:Qe(l)}}function ol(a,i){var l=Qe(i.value),d=Qe(i.defaultValue);l!=null&&(l=""+l,l!==a.value&&(a.value=l),i.defaultValue==null&&a.defaultValue!==l&&(a.defaultValue=l)),d!=null&&(a.defaultValue=""+d)}function la(a){var i=a.textContent;i===a._wrapperState.initialValue&&i!==""&&i!==null&&(a.value=i)}function Za(a){switch(a){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function vi(a,i){return a==null||a==="http://www.w3.org/1999/xhtml"?Za(i):a==="http://www.w3.org/2000/svg"&&i==="foreignObject"?"http://www.w3.org/1999/xhtml":a}var Xa,Cn=(function(a){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(i,l,d,f){MSApp.execUnsafeLocalFunction(function(){return a(i,l,d,f)})}:a})(function(a,i){if(a.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in a)a.innerHTML=i;else{for(Xa=Xa||document.createElement("div"),Xa.innerHTML="<svg>"+i.valueOf().toString()+"</svg>",i=Xa.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;i.firstChild;)a.appendChild(i.firstChild)}});function tn(a,i){if(i){var l=a.firstChild;if(l&&l===a.lastChild&&l.nodeType===3){l.nodeValue=i;return}}a.textContent=i}var Qa={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Ou=["Webkit","ms","Moz","O"];Object.keys(Qa).forEach(function(a){Ou.forEach(function(i){i=i+a.charAt(0).toUpperCase()+a.substring(1),Qa[i]=Qa[a]})});function ki(a,i,l){return i==null||typeof i=="boolean"||i===""?"":l||typeof i!="number"||i===0||Qa.hasOwnProperty(a)&&Qa[a]?(""+i).trim():i+"px"}function sl(a,i){a=a.style;for(var l in i)if(i.hasOwnProperty(l)){var d=l.indexOf("--")===0,f=ki(l,i[l],d);l==="float"&&(l="cssFloat"),d?a.setProperty(l,f):a[l]=f}}var Gn=$({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _i(a,i){if(i){if(Gn[a]&&(i.children!=null||i.dangerouslySetInnerHTML!=null))throw Error(n(137,a));if(i.dangerouslySetInnerHTML!=null){if(i.children!=null)throw Error(n(60));if(typeof i.dangerouslySetInnerHTML!="object"||!("__html"in i.dangerouslySetInnerHTML))throw Error(n(61))}if(i.style!=null&&typeof i.style!="object")throw Error(n(62))}}function bi(a,i){if(a.indexOf("-")===-1)return typeof i.is=="string";switch(a){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var wi=null;function To(a){return a=a.target||a.srcElement||window,a.correspondingUseElement&&(a=a.correspondingUseElement),a.nodeType===3?a.parentNode:a}var xi=null,Kn=null,Ta=null;function Pi(a){if(a=Yo(a)){if(typeof xi!="function")throw Error(n(280));var i=a.stateNode;i&&(i=Sl(i),xi(a.stateNode,a.type,i))}}function ll(a){Kn?Ta?Ta.push(a):Ta=[a]:Kn=a}function Eo(){if(Kn){var a=Kn,i=Ta;if(Ta=Kn=null,Pi(a),i)for(a=0;a<i.length;a++)Pi(i[a])}}function cl(a,i){return a(i)}function Ao(){}var Ja=!1;function Br(a,i,l){if(Ja)return a(i,l);Ja=!0;try{return cl(a,i,l)}finally{Ja=!1,(Kn!==null||Ta!==null)&&(Ao(),Eo())}}function er(a,i){var l=a.stateNode;if(l===null)return null;var d=Sl(l);if(d===null)return null;l=d[i];e:switch(i){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(d=!d.disabled)||(a=a.type,d=!(a==="button"||a==="input"||a==="select"||a==="textarea")),a=!d;break e;default:a=!1}if(a)return null;if(l&&typeof l!="function")throw Error(n(231,i,typeof l));return l}var Ro=!1;if(u)try{var Fr={};Object.defineProperty(Fr,"passive",{get:function(){Ro=!0}}),window.addEventListener("test",Fr,Fr),window.removeEventListener("test",Fr,Fr)}catch{Ro=!1}function A(a,i,l,d,f,g,_,E,I){var H=Array.prototype.slice.call(arguments,3);try{i.apply(l,H)}catch(ee){this.onError(ee)}}var U=!1,V=null,te=!1,re=null,Ee={onError:function(a){U=!0,V=a}};function me(a,i,l,d,f,g,_,E,I){U=!1,V=null,A.apply(Ee,arguments)}function De(a,i,l,d,f,g,_,E,I){if(me.apply(this,arguments),U){if(U){var H=V;U=!1,V=null}else throw Error(n(198));te||(te=!0,re=H)}}function he(a){var i=a,l=a;if(a.alternate)for(;i.return;)i=i.return;else{a=i;do i=a,(i.flags&4098)!==0&&(l=i.return),a=i.return;while(a)}return i.tag===3?l:null}function Ie(a){if(a.tag===13){var i=a.memoizedState;if(i===null&&(a=a.alternate,a!==null&&(i=a.memoizedState)),i!==null)return i.dehydrated}return null}function Me(a){if(he(a)!==a)throw Error(n(188))}function Le(a){var i=a.alternate;if(!i){if(i=he(a),i===null)throw Error(n(188));return i!==a?null:a}for(var l=a,d=i;;){var f=l.return;if(f===null)break;var g=f.alternate;if(g===null){if(d=f.return,d!==null){l=d;continue}break}if(f.child===g.child){for(g=f.child;g;){if(g===l)return Me(f),a;if(g===d)return Me(f),i;g=g.sibling}throw Error(n(188))}if(l.return!==d.return)l=f,d=g;else{for(var _=!1,E=f.child;E;){if(E===l){_=!0,l=f,d=g;break}if(E===d){_=!0,d=f,l=g;break}E=E.sibling}if(!_){for(E=g.child;E;){if(E===l){_=!0,l=g,d=f;break}if(E===d){_=!0,d=g,l=f;break}E=E.sibling}if(!_)throw Error(n(189))}}if(l.alternate!==d)throw Error(n(190))}if(l.tag!==3)throw Error(n(188));return l.stateNode.current===l?a:i}function ot(a){return a=Le(a),a!==null?et(a):null}function et(a){if(a.tag===5||a.tag===6)return a;for(a=a.child;a!==null;){var i=et(a);if(i!==null)return i;a=a.sibling}return null}var ht=t.unstable_scheduleCallback,St=t.unstable_cancelCallback,Ht=t.unstable_shouldYield,lt=t.unstable_requestPaint,at=t.unstable_now,Ea=t.unstable_getCurrentPriorityLevel,Aa=t.unstable_ImmediatePriority,qn=t.unstable_UserBlockingPriority,nn=t.unstable_NormalPriority,Lo=t.unstable_LowPriority,tr=t.unstable_IdlePriority,Tn=null,an=null;function Si(a){if(an&&typeof an.onCommitFiberRoot=="function")try{an.onCommitFiberRoot(Tn,a,void 0,(a.current.flags&128)===128)}catch{}}var $e=Math.clz32?Math.clz32:Ra,Ut=Math.log,nr=Math.LN2;function Ra(a){return a>>>=0,a===0?32:31-(Ut(a)/nr|0)|0}var ut=64,La=4194304;function ar(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return a}}function Ci(a,i){var l=a.pendingLanes;if(l===0)return 0;var d=0,f=a.suspendedLanes,g=a.pingedLanes,_=l&268435455;if(_!==0){var E=_&~f;E!==0?d=ar(E):(g&=_,g!==0&&(d=ar(g)))}else _=l&~f,_!==0?d=ar(_):g!==0&&(d=ar(g));if(d===0)return 0;if(i!==0&&i!==d&&(i&f)===0&&(f=d&-d,g=i&-i,f>=g||f===16&&(g&4194240)!==0))return i;if((d&4)!==0&&(d|=l&16),i=a.entangledLanes,i!==0)for(a=a.entanglements,i&=d;0<i;)l=31-$e(i),f=1<<l,d|=a[l],i&=~f;return d}function Kx(a,i){switch(a){case 1:case 2:case 4:return i+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function qx(a,i){for(var l=a.suspendedLanes,d=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var _=31-$e(g),E=1<<_,I=f[_];I===-1?((E&l)===0||(E&d)!==0)&&(f[_]=Kx(E,i)):I<=i&&(a.expiredLanes|=E),g&=~E}}function ju(a){return a=a.pendingLanes&-1073741825,a!==0?a:a&1073741824?1073741824:0}function pm(){var a=ut;return ut<<=1,(ut&4194240)===0&&(ut=64),a}function Uu(a){for(var i=[],l=0;31>l;l++)i.push(a);return i}function Do(a,i,l){a.pendingLanes|=i,i!==536870912&&(a.suspendedLanes=0,a.pingedLanes=0),a=a.eventTimes,i=31-$e(i),a[i]=l}function Yx(a,i){var l=a.pendingLanes&~i;a.pendingLanes=i,a.suspendedLanes=0,a.pingedLanes=0,a.expiredLanes&=i,a.mutableReadLanes&=i,a.entangledLanes&=i,i=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<l;){var f=31-$e(l),g=1<<f;i[f]=0,d[f]=-1,a[f]=-1,l&=~g}}function Bu(a,i){var l=a.entangledLanes|=i;for(a=a.entanglements;l;){var d=31-$e(l),f=1<<d;f&i|a[d]&i&&(a[d]|=i),l&=~f}}var ct=0;function fm(a){return a&=-a,1<a?4<a?(a&268435455)!==0?16:536870912:4:1}var mm,Fu,gm,ym,vm,Vu=!1,ul=[],rr=null,ir=null,or=null,Io=new Map,Mo=new Map,sr=[],Zx="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function km(a,i){switch(a){case"focusin":case"focusout":rr=null;break;case"dragenter":case"dragleave":ir=null;break;case"mouseover":case"mouseout":or=null;break;case"pointerover":case"pointerout":Io.delete(i.pointerId);break;case"gotpointercapture":case"lostpointercapture":Mo.delete(i.pointerId)}}function No(a,i,l,d,f,g){return a===null||a.nativeEvent!==g?(a={blockedOn:i,domEventName:l,eventSystemFlags:d,nativeEvent:g,targetContainers:[f]},i!==null&&(i=Yo(i),i!==null&&Fu(i)),a):(a.eventSystemFlags|=d,i=a.targetContainers,f!==null&&i.indexOf(f)===-1&&i.push(f),a)}function Xx(a,i,l,d,f){switch(i){case"focusin":return rr=No(rr,a,i,l,d,f),!0;case"dragenter":return ir=No(ir,a,i,l,d,f),!0;case"mouseover":return or=No(or,a,i,l,d,f),!0;case"pointerover":var g=f.pointerId;return Io.set(g,No(Io.get(g)||null,a,i,l,d,f)),!0;case"gotpointercapture":return g=f.pointerId,Mo.set(g,No(Mo.get(g)||null,a,i,l,d,f)),!0}return!1}function _m(a){var i=Vr(a.target);if(i!==null){var l=he(i);if(l!==null){if(i=l.tag,i===13){if(i=Ie(l),i!==null){a.blockedOn=i,vm(a.priority,function(){gm(l)});return}}else if(i===3&&l.stateNode.current.memoizedState.isDehydrated){a.blockedOn=l.tag===3?l.stateNode.containerInfo:null;return}}}a.blockedOn=null}function dl(a){if(a.blockedOn!==null)return!1;for(var i=a.targetContainers;0<i.length;){var l=Hu(a.domEventName,a.eventSystemFlags,i[0],a.nativeEvent);if(l===null){l=a.nativeEvent;var d=new l.constructor(l.type,l);wi=d,l.target.dispatchEvent(d),wi=null}else return i=Yo(l),i!==null&&Fu(i),a.blockedOn=l,!1;i.shift()}return!0}function bm(a,i,l){dl(a)&&l.delete(i)}function Qx(){Vu=!1,rr!==null&&dl(rr)&&(rr=null),ir!==null&&dl(ir)&&(ir=null),or!==null&&dl(or)&&(or=null),Io.forEach(bm),Mo.forEach(bm)}function Oo(a,i){a.blockedOn===i&&(a.blockedOn=null,Vu||(Vu=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,Qx)))}function jo(a){function i(f){return Oo(f,a)}if(0<ul.length){Oo(ul[0],a);for(var l=1;l<ul.length;l++){var d=ul[l];d.blockedOn===a&&(d.blockedOn=null)}}for(rr!==null&&Oo(rr,a),ir!==null&&Oo(ir,a),or!==null&&Oo(or,a),Io.forEach(i),Mo.forEach(i),l=0;l<sr.length;l++)d=sr[l],d.blockedOn===a&&(d.blockedOn=null);for(;0<sr.length&&(l=sr[0],l.blockedOn===null);)_m(l),l.blockedOn===null&&sr.shift()}var Ti=O.ReactCurrentBatchConfig,hl=!0;function Jx(a,i,l,d){var f=ct,g=Ti.transition;Ti.transition=null;try{ct=1,zu(a,i,l,d)}finally{ct=f,Ti.transition=g}}function eP(a,i,l,d){var f=ct,g=Ti.transition;Ti.transition=null;try{ct=4,zu(a,i,l,d)}finally{ct=f,Ti.transition=g}}function zu(a,i,l,d){if(hl){var f=Hu(a,i,l,d);if(f===null)od(a,i,d,pl,l),km(a,d);else if(Xx(f,a,i,l,d))d.stopPropagation();else if(km(a,d),i&4&&-1<Zx.indexOf(a)){for(;f!==null;){var g=Yo(f);if(g!==null&&mm(g),g=Hu(a,i,l,d),g===null&&od(a,i,d,pl,l),g===f)break;f=g}f!==null&&d.stopPropagation()}else od(a,i,d,null,l)}}var pl=null;function Hu(a,i,l,d){if(pl=null,a=To(d),a=Vr(a),a!==null)if(i=he(a),i===null)a=null;else if(l=i.tag,l===13){if(a=Ie(i),a!==null)return a;a=null}else if(l===3){if(i.stateNode.current.memoizedState.isDehydrated)return i.tag===3?i.stateNode.containerInfo:null;a=null}else i!==a&&(a=null);return pl=a,null}function wm(a){switch(a){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Ea()){case Aa:return 1;case qn:return 4;case nn:case Lo:return 16;case tr:return 536870912;default:return 16}default:return 16}}var lr=null,$u=null,fl=null;function xm(){if(fl)return fl;var a,i=$u,l=i.length,d,f="value"in lr?lr.value:lr.textContent,g=f.length;for(a=0;a<l&&i[a]===f[a];a++);var _=l-a;for(d=1;d<=_&&i[l-d]===f[g-d];d++);return fl=f.slice(a,1<d?1-d:void 0)}function ml(a){var i=a.keyCode;return"charCode"in a?(a=a.charCode,a===0&&i===13&&(a=13)):a=i,a===10&&(a=13),32<=a||a===13?a:0}function gl(){return!0}function Pm(){return!1}function kn(a){function i(l,d,f,g,_){this._reactName=l,this._targetInst=f,this.type=d,this.nativeEvent=g,this.target=_,this.currentTarget=null;for(var E in a)a.hasOwnProperty(E)&&(l=a[E],this[E]=l?l(g):g[E]);return this.isDefaultPrevented=(g.defaultPrevented!=null?g.defaultPrevented:g.returnValue===!1)?gl:Pm,this.isPropagationStopped=Pm,this}return $(i.prototype,{preventDefault:function(){this.defaultPrevented=!0;var l=this.nativeEvent;l&&(l.preventDefault?l.preventDefault():typeof l.returnValue!="unknown"&&(l.returnValue=!1),this.isDefaultPrevented=gl)},stopPropagation:function(){var l=this.nativeEvent;l&&(l.stopPropagation?l.stopPropagation():typeof l.cancelBubble!="unknown"&&(l.cancelBubble=!0),this.isPropagationStopped=gl)},persist:function(){},isPersistent:gl}),i}var Ei={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Wu=kn(Ei),Uo=$({},Ei,{view:0,detail:0}),tP=kn(Uo),Gu,Ku,Bo,yl=$({},Uo,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Yu,button:0,buttons:0,relatedTarget:function(a){return a.relatedTarget===void 0?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){return"movementX"in a?a.movementX:(a!==Bo&&(Bo&&a.type==="mousemove"?(Gu=a.screenX-Bo.screenX,Ku=a.screenY-Bo.screenY):Ku=Gu=0,Bo=a),Gu)},movementY:function(a){return"movementY"in a?a.movementY:Ku}}),Sm=kn(yl),nP=$({},yl,{dataTransfer:0}),aP=kn(nP),rP=$({},Uo,{relatedTarget:0}),qu=kn(rP),iP=$({},Ei,{animationName:0,elapsedTime:0,pseudoElement:0}),oP=kn(iP),sP=$({},Ei,{clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}}),lP=kn(sP),cP=$({},Ei,{data:0}),Cm=kn(cP),uP={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},dP={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},hP={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function pP(a){var i=this.nativeEvent;return i.getModifierState?i.getModifierState(a):(a=hP[a])?!!i[a]:!1}function Yu(){return pP}var fP=$({},Uo,{key:function(a){if(a.key){var i=uP[a.key]||a.key;if(i!=="Unidentified")return i}return a.type==="keypress"?(a=ml(a),a===13?"Enter":String.fromCharCode(a)):a.type==="keydown"||a.type==="keyup"?dP[a.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Yu,charCode:function(a){return a.type==="keypress"?ml(a):0},keyCode:function(a){return a.type==="keydown"||a.type==="keyup"?a.keyCode:0},which:function(a){return a.type==="keypress"?ml(a):a.type==="keydown"||a.type==="keyup"?a.keyCode:0}}),mP=kn(fP),gP=$({},yl,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Tm=kn(gP),yP=$({},Uo,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Yu}),vP=kn(yP),kP=$({},Ei,{propertyName:0,elapsedTime:0,pseudoElement:0}),_P=kn(kP),bP=$({},yl,{deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},deltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),wP=kn(bP),xP=[9,13,27,32],Zu=u&&"CompositionEvent"in window,Fo=null;u&&"documentMode"in document&&(Fo=document.documentMode);var PP=u&&"TextEvent"in window&&!Fo,Em=u&&(!Zu||Fo&&8<Fo&&11>=Fo),Am=" ",Rm=!1;function Lm(a,i){switch(a){case"keyup":return xP.indexOf(i.keyCode)!==-1;case"keydown":return i.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Dm(a){return a=a.detail,typeof a=="object"&&"data"in a?a.data:null}var Ai=!1;function SP(a,i){switch(a){case"compositionend":return Dm(i);case"keypress":return i.which!==32?null:(Rm=!0,Am);case"textInput":return a=i.data,a===Am&&Rm?null:a;default:return null}}function CP(a,i){if(Ai)return a==="compositionend"||!Zu&&Lm(a,i)?(a=xm(),fl=$u=lr=null,Ai=!1,a):null;switch(a){case"paste":return null;case"keypress":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1<i.char.length)return i.char;if(i.which)return String.fromCharCode(i.which)}return null;case"compositionend":return Em&&i.locale!=="ko"?null:i.data;default:return null}}var TP={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Im(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return i==="input"?!!TP[a.type]:i==="textarea"}function Mm(a,i,l,d){ll(d),i=wl(i,"onChange"),0<i.length&&(l=new Wu("onChange","change",null,l,d),a.push({event:l,listeners:i}))}var Vo=null,zo=null;function EP(a){Qm(a,0)}function vl(a){var i=Mi(a);if(Ca(i))return a}function AP(a,i){if(a==="change")return i}var Nm=!1;if(u){var Xu;if(u){var Qu="oninput"in document;if(!Qu){var Om=document.createElement("div");Om.setAttribute("oninput","return;"),Qu=typeof Om.oninput=="function"}Xu=Qu}else Xu=!1;Nm=Xu&&(!document.documentMode||9<document.documentMode)}function jm(){Vo&&(Vo.detachEvent("onpropertychange",Um),zo=Vo=null)}function Um(a){if(a.propertyName==="value"&&vl(zo)){var i=[];Mm(i,zo,a,To(a)),Br(EP,i)}}function RP(a,i,l){a==="focusin"?(jm(),Vo=i,zo=l,Vo.attachEvent("onpropertychange",Um)):a==="focusout"&&jm()}function LP(a){if(a==="selectionchange"||a==="keyup"||a==="keydown")return vl(zo)}function DP(a,i){if(a==="click")return vl(i)}function IP(a,i){if(a==="input"||a==="change")return vl(i)}function MP(a,i){return a===i&&(a!==0||1/a===1/i)||a!==a&&i!==i}var Yn=typeof Object.is=="function"?Object.is:MP;function Ho(a,i){if(Yn(a,i))return!0;if(typeof a!="object"||a===null||typeof i!="object"||i===null)return!1;var l=Object.keys(a),d=Object.keys(i);if(l.length!==d.length)return!1;for(d=0;d<l.length;d++){var f=l[d];if(!h.call(i,f)||!Yn(a[f],i[f]))return!1}return!0}function Bm(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function Fm(a,i){var l=Bm(a);a=0;for(var d;l;){if(l.nodeType===3){if(d=a+l.textContent.length,a<=i&&d>=i)return{node:l,offset:i-a};a=d}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=Bm(l)}}function Vm(a,i){return a&&i?a===i?!0:a&&a.nodeType===3?!1:i&&i.nodeType===3?Vm(a,i.parentNode):"contains"in a?a.contains(i):a.compareDocumentPosition?!!(a.compareDocumentPosition(i)&16):!1:!1}function zm(){for(var a=window,i=ft();i instanceof a.HTMLIFrameElement;){try{var l=typeof i.contentWindow.location.href=="string"}catch{l=!1}if(l)a=i.contentWindow;else break;i=ft(a.document)}return i}function Ju(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return i&&(i==="input"&&(a.type==="text"||a.type==="search"||a.type==="tel"||a.type==="url"||a.type==="password")||i==="textarea"||a.contentEditable==="true")}function NP(a){var i=zm(),l=a.focusedElem,d=a.selectionRange;if(i!==l&&l&&l.ownerDocument&&Vm(l.ownerDocument.documentElement,l)){if(d!==null&&Ju(l)){if(i=d.start,a=d.end,a===void 0&&(a=i),"selectionStart"in l)l.selectionStart=i,l.selectionEnd=Math.min(a,l.value.length);else if(a=(i=l.ownerDocument||document)&&i.defaultView||window,a.getSelection){a=a.getSelection();var f=l.textContent.length,g=Math.min(d.start,f);d=d.end===void 0?g:Math.min(d.end,f),!a.extend&&g>d&&(f=d,d=g,g=f),f=Fm(l,g);var _=Fm(l,d);f&&_&&(a.rangeCount!==1||a.anchorNode!==f.node||a.anchorOffset!==f.offset||a.focusNode!==_.node||a.focusOffset!==_.offset)&&(i=i.createRange(),i.setStart(f.node,f.offset),a.removeAllRanges(),g>d?(a.addRange(i),a.extend(_.node,_.offset)):(i.setEnd(_.node,_.offset),a.addRange(i)))}}for(i=[],a=l;a=a.parentNode;)a.nodeType===1&&i.push({element:a,left:a.scrollLeft,top:a.scrollTop});for(typeof l.focus=="function"&&l.focus(),l=0;l<i.length;l++)a=i[l],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}var OP=u&&"documentMode"in document&&11>=document.documentMode,Ri=null,ed=null,$o=null,td=!1;function Hm(a,i,l){var d=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;td||Ri==null||Ri!==ft(d)||(d=Ri,"selectionStart"in d&&Ju(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),$o&&Ho($o,d)||($o=d,d=wl(ed,"onSelect"),0<d.length&&(i=new Wu("onSelect","select",null,i,l),a.push({event:i,listeners:d}),i.target=Ri)))}function kl(a,i){var l={};return l[a.toLowerCase()]=i.toLowerCase(),l["Webkit"+a]="webkit"+i,l["Moz"+a]="moz"+i,l}var Li={animationend:kl("Animation","AnimationEnd"),animationiteration:kl("Animation","AnimationIteration"),animationstart:kl("Animation","AnimationStart"),transitionend:kl("Transition","TransitionEnd")},nd={},$m={};u&&($m=document.createElement("div").style,"AnimationEvent"in window||(delete Li.animationend.animation,delete Li.animationiteration.animation,delete Li.animationstart.animation),"TransitionEvent"in window||delete Li.transitionend.transition);function _l(a){if(nd[a])return nd[a];if(!Li[a])return a;var i=Li[a],l;for(l in i)if(i.hasOwnProperty(l)&&l in $m)return nd[a]=i[l];return a}var Wm=_l("animationend"),Gm=_l("animationiteration"),Km=_l("animationstart"),qm=_l("transitionend"),Ym=new Map,Zm="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function cr(a,i){Ym.set(a,i),s(i,[a])}for(var ad=0;ad<Zm.length;ad++){var rd=Zm[ad],jP=rd.toLowerCase(),UP=rd[0].toUpperCase()+rd.slice(1);cr(jP,"on"+UP)}cr(Wm,"onAnimationEnd"),cr(Gm,"onAnimationIteration"),cr(Km,"onAnimationStart"),cr("dblclick","onDoubleClick"),cr("focusin","onFocus"),cr("focusout","onBlur"),cr(qm,"onTransitionEnd"),c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Wo="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),BP=new Set("cancel close invalid load scroll toggle".split(" ").concat(Wo));function Xm(a,i,l){var d=a.type||"unknown-event";a.currentTarget=l,De(d,i,void 0,a),a.currentTarget=null}function Qm(a,i){i=(i&4)!==0;for(var l=0;l<a.length;l++){var d=a[l],f=d.event;d=d.listeners;e:{var g=void 0;if(i)for(var _=d.length-1;0<=_;_--){var E=d[_],I=E.instance,H=E.currentTarget;if(E=E.listener,I!==g&&f.isPropagationStopped())break e;Xm(f,E,H),g=I}else for(_=0;_<d.length;_++){if(E=d[_],I=E.instance,H=E.currentTarget,E=E.listener,I!==g&&f.isPropagationStopped())break e;Xm(f,E,H),g=I}}}if(te)throw a=re,te=!1,re=null,a}function mt(a,i){var l=i[hd];l===void 0&&(l=i[hd]=new Set);var d=a+"__bubble";l.has(d)||(Jm(i,a,2,!1),l.add(d))}function id(a,i,l){var d=0;i&&(d|=4),Jm(l,a,d,i)}var bl="_reactListening"+Math.random().toString(36).slice(2);function Go(a){if(!a[bl]){a[bl]=!0,r.forEach(function(l){l!=="selectionchange"&&(BP.has(l)||id(l,!1,a),id(l,!0,a))});var i=a.nodeType===9?a:a.ownerDocument;i===null||i[bl]||(i[bl]=!0,id("selectionchange",!1,i))}}function Jm(a,i,l,d){switch(wm(i)){case 1:var f=Jx;break;case 4:f=eP;break;default:f=zu}l=f.bind(null,i,l,a),f=void 0,!Ro||i!=="touchstart"&&i!=="touchmove"&&i!=="wheel"||(f=!0),d?f!==void 0?a.addEventListener(i,l,{capture:!0,passive:f}):a.addEventListener(i,l,!0):f!==void 0?a.addEventListener(i,l,{passive:f}):a.addEventListener(i,l,!1)}function od(a,i,l,d,f){var g=d;if((i&1)===0&&(i&2)===0&&d!==null)e:for(;;){if(d===null)return;var _=d.tag;if(_===3||_===4){var E=d.stateNode.containerInfo;if(E===f||E.nodeType===8&&E.parentNode===f)break;if(_===4)for(_=d.return;_!==null;){var I=_.tag;if((I===3||I===4)&&(I=_.stateNode.containerInfo,I===f||I.nodeType===8&&I.parentNode===f))return;_=_.return}for(;E!==null;){if(_=Vr(E),_===null)return;if(I=_.tag,I===5||I===6){d=g=_;continue e}E=E.parentNode}}d=d.return}Br(function(){var H=g,ee=To(l),ne=[];e:{var J=Ym.get(a);if(J!==void 0){var de=Wu,ve=a;switch(a){case"keypress":if(ml(l)===0)break e;case"keydown":case"keyup":de=mP;break;case"focusin":ve="focus",de=qu;break;case"focusout":ve="blur",de=qu;break;case"beforeblur":case"afterblur":de=qu;break;case"click":if(l.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":de=Sm;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":de=aP;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":de=vP;break;case Wm:case Gm:case Km:de=oP;break;case qm:de=_P;break;case"scroll":de=tP;break;case"wheel":de=wP;break;case"copy":case"cut":case"paste":de=lP;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":de=Tm}var we=(i&4)!==0,Ct=!we&&a==="scroll",B=we?J!==null?J+"Capture":null:J;we=[];for(var j=H,F;j!==null;){F=j;var oe=F.stateNode;if(F.tag===5&&oe!==null&&(F=oe,B!==null&&(oe=er(j,B),oe!=null&&we.push(Ko(j,oe,F)))),Ct)break;j=j.return}0<we.length&&(J=new de(J,ve,null,l,ee),ne.push({event:J,listeners:we}))}}if((i&7)===0){e:{if(J=a==="mouseover"||a==="pointerover",de=a==="mouseout"||a==="pointerout",J&&l!==wi&&(ve=l.relatedTarget||l.fromElement)&&(Vr(ve)||ve[Da]))break e;if((de||J)&&(J=ee.window===ee?ee:(J=ee.ownerDocument)?J.defaultView||J.parentWindow:window,de?(ve=l.relatedTarget||l.toElement,de=H,ve=ve?Vr(ve):null,ve!==null&&(Ct=he(ve),ve!==Ct||ve.tag!==5&&ve.tag!==6)&&(ve=null)):(de=null,ve=H),de!==ve)){if(we=Sm,oe="onMouseLeave",B="onMouseEnter",j="mouse",(a==="pointerout"||a==="pointerover")&&(we=Tm,oe="onPointerLeave",B="onPointerEnter",j="pointer"),Ct=de==null?J:Mi(de),F=ve==null?J:Mi(ve),J=new we(oe,j+"leave",de,l,ee),J.target=Ct,J.relatedTarget=F,oe=null,Vr(ee)===H&&(we=new we(B,j+"enter",ve,l,ee),we.target=F,we.relatedTarget=Ct,oe=we),Ct=oe,de&&ve)t:{for(we=de,B=ve,j=0,F=we;F;F=Di(F))j++;for(F=0,oe=B;oe;oe=Di(oe))F++;for(;0<j-F;)we=Di(we),j--;for(;0<F-j;)B=Di(B),F--;for(;j--;){if(we===B||B!==null&&we===B.alternate)break t;we=Di(we),B=Di(B)}we=null}else we=null;de!==null&&eg(ne,J,de,we,!1),ve!==null&&Ct!==null&&eg(ne,Ct,ve,we,!0)}}e:{if(J=H?Mi(H):window,de=J.nodeName&&J.nodeName.toLowerCase(),de==="select"||de==="input"&&J.type==="file")var Se=AP;else if(Im(J))if(Nm)Se=IP;else{Se=LP;var Oe=RP}else(de=J.nodeName)&&de.toLowerCase()==="input"&&(J.type==="checkbox"||J.type==="radio")&&(Se=DP);if(Se&&(Se=Se(a,H))){Mm(ne,Se,l,ee);break e}Oe&&Oe(a,J,H),a==="focusout"&&(Oe=J._wrapperState)&&Oe.controlled&&J.type==="number"&&So(J,"number",J.value)}switch(Oe=H?Mi(H):window,a){case"focusin":(Im(Oe)||Oe.contentEditable==="true")&&(Ri=Oe,ed=H,$o=null);break;case"focusout":$o=ed=Ri=null;break;case"mousedown":td=!0;break;case"contextmenu":case"mouseup":case"dragend":td=!1,Hm(ne,l,ee);break;case"selectionchange":if(OP)break;case"keydown":case"keyup":Hm(ne,l,ee)}var je;if(Zu)e:{switch(a){case"compositionstart":var Ve="onCompositionStart";break e;case"compositionend":Ve="onCompositionEnd";break e;case"compositionupdate":Ve="onCompositionUpdate";break e}Ve=void 0}else Ai?Lm(a,l)&&(Ve="onCompositionEnd"):a==="keydown"&&l.keyCode===229&&(Ve="onCompositionStart");Ve&&(Em&&l.locale!=="ko"&&(Ai||Ve!=="onCompositionStart"?Ve==="onCompositionEnd"&&Ai&&(je=xm()):(lr=ee,$u="value"in lr?lr.value:lr.textContent,Ai=!0)),Oe=wl(H,Ve),0<Oe.length&&(Ve=new Cm(Ve,a,null,l,ee),ne.push({event:Ve,listeners:Oe}),je?Ve.data=je:(je=Dm(l),je!==null&&(Ve.data=je)))),(je=PP?SP(a,l):CP(a,l))&&(H=wl(H,"onBeforeInput"),0<H.length&&(ee=new Cm("onBeforeInput","beforeinput",null,l,ee),ne.push({event:ee,listeners:H}),ee.data=je))}Qm(ne,i)})}function Ko(a,i,l){return{instance:a,listener:i,currentTarget:l}}function wl(a,i){for(var l=i+"Capture",d=[];a!==null;){var f=a,g=f.stateNode;f.tag===5&&g!==null&&(f=g,g=er(a,l),g!=null&&d.unshift(Ko(a,g,f)),g=er(a,i),g!=null&&d.push(Ko(a,g,f))),a=a.return}return d}function Di(a){if(a===null)return null;do a=a.return;while(a&&a.tag!==5);return a||null}function eg(a,i,l,d,f){for(var g=i._reactName,_=[];l!==null&&l!==d;){var E=l,I=E.alternate,H=E.stateNode;if(I!==null&&I===d)break;E.tag===5&&H!==null&&(E=H,f?(I=er(l,g),I!=null&&_.unshift(Ko(l,I,E))):f||(I=er(l,g),I!=null&&_.push(Ko(l,I,E)))),l=l.return}_.length!==0&&a.push({event:i,listeners:_})}var FP=/\r\n?/g,VP=/\u0000|\uFFFD/g;function tg(a){return(typeof a=="string"?a:""+a).replace(FP,`
|
|
7
|
-
`).replace(VP,"")}function xl(a,i,l){if(i=tg(i),tg(a)!==i&&l)throw Error(n(425))}function Pl(){}var sd=null,ld=null;function cd(a,i){return a==="textarea"||a==="noscript"||typeof i.children=="string"||typeof i.children=="number"||typeof i.dangerouslySetInnerHTML=="object"&&i.dangerouslySetInnerHTML!==null&&i.dangerouslySetInnerHTML.__html!=null}var ud=typeof setTimeout=="function"?setTimeout:void 0,zP=typeof clearTimeout=="function"?clearTimeout:void 0,ng=typeof Promise=="function"?Promise:void 0,HP=typeof queueMicrotask=="function"?queueMicrotask:typeof ng<"u"?function(a){return ng.resolve(null).then(a).catch($P)}:ud;function $P(a){setTimeout(function(){throw a})}function dd(a,i){var l=i,d=0;do{var f=l.nextSibling;if(a.removeChild(l),f&&f.nodeType===8)if(l=f.data,l==="/$"){if(d===0){a.removeChild(f),jo(i);return}d--}else l!=="$"&&l!=="$?"&&l!=="$!"||d++;l=f}while(l);jo(i)}function ur(a){for(;a!=null;a=a.nextSibling){var i=a.nodeType;if(i===1||i===3)break;if(i===8){if(i=a.data,i==="$"||i==="$!"||i==="$?")break;if(i==="/$")return null}}return a}function ag(a){a=a.previousSibling;for(var i=0;a;){if(a.nodeType===8){var l=a.data;if(l==="$"||l==="$!"||l==="$?"){if(i===0)return a;i--}else l==="/$"&&i++}a=a.previousSibling}return null}var Ii=Math.random().toString(36).slice(2),ca="__reactFiber$"+Ii,qo="__reactProps$"+Ii,Da="__reactContainer$"+Ii,hd="__reactEvents$"+Ii,WP="__reactListeners$"+Ii,GP="__reactHandles$"+Ii;function Vr(a){var i=a[ca];if(i)return i;for(var l=a.parentNode;l;){if(i=l[Da]||l[ca]){if(l=i.alternate,i.child!==null||l!==null&&l.child!==null)for(a=ag(a);a!==null;){if(l=a[ca])return l;a=ag(a)}return i}a=l,l=a.parentNode}return null}function Yo(a){return a=a[ca]||a[Da],!a||a.tag!==5&&a.tag!==6&&a.tag!==13&&a.tag!==3?null:a}function Mi(a){if(a.tag===5||a.tag===6)return a.stateNode;throw Error(n(33))}function Sl(a){return a[qo]||null}var pd=[],Ni=-1;function dr(a){return{current:a}}function gt(a){0>Ni||(a.current=pd[Ni],pd[Ni]=null,Ni--)}function pt(a,i){Ni++,pd[Ni]=a.current,a.current=i}var hr={},qt=dr(hr),pn=dr(!1),zr=hr;function Oi(a,i){var l=a.type.contextTypes;if(!l)return hr;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===i)return d.__reactInternalMemoizedMaskedChildContext;var f={},g;for(g in l)f[g]=i[g];return d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=i,a.__reactInternalMemoizedMaskedChildContext=f),f}function fn(a){return a=a.childContextTypes,a!=null}function Cl(){gt(pn),gt(qt)}function rg(a,i,l){if(qt.current!==hr)throw Error(n(168));pt(qt,i),pt(pn,l)}function ig(a,i,l){var d=a.stateNode;if(i=i.childContextTypes,typeof d.getChildContext!="function")return l;d=d.getChildContext();for(var f in d)if(!(f in i))throw Error(n(108,Ke(a)||"Unknown",f));return $({},l,d)}function Tl(a){return a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||hr,zr=qt.current,pt(qt,a),pt(pn,pn.current),!0}function og(a,i,l){var d=a.stateNode;if(!d)throw Error(n(169));l?(a=ig(a,i,zr),d.__reactInternalMemoizedMergedChildContext=a,gt(pn),gt(qt),pt(qt,a)):gt(pn),pt(pn,l)}var Ia=null,El=!1,fd=!1;function sg(a){Ia===null?Ia=[a]:Ia.push(a)}function KP(a){El=!0,sg(a)}function pr(){if(!fd&&Ia!==null){fd=!0;var a=0,i=ct;try{var l=Ia;for(ct=1;a<l.length;a++){var d=l[a];do d=d(!0);while(d!==null)}Ia=null,El=!1}catch(f){throw Ia!==null&&(Ia=Ia.slice(a+1)),ht(Aa,pr),f}finally{ct=i,fd=!1}}return null}var ji=[],Ui=0,Al=null,Rl=0,En=[],An=0,Hr=null,Ma=1,Na="";function $r(a,i){ji[Ui++]=Rl,ji[Ui++]=Al,Al=a,Rl=i}function lg(a,i,l){En[An++]=Ma,En[An++]=Na,En[An++]=Hr,Hr=a;var d=Ma;a=Na;var f=32-$e(d)-1;d&=~(1<<f),l+=1;var g=32-$e(i)+f;if(30<g){var _=f-f%5;g=(d&(1<<_)-1).toString(32),d>>=_,f-=_,Ma=1<<32-$e(i)+f|l<<f|d,Na=g+a}else Ma=1<<g|l<<f|d,Na=a}function md(a){a.return!==null&&($r(a,1),lg(a,1,0))}function gd(a){for(;a===Al;)Al=ji[--Ui],ji[Ui]=null,Rl=ji[--Ui],ji[Ui]=null;for(;a===Hr;)Hr=En[--An],En[An]=null,Na=En[--An],En[An]=null,Ma=En[--An],En[An]=null}var _n=null,bn=null,kt=!1,Zn=null;function cg(a,i){var l=In(5,null,null,0);l.elementType="DELETED",l.stateNode=i,l.return=a,i=a.deletions,i===null?(a.deletions=[l],a.flags|=16):i.push(l)}function ug(a,i){switch(a.tag){case 5:var l=a.type;return i=i.nodeType!==1||l.toLowerCase()!==i.nodeName.toLowerCase()?null:i,i!==null?(a.stateNode=i,_n=a,bn=ur(i.firstChild),!0):!1;case 6:return i=a.pendingProps===""||i.nodeType!==3?null:i,i!==null?(a.stateNode=i,_n=a,bn=null,!0):!1;case 13:return i=i.nodeType!==8?null:i,i!==null?(l=Hr!==null?{id:Ma,overflow:Na}:null,a.memoizedState={dehydrated:i,treeContext:l,retryLane:1073741824},l=In(18,null,null,0),l.stateNode=i,l.return=a,a.child=l,_n=a,bn=null,!0):!1;default:return!1}}function yd(a){return(a.mode&1)!==0&&(a.flags&128)===0}function vd(a){if(kt){var i=bn;if(i){var l=i;if(!ug(a,i)){if(yd(a))throw Error(n(418));i=ur(l.nextSibling);var d=_n;i&&ug(a,i)?cg(d,l):(a.flags=a.flags&-4097|2,kt=!1,_n=a)}}else{if(yd(a))throw Error(n(418));a.flags=a.flags&-4097|2,kt=!1,_n=a}}}function dg(a){for(a=a.return;a!==null&&a.tag!==5&&a.tag!==3&&a.tag!==13;)a=a.return;_n=a}function Ll(a){if(a!==_n)return!1;if(!kt)return dg(a),kt=!0,!1;var i;if((i=a.tag!==3)&&!(i=a.tag!==5)&&(i=a.type,i=i!=="head"&&i!=="body"&&!cd(a.type,a.memoizedProps)),i&&(i=bn)){if(yd(a))throw hg(),Error(n(418));for(;i;)cg(a,i),i=ur(i.nextSibling)}if(dg(a),a.tag===13){if(a=a.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(n(317));e:{for(a=a.nextSibling,i=0;a;){if(a.nodeType===8){var l=a.data;if(l==="/$"){if(i===0){bn=ur(a.nextSibling);break e}i--}else l!=="$"&&l!=="$!"&&l!=="$?"||i++}a=a.nextSibling}bn=null}}else bn=_n?ur(a.stateNode.nextSibling):null;return!0}function hg(){for(var a=bn;a;)a=ur(a.nextSibling)}function Bi(){bn=_n=null,kt=!1}function kd(a){Zn===null?Zn=[a]:Zn.push(a)}var qP=O.ReactCurrentBatchConfig;function Zo(a,i,l){if(a=l.ref,a!==null&&typeof a!="function"&&typeof a!="object"){if(l._owner){if(l=l._owner,l){if(l.tag!==1)throw Error(n(309));var d=l.stateNode}if(!d)throw Error(n(147,a));var f=d,g=""+a;return i!==null&&i.ref!==null&&typeof i.ref=="function"&&i.ref._stringRef===g?i.ref:(i=function(_){var E=f.refs;_===null?delete E[g]:E[g]=_},i._stringRef=g,i)}if(typeof a!="string")throw Error(n(284));if(!l._owner)throw Error(n(290,a))}return a}function Dl(a,i){throw a=Object.prototype.toString.call(i),Error(n(31,a==="[object Object]"?"object with keys {"+Object.keys(i).join(", ")+"}":a))}function pg(a){var i=a._init;return i(a._payload)}function fg(a){function i(B,j){if(a){var F=B.deletions;F===null?(B.deletions=[j],B.flags|=16):F.push(j)}}function l(B,j){if(!a)return null;for(;j!==null;)i(B,j),j=j.sibling;return null}function d(B,j){for(B=new Map;j!==null;)j.key!==null?B.set(j.key,j):B.set(j.index,j),j=j.sibling;return B}function f(B,j){return B=br(B,j),B.index=0,B.sibling=null,B}function g(B,j,F){return B.index=F,a?(F=B.alternate,F!==null?(F=F.index,F<j?(B.flags|=2,j):F):(B.flags|=2,j)):(B.flags|=1048576,j)}function _(B){return a&&B.alternate===null&&(B.flags|=2),B}function E(B,j,F,oe){return j===null||j.tag!==6?(j=uh(F,B.mode,oe),j.return=B,j):(j=f(j,F),j.return=B,j)}function I(B,j,F,oe){var Se=F.type;return Se===z?ee(B,j,F.props.children,oe,F.key):j!==null&&(j.elementType===Se||typeof Se=="object"&&Se!==null&&Se.$$typeof===fe&&pg(Se)===j.type)?(oe=f(j,F.props),oe.ref=Zo(B,j,F),oe.return=B,oe):(oe=nc(F.type,F.key,F.props,null,B.mode,oe),oe.ref=Zo(B,j,F),oe.return=B,oe)}function H(B,j,F,oe){return j===null||j.tag!==4||j.stateNode.containerInfo!==F.containerInfo||j.stateNode.implementation!==F.implementation?(j=dh(F,B.mode,oe),j.return=B,j):(j=f(j,F.children||[]),j.return=B,j)}function ee(B,j,F,oe,Se){return j===null||j.tag!==7?(j=Qr(F,B.mode,oe,Se),j.return=B,j):(j=f(j,F),j.return=B,j)}function ne(B,j,F){if(typeof j=="string"&&j!==""||typeof j=="number")return j=uh(""+j,B.mode,F),j.return=B,j;if(typeof j=="object"&&j!==null){switch(j.$$typeof){case K:return F=nc(j.type,j.key,j.props,null,B.mode,F),F.ref=Zo(B,null,j),F.return=B,F;case W:return j=dh(j,B.mode,F),j.return=B,j;case fe:var oe=j._init;return ne(B,oe(j._payload),F)}if(qa(j)||Z(j))return j=Qr(j,B.mode,F,null),j.return=B,j;Dl(B,j)}return null}function J(B,j,F,oe){var Se=j!==null?j.key:null;if(typeof F=="string"&&F!==""||typeof F=="number")return Se!==null?null:E(B,j,""+F,oe);if(typeof F=="object"&&F!==null){switch(F.$$typeof){case K:return F.key===Se?I(B,j,F,oe):null;case W:return F.key===Se?H(B,j,F,oe):null;case fe:return Se=F._init,J(B,j,Se(F._payload),oe)}if(qa(F)||Z(F))return Se!==null?null:ee(B,j,F,oe,null);Dl(B,F)}return null}function de(B,j,F,oe,Se){if(typeof oe=="string"&&oe!==""||typeof oe=="number")return B=B.get(F)||null,E(j,B,""+oe,Se);if(typeof oe=="object"&&oe!==null){switch(oe.$$typeof){case K:return B=B.get(oe.key===null?F:oe.key)||null,I(j,B,oe,Se);case W:return B=B.get(oe.key===null?F:oe.key)||null,H(j,B,oe,Se);case fe:var Oe=oe._init;return de(B,j,F,Oe(oe._payload),Se)}if(qa(oe)||Z(oe))return B=B.get(F)||null,ee(j,B,oe,Se,null);Dl(j,oe)}return null}function ve(B,j,F,oe){for(var Se=null,Oe=null,je=j,Ve=j=0,Vt=null;je!==null&&Ve<F.length;Ve++){je.index>Ve?(Vt=je,je=null):Vt=je.sibling;var st=J(B,je,F[Ve],oe);if(st===null){je===null&&(je=Vt);break}a&&je&&st.alternate===null&&i(B,je),j=g(st,j,Ve),Oe===null?Se=st:Oe.sibling=st,Oe=st,je=Vt}if(Ve===F.length)return l(B,je),kt&&$r(B,Ve),Se;if(je===null){for(;Ve<F.length;Ve++)je=ne(B,F[Ve],oe),je!==null&&(j=g(je,j,Ve),Oe===null?Se=je:Oe.sibling=je,Oe=je);return kt&&$r(B,Ve),Se}for(je=d(B,je);Ve<F.length;Ve++)Vt=de(je,B,Ve,F[Ve],oe),Vt!==null&&(a&&Vt.alternate!==null&&je.delete(Vt.key===null?Ve:Vt.key),j=g(Vt,j,Ve),Oe===null?Se=Vt:Oe.sibling=Vt,Oe=Vt);return a&&je.forEach(function(wr){return i(B,wr)}),kt&&$r(B,Ve),Se}function we(B,j,F,oe){var Se=Z(F);if(typeof Se!="function")throw Error(n(150));if(F=Se.call(F),F==null)throw Error(n(151));for(var Oe=Se=null,je=j,Ve=j=0,Vt=null,st=F.next();je!==null&&!st.done;Ve++,st=F.next()){je.index>Ve?(Vt=je,je=null):Vt=je.sibling;var wr=J(B,je,st.value,oe);if(wr===null){je===null&&(je=Vt);break}a&&je&&wr.alternate===null&&i(B,je),j=g(wr,j,Ve),Oe===null?Se=wr:Oe.sibling=wr,Oe=wr,je=Vt}if(st.done)return l(B,je),kt&&$r(B,Ve),Se;if(je===null){for(;!st.done;Ve++,st=F.next())st=ne(B,st.value,oe),st!==null&&(j=g(st,j,Ve),Oe===null?Se=st:Oe.sibling=st,Oe=st);return kt&&$r(B,Ve),Se}for(je=d(B,je);!st.done;Ve++,st=F.next())st=de(je,B,Ve,st.value,oe),st!==null&&(a&&st.alternate!==null&&je.delete(st.key===null?Ve:st.key),j=g(st,j,Ve),Oe===null?Se=st:Oe.sibling=st,Oe=st);return a&&je.forEach(function(TS){return i(B,TS)}),kt&&$r(B,Ve),Se}function Ct(B,j,F,oe){if(typeof F=="object"&&F!==null&&F.type===z&&F.key===null&&(F=F.props.children),typeof F=="object"&&F!==null){switch(F.$$typeof){case K:e:{for(var Se=F.key,Oe=j;Oe!==null;){if(Oe.key===Se){if(Se=F.type,Se===z){if(Oe.tag===7){l(B,Oe.sibling),j=f(Oe,F.props.children),j.return=B,B=j;break e}}else if(Oe.elementType===Se||typeof Se=="object"&&Se!==null&&Se.$$typeof===fe&&pg(Se)===Oe.type){l(B,Oe.sibling),j=f(Oe,F.props),j.ref=Zo(B,Oe,F),j.return=B,B=j;break e}l(B,Oe);break}else i(B,Oe);Oe=Oe.sibling}F.type===z?(j=Qr(F.props.children,B.mode,oe,F.key),j.return=B,B=j):(oe=nc(F.type,F.key,F.props,null,B.mode,oe),oe.ref=Zo(B,j,F),oe.return=B,B=oe)}return _(B);case W:e:{for(Oe=F.key;j!==null;){if(j.key===Oe)if(j.tag===4&&j.stateNode.containerInfo===F.containerInfo&&j.stateNode.implementation===F.implementation){l(B,j.sibling),j=f(j,F.children||[]),j.return=B,B=j;break e}else{l(B,j);break}else i(B,j);j=j.sibling}j=dh(F,B.mode,oe),j.return=B,B=j}return _(B);case fe:return Oe=F._init,Ct(B,j,Oe(F._payload),oe)}if(qa(F))return ve(B,j,F,oe);if(Z(F))return we(B,j,F,oe);Dl(B,F)}return typeof F=="string"&&F!==""||typeof F=="number"?(F=""+F,j!==null&&j.tag===6?(l(B,j.sibling),j=f(j,F),j.return=B,B=j):(l(B,j),j=uh(F,B.mode,oe),j.return=B,B=j),_(B)):l(B,j)}return Ct}var Fi=fg(!0),mg=fg(!1),Il=dr(null),Ml=null,Vi=null,_d=null;function bd(){_d=Vi=Ml=null}function wd(a){var i=Il.current;gt(Il),a._currentValue=i}function xd(a,i,l){for(;a!==null;){var d=a.alternate;if((a.childLanes&i)!==i?(a.childLanes|=i,d!==null&&(d.childLanes|=i)):d!==null&&(d.childLanes&i)!==i&&(d.childLanes|=i),a===l)break;a=a.return}}function zi(a,i){Ml=a,_d=Vi=null,a=a.dependencies,a!==null&&a.firstContext!==null&&((a.lanes&i)!==0&&(mn=!0),a.firstContext=null)}function Rn(a){var i=a._currentValue;if(_d!==a)if(a={context:a,memoizedValue:i,next:null},Vi===null){if(Ml===null)throw Error(n(308));Vi=a,Ml.dependencies={lanes:0,firstContext:a}}else Vi=Vi.next=a;return i}var Wr=null;function Pd(a){Wr===null?Wr=[a]:Wr.push(a)}function gg(a,i,l,d){var f=i.interleaved;return f===null?(l.next=l,Pd(i)):(l.next=f.next,f.next=l),i.interleaved=l,Oa(a,d)}function Oa(a,i){a.lanes|=i;var l=a.alternate;for(l!==null&&(l.lanes|=i),l=a,a=a.return;a!==null;)a.childLanes|=i,l=a.alternate,l!==null&&(l.childLanes|=i),l=a,a=a.return;return l.tag===3?l.stateNode:null}var fr=!1;function Sd(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function yg(a,i){a=a.updateQueue,i.updateQueue===a&&(i.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ja(a,i){return{eventTime:a,lane:i,tag:0,payload:null,callback:null,next:null}}function mr(a,i,l){var d=a.updateQueue;if(d===null)return null;if(d=d.shared,(rt&2)!==0){var f=d.pending;return f===null?i.next=i:(i.next=f.next,f.next=i),d.pending=i,Oa(a,l)}return f=d.interleaved,f===null?(i.next=i,Pd(d)):(i.next=f.next,f.next=i),d.interleaved=i,Oa(a,l)}function Nl(a,i,l){if(i=i.updateQueue,i!==null&&(i=i.shared,(l&4194240)!==0)){var d=i.lanes;d&=a.pendingLanes,l|=d,i.lanes=l,Bu(a,l)}}function vg(a,i){var l=a.updateQueue,d=a.alternate;if(d!==null&&(d=d.updateQueue,l===d)){var f=null,g=null;if(l=l.firstBaseUpdate,l!==null){do{var _={eventTime:l.eventTime,lane:l.lane,tag:l.tag,payload:l.payload,callback:l.callback,next:null};g===null?f=g=_:g=g.next=_,l=l.next}while(l!==null);g===null?f=g=i:g=g.next=i}else f=g=i;l={baseState:d.baseState,firstBaseUpdate:f,lastBaseUpdate:g,shared:d.shared,effects:d.effects},a.updateQueue=l;return}a=l.lastBaseUpdate,a===null?l.firstBaseUpdate=i:a.next=i,l.lastBaseUpdate=i}function Ol(a,i,l,d){var f=a.updateQueue;fr=!1;var g=f.firstBaseUpdate,_=f.lastBaseUpdate,E=f.shared.pending;if(E!==null){f.shared.pending=null;var I=E,H=I.next;I.next=null,_===null?g=H:_.next=H,_=I;var ee=a.alternate;ee!==null&&(ee=ee.updateQueue,E=ee.lastBaseUpdate,E!==_&&(E===null?ee.firstBaseUpdate=H:E.next=H,ee.lastBaseUpdate=I))}if(g!==null){var ne=f.baseState;_=0,ee=H=I=null,E=g;do{var J=E.lane,de=E.eventTime;if((d&J)===J){ee!==null&&(ee=ee.next={eventTime:de,lane:0,tag:E.tag,payload:E.payload,callback:E.callback,next:null});e:{var ve=a,we=E;switch(J=i,de=l,we.tag){case 1:if(ve=we.payload,typeof ve=="function"){ne=ve.call(de,ne,J);break e}ne=ve;break e;case 3:ve.flags=ve.flags&-65537|128;case 0:if(ve=we.payload,J=typeof ve=="function"?ve.call(de,ne,J):ve,J==null)break e;ne=$({},ne,J);break e;case 2:fr=!0}}E.callback!==null&&E.lane!==0&&(a.flags|=64,J=f.effects,J===null?f.effects=[E]:J.push(E))}else de={eventTime:de,lane:J,tag:E.tag,payload:E.payload,callback:E.callback,next:null},ee===null?(H=ee=de,I=ne):ee=ee.next=de,_|=J;if(E=E.next,E===null){if(E=f.shared.pending,E===null)break;J=E,E=J.next,J.next=null,f.lastBaseUpdate=J,f.shared.pending=null}}while(!0);if(ee===null&&(I=ne),f.baseState=I,f.firstBaseUpdate=H,f.lastBaseUpdate=ee,i=f.shared.interleaved,i!==null){f=i;do _|=f.lane,f=f.next;while(f!==i)}else g===null&&(f.shared.lanes=0);qr|=_,a.lanes=_,a.memoizedState=ne}}function kg(a,i,l){if(a=i.effects,i.effects=null,a!==null)for(i=0;i<a.length;i++){var d=a[i],f=d.callback;if(f!==null){if(d.callback=null,d=l,typeof f!="function")throw Error(n(191,f));f.call(d)}}}var Xo={},ua=dr(Xo),Qo=dr(Xo),Jo=dr(Xo);function Gr(a){if(a===Xo)throw Error(n(174));return a}function Cd(a,i){switch(pt(Jo,i),pt(Qo,a),pt(ua,Xo),a=i.nodeType,a){case 9:case 11:i=(i=i.documentElement)?i.namespaceURI:vi(null,"");break;default:a=a===8?i.parentNode:i,i=a.namespaceURI||null,a=a.tagName,i=vi(i,a)}gt(ua),pt(ua,i)}function Hi(){gt(ua),gt(Qo),gt(Jo)}function _g(a){Gr(Jo.current);var i=Gr(ua.current),l=vi(i,a.type);i!==l&&(pt(Qo,a),pt(ua,l))}function Td(a){Qo.current===a&&(gt(ua),gt(Qo))}var bt=dr(0);function jl(a){for(var i=a;i!==null;){if(i.tag===13){var l=i.memoizedState;if(l!==null&&(l=l.dehydrated,l===null||l.data==="$?"||l.data==="$!"))return i}else if(i.tag===19&&i.memoizedProps.revealOrder!==void 0){if((i.flags&128)!==0)return i}else if(i.child!==null){i.child.return=i,i=i.child;continue}if(i===a)break;for(;i.sibling===null;){if(i.return===null||i.return===a)return null;i=i.return}i.sibling.return=i.return,i=i.sibling}return null}var Ed=[];function Ad(){for(var a=0;a<Ed.length;a++)Ed[a]._workInProgressVersionPrimary=null;Ed.length=0}var Ul=O.ReactCurrentDispatcher,Rd=O.ReactCurrentBatchConfig,Kr=0,wt=null,It=null,Bt=null,Bl=!1,es=!1,ts=0,YP=0;function Yt(){throw Error(n(321))}function Ld(a,i){if(i===null)return!1;for(var l=0;l<i.length&&l<a.length;l++)if(!Yn(a[l],i[l]))return!1;return!0}function Dd(a,i,l,d,f,g){if(Kr=g,wt=i,i.memoizedState=null,i.updateQueue=null,i.lanes=0,Ul.current=a===null||a.memoizedState===null?JP:eS,a=l(d,f),es){g=0;do{if(es=!1,ts=0,25<=g)throw Error(n(301));g+=1,Bt=It=null,i.updateQueue=null,Ul.current=tS,a=l(d,f)}while(es)}if(Ul.current=zl,i=It!==null&&It.next!==null,Kr=0,Bt=It=wt=null,Bl=!1,i)throw Error(n(300));return a}function Id(){var a=ts!==0;return ts=0,a}function da(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Bt===null?wt.memoizedState=Bt=a:Bt=Bt.next=a,Bt}function Ln(){if(It===null){var a=wt.alternate;a=a!==null?a.memoizedState:null}else a=It.next;var i=Bt===null?wt.memoizedState:Bt.next;if(i!==null)Bt=i,It=a;else{if(a===null)throw Error(n(310));It=a,a={memoizedState:It.memoizedState,baseState:It.baseState,baseQueue:It.baseQueue,queue:It.queue,next:null},Bt===null?wt.memoizedState=Bt=a:Bt=Bt.next=a}return Bt}function ns(a,i){return typeof i=="function"?i(a):i}function Md(a){var i=Ln(),l=i.queue;if(l===null)throw Error(n(311));l.lastRenderedReducer=a;var d=It,f=d.baseQueue,g=l.pending;if(g!==null){if(f!==null){var _=f.next;f.next=g.next,g.next=_}d.baseQueue=f=g,l.pending=null}if(f!==null){g=f.next,d=d.baseState;var E=_=null,I=null,H=g;do{var ee=H.lane;if((Kr&ee)===ee)I!==null&&(I=I.next={lane:0,action:H.action,hasEagerState:H.hasEagerState,eagerState:H.eagerState,next:null}),d=H.hasEagerState?H.eagerState:a(d,H.action);else{var ne={lane:ee,action:H.action,hasEagerState:H.hasEagerState,eagerState:H.eagerState,next:null};I===null?(E=I=ne,_=d):I=I.next=ne,wt.lanes|=ee,qr|=ee}H=H.next}while(H!==null&&H!==g);I===null?_=d:I.next=E,Yn(d,i.memoizedState)||(mn=!0),i.memoizedState=d,i.baseState=_,i.baseQueue=I,l.lastRenderedState=d}if(a=l.interleaved,a!==null){f=a;do g=f.lane,wt.lanes|=g,qr|=g,f=f.next;while(f!==a)}else f===null&&(l.lanes=0);return[i.memoizedState,l.dispatch]}function Nd(a){var i=Ln(),l=i.queue;if(l===null)throw Error(n(311));l.lastRenderedReducer=a;var d=l.dispatch,f=l.pending,g=i.memoizedState;if(f!==null){l.pending=null;var _=f=f.next;do g=a(g,_.action),_=_.next;while(_!==f);Yn(g,i.memoizedState)||(mn=!0),i.memoizedState=g,i.baseQueue===null&&(i.baseState=g),l.lastRenderedState=g}return[g,d]}function bg(){}function wg(a,i){var l=wt,d=Ln(),f=i(),g=!Yn(d.memoizedState,f);if(g&&(d.memoizedState=f,mn=!0),d=d.queue,Od(Sg.bind(null,l,d,a),[a]),d.getSnapshot!==i||g||Bt!==null&&Bt.memoizedState.tag&1){if(l.flags|=2048,as(9,Pg.bind(null,l,d,f,i),void 0,null),Ft===null)throw Error(n(349));(Kr&30)!==0||xg(l,i,f)}return f}function xg(a,i,l){a.flags|=16384,a={getSnapshot:i,value:l},i=wt.updateQueue,i===null?(i={lastEffect:null,stores:null},wt.updateQueue=i,i.stores=[a]):(l=i.stores,l===null?i.stores=[a]:l.push(a))}function Pg(a,i,l,d){i.value=l,i.getSnapshot=d,Cg(i)&&Tg(a)}function Sg(a,i,l){return l(function(){Cg(i)&&Tg(a)})}function Cg(a){var i=a.getSnapshot;a=a.value;try{var l=i();return!Yn(a,l)}catch{return!0}}function Tg(a){var i=Oa(a,1);i!==null&&ea(i,a,1,-1)}function Eg(a){var i=da();return typeof a=="function"&&(a=a()),i.memoizedState=i.baseState=a,a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ns,lastRenderedState:a},i.queue=a,a=a.dispatch=QP.bind(null,wt,a),[i.memoizedState,a]}function as(a,i,l,d){return a={tag:a,create:i,destroy:l,deps:d,next:null},i=wt.updateQueue,i===null?(i={lastEffect:null,stores:null},wt.updateQueue=i,i.lastEffect=a.next=a):(l=i.lastEffect,l===null?i.lastEffect=a.next=a:(d=l.next,l.next=a,a.next=d,i.lastEffect=a)),a}function Ag(){return Ln().memoizedState}function Fl(a,i,l,d){var f=da();wt.flags|=a,f.memoizedState=as(1|i,l,void 0,d===void 0?null:d)}function Vl(a,i,l,d){var f=Ln();d=d===void 0?null:d;var g=void 0;if(It!==null){var _=It.memoizedState;if(g=_.destroy,d!==null&&Ld(d,_.deps)){f.memoizedState=as(i,l,g,d);return}}wt.flags|=a,f.memoizedState=as(1|i,l,g,d)}function Rg(a,i){return Fl(8390656,8,a,i)}function Od(a,i){return Vl(2048,8,a,i)}function Lg(a,i){return Vl(4,2,a,i)}function Dg(a,i){return Vl(4,4,a,i)}function Ig(a,i){if(typeof i=="function")return a=a(),i(a),function(){i(null)};if(i!=null)return a=a(),i.current=a,function(){i.current=null}}function Mg(a,i,l){return l=l!=null?l.concat([a]):null,Vl(4,4,Ig.bind(null,i,a),l)}function jd(){}function Ng(a,i){var l=Ln();i=i===void 0?null:i;var d=l.memoizedState;return d!==null&&i!==null&&Ld(i,d[1])?d[0]:(l.memoizedState=[a,i],a)}function Og(a,i){var l=Ln();i=i===void 0?null:i;var d=l.memoizedState;return d!==null&&i!==null&&Ld(i,d[1])?d[0]:(a=a(),l.memoizedState=[a,i],a)}function jg(a,i,l){return(Kr&21)===0?(a.baseState&&(a.baseState=!1,mn=!0),a.memoizedState=l):(Yn(l,i)||(l=pm(),wt.lanes|=l,qr|=l,a.baseState=!0),i)}function ZP(a,i){var l=ct;ct=l!==0&&4>l?l:4,a(!0);var d=Rd.transition;Rd.transition={};try{a(!1),i()}finally{ct=l,Rd.transition=d}}function Ug(){return Ln().memoizedState}function XP(a,i,l){var d=kr(a);if(l={lane:d,action:l,hasEagerState:!1,eagerState:null,next:null},Bg(a))Fg(i,l);else if(l=gg(a,i,l,d),l!==null){var f=on();ea(l,a,d,f),Vg(l,i,d)}}function QP(a,i,l){var d=kr(a),f={lane:d,action:l,hasEagerState:!1,eagerState:null,next:null};if(Bg(a))Fg(i,f);else{var g=a.alternate;if(a.lanes===0&&(g===null||g.lanes===0)&&(g=i.lastRenderedReducer,g!==null))try{var _=i.lastRenderedState,E=g(_,l);if(f.hasEagerState=!0,f.eagerState=E,Yn(E,_)){var I=i.interleaved;I===null?(f.next=f,Pd(i)):(f.next=I.next,I.next=f),i.interleaved=f;return}}catch{}l=gg(a,i,f,d),l!==null&&(f=on(),ea(l,a,d,f),Vg(l,i,d))}}function Bg(a){var i=a.alternate;return a===wt||i!==null&&i===wt}function Fg(a,i){es=Bl=!0;var l=a.pending;l===null?i.next=i:(i.next=l.next,l.next=i),a.pending=i}function Vg(a,i,l){if((l&4194240)!==0){var d=i.lanes;d&=a.pendingLanes,l|=d,i.lanes=l,Bu(a,l)}}var zl={readContext:Rn,useCallback:Yt,useContext:Yt,useEffect:Yt,useImperativeHandle:Yt,useInsertionEffect:Yt,useLayoutEffect:Yt,useMemo:Yt,useReducer:Yt,useRef:Yt,useState:Yt,useDebugValue:Yt,useDeferredValue:Yt,useTransition:Yt,useMutableSource:Yt,useSyncExternalStore:Yt,useId:Yt,unstable_isNewReconciler:!1},JP={readContext:Rn,useCallback:function(a,i){return da().memoizedState=[a,i===void 0?null:i],a},useContext:Rn,useEffect:Rg,useImperativeHandle:function(a,i,l){return l=l!=null?l.concat([a]):null,Fl(4194308,4,Ig.bind(null,i,a),l)},useLayoutEffect:function(a,i){return Fl(4194308,4,a,i)},useInsertionEffect:function(a,i){return Fl(4,2,a,i)},useMemo:function(a,i){var l=da();return i=i===void 0?null:i,a=a(),l.memoizedState=[a,i],a},useReducer:function(a,i,l){var d=da();return i=l!==void 0?l(i):i,d.memoizedState=d.baseState=i,a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:i},d.queue=a,a=a.dispatch=XP.bind(null,wt,a),[d.memoizedState,a]},useRef:function(a){var i=da();return a={current:a},i.memoizedState=a},useState:Eg,useDebugValue:jd,useDeferredValue:function(a){return da().memoizedState=a},useTransition:function(){var a=Eg(!1),i=a[0];return a=ZP.bind(null,a[1]),da().memoizedState=a,[i,a]},useMutableSource:function(){},useSyncExternalStore:function(a,i,l){var d=wt,f=da();if(kt){if(l===void 0)throw Error(n(407));l=l()}else{if(l=i(),Ft===null)throw Error(n(349));(Kr&30)!==0||xg(d,i,l)}f.memoizedState=l;var g={value:l,getSnapshot:i};return f.queue=g,Rg(Sg.bind(null,d,g,a),[a]),d.flags|=2048,as(9,Pg.bind(null,d,g,l,i),void 0,null),l},useId:function(){var a=da(),i=Ft.identifierPrefix;if(kt){var l=Na,d=Ma;l=(d&~(1<<32-$e(d)-1)).toString(32)+l,i=":"+i+"R"+l,l=ts++,0<l&&(i+="H"+l.toString(32)),i+=":"}else l=YP++,i=":"+i+"r"+l.toString(32)+":";return a.memoizedState=i},unstable_isNewReconciler:!1},eS={readContext:Rn,useCallback:Ng,useContext:Rn,useEffect:Od,useImperativeHandle:Mg,useInsertionEffect:Lg,useLayoutEffect:Dg,useMemo:Og,useReducer:Md,useRef:Ag,useState:function(){return Md(ns)},useDebugValue:jd,useDeferredValue:function(a){var i=Ln();return jg(i,It.memoizedState,a)},useTransition:function(){var a=Md(ns)[0],i=Ln().memoizedState;return[a,i]},useMutableSource:bg,useSyncExternalStore:wg,useId:Ug,unstable_isNewReconciler:!1},tS={readContext:Rn,useCallback:Ng,useContext:Rn,useEffect:Od,useImperativeHandle:Mg,useInsertionEffect:Lg,useLayoutEffect:Dg,useMemo:Og,useReducer:Nd,useRef:Ag,useState:function(){return Nd(ns)},useDebugValue:jd,useDeferredValue:function(a){var i=Ln();return It===null?i.memoizedState=a:jg(i,It.memoizedState,a)},useTransition:function(){var a=Nd(ns)[0],i=Ln().memoizedState;return[a,i]},useMutableSource:bg,useSyncExternalStore:wg,useId:Ug,unstable_isNewReconciler:!1};function Xn(a,i){if(a&&a.defaultProps){i=$({},i),a=a.defaultProps;for(var l in a)i[l]===void 0&&(i[l]=a[l]);return i}return i}function Ud(a,i,l,d){i=a.memoizedState,l=l(d,i),l=l==null?i:$({},i,l),a.memoizedState=l,a.lanes===0&&(a.updateQueue.baseState=l)}var Hl={isMounted:function(a){return(a=a._reactInternals)?he(a)===a:!1},enqueueSetState:function(a,i,l){a=a._reactInternals;var d=on(),f=kr(a),g=ja(d,f);g.payload=i,l!=null&&(g.callback=l),i=mr(a,g,f),i!==null&&(ea(i,a,f,d),Nl(i,a,f))},enqueueReplaceState:function(a,i,l){a=a._reactInternals;var d=on(),f=kr(a),g=ja(d,f);g.tag=1,g.payload=i,l!=null&&(g.callback=l),i=mr(a,g,f),i!==null&&(ea(i,a,f,d),Nl(i,a,f))},enqueueForceUpdate:function(a,i){a=a._reactInternals;var l=on(),d=kr(a),f=ja(l,d);f.tag=2,i!=null&&(f.callback=i),i=mr(a,f,d),i!==null&&(ea(i,a,d,l),Nl(i,a,d))}};function zg(a,i,l,d,f,g,_){return a=a.stateNode,typeof a.shouldComponentUpdate=="function"?a.shouldComponentUpdate(d,g,_):i.prototype&&i.prototype.isPureReactComponent?!Ho(l,d)||!Ho(f,g):!0}function Hg(a,i,l){var d=!1,f=hr,g=i.contextType;return typeof g=="object"&&g!==null?g=Rn(g):(f=fn(i)?zr:qt.current,d=i.contextTypes,g=(d=d!=null)?Oi(a,f):hr),i=new i(l,g),a.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,i.updater=Hl,a.stateNode=i,i._reactInternals=a,d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=f,a.__reactInternalMemoizedMaskedChildContext=g),i}function $g(a,i,l,d){a=i.state,typeof i.componentWillReceiveProps=="function"&&i.componentWillReceiveProps(l,d),typeof i.UNSAFE_componentWillReceiveProps=="function"&&i.UNSAFE_componentWillReceiveProps(l,d),i.state!==a&&Hl.enqueueReplaceState(i,i.state,null)}function Bd(a,i,l,d){var f=a.stateNode;f.props=l,f.state=a.memoizedState,f.refs={},Sd(a);var g=i.contextType;typeof g=="object"&&g!==null?f.context=Rn(g):(g=fn(i)?zr:qt.current,f.context=Oi(a,g)),f.state=a.memoizedState,g=i.getDerivedStateFromProps,typeof g=="function"&&(Ud(a,i,g,l),f.state=a.memoizedState),typeof i.getDerivedStateFromProps=="function"||typeof f.getSnapshotBeforeUpdate=="function"||typeof f.UNSAFE_componentWillMount!="function"&&typeof f.componentWillMount!="function"||(i=f.state,typeof f.componentWillMount=="function"&&f.componentWillMount(),typeof f.UNSAFE_componentWillMount=="function"&&f.UNSAFE_componentWillMount(),i!==f.state&&Hl.enqueueReplaceState(f,f.state,null),Ol(a,l,f,d),f.state=a.memoizedState),typeof f.componentDidMount=="function"&&(a.flags|=4194308)}function $i(a,i){try{var l="",d=i;do l+=Pe(d),d=d.return;while(d);var f=l}catch(g){f=`
|
|
8
|
-
Error generating stack: `+g.message+`
|
|
9
|
-
`+g.stack}return{value:a,source:i,stack:f,digest:null}}function Fd(a,i,l){return{value:a,source:null,stack:l??null,digest:i??null}}function Vd(a,i){try{console.error(i.value)}catch(l){setTimeout(function(){throw l})}}var nS=typeof WeakMap=="function"?WeakMap:Map;function Wg(a,i,l){l=ja(-1,l),l.tag=3,l.payload={element:null};var d=i.value;return l.callback=function(){Zl||(Zl=!0,nh=d),Vd(a,i)},l}function Gg(a,i,l){l=ja(-1,l),l.tag=3;var d=a.type.getDerivedStateFromError;if(typeof d=="function"){var f=i.value;l.payload=function(){return d(f)},l.callback=function(){Vd(a,i)}}var g=a.stateNode;return g!==null&&typeof g.componentDidCatch=="function"&&(l.callback=function(){Vd(a,i),typeof d!="function"&&(yr===null?yr=new Set([this]):yr.add(this));var _=i.stack;this.componentDidCatch(i.value,{componentStack:_!==null?_:""})}),l}function Kg(a,i,l){var d=a.pingCache;if(d===null){d=a.pingCache=new nS;var f=new Set;d.set(i,f)}else f=d.get(i),f===void 0&&(f=new Set,d.set(i,f));f.has(l)||(f.add(l),a=gS.bind(null,a,i,l),i.then(a,a))}function qg(a){do{var i;if((i=a.tag===13)&&(i=a.memoizedState,i=i!==null?i.dehydrated!==null:!0),i)return a;a=a.return}while(a!==null);return null}function Yg(a,i,l,d,f){return(a.mode&1)===0?(a===i?a.flags|=65536:(a.flags|=128,l.flags|=131072,l.flags&=-52805,l.tag===1&&(l.alternate===null?l.tag=17:(i=ja(-1,1),i.tag=2,mr(l,i,1))),l.lanes|=1),a):(a.flags|=65536,a.lanes=f,a)}var aS=O.ReactCurrentOwner,mn=!1;function rn(a,i,l,d){i.child=a===null?mg(i,null,l,d):Fi(i,a.child,l,d)}function Zg(a,i,l,d,f){l=l.render;var g=i.ref;return zi(i,f),d=Dd(a,i,l,d,g,f),l=Id(),a!==null&&!mn?(i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~f,Ua(a,i,f)):(kt&&l&&md(i),i.flags|=1,rn(a,i,d,f),i.child)}function Xg(a,i,l,d,f){if(a===null){var g=l.type;return typeof g=="function"&&!ch(g)&&g.defaultProps===void 0&&l.compare===null&&l.defaultProps===void 0?(i.tag=15,i.type=g,Qg(a,i,g,d,f)):(a=nc(l.type,null,d,i,i.mode,f),a.ref=i.ref,a.return=i,i.child=a)}if(g=a.child,(a.lanes&f)===0){var _=g.memoizedProps;if(l=l.compare,l=l!==null?l:Ho,l(_,d)&&a.ref===i.ref)return Ua(a,i,f)}return i.flags|=1,a=br(g,d),a.ref=i.ref,a.return=i,i.child=a}function Qg(a,i,l,d,f){if(a!==null){var g=a.memoizedProps;if(Ho(g,d)&&a.ref===i.ref)if(mn=!1,i.pendingProps=d=g,(a.lanes&f)!==0)(a.flags&131072)!==0&&(mn=!0);else return i.lanes=a.lanes,Ua(a,i,f)}return zd(a,i,l,d,f)}function Jg(a,i,l){var d=i.pendingProps,f=d.children,g=a!==null?a.memoizedState:null;if(d.mode==="hidden")if((i.mode&1)===0)i.memoizedState={baseLanes:0,cachePool:null,transitions:null},pt(Gi,wn),wn|=l;else{if((l&1073741824)===0)return a=g!==null?g.baseLanes|l:l,i.lanes=i.childLanes=1073741824,i.memoizedState={baseLanes:a,cachePool:null,transitions:null},i.updateQueue=null,pt(Gi,wn),wn|=a,null;i.memoizedState={baseLanes:0,cachePool:null,transitions:null},d=g!==null?g.baseLanes:l,pt(Gi,wn),wn|=d}else g!==null?(d=g.baseLanes|l,i.memoizedState=null):d=l,pt(Gi,wn),wn|=d;return rn(a,i,f,l),i.child}function ey(a,i){var l=i.ref;(a===null&&l!==null||a!==null&&a.ref!==l)&&(i.flags|=512,i.flags|=2097152)}function zd(a,i,l,d,f){var g=fn(l)?zr:qt.current;return g=Oi(i,g),zi(i,f),l=Dd(a,i,l,d,g,f),d=Id(),a!==null&&!mn?(i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~f,Ua(a,i,f)):(kt&&d&&md(i),i.flags|=1,rn(a,i,l,f),i.child)}function ty(a,i,l,d,f){if(fn(l)){var g=!0;Tl(i)}else g=!1;if(zi(i,f),i.stateNode===null)Wl(a,i),Hg(i,l,d),Bd(i,l,d,f),d=!0;else if(a===null){var _=i.stateNode,E=i.memoizedProps;_.props=E;var I=_.context,H=l.contextType;typeof H=="object"&&H!==null?H=Rn(H):(H=fn(l)?zr:qt.current,H=Oi(i,H));var ee=l.getDerivedStateFromProps,ne=typeof ee=="function"||typeof _.getSnapshotBeforeUpdate=="function";ne||typeof _.UNSAFE_componentWillReceiveProps!="function"&&typeof _.componentWillReceiveProps!="function"||(E!==d||I!==H)&&$g(i,_,d,H),fr=!1;var J=i.memoizedState;_.state=J,Ol(i,d,_,f),I=i.memoizedState,E!==d||J!==I||pn.current||fr?(typeof ee=="function"&&(Ud(i,l,ee,d),I=i.memoizedState),(E=fr||zg(i,l,E,d,J,I,H))?(ne||typeof _.UNSAFE_componentWillMount!="function"&&typeof _.componentWillMount!="function"||(typeof _.componentWillMount=="function"&&_.componentWillMount(),typeof _.UNSAFE_componentWillMount=="function"&&_.UNSAFE_componentWillMount()),typeof _.componentDidMount=="function"&&(i.flags|=4194308)):(typeof _.componentDidMount=="function"&&(i.flags|=4194308),i.memoizedProps=d,i.memoizedState=I),_.props=d,_.state=I,_.context=H,d=E):(typeof _.componentDidMount=="function"&&(i.flags|=4194308),d=!1)}else{_=i.stateNode,yg(a,i),E=i.memoizedProps,H=i.type===i.elementType?E:Xn(i.type,E),_.props=H,ne=i.pendingProps,J=_.context,I=l.contextType,typeof I=="object"&&I!==null?I=Rn(I):(I=fn(l)?zr:qt.current,I=Oi(i,I));var de=l.getDerivedStateFromProps;(ee=typeof de=="function"||typeof _.getSnapshotBeforeUpdate=="function")||typeof _.UNSAFE_componentWillReceiveProps!="function"&&typeof _.componentWillReceiveProps!="function"||(E!==ne||J!==I)&&$g(i,_,d,I),fr=!1,J=i.memoizedState,_.state=J,Ol(i,d,_,f);var ve=i.memoizedState;E!==ne||J!==ve||pn.current||fr?(typeof de=="function"&&(Ud(i,l,de,d),ve=i.memoizedState),(H=fr||zg(i,l,H,d,J,ve,I)||!1)?(ee||typeof _.UNSAFE_componentWillUpdate!="function"&&typeof _.componentWillUpdate!="function"||(typeof _.componentWillUpdate=="function"&&_.componentWillUpdate(d,ve,I),typeof _.UNSAFE_componentWillUpdate=="function"&&_.UNSAFE_componentWillUpdate(d,ve,I)),typeof _.componentDidUpdate=="function"&&(i.flags|=4),typeof _.getSnapshotBeforeUpdate=="function"&&(i.flags|=1024)):(typeof _.componentDidUpdate!="function"||E===a.memoizedProps&&J===a.memoizedState||(i.flags|=4),typeof _.getSnapshotBeforeUpdate!="function"||E===a.memoizedProps&&J===a.memoizedState||(i.flags|=1024),i.memoizedProps=d,i.memoizedState=ve),_.props=d,_.state=ve,_.context=I,d=H):(typeof _.componentDidUpdate!="function"||E===a.memoizedProps&&J===a.memoizedState||(i.flags|=4),typeof _.getSnapshotBeforeUpdate!="function"||E===a.memoizedProps&&J===a.memoizedState||(i.flags|=1024),d=!1)}return Hd(a,i,l,d,g,f)}function Hd(a,i,l,d,f,g){ey(a,i);var _=(i.flags&128)!==0;if(!d&&!_)return f&&og(i,l,!1),Ua(a,i,g);d=i.stateNode,aS.current=i;var E=_&&typeof l.getDerivedStateFromError!="function"?null:d.render();return i.flags|=1,a!==null&&_?(i.child=Fi(i,a.child,null,g),i.child=Fi(i,null,E,g)):rn(a,i,E,g),i.memoizedState=d.state,f&&og(i,l,!0),i.child}function ny(a){var i=a.stateNode;i.pendingContext?rg(a,i.pendingContext,i.pendingContext!==i.context):i.context&&rg(a,i.context,!1),Cd(a,i.containerInfo)}function ay(a,i,l,d,f){return Bi(),kd(f),i.flags|=256,rn(a,i,l,d),i.child}var $d={dehydrated:null,treeContext:null,retryLane:0};function Wd(a){return{baseLanes:a,cachePool:null,transitions:null}}function ry(a,i,l){var d=i.pendingProps,f=bt.current,g=!1,_=(i.flags&128)!==0,E;if((E=_)||(E=a!==null&&a.memoizedState===null?!1:(f&2)!==0),E?(g=!0,i.flags&=-129):(a===null||a.memoizedState!==null)&&(f|=1),pt(bt,f&1),a===null)return vd(i),a=i.memoizedState,a!==null&&(a=a.dehydrated,a!==null)?((i.mode&1)===0?i.lanes=1:a.data==="$!"?i.lanes=8:i.lanes=1073741824,null):(_=d.children,a=d.fallback,g?(d=i.mode,g=i.child,_={mode:"hidden",children:_},(d&1)===0&&g!==null?(g.childLanes=0,g.pendingProps=_):g=ac(_,d,0,null),a=Qr(a,d,l,null),g.return=i,a.return=i,g.sibling=a,i.child=g,i.child.memoizedState=Wd(l),i.memoizedState=$d,a):Gd(i,_));if(f=a.memoizedState,f!==null&&(E=f.dehydrated,E!==null))return rS(a,i,_,d,E,f,l);if(g){g=d.fallback,_=i.mode,f=a.child,E=f.sibling;var I={mode:"hidden",children:d.children};return(_&1)===0&&i.child!==f?(d=i.child,d.childLanes=0,d.pendingProps=I,i.deletions=null):(d=br(f,I),d.subtreeFlags=f.subtreeFlags&14680064),E!==null?g=br(E,g):(g=Qr(g,_,l,null),g.flags|=2),g.return=i,d.return=i,d.sibling=g,i.child=d,d=g,g=i.child,_=a.child.memoizedState,_=_===null?Wd(l):{baseLanes:_.baseLanes|l,cachePool:null,transitions:_.transitions},g.memoizedState=_,g.childLanes=a.childLanes&~l,i.memoizedState=$d,d}return g=a.child,a=g.sibling,d=br(g,{mode:"visible",children:d.children}),(i.mode&1)===0&&(d.lanes=l),d.return=i,d.sibling=null,a!==null&&(l=i.deletions,l===null?(i.deletions=[a],i.flags|=16):l.push(a)),i.child=d,i.memoizedState=null,d}function Gd(a,i){return i=ac({mode:"visible",children:i},a.mode,0,null),i.return=a,a.child=i}function $l(a,i,l,d){return d!==null&&kd(d),Fi(i,a.child,null,l),a=Gd(i,i.pendingProps.children),a.flags|=2,i.memoizedState=null,a}function rS(a,i,l,d,f,g,_){if(l)return i.flags&256?(i.flags&=-257,d=Fd(Error(n(422))),$l(a,i,_,d)):i.memoizedState!==null?(i.child=a.child,i.flags|=128,null):(g=d.fallback,f=i.mode,d=ac({mode:"visible",children:d.children},f,0,null),g=Qr(g,f,_,null),g.flags|=2,d.return=i,g.return=i,d.sibling=g,i.child=d,(i.mode&1)!==0&&Fi(i,a.child,null,_),i.child.memoizedState=Wd(_),i.memoizedState=$d,g);if((i.mode&1)===0)return $l(a,i,_,null);if(f.data==="$!"){if(d=f.nextSibling&&f.nextSibling.dataset,d)var E=d.dgst;return d=E,g=Error(n(419)),d=Fd(g,d,void 0),$l(a,i,_,d)}if(E=(_&a.childLanes)!==0,mn||E){if(d=Ft,d!==null){switch(_&-_){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=268435456;break;default:f=0}f=(f&(d.suspendedLanes|_))!==0?0:f,f!==0&&f!==g.retryLane&&(g.retryLane=f,Oa(a,f),ea(d,a,f,-1))}return lh(),d=Fd(Error(n(421))),$l(a,i,_,d)}return f.data==="$?"?(i.flags|=128,i.child=a.child,i=yS.bind(null,a),f._reactRetry=i,null):(a=g.treeContext,bn=ur(f.nextSibling),_n=i,kt=!0,Zn=null,a!==null&&(En[An++]=Ma,En[An++]=Na,En[An++]=Hr,Ma=a.id,Na=a.overflow,Hr=i),i=Gd(i,d.children),i.flags|=4096,i)}function iy(a,i,l){a.lanes|=i;var d=a.alternate;d!==null&&(d.lanes|=i),xd(a.return,i,l)}function Kd(a,i,l,d,f){var g=a.memoizedState;g===null?a.memoizedState={isBackwards:i,rendering:null,renderingStartTime:0,last:d,tail:l,tailMode:f}:(g.isBackwards=i,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=l,g.tailMode=f)}function oy(a,i,l){var d=i.pendingProps,f=d.revealOrder,g=d.tail;if(rn(a,i,d.children,l),d=bt.current,(d&2)!==0)d=d&1|2,i.flags|=128;else{if(a!==null&&(a.flags&128)!==0)e:for(a=i.child;a!==null;){if(a.tag===13)a.memoizedState!==null&&iy(a,l,i);else if(a.tag===19)iy(a,l,i);else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===i)break e;for(;a.sibling===null;){if(a.return===null||a.return===i)break e;a=a.return}a.sibling.return=a.return,a=a.sibling}d&=1}if(pt(bt,d),(i.mode&1)===0)i.memoizedState=null;else switch(f){case"forwards":for(l=i.child,f=null;l!==null;)a=l.alternate,a!==null&&jl(a)===null&&(f=l),l=l.sibling;l=f,l===null?(f=i.child,i.child=null):(f=l.sibling,l.sibling=null),Kd(i,!1,f,l,g);break;case"backwards":for(l=null,f=i.child,i.child=null;f!==null;){if(a=f.alternate,a!==null&&jl(a)===null){i.child=f;break}a=f.sibling,f.sibling=l,l=f,f=a}Kd(i,!0,l,null,g);break;case"together":Kd(i,!1,null,null,void 0);break;default:i.memoizedState=null}return i.child}function Wl(a,i){(i.mode&1)===0&&a!==null&&(a.alternate=null,i.alternate=null,i.flags|=2)}function Ua(a,i,l){if(a!==null&&(i.dependencies=a.dependencies),qr|=i.lanes,(l&i.childLanes)===0)return null;if(a!==null&&i.child!==a.child)throw Error(n(153));if(i.child!==null){for(a=i.child,l=br(a,a.pendingProps),i.child=l,l.return=i;a.sibling!==null;)a=a.sibling,l=l.sibling=br(a,a.pendingProps),l.return=i;l.sibling=null}return i.child}function iS(a,i,l){switch(i.tag){case 3:ny(i),Bi();break;case 5:_g(i);break;case 1:fn(i.type)&&Tl(i);break;case 4:Cd(i,i.stateNode.containerInfo);break;case 10:var d=i.type._context,f=i.memoizedProps.value;pt(Il,d._currentValue),d._currentValue=f;break;case 13:if(d=i.memoizedState,d!==null)return d.dehydrated!==null?(pt(bt,bt.current&1),i.flags|=128,null):(l&i.child.childLanes)!==0?ry(a,i,l):(pt(bt,bt.current&1),a=Ua(a,i,l),a!==null?a.sibling:null);pt(bt,bt.current&1);break;case 19:if(d=(l&i.childLanes)!==0,(a.flags&128)!==0){if(d)return oy(a,i,l);i.flags|=128}if(f=i.memoizedState,f!==null&&(f.rendering=null,f.tail=null,f.lastEffect=null),pt(bt,bt.current),d)break;return null;case 22:case 23:return i.lanes=0,Jg(a,i,l)}return Ua(a,i,l)}var sy,qd,ly,cy;sy=function(a,i){for(var l=i.child;l!==null;){if(l.tag===5||l.tag===6)a.appendChild(l.stateNode);else if(l.tag!==4&&l.child!==null){l.child.return=l,l=l.child;continue}if(l===i)break;for(;l.sibling===null;){if(l.return===null||l.return===i)return;l=l.return}l.sibling.return=l.return,l=l.sibling}},qd=function(){},ly=function(a,i,l,d){var f=a.memoizedProps;if(f!==d){a=i.stateNode,Gr(ua.current);var g=null;switch(l){case"input":f=en(a,f),d=en(a,d),g=[];break;case"select":f=$({},f,{value:void 0}),d=$({},d,{value:void 0}),g=[];break;case"textarea":f=Co(a,f),d=Co(a,d),g=[];break;default:typeof f.onClick!="function"&&typeof d.onClick=="function"&&(a.onclick=Pl)}_i(l,d);var _;l=null;for(H in f)if(!d.hasOwnProperty(H)&&f.hasOwnProperty(H)&&f[H]!=null)if(H==="style"){var E=f[H];for(_ in E)E.hasOwnProperty(_)&&(l||(l={}),l[_]="")}else H!=="dangerouslySetInnerHTML"&&H!=="children"&&H!=="suppressContentEditableWarning"&&H!=="suppressHydrationWarning"&&H!=="autoFocus"&&(o.hasOwnProperty(H)?g||(g=[]):(g=g||[]).push(H,null));for(H in d){var I=d[H];if(E=f?.[H],d.hasOwnProperty(H)&&I!==E&&(I!=null||E!=null))if(H==="style")if(E){for(_ in E)!E.hasOwnProperty(_)||I&&I.hasOwnProperty(_)||(l||(l={}),l[_]="");for(_ in I)I.hasOwnProperty(_)&&E[_]!==I[_]&&(l||(l={}),l[_]=I[_])}else l||(g||(g=[]),g.push(H,l)),l=I;else H==="dangerouslySetInnerHTML"?(I=I?I.__html:void 0,E=E?E.__html:void 0,I!=null&&E!==I&&(g=g||[]).push(H,I)):H==="children"?typeof I!="string"&&typeof I!="number"||(g=g||[]).push(H,""+I):H!=="suppressContentEditableWarning"&&H!=="suppressHydrationWarning"&&(o.hasOwnProperty(H)?(I!=null&&H==="onScroll"&&mt("scroll",a),g||E===I||(g=[])):(g=g||[]).push(H,I))}l&&(g=g||[]).push("style",l);var H=g;(i.updateQueue=H)&&(i.flags|=4)}},cy=function(a,i,l,d){l!==d&&(i.flags|=4)};function rs(a,i){if(!kt)switch(a.tailMode){case"hidden":i=a.tail;for(var l=null;i!==null;)i.alternate!==null&&(l=i),i=i.sibling;l===null?a.tail=null:l.sibling=null;break;case"collapsed":l=a.tail;for(var d=null;l!==null;)l.alternate!==null&&(d=l),l=l.sibling;d===null?i||a.tail===null?a.tail=null:a.tail.sibling=null:d.sibling=null}}function Zt(a){var i=a.alternate!==null&&a.alternate.child===a.child,l=0,d=0;if(i)for(var f=a.child;f!==null;)l|=f.lanes|f.childLanes,d|=f.subtreeFlags&14680064,d|=f.flags&14680064,f.return=a,f=f.sibling;else for(f=a.child;f!==null;)l|=f.lanes|f.childLanes,d|=f.subtreeFlags,d|=f.flags,f.return=a,f=f.sibling;return a.subtreeFlags|=d,a.childLanes=l,i}function oS(a,i,l){var d=i.pendingProps;switch(gd(i),i.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Zt(i),null;case 1:return fn(i.type)&&Cl(),Zt(i),null;case 3:return d=i.stateNode,Hi(),gt(pn),gt(qt),Ad(),d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null),(a===null||a.child===null)&&(Ll(i)?i.flags|=4:a===null||a.memoizedState.isDehydrated&&(i.flags&256)===0||(i.flags|=1024,Zn!==null&&(ih(Zn),Zn=null))),qd(a,i),Zt(i),null;case 5:Td(i);var f=Gr(Jo.current);if(l=i.type,a!==null&&i.stateNode!=null)ly(a,i,l,d,f),a.ref!==i.ref&&(i.flags|=512,i.flags|=2097152);else{if(!d){if(i.stateNode===null)throw Error(n(166));return Zt(i),null}if(a=Gr(ua.current),Ll(i)){d=i.stateNode,l=i.type;var g=i.memoizedProps;switch(d[ca]=i,d[qo]=g,a=(i.mode&1)!==0,l){case"dialog":mt("cancel",d),mt("close",d);break;case"iframe":case"object":case"embed":mt("load",d);break;case"video":case"audio":for(f=0;f<Wo.length;f++)mt(Wo[f],d);break;case"source":mt("error",d);break;case"img":case"image":case"link":mt("error",d),mt("load",d);break;case"details":mt("toggle",d);break;case"input":Po(d,g),mt("invalid",d);break;case"select":d._wrapperState={wasMultiple:!!g.multiple},mt("invalid",d);break;case"textarea":il(d,g),mt("invalid",d)}_i(l,g),f=null;for(var _ in g)if(g.hasOwnProperty(_)){var E=g[_];_==="children"?typeof E=="string"?d.textContent!==E&&(g.suppressHydrationWarning!==!0&&xl(d.textContent,E,a),f=["children",E]):typeof E=="number"&&d.textContent!==""+E&&(g.suppressHydrationWarning!==!0&&xl(d.textContent,E,a),f=["children",""+E]):o.hasOwnProperty(_)&&E!=null&&_==="onScroll"&&mt("scroll",d)}switch(l){case"input":$n(d),rl(d,g,!0);break;case"textarea":$n(d),la(d);break;case"select":case"option":break;default:typeof g.onClick=="function"&&(d.onclick=Pl)}d=f,i.updateQueue=d,d!==null&&(i.flags|=4)}else{_=f.nodeType===9?f:f.ownerDocument,a==="http://www.w3.org/1999/xhtml"&&(a=Za(l)),a==="http://www.w3.org/1999/xhtml"?l==="script"?(a=_.createElement("div"),a.innerHTML="<script><\/script>",a=a.removeChild(a.firstChild)):typeof d.is=="string"?a=_.createElement(l,{is:d.is}):(a=_.createElement(l),l==="select"&&(_=a,d.multiple?_.multiple=!0:d.size&&(_.size=d.size))):a=_.createElementNS(a,l),a[ca]=i,a[qo]=d,sy(a,i,!1,!1),i.stateNode=a;e:{switch(_=bi(l,d),l){case"dialog":mt("cancel",a),mt("close",a),f=d;break;case"iframe":case"object":case"embed":mt("load",a),f=d;break;case"video":case"audio":for(f=0;f<Wo.length;f++)mt(Wo[f],a);f=d;break;case"source":mt("error",a),f=d;break;case"img":case"image":case"link":mt("error",a),mt("load",a),f=d;break;case"details":mt("toggle",a),f=d;break;case"input":Po(a,d),f=en(a,d),mt("invalid",a);break;case"option":f=d;break;case"select":a._wrapperState={wasMultiple:!!d.multiple},f=$({},d,{value:void 0}),mt("invalid",a);break;case"textarea":il(a,d),f=Co(a,d),mt("invalid",a);break;default:f=d}_i(l,f),E=f;for(g in E)if(E.hasOwnProperty(g)){var I=E[g];g==="style"?sl(a,I):g==="dangerouslySetInnerHTML"?(I=I?I.__html:void 0,I!=null&&Cn(a,I)):g==="children"?typeof I=="string"?(l!=="textarea"||I!=="")&&tn(a,I):typeof I=="number"&&tn(a,""+I):g!=="suppressContentEditableWarning"&&g!=="suppressHydrationWarning"&&g!=="autoFocus"&&(o.hasOwnProperty(g)?I!=null&&g==="onScroll"&&mt("scroll",a):I!=null&&R(a,g,I,_))}switch(l){case"input":$n(a),rl(a,d,!1);break;case"textarea":$n(a),la(a);break;case"option":d.value!=null&&a.setAttribute("value",""+Qe(d.value));break;case"select":a.multiple=!!d.multiple,g=d.value,g!=null?Ya(a,!!d.multiple,g,!1):d.defaultValue!=null&&Ya(a,!!d.multiple,d.defaultValue,!0);break;default:typeof f.onClick=="function"&&(a.onclick=Pl)}switch(l){case"button":case"input":case"select":case"textarea":d=!!d.autoFocus;break e;case"img":d=!0;break e;default:d=!1}}d&&(i.flags|=4)}i.ref!==null&&(i.flags|=512,i.flags|=2097152)}return Zt(i),null;case 6:if(a&&i.stateNode!=null)cy(a,i,a.memoizedProps,d);else{if(typeof d!="string"&&i.stateNode===null)throw Error(n(166));if(l=Gr(Jo.current),Gr(ua.current),Ll(i)){if(d=i.stateNode,l=i.memoizedProps,d[ca]=i,(g=d.nodeValue!==l)&&(a=_n,a!==null))switch(a.tag){case 3:xl(d.nodeValue,l,(a.mode&1)!==0);break;case 5:a.memoizedProps.suppressHydrationWarning!==!0&&xl(d.nodeValue,l,(a.mode&1)!==0)}g&&(i.flags|=4)}else d=(l.nodeType===9?l:l.ownerDocument).createTextNode(d),d[ca]=i,i.stateNode=d}return Zt(i),null;case 13:if(gt(bt),d=i.memoizedState,a===null||a.memoizedState!==null&&a.memoizedState.dehydrated!==null){if(kt&&bn!==null&&(i.mode&1)!==0&&(i.flags&128)===0)hg(),Bi(),i.flags|=98560,g=!1;else if(g=Ll(i),d!==null&&d.dehydrated!==null){if(a===null){if(!g)throw Error(n(318));if(g=i.memoizedState,g=g!==null?g.dehydrated:null,!g)throw Error(n(317));g[ca]=i}else Bi(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;Zt(i),g=!1}else Zn!==null&&(ih(Zn),Zn=null),g=!0;if(!g)return i.flags&65536?i:null}return(i.flags&128)!==0?(i.lanes=l,i):(d=d!==null,d!==(a!==null&&a.memoizedState!==null)&&d&&(i.child.flags|=8192,(i.mode&1)!==0&&(a===null||(bt.current&1)!==0?Mt===0&&(Mt=3):lh())),i.updateQueue!==null&&(i.flags|=4),Zt(i),null);case 4:return Hi(),qd(a,i),a===null&&Go(i.stateNode.containerInfo),Zt(i),null;case 10:return wd(i.type._context),Zt(i),null;case 17:return fn(i.type)&&Cl(),Zt(i),null;case 19:if(gt(bt),g=i.memoizedState,g===null)return Zt(i),null;if(d=(i.flags&128)!==0,_=g.rendering,_===null)if(d)rs(g,!1);else{if(Mt!==0||a!==null&&(a.flags&128)!==0)for(a=i.child;a!==null;){if(_=jl(a),_!==null){for(i.flags|=128,rs(g,!1),d=_.updateQueue,d!==null&&(i.updateQueue=d,i.flags|=4),i.subtreeFlags=0,d=l,l=i.child;l!==null;)g=l,a=d,g.flags&=14680066,_=g.alternate,_===null?(g.childLanes=0,g.lanes=a,g.child=null,g.subtreeFlags=0,g.memoizedProps=null,g.memoizedState=null,g.updateQueue=null,g.dependencies=null,g.stateNode=null):(g.childLanes=_.childLanes,g.lanes=_.lanes,g.child=_.child,g.subtreeFlags=0,g.deletions=null,g.memoizedProps=_.memoizedProps,g.memoizedState=_.memoizedState,g.updateQueue=_.updateQueue,g.type=_.type,a=_.dependencies,g.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext}),l=l.sibling;return pt(bt,bt.current&1|2),i.child}a=a.sibling}g.tail!==null&&at()>Ki&&(i.flags|=128,d=!0,rs(g,!1),i.lanes=4194304)}else{if(!d)if(a=jl(_),a!==null){if(i.flags|=128,d=!0,l=a.updateQueue,l!==null&&(i.updateQueue=l,i.flags|=4),rs(g,!0),g.tail===null&&g.tailMode==="hidden"&&!_.alternate&&!kt)return Zt(i),null}else 2*at()-g.renderingStartTime>Ki&&l!==1073741824&&(i.flags|=128,d=!0,rs(g,!1),i.lanes=4194304);g.isBackwards?(_.sibling=i.child,i.child=_):(l=g.last,l!==null?l.sibling=_:i.child=_,g.last=_)}return g.tail!==null?(i=g.tail,g.rendering=i,g.tail=i.sibling,g.renderingStartTime=at(),i.sibling=null,l=bt.current,pt(bt,d?l&1|2:l&1),i):(Zt(i),null);case 22:case 23:return sh(),d=i.memoizedState!==null,a!==null&&a.memoizedState!==null!==d&&(i.flags|=8192),d&&(i.mode&1)!==0?(wn&1073741824)!==0&&(Zt(i),i.subtreeFlags&6&&(i.flags|=8192)):Zt(i),null;case 24:return null;case 25:return null}throw Error(n(156,i.tag))}function sS(a,i){switch(gd(i),i.tag){case 1:return fn(i.type)&&Cl(),a=i.flags,a&65536?(i.flags=a&-65537|128,i):null;case 3:return Hi(),gt(pn),gt(qt),Ad(),a=i.flags,(a&65536)!==0&&(a&128)===0?(i.flags=a&-65537|128,i):null;case 5:return Td(i),null;case 13:if(gt(bt),a=i.memoizedState,a!==null&&a.dehydrated!==null){if(i.alternate===null)throw Error(n(340));Bi()}return a=i.flags,a&65536?(i.flags=a&-65537|128,i):null;case 19:return gt(bt),null;case 4:return Hi(),null;case 10:return wd(i.type._context),null;case 22:case 23:return sh(),null;case 24:return null;default:return null}}var Gl=!1,Xt=!1,lS=typeof WeakSet=="function"?WeakSet:Set,ge=null;function Wi(a,i){var l=a.ref;if(l!==null)if(typeof l=="function")try{l(null)}catch(d){xt(a,i,d)}else l.current=null}function Yd(a,i,l){try{l()}catch(d){xt(a,i,d)}}var uy=!1;function cS(a,i){if(sd=hl,a=zm(),Ju(a)){if("selectionStart"in a)var l={start:a.selectionStart,end:a.selectionEnd};else e:{l=(l=a.ownerDocument)&&l.defaultView||window;var d=l.getSelection&&l.getSelection();if(d&&d.rangeCount!==0){l=d.anchorNode;var f=d.anchorOffset,g=d.focusNode;d=d.focusOffset;try{l.nodeType,g.nodeType}catch{l=null;break e}var _=0,E=-1,I=-1,H=0,ee=0,ne=a,J=null;t:for(;;){for(var de;ne!==l||f!==0&&ne.nodeType!==3||(E=_+f),ne!==g||d!==0&&ne.nodeType!==3||(I=_+d),ne.nodeType===3&&(_+=ne.nodeValue.length),(de=ne.firstChild)!==null;)J=ne,ne=de;for(;;){if(ne===a)break t;if(J===l&&++H===f&&(E=_),J===g&&++ee===d&&(I=_),(de=ne.nextSibling)!==null)break;ne=J,J=ne.parentNode}ne=de}l=E===-1||I===-1?null:{start:E,end:I}}else l=null}l=l||{start:0,end:0}}else l=null;for(ld={focusedElem:a,selectionRange:l},hl=!1,ge=i;ge!==null;)if(i=ge,a=i.child,(i.subtreeFlags&1028)!==0&&a!==null)a.return=i,ge=a;else for(;ge!==null;){i=ge;try{var ve=i.alternate;if((i.flags&1024)!==0)switch(i.tag){case 0:case 11:case 15:break;case 1:if(ve!==null){var we=ve.memoizedProps,Ct=ve.memoizedState,B=i.stateNode,j=B.getSnapshotBeforeUpdate(i.elementType===i.type?we:Xn(i.type,we),Ct);B.__reactInternalSnapshotBeforeUpdate=j}break;case 3:var F=i.stateNode.containerInfo;F.nodeType===1?F.textContent="":F.nodeType===9&&F.documentElement&&F.removeChild(F.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}catch(oe){xt(i,i.return,oe)}if(a=i.sibling,a!==null){a.return=i.return,ge=a;break}ge=i.return}return ve=uy,uy=!1,ve}function is(a,i,l){var d=i.updateQueue;if(d=d!==null?d.lastEffect:null,d!==null){var f=d=d.next;do{if((f.tag&a)===a){var g=f.destroy;f.destroy=void 0,g!==void 0&&Yd(i,l,g)}f=f.next}while(f!==d)}}function Kl(a,i){if(i=i.updateQueue,i=i!==null?i.lastEffect:null,i!==null){var l=i=i.next;do{if((l.tag&a)===a){var d=l.create;l.destroy=d()}l=l.next}while(l!==i)}}function Zd(a){var i=a.ref;if(i!==null){var l=a.stateNode;a.tag,a=l,typeof i=="function"?i(a):i.current=a}}function dy(a){var i=a.alternate;i!==null&&(a.alternate=null,dy(i)),a.child=null,a.deletions=null,a.sibling=null,a.tag===5&&(i=a.stateNode,i!==null&&(delete i[ca],delete i[qo],delete i[hd],delete i[WP],delete i[GP])),a.stateNode=null,a.return=null,a.dependencies=null,a.memoizedProps=null,a.memoizedState=null,a.pendingProps=null,a.stateNode=null,a.updateQueue=null}function hy(a){return a.tag===5||a.tag===3||a.tag===4}function py(a){e:for(;;){for(;a.sibling===null;){if(a.return===null||hy(a.return))return null;a=a.return}for(a.sibling.return=a.return,a=a.sibling;a.tag!==5&&a.tag!==6&&a.tag!==18;){if(a.flags&2||a.child===null||a.tag===4)continue e;a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}function Xd(a,i,l){var d=a.tag;if(d===5||d===6)a=a.stateNode,i?l.nodeType===8?l.parentNode.insertBefore(a,i):l.insertBefore(a,i):(l.nodeType===8?(i=l.parentNode,i.insertBefore(a,l)):(i=l,i.appendChild(a)),l=l._reactRootContainer,l!=null||i.onclick!==null||(i.onclick=Pl));else if(d!==4&&(a=a.child,a!==null))for(Xd(a,i,l),a=a.sibling;a!==null;)Xd(a,i,l),a=a.sibling}function Qd(a,i,l){var d=a.tag;if(d===5||d===6)a=a.stateNode,i?l.insertBefore(a,i):l.appendChild(a);else if(d!==4&&(a=a.child,a!==null))for(Qd(a,i,l),a=a.sibling;a!==null;)Qd(a,i,l),a=a.sibling}var $t=null,Qn=!1;function gr(a,i,l){for(l=l.child;l!==null;)fy(a,i,l),l=l.sibling}function fy(a,i,l){if(an&&typeof an.onCommitFiberUnmount=="function")try{an.onCommitFiberUnmount(Tn,l)}catch{}switch(l.tag){case 5:Xt||Wi(l,i);case 6:var d=$t,f=Qn;$t=null,gr(a,i,l),$t=d,Qn=f,$t!==null&&(Qn?(a=$t,l=l.stateNode,a.nodeType===8?a.parentNode.removeChild(l):a.removeChild(l)):$t.removeChild(l.stateNode));break;case 18:$t!==null&&(Qn?(a=$t,l=l.stateNode,a.nodeType===8?dd(a.parentNode,l):a.nodeType===1&&dd(a,l),jo(a)):dd($t,l.stateNode));break;case 4:d=$t,f=Qn,$t=l.stateNode.containerInfo,Qn=!0,gr(a,i,l),$t=d,Qn=f;break;case 0:case 11:case 14:case 15:if(!Xt&&(d=l.updateQueue,d!==null&&(d=d.lastEffect,d!==null))){f=d=d.next;do{var g=f,_=g.destroy;g=g.tag,_!==void 0&&((g&2)!==0||(g&4)!==0)&&Yd(l,i,_),f=f.next}while(f!==d)}gr(a,i,l);break;case 1:if(!Xt&&(Wi(l,i),d=l.stateNode,typeof d.componentWillUnmount=="function"))try{d.props=l.memoizedProps,d.state=l.memoizedState,d.componentWillUnmount()}catch(E){xt(l,i,E)}gr(a,i,l);break;case 21:gr(a,i,l);break;case 22:l.mode&1?(Xt=(d=Xt)||l.memoizedState!==null,gr(a,i,l),Xt=d):gr(a,i,l);break;default:gr(a,i,l)}}function my(a){var i=a.updateQueue;if(i!==null){a.updateQueue=null;var l=a.stateNode;l===null&&(l=a.stateNode=new lS),i.forEach(function(d){var f=vS.bind(null,a,d);l.has(d)||(l.add(d),d.then(f,f))})}}function Jn(a,i){var l=i.deletions;if(l!==null)for(var d=0;d<l.length;d++){var f=l[d];try{var g=a,_=i,E=_;e:for(;E!==null;){switch(E.tag){case 5:$t=E.stateNode,Qn=!1;break e;case 3:$t=E.stateNode.containerInfo,Qn=!0;break e;case 4:$t=E.stateNode.containerInfo,Qn=!0;break e}E=E.return}if($t===null)throw Error(n(160));fy(g,_,f),$t=null,Qn=!1;var I=f.alternate;I!==null&&(I.return=null),f.return=null}catch(H){xt(f,i,H)}}if(i.subtreeFlags&12854)for(i=i.child;i!==null;)gy(i,a),i=i.sibling}function gy(a,i){var l=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:if(Jn(i,a),ha(a),d&4){try{is(3,a,a.return),Kl(3,a)}catch(we){xt(a,a.return,we)}try{is(5,a,a.return)}catch(we){xt(a,a.return,we)}}break;case 1:Jn(i,a),ha(a),d&512&&l!==null&&Wi(l,l.return);break;case 5:if(Jn(i,a),ha(a),d&512&&l!==null&&Wi(l,l.return),a.flags&32){var f=a.stateNode;try{tn(f,"")}catch(we){xt(a,a.return,we)}}if(d&4&&(f=a.stateNode,f!=null)){var g=a.memoizedProps,_=l!==null?l.memoizedProps:g,E=a.type,I=a.updateQueue;if(a.updateQueue=null,I!==null)try{E==="input"&&g.type==="radio"&&g.name!=null&&al(f,g),bi(E,_);var H=bi(E,g);for(_=0;_<I.length;_+=2){var ee=I[_],ne=I[_+1];ee==="style"?sl(f,ne):ee==="dangerouslySetInnerHTML"?Cn(f,ne):ee==="children"?tn(f,ne):R(f,ee,ne,H)}switch(E){case"input":Wn(f,g);break;case"textarea":ol(f,g);break;case"select":var J=f._wrapperState.wasMultiple;f._wrapperState.wasMultiple=!!g.multiple;var de=g.value;de!=null?Ya(f,!!g.multiple,de,!1):J!==!!g.multiple&&(g.defaultValue!=null?Ya(f,!!g.multiple,g.defaultValue,!0):Ya(f,!!g.multiple,g.multiple?[]:"",!1))}f[qo]=g}catch(we){xt(a,a.return,we)}}break;case 6:if(Jn(i,a),ha(a),d&4){if(a.stateNode===null)throw Error(n(162));f=a.stateNode,g=a.memoizedProps;try{f.nodeValue=g}catch(we){xt(a,a.return,we)}}break;case 3:if(Jn(i,a),ha(a),d&4&&l!==null&&l.memoizedState.isDehydrated)try{jo(i.containerInfo)}catch(we){xt(a,a.return,we)}break;case 4:Jn(i,a),ha(a);break;case 13:Jn(i,a),ha(a),f=a.child,f.flags&8192&&(g=f.memoizedState!==null,f.stateNode.isHidden=g,!g||f.alternate!==null&&f.alternate.memoizedState!==null||(th=at())),d&4&&my(a);break;case 22:if(ee=l!==null&&l.memoizedState!==null,a.mode&1?(Xt=(H=Xt)||ee,Jn(i,a),Xt=H):Jn(i,a),ha(a),d&8192){if(H=a.memoizedState!==null,(a.stateNode.isHidden=H)&&!ee&&(a.mode&1)!==0)for(ge=a,ee=a.child;ee!==null;){for(ne=ge=ee;ge!==null;){switch(J=ge,de=J.child,J.tag){case 0:case 11:case 14:case 15:is(4,J,J.return);break;case 1:Wi(J,J.return);var ve=J.stateNode;if(typeof ve.componentWillUnmount=="function"){d=J,l=J.return;try{i=d,ve.props=i.memoizedProps,ve.state=i.memoizedState,ve.componentWillUnmount()}catch(we){xt(d,l,we)}}break;case 5:Wi(J,J.return);break;case 22:if(J.memoizedState!==null){ky(ne);continue}}de!==null?(de.return=J,ge=de):ky(ne)}ee=ee.sibling}e:for(ee=null,ne=a;;){if(ne.tag===5){if(ee===null){ee=ne;try{f=ne.stateNode,H?(g=f.style,typeof g.setProperty=="function"?g.setProperty("display","none","important"):g.display="none"):(E=ne.stateNode,I=ne.memoizedProps.style,_=I!=null&&I.hasOwnProperty("display")?I.display:null,E.style.display=ki("display",_))}catch(we){xt(a,a.return,we)}}}else if(ne.tag===6){if(ee===null)try{ne.stateNode.nodeValue=H?"":ne.memoizedProps}catch(we){xt(a,a.return,we)}}else if((ne.tag!==22&&ne.tag!==23||ne.memoizedState===null||ne===a)&&ne.child!==null){ne.child.return=ne,ne=ne.child;continue}if(ne===a)break e;for(;ne.sibling===null;){if(ne.return===null||ne.return===a)break e;ee===ne&&(ee=null),ne=ne.return}ee===ne&&(ee=null),ne.sibling.return=ne.return,ne=ne.sibling}}break;case 19:Jn(i,a),ha(a),d&4&&my(a);break;case 21:break;default:Jn(i,a),ha(a)}}function ha(a){var i=a.flags;if(i&2){try{e:{for(var l=a.return;l!==null;){if(hy(l)){var d=l;break e}l=l.return}throw Error(n(160))}switch(d.tag){case 5:var f=d.stateNode;d.flags&32&&(tn(f,""),d.flags&=-33);var g=py(a);Qd(a,g,f);break;case 3:case 4:var _=d.stateNode.containerInfo,E=py(a);Xd(a,E,_);break;default:throw Error(n(161))}}catch(I){xt(a,a.return,I)}a.flags&=-3}i&4096&&(a.flags&=-4097)}function uS(a,i,l){ge=a,yy(a)}function yy(a,i,l){for(var d=(a.mode&1)!==0;ge!==null;){var f=ge,g=f.child;if(f.tag===22&&d){var _=f.memoizedState!==null||Gl;if(!_){var E=f.alternate,I=E!==null&&E.memoizedState!==null||Xt;E=Gl;var H=Xt;if(Gl=_,(Xt=I)&&!H)for(ge=f;ge!==null;)_=ge,I=_.child,_.tag===22&&_.memoizedState!==null?_y(f):I!==null?(I.return=_,ge=I):_y(f);for(;g!==null;)ge=g,yy(g),g=g.sibling;ge=f,Gl=E,Xt=H}vy(a)}else(f.subtreeFlags&8772)!==0&&g!==null?(g.return=f,ge=g):vy(a)}}function vy(a){for(;ge!==null;){var i=ge;if((i.flags&8772)!==0){var l=i.alternate;try{if((i.flags&8772)!==0)switch(i.tag){case 0:case 11:case 15:Xt||Kl(5,i);break;case 1:var d=i.stateNode;if(i.flags&4&&!Xt)if(l===null)d.componentDidMount();else{var f=i.elementType===i.type?l.memoizedProps:Xn(i.type,l.memoizedProps);d.componentDidUpdate(f,l.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var g=i.updateQueue;g!==null&&kg(i,g,d);break;case 3:var _=i.updateQueue;if(_!==null){if(l=null,i.child!==null)switch(i.child.tag){case 5:l=i.child.stateNode;break;case 1:l=i.child.stateNode}kg(i,_,l)}break;case 5:var E=i.stateNode;if(l===null&&i.flags&4){l=E;var I=i.memoizedProps;switch(i.type){case"button":case"input":case"select":case"textarea":I.autoFocus&&l.focus();break;case"img":I.src&&(l.src=I.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(i.memoizedState===null){var H=i.alternate;if(H!==null){var ee=H.memoizedState;if(ee!==null){var ne=ee.dehydrated;ne!==null&&jo(ne)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(n(163))}Xt||i.flags&512&&Zd(i)}catch(J){xt(i,i.return,J)}}if(i===a){ge=null;break}if(l=i.sibling,l!==null){l.return=i.return,ge=l;break}ge=i.return}}function ky(a){for(;ge!==null;){var i=ge;if(i===a){ge=null;break}var l=i.sibling;if(l!==null){l.return=i.return,ge=l;break}ge=i.return}}function _y(a){for(;ge!==null;){var i=ge;try{switch(i.tag){case 0:case 11:case 15:var l=i.return;try{Kl(4,i)}catch(I){xt(i,l,I)}break;case 1:var d=i.stateNode;if(typeof d.componentDidMount=="function"){var f=i.return;try{d.componentDidMount()}catch(I){xt(i,f,I)}}var g=i.return;try{Zd(i)}catch(I){xt(i,g,I)}break;case 5:var _=i.return;try{Zd(i)}catch(I){xt(i,_,I)}}}catch(I){xt(i,i.return,I)}if(i===a){ge=null;break}var E=i.sibling;if(E!==null){E.return=i.return,ge=E;break}ge=i.return}}var dS=Math.ceil,ql=O.ReactCurrentDispatcher,Jd=O.ReactCurrentOwner,Dn=O.ReactCurrentBatchConfig,rt=0,Ft=null,At=null,Wt=0,wn=0,Gi=dr(0),Mt=0,os=null,qr=0,Yl=0,eh=0,ss=null,gn=null,th=0,Ki=1/0,Ba=null,Zl=!1,nh=null,yr=null,Xl=!1,vr=null,Ql=0,ls=0,ah=null,Jl=-1,ec=0;function on(){return(rt&6)!==0?at():Jl!==-1?Jl:Jl=at()}function kr(a){return(a.mode&1)===0?1:(rt&2)!==0&&Wt!==0?Wt&-Wt:qP.transition!==null?(ec===0&&(ec=pm()),ec):(a=ct,a!==0||(a=window.event,a=a===void 0?16:wm(a.type)),a)}function ea(a,i,l,d){if(50<ls)throw ls=0,ah=null,Error(n(185));Do(a,l,d),((rt&2)===0||a!==Ft)&&(a===Ft&&((rt&2)===0&&(Yl|=l),Mt===4&&_r(a,Wt)),yn(a,d),l===1&&rt===0&&(i.mode&1)===0&&(Ki=at()+500,El&&pr()))}function yn(a,i){var l=a.callbackNode;qx(a,i);var d=Ci(a,a===Ft?Wt:0);if(d===0)l!==null&&St(l),a.callbackNode=null,a.callbackPriority=0;else if(i=d&-d,a.callbackPriority!==i){if(l!=null&&St(l),i===1)a.tag===0?KP(wy.bind(null,a)):sg(wy.bind(null,a)),HP(function(){(rt&6)===0&&pr()}),l=null;else{switch(fm(d)){case 1:l=Aa;break;case 4:l=qn;break;case 16:l=nn;break;case 536870912:l=tr;break;default:l=nn}l=Ry(l,by.bind(null,a))}a.callbackPriority=i,a.callbackNode=l}}function by(a,i){if(Jl=-1,ec=0,(rt&6)!==0)throw Error(n(327));var l=a.callbackNode;if(qi()&&a.callbackNode!==l)return null;var d=Ci(a,a===Ft?Wt:0);if(d===0)return null;if((d&30)!==0||(d&a.expiredLanes)!==0||i)i=tc(a,d);else{i=d;var f=rt;rt|=2;var g=Py();(Ft!==a||Wt!==i)&&(Ba=null,Ki=at()+500,Zr(a,i));do try{fS();break}catch(E){xy(a,E)}while(!0);bd(),ql.current=g,rt=f,At!==null?i=0:(Ft=null,Wt=0,i=Mt)}if(i!==0){if(i===2&&(f=ju(a),f!==0&&(d=f,i=rh(a,f))),i===1)throw l=os,Zr(a,0),_r(a,d),yn(a,at()),l;if(i===6)_r(a,d);else{if(f=a.current.alternate,(d&30)===0&&!hS(f)&&(i=tc(a,d),i===2&&(g=ju(a),g!==0&&(d=g,i=rh(a,g))),i===1))throw l=os,Zr(a,0),_r(a,d),yn(a,at()),l;switch(a.finishedWork=f,a.finishedLanes=d,i){case 0:case 1:throw Error(n(345));case 2:Xr(a,gn,Ba);break;case 3:if(_r(a,d),(d&130023424)===d&&(i=th+500-at(),10<i)){if(Ci(a,0)!==0)break;if(f=a.suspendedLanes,(f&d)!==d){on(),a.pingedLanes|=a.suspendedLanes&f;break}a.timeoutHandle=ud(Xr.bind(null,a,gn,Ba),i);break}Xr(a,gn,Ba);break;case 4:if(_r(a,d),(d&4194240)===d)break;for(i=a.eventTimes,f=-1;0<d;){var _=31-$e(d);g=1<<_,_=i[_],_>f&&(f=_),d&=~g}if(d=f,d=at()-d,d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3e3>d?3e3:4320>d?4320:1960*dS(d/1960))-d,10<d){a.timeoutHandle=ud(Xr.bind(null,a,gn,Ba),d);break}Xr(a,gn,Ba);break;case 5:Xr(a,gn,Ba);break;default:throw Error(n(329))}}}return yn(a,at()),a.callbackNode===l?by.bind(null,a):null}function rh(a,i){var l=ss;return a.current.memoizedState.isDehydrated&&(Zr(a,i).flags|=256),a=tc(a,i),a!==2&&(i=gn,gn=l,i!==null&&ih(i)),a}function ih(a){gn===null?gn=a:gn.push.apply(gn,a)}function hS(a){for(var i=a;;){if(i.flags&16384){var l=i.updateQueue;if(l!==null&&(l=l.stores,l!==null))for(var d=0;d<l.length;d++){var f=l[d],g=f.getSnapshot;f=f.value;try{if(!Yn(g(),f))return!1}catch{return!1}}}if(l=i.child,i.subtreeFlags&16384&&l!==null)l.return=i,i=l;else{if(i===a)break;for(;i.sibling===null;){if(i.return===null||i.return===a)return!0;i=i.return}i.sibling.return=i.return,i=i.sibling}}return!0}function _r(a,i){for(i&=~eh,i&=~Yl,a.suspendedLanes|=i,a.pingedLanes&=~i,a=a.expirationTimes;0<i;){var l=31-$e(i),d=1<<l;a[l]=-1,i&=~d}}function wy(a){if((rt&6)!==0)throw Error(n(327));qi();var i=Ci(a,0);if((i&1)===0)return yn(a,at()),null;var l=tc(a,i);if(a.tag!==0&&l===2){var d=ju(a);d!==0&&(i=d,l=rh(a,d))}if(l===1)throw l=os,Zr(a,0),_r(a,i),yn(a,at()),l;if(l===6)throw Error(n(345));return a.finishedWork=a.current.alternate,a.finishedLanes=i,Xr(a,gn,Ba),yn(a,at()),null}function oh(a,i){var l=rt;rt|=1;try{return a(i)}finally{rt=l,rt===0&&(Ki=at()+500,El&&pr())}}function Yr(a){vr!==null&&vr.tag===0&&(rt&6)===0&&qi();var i=rt;rt|=1;var l=Dn.transition,d=ct;try{if(Dn.transition=null,ct=1,a)return a()}finally{ct=d,Dn.transition=l,rt=i,(rt&6)===0&&pr()}}function sh(){wn=Gi.current,gt(Gi)}function Zr(a,i){a.finishedWork=null,a.finishedLanes=0;var l=a.timeoutHandle;if(l!==-1&&(a.timeoutHandle=-1,zP(l)),At!==null)for(l=At.return;l!==null;){var d=l;switch(gd(d),d.tag){case 1:d=d.type.childContextTypes,d!=null&&Cl();break;case 3:Hi(),gt(pn),gt(qt),Ad();break;case 5:Td(d);break;case 4:Hi();break;case 13:gt(bt);break;case 19:gt(bt);break;case 10:wd(d.type._context);break;case 22:case 23:sh()}l=l.return}if(Ft=a,At=a=br(a.current,null),Wt=wn=i,Mt=0,os=null,eh=Yl=qr=0,gn=ss=null,Wr!==null){for(i=0;i<Wr.length;i++)if(l=Wr[i],d=l.interleaved,d!==null){l.interleaved=null;var f=d.next,g=l.pending;if(g!==null){var _=g.next;g.next=f,d.next=_}l.pending=d}Wr=null}return a}function xy(a,i){do{var l=At;try{if(bd(),Ul.current=zl,Bl){for(var d=wt.memoizedState;d!==null;){var f=d.queue;f!==null&&(f.pending=null),d=d.next}Bl=!1}if(Kr=0,Bt=It=wt=null,es=!1,ts=0,Jd.current=null,l===null||l.return===null){Mt=1,os=i,At=null;break}e:{var g=a,_=l.return,E=l,I=i;if(i=Wt,E.flags|=32768,I!==null&&typeof I=="object"&&typeof I.then=="function"){var H=I,ee=E,ne=ee.tag;if((ee.mode&1)===0&&(ne===0||ne===11||ne===15)){var J=ee.alternate;J?(ee.updateQueue=J.updateQueue,ee.memoizedState=J.memoizedState,ee.lanes=J.lanes):(ee.updateQueue=null,ee.memoizedState=null)}var de=qg(_);if(de!==null){de.flags&=-257,Yg(de,_,E,g,i),de.mode&1&&Kg(g,H,i),i=de,I=H;var ve=i.updateQueue;if(ve===null){var we=new Set;we.add(I),i.updateQueue=we}else ve.add(I);break e}else{if((i&1)===0){Kg(g,H,i),lh();break e}I=Error(n(426))}}else if(kt&&E.mode&1){var Ct=qg(_);if(Ct!==null){(Ct.flags&65536)===0&&(Ct.flags|=256),Yg(Ct,_,E,g,i),kd($i(I,E));break e}}g=I=$i(I,E),Mt!==4&&(Mt=2),ss===null?ss=[g]:ss.push(g),g=_;do{switch(g.tag){case 3:g.flags|=65536,i&=-i,g.lanes|=i;var B=Wg(g,I,i);vg(g,B);break e;case 1:E=I;var j=g.type,F=g.stateNode;if((g.flags&128)===0&&(typeof j.getDerivedStateFromError=="function"||F!==null&&typeof F.componentDidCatch=="function"&&(yr===null||!yr.has(F)))){g.flags|=65536,i&=-i,g.lanes|=i;var oe=Gg(g,E,i);vg(g,oe);break e}}g=g.return}while(g!==null)}Cy(l)}catch(Se){i=Se,At===l&&l!==null&&(At=l=l.return);continue}break}while(!0)}function Py(){var a=ql.current;return ql.current=zl,a===null?zl:a}function lh(){(Mt===0||Mt===3||Mt===2)&&(Mt=4),Ft===null||(qr&268435455)===0&&(Yl&268435455)===0||_r(Ft,Wt)}function tc(a,i){var l=rt;rt|=2;var d=Py();(Ft!==a||Wt!==i)&&(Ba=null,Zr(a,i));do try{pS();break}catch(f){xy(a,f)}while(!0);if(bd(),rt=l,ql.current=d,At!==null)throw Error(n(261));return Ft=null,Wt=0,Mt}function pS(){for(;At!==null;)Sy(At)}function fS(){for(;At!==null&&!Ht();)Sy(At)}function Sy(a){var i=Ay(a.alternate,a,wn);a.memoizedProps=a.pendingProps,i===null?Cy(a):At=i,Jd.current=null}function Cy(a){var i=a;do{var l=i.alternate;if(a=i.return,(i.flags&32768)===0){if(l=oS(l,i,wn),l!==null){At=l;return}}else{if(l=sS(l,i),l!==null){l.flags&=32767,At=l;return}if(a!==null)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{Mt=6,At=null;return}}if(i=i.sibling,i!==null){At=i;return}At=i=a}while(i!==null);Mt===0&&(Mt=5)}function Xr(a,i,l){var d=ct,f=Dn.transition;try{Dn.transition=null,ct=1,mS(a,i,l,d)}finally{Dn.transition=f,ct=d}return null}function mS(a,i,l,d){do qi();while(vr!==null);if((rt&6)!==0)throw Error(n(327));l=a.finishedWork;var f=a.finishedLanes;if(l===null)return null;if(a.finishedWork=null,a.finishedLanes=0,l===a.current)throw Error(n(177));a.callbackNode=null,a.callbackPriority=0;var g=l.lanes|l.childLanes;if(Yx(a,g),a===Ft&&(At=Ft=null,Wt=0),(l.subtreeFlags&2064)===0&&(l.flags&2064)===0||Xl||(Xl=!0,Ry(nn,function(){return qi(),null})),g=(l.flags&15990)!==0,(l.subtreeFlags&15990)!==0||g){g=Dn.transition,Dn.transition=null;var _=ct;ct=1;var E=rt;rt|=4,Jd.current=null,cS(a,l),gy(l,a),NP(ld),hl=!!sd,ld=sd=null,a.current=l,uS(l),lt(),rt=E,ct=_,Dn.transition=g}else a.current=l;if(Xl&&(Xl=!1,vr=a,Ql=f),g=a.pendingLanes,g===0&&(yr=null),Si(l.stateNode),yn(a,at()),i!==null)for(d=a.onRecoverableError,l=0;l<i.length;l++)f=i[l],d(f.value,{componentStack:f.stack,digest:f.digest});if(Zl)throw Zl=!1,a=nh,nh=null,a;return(Ql&1)!==0&&a.tag!==0&&qi(),g=a.pendingLanes,(g&1)!==0?a===ah?ls++:(ls=0,ah=a):ls=0,pr(),null}function qi(){if(vr!==null){var a=fm(Ql),i=Dn.transition,l=ct;try{if(Dn.transition=null,ct=16>a?16:a,vr===null)var d=!1;else{if(a=vr,vr=null,Ql=0,(rt&6)!==0)throw Error(n(331));var f=rt;for(rt|=4,ge=a.current;ge!==null;){var g=ge,_=g.child;if((ge.flags&16)!==0){var E=g.deletions;if(E!==null){for(var I=0;I<E.length;I++){var H=E[I];for(ge=H;ge!==null;){var ee=ge;switch(ee.tag){case 0:case 11:case 15:is(8,ee,g)}var ne=ee.child;if(ne!==null)ne.return=ee,ge=ne;else for(;ge!==null;){ee=ge;var J=ee.sibling,de=ee.return;if(dy(ee),ee===H){ge=null;break}if(J!==null){J.return=de,ge=J;break}ge=de}}}var ve=g.alternate;if(ve!==null){var we=ve.child;if(we!==null){ve.child=null;do{var Ct=we.sibling;we.sibling=null,we=Ct}while(we!==null)}}ge=g}}if((g.subtreeFlags&2064)!==0&&_!==null)_.return=g,ge=_;else e:for(;ge!==null;){if(g=ge,(g.flags&2048)!==0)switch(g.tag){case 0:case 11:case 15:is(9,g,g.return)}var B=g.sibling;if(B!==null){B.return=g.return,ge=B;break e}ge=g.return}}var j=a.current;for(ge=j;ge!==null;){_=ge;var F=_.child;if((_.subtreeFlags&2064)!==0&&F!==null)F.return=_,ge=F;else e:for(_=j;ge!==null;){if(E=ge,(E.flags&2048)!==0)try{switch(E.tag){case 0:case 11:case 15:Kl(9,E)}}catch(Se){xt(E,E.return,Se)}if(E===_){ge=null;break e}var oe=E.sibling;if(oe!==null){oe.return=E.return,ge=oe;break e}ge=E.return}}if(rt=f,pr(),an&&typeof an.onPostCommitFiberRoot=="function")try{an.onPostCommitFiberRoot(Tn,a)}catch{}d=!0}return d}finally{ct=l,Dn.transition=i}}return!1}function Ty(a,i,l){i=$i(l,i),i=Wg(a,i,1),a=mr(a,i,1),i=on(),a!==null&&(Do(a,1,i),yn(a,i))}function xt(a,i,l){if(a.tag===3)Ty(a,a,l);else for(;i!==null;){if(i.tag===3){Ty(i,a,l);break}else if(i.tag===1){var d=i.stateNode;if(typeof i.type.getDerivedStateFromError=="function"||typeof d.componentDidCatch=="function"&&(yr===null||!yr.has(d))){a=$i(l,a),a=Gg(i,a,1),i=mr(i,a,1),a=on(),i!==null&&(Do(i,1,a),yn(i,a));break}}i=i.return}}function gS(a,i,l){var d=a.pingCache;d!==null&&d.delete(i),i=on(),a.pingedLanes|=a.suspendedLanes&l,Ft===a&&(Wt&l)===l&&(Mt===4||Mt===3&&(Wt&130023424)===Wt&&500>at()-th?Zr(a,0):eh|=l),yn(a,i)}function Ey(a,i){i===0&&((a.mode&1)===0?i=1:(i=La,La<<=1,(La&130023424)===0&&(La=4194304)));var l=on();a=Oa(a,i),a!==null&&(Do(a,i,l),yn(a,l))}function yS(a){var i=a.memoizedState,l=0;i!==null&&(l=i.retryLane),Ey(a,l)}function vS(a,i){var l=0;switch(a.tag){case 13:var d=a.stateNode,f=a.memoizedState;f!==null&&(l=f.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(n(314))}d!==null&&d.delete(i),Ey(a,l)}var Ay;Ay=function(a,i,l){if(a!==null)if(a.memoizedProps!==i.pendingProps||pn.current)mn=!0;else{if((a.lanes&l)===0&&(i.flags&128)===0)return mn=!1,iS(a,i,l);mn=(a.flags&131072)!==0}else mn=!1,kt&&(i.flags&1048576)!==0&&lg(i,Rl,i.index);switch(i.lanes=0,i.tag){case 2:var d=i.type;Wl(a,i),a=i.pendingProps;var f=Oi(i,qt.current);zi(i,l),f=Dd(null,i,d,a,f,l);var g=Id();return i.flags|=1,typeof f=="object"&&f!==null&&typeof f.render=="function"&&f.$$typeof===void 0?(i.tag=1,i.memoizedState=null,i.updateQueue=null,fn(d)?(g=!0,Tl(i)):g=!1,i.memoizedState=f.state!==null&&f.state!==void 0?f.state:null,Sd(i),f.updater=Hl,i.stateNode=f,f._reactInternals=i,Bd(i,d,a,l),i=Hd(null,i,d,!0,g,l)):(i.tag=0,kt&&g&&md(i),rn(null,i,f,l),i=i.child),i;case 16:d=i.elementType;e:{switch(Wl(a,i),a=i.pendingProps,f=d._init,d=f(d._payload),i.type=d,f=i.tag=_S(d),a=Xn(d,a),f){case 0:i=zd(null,i,d,a,l);break e;case 1:i=ty(null,i,d,a,l);break e;case 11:i=Zg(null,i,d,a,l);break e;case 14:i=Xg(null,i,d,Xn(d.type,a),l);break e}throw Error(n(306,d,""))}return i;case 0:return d=i.type,f=i.pendingProps,f=i.elementType===d?f:Xn(d,f),zd(a,i,d,f,l);case 1:return d=i.type,f=i.pendingProps,f=i.elementType===d?f:Xn(d,f),ty(a,i,d,f,l);case 3:e:{if(ny(i),a===null)throw Error(n(387));d=i.pendingProps,g=i.memoizedState,f=g.element,yg(a,i),Ol(i,d,null,l);var _=i.memoizedState;if(d=_.element,g.isDehydrated)if(g={element:d,isDehydrated:!1,cache:_.cache,pendingSuspenseBoundaries:_.pendingSuspenseBoundaries,transitions:_.transitions},i.updateQueue.baseState=g,i.memoizedState=g,i.flags&256){f=$i(Error(n(423)),i),i=ay(a,i,d,l,f);break e}else if(d!==f){f=$i(Error(n(424)),i),i=ay(a,i,d,l,f);break e}else for(bn=ur(i.stateNode.containerInfo.firstChild),_n=i,kt=!0,Zn=null,l=mg(i,null,d,l),i.child=l;l;)l.flags=l.flags&-3|4096,l=l.sibling;else{if(Bi(),d===f){i=Ua(a,i,l);break e}rn(a,i,d,l)}i=i.child}return i;case 5:return _g(i),a===null&&vd(i),d=i.type,f=i.pendingProps,g=a!==null?a.memoizedProps:null,_=f.children,cd(d,f)?_=null:g!==null&&cd(d,g)&&(i.flags|=32),ey(a,i),rn(a,i,_,l),i.child;case 6:return a===null&&vd(i),null;case 13:return ry(a,i,l);case 4:return Cd(i,i.stateNode.containerInfo),d=i.pendingProps,a===null?i.child=Fi(i,null,d,l):rn(a,i,d,l),i.child;case 11:return d=i.type,f=i.pendingProps,f=i.elementType===d?f:Xn(d,f),Zg(a,i,d,f,l);case 7:return rn(a,i,i.pendingProps,l),i.child;case 8:return rn(a,i,i.pendingProps.children,l),i.child;case 12:return rn(a,i,i.pendingProps.children,l),i.child;case 10:e:{if(d=i.type._context,f=i.pendingProps,g=i.memoizedProps,_=f.value,pt(Il,d._currentValue),d._currentValue=_,g!==null)if(Yn(g.value,_)){if(g.children===f.children&&!pn.current){i=Ua(a,i,l);break e}}else for(g=i.child,g!==null&&(g.return=i);g!==null;){var E=g.dependencies;if(E!==null){_=g.child;for(var I=E.firstContext;I!==null;){if(I.context===d){if(g.tag===1){I=ja(-1,l&-l),I.tag=2;var H=g.updateQueue;if(H!==null){H=H.shared;var ee=H.pending;ee===null?I.next=I:(I.next=ee.next,ee.next=I),H.pending=I}}g.lanes|=l,I=g.alternate,I!==null&&(I.lanes|=l),xd(g.return,l,i),E.lanes|=l;break}I=I.next}}else if(g.tag===10)_=g.type===i.type?null:g.child;else if(g.tag===18){if(_=g.return,_===null)throw Error(n(341));_.lanes|=l,E=_.alternate,E!==null&&(E.lanes|=l),xd(_,l,i),_=g.sibling}else _=g.child;if(_!==null)_.return=g;else for(_=g;_!==null;){if(_===i){_=null;break}if(g=_.sibling,g!==null){g.return=_.return,_=g;break}_=_.return}g=_}rn(a,i,f.children,l),i=i.child}return i;case 9:return f=i.type,d=i.pendingProps.children,zi(i,l),f=Rn(f),d=d(f),i.flags|=1,rn(a,i,d,l),i.child;case 14:return d=i.type,f=Xn(d,i.pendingProps),f=Xn(d.type,f),Xg(a,i,d,f,l);case 15:return Qg(a,i,i.type,i.pendingProps,l);case 17:return d=i.type,f=i.pendingProps,f=i.elementType===d?f:Xn(d,f),Wl(a,i),i.tag=1,fn(d)?(a=!0,Tl(i)):a=!1,zi(i,l),Hg(i,d,f),Bd(i,d,f,l),Hd(null,i,d,!0,a,l);case 19:return oy(a,i,l);case 22:return Jg(a,i,l)}throw Error(n(156,i.tag))};function Ry(a,i){return ht(a,i)}function kS(a,i,l,d){this.tag=a,this.key=l,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=i,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=d,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function In(a,i,l,d){return new kS(a,i,l,d)}function ch(a){return a=a.prototype,!(!a||!a.isReactComponent)}function _S(a){if(typeof a=="function")return ch(a)?1:0;if(a!=null){if(a=a.$$typeof,a===se)return 11;if(a===le)return 14}return 2}function br(a,i){var l=a.alternate;return l===null?(l=In(a.tag,i,a.key,a.mode),l.elementType=a.elementType,l.type=a.type,l.stateNode=a.stateNode,l.alternate=a,a.alternate=l):(l.pendingProps=i,l.type=a.type,l.flags=0,l.subtreeFlags=0,l.deletions=null),l.flags=a.flags&14680064,l.childLanes=a.childLanes,l.lanes=a.lanes,l.child=a.child,l.memoizedProps=a.memoizedProps,l.memoizedState=a.memoizedState,l.updateQueue=a.updateQueue,i=a.dependencies,l.dependencies=i===null?null:{lanes:i.lanes,firstContext:i.firstContext},l.sibling=a.sibling,l.index=a.index,l.ref=a.ref,l}function nc(a,i,l,d,f,g){var _=2;if(d=a,typeof a=="function")ch(a)&&(_=1);else if(typeof a=="string")_=5;else e:switch(a){case z:return Qr(l.children,f,g,i);case P:_=8,f|=8;break;case Y:return a=In(12,l,i,f|2),a.elementType=Y,a.lanes=g,a;case Ae:return a=In(13,l,i,f),a.elementType=Ae,a.lanes=g,a;case pe:return a=In(19,l,i,f),a.elementType=pe,a.lanes=g,a;case Ne:return ac(l,f,g,i);default:if(typeof a=="object"&&a!==null)switch(a.$$typeof){case X:_=10;break e;case ue:_=9;break e;case se:_=11;break e;case le:_=14;break e;case fe:_=16,d=null;break e}throw Error(n(130,a==null?a:typeof a,""))}return i=In(_,l,i,f),i.elementType=a,i.type=d,i.lanes=g,i}function Qr(a,i,l,d){return a=In(7,a,d,i),a.lanes=l,a}function ac(a,i,l,d){return a=In(22,a,d,i),a.elementType=Ne,a.lanes=l,a.stateNode={isHidden:!1},a}function uh(a,i,l){return a=In(6,a,null,i),a.lanes=l,a}function dh(a,i,l){return i=In(4,a.children!==null?a.children:[],a.key,i),i.lanes=l,i.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation},i}function bS(a,i,l,d,f){this.tag=i,this.containerInfo=a,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Uu(0),this.expirationTimes=Uu(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Uu(0),this.identifierPrefix=d,this.onRecoverableError=f,this.mutableSourceEagerHydrationData=null}function hh(a,i,l,d,f,g,_,E,I){return a=new bS(a,i,l,E,I),i===1?(i=1,g===!0&&(i|=8)):i=0,g=In(3,null,null,i),a.current=g,g.stateNode=a,g.memoizedState={element:d,isDehydrated:l,cache:null,transitions:null,pendingSuspenseBoundaries:null},Sd(g),a}function wS(a,i,l){var d=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:W,key:d==null?null:""+d,children:a,containerInfo:i,implementation:l}}function Ly(a){if(!a)return hr;a=a._reactInternals;e:{if(he(a)!==a||a.tag!==1)throw Error(n(170));var i=a;do{switch(i.tag){case 3:i=i.stateNode.context;break e;case 1:if(fn(i.type)){i=i.stateNode.__reactInternalMemoizedMergedChildContext;break e}}i=i.return}while(i!==null);throw Error(n(171))}if(a.tag===1){var l=a.type;if(fn(l))return ig(a,l,i)}return i}function Dy(a,i,l,d,f,g,_,E,I){return a=hh(l,d,!0,a,f,g,_,E,I),a.context=Ly(null),l=a.current,d=on(),f=kr(l),g=ja(d,f),g.callback=i??null,mr(l,g,f),a.current.lanes=f,Do(a,f,d),yn(a,d),a}function rc(a,i,l,d){var f=i.current,g=on(),_=kr(f);return l=Ly(l),i.context===null?i.context=l:i.pendingContext=l,i=ja(g,_),i.payload={element:a},d=d===void 0?null:d,d!==null&&(i.callback=d),a=mr(f,i,_),a!==null&&(ea(a,f,_,g),Nl(a,f,_)),_}function ic(a){return a=a.current,a.child?(a.child.tag===5,a.child.stateNode):null}function Iy(a,i){if(a=a.memoizedState,a!==null&&a.dehydrated!==null){var l=a.retryLane;a.retryLane=l!==0&&l<i?l:i}}function ph(a,i){Iy(a,i),(a=a.alternate)&&Iy(a,i)}function xS(){return null}var My=typeof reportError=="function"?reportError:function(a){console.error(a)};function fh(a){this._internalRoot=a}oc.prototype.render=fh.prototype.render=function(a){var i=this._internalRoot;if(i===null)throw Error(n(409));rc(a,i,null,null)},oc.prototype.unmount=fh.prototype.unmount=function(){var a=this._internalRoot;if(a!==null){this._internalRoot=null;var i=a.containerInfo;Yr(function(){rc(null,a,null,null)}),i[Da]=null}};function oc(a){this._internalRoot=a}oc.prototype.unstable_scheduleHydration=function(a){if(a){var i=ym();a={blockedOn:null,target:a,priority:i};for(var l=0;l<sr.length&&i!==0&&i<sr[l].priority;l++);sr.splice(l,0,a),l===0&&_m(a)}};function mh(a){return!(!a||a.nodeType!==1&&a.nodeType!==9&&a.nodeType!==11)}function sc(a){return!(!a||a.nodeType!==1&&a.nodeType!==9&&a.nodeType!==11&&(a.nodeType!==8||a.nodeValue!==" react-mount-point-unstable "))}function Ny(){}function PS(a,i,l,d,f){if(f){if(typeof d=="function"){var g=d;d=function(){var H=ic(_);g.call(H)}}var _=Dy(i,d,a,0,null,!1,!1,"",Ny);return a._reactRootContainer=_,a[Da]=_.current,Go(a.nodeType===8?a.parentNode:a),Yr(),_}for(;f=a.lastChild;)a.removeChild(f);if(typeof d=="function"){var E=d;d=function(){var H=ic(I);E.call(H)}}var I=hh(a,0,!1,null,null,!1,!1,"",Ny);return a._reactRootContainer=I,a[Da]=I.current,Go(a.nodeType===8?a.parentNode:a),Yr(function(){rc(i,I,l,d)}),I}function lc(a,i,l,d,f){var g=l._reactRootContainer;if(g){var _=g;if(typeof f=="function"){var E=f;f=function(){var I=ic(_);E.call(I)}}rc(i,_,a,f)}else _=PS(l,i,a,f,d);return ic(_)}mm=function(a){switch(a.tag){case 3:var i=a.stateNode;if(i.current.memoizedState.isDehydrated){var l=ar(i.pendingLanes);l!==0&&(Bu(i,l|1),yn(i,at()),(rt&6)===0&&(Ki=at()+500,pr()))}break;case 13:Yr(function(){var d=Oa(a,1);if(d!==null){var f=on();ea(d,a,1,f)}}),ph(a,1)}},Fu=function(a){if(a.tag===13){var i=Oa(a,134217728);if(i!==null){var l=on();ea(i,a,134217728,l)}ph(a,134217728)}},gm=function(a){if(a.tag===13){var i=kr(a),l=Oa(a,i);if(l!==null){var d=on();ea(l,a,i,d)}ph(a,i)}},ym=function(){return ct},vm=function(a,i){var l=ct;try{return ct=a,i()}finally{ct=l}},xi=function(a,i,l){switch(i){case"input":if(Wn(a,l),i=l.name,l.type==="radio"&&i!=null){for(l=a;l.parentNode;)l=l.parentNode;for(l=l.querySelectorAll("input[name="+JSON.stringify(""+i)+'][type="radio"]'),i=0;i<l.length;i++){var d=l[i];if(d!==a&&d.form===a.form){var f=Sl(d);if(!f)throw Error(n(90));Ca(d),Wn(d,f)}}}break;case"textarea":ol(a,l);break;case"select":i=l.value,i!=null&&Ya(a,!!l.multiple,i,!1)}},cl=oh,Ao=Yr;var SS={usingClientEntryPoint:!1,Events:[Yo,Mi,Sl,ll,Eo,oh]},cs={findFiberByHostInstance:Vr,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},CS={bundleType:cs.bundleType,version:cs.version,rendererPackageName:cs.rendererPackageName,rendererConfig:cs.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:O.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){return a=ot(a),a===null?null:a.stateNode},findFiberByHostInstance:cs.findFiberByHostInstance||xS,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var cc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cc.isDisabled&&cc.supportsFiber)try{Tn=cc.inject(CS),an=cc}catch{}}return vn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=SS,vn.createPortal=function(a,i){var l=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!mh(i))throw Error(n(200));return wS(a,i,null,l)},vn.createRoot=function(a,i){if(!mh(a))throw Error(n(299));var l=!1,d="",f=My;return i!=null&&(i.unstable_strictMode===!0&&(l=!0),i.identifierPrefix!==void 0&&(d=i.identifierPrefix),i.onRecoverableError!==void 0&&(f=i.onRecoverableError)),i=hh(a,1,!1,null,null,l,!1,d,f),a[Da]=i.current,Go(a.nodeType===8?a.parentNode:a),new fh(i)},vn.findDOMNode=function(a){if(a==null)return null;if(a.nodeType===1)return a;var i=a._reactInternals;if(i===void 0)throw typeof a.render=="function"?Error(n(188)):(a=Object.keys(a).join(","),Error(n(268,a)));return a=ot(i),a=a===null?null:a.stateNode,a},vn.flushSync=function(a){return Yr(a)},vn.hydrate=function(a,i,l){if(!sc(i))throw Error(n(200));return lc(null,a,i,!0,l)},vn.hydrateRoot=function(a,i,l){if(!mh(a))throw Error(n(405));var d=l!=null&&l.hydratedSources||null,f=!1,g="",_=My;if(l!=null&&(l.unstable_strictMode===!0&&(f=!0),l.identifierPrefix!==void 0&&(g=l.identifierPrefix),l.onRecoverableError!==void 0&&(_=l.onRecoverableError)),i=Dy(i,null,a,1,l??null,f,!1,g,_),a[Da]=i.current,Go(a),d)for(a=0;a<d.length;a++)l=d[a],f=l._getVersion,f=f(l._source),i.mutableSourceEagerHydrationData==null?i.mutableSourceEagerHydrationData=[l,f]:i.mutableSourceEagerHydrationData.push(l,f);return new oc(i)},vn.render=function(a,i,l){if(!sc(i))throw Error(n(200));return lc(null,a,i,!1,l)},vn.unmountComponentAtNode=function(a){if(!sc(a))throw Error(n(40));return a._reactRootContainer?(Yr(function(){lc(null,null,a,!1,function(){a._reactRootContainer=null,a[Da]=null})}),!0):!1},vn.unstable_batchedUpdates=oh,vn.unstable_renderSubtreeIntoContainer=function(a,i,l,d){if(!sc(l))throw Error(n(200));if(a==null||a._reactInternals===void 0)throw Error(n(38));return lc(a,i,l,!1,d)},vn.version="18.3.1-next-f1338f8080-20240426",vn}var Hy;function L_(){if(Hy)return vh.exports;Hy=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),vh.exports=OS(),vh.exports}var $y;function jS(){if($y)return uc;$y=1;var e=L_();return uc.createRoot=e.createRoot,uc.hydrateRoot=e.hydrateRoot,uc}var US=jS();var D_=e=>{throw TypeError(e)},BS=(e,t,n)=>t.has(e)||D_("Cannot "+n),bh=(e,t,n)=>(BS(e,t,"read from private field"),n?n.call(e):t.get(e)),FS=(e,t,n)=>t.has(e)?D_("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Wy="popstate";function Gy(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function VS(e={}){function t(r,o){let s=o.state?.masked,{pathname:c,search:u,hash:h}=s||r.location;return Ds("",{pathname:c,search:u,hash:h},o.state&&o.state.usr||null,o.state&&o.state.key||"default",s?{pathname:r.location.pathname,search:r.location.search,hash:r.location.hash}:void 0)}function n(r,o){return typeof o=="string"?o:ka(o)}return HS(t,n,null,e)}function Xe(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function Et(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function zS(){return Math.random().toString(36).substring(2,10)}function Ky(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.unstable_mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Ds(e,t,n=null,r,o){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?Ga(t):t,state:n,key:t&&t.key||r||zS(),unstable_mask:o}}function ka({pathname:e="/",search:t="",hash:n=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function Ga(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function HS(e,t,n,r={}){let{window:o=document.defaultView,v5Compat:s=!1}=r,c=o.history,u="POP",h=null,p=m();p==null&&(p=0,c.replaceState({...c.state,idx:p},""));function m(){return(c.state||{idx:null}).idx}function y(){u="POP";let S=m(),D=S==null?null:S-p;p=S,h&&h({action:u,location:C.location,delta:D})}function k(S,D){u="PUSH";let L=Gy(S)?S:Ds(C.location,S,D);p=m()+1;let R=Ky(L,p),O=C.createHref(L.unstable_mask||L);try{c.pushState(R,"",O)}catch(K){if(K instanceof DOMException&&K.name==="DataCloneError")throw K;o.location.assign(O)}s&&h&&h({action:u,location:C.location,delta:1})}function w(S,D){u="REPLACE";let L=Gy(S)?S:Ds(C.location,S,D);p=m();let R=Ky(L,p),O=C.createHref(L.unstable_mask||L);c.replaceState(R,"",O),s&&h&&h({action:u,location:C.location,delta:0})}function x(S){return I_(S)}let C={get action(){return u},get location(){return e(o,c)},listen(S){if(h)throw new Error("A history only accepts one active listener");return o.addEventListener(Wy,y),h=S,()=>{o.removeEventListener(Wy,y),h=null}},createHref(S){return t(o,S)},createURL:x,encodeLocation(S){let D=x(S);return{pathname:D.pathname,search:D.search,hash:D.hash}},push:k,replace:w,go(S){return c.go(S)}};return C}function I_(e,t=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),Xe(n,"No window.location.(origin|href) available to create URL");let r=typeof e=="string"?e:ka(e);return r=r.replace(/ $/,"%20"),!t&&r.startsWith("//")&&(r=n+r),new URL(r,n)}var ys,qy=class{constructor(e){if(FS(this,ys,new Map),e)for(let[t,n]of e)this.set(t,n)}get(e){if(bh(this,ys).has(e))return bh(this,ys).get(e);if(e.defaultValue!==void 0)return e.defaultValue;throw new Error("No value found for context")}set(e,t){bh(this,ys).set(e,t)}};ys=new WeakMap;var $S=new Set(["lazy","caseSensitive","path","id","index","children"]);function WS(e){return $S.has(e)}var GS=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function KS(e){return GS.has(e)}function qS(e){return e.index===!0}function Is(e,t,n=[],r={},o=!1){return e.map((s,c)=>{let u=[...n,String(c)],h=typeof s.id=="string"?s.id:u.join("-");if(Xe(s.index!==!0||!s.children,"Cannot specify children on an index route"),Xe(o||!r[h],`Found a route id collision on id "${h}". Route id's must be globally unique within Data Router usages`),qS(s)){let p={...s,id:h};return r[h]=Yy(p,t(p)),p}else{let p={...s,id:h,children:void 0};return r[h]=Yy(p,t(p)),s.children&&(p.children=Is(s.children,t,u,r,o)),p}})}function Yy(e,t){return Object.assign(e,{...t,...typeof t.lazy=="object"&&t.lazy!=null?{lazy:{...e.lazy,...t.lazy}}:{}})}function Tr(e,t,n="/"){return vs(e,t,n,!1)}function vs(e,t,n,r){let o=typeof t=="string"?Ga(t):t,s=Un(o.pathname||"/",n);if(s==null)return null;let c=M_(e);ZS(c);let u=null;for(let h=0;u==null&&h<c.length;++h){let p=sC(s);u=iC(c[h],p,r)}return u}function YS(e,t){let{route:n,pathname:r,params:o}=e;return{id:n.id,pathname:r,params:o,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function M_(e,t=[],n=[],r="",o=!1){let s=(c,u,h=o,p)=>{let m={relativePath:p===void 0?c.path||"":p,caseSensitive:c.caseSensitive===!0,childrenIndex:u,route:c};if(m.relativePath.startsWith("/")){if(!m.relativePath.startsWith(r)&&h)return;Xe(m.relativePath.startsWith(r),`Absolute route path "${m.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),m.relativePath=m.relativePath.slice(r.length)}let y=ia([r,m.relativePath]),k=n.concat(m);c.children&&c.children.length>0&&(Xe(c.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${y}".`),M_(c.children,t,k,y,h)),!(c.path==null&&!c.index)&&t.push({path:y,score:aC(y,c.index),routesMeta:k})};return e.forEach((c,u)=>{if(c.path===""||!c.path?.includes("?"))s(c,u);else for(let h of N_(c.path))s(c,u,!0,h)}),t}function N_(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,o=n.endsWith("?"),s=n.replace(/\?$/,"");if(r.length===0)return o?[s,""]:[s];let c=N_(r.join("/")),u=[];return u.push(...c.map(h=>h===""?s:[s,h].join("/"))),o&&u.push(...c),u.map(h=>e.startsWith("/")&&h===""?"/":h)}function ZS(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:rC(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var XS=/^:[\w-]+$/,QS=3,JS=2,eC=1,tC=10,nC=-2,Zy=e=>e==="*";function aC(e,t){let n=e.split("/"),r=n.length;return n.some(Zy)&&(r+=nC),t&&(r+=JS),n.filter(o=>!Zy(o)).reduce((o,s)=>o+(XS.test(s)?QS:s===""?eC:tC),r)}function rC(e,t){return e.length===t.length&&e.slice(0,-1).every((r,o)=>r===t[o])?e[e.length-1]-t[t.length-1]:0}function iC(e,t,n=!1){let{routesMeta:r}=e,o={},s="/",c=[];for(let u=0;u<r.length;++u){let h=r[u],p=u===r.length-1,m=s==="/"?t:t.slice(s.length)||"/",y=Gc({path:h.relativePath,caseSensitive:h.caseSensitive,end:p},m),k=h.route;if(!y&&p&&n&&!r[r.length-1].route.index&&(y=Gc({path:h.relativePath,caseSensitive:h.caseSensitive,end:!1},m)),!y)return null;Object.assign(o,y.params),c.push({params:o,pathname:ia([s,y.pathname]),pathnameBase:uC(ia([s,y.pathnameBase])),route:k}),y.pathnameBase!=="/"&&(s=ia([s,y.pathnameBase]))}return c}function Gc(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=oC(e.path,e.caseSensitive,e.end),o=t.match(n);if(!o)return null;let s=o[0],c=s.replace(/(.)\/+$/,"$1"),u=o.slice(1);return{params:r.reduce((p,{paramName:m,isOptional:y},k)=>{if(m==="*"){let x=u[k]||"";c=s.slice(0,s.length-x.length).replace(/(.)\/+$/,"$1")}const w=u[k];return y&&!w?p[m]=void 0:p[m]=(w||"").replace(/%2F/g,"/"),p},{}),pathname:s,pathnameBase:c,pattern:e}}function oC(e,t=!1,n=!0){Et(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let r=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(c,u,h,p,m)=>{if(r.push({paramName:u,isOptional:h!=null}),h){let y=m.charAt(p+c.length);return y&&y!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(r.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),r]}function sC(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Et(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function Un(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function lC({basename:e,pathname:t}){return t==="/"?e:ia([e,t])}var O_=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Qp=e=>O_.test(e);function cC(e,t="/"){let{pathname:n,search:r="",hash:o=""}=typeof e=="string"?Ga(e):e,s;return n?(n=n.replace(/\/\/+/g,"/"),n.startsWith("/")?s=Xy(n.substring(1),"/"):s=Xy(n,t)):s=t,{pathname:s,search:dC(r),hash:hC(o)}}function Xy(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?n.length>1&&n.pop():o!=="."&&n.push(o)}),n.length>1?n.join("/"):"/"}function wh(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function j_(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Jp(e){let t=j_(e);return t.map((n,r)=>r===t.length-1?n.pathname:n.pathnameBase)}function _u(e,t,n,r=!1){let o;typeof e=="string"?o=Ga(e):(o={...e},Xe(!o.pathname||!o.pathname.includes("?"),wh("?","pathname","search",o)),Xe(!o.pathname||!o.pathname.includes("#"),wh("#","pathname","hash",o)),Xe(!o.search||!o.search.includes("#"),wh("#","search","hash",o)));let s=e===""||o.pathname==="",c=s?"/":o.pathname,u;if(c==null)u=n;else{let y=t.length-1;if(!r&&c.startsWith("..")){let k=c.split("/");for(;k[0]==="..";)k.shift(),y-=1;o.pathname=k.join("/")}u=y>=0?t[y]:"/"}let h=cC(o,u),p=c&&c!=="/"&&c.endsWith("/"),m=(s||c===".")&&n.endsWith("/");return!h.pathname.endsWith("/")&&(p||m)&&(h.pathname+="/"),h}var ia=e=>e.join("/").replace(/\/\/+/g,"/"),uC=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),dC=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,hC=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,zs=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Ms(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function Hs(e){return e.map(t=>t.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var U_=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function B_(e,t){let n=e;if(typeof n!="string"||!O_.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,o=!1;if(U_)try{let s=new URL(window.location.href),c=n.startsWith("//")?new URL(s.protocol+n):new URL(n),u=Un(c.pathname,t);c.origin===s.origin&&u!=null?n=u+c.search+c.hash:o=!0}catch{Et(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:o,to:n}}var Rr=Symbol("Uninstrumented");function pC(e,t){let n={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};e.forEach(o=>o({id:t.id,index:t.index,path:t.path,instrument(s){let c=Object.keys(n);for(let u of c)s[u]&&n[u].push(s[u])}}));let r={};if(typeof t.lazy=="function"&&n.lazy.length>0){let o=ao(n.lazy,t.lazy,()=>{});o&&(r.lazy=o)}if(typeof t.lazy=="object"){let o=t.lazy;["middleware","loader","action"].forEach(s=>{let c=o[s],u=n[`lazy.${s}`];if(typeof c=="function"&&u.length>0){let h=ao(u,c,()=>{});h&&(r.lazy=Object.assign(r.lazy||{},{[s]:h}))}})}return["loader","action"].forEach(o=>{let s=t[o];if(typeof s=="function"&&n[o].length>0){let c=s[Rr]??s,u=ao(n[o],c,(...h)=>Qy(h[0]));u&&(o==="loader"&&c.hydrate===!0&&(u.hydrate=!0),u[Rr]=c,r[o]=u)}}),t.middleware&&t.middleware.length>0&&n.middleware.length>0&&(r.middleware=t.middleware.map(o=>{let s=o[Rr]??o,c=ao(n.middleware,s,(...u)=>Qy(u[0]));return c?(c[Rr]=s,c):o})),r}function fC(e,t){let n={navigate:[],fetch:[]};if(t.forEach(r=>r({instrument(o){let s=Object.keys(o);for(let c of s)o[c]&&n[c].push(o[c])}})),n.navigate.length>0){let r=e.navigate[Rr]??e.navigate,o=ao(n.navigate,r,(...s)=>{let[c,u]=s;return{to:typeof c=="number"||typeof c=="string"?c:c?ka(c):".",...Jy(e,u??{})}});o&&(o[Rr]=r,e.navigate=o)}if(n.fetch.length>0){let r=e.fetch[Rr]??e.fetch,o=ao(n.fetch,r,(...s)=>{let[c,,u,h]=s;return{href:u??".",fetcherKey:c,...Jy(e,h??{})}});o&&(o[Rr]=r,e.fetch=o)}return e}function ao(e,t,n){return e.length===0?null:async(...r)=>{let o=await F_(e,n(...r),()=>t(...r),e.length-1);if(o.type==="error")throw o.value;return o.value}}async function F_(e,t,n,r){let o=e[r],s;if(o){let c,u=async()=>(c?console.error("You cannot call instrumented handlers more than once"):c=F_(e,t,n,r-1),s=await c,Xe(s,"Expected a result"),s.type==="error"&&s.value instanceof Error?{status:"error",error:s.value}:{status:"success",error:void 0});try{await o(u,t)}catch(h){console.error("An instrumentation function threw an error:",h)}c||await u(),await c}else try{s={type:"success",value:await n()}}catch(c){s={type:"error",value:c}}return s||{type:"error",value:new Error("No result assigned in instrumentation chain.")}}function Qy(e){let{request:t,context:n,params:r,unstable_pattern:o}=e;return{request:mC(t),params:{...r},unstable_pattern:o,context:gC(n)}}function Jy(e,t){return{currentUrl:ka(e.state.location),..."formMethod"in t?{formMethod:t.formMethod}:{},..."formEncType"in t?{formEncType:t.formEncType}:{},..."formData"in t?{formData:t.formData}:{},..."body"in t?{body:t.body}:{}}}function mC(e){return{method:e.method,url:e.url,headers:{get:(...t)=>e.headers.get(...t)}}}function gC(e){if(vC(e)){let t={...e};return Object.freeze(t),t}else return{get:t=>e.get(t)}}var yC=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function vC(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getOwnPropertyNames(t).sort().join("\0")===yC}var V_=["POST","PUT","PATCH","DELETE"],kC=new Set(V_),_C=["GET",...V_],bC=new Set(_C),z_=new Set([301,302,303,307,308]),wC=new Set([307,308]),xh={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},xC={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ds={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},PC=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),H_="remix-router-transitions",$_=Symbol("ResetLoaderData");function SC(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u";Xe(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let r=e.hydrationRouteProperties||[],o=e.mapRouteProperties||PC,s=o;if(e.unstable_instrumentations){let A=e.unstable_instrumentations;s=U=>({...o(U),...pC(A.map(V=>V.route).filter(Boolean),U)})}let c={},u=Is(e.routes,s,void 0,c),h,p=e.basename||"/";p.startsWith("/")||(p=`/${p}`);let m=e.dataStrategy||RC,y={...e.future},k=null,w=new Set,x=null,C=null,S=null,D=e.hydrationData!=null,L=Tr(u,e.history.location,p),R=!1,O=null,K,W;if(L==null&&!e.patchRoutesOnNavigation){let A=Mn(404,{pathname:e.history.location.pathname}),{matches:U,route:V}=dc(u);K=!0,W=!K,L=U,O={[V.id]:A}}else if(L&&!e.hydrationData&&Ja(L,u,e.history.location.pathname).active&&(L=null),L)if(L.some(A=>A.route.lazy))K=!1,W=!K;else if(!L.some(A=>ef(A.route)))K=!0,W=!K;else{let A=e.hydrationData?e.hydrationData.loaderData:null,U=e.hydrationData?e.hydrationData.errors:null,V=L;if(U){let te=L.findIndex(re=>U[re.route.id]!==void 0);V=V.slice(0,te+1)}W=!1,K=V.every(te=>{let re=W_(te.route,A,U);return W=W||re.renderFallback,!re.shouldLoad})}else{K=!1,W=!K,L=[];let A=Ja(null,u,e.history.location.pathname);A.active&&A.matches&&(R=!0,L=A.matches)}let z,P={historyAction:e.history.action,location:e.history.location,matches:L,initialized:K,renderFallback:W,navigation:xh,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||O,fetchers:new Map,blockers:new Map},Y="POP",X=null,ue=!1,se,Ae=!1,pe=new Map,le=null,fe=!1,Ne=!1,G=new Set,Z=new Map,$=0,M=-1,q=new Map,xe=new Set,Re=new Map,Pe=new Map,Te=new Set,Ke=new Map,Qe,Ue=null;function jt(){if(k=e.history.listen(({action:A,location:U,delta:V})=>{if(Qe){Qe(),Qe=void 0;return}Et(Ke.size===0||V!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let te=Ta({currentLocation:P.location,nextLocation:U,historyAction:A});if(te&&V!=null){let re=new Promise(Ee=>{Qe=Ee});e.history.go(V*-1),Kn(te,{state:"blocked",location:U,proceed(){Kn(te,{state:"proceeding",proceed:void 0,reset:void 0,location:U}),re.then(()=>e.history.go(V))},reset(){let Ee=new Map(P.blockers);Ee.set(te,ds),ft({blockers:Ee})}}),X?.resolve(),X=null;return}return Wn(A,U)}),n){qC(t,pe);let A=()=>YC(t,pe);t.addEventListener("pagehide",A),le=()=>t.removeEventListener("pagehide",A)}return P.initialized||Wn("POP",P.location,{initialHydration:!0}),z}function $n(){k&&k(),le&&le(),w.clear(),se&&se.abort(),P.fetchers.forEach((A,U)=>ki(U)),P.blockers.forEach((A,U)=>xi(U))}function Ca(A){return w.add(A),()=>w.delete(A)}function ft(A,U={}){A.matches&&(A.matches=A.matches.map(re=>{let Ee=c[re.route.id],me=re.route;return me.element!==Ee.element||me.errorElement!==Ee.errorElement||me.hydrateFallbackElement!==Ee.hydrateFallbackElement?{...re,route:Ee}:re})),P={...P,...A};let V=[],te=[];P.fetchers.forEach((re,Ee)=>{re.state==="idle"&&(Te.has(Ee)?V.push(Ee):te.push(Ee))}),Te.forEach(re=>{!P.fetchers.has(re)&&!Z.has(re)&&V.push(re)}),[...w].forEach(re=>re(P,{deletedFetchers:V,newErrors:A.errors??null,viewTransitionOpts:U.viewTransitionOpts,flushSync:U.flushSync===!0})),V.forEach(re=>ki(re)),te.forEach(re=>P.fetchers.delete(re))}function en(A,U,{flushSync:V}={}){let te=P.actionData!=null&&P.navigation.formMethod!=null&&Qt(P.navigation.formMethod)&&P.navigation.state==="loading"&&A.state?._isRedirect!==!0,re;U.actionData?Object.keys(U.actionData).length>0?re=U.actionData:re=null:te?re=P.actionData:re=null;let Ee=U.loaderData?cv(P.loaderData,U.loaderData,U.matches||[],U.errors):P.loaderData,me=P.blockers;me.size>0&&(me=new Map(me),me.forEach((Me,Le)=>me.set(Le,ds)));let De=fe?!1:Ao(A,U.matches||P.matches),he=ue===!0||P.navigation.formMethod!=null&&Qt(P.navigation.formMethod)&&A.state?._isRedirect!==!0;h&&(u=h,h=void 0),fe||Y==="POP"||(Y==="PUSH"?e.history.push(A,A.state):Y==="REPLACE"&&e.history.replace(A,A.state));let Ie;if(Y==="POP"){let Me=pe.get(P.location.pathname);Me&&Me.has(A.pathname)?Ie={currentLocation:P.location,nextLocation:A}:pe.has(A.pathname)&&(Ie={currentLocation:A,nextLocation:P.location})}else if(Ae){let Me=pe.get(P.location.pathname);Me?Me.add(A.pathname):(Me=new Set([A.pathname]),pe.set(P.location.pathname,Me)),Ie={currentLocation:P.location,nextLocation:A}}ft({...U,actionData:re,loaderData:Ee,historyAction:Y,location:A,initialized:!0,renderFallback:!1,navigation:xh,revalidation:"idle",restoreScrollPosition:De,preventScrollReset:he,blockers:me},{viewTransitionOpts:Ie,flushSync:V===!0}),Y="POP",ue=!1,Ae=!1,fe=!1,Ne=!1,X?.resolve(),X=null,Ue?.resolve(),Ue=null}async function Po(A,U){if(X?.resolve(),X=null,typeof A=="number"){X||(X=pv());let ht=X.promise;return e.history.go(A),ht}let V=np(P.location,P.matches,p,A,U?.fromRouteId,U?.relative),{path:te,submission:re,error:Ee}=ev(!1,V,U),me;U?.unstable_mask&&(me={pathname:"",search:"",hash:"",...typeof U.unstable_mask=="string"?Ga(U.unstable_mask):{...P.location.unstable_mask,...U.unstable_mask}});let De=P.location,he=Ds(De,te,U&&U.state,void 0,me);he={...he,...e.history.encodeLocation(he)};let Ie=U&&U.replace!=null?U.replace:void 0,Me="PUSH";Ie===!0?Me="REPLACE":Ie===!1||re!=null&&Qt(re.formMethod)&&re.formAction===P.location.pathname+P.location.search&&(Me="REPLACE");let Le=U&&"preventScrollReset"in U?U.preventScrollReset===!0:void 0,ot=(U&&U.flushSync)===!0,et=Ta({currentLocation:De,nextLocation:he,historyAction:Me});if(et){Kn(et,{state:"blocked",location:he,proceed(){Kn(et,{state:"proceeding",proceed:void 0,reset:void 0,location:he}),Po(A,U)},reset(){let ht=new Map(P.blockers);ht.set(et,ds),ft({blockers:ht})}});return}await Wn(Me,he,{submission:re,pendingError:Ee,preventScrollReset:Le,replace:U&&U.replace,enableViewTransition:U&&U.viewTransition,flushSync:ot,callSiteDefaultShouldRevalidate:U&&U.unstable_defaultShouldRevalidate})}function al(){Ue||(Ue=pv()),Xa(),ft({revalidation:"loading"});let A=Ue.promise;return P.navigation.state==="submitting"?A:P.navigation.state==="idle"?(Wn(P.historyAction,P.location,{startUninterruptedRevalidation:!0}),A):(Wn(Y||P.historyAction,P.navigation.location,{overrideNavigation:P.navigation,enableViewTransition:Ae===!0}),A)}async function Wn(A,U,V){se&&se.abort(),se=null,Y=A,fe=(V&&V.startUninterruptedRevalidation)===!0,cl(P.location,P.matches),ue=(V&&V.preventScrollReset)===!0,Ae=(V&&V.enableViewTransition)===!0;let te=h||u,re=V&&V.overrideNavigation,Ee=V?.initialHydration&&P.matches&&P.matches.length>0&&!R?P.matches:Tr(te,U,p),me=(V&&V.flushSync)===!0;if(Ee&&P.initialized&&!Ne&&UC(P.location,U)&&!(V&&V.submission&&Qt(V.submission.formMethod))){en(U,{matches:Ee},{flushSync:me});return}let De=Ja(Ee,te,U.pathname);if(De.active&&De.matches&&(Ee=De.matches),!Ee){let{error:St,notFoundMatches:Ht,route:lt}=Pi(U.pathname);en(U,{matches:Ht,loaderData:{},errors:{[lt.id]:St}},{flushSync:me});return}se=new AbortController;let he=eo(e.history,U,se.signal,V&&V.submission),Ie=e.getContext?await e.getContext():new qy,Me;if(V&&V.pendingError)Me=[Er(Ee).route.id,{type:"error",error:V.pendingError}];else if(V&&V.submission&&Qt(V.submission.formMethod)){let St=await rl(he,U,V.submission,Ee,Ie,De.active,V&&V.initialHydration===!0,{replace:V.replace,flushSync:me});if(St.shortCircuited)return;if(St.pendingActionResult){let[Ht,lt]=St.pendingActionResult;if(Pn(lt)&&Ms(lt.error)&<.error.status===404){se=null,en(U,{matches:St.matches,loaderData:{},errors:{[Ht]:lt.error}});return}}Ee=St.matches||Ee,Me=St.pendingActionResult,re=Ph(U,V.submission),me=!1,De.active=!1,he=eo(e.history,he.url,he.signal)}let{shortCircuited:Le,matches:ot,loaderData:et,errors:ht}=await So(he,U,Ee,Ie,De.active,re,V&&V.submission,V&&V.fetcherSubmission,V&&V.replace,V&&V.initialHydration===!0,me,Me,V&&V.callSiteDefaultShouldRevalidate);Le||(se=null,en(U,{matches:ot||Ee,...uv(Me),loaderData:et,errors:ht}))}async function rl(A,U,V,te,re,Ee,me,De={}){Xa();let he=GC(U,V);if(ft({navigation:he},{flushSync:De.flushSync===!0}),Ee){let Le=await Br(te,U.pathname,A.signal);if(Le.type==="aborted")return{shortCircuited:!0};if(Le.type==="error"){if(Le.partialMatches.length===0){let{matches:et,route:ht}=dc(u);return{matches:et,pendingActionResult:[ht.id,{type:"error",error:Le.error}]}}let ot=Er(Le.partialMatches).route.id;return{matches:Le.partialMatches,pendingActionResult:[ot,{type:"error",error:Le.error}]}}else if(Le.matches)te=Le.matches;else{let{notFoundMatches:ot,error:et,route:ht}=Pi(U.pathname);return{matches:ot,pendingActionResult:[ht.id,{type:"error",error:et}]}}}let Ie,Me=Tc(te,U);if(!Me.route.action&&!Me.route.lazy)Ie={type:"error",error:Mn(405,{method:A.method,pathname:U.pathname,routeId:Me.route.id})};else{let Le=lo(s,c,A,te,Me,me?[]:r,re),ot=await Za(A,Le,re,null);if(Ie=ot[Me.route.id],!Ie){for(let et of te)if(ot[et.route.id]){Ie=ot[et.route.id];break}}if(A.signal.aborted)return{shortCircuited:!0}}if(ni(Ie)){let Le;return De&&De.replace!=null?Le=De.replace:Le=ov(Ie.response.headers.get("Location"),new URL(A.url),p,e.history)===P.location.pathname+P.location.search,await la(A,Ie,!0,{submission:V,replace:Le}),{shortCircuited:!0}}if(Pn(Ie)){let Le=Er(te,Me.route.id);return(De&&De.replace)!==!0&&(Y="PUSH"),{matches:te,pendingActionResult:[Le.route.id,Ie,Me.route.id]}}return{matches:te,pendingActionResult:[Me.route.id,Ie]}}async function So(A,U,V,te,re,Ee,me,De,he,Ie,Me,Le,ot){let et=Ee||Ph(U,me),ht=me||De||hv(et),St=!fe&&!Ie;if(re){if(St){let Ut=qa(Le);ft({navigation:et,...Ut!==void 0?{actionData:Ut}:{}},{flushSync:Me})}let $e=await Br(V,U.pathname,A.signal);if($e.type==="aborted")return{shortCircuited:!0};if($e.type==="error"){if($e.partialMatches.length===0){let{matches:nr,route:Ra}=dc(u);return{matches:nr,loaderData:{},errors:{[Ra.id]:$e.error}}}let Ut=Er($e.partialMatches).route.id;return{matches:$e.partialMatches,loaderData:{},errors:{[Ut]:$e.error}}}else if($e.matches)V=$e.matches;else{let{error:Ut,notFoundMatches:nr,route:Ra}=Pi(U.pathname);return{matches:nr,loaderData:{},errors:{[Ra.id]:Ut}}}}let Ht=h||u,{dsMatches:lt,revalidatingFetchers:at}=tv(A,te,s,c,e.history,P,V,ht,U,Ie?[]:r,Ie===!0,Ne,G,Te,Re,xe,Ht,p,e.patchRoutesOnNavigation!=null,Le,ot);if(M=++$,!e.dataStrategy&&!lt.some($e=>$e.shouldLoad)&&!lt.some($e=>$e.route.middleware&&$e.route.middleware.length>0)&&at.length===0){let $e=bi();return en(U,{matches:V,loaderData:{},errors:Le&&Pn(Le[1])?{[Le[0]]:Le[1].error}:null,...uv(Le),...$e?{fetchers:new Map(P.fetchers)}:{}},{flushSync:Me}),{shortCircuited:!0}}if(St){let $e={};if(!re){$e.navigation=et;let Ut=qa(Le);Ut!==void 0&&($e.actionData=Ut)}at.length>0&&($e.fetchers=Ya(at)),ft($e,{flushSync:Me})}at.forEach($e=>{Gn($e.key),$e.controller&&Z.set($e.key,$e.controller)});let Ea=()=>at.forEach($e=>Gn($e.key));se&&se.signal.addEventListener("abort",Ea);let{loaderResults:Aa,fetcherResults:qn}=await vi(lt,at,A,te);if(A.signal.aborted)return{shortCircuited:!0};se&&se.signal.removeEventListener("abort",Ea),at.forEach($e=>Z.delete($e.key));let nn=hc(Aa);if(nn)return await la(A,nn.result,!0,{replace:he}),{shortCircuited:!0};if(nn=hc(qn),nn)return xe.add(nn.key),await la(A,nn.result,!0,{replace:he}),{shortCircuited:!0};let{loaderData:Lo,errors:tr}=lv(P,V,Aa,Le,at,qn);Ie&&P.errors&&(tr={...P.errors,...tr});let Tn=bi(),an=wi(M),Si=Tn||an||at.length>0;return{matches:V,loaderData:Lo,errors:tr,...Si?{fetchers:new Map(P.fetchers)}:{}}}function qa(A){if(A&&!Pn(A[1]))return{[A[0]]:A[1].data};if(P.actionData)return Object.keys(P.actionData).length===0?null:P.actionData}function Ya(A){return A.forEach(U=>{let V=P.fetchers.get(U.key),te=hs(void 0,V?V.data:void 0);P.fetchers.set(U.key,te)}),new Map(P.fetchers)}async function Co(A,U,V,te){Gn(A);let re=(te&&te.flushSync)===!0,Ee=h||u,me=np(P.location,P.matches,p,V,U,te?.relative),De=Tr(Ee,me,p),he=Ja(De,Ee,me);if(he.active&&he.matches&&(De=he.matches),!De){tn(A,U,Mn(404,{pathname:me}),{flushSync:re});return}let{path:Ie,submission:Me,error:Le}=ev(!0,me,te);if(Le){tn(A,U,Le,{flushSync:re});return}let ot=e.getContext?await e.getContext():new qy,et=(te&&te.preventScrollReset)===!0;if(Me&&Qt(Me.formMethod)){await il(A,U,Ie,De,ot,he.active,re,et,Me,te&&te.unstable_defaultShouldRevalidate);return}Re.set(A,{routeId:U,path:Ie}),await ol(A,U,Ie,De,ot,he.active,re,et,Me)}async function il(A,U,V,te,re,Ee,me,De,he,Ie){Xa(),Re.delete(A);let Me=P.fetchers.get(A);Cn(A,KC(he,Me),{flushSync:me});let Le=new AbortController,ot=eo(e.history,V,Le.signal,he);if(Ee){let ut=await Br(te,new URL(ot.url).pathname,ot.signal,A);if(ut.type==="aborted")return;if(ut.type==="error"){tn(A,U,ut.error,{flushSync:me});return}else if(ut.matches)te=ut.matches;else{tn(A,U,Mn(404,{pathname:V}),{flushSync:me});return}}let et=Tc(te,V);if(!et.route.action&&!et.route.lazy){let ut=Mn(405,{method:he.formMethod,pathname:V,routeId:U});tn(A,U,ut,{flushSync:me});return}Z.set(A,Le);let ht=$,St=lo(s,c,ot,te,et,r,re),Ht=await Za(ot,St,re,A),lt=Ht[et.route.id];if(!lt){for(let ut of St)if(Ht[ut.route.id]){lt=Ht[ut.route.id];break}}if(ot.signal.aborted){Z.get(A)===Le&&Z.delete(A);return}if(Te.has(A)){if(ni(lt)||Pn(lt)){Cn(A,Va(void 0));return}}else{if(ni(lt))if(Z.delete(A),M>ht){Cn(A,Va(void 0));return}else return xe.add(A),Cn(A,hs(he)),la(ot,lt,!1,{fetcherSubmission:he,preventScrollReset:De});if(Pn(lt)){tn(A,U,lt.error);return}}let at=P.navigation.location||P.location,Ea=eo(e.history,at,Le.signal),Aa=h||u,qn=P.navigation.state!=="idle"?Tr(Aa,P.navigation.location,p):P.matches;Xe(qn,"Didn't find any matches after fetcher action");let nn=++$;q.set(A,nn);let Lo=hs(he,lt.data);P.fetchers.set(A,Lo);let{dsMatches:tr,revalidatingFetchers:Tn}=tv(Ea,re,s,c,e.history,P,qn,he,at,r,!1,Ne,G,Te,Re,xe,Aa,p,e.patchRoutesOnNavigation!=null,[et.route.id,lt],Ie);Tn.filter(ut=>ut.key!==A).forEach(ut=>{let La=ut.key,ar=P.fetchers.get(La),Ci=hs(void 0,ar?ar.data:void 0);P.fetchers.set(La,Ci),Gn(La),ut.controller&&Z.set(La,ut.controller)}),ft({fetchers:new Map(P.fetchers)});let an=()=>Tn.forEach(ut=>Gn(ut.key));Le.signal.addEventListener("abort",an);let{loaderResults:Si,fetcherResults:$e}=await vi(tr,Tn,Ea,re);if(Le.signal.aborted)return;if(Le.signal.removeEventListener("abort",an),q.delete(A),Z.delete(A),Tn.forEach(ut=>Z.delete(ut.key)),P.fetchers.has(A)){let ut=Va(lt.data);P.fetchers.set(A,ut)}let Ut=hc(Si);if(Ut)return la(Ea,Ut.result,!1,{preventScrollReset:De});if(Ut=hc($e),Ut)return xe.add(Ut.key),la(Ea,Ut.result,!1,{preventScrollReset:De});let{loaderData:nr,errors:Ra}=lv(P,qn,Si,void 0,Tn,$e);wi(nn),P.navigation.state==="loading"&&nn>M?(Xe(Y,"Expected pending action"),se&&se.abort(),en(P.navigation.location,{matches:qn,loaderData:nr,errors:Ra,fetchers:new Map(P.fetchers)})):(ft({errors:Ra,loaderData:cv(P.loaderData,nr,qn,Ra),fetchers:new Map(P.fetchers)}),Ne=!1)}async function ol(A,U,V,te,re,Ee,me,De,he){let Ie=P.fetchers.get(A);Cn(A,hs(he,Ie?Ie.data:void 0),{flushSync:me});let Me=new AbortController,Le=eo(e.history,V,Me.signal);if(Ee){let lt=await Br(te,new URL(Le.url).pathname,Le.signal,A);if(lt.type==="aborted")return;if(lt.type==="error"){tn(A,U,lt.error,{flushSync:me});return}else if(lt.matches)te=lt.matches;else{tn(A,U,Mn(404,{pathname:V}),{flushSync:me});return}}let ot=Tc(te,V);Z.set(A,Me);let et=$,ht=lo(s,c,Le,te,ot,r,re),Ht=(await Za(Le,ht,re,A))[ot.route.id];if(Z.get(A)===Me&&Z.delete(A),!Le.signal.aborted){if(Te.has(A)){Cn(A,Va(void 0));return}if(ni(Ht))if(M>et){Cn(A,Va(void 0));return}else{xe.add(A),await la(Le,Ht,!1,{preventScrollReset:De});return}if(Pn(Ht)){tn(A,U,Ht.error);return}Cn(A,Va(Ht.data))}}async function la(A,U,V,{submission:te,fetcherSubmission:re,preventScrollReset:Ee,replace:me}={}){V||(X?.resolve(),X=null),U.response.headers.has("X-Remix-Revalidate")&&(Ne=!0);let De=U.response.headers.get("Location");Xe(De,"Expected a Location header on the redirect Response"),De=ov(De,new URL(A.url),p,e.history);let he=Ds(P.location,De,{_isRedirect:!0});if(n){let ht=!1;if(U.response.headers.has("X-Remix-Reload-Document"))ht=!0;else if(Qp(De)){const St=I_(De,!0);ht=St.origin!==t.location.origin||Un(St.pathname,p)==null}if(ht){me?t.location.replace(De):t.location.assign(De);return}}se=null;let Ie=me===!0||U.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:Me,formAction:Le,formEncType:ot}=P.navigation;!te&&!re&&Me&&Le&&ot&&(te=hv(P.navigation));let et=te||re;if(wC.has(U.response.status)&&et&&Qt(et.formMethod))await Wn(Ie,he,{submission:{...et,formAction:De},preventScrollReset:Ee||ue,enableViewTransition:V?Ae:void 0});else{let ht=Ph(he,te);await Wn(Ie,he,{overrideNavigation:ht,fetcherSubmission:re,preventScrollReset:Ee||ue,enableViewTransition:V?Ae:void 0})}}async function Za(A,U,V,te){let re,Ee={};try{re=await DC(m,A,U,te,V,!1)}catch(me){return U.filter(De=>De.shouldLoad).forEach(De=>{Ee[De.route.id]={type:"error",error:me}}),Ee}if(A.signal.aborted)return Ee;if(!Qt(A.method))for(let me of U){if(re[me.route.id]?.type==="error")break;!re.hasOwnProperty(me.route.id)&&!P.loaderData.hasOwnProperty(me.route.id)&&(!P.errors||!P.errors.hasOwnProperty(me.route.id))&&me.shouldCallHandler()&&(re[me.route.id]={type:"error",result:new Error(`No result returned from dataStrategy for route ${me.route.id}`)})}for(let[me,De]of Object.entries(re))if(zC(De)){let he=De.result;Ee[me]={type:"redirect",response:OC(he,A,me,U,p)}}else Ee[me]=await NC(De);return Ee}async function vi(A,U,V,te){let re=Za(V,A,te,null),Ee=Promise.all(U.map(async he=>{if(he.matches&&he.match&&he.request&&he.controller){let Me=(await Za(he.request,he.matches,te,he.key))[he.match.route.id];return{[he.key]:Me}}else return Promise.resolve({[he.key]:{type:"error",error:Mn(404,{pathname:he.path})}})})),me=await re,De=(await Ee).reduce((he,Ie)=>Object.assign(he,Ie),{});return{loaderResults:me,fetcherResults:De}}function Xa(){Ne=!0,Re.forEach((A,U)=>{Z.has(U)&&G.add(U),Gn(U)})}function Cn(A,U,V={}){P.fetchers.set(A,U),ft({fetchers:new Map(P.fetchers)},{flushSync:(V&&V.flushSync)===!0})}function tn(A,U,V,te={}){let re=Er(P.matches,U);ki(A),ft({errors:{[re.route.id]:V},fetchers:new Map(P.fetchers)},{flushSync:(te&&te.flushSync)===!0})}function Qa(A){return Pe.set(A,(Pe.get(A)||0)+1),Te.has(A)&&Te.delete(A),P.fetchers.get(A)||xC}function Ou(A,U){Gn(A,U?.reason),Cn(A,Va(null))}function ki(A){let U=P.fetchers.get(A);Z.has(A)&&!(U&&U.state==="loading"&&q.has(A))&&Gn(A),Re.delete(A),q.delete(A),xe.delete(A),Te.delete(A),G.delete(A),P.fetchers.delete(A)}function sl(A){let U=(Pe.get(A)||0)-1;U<=0?(Pe.delete(A),Te.add(A)):Pe.set(A,U),ft({fetchers:new Map(P.fetchers)})}function Gn(A,U){let V=Z.get(A);V&&(V.abort(U),Z.delete(A))}function _i(A){for(let U of A){let V=Qa(U),te=Va(V.data);P.fetchers.set(U,te)}}function bi(){let A=[],U=!1;for(let V of xe){let te=P.fetchers.get(V);Xe(te,`Expected fetcher: ${V}`),te.state==="loading"&&(xe.delete(V),A.push(V),U=!0)}return _i(A),U}function wi(A){let U=[];for(let[V,te]of q)if(te<A){let re=P.fetchers.get(V);Xe(re,`Expected fetcher: ${V}`),re.state==="loading"&&(Gn(V),q.delete(V),U.push(V))}return _i(U),U.length>0}function To(A,U){let V=P.blockers.get(A)||ds;return Ke.get(A)!==U&&Ke.set(A,U),V}function xi(A){P.blockers.delete(A),Ke.delete(A)}function Kn(A,U){let V=P.blockers.get(A)||ds;Xe(V.state==="unblocked"&&U.state==="blocked"||V.state==="blocked"&&U.state==="blocked"||V.state==="blocked"&&U.state==="proceeding"||V.state==="blocked"&&U.state==="unblocked"||V.state==="proceeding"&&U.state==="unblocked",`Invalid blocker state transition: ${V.state} -> ${U.state}`);let te=new Map(P.blockers);te.set(A,U),ft({blockers:te})}function Ta({currentLocation:A,nextLocation:U,historyAction:V}){if(Ke.size===0)return;Ke.size>1&&Et(!1,"A router only supports one blocker at a time");let te=Array.from(Ke.entries()),[re,Ee]=te[te.length-1],me=P.blockers.get(re);if(!(me&&me.state==="proceeding")&&Ee({currentLocation:A,nextLocation:U,historyAction:V}))return re}function Pi(A){let U=Mn(404,{pathname:A}),V=h||u,{matches:te,route:re}=dc(V);return{notFoundMatches:te,route:re,error:U}}function ll(A,U,V){if(x=A,S=U,C=V||null,!D&&P.navigation===xh){D=!0;let te=Ao(P.location,P.matches);te!=null&&ft({restoreScrollPosition:te})}return()=>{x=null,S=null,C=null}}function Eo(A,U){return C&&C(A,U.map(te=>YS(te,P.loaderData)))||A.key}function cl(A,U){if(x&&S){let V=Eo(A,U);x[V]=S()}}function Ao(A,U){if(x){let V=Eo(A,U),te=x[V];if(typeof te=="number")return te}return null}function Ja(A,U,V){if(e.patchRoutesOnNavigation)if(A){if(Object.keys(A[0].params).length>0)return{active:!0,matches:vs(U,V,p,!0)}}else return{active:!0,matches:vs(U,V,p,!0)||[]};return{active:!1,matches:null}}async function Br(A,U,V,te){if(!e.patchRoutesOnNavigation)return{type:"success",matches:A};let re=A;for(;;){let Ee=h==null,me=h||u,De=c;try{await e.patchRoutesOnNavigation({signal:V,path:U,matches:re,fetcherKey:te,patch:(Me,Le)=>{V.aborted||nv(Me,Le,me,De,s,!1)}})}catch(Me){return{type:"error",error:Me,partialMatches:re}}finally{Ee&&!V.aborted&&(u=[...u])}if(V.aborted)return{type:"aborted"};let he=Tr(me,U,p),Ie=null;if(he){if(Object.keys(he[0].params).length===0)return{type:"success",matches:he};if(Ie=vs(me,U,p,!0),!(Ie&&re.length<Ie.length&&er(re,Ie.slice(0,re.length))))return{type:"success",matches:he}}if(Ie||(Ie=vs(me,U,p,!0)),!Ie||er(re,Ie))return{type:"success",matches:null};re=Ie}}function er(A,U){return A.length===U.length&&A.every((V,te)=>V.route.id===U[te].route.id)}function Ro(A){c={},h=Is(A,s,void 0,c)}function Fr(A,U,V=!1){let te=h==null;nv(A,U,h||u,c,s,V),te&&(u=[...u],ft({}))}return z={get basename(){return p},get future(){return y},get state(){return P},get routes(){return u},get window(){return t},initialize:jt,subscribe:Ca,enableScrollRestoration:ll,navigate:Po,fetch:Co,revalidate:al,createHref:A=>e.history.createHref(A),encodeLocation:A=>e.history.encodeLocation(A),getFetcher:Qa,resetFetcher:Ou,deleteFetcher:sl,dispose:$n,getBlocker:To,deleteBlocker:xi,patchRoutes:Fr,_internalFetchControllers:Z,_internalSetRoutes:Ro,_internalSetStateDoNotUseOrYouWillBreakYourApp(A){ft(A)}},e.unstable_instrumentations&&(z=fC(z,e.unstable_instrumentations.map(A=>A.router).filter(Boolean))),z}function CC(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function np(e,t,n,r,o,s){let c,u;if(o){c=[];for(let p of t)if(c.push(p),p.route.id===o){u=p;break}}else c=t,u=t[t.length-1];let h=_u(r||".",Jp(c),Un(e.pathname,n)||e.pathname,s==="path");if(r==null&&(h.search=e.search,h.hash=e.hash),(r==null||r===""||r===".")&&u){let p=nf(h.search);if(u.route.index&&!p)h.search=h.search?h.search.replace(/^\?/,"?index&"):"?index";else if(!u.route.index&&p){let m=new URLSearchParams(h.search),y=m.getAll("index");m.delete("index"),y.filter(w=>w).forEach(w=>m.append("index",w));let k=m.toString();h.search=k?`?${k}`:""}}return n!=="/"&&(h.pathname=lC({basename:n,pathname:h.pathname})),ka(h)}function ev(e,t,n){if(!n||!CC(n))return{path:t};if(n.formMethod&&!WC(n.formMethod))return{path:t,error:Mn(405,{method:n.formMethod})};let r=()=>({path:t,error:Mn(400,{type:"invalid-body"})}),s=(n.formMethod||"get").toUpperCase(),c=X_(t);if(n.body!==void 0){if(n.formEncType==="text/plain"){if(!Qt(s))return r();let y=typeof n.body=="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((k,[w,x])=>`${k}${w}=${x}
|
|
10
|
-
`,""):String(n.body);return{path:t,submission:{formMethod:s,formAction:c,formEncType:n.formEncType,formData:void 0,json:void 0,text:y}}}else if(n.formEncType==="application/json"){if(!Qt(s))return r();try{let y=typeof n.body=="string"?JSON.parse(n.body):n.body;return{path:t,submission:{formMethod:s,formAction:c,formEncType:n.formEncType,formData:void 0,json:y,text:void 0}}}catch{return r()}}}Xe(typeof FormData=="function","FormData is not available in this environment");let u,h;if(n.formData)u=rp(n.formData),h=n.formData;else if(n.body instanceof FormData)u=rp(n.body),h=n.body;else if(n.body instanceof URLSearchParams)u=n.body,h=sv(u);else if(n.body==null)u=new URLSearchParams,h=new FormData;else try{u=new URLSearchParams(n.body),h=sv(u)}catch{return r()}let p={formMethod:s,formAction:c,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:h,json:void 0,text:void 0};if(Qt(p.formMethod))return{path:t,submission:p};let m=Ga(t);return e&&m.search&&nf(m.search)&&u.append("index",""),m.search=`?${u}`,{path:ka(m),submission:p}}function tv(e,t,n,r,o,s,c,u,h,p,m,y,k,w,x,C,S,D,L,R,O){let K=R?Pn(R[1])?R[1].error:R[1].data:void 0,W=o.createURL(s.location),z=o.createURL(h),P;if(m&&s.errors){let le=Object.keys(s.errors)[0];P=c.findIndex(fe=>fe.route.id===le)}else if(R&&Pn(R[1])){let le=R[0];P=c.findIndex(fe=>fe.route.id===le)-1}let Y=R?R[1].statusCode:void 0,X=Y&&Y>=400,ue={currentUrl:W,currentParams:s.matches[0]?.params||{},nextUrl:z,nextParams:c[0].params,...u,actionResult:K,actionStatus:Y},se=Hs(c),Ae=c.map((le,fe)=>{let{route:Ne}=le,G=null;if(P!=null&&fe>P)G=!1;else if(Ne.lazy)G=!0;else if(!ef(Ne))G=!1;else if(m){let{shouldLoad:q}=W_(Ne,s.loaderData,s.errors);G=q}else TC(s.loaderData,s.matches[fe],le)&&(G=!0);if(G!==null)return ap(n,r,e,se,le,p,t,G);let Z=!1;typeof O=="boolean"?Z=O:X?Z=!1:(y||W.pathname+W.search===z.pathname+z.search||W.search!==z.search||EC(s.matches[fe],le))&&(Z=!0);let $={...ue,defaultShouldRevalidate:Z},M=ws(le,$);return ap(n,r,e,se,le,p,t,M,$,O)}),pe=[];return x.forEach((le,fe)=>{if(m||!c.some(Re=>Re.route.id===le.routeId)||w.has(fe))return;let Ne=s.fetchers.get(fe),G=Ne&&Ne.state!=="idle"&&Ne.data===void 0,Z=Tr(S,le.path,D);if(!Z){if(L&&G)return;pe.push({key:fe,routeId:le.routeId,path:le.path,matches:null,match:null,request:null,controller:null});return}if(C.has(fe))return;let $=Tc(Z,le.path),M=new AbortController,q=eo(o,le.path,M.signal),xe=null;if(k.has(fe))k.delete(fe),xe=lo(n,r,q,Z,$,p,t);else if(G)y&&(xe=lo(n,r,q,Z,$,p,t));else{let Re;typeof O=="boolean"?Re=O:X?Re=!1:Re=y;let Pe={...ue,defaultShouldRevalidate:Re};ws($,Pe)&&(xe=lo(n,r,q,Z,$,p,t,Pe))}xe&&pe.push({key:fe,routeId:le.routeId,path:le.path,matches:xe,match:$,request:q,controller:M})}),{dsMatches:Ae,revalidatingFetchers:pe}}function ef(e){return e.loader!=null||e.middleware!=null&&e.middleware.length>0}function W_(e,t,n){if(e.lazy)return{shouldLoad:!0,renderFallback:!0};if(!ef(e))return{shouldLoad:!1,renderFallback:!1};let r=t!=null&&e.id in t,o=n!=null&&n[e.id]!==void 0;if(!r&&o)return{shouldLoad:!1,renderFallback:!1};if(typeof e.loader=="function"&&e.loader.hydrate===!0)return{shouldLoad:!0,renderFallback:!r};let s=!r&&!o;return{shouldLoad:s,renderFallback:s}}function TC(e,t,n){let r=!t||n.route.id!==t.route.id,o=!e.hasOwnProperty(n.route.id);return r||o}function EC(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function ws(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}function nv(e,t,n,r,o,s){let c;if(e){let p=r[e];Xe(p,`No route found to patch children into: routeId = ${e}`),p.children||(p.children=[]),c=p.children}else c=n;let u=[],h=[];if(t.forEach(p=>{let m=c.find(y=>G_(p,y));m?h.push({existingRoute:m,newRoute:p}):u.push(p)}),u.length>0){let p=Is(u,o,[e||"_","patch",String(c?.length||"0")],r);c.push(...p)}if(s&&h.length>0)for(let p=0;p<h.length;p++){let{existingRoute:m,newRoute:y}=h[p],k=m,[w]=Is([y],o,[],{},!0);Object.assign(k,{element:w.element?w.element:k.element,errorElement:w.errorElement?w.errorElement:k.errorElement,hydrateFallbackElement:w.hydrateFallbackElement?w.hydrateFallbackElement:k.hydrateFallbackElement})}}function G_(e,t){return"id"in e&&"id"in t&&e.id===t.id?!0:e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive?(!e.children||e.children.length===0)&&(!t.children||t.children.length===0)?!0:e.children?.every((n,r)=>t.children?.some(o=>G_(n,o)))??!1:!1}var av=new WeakMap,K_=({key:e,route:t,manifest:n,mapRouteProperties:r})=>{let o=n[t.id];if(Xe(o,"No route found in manifest"),!o.lazy||typeof o.lazy!="object")return;let s=o.lazy[e];if(!s)return;let c=av.get(o);c||(c={},av.set(o,c));let u=c[e];if(u)return u;let h=(async()=>{let p=WS(e),y=o[e]!==void 0&&e!=="hasErrorBoundary";if(p)Et(!p,"Route property "+e+" is not a supported lazy route property. This property will be ignored."),c[e]=Promise.resolve();else if(y)Et(!1,`Route "${o.id}" has a static property "${e}" defined. The lazy property will be ignored.`);else{let k=await s();k!=null&&(Object.assign(o,{[e]:k}),Object.assign(o,r(o)))}typeof o.lazy=="object"&&(o.lazy[e]=void 0,Object.values(o.lazy).every(k=>k===void 0)&&(o.lazy=void 0))})();return c[e]=h,h},rv=new WeakMap;function AC(e,t,n,r,o){let s=n[e.id];if(Xe(s,"No route found in manifest"),!e.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof e.lazy=="function"){let m=rv.get(s);if(m)return{lazyRoutePromise:m,lazyHandlerPromise:m};let y=(async()=>{Xe(typeof e.lazy=="function","No lazy route function found");let k=await e.lazy(),w={};for(let x in k){let C=k[x];if(C===void 0)continue;let S=KS(x),L=s[x]!==void 0&&x!=="hasErrorBoundary";S?Et(!S,"Route property "+x+" is not a supported property to be returned from a lazy route function. This property will be ignored."):L?Et(!L,`Route "${s.id}" has a static property "${x}" defined but its lazy function is also returning a value for this property. The lazy route property "${x}" will be ignored.`):w[x]=C}Object.assign(s,w),Object.assign(s,{...r(s),lazy:void 0})})();return rv.set(s,y),y.catch(()=>{}),{lazyRoutePromise:y,lazyHandlerPromise:y}}let c=Object.keys(e.lazy),u=[],h;for(let m of c){if(o&&o.includes(m))continue;let y=K_({key:m,route:e,manifest:n,mapRouteProperties:r});y&&(u.push(y),m===t&&(h=y))}let p=u.length>0?Promise.all(u).then(()=>{}):void 0;return p?.catch(()=>{}),h?.catch(()=>{}),{lazyRoutePromise:p,lazyHandlerPromise:h}}async function iv(e){let t=e.matches.filter(o=>o.shouldLoad),n={};return(await Promise.all(t.map(o=>o.resolve()))).forEach((o,s)=>{n[t[s].route.id]=o}),n}async function RC(e){return e.matches.some(t=>t.route.middleware)?q_(e,()=>iv(e)):iv(e)}function q_(e,t){return LC(e,t,r=>{if($C(r))throw r;return r},FC,n);function n(r,o,s){if(s)return Promise.resolve(Object.assign(s.value,{[o]:{type:"error",result:r}}));{let{matches:c}=e,u=Math.min(Math.max(c.findIndex(p=>p.route.id===o),0),Math.max(c.findIndex(p=>p.shouldCallHandler()),0)),h=Er(c,c[u].route.id).route.id;return Promise.resolve({[h]:{type:"error",result:r}})}}}async function LC(e,t,n,r,o){let{matches:s,request:c,params:u,context:h,unstable_pattern:p}=e,m=s.flatMap(k=>k.route.middleware?k.route.middleware.map(w=>[k.route.id,w]):[]);return await Y_({request:c,params:u,context:h,unstable_pattern:p},m,t,n,r,o)}async function Y_(e,t,n,r,o,s,c=0){let{request:u}=e;if(u.signal.aborted)throw u.signal.reason??new Error(`Request aborted: ${u.method} ${u.url}`);let h=t[c];if(!h)return await n();let[p,m]=h,y,k=async()=>{if(y)throw new Error("You may only call `next()` once per middleware");try{return y={value:await Y_(e,t,n,r,o,s,c+1)},y.value}catch(w){return y={value:await s(w,p,y)},y.value}};try{let w=await m(e,k),x=w!=null?r(w):void 0;return o(x)?x:y?x??y.value:(y={value:await k()},y.value)}catch(w){return await s(w,p,y)}}function Z_(e,t,n,r,o){let s=K_({key:"middleware",route:r.route,manifest:t,mapRouteProperties:e}),c=AC(r.route,Qt(n.method)?"action":"loader",t,e,o);return{middleware:s,route:c.lazyRoutePromise,handler:c.lazyHandlerPromise}}function ap(e,t,n,r,o,s,c,u,h=null,p){let m=!1,y=Z_(e,t,n,o,s);return{...o,_lazyPromises:y,shouldLoad:u,shouldRevalidateArgs:h,shouldCallHandler(k){return m=!0,h?typeof p=="boolean"?ws(o,{...h,defaultShouldRevalidate:p}):typeof k=="boolean"?ws(o,{...h,defaultShouldRevalidate:k}):ws(o,h):u},resolve(k){let{lazy:w,loader:x,middleware:C}=o.route,S=m||u||k&&!Qt(n.method)&&(w||x),D=C&&C.length>0&&!x&&!w;return S&&(Qt(n.method)||!D)?IC({request:n,unstable_pattern:r,match:o,lazyHandlerPromise:y?.handler,lazyRoutePromise:y?.route,handlerOverride:k,scopedContext:c}):Promise.resolve({type:"data",result:void 0})}}}function lo(e,t,n,r,o,s,c,u=null){return r.map(h=>h.route.id!==o.route.id?{...h,shouldLoad:!1,shouldRevalidateArgs:u,shouldCallHandler:()=>!1,_lazyPromises:Z_(e,t,n,h,s),resolve:()=>Promise.resolve({type:"data",result:void 0})}:ap(e,t,n,Hs(r),h,s,c,!0,u))}async function DC(e,t,n,r,o,s){n.some(p=>p._lazyPromises?.middleware)&&await Promise.all(n.map(p=>p._lazyPromises?.middleware));let c={request:t,unstable_pattern:Hs(n),params:n[0].params,context:o,matches:n},h=await e({...c,fetcherKey:r,runClientMiddleware:p=>{let m=c;return q_(m,()=>p({...m,fetcherKey:r,runClientMiddleware:()=>{throw new Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))}});try{await Promise.all(n.flatMap(p=>[p._lazyPromises?.handler,p._lazyPromises?.route]))}catch{}return h}async function IC({request:e,unstable_pattern:t,match:n,lazyHandlerPromise:r,lazyRoutePromise:o,handlerOverride:s,scopedContext:c}){let u,h,p=Qt(e.method),m=p?"action":"loader",y=k=>{let w,x=new Promise((D,L)=>w=L);h=()=>w(),e.signal.addEventListener("abort",h);let C=D=>typeof k!="function"?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${m}" [routeId: ${n.route.id}]`)):k({request:e,unstable_pattern:t,params:n.params,context:c},...D!==void 0?[D]:[]),S=(async()=>{try{return{type:"data",result:await(s?s(L=>C(L)):C())}}catch(D){return{type:"error",result:D}}})();return Promise.race([S,x])};try{let k=p?n.route.action:n.route.loader;if(r||o)if(k){let w,[x]=await Promise.all([y(k).catch(C=>{w=C}),r,o]);if(w!==void 0)throw w;u=x}else{await r;let w=p?n.route.action:n.route.loader;if(w)[u]=await Promise.all([y(w),o]);else if(m==="action"){let x=new URL(e.url),C=x.pathname+x.search;throw Mn(405,{method:e.method,pathname:C,routeId:n.route.id})}else return{type:"data",result:void 0}}else if(k)u=await y(k);else{let w=new URL(e.url),x=w.pathname+w.search;throw Mn(404,{pathname:x})}}catch(k){return{type:"error",result:k}}finally{h&&e.signal.removeEventListener("abort",h)}return u}async function MC(e){let t=e.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}async function NC(e){let{result:t,type:n}=e;if(tf(t)){let r;try{r=await MC(t)}catch(o){return{type:"error",error:o}}return n==="error"?{type:"error",error:new zs(t.status,t.statusText,r),statusCode:t.status,headers:t.headers}:{type:"data",data:r,statusCode:t.status,headers:t.headers}}return n==="error"?dv(t)?t.data instanceof Error?{type:"error",error:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"error",error:BC(t),statusCode:Ms(t)?t.status:void 0,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"error",error:t,statusCode:Ms(t)?t.status:void 0}:dv(t)?{type:"data",data:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"data",data:t}}function OC(e,t,n,r,o){let s=e.headers.get("Location");if(Xe(s,"Redirects returned/thrown from loaders/actions must have a Location header"),!Qp(s)){let c=r.slice(0,r.findIndex(u=>u.route.id===n)+1);s=np(new URL(t.url),c,o,s),e.headers.set("Location",s)}return e}function ov(e,t,n,r){let o=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];if(Qp(e)){let s=e,c=s.startsWith("//")?new URL(t.protocol+s):new URL(s);if(o.includes(c.protocol))throw new Error("Invalid redirect location");let u=Un(c.pathname,n)!=null;if(c.origin===t.origin&&u)return c.pathname+c.search+c.hash}try{let s=r.createURL(e);if(o.includes(s.protocol))throw new Error("Invalid redirect location")}catch{}return e}function eo(e,t,n,r){let o=e.createURL(X_(t)).toString(),s={signal:n};if(r&&Qt(r.formMethod)){let{formMethod:c,formEncType:u}=r;s.method=c.toUpperCase(),u==="application/json"?(s.headers=new Headers({"Content-Type":u}),s.body=JSON.stringify(r.json)):u==="text/plain"?s.body=r.text:u==="application/x-www-form-urlencoded"&&r.formData?s.body=rp(r.formData):s.body=r.formData}return new Request(o,s)}function rp(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function sv(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function jC(e,t,n,r=!1,o=!1){let s={},c=null,u,h=!1,p={},m=n&&Pn(n[1])?n[1].error:void 0;return e.forEach(y=>{if(!(y.route.id in t))return;let k=y.route.id,w=t[k];if(Xe(!ni(w),"Cannot handle redirect results in processLoaderData"),Pn(w)){let x=w.error;if(m!==void 0&&(x=m,m=void 0),c=c||{},o)c[k]=x;else{let C=Er(e,k);c[C.route.id]==null&&(c[C.route.id]=x)}r||(s[k]=$_),h||(h=!0,u=Ms(w.error)?w.error.status:500),w.headers&&(p[k]=w.headers)}else s[k]=w.data,w.statusCode&&w.statusCode!==200&&!h&&(u=w.statusCode),w.headers&&(p[k]=w.headers)}),m!==void 0&&n&&(c={[n[0]]:m},n[2]&&(s[n[2]]=void 0)),{loaderData:s,errors:c,statusCode:u||200,loaderHeaders:p}}function lv(e,t,n,r,o,s){let{loaderData:c,errors:u}=jC(t,n,r);return o.filter(h=>!h.matches||h.matches.some(p=>p.shouldLoad)).forEach(h=>{let{key:p,match:m,controller:y}=h;if(y&&y.signal.aborted)return;let k=s[p];if(Xe(k,"Did not find corresponding fetcher result"),Pn(k)){let w=Er(e.matches,m?.route.id);u&&u[w.route.id]||(u={...u,[w.route.id]:k.error}),e.fetchers.delete(p)}else if(ni(k))Xe(!1,"Unhandled fetcher revalidation redirect");else{let w=Va(k.data);e.fetchers.set(p,w)}}),{loaderData:c,errors:u}}function cv(e,t,n,r){let o=Object.entries(t).filter(([,s])=>s!==$_).reduce((s,[c,u])=>(s[c]=u,s),{});for(let s of n){let c=s.route.id;if(!t.hasOwnProperty(c)&&e.hasOwnProperty(c)&&s.route.loader&&(o[c]=e[c]),r&&r.hasOwnProperty(c))break}return o}function uv(e){return e?Pn(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function Er(e,t){return(t?e.slice(0,e.findIndex(r=>r.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function dc(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function Mn(e,{pathname:t,routeId:n,method:r,type:o,message:s}={}){let c="Unknown Server Error",u="Unknown @remix-run/router error";return e===400?(c="Bad Request",r&&t&&n?u=`You made a ${r} request to "${t}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:o==="invalid-body"&&(u="Unable to encode submission body")):e===403?(c="Forbidden",u=`Route "${n}" does not match URL "${t}"`):e===404?(c="Not Found",u=`No route matches URL "${t}"`):e===405&&(c="Method Not Allowed",r&&t&&n?u=`You made a ${r.toUpperCase()} request to "${t}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:r&&(u=`Invalid request method "${r.toUpperCase()}"`)),new zs(e||500,c,new Error(u),!0)}function hc(e){let t=Object.entries(e);for(let n=t.length-1;n>=0;n--){let[r,o]=t[n];if(ni(o))return{key:r,result:o}}}function X_(e){let t=typeof e=="string"?Ga(e):e;return ka({...t,hash:""})}function UC(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function BC(e){return new zs(e.init?.status??500,e.init?.statusText??"Internal Server Error",e.data)}function FC(e){return e!=null&&typeof e=="object"&&Object.entries(e).every(([t,n])=>typeof t=="string"&&VC(n))}function VC(e){return e!=null&&typeof e=="object"&&"type"in e&&"result"in e&&(e.type==="data"||e.type==="error")}function zC(e){return tf(e.result)&&z_.has(e.result.status)}function Pn(e){return e.type==="error"}function ni(e){return(e&&e.type)==="redirect"}function dv(e){return typeof e=="object"&&e!=null&&"type"in e&&"data"in e&&"init"in e&&e.type==="DataWithResponseInit"}function tf(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function HC(e){return z_.has(e)}function $C(e){return tf(e)&&HC(e.status)&&e.headers.has("Location")}function WC(e){return bC.has(e.toUpperCase())}function Qt(e){return kC.has(e.toUpperCase())}function nf(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function Tc(e,t){let n=typeof t=="string"?Ga(t).search:t.search;if(e[e.length-1].route.index&&nf(n||""))return e[e.length-1];let r=j_(e);return r[r.length-1]}function hv(e){let{formMethod:t,formAction:n,formEncType:r,text:o,formData:s,json:c}=e;if(!(!t||!n||!r)){if(o!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:o};if(s!=null)return{formMethod:t,formAction:n,formEncType:r,formData:s,json:void 0,text:void 0};if(c!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:c,text:void 0}}}function Ph(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function GC(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function hs(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function KC(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Va(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function qC(e,t){try{let n=e.sessionStorage.getItem(H_);if(n){let r=JSON.parse(n);for(let[o,s]of Object.entries(r||{}))s&&Array.isArray(s)&&t.set(o,new Set(s||[]))}}catch{}}function YC(e,t){if(t.size>0){let n={};for(let[r,o]of t)n[r]=[...o];try{e.sessionStorage.setItem(H_,JSON.stringify(n))}catch(r){Et(!1,`Failed to save applied view transitions in sessionStorage (${r}).`)}}}function pv(){let e,t,n=new Promise((r,o)=>{e=async s=>{r(s);try{await n}catch{}},t=async s=>{o(s);try{await n}catch{}}});return{promise:n,resolve:e,reject:t}}var fi=b.createContext(null);fi.displayName="DataRouter";var $s=b.createContext(null);$s.displayName="DataRouterState";var Q_=b.createContext(!1);function ZC(){return b.useContext(Q_)}var af=b.createContext({isTransitioning:!1});af.displayName="ViewTransition";var J_=b.createContext(new Map);J_.displayName="Fetchers";var XC=b.createContext(null);XC.displayName="Await";var Bn=b.createContext(null);Bn.displayName="Navigation";var bu=b.createContext(null);bu.displayName="Location";var Ka=b.createContext({outlet:null,matches:[],isDataRoute:!1});Ka.displayName="Route";var rf=b.createContext(null);rf.displayName="RouteError";var eb="REACT_ROUTER_ERROR",QC="REDIRECT",JC="ROUTE_ERROR_RESPONSE";function e1(e){if(e.startsWith(`${eb}:${QC}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.location=="string"&&typeof t.reloadDocument=="boolean"&&typeof t.replace=="boolean")return t}catch{}}function t1(e){if(e.startsWith(`${eb}:${JC}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string")return new zs(t.status,t.statusText,t.data)}catch{}}function n1(e,{relative:t}={}){Xe(Ws(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:r}=b.useContext(Bn),{hash:o,pathname:s,search:c}=Gs(e,{relative:t}),u=s;return n!=="/"&&(u=s==="/"?n:ia([n,s])),r.createHref({pathname:u,search:c,hash:o})}function Ws(){return b.useContext(bu)!=null}function Fn(){return Xe(Ws(),"useLocation() may be used only in the context of a <Router> component."),b.useContext(bu).location}var tb="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function nb(e){b.useContext(Bn).static||b.useLayoutEffect(e)}function wu(){let{isDataRoute:e}=b.useContext(Ka);return e?m1():a1()}function a1(){Xe(Ws(),"useNavigate() may be used only in the context of a <Router> component.");let e=b.useContext(fi),{basename:t,navigator:n}=b.useContext(Bn),{matches:r}=b.useContext(Ka),{pathname:o}=Fn(),s=JSON.stringify(Jp(r)),c=b.useRef(!1);return nb(()=>{c.current=!0}),b.useCallback((h,p={})=>{if(Et(c.current,tb),!c.current)return;if(typeof h=="number"){n.go(h);return}let m=_u(h,JSON.parse(s),o,p.relative==="path");e==null&&t!=="/"&&(m.pathname=m.pathname==="/"?t:ia([t,m.pathname])),(p.replace?n.replace:n.push)(m,p.state,p)},[t,n,s,o,e])}b.createContext(null);function Gs(e,{relative:t}={}){let{matches:n}=b.useContext(Ka),{pathname:r}=Fn(),o=JSON.stringify(Jp(n));return b.useMemo(()=>_u(e,JSON.parse(o),r,t==="path"),[e,o,r,t])}function r1(e,t,n){Xe(Ws(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:r}=b.useContext(Bn),{matches:o}=b.useContext(Ka),s=o[o.length-1],c=s?s.params:{},u=s?s.pathname:"/",h=s?s.pathnameBase:"/",p=s&&s.route;{let S=p&&p.path||"";rb(u,!p||S.endsWith("*")||S.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${u}" (under <Route path="${S}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
11
|
-
|
|
12
|
-
Please change the parent <Route path="${S}"> to <Route path="${S==="/"?"*":`${S}/*`}">.`)}let m=Fn(),y;y=m;let k=y.pathname||"/",w=k;if(h!=="/"){let S=h.replace(/^\//,"").split("/");w="/"+k.replace(/^\//,"").split("/").slice(S.length).join("/")}let x=Tr(e,{pathname:w});return Et(p||x!=null,`No routes matched location "${y.pathname}${y.search}${y.hash}" `),Et(x==null||x[x.length-1].route.element!==void 0||x[x.length-1].route.Component!==void 0||x[x.length-1].route.lazy!==void 0,`Matched leaf route at location "${y.pathname}${y.search}${y.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`),c1(x&&x.map(S=>Object.assign({},S,{params:Object.assign({},c,S.params),pathname:ia([h,r.encodeLocation?r.encodeLocation(S.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:S.pathname]),pathnameBase:S.pathnameBase==="/"?h:ia([h,r.encodeLocation?r.encodeLocation(S.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:S.pathnameBase])})),o,n)}function i1(){let e=f1(),t=Ms(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:r},s={padding:"2px 4px",backgroundColor:r},c=null;return console.error("Error handled by React Router default ErrorBoundary:",e),c=b.createElement(b.Fragment,null,b.createElement("p",null,"💿 Hey developer 👋"),b.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",b.createElement("code",{style:s},"ErrorBoundary")," or"," ",b.createElement("code",{style:s},"errorElement")," prop on your route.")),b.createElement(b.Fragment,null,b.createElement("h2",null,"Unexpected Application Error!"),b.createElement("h3",{style:{fontStyle:"italic"}},t),n?b.createElement("pre",{style:o},n):null,c)}var o1=b.createElement(i1,null),ab=class extends b.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error("React Router caught the following error during render",e)}render(){let e=this.state.error;if(this.context&&typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){const n=t1(e.digest);n&&(e=n)}let t=e!==void 0?b.createElement(Ka.Provider,{value:this.props.routeContext},b.createElement(rf.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?b.createElement(s1,{error:e},t):t}};ab.contextType=Q_;var Sh=new WeakMap;function s1({children:e,error:t}){let{basename:n}=b.useContext(Bn);if(typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){let r=e1(t.digest);if(r){let o=Sh.get(t);if(o)throw o;let s=B_(r.location,n);if(U_&&!Sh.get(t))if(s.isExternal||r.reloadDocument)window.location.href=s.absoluteURL||s.to;else{const c=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(s.to,{replace:r.replace}));throw Sh.set(t,c),c}return b.createElement("meta",{httpEquiv:"refresh",content:`0;url=${s.absoluteURL||s.to}`})}}return e}function l1({routeContext:e,match:t,children:n}){let r=b.useContext(fi);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),b.createElement(Ka.Provider,{value:e},n)}function c1(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let o=e,s=r?.errors;if(s!=null){let m=o.findIndex(y=>y.route.id&&s?.[y.route.id]!==void 0);Xe(m>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),o=o.slice(0,Math.min(o.length,m+1))}let c=!1,u=-1;if(n&&r){c=r.renderFallback;for(let m=0;m<o.length;m++){let y=o[m];if((y.route.HydrateFallback||y.route.hydrateFallbackElement)&&(u=m),y.route.id){let{loaderData:k,errors:w}=r,x=y.route.loader&&!k.hasOwnProperty(y.route.id)&&(!w||w[y.route.id]===void 0);if(y.route.lazy||x){n.isStatic&&(c=!0),u>=0?o=o.slice(0,u+1):o=[o[0]];break}}}}let h=n?.onError,p=r&&h?(m,y)=>{h(m,{location:r.location,params:r.matches?.[0]?.params??{},unstable_pattern:Hs(r.matches),errorInfo:y})}:void 0;return o.reduceRight((m,y,k)=>{let w,x=!1,C=null,S=null;r&&(w=s&&y.route.id?s[y.route.id]:void 0,C=y.route.errorElement||o1,c&&(u<0&&k===0?(rb("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),x=!0,S=null):u===k&&(x=!0,S=y.route.hydrateFallbackElement||null)));let D=t.concat(o.slice(0,k+1)),L=()=>{let R;return w?R=C:x?R=S:y.route.Component?R=b.createElement(y.route.Component,null):y.route.element?R=y.route.element:R=m,b.createElement(l1,{match:y,routeContext:{outlet:m,matches:D,isDataRoute:r!=null},children:R})};return r&&(y.route.ErrorBoundary||y.route.errorElement||k===0)?b.createElement(ab,{location:r.location,revalidation:r.revalidation,component:C,error:w,children:L(),routeContext:{outlet:null,matches:D,isDataRoute:!0},onError:p}):L()},null)}function of(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function u1(e){let t=b.useContext(fi);return Xe(t,of(e)),t}function d1(e){let t=b.useContext($s);return Xe(t,of(e)),t}function h1(e){let t=b.useContext(Ka);return Xe(t,of(e)),t}function sf(e){let t=h1(e),n=t.matches[t.matches.length-1];return Xe(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function p1(){return sf("useRouteId")}function f1(){let e=b.useContext(rf),t=d1("useRouteError"),n=sf("useRouteError");return e!==void 0?e:t.errors?.[n]}function m1(){let{router:e}=u1("useNavigate"),t=sf("useNavigate"),n=b.useRef(!1);return nb(()=>{n.current=!0}),b.useCallback(async(o,s={})=>{Et(n.current,tb),n.current&&(typeof o=="number"?await e.navigate(o):await e.navigate(o,{fromRouteId:t,...s}))},[e,t])}var fv={};function rb(e,t,n){!t&&!fv[e]&&(fv[e]=!0,Et(!1,n))}var mv={};function gv(e,t){!e&&!mv[t]&&(mv[t]=!0,console.warn(t))}var g1="useOptimistic",yv=IS[g1],y1=()=>{};function v1(e){return yv?yv(e):[e,y1]}function k1(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&Et(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:b.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&Et(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:b.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&Et(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:b.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var _1=["HydrateFallback","hydrateFallbackElement"],b1=class{constructor(){this.status="pending",this.promise=new Promise((e,t)=>{this.resolve=n=>{this.status==="pending"&&(this.status="resolved",e(n))},this.reject=n=>{this.status==="pending"&&(this.status="rejected",t(n))}})}};function w1({router:e,flushSync:t,onError:n,unstable_useTransitions:r}){r=ZC()||r;let[s,c]=b.useState(e.state),[u,h]=v1(s),[p,m]=b.useState(),[y,k]=b.useState({isTransitioning:!1}),[w,x]=b.useState(),[C,S]=b.useState(),[D,L]=b.useState(),R=b.useRef(new Map),O=b.useCallback((P,{deletedFetchers:Y,newErrors:X,flushSync:ue,viewTransitionOpts:se})=>{X&&n&&Object.values(X).forEach(pe=>n(pe,{location:P.location,params:P.matches[0]?.params??{},unstable_pattern:Hs(P.matches)})),P.fetchers.forEach((pe,le)=>{pe.data!==void 0&&R.current.set(le,pe.data)}),Y.forEach(pe=>R.current.delete(pe)),gv(ue===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let Ae=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition=="function";if(gv(se==null||Ae,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!se||!Ae){t&&ue?t(()=>c(P)):r===!1?c(P):b.startTransition(()=>{r===!0&&h(pe=>vv(pe,P)),c(P)});return}if(t&&ue){t(()=>{C&&(w?.resolve(),C.skipTransition()),k({isTransitioning:!0,flushSync:!0,currentLocation:se.currentLocation,nextLocation:se.nextLocation})});let pe=e.window.document.startViewTransition(()=>{t(()=>c(P))});pe.finished.finally(()=>{t(()=>{x(void 0),S(void 0),m(void 0),k({isTransitioning:!1})})}),t(()=>S(pe));return}C?(w?.resolve(),C.skipTransition(),L({state:P,currentLocation:se.currentLocation,nextLocation:se.nextLocation})):(m(P),k({isTransitioning:!0,flushSync:!1,currentLocation:se.currentLocation,nextLocation:se.nextLocation}))},[e.window,t,C,w,r,h,n]);b.useLayoutEffect(()=>e.subscribe(O),[e,O]),b.useEffect(()=>{y.isTransitioning&&!y.flushSync&&x(new b1)},[y]),b.useEffect(()=>{if(w&&p&&e.window){let P=p,Y=w.promise,X=e.window.document.startViewTransition(async()=>{r===!1?c(P):b.startTransition(()=>{r===!0&&h(ue=>vv(ue,P)),c(P)}),await Y});X.finished.finally(()=>{x(void 0),S(void 0),m(void 0),k({isTransitioning:!1})}),S(X)}},[p,w,e.window,r,h]),b.useEffect(()=>{w&&p&&u.location.key===p.location.key&&w.resolve()},[w,C,u.location,p]),b.useEffect(()=>{!y.isTransitioning&&D&&(m(D.state),k({isTransitioning:!0,flushSync:!1,currentLocation:D.currentLocation,nextLocation:D.nextLocation}),L(void 0))},[y.isTransitioning,D]);let K=b.useMemo(()=>({createHref:e.createHref,encodeLocation:e.encodeLocation,go:P=>e.navigate(P),push:(P,Y,X)=>e.navigate(P,{state:Y,preventScrollReset:X?.preventScrollReset}),replace:(P,Y,X)=>e.navigate(P,{replace:!0,state:Y,preventScrollReset:X?.preventScrollReset})}),[e]),W=e.basename||"/",z=b.useMemo(()=>({router:e,navigator:K,static:!1,basename:W,onError:n}),[e,K,W,n]);return b.createElement(b.Fragment,null,b.createElement(fi.Provider,{value:z},b.createElement($s.Provider,{value:u},b.createElement(J_.Provider,{value:R.current},b.createElement(af.Provider,{value:y},b.createElement(S1,{basename:W,location:u.location,navigationType:u.historyAction,navigator:K,unstable_useTransitions:r},b.createElement(x1,{routes:e.routes,future:e.future,state:u,isStatic:!1,onError:n})))))),null)}function vv(e,t){return{...e,navigation:t.navigation.state!=="idle"?t.navigation:e.navigation,revalidation:t.revalidation!=="idle"?t.revalidation:e.revalidation,actionData:t.navigation.state!=="submitting"?t.actionData:e.actionData,fetchers:t.fetchers}}var x1=b.memo(P1);function P1({routes:e,future:t,state:n,isStatic:r,onError:o}){return r1(e,void 0,{state:n,isStatic:r,onError:o})}function S1({basename:e="/",children:t=null,location:n,navigationType:r="POP",navigator:o,static:s=!1,unstable_useTransitions:c}){Xe(!Ws(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let u=e.replace(/^\/*/,"/"),h=b.useMemo(()=>({basename:u,navigator:o,static:s,unstable_useTransitions:c,future:{}}),[u,o,s,c]);typeof n=="string"&&(n=Ga(n));let{pathname:p="/",search:m="",hash:y="",state:k=null,key:w="default",unstable_mask:x}=n,C=b.useMemo(()=>{let S=Un(p,u);return S==null?null:{location:{pathname:S,search:m,hash:y,state:k,key:w,unstable_mask:x},navigationType:r}},[u,p,m,y,k,w,r,x]);return Et(C!=null,`<Router basename="${u}"> is not able to match the URL "${p}${m}${y}" because it does not start with the basename, so the <Router> won't render anything.`),C==null?null:b.createElement(Bn.Provider,{value:h},b.createElement(bu.Provider,{children:t,value:C}))}var Ec="get",Ac="application/x-www-form-urlencoded";function xu(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function C1(e){return xu(e)&&e.tagName.toLowerCase()==="button"}function T1(e){return xu(e)&&e.tagName.toLowerCase()==="form"}function E1(e){return xu(e)&&e.tagName.toLowerCase()==="input"}function A1(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function R1(e,t){return e.button===0&&(!t||t==="_self")&&!A1(e)}function ip(e=""){return new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(o=>[n,o]):[[n,r]])},[]))}function L1(e,t){let n=ip(e);return t&&t.forEach((r,o)=>{n.has(o)||t.getAll(o).forEach(s=>{n.append(o,s)})}),n}var pc=null;function D1(){if(pc===null)try{new FormData(document.createElement("form"),0),pc=!1}catch{pc=!0}return pc}var I1=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Ch(e){return e!=null&&!I1.has(e)?(Et(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Ac}"`),null):e}function M1(e,t){let n,r,o,s,c;if(T1(e)){let u=e.getAttribute("action");r=u?Un(u,t):null,n=e.getAttribute("method")||Ec,o=Ch(e.getAttribute("enctype"))||Ac,s=new FormData(e)}else if(C1(e)||E1(e)&&(e.type==="submit"||e.type==="image")){let u=e.form;if(u==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let h=e.getAttribute("formaction")||u.getAttribute("action");if(r=h?Un(h,t):null,n=e.getAttribute("formmethod")||u.getAttribute("method")||Ec,o=Ch(e.getAttribute("formenctype"))||Ch(u.getAttribute("enctype"))||Ac,s=new FormData(u,e),!D1()){let{name:p,type:m,value:y}=e;if(m==="image"){let k=p?`${p}.`:"";s.append(`${k}x`,"0"),s.append(`${k}y`,"0")}else p&&s.append(p,y)}}else{if(xu(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=Ec,r=null,o=Ac,c=e}return s&&o==="text/plain"&&(c=s,s=void 0),{action:r,method:n.toLowerCase(),encType:o,formData:s,body:c}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function lf(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function N1(e,t,n,r){let o=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return n?o.pathname.endsWith("/")?o.pathname=`${o.pathname}_.${r}`:o.pathname=`${o.pathname}.${r}`:o.pathname==="/"?o.pathname=`_root.${r}`:t&&Un(o.pathname,t)==="/"?o.pathname=`${t.replace(/\/$/,"")}/_root.${r}`:o.pathname=`${o.pathname.replace(/\/$/,"")}.${r}`,o}async function O1(e,t){if(e.id in t)return t[e.id];try{let n=await import(e.module);return t[e.id]=n,n}catch(n){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function j1(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function U1(e,t,n){let r=await Promise.all(e.map(async o=>{let s=t.routes[o.route.id];if(s){let c=await O1(s,n);return c.links?c.links():[]}return[]}));return z1(r.flat(1).filter(j1).filter(o=>o.rel==="stylesheet"||o.rel==="preload").map(o=>o.rel==="stylesheet"?{...o,rel:"prefetch",as:"style"}:{...o,rel:"prefetch"}))}function kv(e,t,n,r,o,s){let c=(h,p)=>n[p]?h.route.id!==n[p].route.id:!0,u=(h,p)=>n[p].pathname!==h.pathname||n[p].route.path?.endsWith("*")&&n[p].params["*"]!==h.params["*"];return s==="assets"?t.filter((h,p)=>c(h,p)||u(h,p)):s==="data"?t.filter((h,p)=>{let m=r.routes[h.route.id];if(!m||!m.hasLoader)return!1;if(c(h,p)||u(h,p))return!0;if(h.route.shouldRevalidate){let y=h.route.shouldRevalidate({currentUrl:new URL(o.pathname+o.search+o.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:h.params,defaultShouldRevalidate:!0});if(typeof y=="boolean")return y}return!0}):[]}function B1(e,t,{includeHydrateFallback:n}={}){return F1(e.map(r=>{let o=t.routes[r.route.id];if(!o)return[];let s=[o.module];return o.clientActionModule&&(s=s.concat(o.clientActionModule)),o.clientLoaderModule&&(s=s.concat(o.clientLoaderModule)),n&&o.hydrateFallbackModule&&(s=s.concat(o.hydrateFallbackModule)),o.imports&&(s=s.concat(o.imports)),s}).flat(1))}function F1(e){return[...new Set(e)]}function V1(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function z1(e,t){let n=new Set;return new Set(t),e.reduce((r,o)=>{let s=JSON.stringify(V1(o));return n.has(s)||(n.add(s),r.push({key:s,link:o})),r},[])}function ib(){let e=b.useContext(fi);return lf(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function H1(){let e=b.useContext($s);return lf(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var cf=b.createContext(void 0);cf.displayName="FrameworkContext";function ob(){let e=b.useContext(cf);return lf(e,"You must render this element inside a <HydratedRouter> element"),e}function $1(e,t){let n=b.useContext(cf),[r,o]=b.useState(!1),[s,c]=b.useState(!1),{onFocus:u,onBlur:h,onMouseEnter:p,onMouseLeave:m,onTouchStart:y}=t,k=b.useRef(null);b.useEffect(()=>{if(e==="render"&&c(!0),e==="viewport"){let C=D=>{D.forEach(L=>{c(L.isIntersecting)})},S=new IntersectionObserver(C,{threshold:.5});return k.current&&S.observe(k.current),()=>{S.disconnect()}}},[e]),b.useEffect(()=>{if(r){let C=setTimeout(()=>{c(!0)},100);return()=>{clearTimeout(C)}}},[r]);let w=()=>{o(!0)},x=()=>{o(!1),c(!1)};return n?e!=="intent"?[s,k,{}]:[s,k,{onFocus:ps(u,w),onBlur:ps(h,x),onMouseEnter:ps(p,w),onMouseLeave:ps(m,x),onTouchStart:ps(y,w)}]:[!1,k,{}]}function ps(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function W1({page:e,...t}){let{router:n}=ib(),r=b.useMemo(()=>Tr(n.routes,e,n.basename),[n.routes,e,n.basename]);return r?b.createElement(K1,{page:e,matches:r,...t}):null}function G1(e){let{manifest:t,routeModules:n}=ob(),[r,o]=b.useState([]);return b.useEffect(()=>{let s=!1;return U1(e,t,n).then(c=>{s||o(c)}),()=>{s=!0}},[e,t,n]),r}function K1({page:e,matches:t,...n}){let r=Fn(),{future:o,manifest:s,routeModules:c}=ob(),{basename:u}=ib(),{loaderData:h,matches:p}=H1(),m=b.useMemo(()=>kv(e,t,p,s,r,"data"),[e,t,p,s,r]),y=b.useMemo(()=>kv(e,t,p,s,r,"assets"),[e,t,p,s,r]),k=b.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let C=new Set,S=!1;if(t.forEach(L=>{let R=s.routes[L.route.id];!R||!R.hasLoader||(!m.some(O=>O.route.id===L.route.id)&&L.route.id in h&&c[L.route.id]?.shouldRevalidate||R.hasClientLoader?S=!0:C.add(L.route.id))}),C.size===0)return[];let D=N1(e,u,o.unstable_trailingSlashAwareDataRequests,"data");return S&&C.size>0&&D.searchParams.set("_routes",t.filter(L=>C.has(L.route.id)).map(L=>L.route.id).join(",")),[D.pathname+D.search]},[u,o.unstable_trailingSlashAwareDataRequests,h,r,s,m,t,e,c]),w=b.useMemo(()=>B1(y,s),[y,s]),x=G1(y);return b.createElement(b.Fragment,null,k.map(C=>b.createElement("link",{key:C,rel:"prefetch",as:"fetch",href:C,...n})),w.map(C=>b.createElement("link",{key:C,rel:"modulepreload",href:C,...n})),x.map(({key:C,link:S})=>b.createElement("link",{key:C,nonce:n.nonce,...S,crossOrigin:S.crossOrigin??n.crossOrigin})))}function q1(...e){return t=>{e.forEach(n=>{typeof n=="function"?n(t):n!=null&&(n.current=t)})}}var Y1=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{Y1&&(window.__reactRouterVersion="7.13.1")}catch{}function Z1(e,t){return SC({basename:t?.basename,getContext:t?.getContext,future:t?.future,history:VS({window:t?.window}),hydrationData:X1(),routes:e,mapRouteProperties:k1,hydrationRouteProperties:_1,dataStrategy:t?.dataStrategy,patchRoutesOnNavigation:t?.patchRoutesOnNavigation,window:t?.window,unstable_instrumentations:t?.unstable_instrumentations}).initialize()}function X1(){let e=window?.__staticRouterHydrationData;return e&&e.errors&&(e={...e,errors:Q1(e.errors)}),e}function Q1(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,o]of t)if(o&&o.__type==="RouteErrorResponse")n[r]=new zs(o.status,o.statusText,o.data,o.internal===!0);else if(o&&o.__type==="Error"){if(o.__subType){let s=window[o.__subType];if(typeof s=="function")try{let c=new s(o.message);c.stack="",n[r]=c}catch{}}if(n[r]==null){let s=new Error(o.message);s.stack="",n[r]=s}}else n[r]=o;return n}var sb=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Pu=b.forwardRef(function({onClick:t,discover:n="render",prefetch:r="none",relative:o,reloadDocument:s,replace:c,unstable_mask:u,state:h,target:p,to:m,preventScrollReset:y,viewTransition:k,unstable_defaultShouldRevalidate:w,...x},C){let{basename:S,navigator:D,unstable_useTransitions:L}=b.useContext(Bn),R=typeof m=="string"&&sb.test(m),O=B_(m,S);m=O.to;let K=n1(m,{relative:o}),W=Fn(),z=null;if(u){let le=_u(u,[],W.unstable_mask?W.unstable_mask.pathname:"/",!0);S!=="/"&&(le.pathname=le.pathname==="/"?S:ia([S,le.pathname])),z=D.createHref(le)}let[P,Y,X]=$1(r,x),ue=nT(m,{replace:c,unstable_mask:u,state:h,target:p,preventScrollReset:y,relative:o,viewTransition:k,unstable_defaultShouldRevalidate:w,unstable_useTransitions:L});function se(le){t&&t(le),le.defaultPrevented||ue(le)}let Ae=!(O.isExternal||s),pe=b.createElement("a",{...x,...X,href:(Ae?z:void 0)||O.absoluteURL||K,onClick:Ae?se:t,ref:q1(C,Y),target:p,"data-discover":!R&&n==="render"?"true":void 0});return P&&!R?b.createElement(b.Fragment,null,pe,b.createElement(W1,{page:K})):pe});Pu.displayName="Link";var J1=b.forwardRef(function({"aria-current":t="page",caseSensitive:n=!1,className:r="",end:o=!1,style:s,to:c,viewTransition:u,children:h,...p},m){let y=Gs(c,{relative:p.relative}),k=Fn(),w=b.useContext($s),{navigator:x,basename:C}=b.useContext(Bn),S=w!=null&&sT(y)&&u===!0,D=x.encodeLocation?x.encodeLocation(y).pathname:y.pathname,L=k.pathname,R=w&&w.navigation&&w.navigation.location?w.navigation.location.pathname:null;n||(L=L.toLowerCase(),R=R?R.toLowerCase():null,D=D.toLowerCase()),R&&C&&(R=Un(R,C)||R);const O=D!=="/"&&D.endsWith("/")?D.length-1:D.length;let K=L===D||!o&&L.startsWith(D)&&L.charAt(O)==="/",W=R!=null&&(R===D||!o&&R.startsWith(D)&&R.charAt(D.length)==="/"),z={isActive:K,isPending:W,isTransitioning:S},P=K?t:void 0,Y;typeof r=="function"?Y=r(z):Y=[r,K?"active":null,W?"pending":null,S?"transitioning":null].filter(Boolean).join(" ");let X=typeof s=="function"?s(z):s;return b.createElement(Pu,{...p,"aria-current":P,className:Y,ref:m,style:X,to:c,viewTransition:u},typeof h=="function"?h(z):h)});J1.displayName="NavLink";var eT=b.forwardRef(({discover:e="render",fetcherKey:t,navigate:n,reloadDocument:r,replace:o,state:s,method:c=Ec,action:u,onSubmit:h,relative:p,preventScrollReset:m,viewTransition:y,unstable_defaultShouldRevalidate:k,...w},x)=>{let{unstable_useTransitions:C}=b.useContext(Bn),S=iT(),D=oT(u,{relative:p}),L=c.toLowerCase()==="get"?"get":"post",R=typeof u=="string"&&sb.test(u),O=K=>{if(h&&h(K),K.defaultPrevented)return;K.preventDefault();let W=K.nativeEvent.submitter,z=W?.getAttribute("formmethod")||c,P=()=>S(W||K.currentTarget,{fetcherKey:t,method:z,navigate:n,replace:o,state:s,relative:p,preventScrollReset:m,viewTransition:y,unstable_defaultShouldRevalidate:k});C&&n!==!1?b.startTransition(()=>P()):P()};return b.createElement("form",{ref:x,method:L,action:D,onSubmit:r?h:O,...w,"data-discover":!R&&e==="render"?"true":void 0})});eT.displayName="Form";function tT(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function lb(e){let t=b.useContext(fi);return Xe(t,tT(e)),t}function nT(e,{target:t,replace:n,unstable_mask:r,state:o,preventScrollReset:s,relative:c,viewTransition:u,unstable_defaultShouldRevalidate:h,unstable_useTransitions:p}={}){let m=wu(),y=Fn(),k=Gs(e,{relative:c});return b.useCallback(w=>{if(R1(w,t)){w.preventDefault();let x=n!==void 0?n:ka(y)===ka(k),C=()=>m(e,{replace:x,unstable_mask:r,state:o,preventScrollReset:s,relative:c,viewTransition:u,unstable_defaultShouldRevalidate:h});p?b.startTransition(()=>C()):C()}},[y,m,k,n,r,o,t,e,s,c,u,h,p])}function kU(e){Et(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=b.useRef(ip(e)),n=b.useRef(!1),r=Fn(),o=b.useMemo(()=>L1(r.search,n.current?null:t.current),[r.search]),s=wu(),c=b.useCallback((u,h)=>{const p=ip(typeof u=="function"?u(new URLSearchParams(o)):u);n.current=!0,s("?"+p,h)},[s,o]);return[o,c]}var aT=0,rT=()=>`__${String(++aT)}__`;function iT(){let{router:e}=lb("useSubmit"),{basename:t}=b.useContext(Bn),n=p1(),r=e.fetch,o=e.navigate;return b.useCallback(async(s,c={})=>{let{action:u,method:h,encType:p,formData:m,body:y}=M1(s,t);if(c.navigate===!1){let k=c.fetcherKey||rT();await r(k,n,c.action||u,{unstable_defaultShouldRevalidate:c.unstable_defaultShouldRevalidate,preventScrollReset:c.preventScrollReset,formData:m,body:y,formMethod:c.method||h,formEncType:c.encType||p,flushSync:c.flushSync})}else await o(c.action||u,{unstable_defaultShouldRevalidate:c.unstable_defaultShouldRevalidate,preventScrollReset:c.preventScrollReset,formData:m,body:y,formMethod:c.method||h,formEncType:c.encType||p,replace:c.replace,state:c.state,fromRouteId:n,flushSync:c.flushSync,viewTransition:c.viewTransition})},[r,o,t,n])}function oT(e,{relative:t}={}){let{basename:n}=b.useContext(Bn),r=b.useContext(Ka);Xe(r,"useFormAction must be used inside a RouteContext");let[o]=r.matches.slice(-1),s={...Gs(e||".",{relative:t})},c=Fn();if(e==null){s.search=c.search;let u=new URLSearchParams(s.search),h=u.getAll("index");if(h.some(m=>m==="")){u.delete("index"),h.filter(y=>y).forEach(y=>u.append("index",y));let m=u.toString();s.search=m?`?${m}`:""}}return(!e||e===".")&&o.route.index&&(s.search=s.search?s.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(s.pathname=s.pathname==="/"?n:ia([n,s.pathname])),ka(s)}function sT(e,{relative:t}={}){let n=b.useContext(af);Xe(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=lb("useViewTransitionState"),o=Gs(e,{relative:t});if(!n.isTransitioning)return!1;let s=Un(n.currentLocation.pathname,r)||n.currentLocation.pathname,c=Un(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Gc(o.pathname,c)!=null||Gc(o.pathname,s)!=null}var lT=L_();function cT(e){return b.createElement(w1,{flushSync:lT.flushSync,...e})}var it;(function(e){e.assertEqual=o=>{};function t(o){}e.assertIs=t;function n(o){throw new Error}e.assertNever=n,e.arrayToEnum=o=>{const s={};for(const c of o)s[c]=c;return s},e.getValidEnumValues=o=>{const s=e.objectKeys(o).filter(u=>typeof o[o[u]]!="number"),c={};for(const u of s)c[u]=o[u];return e.objectValues(c)},e.objectValues=o=>e.objectKeys(o).map(function(s){return o[s]}),e.objectKeys=typeof Object.keys=="function"?o=>Object.keys(o):o=>{const s=[];for(const c in o)Object.prototype.hasOwnProperty.call(o,c)&&s.push(c);return s},e.find=(o,s)=>{for(const c of o)if(s(c))return c},e.isInteger=typeof Number.isInteger=="function"?o=>Number.isInteger(o):o=>typeof o=="number"&&Number.isFinite(o)&&Math.floor(o)===o;function r(o,s=" | "){return o.map(c=>typeof c=="string"?`'${c}'`:c).join(s)}e.joinValues=r,e.jsonStringifyReplacer=(o,s)=>typeof s=="bigint"?s.toString():s})(it||(it={}));var _v;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(_v||(_v={}));const ye=it.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Cr=e=>{switch(typeof e){case"undefined":return ye.undefined;case"string":return ye.string;case"number":return Number.isNaN(e)?ye.nan:ye.number;case"boolean":return ye.boolean;case"function":return ye.function;case"bigint":return ye.bigint;case"symbol":return ye.symbol;case"object":return Array.isArray(e)?ye.array:e===null?ye.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?ye.promise:typeof Map<"u"&&e instanceof Map?ye.map:typeof Set<"u"&&e instanceof Set?ye.set:typeof Date<"u"&&e instanceof Date?ye.date:ye.object;default:return ye.unknown}},ae=it.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class $a extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=t}format(t){const n=t||function(s){return s.message},r={_errors:[]},o=s=>{for(const c of s.issues)if(c.code==="invalid_union")c.unionErrors.map(o);else if(c.code==="invalid_return_type")o(c.returnTypeError);else if(c.code==="invalid_arguments")o(c.argumentsError);else if(c.path.length===0)r._errors.push(n(c));else{let u=r,h=0;for(;h<c.path.length;){const p=c.path[h];h===c.path.length-1?(u[p]=u[p]||{_errors:[]},u[p]._errors.push(n(c))):u[p]=u[p]||{_errors:[]},u=u[p],h++}}};return o(this),r}static assert(t){if(!(t instanceof $a))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,it.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=n=>n.message){const n={},r=[];for(const o of this.issues)if(o.path.length>0){const s=o.path[0];n[s]=n[s]||[],n[s].push(t(o))}else r.push(t(o));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}}$a.create=e=>new $a(e);const op=(e,t)=>{let n;switch(e.code){case ae.invalid_type:e.received===ye.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case ae.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,it.jsonStringifyReplacer)}`;break;case ae.unrecognized_keys:n=`Unrecognized key(s) in object: ${it.joinValues(e.keys,", ")}`;break;case ae.invalid_union:n="Invalid input";break;case ae.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${it.joinValues(e.options)}`;break;case ae.invalid_enum_value:n=`Invalid enum value. Expected ${it.joinValues(e.options)}, received '${e.received}'`;break;case ae.invalid_arguments:n="Invalid function arguments";break;case ae.invalid_return_type:n="Invalid function return type";break;case ae.invalid_date:n="Invalid date";break;case ae.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:it.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case ae.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case ae.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case ae.custom:n="Invalid input";break;case ae.invalid_intersection_types:n="Intersection results could not be merged";break;case ae.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case ae.not_finite:n="Number must be finite";break;default:n=t.defaultError,it.assertNever(e)}return{message:n}};let uT=op;function dT(){return uT}const hT=e=>{const{data:t,path:n,errorMaps:r,issueData:o}=e,s=[...n,...o.path||[]],c={...o,path:s};if(o.message!==void 0)return{...o,path:s,message:o.message};let u="";const h=r.filter(p=>!!p).slice().reverse();for(const p of h)u=p(c,{data:t,defaultError:u}).message;return{...o,path:s,message:u}};function ce(e,t){const n=dT(),r=hT({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===op?void 0:op].filter(o=>!!o)});e.common.issues.push(r)}class un{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){const r=[];for(const o of n){if(o.status==="aborted")return ze;o.status==="dirty"&&t.dirty(),r.push(o.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){const r=[];for(const o of n){const s=await o.key,c=await o.value;r.push({key:s,value:c})}return un.mergeObjectSync(t,r)}static mergeObjectSync(t,n){const r={};for(const o of n){const{key:s,value:c}=o;if(s.status==="aborted"||c.status==="aborted")return ze;s.status==="dirty"&&t.dirty(),c.status==="dirty"&&t.dirty(),s.value!=="__proto__"&&(typeof c.value<"u"||o.alwaysSet)&&(r[s.value]=c.value)}return{status:t.value,value:r}}}const ze=Object.freeze({status:"aborted"}),ks=e=>({status:"dirty",value:e}),Vn=e=>({status:"valid",value:e}),bv=e=>e.status==="aborted",wv=e=>e.status==="dirty",uo=e=>e.status==="valid",Kc=e=>typeof Promise<"u"&&e instanceof Promise;var Ce;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t?.message})(Ce||(Ce={}));class _a{constructor(t,n,r,o){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=o}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const xv=(e,t)=>{if(uo(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new $a(e.common.issues);return this._error=n,this._error}}};function Ge(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:o}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:o}:{errorMap:(c,u)=>{const{message:h}=e;return c.code==="invalid_enum_value"?{message:h??u.defaultError}:typeof u.data>"u"?{message:h??r??u.defaultError}:c.code!=="invalid_type"?{message:u.defaultError}:{message:h??n??u.defaultError}},description:o}}class Je{get description(){return this._def.description}_getType(t){return Cr(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:Cr(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new un,ctx:{common:t.parent.common,data:t.data,parsedType:Cr(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(Kc(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){const n=this._parse(t);return Promise.resolve(n)}parse(t,n){const r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){const r={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Cr(t)},o=this._parseSync({data:t,path:r.path,parent:r});return xv(r,o)}"~validate"(t){const n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Cr(t)};if(!this["~standard"].async)try{const r=this._parseSync({data:t,path:[],parent:n});return uo(r)?{value:r.value}:{issues:n.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:n}).then(r=>uo(r)?{value:r.value}:{issues:n.common.issues})}async parseAsync(t,n){const r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){const r={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Cr(t)},o=this._parse({data:t,path:r.path,parent:r}),s=await(Kc(o)?o:Promise.resolve(o));return xv(r,s)}refine(t,n){const r=o=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(o):n;return this._refinement((o,s)=>{const c=t(o),u=()=>s.addIssue({code:ae.custom,...r(o)});return typeof Promise<"u"&&c instanceof Promise?c.then(h=>h?!0:(u(),!1)):c?!0:(u(),!1)})}refinement(t,n){return this._refinement((r,o)=>t(r)?!0:(o.addIssue(typeof n=="function"?n(r,o):n),!1))}_refinement(t){return new hi({schema:this,typeName:He.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:n=>this["~validate"](n)}}optional(){return Ha.create(this,this._def)}nullable(){return pi.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ya.create(this)}promise(){return Jc.create(this,this._def)}or(t){return Yc.create([this,t],this._def)}and(t){return Zc.create(this,t,this._def)}transform(t){return new hi({...Ge(this._def),schema:this,typeName:He.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new eu({...Ge(this._def),innerType:this,defaultValue:n,typeName:He.ZodDefault})}brand(){return new hb({typeName:He.ZodBranded,type:this,...Ge(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new tu({...Ge(this._def),innerType:this,catchValue:n,typeName:He.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return df.create(this,t)}readonly(){return nu.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const pT=/^c[^\s-]{8,}$/i,fT=/^[0-9a-z]+$/,mT=/^[0-9A-HJKMNP-TV-Z]{26}$/i,gT=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,yT=/^[a-z0-9_-]{21}$/i,vT=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,kT=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,_T=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,bT="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let Th;const wT=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,xT=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,PT=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ST=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,CT=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,TT=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,cb="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",ET=new RegExp(`^${cb}$`);function ub(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);const n=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function AT(e){return new RegExp(`^${ub(e)}$`)}function RT(e){let t=`${cb}T${ub(e)}`;const n=[];return n.push(e.local?"Z?":"Z"),e.offset&&n.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${n.join("|")})`,new RegExp(`^${t}$`)}function LT(e,t){return!!((t==="v4"||!t)&&wT.test(e)||(t==="v6"||!t)&&PT.test(e))}function DT(e,t){if(!vT.test(e))return!1;try{const[n]=e.split(".");if(!n)return!1;const r=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),o=JSON.parse(atob(r));return!(typeof o!="object"||o===null||"typ"in o&&o?.typ!=="JWT"||!o.alg||t&&o.alg!==t)}catch{return!1}}function IT(e,t){return!!((t==="v4"||!t)&&xT.test(e)||(t==="v6"||!t)&&ST.test(e))}class ga extends Je{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==ye.string){const s=this._getOrReturnCtx(t);return ce(s,{code:ae.invalid_type,expected:ye.string,received:s.parsedType}),ze}const r=new un;let o;for(const s of this._def.checks)if(s.kind==="min")t.data.length<s.value&&(o=this._getOrReturnCtx(t,o),ce(o,{code:ae.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),r.dirty());else if(s.kind==="max")t.data.length>s.value&&(o=this._getOrReturnCtx(t,o),ce(o,{code:ae.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),r.dirty());else if(s.kind==="length"){const c=t.data.length>s.value,u=t.data.length<s.value;(c||u)&&(o=this._getOrReturnCtx(t,o),c?ce(o,{code:ae.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}):u&&ce(o,{code:ae.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}),r.dirty())}else if(s.kind==="email")_T.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"email",code:ae.invalid_string,message:s.message}),r.dirty());else if(s.kind==="emoji")Th||(Th=new RegExp(bT,"u")),Th.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"emoji",code:ae.invalid_string,message:s.message}),r.dirty());else if(s.kind==="uuid")gT.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"uuid",code:ae.invalid_string,message:s.message}),r.dirty());else if(s.kind==="nanoid")yT.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"nanoid",code:ae.invalid_string,message:s.message}),r.dirty());else if(s.kind==="cuid")pT.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"cuid",code:ae.invalid_string,message:s.message}),r.dirty());else if(s.kind==="cuid2")fT.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"cuid2",code:ae.invalid_string,message:s.message}),r.dirty());else if(s.kind==="ulid")mT.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"ulid",code:ae.invalid_string,message:s.message}),r.dirty());else if(s.kind==="url")try{new URL(t.data)}catch{o=this._getOrReturnCtx(t,o),ce(o,{validation:"url",code:ae.invalid_string,message:s.message}),r.dirty()}else s.kind==="regex"?(s.regex.lastIndex=0,s.regex.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"regex",code:ae.invalid_string,message:s.message}),r.dirty())):s.kind==="trim"?t.data=t.data.trim():s.kind==="includes"?t.data.includes(s.value,s.position)||(o=this._getOrReturnCtx(t,o),ce(o,{code:ae.invalid_string,validation:{includes:s.value,position:s.position},message:s.message}),r.dirty()):s.kind==="toLowerCase"?t.data=t.data.toLowerCase():s.kind==="toUpperCase"?t.data=t.data.toUpperCase():s.kind==="startsWith"?t.data.startsWith(s.value)||(o=this._getOrReturnCtx(t,o),ce(o,{code:ae.invalid_string,validation:{startsWith:s.value},message:s.message}),r.dirty()):s.kind==="endsWith"?t.data.endsWith(s.value)||(o=this._getOrReturnCtx(t,o),ce(o,{code:ae.invalid_string,validation:{endsWith:s.value},message:s.message}),r.dirty()):s.kind==="datetime"?RT(s).test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{code:ae.invalid_string,validation:"datetime",message:s.message}),r.dirty()):s.kind==="date"?ET.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{code:ae.invalid_string,validation:"date",message:s.message}),r.dirty()):s.kind==="time"?AT(s).test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{code:ae.invalid_string,validation:"time",message:s.message}),r.dirty()):s.kind==="duration"?kT.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"duration",code:ae.invalid_string,message:s.message}),r.dirty()):s.kind==="ip"?LT(t.data,s.version)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"ip",code:ae.invalid_string,message:s.message}),r.dirty()):s.kind==="jwt"?DT(t.data,s.alg)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"jwt",code:ae.invalid_string,message:s.message}),r.dirty()):s.kind==="cidr"?IT(t.data,s.version)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"cidr",code:ae.invalid_string,message:s.message}),r.dirty()):s.kind==="base64"?CT.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"base64",code:ae.invalid_string,message:s.message}),r.dirty()):s.kind==="base64url"?TT.test(t.data)||(o=this._getOrReturnCtx(t,o),ce(o,{validation:"base64url",code:ae.invalid_string,message:s.message}),r.dirty()):it.assertNever(s);return{status:r.value,value:t.data}}_regex(t,n,r){return this.refinement(o=>t.test(o),{validation:n,code:ae.invalid_string,...Ce.errToObj(r)})}_addCheck(t){return new ga({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...Ce.errToObj(t)})}url(t){return this._addCheck({kind:"url",...Ce.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...Ce.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...Ce.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...Ce.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...Ce.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...Ce.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...Ce.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...Ce.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...Ce.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...Ce.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...Ce.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...Ce.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...Ce.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...Ce.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...Ce.errToObj(t)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...Ce.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n?.position,...Ce.errToObj(n?.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...Ce.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...Ce.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...Ce.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...Ce.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...Ce.errToObj(n)})}nonempty(t){return this.min(1,Ce.errToObj(t))}trim(){return new ga({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ga({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ga({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxLength(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}}ga.create=e=>new ga({checks:[],typeName:He.ZodString,coerce:e?.coerce??!1,...Ge(e)});function MT(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,o=n>r?n:r,s=Number.parseInt(e.toFixed(o).replace(".","")),c=Number.parseInt(t.toFixed(o).replace(".",""));return s%c/10**o}class li extends Je{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==ye.number){const s=this._getOrReturnCtx(t);return ce(s,{code:ae.invalid_type,expected:ye.number,received:s.parsedType}),ze}let r;const o=new un;for(const s of this._def.checks)s.kind==="int"?it.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),ce(r,{code:ae.invalid_type,expected:"integer",received:"float",message:s.message}),o.dirty()):s.kind==="min"?(s.inclusive?t.data<s.value:t.data<=s.value)&&(r=this._getOrReturnCtx(t,r),ce(r,{code:ae.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),o.dirty()):s.kind==="max"?(s.inclusive?t.data>s.value:t.data>=s.value)&&(r=this._getOrReturnCtx(t,r),ce(r,{code:ae.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),o.dirty()):s.kind==="multipleOf"?MT(t.data,s.value)!==0&&(r=this._getOrReturnCtx(t,r),ce(r,{code:ae.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):s.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),ce(r,{code:ae.not_finite,message:s.message}),o.dirty()):it.assertNever(s);return{status:o.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,Ce.toString(n))}gt(t,n){return this.setLimit("min",t,!1,Ce.toString(n))}lte(t,n){return this.setLimit("max",t,!0,Ce.toString(n))}lt(t,n){return this.setLimit("max",t,!1,Ce.toString(n))}setLimit(t,n,r,o){return new li({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:Ce.toString(o)}]})}_addCheck(t){return new li({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:Ce.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Ce.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Ce.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Ce.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Ce.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:Ce.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:Ce.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Ce.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Ce.toString(t)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&it.isInteger(t.value))}get isFinite(){let t=null,n=null;for(const r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(t===null||r.value<t)&&(t=r.value)}return Number.isFinite(n)&&Number.isFinite(t)}}li.create=e=>new li({checks:[],typeName:He.ZodNumber,coerce:e?.coerce||!1,...Ge(e)});class ci extends Je{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==ye.bigint)return this._getInvalidInput(t);let r;const o=new un;for(const s of this._def.checks)s.kind==="min"?(s.inclusive?t.data<s.value:t.data<=s.value)&&(r=this._getOrReturnCtx(t,r),ce(r,{code:ae.too_small,type:"bigint",minimum:s.value,inclusive:s.inclusive,message:s.message}),o.dirty()):s.kind==="max"?(s.inclusive?t.data>s.value:t.data>=s.value)&&(r=this._getOrReturnCtx(t,r),ce(r,{code:ae.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),o.dirty()):s.kind==="multipleOf"?t.data%s.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),ce(r,{code:ae.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):it.assertNever(s);return{status:o.value,value:t.data}}_getInvalidInput(t){const n=this._getOrReturnCtx(t);return ce(n,{code:ae.invalid_type,expected:ye.bigint,received:n.parsedType}),ze}gte(t,n){return this.setLimit("min",t,!0,Ce.toString(n))}gt(t,n){return this.setLimit("min",t,!1,Ce.toString(n))}lte(t,n){return this.setLimit("max",t,!0,Ce.toString(n))}lt(t,n){return this.setLimit("max",t,!1,Ce.toString(n))}setLimit(t,n,r,o){return new ci({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:Ce.toString(o)}]})}_addCheck(t){return new ci({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Ce.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Ce.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Ce.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Ce.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:Ce.toString(n)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}}ci.create=e=>new ci({checks:[],typeName:He.ZodBigInt,coerce:e?.coerce??!1,...Ge(e)});class qc extends Je{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==ye.boolean){const r=this._getOrReturnCtx(t);return ce(r,{code:ae.invalid_type,expected:ye.boolean,received:r.parsedType}),ze}return Vn(t.data)}}qc.create=e=>new qc({typeName:He.ZodBoolean,coerce:e?.coerce||!1,...Ge(e)});class ho extends Je{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==ye.date){const s=this._getOrReturnCtx(t);return ce(s,{code:ae.invalid_type,expected:ye.date,received:s.parsedType}),ze}if(Number.isNaN(t.data.getTime())){const s=this._getOrReturnCtx(t);return ce(s,{code:ae.invalid_date}),ze}const r=new un;let o;for(const s of this._def.checks)s.kind==="min"?t.data.getTime()<s.value&&(o=this._getOrReturnCtx(t,o),ce(o,{code:ae.too_small,message:s.message,inclusive:!0,exact:!1,minimum:s.value,type:"date"}),r.dirty()):s.kind==="max"?t.data.getTime()>s.value&&(o=this._getOrReturnCtx(t,o),ce(o,{code:ae.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),r.dirty()):it.assertNever(s);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new ho({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:Ce.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:Ce.toString(n)})}get minDate(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t!=null?new Date(t):null}}ho.create=e=>new ho({checks:[],coerce:e?.coerce||!1,typeName:He.ZodDate,...Ge(e)});class Pv extends Je{_parse(t){if(this._getType(t)!==ye.symbol){const r=this._getOrReturnCtx(t);return ce(r,{code:ae.invalid_type,expected:ye.symbol,received:r.parsedType}),ze}return Vn(t.data)}}Pv.create=e=>new Pv({typeName:He.ZodSymbol,...Ge(e)});class sp extends Je{_parse(t){if(this._getType(t)!==ye.undefined){const r=this._getOrReturnCtx(t);return ce(r,{code:ae.invalid_type,expected:ye.undefined,received:r.parsedType}),ze}return Vn(t.data)}}sp.create=e=>new sp({typeName:He.ZodUndefined,...Ge(e)});class lp extends Je{_parse(t){if(this._getType(t)!==ye.null){const r=this._getOrReturnCtx(t);return ce(r,{code:ae.invalid_type,expected:ye.null,received:r.parsedType}),ze}return Vn(t.data)}}lp.create=e=>new lp({typeName:He.ZodNull,...Ge(e)});class Sv extends Je{constructor(){super(...arguments),this._any=!0}_parse(t){return Vn(t.data)}}Sv.create=e=>new Sv({typeName:He.ZodAny,...Ge(e)});class cp extends Je{constructor(){super(...arguments),this._unknown=!0}_parse(t){return Vn(t.data)}}cp.create=e=>new cp({typeName:He.ZodUnknown,...Ge(e)});class Ir extends Je{_parse(t){const n=this._getOrReturnCtx(t);return ce(n,{code:ae.invalid_type,expected:ye.never,received:n.parsedType}),ze}}Ir.create=e=>new Ir({typeName:He.ZodNever,...Ge(e)});class Cv extends Je{_parse(t){if(this._getType(t)!==ye.undefined){const r=this._getOrReturnCtx(t);return ce(r,{code:ae.invalid_type,expected:ye.void,received:r.parsedType}),ze}return Vn(t.data)}}Cv.create=e=>new Cv({typeName:He.ZodVoid,...Ge(e)});class ya extends Je{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),o=this._def;if(n.parsedType!==ye.array)return ce(n,{code:ae.invalid_type,expected:ye.array,received:n.parsedType}),ze;if(o.exactLength!==null){const c=n.data.length>o.exactLength.value,u=n.data.length<o.exactLength.value;(c||u)&&(ce(n,{code:c?ae.too_big:ae.too_small,minimum:u?o.exactLength.value:void 0,maximum:c?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),r.dirty())}if(o.minLength!==null&&n.data.length<o.minLength.value&&(ce(n,{code:ae.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),r.dirty()),o.maxLength!==null&&n.data.length>o.maxLength.value&&(ce(n,{code:ae.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((c,u)=>o.type._parseAsync(new _a(n,c,n.path,u)))).then(c=>un.mergeArray(r,c));const s=[...n.data].map((c,u)=>o.type._parseSync(new _a(n,c,n.path,u)));return un.mergeArray(r,s)}get element(){return this._def.type}min(t,n){return new ya({...this._def,minLength:{value:t,message:Ce.toString(n)}})}max(t,n){return new ya({...this._def,maxLength:{value:t,message:Ce.toString(n)}})}length(t,n){return new ya({...this._def,exactLength:{value:t,message:Ce.toString(n)}})}nonempty(t){return this.min(1,t)}}ya.create=(e,t)=>new ya({type:e,minLength:null,maxLength:null,exactLength:null,typeName:He.ZodArray,...Ge(t)});function to(e){if(e instanceof Rt){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=Ha.create(to(r))}return new Rt({...e._def,shape:()=>t})}else return e instanceof ya?new ya({...e._def,type:to(e.element)}):e instanceof Ha?Ha.create(to(e.unwrap())):e instanceof pi?pi.create(to(e.unwrap())):e instanceof ui?ui.create(e.items.map(t=>to(t))):e}class Rt extends Je{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const t=this._def.shape(),n=it.objectKeys(t);return this._cached={shape:t,keys:n},this._cached}_parse(t){if(this._getType(t)!==ye.object){const p=this._getOrReturnCtx(t);return ce(p,{code:ae.invalid_type,expected:ye.object,received:p.parsedType}),ze}const{status:r,ctx:o}=this._processInputParams(t),{shape:s,keys:c}=this._getCached(),u=[];if(!(this._def.catchall instanceof Ir&&this._def.unknownKeys==="strip"))for(const p in o.data)c.includes(p)||u.push(p);const h=[];for(const p of c){const m=s[p],y=o.data[p];h.push({key:{status:"valid",value:p},value:m._parse(new _a(o,y,o.path,p)),alwaysSet:p in o.data})}if(this._def.catchall instanceof Ir){const p=this._def.unknownKeys;if(p==="passthrough")for(const m of u)h.push({key:{status:"valid",value:m},value:{status:"valid",value:o.data[m]}});else if(p==="strict")u.length>0&&(ce(o,{code:ae.unrecognized_keys,keys:u}),r.dirty());else if(p!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const p=this._def.catchall;for(const m of u){const y=o.data[m];h.push({key:{status:"valid",value:m},value:p._parse(new _a(o,y,o.path,m)),alwaysSet:m in o.data})}}return o.common.async?Promise.resolve().then(async()=>{const p=[];for(const m of h){const y=await m.key,k=await m.value;p.push({key:y,value:k,alwaysSet:m.alwaysSet})}return p}).then(p=>un.mergeObjectSync(r,p)):un.mergeObjectSync(r,h)}get shape(){return this._def.shape()}strict(t){return Ce.errToObj,new Rt({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,r)=>{const o=this._def.errorMap?.(n,r).message??r.defaultError;return n.code==="unrecognized_keys"?{message:Ce.errToObj(t).message??o}:{message:o}}}:{}})}strip(){return new Rt({...this._def,unknownKeys:"strip"})}passthrough(){return new Rt({...this._def,unknownKeys:"passthrough"})}extend(t){return new Rt({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new Rt({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:He.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new Rt({...this._def,catchall:t})}pick(t){const n={};for(const r of it.objectKeys(t))t[r]&&this.shape[r]&&(n[r]=this.shape[r]);return new Rt({...this._def,shape:()=>n})}omit(t){const n={};for(const r of it.objectKeys(this.shape))t[r]||(n[r]=this.shape[r]);return new Rt({...this._def,shape:()=>n})}deepPartial(){return to(this)}partial(t){const n={};for(const r of it.objectKeys(this.shape)){const o=this.shape[r];t&&!t[r]?n[r]=o:n[r]=o.optional()}return new Rt({...this._def,shape:()=>n})}required(t){const n={};for(const r of it.objectKeys(this.shape))if(t&&!t[r])n[r]=this.shape[r];else{let s=this.shape[r];for(;s instanceof Ha;)s=s._def.innerType;n[r]=s}return new Rt({...this._def,shape:()=>n})}keyof(){return db(it.objectKeys(this.shape))}}Rt.create=(e,t)=>new Rt({shape:()=>e,unknownKeys:"strip",catchall:Ir.create(),typeName:He.ZodObject,...Ge(t)});Rt.strictCreate=(e,t)=>new Rt({shape:()=>e,unknownKeys:"strict",catchall:Ir.create(),typeName:He.ZodObject,...Ge(t)});Rt.lazycreate=(e,t)=>new Rt({shape:e,unknownKeys:"strip",catchall:Ir.create(),typeName:He.ZodObject,...Ge(t)});class Yc extends Je{_parse(t){const{ctx:n}=this._processInputParams(t),r=this._def.options;function o(s){for(const u of s)if(u.result.status==="valid")return u.result;for(const u of s)if(u.result.status==="dirty")return n.common.issues.push(...u.ctx.common.issues),u.result;const c=s.map(u=>new $a(u.ctx.common.issues));return ce(n,{code:ae.invalid_union,unionErrors:c}),ze}if(n.common.async)return Promise.all(r.map(async s=>{const c={...n,common:{...n.common,issues:[]},parent:null};return{result:await s._parseAsync({data:n.data,path:n.path,parent:c}),ctx:c}})).then(o);{let s;const c=[];for(const h of r){const p={...n,common:{...n.common,issues:[]},parent:null},m=h._parseSync({data:n.data,path:n.path,parent:p});if(m.status==="valid")return m;m.status==="dirty"&&!s&&(s={result:m,ctx:p}),p.common.issues.length&&c.push(p.common.issues)}if(s)return n.common.issues.push(...s.ctx.common.issues),s.result;const u=c.map(h=>new $a(h));return ce(n,{code:ae.invalid_union,unionErrors:u}),ze}}get options(){return this._def.options}}Yc.create=(e,t)=>new Yc({options:e,typeName:He.ZodUnion,...Ge(t)});const za=e=>e instanceof dp?za(e.schema):e instanceof hi?za(e.innerType()):e instanceof Qc?[e.value]:e instanceof di?e.options:e instanceof hp?it.objectValues(e.enum):e instanceof eu?za(e._def.innerType):e instanceof sp?[void 0]:e instanceof lp?[null]:e instanceof Ha?[void 0,...za(e.unwrap())]:e instanceof pi?[null,...za(e.unwrap())]:e instanceof hb||e instanceof nu?za(e.unwrap()):e instanceof tu?za(e._def.innerType):[];class uf extends Je{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ye.object)return ce(n,{code:ae.invalid_type,expected:ye.object,received:n.parsedType}),ze;const r=this.discriminator,o=n.data[r],s=this.optionsMap.get(o);return s?n.common.async?s._parseAsync({data:n.data,path:n.path,parent:n}):s._parseSync({data:n.data,path:n.path,parent:n}):(ce(n,{code:ae.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),ze)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){const o=new Map;for(const s of n){const c=za(s.shape[t]);if(!c.length)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(const u of c){if(o.has(u))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(u)}`);o.set(u,s)}}return new uf({typeName:He.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:o,...Ge(r)})}}function up(e,t){const n=Cr(e),r=Cr(t);if(e===t)return{valid:!0,data:e};if(n===ye.object&&r===ye.object){const o=it.objectKeys(t),s=it.objectKeys(e).filter(u=>o.indexOf(u)!==-1),c={...e,...t};for(const u of s){const h=up(e[u],t[u]);if(!h.valid)return{valid:!1};c[u]=h.data}return{valid:!0,data:c}}else if(n===ye.array&&r===ye.array){if(e.length!==t.length)return{valid:!1};const o=[];for(let s=0;s<e.length;s++){const c=e[s],u=t[s],h=up(c,u);if(!h.valid)return{valid:!1};o.push(h.data)}return{valid:!0,data:o}}else return n===ye.date&&r===ye.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}class Zc extends Je{_parse(t){const{status:n,ctx:r}=this._processInputParams(t),o=(s,c)=>{if(bv(s)||bv(c))return ze;const u=up(s.value,c.value);return u.valid?((wv(s)||wv(c))&&n.dirty(),{status:n.value,value:u.data}):(ce(r,{code:ae.invalid_intersection_types}),ze)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([s,c])=>o(s,c)):o(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}Zc.create=(e,t,n)=>new Zc({left:e,right:t,typeName:He.ZodIntersection,...Ge(n)});class ui extends Je{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ye.array)return ce(r,{code:ae.invalid_type,expected:ye.array,received:r.parsedType}),ze;if(r.data.length<this._def.items.length)return ce(r,{code:ae.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),ze;!this._def.rest&&r.data.length>this._def.items.length&&(ce(r,{code:ae.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const s=[...r.data].map((c,u)=>{const h=this._def.items[u]||this._def.rest;return h?h._parse(new _a(r,c,r.path,u)):null}).filter(c=>!!c);return r.common.async?Promise.all(s).then(c=>un.mergeArray(n,c)):un.mergeArray(n,s)}get items(){return this._def.items}rest(t){return new ui({...this._def,rest:t})}}ui.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ui({items:e,typeName:He.ZodTuple,rest:null,...Ge(t)})};class Xc extends Je{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ye.object)return ce(r,{code:ae.invalid_type,expected:ye.object,received:r.parsedType}),ze;const o=[],s=this._def.keyType,c=this._def.valueType;for(const u in r.data)o.push({key:s._parse(new _a(r,u,r.path,u)),value:c._parse(new _a(r,r.data[u],r.path,u)),alwaysSet:u in r.data});return r.common.async?un.mergeObjectAsync(n,o):un.mergeObjectSync(n,o)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof Je?new Xc({keyType:t,valueType:n,typeName:He.ZodRecord,...Ge(r)}):new Xc({keyType:ga.create(),valueType:t,typeName:He.ZodRecord,...Ge(n)})}}class Tv extends Je{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ye.map)return ce(r,{code:ae.invalid_type,expected:ye.map,received:r.parsedType}),ze;const o=this._def.keyType,s=this._def.valueType,c=[...r.data.entries()].map(([u,h],p)=>({key:o._parse(new _a(r,u,r.path,[p,"key"])),value:s._parse(new _a(r,h,r.path,[p,"value"]))}));if(r.common.async){const u=new Map;return Promise.resolve().then(async()=>{for(const h of c){const p=await h.key,m=await h.value;if(p.status==="aborted"||m.status==="aborted")return ze;(p.status==="dirty"||m.status==="dirty")&&n.dirty(),u.set(p.value,m.value)}return{status:n.value,value:u}})}else{const u=new Map;for(const h of c){const p=h.key,m=h.value;if(p.status==="aborted"||m.status==="aborted")return ze;(p.status==="dirty"||m.status==="dirty")&&n.dirty(),u.set(p.value,m.value)}return{status:n.value,value:u}}}}Tv.create=(e,t,n)=>new Tv({valueType:t,keyType:e,typeName:He.ZodMap,...Ge(n)});class Ns extends Je{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ye.set)return ce(r,{code:ae.invalid_type,expected:ye.set,received:r.parsedType}),ze;const o=this._def;o.minSize!==null&&r.data.size<o.minSize.value&&(ce(r,{code:ae.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,exact:!1,message:o.minSize.message}),n.dirty()),o.maxSize!==null&&r.data.size>o.maxSize.value&&(ce(r,{code:ae.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),n.dirty());const s=this._def.valueType;function c(h){const p=new Set;for(const m of h){if(m.status==="aborted")return ze;m.status==="dirty"&&n.dirty(),p.add(m.value)}return{status:n.value,value:p}}const u=[...r.data.values()].map((h,p)=>s._parse(new _a(r,h,r.path,p)));return r.common.async?Promise.all(u).then(h=>c(h)):c(u)}min(t,n){return new Ns({...this._def,minSize:{value:t,message:Ce.toString(n)}})}max(t,n){return new Ns({...this._def,maxSize:{value:t,message:Ce.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}}Ns.create=(e,t)=>new Ns({valueType:e,minSize:null,maxSize:null,typeName:He.ZodSet,...Ge(t)});class dp extends Je{get schema(){return this._def.getter()}_parse(t){const{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}dp.create=(e,t)=>new dp({getter:e,typeName:He.ZodLazy,...Ge(t)});class Qc extends Je{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return ce(n,{received:n.data,code:ae.invalid_literal,expected:this._def.value}),ze}return{status:"valid",value:t.data}}get value(){return this._def.value}}Qc.create=(e,t)=>new Qc({value:e,typeName:He.ZodLiteral,...Ge(t)});function db(e,t){return new di({values:e,typeName:He.ZodEnum,...Ge(t)})}class di extends Je{_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return ce(n,{expected:it.joinValues(r),received:n.parsedType,code:ae.invalid_type}),ze}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){const n=this._getOrReturnCtx(t),r=this._def.values;return ce(n,{received:n.data,code:ae.invalid_enum_value,options:r}),ze}return Vn(t.data)}get options(){return this._def.values}get enum(){const t={};for(const n of this._def.values)t[n]=n;return t}get Values(){const t={};for(const n of this._def.values)t[n]=n;return t}get Enum(){const t={};for(const n of this._def.values)t[n]=n;return t}extract(t,n=this._def){return di.create(t,{...this._def,...n})}exclude(t,n=this._def){return di.create(this.options.filter(r=>!t.includes(r)),{...this._def,...n})}}di.create=db;class hp extends Je{_parse(t){const n=it.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==ye.string&&r.parsedType!==ye.number){const o=it.objectValues(n);return ce(r,{expected:it.joinValues(o),received:r.parsedType,code:ae.invalid_type}),ze}if(this._cache||(this._cache=new Set(it.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){const o=it.objectValues(n);return ce(r,{received:r.data,code:ae.invalid_enum_value,options:o}),ze}return Vn(t.data)}get enum(){return this._def.values}}hp.create=(e,t)=>new hp({values:e,typeName:He.ZodNativeEnum,...Ge(t)});class Jc extends Je{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ye.promise&&n.common.async===!1)return ce(n,{code:ae.invalid_type,expected:ye.promise,received:n.parsedType}),ze;const r=n.parsedType===ye.promise?n.data:Promise.resolve(n.data);return Vn(r.then(o=>this._def.type.parseAsync(o,{path:n.path,errorMap:n.common.contextualErrorMap})))}}Jc.create=(e,t)=>new Jc({type:e,typeName:He.ZodPromise,...Ge(t)});class hi extends Je{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===He.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),o=this._def.effect||null,s={addIssue:c=>{ce(r,c),c.fatal?n.abort():n.dirty()},get path(){return r.path}};if(s.addIssue=s.addIssue.bind(s),o.type==="preprocess"){const c=o.transform(r.data,s);if(r.common.async)return Promise.resolve(c).then(async u=>{if(n.value==="aborted")return ze;const h=await this._def.schema._parseAsync({data:u,path:r.path,parent:r});return h.status==="aborted"?ze:h.status==="dirty"||n.value==="dirty"?ks(h.value):h});{if(n.value==="aborted")return ze;const u=this._def.schema._parseSync({data:c,path:r.path,parent:r});return u.status==="aborted"?ze:u.status==="dirty"||n.value==="dirty"?ks(u.value):u}}if(o.type==="refinement"){const c=u=>{const h=o.refinement(u,s);if(r.common.async)return Promise.resolve(h);if(h instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return u};if(r.common.async===!1){const u=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return u.status==="aborted"?ze:(u.status==="dirty"&&n.dirty(),c(u.value),{status:n.value,value:u.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(u=>u.status==="aborted"?ze:(u.status==="dirty"&&n.dirty(),c(u.value).then(()=>({status:n.value,value:u.value}))))}if(o.type==="transform")if(r.common.async===!1){const c=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!uo(c))return ze;const u=o.transform(c.value,s);if(u instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:u}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(c=>uo(c)?Promise.resolve(o.transform(c.value,s)).then(u=>({status:n.value,value:u})):ze);it.assertNever(o)}}hi.create=(e,t,n)=>new hi({schema:e,typeName:He.ZodEffects,effect:t,...Ge(n)});hi.createWithPreprocess=(e,t,n)=>new hi({schema:t,effect:{type:"preprocess",transform:e},typeName:He.ZodEffects,...Ge(n)});class Ha extends Je{_parse(t){return this._getType(t)===ye.undefined?Vn(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Ha.create=(e,t)=>new Ha({innerType:e,typeName:He.ZodOptional,...Ge(t)});class pi extends Je{_parse(t){return this._getType(t)===ye.null?Vn(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}pi.create=(e,t)=>new pi({innerType:e,typeName:He.ZodNullable,...Ge(t)});class eu extends Je{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===ye.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}eu.create=(e,t)=>new eu({innerType:e,typeName:He.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...Ge(t)});class tu extends Je{_parse(t){const{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},o=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return Kc(o)?o.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new $a(r.common.issues)},input:r.data})})):{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new $a(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}tu.create=(e,t)=>new tu({innerType:e,typeName:He.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...Ge(t)});class Ev extends Je{_parse(t){if(this._getType(t)!==ye.nan){const r=this._getOrReturnCtx(t);return ce(r,{code:ae.invalid_type,expected:ye.nan,received:r.parsedType}),ze}return{status:"valid",value:t.data}}}Ev.create=e=>new Ev({typeName:He.ZodNaN,...Ge(e)});class hb extends Je{_parse(t){const{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}}class df extends Je{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{const s=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?ze:s.status==="dirty"?(n.dirty(),ks(s.value)):this._def.out._parseAsync({data:s.value,path:r.path,parent:r})})();{const o=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?ze:o.status==="dirty"?(n.dirty(),{status:"dirty",value:o.value}):this._def.out._parseSync({data:o.value,path:r.path,parent:r})}}static create(t,n){return new df({in:t,out:n,typeName:He.ZodPipeline})}}class nu extends Je{_parse(t){const n=this._def.innerType._parse(t),r=o=>(uo(o)&&(o.value=Object.freeze(o.value)),o);return Kc(n)?n.then(o=>r(o)):r(n)}unwrap(){return this._def.innerType}}nu.create=(e,t)=>new nu({innerType:e,typeName:He.ZodReadonly,...Ge(t)});var He;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(He||(He={}));const v=ga.create,Q=li.create;ci.create;const Be=qc.create,hf=ho.create,Jt=cp.create;Ir.create;const ie=ya.create,T=Rt.create,zn=Yc.create,pb=uf.create;Zc.create;ui.create;const _t=Xc.create,Ye=Qc.create,nt=di.create;Jc.create;Ha.create;pi.create;const pp={string:(e=>ga.create({...e,coerce:!0})),number:(e=>li.create({...e,coerce:!0})),boolean:(e=>qc.create({...e,coerce:!0})),bigint:(e=>ci.create({...e,coerce:!0})),date:(e=>ho.create({...e,coerce:!0}))};var pa;(function(e){e.STRING="string",e.DATE="date",e.DATETIME="datetime",e.INTEGER="integer",e.FLOAT="float",e.BOOLEAN="boolean",e.UUID="uuid",e.JSON="json"})(pa||(pa={}));const NT=nt(["CASCADE","RESTRICT","NO ACTION"]),OT=nt(["CASCADE","SET NULL","SET DEFAULT","RESTRICT","NO ACTION"]),jT=nt([pa.STRING,pa.DATE,pa.DATETIME,pa.INTEGER,pa.FLOAT,pa.BOOLEAN,pa.UUID,pa.JSON]),fb=T({referenceTable:v().min(1,"Target table cannot be empty"),referenceColumn:v().min(1,"Target column cannot be empty"),onDelete:OT,onUpdate:NT}),mb=T({columnName:v().min(1,"Column name cannot be empty").max(64,"Column name must be less than 64 characters"),type:zn([jT,v()]),defaultValue:v().optional(),isPrimaryKey:Be().optional(),isNullable:Be(),isUnique:Be(),foreignKey:fb.optional()}),gb=T({tableName:v().min(1,"Table name cannot be empty").max(64,"Table name must be less than 64 characters"),columns:ie(mb).min(1,"At least one column is required"),recordCount:Q().optional(),createdAt:v().optional(),updatedAt:v().optional()}),UT=T({functionName:v(),functionDef:v(),kind:v()}),BT=T({tableName:v(),indexName:v(),indexDef:v(),isUnique:Be().nullable(),isPrimary:Be().nullable()}),FT=T({tableName:v(),policyName:v(),cmd:v(),roles:ie(v()),qual:v().nullable(),withCheck:v().nullable()}),VT=T({tableName:v(),triggerName:v(),actionTiming:v(),eventManipulation:v(),actionOrientation:v(),actionCondition:v().nullable(),actionStatement:v()});gb.pick({tableName:!0,columns:!0}).extend({rlsEnabled:Be().default(!0)});gb.pick({tableName:!0,columns:!0}).extend({message:v(),autoFields:ie(v()),nextActions:v()});T({addColumns:ie(mb.omit({foreignKey:!0})).optional(),dropColumns:ie(v()).optional(),updateColumns:ie(T({columnName:v(),defaultValue:v().optional(),newColumnName:v().min(1,"New column name cannot be empty").max(64,"New column name must be less than 64 characters").optional()})).optional(),addForeignKeys:ie(T({columnName:v().min(1,"Column name is required for adding foreign key"),foreignKey:fb})).optional(),dropForeignKeys:ie(v()).optional(),renameTable:T({newTableName:v().min(1,"New table name cannot be empty").max(64,"New table name must be less than 64 characters")}).optional()});T({message:v(),tableName:v(),operations:ie(v())});T({message:v(),tableName:v(),nextActions:v()});T({query:v().min(1,"Query is required"),params:ie(Jt()).optional()});T({rows:ie(_t(v(),Jt())),rowCount:Q().nullable(),fields:ie(T({name:v(),dataTypeID:Q()})).optional()});T({tables:ie(v()).optional(),format:nt(["sql","json"]).default("sql"),includeData:Be().default(!0),includeFunctions:Be().default(!1),includeSequences:Be().default(!1),includeViews:Be().default(!1),rowLimit:Q().int().positive().max(1e4).default(1e3)});const zT=T({timestamp:v(),tables:_t(v(),T({schema:ie(T({columnName:v(),dataType:v(),characterMaximumLength:Q().nullable(),isNullable:v(),columnDefault:v().nullable()})),indexes:ie(T({indexname:v(),indexdef:v(),isUnique:Be().nullable(),isPrimary:Be().nullable()})),foreignKeys:ie(T({constraintName:v(),columnName:v(),foreignTableName:v(),foreignColumnName:v(),deleteRule:v().nullable(),updateRule:v().nullable()})),rlsEnabled:Be().optional(),policies:ie(T({policyname:v(),cmd:v(),roles:ie(v()),qual:v().nullable(),withCheck:v().nullable()})),triggers:ie(T({triggerName:v(),actionTiming:v(),eventManipulation:v(),actionOrientation:v(),actionCondition:v().nullable(),actionStatement:v(),newTable:v().nullable(),oldTable:v().nullable()})),rows:ie(_t(v(),Jt())).optional(),recordCount:Q().optional()})),functions:ie(T({functionName:v(),functionDef:v(),kind:v()})),sequences:ie(T({sequenceName:v(),startValue:v(),increment:v(),minValue:v().nullable(),maxValue:v().nullable(),cycle:v()})),views:ie(T({viewName:v(),definition:v()}))});T({format:nt(["sql","json"]),data:zn([v(),zT]),timestamp:v()});T({truncate:zn([Be(),v().transform(e=>{if(e==="true")return!0;if(e==="false")return!1;throw new Error("Invalid boolean string")})]).default(!1)});T({success:Be(),message:v(),filename:v(),tables:ie(v()),rowsImported:Q(),fileSize:Q()});T({table:v().min(1,"Table name is required"),upsertKey:v().optional()});T({success:Be(),message:v(),table:v(),rowsAffected:Q(),totalRecords:Q(),filename:v()});T({functions:ie(UT)});T({indexes:ie(BT)});T({policies:ie(FT)});T({triggers:ie(VT)});const HT=T({id:v(),key:v(),isActive:Be(),isReserved:Be(),lastUsedAt:v().nullable(),expiresAt:v().nullable(),createdAt:v(),updatedAt:v()});T({secrets:ie(HT)});T({key:v(),value:v()});T({key:v().regex(/^[A-Z0-9_]+$/,"Use uppercase letters, numbers, and underscores only"),value:v().min(1,"Value is required")});T({success:Ye(!0),message:v(),id:v()});T({success:Ye(!0),message:v()});T({success:Ye(!0),message:v()});const $T=T({key:v(),bucket:v(),size:Q(),mimeType:v().optional(),uploadedAt:v(),url:v()}),WT=T({name:v(),public:Be(),createdAt:v()});T({id:v().uuid(),maxFileSizeMb:Q().int().positive(),createdAt:v(),updatedAt:v()});T({bucketName:v().min(1,"Bucket name cannot be empty"),isPublic:Be().default(!0)});T({isPublic:Be()});T({objects:ie($T),pagination:T({offset:Q(),limit:Q(),total:Q()})});T({filename:v().min(1,"Filename cannot be empty"),contentType:v().optional(),size:Q().optional()});T({method:nt(["presigned","direct"]),uploadUrl:v(),fields:_t(v()).optional(),key:v(),confirmRequired:Be(),confirmUrl:v().optional(),expiresAt:hf().optional()});T({expiresIn:Q().optional().default(3600)});T({method:nt(["presigned","direct"]),url:v(),expiresAt:hf().optional(),headers:_t(v()).optional()});T({size:Q(),contentType:v().optional(),etag:v().optional()});T({maxFileSizeMb:Q().int().min(1,"Must be at least 1 MB").max(200,"Must be at most 200 MB")});const Su=v().uuid("Invalid user ID format"),ba=v().email("Invalid email format").toLowerCase().trim(),pf=v(),GT=v().min(1,"Name is required").max(100,"Name must be less than 100 characters").trim(),KT=nt(["anon","authenticated","project_admin"]),Av=nt(["code","link"]),yb=T({name:v().optional(),avatar_url:v().url().optional()}).passthrough(),ko=T({id:Su,email:ba,emailVerified:Be(),providers:ie(v()).optional(),createdAt:v(),updatedAt:v(),profile:yb.nullable(),metadata:_t(Jt()).nullable()}),Cu=nt(["google","github","discord","linkedin","facebook","instagram","tiktok","apple","x","spotify","microsoft"]);T({provider:Cu,redirectUri:v().url().optional()});const ff=T({id:v().uuid(),provider:Cu,clientId:v().optional(),scopes:ie(v()).optional(),redirectUri:v().optional(),useSharedKey:Be(),createdAt:v(),updatedAt:v()}),qT=/^(?:(?:https?:\/\/)(?:(?:\*\.)?[^\s/:?#]+|\[[0-9A-Fa-f:.]+\])(?::\d+)?(?:\/[^\s]*)?|(?!(?:https?|javascript|data|file|vbscript):)[a-zA-Z][a-zA-Z0-9+.-]*:(?:\/\/[^\s/]+(?:\/[^\s]*)?|\/[^\s]*))$/i,vb=T({id:v().uuid(),requireEmailVerification:Be(),passwordMinLength:Q().min(4).max(128),requireNumber:Be(),requireLowercase:Be(),requireUppercase:Be(),requireSpecialChar:Be(),verifyEmailMethod:Av,resetPasswordMethod:Av,allowedRedirectUrls:ie(v().regex(qT,{message:"Invalid URL or wildcard URL"})).optional().nullable(),createdAt:v(),updatedAt:v()});T({sub:Su,email:ba,role:KT,iat:Q().optional(),exp:Q().optional()});const kb=v().min(1).max(64).regex(/^[a-z0-9_-]+$/,"Key must contain only lowercase letters, numbers, hyphens, and underscores"),mf=T({id:v().uuid(),key:kb,name:v().min(1),discoveryEndpoint:v().url(),clientId:v().min(1),createdAt:v(),updatedAt:v()}),YT=T({limit:v().optional(),offset:v().optional()});T({email:ba,password:pf,name:GT.optional(),redirectTo:v().url().optional()});T({email:ba,password:pf});T({refreshToken:v().min(1,"refreshToken is required")});T({code:v()});YT.extend({search:v().optional()}).optional();T({userIds:ie(Su).min(1,"At least one user ID is required")});T({profile:_t(Jt())});T({email:ba,redirectTo:v().url().optional()});T({email:ba,otp:v().regex(/^\d{6}$/,"OTP code must be a 6-digit numeric code")});T({email:ba,redirectTo:v().url().optional()});T({email:ba,code:v().regex(/^\d{6}$/,"Reset password code must be a 6-digit numeric code")});T({newPassword:pf,otp:v().min(1,"OTP/token is required")});T({user:ko.optional(),accessToken:v().nullable(),requireEmailVerification:Be().optional(),csrfToken:v().nullable().optional(),refreshToken:v().optional()});T({user:ko,accessToken:v(),csrfToken:v().nullable().optional(),refreshToken:v().optional()});T({user:ko,accessToken:v(),csrfToken:v().nullable().optional(),refreshToken:v().optional()});T({accessToken:v(),user:ko,csrfToken:v().optional(),refreshToken:v().optional()});T({token:v(),expiresAt:v().datetime()});T({message:v()});T({user:ko});T({id:Su,profile:yb.nullable()});T({data:ie(ko),pagination:T({offset:Q(),limit:Q(),total:Q()})});T({message:v(),deletedCount:Q().int().nonnegative()});T({authUrl:v().url()});ff.omit({id:!0,createdAt:!0,updatedAt:!0}).extend({clientSecret:v().optional()});ff.omit({id:!0,provider:!0,createdAt:!0,updatedAt:!0}).extend({clientSecret:v().optional()}).partial();const _b=/^[A-Za-z0-9._~-]+$/;T({redirect_uri:v().url().optional(),code_challenge:v().min(43,"Code challenge must be at least 43 characters").max(128,"Code challenge must be at most 128 characters").regex(_b,"Code challenge must be base64url encoded")});T({code:v().min(1,"Exchange code is required"),code_verifier:v().min(43,"Code verifier must be at least 43 characters").max(128,"Code verifier must be at most 128 characters").regex(_b,"Code verifier must be base64url encoded")});T({data:ie(ff),count:Q()});vb.omit({id:!0,createdAt:!0,updatedAt:!0}).partial();const ZT=T({oAuthProviders:ie(Cu),customOAuthProviders:ie(kb),...vb.omit({id:!0,updatedAt:!0,createdAt:!0,allowedRedirectUrls:!0}).shape});T({error:v(),message:v(),statusCode:Q().int(),nextActions:v().optional()});mf.omit({id:!0,createdAt:!0,updatedAt:!0}).extend({clientSecret:v().min(1,"Client secret is required")});mf.omit({id:!0,key:!0,createdAt:!0,updatedAt:!0}).extend({clientSecret:v().min(1).optional()}).partial();T({data:ie(mf),count:Q()});const bb=nt(["system","user"]),wb=T({id:v().uuid(),pattern:v().min(1),description:v().nullable(),webhookUrls:ie(v().url()).nullable(),enabled:Be(),createdAt:v().datetime(),updatedAt:v().datetime()}),XT=T({id:v().uuid(),eventName:v().min(1),channelId:v().uuid().nullable(),channelName:v().min(1),payload:_t(v(),Jt()),senderType:bb,senderId:v().uuid().nullable(),wsAudienceCount:Q().int().min(0),whAudienceCount:Q().int().min(0),whDeliveredCount:Q().int().min(0),createdAt:v().datetime()}),QT=T({retentionDays:Q().int().positive().nullable()});T({channel:v().min(1)});T({channel:v().min(1)});T({channel:v().min(1),event:v().min(1),payload:_t(v(),Jt())});pb("ok",[T({ok:Ye(!0),channel:v().min(1)}),T({ok:Ye(!1),channel:v().min(1),error:T({code:v().min(1),message:v().min(1)})})]);T({channel:v().optional(),code:v().min(1),message:v().min(1)});T({messageId:v().uuid(),channel:v().min(1),eventName:v().min(1),payload:_t(v(),Jt())});const JT=T({channel:v().optional(),messageId:v().uuid(),senderType:bb,senderId:v().uuid().optional(),timestamp:v().datetime()});T({meta:JT}).passthrough();T({pattern:v().min(1,"Channel pattern is required"),description:v().optional(),webhookUrls:ie(v().url()).optional(),enabled:Be().optional().default(!0)});T({pattern:v().min(1).optional(),description:v().optional(),webhookUrls:ie(v().url()).optional(),enabled:Be().optional()});ie(wb);T({message:v()});T({channelId:v().uuid().optional(),eventName:v().optional(),limit:pp.number().int().min(1).max(1e3).optional().default(100),offset:pp.number().int().min(0).optional().default(0)});ie(XT);T({channelId:v().uuid().optional(),since:pp.date().optional()});T({totalMessages:Q().int().min(0),whDeliveryRate:Q().min(0).max(1),topEvents:ie(T({eventName:v(),count:Q().int().min(0)})),retentionDays:QT.shape.retentionDays});const Rv=T({policyName:v(),tableName:v(),command:v(),roles:ie(v()),using:v().nullable(),withCheck:v().nullable()}),eE=T({subscribe:T({policies:ie(Rv)}),publish:T({policies:ie(Rv)})}),tE=ZT,nE=T({tables:ie(T({tableName:v(),recordCount:Q()})),totalSizeInGB:Q(),hint:v().optional()}),aE=WT.extend({objectCount:Q().optional()}),rE=T({buckets:ie(aE),totalSizeInGB:Q()}),iE=T({slug:v(),name:v(),description:v().nullable(),status:v()}),oE=T({models:ie(T({inputModality:ie(v()),outputModality:ie(v()),modelId:v()}))}),sE=T({channels:ie(wb),permissions:eE});T({auth:tE,database:nE,storage:rE,aiIntegration:oE.optional(),functions:ie(iE),realtime:sE.optional(),version:v().optional()});const lE=T({host:v(),port:Q(),database:v(),user:v(),password:v(),sslmode:v()});T({connectionURL:v(),parameters:lE});T({databasePassword:v()});T({apiKey:v()});T({projectId:v().nullable()});const po=nt(["text","image","audio"]),cE=T({inputModality:ie(po).min(1),outputModality:ie(po).min(1),provider:v(),modelId:v(),systemPrompt:v().optional()}),xb=cE.extend({id:v().uuid()});xb.extend({usageStats:T({totalInputTokens:Q(),totalOutputTokens:Q(),totalTokens:Q(),totalImageCount:Q(),totalRequests:Q()}).optional()});const uE=T({configId:v().uuid(),inputTokens:Q().int().optional(),outputTokens:Q().int().optional(),imageCount:Q().int().optional(),imageResolution:v().optional()}),dE=uE.extend({id:v().uuid(),createdAt:hf(),modelId:v().nullable().optional(),model:v().nullable(),provider:v().nullable(),inputModality:ie(po).nullable(),outputModality:ie(po).nullable()});T({totalInputTokens:Q(),totalOutputTokens:Q(),totalTokens:Q(),totalImageCount:Q(),totalRequests:Q()});const hE=T({type:Ye("text"),text:v()}),pE=T({type:Ye("image_url"),image_url:T({url:v(),detail:nt(["auto","low","high"]).optional()})}),fE=T({type:Ye("input_audio"),input_audio:T({data:v(),format:nt(["wav","mp3","aiff","aac","ogg","flac","m4a"])})}),mE=T({type:Ye("file"),file:T({filename:v(),file_data:v()})}),gE=zn([hE,pE,fE,mE]),yE=T({name:v(),description:v().optional(),parameters:_t(Jt()).optional()}),vE=T({type:Ye("function"),function:yE}),kE=zn([nt(["auto","none","required"]),T({type:Ye("function"),function:T({name:v()})})]),Pb=T({id:v(),type:Ye("function"),function:T({name:v(),arguments:v()})}),_E=T({role:nt(["user","assistant","system","tool"]),content:zn([v(),ie(gE)]).nullable(),images:ie(T({url:v()})).optional(),tool_calls:ie(Pb).optional(),tool_call_id:v().optional()}),bE=T({enabled:Be(),engine:nt(["native","exa"]).optional(),maxResults:Q().min(1).max(10).optional(),searchPrompt:v().optional()}),wE=T({enabled:Be(),pdf:T({engine:nt(["pdf-text","mistral-ocr","native"]).optional()}).optional()});T({model:v(),messages:ie(_E),temperature:Q().min(0).max(2).optional(),maxTokens:Q().positive().optional(),topP:Q().min(0).max(1).optional(),stream:Be().optional(),webSearch:bE.optional(),fileParser:wE.optional(),thinking:Be().optional(),tools:ie(vE).optional(),toolChoice:kE.optional(),parallelToolCalls:Be().optional()});const xE=T({type:Ye("url_citation"),urlCitation:T({url:v(),title:v().optional(),content:v().optional(),startIndex:Q().optional(),endIndex:Q().optional()})}),PE=T({type:Ye("file"),file:T({filename:v(),parsedContent:v().optional(),metadata:_t(Jt()).optional()})}),SE=zn([xE,PE]);T({text:v(),tool_calls:ie(Pb).optional(),annotations:ie(SE).optional(),metadata:T({model:v(),usage:T({promptTokens:Q().optional(),completionTokens:Q().optional(),totalTokens:Q().optional()}).optional()}).optional()});T({model:v(),input:zn([v(),ie(v())]),encoding_format:nt(["float","base64"]).optional(),dimensions:Q().int().min(0).optional()});const CE=T({object:Ye("embedding"),embedding:zn([ie(Q()),v()]),index:Q()});T({object:Ye("list"),data:ie(CE),metadata:T({model:v(),usage:T({promptTokens:Q().optional(),totalTokens:Q().optional()}).optional()}).optional()});T({model:v(),prompt:v(),images:ie(T({url:v()})).optional()});T({text:v().optional(),images:ie(T({type:Ye("imageUrl"),imageUrl:v()})),metadata:T({model:v(),usage:T({promptTokens:Q().optional(),completionTokens:Q().optional(),totalTokens:Q().optional()}).optional()}).optional()});T({id:v(),inputModality:ie(po).min(1),outputModality:ie(po).min(1),provider:v(),modelId:v(),inputPrice:Q().min(0).optional(),outputPrice:Q().min(0).optional()});xb.omit({id:!0});T({systemPrompt:v().nullable()});T({records:ie(dE),total:Q()});T({startDate:v().datetime().optional(),endDate:v().datetime().optional(),limit:v().regex(/^\d+$/).default("50"),offset:v().regex(/^\d+$/).default("0")});T({configId:v().uuid().optional(),startDate:v().datetime().optional(),endDate:v().datetime().optional()});const TE=nt(["byok","cloud","env","unconfigured"]);T({keySource:TE,hasByokKey:Be(),maskedKey:v().optional()});T({apiKey:v().min(1,"API key is required")});const Sb=T({id:v(),actor:v(),action:v(),module:v(),details:_t(Jt()).nullable(),ipAddress:v().nullable(),createdAt:v(),updatedAt:v()});T({id:v(),name:v(),token:v()});const EE=T({id:v(),eventMessage:v(),timestamp:v(),body:_t(v(),Jt()),source:v().optional()});T({source:v(),count:Q(),lastActivity:v()});const AE=T({level:v(),message:v()});T({deploymentId:v(),status:nt(["pending","success","failed"]),logs:ie(AE),createdAt:v()});T({limit:Q().default(100),offset:Q().default(0),actor:v().optional(),action:v().optional(),module:v().optional(),startDate:v().optional(),endDate:v().optional()});T({data:ie(Sb),pagination:T({limit:Q(),offset:Q(),total:Q()})});T({days:Q().default(7)});T({totalLogs:Q(),uniqueActors:Q(),uniqueModules:Q(),actionsByModule:_t(Q()),recentActivity:ie(Sb)});T({daysToKeep:Q().default(90)});T({message:v(),deleted:Q()});T({logs:ie(EE),total:Q()});const Cb=T({id:v(),slug:v(),name:v(),description:v().nullable(),code:v(),status:nt(["draft","active","error"]),createdAt:v(),updatedAt:v(),deployedAt:v().nullable()});T({name:v().min(1,"Name is required"),slug:v().regex(/^[a-zA-Z0-9_-]+$/,"Invalid slug format - must be alphanumeric with hyphens or underscores only").optional(),code:v().min(1),description:v().optional(),status:nt(["draft","active"]).optional().default("active")});T({name:v().optional(),code:v().optional(),description:v().optional(),status:nt(["draft","active"]).optional()});T({functions:ie(Cb),runtime:T({status:nt(["running","unavailable"])}),deploymentUrl:v().nullable().optional()});const RE=T({id:v(),status:nt(["success","failed"]),url:v().nullable(),buildLogs:ie(v()).optional()});T({success:Be(),function:Cb,deployment:RE.nullable().optional()});const LE=T({type:Ye("APP_ROUTE_CHANGE"),path:v()}),DE=T({type:Ye("AUTH_SUCCESS")}),IE=T({type:Ye("AUTH_ERROR"),message:v()}),ME=T({type:Ye("MCP_CONNECTION_STATUS"),connected:Be(),toolName:v(),timestamp:zn([Q(),v()])}),NE=T({type:Ye("SHOW_ONBOARDING_OVERLAY")}),OE=T({type:Ye("SHOW_SETTINGS_OVERLAY")}),jE=T({type:Ye("ONBOARDING_SUCCESS")}),UE=T({type:Ye("NAVIGATE_TO_USAGE")}),BE=T({type:Ye("SHOW_CONTACT_MODAL")}),FE=T({type:Ye("SHOW_CONNECT_OVERLAY")}),VE=T({type:Ye("SHOW_PLAN_MODAL")}),zE=T({type:Ye("AUTHORIZATION_CODE"),code:v()}),HE=T({type:Ye("ROUTE_CHANGE"),path:v()}),$E=T({type:Ye("REQUEST_PROJECT_INFO")}),WE=T({type:Ye("PROJECT_INFO"),name:v(),instanceType:v(),region:v(),latestVersion:v().optional()}),GE=T({type:Ye("REQUEST_INSTANCE_INFO")}),KE=T({type:Ye("INSTANCE_INFO"),currentInstanceType:v(),planName:v(),computeCredits:Q(),currentOrgComputeCost:Q(),instanceTypes:ie(T({id:v(),name:v(),cpu:v(),ram:v(),pricePerHour:Q(),pricePerMonth:Q()})),projects:ie(T({name:v(),instanceType:v(),monthlyCost:Q(),isCurrent:Be(),status:v()}))}),qE=T({type:Ye("REQUEST_INSTANCE_TYPE_CHANGE"),instanceType:v()}),YE=T({type:Ye("INSTANCE_TYPE_CHANGE_RESULT"),success:Be(),instanceType:v().optional(),error:v().optional()});pb("type",[LE,DE,IE,ME,NE,OE,jE,UE,BE,FE,VE,zE,HE,$E,WE,GE,KE,qE,YE]);nt(["db","storage","functions","auth","ai","realtime"]).describe(`
|
|
13
|
-
SDK feature categories:
|
|
14
|
-
|
|
15
|
-
- "db" - Database operations
|
|
16
|
-
- "storage" - File storage
|
|
17
|
-
- "functions" - Edge functions
|
|
18
|
-
- "auth" - User authentication
|
|
19
|
-
- "ai" - AI features
|
|
20
|
-
- "realtime" - Real-time WebSockets
|
|
21
|
-
`);nt(["typescript","swift","kotlin","rest-api"]).describe(`
|
|
22
|
-
SDK languages:
|
|
23
|
-
|
|
24
|
-
- "typescript" - JavaScript/TypeScript SDK
|
|
25
|
-
- "swift" - Swift SDK
|
|
26
|
-
- "kotlin" - Kotlin SDK
|
|
27
|
-
- "rest-api" - REST API
|
|
28
|
-
`);nt(["instructions","auth-sdk","db-sdk","storage-sdk","functions-sdk","ai-integration-sdk","real-time","deployment"]).describe(`
|
|
29
|
-
Documentation type:
|
|
30
|
-
"instructions" (essential backend setup - use FIRST),
|
|
31
|
-
"db-sdk" (database operations),
|
|
32
|
-
"storage-sdk" (file storage),
|
|
33
|
-
"functions-sdk" (edge functions),
|
|
34
|
-
"auth-sdk" (direct SDK methods for custom auth flows),
|
|
35
|
-
"ai-integration-sdk" (AI features),
|
|
36
|
-
"real-time" (real-time pub/sub through WebSockets),
|
|
37
|
-
"deployment" (deploy frontend applications via MCP tool)
|
|
38
|
-
`);const Eh=zn([ba,ie(ba).min(1,"At least one email is required").max(50,"Maximum 50 recipients allowed")]);T({to:Eh,subject:v().trim().min(1,"Subject is required").max(500,"Subject too long"),html:v().trim().min(1,"HTML content is required"),cc:Eh.optional(),bcc:Eh.optional(),from:v().trim().max(100,"From name too long").optional(),replyTo:v().email("Reply-To must be a valid email").optional()});T({});const ZE=nt(["WAITING","UPLOADING","QUEUED","BUILDING","READY","ERROR","CANCELED"]),XE=T({id:v().uuid(),providerDeploymentId:v().nullable(),provider:v(),status:ZE,url:v().nullable(),metadata:_t(Jt()).nullable(),createdAt:v().datetime(),updatedAt:v().datetime()}),QE=T({buildCommand:v().nullable().optional(),outputDirectory:v().nullable().optional(),installCommand:v().nullable().optional(),devCommand:v().nullable().optional(),rootDirectory:v().nullable().optional()}),JE=T({key:v(),value:v()});T({id:v().uuid(),uploadUrl:v().url(),uploadFields:_t(v())});T({projectSettings:QE.optional(),envVars:ie(JE).optional(),meta:_t(v()).optional()});T({data:ie(XE),pagination:T({limit:Q(),offset:Q(),total:Q()})});const eA=T({id:v(),key:v(),type:nt(["plain","encrypted","secret","sensitive","system"]),updatedAt:Q().optional()}),tA=T({id:v(),key:v(),value:v(),type:nt(["plain","encrypted","secret","sensitive","system"]),updatedAt:Q().optional()});T({envVars:ie(eA)});T({envVar:tA});const nA=T({key:v().trim().min(1,"key is required"),value:v()});T({envVars:ie(nA).min(1)}).superRefine(({envVars:e},t)=>{const n=new Map;e.forEach((r,o)=>{if(n.get(r.key)!==void 0){t.addIssue({code:ae.custom,message:"duplicate environment variable key",path:["envVars",o,"key"]});return}n.set(r.key,o)})});T({success:Ye(!0),message:v()});T({success:Ye(!0),message:v(),count:Q().int().positive()});T({success:Ye(!0),message:v()});T({slug:v().trim().min(3,"slug must be at least 3 characters").max(63,"slug must be at most 63 characters").regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,"slug must be lowercase alphanumeric with hyphens, not starting or ending with hyphen").nullable()});T({success:Be(),slug:v().nullable(),domain:v().nullable()});T({currentDeploymentId:v().uuid().nullable(),defaultDomainUrl:v().nullable(),customDomainUrl:v().nullable()});const aA=T({type:v(),domain:v(),value:v()}),rA=T({domain:v(),apexDomain:v(),verified:Be(),misconfigured:Be(),verification:ie(aA),cnameTarget:v().nullable(),aRecordValue:v().nullable()});T({domain:v().trim().min(1,"Domain is required").regex(/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i,"Invalid domain format (e.g. myapp.com or www.myapp.com)").refine(e=>!e.toLowerCase().endsWith(".insforge.site"),{message:"Domains ending with .insforge.site are reserved by InsForge"})});T({domains:ie(rA)});const iA=T({id:v().uuid(),name:v(),cronSchedule:v(),functionUrl:v().url(),httpMethod:nt(["GET","POST","PUT","PATCH","DELETE"]),headers:_t(v()).nullable(),body:zn([v(),_t(Jt())]).nullable(),cronJobId:v().nullable(),lastExecutedAt:v().datetime().nullable(),isActive:Be().default(!0),nextRun:v().datetime().nullable(),createdAt:v().datetime(),updatedAt:v().datetime()}),oA=T({id:v().uuid(),scheduleId:v().uuid(),executedAt:v().datetime(),statusCode:Q().int(),success:Be(),durationMs:Q().int(),message:v().nullable()}),Tb=v().refine(e=>{const t=e.split(" ");return t.length===5||t.length===6},{message:'Invalid cron schedule format. Use 5 or 6 parts (e.g., "* * * * *").'});T({name:v().min(3,"Schedule name must be at least 3 characters long"),cronSchedule:Tb,functionUrl:v().url("The function URL must be a valid URL."),httpMethod:nt(["GET","POST","PUT","PATCH","DELETE"]),headers:_t(v()).optional().describe("Header values can reference secrets using ${{secrets.KEY_NAME}} syntax."),body:_t(Jt()).optional().describe("The JSON body to send with the request.")});T({name:v().min(3,"Schedule name must be at least 3 characters long").optional(),cronSchedule:Tb.optional(),functionUrl:v().url("The function URL must be a valid URL.").optional(),httpMethod:nt(["GET","POST","PUT","PATCH","DELETE"]).optional(),headers:_t(v()).optional().describe("Header values can reference secrets using ${{secrets.KEY_NAME}} syntax."),body:_t(Jt()).optional().describe("The JSON body to send with the request."),isActive:Be().optional().describe("Enable or disable the schedule.")});ie(iA);const sA=oA;T({logs:ie(sA),totalCount:Q().int().nonnegative(),limit:Q().int().positive(),offset:Q().int().nonnegative()});T({id:v().uuid(),cronJobId:v(),message:v()});T({id:v().uuid(),cronJobId:v().optional(),message:v()});T({message:v()});var zt={},Yi={},Zi={},Xi={},Qi={},Ji={},lA=function(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")},fo=lA();const cA=fo.fetch,uA=fo.fetch.bind(fo),dA=fo.Headers,hA=fo.Request,pA=fo.Response,fA=Object.freeze(Object.defineProperty({__proto__:null,Headers:dA,Request:hA,Response:pA,default:uA,fetch:cA},Symbol.toStringTag,{value:"Module"})),mA=AS(fA);var fc={},Lv;function Eb(){if(Lv)return fc;Lv=1,Object.defineProperty(fc,"__esModule",{value:!0});class e extends Error{constructor(n){super(n.message),this.name="PostgrestError",this.details=n.details,this.hint=n.hint,this.code=n.code}}return fc.default=e,fc}var Dv;function Ab(){if(Dv)return Ji;Dv=1;var e=Ji&&Ji.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(Ji,"__esModule",{value:!0});const t=e(mA),n=e(Eb());class r{constructor(s){var c,u;this.shouldThrowOnError=!1,this.method=s.method,this.url=s.url,this.headers=new Headers(s.headers),this.schema=s.schema,this.body=s.body,this.shouldThrowOnError=(c=s.shouldThrowOnError)!==null&&c!==void 0?c:!1,this.signal=s.signal,this.isMaybeSingle=(u=s.isMaybeSingle)!==null&&u!==void 0?u:!1,s.fetch?this.fetch=s.fetch:typeof fetch>"u"?this.fetch=t.default:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(s,c){return this.headers=new Headers(this.headers),this.headers.set(s,c),this}then(s,c){this.schema===void 0||(["GET","HEAD"].includes(this.method)?this.headers.set("Accept-Profile",this.schema):this.headers.set("Content-Profile",this.schema)),this.method!=="GET"&&this.method!=="HEAD"&&this.headers.set("Content-Type","application/json");const u=this.fetch;let h=u(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(async p=>{var m,y,k,w;let x=null,C=null,S=null,D=p.status,L=p.statusText;if(p.ok){if(this.method!=="HEAD"){const W=await p.text();W===""||(this.headers.get("Accept")==="text/csv"||this.headers.get("Accept")&&(!((m=this.headers.get("Accept"))===null||m===void 0)&&m.includes("application/vnd.pgrst.plan+text"))?C=W:C=JSON.parse(W))}const O=(y=this.headers.get("Prefer"))===null||y===void 0?void 0:y.match(/count=(exact|planned|estimated)/),K=(k=p.headers.get("content-range"))===null||k===void 0?void 0:k.split("/");O&&K&&K.length>1&&(S=parseInt(K[1])),this.isMaybeSingle&&this.method==="GET"&&Array.isArray(C)&&(C.length>1?(x={code:"PGRST116",details:`Results contain ${C.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},C=null,S=null,D=406,L="Not Acceptable"):C.length===1?C=C[0]:C=null)}else{const O=await p.text();try{x=JSON.parse(O),Array.isArray(x)&&p.status===404&&(C=[],x=null,D=200,L="OK")}catch{p.status===404&&O===""?(D=204,L="No Content"):x={message:O}}if(x&&this.isMaybeSingle&&(!((w=x?.details)===null||w===void 0)&&w.includes("0 rows"))&&(x=null,D=200,L="OK"),x&&this.shouldThrowOnError)throw new n.default(x)}return{error:x,data:C,count:S,status:D,statusText:L}});return this.shouldThrowOnError||(h=h.catch(p=>{var m,y,k;return{error:{message:`${(m=p?.name)!==null&&m!==void 0?m:"FetchError"}: ${p?.message}`,details:`${(y=p?.stack)!==null&&y!==void 0?y:""}`,hint:"",code:`${(k=p?.code)!==null&&k!==void 0?k:""}`},data:null,count:null,status:0,statusText:""}})),h.then(s,c)}returns(){return this}overrideTypes(){return this}}return Ji.default=r,Ji}var Iv;function Rb(){if(Iv)return Qi;Iv=1;var e=Qi&&Qi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Qi,"__esModule",{value:!0});const t=e(Ab());class n extends t.default{select(o){let s=!1;const c=(o??"*").split("").map(u=>/\s/.test(u)&&!s?"":(u==='"'&&(s=!s),u)).join("");return this.url.searchParams.set("select",c),this.headers.append("Prefer","return=representation"),this}order(o,{ascending:s=!0,nullsFirst:c,foreignTable:u,referencedTable:h=u}={}){const p=h?`${h}.order`:"order",m=this.url.searchParams.get(p);return this.url.searchParams.set(p,`${m?`${m},`:""}${o}.${s?"asc":"desc"}${c===void 0?"":c?".nullsfirst":".nullslast"}`),this}limit(o,{foreignTable:s,referencedTable:c=s}={}){const u=typeof c>"u"?"limit":`${c}.limit`;return this.url.searchParams.set(u,`${o}`),this}range(o,s,{foreignTable:c,referencedTable:u=c}={}){const h=typeof u>"u"?"offset":`${u}.offset`,p=typeof u>"u"?"limit":`${u}.limit`;return this.url.searchParams.set(h,`${o}`),this.url.searchParams.set(p,`${s-o+1}`),this}abortSignal(o){return this.signal=o,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.method==="GET"?this.headers.set("Accept","application/json"):this.headers.set("Accept","application/vnd.pgrst.object+json"),this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}explain({analyze:o=!1,verbose:s=!1,settings:c=!1,buffers:u=!1,wal:h=!1,format:p="text"}={}){var m;const y=[o?"analyze":null,s?"verbose":null,c?"settings":null,u?"buffers":null,h?"wal":null].filter(Boolean).join("|"),k=(m=this.headers.get("Accept"))!==null&&m!==void 0?m:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${p}; for="${k}"; options=${y};`),p==="json"?this:this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(o){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${o}`),this}}return Qi.default=n,Qi}var Mv;function gf(){if(Mv)return Xi;Mv=1;var e=Xi&&Xi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Xi,"__esModule",{value:!0});const t=e(Rb());class n extends t.default{eq(o,s){return this.url.searchParams.append(o,`eq.${s}`),this}neq(o,s){return this.url.searchParams.append(o,`neq.${s}`),this}gt(o,s){return this.url.searchParams.append(o,`gt.${s}`),this}gte(o,s){return this.url.searchParams.append(o,`gte.${s}`),this}lt(o,s){return this.url.searchParams.append(o,`lt.${s}`),this}lte(o,s){return this.url.searchParams.append(o,`lte.${s}`),this}like(o,s){return this.url.searchParams.append(o,`like.${s}`),this}likeAllOf(o,s){return this.url.searchParams.append(o,`like(all).{${s.join(",")}}`),this}likeAnyOf(o,s){return this.url.searchParams.append(o,`like(any).{${s.join(",")}}`),this}ilike(o,s){return this.url.searchParams.append(o,`ilike.${s}`),this}ilikeAllOf(o,s){return this.url.searchParams.append(o,`ilike(all).{${s.join(",")}}`),this}ilikeAnyOf(o,s){return this.url.searchParams.append(o,`ilike(any).{${s.join(",")}}`),this}is(o,s){return this.url.searchParams.append(o,`is.${s}`),this}in(o,s){const c=Array.from(new Set(s)).map(u=>typeof u=="string"&&new RegExp("[,()]").test(u)?`"${u}"`:`${u}`).join(",");return this.url.searchParams.append(o,`in.(${c})`),this}contains(o,s){return typeof s=="string"?this.url.searchParams.append(o,`cs.${s}`):Array.isArray(s)?this.url.searchParams.append(o,`cs.{${s.join(",")}}`):this.url.searchParams.append(o,`cs.${JSON.stringify(s)}`),this}containedBy(o,s){return typeof s=="string"?this.url.searchParams.append(o,`cd.${s}`):Array.isArray(s)?this.url.searchParams.append(o,`cd.{${s.join(",")}}`):this.url.searchParams.append(o,`cd.${JSON.stringify(s)}`),this}rangeGt(o,s){return this.url.searchParams.append(o,`sr.${s}`),this}rangeGte(o,s){return this.url.searchParams.append(o,`nxl.${s}`),this}rangeLt(o,s){return this.url.searchParams.append(o,`sl.${s}`),this}rangeLte(o,s){return this.url.searchParams.append(o,`nxr.${s}`),this}rangeAdjacent(o,s){return this.url.searchParams.append(o,`adj.${s}`),this}overlaps(o,s){return typeof s=="string"?this.url.searchParams.append(o,`ov.${s}`):this.url.searchParams.append(o,`ov.{${s.join(",")}}`),this}textSearch(o,s,{config:c,type:u}={}){let h="";u==="plain"?h="pl":u==="phrase"?h="ph":u==="websearch"&&(h="w");const p=c===void 0?"":`(${c})`;return this.url.searchParams.append(o,`${h}fts${p}.${s}`),this}match(o){return Object.entries(o).forEach(([s,c])=>{this.url.searchParams.append(s,`eq.${c}`)}),this}not(o,s,c){return this.url.searchParams.append(o,`not.${s}.${c}`),this}or(o,{foreignTable:s,referencedTable:c=s}={}){const u=c?`${c}.or`:"or";return this.url.searchParams.append(u,`(${o})`),this}filter(o,s,c){return this.url.searchParams.append(o,`${s}.${c}`),this}}return Xi.default=n,Xi}var Nv;function Lb(){if(Nv)return Zi;Nv=1;var e=Zi&&Zi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Zi,"__esModule",{value:!0});const t=e(gf());class n{constructor(o,{headers:s={},schema:c,fetch:u}){this.url=o,this.headers=new Headers(s),this.schema=c,this.fetch=u}select(o,{head:s=!1,count:c}={}){const u=s?"HEAD":"GET";let h=!1;const p=(o??"*").split("").map(m=>/\s/.test(m)&&!h?"":(m==='"'&&(h=!h),m)).join("");return this.url.searchParams.set("select",p),c&&this.headers.append("Prefer",`count=${c}`),new t.default({method:u,url:this.url,headers:this.headers,schema:this.schema,fetch:this.fetch})}insert(o,{count:s,defaultToNull:c=!0}={}){var u;const h="POST";if(s&&this.headers.append("Prefer",`count=${s}`),c||this.headers.append("Prefer","missing=default"),Array.isArray(o)){const p=o.reduce((m,y)=>m.concat(Object.keys(y)),[]);if(p.length>0){const m=[...new Set(p)].map(y=>`"${y}"`);this.url.searchParams.set("columns",m.join(","))}}return new t.default({method:h,url:this.url,headers:this.headers,schema:this.schema,body:o,fetch:(u=this.fetch)!==null&&u!==void 0?u:fetch})}upsert(o,{onConflict:s,ignoreDuplicates:c=!1,count:u,defaultToNull:h=!0}={}){var p;const m="POST";if(this.headers.append("Prefer",`resolution=${c?"ignore":"merge"}-duplicates`),s!==void 0&&this.url.searchParams.set("on_conflict",s),u&&this.headers.append("Prefer",`count=${u}`),h||this.headers.append("Prefer","missing=default"),Array.isArray(o)){const y=o.reduce((k,w)=>k.concat(Object.keys(w)),[]);if(y.length>0){const k=[...new Set(y)].map(w=>`"${w}"`);this.url.searchParams.set("columns",k.join(","))}}return new t.default({method:m,url:this.url,headers:this.headers,schema:this.schema,body:o,fetch:(p=this.fetch)!==null&&p!==void 0?p:fetch})}update(o,{count:s}={}){var c;const u="PATCH";return s&&this.headers.append("Prefer",`count=${s}`),new t.default({method:u,url:this.url,headers:this.headers,schema:this.schema,body:o,fetch:(c=this.fetch)!==null&&c!==void 0?c:fetch})}delete({count:o}={}){var s;const c="DELETE";return o&&this.headers.append("Prefer",`count=${o}`),new t.default({method:c,url:this.url,headers:this.headers,schema:this.schema,fetch:(s=this.fetch)!==null&&s!==void 0?s:fetch})}}return Zi.default=n,Zi}var Ov;function gA(){if(Ov)return Yi;Ov=1;var e=Yi&&Yi.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(Yi,"__esModule",{value:!0});const t=e(Lb()),n=e(gf());class r{constructor(s,{headers:c={},schema:u,fetch:h}={}){this.url=s,this.headers=new Headers(c),this.schemaName=u,this.fetch=h}from(s){const c=new URL(`${this.url}/${s}`);return new t.default(c,{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch})}schema(s){return new r(this.url,{headers:this.headers,schema:s,fetch:this.fetch})}rpc(s,c={},{head:u=!1,get:h=!1,count:p}={}){var m;let y;const k=new URL(`${this.url}/rpc/${s}`);let w;u||h?(y=u?"HEAD":"GET",Object.entries(c).filter(([C,S])=>S!==void 0).map(([C,S])=>[C,Array.isArray(S)?`{${S.join(",")}}`:`${S}`]).forEach(([C,S])=>{k.searchParams.append(C,S)})):(y="POST",w=c);const x=new Headers(this.headers);return p&&x.set("Prefer",`count=${p}`),new n.default({method:y,url:k,headers:x,schema:this.schemaName,body:w,fetch:(m=this.fetch)!==null&&m!==void 0?m:fetch})}}return Yi.default=r,Yi}var jv;function yA(){if(jv)return zt;jv=1;var e=zt&&zt.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(zt,"__esModule",{value:!0}),zt.PostgrestError=zt.PostgrestBuilder=zt.PostgrestTransformBuilder=zt.PostgrestFilterBuilder=zt.PostgrestQueryBuilder=zt.PostgrestClient=void 0;const t=e(gA());zt.PostgrestClient=t.default;const n=e(Lb());zt.PostgrestQueryBuilder=n.default;const r=e(gf());zt.PostgrestFilterBuilder=r.default;const o=e(Rb());zt.PostgrestTransformBuilder=o.default;const s=e(Ab());zt.PostgrestBuilder=s.default;const c=e(Eb());return zt.PostgrestError=c.default,zt.default={PostgrestClient:t.default,PostgrestQueryBuilder:n.default,PostgrestFilterBuilder:r.default,PostgrestTransformBuilder:o.default,PostgrestBuilder:s.default,PostgrestError:c.default},zt}var vA=yA();const kA=R_(vA),{PostgrestClient:_A,PostgrestQueryBuilder:_U,PostgrestFilterBuilder:bU,PostgrestTransformBuilder:wU,PostgrestBuilder:xU,PostgrestError:PU}=kA,wa=Object.create(null);wa.open="0";wa.close="1";wa.ping="2";wa.pong="3";wa.message="4";wa.upgrade="5";wa.noop="6";const Rc=Object.create(null);Object.keys(wa).forEach(e=>{Rc[wa[e]]=e});const fp={type:"error",data:"parser error"},Db=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",Ib=typeof ArrayBuffer=="function",Mb=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,yf=({type:e,data:t},n,r)=>Db&&t instanceof Blob?n?r(t):Uv(t,r):Ib&&(t instanceof ArrayBuffer||Mb(t))?n?r(t):Uv(new Blob([t]),r):r(wa[e]+(t||"")),Uv=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function Bv(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Ah;function bA(e,t){if(Db&&e.data instanceof Blob)return e.data.arrayBuffer().then(Bv).then(t);if(Ib&&(e.data instanceof ArrayBuffer||Mb(e.data)))return t(Bv(e.data));yf(e,!1,n=>{Ah||(Ah=new TextEncoder),t(Ah.encode(n))})}const Fv="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",_s=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e<Fv.length;e++)_s[Fv.charCodeAt(e)]=e;const wA=e=>{let t=e.length*.75,n=e.length,r,o=0,s,c,u,h;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const p=new ArrayBuffer(t),m=new Uint8Array(p);for(r=0;r<n;r+=4)s=_s[e.charCodeAt(r)],c=_s[e.charCodeAt(r+1)],u=_s[e.charCodeAt(r+2)],h=_s[e.charCodeAt(r+3)],m[o++]=s<<2|c>>4,m[o++]=(c&15)<<4|u>>2,m[o++]=(u&3)<<6|h&63;return p},xA=typeof ArrayBuffer=="function",vf=(e,t)=>{if(typeof e!="string")return{type:"message",data:Nb(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:PA(e.substring(1),t)}:Rc[n]?e.length>1?{type:Rc[n],data:e.substring(1)}:{type:Rc[n]}:fp},PA=(e,t)=>{if(xA){const n=wA(e);return Nb(n,t)}else return{base64:!0,data:e}},Nb=(e,t)=>t==="blob"?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,Ob="",SA=(e,t)=>{const n=e.length,r=new Array(n);let o=0;e.forEach((s,c)=>{yf(s,!1,u=>{r[c]=u,++o===n&&t(r.join(Ob))})})},CA=(e,t)=>{const n=e.split(Ob),r=[];for(let o=0;o<n.length;o++){const s=vf(n[o],t);if(r.push(s),s.type==="error")break}return r};function TA(){return new TransformStream({transform(e,t){bA(e,n=>{const r=n.length;let o;if(r<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,r);else if(r<65536){o=new Uint8Array(3);const s=new DataView(o.buffer);s.setUint8(0,126),s.setUint16(1,r)}else{o=new Uint8Array(9);const s=new DataView(o.buffer);s.setUint8(0,127),s.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(o[0]|=128),t.enqueue(o),t.enqueue(n)})}})}let Rh;function mc(e){return e.reduce((t,n)=>t+n.length,0)}function gc(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let o=0;o<t;o++)n[o]=e[0][r++],r===e[0].length&&(e.shift(),r=0);return e.length&&r<e[0].length&&(e[0]=e[0].slice(r)),n}function EA(e,t){Rh||(Rh=new TextDecoder);const n=[];let r=0,o=-1,s=!1;return new TransformStream({transform(c,u){for(n.push(c);;){if(r===0){if(mc(n)<1)break;const h=gc(n,1);s=(h[0]&128)===128,o=h[0]&127,o<126?r=3:o===126?r=1:r=2}else if(r===1){if(mc(n)<2)break;const h=gc(n,2);o=new DataView(h.buffer,h.byteOffset,h.length).getUint16(0),r=3}else if(r===2){if(mc(n)<8)break;const h=gc(n,8),p=new DataView(h.buffer,h.byteOffset,h.length),m=p.getUint32(0);if(m>Math.pow(2,21)-1){u.enqueue(fp);break}o=m*Math.pow(2,32)+p.getUint32(4),r=3}else{if(mc(n)<o)break;const h=gc(n,o);u.enqueue(vf(s?h:Rh.decode(h),t)),r=0}if(o===0||o>e){u.enqueue(fp);break}}}})}const jb=4;function Dt(e){if(e)return AA(e)}function AA(e){for(var t in Dt.prototype)e[t]=Dt.prototype[t];return e}Dt.prototype.on=Dt.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};Dt.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};Dt.prototype.off=Dt.prototype.removeListener=Dt.prototype.removeAllListeners=Dt.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var r,o=0;o<n.length;o++)if(r=n[o],r===t||r.fn===t){n.splice(o,1);break}return n.length===0&&delete this._callbacks["$"+e],this};Dt.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),n=this._callbacks["$"+e],r=1;r<arguments.length;r++)t[r-1]=arguments[r];if(n){n=n.slice(0);for(var r=0,o=n.length;r<o;++r)n[r].apply(this,t)}return this};Dt.prototype.emitReserved=Dt.prototype.emit;Dt.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]};Dt.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Tu=typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,n)=>n(t,0),Nn=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),RA="arraybuffer";function Ub(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const LA=Nn.setTimeout,DA=Nn.clearTimeout;function Eu(e,t){t.useNativeTimers?(e.setTimeoutFn=LA.bind(Nn),e.clearTimeoutFn=DA.bind(Nn)):(e.setTimeoutFn=Nn.setTimeout.bind(Nn),e.clearTimeoutFn=Nn.clearTimeout.bind(Nn))}const IA=1.33;function MA(e){return typeof e=="string"?NA(e):Math.ceil((e.byteLength||e.size)*IA)}function NA(e){let t=0,n=0;for(let r=0,o=e.length;r<o;r++)t=e.charCodeAt(r),t<128?n+=1:t<2048?n+=2:t<55296||t>=57344?n+=3:(r++,n+=4);return n}function Bb(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function OA(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function jA(e){let t={},n=e.split("&");for(let r=0,o=n.length;r<o;r++){let s=n[r].split("=");t[decodeURIComponent(s[0])]=decodeURIComponent(s[1])}return t}class UA extends Error{constructor(t,n,r){super(t),this.description=n,this.context=r,this.type="TransportError"}}class kf extends Dt{constructor(t){super(),this.writable=!1,Eu(this,t),this.opts=t,this.query=t.query,this.socket=t.socket,this.supportsBinary=!t.forceBase64}onError(t,n,r){return super.emitReserved("error",new UA(t,n,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(t){this.readyState==="open"&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const n=vf(t,this.socket.binaryType);this.onPacket(n)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}pause(t){}createUri(t,n={}){return t+"://"+this._hostname()+this._port()+this.opts.path+this._query(n)}_hostname(){const t=this.opts.hostname;return t.indexOf(":")===-1?t:"["+t+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(t){const n=OA(t);return n.length?"?"+n:""}}class BA extends kf{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(t){this.readyState="pausing";const n=()=>{this.readyState="paused",t()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||n()})),this.writable||(r++,this.once("drain",function(){--r||n()}))}else n()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const n=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};CA(t,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,SA(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=Bb()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(t,n)}}let Fb=!1;try{Fb=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const FA=Fb;function VA(){}class zA extends BA{constructor(t){if(super(t),typeof location<"u"){const n=location.protocol==="https:";let r=location.port;r||(r=n?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||r!==t.port}}doWrite(t,n){const r=this.request({method:"POST",data:t});r.on("success",n),r.on("error",(o,s)=>{this.onError("xhr post error",o,s)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(n,r)=>{this.onError("xhr poll error",n,r)}),this.pollXhr=t}}let co=class Lc extends Dt{constructor(t,n,r){super(),this.createRequest=t,Eu(this,r),this._opts=r,this._method=r.method||"GET",this._uri=n,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var t;const n=Ub(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(n);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let o in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(o)&&r.setRequestHeader(o,this._opts.extraHeaders[o])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var o;r.readyState===3&&((o=this._opts.cookieJar)===null||o===void 0||o.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(o){this.setTimeoutFn(()=>{this._onError(o)},0);return}typeof document<"u"&&(this._index=Lc.requestsCount++,Lc.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=VA,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Lc.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};co.requestsCount=0;co.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Vv);else if(typeof addEventListener=="function"){const e="onpagehide"in Nn?"pagehide":"unload";addEventListener(e,Vv,!1)}}function Vv(){for(let e in co.requests)co.requests.hasOwnProperty(e)&&co.requests[e].abort()}const HA=(function(){const e=Vb({xdomain:!1});return e&&e.responseType!==null})();class $A extends zA{constructor(t){super(t);const n=t&&t.forceBase64;this.supportsBinary=HA&&!n}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new co(Vb,this.uri(),t)}}function Vb(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||FA))return new XMLHttpRequest}catch{}if(!t)try{return new Nn[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const zb=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class WA extends kf{get name(){return"websocket"}doOpen(){const t=this.uri(),n=this.opts.protocols,r=zb?{}:Ub(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,n,r)}catch(o){return this.emitReserved("error",o)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let n=0;n<t.length;n++){const r=t[n],o=n===t.length-1;yf(r,this.supportsBinary,s=>{try{this.doWrite(r,s)}catch{}o&&Tu(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=Bb()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}}const Lh=Nn.WebSocket||Nn.MozWebSocket;class GA extends WA{createSocket(t,n,r){return zb?new Lh(t,n,r):n?new Lh(t,n):new Lh(t)}doWrite(t,n){this.ws.send(n)}}class KA extends kf{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{const n=EA(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(n).getReader(),o=TA();o.readable.pipeTo(t.writable),this._writer=o.writable.getWriter();const s=()=>{r.read().then(({done:u,value:h})=>{u||(this.onPacket(h),s())}).catch(u=>{})};s();const c={type:"open"};this.query.sid&&(c.data=`{"sid":"${this.query.sid}"}`),this._writer.write(c).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let n=0;n<t.length;n++){const r=t[n],o=n===t.length-1;this._writer.write(r).then(()=>{o&&Tu(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}}const qA={websocket:GA,webtransport:KA,polling:$A},YA=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,ZA=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function mp(e){if(e.length>8e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");n!=-1&&r!=-1&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let o=YA.exec(e||""),s={},c=14;for(;c--;)s[ZA[c]]=o[c]||"";return n!=-1&&r!=-1&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=XA(s,s.path),s.queryKey=QA(s,s.query),s}function XA(e,t){const n=/\/{2,9}/g,r=t.replace(n,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&r.splice(0,1),t.slice(-1)=="/"&&r.splice(r.length-1,1),r}function QA(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,o,s){o&&(n[o]=s)}),n}const gp=typeof addEventListener=="function"&&typeof removeEventListener=="function",Dc=[];gp&&addEventListener("offline",()=>{Dc.forEach(e=>e())},!1);class Dr extends Dt{constructor(t,n){if(super(),this.binaryType=RA,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(n=t,t=null),t){const r=mp(t);n.hostname=r.host,n.secure=r.protocol==="https"||r.protocol==="wss",n.port=r.port,r.query&&(n.query=r.query)}else n.host&&(n.hostname=mp(n.host).host);Eu(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},n.transports.forEach(r=>{const o=r.prototype.name;this.transports.push(o),this._transportsByName[o]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=jA(this.opts.query)),gp&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Dc.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const n=Object.assign({},this.opts.query);n.EIO=jb,n.transport=t,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const t=this.opts.rememberUpgrade&&Dr.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const n=this.createTransport(t);n.open(),this.setTransport(n)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",n=>this._onClose("transport close",n))}onOpen(){this.readyState="open",Dr.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const n=new Error("server error");n.code=t.data,this._onError(n);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let r=0;r<this.writeBuffer.length;r++){const o=this.writeBuffer[r].data;if(o&&(n+=MA(o)),r>0&&n>this._maxPayload)return this.writeBuffer.slice(0,r);n+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,Tu(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,n,r){return this._sendPacket("message",t,n,r),this}send(t,n,r){return this._sendPacket("message",t,n,r),this}_sendPacket(t,n,r,o){if(typeof n=="function"&&(o=n,n=void 0),typeof r=="function"&&(o=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const s={type:t,data:n,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),o&&this.once("flush",o),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),t()},r=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():t()}):this.upgrading?r():t()),this}_onError(t){if(Dr.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,n){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),gp&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const r=Dc.indexOf(this._offlineEventListener);r!==-1&&Dc.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this._prevBufferLen=0}}}Dr.protocol=jb;class JA extends Dr{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t<this._upgrades.length;t++)this._probe(this._upgrades[t])}_probe(t){let n=this.createTransport(t),r=!1;Dr.priorWebsocketSuccess=!1;const o=()=>{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",y=>{if(!r)if(y.type==="pong"&&y.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;Dr.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(m(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const k=new Error("probe error");k.transport=n.name,this.emitReserved("upgradeError",k)}}))};function s(){r||(r=!0,m(),n.close(),n=null)}const c=y=>{const k=new Error("probe error: "+y);k.transport=n.name,s(),this.emitReserved("upgradeError",k)};function u(){c("transport closed")}function h(){c("socket closed")}function p(y){n&&y.name!==n.name&&s()}const m=()=>{n.removeListener("open",o),n.removeListener("error",c),n.removeListener("close",u),this.off("close",h),this.off("upgrading",p)};n.once("open",o),n.once("error",c),n.once("close",u),this.once("close",h),this.once("upgrading",p),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{r||n.open()},200):n.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const n=[];for(let r=0;r<t.length;r++)~this.transports.indexOf(t[r])&&n.push(t[r]);return n}}let eR=class extends JA{constructor(t,n={}){const r=typeof t=="object"?t:n;(!r.transports||r.transports&&typeof r.transports[0]=="string")&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map(o=>qA[o]).filter(o=>!!o)),super(t,r)}};function tR(e,t="",n){let r=e;n=n||typeof location<"u"&&location,e==null&&(e=n.protocol+"//"+n.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=n.protocol+e:e=n.host+e),/^(https?|wss?):\/\//.test(e)||(typeof n<"u"?e=n.protocol+"//"+e:e="https://"+e),r=mp(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const s=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+s+":"+r.port+t,r.href=r.protocol+"://"+s+(n&&n.port===r.port?"":":"+r.port),r}const nR=typeof ArrayBuffer=="function",aR=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Hb=Object.prototype.toString,rR=typeof Blob=="function"||typeof Blob<"u"&&Hb.call(Blob)==="[object BlobConstructor]",iR=typeof File=="function"||typeof File<"u"&&Hb.call(File)==="[object FileConstructor]";function _f(e){return nR&&(e instanceof ArrayBuffer||aR(e))||rR&&e instanceof Blob||iR&&e instanceof File}function Ic(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,r=e.length;n<r;n++)if(Ic(e[n]))return!0;return!1}if(_f(e))return!0;if(e.toJSON&&typeof e.toJSON=="function"&&arguments.length===1)return Ic(e.toJSON(),!0);for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&Ic(e[n]))return!0;return!1}function oR(e){const t=[],n=e.data,r=e;return r.data=yp(n,t),r.attachments=t.length,{packet:r,buffers:t}}function yp(e,t){if(!e)return e;if(_f(e)){const n={_placeholder:!0,num:t.length};return t.push(e),n}else if(Array.isArray(e)){const n=new Array(e.length);for(let r=0;r<e.length;r++)n[r]=yp(e[r],t);return n}else if(typeof e=="object"&&!(e instanceof Date)){const n={};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=yp(e[r],t));return n}return e}function sR(e,t){return e.data=vp(e.data,t),delete e.attachments,e}function vp(e,t){if(!e)return e;if(e&&e._placeholder===!0){if(typeof e.num=="number"&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}else if(Array.isArray(e))for(let n=0;n<e.length;n++)e[n]=vp(e[n],t);else if(typeof e=="object")for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(e[n]=vp(e[n],t));return e}const lR=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var tt;(function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"})(tt||(tt={}));class cR{constructor(t){this.replacer=t}encode(t){return(t.type===tt.EVENT||t.type===tt.ACK)&&Ic(t)?this.encodeAsBinary({type:t.type===tt.EVENT?tt.BINARY_EVENT:tt.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id}):[this.encodeAsString(t)]}encodeAsString(t){let n=""+t.type;return(t.type===tt.BINARY_EVENT||t.type===tt.BINARY_ACK)&&(n+=t.attachments+"-"),t.nsp&&t.nsp!=="/"&&(n+=t.nsp+","),t.id!=null&&(n+=t.id),t.data!=null&&(n+=JSON.stringify(t.data,this.replacer)),n}encodeAsBinary(t){const n=oR(t),r=this.encodeAsString(n.packet),o=n.buffers;return o.unshift(r),o}}class bf extends Dt{constructor(t){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},typeof t=="function"?{reviver:t}:t)}add(t){let n;if(typeof t=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");n=this.decodeString(t);const r=n.type===tt.BINARY_EVENT;r||n.type===tt.BINARY_ACK?(n.type=r?tt.EVENT:tt.ACK,this.reconstructor=new uR(n),n.attachments===0&&super.emitReserved("decoded",n)):super.emitReserved("decoded",n)}else if(_f(t)||t.base64)if(this.reconstructor)n=this.reconstructor.takeBinaryData(t),n&&(this.reconstructor=null,super.emitReserved("decoded",n));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+t)}decodeString(t){let n=0;const r={type:Number(t.charAt(0))};if(tt[r.type]===void 0)throw new Error("unknown packet type "+r.type);if(r.type===tt.BINARY_EVENT||r.type===tt.BINARY_ACK){const s=n+1;for(;t.charAt(++n)!=="-"&&n!=t.length;);const c=t.substring(s,n);if(c!=Number(c)||t.charAt(n)!=="-")throw new Error("Illegal attachments");const u=Number(c);if(!dR(u)||u<0)throw new Error("Illegal attachments");if(u>this.opts.maxAttachments)throw new Error("too many attachments");r.attachments=u}if(t.charAt(n+1)==="/"){const s=n+1;for(;++n&&!(t.charAt(n)===","||n===t.length););r.nsp=t.substring(s,n)}else r.nsp="/";const o=t.charAt(n+1);if(o!==""&&Number(o)==o){const s=n+1;for(;++n;){const c=t.charAt(n);if(c==null||Number(c)!=c){--n;break}if(n===t.length)break}r.id=Number(t.substring(s,n+1))}if(t.charAt(++n)){const s=this.tryParse(t.substr(n));if(bf.isPayloadValid(r.type,s))r.data=s;else throw new Error("invalid payload")}return r}tryParse(t){try{return JSON.parse(t,this.opts.reviver)}catch{return!1}}static isPayloadValid(t,n){switch(t){case tt.CONNECT:return zv(n);case tt.DISCONNECT:return n===void 0;case tt.CONNECT_ERROR:return typeof n=="string"||zv(n);case tt.EVENT:case tt.BINARY_EVENT:return Array.isArray(n)&&(typeof n[0]=="number"||typeof n[0]=="string"&&lR.indexOf(n[0])===-1);case tt.ACK:case tt.BINARY_ACK:return Array.isArray(n)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class uR{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const n=sR(this.reconPack,this.buffers);return this.finishedReconstruction(),n}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const dR=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e};function zv(e){return Object.prototype.toString.call(e)==="[object Object]"}const hR=Object.freeze(Object.defineProperty({__proto__:null,Decoder:bf,Encoder:cR,get PacketType(){return tt}},Symbol.toStringTag,{value:"Module"}));function aa(e,t,n){return e.on(t,n),function(){e.off(t,n)}}const pR=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class $b extends Dt{constructor(t,n,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=n,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[aa(t,"open",this.onopen.bind(this)),aa(t,"packet",this.onpacket.bind(this)),aa(t,"error",this.onerror.bind(this)),aa(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...n){var r,o,s;if(pR.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');if(n.unshift(t),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(n),this;const c={type:tt.EVENT,data:n};if(c.options={},c.options.compress=this.flags.compress!==!1,typeof n[n.length-1]=="function"){const m=this.ids++,y=n.pop();this._registerAckCallback(m,y),c.id=m}const u=(o=(r=this.io.engine)===null||r===void 0?void 0:r.transport)===null||o===void 0?void 0:o.writable,h=this.connected&&!(!((s=this.io.engine)===null||s===void 0)&&s._hasPingExpired());return this.flags.volatile&&!u||(h?(this.notifyOutgoingListeners(c),this.packet(c)):this.sendBuffer.push(c)),this.flags={},this}_registerAckCallback(t,n){var r;const o=(r=this.flags.timeout)!==null&&r!==void 0?r:this._opts.ackTimeout;if(o===void 0){this.acks[t]=n;return}const s=this.io.setTimeoutFn(()=>{delete this.acks[t];for(let u=0;u<this.sendBuffer.length;u++)this.sendBuffer[u].id===t&&this.sendBuffer.splice(u,1);n.call(this,new Error("operation has timed out"))},o),c=(...u)=>{this.io.clearTimeoutFn(s),n.apply(this,u)};c.withError=!0,this.acks[t]=c}emitWithAck(t,...n){return new Promise((r,o)=>{const s=(c,u)=>c?o(c):r(u);s.withError=!0,n.push(s),this.emit(t,...n)})}_addToQueue(t){let n;typeof t[t.length-1]=="function"&&(n=t.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((o,...s)=>(this._queue[0],o!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(o)):(this._queue.shift(),n&&n(null,...s)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!t||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:tt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,n),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(r=>String(r.id)===t)){const r=this.acks[t];delete this.acks[t],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case tt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case tt.EVENT:case tt.BINARY_EVENT:this.onevent(t);break;case tt.ACK:case tt.BINARY_ACK:this.onack(t);break;case tt.DISCONNECT:this.ondisconnect();break;case tt.CONNECT_ERROR:this.destroy();const r=new Error(t.data.message);r.data=t.data.data,this.emitReserved("connect_error",r);break}}onevent(t){const n=t.data||[];t.id!=null&&n.push(this.ack(t.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const r of n)r.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const n=this;let r=!1;return function(...o){r||(r=!0,n.packet({type:tt.ACK,id:t,data:o}))}}onack(t){const n=this.acks[t.id];typeof n=="function"&&(delete this.acks[t.id],n.withError&&t.data.unshift(null),n.apply(this,t.data))}onconnect(t,n){this.id=t,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:tt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const n=this._anyListeners;for(let r=0;r<n.length;r++)if(t===n[r])return n.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(t),this}prependAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(t),this}offAnyOutgoing(t){if(!this._anyOutgoingListeners)return this;if(t){const n=this._anyOutgoingListeners;for(let r=0;r<n.length;r++)if(t===n[r])return n.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(t){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const n=this._anyOutgoingListeners.slice();for(const r of n)r.apply(this,t.data)}}}function _o(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}_o.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=(Math.floor(t*10)&1)==0?e-n:e+n}return Math.min(e,this.max)|0};_o.prototype.reset=function(){this.attempts=0};_o.prototype.setMin=function(e){this.ms=e};_o.prototype.setMax=function(e){this.max=e};_o.prototype.setJitter=function(e){this.jitter=e};class kp extends Dt{constructor(t,n){var r;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(n=t,t=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,Eu(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((r=n.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new _o({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=t;const o=n.parser||hR;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var n;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(n=this.backoff)===null||n===void 0||n.setMin(t),this)}randomizationFactor(t){var n;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(n=this.backoff)===null||n===void 0||n.setJitter(t),this)}reconnectionDelayMax(t){var n;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(n=this.backoff)===null||n===void 0||n.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new eR(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const o=aa(n,"open",function(){r.onopen(),t&&t()}),s=u=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",u),t?t(u):this.maybeReconnectOnOpen()},c=aa(n,"error",s);if(this._timeout!==!1){const u=this._timeout,h=this.setTimeoutFn(()=>{o(),s(new Error("timeout")),n.close()},u);this.opts.autoUnref&&h.unref(),this.subs.push(()=>{this.clearTimeoutFn(h)})}return this.subs.push(o),this.subs.push(c),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(aa(t,"ping",this.onping.bind(this)),aa(t,"data",this.ondata.bind(this)),aa(t,"error",this.onerror.bind(this)),aa(t,"close",this.onclose.bind(this)),aa(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(n){this.onclose("parse error",n)}}ondecoded(t){Tu(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let r=this.nsps[t];return r?this._autoConnect&&!r.active&&r.connect():(r=new $b(this,t,n),this.nsps[t]=r),r}_destroy(t){const n=Object.keys(this.nsps);for(const r of n)if(this.nsps[r].active)return;this._close()}_packet(t){const n=this.encoder.encode(t);for(let r=0;r<n.length;r++)this.engine.write(n[r],t.options)}cleanup(){this.subs.forEach(t=>t()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,n){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(o=>{o?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",o)):t.onreconnect()}))},n);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const fs={};function Mc(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=tR(e,t.path||"/socket.io"),r=n.source,o=n.id,s=n.path,c=fs[o]&&s in fs[o].nsps,u=t.forceNew||t["force new connection"]||t.multiplex===!1||c;let h;return u?h=new kp(r,t):(fs[o]||(fs[o]=new kp(r,t)),h=fs[o]),n.query&&!t.query&&(t.query=n.queryKey),h.socket(n.path,t)}Object.assign(Mc,{Manager:kp,Socket:$b,io:Mc,connect:Mc});var We=class Wb extends Error{constructor(t,n,r,o){super(t),this.name="InsForgeError",this.statusCode=n,this.error=r,this.nextActions=o}static fromApiError(t){return new Wb(t.message,t.statusCode,t.error,t.nextActions)}},fR=["authorization","x-api-key","cookie","set-cookie"],mR=["password","token","accesstoken","refreshtoken","authorization","secret","apikey","api_key","email","ssn","creditcard","credit_card"];function gR(e){const t={};for(const[n,r]of Object.entries(e))fR.includes(n.toLowerCase())?t[n]="***REDACTED***":t[n]=r;return t}function xs(e){if(e==null)return e;if(typeof e=="string")try{const t=JSON.parse(e);return xs(t)}catch{return e}if(Array.isArray(e))return e.map(xs);if(typeof e=="object"){const t={};for(const[n,r]of Object.entries(e))mR.includes(n.toLowerCase().replace(/[-_]/g,""))?t[n]="***REDACTED***":t[n]=xs(r);return t}return e}function Hv(e){if(e==null)return"";if(typeof e=="string")try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}if(typeof FormData<"u"&&e instanceof FormData)return"[FormData]";try{return JSON.stringify(e,null,2)}catch{return"[Unserializable body]"}}var Gb=class{constructor(e){typeof e=="function"?(this.enabled=!0,this.customLog=e):(this.enabled=!!e,this.customLog=null)}log(e,...t){if(!this.enabled)return;const n=`[InsForge Debug] ${e}`;this.customLog?this.customLog(n,...t):console.log(n,...t)}warn(e,...t){if(!this.enabled)return;const n=`[InsForge Debug] ${e}`;this.customLog?this.customLog(n,...t):console.warn(n,...t)}error(e,...t){if(!this.enabled)return;const n=`[InsForge Debug] ${e}`;this.customLog?this.customLog(n,...t):console.error(n,...t)}logRequest(e,t,n,r){if(!this.enabled)return;const o=[`→ ${e} ${t}`];n&&Object.keys(n).length>0&&o.push(` Headers: ${JSON.stringify(gR(n))}`);const s=Hv(xs(r));if(s){const c=s.length>1e3?s.slice(0,1e3)+"... [truncated]":s;o.push(` Body: ${c}`)}this.log(o.join(`
|
|
39
|
-
`))}logResponse(e,t,n,r,o){if(!this.enabled)return;const s=[`← ${e} ${t} ${n} (${r}ms)`],c=Hv(xs(o));if(c){const u=c.length>1e3?c.slice(0,1e3)+"... [truncated]":c;s.push(` Body: ${u}`)}n>=400?this.error(s.join(`
|
|
40
|
-
`)):this.log(s.join(`
|
|
41
|
-
`))}},wf="insforge_csrf_token";function Kb(){if(typeof document>"u")return null;const e=document.cookie.split(";").find(t=>t.trim().startsWith(`${wf}=`));return e&&e.split("=")[1]||null}function qb(e){if(typeof document>"u")return;const t=10080*60,n=typeof window<"u"&&window.location.protocol==="https:"?"; Secure":"";document.cookie=`${wf}=${encodeURIComponent(e)}; path=/; max-age=${t}; SameSite=Lax${n}`}function Yb(){if(typeof document>"u")return;const e=typeof window<"u"&&window.location.protocol==="https:"?"; Secure":"";document.cookie=`${wf}=; path=/; max-age=0; SameSite=Lax${e}`}var Zb=class{constructor(){this.accessToken=null,this.user=null,this.onTokenChange=null}saveSession(e){const t=e.accessToken!==this.accessToken;this.accessToken=e.accessToken,this.user=e.user,t&&this.onTokenChange&&this.onTokenChange()}getSession(){return!this.accessToken||!this.user?null:{accessToken:this.accessToken,user:this.user}}getAccessToken(){return this.accessToken}setAccessToken(e){const t=e!==this.accessToken;this.accessToken=e,t&&this.onTokenChange&&this.onTokenChange()}getUser(){return this.user}setUser(e){this.user=e}clearSession(){const e=this.accessToken!==null;this.accessToken=null,this.user=null,e&&this.onTokenChange&&this.onTokenChange()}},yR=new Set([500,502,503,504]),vR=new Set(["GET","HEAD","PUT","DELETE","OPTIONS"]),kR=class{constructor(e,t,n){if(this.userToken=null,this.autoRefreshToken=!0,this.isRefreshing=!1,this.refreshPromise=null,this.refreshToken=null,this.baseUrl=e.baseUrl||"http://localhost:7130",this.autoRefreshToken=e.autoRefreshToken??!0,this.fetch=e.fetch||(globalThis.fetch?globalThis.fetch.bind(globalThis):void 0),this.anonKey=e.anonKey,this.defaultHeaders={...e.headers},this.tokenManager=t??new Zb,this.logger=n||new Gb(!1),this.timeout=e.timeout??3e4,this.retryCount=e.retryCount??3,this.retryDelay=e.retryDelay??500,!this.fetch)throw new Error("Fetch is not available. Please provide a fetch implementation in the config.")}buildUrl(e,t){const n=new URL(e,this.baseUrl);return t&&Object.entries(t).forEach(([r,o])=>{if(r==="select"){let s=o.replace(/\s+/g," ").trim();s=s.replace(/\s*\(\s*/g,"(").replace(/\s*\)\s*/g,")").replace(/\(\s+/g,"(").replace(/\s+\)/g,")").replace(/,\s+(?=[^()]*\))/g,","),n.searchParams.append(r,s)}else n.searchParams.append(r,o)}),n.toString()}isRetryableStatus(e){return yR.has(e)}computeRetryDelay(e){const n=this.retryDelay*Math.pow(2,e-1)*(.85+Math.random()*.3);return Math.round(n)}async handleRequest(e,t,n={}){const{params:r,headers:o={},body:s,signal:c,...u}=n,h=this.buildUrl(t,r),p=Date.now(),y=vR.has(e.toUpperCase())||n.idempotent===!0?this.retryCount:0,k={...this.defaultHeaders},w=this.userToken||this.anonKey;w&&(k.Authorization=`Bearer ${w}`);let x;s!==void 0&&(typeof FormData<"u"&&s instanceof FormData?x=s:(e!=="GET"&&(k["Content-Type"]="application/json;charset=UTF-8"),x=JSON.stringify(s))),o instanceof Headers?o.forEach((S,D)=>{k[D]=S}):Array.isArray(o)?o.forEach(([S,D])=>{k[S]=D}):Object.assign(k,o),this.logger.logRequest(e,h,k,x);let C;for(let S=0;S<=y;S++){if(S>0){const R=this.computeRetryDelay(S);if(this.logger.warn(`Retry ${S}/${y} for ${e} ${h} in ${R}ms`),c?.aborted)throw c.reason;await new Promise((O,K)=>{const W=()=>{clearTimeout(z),K(c.reason)},z=setTimeout(()=>{c&&c.removeEventListener("abort",W),O()},R);c&&c.addEventListener("abort",W,{once:!0})})}let D,L;if((this.timeout>0||c)&&(D=new AbortController,this.timeout>0&&(L=setTimeout(()=>D.abort(),this.timeout)),c))if(c.aborted)D.abort(c.reason);else{const R=()=>D.abort(c.reason);c.addEventListener("abort",R,{once:!0}),D.signal.addEventListener("abort",()=>{c.removeEventListener("abort",R)},{once:!0})}try{const R=await this.fetch(h,{method:e,headers:k,body:x,...u,...D?{signal:D.signal}:{}});if(this.isRetryableStatus(R.status)&&S<y){L!==void 0&&clearTimeout(L),await R.body?.cancel(),C=new We(`Server error: ${R.status} ${R.statusText}`,R.status,"SERVER_ERROR");continue}if(R.status===204){L!==void 0&&clearTimeout(L);return}let O;const K=R.headers.get("content-type");try{K?.includes("json")?O=await R.json():O=await R.text()}catch(W){throw L!==void 0&&clearTimeout(L),new We(`Failed to parse response body: ${W?.message||"Unknown error"}`,R.status,R.ok?"PARSE_ERROR":"REQUEST_FAILED")}if(L!==void 0&&clearTimeout(L),!R.ok){if(this.logger.logResponse(e,h,R.status,Date.now()-p,O),O&&typeof O=="object"&&"error"in O){!O.statusCode&&!O.status&&(O.statusCode=R.status);const W=We.fromApiError(O);throw Object.keys(O).forEach(z=>{z!=="error"&&z!=="message"&&z!=="statusCode"&&(W[z]=O[z])}),W}throw new We(`Request failed: ${R.statusText}`,R.status,"REQUEST_FAILED")}return this.logger.logResponse(e,h,R.status,Date.now()-p,O),O}catch(R){if(L!==void 0&&clearTimeout(L),R?.name==="AbortError")throw D&&D.signal.aborted&&this.timeout>0&&!c?.aborted?new We(`Request timed out after ${this.timeout}ms`,408,"REQUEST_TIMEOUT"):R;if(R instanceof We)throw R;if(S<y){C=R;continue}throw new We(`Network request failed: ${R?.message||"Unknown error"}`,0,"NETWORK_ERROR")}}throw C||new We("Request failed after all retry attempts",0,"NETWORK_ERROR")}async request(e,t,n={}){try{return await this.handleRequest(e,t,{...n})}catch(r){if(r instanceof We&&r.statusCode===401&&r.error==="INVALID_TOKEN"&&this.autoRefreshToken)try{const o=await this.handleTokenRefresh();return this.setAuthToken(o.accessToken),this.tokenManager.saveSession(o),o.csrfToken&&qb(o.csrfToken),o.refreshToken&&this.setRefreshToken(o.refreshToken),await this.handleRequest(e,t,{...n})}catch(o){throw this.tokenManager.clearSession(),this.userToken=null,this.refreshToken=null,Yb(),o}throw r}}get(e,t){return this.request("GET",e,t)}post(e,t,n){return this.request("POST",e,{...n,body:t})}put(e,t,n){return this.request("PUT",e,{...n,body:t})}patch(e,t,n){return this.request("PATCH",e,{...n,body:t})}delete(e,t){return this.request("DELETE",e,t)}setAuthToken(e){this.userToken=e}setRefreshToken(e){this.refreshToken=e}getHeaders(){const e={...this.defaultHeaders},t=this.userToken||this.anonKey;return t&&(e.Authorization=`Bearer ${t}`),e}async handleTokenRefresh(){return this.isRefreshing?this.refreshPromise:(this.isRefreshing=!0,this.refreshPromise=(async()=>{try{const e=Kb(),t=this.refreshToken?{refreshToken:this.refreshToken}:void 0;return await this.handleRequest("POST","/api/auth/sessions/current",{body:t,headers:e?{"X-CSRF-Token":e}:{},credentials:"include"})}finally{this.isRefreshing=!1,this.refreshPromise=null}})(),this.refreshPromise)}},_p="insforge_pkce_verifier";function Xb(e){return btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function _R(){const e=new Uint8Array(32);return crypto.getRandomValues(e),Xb(e)}async function bR(e){const n=new TextEncoder().encode(e),r=await crypto.subtle.digest("SHA-256",n);return Xb(new Uint8Array(r))}function wR(e){typeof sessionStorage<"u"&&sessionStorage.setItem(_p,e)}function xR(){if(typeof sessionStorage>"u")return null;const e=sessionStorage.getItem(_p);return e&&sessionStorage.removeItem(_p),e}function xn(e,t){return e instanceof We?{data:null,error:e}:{data:null,error:new We(e instanceof Error?e.message:t,500,"UNEXPECTED_ERROR")}}function $v(...e){if(typeof window>"u")return;const t=new URL(window.location.href);e.forEach(n=>t.searchParams.delete(n)),window.history.replaceState({},document.title,t.toString())}var PR=class{constructor(e,t,n={}){this.http=e,this.tokenManager=t,this.options=n,this.authCallbackHandled=this.detectAuthCallback()}isServerMode(){return!!this.options.isServerMode}saveSessionFromResponse(e){if(!e.accessToken||!e.user)return!1;const t={accessToken:e.accessToken,user:e.user};return!this.isServerMode()&&e.csrfToken&&qb(e.csrfToken),this.isServerMode()||this.tokenManager.saveSession(t),this.http.setAuthToken(e.accessToken),this.http.setRefreshToken(e.refreshToken??null),!0}async detectAuthCallback(){if(!(this.isServerMode()||typeof window>"u"))try{const e=new URLSearchParams(window.location.search),t=e.get("error");if(t){$v("error"),console.debug("OAuth callback error:",t);return}const n=e.get("insforge_code");if(n){$v("insforge_code");const{error:r}=await this.exchangeOAuthCode(n);r&&console.debug("OAuth code exchange failed:",r.message);return}}catch(e){console.debug("OAuth callback detection skipped:",e)}}async signUp(e){try{const t=await this.http.post(this.isServerMode()?"/api/auth/users?client_type=mobile":"/api/auth/users",e,{credentials:"include"});return t.accessToken&&t.user&&this.saveSessionFromResponse(t),t.refreshToken&&this.http.setRefreshToken(t.refreshToken),{data:t,error:null}}catch(t){return xn(t,"An unexpected error occurred during sign up")}}async signInWithPassword(e){try{const t=await this.http.post(this.isServerMode()?"/api/auth/sessions?client_type=mobile":"/api/auth/sessions",e,{credentials:"include"});return this.saveSessionFromResponse(t),t.refreshToken&&this.http.setRefreshToken(t.refreshToken),{data:t,error:null}}catch(t){return xn(t,"An unexpected error occurred during sign in")}}async signOut(){try{try{await this.http.post(this.isServerMode()?"/api/auth/logout?client_type=mobile":"/api/auth/logout",void 0,{credentials:"include"})}catch{}return this.tokenManager.clearSession(),this.http.setAuthToken(null),this.http.setRefreshToken(null),this.isServerMode()||Yb(),{error:null}}catch{return{error:new We("Failed to sign out",500,"SIGNOUT_ERROR")}}}async signInWithOAuth(e){try{const{provider:t,redirectTo:n,skipBrowserRedirect:r}=e,o=encodeURIComponent(t.toLowerCase()),s=_R(),c=await bR(s);wR(s);const u={code_challenge:c};n&&(u.redirect_uri=n);const p=Cu.options.includes(o)?`/api/auth/oauth/${o}`:`/api/auth/oauth/custom/${o}`,m=await this.http.get(p,{params:u});return!this.isServerMode()&&typeof window<"u"&&!r?(window.location.href=m.authUrl,{data:{},error:null}):{data:{url:m.authUrl,provider:o,codeVerifier:s},error:null}}catch(t){return t instanceof We?{data:{},error:t}:{data:{},error:new We("An unexpected error occurred during OAuth initialization",500,"UNEXPECTED_ERROR")}}}async exchangeOAuthCode(e,t){try{const n=t??xR();if(!n)return{data:null,error:new We("PKCE code verifier not found. Ensure signInWithOAuth was called in the same browser session.",400,"PKCE_VERIFIER_MISSING")};const r={code:e,code_verifier:n},o=await this.http.post(this.isServerMode()?"/api/auth/oauth/exchange?client_type=mobile":"/api/auth/oauth/exchange",r,{credentials:"include"});return this.saveSessionFromResponse(o),{data:o,error:null}}catch(n){return xn(n,"An unexpected error occurred during OAuth code exchange")}}async signInWithIdToken(e){try{const{provider:t,token:n}=e,r=await this.http.post("/api/auth/id-token?client_type=mobile",{provider:t,token:n},{credentials:"include"});return this.saveSessionFromResponse(r),r.refreshToken&&this.http.setRefreshToken(r.refreshToken),{data:r,error:null}}catch(t){return xn(t,"An unexpected error occurred during ID token sign in")}}async refreshSession(e){try{if(this.isServerMode()&&!e?.refreshToken)return{data:null,error:new We("refreshToken is required when refreshing session in server mode",400,"REFRESH_TOKEN_REQUIRED")};const t=this.isServerMode()?null:Kb(),n=await this.http.post(this.isServerMode()?"/api/auth/refresh?client_type=mobile":"/api/auth/refresh",this.isServerMode()?{refresh_token:e?.refreshToken}:void 0,{headers:t?{"X-CSRF-Token":t}:{},credentials:"include"});return n.accessToken&&this.saveSessionFromResponse(n),{data:n,error:null}}catch(t){return xn(t,"An unexpected error occurred during session refresh")}}async getCurrentUser(){await this.authCallbackHandled;try{if(this.isServerMode()){const t=this.tokenManager.getAccessToken();return t?(this.http.setAuthToken(t),{data:{user:(await this.http.get("/api/auth/sessions/current")).user??null},error:null}):{data:{user:null},error:null}}const e=this.tokenManager.getSession();if(e)return this.http.setAuthToken(e.accessToken),{data:{user:e.user},error:null};if(typeof window<"u"){const{data:t,error:n}=await this.refreshSession();if(n)return{data:{user:null},error:n};if(t?.accessToken)return{data:{user:t.user??null},error:null}}return{data:{user:null},error:null}}catch(e){return e instanceof We?{data:{user:null},error:e}:{data:{user:null},error:new We("An unexpected error occurred while getting user",500,"UNEXPECTED_ERROR")}}}async getProfile(e){try{return{data:await this.http.get(`/api/auth/profiles/${e}`),error:null}}catch(t){return xn(t,"An unexpected error occurred while fetching user profile")}}async setProfile(e){try{const t=await this.http.patch("/api/auth/profiles/current",{profile:e}),n=this.tokenManager.getUser();return!this.isServerMode()&&n&&t.profile!==void 0&&this.tokenManager.setUser({...n,profile:t.profile}),{data:t,error:null}}catch(t){return xn(t,"An unexpected error occurred while updating user profile")}}async resendVerificationEmail(e){try{return{data:await this.http.post("/api/auth/email/send-verification",e),error:null}}catch(t){return xn(t,"An unexpected error occurred while sending verification email")}}async verifyEmail(e){try{const t=await this.http.post(this.isServerMode()?"/api/auth/email/verify?client_type=mobile":"/api/auth/email/verify",e,{credentials:"include"});return this.saveSessionFromResponse(t),t.refreshToken&&this.http.setRefreshToken(t.refreshToken),{data:t,error:null}}catch(t){return xn(t,"An unexpected error occurred while verifying email")}}async sendResetPasswordEmail(e){try{return{data:await this.http.post("/api/auth/email/send-reset-password",e),error:null}}catch(t){return xn(t,"An unexpected error occurred while sending password reset email")}}async exchangeResetPasswordToken(e){try{return{data:await this.http.post("/api/auth/email/exchange-reset-password-token",e),error:null}}catch(t){return xn(t,"An unexpected error occurred while verifying reset code")}}async resetPassword(e){try{return{data:await this.http.post("/api/auth/email/reset-password",e),error:null}}catch(t){return xn(t,"An unexpected error occurred while resetting password")}}async getPublicAuthConfig(){try{return{data:await this.http.get("/api/auth/public-config"),error:null}}catch(e){return xn(e,"An unexpected error occurred while fetching auth configuration")}}};function SR(e,t){return async(n,r)=>{const o=typeof n=="string"?n:n.toString(),s=new URL(o),c=s.pathname.slice(1),u=c.match(/^rpc\/(.+)$/),h=u?`/api/database/rpc/${u[1]}`:`/api/database/records/${c}`,p=`${e.baseUrl}${h}${s.search}`,m=t.getAccessToken(),y=e.getHeaders(),k=m||y.Authorization?.replace("Bearer ",""),w=new Headers(r?.headers);return k&&!w.has("Authorization")&&w.set("Authorization",`Bearer ${k}`),await fetch(p,{...r,headers:w})}}var CR=class{constructor(e,t){this.postgrest=new _A("http://dummy",{fetch:SR(e,t),headers:{}})}from(e){return this.postgrest.from(e)}rpc(e,t,n){return this.postgrest.rpc(e,t,n)}},TR=class{constructor(e,t){this.bucketName=e,this.http=t}async upload(e,t){try{const n=await this.http.post(`/api/storage/buckets/${this.bucketName}/upload-strategy`,{filename:e,contentType:t.type||"application/octet-stream",size:t.size});if(n.method==="presigned")return await this.uploadWithPresignedUrl(n,t);if(n.method==="direct"){const r=new FormData;return r.append("file",t),{data:await this.http.request("PUT",`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(e)}`,{body:r,headers:{}}),error:null}}throw new We(`Unsupported upload method: ${n.method}`,500,"STORAGE_ERROR")}catch(n){return{data:null,error:n instanceof We?n:new We("Upload failed",500,"STORAGE_ERROR")}}}async uploadAuto(e){try{const t=e instanceof File?e.name:"file",n=await this.http.post(`/api/storage/buckets/${this.bucketName}/upload-strategy`,{filename:t,contentType:e.type||"application/octet-stream",size:e.size});if(n.method==="presigned")return await this.uploadWithPresignedUrl(n,e);if(n.method==="direct"){const r=new FormData;return r.append("file",e),{data:await this.http.request("POST",`/api/storage/buckets/${this.bucketName}/objects`,{body:r,headers:{}}),error:null}}throw new We(`Unsupported upload method: ${n.method}`,500,"STORAGE_ERROR")}catch(t){return{data:null,error:t instanceof We?t:new We("Upload failed",500,"STORAGE_ERROR")}}}async uploadWithPresignedUrl(e,t){try{const n=new FormData;e.fields&&Object.entries(e.fields).forEach(([o,s])=>{n.append(o,s)}),n.append("file",t);const r=await fetch(e.uploadUrl,{method:"POST",body:n});if(!r.ok)throw new We(`Upload to storage failed: ${r.statusText}`,r.status,"STORAGE_ERROR");return e.confirmRequired&&e.confirmUrl?{data:await this.http.post(e.confirmUrl,{size:t.size,contentType:t.type||"application/octet-stream"}),error:null}:{data:{key:e.key,bucket:this.bucketName,size:t.size,mimeType:t.type||"application/octet-stream",uploadedAt:new Date().toISOString(),url:this.getPublicUrl(e.key)},error:null}}catch(n){throw n instanceof We?n:new We("Presigned upload failed",500,"STORAGE_ERROR")}}async download(e){try{const t=await this.http.post(`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(e)}/download-strategy`,{expiresIn:3600}),n=t.url,r={};t.method==="direct"&&Object.assign(r,this.http.getHeaders());const o=await fetch(n,{method:"GET",headers:r});if(!o.ok)try{const c=await o.json();throw We.fromApiError(c)}catch{throw new We(`Download failed: ${o.statusText}`,o.status,"STORAGE_ERROR")}return{data:await o.blob(),error:null}}catch(t){return{data:null,error:t instanceof We?t:new We("Download failed",500,"STORAGE_ERROR")}}}getPublicUrl(e){return`${this.http.baseUrl}/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(e)}`}async list(e){try{const t={};return e?.prefix&&(t.prefix=e.prefix),e?.search&&(t.search=e.search),e?.limit&&(t.limit=e.limit.toString()),e?.offset&&(t.offset=e.offset.toString()),{data:await this.http.get(`/api/storage/buckets/${this.bucketName}/objects`,{params:t}),error:null}}catch(t){return{data:null,error:t instanceof We?t:new We("List failed",500,"STORAGE_ERROR")}}}async remove(e){try{return{data:await this.http.delete(`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(e)}`),error:null}}catch(t){return{data:null,error:t instanceof We?t:new We("Delete failed",500,"STORAGE_ERROR")}}}},ER=class{constructor(e){this.http=e}from(e){return new TR(e,this.http)}},AR=class{constructor(e){this.http=e,this.chat=new RR(e),this.images=new IR(e),this.embeddings=new DR(e)}},RR=class{constructor(e){this.completions=new LR(e)}},LR=class{constructor(e){this.http=e}async create(e){const t={model:e.model,messages:e.messages,temperature:e.temperature,maxTokens:e.maxTokens,topP:e.topP,stream:e.stream,webSearch:e.webSearch,fileParser:e.fileParser,thinking:e.thinking,tools:e.tools,toolChoice:e.toolChoice,parallelToolCalls:e.parallelToolCalls};if(e.stream){const o=this.http.getHeaders();o["Content-Type"]="application/json";const s=await this.http.fetch(`${this.http.baseUrl}/api/ai/chat/completion`,{method:"POST",headers:o,body:JSON.stringify(t)});if(!s.ok){const c=await s.json();throw new Error(c.error||"Stream request failed")}return this.parseSSEStream(s,e.model)}const n=await this.http.post("/api/ai/chat/completion",t),r=n.text||"";return{id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:n.metadata?.model,choices:[{index:0,message:{role:"assistant",content:r,...n.tool_calls?.length&&{tool_calls:n.tool_calls},...n.annotations?.length&&{annotations:n.annotations}},finish_reason:n.tool_calls?.length?"tool_calls":"stop"}],usage:n.metadata?.usage||{prompt_tokens:0,completion_tokens:0,total_tokens:0}}}async*parseSSEStream(e,t){const n=e.body.getReader(),r=new TextDecoder;let o="";try{for(;;){const{done:s,value:c}=await n.read();if(s)break;o+=r.decode(c,{stream:!0});const u=o.split(`
|
|
42
|
-
`);o=u.pop()||"";for(const h of u)if(h.startsWith("data: ")){const p=h.slice(6).trim();if(p)try{const m=JSON.parse(p);if((m.chunk||m.content)&&(yield{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:t,choices:[{index:0,delta:{content:m.chunk||m.content},finish_reason:null}]}),m.tool_calls?.length&&(yield{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:t,choices:[{index:0,delta:{tool_calls:m.tool_calls},finish_reason:"tool_calls"}]}),m.done){n.releaseLock();return}}catch{console.warn("Failed to parse SSE data:",p)}}}}finally{n.releaseLock()}}},DR=class{constructor(e){this.http=e}async create(e){const t=await this.http.post("/api/ai/embeddings",e);return{object:t.object,data:t.data,model:t.metadata?.model,usage:t.metadata?.usage?{prompt_tokens:t.metadata.usage.promptTokens||0,total_tokens:t.metadata.usage.totalTokens||0}:{prompt_tokens:0,total_tokens:0}}}},IR=class{constructor(e){this.http=e}async generate(e){const t=await this.http.post("/api/ai/image/generation",e);let n=[];return t.images&&t.images.length>0?n=t.images.map(r=>({b64_json:r.imageUrl.replace(/^data:image\/\w+;base64,/,""),content:t.text})):t.text&&(n=[{content:t.text}]),{created:Math.floor(Date.now()/1e3),data:n,...t.metadata?.usage&&{usage:{total_tokens:t.metadata.usage.totalTokens||0,input_tokens:t.metadata.usage.promptTokens||0,output_tokens:t.metadata.usage.completionTokens||0}}}}},MR=class Qb{constructor(t,n){this.http=t,this.functionsUrl=n||Qb.deriveSubhostingUrl(t.baseUrl)}static deriveSubhostingUrl(t){try{const{hostname:n}=new URL(t);return n.endsWith(".insforge.app")?`https://${n.split(".")[0]}.functions.insforge.app`:void 0}catch{return}}async invoke(t,n={}){const{method:r="POST",body:o,headers:s={}}=n;if(this.functionsUrl)try{return{data:await this.http.request(r,`${this.functionsUrl}/${t}`,{body:o,headers:s}),error:null}}catch(c){if(c instanceof Error&&c.name==="AbortError")throw c;if(!(c instanceof We&&c.statusCode===404))return{data:null,error:c instanceof We?c:new We(c instanceof Error?c.message:"Function invocation failed",500,"FUNCTION_ERROR")}}try{const c=`/functions/${t}`;return{data:await this.http.request(r,c,{body:o,headers:s}),error:null}}catch(c){if(c instanceof Error&&c.name==="AbortError")throw c;return{data:null,error:c instanceof We?c:new We(c instanceof Error?c.message:"Function invocation failed",500,"FUNCTION_ERROR")}}}},Wv=1e4,NR=class{constructor(e,t,n){this.socket=null,this.connectPromise=null,this.subscribedChannels=new Set,this.eventListeners=new Map,this.baseUrl=e,this.tokenManager=t,this.anonKey=n,this.tokenManager.onTokenChange=()=>this.onTokenChange()}notifyListeners(e,t){const n=this.eventListeners.get(e);if(n)for(const r of n)try{r(t)}catch(o){console.error(`Error in ${e} callback:`,o)}}connect(){return this.socket?.connected?Promise.resolve():this.connectPromise?this.connectPromise:(this.connectPromise=new Promise((e,t)=>{const n=this.tokenManager.getAccessToken()??this.anonKey;this.socket=Mc(this.baseUrl,{transports:["websocket"],auth:n?{token:n}:void 0});let r=!0,o=null;const s=()=>{o&&(clearTimeout(o),o=null)};o=setTimeout(()=>{r&&(r=!1,this.connectPromise=null,this.socket?.disconnect(),this.socket=null,t(new Error(`Connection timeout after ${Wv}ms`)))},Wv),this.socket.on("connect",()=>{s();for(const c of this.subscribedChannels)this.socket.emit("realtime:subscribe",{channel:c});this.notifyListeners("connect"),r&&(r=!1,this.connectPromise=null,e())}),this.socket.on("connect_error",c=>{s(),this.notifyListeners("connect_error",c),r&&(r=!1,this.connectPromise=null,t(c))}),this.socket.on("disconnect",c=>{this.notifyListeners("disconnect",c)}),this.socket.on("realtime:error",c=>{this.notifyListeners("error",c)}),this.socket.onAny((c,u)=>{c!=="realtime:error"&&this.notifyListeners(c,u)})}),this.connectPromise)}disconnect(){this.socket&&(this.socket.disconnect(),this.socket=null),this.subscribedChannels.clear()}onTokenChange(){const e=this.tokenManager.getAccessToken()??this.anonKey;this.socket&&(this.socket.auth=e?{token:e}:{}),this.socket&&(this.socket.connected||this.connectPromise)&&(this.socket.disconnect(),this.socket.connect())}get isConnected(){return this.socket?.connected??!1}get connectionState(){return this.socket?this.socket.connected?"connected":"connecting":"disconnected"}get socketId(){return this.socket?.id}async subscribe(e){if(this.subscribedChannels.has(e))return{ok:!0,channel:e};if(!this.socket?.connected)try{await this.connect()}catch(t){const n=t instanceof Error?t.message:"Connection failed";return{ok:!1,channel:e,error:{code:"CONNECTION_FAILED",message:n}}}return new Promise(t=>{this.socket.emit("realtime:subscribe",{channel:e},n=>{n.ok&&this.subscribedChannels.add(e),t(n)})})}unsubscribe(e){this.subscribedChannels.delete(e),this.socket?.connected&&this.socket.emit("realtime:unsubscribe",{channel:e})}async publish(e,t,n){if(!this.socket?.connected)throw new Error("Not connected to realtime server. Call connect() first.");this.socket.emit("realtime:publish",{channel:e,event:t,payload:n})}on(e,t){this.eventListeners.has(e)||this.eventListeners.set(e,new Set),this.eventListeners.get(e).add(t)}off(e,t){const n=this.eventListeners.get(e);n&&(n.delete(t),n.size===0&&this.eventListeners.delete(e))}once(e,t){const n=r=>{this.off(e,n),t(r)};this.on(e,n)}getSubscribedChannels(){return Array.from(this.subscribedChannels)}},OR=class{constructor(e){this.http=e}async send(e){try{return{data:await this.http.post("/api/email/send-raw",e),error:null}}catch(t){if(t instanceof Error&&t.name==="AbortError")throw t;return{data:null,error:t instanceof We?t:new We(t instanceof Error?t.message:"Email send failed",500,"EMAIL_ERROR")}}}},jR=class{constructor(e={}){const t=new Gb(e.debug);this.tokenManager=new Zb,this.http=new kR(e,this.tokenManager,t),e.edgeFunctionToken&&(this.http.setAuthToken(e.edgeFunctionToken),this.tokenManager.setAccessToken(e.edgeFunctionToken)),this.auth=new PR(this.http,this.tokenManager,{isServerMode:e.isServerMode??!1}),this.database=new CR(this.http,this.tokenManager),this.storage=new ER(this.http),this.ai=new AR(this.http),this.functions=new MR(this.http,e.functionsUrl),this.realtime=new NR(this.http.baseUrl,this.tokenManager,e.anonKey),this.emails=new OR(this.http)}getHttpClient(){return this.http}};function UR(e){return new jR(e)}const xf={VITE_INSFORGE_ANON_KEY:"ik_9f35735991b684f7cf57fa00bb4d0487",VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"},Jb="https://srctyff5.us-east.insforge.app",BR="ik_9f35735991b684f7cf57fa00bb4d0487";function Wa(){const e=typeof import.meta<"u"?xf:void 0;return(e?.VITE_INSFORGE_BASE_URL||e?.VITE_TOKENTRACKER_BACKEND_BASE_URL||Jb).trim()}function ew(){if(typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"))return window.location.origin;const t=typeof import.meta<"u"?xf:void 0;return(t?.VITE_INSFORGE_BASE_URL||t?.VITE_TOKENTRACKER_BACKEND_BASE_URL||Jb).trim()}function Ks(){const e=typeof import.meta<"u"?xf:void 0;return(e?.VITE_INSFORGE_ANON_KEY||e?.VITE_TOKENTRACKER_BACKEND_ANON_KEY||BR).trim()}function bp(){return!!ew()}let Dh=null;function FR(){return bp()?(Dh||(Dh=UR({baseUrl:ew(),anonKey:Ks()||void 0,autoRefreshToken:!0})),Dh):null}const tw="tokentracker_cloud_sync_enabled",VR="tokentracker_cloud_device_session_v1",Pf="tokentracker_cloud_last_sync_ts";let Sf=null;function Cf(){try{localStorage.removeItem(VR)}catch{}}function zR(){if(typeof window>"u")return!1;const e=window.location.hostname;return e==="localhost"||e==="127.0.0.1"}function HR(){try{const e=localStorage.getItem(tw);return e===null||e===""?!1:e==="1"||e==="true"}catch{return!1}}function CU(e){try{localStorage.setItem(tw,e?"1":"0")}catch{}}function nw(){return Cf(),Sf}function $R(e){Sf=e,Cf()}function aw(){Sf=null;try{localStorage.removeItem(Pf)}catch{}Cf()}function WR(){try{const e=Number(localStorage.getItem(Pf));return Number.isFinite(e)?e:0}catch{return 0}}function rw(e){try{localStorage.setItem(Pf,String(e))}catch{}}function Ar(e){if(typeof e!="string")return null;const t=e.trim();return t.length>0?t:null}function GR(e){const t=Ar(e);if(!t)return null;const n=t.split(".");if(n.length<2)return null;const r=n[1];try{const o=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),s=typeof atob=="function"?atob(o):Buffer.from(o,"base64").toString("utf8"),u=JSON.parse(s)?.exp;return typeof u!="number"||!Number.isFinite(u)||u<=0?null:Math.floor(u*1e3)}catch{return null}}function iw(e){const t=Ar(e);if(!t)return!1;const n=t.split(".");if(n.length!==3)return!1;try{for(let r=0;r<2;r++){const o=n[r];if(!/^[A-Za-z0-9_-]+$/.test(o))return!1;const s=o.replace(/-/g,"+").replace(/_/g,"/").padEnd(o.length+(4-o.length%4)%4,"="),c=typeof atob=="function"?atob(s):Buffer.from(s,"base64").toString("utf8");r===1&&JSON.parse(c)}return!0}catch{return!1}}function KR(e,t=3e4){const n=GR(e);return n?n<=Date.now()+Math.max(0,Number(t)||0):!1}async function qR(e){if(!e)return null;if(typeof e=="string")return Ar(e);if(typeof e=="function")try{const t=await e();return Ar(t)}catch{return null}if(typeof e=="object"){if(typeof e.getAccessToken=="function"){try{const t=await e.getAccessToken(),n=Ar(t);if(n)return n}catch{}return Ar(e.accessToken)}return null}return Ar(e)}async function TU(e,t={}){const n=Math.max(1,Math.min(12,Math.floor(Number(t.maxAttempts)||8))),r=Math.max(20,Math.floor(Number(t.baseDelayMs)||50));for(let o=0;o<n;o++){const s=await qR(e);if(s)return s;o<n-1&&await new Promise(c=>setTimeout(c,r*(o+1)))}return null}function EU(e){return typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")||typeof e=="function"||e&&typeof e=="object"&&typeof e.getAccessToken=="function"?!0:!!Ar(e)}function AU(){if(typeof Intl>"u"||!Intl.DateTimeFormat)return null;try{return Intl.DateTimeFormat().resolvedOptions().timeZone||null}catch{return null}}function RU(e=new Date){const t=e instanceof Date?e:new Date(e);if(!Number.isFinite(t.getTime()))return 0;const n=t.getTimezoneOffset();return Number.isFinite(n)?-n:0}function ow(e){if(!Number.isFinite(e)||e===0)return"UTC";const t=e>=0?"+":"-",n=Math.abs(e),r=String(Math.floor(n/60)).padStart(2,"0"),o=String(n%60).padStart(2,"0");return`UTC${t}${r}:${o}`}function LU({timeZone:e,offsetMinutes:t}={}){const n=ow(t);return e&&e!=="UTC"?`${e} (${n})`:n}function DU({timeZone:e,offsetMinutes:t}={}){return Number.isFinite(t)?ow(t):e||"UTC"}function IU({timeZone:e,offsetMinutes:t,date:n=new Date}={}){const r=n instanceof Date?n:new Date(n);if(!Number.isFinite(r.getTime()))return"";if(e&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const c=new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(r).reduce((m,y)=>(y.type&&y.value&&(m[y.type]=y.value),m),{}),u=c.year,h=c.month,p=c.day;if(u&&h&&p)return`${u}-${h}-${p}`}catch{}if(typeof t=="number"&&Number.isFinite(t)){const o=new Date(r.getTime()+t*6e4);return ZR(o)}return XR(r)}function YR({timeZone:e,offsetMinutes:t,date:n=new Date}={}){const r=n instanceof Date?n:new Date(n);if(!Number.isFinite(r.getTime()))return null;if(e&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const c=new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(r).reduce((m,y)=>(y.type&&y.value&&(m[y.type]=y.value),m),{}),u=Number(c.year),h=Number(c.month),p=Number(c.day);if(Number.isFinite(u)&&Number.isFinite(h)&&Number.isFinite(p))return{year:u,month:h,day:p}}catch{}if(typeof t=="number"&&Number.isFinite(t)){const o=new Date(r.getTime()+t*6e4);return{year:o.getUTCFullYear(),month:o.getUTCMonth()+1,day:o.getUTCDate()}}return{year:r.getFullYear(),month:r.getMonth()+1,day:r.getDate()}}function MU({timeZone:e,offsetMinutes:t}={}){return e?`tz:${e}`:typeof t=="number"&&Number.isFinite(t)?`offset:${Math.trunc(t)}`:"utc"}function ZR(e){const t=e.getUTCFullYear(),n=String(e.getUTCMonth()+1).padStart(2,"0"),r=String(e.getUTCDate()).padStart(2,"0");return`${t}-${n}-${r}`}function XR(e){const t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return`${t}-${n}-${r}`}function yt(e){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())).toISOString().slice(0,10)}function Pa(e){const t=e instanceof Date?e:new Date(e);if(!Number.isFinite(t.getTime()))return"";const n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0");return`${n}-${r}-${o}`}function QR(e){if(!e)return null;const t=String(e).trim(),n=t.split("-");if(n.length!==3)return null;const r=Number(n[0]),o=Number(n[1])-1,s=Number(n[2]);if(!Number.isFinite(r)||!Number.isFinite(o)||!Number.isFinite(s))return null;const c=new Date(Date.UTC(r,o,s));return Number.isFinite(c.getTime())&&yt(c)===t?c:null}function JR(e){if(!e)return"";const t=e.year,n=String(e.month).padStart(2,"0"),r=String(e.day).padStart(2,"0");return!t||!n||!r?"":`${t}-${n}-${r}`}function eL(e,{timeZone:t,offsetMinutes:n,now:r}={}){const o=r instanceof Date&&Number.isFinite(r.getTime())?r:new Date,s=YR({timeZone:t,offsetMinutes:n,date:o});if(!s){const h=Pa(new Date);return{from:h,to:h}}const c=JR(s),u=QR(c);if(!u)return{from:c,to:c};if(e==="day")return{from:c,to:c};if(e==="week"){const h=new Date(u),m=(h.getUTCDay()+6)%7;h.setUTCDate(h.getUTCDate()-m);const y=new Date(h);return y.setUTCDate(y.getUTCDate()+6),{from:yt(h),to:yt(y)}}if(e==="month"){const h=new Date(Date.UTC(u.getUTCFullYear(),u.getUTCMonth(),1)),p=new Date(Date.UTC(u.getUTCFullYear(),u.getUTCMonth()+1,0));return{from:yt(h),to:yt(p)}}if(e==="total"){const h=new Date(Date.UTC(u.getUTCFullYear(),u.getUTCMonth()-23,1));return{from:yt(h),to:c}}return eL("week")}function sw(){return typeof window>"u"?null:window.localStorage||null}function lw(){return typeof navigator>"u"?null:navigator.clipboard||null}function tL(){return typeof window>"u"?null:window.ClipboardItem||null}function Ps(e,{storage:t}={}){const n=t??sw();if(!n||typeof n.getItem!="function")return null;try{return n.getItem(e)}catch{return null}}function Ss(e,t,{storage:n}={}){const r=n??sw();if(!r||typeof r.setItem!="function")return!1;try{return r.setItem(e,t),!0}catch{return!1}}async function NU(e,{clipboard:t}={}){const n=t??lw();if(!n||typeof n.writeText!="function")return!1;try{return await n.writeText(e),!0}catch{return!1}}async function OU(e,{clipboard:t}={}){const n=t??lw(),r=tL();if(!e||!n||typeof n.write!="function"||!r)return!1;try{const o=e.type||"image/png",s=e.type&&e.type!==o?e.slice(0,e.size,o):e.type?e:e.slice(0,e.size,o),c=new r({[o]:s});return await n.write([c]),!0}catch{return!1}}const Os="USD",Tf=["USD","EUR","GBP","CNY","JPY","HKD"],cw={USD:{symbol:"$",labelKey:"settings.appearance.currency.opt.usd"},EUR:{symbol:"€",labelKey:"settings.appearance.currency.opt.eur"},GBP:{symbol:"£",labelKey:"settings.appearance.currency.opt.gbp"},CNY:{symbol:"¥",labelKey:"settings.appearance.currency.opt.cny"},JPY:{symbol:"¥",labelKey:"settings.appearance.currency.opt.jpy"},HKD:{symbol:"HK$",labelKey:"settings.appearance.currency.opt.hkd"}},Ef={USD:1,EUR:.92,GBP:.79,CNY:7.2,JPY:155,HKD:7.8},uw="tokentracker-currency",dw="tokentracker-exchange-rates",hw="tokentracker-exchange-rate-source",pw="tokentracker-exchange-rate-fetched-at";function au(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Af(e){if(typeof e!="string")return Os;const t=e.trim().toUpperCase();return Tf.includes(t)?t:Os}function Nc(e){const t=typeof e=="string"?e.trim().toUpperCase():Os;return cw[t]?.symbol??"$"}function jU(){return Tf.map(e=>({code:e,...cw[e]}))}function nL(){return Af(Ps(uw))}function aL(e){return Ss(uw,Af(e))}function fw(e){return e==="fetched"?"fetched":"default"}function rL(e){if(e==null)return null;try{const t=JSON.parse(String(e));if(!t||typeof t!="object")return null;const n={};for(const[r,o]of Object.entries(t)){const s=Number(o);Number.isFinite(s)&&s>0&&(n[r.toUpperCase()]=s)}return n}catch{return null}}function iL(){const e=rL(Ps(dw)),t=Ps(pw),n=t==null?NaN:Number(t),r=Number.isFinite(n)&&n>0?n:null,o=Ps(hw),s=fw(o);return e&&Object.keys(e).length>0?{rates:{USD:1,...e},source:s,fetchedAt:r}:{rates:{...Ef},source:"default",fetchedAt:null}}function oL(e){const{rates:t,source:n,fetchedAt:r}=e;if(!t||typeof t!="object")return!1;const o=Ss(dw,JSON.stringify(t)),s=Ss(hw,fw(n)),c=r?Ss(pw,String(r)):!0;return o&&s&&c}function Ih(e,t){if(t===Os)return 1;const n=e?.[t];if(au(n))return n;const r=Ef[t];return au(r)?r:1}function UU(e){if(e==null)return"-";try{if(typeof e=="bigint")return new Intl.NumberFormat().format(e);if(typeof e=="number")return new Intl.NumberFormat().format(e);const t=String(e).trim();return/^[0-9]+$/.test(t)?new Intl.NumberFormat().format(BigInt(t)):t}catch{return String(e)}}function BU(e,{thousandSuffix:t="K",millionSuffix:n="M",billionSuffix:r="B",decimals:o=1}={}){const s=Number(String(e));if(!Number.isFinite(s))return"-";const c=s<0?"-":"",u=Math.abs(s),h=Math.max(0,Math.min(6,Math.floor(o)));if(u<1e3)return`${c}${String(u)}`;const p=(w,x)=>{const C=w.toFixed(h),S=Number(C).toString();return`${c}${S}${x}`},m=(w,x,C)=>{const S=w.toFixed(h),D=Number(S);return C&&D>=1e3?p(D/1e3,C):`${c}${D.toString()}${x}`};if(u>=1e9)return p(u/1e9,r);if(u>=1e6)return m(u/1e6,n,r);const y=u/1e3,k=Number(y.toFixed(h));return k>=1e3?p(k/1e3,n):p(k,t)}function mw(e){const t=Number(String(e));return Number.isFinite(t)?t:null}function FU(e,t={}){const{decimals:n=2,currency:r="USD",rate:o=1}=t;if(e==null||typeof e=="string"&&e.trim()==="")return"-";let s;if(typeof e=="number")s=e;else if(typeof e=="bigint")s=Number(e);else{const S=String(e).trim(),D=Number(S);if(!Number.isFinite(D))return S;s=D}if(!Number.isFinite(s))return String(e);const c=Nc(r);r!=="USD"&&typeof o=="number"&&Number.isFinite(o)&&o>0&&(s=s*o);const h=s.toFixed(6).match(/^(-?\d+)(?:\.(\d+))?$/);if(!h)return`${c}${String(s)}`;const p=h[1],m=h[2]||"";let y=p;try{y=new Intl.NumberFormat().format(BigInt(p))}catch{y=p}const k=Math.max(0,Math.min(6,Math.floor(n))),w=k?m.slice(0,k).padEnd(k,"0"):"",x=p.startsWith("-")?"-":"",C=k?`${y.replace("-","")}.${w}`:y.replace("-","");return`${x}${c}${C}`}function ru(e){if(typeof e!="string")return null;const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(!t)return null;const n=Number(t[1]),r=Number(t[2])-1,o=Number(t[3]),s=new Date(Date.UTC(n,r,o));return Number.isFinite(s.getTime())&&yt(s)===e.trim()?s:null}function ai(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function sL(e,t){const n=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())-Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate());return Math.floor(n/864e5)}function Mh(e,t){if(!Array.isArray(e)||e.length===0)return 0;const n=e.length,r=(n-1)*t,o=Math.floor(r),s=r-o,c=e[o]??e[n-1],u=e[Math.min(n-1,o+1)]??e[n-1];return Math.round(c+(u-c)*s)}function lL(e){return e<=0?0:e>=4?4:e}function gw({weeks:e=52,now:t,weekStartsOn:n="sun"}={}){const r=t instanceof Date&&Number.isFinite(t.getTime())?t:new Date,o=Pa(r),s=ru(o)||new Date(Date.UTC(r.getFullYear(),r.getMonth(),r.getDate())),c=n==="mon"?1:0,u=s.getUTCDay(),h=ai(s,-((u-c+7)%7)),p=ai(h,-7*(Math.max(1,e)-1));return{from:yt(p),to:o}}function cL({dailyRows:e,weeks:t=52,to:n,weekStartsOn:r="sun"}={}){const o=ru(n)||new Date(Date.UTC(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())),{from:s}=gw({weeks:t,now:o,weekStartsOn:r}),c=ru(s)||ai(o,-(t*7-1)),u=(()=>{const O=(c.getUTCDay()-(r==="mon"?1:0)+7)%7;return ai(c,-O)})(),h=new Map;for(const L of Array.isArray(e)?e:[]){const R=typeof L?.day=="string"?L.day:null;if(!R)continue;const O=mw(L?.billable_total_tokens??L?.total_tokens)??0;h.set(R,{value:Math.max(0,O),models:L?.models||null})}const p=sL(u,o)+1,m=Math.ceil(p/7),y=[];for(let L=0;L<p;L++){const R=ai(u,L),O=yt(R),K=h.get(O),W=K?K.value:0;W>0&&y.push(W)}y.sort((L,R)=>L-R);const k=Mh(y,.5),w=Mh(y,.75),x=Mh(y,.9);function C(L){return!L||L<=0?0:L<=k?1:L<=w?2:L<=x?3:4}const S=[];for(let L=0;L<m;L++){const R=[];for(let O=0;O<7;O++){const K=L*7+O,W=ai(u,K);if(W.getTime()>o.getTime()){R.push(null);continue}const z=yt(W),P=h.get(z),Y=P?P.value:0,X=P?P.models:null;R.push({day:z,value:Y,level:lL(C(Y)),models:X})}S.push(R)}const D=S.length>t?S.slice(S.length-t):S;return{from:s,to:yt(o),weeks:D,thresholds:{t1:k,t2:w,t3:x}}}function uL({dailyRows:e,to:t}={}){const n=ru(t)||new Date(Date.UTC(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())),r=new Map;for(const s of Array.isArray(e)?e:[]){const c=typeof s?.day=="string"?s.day:null;if(!c)continue;const u=mw(s?.billable_total_tokens??s?.total_tokens)??0;r.set(c,Math.max(0,u))}let o=0;for(let s=0;s<370;s++){const c=yt(ai(n,-s));if((r.get(c)??0)>0){o+=1;continue}break}return o}const Au={},yw="tokentracker",dL=["tokentracker/tokentracker","spacedriveapp/spacedrive","acme/alpha","acme/beta","neo/nebula","signal/flux","matrix/terminal","orbit/atlas","lumen/core","delta/horizon"],Gv=["NEO","TRINITY","MORPHEUS","ORACLE","CYPHER","SWITCH","APOC","TANK","SMITH","SERAPH","NIOBE","MOUSE","DOZER","LINK","BLADE"];function dn(){if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock")||"").toLowerCase();if(t==="0"||t==="false"||t==="off"||t==="no")return!1;if(t==="1"||t==="true"||t==="on"||t==="yes")return!0}if(typeof import.meta<"u"&&Au){const e="".toLowerCase();if(e==="1"||e==="true")return!0}return!1}function hL(){if(typeof import.meta<"u"&&Au){const e="".trim();if(e)return e;const t="".trim();if(t)return t}if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock_now")||"").trim();if(t)return t;const n=String(e.get("mock_today")||"").trim();if(n)return n}return""}function pL(e){if(!e)return null;const t=String(e).trim();if(!t)return null;if(/^\d{4}-\d{2}-\d{2}$/.test(t)){const[r,o,s]=t.split("-").map(Number);if(!Number.isFinite(r)||!Number.isFinite(o)||!Number.isFinite(s))return null;const c=new Date(r,o-1,s,12,0,0);return Number.isFinite(c.getTime())?c:null}const n=new Date(t);return Number.isFinite(n.getTime())?n:null}function VU(){return dn()?pL(hL()):null}function fL(){if(typeof import.meta<"u"&&Au){const e="".trim();if(e)return e}if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock_seed")||"").trim();if(t)return t}return yw}function mL(){if(typeof import.meta<"u"&&Au){const e="".trim(),t=Number(e);if(Number.isFinite(t)&&t>0)return Math.floor(t)}if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock_missing")||"").trim(),n=Number(t);if(Number.isFinite(n)&&n>0)return Math.floor(n)}return 0}function qs(e){return(e==null?fL():String(e)).trim()||yw}function Ys(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function cn(e){if(typeof e!="string")return null;const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(!t)return null;const n=Number(t[1]),r=Number(t[2])-1,o=Number(t[3]),s=new Date(Date.UTC(n,r,o));return Number.isFinite(s.getTime())&&yt(s)===e.trim()?s:null}function js(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function vw(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1))}function gL(e){return`${e.getUTCFullYear()}-${String(e.getUTCMonth()+1).padStart(2,"0")}`}function mo({from:e,to:t,seed:n}){const r=cn(Pa(new Date))||new Date,o=cn(e)||r,s=cn(t)||o,c=[],u=qs(n),h=Math.floor((Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate())-Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()))/864e5)+1;for(let p=0;p<h;p+=1){const m=js(o,p),y=yt(m),k=Ys(`${u}:${y}`),w=k%1e3/1e3,x=.6+.4*Math.sin(p/6*Math.PI*.5),C=m.getUTCDay()===0||m.getUTCDay()===6?.65:1,S=18e3+Math.round(12e3*w),D=Math.max(0,Math.round(S*x*C)),L=Math.round(D*.46),R=Math.round(D*.34),O=Math.round(D*.14),K=Math.max(0,D-L-R-O),W={};if(D>0){const z=["gpt-4o","claude-3.5-sonnet","gemini-1.5-pro","deepseek-coder"],P=1+k%3;let Y=D;for(let X=0;X<P;X++){const ue=z[(k+X)%z.length];if(X===P-1)W[ue]=Y;else{const se=Math.round(Y*(.3+.4*((k+X*17)%10)/10));W[ue]=se,Y-=se}}}c.push({day:y,total_tokens:D,billable_total_tokens:D,input_tokens:L,output_tokens:R,cached_input_tokens:O,reasoning_output_tokens:K,conversation_count:1+k%5,models:W})}return c}function yL({day:e,seed:t}){const n=cn(e)||cn(Pa(new Date))||new Date,r=yt(n),o=qs(t),s=Array.from({length:48},(u,h)=>{const p=Math.floor(h/2),m=h%2===0?0:30,y=Ys(`${o}:${r}:${p}:${m}`),k=y%1e3/1e3,w=(p+m/60)/24,x=.4+.6*Math.sin(w*Math.PI*2),C=900+Math.round(700*k),S=Math.max(0,Math.round(C*x)),D=Math.round(S*.46),L=Math.round(S*.34),R=Math.round(S*.14),O=Math.max(0,S-D-L-R),K={};if(S>0){const W=["gpt-4o","claude-3.5-sonnet","gemini-1.5-pro","deepseek-coder"],z=1+y%2;let P=S;for(let Y=0;Y<z;Y++){const X=W[(y+Y)%W.length];if(Y===z-1)K[X]=P;else{const ue=Math.round(P*(.3+.4*((y+Y*17)%10)/10));K[X]=ue,P-=ue}}}return{hour:`${r}T${String(p).padStart(2,"0")}:${String(m).padStart(2,"0")}:00`,total_tokens:S,billable_total_tokens:S,input_tokens:D,output_tokens:L,cached_input_tokens:R,reasoning_output_tokens:O,models:K}}),c=Math.max(0,Math.min(48,mL()));if(c>0){const u=Date.now(),h=s.map((y,k)=>{const w=Date.parse(y.hour);return Number.isFinite(w)&&w<=u?{index:k,ts:w}:null}).filter(Boolean),p=Math.max(0,h.length-c),m=h.slice(p);for(const y of m){const k=s[y.index];k&&(s[y.index]={...k,missing:!0})}}return s}function vL({months:e=24,to:t,seed:n}){const r=cn(t)||cn(Pa(new Date))||new Date,o=new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),1)),s=qs(n),c=[];for(let u=e-1;u>=0;u-=1){const h=vw(o,-u),p=gL(h),m=Ys(`${s}:${p}`),y=m%1e3/1e3,k=.7+.3*Math.sin(c.length/6*Math.PI*.5),w=36e4+Math.round(2e5*y),x=Math.max(0,Math.round(w*k)),C=Math.round(x*.46),S=Math.round(x*.34),D=Math.round(x*.14),L=Math.max(0,x-C-S-D),R={};if(x>0){const O=["gpt-4o","claude-3.5-sonnet","gemini-1.5-pro","deepseek-coder"],K=1+m%3;let W=x;for(let z=0;z<K;z++){const P=O[(m+z)%O.length];if(z===K-1)R[P]=W;else{const Y=Math.round(W*(.3+.4*((m+z*17)%10)/10));R[P]=Y,W-=Y}}}c.push({month:p,total_tokens:x,billable_total_tokens:x,input_tokens:C,output_tokens:S,cached_input_tokens:D,reasoning_output_tokens:L,models:R})}return c}function Rf(e){return e.reduce((t,n)=>(t.total_tokens+=Number(n.total_tokens||0),t.billable_total_tokens+=Number(n.billable_total_tokens||n.total_tokens||0),t.input_tokens+=Number(n.input_tokens||0),t.output_tokens+=Number(n.output_tokens||0),t.cached_input_tokens+=Number(n.cached_input_tokens||0),t.reasoning_output_tokens+=Number(n.reasoning_output_tokens||0),t.conversation_count+=Number(n.conversation_count||0),t),{total_tokens:0,billable_total_tokens:0,input_tokens:0,output_tokens:0,cached_input_tokens:0,reasoning_output_tokens:0,conversation_count:0})}function kL(e,t=1.75){const n=Number(e||0);return!Number.isFinite(n)||n<=0?"0.000000":(n*t/1e6).toFixed(6)}function Kv(e,t){const n=Number.isFinite(t)?t:0;return{total_tokens:Math.max(0,Math.round(e.total_tokens*n)),billable_total_tokens:Math.max(0,Math.round((e.billable_total_tokens??e.total_tokens)*n)),input_tokens:Math.max(0,Math.round(e.input_tokens*n)),output_tokens:Math.max(0,Math.round(e.output_tokens*n)),cached_input_tokens:Math.max(0,Math.round(e.cached_input_tokens*n)),reasoning_output_tokens:Math.max(0,Math.round(e.reasoning_output_tokens*n))}}function wp(e){return{...e,total_cost_usd:kL(e.total_tokens)}}function _L({from:e,to:t,seed:n}={}){const r=mo({from:e,to:t,seed:n});return{from:e,to:t,data:r}}function bL({day:e,seed:t}={}){const n=cn(e)||new Date,r=yt(n),o=yL({day:r,seed:t});return{day:r,data:o}}function wL({months:e=24,to:t,seed:n}={}){const r=cn(t)||cn(Pa(new Date))||new Date,o=yt(r),s=vL({months:e,to:o,seed:n}),c=vw(new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),1)),-(e-1));return{from:yt(c),to:o,months:e,data:s}}function xL({from:e,to:t,seed:n,rolling:r=!0}={}){const o=mo({from:e,to:t,seed:n}),s=Rf(o),c=wp(s),u=r?PL({to:t,seed:n}):null;return{from:e,to:t,days:o.length,totals:c,...u?{rolling:u}:{}}}function PL({to:e,seed:t}={}){const n=cn(e)||cn(Pa(new Date))||new Date,r=yt(n),o=yt(js(n,-6)),s=yt(js(n,-29)),c=mo({from:o,to:r,seed:t}),u=mo({from:s,to:r,seed:t});return{last_7d:qv({rows:c,from:o,to:r}),last_30d:qv({rows:u,from:s,to:r})}}function qv({rows:e,from:t,to:n}={}){const r=Rf(e||[]),o=(e||[]).filter(c=>Number(c.billable_total_tokens??c.total_tokens)>0).length,s=o>0?Math.floor(r.billable_total_tokens/o):0;return{from:t,to:n,totals:{billable_total_tokens:r.billable_total_tokens,conversation_count:r.conversation_count},active_days:o,avg_per_active_day:s}}function SL({seed:e,limit:t=3}={}){const n=qs(e),r=dL.map((o,s)=>{const u=12e4+Ys(`${n}:${o}`)%9e5,h=s%4*4200,p=Math.max(0,u+h),m=Math.max(0,Math.round(p*.96));return{project_key:o,project_ref:`https://github.com/${o}`,total_tokens:String(p),billable_total_tokens:String(m)}}).sort((o,s)=>Number(s.billable_total_tokens)-Number(o.billable_total_tokens)).slice(0,Math.max(1,Math.min(10,Math.floor(Number(t)||3))));return{generated_at:new Date().toISOString(),entries:r}}function CL(e){const t=cn(Pa(new Date))||new Date,n=String(e).trim().toLowerCase()||"week";if(n==="total")return{from:"1970-01-01",to:"9999-12-31"};if(n==="month"){const c=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1)),u=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth()+1,0));return{from:yt(c),to:yt(u)}}const r=t.getUTCDay(),o=yt(js(t,-r)),s=yt(js(t,-r+6));return{from:o,to:s}}function kw({seed:e,period:t,metric:n,limit:r=20,offset:o=0}={}){const s=qs(e),c=Math.max(1,Math.min(100,Math.floor(Number(r)||20))),u=Math.max(0,Math.min(1e4,Math.floor(Number(o)||0))),h=String(n||"all").trim().toLowerCase()||"all",p=String(t||"week").trim().toLowerCase()||"week",m=p==="month"||p==="total"||p==="week"?p:"week",{from:y,to:k}=CL(m),w=250,x=w>0?Math.ceil(w/c):0,C=Math.floor(u/c)+1,S=Array.from({length:w},(z,P)=>{const Y=P+1,X=`00000000-0000-0000-0000-${String(Y).padStart(12,"0")}`,ue=Gv[Y%Gv.length],Ae=18e4+Ys(`${s}:${ue}:${Y}`)%9e5,pe=Math.max(0,Ae+Y*1200),le=Math.floor(pe*.28),fe=Math.floor(pe*.18),Ne=Math.floor(pe*.1),G=Math.floor(pe*.1),Z=Math.floor(pe*.08),$=Math.floor(pe*.03),M=Math.floor(pe*.02),q=Math.floor(pe*.04),xe=Math.floor(pe*.03),Re=Math.max(0,pe-le-fe-Ne-G-Z-$-M-q-xe),Pe=Y%7!==0;return{id:Y,user_id:X,is_public:Pe,is_me:!1,display_name:Pe?ue:"Anonymous",avatar_url:null,gpt_tokens:le,claude_tokens:fe,gemini_tokens:Ne,cursor_tokens:G,opencode_tokens:Z,openclaw_tokens:Re,hermes_tokens:$,kiro_tokens:M,copilot_tokens:q,kimi_tokens:xe,other_tokens:0,total_tokens:pe}}),D=Math.max(0,Math.min(w-1,Math.floor(w*.8)));S[D]&&(S[D].is_me=!0);const L=h==="gpt"||h==="codex"?"gpt_tokens":h==="claude"?"claude_tokens":h==="gemini"?"gemini_tokens":h==="cursor"?"cursor_tokens":h==="opencode"?"opencode_tokens":h==="openclaw"?"openclaw_tokens":h==="hermes"?"hermes_tokens":h==="kiro"?"kiro_tokens":h==="copilot"?"copilot_tokens":h==="kimi"?"kimi_tokens":"total_tokens",R=S.slice().sort((z,P)=>Number(P[L])-Number(z[L])||z.id-P.id).map((z,P)=>({user_id:z.is_public?z.user_id:null,rank:P+1,is_me:!!z.is_me,display_name:z.display_name,avatar_url:z.avatar_url,gpt_tokens:String(z.gpt_tokens),claude_tokens:String(z.claude_tokens),gemini_tokens:String(z.gemini_tokens),cursor_tokens:String(z.cursor_tokens),opencode_tokens:String(z.opencode_tokens),openclaw_tokens:String(z.openclaw_tokens),hermes_tokens:String(z.hermes_tokens??0),kiro_tokens:String(z.kiro_tokens??0),copilot_tokens:String(z.copilot_tokens??0),kimi_tokens:String(z.kimi_tokens??0),other_tokens:String(z.other_tokens??0),total_tokens:String(z.total_tokens),is_public:!!z.is_public})),O=R.find(z=>z?.is_me)||null,K=O?{rank:O.rank,gpt_tokens:O.gpt_tokens,claude_tokens:O.claude_tokens,gemini_tokens:O.gemini_tokens,cursor_tokens:O.cursor_tokens,opencode_tokens:O.opencode_tokens,openclaw_tokens:O.openclaw_tokens,hermes_tokens:O.hermes_tokens,kiro_tokens:O.kiro_tokens,copilot_tokens:O.copilot_tokens,kimi_tokens:O.kimi_tokens,other_tokens:O.other_tokens,total_tokens:O.total_tokens}:{rank:null,gpt_tokens:"0",claude_tokens:"0",gemini_tokens:"0",cursor_tokens:"0",opencode_tokens:"0",openclaw_tokens:"0",hermes_tokens:"0",kiro_tokens:"0",copilot_tokens:"0",kimi_tokens:"0",other_tokens:"0",total_tokens:"0"},W=R.slice(u,u+c);return{period:m,metric:h,from:y,to:k,generated_at:new Date().toISOString(),page:C,limit:c,offset:u,total_entries:w,total_pages:x,entries:W,me:K}}function TL({weeks:e=52,to:t,weekStartsOn:n="sun",seed:r}={}){const o=gw({weeks:e,now:cn(t)||cn(Pa(new Date))||new Date,weekStartsOn:n}),s=mo({from:o.from,to:o.to,seed:r});return{...cL({dailyRows:s,weeks:e,to:o.to,weekStartsOn:n}),week_starts_on:n,active_days:s.filter(u=>Number(u.billable_total_tokens??u.total_tokens)>0).length,streak_days:uL({dailyRows:s,to:o.to})}}function EL({from:e,to:t,seed:n}={}){const r=mo({from:e,to:t,seed:n}),o=Rf(r),c=[{source:"codex",weight:.7,models:[{model:"gpt-5.2-codex",model_id:"gpt-5.2-codex",weight:.2},{model:"unknown",model_id:"unknown",weight:.8}]},{source:"claude",weight:.2,models:[{model:"claude-3.5",model_id:"claude-3.5",weight:.3},{model:"unknown",model_id:"unknown",weight:.7}]},{source:"every-code",weight:.1,models:[{model:"unknown",model_id:"unknown",weight:1}]}].map(u=>{const h=Kv(o,u.weight),p=u.models.map(m=>{const y=Kv(h,m.weight);return{model:m.model,model_id:m.model_id||m.model,totals:wp(y)}});return{source:u.source,totals:wp(h),models:p}});return{from:e,to:t,days:r.length,sources:c,pricing:{model:"mock",pricing_mode:"add",source:"mock",effective_from:Pa(new Date),rates_per_million_usd:{input:"1.750000",cached_input:"0.175000",output:"14.000000",reasoning_output:"14.000000"}}}}function AL({from:e,to:t,source:n="claude"}={}){if(n==="codex")return{from:e,to:t,source:"codex",scope:"supported",totals:{input_tokens:142e4,cached_input_tokens:588e4,cache_creation_input_tokens:92e4,output_tokens:256e4,reasoning_output_tokens:61e4,total_tokens:1078e4},session_count:188,message_count:5436,tool_calls_breakdown:{categories:[{name:"Execution",calls:742,totals:{input_tokens:32e4,cached_input_tokens:104e4,cache_creation_input_tokens:11e4,output_tokens:46e4,reasoning_output_tokens:12e4,total_tokens:193e4},tools:[{name:"exec_command",calls:510,totals:{input_tokens:25e4,cached_input_tokens:82e4,cache_creation_input_tokens:8e4,output_tokens:37e4,reasoning_output_tokens:9e4,total_tokens:152e4}},{name:"write_stdin",calls:232,totals:{input_tokens:7e4,cached_input_tokens:22e4,cache_creation_input_tokens:3e4,output_tokens:9e4,reasoning_output_tokens:3e4,total_tokens:41e4}}]},{name:"Browser",calls:406,totals:{input_tokens:21e4,cached_input_tokens:88e4,cache_creation_input_tokens:9e4,output_tokens:42e4,reasoning_output_tokens:1e5,total_tokens:17e5},tools:[{name:"take_snapshot",calls:180,totals:{input_tokens:1e5,cached_input_tokens:4e5,cache_creation_input_tokens:4e4,output_tokens:18e4,reasoning_output_tokens:4e4,total_tokens:76e4}},{name:"click",calls:126,totals:{input_tokens:6e4,cached_input_tokens:25e4,cache_creation_input_tokens:3e4,output_tokens:12e4,reasoning_output_tokens:35e3,total_tokens:495e3}},{name:"evaluate_script",calls:100,totals:{input_tokens:5e4,cached_input_tokens:23e4,cache_creation_input_tokens:2e4,output_tokens:12e4,reasoning_output_tokens:25e3,total_tokens:445e3}}]}],tools_total:363e4,privacy:{includes_inputs:!1,note:"Aggregated tool names only; no tool arguments or outputs are included."}},exec_command_breakdown:{by_type:[{name:"test",calls:168,failures:14,duration_ms:482e3,max_duration_ms:18400,output_chars:45e4,output_lines:8600,totals:{input_tokens:9e4,cached_input_tokens:32e4,output_tokens:16e4,reasoning_output_tokens:42e3,total_tokens:612e3}},{name:"build",calls:116,failures:9,duration_ms:392e3,max_duration_ms:22100,output_chars:31e4,output_lines:5200,totals:{input_tokens:7e4,cached_input_tokens:24e4,output_tokens:13e4,reasoning_output_tokens:3e4,total_tokens:47e4}}],by_exit:[{name:"completed:0",calls:438,failures:0,duration_ms:104e4,max_duration_ms:22100,output_chars:83e4,output_lines:13100,totals:{input_tokens:22e4,cached_input_tokens:78e4,output_tokens:35e4,reasoning_output_tokens:82e3,total_tokens:1432e3}},{name:"completed:1",calls:72,failures:72,duration_ms:155e3,max_duration_ms:11800,output_chars:12e4,output_lines:2300,totals:{input_tokens:3e4,cached_input_tokens:11e4,output_tokens:55e3,reasoning_output_tokens:8e3,total_tokens:195e3}}]}};if(n!=="claude")return{from:e,to:t,source:n,scope:"unsupported",totals:{input_tokens:0,cached_input_tokens:0,cache_creation_input_tokens:0,output_tokens:0,reasoning_output_tokens:0,total_tokens:0},categories:["system_prefix","conversation_history","user_input","tool_calls","subagents","reasoning","assistant_response"].map(c=>({key:c,totals:{input_tokens:0,cached_input_tokens:0,cache_creation_input_tokens:0,output_tokens:0,reasoning_output_tokens:0,total_tokens:0},percent:0})),session_count:0,message_count:0};const r=[{key:"system_prefix",total:12896539},{key:"conversation_history",total:320207200},{key:"user_input",total:998025},{key:"tool_calls",total:4808739},{key:"subagents",total:1022828},{key:"reasoning",total:11073118},{key:"assistant_response",total:1289174}],o=r.reduce((c,u)=>c+u.total,0),s=r.map(({key:c,total:u})=>({key:c,totals:{input_tokens:c==="user_input"?u:0,cached_input_tokens:c==="conversation_history"?Math.round(u*.95):0,cache_creation_input_tokens:c==="system_prefix"?u:c==="conversation_history"?Math.round(u*.05):0,output_tokens:["tool_calls","subagents","reasoning","assistant_response"].includes(c)?u:0,reasoning_output_tokens:c==="reasoning"?u:0,total_tokens:u},percent:Number((u/o*100).toFixed(2))}));return{from:e,to:t,source:"claude",scope:"supported",totals:{input_tokens:998025,cached_input_tokens:Math.round(320207200*.95),cache_creation_input_tokens:12896539+Math.round(320207200*.05),output_tokens:18193859,reasoning_output_tokens:11073118,total_tokens:o},categories:s,session_count:312,message_count:12046}}let Oc=null;function RL(){Oc=null}async function LL(e=fetch){if(Oc)return Oc;const t=await e("/api/local-auth",{method:"GET",headers:{Accept:"application/json"},cache:"no-store"});if(!t.ok)throw new Error(`Local auth request failed with HTTP ${t.status}`);const n=await t.json().catch(()=>null),r=typeof n?.token=="string"?n.token.trim():"";if(!r)throw new Error("Local auth token missing from response");return Oc=r,r}async function Lf(e=fetch){return{"x-tokentracker-local-auth":await LL(e)}}const sa={usageSummary:"tokentracker-usage-summary",usageDaily:"tokentracker-usage-daily",usageHourly:"tokentracker-usage-hourly",usageMonthly:"tokentracker-usage-monthly",usageHeatmap:"tokentracker-usage-heatmap",usageModelBreakdown:"tokentracker-usage-model-breakdown",usageCategoryBreakdown:"tokentracker-usage-category-breakdown",projectUsageSummary:"tokentracker-project-usage-summary",userStatus:"tokentracker-user-status",localSync:"tokentracker-local-sync",usageLimits:"tokentracker-usage-limits"},DL={"tokentracker-usage-summary":"tokentracker-account-summary","tokentracker-usage-daily":"tokentracker-account-daily","tokentracker-usage-hourly":"tokentracker-account-hourly","tokentracker-usage-monthly":"tokentracker-account-monthly","tokentracker-usage-heatmap":"tokentracker-account-heatmap","tokentracker-usage-model-breakdown":"tokentracker-account-model-breakdown"};function IL(){return typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")}async function Sa(e,t,n){const r=n?.accessToken,o=DL[e];if(!IL()&&r&&o){const p=Wa().replace(/\/$/,""),m=new URL(`${p}/functions/${o}`);if(t)for(const[x,C]of Object.entries(t))C!=null&&C!==""&&m.searchParams.set(x,String(C));const y={Accept:"application/json"},k=Ks();k&&(y.apikey=k),iw(r)&&(y.Authorization=`Bearer ${r}`);const w=await fetch(m.toString(),{headers:y,cache:"no-store"});if(!w.ok){const x=new Error(`Request failed with HTTP ${w.status}`);throw x.status=w.status,x}return w.json()}const s=new URL(`/functions/${e}`,window.location.origin);if(t)for(const[p,m]of Object.entries(t))m!=null&&m!==""&&s.searchParams.set(p,String(m));const{accessToken:c,...u}=n||{},h=await fetch(s.toString(),{headers:{Accept:"application/json"},cache:"no-store",...u});if(!h.ok){const p=new Error(`Request failed with HTTP ${h.status}`);throw p.status=h.status,p}return h.json()}function Or({timeZone:e,tzOffsetMinutes:t}={}){const n={},r=typeof e=="string"?e.trim():"";return r&&(n.tz=r),Number.isFinite(t)&&(n.tz_offset_minutes=String(Math.trunc(t))),n}function mi({source:e,model:t}={}){const n={},r=typeof e=="string"?e.trim().toLowerCase():"";r&&(n.source=r);const o=typeof t=="string"?t.trim():"";return o&&(n.model=o),n}async function zU({from:e,to:t,source:n,model:r,timeZone:o,tzOffsetMinutes:s,rolling:c=!1,accessToken:u}={}){if(dn())return xL({from:e,to:t,seed:u,rolling:c});const h=Or({timeZone:o,tzOffsetMinutes:s}),p=mi({source:n,model:r}),m=c?{rolling:"1"}:{};return Sa(sa.usageSummary,{from:e,to:t,...p,...h,...m},{accessToken:u})}async function HU({from:e,to:t,source:n,limit:r,timeZone:o,tzOffsetMinutes:s,accessToken:c}={}){if(dn())return SL({seed:c,limit:r});const u=Or({timeZone:o,tzOffsetMinutes:s}),p={...mi({source:n}),...u};return e&&(p.from=e),t&&(p.to=t),r!=null&&(p.limit=String(r)),Sa(sa.projectUsageSummary,p)}async function gi(e,t={}){const n=Wa();if(!n)throw new Error("InsForge base URL not configured");const r=n.replace(/\/$/,""),o=new URL(`${r}/functions/${e}`);if(t.params)for(const[h,p]of Object.entries(t.params))p!=null&&p!==""&&o.searchParams.set(h,String(p));const s={Accept:"application/json","Content-Type":"application/json"},c=Ks();c&&(s.apikey=c),t.accessToken&&iw(t.accessToken)&&(s.Authorization=`Bearer ${t.accessToken}`);const u=await fetch(o.toString(),{method:t.method||"GET",headers:s,...t.body!=null?{body:JSON.stringify(t.body)}:{}});if(!u.ok){const h=new Error(`Request failed with HTTP ${u.status}`);throw h.status=u.status,h}return u.json()}async function $U({accessToken:e,userId:t,period:n,metric:r,limit:o,offset:s}={}){return dn()?kw({seed:e||t,period:n,metric:r,limit:o,offset:s}):gi("tokentracker-leaderboard",{params:{period:n,limit:o,offset:s,user_id:t}})}async function Yv({accessToken:e}={}){return gi("tokentracker-public-visibility",{accessToken:e,method:"GET"})}async function WU({accessToken:e,enabled:t,anonymous:n,display_name:r,github_url:o,show_github_url:s}={}){const c={};return t!==void 0&&(c.enabled=!!t),n!==void 0&&(c.anonymous=!!n),r!==void 0&&(c.display_name=String(r)),o!==void 0&&(c.github_url=o===null?null:String(o)),s!==void 0&&(c.show_github_url=!!s),gi("tokentracker-public-visibility",{accessToken:e,method:"POST",body:c})}async function GU({accessToken:e,period:t,source:n}={}){const r={};return t&&(r.period=t),typeof n=="string"&&n.trim()&&(r.source=n.trim()),gi("tokentracker-leaderboard-refresh",{accessToken:e,method:"POST",body:r})}async function KU({accessToken:e,userId:t,period:n}={}){if(dn()){const r=kw({seed:e,period:n,metric:"all",limit:250,offset:0}),o=Array.isArray(r?.entries)?r.entries:[],s=o.find(m=>m?.user_id===t)||o[0]||null,c=Number(s?.total_tokens)||0,u=new Date,h=Array.from({length:365}).map((m,y)=>{const k=new Date(u);return k.setUTCDate(k.getUTCDate()-(364-y)),{date:k.toISOString().slice(0,10),total_tokens:y%7===0?Math.floor(c/365):0}}),p=h.slice(-7);return{user:{user_id:t,display_name:s?.display_name||"Mock User",avatar_url:s?.avatar_url||null,github_url:s?.github_url||null,is_anonymous:!1,rank:s?.rank??null},period:{kind:n||"week",from:r?.from??null,to:r?.to??null,generated_at:r?.generated_at??new Date().toISOString()},totals:{total_tokens:c,estimated_cost_usd:Number(s?.estimated_cost_usd)||0,active_days:53,avg_per_day_usd:0},streak:{current_days:3,longest_days:12},best_day:c?{date:u.toISOString().slice(0,10),total_tokens:Math.floor(c/30),estimated_cost_usd:0}:null,models:{count:5,favorite:{model_name:"claude-opus-4-7",total_tokens:Math.floor(c/2)}},by_provider:[],heatmap:h,daily_trend:p}}return gi("tokentracker-leaderboard-profile",{accessToken:e,params:{user_id:t,period:n}})}function _w(e){if(!e)return 0;let t=0;for(let n=0;n<e.length;n++)t=e.charCodeAt(n)+((t<<5)-t);return Math.abs(t%165)+24}async function qU({userId:e}={}){return dn()?{count:_w(e)}:gi("tokentracker-profile-likes",{params:{user_id:e}})}async function YU({userId:e,delta:t,accessToken:n}={}){return dn()?{count:Math.max(0,_w(e)+Number(t||0))}:gi("tokentracker-profile-likes",{accessToken:n,method:"POST",body:{user_id:e,delta:t}})}async function ZU(e={}){if(dn()){const t=new Date().toISOString();return{user_id:"local-user",created_at:t,pro:{active:!1,sources:[],expires_at:null,partial:!1,as_of:t},subscriptions:{partial:!1,as_of:t,items:[]},install:{partial:!1,as_of:t,has_active_device_token:!1,has_active_device:!1,active_device_tokens:0,active_devices:0,latest_token_activity_at:null,latest_device_seen_at:null}}}return Sa(sa.userStatus)}async function XU({signal:e}={}){const t=await Lf(),n=await fetch(`/functions/${sa.localSync}`,{method:"POST",headers:{Accept:"application/json",...t},cache:"no-store",signal:e}),r=await n.json().catch(()=>({ok:!1,error:`Local sync request failed with HTTP ${n.status}`}));if(!n.ok||r?.ok===!1){const o=r?.error||r?.message||`Local sync request failed with HTTP ${n.status}`,s=new Error(o);throw s.status=n.status,s}return r}async function QU({from:e,to:t,source:n,timeZone:r,tzOffsetMinutes:o,accessToken:s}={}){if(dn())return EL({from:e,to:t,seed:s});const c=Or({timeZone:r,tzOffsetMinutes:o}),u=mi({source:n});return Sa(sa.usageModelBreakdown,{from:e,to:t,...u,...c},{accessToken:s})}async function JU({from:e,to:t,source:n="claude",timeZone:r,tzOffsetMinutes:o}={}){if(dn())return AL({from:e,to:t,source:n});const s=Or({timeZone:r,tzOffsetMinutes:o});return Sa(sa.usageCategoryBreakdown,{from:e,to:t,source:n,...s})}async function e4({from:e,to:t,source:n,model:r,timeZone:o,tzOffsetMinutes:s,accessToken:c}={}){if(dn())return _L({from:e,to:t,seed:c});const u=Or({timeZone:o,tzOffsetMinutes:s}),h=mi({source:n,model:r});return Sa(sa.usageDaily,{from:e,to:t,...h,...u},{accessToken:c})}async function t4({day:e,source:t,model:n,timeZone:r,tzOffsetMinutes:o,accessToken:s}={}){if(dn())return bL({day:e,seed:s});const c=Or({timeZone:r,tzOffsetMinutes:o}),u=mi({source:t,model:n}),h=e?{day:e,...u,...c}:{...u,...c};return Sa(sa.usageHourly,h,{accessToken:s})}async function n4({months:e,to:t,source:n,model:r,timeZone:o,tzOffsetMinutes:s,accessToken:c}={}){if(dn())return wL({months:e,to:t,seed:c});const u=Or({timeZone:o,tzOffsetMinutes:s}),h=mi({source:n,model:r});return Sa(sa.usageMonthly,{...e?{months:String(e)}:{},...t?{to:t}:{},...h,...u},{accessToken:c})}async function a4(e={}){const t=e?.refresh?{refresh:"1"}:void 0;return Sa(sa.usageLimits,t)}async function r4({weeks:e,to:t,weekStartsOn:n,source:r,model:o,timeZone:s,tzOffsetMinutes:c,accessToken:u}={}){if(dn())return TL({weeks:e,to:t,weekStartsOn:n,seed:u});const h=Or({timeZone:s,tzOffsetMinutes:c}),p=mi({source:r,model:o});return Sa(sa.usageHeatmap,{weeks:String(e),to:t,week_starts_on:n,...p,...h},{accessToken:u})}const bw=b.createContext(null);function ML(e){if(!e||typeof e!="object")return"";const t=e.user_metadata&&typeof e.user_metadata=="object"?e.user_metadata:{},n=e.profile&&typeof e.profile=="object"?e.profile:{},r=t.full_name||t.name||n.name||t.user_name||t.preferred_username;return typeof r=="string"&&r.trim()?r.trim():typeof e.email=="string"&&e.email.includes("@")?e.email.split("@")[0].trim()||e.email.trim():typeof e.email=="string"?e.email.trim():""}function Zv(e){if(!e||typeof e!="object")return null;const t=e,n=t.session&&typeof t.session=="object"?t.session:null,r=typeof t.accessToken=="string"&&t.accessToken||typeof t.access_token=="string"&&t.access_token||n&&typeof n.accessToken=="string"&&n.accessToken||n&&typeof n.access_token=="string"&&n.access_token||null;return r&&r.length>0?r:null}async function Nh(e,t={}){if(!e)return null;const n=Math.max(0,Math.floor(Number(t.skewMs)||6e4)),r=e.tokenManager,o=()=>r?.getAccessToken?.()??r?.getSession?.()?.accessToken??null;let s=o();if(!s||KR(s,n)){const{data:c}=await e.auth.refreshSession();if(s=o()??Zv(c)??null,!s&&typeof e.auth.getCurrentUser=="function")try{await e.auth.getCurrentUser(),s=o()??Zv(c)??null}catch{}}return s||null}function NL({children:e}){const[t,n]=b.useState(null),[r,o]=b.useState(null),[s,c]=b.useState(!0);b.useEffect(()=>{if(!bp()){n(null),o(null),c(!1);return}n(FR())},[]),b.useEffect(()=>{if(!t)return;let W=!0;return c(!0),(async()=>{try{let{data:z,error:P}=await t.auth.getCurrentUser();if(!W)return;if(!P&&!z?.user){if(await new Promise(X=>setTimeout(X,150)),!W)return;const Y=await t.auth.getCurrentUser();z=Y.data,P=Y.error}if(P){o(null);return}o(z?.user??null)}catch{W&&o(null)}finally{W&&c(!1)}})(),()=>{W=!1}},[t]);const u=b.useCallback(async()=>{if(t)try{let{data:W,error:z}=await t.auth.getCurrentUser();if(!z&&!W?.user){await new Promise(Y=>setTimeout(Y,150));const P=await t.auth.getCurrentUser();W=P.data,z=P.error}if(z){o(null);return}o(W?.user??null)}catch{o(null)}},[t]),h=b.useCallback(async(W,z)=>{if(!t)return{error:new Error("InsForge client not configured")};const P=typeof window<"u"&&window.webkit?.messageHandlers?.nativeOAuth;if(P){const ue=typeof z=="string"&&z.trim()?z.trim():`${window.location.origin}/auth/callback`,se=await t.auth.signInWithOAuth({provider:W,redirectTo:ue,skipBrowserRedirect:!0});if(se.data?.url){try{const Ae=await Lf();await fetch("/api/auth-bridge/verifier",{method:"PUT",headers:{"Content-Type":"application/json",...Ae},body:JSON.stringify({native:!0})})}catch{}P.postMessage(se.data.url)}return se}const Y=typeof z=="string"&&z.trim()?z.trim():typeof window<"u"?`${window.location.origin}/dashboard`:void 0;return await t.auth.signInWithOAuth({provider:W,redirectTo:Y})},[t]),p=b.useCallback(async W=>{if(!t)return{data:null,error:new Error("InsForge client not configured")};const{data:z,error:P}=await t.auth.signInWithPassword(W);return z?.user&&o(z.user),{data:z,error:P}},[t]),m=b.useCallback(async W=>{if(!t)return{data:null,error:new Error("InsForge client not configured")};const{data:z,error:P}=await t.auth.signUp(W);return z?.user&&z?.accessToken&&o(z.user),{data:z,error:P}},[t]),y=b.useCallback(async()=>t?t.auth.getPublicAuthConfig():{data:null,error:new Error("InsForge client not configured")},[t]),k=b.useCallback(async()=>{t&&(await t.auth.signOut(),aw(),RL(),o(null))},[t]),w=b.useCallback(async()=>Nh(t),[t]),[x,C]=b.useState(null),[S,D]=b.useState(!1),L=b.useMemo(()=>ML(r),[r]);b.useEffect(()=>{if(!r||!t){C(null),D(!1);return}let W=!0;return(async()=>{try{const z=await Nh(t);if(!W||!z){W&&D(!0);return}const P=await Yv({accessToken:z});W&&P?.display_name&&C(P.display_name)}catch{}W&&D(!0)})(),()=>{W=!1}},[r,t]);const R=S?x||L:"",O=b.useCallback(async()=>{if(t)try{const W=await Nh(t);if(!W)return;const z=await Yv({accessToken:W});z?.display_name&&C(z.display_name)}catch{}},[t]),K=b.useMemo(()=>!bp()||!t?{enabled:!1,client:null,user:null,signedIn:!1,loading:!1,displayName:"",refreshUser:async()=>{},refreshDisplayName:async()=>{},signInWithOAuth:async()=>({error:new Error("InsForge not configured")}),signInWithPassword:async()=>({data:null,error:new Error("InsForge not configured")}),signUp:async()=>({data:null,error:new Error("InsForge not configured")}),getPublicAuthConfig:async()=>({data:null,error:new Error("InsForge not configured")}),signOut:async()=>{},getAccessToken:async()=>null}:{enabled:!0,client:t,user:r,signedIn:!!r,loading:s,displayName:R,refreshUser:u,refreshDisplayName:O,signInWithOAuth:h,signInWithPassword:p,signUp:m,getPublicAuthConfig:y,signOut:k,getAccessToken:w},[t,r,s,R,u,O,h,p,m,y,k,w]);return N.jsx(bw.Provider,{value:K,children:e})}function Zs(){return b.useContext(bw)}const OL=`key,module,page,component,slot,text,notes,status
|
|
43
|
-
header.auth.sign_in_aria,shared,*,InsforgeUserHeaderControls,sign_in_aria,"Sign in",,active
|
|
44
|
-
login.back_home,shared,LoginPage,LoginPage,back_home,"Back to home",,active
|
|
45
|
-
login.cloud_only,shared,LoginPage,LoginPage,cloud_only,"Cloud sign-in is not configured. Use the local dashboard on localhost.",,active
|
|
46
|
-
login.title,shared,LoginPage,LoginPage,title,"Sign in",,active
|
|
47
|
-
login.subtitle,shared,LoginPage,LoginPage,subtitle,"Choose email or a connected account.",,active
|
|
48
|
-
login.dismiss,shared,LoginPage,LoginPage,dismiss,"Dismiss",,active
|
|
49
|
-
login.verify_email_success,shared,LoginPage,LoginPage,verify_ok,"Email verified. You can sign in below.",,active
|
|
50
|
-
login.verify_email_pending,shared,LoginPage,LoginPage,verify_pending,"Check your email to verify your account, then sign in.",,active
|
|
51
|
-
login.oauth.continue,shared,LoginPage,LoginPage,oauth_continue,"Continue with {{provider}}",,active
|
|
52
|
-
login.divider,shared,LoginPage,LoginPage,divider,"Or",,active
|
|
53
|
-
login.tab.sign_in,shared,LoginPage,LoginPage,tab_sign_in,"Sign in",,active
|
|
54
|
-
login.tab.sign_up,shared,LoginPage,LoginPage,tab_sign_up,"Create account",,active
|
|
55
|
-
login.field.name,shared,LoginPage,LoginPage,field_name,"Display name",,active
|
|
56
|
-
login.field.name_placeholder,shared,LoginPage,LoginPage,name_placeholder,"Optional",,active
|
|
57
|
-
login.field.email,shared,LoginPage,LoginPage,field_email,"Email",,active
|
|
58
|
-
login.field.password,shared,LoginPage,LoginPage,field_password,"Password",,active
|
|
59
|
-
login.password_hint,shared,LoginPage,LoginPage,pw_hint,"At least {{min}} characters.",,active
|
|
60
|
-
login.submit.sign_in,shared,LoginPage,LoginPage,submit_sign_in,"Sign in with email",,active
|
|
61
|
-
login.submit.sign_up,shared,LoginPage,LoginPage,submit_sign_up,"Create account",,active
|
|
62
|
-
login_modal.subtitle,shared,*,LoginModal,subtitle,"Sign in to join the leaderboard",,active
|
|
63
|
-
login_modal.continue_email,shared,*,LoginModal,continue_email,"Continue with Email",,active
|
|
64
|
-
login_modal.divider_email,shared,*,LoginModal,divider_email,"email",,active
|
|
65
|
-
shared.placeholder.short,shared,*,*,placeholder_short,"--",,active
|
|
66
|
-
shared.unit.percent,shared,*,*,unit_percent,"%",,active
|
|
67
|
-
shared.unit.thousand_abbrev,shared,*,*,unit_thousand_abbrev,"K",,active
|
|
68
|
-
shared.unit.million_abbrev,shared,*,*,unit_million_abbrev,"M",,active
|
|
69
|
-
shared.unit.billion_abbrev,shared,*,*,unit_billion_abbrev,"B",,active
|
|
70
|
-
shared.data_source,shared,*,*,label,"Data source: {{source}}",,active
|
|
71
|
-
shared.error.prefix,shared,*,*,label,"Error: {{error}}",,active
|
|
72
|
-
shared.status.unsynced,shared,*,*,status,"—",,active
|
|
73
|
-
error.boundary.title,shared,*,ErrorBoundary,title,"Something went wrong",,active
|
|
74
|
-
error.boundary.subtitle,shared,*,ErrorBoundary,subtitle,"This view failed to render",,active
|
|
75
|
-
error.boundary.hint,shared,*,ErrorBoundary,hint,"Open the console, then reload the page",,active
|
|
76
|
-
error.boundary.no_details,shared,*,ErrorBoundary,details,"No error details",,active
|
|
77
|
-
error.boundary.action.reload,shared,*,ErrorBoundary,action_reload,"Reload",,active
|
|
78
|
-
|
|
79
|
-
landing.handle.default,landing,LandingPage,LandingPage,handle_default,"VIBE_USER",,active
|
|
80
|
-
landing.handle.special,landing,LandingPage,LandingPage,handle_special,"VOLT",,active
|
|
81
|
-
landing.screenshot.alt,landing,LandingPage,LandingPage,screenshot_alt,"TokenTracker dashboard screenshot",,active
|
|
82
|
-
landing.nav.login,landing,LandingPage,LandingPage,nav_login,"LOGIN",,active
|
|
83
|
-
landing.nav.signup,landing,LandingPage,LandingPage,nav_signup,"SIGN UP",,active
|
|
84
|
-
landing.install.command,landing,LandingPage,LandingPage,install_command,"npx --yes tokentracker-cli",,active
|
|
85
|
-
landing.install.action.copy,landing,LandingPage,LandingPage,install_copy,"COPY COMMAND",,active
|
|
86
|
-
landing.install.action.copied,landing,LandingPage,LandingPage,install_copied,"COPIED",,active
|
|
87
|
-
landing.meta.title,landing,LandingPage,Meta,title,"Token Tracker — Token Usage Tracker for AI Agent CLIs",,active
|
|
88
|
-
landing.meta.description,landing,LandingPage,Meta,description,"Automatically monitor token usage across Claude Code, Cursor, Codex, and more. Local-first, privacy-focused, and zero manual configuration.",,active
|
|
89
|
-
landing.meta.og_site_name,landing,LandingPage,Meta,og_site_name,"Token Tracker",,active
|
|
90
|
-
landing.meta.og_type,landing,LandingPage,Meta,og_type,"website",,active
|
|
91
|
-
landing.meta.og_image,landing,LandingPage,Meta,og_image,"https://www.tokentracker.cc/dashboard-dark.png",,active
|
|
92
|
-
landing.meta.og_url,landing,LandingPage,Meta,og_url,"https://www.tokentracker.cc/",,active
|
|
93
|
-
landing.meta.twitter_card,landing,LandingPage,Meta,twitter_card,"summary_large_image",,active
|
|
94
|
-
share.meta.title,share,SharePage,Meta,title,"Token Tracker Share",,active
|
|
95
|
-
share.meta.description,share,SharePage,Meta,description,"Share a Token Tracker dashboard snapshot with token usage insights across models, projects, and time windows.",,active
|
|
96
|
-
share.meta.og_site_name,share,SharePage,Meta,og_site_name,"Token Tracker",,active
|
|
97
|
-
share.meta.og_type,share,SharePage,Meta,og_type,"website",,active
|
|
98
|
-
share.meta.og_image,share,SharePage,Meta,og_image,"https://www.tokentracker.cc/dashboard-dark.png",,active
|
|
99
|
-
share.meta.og_url,share,SharePage,Meta,og_url,"https://www.tokentracker.cc/share",,active
|
|
100
|
-
share.meta.twitter_card,share,SharePage,Meta,twitter_card,"summary_large_image",,active
|
|
101
|
-
landing.handle.placeholder,landing,LandingPage,LandingPage,handle_placeholder,"TRY '{{handle}}'",,active
|
|
102
|
-
landing.rank.expectation,landing,LandingPage,LandingPage,rank_expectation,"RANK_EXPECTATION: {{rank}}",,active
|
|
103
|
-
landing.rank.singularity,landing,LandingPage,LandingPage,rank_singularity,"APEX",,active
|
|
104
|
-
landing.rank.unranked,landing,LandingPage,LandingPage,rank_unranked,"UNRANKED",,active
|
|
105
|
-
landing.cta.primary,landing,LandingPage,LandingPage,cta_primary,"View Dashboard",,active
|
|
106
|
-
landing.cta.secondary,landing,LandingPage,LandingPage,cta_secondary,"GITHUB SOURCE",,active
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
landing.v2.hero.title_line1,landing,LandingPage,MarketingLanding,hero_title_1,"TRACK ALL YOUR",,active
|
|
114
|
-
landing.v2.hero.title_line2,landing,LandingPage,MarketingLanding,hero_title_2,"AI TOKENS",,active
|
|
115
|
-
landing.v2.install.mac_cta,landing,LandingPage,MarketingLanding,mac_cta,"MAC APP (DMG)",,active
|
|
116
|
-
landing.v2.models.title,landing,LandingPage,MarketingLanding,models_title,"SUPPORTED AI CLI TOOLS",,active
|
|
117
|
-
landing.v2.compare.kicker,landing,LandingPage,MarketingLanding,compare_kicker,"SEAMLESS TRACKING",,active
|
|
118
|
-
landing.v2.compare.title,landing,LandingPage,MarketingLanding,compare_title,"Stop guessing your AI usage.",,active
|
|
119
|
-
landing.v2.compare.subtitle,landing,LandingPage,MarketingLanding,compare_subtitle,"AI CLI tools hide your usage data in obscure local files. TokenTracker aggregates them into a single, beautiful dashboard in real-time.",,active
|
|
120
|
-
landing.v2.distill.body,landing,LandingPage,MarketingLanding,distill_body,"100% local processing. No prompts or code are ever collected.",,active
|
|
121
|
-
landing.v2.compare.with.title,landing,LandingPage,MarketingLanding,with_title,"WITH TOKEN TRACKER",,active
|
|
122
|
-
landing.v2.compare.with.p1,landing,LandingPage,MarketingLanding,with_p1,"Centralized usage dashboard",,active
|
|
123
|
-
landing.v2.compare.with.p2,landing,LandingPage,MarketingLanding,with_p2,"Real-time token metrics",,active
|
|
124
|
-
landing.v2.compare.with.p3,landing,LandingPage,MarketingLanding,with_p3,"100% local, privacy-guaranteed",,active
|
|
125
|
-
landing.v2.compare.without.title,landing,LandingPage,MarketingLanding,without_title,"WITHOUT IT",,active
|
|
126
|
-
landing.v2.compare.without.p1,landing,LandingPage,MarketingLanding,without_p1,"Scattered JSON log files",,active
|
|
127
|
-
landing.v2.compare.without.p2,landing,LandingPage,MarketingLanding,without_p2,"Blind to token consumption",,active
|
|
128
|
-
landing.v2.compare.without.p3,landing,LandingPage,MarketingLanding,without_p3,"Unexpected API bills",,active
|
|
129
|
-
landing.v2.footer.line,landing,LandingPage,MarketingLanding,footer_line,"Token Tracker — Made by developers, for developers.",,active
|
|
130
|
-
landing.v2.nav.status,landing,LandingPage,MarketingLanding,nav_status,"Status",,active
|
|
131
|
-
landing.v2.nav.github,landing,LandingPage,MarketingLanding,nav_github,"GitHub",,active
|
|
132
|
-
landing.v2.models.agent.codex,landing,LandingPage,MarketingLanding,agent_codex,"CODEX",,active
|
|
133
|
-
landing.v2.models.agent.claude_code,landing,LandingPage,MarketingLanding,agent_claude_code,"CLAUDE CODE",,active
|
|
134
|
-
landing.v2.models.agent.cursor,landing,LandingPage,MarketingLanding,agent_cursor,"CURSOR",,active
|
|
135
|
-
landing.v2.models.agent.gemini,landing,LandingPage,MarketingLanding,agent_gemini,"GEMINI",,active
|
|
136
|
-
landing.v2.models.agent.opencode,landing,LandingPage,MarketingLanding,agent_opencode,"OPENCODE",,active
|
|
137
|
-
landing.v2.models.agent.openclaw,landing,LandingPage,MarketingLanding,agent_openclaw,"OPENCLAW",,active
|
|
138
|
-
landing.v2.cta.primary,landing,LandingPage,MarketingLanding,cta_primary,"Dashboard",,active
|
|
139
|
-
landing.v2.hero.subtagline,landing,LandingPage,MarketingLanding,hero_subtagline,"Automatically monitor token usage across Claude Code, Cursor, Codex, and more. Local-first, privacy-focused, and zero manual configuration.",,active
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
identity_card.rank_label,ui,IdentityCard,IdentityCard,rank_label,"Started",,active
|
|
145
|
-
identity_card.streak_label,ui,IdentityCard,IdentityCard,streak_label,"Active days",,active
|
|
146
|
-
identity_card.rank_placeholder,ui,IdentityCard,IdentityCard,rank_placeholder,"—",,active
|
|
147
|
-
identity_card.streak_value,ui,IdentityCard,IdentityCard,streak_value,"{{days}} DAY",,active
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
dashboard.core_index.collapse_label,dashboard,DashboardPage,UsagePanel,toggle,"▾",,active
|
|
151
|
-
dashboard.core_index.expand_label,dashboard,DashboardPage,UsagePanel,toggle,"▸",,active
|
|
152
|
-
dashboard.core_index.collapse_aria,dashboard,DashboardPage,UsagePanel,toggle_aria,"Collapse model breakdown",,active
|
|
153
|
-
dashboard.core_index.expand_aria,dashboard,DashboardPage,UsagePanel,toggle_aria,"Expand model breakdown",,active
|
|
154
|
-
usage.summary.total,ui,UsagePanel,UsagePanel,summary_label_total,"Total tokens",,active
|
|
155
|
-
usage.metric.total,ui,UsagePanel,UsagePanel,metric_total,"Total",,active
|
|
156
|
-
usage.metric.input,ui,UsagePanel,UsagePanel,metric_input,"Input",,active
|
|
157
|
-
usage.metric.output,ui,UsagePanel,UsagePanel,metric_output,"Output",,active
|
|
158
|
-
usage.metric.cached_input,ui,UsagePanel,UsagePanel,metric_cached_input,"Cached input",,active
|
|
159
|
-
usage.metric.reasoning_output,ui,UsagePanel,UsagePanel,metric_reasoning_output,"Reasoning output",,active
|
|
160
|
-
usage.button.refresh,ui,UsagePanel,UsagePanel,button_refresh,"Refresh",,active
|
|
161
|
-
|
|
162
|
-
dashboard.rolling.title,ui,RollingUsagePanel,RollingUsagePanel,title,"Recent Activity",,active
|
|
163
|
-
dashboard.rolling.last_7d,ui,RollingUsagePanel,RollingUsagePanel,label_last_7d,"Last 7 days",,active
|
|
164
|
-
dashboard.rolling.last_30d,ui,RollingUsagePanel,RollingUsagePanel,label_last_30d,"Last 30 days",,active
|
|
165
|
-
dashboard.rolling.avg_active_day,ui,RollingUsagePanel,RollingUsagePanel,label_avg_active_day,"Daily average",,active
|
|
166
|
-
|
|
167
|
-
dashboard.projects.title,ui,ProjectUsagePanel,ProjectUsagePanel,title,"Project Usage",,active
|
|
168
|
-
dashboard.projects.tokens_label,ui,ProjectUsagePanel,ProjectUsagePanel,tokens_label,"Tokens",,active
|
|
169
|
-
dashboard.projects.stars_label,ui,ProjectUsagePanel,ProjectUsagePanel,stars_label,"STAR",,active
|
|
170
|
-
dashboard.projects.limit_label,ui,ProjectUsagePanel,ProjectUsagePanel,limit_label,"Show",,active
|
|
171
|
-
dashboard.projects.limit_aria,ui,ProjectUsagePanel,ProjectUsagePanel,limit_aria,"Select repository limit",,active
|
|
172
|
-
dashboard.projects.limit_top_3,ui,ProjectUsagePanel,ProjectUsagePanel,limit_top_3,"TOP 3",,active
|
|
173
|
-
dashboard.projects.limit_top_6,ui,ProjectUsagePanel,ProjectUsagePanel,limit_top_6,"TOP 6",,active
|
|
174
|
-
dashboard.projects.limit_top_10,ui,ProjectUsagePanel,ProjectUsagePanel,limit_top_10,"TOP 10",,active
|
|
175
|
-
dashboard.projects.empty,ui,ProjectUsagePanel,ProjectUsagePanel,empty,"No public repositories",,active
|
|
176
|
-
dashboard.widgets.title,dashboard,DashboardPage,WidgetOnboardingCard,title,"Desktop Widgets",,active
|
|
177
|
-
dashboard.widgets.hint,dashboard,DashboardPage,WidgetOnboardingCard,hint,"Right-click your desktop → Edit Widgets → search ""TokenTracker""",,active
|
|
178
|
-
dashboard.widgets.dismiss_aria,dashboard,DashboardPage,WidgetOnboardingCard,dismiss_aria,"Dismiss widget intro",,active
|
|
179
|
-
widgets.page.title,dashboard,WidgetsPage,WidgetsPage,title,"Widgets",,active
|
|
180
|
-
widgets.cta.open_gallery,dashboard,WidgetsPage,WidgetsPage,cta_open_gallery,"Open Widget Gallery",,active
|
|
181
|
-
widgets.cta.download,dashboard,WidgetsPage,WidgetsPage,cta_download,"Download Mac App",,active
|
|
182
|
-
widgets.cta.macos_only,dashboard,WidgetsPage,WidgetsPage,cta_macos_only,"macOS only",,active
|
|
183
|
-
widgets.menubar.section.title,dashboard,WidgetsPage,WidgetsPage,menubar_section_title,"Menu Bar",,active
|
|
184
|
-
widgets.gallery.section.title,dashboard,WidgetsPage,WidgetsPage,gallery_section_title,"Desktop Widgets",,active
|
|
185
|
-
widgets.summary.name,dashboard,WidgetsPage,WidgetsPage,summary_name,"Usage Summary",,active
|
|
186
|
-
widgets.summary.description,dashboard,WidgetsPage,WidgetsPage,summary_desc,"Today and seven-day usage with a compact sparkline.",,active
|
|
187
|
-
widgets.heatmap.name,dashboard,WidgetsPage,WidgetsPage,heatmap_name,"Activity Heatmap",,active
|
|
188
|
-
widgets.heatmap.description,dashboard,WidgetsPage,WidgetsPage,heatmap_desc,"GitHub-style daily calendar. Spot streaks and quiet days at a glance.",,active
|
|
189
|
-
widgets.topModels.name,dashboard,WidgetsPage,WidgetsPage,topmodels_name,"Top Models",,active
|
|
190
|
-
widgets.topModels.description,dashboard,WidgetsPage,WidgetsPage,topmodels_desc,"Your heaviest-used models ranked by token share.",,active
|
|
191
|
-
widgets.limits.name,dashboard,WidgetsPage,WidgetsPage,limits_name,"Usage Limits",,active
|
|
192
|
-
widgets.limits.description,dashboard,WidgetsPage,WidgetsPage,limits_desc,"Live rate-limit progress for Claude, Codex, Cursor, Gemini and more.",,active
|
|
193
|
-
dashboard.cost_breakdown.title,ui,CostAnalysisModal,CostAnalysisModal,title,"Cost Breakdown",,active
|
|
194
|
-
dashboard.cost_breakdown.total_label,ui,CostAnalysisModal,CostAnalysisModal,total_label,"Estimated Total Cost",,active
|
|
195
|
-
dashboard.cost_breakdown.close,ui,CostAnalysisModal,CostAnalysisModal,close_label,"Close",,active
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
trend.monitor.label,ui,TrendMonitor,TrendMonitor,label,"Usage Trend",,active
|
|
199
|
-
|
|
200
|
-
heatmap.title,ui,ActivityHeatmap,ActivityHeatmap,title,"Activity Heatmap",,active
|
|
201
|
-
heatmap.empty,ui,ActivityHeatmap,ActivityHeatmap,empty_state,"No activity data yet.",,active
|
|
202
|
-
heatmap.legend.less,ui,ActivityHeatmap,ActivityHeatmap,legend_less,"Less",,active
|
|
203
|
-
heatmap.legend.more,ui,ActivityHeatmap,ActivityHeatmap,legend_more,"More",,active
|
|
204
|
-
heatmap.legend.utc,ui,ActivityHeatmap,ActivityHeatmap,legend_utc,"UTC",,active
|
|
205
|
-
heatmap.tooltip,ui,ActivityHeatmap,ActivityHeatmap,tooltip,"{{day}} • {{value}} {{unit}} • {{tz}}",,active
|
|
206
|
-
heatmap.unit.tokens,ui,ActivityHeatmap,ActivityHeatmap,unit_tokens,"tokens",,active
|
|
207
|
-
heatmap.iso.aria,ui,ActivityHeatmap,ActivityHeatmap3D,iso_aria,"3D isometric activity heatmap",,active
|
|
208
|
-
heatmap.view.2d,ui,ActivityHeatmap,ActivityHeatmap,view_2d,"2D",,active
|
|
209
|
-
heatmap.view.3d,ui,ActivityHeatmap,ActivityHeatmap,view_3d,"3D",,active
|
|
210
|
-
heatmap.month.jan,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Jan",,active
|
|
211
|
-
heatmap.month.feb,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Feb",,active
|
|
212
|
-
heatmap.month.mar,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Mar",,active
|
|
213
|
-
heatmap.month.apr,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Apr",,active
|
|
214
|
-
heatmap.month.may,ui,ActivityHeatmap,ActivityHeatmap,month_label,"May",,active
|
|
215
|
-
heatmap.month.jun,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Jun",,active
|
|
216
|
-
heatmap.month.jul,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Jul",,active
|
|
217
|
-
heatmap.month.aug,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Aug",,active
|
|
218
|
-
heatmap.month.sep,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Sep",,active
|
|
219
|
-
heatmap.month.oct,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Oct",,active
|
|
220
|
-
heatmap.month.nov,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Nov",,active
|
|
221
|
-
heatmap.month.dec,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Dec",,active
|
|
222
|
-
heatmap.day.sun,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Sun",,active
|
|
223
|
-
heatmap.day.mon,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Mon",,active
|
|
224
|
-
heatmap.day.tue,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Tue",,active
|
|
225
|
-
heatmap.day.wed,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Wed",,active
|
|
226
|
-
heatmap.day.thu,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Thu",,active
|
|
227
|
-
heatmap.day.fri,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Fri",,active
|
|
228
|
-
heatmap.day.sat,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Sat",,active
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
daily.sort.date.label,dashboard,DashboardPage,DailyTable,sort_label,"Date",,active
|
|
234
|
-
daily.sort.date.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Date",,active
|
|
235
|
-
daily.sort.total.label,dashboard,DashboardPage,DailyTable,sort_label,"Total",,active
|
|
236
|
-
daily.sort.total.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Total",,active
|
|
237
|
-
daily.sort.input.label,dashboard,DashboardPage,DailyTable,sort_label,"Input",,active
|
|
238
|
-
daily.sort.input.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Input",,active
|
|
239
|
-
daily.sort.output.label,dashboard,DashboardPage,DailyTable,sort_label,"Output",,active
|
|
240
|
-
daily.sort.output.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Output",,active
|
|
241
|
-
daily.sort.cached.label,dashboard,DashboardPage,DailyTable,sort_label,"Cached",,active
|
|
242
|
-
daily.sort.cached.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Cached input",,active
|
|
243
|
-
daily.sort.reasoning.label,dashboard,DashboardPage,DailyTable,sort_label,"Reasoning",,active
|
|
244
|
-
daily.sort.reasoning.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Reasoning output",,active
|
|
245
|
-
daily.sort.conversations.label,dashboard,DashboardPage,DailyTable,sort_label,"Convs",,active
|
|
246
|
-
daily.sort.conversations.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Conversations",,active
|
|
247
|
-
details.pagination.prev,dashboard,DashboardPage,DailyTable,pagination_prev,"Prev",,active
|
|
248
|
-
details.pagination.next,dashboard,DashboardPage,DailyTable,pagination_next,"Next",,active
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
leaderboard.profile.nav.back,dashboard,LeaderboardProfilePage,Header,nav_back,"Leaderboard",,active
|
|
253
|
-
leaderboard.profile.hero.rank_label,dashboard,LeaderboardProfilePage,Hero,rank_label,"Rank",,active
|
|
254
|
-
leaderboard.title,dashboard,LeaderboardPage,LeaderboardPage,title,"Leaderboard",,active
|
|
255
|
-
leaderboard.range,dashboard,LeaderboardPage,LeaderboardPage,range,"UTC {{period}} · {{from}} – {{to}}",,active
|
|
256
|
-
leaderboard.range_loading,dashboard,LeaderboardPage,LeaderboardPage,range_loading,"UTC {{period}} · …",,active
|
|
257
|
-
leaderboard.range.total,dashboard,LeaderboardPage,LeaderboardPage,range_total,"All time",,active
|
|
258
|
-
leaderboard.generated_at,dashboard,LeaderboardPage,LeaderboardPage,generated_at,"Updated {{ts}}",,active
|
|
259
|
-
leaderboard.period.week,dashboard,LeaderboardPage,LeaderboardPage,period_week,"Week",,active
|
|
260
|
-
leaderboard.period.month,dashboard,LeaderboardPage,LeaderboardPage,period_month,"Month",,active
|
|
261
|
-
leaderboard.period.total,dashboard,LeaderboardPage,LeaderboardPage,period_total,"All",,active
|
|
262
|
-
|
|
263
|
-
leaderboard.me_label,dashboard,LeaderboardPage,LeaderboardPage,me_label,"You",,active
|
|
264
|
-
leaderboard.anon_label,dashboard,LeaderboardPage,LeaderboardPage,anon_label,"Anonymous",,active
|
|
265
|
-
leaderboard.error.unknown,dashboard,LeaderboardPage,LeaderboardPage,error_unknown,"Unknown error",,active
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
leaderboard.loading,dashboard,LeaderboardPage,LeaderboardPage,state_loading,"Loading…",,active
|
|
270
|
-
leaderboard.empty,dashboard,LeaderboardPage,LeaderboardPage,state_empty,"No data",,active
|
|
271
|
-
|
|
272
|
-
leaderboard.column.rank,dashboard,LeaderboardPage,LeaderboardPage,column_rank,"Rank",,active
|
|
273
|
-
leaderboard.column.user,dashboard,LeaderboardPage,LeaderboardPage,column_user,"User",,active
|
|
274
|
-
leaderboard.column.total,dashboard,LeaderboardPage,LeaderboardPage,column_total,"Total",,active
|
|
275
|
-
leaderboard.column.codex,dashboard,LeaderboardPage,LeaderboardPage,column_codex,"Codex",,active
|
|
276
|
-
leaderboard.column.claude,dashboard,LeaderboardPage,LeaderboardPage,column_claude,"Claude",,active
|
|
277
|
-
leaderboard.column.gemini,dashboard,LeaderboardPage,LeaderboardPage,column_gemini,"Gemini",,active
|
|
278
|
-
leaderboard.column.cursor,dashboard,LeaderboardPage,LeaderboardPage,column_cursor,"Cursor",,active
|
|
279
|
-
leaderboard.column.opencode,dashboard,LeaderboardPage,LeaderboardPage,column_opencode,"OpenCode",,active
|
|
280
|
-
leaderboard.column.openclaw,dashboard,LeaderboardPage,LeaderboardPage,column_openclaw,"OpenClaw",,active
|
|
281
|
-
leaderboard.column.hermes,dashboard,LeaderboardPage,LeaderboardPage,column_hermes,"Hermes",,active
|
|
282
|
-
leaderboard.column.kiro,dashboard,LeaderboardPage,LeaderboardPage,column_kiro,"Kiro",,active
|
|
283
|
-
leaderboard.column.copilot,dashboard,LeaderboardPage,LeaderboardPage,column_copilot,"GitHub Copilot",,active
|
|
284
|
-
leaderboard.column.kimi,dashboard,LeaderboardPage,LeaderboardPage,column_kimi,"Kimi Code",,active
|
|
285
|
-
leaderboard.column.kilo-cli,dashboard,LeaderboardPage,LeaderboardPage,column_kilo_cli,"Kilo CLI",,active
|
|
286
|
-
leaderboard.column.kilo-code,dashboard,LeaderboardPage,LeaderboardPage,column_kilo_code,"Kilo Code",,active
|
|
287
|
-
limits.copilot.otelHint.title,dashboard,LimitsPage,LimitsPage,otel_hint_title,"Track Copilot token usage",,active
|
|
288
|
-
limits.copilot.otelHint.body,dashboard,LimitsPage,LimitsPage,otel_hint_body,"Limits load via your GitHub OAuth token. To also record per-token usage, enable Copilot's OpenTelemetry export and add these lines to your shell profile (~/.zshrc or ~/.bashrc):",,active
|
|
289
|
-
limits.copilot.otelHint.copy,dashboard,LimitsPage,LimitsPage,otel_hint_copy,"Copy",,active
|
|
290
|
-
limits.copilot.otelHint.copied,dashboard,LimitsPage,LimitsPage,otel_hint_copied,"Copied",,active
|
|
291
|
-
leaderboard.column.supplemental,dashboard,LeaderboardPage,LeaderboardPage,column_supplemental,"Supplemental",,active
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
leaderboard.pagination.prev,dashboard,LeaderboardPage,LeaderboardPage,pagination_prev,"Previous",,active
|
|
295
|
-
leaderboard.pagination.next,dashboard,LeaderboardPage,LeaderboardPage,pagination_next,"Next",,active
|
|
296
|
-
leaderboard.pagination.ellipsis,dashboard,LeaderboardPage,LeaderboardPage,pagination_ellipsis,"…",,active
|
|
297
|
-
leaderboard.pagination.page_unknown,dashboard,LeaderboardPage,LeaderboardPage,pagination_unknown,"Page {{page}}",,active
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
dashboard.session_expired.copy_label,dashboard,DashboardPage,AsciiBox,body,"run npx --yes tokentracker-cli init",,active
|
|
303
|
-
dashboard.session_expired.copied,dashboard,DashboardPage,AsciiBox,body,"copied",,active
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
dashboard.install.prompt,dashboard,DashboardPage,AsciiBox,install_prompt,"Install Node.js 18+ then run:",,active
|
|
307
|
-
dashboard.install.cmd.init,dashboard,DashboardPage,AsciiBox,install_cmd,"npx --yes tokentracker-cli init",,active
|
|
308
|
-
dashboard.install.cmd.init_link_code,dashboard,DashboardPage,AsciiBox,install_cmd,"npx --yes tokentracker-cli init --link-code {{link_code}}",,active
|
|
309
|
-
dashboard.install.copy,dashboard,DashboardPage,AsciiBox,install_copy,"Copy install command",,active
|
|
310
|
-
dashboard.install.copy_base,dashboard,DashboardPage,AsciiBox,install_copy,"Copy init command",,active
|
|
311
|
-
dashboard.install.copied,dashboard,DashboardPage,AsciiBox,install_copy,"Copied to clipboard",,active
|
|
312
|
-
dashboard.install.link_code.loading,dashboard,DashboardPage,AsciiBox,install_status,"Generating private code...",,active
|
|
313
|
-
dashboard.install.link_code.failed,dashboard,DashboardPage,AsciiBox,install_status,"Private code unavailable",,active
|
|
314
|
-
dashboard.install.cmd.sync,dashboard,DashboardPage,AsciiBox,install_cmd,"npx --yes tokentracker-cli sync",,active
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
dashboard.daily.title,dashboard,DashboardPage,AsciiBox,title,"Daily Breakdown",,active
|
|
319
|
-
dashboard.daily.empty,dashboard,DashboardPage,AsciiBox,empty_state,"No data yet. Use your AI CLI then run {{cmd}}.",,active
|
|
320
|
-
|
|
321
|
-
dashboard.identity.title,dashboard,DashboardPage,IdentityCard,title,"Your Profile",,active
|
|
322
|
-
dashboard.identity.subtitle,dashboard,DashboardPage,IdentityCard,subtitle,"Track your coding journey",,active
|
|
323
|
-
dashboard.identity.fallback,dashboard,DashboardPage,IdentityCard,handle_fallback,"Anonymous",,active
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
dashboard.screenshot.title_line1,dashboard,DashboardPage,ScreenshotTitle,title_line,"Coding Agent",,active
|
|
327
|
-
dashboard.screenshot.title_line2,dashboard,DashboardPage,ScreenshotTitle,title_line,"2025 Wrapped",,active
|
|
328
|
-
dashboard.screenshot.twitter_button,dashboard,DashboardPage,ScreenshotShare,button_label,"Share on X",,active
|
|
329
|
-
dashboard.screenshot.twitter_label,dashboard,DashboardPage,ScreenshotShare,aria_label,"Share on X",,active
|
|
330
|
-
dashboard.screenshot.twitter_hint,dashboard,DashboardPage,ScreenshotShare,helper_text,"Auto-copies image to clipboard",,active
|
|
331
|
-
dashboard.screenshot.twitter_text,dashboard,DashboardPage,ScreenshotShare,share_text,"{{total_tokens}} tokens on the record.\\n{{model_name}} led with {{model_percent}}%.\\n\\nMy AI usage, unaudited →\\ntokentracker.cc",,active
|
|
332
|
-
|
|
333
|
-
nav.usage,shared,*,Sidebar,nav_usage,"Tokens",,active
|
|
334
|
-
nav.limits,shared,*,Sidebar,nav_limits,"Limits",,active
|
|
335
|
-
nav.widgets,shared,*,Sidebar,nav_widgets,"macOS Widgets",,active
|
|
336
|
-
nav.leaderboard,shared,*,Sidebar,nav_leaderboard,"Leaderboard",,active
|
|
337
|
-
nav.collapse,shared,*,Sidebar,nav_collapse,"Collapse sidebar",,active
|
|
338
|
-
nav.expand,shared,*,Sidebar,nav_expand,"Expand sidebar",,active
|
|
339
|
-
nav.menu,shared,*,Sidebar,nav_menu,"Open navigation menu",,active
|
|
340
|
-
nav.close_menu,shared,*,Sidebar,nav_close_menu,"Close navigation menu",,active
|
|
341
|
-
nav.aside_label,shared,*,Sidebar,aside_label,"Main navigation",,active
|
|
342
|
-
nav.nav_label,shared,*,Sidebar,nav_label,"Primary",,active
|
|
343
|
-
limits.page.subtitle,ui,LimitsPage,LimitsPage,subtitle,"Rate limits and quota usage across your AI tools.",,active
|
|
344
|
-
limits.settings.toggle_visible,ui,LimitsPage,LimitsSettingsPanel,toggle_visible,"Toggle visibility",,active
|
|
345
|
-
limits.page.openSettings,ui,LimitsPage,LimitsPage,open_settings,"Display settings",,active
|
|
346
|
-
nav.group.general,shared,*,Sidebar,group_general,"General",,active
|
|
347
|
-
nav.group.tools,shared,*,Sidebar,group_tools,"Tools",,active
|
|
348
|
-
nav.group.account,shared,*,Sidebar,group_account,"Account",,active
|
|
349
|
-
nav.settings,shared,*,Sidebar,nav_settings,"Settings",,active
|
|
350
|
-
header.auth.open_settings,shared,*,InsforgeUserHeaderControls,open_settings,"Open settings",,active
|
|
351
|
-
settings.page.title,ui,SettingsPage,SettingsPage,title,"Settings",,active
|
|
352
|
-
settings.page.subtitle,ui,SettingsPage,SettingsPage,subtitle,"Manage your account, appearance, and display preferences.",,active
|
|
353
|
-
settings.section.appearance,ui,SettingsPage,SettingsPage,sec_appearance,"Appearance",,active
|
|
354
|
-
settings.section.account,ui,SettingsPage,SettingsPage,sec_account,"Account",,active
|
|
355
|
-
settings.section.limits,ui,SettingsPage,SettingsPage,sec_limits,"Limits Display",,active
|
|
356
|
-
settings.appearance.theme.label,ui,SettingsPage,SettingsPage,theme_label,"Theme",,active
|
|
357
|
-
settings.appearance.theme.hint,ui,SettingsPage,SettingsPage,theme_hint,"Choose how Token Tracker looks across the dashboard.",,active
|
|
358
|
-
settings.appearance.theme.light,ui,SettingsPage,SettingsPage,theme_light,"Light",,active
|
|
359
|
-
settings.appearance.theme.dark,ui,SettingsPage,SettingsPage,theme_dark,"Dark",,active
|
|
360
|
-
settings.appearance.theme.system,ui,SettingsPage,SettingsPage,theme_system,"System",,active
|
|
361
|
-
settings.appearance.currency.label,ui,SettingsPage,SettingsPage,currency_label,"Currency",,active
|
|
362
|
-
settings.appearance.currency.hint,ui,SettingsPage,SettingsPage,currency_hint,"Select the display currency for usage costs.",,active
|
|
363
|
-
settings.appearance.currency.opt.usd,ui,SettingsPage,SettingsPage,currency_opt_usd,"USD ($)",,active
|
|
364
|
-
settings.appearance.currency.opt.eur,ui,SettingsPage,SettingsPage,currency_opt_eur,"EUR (€)",,active
|
|
365
|
-
settings.appearance.currency.opt.gbp,ui,SettingsPage,SettingsPage,currency_opt_gbp,"GBP (£)",,active
|
|
366
|
-
settings.appearance.currency.opt.cny,ui,SettingsPage,SettingsPage,currency_opt_cny,"CNY (¥)",,active
|
|
367
|
-
settings.appearance.currency.opt.jpy,ui,SettingsPage,SettingsPage,currency_opt_jpy,"JPY (¥)",,active
|
|
368
|
-
settings.appearance.currency.opt.hkd,ui,SettingsPage,SettingsPage,currency_opt_hkd,"HKD (HK$)",,active
|
|
369
|
-
settings.appearance.currency.rate_source.default,ui,SettingsPage,SettingsPage,rate_source_default,"Bundled default rate",,active
|
|
370
|
-
settings.appearance.currency.rate_source.fetched,ui,SettingsPage,SettingsPage,rate_source_fetched,"Source: open.er-api.com",,active
|
|
371
|
-
settings.appearance.currency.rate_updated,ui,SettingsPage,SettingsPage,rate_updated,"updated {{when}}",,active
|
|
372
|
-
settings.appearance.currency.rate_never,ui,SettingsPage,SettingsPage,rate_never,"awaiting first refresh",,active
|
|
373
|
-
settings.account.displayName,ui,SettingsPage,SettingsPage,display_name,"Display name",,active
|
|
374
|
-
settings.account.edit,ui,SettingsPage,SettingsPage,edit,"Edit",,active
|
|
375
|
-
settings.account.save,ui,SettingsPage,SettingsPage,save,"Save",,active
|
|
376
|
-
settings.account.saving,ui,SettingsPage,SettingsPage,saving,"Saving...",,active
|
|
377
|
-
settings.account.cancel,ui,SettingsPage,SettingsPage,cancel,"Cancel",,active
|
|
378
|
-
settings.account.userId,ui,SettingsPage,SettingsPage,user_id,"User ID",,active
|
|
379
|
-
settings.account.copyUserId,ui,SettingsPage,SettingsPage,copy_user_id,"Copy user ID",,active
|
|
380
|
-
settings.account.copy,ui,SettingsPage,SettingsPage,copy,"Copy",,active
|
|
381
|
-
settings.account.copied,ui,SettingsPage,SettingsPage,copied,"Copied",,active
|
|
382
|
-
settings.account.cloudSync,ui,SettingsPage,SettingsPage,cloud_sync,"Cloud sync",,active
|
|
383
|
-
settings.account.cloudSyncHint,ui,SettingsPage,SettingsPage,cloud_sync_hint,"Upload local usage to your Token Tracker cloud account.",,active
|
|
384
|
-
settings.account.publicProfile,ui,SettingsPage,SettingsPage,public_profile,"Public profile",,active
|
|
385
|
-
settings.account.publicProfileHint,ui,SettingsPage,SettingsPage,public_profile_hint,"Show your usage on the public leaderboard.",,active
|
|
386
|
-
settings.account.displayNameAnonymousHint,ui,SettingsPage,SettingsPage,display_name_anon_hint,"Anonymous — your name and avatar are hidden on the leaderboard",,active
|
|
387
|
-
settings.account.displayNameDisabledWhileAnon,ui,SettingsPage,SettingsPage,display_name_disabled,"Turn on the switch first to edit your name",,active
|
|
388
|
-
settings.account.githubUrl,ui,SettingsPage,SettingsPage,github_url,"GitHub profile",,active
|
|
389
|
-
settings.account.githubUrlHint,ui,SettingsPage,SettingsPage,github_url_hint,"Show a GitHub link next to your name on the leaderboard.",,active
|
|
390
|
-
settings.account.githubUrlPlaceholder,ui,SettingsPage,SettingsPage,github_url_placeholder,"username or https://github.com/username",,active
|
|
391
|
-
settings.account.githubUrlInvalid,ui,SettingsPage,SettingsPage,github_url_invalid,"Use a GitHub username or https://github.com/username URL.",,active
|
|
392
|
-
leaderboard.github.aria,ui,LeaderboardPage,LeaderboardPage,github_aria,"Open GitHub profile",,active
|
|
393
|
-
auth.callback.processing,ui,*,NativeAuthCallbackPage,processing,"Processing…",,active
|
|
394
|
-
auth.callback.success,ui,*,NativeAuthCallbackPage,success,"Signed in successfully",,active
|
|
395
|
-
auth.callback.redirecting,ui,*,NativeAuthCallbackPage,redirecting,"Returning to TokenTracker…",,active
|
|
396
|
-
auth.callback.failed,ui,*,NativeAuthCallbackPage,failed,"Sign-in incomplete. Please try again.",,active
|
|
397
|
-
auth.callback.close,ui,*,NativeAuthCallbackPage,close,"Close this page",,active
|
|
398
|
-
stats.period.today,ui,DashboardPage,StatsPanel,period_today,"today",,active
|
|
399
|
-
stats.period.week,ui,DashboardPage,StatsPanel,period_week,"week",,active
|
|
400
|
-
stats.period.month,ui,DashboardPage,StatsPanel,period_month,"month",,active
|
|
401
|
-
stats.period.all,ui,DashboardPage,StatsPanel,period_all,"all",,active
|
|
402
|
-
stats.period.convs,ui,DashboardPage,StatsPanel,period_convs,"convs",,active
|
|
403
|
-
leaderboard.column.est_cost,ui,LeaderboardPage,LeaderboardPage,column_est_cost,"Est. Cost",,active
|
|
404
|
-
leaderboard.signin_prompt,ui,LeaderboardPage,LeaderboardPage,signin_prompt,"Sign in to join the leaderboard",,active
|
|
405
|
-
leaderboard.signin_button,ui,LeaderboardPage,LeaderboardPage,signin_button,"Sign In",,active
|
|
406
|
-
leaderboard.sync_prompt,ui,LeaderboardPage,LeaderboardPage,sync_prompt,"Enable Cloud Sync to appear in rankings",,active
|
|
407
|
-
leaderboard.sync_button.idle,ui,LeaderboardPage,LeaderboardPage,sync_button_idle,"Enable & Sync",,active
|
|
408
|
-
leaderboard.sync_button.busy,ui,LeaderboardPage,LeaderboardPage,sync_button_busy,"Syncing...",,active
|
|
409
|
-
leaderboard.pagination.page_size_label,ui,LeaderboardPage,LeaderboardPage,page_size_label,"Rows per page",,active
|
|
410
|
-
leaderboard.github.tooltipAction,ui,LeaderboardPage,LeaderboardPage,github_tooltip_action,"Click to open GitHub profile",,active
|
|
411
|
-
leaderboard.github.tooltipPrefix,ui,LeaderboardPage,LeaderboardPage,github_tooltip_prefix,"Set yours in",,active
|
|
412
|
-
leaderboard.github.tooltipSettingsLink,ui,LeaderboardPage,LeaderboardPage,github_tooltip_link,"Settings",,active
|
|
413
|
-
leaderboard.github.tooltipSuffix,ui,LeaderboardPage,LeaderboardPage,github_tooltip_suffix," to appear here",,active
|
|
414
|
-
leaderboard.summary.percentile,ui,LeaderboardPage,LeaderboardMeChip,summary_percentile,"Top {{p}}%",,active
|
|
415
|
-
leaderboard.summary.jump_to_me,ui,LeaderboardPage,LeaderboardMeChip,summary_jump_to_me,"Jump to my row",,active
|
|
416
|
-
leaderboard.summary.view_profile,ui,LeaderboardPage,LeaderboardMeChip,summary_view_profile,"View your profile",,active
|
|
417
|
-
settings.account.signOut,ui,SettingsPage,SettingsPage,sign_out,"Sign out",,active
|
|
418
|
-
settings.account.signIn,ui,SettingsPage,SettingsPage,sign_in,"Sign in",,active
|
|
419
|
-
settings.account.signedOutHint,ui,SettingsPage,SettingsPage,signed_out_hint,"Sign in to manage cloud sync and leaderboard preferences.",,active
|
|
420
|
-
settings.section.menubar,ui,SettingsPage,SettingsPage,sec_menubar,"Menu Bar App",,active
|
|
421
|
-
settings.menubar.showStats,ui,SettingsPage,SettingsPage,mb_show_stats,"Show stats in menu bar",,active
|
|
422
|
-
settings.menubar.showStatsHint,ui,SettingsPage,SettingsPage,mb_show_stats_hint,"Display today's token count and cost beside the menu bar icon.",,active
|
|
423
|
-
settings.menubar.animatedIcon,ui,SettingsPage,SettingsPage,mb_anim,"Animated icon",,active
|
|
424
|
-
settings.menubar.animatedIconHint,ui,SettingsPage,SettingsPage,mb_anim_hint,"Blink the Clawd character and play the syncing animation in the menu bar.",,active
|
|
425
|
-
settings.menubar.launchAtLogin,ui,SettingsPage,SettingsPage,mb_login,"Launch at login",,active
|
|
426
|
-
settings.menubar.launchAtLoginHint,ui,SettingsPage,SettingsPage,mb_login_hint,"Start TokenTrackerBar automatically when you sign in to macOS.",,active
|
|
427
|
-
settings.menubar.syncNow,ui,SettingsPage,SettingsPage,mb_sync_now,"Sync now",,active
|
|
428
|
-
settings.menubar.syncNowHint,ui,SettingsPage,SettingsPage,mb_sync_now_hint,"Trigger an immediate parse and upload of local AI tool logs.",,active
|
|
429
|
-
settings.menubar.syncing,ui,SettingsPage,SettingsPage,mb_syncing,"Syncing…",,active
|
|
430
|
-
settings.menubar.updates,ui,SettingsPage,SettingsPage,mb_updates,"Updates",,active
|
|
431
|
-
settings.menubar.checkUpdates,ui,SettingsPage,SettingsPage,mb_check_updates,"Check for updates",,active
|
|
432
|
-
settings.footer.statusPage,ui,SettingsPage,NativeAppFooter,status_page,"System status",,active
|
|
433
|
-
menubar.slot.primary,ui,WidgetsPage,MenuBarDisplayCard,slot_primary,"Primary slot",,active
|
|
434
|
-
menubar.slot.secondary,ui,WidgetsPage,MenuBarDisplayCard,slot_secondary,"Secondary slot",,active
|
|
435
|
-
menubar.native_only,ui,WidgetsPage,MenuBarDisplayCard,native_only,"Open TokenTrackerBar for macOS to edit the live menu bar display.",,active
|
|
436
|
-
menubar.metric.today_tokens,ui,WidgetsPage,MenuBarDisplayCard,metric_today_tokens,"Today Tokens",,active
|
|
437
|
-
menubar.metric.today_cost,ui,WidgetsPage,MenuBarDisplayCard,metric_today_cost,"Today Cost",,active
|
|
438
|
-
menubar.metric.last_7d_tokens,ui,WidgetsPage,MenuBarDisplayCard,metric_last_7d,"Last 7 Days",,active
|
|
439
|
-
menubar.metric.total_tokens,ui,WidgetsPage,MenuBarDisplayCard,metric_total_tokens,"Total Tokens",,active
|
|
440
|
-
menubar.metric.total_cost,ui,WidgetsPage,MenuBarDisplayCard,metric_total_cost,"Total Cost",,active
|
|
441
|
-
menubar.metric.claude_5h,ui,WidgetsPage,MenuBarDisplayCard,metric_claude_5h,"Claude 5h Limit",,active
|
|
442
|
-
menubar.metric.claude_7d,ui,WidgetsPage,MenuBarDisplayCard,metric_claude_7d,"Claude 7d Limit",,active
|
|
443
|
-
menubar.metric.codex_5h,ui,WidgetsPage,MenuBarDisplayCard,metric_codex_5h,"Codex 5h Limit",,active
|
|
444
|
-
menubar.metric.codex_7d,ui,WidgetsPage,MenuBarDisplayCard,metric_codex_7d,"Codex 7d Limit",,active
|
|
445
|
-
share.modal.title,share,DashboardPage,ShareModal,title,"Share your stats",,active
|
|
446
|
-
share.modal.subtitle,share,DashboardPage,ShareModal,subtitle,"Generate a poster-style card and share anywhere.",,active
|
|
447
|
-
share.modal.close,share,DashboardPage,ShareModal,close,"Close",,active
|
|
448
|
-
share.modal.action.x,share,DashboardPage,ShareModal,action_x,"Share on X",,active
|
|
449
|
-
share.modal.action.download,share,DashboardPage,ShareModal,action_download,"Download",,active
|
|
450
|
-
share.modal.action.copy,share,DashboardPage,ShareModal,action_copy,"Copy image",,active
|
|
451
|
-
share.modal.hint.x,share,DashboardPage,ShareModal,hint_x,"Paste image in tweet",,active
|
|
452
|
-
share.modal.hint.copy,share,DashboardPage,ShareModal,hint_copy,"to clipboard",,active
|
|
453
|
-
share.modal.name_label,share,DashboardPage,ShareModal,name_label,"Display name",,active
|
|
454
|
-
share.modal.name_placeholder,share,DashboardPage,ShareModal,name_placeholder,"Enter your name",,active
|
|
455
|
-
share.modal.footer,share,DashboardPage,ShareModal,footer,"Your data stays local — images are generated in your browser and never uploaded.",,active
|
|
456
|
-
share.button.label,share,DashboardPage,DashboardHeader,share_button,"Share",,active
|
|
457
|
-
share.button.aria,share,DashboardPage,DashboardHeader,share_button_aria,"Open share card",,active
|
|
458
|
-
share.toast.copied,share,DashboardPage,ShareModal,toast_copied,"Image copied to clipboard",,active
|
|
459
|
-
share.toast.downloaded,share,DashboardPage,ShareModal,toast_downloaded,"Image saved",,active
|
|
460
|
-
share.toast.failed,share,DashboardPage,ShareModal,toast_failed,"Couldn't generate image",,active
|
|
461
|
-
share.toast.working,share,DashboardPage,ShareModal,toast_working,"Generating…",,active
|
|
462
|
-
share.modal.style_label,share,DashboardPage,ShareModal,style_label,"Style",,active
|
|
463
|
-
share.variant.neon,share,DashboardPage,ShareModal,variant_neon,"Neon",,active
|
|
464
|
-
share.variant.broadsheet,share,DashboardPage,ShareModal,variant_broadsheet,"Broadsheet",,active
|
|
465
|
-
share.date.month_year,share,DashboardPage,ShareCard,date_month_year,"{{month}} {{year}}",,active
|
|
466
|
-
share.issue.all_time,share,DashboardPage,ShareCard,issue_all_time,"ALL TIME",,active
|
|
467
|
-
share.month_short.jan,share,DashboardPage,ShareCard,month_short,"JAN",,active
|
|
468
|
-
share.month_short.feb,share,DashboardPage,ShareCard,month_short,"FEB",,active
|
|
469
|
-
share.month_short.mar,share,DashboardPage,ShareCard,month_short,"MAR",,active
|
|
470
|
-
share.month_short.apr,share,DashboardPage,ShareCard,month_short,"APR",,active
|
|
471
|
-
share.month_short.may,share,DashboardPage,ShareCard,month_short,"MAY",,active
|
|
472
|
-
share.month_short.jun,share,DashboardPage,ShareCard,month_short,"JUN",,active
|
|
473
|
-
share.month_short.jul,share,DashboardPage,ShareCard,month_short,"JUL",,active
|
|
474
|
-
share.month_short.aug,share,DashboardPage,ShareCard,month_short,"AUG",,active
|
|
475
|
-
share.month_short.sep,share,DashboardPage,ShareCard,month_short,"SEP",,active
|
|
476
|
-
share.month_short.oct,share,DashboardPage,ShareCard,month_short,"OCT",,active
|
|
477
|
-
share.month_short.nov,share,DashboardPage,ShareCard,month_short,"NOV",,active
|
|
478
|
-
share.month_short.dec,share,DashboardPage,ShareCard,month_short,"DEC",,active
|
|
479
|
-
share.hook.top_loyal,share,DashboardPage,ShareCard,hook_top_loyal,"{{percent}}% loyal to {{name}}.",,active
|
|
480
|
-
share.hook.days_record,share,DashboardPage,ShareCard,hook_days_record,"{{days}} days on the record.",,active
|
|
481
|
-
share.hook.top_led,share,DashboardPage,ShareCard,hook_top_led,"Led by {{name}} ({{percent}}%).",,active
|
|
482
|
-
share.hook.multi_models,share,DashboardPage,ShareCard,hook_multi_models,"Across {{count}} models, {{days}} days.",,active
|
|
483
|
-
share.hook.days_with_model,share,DashboardPage,ShareCard,hook_days_with_model,"{{days}} days with {{name}}.",,active
|
|
484
|
-
share.hook.new_chapter,share,DashboardPage,ShareCard,hook_new_chapter,"The beginning of a new chapter.",,active
|
|
485
|
-
share.card.broadsheet.issue,share,DashboardPage,BroadsheetCard,issue_label,"Issue",,active
|
|
486
|
-
share.card.broadsheet.by,share,DashboardPage,BroadsheetCard,by_label,"By",,active
|
|
487
|
-
share.card.broadsheet.tracked_since,share,DashboardPage,BroadsheetCard,tracked_since,"Tracked since",,active
|
|
488
|
-
share.card.broadsheet.total_tokens,share,DashboardPage,BroadsheetCard,total_tokens,"Total tokens",,active
|
|
489
|
-
share.card.broadsheet.estimated_spend,share,DashboardPage,BroadsheetCard,estimated_spend,"Estimated spend",,active
|
|
490
|
-
share.card.broadsheet.billable_days,share,DashboardPage,BroadsheetCard,billable_days,"{{days}} billable days",,active
|
|
491
|
-
share.card.broadsheet.heatmap_title,share,DashboardPage,BroadsheetCard,heatmap_title,"The Year in Print",,active
|
|
492
|
-
share.card.broadsheet.heatmap_days_on_record,share,DashboardPage,BroadsheetCard,heatmap_days,"{{active}} / {{total}} days on record",,active
|
|
493
|
-
share.card.broadsheet.roster_title,share,DashboardPage,BroadsheetCard,roster_title,"The Roster",,active
|
|
494
|
-
share.card.broadsheet.roster_subtitle,share,DashboardPage,BroadsheetCard,roster_subtitle,"Models in regular rotation",,active
|
|
495
|
-
share.card.broadsheet.empty,share,DashboardPage,BroadsheetCard,empty,"An empty week — the press was quiet.",,active
|
|
496
|
-
share.card.broadsheet.global_rank,share,DashboardPage,BroadsheetCard,global_rank,"Global rank",,active
|
|
497
|
-
share.card.broadsheet.active_days,share,DashboardPage,BroadsheetCard,active_days,"Active",,active
|
|
498
|
-
share.card.broadsheet.days_count,share,DashboardPage,BroadsheetCard,days_count,"{{days}} days",,active
|
|
499
|
-
share.card.broadsheet.track_yours,share,DashboardPage,BroadsheetCard,track_yours,"Track yours",,active
|
|
500
|
-
share.card.annual.report_title,share,DashboardPage,AnnualReportCard,report_title,"Token Report",,active
|
|
501
|
-
share.card.annual.less,share,DashboardPage,AnnualReportCard,legend_less,"Less",,active
|
|
502
|
-
share.card.annual.more,share,DashboardPage,AnnualReportCard,legend_more,"More",,active
|
|
503
|
-
share.card.annual.heatmap_title,share,DashboardPage,AnnualReportCard,heatmap_title,"TOKEN USAGE HEATMAP",,active
|
|
504
|
-
share.card.annual.total_tokens,share,DashboardPage,AnnualReportCard,total_tokens,"Total Tokens",,active
|
|
505
|
-
share.card.annual.estimated_cost,share,DashboardPage,AnnualReportCard,estimated_cost,"Estimated Cost",,active
|
|
506
|
-
share.card.annual.longest_streak,share,DashboardPage,AnnualReportCard,longest_streak,"Longest Streak",,active
|
|
507
|
-
share.card.annual.days_count,share,DashboardPage,AnnualReportCard,days_count,"{{days}} days",,active
|
|
508
|
-
share.card.annual.top_model,share,DashboardPage,AnnualReportCard,top_model,"Top Model",,active
|
|
509
|
-
usage.period.day,ui,DashboardPage,UsageOverview,period_day,"Day",,active
|
|
510
|
-
usage.period.week,ui,DashboardPage,UsageOverview,period_week,"Week",,active
|
|
511
|
-
usage.period.month,ui,DashboardPage,UsageOverview,period_month,"Month",,active
|
|
512
|
-
usage.period.total,ui,DashboardPage,UsageOverview,period_total,"Total",,active
|
|
513
|
-
usage.period.custom,ui,DashboardPage,UsageOverview,period_custom,"Custom",,active
|
|
514
|
-
usage.overview.tablist_aria,ui,DashboardPage,UsageOverview,tablist_aria,"Time period",,active
|
|
515
|
-
usage.overview.cost_breakdown_aria,ui,DashboardPage,UsageOverview,cost_breakdown_aria,"View cost breakdown",,active
|
|
516
|
-
usage.overview.distribution_aria,ui,DashboardPage,UsageOverview,distribution_aria,"Provider distribution: {{items}}",,active
|
|
517
|
-
usage.overview.distribution_item,ui,DashboardPage,UsageOverview,distribution_item,"{{label}} {{percent}}%",,active
|
|
518
|
-
usage.overview.provider_card_aria,ui,DashboardPage,UsageOverview,provider_card_aria,"{{provider}}: {{percent}}%, {{tokens}} tokens, {{cost}}. Click to {{action}} details",,active
|
|
519
|
-
usage.overview.expand,ui,DashboardPage,UsageOverview,expand,"expand",,active
|
|
520
|
-
usage.overview.collapse,ui,DashboardPage,UsageOverview,collapse,"collapse",,active
|
|
521
|
-
usage.overview.model_count,ui,DashboardPage,UsageOverview,model_count,"{{count}} models",,active
|
|
522
|
-
usage.overview.model_details_aria,ui,DashboardPage,UsageOverview,model_details_aria,"{{provider}} model details",,active
|
|
523
|
-
usage.overview.antigravity_notice_title,ui,DashboardPage,UsageOverview,antigravity_notice_title,"Estimated tokens",,active
|
|
524
|
-
usage.overview.antigravity_notice_body,ui,DashboardPage,UsageOverview,antigravity_notice_body,"Antigravity transcripts don't record real usage numbers. These counts are estimated from text length (~4 chars/token) and don't reflect Gemini's prompt-cache discount, so treat them as an upper bound, not a billing figure.",,active
|
|
525
|
-
limits.panel.title,ui,LimitsPage,UsageLimitsPanel,title,"Usage Limits",,active
|
|
526
|
-
limits.label.cursor_plan,ui,LimitsPage,UsageLimitsPanel,cursor_plan,"Plan",,active
|
|
527
|
-
limits.label.cursor_auto,ui,LimitsPage,UsageLimitsPanel,cursor_auto,"Auto",,active
|
|
528
|
-
limits.label.cursor_api,ui,LimitsPage,UsageLimitsPanel,cursor_api,"API",,active
|
|
529
|
-
limits.label.kiro_month,ui,LimitsPage,UsageLimitsPanel,kiro_month,"Month",,active
|
|
530
|
-
limits.label.kiro_bonus,ui,LimitsPage,UsageLimitsPanel,kiro_bonus,"Bonus",,active
|
|
531
|
-
limits.label.kimi_weekly,ui,LimitsPage,UsageLimitsPanel,kimi_weekly,"Weekly",,active
|
|
532
|
-
limits.label.kimi_5h,ui,LimitsPage,UsageLimitsPanel,kimi_5h,"5h",,active
|
|
533
|
-
limits.label.kimi_total,ui,LimitsPage,UsageLimitsPanel,kimi_total,"Total",,active
|
|
534
|
-
limits.label.kimi_parallel,ui,LimitsPage,UsageLimitsPanel,kimi_parallel,"Parallel: {{count}}",,active
|
|
535
|
-
limits.label.copilot_premium,ui,LimitsPage,UsageLimitsPanel,copilot_premium,"Premium",,active
|
|
536
|
-
limits.label.copilot_chat,ui,LimitsPage,UsageLimitsPanel,copilot_chat,"Chat",,active
|
|
537
|
-
limits.status.not_connected,ui,LimitsPage,UsageLimitsPanel,status_not_connected,"Not connected",,active
|
|
538
|
-
limits.status.no_data,ui,LimitsPage,UsageLimitsPanel,status_no_data,"No live limit data returned",,active
|
|
539
|
-
limits.status.all_hidden,ui,LimitsPage,UsageLimitsPanel,status_all_hidden,"All limit providers are hidden. Open display settings to show them.",,active
|
|
540
|
-
shared.time.now,shared,*,Shared,time_now,"now",,active
|
|
541
|
-
nav.ip_check,shared,*,Sidebar,nav_ip_check,Claude IP Check,,active
|
|
542
|
-
nav.skills,shared,*,Sidebar,nav_skills,Skills,,active
|
|
543
|
-
skills.page.title,ui,SkillsPage,SkillsPage,title,Skills,,active
|
|
544
|
-
skills.tab.my,ui,SkillsPage,SkillsPage,tab_my,My Skills,,active
|
|
545
|
-
skills.tab.browse,ui,SkillsPage,SkillsPage,tab_browse,Browse,,active
|
|
546
|
-
skills.action.refresh,ui,SkillsPage,SkillsPage,action_refresh,Refresh,,active
|
|
547
|
-
skills.action.install,ui,SkillsPage,SkillCard,action_install,Install,,active
|
|
548
|
-
skills.action.choose_targets,ui,SkillsPage,SkillCard,action_choose_targets,"Choose targets",,active
|
|
549
|
-
skills.target.menu_label,ui,SkillsPage,SkillCard,target_menu_label,"Install to",,active
|
|
550
|
-
skills.target.none,ui,SkillsPage,SkillsPage,target_none,"no targets",,active
|
|
551
|
-
skills.toast.installed,ui,SkillsPage,SkillsPage,toast_installed,"Installed {{name}} to {{targets}}.",,active
|
|
552
|
-
skills.action.remove,ui,SkillsPage,SkillsPage,action_remove,Remove,,active
|
|
553
|
-
skills.action.search,ui,SkillsPage,SkillsPage,action_search,Search,,active
|
|
554
|
-
skills.action.search_aria,ui,SkillsPage,SkillsPage,action_search_aria,"Search skills",,active
|
|
555
|
-
skills.target.synced_summary,ui,SkillsPage,InstalledSkillRow,target_synced_summary,"Synced to {{targets}}",,active
|
|
556
|
-
skills.target.synced_none,ui,SkillsPage,InstalledSkillRow,target_synced_none,"Not synced to any agent",,active
|
|
557
|
-
skills.row.open_details,ui,SkillsPage,InstalledSkillRow,row_open_details,"Open details for {{name}}",,active
|
|
558
|
-
skills.detail.close,ui,SkillsPage,SkillDetailPanel,detail_close,"Close details",,active
|
|
559
|
-
skills.detail.sync_section_title,ui,SkillsPage,SkillDetailPanel,detail_sync_section_title,"Sync to",,active
|
|
560
|
-
skills.detail.remove_button,ui,SkillsPage,SkillDetailPanel,detail_remove_button,"Remove from all agents",,active
|
|
561
|
-
skills.detail.remove_confirm_hint,ui,SkillsPage,SkillDetailPanel,detail_remove_confirm_hint,"This unsyncs the skill from every agent and deletes its local copy.",,active
|
|
562
|
-
skills.filter.agent_label,ui,SkillsPage,SkillsPage,filter_agent_label,"Agent",,active
|
|
563
|
-
skills.filter.agent_all,ui,SkillsPage,SkillsPage,filter_agent_all,"All agents",,active
|
|
564
|
-
skills.filter.clear,ui,SkillsPage,SkillsPage,filter_clear,"Clear filters",,active
|
|
565
|
-
skills.filter.result_count,ui,SkillsPage,SkillsPage,filter_result_count,"{{filtered}} of {{total}} skills",,active
|
|
566
|
-
skills.filter.result_count_browse,ui,SkillsPage,SkillsPage,filter_result_count_browse,"{{count}} results",,active
|
|
567
|
-
skills.empty.no_match,ui,SkillsPage,SkillsPage,empty_no_match,"No skills match the current filters.",,active
|
|
568
|
-
hint.dismiss,ui,shared,DismissibleHint,hint_dismiss,"Dismiss hint",,active
|
|
569
|
-
hint.dismissible_aria,ui,shared,DismissibleHint,hint_dismissible_aria,"Dismissible hint",,active
|
|
570
|
-
skills.card.installed,ui,SkillsPage,SkillCard,card_installed,Installed,,active
|
|
571
|
-
skills.card.targets_prefix,ui,SkillsPage,SkillCard,card_targets_prefix,"Will install to:",,active
|
|
572
|
-
skills.card.targets_change,ui,SkillsPage,SkillCard,card_targets_change,Change,,active
|
|
573
|
-
skills.card.installs,ui,SkillsPage,SkillCard,installs,"{{count}} installs",,active
|
|
574
|
-
skills.source.label,ui,SkillsPage,SkillsPage,source_label,Source,,active
|
|
575
|
-
skills.source.all,ui,SkillsPage,SkillsPage,source_all,All repositories,,active
|
|
576
|
-
skills.mode.repo,ui,SkillsPage,SkillsPage,mode_repo,Repositories,,active
|
|
577
|
-
skills.mode.skillssh,ui,SkillsPage,SkillsPage,mode_skillssh,skills.sh,,active
|
|
578
|
-
skills.browse.placeholder_all,ui,SkillsPage,SkillsPage,browse_placeholder_all,"Search across enabled repositories…",,active
|
|
579
|
-
skills.browse.placeholder_repo,ui,SkillsPage,SkillsPage,browse_placeholder_repo,"Search in {{repo}}…",,active
|
|
580
|
-
skills.browse.placeholder_skillssh,ui,SkillsPage,SkillsPage,browse_placeholder_skillssh,"Search the skills.sh registry…",,active
|
|
581
|
-
skills.browse.empty_sources,ui,SkillsPage,SkillsPage,browse_empty_sources,"Add a GitHub repository below to start browsing skills.",,active
|
|
582
|
-
skills.browse.add_repo_hint,ui,SkillsPage,SkillsPage,browse_add_repo_hint,"Need more skills? Add a GitHub repository.",,active
|
|
583
|
-
skills.browse.manage_sources,ui,SkillsPage,SkillsPage,browse_manage_sources,Manage sources,,active
|
|
584
|
-
skills.browse.hint_skillssh,ui,SkillsPage,SkillsPage,browse_hint_skillssh,"Type at least 2 characters to search skills.sh.",,active
|
|
585
|
-
skills.browse.loading_hint,ui,SkillsPage,SkillsPage,browse_loading_hint,"Fetching skill metadata from GitHub. First load can take up to a minute; results are cached.",,active
|
|
586
|
-
skills.error.generic,ui,SkillsPage,SkillsPage,error_generic,"Skill operation failed.",,active
|
|
587
|
-
skills.confirm.remove_title,ui,SkillsPage,SkillsPage,confirm_remove_title,"Remove {{name}}?",,active
|
|
588
|
-
skills.confirm.remove_managed,ui,SkillsPage,SkillsPage,confirm_remove_managed,"This skill will be removed from every connected AI tool. You'll have a few seconds to undo.",,active
|
|
589
|
-
skills.confirm.remove_local,ui,SkillsPage,SkillsPage,confirm_remove_local,"This will delete the skill folder on disk from every connected AI tool. This cannot be undone.",,active
|
|
590
|
-
skills.toast.removed,ui,SkillsPage,SkillsPage,toast_removed,"Removed {{name}}.",,active
|
|
591
|
-
shared.action.undo,shared,*,Shared,action_undo,"Undo",,active
|
|
592
|
-
shared.action.cancel,shared,*,Shared,action_cancel,"Cancel",,active
|
|
593
|
-
skills.empty.my,ui,SkillsPage,SkillsPage,empty_my,"No skills yet. Open Discover to search and install.",,active
|
|
594
|
-
skills.empty.my_cta,ui,SkillsPage,SkillsPage,empty_my_cta,"Browse",,active
|
|
595
|
-
skills.empty.browse,ui,SkillsPage,SkillsPage,empty_browse,"No skills found for this source.",,active
|
|
596
|
-
skills.empty.search,ui,SkillsPage,SkillsPage,empty_search,"No results. Try a different query.",,active
|
|
597
|
-
skills.repo.placeholder,ui,SkillsPage,SkillsPage,repo_placeholder,"owner/repository",,active
|
|
598
|
-
skills.repo.add,ui,SkillsPage,SkillsPage,repo_add,"Add repository",,active
|
|
599
|
-
skills.repo.invalid,ui,SkillsPage,SkillsPage,repo_invalid,"Use owner/repository or a GitHub repository URL.",,active
|
|
600
|
-
skills.repo.remove,ui,SkillsPage,RepoRow,repo_remove,"Remove repository",,active
|
|
601
|
-
settings.appearance.language.label,ui,SettingsPage,SettingsPage,language_label,Language,,active
|
|
602
|
-
settings.appearance.language.hint,ui,SettingsPage,SettingsPage,language_hint,Use System to follow your computer language by default.,,active
|
|
603
|
-
settings.appearance.language.system,ui,SettingsPage,SettingsPage,language_system,System,,active
|
|
604
|
-
settings.appearance.language.english,ui,SettingsPage,SettingsPage,language_english,English,,active
|
|
605
|
-
settings.appearance.language.chinese,ui,SettingsPage,SettingsPage,language_chinese,Simplified Chinese,,active
|
|
606
|
-
settings.appearance.language.traditional_chinese,ui,SettingsPage,SettingsPage,language_traditional_chinese,Traditional Chinese,,active
|
|
607
|
-
settings.appearance.language.japanese,ui,SettingsPage,SettingsPage,language_japanese,Japanese,,active
|
|
608
|
-
settings.appearance.language.korean,ui,SettingsPage,SettingsPage,language_korean,Korean,,active
|
|
609
|
-
dashboard.context_breakdown.empty,dashboard,DashboardPage,ContextBreakdownPanel,empty,"No Claude Code activity in the selected period.",,active
|
|
610
|
-
dashboard.context_breakdown.empty_codex,dashboard,DashboardPage,ContextBreakdownPanel,empty_codex,"No Codex activity in the selected period.",,active
|
|
611
|
-
dashboard.context_breakdown.error,dashboard,DashboardPage,ContextBreakdownPanel,error,"Couldn't read Claude Code logs for this view.",,active
|
|
612
|
-
dashboard.context_breakdown.error_codex,dashboard,DashboardPage,ContextBreakdownPanel,error_codex,"Couldn't read Codex logs for this view.",,active
|
|
613
|
-
dashboard.context_breakdown.bar_aria,dashboard,DashboardPage,ContextBreakdownPanel,bar_aria,"Token distribution: {{summary}}",,active
|
|
614
|
-
dashboard.context_breakdown.system_prefix_tooltip,dashboard,DashboardPage,ContextBreakdownPanel,tooltip,"System prompt, tools schema, skills, rules, and MCP descriptions are cached together as one prefix and can't be separated from the logs.",,active
|
|
615
|
-
dashboard.context_breakdown.footnote,dashboard,DashboardPage,ContextBreakdownPanel,footnote,"Approximate: cache reads accumulate across turns, so conversation history dominates over time. Only Claude Code logs expose the per-message detail this view requires.",,active
|
|
616
|
-
dashboard.context_breakdown.footnote_codex,dashboard,DashboardPage,ContextBreakdownPanel,footnote_codex,"Codex uses non-overlapping token buckets here. Tool and exec drill-downs are separate heuristic attributions over the same turns.",,active
|
|
617
|
-
dashboard.context_breakdown.category.system_prompt,dashboard,DashboardPage,ContextBreakdownPanel,cat,"System prompt",,active
|
|
618
|
-
dashboard.context_breakdown.category.messages,dashboard,DashboardPage,ContextBreakdownPanel,cat,"Messages",,active
|
|
619
|
-
dashboard.context_breakdown.category.tool_calls,dashboard,DashboardPage,ContextBreakdownPanel,cat,"Tool calls",,active
|
|
620
|
-
dashboard.context_breakdown.category.mcp_servers,dashboard,DashboardPage,ContextBreakdownPanel,cat,"MCP servers",,active
|
|
621
|
-
dashboard.context_breakdown.category.custom_agents,dashboard,DashboardPage,ContextBreakdownPanel,cat,"Custom agents",,active
|
|
622
|
-
dashboard.context_breakdown.category.reasoning,dashboard,DashboardPage,ContextBreakdownPanel,cat,"Reasoning",,active
|
|
623
|
-
dashboard.context_breakdown.category.skills,dashboard,DashboardPage,ContextBreakdownPanel,cat,"Skills",,active
|
|
624
|
-
dashboard.context_breakdown.loading_aria,dashboard,DashboardPage,ContextBreakdownPanel,loading_aria,"Loading context breakdown",,active
|
|
625
|
-
dashboard.context_breakdown.loading_hint,dashboard,DashboardPage,ContextBreakdownPanel,loading_hint,"Scanning session logs…",,active
|
|
626
|
-
dashboard.context_breakdown.tool_details.total_column,dashboard,DashboardPage,ContextBreakdownPanel,tool_details_total_column,"Total",,active
|
|
627
|
-
dashboard.context_breakdown.tool_details.unavailable_codex,dashboard,DashboardPage,ContextBreakdownPanel,tool_details_unavailable_codex,"Tool-level Codex details are unavailable for this period; showing queue totals only.",,active
|
|
628
|
-
dashboard.context_breakdown.message_details.title,dashboard,DashboardPage,ContextBreakdownPanel,message_details_title,"Message details",,active
|
|
629
|
-
dashboard.context_breakdown.message_details.note,dashboard,DashboardPage,ContextBreakdownPanel,message_details_note,"Aggregated only — message text is not stored.",,active
|
|
630
|
-
dashboard.context_breakdown.message_details.category_column,dashboard,DashboardPage,ContextBreakdownPanel,message_details_category_column,"Category",,active
|
|
631
|
-
dashboard.context_breakdown.message_details.user_input,dashboard,DashboardPage,ContextBreakdownPanel,message_details_user_input,"User input",,active
|
|
632
|
-
dashboard.context_breakdown.message_details.conversation_history,dashboard,DashboardPage,ContextBreakdownPanel,message_details_conversation_history,"Conversation history",,active
|
|
633
|
-
dashboard.context_breakdown.message_details.assistant_response,dashboard,DashboardPage,ContextBreakdownPanel,message_details_assistant_response,"Assistant response",,active
|
|
634
|
-
dashboard.context_breakdown.exec_details.title,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_title,"Exec command details",,active
|
|
635
|
-
dashboard.context_breakdown.exec_details.kind_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_kind_column,"Type",,active
|
|
636
|
-
dashboard.context_breakdown.exec_details.calls_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_calls_column,"Calls",,active
|
|
637
|
-
dashboard.context_breakdown.exec_details.failures_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_failures_column,"Fail",,active
|
|
638
|
-
dashboard.context_breakdown.exec_details.duration_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_duration_column,"Duration",,active
|
|
639
|
-
dashboard.context_breakdown.exec_details.max_duration_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_max_duration_column,"Max",,active
|
|
640
|
-
dashboard.context_breakdown.exec_details.output_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_output_column,"Lines",,active
|
|
641
|
-
dashboard.context_breakdown.exec_details.group_by_type,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_type,"By type",,active
|
|
642
|
-
dashboard.context_breakdown.exec_details.group_by_executable,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_executable,"Executable",,active
|
|
643
|
-
dashboard.context_breakdown.exec_details.group_by_command,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_command,"Command",,active
|
|
644
|
-
dashboard.context_breakdown.exec_details.group_by_duration,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_duration,"Duration",,active
|
|
645
|
-
dashboard.context_breakdown.exec_details.group_by_output,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_output,"Output",,active
|
|
646
|
-
dashboard.context_breakdown.exec_details.group_by_exit,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_exit,"By exit",,active
|
|
647
|
-
heatmap.3d.hover_tip,ui,ActivityHeatmap,ActivityHeatmap,hover_tip,"Click to enter 3D fullscreen rotation analysis mode",,active
|
|
648
|
-
heatmap.3d.modal.title,ui,ActivityHeatmap,ActivityHeatmap,title,"Token 3D Perspective",,active
|
|
649
|
-
heatmap.3d.modal.desc,ui,ActivityHeatmap,ActivityHeatmap,desc,"Drag with left mouse button to rotate. Hover to inspect daily activity and multidimensional metrics.",,active
|
|
650
|
-
heatmap.3d.modal.stats.total_tokens,ui,ActivityHeatmap,ActivityHeatmap,stats_total_tokens,"Annual Total Tokens",,active
|
|
651
|
-
heatmap.3d.modal.stats.precision_total_tokens,ui,ActivityHeatmap,ActivityHeatmap,stats_precision_total_tokens,"Precise annual consumption",,active
|
|
652
|
-
heatmap.3d.modal.stats.estimated_cost,ui,ActivityHeatmap,ActivityHeatmap,stats_estimated_cost,"Annual Estimated Cost",,active
|
|
653
|
-
heatmap.3d.modal.stats.active_rate_days,ui,ActivityHeatmap,ActivityHeatmap,stats_active_rate_days,"Active Rate / Days",,active
|
|
654
|
-
heatmap.3d.modal.stats.max_streak,ui,ActivityHeatmap,ActivityHeatmap,stats_max_streak,"Longest Active Streak",,active
|
|
655
|
-
heatmap.3d.modal.stats.days_suffix,ui,ActivityHeatmap,ActivityHeatmap,stats_days_suffix,"Days",,active
|
|
656
|
-
heatmap.3d.modal.stats.peak_day,ui,ActivityHeatmap,ActivityHeatmap,stats_peak_day,"Peak Day Blowout",,active
|
|
657
|
-
heatmap.3d.modal.stats.precision_peak_value,ui,ActivityHeatmap,ActivityHeatmap,stats_precision_peak_value,"Precise daily peak",,active
|
|
658
|
-
heatmap.3d.modal.stats.no_data,ui,ActivityHeatmap,ActivityHeatmap,stats_no_data,"No data",,active
|
|
659
|
-
heatmap.3d.modal.legend.title,ui,ActivityHeatmap,ActivityHeatmap,legend_title,"Activity Levels",,active
|
|
660
|
-
heatmap.3d.modal.palette.emerald,ui,ActivityHeatmap,ActivityHeatmap,palette_emerald,"Emerald City",,active
|
|
661
|
-
heatmap.3d.modal.palette.ocean,ui,ActivityHeatmap,ActivityHeatmap,palette_ocean,"Ocean Abyss",,active
|
|
662
|
-
heatmap.3d.modal.palette.neon,ui,ActivityHeatmap,ActivityHeatmap,palette_neon,"Cyber Neon",,active
|
|
663
|
-
heatmap.3d.modal.palette.amber,ui,ActivityHeatmap,ActivityHeatmap,palette_amber,"Blazing Amber",,active
|
|
664
|
-
heatmap.3d.modal.control.play,ui,ActivityHeatmap,ActivityHeatmap,control_play,"Start slow rotation",,active
|
|
665
|
-
heatmap.3d.modal.control.pause,ui,ActivityHeatmap,ActivityHeatmap,control_pause,"Pause auto-rotation",,active
|
|
666
|
-
heatmap.3d.modal.control.reset,ui,ActivityHeatmap,ActivityHeatmap,control_reset,"Reset 3D view",,active
|
|
667
|
-
heatmap.3d.modal.footer.tip,ui,ActivityHeatmap,ActivityHeatmap,footer_tip,"Pinch to zoom / Scroll to zoom / Drag to rotate 3D chart",,active
|
|
668
|
-
heatmap.3d.modal.ai.title.default,ui,ActivityHeatmap,ActivityHeatmap,ai_title_default,"Persistent Creator",,active
|
|
669
|
-
heatmap.3d.modal.ai.eval.default,ui,ActivityHeatmap,ActivityHeatmap,ai_eval_default,"Persist in the river of technology. Daily coding may not always be majestic, but every tiny active point records your thoughts and exploration. Sparks accumulate, eventually converging into your own digital ocean.",,active
|
|
670
|
-
heatmap.3d.modal.ai.title.peak,ui,ActivityHeatmap,ActivityHeatmap,ai_title_peak,"Peak Contributor",,active
|
|
671
|
-
heatmap.3d.modal.ai.eval.peak,ui,ActivityHeatmap,ActivityHeatmap,ai_eval_peak,"This year, your token output shows extremely high engineering density. This scale of development is equivalent to deeply participating in the refactoring of a medium-to-large system base, with each keystroke converging complex logic into deterministic code. A testament to pure engineering passion.",,active
|
|
672
|
-
heatmap.3d.modal.ai.title.heavy,ui,ActivityHeatmap,ActivityHeatmap,ai_title_heavy,"Heavy Producer",,active
|
|
673
|
-
heatmap.3d.modal.ai.eval.heavy,ui,ActivityHeatmap,ActivityHeatmap,ai_eval_heavy,"Exceptional continuous output. Your accumulated tokens have reached millions, equivalent to the volume of dozens of technical novellas. The highly saturated coding pace demonstrates your great execution in building digital assets.",,active
|
|
674
|
-
heatmap.3d.modal.ai.title.core,ui,ActivityHeatmap,ActivityHeatmap,ai_title_core,"Core Productivity Expert",,active
|
|
675
|
-
heatmap.3d.modal.ai.eval.core,ui,ActivityHeatmap,ActivityHeatmap,ai_eval_core,"Highly resilient long-term commitment. Over the past year, you have steadily maintained a high-intensity development rhythm. With solid code volume and token output, you have silently built the core architecture, a true engineering backbone.",,active
|
|
676
|
-
heatmap.3d.modal.ai.title.steady,ui,ActivityHeatmap,ActivityHeatmap,ai_title_steady,"Steady Developer",,active
|
|
677
|
-
heatmap.3d.modal.ai.eval.steady,ui,ActivityHeatmap,ActivityHeatmap,ai_eval_steady,"Steady and firm accumulation of technology. Every step of token increment is a brick in the foundation of your future. This slow but steady pace is the path for an excellent developer to become an engineering master.",,active
|
|
678
|
-
heatmap.3d.voxel.joke.1,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_joke1,"🔥 Extremely crazy! Produced {{value}} tokens! Are you training a large language model or writing a compiler by hand?",,active
|
|
679
|
-
heatmap.3d.voxel.joke.2,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_joke2,"🚀 Epic output! Total {{value}} tokens. Today's production can circle the earth once, even the AI is amazed by you!",,active
|
|
680
|
-
heatmap.3d.voxel.joke.3,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_joke3,"⚡ Critical Day! {{value}} tokens. Code is gushing out, and the keyboard is starting to smoke!",,active
|
|
681
|
-
heatmap.3d.voxel.level3,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_level3,"⚡ Productivity explosion ({{value}} tokens)! High efficiency and focus, keep up this peak state!",,active
|
|
682
|
-
heatmap.3d.voxel.level2,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_level2,"🌱 Getting into the groove ({{value}} tokens)! Steady output, every keystroke is contributing to the architecture.",,active
|
|
683
|
-
heatmap.3d.voxel.level1,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_level1,"🍃 Every drop counts ({{value}} tokens). Tiny commits are investments in the future, embrace compound interest!",,active
|
|
684
|
-
heatmap.3d.voxel.level0,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_level0,"💤 Recharging. On days without coding, inspiration grows silently.",,active
|
|
685
|
-
ipcheck.page.title,ui,IpCheckPage,IpCheckPage,page_title,"Claude IP Check",,active
|
|
686
|
-
ipcheck.page.subtitle,ui,IpCheckPage,IpCheckPage,page_subtitle,"Inspect the exit IP used to reach Claude, plus reputation, geo, and risk signals that may affect sign-in or trigger rate-limiting.",,active
|
|
687
|
-
ipcheck.mask.toggle,ui,IpCheckPage,IpCheckPage,mask_toggle,"Hide IP",,active
|
|
688
|
-
ipcheck.ipv6.warn,ui,IpCheckPage,IpCheckPage,ipv6_warn,"IPv6 detected. Using IPv6 to reach Claude Code is not recommended; some checks may be incomplete.",,active
|
|
689
|
-
ipcheck.ip.cn,ui,IpCheckPage,IpCheckPage,ip_cn,"China exit IPv4",,active
|
|
690
|
-
ipcheck.ip.cloudflare,ui,IpCheckPage,IpCheckPage,ip_cloudflare,"Cloudflare exit",,active
|
|
691
|
-
ipcheck.ip.claude,ui,IpCheckPage,IpCheckPage,ip_claude,"Claude exit",,active
|
|
692
|
-
ipcheck.ip.failed,ui,IpCheckPage,IpCheckPage,ip_failed,"Unable to fetch",,active
|
|
693
|
-
ipcheck.ip.loading,ui,IpCheckPage,IpCheckPage,ip_loading,"Loading...",,active
|
|
694
|
-
ipcheck.trust.title,ui,IpCheckPage,IpCheckPage,trust_title,"Trust Score",,active
|
|
695
|
-
ipcheck.trust.subtitle,ui,IpCheckPage,IpCheckPage,trust_subtitle,"IP cleanliness from Claude's risk view",,active
|
|
696
|
-
ipcheck.trust.no_data,ui,IpCheckPage,IpCheckPage,trust_no_data,"No data",,active
|
|
697
|
-
ipcheck.trust.no_ip,ui,IpCheckPage,IpCheckPage,trust_no_ip,"Claude exit IP not detected — cannot score",,active
|
|
698
|
-
ipcheck.trust.no_score,ui,IpCheckPage,IpCheckPage,trust_no_score,"No score data for this IP",,active
|
|
699
|
-
ipcheck.trust.gauge.low,ui,IpCheckPage,IpCheckPage,trust_gauge_low,"0 High risk",,active
|
|
700
|
-
ipcheck.trust.gauge.high,ui,IpCheckPage,IpCheckPage,trust_gauge_high,"100 Trusted",,active
|
|
701
|
-
ipcheck.trust.label.pristine,ui,IpCheckPage,IpCheckPage,trust_label_pristine,"Pristine",,active
|
|
702
|
-
ipcheck.trust.label.clean,ui,IpCheckPage,IpCheckPage,trust_label_clean,"Clean",,active
|
|
703
|
-
ipcheck.trust.label.good,ui,IpCheckPage,IpCheckPage,trust_label_good,"Good",,active
|
|
704
|
-
ipcheck.trust.label.neutral,ui,IpCheckPage,IpCheckPage,trust_label_neutral,"Neutral",,active
|
|
705
|
-
ipcheck.trust.label.suspicious,ui,IpCheckPage,IpCheckPage,trust_label_suspicious,"Suspicious",,active
|
|
706
|
-
ipcheck.trust.label.unreachable,ui,IpCheckPage,IpCheckPage,trust_label_unreachable,"Unreachable",,active
|
|
707
|
-
ipcheck.trust.text.excellent,ui,IpCheckPage,IpCheckPage,trust_text_excellent,"Excellent reputation",,active
|
|
708
|
-
ipcheck.trust.text.great,ui,IpCheckPage,IpCheckPage,trust_text_great,"Strong reputation",,active
|
|
709
|
-
ipcheck.trust.text.minor,ui,IpCheckPage,IpCheckPage,trust_text_minor,"Minor risk",,active
|
|
710
|
-
ipcheck.trust.text.moderate,ui,IpCheckPage,IpCheckPage,trust_text_moderate,"Moderate risk",,active
|
|
711
|
-
ipcheck.trust.text.severe,ui,IpCheckPage,IpCheckPage,trust_text_severe,"Severe risk",,active
|
|
712
|
-
ipcheck.trust.text.restricted,ui,IpCheckPage,IpCheckPage,trust_text_restricted,"Restricted region — Claude enforces strict risk controls",,active
|
|
713
|
-
ipcheck.trust.region_warn.title,ui,IpCheckPage,IpCheckPage,region_warn_title,"Claude exit IP is in {{region}}",,active
|
|
714
|
-
ipcheck.trust.region_warn.body,ui,IpCheckPage,IpCheckPage,region_warn_body,"Avoid signing in — high chance of triggering account flagging.",,active
|
|
715
|
-
ipcheck.trust.region_support,ui,IpCheckPage,IpCheckPage,region_support,"Claude support",,active
|
|
716
|
-
ipcheck.trust.region.accessible,ui,IpCheckPage,IpCheckPage,region_accessible,"Accessible",,active
|
|
717
|
-
ipcheck.common.unknown,ui,IpCheckPage,IpCheckPage,common_unknown,"Unknown",,active
|
|
718
|
-
ipcheck.props.title,ui,IpCheckPage,IpCheckPage,props_title,"IP Attributes",,active
|
|
719
|
-
ipcheck.props.region,ui,IpCheckPage,IpCheckPage,props_region,"Region",,active
|
|
720
|
-
ipcheck.props.city,ui,IpCheckPage,IpCheckPage,props_city,"City",,active
|
|
721
|
-
ipcheck.props.type,ui,IpCheckPage,IpCheckPage,props_type,"Type",,active
|
|
722
|
-
ipcheck.props.asn,ui,IpCheckPage,IpCheckPage,props_asn,"ASN",,active
|
|
723
|
-
ipcheck.props.org,ui,IpCheckPage,IpCheckPage,props_org,"ISP",,active
|
|
724
|
-
ipcheck.props.residential,ui,IpCheckPage,IpCheckPage,props_residential,"Residential",,active
|
|
725
|
-
ipcheck.props.datacenter,ui,IpCheckPage,IpCheckPage,props_datacenter,"Datacenter",,active
|
|
726
|
-
ipcheck.security.title,ui,IpCheckPage,IpCheckPage,sec_title,"Security Checks",,active
|
|
727
|
-
ipcheck.security.vpn,ui,IpCheckPage,IpCheckPage,sec_vpn,"VPN",,active
|
|
728
|
-
ipcheck.security.proxy,ui,IpCheckPage,IpCheckPage,sec_proxy,"Proxy",,active
|
|
729
|
-
ipcheck.security.tor,ui,IpCheckPage,IpCheckPage,sec_tor,"Tor",,active
|
|
730
|
-
ipcheck.security.crawler,ui,IpCheckPage,IpCheckPage,sec_crawler,"Crawler",,active
|
|
731
|
-
ipcheck.security.abuser,ui,IpCheckPage,IpCheckPage,sec_abuser,"Abuse history",,active
|
|
732
|
-
ipcheck.security.proxy_flag,ui,IpCheckPage,IpCheckPage,sec_proxy_flag,"Proxy",,active
|
|
733
|
-
ipcheck.security.crawler_yes,ui,IpCheckPage,IpCheckPage,sec_crawler_yes,"Yes",,active
|
|
734
|
-
ipcheck.security.crawler_no,ui,IpCheckPage,IpCheckPage,sec_crawler_no,"No",,active
|
|
735
|
-
ipcheck.security.abuser_yes,ui,IpCheckPage,IpCheckPage,sec_abuser_yes,"Reported",,active
|
|
736
|
-
ipcheck.security.abuser_no,ui,IpCheckPage,IpCheckPage,sec_abuser_no,"Clean",,active
|
|
737
|
-
ipcheck.security.clean,ui,IpCheckPage,IpCheckPage,sec_clean,"Not detected",,active
|
|
738
|
-
ipcheck.avail.title,ui,IpCheckPage,IpCheckPage,avail_title,"Claude Availability",,active
|
|
739
|
-
ipcheck.avail.tooltip,ui,IpCheckPage,IpCheckPage,avail_tooltip,"Claude servers run in the US; latency above 100ms from Asia is normal.",,active
|
|
740
|
-
ipcheck.avail.refresh,ui,IpCheckPage,IpCheckPage,avail_refresh,"Refresh",,active
|
|
741
|
-
ipcheck.avail.svc_row,ui,IpCheckPage,IpCheckPage,avail_svc_row,"Service status",,active
|
|
742
|
-
ipcheck.avail.latency.normal,ui,IpCheckPage,IpCheckPage,avail_lat_normal,"Normal",,active
|
|
743
|
-
ipcheck.avail.latency.good,ui,IpCheckPage,IpCheckPage,avail_lat_good,"Good",,active
|
|
744
|
-
ipcheck.avail.latency.slow,ui,IpCheckPage,IpCheckPage,avail_lat_slow,"Slow",,active
|
|
745
|
-
ipcheck.avail.latency.unreachable,ui,IpCheckPage,IpCheckPage,avail_lat_unreach,"Unreachable",,active
|
|
746
|
-
ipcheck.avail.svc.none,ui,IpCheckPage,IpCheckPage,avail_svc_none,"All systems normal",,active
|
|
747
|
-
ipcheck.avail.svc.minor,ui,IpCheckPage,IpCheckPage,avail_svc_minor,"Minor outage",,active
|
|
748
|
-
ipcheck.avail.svc.major,ui,IpCheckPage,IpCheckPage,avail_svc_major,"Major outage",,active
|
|
749
|
-
ipcheck.avail.svc.critical,ui,IpCheckPage,IpCheckPage,avail_svc_critical,"Critical outage",,active
|
|
750
|
-
ipcheck.avail.svc.maintenance,ui,IpCheckPage,IpCheckPage,avail_svc_maintenance,"Maintenance",,active
|
|
751
|
-
ipcheck.avail.svc.other,ui,IpCheckPage,IpCheckPage,avail_svc_other,"Disrupted",,active
|
|
752
|
-
ipcheck.dns.title,ui,IpCheckPage,IpCheckPage,dns_title,"DNS Leak",,active
|
|
753
|
-
ipcheck.dns.status,ui,IpCheckPage,IpCheckPage,dns_status,"Status",,active
|
|
754
|
-
ipcheck.dns.outlet,ui,IpCheckPage,IpCheckPage,dns_outlet,"DNS exit",,active
|
|
755
|
-
ipcheck.dns.outlet_ip,ui,IpCheckPage,IpCheckPage,dns_outlet_ip,"DNS exit IP",,active
|
|
756
|
-
ipcheck.dns.isp,ui,IpCheckPage,IpCheckPage,dns_isp,"Provider",,active
|
|
757
|
-
ipcheck.dns.leaked,ui,IpCheckPage,IpCheckPage,dns_leaked,"Possible leak",,active
|
|
758
|
-
ipcheck.dns.no_leak,ui,IpCheckPage,IpCheckPage,dns_no_leak,"No leak detected",,active
|
|
759
|
-
ipcheck.dns.encrypted,ui,IpCheckPage,IpCheckPage,dns_encrypted,"DNS encrypted or hidden",,active
|
|
760
|
-
ipcheck.dns.cn_tag,ui,IpCheckPage,IpCheckPage,dns_cn_tag,"China DNS",,active
|
|
761
|
-
ipcheck.udp.title,ui,IpCheckPage,IpCheckPage,udp_title,"WebRTC UDP Leak",,active
|
|
762
|
-
ipcheck.udp.status,ui,IpCheckPage,IpCheckPage,udp_status,"Status",,active
|
|
763
|
-
ipcheck.udp.outlet,ui,IpCheckPage,IpCheckPage,udp_outlet,"UDP exit",,active
|
|
764
|
-
ipcheck.udp.outlet_ip,ui,IpCheckPage,IpCheckPage,udp_outlet_ip,"UDP exit IP",,active
|
|
765
|
-
ipcheck.udp.origin,ui,IpCheckPage,IpCheckPage,udp_origin,"Origin",,active
|
|
766
|
-
ipcheck.udp.disabled,ui,IpCheckPage,IpCheckPage,udp_disabled,"WebRTC disabled",,active
|
|
767
|
-
ipcheck.udp.no_leak,ui,IpCheckPage,IpCheckPage,udp_no_leak,"No leak detected",,active
|
|
768
|
-
ipcheck.udp.leaked,ui,IpCheckPage,IpCheckPage,udp_leaked,"Possible leak",,active
|
|
769
|
-
ipcheck.udp.anomaly,ui,IpCheckPage,IpCheckPage,udp_anomaly,"Anomaly",,active
|
|
770
|
-
ipcheck.device.title,ui,IpCheckPage,IpCheckPage,dev_title,"Device Info",,active
|
|
771
|
-
ipcheck.device.tz,ui,IpCheckPage,IpCheckPage,dev_tz,"Timezone",,active
|
|
772
|
-
ipcheck.device.lang,ui,IpCheckPage,IpCheckPage,dev_lang,"Language",,active
|
|
773
|
-
ipcheck.device.os,ui,IpCheckPage,IpCheckPage,dev_os,"OS / Browser",,active
|
|
774
|
-
ipcheck.device.touch,ui,IpCheckPage,IpCheckPage,dev_touch,"Touch",,active
|
|
775
|
-
ipcheck.device.net,ui,IpCheckPage,IpCheckPage,dev_net,"Network type",,active
|
|
776
|
-
ipcheck.device.dnt,ui,IpCheckPage,IpCheckPage,dev_dnt,"Do Not Track",,active
|
|
777
|
-
ipcheck.device.webgl_render,ui,IpCheckPage,IpCheckPage,dev_webgl_render,"WebGL renderer",,active
|
|
778
|
-
ipcheck.device.canvas_fp,ui,IpCheckPage,IpCheckPage,dev_canvas_fp,"Canvas fingerprint",,active
|
|
779
|
-
ipcheck.device.webgl_fp,ui,IpCheckPage,IpCheckPage,dev_webgl_fp,"WebGL fingerprint",,active
|
|
780
|
-
ipcheck.device.match,ui,IpCheckPage,IpCheckPage,dev_match,"Match",,active
|
|
781
|
-
ipcheck.device.mismatch,ui,IpCheckPage,IpCheckPage,dev_mismatch,"Mismatch",,active
|
|
782
|
-
ipcheck.device.local,ui,IpCheckPage,IpCheckPage,dev_local,"Local",,active
|
|
783
|
-
ipcheck.device.estimate_suffix,ui,IpCheckPage,IpCheckPage,dev_est_suffix,"(est.)",,active
|
|
784
|
-
ipcheck.device.diff_equal,ui,IpCheckPage,IpCheckPage,dev_diff_eq,"Slight offset",,active
|
|
785
|
-
ipcheck.device.diff_ahead,ui,IpCheckPage,IpCheckPage,dev_diff_ahead,"Claude is {{h}}h ahead",,active
|
|
786
|
-
ipcheck.device.diff_behind,ui,IpCheckPage,IpCheckPage,dev_diff_behind,"Claude is {{h}}h behind",,active
|
|
787
|
-
ipcheck.device.lang_expected,ui,IpCheckPage,IpCheckPage,dev_lang_expected,"Claude region usually",,active
|
|
788
|
-
ipcheck.device.touch_yes,ui,IpCheckPage,IpCheckPage,dev_touch_yes,"Yes",,active
|
|
789
|
-
ipcheck.device.touch_no,ui,IpCheckPage,IpCheckPage,dev_touch_no,"No",,active
|
|
790
|
-
ipcheck.device.dnt_on,ui,IpCheckPage,IpCheckPage,dev_dnt_on,"On",,active
|
|
791
|
-
ipcheck.device.dnt_off,ui,IpCheckPage,IpCheckPage,dev_dnt_off,"Off",,active
|
|
792
|
-
ipcheck.device.dnt_unset,ui,IpCheckPage,IpCheckPage,dev_dnt_unset,"Unset",,active
|
|
793
|
-
ipcheck.device.net_unsupported,ui,IpCheckPage,IpCheckPage,dev_net_unsup,"Not detected",,active
|
|
794
|
-
ipcheck.device.unsupported,ui,IpCheckPage,IpCheckPage,dev_unsupported,"Unsupported",,active
|
|
795
|
-
ipcheck.history.title,ui,IpCheckPage,IpCheckPage,hist_title,"Claude exit IP history",,active
|
|
796
|
-
ipcheck.history.subtitle,ui,IpCheckPage,IpCheckPage,hist_subtitle,"Stored only in this browser, up to 6 entries",,active
|
|
797
|
-
ipcheck.history.clear,ui,IpCheckPage,IpCheckPage,hist_clear,"Clear",,active
|
|
798
|
-
ipcheck.history.empty,ui,IpCheckPage,IpCheckPage,hist_empty,"No history yet",,active
|
|
799
|
-
ipcheck.history.current,ui,IpCheckPage,IpCheckPage,hist_current,"Now",,active
|
|
800
|
-
ipcheck.region.CN,ui,IpCheckPage,IpCheckPage,region_cn,"Mainland China",,active
|
|
801
|
-
ipcheck.region.HK,ui,IpCheckPage,IpCheckPage,region_hk,"Hong Kong",,active
|
|
802
|
-
ipcheck.region.MO,ui,IpCheckPage,IpCheckPage,region_mo,"Macao",,active
|
|
803
|
-
ipcheck.region.RU,ui,IpCheckPage,IpCheckPage,region_ru,"Russia",,active
|
|
804
|
-
ipcheck.region.KP,ui,IpCheckPage,IpCheckPage,region_kp,"North Korea",,active
|
|
805
|
-
ipcheck.region.IR,ui,IpCheckPage,IpCheckPage,region_ir,"Iran",,active
|
|
806
|
-
ipcheck.region.SY,ui,IpCheckPage,IpCheckPage,region_sy,"Syria",,active
|
|
807
|
-
ipcheck.region.CU,ui,IpCheckPage,IpCheckPage,region_cu,"Cuba",,active
|
|
808
|
-
ipcheck.region.BY,ui,IpCheckPage,IpCheckPage,region_by,"Belarus",,active
|
|
809
|
-
ipcheck.region.VE,ui,IpCheckPage,IpCheckPage,region_ve,"Venezuela",,active
|
|
810
|
-
leaderboard.profile_modal.close,dashboard,LeaderboardProfileModal,LeaderboardProfileModal,close,"Close",,active
|
|
811
|
-
leaderboard.profile_modal.loading,dashboard,LeaderboardProfileModal,LeaderboardProfileModal,loading,"Loading profile…",,active
|
|
812
|
-
leaderboard.profile_modal.error,dashboard,LeaderboardProfileModal,LeaderboardProfileModal,error,"Failed to load profile.",,active
|
|
813
|
-
leaderboard.profile_modal.empty,dashboard,LeaderboardProfileModal,LeaderboardProfileModal,empty,"This profile is not public.",,active
|
|
814
|
-
leaderboard.profile_modal.row_aria,dashboard,LeaderboardPage,LeaderboardRow,row_aria,"Open profile for {{name}}",,active
|
|
815
|
-
leaderboard.profile_modal.rank,dashboard,LeaderboardProfileModal,Hero,rank,"#{{rank}}",,active
|
|
816
|
-
leaderboard.profile_modal.hero.total_tokens,dashboard,LeaderboardProfileModal,Hero,total_tokens,"Total Tokens",,active
|
|
817
|
-
leaderboard.profile_modal.hero.total_cost,dashboard,LeaderboardProfileModal,Hero,total_cost,"Total Cost",,active
|
|
818
|
-
leaderboard.profile_modal.hero.github,dashboard,LeaderboardProfileModal,Hero,github,"GitHub profile",,active
|
|
819
|
-
leaderboard.profile_modal.stat.total_cost,dashboard,LeaderboardProfileModal,StatCards,total_cost,"Total Cost",,active
|
|
820
|
-
leaderboard.profile_modal.stat.total_tokens,dashboard,LeaderboardProfileModal,StatCards,total_tokens,"Total Tokens",,active
|
|
821
|
-
leaderboard.profile_modal.stat.active_days,dashboard,LeaderboardProfileModal,StatCards,active_days,"Active Days",,active
|
|
822
|
-
leaderboard.profile_modal.stat.avg_per_day,dashboard,LeaderboardProfileModal,StatCards,avg_per_day,"Avg/Day",,active
|
|
823
|
-
leaderboard.profile_modal.streak.current,dashboard,LeaderboardProfileModal,Streak,current,"Current Streak",,active
|
|
824
|
-
leaderboard.profile_modal.streak.longest,dashboard,LeaderboardProfileModal,Streak,longest,"Longest Streak",,active
|
|
825
|
-
leaderboard.profile_modal.streak.days,dashboard,LeaderboardProfileModal,Streak,days,"{{count}} days",,active
|
|
826
|
-
leaderboard.profile_modal.best_day.title,dashboard,LeaderboardProfileModal,BestDay,title,"Best Day",,active
|
|
827
|
-
leaderboard.profile_modal.best_day.none,dashboard,LeaderboardProfileModal,BestDay,none,"—",,active
|
|
828
|
-
leaderboard.profile_modal.models.count,dashboard,LeaderboardProfileModal,Models,count,"{{count}} models used",,active
|
|
829
|
-
leaderboard.profile_modal.models.favorite,dashboard,LeaderboardProfileModal,Models,favorite,"Favorite",,active
|
|
830
|
-
leaderboard.profile_modal.models.none,dashboard,LeaderboardProfileModal,Models,none,"No models tracked",,active
|
|
831
|
-
leaderboard.profile_modal.heatmap.title,dashboard,LeaderboardProfileModal,Heatmap,title,"Activity (last 365 days)",,active
|
|
832
|
-
leaderboard.profile_modal.providers.title,dashboard,LeaderboardProfileModal,Providers,title,"By provider",,active
|
|
833
|
-
leaderboard.profile_modal.providers.none,dashboard,LeaderboardProfileModal,Providers,none,"No usage this period.",,active
|
|
834
|
-
leaderboard.profile_modal.view_full,dashboard,LeaderboardProfileModal,Footer,view_full,"View full profile",,active
|
|
835
|
-
leaderboard.profile_modal.badge.copy_url,dashboard,LeaderboardProfileModal,Badge,copy_url,"Copy profile URL",,active
|
|
836
|
-
leaderboard.profile_modal.badge.copy,dashboard,LeaderboardProfileModal,Badge,copy,"Copy README badge",,active
|
|
837
|
-
leaderboard.profile_modal.badge.copied,dashboard,LeaderboardProfileModal,Badge,copied,"Copied!",,active
|
|
838
|
-
local_only.title,dashboard,LocalOnlyNotice,LocalOnlyNotice,title,"Available in the app",,active
|
|
839
|
-
local_only.body,dashboard,LocalOnlyNotice,LocalOnlyNotice,body,"This page reads data from your own machine, so it only works in the Mac app or the CLI dashboard.",,active
|
|
840
|
-
local_only.open_app,dashboard,LocalOnlyNotice,LocalOnlyNotice,open_app,"Open in Mac app",,active
|
|
841
|
-
local_only.download,dashboard,LocalOnlyNotice,LocalOnlyNotice,download,"Get the Mac app",,active
|
|
842
|
-
leaderboard.profile.like.aria_like,dashboard,LeaderboardProfileModal,LikeButton,aria_like,"Like profile",,active
|
|
843
|
-
leaderboard.profile.like.aria_unlike,dashboard,LeaderboardProfileModal,LikeButton,aria_unlike,"Unlike profile",,active
|
|
844
|
-
`,jL={"header.auth.sign_in_aria":"登录","login.back_home":"返回首页","login.cloud_only":"未配置云端登录。请使用 localhost 上的本地仪表盘。","login.title":"登录","login.subtitle":"选择邮箱或已连接账号。","login.dismiss":"关闭","login.verify_email_success":"邮箱已验证。你现在可以登录。","login.verify_email_pending":"请先在邮箱中完成验证,然后再登录。","login.oauth.continue":"使用 {{provider}} 继续","login.divider":"或","login.tab.sign_in":"登录","login.tab.sign_up":"创建账户","login.field.name":"显示名称","login.field.name_placeholder":"可选","login.field.email":"电子邮件","login.field.password":"密码","login.password_hint":"至少 {{min}} 个字符。","login.submit.sign_in":"使用邮箱登录","login.submit.sign_up":"创建账号","auth.callback.processing":"处理中…","auth.callback.success":"登录成功","auth.callback.redirecting":"正在返回 TokenTracker…","auth.callback.failed":"登录未完成,请重试。","auth.callback.close":"关闭此页","login_modal.subtitle":"登录以加入排行榜","login_modal.continue_email":"使用邮箱继续","login_modal.divider_email":"邮箱","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"M","shared.unit.billion_abbrev":"B","shared.data_source":"数据来源:{{source}}","shared.error.prefix":"错误:{{error}}","shared.status.unsynced":"—","shared.time.now":"刚刚","error.boundary.title":"出了点问题","error.boundary.subtitle":"这个视图渲染失败了","error.boundary.hint":"打开控制台,然后重新加载页面","error.boundary.no_details":"没有错误详细信息","error.boundary.action.reload":"重新加载","identity_card.rank_label":"排名","identity_card.streak_label":"活跃天数","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}} 天","usage.summary.total":"Token 总数","usage.period.day":"日","usage.period.week":"周","usage.period.month":"月","usage.period.total":"总计","usage.period.custom":"自定义","usage.metric.total":"总计","usage.metric.input":"输入","usage.metric.output":"输出","usage.metric.cached_input":"缓存输入","usage.metric.reasoning_output":"推理输出","usage.button.refresh":"刷新","usage.overview.tablist_aria":"时间范围","usage.overview.cost_breakdown_aria":"查看成本明细","usage.overview.distribution_aria":"来源占比:{{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}:{{percent}}%,{{tokens}} Token,{{cost}}。点击{{action}}详情","usage.overview.expand":"展开","usage.overview.collapse":"收起","usage.overview.model_count":"{{count}} 个模型","usage.overview.model_details_aria":"{{provider}} 模型详情","widgets.page.title":"组件","widgets.cta.open_gallery":"打开小组件库","widgets.cta.download":"下载 Mac 应用","widgets.cta.macos_only":"仅限 macOS","widgets.menubar.section.title":"菜单栏","widgets.gallery.section.title":"桌面小组件","widgets.summary.name":"使用概览","widgets.summary.description":"今天和近 7 天的用量,以及紧凑趋势线。","widgets.heatmap.name":"热力图","widgets.heatmap.description":"像 GitHub 一样,一眼看清活跃和空闲的日子。","widgets.topModels.name":"热门模型","widgets.topModels.description":"你最常用的模型,按 Token 占比排序。","widgets.limits.name":"使用限制","widgets.limits.description":"Claude、Codex、Cursor、Gemini 等的实时速率限制进度。","daily.sort.date.label":"日期","daily.sort.date.title":"按日期排序","daily.sort.total.label":"总计","daily.sort.total.title":"按总计排序","daily.sort.input.label":"输入","daily.sort.input.title":"按输入排序","daily.sort.output.label":"输出","daily.sort.output.title":"按输出排序","daily.sort.cached.label":"缓存","daily.sort.cached.title":"按缓存输入排序","daily.sort.reasoning.label":"推理","daily.sort.reasoning.title":"按推理输出排序","daily.sort.conversations.label":"对话数","daily.sort.conversations.title":"按对话排序","details.pagination.prev":"上一页","details.pagination.next":"下一页","limits.copilot.otelHint.title":"跟踪 Copilot Token 使用情况","limits.copilot.otelHint.body":"限额信息通过你的 GitHub OAuth 令牌读取。如果还想记录逐 Token 用量,请启用 Copilot 的 OpenTelemetry 导出,把下面这段加到你的 shell 配置文件(~/.zshrc 或 ~/.bashrc):","limits.copilot.otelHint.copy":"复制","limits.copilot.otelHint.copied":"已复制","limits.panel.title":"使用限制","limits.label.cursor_plan":"套餐","limits.label.cursor_auto":"自动","limits.label.cursor_api":"API","limits.label.kiro_month":"月度","limits.label.kiro_bonus":"奖励","limits.label.kimi_weekly":"周","limits.label.kimi_5h":"5h","limits.label.kimi_total":"总量","limits.label.kimi_parallel":"并发:{{count}}","limits.label.copilot_premium":"高级","limits.label.copilot_chat":"对话","limits.status.not_connected":"未连接","limits.status.no_data":"未返回实时限额数据","limits.status.all_hidden":"所有限额提供商都已隐藏。请打开显示设置重新显示。","nav.usage":"用量","nav.limits":"限额","nav.widgets":"小组件","nav.skills":"Skills","nav.leaderboard":"排行榜","nav.collapse":"折叠侧边栏","nav.expand":"展开侧边栏","nav.menu":"打开导航菜单","nav.close_menu":"关闭导航菜单","nav.aside_label":"主导航","nav.nav_label":"导航","limits.page.subtitle":"AI 工具的速率限制和配额使用情况。","limits.settings.toggle_visible":"切换可见性","limits.page.openSettings":"显示设置","nav.group.general":"常规","nav.group.tools":"工具","nav.group.account":"账户","nav.settings":"设置","header.auth.open_settings":"打开设置","settings.page.title":"设置","settings.page.subtitle":"管理你的账户、外观和显示偏好。","settings.section.appearance":"外观","settings.section.account":"账户","settings.section.limits":"限制显示","settings.appearance.theme.label":"主题","settings.appearance.theme.hint":"选择 Token Tracker 在仪表盘中的显示方式。","settings.appearance.theme.light":"浅色","settings.appearance.theme.dark":"深色","settings.appearance.theme.system":"系统","settings.account.displayName":"显示名称","settings.account.edit":"编辑","settings.account.save":"保存","settings.account.saving":"保存...","settings.account.cancel":"取消","settings.account.userId":"用户 ID","settings.account.copyUserId":"复制用户 ID","settings.account.copy":"复制","settings.account.copied":"已复制","settings.account.cloudSync":"云同步","settings.account.cloudSyncHint":"将本地用量上传到你的 Token Tracker 云端账号。","settings.account.publicProfile":"公开主页","settings.account.publicProfileHint":"在公开排行榜中展示你的用量。","settings.account.displayNameAnonymousHint":"匿名状态下,排行榜会隐藏你的名字和头像","settings.account.displayNameDisabledWhileAnon":"请先关闭匿名,再编辑名字","settings.account.githubUrl":"GitHub 主页","settings.account.githubUrlHint":"在排行榜名字旁显示 GitHub 链接。","settings.account.githubUrlPlaceholder":"用户名或 https://github.com/用户名","settings.account.githubUrlInvalid":"请输入 GitHub 用户名,或 https://github.com/用户名","leaderboard.github.aria":"打开 GitHub 主页","leaderboard.github.tooltipAction":"点击查看 GitHub 主页","leaderboard.github.tooltipPrefix":"可在","leaderboard.github.tooltipSettingsLink":"设置","leaderboard.github.tooltipSuffix":"中配置你的主页","settings.account.signOut":"退出登录","settings.account.signIn":"登录","settings.account.signedOutHint":"登录后可管理云同步和排行榜偏好。","settings.section.menubar":"菜单栏应用","settings.menubar.showStats":"在菜单栏中显示统计信息","settings.menubar.showStatsHint":"在菜单栏图标旁边显示今天的Token 数量和成本。","settings.menubar.animatedIcon":"动画图标","settings.menubar.animatedIconHint":"闪烁 Clawd 角色并在菜单栏中播放同步动画。","settings.menubar.launchAtLogin":"登录时启动","settings.menubar.launchAtLoginHint":"登录 macOS 时自动启动 TokenTrackerBar。","settings.menubar.syncNow":"立即同步","settings.menubar.syncNowHint":"触发本地AI工具日志立即解析并上传。","settings.menubar.syncing":"正在同步...","settings.menubar.updates":"更新","settings.menubar.checkUpdates":"检查更新","settings.footer.statusPage":"系统状态","menubar.slot.primary":"第一个位置","menubar.slot.secondary":"第二个位置","menubar.native_only":"打开 macOS 版 TokenTrackerBar 后可编辑菜单栏显示。","menubar.metric.today_tokens":"今日 Token","menubar.metric.today_cost":"今日成本","menubar.metric.last_7d_tokens":"近 7 天 Token","menubar.metric.total_tokens":"总 Token","menubar.metric.total_cost":"总成本","menubar.metric.claude_5h":"Claude 5 小时限额","menubar.metric.claude_7d":"Claude 7 天限额","menubar.metric.codex_5h":"Codex 5 小时限额","menubar.metric.codex_7d":"Codex 7 天限额","nav.ip_check":"Claude IP 检查","skills.page.title":"Skills","skills.tab.my":"我的","skills.tab.browse":"发现","skills.action.refresh":"刷新","skills.action.install":"安装","skills.action.choose_targets":"选择目标","skills.target.menu_label":"安装到","skills.target.none":"未选目标","skills.toast.installed":"已把 {{name}} 安装到 {{targets}}。","skills.action.remove":"移除","skills.action.search":"搜索","skills.action.search_aria":"搜索 skills","skills.target.synced_summary":"已同步到 {{targets}}","skills.target.synced_none":"尚未同步到任何 agent","skills.row.open_details":"查看 {{name}} 详情","skills.detail.close":"关闭详情","skills.detail.sync_section_title":"同步到","skills.detail.remove_button":"从所有 agent 移除","skills.detail.remove_confirm_hint":"这会从每个 agent 取消同步并删除本地副本。","skills.filter.agent_label":"Agent","skills.filter.agent_all":"全部 agent","skills.filter.clear":"清除筛选","skills.filter.result_count":"{{filtered}} / {{total}} 个 skill","skills.filter.result_count_browse":"{{count}} 个结果","skills.empty.no_match":"当前筛选下没有匹配的 skill。","hint.dismiss":"关闭提示","hint.dismissible_aria":"可关闭的提示","skills.card.installed":"已安装","skills.card.targets_prefix":"将安装到:","skills.card.targets_change":"更改","skills.card.installs":"{{count}} 次安装","skills.source.label":"来源","skills.source.all":"全部仓库","skills.mode.repo":"仓库","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"在已启用的仓库里搜索…","skills.browse.placeholder_repo":"在 {{repo}} 中搜索…","skills.browse.placeholder_skillssh":"在 skills.sh 仓库中搜索…","skills.browse.empty_sources":"添加一个 GitHub 仓库以开始浏览技能。","skills.browse.add_repo_hint":"想要更多 skill?添加一个 GitHub 仓库。","skills.browse.manage_sources":"管理来源","skills.browse.hint_skillssh":"至少输入 2 个字符以搜索 skills.sh。","skills.browse.loading_hint":"正在从 GitHub 拉取 skill 信息,首次加载可能需要一分钟,结果会缓存。","skills.error.generic":"Skill 操作失败。","skills.confirm.remove_title":"要移除 {{name}} 吗?","skills.confirm.remove_managed":"这个 skill 将从所有已连接的 AI 工具中移除,几秒内可以撤销。","skills.confirm.remove_local":"将从所有 AI 工具目录中删除该 skill 文件夹。此操作无法撤销。","skills.toast.removed":"已移除 {{name}}。","shared.action.undo":"撤销","shared.action.cancel":"取消","skills.empty.my":"还没有 skill。去「发现」搜索或安装。","skills.empty.my_cta":"去发现","skills.empty.browse":"这个来源下没有找到技能。","skills.empty.search":"没有结果,换个关键词试试。","skills.repo.placeholder":"owner/repository","skills.repo.add":"添加仓库","skills.repo.invalid":"请输入 owner/repository 或 GitHub 仓库 URL。","skills.repo.remove":"移除仓库","settings.appearance.language.label":"语言","settings.appearance.language.hint":"使用“系统”时会默认跟随本机语言。","settings.appearance.language.system":"系统","settings.appearance.language.english":"英语","settings.appearance.language.chinese":"简体中文","settings.appearance.language.traditional_chinese":"繁体中文","settings.appearance.language.japanese":"日语","settings.appearance.language.korean":"韩语","settings.appearance.currency.label":"货币","settings.appearance.currency.hint":"选择用量成本的显示币种。","settings.appearance.currency.opt.usd":"美元 ($)","settings.appearance.currency.opt.eur":"欧元 (€)","settings.appearance.currency.opt.gbp":"英镑 (£)","settings.appearance.currency.opt.cny":"人民币 (¥)","settings.appearance.currency.opt.jpy":"日元 (¥)","settings.appearance.currency.opt.hkd":"港币 (HK$)","settings.appearance.currency.rate_source.default":"内置默认汇率","settings.appearance.currency.rate_source.fetched":"数据源:open.er-api.com","settings.appearance.currency.rate_updated":"更新于 {{when}}","settings.appearance.currency.rate_never":"尚未刷新"},UL={"usage.overview.antigravity_notice_title":"Token 为估算值","usage.overview.antigravity_notice_body":"Antigravity 的本地日志没有真实用量字段,这里的数字是按字符长度(约 4 字符/Token)估算出来的,也没有扣除 Gemini 的 prompt cache 折扣。请把它当作上限估算,不要直接对账账单。","stats.period.today":"今日","stats.period.week":"本周","stats.period.month":"本月","stats.period.all":"全部","stats.period.convs":"对话","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"折叠模型分解","dashboard.core_index.expand_aria":"展开模型细分","dashboard.rolling.title":"最近的活动","dashboard.rolling.last_7d":"过去 7 天","dashboard.rolling.last_30d":"过去 30 天","dashboard.rolling.avg_active_day":"日平均","dashboard.projects.title":"项目用量","dashboard.projects.tokens_label":"Token","dashboard.projects.stars_label":"星标","dashboard.projects.limit_label":"展示","dashboard.projects.limit_aria":"选择仓库显示数量","dashboard.projects.limit_top_3":"前 3 名","dashboard.projects.limit_top_6":"前 6 名","dashboard.projects.limit_top_10":"前 10 名","dashboard.projects.empty":"没有公开仓库","dashboard.widgets.title":"桌面小组件","dashboard.widgets.hint":"右键点按桌面 → 编辑小组件 → 搜索“TokenTracker”","dashboard.widgets.dismiss_aria":"关闭小组件介绍","dashboard.cost_breakdown.title":"成本明细","dashboard.cost_breakdown.total_label":"预计总成本","dashboard.cost_breakdown.close":"关闭","trend.monitor.label":"使用趋势","heatmap.title":"热力图","heatmap.empty":"尚无活动数据。","heatmap.legend.less":"少","heatmap.legend.more":"多","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"Token","heatmap.month.jan":"1月","heatmap.month.feb":"2月","heatmap.month.mar":"3月","heatmap.month.apr":"4月","heatmap.month.may":"5月","heatmap.month.jun":"6月","heatmap.month.jul":"7月","heatmap.month.aug":"8月","heatmap.month.sep":"9月","heatmap.month.oct":"10月","heatmap.month.nov":"11月","heatmap.month.dec":"12月","heatmap.day.sun":"日","heatmap.day.mon":"一","heatmap.day.tue":"二","heatmap.day.wed":"三","heatmap.day.thu":"四","heatmap.day.fri":"五","heatmap.day.sat":"六","dashboard.session_expired.copy_label":"运行 npx --yes tokentracker-cli init","dashboard.session_expired.copied":"已复制","dashboard.install.prompt":"安装 Node.js 18+ 然后运行:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"复制安装命令","dashboard.install.copy_base":"复制初始化命令","dashboard.install.copied":"已复制到剪贴板","dashboard.install.link_code.loading":"正在生成专属代码...","dashboard.install.link_code.failed":"专属代码不可用","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"每日细目","dashboard.daily.empty":"还没有数据。先使用 AI CLI,再运行 {{cmd}}。","dashboard.identity.title":"你的个人资料","dashboard.identity.subtitle":"记录你的编码之旅","dashboard.identity.fallback":"匿名用户","dashboard.screenshot.title_line1":"AI 编程助手","dashboard.screenshot.title_line2":"2025 年度回顾","dashboard.screenshot.twitter_button":"分享到 X","dashboard.screenshot.twitter_label":"分享到 X","dashboard.screenshot.twitter_hint":"自动将图像复制到剪贴板","dashboard.screenshot.twitter_text":"记录中的 {{total_tokens}} Token。\\n{{model_name}} 以 {{model_percent}}% 领先。\\n\\n我的 AI 使用情况,未经审计 →\\ntokentracker.cc","heatmap.3d.hover_tip":"点击进入 3D 全屏旋转分析模式","heatmap.3d.modal.title":"Token 三维透视","heatmap.3d.modal.desc":"按住左键拖拽可任意旋转,悬浮感知每日活跃数据与多维统计。","heatmap.3d.modal.stats.total_tokens":"年度 Token 总量","heatmap.3d.modal.stats.precision_total_tokens":"精准年消耗量","heatmap.3d.modal.stats.estimated_cost":"年度估算费用","heatmap.3d.modal.stats.active_rate_days":"活跃占比 / 天数","heatmap.3d.modal.stats.max_streak":"最长连续活跃","heatmap.3d.modal.stats.days_suffix":"天","heatmap.3d.modal.stats.peak_day":"单日峰值暴击","heatmap.3d.modal.stats.precision_peak_value":"精确单日峰值","heatmap.3d.modal.stats.no_data":"无数据","heatmap.3d.modal.legend.title":"活跃度层级","heatmap.3d.modal.palette.emerald":"翡翠之城","heatmap.3d.modal.palette.ocean":"深海浩瀚","heatmap.3d.modal.palette.neon":"赛博霓虹","heatmap.3d.modal.palette.amber":"烈焰余晖","heatmap.3d.modal.control.play":"启动慢速自转","heatmap.3d.modal.control.pause":"暂停自动旋转","heatmap.3d.modal.control.reset":"重置 3D 视角","heatmap.3d.modal.footer.tip":"双指缩放 / 滚轮缩放 / 鼠标拖拽旋转 3D 图表","heatmap.3d.modal.ai.title.default":"持之以恒的行者","heatmap.3d.modal.ai.eval.default":"在技术的长河中持之以恒。也许日常的编码并不总是波澜壮阔,但每一个微小的活跃点都在记录着您的思考与探索。星火成留,终将汇聚成属于您的数字海洋。","heatmap.3d.modal.ai.title.peak":"极限活跃级贡献者","heatmap.3d.modal.ai.eval.peak":"这一年中,您的 Token 产出表现出极高的工程密度。如此规模的开发量相当于深度参与了中大型系统底座的重构,每一次击键都在将复杂的逻辑收敛为确定性的代码。这是极度专注与纯粹工程热爱的最好印证。","heatmap.3d.modal.ai.title.heavy":"高频产出级开发者","heatmap.3d.modal.ai.eval.heavy":"卓越的持续输出。您的 Token 累积量已达数百万字,相当于数十部中篇技术巨著的体量。高饱和度的编码节奏表明您正在以极高的执行力构建属于您的数字资产,展现了卓越的创造力。","heatmap.3d.modal.ai.title.core":"核心生产力专家","heatmap.3d.modal.ai.eval.core":"极具韧性的长期投入。在过去的一年中,您在较长周期内稳定保持着高强度的开发节奏。您用扎实的代码行数与 Token 产出,默默筑起了项目的核心架构,是当之无愧的工程支柱。","heatmap.3d.modal.ai.title.steady":"稳健成长型工程师","heatmap.3d.modal.ai.eval.steady":"踏实而坚定的技术积累。每一次 Token 的递增,都是您在坚实地砌下通往未来的代码基石。这种细水长流的稳健节奏,往往是一个优秀开发者通往工程大师的必经之路。","heatmap.3d.voxel.joke.1":"🔥 极度疯狂!产出 {{value}} tokens!你是在疯狂训练大模型,还是手撸了一个编译器?","heatmap.3d.voxel.joke.2":"🚀 史诗级输出!共 {{value}} tokens。今日产出可绕地球一圈,AI 都在为你惊叹!","heatmap.3d.voxel.joke.3":"⚡ 爆击日!{{value}} tokens。代码如泉涌,键盘已经开始冒烟了!","heatmap.3d.voxel.level3":"⚡ 生产力大爆发({{value}} tokens)!高效专注的黄金时刻,继续保持这个巅峰状态!","heatmap.3d.voxel.level2":"🌱 渐入佳境({{value}} tokens)!稳步产出,每一次敲击键盘都是在为大厦添砖加瓦。","heatmap.3d.voxel.level1":"🍃 聚沙成塔({{value}} tokens)。微小的提交也是对未来的投资,保持复利的力量!","heatmap.3d.voxel.level0":"💤 养精蓄锐。在不写代码的日子里,灵感也在悄悄生长。","ipcheck.page.title":"Claude IP 检测","ipcheck.page.subtitle":"查看当前访问 Claude 的出口 IP、纯净度、地理与风险信号,识别可能影响登录或触发风控的因素。","ipcheck.mask.toggle":"隐藏 IP","ipcheck.ipv6.warn":"当前为 IPv6 环境,不建议用 IPv6 访问 Claude Code,部分检测结果可能不完整。","ipcheck.ip.cn":"中国出口 IPv4","ipcheck.ip.cloudflare":"Cloudflare 出口","ipcheck.ip.claude":"Claude 出口","ipcheck.ip.failed":"获取失败","ipcheck.ip.loading":"加载中...","ipcheck.trust.title":"信任评分","ipcheck.trust.subtitle":"Claude 风控视角下的 IP 纯净度","ipcheck.trust.no_data":"无数据","ipcheck.trust.no_ip":"未获取到 Claude 出口 IP,无法评分","ipcheck.trust.no_score":"该 IP 暂无评分数据","ipcheck.trust.gauge.low":"0 高危","ipcheck.trust.gauge.high":"100 可信","ipcheck.trust.label.pristine":"极度纯净","ipcheck.trust.label.clean":"纯净","ipcheck.trust.label.good":"良好","ipcheck.trust.label.neutral":"中性","ipcheck.trust.label.suspicious":"可疑","ipcheck.trust.label.unreachable":"不可访问","ipcheck.trust.text.excellent":"该 IP 信誉极好","ipcheck.trust.text.great":"该 IP 信誉优异","ipcheck.trust.text.minor":"该 IP 存在轻微风险","ipcheck.trust.text.moderate":"该 IP 存在一定风险","ipcheck.trust.text.severe":"该 IP 风险极高","ipcheck.trust.text.restricted":"处于不可访问区域,Claude 会严格风控","ipcheck.trust.region_warn.title":"Claude 出口 IP 位于 {{region}}","ipcheck.trust.region_warn.body":"不建议登录 Claude,容易触发封号风控。","ipcheck.trust.region_support":"Claude 支持地区","ipcheck.trust.region.accessible":"可访问","ipcheck.common.unknown":"未知","ipcheck.props.title":"IP 属性","ipcheck.props.region":"地区","ipcheck.props.city":"城市","ipcheck.props.type":"类型","ipcheck.props.asn":"ASN","ipcheck.props.org":"运营商","ipcheck.props.residential":"家庭住宅","ipcheck.props.datacenter":"机房","ipcheck.security.title":"安全检测","ipcheck.security.vpn":"VPN","ipcheck.security.proxy":"代理 (Proxy)","ipcheck.security.tor":"Tor","ipcheck.security.crawler":"机器人 (Crawler)","ipcheck.security.abuser":"滥用记录","ipcheck.security.proxy_flag":"代理","ipcheck.security.crawler_yes":"是","ipcheck.security.crawler_no":"否","ipcheck.security.abuser_yes":"有记录","ipcheck.security.abuser_no":"无记录","ipcheck.security.clean":"未检测到","ipcheck.avail.title":"Claude 可用性","ipcheck.avail.tooltip":"Claude 服务器在美国,从亚洲访问延迟超过 100ms 属于正常情况。","ipcheck.avail.refresh":"刷新","ipcheck.avail.svc_row":"服务状态","ipcheck.avail.latency.normal":"正常","ipcheck.avail.latency.good":"良好","ipcheck.avail.latency.slow":"较慢","ipcheck.avail.latency.unreachable":"不可访问","ipcheck.avail.svc.none":"全部正常","ipcheck.avail.svc.minor":"轻微故障","ipcheck.avail.svc.major":"重大故障","ipcheck.avail.svc.critical":"严重故障","ipcheck.avail.svc.maintenance":"维护中","ipcheck.avail.svc.other":"服务异常","ipcheck.dns.title":"DNS 泄露检测","ipcheck.dns.status":"状态","ipcheck.dns.outlet":"DNS 出口","ipcheck.dns.outlet_ip":"DNS 出口 IP","ipcheck.dns.isp":"服务商","ipcheck.dns.leaked":"可能泄露","ipcheck.dns.no_leak":"未检测到泄露","ipcheck.dns.encrypted":"DNS 加密或未暴露","ipcheck.dns.cn_tag":"中国 DNS","ipcheck.udp.title":"WebRTC UDP 泄露","ipcheck.udp.status":"状态","ipcheck.udp.outlet":"UDP 出口","ipcheck.udp.outlet_ip":"UDP 出口 IP","ipcheck.udp.origin":"归属地","ipcheck.udp.disabled":"WebRTC 已禁用","ipcheck.udp.no_leak":"未检测到泄露","ipcheck.udp.leaked":"可能泄露","ipcheck.udp.anomaly":"异常","ipcheck.device.title":"设备信息","ipcheck.device.tz":"时区","ipcheck.device.lang":"语言","ipcheck.device.os":"操作系统 / 浏览器","ipcheck.device.touch":"触屏","ipcheck.device.net":"网络类型","ipcheck.device.dnt":"Do Not Track","ipcheck.device.webgl_render":"WebGL 渲染器","ipcheck.device.canvas_fp":"Canvas 指纹","ipcheck.device.webgl_fp":"WebGL 指纹","ipcheck.device.match":"一致","ipcheck.device.mismatch":"不一致","ipcheck.device.local":"本地","ipcheck.device.estimate_suffix":"(估算)","ipcheck.device.diff_equal":"偏移略有差异","ipcheck.device.diff_ahead":"Claude 快 {{h}} 小时","ipcheck.device.diff_behind":"Claude 慢 {{h}} 小时","ipcheck.device.lang_expected":"Claude 出口常用","ipcheck.device.touch_yes":"是","ipcheck.device.touch_no":"否","ipcheck.device.dnt_on":"已开启","ipcheck.device.dnt_off":"已关闭","ipcheck.device.dnt_unset":"未设置","ipcheck.device.net_unsupported":"不支持检测","ipcheck.device.unsupported":"不支持","ipcheck.history.title":"Claude 出口 IP 历史","ipcheck.history.subtitle":"仅本地存储于浏览器,最多保留 6 条","ipcheck.history.clear":"清除","ipcheck.history.empty":"暂无历史记录","ipcheck.history.current":"当前","ipcheck.region.CN":"中国大陆","ipcheck.region.HK":"香港","ipcheck.region.MO":"澳门","ipcheck.region.RU":"俄罗斯","ipcheck.region.KP":"朝鲜","ipcheck.region.IR":"伊朗","ipcheck.region.SY":"叙利亚","ipcheck.region.CU":"古巴","ipcheck.region.BY":"白俄罗斯","ipcheck.region.VE":"委内瑞拉","leaderboard.profile_modal.close":"关闭","leaderboard.profile_modal.loading":"正在加载用户资料…","leaderboard.profile_modal.error":"加载用户资料失败。","leaderboard.profile_modal.empty":"这个用户的资料未公开。","leaderboard.profile_modal.row_aria":"查看 {{name}} 的资料","leaderboard.profile_modal.rank":"#{{rank}}","leaderboard.profile.hero.rank_label":"排名","leaderboard.profile_modal.hero.total_tokens":"总 Token","leaderboard.profile_modal.hero.total_cost":"总花费","leaderboard.profile_modal.hero.github":"GitHub 主页","leaderboard.profile_modal.stat.total_cost":"总花费","leaderboard.profile_modal.stat.total_tokens":"总 Token","leaderboard.profile_modal.stat.active_days":"活跃天数","leaderboard.profile_modal.stat.avg_per_day":"日均花费","leaderboard.profile_modal.streak.current":"当前连续","leaderboard.profile_modal.streak.longest":"最长连续","leaderboard.profile_modal.streak.days":"{{count}} 天","leaderboard.profile_modal.best_day.title":"最佳日","leaderboard.profile_modal.best_day.none":"—","leaderboard.profile_modal.models.count":"使用了 {{count}} 个模型","leaderboard.profile_modal.models.favorite":"最爱模型","leaderboard.profile_modal.models.none":"暂无模型记录","leaderboard.profile_modal.heatmap.title":"活跃度(最近 365 天)","leaderboard.profile_modal.providers.title":"按 Provider 分布","leaderboard.profile_modal.providers.none":"本周期无使用数据。","leaderboard.profile_modal.view_full":"查看完整主页","local_only.title":"请在客户端内使用","local_only.body":"这个页面读取的是你本机上的数据,所以只能在 Mac app 或命令行 dashboard 里查看。","local_only.open_app":"在 Mac app 内打开","local_only.download":"下载 Mac app"},BL={"landing.handle.default":"VIBE_USER","landing.handle.special":"伏特","landing.screenshot.alt":"TokenTracker 仪表板截图","landing.nav.login":"登录","landing.nav.signup":"注册","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"复制命令","landing.install.action.copied":"已复制","landing.meta.title":"Token Tracker —— AI Coding CLI 的 Token 用量追踪器","landing.meta.description":"自动监控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地优先、注重隐私、零配置。","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/og-image.jpg","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker 分享","share.meta.description":"分享你的 Token Tracker 仪表板快照,包含跨模型、项目和时间窗口的用量洞察。","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/share-dashboard.jpg","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.handle.placeholder":"试试 “{{handle}}”","landing.rank.expectation":"预期排名:{{rank}}","landing.rank.singularity":"登顶","landing.rank.unranked":"未上榜","landing.cta.primary":"进入仪表板","landing.cta.secondary":"查看 GitHub 源码","landing.v2.hero.title_line1":"追踪你所有的","landing.v2.hero.title_line2":"AI Token","landing.v2.install.mac_cta":"Mac 应用 (DMG)","landing.v2.models.title":"支持的 AI CLI 工具","landing.v2.compare.kicker":"无缝追踪","landing.v2.compare.title":"别再瞎猜你的 AI 用量。","landing.v2.compare.subtitle":"AI CLI 把用量数据藏在零散的本地文件里。TokenTracker 把它们实时聚合到一个清晰的仪表板里。","landing.v2.distill.body":"100% 本地处理,不上传任何 prompt 或代码。","landing.v2.compare.with.title":"用 Token Tracker","landing.v2.compare.with.p1":"集中式用量仪表板","landing.v2.compare.with.p2":"实时 Token 指标","landing.v2.compare.with.p3":"100% 本地,隐私无忧","landing.v2.compare.without.title":"不用","landing.v2.compare.without.p1":"散落的 JSON 日志文件","landing.v2.compare.without.p2":"对 Token 消耗一无所知","landing.v2.compare.without.p3":"突如其来的 API 账单","landing.v2.footer.line":"Token Tracker —— 开发者打造,服务开发者。","landing.v2.nav.status":"状态","landing.v2.nav.github":"GitHub","landing.v2.models.agent.codex":"Codex","landing.v2.models.agent.claude_code":"Claude Code","landing.v2.models.agent.cursor":"Cursor","landing.v2.models.agent.gemini":"Gemini","landing.v2.models.agent.opencode":"OpenCode","landing.v2.models.agent.openclaw":"OpenClaw","landing.v2.cta.primary":"Dashboard","landing.v2.hero.subtagline":"自动监控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地优先、注重隐私、零配置。","leaderboard.profile.nav.back":"排行榜","leaderboard.title":"排行榜","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"全部时间","leaderboard.generated_at":"更新于 {{ts}}","leaderboard.period.week":"周","leaderboard.period.month":"月","leaderboard.period.total":"全部","leaderboard.me_label":"你","leaderboard.anon_label":"匿名","leaderboard.error.unknown":"未知错误","leaderboard.loading":"加载中…","leaderboard.empty":"暂无数据","leaderboard.column.rank":"排名","leaderboard.column.user":"用户","leaderboard.column.total":"总计","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"Copilot","leaderboard.column.kimi":"Kimi","leaderboard.column.supplemental":"其他","leaderboard.column.est_cost":"预估花费","leaderboard.signin_prompt":"登录后即可上榜","leaderboard.signin_button":"登录","leaderboard.sync_prompt":"开启云同步即可参与排名","leaderboard.sync_button.idle":"开启并同步","leaderboard.sync_button.busy":"同步中…","leaderboard.pagination.page_size_label":"每页显示","leaderboard.pagination.prev":"上一页","leaderboard.pagination.next":"下一页","leaderboard.pagination.ellipsis":"……","leaderboard.pagination.page_unknown":"第 {{page}} 页","share.modal.title":"分享你的数据","share.modal.subtitle":"生成海报卡片,随处分享。","share.modal.close":"关闭","share.modal.action.x":"分享到 X","share.modal.action.download":"下载","share.modal.action.copy":"复制图片","share.modal.hint.x":"把图片粘贴到推文里","share.modal.hint.copy":"到剪贴板","share.modal.name_label":"显示名称","share.modal.name_placeholder":"输入你的名字","share.modal.style_label":"样式","share.modal.footer":"数据始终保留在本地——图片在你的浏览器内生成,绝不上传。","share.button.label":"分享","share.button.aria":"打开分享卡片","share.toast.copied":"图片已复制到剪贴板","share.toast.downloaded":"图片已保存","share.toast.failed":"图片生成失败","share.toast.working":"生成中…","share.variant.neon":"霓虹","share.variant.broadsheet":"特刊","share.date.month_year":"{{year}} 年 {{month}}","share.issue.all_time":"总计","share.month_short.jan":"1 月","share.month_short.feb":"2 月","share.month_short.mar":"3 月","share.month_short.apr":"4 月","share.month_short.may":"5 月","share.month_short.jun":"6 月","share.month_short.jul":"7 月","share.month_short.aug":"8 月","share.month_short.sep":"9 月","share.month_short.oct":"10 月","share.month_short.nov":"11 月","share.month_short.dec":"12 月","share.hook.top_loyal":"{{name}} 占了 {{percent}}% 的用量。","share.hook.days_record":"共记录 {{days}} 天。","share.hook.top_led":"{{name}} 领跑,占比 {{percent}}%。","share.hook.multi_models":"{{days}} 天里用了 {{count}} 个模型。","share.hook.days_with_model":"{{name}} 陪你跑了 {{days}} 天。","share.hook.new_chapter":"新的记录,从这里开始。","share.card.broadsheet.issue":"期号","share.card.broadsheet.by":"分享者","share.card.broadsheet.tracked_since":"追踪起始","share.card.broadsheet.total_tokens":"总 Token 数","share.card.broadsheet.estimated_spend":"预估花费","share.card.broadsheet.billable_days":"{{days}} 个活跃日","share.card.broadsheet.heatmap_title":"年度热图","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}} 天有记录","share.card.broadsheet.roster_title":"模型榜","share.card.broadsheet.roster_subtitle":"常用模型轮换","share.card.broadsheet.empty":"这一周很安静,还没有模型数据。","share.card.broadsheet.global_rank":"全站排名","share.card.broadsheet.active_days":"活跃","share.card.broadsheet.days_count":"{{days}} 天","share.card.broadsheet.track_yours":"追踪你自己的","share.card.annual.report_title":"用量报告","share.card.annual.less":"少","share.card.annual.more":"多","share.card.annual.heatmap_title":"Token 热图","share.card.annual.total_tokens":"总 Token 数","share.card.annual.estimated_cost":"预估成本","share.card.annual.longest_streak":"最长连击","share.card.annual.days_count":"{{days}} 天","share.card.annual.top_model":"热门模型"},FL={"header.auth.sign_in_aria":"登入","login.back_home":"返回首頁","login.cloud_only":"未配置雲端登入。請使用 localhost 上的本地儀表盤。","login.title":"登入","login.subtitle":"選擇郵箱或已連線賬號。","login.dismiss":"關閉","login.verify_email_success":"郵箱已驗證。你現在可以登入。","login.verify_email_pending":"請先在郵箱中完成驗證,然後再登入。","login.oauth.continue":"使用 {{provider}} 繼續","login.divider":"或","login.tab.sign_in":"登入","login.tab.sign_up":"建立賬戶","login.field.name":"顯示名稱","login.field.name_placeholder":"可選","login.field.email":"電子郵件","login.field.password":"密碼","login.password_hint":"至少 {{min}} 個字元。","login.submit.sign_in":"使用郵箱登入","login.submit.sign_up":"建立賬號","auth.callback.processing":"處理中…","auth.callback.success":"登入成功","auth.callback.redirecting":"正在返回 TokenTracker…","auth.callback.failed":"登入未完成,請重試。","auth.callback.close":"關閉此頁","login_modal.subtitle":"登入以加入排行榜","login_modal.continue_email":"使用郵箱繼續","login_modal.divider_email":"郵箱","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"M","shared.unit.billion_abbrev":"B","shared.data_source":"資料來源:{{source}}","shared.error.prefix":"錯誤:{{error}}","shared.status.unsynced":"—","shared.time.now":"剛剛","error.boundary.title":"出了點問題","error.boundary.subtitle":"這個檢視渲染失敗了","error.boundary.hint":"開啟控制台,然後重新載入頁面","error.boundary.no_details":"沒有錯誤詳細資訊","error.boundary.action.reload":"重新載入","identity_card.rank_label":"排名","identity_card.streak_label":"活躍天數","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}} 天","usage.summary.total":"Token 總數","usage.period.day":"日","usage.period.week":"周","usage.period.month":"月","usage.period.total":"總計","usage.period.custom":"自定義","usage.metric.total":"總計","usage.metric.input":"輸入","usage.metric.output":"輸出","usage.metric.cached_input":"快取輸入","usage.metric.reasoning_output":"推理輸出","usage.button.refresh":"重新整理","usage.overview.tablist_aria":"時間範圍","usage.overview.cost_breakdown_aria":"檢視成本明細","usage.overview.distribution_aria":"來源佔比:{{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}:{{percent}}%,{{tokens}} Token,{{cost}}。點選{{action}}詳情","usage.overview.expand":"展開","usage.overview.collapse":"收起","usage.overview.model_count":"{{count}} 個模型","usage.overview.model_details_aria":"{{provider}} 模型詳情","widgets.page.title":"元件","widgets.cta.open_gallery":"開啟小元件庫","widgets.cta.download":"下載 Mac 應用","widgets.cta.macos_only":"僅限 macOS","widgets.menubar.section.title":"選單欄","widgets.gallery.section.title":"桌面小元件","widgets.summary.name":"使用概覽","widgets.summary.description":"今天和近 7 天的用量,以及緊湊趨勢線。","widgets.heatmap.name":"熱力圖","widgets.heatmap.description":"像 GitHub 一樣,一眼看清活躍和空閒的日子。","widgets.topModels.name":"熱門模型","widgets.topModels.description":"你最常用的模型,按 Token 佔比排序。","widgets.limits.name":"使用限制","widgets.limits.description":"Claude、Codex、Cursor、Gemini 等的即時速率限制進度。","daily.sort.date.label":"日期","daily.sort.date.title":"按日期排序","daily.sort.total.label":"總計","daily.sort.total.title":"按總計排序","daily.sort.input.label":"輸入","daily.sort.input.title":"按輸入排序","daily.sort.output.label":"輸出","daily.sort.output.title":"按輸出排序","daily.sort.cached.label":"快取","daily.sort.cached.title":"按快取輸入排序","daily.sort.reasoning.label":"推理","daily.sort.reasoning.title":"按推理輸出排序","daily.sort.conversations.label":"對話數","daily.sort.conversations.title":"按對話排序","details.pagination.prev":"上一頁","details.pagination.next":"下一頁","limits.copilot.otelHint.title":"跟蹤 Copilot Token 使用情況","limits.copilot.otelHint.body":"限額資訊通過你的 GitHub OAuth 令牌讀取。如果還想記錄逐 Token 用量,請啟用 Copilot 的 OpenTelemetry 匯出,把下面這段加到你的 shell 配置檔案(~/.zshrc 或 ~/.bashrc):","limits.copilot.otelHint.copy":"複製","limits.copilot.otelHint.copied":"已複製","limits.panel.title":"使用限制","limits.label.cursor_plan":"套餐","limits.label.cursor_auto":"自動","limits.label.cursor_api":"API","limits.label.kiro_month":"月度","limits.label.kiro_bonus":"獎勵","limits.label.kimi_weekly":"周","limits.label.kimi_5h":"5h","limits.label.kimi_total":"總量","limits.label.kimi_parallel":"併發:{{count}}","limits.label.copilot_premium":"高階","limits.label.copilot_chat":"對話","limits.status.not_connected":"未連線","limits.status.no_data":"未返回即時限額資料","limits.status.all_hidden":"所有限額提供商都已隱藏。請開啟顯示設定重新顯示。","nav.usage":"用量","nav.limits":"限額","nav.widgets":"小元件","nav.skills":"Skills","nav.leaderboard":"排行榜","nav.collapse":"摺疊側邊欄","nav.expand":"展開側邊欄","nav.menu":"開啟導航選單","nav.close_menu":"關閉導航選單","nav.aside_label":"主導航","nav.nav_label":"導航","limits.page.subtitle":"AI 工具的速率限制和配額使用情況。","limits.settings.toggle_visible":"切換可見性","limits.page.openSettings":"顯示設定","nav.group.general":"常規","nav.group.tools":"工具","nav.group.account":"賬戶","nav.settings":"設定","header.auth.open_settings":"開啟設定","settings.page.title":"設定","settings.page.subtitle":"管理你的賬戶、外觀和顯示偏好。","settings.section.appearance":"外觀","settings.section.account":"賬戶","settings.section.limits":"限制顯示","settings.appearance.theme.label":"主題","settings.appearance.theme.hint":"選擇 Token Tracker 在儀表盤中的顯示方式。","settings.appearance.theme.light":"淺色","settings.appearance.theme.dark":"深色","settings.appearance.theme.system":"系統","settings.account.displayName":"顯示名稱","settings.account.edit":"編輯","settings.account.save":"儲存","settings.account.saving":"儲存...","settings.account.cancel":"取消","settings.account.userId":"使用者 ID","settings.account.copyUserId":"複製使用者 ID","settings.account.copy":"複製","settings.account.copied":"已複製","settings.account.cloudSync":"雲同步","settings.account.cloudSyncHint":"將本地用量上傳到你的 Token Tracker 雲端賬號。","settings.account.publicProfile":"公開主頁","settings.account.publicProfileHint":"在公開排行榜中展示你的用量。","settings.account.displayNameAnonymousHint":"匿名狀態下,排行榜會隱藏你的名字和頭像","settings.account.displayNameDisabledWhileAnon":"請先關閉匿名,再編輯名字","settings.account.githubUrl":"GitHub 主頁","settings.account.githubUrlHint":"在排行榜名字旁顯示 GitHub 連結。","settings.account.githubUrlPlaceholder":"使用者名稱或 https://github.com/使用者名稱","settings.account.githubUrlInvalid":"請輸入 GitHub 使用者名稱,或 https://github.com/使用者名稱","leaderboard.github.aria":"開啟 GitHub 主頁","leaderboard.github.tooltipAction":"點選檢視 GitHub 主頁","leaderboard.github.tooltipPrefix":"可在","leaderboard.github.tooltipSettingsLink":"設定","leaderboard.github.tooltipSuffix":"中配置你的主頁","settings.account.signOut":"退出登入","settings.account.signIn":"登入","settings.account.signedOutHint":"登入後可管理雲同步和排行榜偏好。","settings.section.menubar":"選單欄應用","settings.menubar.showStats":"在選單欄中顯示統計資訊","settings.menubar.showStatsHint":"在選單欄圖示旁邊顯示今天的Token 數量和成本。","settings.menubar.animatedIcon":"動畫圖示","settings.menubar.animatedIconHint":"閃爍 Clawd 角色並在選單欄中播放同步動畫。","settings.menubar.launchAtLogin":"登入時啟動","settings.menubar.launchAtLoginHint":"登入 macOS 時自動啟動 TokenTrackerBar。","settings.menubar.syncNow":"立即同步","settings.menubar.syncNowHint":"觸發本地AI工具日誌立即解析並上傳。","settings.menubar.syncing":"正在同步...","settings.menubar.updates":"更新","settings.menubar.checkUpdates":"檢查更新","settings.footer.statusPage":"系統狀態","menubar.slot.primary":"第一個位置","menubar.slot.secondary":"第二個位置","menubar.native_only":"開啟 macOS 版 TokenTrackerBar 後可編輯選單欄顯示。","menubar.metric.today_tokens":"今日 Token","menubar.metric.today_cost":"今日成本","menubar.metric.last_7d_tokens":"近 7 天 Token","menubar.metric.total_tokens":"總 Token","menubar.metric.total_cost":"總成本","menubar.metric.claude_5h":"Claude 5 小時限額","menubar.metric.claude_7d":"Claude 7 天限額","menubar.metric.codex_5h":"Codex 5 小時限額","menubar.metric.codex_7d":"Codex 7 天限額","nav.ip_check":"Claude IP 檢查","skills.page.title":"Skills","skills.tab.my":"我的","skills.tab.browse":"發現","skills.action.refresh":"重新整理","skills.action.install":"安裝","skills.action.choose_targets":"選擇目標","skills.target.menu_label":"安裝到","skills.target.none":"未選目標","skills.toast.installed":"已把 {{name}} 安裝到 {{targets}}。","skills.action.remove":"移除","skills.action.search":"搜尋","skills.action.search_aria":"搜尋 skills","skills.target.synced_summary":"已同步到 {{targets}}","skills.target.synced_none":"尚未同步到任何 agent","skills.row.open_details":"檢視 {{name}} 詳情","skills.detail.close":"關閉詳情","skills.detail.sync_section_title":"同步到","skills.detail.remove_button":"從所有 agent 移除","skills.detail.remove_confirm_hint":"這會從每個 agent 取消同步並刪除本地副本。","skills.filter.agent_label":"Agent","skills.filter.agent_all":"全部 agent","skills.filter.clear":"清除篩選","skills.filter.result_count":"{{filtered}} / {{total}} 個 skill","skills.filter.result_count_browse":"{{count}} 個結果","skills.empty.no_match":"當前篩選下沒有匹配的 skill。","hint.dismiss":"關閉提示","hint.dismissible_aria":"可關閉的提示","skills.card.installed":"已安裝","skills.card.targets_prefix":"將安裝到:","skills.card.targets_change":"更改","skills.card.installs":"{{count}} 次安裝","skills.source.label":"來源","skills.source.all":"全部倉庫","skills.mode.repo":"倉庫","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"在已啟用的倉庫裡搜尋…","skills.browse.placeholder_repo":"在 {{repo}} 中搜索…","skills.browse.placeholder_skillssh":"在 skills.sh 倉庫中搜索…","skills.browse.empty_sources":"新增一個 GitHub 倉庫以開始瀏覽技能。","skills.browse.add_repo_hint":"想要更多 skill?新增一個 GitHub 倉庫。","skills.browse.manage_sources":"管理來源","skills.browse.hint_skillssh":"至少輸入 2 個字元以搜尋 skills.sh。","skills.browse.loading_hint":"正在從 GitHub 拉取 skill 資訊,首次載入可能需要一分鐘,結果會快取。","skills.error.generic":"Skill 操作失敗。","skills.confirm.remove_title":"要移除 {{name}} 嗎?","skills.confirm.remove_managed":"這個 skill 將從所有已連線的 AI 工具中移除,幾秒內可以撤銷。","skills.confirm.remove_local":"將從所有 AI 工具目錄中刪除該 skill 資料夾。此操作無法撤銷。","skills.toast.removed":"已移除 {{name}}。","shared.action.undo":"撤銷","shared.action.cancel":"取消","skills.empty.my":"還沒有 skill。去「發現」搜尋或安裝。","skills.empty.my_cta":"去發現","skills.empty.browse":"這個來源下沒有找到技能。","skills.empty.search":"沒有結果,換個關鍵詞試試。","skills.repo.placeholder":"owner/repository","skills.repo.add":"新增倉庫","skills.repo.invalid":"請輸入 owner/repository 或 GitHub 倉庫 URL。","skills.repo.remove":"移除倉庫","settings.appearance.language.label":"語言","settings.appearance.language.hint":"使用“系統”時會預設跟隨本機語言。","settings.appearance.language.system":"系統","settings.appearance.language.english":"英語","settings.appearance.language.chinese":"簡體中文","settings.appearance.language.traditional_chinese":"繁體中文","settings.appearance.language.japanese":"日語","settings.appearance.language.korean":"韓語","settings.appearance.currency.label":"貨幣","settings.appearance.currency.hint":"選擇用量成本的顯示幣種。","settings.appearance.currency.opt.usd":"美元 ($)","settings.appearance.currency.opt.eur":"歐元 (€)","settings.appearance.currency.opt.gbp":"英鎊 (£)","settings.appearance.currency.opt.cny":"人民幣 (¥)","settings.appearance.currency.opt.jpy":"日元 (¥)","settings.appearance.currency.opt.hkd":"港幣 (HK$)","settings.appearance.currency.rate_source.default":"內建預設匯率","settings.appearance.currency.rate_source.fetched":"資料來源:open.er-api.com","settings.appearance.currency.rate_updated":"更新於 {{when}}","settings.appearance.currency.rate_never":"尚未重新整理"},VL={"usage.overview.antigravity_notice_title":"Token 為估算值","usage.overview.antigravity_notice_body":"Antigravity 的本地日誌沒有真實用量欄位,這裡的數字是按字元長度(約 4 字元/Token)估算出來的,也沒有扣除 Gemini 的 prompt cache 折扣。請把它當作上限估算,不要直接對賬賬單。","stats.period.today":"今日","stats.period.week":"本週","stats.period.month":"本月","stats.period.all":"全部","stats.period.convs":"對話","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"摺疊模型分解","dashboard.core_index.expand_aria":"展開模型細分","dashboard.rolling.title":"最近的活動","dashboard.rolling.last_7d":"過去 7 天","dashboard.rolling.last_30d":"過去 30 天","dashboard.rolling.avg_active_day":"日平均","dashboard.projects.title":"專案用量","dashboard.projects.tokens_label":"Token","dashboard.projects.stars_label":"星標","dashboard.projects.limit_label":"展示","dashboard.projects.limit_aria":"選擇倉庫顯示數量","dashboard.projects.limit_top_3":"前 3 名","dashboard.projects.limit_top_6":"前 6 名","dashboard.projects.limit_top_10":"前 10 名","dashboard.projects.empty":"沒有公開倉庫","dashboard.widgets.title":"桌面小元件","dashboard.widgets.hint":"右鍵點按桌面 → 編輯小元件 → 搜尋“TokenTracker”","dashboard.widgets.dismiss_aria":"關閉小元件介紹","dashboard.cost_breakdown.title":"成本明細","dashboard.cost_breakdown.total_label":"預計總成本","dashboard.cost_breakdown.close":"關閉","trend.monitor.label":"使用趨勢","heatmap.title":"熱力圖","heatmap.empty":"尚無活動資料。","heatmap.legend.less":"少","heatmap.legend.more":"多","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"Token","heatmap.month.jan":"1月","heatmap.month.feb":"2月","heatmap.month.mar":"3月","heatmap.month.apr":"4月","heatmap.month.may":"5月","heatmap.month.jun":"6月","heatmap.month.jul":"7月","heatmap.month.aug":"8月","heatmap.month.sep":"9月","heatmap.month.oct":"10月","heatmap.month.nov":"11月","heatmap.month.dec":"12月","heatmap.day.sun":"日","heatmap.day.mon":"一","heatmap.day.tue":"二","heatmap.day.wed":"三","heatmap.day.thu":"四","heatmap.day.fri":"五","heatmap.day.sat":"六","dashboard.session_expired.copy_label":"執行 npx --yes tokentracker-cli init","dashboard.session_expired.copied":"已複製","dashboard.install.prompt":"安裝 Node.js 18+ 然後執行:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"複製安裝命令","dashboard.install.copy_base":"複製初始化命令","dashboard.install.copied":"已複製到剪貼簿","dashboard.install.link_code.loading":"正在生成專屬程式碼...","dashboard.install.link_code.failed":"專屬程式碼不可用","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"每日細目","dashboard.daily.empty":"還沒有資料。先使用 AI CLI,再執行 {{cmd}}。","dashboard.identity.title":"你的個人資料","dashboard.identity.subtitle":"記錄你的編碼之旅","dashboard.identity.fallback":"匿名使用者","dashboard.screenshot.title_line1":"AI 程式設計助手","dashboard.screenshot.title_line2":"2025 年度回顧","dashboard.screenshot.twitter_button":"分享到 X","dashboard.screenshot.twitter_label":"分享到 X","dashboard.screenshot.twitter_hint":"自動將影像複製到剪貼簿","dashboard.screenshot.twitter_text":"記錄中的 {{total_tokens}} Token。\\n{{model_name}} 以 {{model_percent}}% 領先。\\n\\n我的 AI 使用情況,未經審計 →\\ntokentracker.cc","heatmap.3d.hover_tip":"點選進入 3D 全屏旋轉分析模式","heatmap.3d.modal.title":"Token 三維透視","heatmap.3d.modal.desc":"按住左鍵拖拽可任意旋轉,懸浮感知每日活躍資料與多維統計。","heatmap.3d.modal.stats.total_tokens":"年度 Token 總量","heatmap.3d.modal.stats.precision_total_tokens":"精準年消耗量","heatmap.3d.modal.stats.estimated_cost":"年度估算費用","heatmap.3d.modal.stats.active_rate_days":"活躍佔比 / 天數","heatmap.3d.modal.stats.max_streak":"最長連續活躍","heatmap.3d.modal.stats.days_suffix":"天","heatmap.3d.modal.stats.peak_day":"單日峰值暴擊","heatmap.3d.modal.stats.precision_peak_value":"精確單日峰值","heatmap.3d.modal.stats.no_data":"無資料","heatmap.3d.modal.legend.title":"活躍度層級","heatmap.3d.modal.palette.emerald":"翡翠之城","heatmap.3d.modal.palette.ocean":"深海浩瀚","heatmap.3d.modal.palette.neon":"賽博霓虹","heatmap.3d.modal.palette.amber":"烈焰餘暉","heatmap.3d.modal.control.play":"啟動慢速自轉","heatmap.3d.modal.control.pause":"暫停自動旋轉","heatmap.3d.modal.control.reset":"重置 3D 視角","heatmap.3d.modal.footer.tip":"雙指縮放 / 滾輪縮放 / 滑鼠拖拽旋轉 3D 圖表","heatmap.3d.modal.ai.title.default":"持之以恆的行者","heatmap.3d.modal.ai.eval.default":"在技術的長河中持之以恆。也許日常的編碼並不總是波瀾壯闊,但每一個微小的活躍點都在記錄著您的思考與探索。星火成留,終將匯聚成屬於您的數字海洋。","heatmap.3d.modal.ai.title.peak":"極限活躍級貢獻者","heatmap.3d.modal.ai.eval.peak":"這一年中,您的 Token 產出表現出極高的工程密度。如此規模的開發量相當於深度參與了中大型系統底座的重構,每一次擊鍵都在將複雜的邏輯收斂為確定性的程式碼。這是極度專注與純粹工程熱愛的最好印證。","heatmap.3d.modal.ai.title.heavy":"高頻產出級開發者","heatmap.3d.modal.ai.eval.heavy":"卓越的持續輸出。您的 Token 累積量已達數百萬字,相當於數十部中篇技術鉅著的體量。高飽和度的編碼節奏表明您正在以極高的執行力構建屬於您的數字資產,展現了卓越的創造力。","heatmap.3d.modal.ai.title.core":"核心生產力專家","heatmap.3d.modal.ai.eval.core":"極具韌性的長期投入。在過去的一年中,您在較長週期內穩定保持著高強度的開發節奏。您用紮實的程式碼行數與 Token 產出,默默築起了專案的核心架構,是當之無愧的工程支柱。","heatmap.3d.modal.ai.title.steady":"穩健成長型工程師","heatmap.3d.modal.ai.eval.steady":"踏實而堅定的技術積累。每一次 Token 的遞增,都是您在堅實地砌下通往未來的程式碼基石。這種細水長流的穩健節奏,往往是一個優秀開發者通往工程大師的必經之路。","heatmap.3d.voxel.joke.1":"🔥 極度瘋狂!產出 {{value}} tokens!你是在瘋狂訓練大模型,還是手擼了一個編譯器?","heatmap.3d.voxel.joke.2":"🚀 史詩級輸出!共 {{value}} tokens。今日產出可繞地球一圈,AI 都在為你驚歎!","heatmap.3d.voxel.joke.3":"⚡ 爆擊日!{{value}} tokens。程式碼如泉湧,鍵盤已經開始冒煙了!","heatmap.3d.voxel.level3":"⚡ 生產力大爆發({{value}} tokens)!高效專注的黃金時刻,繼續保持這個巔峰狀態!","heatmap.3d.voxel.level2":"🌱 漸入佳境({{value}} tokens)!穩步產出,每一次敲擊鍵盤都是在為大廈添磚加瓦。","heatmap.3d.voxel.level1":"🍃 聚沙成塔({{value}} tokens)。微小的提交也是對未來的投資,保持複利的力量!","heatmap.3d.voxel.level0":"💤 養精蓄銳。在不寫程式碼的日子裡,靈感也在悄悄生長。","ipcheck.page.title":"Claude IP 檢測","ipcheck.page.subtitle":"檢視當前訪問 Claude 的出口 IP、純淨度、地理與風險訊號,識別可能影響登入或觸發風控的因素。","ipcheck.mask.toggle":"隱藏 IP","ipcheck.ipv6.warn":"當前為 IPv6 環境,不建議用 IPv6 訪問 Claude Code,部分檢測結果可能不完整。","ipcheck.ip.cn":"中國出口 IPv4","ipcheck.ip.cloudflare":"Cloudflare 出口","ipcheck.ip.claude":"Claude 出口","ipcheck.ip.failed":"獲取失敗","ipcheck.ip.loading":"載入中...","ipcheck.trust.title":"信任評分","ipcheck.trust.subtitle":"Claude 風控視角下的 IP 純淨度","ipcheck.trust.no_data":"無資料","ipcheck.trust.no_ip":"未獲取到 Claude 出口 IP,無法評分","ipcheck.trust.no_score":"該 IP 暫無評分資料","ipcheck.trust.gauge.low":"0 高危","ipcheck.trust.gauge.high":"100 可信","ipcheck.trust.label.pristine":"極度純淨","ipcheck.trust.label.clean":"純淨","ipcheck.trust.label.good":"良好","ipcheck.trust.label.neutral":"中性","ipcheck.trust.label.suspicious":"可疑","ipcheck.trust.label.unreachable":"不可訪問","ipcheck.trust.text.excellent":"該 IP 信譽極好","ipcheck.trust.text.great":"該 IP 信譽優異","ipcheck.trust.text.minor":"該 IP 存在輕微風險","ipcheck.trust.text.moderate":"該 IP 存在一定風險","ipcheck.trust.text.severe":"該 IP 風險極高","ipcheck.trust.text.restricted":"處於不可訪問區域,Claude 會嚴格風控","ipcheck.trust.region_warn.title":"Claude 出口 IP 位於 {{region}}","ipcheck.trust.region_warn.body":"不建議登入 Claude,容易觸發封號風控。","ipcheck.trust.region_support":"Claude 支援地區","ipcheck.trust.region.accessible":"可訪問","ipcheck.common.unknown":"未知","ipcheck.props.title":"IP 屬性","ipcheck.props.region":"地區","ipcheck.props.city":"城市","ipcheck.props.type":"型別","ipcheck.props.asn":"ASN","ipcheck.props.org":"運營商","ipcheck.props.residential":"家庭住宅","ipcheck.props.datacenter":"機房","ipcheck.security.title":"安全檢測","ipcheck.security.vpn":"VPN","ipcheck.security.proxy":"代理 (Proxy)","ipcheck.security.tor":"Tor","ipcheck.security.crawler":"機器人 (Crawler)","ipcheck.security.abuser":"濫用記錄","ipcheck.security.proxy_flag":"代理","ipcheck.security.crawler_yes":"是","ipcheck.security.crawler_no":"否","ipcheck.security.abuser_yes":"有記錄","ipcheck.security.abuser_no":"無記錄","ipcheck.security.clean":"未檢測到","ipcheck.avail.title":"Claude 可用性","ipcheck.avail.tooltip":"Claude 伺服器在美國,從亞洲訪問延遲超過 100ms 屬於正常情況。","ipcheck.avail.refresh":"重新整理","ipcheck.avail.svc_row":"服務狀態","ipcheck.avail.latency.normal":"正常","ipcheck.avail.latency.good":"良好","ipcheck.avail.latency.slow":"較慢","ipcheck.avail.latency.unreachable":"不可訪問","ipcheck.avail.svc.none":"全部正常","ipcheck.avail.svc.minor":"輕微故障","ipcheck.avail.svc.major":"重大故障","ipcheck.avail.svc.critical":"嚴重故障","ipcheck.avail.svc.maintenance":"維護中","ipcheck.avail.svc.other":"服務異常","ipcheck.dns.title":"DNS 洩露檢測","ipcheck.dns.status":"狀態","ipcheck.dns.outlet":"DNS 出口","ipcheck.dns.outlet_ip":"DNS 出口 IP","ipcheck.dns.isp":"服務商","ipcheck.dns.leaked":"可能洩露","ipcheck.dns.no_leak":"未檢測到洩露","ipcheck.dns.encrypted":"DNS 加密或未暴露","ipcheck.dns.cn_tag":"中國 DNS","ipcheck.udp.title":"WebRTC UDP 洩露","ipcheck.udp.status":"狀態","ipcheck.udp.outlet":"UDP 出口","ipcheck.udp.outlet_ip":"UDP 出口 IP","ipcheck.udp.origin":"歸屬地","ipcheck.udp.disabled":"WebRTC 已停用","ipcheck.udp.no_leak":"未檢測到洩露","ipcheck.udp.leaked":"可能洩露","ipcheck.udp.anomaly":"異常","ipcheck.device.title":"裝置資訊","ipcheck.device.tz":"時區","ipcheck.device.lang":"語言","ipcheck.device.os":"作業系統 / 瀏覽器","ipcheck.device.touch":"觸屏","ipcheck.device.net":"網路型別","ipcheck.device.dnt":"Do Not Track","ipcheck.device.webgl_render":"WebGL 渲染器","ipcheck.device.canvas_fp":"Canvas 指紋","ipcheck.device.webgl_fp":"WebGL 指紋","ipcheck.device.match":"一致","ipcheck.device.mismatch":"不一致","ipcheck.device.local":"本地","ipcheck.device.estimate_suffix":"(估算)","ipcheck.device.diff_equal":"偏移略有差異","ipcheck.device.diff_ahead":"Claude 快 {{h}} 小時","ipcheck.device.diff_behind":"Claude 慢 {{h}} 小時","ipcheck.device.lang_expected":"Claude 出口常用","ipcheck.device.touch_yes":"是","ipcheck.device.touch_no":"否","ipcheck.device.dnt_on":"已開啟","ipcheck.device.dnt_off":"已關閉","ipcheck.device.dnt_unset":"未設定","ipcheck.device.net_unsupported":"不支援檢測","ipcheck.device.unsupported":"不支援","ipcheck.history.title":"Claude 出口 IP 歷史","ipcheck.history.subtitle":"僅本地儲存於瀏覽器,最多保留 6 條","ipcheck.history.clear":"清除","ipcheck.history.empty":"暫無歷史記錄","ipcheck.history.current":"當前","ipcheck.region.CN":"中國大陸","ipcheck.region.HK":"香港","ipcheck.region.MO":"澳門","ipcheck.region.RU":"俄羅斯","ipcheck.region.KP":"朝鮮","ipcheck.region.IR":"伊朗","ipcheck.region.SY":"敘利亞","ipcheck.region.CU":"古巴","ipcheck.region.BY":"白俄羅斯","ipcheck.region.VE":"委內瑞拉","leaderboard.profile_modal.close":"關閉","leaderboard.profile_modal.loading":"正在載入使用者資料…","leaderboard.profile_modal.error":"載入使用者資料失敗。","leaderboard.profile_modal.empty":"這個使用者的資料未公開。","leaderboard.profile_modal.row_aria":"檢視 {{name}} 的資料","leaderboard.profile_modal.rank":"#{{rank}}","leaderboard.profile.hero.rank_label":"排名","leaderboard.profile_modal.hero.total_tokens":"總 Token","leaderboard.profile_modal.hero.total_cost":"總花費","leaderboard.profile_modal.hero.github":"GitHub 主頁","leaderboard.profile_modal.stat.total_cost":"總花費","leaderboard.profile_modal.stat.total_tokens":"總 Token","leaderboard.profile_modal.stat.active_days":"活躍天數","leaderboard.profile_modal.stat.avg_per_day":"日均花費","leaderboard.profile_modal.streak.current":"當前連續","leaderboard.profile_modal.streak.longest":"最長連續","leaderboard.profile_modal.streak.days":"{{count}} 天","leaderboard.profile_modal.best_day.title":"最佳日","leaderboard.profile_modal.best_day.none":"—","leaderboard.profile_modal.models.count":"使用了 {{count}} 個模型","leaderboard.profile_modal.models.favorite":"最愛模型","leaderboard.profile_modal.models.none":"暫無模型記錄","leaderboard.profile_modal.heatmap.title":"活躍度(最近 365 天)","leaderboard.profile_modal.providers.title":"按 Provider 分佈","leaderboard.profile_modal.providers.none":"本週期無使用資料。","leaderboard.profile_modal.view_full":"檢視完整主頁","local_only.title":"請在客戶端內使用","local_only.body":"這個頁面讀取的是你本機上的資料,所以只能在 Mac app 或命令列 dashboard 裡檢視。","local_only.open_app":"在 Mac app 內開啟","local_only.download":"下載 Mac app"},zL={"landing.handle.default":"VIBE_USER","landing.handle.special":"伏特","landing.screenshot.alt":"TokenTracker 儀表板截圖","landing.nav.login":"登入","landing.nav.signup":"註冊","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"複製命令","landing.install.action.copied":"已複製","landing.meta.title":"Token Tracker —— AI Coding CLI 的 Token 用量追蹤器","landing.meta.description":"自動監控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地優先、注重隱私、零配置。","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/og-image.jpg","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker 分享","share.meta.description":"分享你的 Token Tracker 儀表板快照,包含跨模型、專案和時間視窗的用量洞察。","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/share-dashboard.jpg","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.handle.placeholder":"試試 “{{handle}}”","landing.rank.expectation":"預期排名:{{rank}}","landing.rank.singularity":"登頂","landing.rank.unranked":"未上榜","landing.cta.primary":"進入儀表板","landing.cta.secondary":"檢視 GitHub 原始碼","landing.v2.hero.title_line1":"追蹤你所有的","landing.v2.hero.title_line2":"AI Token","landing.v2.install.mac_cta":"Mac 應用 (DMG)","landing.v2.models.title":"支援的 AI CLI 工具","landing.v2.compare.kicker":"無縫追蹤","landing.v2.compare.title":"別再瞎猜你的 AI 用量。","landing.v2.compare.subtitle":"AI CLI 把用量資料藏在零散的本地檔案裡。TokenTracker 把它們即時聚合到一個清晰的儀表板裡。","landing.v2.distill.body":"100% 本地處理,不上傳任何 prompt 或程式碼。","landing.v2.compare.with.title":"用 Token Tracker","landing.v2.compare.with.p1":"集中式用量儀表板","landing.v2.compare.with.p2":"即時 Token 指標","landing.v2.compare.with.p3":"100% 本地,隱私無憂","landing.v2.compare.without.title":"不用","landing.v2.compare.without.p1":"散落的 JSON 日誌檔案","landing.v2.compare.without.p2":"對 Token 消耗一無所知","landing.v2.compare.without.p3":"突如其來的 API 賬單","landing.v2.footer.line":"Token Tracker —— 開發者打造,服務開發者。","landing.v2.nav.status":"狀態","landing.v2.nav.github":"GitHub","landing.v2.models.agent.codex":"Codex","landing.v2.models.agent.claude_code":"Claude Code","landing.v2.models.agent.cursor":"Cursor","landing.v2.models.agent.gemini":"Gemini","landing.v2.models.agent.opencode":"OpenCode","landing.v2.models.agent.openclaw":"OpenClaw","landing.v2.cta.primary":"Dashboard","landing.v2.hero.subtagline":"自動監控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地優先、注重隱私、零配置。","leaderboard.profile.nav.back":"排行榜","leaderboard.title":"排行榜","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"全部時間","leaderboard.generated_at":"更新於 {{ts}}","leaderboard.period.week":"周","leaderboard.period.month":"月","leaderboard.period.total":"全部","leaderboard.me_label":"你","leaderboard.anon_label":"匿名","leaderboard.error.unknown":"未知錯誤","leaderboard.loading":"載入中…","leaderboard.empty":"暫無資料","leaderboard.column.rank":"排名","leaderboard.column.user":"使用者","leaderboard.column.total":"總計","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"Copilot","leaderboard.column.kimi":"Kimi","leaderboard.column.supplemental":"其他","leaderboard.column.est_cost":"預估花費","leaderboard.signin_prompt":"登入後即可上榜","leaderboard.signin_button":"登入","leaderboard.sync_prompt":"開啟雲同步即可參與排名","leaderboard.sync_button.idle":"開啟並同步","leaderboard.sync_button.busy":"同步中…","leaderboard.pagination.page_size_label":"每頁顯示","leaderboard.pagination.prev":"上一頁","leaderboard.pagination.next":"下一頁","leaderboard.pagination.ellipsis":"……","leaderboard.pagination.page_unknown":"第 {{page}} 頁","share.modal.title":"分享你的資料","share.modal.subtitle":"生成海報卡片,隨處分享。","share.modal.close":"關閉","share.modal.action.x":"分享到 X","share.modal.action.download":"下載","share.modal.action.copy":"複製圖片","share.modal.hint.x":"把圖片貼上到推文裡","share.modal.hint.copy":"到剪貼簿","share.modal.name_label":"顯示名稱","share.modal.name_placeholder":"輸入你的名字","share.modal.style_label":"樣式","share.modal.footer":"資料始終保留在本地——圖片在你的瀏覽器內生成,絕不上傳。","share.button.label":"分享","share.button.aria":"開啟分享卡片","share.toast.copied":"圖片已複製到剪貼簿","share.toast.downloaded":"圖片已儲存","share.toast.failed":"圖片生成失敗","share.toast.working":"生成中…","share.variant.neon":"霓虹","share.variant.broadsheet":"特刊","share.date.month_year":"{{year}} 年 {{month}}","share.issue.all_time":"總計","share.month_short.jan":"1 月","share.month_short.feb":"2 月","share.month_short.mar":"3 月","share.month_short.apr":"4 月","share.month_short.may":"5 月","share.month_short.jun":"6 月","share.month_short.jul":"7 月","share.month_short.aug":"8 月","share.month_short.sep":"9 月","share.month_short.oct":"10 月","share.month_short.nov":"11 月","share.month_short.dec":"12 月","share.hook.top_loyal":"{{name}} 佔了 {{percent}}% 的用量。","share.hook.days_record":"共記錄 {{days}} 天。","share.hook.top_led":"{{name}} 領跑,佔比 {{percent}}%。","share.hook.multi_models":"{{days}} 天裡用了 {{count}} 個模型。","share.hook.days_with_model":"{{name}} 陪你跑了 {{days}} 天。","share.hook.new_chapter":"新的記錄,從這裡開始。","share.card.broadsheet.issue":"期號","share.card.broadsheet.by":"分享者","share.card.broadsheet.tracked_since":"追蹤起始","share.card.broadsheet.total_tokens":"總 Token 數","share.card.broadsheet.estimated_spend":"預估花費","share.card.broadsheet.billable_days":"{{days}} 個活躍日","share.card.broadsheet.heatmap_title":"年度熱圖","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}} 天有記錄","share.card.broadsheet.roster_title":"模型榜","share.card.broadsheet.roster_subtitle":"常用模型輪換","share.card.broadsheet.empty":"這一週很安靜,還沒有模型資料。","share.card.broadsheet.global_rank":"全站排名","share.card.broadsheet.active_days":"活躍","share.card.broadsheet.days_count":"{{days}} 天","share.card.broadsheet.track_yours":"追蹤你自己的","share.card.annual.report_title":"用量報告","share.card.annual.less":"少","share.card.annual.more":"多","share.card.annual.heatmap_title":"Token 熱圖","share.card.annual.total_tokens":"總 Token 數","share.card.annual.estimated_cost":"預估成本","share.card.annual.longest_streak":"最長連擊","share.card.annual.days_count":"{{days}} 天","share.card.annual.top_model":"熱門模型"},HL={"header.auth.sign_in_aria":"ログイン","login.back_home":"ホームに戻る","login.cloud_only":"クラウドログインが設定されていません。localhost のローカルダッシュボードをご利用ください。","login.title":"ログイン","login.subtitle":"メールまたは連携済みアカウントを選択してください。","login.dismiss":"閉じる","login.verify_email_success":"メールアドレスが確認されました。ログインできます。","login.verify_email_pending":"ログインの前に、メールでの確認を完了してください。","login.oauth.continue":"{{provider}} で続ける","login.divider":"または","login.tab.sign_in":"ログイン","login.tab.sign_up":"アカウント作成","login.field.name":"表示名","login.field.name_placeholder":"任意","login.field.email":"メールアドレス","login.field.password":"パスワード","login.password_hint":"{{min}} 文字以上。","login.submit.sign_in":"メールでログイン","login.submit.sign_up":"アカウントを作成","auth.callback.processing":"処理中…","auth.callback.success":"ログインに成功しました","auth.callback.redirecting":"TokenTracker に戻っています…","auth.callback.failed":"ログインが完了しませんでした。もう一度お試しください。","auth.callback.close":"このページを閉じる","login_modal.subtitle":"ログインしてリーダーボードに参加","login_modal.continue_email":"メールで続ける","login_modal.divider_email":"メール","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"M","shared.unit.billion_abbrev":"B","shared.data_source":"データソース:{{source}}","shared.error.prefix":"エラー:{{error}}","shared.status.unsynced":"—","shared.time.now":"たった今","error.boundary.title":"問題が発生しました","error.boundary.subtitle":"このビューのレンダリングに失敗しました","error.boundary.hint":"コンソールを開いてから、ページを再読み込みしてください","error.boundary.no_details":"エラーの詳細はありません","error.boundary.action.reload":"再読み込み","identity_card.rank_label":"ランク","identity_card.streak_label":"アクティブ日数","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}} 日","usage.summary.total":"トークン合計","usage.period.day":"日","usage.period.week":"週","usage.period.month":"月","usage.period.total":"合計","usage.period.custom":"カスタム","usage.metric.total":"合計","usage.metric.input":"入力","usage.metric.output":"出力","usage.metric.cached_input":"キャッシュ入力","usage.metric.reasoning_output":"推論出力","usage.button.refresh":"更新","usage.overview.tablist_aria":"期間","usage.overview.cost_breakdown_aria":"コスト内訳を表示","usage.overview.distribution_aria":"ソース別割合:{{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}:{{percent}}%、{{tokens}} トークン、{{cost}}。クリックして{{action}}詳細","usage.overview.expand":"展開","usage.overview.collapse":"折りたたむ","usage.overview.model_count":"{{count}} 個のモデル","usage.overview.model_details_aria":"{{provider}} のモデル詳細","widgets.page.title":"ウィジェット","widgets.cta.open_gallery":"ウィジェットギャラリーを開く","widgets.cta.download":"Mac アプリをダウンロード","widgets.cta.macos_only":"macOS 限定","widgets.menubar.section.title":"メニューバー","widgets.gallery.section.title":"デスクトップウィジェット","widgets.summary.name":"使用状況の概要","widgets.summary.description":"今日と直近 7 日間の使用状況、コンパクトなトレンドライン付き。","widgets.heatmap.name":"ヒートマップ","widgets.heatmap.description":"GitHub のように、アクティブな日とそうでない日をひと目で把握。","widgets.topModels.name":"人気モデル","widgets.topModels.description":"よく使うモデルを、トークン割合順に表示。","widgets.limits.name":"使用制限","widgets.limits.description":"Claude、Codex、Cursor、Gemini などのリアルタイムなレート制限の進捗。","daily.sort.date.label":"日付","daily.sort.date.title":"日付で並べ替え","daily.sort.total.label":"合計","daily.sort.total.title":"合計で並べ替え","daily.sort.input.label":"入力","daily.sort.input.title":"入力で並べ替え","daily.sort.output.label":"出力","daily.sort.output.title":"出力で並べ替え","daily.sort.cached.label":"キャッシュ","daily.sort.cached.title":"キャッシュ入力で並べ替え","daily.sort.reasoning.label":"推論","daily.sort.reasoning.title":"推論出力で並べ替え","daily.sort.conversations.label":"会話数","daily.sort.conversations.title":"会話数で並べ替え","details.pagination.prev":"前のページ","details.pagination.next":"次のページ","limits.copilot.otelHint.title":"Copilot のトークン使用状況を追跡","limits.copilot.otelHint.body":"制限情報は GitHub OAuth トークン経由で読み取られます。トークン単位の使用量も記録したい場合は、Copilot の OpenTelemetry エクスポートを有効にし、次の内容をシェルの設定ファイル(~/.zshrc または ~/.bashrc)に追加してください:","limits.copilot.otelHint.copy":"コピー","limits.copilot.otelHint.copied":"コピーしました","limits.panel.title":"使用制限","limits.label.cursor_plan":"プラン","limits.label.cursor_auto":"自動","limits.label.cursor_api":"API","limits.label.kiro_month":"月間","limits.label.kiro_bonus":"ボーナス","limits.label.kimi_weekly":"週","limits.label.kimi_5h":"5h","limits.label.kimi_total":"総量","limits.label.kimi_parallel":"並列:{{count}}","limits.label.copilot_premium":"プレミアム","limits.label.copilot_chat":"チャット","limits.status.not_connected":"未接続","limits.status.no_data":"リアルタイムの制限データが返されませんでした","limits.status.all_hidden":"すべての制限プロバイダーが非表示になっています。表示設定を開いて再表示してください。","nav.usage":"使用状況","nav.limits":"制限","nav.widgets":"ウィジェット","nav.skills":"Skills","nav.leaderboard":"リーダーボード","nav.collapse":"サイドバーを折りたたむ","nav.expand":"サイドバーを展開","nav.menu":"ナビゲーションメニューを開く","nav.close_menu":"ナビゲーションメニューを閉じる","nav.aside_label":"メインナビゲーション","nav.nav_label":"ナビゲーション","limits.page.subtitle":"AI ツールのレート制限とクォータの使用状況。","limits.settings.toggle_visible":"表示を切り替え","limits.page.openSettings":"表示設定","nav.group.general":"一般","nav.group.tools":"ツール","nav.group.account":"アカウント","nav.settings":"設定","header.auth.open_settings":"設定を開く","settings.page.title":"設定","settings.page.subtitle":"アカウント、外観、表示設定を管理します。","settings.section.appearance":"外観","settings.section.account":"アカウント","settings.section.limits":"制限の表示","settings.appearance.theme.label":"テーマ","settings.appearance.theme.hint":"Token Tracker のダッシュボードでの表示方法を選択します。","settings.appearance.theme.light":"ライト","settings.appearance.theme.dark":"ダーク","settings.appearance.theme.system":"システム","settings.account.displayName":"表示名","settings.account.edit":"編集","settings.account.save":"保存","settings.account.saving":"保存中...","settings.account.cancel":"キャンセル","settings.account.userId":"ユーザー ID","settings.account.copyUserId":"ユーザー ID をコピー","settings.account.copy":"コピー","settings.account.copied":"コピーしました","settings.account.cloudSync":"クラウド同期","settings.account.cloudSyncHint":"ローカルの使用状況を Token Tracker のクラウドアカウントにアップロードします。","settings.account.publicProfile":"公開プロフィール","settings.account.publicProfileHint":"公開リーダーボードで使用状況を表示します。","settings.account.displayNameAnonymousHint":"匿名の状態では、リーダーボードであなたの名前とアバターが非表示になります","settings.account.displayNameDisabledWhileAnon":"名前を編集する前に、匿名を解除してください","settings.account.githubUrl":"GitHub プロフィール","settings.account.githubUrlHint":"リーダーボードの名前の横に GitHub リンクを表示します。","settings.account.githubUrlPlaceholder":"ユーザー名または https://github.com/ユーザー名","settings.account.githubUrlInvalid":"GitHub のユーザー名、または https://github.com/ユーザー名 を入力してください","leaderboard.github.aria":"GitHub プロフィールを開く","leaderboard.github.tooltipAction":"クリックして GitHub プロフィールを表示","leaderboard.github.tooltipPrefix":"ここに表示するには","leaderboard.github.tooltipSettingsLink":"設定","leaderboard.github.tooltipSuffix":"で設定してください","settings.account.signOut":"ログアウト","settings.account.signIn":"ログイン","settings.account.signedOutHint":"ログインすると、クラウド同期とリーダーボードの設定を管理できます。","settings.section.menubar":"メニューバーアプリ","settings.menubar.showStats":"メニューバーに統計を表示","settings.menubar.showStatsHint":"メニューバーアイコンの横に、今日のトークン数とコストを表示します。","settings.menubar.animatedIcon":"アニメーションアイコン","settings.menubar.animatedIconHint":"Clawd キャラクターを点滅させ、メニューバーで同期アニメーションを再生します。","settings.menubar.launchAtLogin":"ログイン時に起動","settings.menubar.launchAtLoginHint":"macOS へのログイン時に TokenTrackerBar を自動的に起動します。","settings.menubar.syncNow":"今すぐ同期","settings.menubar.syncNowHint":"ローカルの AI ツールログの解析とアップロードをすぐに実行します。","settings.menubar.syncing":"同期中...","settings.menubar.updates":"更新","settings.menubar.checkUpdates":"更新を確認","settings.footer.statusPage":"システムステータス","menubar.slot.primary":"1 番目の位置","menubar.slot.secondary":"2 番目の位置","menubar.native_only":"macOS 版 TokenTrackerBar を開くと、メニューバーの表示を編集できます。","menubar.metric.today_tokens":"今日のトークン","menubar.metric.today_cost":"今日のコスト","menubar.metric.last_7d_tokens":"直近 7 日間のトークン","menubar.metric.total_tokens":"トークン合計","menubar.metric.total_cost":"コスト合計","menubar.metric.claude_5h":"Claude 5 時間制限","menubar.metric.claude_7d":"Claude 7 日間制限","menubar.metric.codex_5h":"Codex 5 時間制限","menubar.metric.codex_7d":"Codex 7 日間制限","nav.ip_check":"Claude IP チェック","skills.page.title":"Skills","skills.tab.my":"マイ","skills.tab.browse":"探す","skills.action.refresh":"更新","skills.action.install":"インストール","skills.action.choose_targets":"対象を選択","skills.target.menu_label":"インストール先","skills.target.none":"対象が未選択","skills.toast.installed":"{{name}} を {{targets}} にインストールしました。","skills.action.remove":"削除","skills.action.search":"検索","skills.action.search_aria":"skills を検索","skills.target.synced_summary":"{{targets}} に同期済み","skills.target.synced_none":"まだどの agent にも同期されていません","skills.row.open_details":"{{name}} の詳細を表示","skills.detail.close":"詳細を閉じる","skills.detail.sync_section_title":"同期先","skills.detail.remove_button":"すべての agent から削除","skills.detail.remove_confirm_hint":"これにより、各 agent から同期解除され、ローカルのコピーも削除されます。","skills.filter.agent_label":"Agent","skills.filter.agent_all":"すべての agent","skills.filter.clear":"フィルターをクリア","skills.filter.result_count":"{{filtered}} / {{total}} 個の skill","skills.filter.result_count_browse":"{{count}} 件の結果","skills.empty.no_match":"現在のフィルターに一致する skill はありません。","hint.dismiss":"ヒントを閉じる","hint.dismissible_aria":"閉じられるヒント","skills.card.installed":"インストール済み","skills.card.targets_prefix":"インストール先:","skills.card.targets_change":"変更","skills.card.installs":"{{count}} 回インストール","skills.source.label":"ソース","skills.source.all":"すべてのリポジトリ","skills.mode.repo":"リポジトリ","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"有効なリポジトリ内を検索…","skills.browse.placeholder_repo":"{{repo}} 内を検索…","skills.browse.placeholder_skillssh":"skills.sh のリポジトリ内を検索…","skills.browse.empty_sources":"GitHub リポジトリを追加して、スキルの閲覧を始めましょう。","skills.browse.add_repo_hint":"もっと skill がほしいですか?GitHub リポジトリを追加してください。","skills.browse.manage_sources":"ソースを管理","skills.browse.hint_skillssh":"skills.sh を検索するには 2 文字以上入力してください。","skills.browse.loading_hint":"GitHub から skill 情報を取得しています。初回の読み込みには 1 分ほどかかる場合があり、結果はキャッシュされます。","skills.error.generic":"Skill の操作に失敗しました。","skills.confirm.remove_title":"{{name}} を削除しますか?","skills.confirm.remove_managed":"この skill は接続済みのすべての AI ツールから削除されます。数秒以内であれば元に戻せます。","skills.confirm.remove_local":"すべての AI ツールのディレクトリから、この skill フォルダを削除します。この操作は元に戻せません。","skills.toast.removed":"{{name}} を削除しました。","shared.action.undo":"元に戻す","shared.action.cancel":"キャンセル","skills.empty.my":"まだ skill がありません。「探す」で検索またはインストールしましょう。","skills.empty.my_cta":"探しに行く","skills.empty.browse":"このソースにはスキルが見つかりませんでした。","skills.empty.search":"結果がありません。別のキーワードでお試しください。","skills.repo.placeholder":"owner/repository","skills.repo.add":"リポジトリを追加","skills.repo.invalid":"owner/repository または GitHub リポジトリの URL を入力してください。","skills.repo.remove":"リポジトリを削除","settings.appearance.language.label":"言語","settings.appearance.language.hint":"「システム」を使用すると、デフォルトで端末の言語に従います。","settings.appearance.language.system":"システム","settings.appearance.language.english":"英語","settings.appearance.language.chinese":"簡体字中国語","settings.appearance.language.traditional_chinese":"繁体字中国語","settings.appearance.language.japanese":"日本語","settings.appearance.language.korean":"韓国語","settings.appearance.currency.label":"通貨","settings.appearance.currency.hint":"使用コストの表示通貨を選択します。","settings.appearance.currency.opt.usd":"米ドル ($)","settings.appearance.currency.opt.eur":"ユーロ (€)","settings.appearance.currency.opt.gbp":"英ポンド (£)","settings.appearance.currency.opt.cny":"人民元 (¥)","settings.appearance.currency.opt.jpy":"日本円 (¥)","settings.appearance.currency.opt.hkd":"香港ドル (HK$)","settings.appearance.currency.rate_source.default":"組み込みのデフォルト為替レート","settings.appearance.currency.rate_source.fetched":"データソース:open.er-api.com","settings.appearance.currency.rate_updated":"{{when}} に更新","settings.appearance.currency.rate_never":"まだ更新されていません"},$L={"usage.overview.antigravity_notice_title":"トークンは推定値です","usage.overview.antigravity_notice_body":"Antigravity のローカルログには実際の使用量フィールドがないため、ここの数値は文字数(約 4 文字/トークン)から推定したもので、Gemini の prompt cache 割引も差し引かれていません。上限の推定値として扱い、請求書との照合には使わないでください。","stats.period.today":"今日","stats.period.week":"今週","stats.period.month":"今月","stats.period.all":"全期間","stats.period.convs":"会話","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"モデルの内訳を折りたたむ","dashboard.core_index.expand_aria":"モデルの内訳を展開","dashboard.rolling.title":"最近のアクティビティ","dashboard.rolling.last_7d":"過去 7 日間","dashboard.rolling.last_30d":"過去 30 日間","dashboard.rolling.avg_active_day":"1 日平均","dashboard.projects.title":"プロジェクトの使用状況","dashboard.projects.tokens_label":"トークン","dashboard.projects.stars_label":"スター","dashboard.projects.limit_label":"表示","dashboard.projects.limit_aria":"表示するリポジトリ数を選択","dashboard.projects.limit_top_3":"上位 3 件","dashboard.projects.limit_top_6":"上位 6 件","dashboard.projects.limit_top_10":"上位 10 件","dashboard.projects.empty":"公開リポジトリはありません","dashboard.widgets.title":"デスクトップウィジェット","dashboard.widgets.hint":"デスクトップを右クリック → ウィジェットを編集 → 「TokenTracker」を検索","dashboard.widgets.dismiss_aria":"ウィジェットの紹介を閉じる","dashboard.cost_breakdown.title":"コスト内訳","dashboard.cost_breakdown.total_label":"推定総コスト","dashboard.cost_breakdown.close":"閉じる","trend.monitor.label":"使用トレンド","heatmap.title":"ヒートマップ","heatmap.empty":"まだアクティビティデータがありません。","heatmap.legend.less":"少","heatmap.legend.more":"多","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"トークン","heatmap.month.jan":"1月","heatmap.month.feb":"2月","heatmap.month.mar":"3月","heatmap.month.apr":"4月","heatmap.month.may":"5月","heatmap.month.jun":"6月","heatmap.month.jul":"7月","heatmap.month.aug":"8月","heatmap.month.sep":"9月","heatmap.month.oct":"10月","heatmap.month.nov":"11月","heatmap.month.dec":"12月","heatmap.day.sun":"日","heatmap.day.mon":"月","heatmap.day.tue":"火","heatmap.day.wed":"水","heatmap.day.thu":"木","heatmap.day.fri":"金","heatmap.day.sat":"土","dashboard.session_expired.copy_label":"npx --yes tokentracker-cli init を実行","dashboard.session_expired.copied":"コピーしました","dashboard.install.prompt":"Node.js 18+ をインストールしてから実行:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"インストールコマンドをコピー","dashboard.install.copy_base":"初期化コマンドをコピー","dashboard.install.copied":"クリップボードにコピーしました","dashboard.install.link_code.loading":"専用コードを生成中...","dashboard.install.link_code.failed":"専用コードを利用できません","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"日次内訳","dashboard.daily.empty":"まだデータがありません。先に AI CLI を使用してから {{cmd}} を実行してください。","dashboard.identity.title":"あなたのプロフィール","dashboard.identity.subtitle":"あなたのコーディングの軌跡を記録","dashboard.identity.fallback":"匿名ユーザー","dashboard.screenshot.title_line1":"AI コーディングアシスタント","dashboard.screenshot.title_line2":"2025 年振り返り","dashboard.screenshot.twitter_button":"X にシェア","dashboard.screenshot.twitter_label":"X にシェア","dashboard.screenshot.twitter_hint":"画像を自動的にクリップボードにコピーします","dashboard.screenshot.twitter_text":"記録された {{total_tokens}} トークン。\\n{{model_name}} が {{model_percent}}% でリード。\\n\\n私の AI 使用状況、未監査 →\\ntokentracker.cc","heatmap.3d.hover_tip":"クリックして 3D 全画面回転分析モードに入る","heatmap.3d.modal.title":"トークンの 3D ビュー","heatmap.3d.modal.desc":"左ボタンを押しながらドラッグで自由に回転し、ホバーで日々のアクティビティと多次元の統計を確認できます。","heatmap.3d.modal.stats.total_tokens":"年間トークン総量","heatmap.3d.modal.stats.precision_total_tokens":"年間の正確な消費量","heatmap.3d.modal.stats.estimated_cost":"年間推定費用","heatmap.3d.modal.stats.active_rate_days":"アクティブ率 / 日数","heatmap.3d.modal.stats.max_streak":"最長連続アクティブ","heatmap.3d.modal.stats.days_suffix":"日","heatmap.3d.modal.stats.peak_day":"単日ピーク","heatmap.3d.modal.stats.precision_peak_value":"正確な単日ピーク","heatmap.3d.modal.stats.no_data":"データなし","heatmap.3d.modal.legend.title":"アクティビティのレベル","heatmap.3d.modal.palette.emerald":"エメラルドシティ","heatmap.3d.modal.palette.ocean":"ディープオーシャン","heatmap.3d.modal.palette.neon":"サイバーネオン","heatmap.3d.modal.palette.amber":"燃ゆる残照","heatmap.3d.modal.control.play":"ゆっくり自動回転を開始","heatmap.3d.modal.control.pause":"自動回転を一時停止","heatmap.3d.modal.control.reset":"3D 視点をリセット","heatmap.3d.modal.footer.tip":"ピンチでズーム / ホイールでズーム / マウスドラッグで 3D チャートを回転","heatmap.3d.modal.ai.title.default":"たゆまず歩み続ける人","heatmap.3d.modal.ai.eval.default":"技術の大河のなかで、たゆまず歩み続けています。日々のコーディングがいつも華々しいとは限りませんが、小さなアクティビティの一つひとつが、あなたの思考と探求を記録しています。星のような火花がやがて集まり、あなただけのデジタルの海になっていきます。","heatmap.3d.modal.ai.title.peak":"限界突破級コントリビューター","heatmap.3d.modal.ai.eval.peak":"この一年、あなたのトークン産出はきわめて高いエンジニアリング密度を示しました。これほどの開発量は、中規模から大規模なシステム基盤の再構築に深く関わったのに匹敵し、一打鍵ごとに複雑なロジックを確定的なコードへと収束させています。極度の集中と、純粋なエンジニアリングへの情熱の何よりの証です。","heatmap.3d.modal.ai.title.heavy":"高頻度産出級デベロッパー","heatmap.3d.modal.ai.eval.heavy":"卓越した継続的アウトプット。あなたのトークン累積量は数百万語に達し、中編の技術大作を数十冊分に相当します。高い飽和度のコーディングのリズムは、あなたが並外れた実行力で自分だけのデジタル資産を築いていることを示し、卓越した創造力を体現しています。","heatmap.3d.modal.ai.title.core":"中核生産力エキスパート","heatmap.3d.modal.ai.eval.core":"きわめて粘り強い長期的な取り組み。過去一年にわたり、長い期間にわたって安定して高い強度の開発ペースを保ってきました。確かなコード行数とトークン産出によって、あなたは静かにプロジェクトの中核アーキテクチャを築き上げており、まさにエンジニアリングの支柱です。","heatmap.3d.modal.ai.title.steady":"着実成長型エンジニア","heatmap.3d.modal.ai.eval.steady":"堅実で揺るぎない技術の積み重ね。トークンが増えるたびに、あなたは未来へと続くコードの礎を着実に積んでいます。この細く長く続く堅実なリズムは、優れた開発者がエンジニアリングの達人へと至るために必ず通る道です。","heatmap.3d.voxel.joke.1":"🔥 超ヤバい!{{value}} tokens を産出!大規模モデルを猛特訓中?それともコンパイラを手書きで?","heatmap.3d.voxel.joke.2":"🚀 叙事詩級のアウトプット!合計 {{value}} tokens。今日の産出量は地球を一周できるほど、AI もあなたに驚嘆!","heatmap.3d.voxel.joke.3":"⚡ 爆発の日!{{value}} tokens。コードが泉のごとく湧き出て、キーボードが煙を上げ始めた!","heatmap.3d.voxel.level3":"⚡ 生産力の大爆発({{value}} tokens)!高効率で集中したゴールデンタイム、このピークの状態を保ち続けよう!","heatmap.3d.voxel.level2":"🌱 調子が上がってきた({{value}} tokens)!着実なアウトプットで、キーを打つたびに大きな建物に一枚ずつレンガを積み重ねています。","heatmap.3d.voxel.level1":"🍃 塵も積もれば山となる({{value}} tokens)。小さなコミットも未来への投資、複利の力を保とう!","heatmap.3d.voxel.level0":"💤 英気を養う日。コードを書かない日にも、ひらめきはひそかに育っています。","ipcheck.page.title":"Claude IP チェック","ipcheck.page.subtitle":"現在 Claude にアクセスしている出口 IP、クリーン度、地理情報、リスクシグナルを確認し、ログインに影響したりリスク管理を誘発したりしうる要因を把握します。","ipcheck.mask.toggle":"IP を隠す","ipcheck.ipv6.warn":"現在 IPv6 環境です。IPv6 での Claude Code アクセスは推奨されず、一部の検出結果が不完全になる可能性があります。","ipcheck.ip.cn":"中国の出口 IPv4","ipcheck.ip.cloudflare":"Cloudflare 出口","ipcheck.ip.claude":"Claude 出口","ipcheck.ip.failed":"取得に失敗しました","ipcheck.ip.loading":"読み込み中...","ipcheck.trust.title":"信頼スコア","ipcheck.trust.subtitle":"Claude のリスク管理視点での IP クリーン度","ipcheck.trust.no_data":"データなし","ipcheck.trust.no_ip":"Claude の出口 IP を取得できず、スコアを算出できません","ipcheck.trust.no_score":"この IP のスコアデータはまだありません","ipcheck.trust.gauge.low":"0 高リスク","ipcheck.trust.gauge.high":"100 信頼可","ipcheck.trust.label.pristine":"極めてクリーン","ipcheck.trust.label.clean":"クリーン","ipcheck.trust.label.good":"良好","ipcheck.trust.label.neutral":"中立","ipcheck.trust.label.suspicious":"疑わしい","ipcheck.trust.label.unreachable":"アクセス不可","ipcheck.trust.text.excellent":"この IP の評判は非常に良好です","ipcheck.trust.text.great":"この IP の評判は優秀です","ipcheck.trust.text.minor":"この IP には軽微なリスクがあります","ipcheck.trust.text.moderate":"この IP には一定のリスクがあります","ipcheck.trust.text.severe":"この IP は極めて高リスクです","ipcheck.trust.text.restricted":"アクセス不可の地域にあり、Claude は厳格にリスク管理します","ipcheck.trust.region_warn.title":"Claude の出口 IP が {{region}} にあります","ipcheck.trust.region_warn.body":"Claude へのログインは推奨されません。アカウント停止のリスク管理を誘発しやすくなります。","ipcheck.trust.region_support":"Claude 対応地域","ipcheck.trust.region.accessible":"アクセス可","ipcheck.common.unknown":"不明","ipcheck.props.title":"IP の属性","ipcheck.props.region":"地域","ipcheck.props.city":"都市","ipcheck.props.type":"タイプ","ipcheck.props.asn":"ASN","ipcheck.props.org":"プロバイダー","ipcheck.props.residential":"家庭用","ipcheck.props.datacenter":"データセンター","ipcheck.security.title":"セキュリティ検出","ipcheck.security.vpn":"VPN","ipcheck.security.proxy":"プロキシ (Proxy)","ipcheck.security.tor":"Tor","ipcheck.security.crawler":"ボット (Crawler)","ipcheck.security.abuser":"不正利用の記録","ipcheck.security.proxy_flag":"プロキシ","ipcheck.security.crawler_yes":"はい","ipcheck.security.crawler_no":"いいえ","ipcheck.security.abuser_yes":"記録あり","ipcheck.security.abuser_no":"記録なし","ipcheck.security.clean":"検出されませんでした","ipcheck.avail.title":"Claude の可用性","ipcheck.avail.tooltip":"Claude のサーバーは米国にあります。アジアからのアクセスで遅延が 100ms を超えるのは正常な状況です。","ipcheck.avail.refresh":"更新","ipcheck.avail.svc_row":"サービス状態","ipcheck.avail.latency.normal":"正常","ipcheck.avail.latency.good":"良好","ipcheck.avail.latency.slow":"やや遅い","ipcheck.avail.latency.unreachable":"アクセス不可","ipcheck.avail.svc.none":"すべて正常","ipcheck.avail.svc.minor":"軽微な障害","ipcheck.avail.svc.major":"重大な障害","ipcheck.avail.svc.critical":"深刻な障害","ipcheck.avail.svc.maintenance":"メンテナンス中","ipcheck.avail.svc.other":"サービス異常","ipcheck.dns.title":"DNS リーク検出","ipcheck.dns.status":"状態","ipcheck.dns.outlet":"DNS 出口","ipcheck.dns.outlet_ip":"DNS 出口 IP","ipcheck.dns.isp":"プロバイダー","ipcheck.dns.leaked":"リークの可能性あり","ipcheck.dns.no_leak":"リークは検出されませんでした","ipcheck.dns.encrypted":"DNS は暗号化または非公開","ipcheck.dns.cn_tag":"中国 DNS","ipcheck.udp.title":"WebRTC UDP リーク","ipcheck.udp.status":"状態","ipcheck.udp.outlet":"UDP 出口","ipcheck.udp.outlet_ip":"UDP 出口 IP","ipcheck.udp.origin":"所在地","ipcheck.udp.disabled":"WebRTC は無効です","ipcheck.udp.no_leak":"リークは検出されませんでした","ipcheck.udp.leaked":"リークの可能性あり","ipcheck.udp.anomaly":"異常","ipcheck.device.title":"デバイス情報","ipcheck.device.tz":"タイムゾーン","ipcheck.device.lang":"言語","ipcheck.device.os":"OS / ブラウザ","ipcheck.device.touch":"タッチスクリーン","ipcheck.device.net":"ネットワークタイプ","ipcheck.device.dnt":"Do Not Track","ipcheck.device.webgl_render":"WebGL レンダラー","ipcheck.device.canvas_fp":"Canvas フィンガープリント","ipcheck.device.webgl_fp":"WebGL フィンガープリント","ipcheck.device.match":"一致","ipcheck.device.mismatch":"不一致","ipcheck.device.local":"ローカル","ipcheck.device.estimate_suffix":"(推定)","ipcheck.device.diff_equal":"オフセットにわずかな差があります","ipcheck.device.diff_ahead":"Claude が {{h}} 時間進んでいます","ipcheck.device.diff_behind":"Claude が {{h}} 時間遅れています","ipcheck.device.lang_expected":"Claude 出口でよく使われる言語","ipcheck.device.touch_yes":"はい","ipcheck.device.touch_no":"いいえ","ipcheck.device.dnt_on":"オン","ipcheck.device.dnt_off":"オフ","ipcheck.device.dnt_unset":"未設定","ipcheck.device.net_unsupported":"検出に非対応","ipcheck.device.unsupported":"非対応","ipcheck.history.title":"Claude 出口 IP の履歴","ipcheck.history.subtitle":"ブラウザのローカルにのみ保存され、最大 6 件まで保持されます","ipcheck.history.clear":"クリア","ipcheck.history.empty":"履歴はまだありません","ipcheck.history.current":"現在","ipcheck.region.CN":"中国本土","ipcheck.region.HK":"香港","ipcheck.region.MO":"マカオ","ipcheck.region.RU":"ロシア","ipcheck.region.KP":"北朝鮮","ipcheck.region.IR":"イラン","ipcheck.region.SY":"シリア","ipcheck.region.CU":"キューバ","ipcheck.region.BY":"ベラルーシ","ipcheck.region.VE":"ベネズエラ","leaderboard.profile_modal.close":"閉じる","leaderboard.profile_modal.loading":"ユーザープロフィールを読み込み中…","leaderboard.profile_modal.error":"ユーザープロフィールの読み込みに失敗しました。","leaderboard.profile_modal.empty":"このユーザーのプロフィールは公開されていません。","leaderboard.profile_modal.row_aria":"{{name}} のプロフィールを表示","leaderboard.profile_modal.rank":"#{{rank}}","leaderboard.profile.hero.rank_label":"ランク","leaderboard.profile_modal.hero.total_tokens":"トークン合計","leaderboard.profile_modal.hero.total_cost":"支出合計","leaderboard.profile_modal.hero.github":"GitHub プロフィール","leaderboard.profile_modal.stat.total_cost":"支出合計","leaderboard.profile_modal.stat.total_tokens":"トークン合計","leaderboard.profile_modal.stat.active_days":"アクティブ日数","leaderboard.profile_modal.stat.avg_per_day":"1 日平均支出","leaderboard.profile_modal.streak.current":"現在の連続","leaderboard.profile_modal.streak.longest":"最長連続","leaderboard.profile_modal.streak.days":"{{count}} 日","leaderboard.profile_modal.best_day.title":"ベストデー","leaderboard.profile_modal.best_day.none":"—","leaderboard.profile_modal.models.count":"{{count}} 個のモデルを使用","leaderboard.profile_modal.models.favorite":"お気に入りモデル","leaderboard.profile_modal.models.none":"モデルの記録はまだありません","leaderboard.profile_modal.heatmap.title":"アクティビティ(直近 365 日)","leaderboard.profile_modal.providers.title":"プロバイダー別の分布","leaderboard.profile_modal.providers.none":"この期間の使用データはありません。","leaderboard.profile_modal.view_full":"完全なプロフィールを表示","local_only.title":"クライアント内でご利用ください","local_only.body":"このページはお使いの端末上のデータを読み込むため、Mac アプリまたはコマンドラインの dashboard でのみ表示できます。","local_only.open_app":"Mac アプリ内で開く","local_only.download":"Mac アプリをダウンロード"},WL={"landing.handle.default":"VIBE_USER","landing.handle.special":"ボルト","landing.screenshot.alt":"TokenTracker ダッシュボードのスクリーンショット","landing.nav.login":"ログイン","landing.nav.signup":"登録","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"コマンドをコピー","landing.install.action.copied":"コピーしました","landing.meta.title":"Token Tracker — AI Coding CLI のトークン使用状況トラッカー","landing.meta.description":"Claude Code、Cursor、Codex などのツールのトークン使用量を自動的に監視。ローカルファースト、プライバシー重視、設定不要。","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/og-image.jpg","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker シェア","share.meta.description":"Token Tracker ダッシュボードのスナップショットをシェア。モデル、プロジェクト、期間をまたいだ使用状況のインサイトを含みます。","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/share-dashboard.jpg","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.handle.placeholder":"「{{handle}}」を試す","landing.rank.expectation":"予想ランク:{{rank}}","landing.rank.singularity":"トップ","landing.rank.unranked":"ランク外","landing.cta.primary":"ダッシュボードへ","landing.cta.secondary":"GitHub のソースを見る","landing.v2.hero.title_line1":"あなたのすべての","landing.v2.hero.title_line2":"AI トークンを追跡","landing.v2.install.mac_cta":"Mac アプリ (DMG)","landing.v2.models.title":"対応する AI CLI ツール","landing.v2.compare.kicker":"シームレスな追跡","landing.v2.compare.title":"AI の使用量を当てずっぽうで考えるのはもうやめましょう。","landing.v2.compare.subtitle":"AI CLI は使用データを散在するローカルファイルに隠しています。TokenTracker はそれらをリアルタイムで集約し、わかりやすい一つのダッシュボードにまとめます。","landing.v2.distill.body":"100% ローカル処理。prompt やコードは一切アップロードしません。","landing.v2.compare.with.title":"Token Tracker あり","landing.v2.compare.with.p1":"集約された使用状況ダッシュボード","landing.v2.compare.with.p2":"リアルタイムのトークン指標","landing.v2.compare.with.p3":"100% ローカルでプライバシーも安心","landing.v2.compare.without.title":"なし","landing.v2.compare.without.p1":"散らばった JSON ログファイル","landing.v2.compare.without.p2":"トークン消費がまったく見えない","landing.v2.compare.without.p3":"突然の API 請求","landing.v2.footer.line":"Token Tracker — 開発者が、開発者のために作りました。","landing.v2.nav.status":"ステータス","landing.v2.nav.github":"GitHub","landing.v2.models.agent.codex":"Codex","landing.v2.models.agent.claude_code":"Claude Code","landing.v2.models.agent.cursor":"Cursor","landing.v2.models.agent.gemini":"Gemini","landing.v2.models.agent.opencode":"OpenCode","landing.v2.models.agent.openclaw":"OpenClaw","landing.v2.cta.primary":"Dashboard","landing.v2.hero.subtagline":"Claude Code、Cursor、Codex などのツールのトークン使用量を自動的に監視。ローカルファースト、プライバシー重視、設定不要。","leaderboard.profile.nav.back":"リーダーボード","leaderboard.title":"リーダーボード","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"全期間","leaderboard.generated_at":"{{ts}} に更新","leaderboard.period.week":"週","leaderboard.period.month":"月","leaderboard.period.total":"全期間","leaderboard.me_label":"あなた","leaderboard.anon_label":"匿名","leaderboard.error.unknown":"不明なエラー","leaderboard.loading":"読み込み中…","leaderboard.empty":"データがありません","leaderboard.column.rank":"ランク","leaderboard.column.user":"ユーザー","leaderboard.column.total":"合計","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"Copilot","leaderboard.column.kimi":"Kimi","leaderboard.column.supplemental":"その他","leaderboard.column.est_cost":"推定支出","leaderboard.signin_prompt":"ログインするとランキングに参加できます","leaderboard.signin_button":"ログイン","leaderboard.sync_prompt":"クラウド同期を有効にするとランキングに参加できます","leaderboard.sync_button.idle":"有効にして同期","leaderboard.sync_button.busy":"同期中…","leaderboard.pagination.page_size_label":"ページあたりの表示数","leaderboard.pagination.prev":"前のページ","leaderboard.pagination.next":"次のページ","leaderboard.pagination.ellipsis":"……","leaderboard.pagination.page_unknown":"{{page}} ページ目","share.modal.title":"あなたのデータをシェア","share.modal.subtitle":"ポスターカードを生成して、どこでもシェア。","share.modal.close":"閉じる","share.modal.action.x":"X にシェア","share.modal.action.download":"ダウンロード","share.modal.action.copy":"画像をコピー","share.modal.hint.x":"画像をツイートに貼り付け","share.modal.hint.copy":"クリップボードへ","share.modal.name_label":"表示名","share.modal.name_placeholder":"名前を入力","share.modal.style_label":"スタイル","share.modal.footer":"データは常にローカルに保持されます。画像はブラウザ内で生成され、アップロードされることはありません。","share.button.label":"シェア","share.button.aria":"シェアカードを開く","share.toast.copied":"画像をクリップボードにコピーしました","share.toast.downloaded":"画像を保存しました","share.toast.failed":"画像の生成に失敗しました","share.toast.working":"生成中…","share.variant.neon":"ネオン","share.variant.broadsheet":"特集号","share.date.month_year":"{{year}} 年 {{month}}","share.issue.all_time":"全期間","share.month_short.jan":"1 月","share.month_short.feb":"2 月","share.month_short.mar":"3 月","share.month_short.apr":"4 月","share.month_short.may":"5 月","share.month_short.jun":"6 月","share.month_short.jul":"7 月","share.month_short.aug":"8 月","share.month_short.sep":"9 月","share.month_short.oct":"10 月","share.month_short.nov":"11 月","share.month_short.dec":"12 月","share.hook.top_loyal":"{{name}} が使用量の {{percent}}% を占めました。","share.hook.days_record":"合計 {{days}} 日を記録。","share.hook.top_led":"{{name}} がリードし、割合は {{percent}}%。","share.hook.multi_models":"{{days}} 日間で {{count}} 個のモデルを使用。","share.hook.days_with_model":"{{name}} が {{days}} 日間付き合ってくれました。","share.hook.new_chapter":"新しい記録が、ここから始まります。","share.card.broadsheet.issue":"号数","share.card.broadsheet.by":"シェアした人","share.card.broadsheet.tracked_since":"追跡開始","share.card.broadsheet.total_tokens":"トークン総数","share.card.broadsheet.estimated_spend":"推定支出","share.card.broadsheet.billable_days":"{{days}} 日のアクティブ日","share.card.broadsheet.heatmap_title":"年間ヒートマップ","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}} 日に記録あり","share.card.broadsheet.roster_title":"モデルランキング","share.card.broadsheet.roster_subtitle":"よく使うモデルのローテーション","share.card.broadsheet.empty":"今週は静かで、まだモデルのデータがありません。","share.card.broadsheet.global_rank":"全体ランク","share.card.broadsheet.active_days":"アクティブ","share.card.broadsheet.days_count":"{{days}} 日","share.card.broadsheet.track_yours":"あなた自身を追跡する","share.card.annual.report_title":"使用状況レポート","share.card.annual.less":"少","share.card.annual.more":"多","share.card.annual.heatmap_title":"トークンヒートマップ","share.card.annual.total_tokens":"トークン総数","share.card.annual.estimated_cost":"推定コスト","share.card.annual.longest_streak":"最長連続","share.card.annual.days_count":"{{days}} 日","share.card.annual.top_model":"人気モデル"},GL={"header.auth.sign_in_aria":"로그인","login.back_home":"홈으로 돌아가기","login.cloud_only":"클라우드 로그인이 설정되지 않았습니다. localhost의 로컬 대시보드를 사용하세요.","login.title":"로그인","login.subtitle":"이메일 또는 연결된 계정을 선택하세요.","login.dismiss":"닫기","login.verify_email_success":"이메일이 인증되었습니다. 아래에서 로그인할 수 있습니다.","login.verify_email_pending":"이메일에서 계정 인증을 완료한 후 로그인하세요.","login.oauth.continue":"{{provider}}(으)로 계속하기","login.divider":"또는","login.tab.sign_in":"로그인","login.tab.sign_up":"계정 만들기","login.field.name":"표시 이름","login.field.name_placeholder":"선택 사항","login.field.email":"이메일","login.field.password":"비밀번호","login.password_hint":"최소 {{min}}자 이상.","login.submit.sign_in":"이메일로 로그인","login.submit.sign_up":"계정 만들기","auth.callback.processing":"처리 중…","auth.callback.success":"로그인 성공","auth.callback.redirecting":"TokenTracker로 돌아가는 중…","auth.callback.failed":"로그인을 완료하지 못했습니다. 다시 시도해 주세요.","auth.callback.close":"이 페이지 닫기","login_modal.subtitle":"로그인하여 리더보드에 참여하세요","login_modal.continue_email":"이메일로 계속하기","login_modal.divider_email":"이메일","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"M","shared.unit.billion_abbrev":"B","shared.data_source":"데이터 출처: {{source}}","shared.error.prefix":"오류: {{error}}","shared.status.unsynced":"—","shared.time.now":"방금","error.boundary.title":"문제가 발생했습니다","error.boundary.subtitle":"이 화면을 표시하지 못했습니다","error.boundary.hint":"콘솔을 연 다음 페이지를 새로고침하세요","error.boundary.no_details":"오류 세부 정보 없음","error.boundary.action.reload":"새로고침","identity_card.rank_label":"시작일","identity_card.streak_label":"활동 일수","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}}일","usage.summary.total":"총 토큰","usage.period.day":"일","usage.period.week":"주","usage.period.month":"월","usage.period.total":"전체","usage.period.custom":"사용자 지정","usage.metric.total":"전체","usage.metric.input":"입력","usage.metric.output":"출력","usage.metric.cached_input":"캐시된 입력","usage.metric.reasoning_output":"추론 출력","usage.button.refresh":"새로고침","usage.overview.tablist_aria":"기간","usage.overview.cost_breakdown_aria":"비용 내역 보기","usage.overview.distribution_aria":"제공자 분포: {{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}: {{percent}}%, {{tokens}} 토큰, {{cost}}. 클릭하여 세부 정보 {{action}}","usage.overview.expand":"펼치기","usage.overview.collapse":"접기","usage.overview.model_count":"모델 {{count}}개","usage.overview.model_details_aria":"{{provider}} 모델 세부 정보","widgets.page.title":"위젯","widgets.cta.open_gallery":"위젯 갤러리 열기","widgets.cta.download":"Mac 앱 다운로드","widgets.cta.macos_only":"macOS 전용","widgets.menubar.section.title":"메뉴 막대","widgets.gallery.section.title":"데스크톱 위젯","widgets.summary.name":"사용량 요약","widgets.summary.description":"오늘과 7일간의 사용량을 간결한 추세선으로 보여줍니다.","widgets.heatmap.name":"활동 히트맵","widgets.heatmap.description":"GitHub 스타일의 일별 캘린더. 연속 활동일과 쉬는 날을 한눈에 파악하세요.","widgets.topModels.name":"인기 모델","widgets.topModels.description":"토큰 비율로 정렬한 가장 많이 사용한 모델.","widgets.limits.name":"사용 한도","widgets.limits.description":"Claude, Codex, Cursor, Gemini 등의 실시간 사용 한도 진행 상황.","daily.sort.date.label":"날짜","daily.sort.date.title":"날짜순 정렬","daily.sort.total.label":"전체","daily.sort.total.title":"전체순 정렬","daily.sort.input.label":"입력","daily.sort.input.title":"입력순 정렬","daily.sort.output.label":"출력","daily.sort.output.title":"출력순 정렬","daily.sort.cached.label":"캐시","daily.sort.cached.title":"캐시된 입력순 정렬","daily.sort.reasoning.label":"추론","daily.sort.reasoning.title":"추론 출력순 정렬","daily.sort.conversations.label":"대화 수","daily.sort.conversations.title":"대화순 정렬","details.pagination.prev":"이전","details.pagination.next":"다음","limits.copilot.otelHint.title":"Copilot 토큰 사용량 추적","limits.copilot.otelHint.body":"한도 정보는 GitHub OAuth 토큰을 통해 로드됩니다. 토큰별 사용량도 기록하려면 Copilot의 OpenTelemetry 내보내기를 활성화하고 셸 프로필(~/.zshrc 또는 ~/.bashrc)에 다음 줄을 추가하세요:","limits.copilot.otelHint.copy":"복사","limits.copilot.otelHint.copied":"복사됨","limits.panel.title":"사용 한도","limits.label.cursor_plan":"플랜","limits.label.cursor_auto":"자동","limits.label.cursor_api":"API","limits.label.kiro_month":"월간","limits.label.kiro_bonus":"보너스","limits.label.kimi_weekly":"주간","limits.label.kimi_5h":"5h","limits.label.kimi_total":"전체","limits.label.kimi_parallel":"동시 실행: {{count}}","limits.label.copilot_premium":"프리미엄","limits.label.copilot_chat":"채팅","limits.status.not_connected":"연결되지 않음","limits.status.no_data":"실시간 한도 데이터가 반환되지 않았습니다","limits.status.all_hidden":"모든 한도 제공자가 숨겨져 있습니다. 표시 설정을 열어 다시 표시하세요.","nav.usage":"토큰","nav.limits":"한도","nav.widgets":"macOS 위젯","nav.skills":"Skills","nav.leaderboard":"리더보드","nav.collapse":"사이드바 접기","nav.expand":"사이드바 펼치기","nav.menu":"내비게이션 메뉴 열기","nav.close_menu":"내비게이션 메뉴 닫기","nav.aside_label":"주 내비게이션","nav.nav_label":"기본","limits.page.subtitle":"AI 도구 전반의 사용 한도와 할당량 사용 현황.","limits.settings.toggle_visible":"표시 여부 전환","limits.page.openSettings":"표시 설정","nav.group.general":"일반","nav.group.tools":"도구","nav.group.account":"계정","nav.settings":"설정","header.auth.open_settings":"설정 열기","settings.page.title":"설정","settings.page.subtitle":"계정, 외관 및 표시 환경설정을 관리하세요.","settings.section.appearance":"외관","settings.section.account":"계정","settings.section.limits":"한도 표시","settings.appearance.theme.label":"테마","settings.appearance.theme.hint":"대시보드 전반에서 Token Tracker가 표시되는 방식을 선택하세요.","settings.appearance.theme.light":"라이트","settings.appearance.theme.dark":"다크","settings.appearance.theme.system":"시스템","settings.account.displayName":"표시 이름","settings.account.edit":"편집","settings.account.save":"저장","settings.account.saving":"저장 중...","settings.account.cancel":"취소","settings.account.userId":"사용자 ID","settings.account.copyUserId":"사용자 ID 복사","settings.account.copy":"복사","settings.account.copied":"복사됨","settings.account.cloudSync":"클라우드 동기화","settings.account.cloudSyncHint":"로컬 사용량을 Token Tracker 클라우드 계정에 업로드합니다.","settings.account.publicProfile":"공개 프로필","settings.account.publicProfileHint":"공개 리더보드에 사용량을 표시합니다.","settings.account.displayNameAnonymousHint":"익명 — 리더보드에서 이름과 아바타가 숨겨집니다","settings.account.displayNameDisabledWhileAnon":"이름을 편집하려면 먼저 스위치를 켜세요","settings.account.githubUrl":"GitHub 프로필","settings.account.githubUrlHint":"리더보드에서 이름 옆에 GitHub 링크를 표시합니다.","settings.account.githubUrlPlaceholder":"사용자명 또는 https://github.com/사용자명","settings.account.githubUrlInvalid":"GitHub 사용자명 또는 https://github.com/사용자명 형식의 URL을 입력하세요.","leaderboard.github.aria":"GitHub 프로필 열기","leaderboard.github.tooltipAction":"클릭하여 GitHub 프로필 열기","leaderboard.github.tooltipPrefix":"여기에 표시하려면","leaderboard.github.tooltipSettingsLink":"설정","leaderboard.github.tooltipSuffix":"에서 설정하세요","settings.account.signOut":"로그아웃","settings.account.signIn":"로그인","settings.account.signedOutHint":"로그인하여 클라우드 동기화와 리더보드 환경설정을 관리하세요.","settings.section.menubar":"메뉴 막대 앱","settings.menubar.showStats":"메뉴 막대에 통계 표시","settings.menubar.showStatsHint":"메뉴 막대 아이콘 옆에 오늘의 토큰 수와 비용을 표시합니다.","settings.menubar.animatedIcon":"애니메이션 아이콘","settings.menubar.animatedIconHint":"메뉴 막대에서 Clawd 캐릭터를 깜빡이고 동기화 애니메이션을 재생합니다.","settings.menubar.launchAtLogin":"로그인 시 실행","settings.menubar.launchAtLoginHint":"macOS에 로그인할 때 TokenTrackerBar를 자동으로 시작합니다.","settings.menubar.syncNow":"지금 동기화","settings.menubar.syncNowHint":"로컬 AI 도구 로그를 즉시 파싱하고 업로드합니다.","settings.menubar.syncing":"동기화 중…","settings.menubar.updates":"업데이트","settings.menubar.checkUpdates":"업데이트 확인","settings.footer.statusPage":"시스템 상태","menubar.slot.primary":"첫 번째 위치","menubar.slot.secondary":"두 번째 위치","menubar.native_only":"라이브 메뉴 막대 표시를 편집하려면 macOS용 TokenTrackerBar를 여세요.","menubar.metric.today_tokens":"오늘 토큰","menubar.metric.today_cost":"오늘 비용","menubar.metric.last_7d_tokens":"최근 7일","menubar.metric.total_tokens":"총 토큰","menubar.metric.total_cost":"총 비용","menubar.metric.claude_5h":"Claude 5시간 한도","menubar.metric.claude_7d":"Claude 7일 한도","menubar.metric.codex_5h":"Codex 5시간 한도","menubar.metric.codex_7d":"Codex 7일 한도","nav.ip_check":"Claude IP 확인","skills.page.title":"Skills","skills.tab.my":"내 Skills","skills.tab.browse":"둘러보기","skills.action.refresh":"새로고침","skills.action.install":"설치","skills.action.choose_targets":"대상 선택","skills.target.menu_label":"설치 위치","skills.target.none":"대상 없음","skills.toast.installed":"{{name}}을(를) {{targets}}에 설치했습니다.","skills.action.remove":"제거","skills.action.search":"검색","skills.action.search_aria":"skills 검색","skills.target.synced_summary":"{{targets}}에 동기화됨","skills.target.synced_none":"어떤 agent에도 동기화되지 않음","skills.row.open_details":"{{name}} 세부 정보 열기","skills.detail.close":"세부 정보 닫기","skills.detail.sync_section_title":"동기화 대상","skills.detail.remove_button":"모든 agent에서 제거","skills.detail.remove_confirm_hint":"모든 agent에서 이 skill의 동기화를 해제하고 로컬 복사본을 삭제합니다.","skills.filter.agent_label":"Agent","skills.filter.agent_all":"모든 agent","skills.filter.clear":"필터 지우기","skills.filter.result_count":"skill {{filtered}} / {{total}}개","skills.filter.result_count_browse":"결과 {{count}}개","skills.empty.no_match":"현재 필터에 일치하는 skill이 없습니다.","hint.dismiss":"힌트 닫기","hint.dismissible_aria":"닫을 수 있는 힌트","skills.card.installed":"설치됨","skills.card.targets_prefix":"설치 위치:","skills.card.targets_change":"변경","skills.card.installs":"설치 {{count}}회","skills.source.label":"출처","skills.source.all":"모든 저장소","skills.mode.repo":"저장소","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"활성화된 저장소에서 검색…","skills.browse.placeholder_repo":"{{repo}}에서 검색…","skills.browse.placeholder_skillssh":"skills.sh 레지스트리 검색…","skills.browse.empty_sources":"skill을 둘러보려면 아래에서 GitHub 저장소를 추가하세요.","skills.browse.add_repo_hint":"더 많은 skill이 필요하신가요? GitHub 저장소를 추가하세요.","skills.browse.manage_sources":"출처 관리","skills.browse.hint_skillssh":"skills.sh를 검색하려면 2자 이상 입력하세요.","skills.browse.loading_hint":"GitHub에서 skill 메타데이터를 가져오는 중입니다. 첫 로드는 최대 1분이 걸릴 수 있으며, 결과는 캐시됩니다.","skills.error.generic":"Skill 작업에 실패했습니다.","skills.confirm.remove_title":"{{name}}을(를) 제거할까요?","skills.confirm.remove_managed":"이 skill은 연결된 모든 AI 도구에서 제거됩니다. 몇 초 안에 실행을 취소할 수 있습니다.","skills.confirm.remove_local":"연결된 모든 AI 도구에서 디스크의 skill 폴더를 삭제합니다. 이 작업은 취소할 수 없습니다.","skills.toast.removed":"{{name}}을(를) 제거했습니다.","shared.action.undo":"실행 취소","shared.action.cancel":"취소","skills.empty.my":"아직 skill이 없습니다. 둘러보기를 열어 검색하고 설치하세요.","skills.empty.my_cta":"둘러보기","skills.empty.browse":"이 출처에서 skill을 찾을 수 없습니다.","skills.empty.search":"결과가 없습니다. 다른 검색어를 시도해 보세요.","skills.repo.placeholder":"owner/repository","skills.repo.add":"저장소 추가","skills.repo.invalid":"owner/repository 또는 GitHub 저장소 URL을 입력하세요.","skills.repo.remove":"저장소 제거","settings.appearance.language.label":"언어","settings.appearance.language.hint":"시스템을 선택하면 기본적으로 컴퓨터 언어를 따릅니다.","settings.appearance.language.system":"시스템","settings.appearance.language.english":"영어","settings.appearance.language.chinese":"중국어 간체","settings.appearance.language.traditional_chinese":"중국어 번체","settings.appearance.language.japanese":"일본어","settings.appearance.language.korean":"한국어","settings.appearance.currency.label":"통화","settings.appearance.currency.hint":"사용량 비용에 표시할 통화를 선택하세요.","settings.appearance.currency.opt.usd":"미국 달러 ($)","settings.appearance.currency.opt.eur":"유로 (€)","settings.appearance.currency.opt.gbp":"영국 파운드 (£)","settings.appearance.currency.opt.cny":"중국 위안 (¥)","settings.appearance.currency.opt.jpy":"일본 엔 (¥)","settings.appearance.currency.opt.hkd":"홍콩 달러 (HK$)","settings.appearance.currency.rate_source.default":"내장 기본 환율","settings.appearance.currency.rate_source.fetched":"출처: open.er-api.com","settings.appearance.currency.rate_updated":"{{when}} 업데이트됨","settings.appearance.currency.rate_never":"첫 새로고침 대기 중"},KL={"usage.overview.antigravity_notice_title":"추정 토큰","usage.overview.antigravity_notice_body":"Antigravity 기록에는 실제 사용량 수치가 저장되지 않습니다. 여기 표시된 수치는 텍스트 길이(약 4자/토큰)로 추정한 값이며 Gemini의 프롬프트 캐시 할인은 반영되지 않으므로, 청구 금액이 아니라 상한 추정치로 참고하세요.","stats.period.today":"오늘","stats.period.week":"이번 주","stats.period.month":"이번 달","stats.period.all":"전체","stats.period.convs":"대화","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"모델 분석 접기","dashboard.core_index.expand_aria":"모델 분석 펼치기","dashboard.rolling.title":"최근 활동","dashboard.rolling.last_7d":"최근 7일","dashboard.rolling.last_30d":"최근 30일","dashboard.rolling.avg_active_day":"일 평균","dashboard.projects.title":"프로젝트 사용량","dashboard.projects.tokens_label":"토큰","dashboard.projects.stars_label":"STAR","dashboard.projects.limit_label":"표시","dashboard.projects.limit_aria":"저장소 표시 개수 선택","dashboard.projects.limit_top_3":"TOP 3","dashboard.projects.limit_top_6":"TOP 6","dashboard.projects.limit_top_10":"TOP 10","dashboard.projects.empty":"공개 저장소 없음","dashboard.widgets.title":"데스크톱 위젯","dashboard.widgets.hint":'데스크톱 우클릭 → 위젯 편집 → "TokenTracker" 검색',"dashboard.widgets.dismiss_aria":"위젯 소개 닫기","dashboard.cost_breakdown.title":"비용 내역","dashboard.cost_breakdown.total_label":"예상 총비용","dashboard.cost_breakdown.close":"닫기","trend.monitor.label":"사용 추세","heatmap.title":"활동 히트맵","heatmap.empty":"아직 활동 데이터가 없습니다.","heatmap.legend.less":"적음","heatmap.legend.more":"많음","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"토큰","heatmap.month.jan":"1월","heatmap.month.feb":"2월","heatmap.month.mar":"3월","heatmap.month.apr":"4월","heatmap.month.may":"5월","heatmap.month.jun":"6월","heatmap.month.jul":"7월","heatmap.month.aug":"8월","heatmap.month.sep":"9월","heatmap.month.oct":"10월","heatmap.month.nov":"11월","heatmap.month.dec":"12월","heatmap.day.sun":"일","heatmap.day.mon":"월","heatmap.day.tue":"화","heatmap.day.wed":"수","heatmap.day.thu":"목","heatmap.day.fri":"금","heatmap.day.sat":"토","dashboard.session_expired.copy_label":"npx --yes tokentracker-cli init 실행","dashboard.session_expired.copied":"복사됨","dashboard.install.prompt":"Node.js 18+ 설치 후 실행:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"설치 명령 복사","dashboard.install.copy_base":"init 명령 복사","dashboard.install.copied":"클립보드에 복사됨","dashboard.install.link_code.loading":"전용 코드 생성 중...","dashboard.install.link_code.failed":"전용 코드를 사용할 수 없음","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"일별 내역","dashboard.daily.empty":"아직 데이터가 없습니다. AI CLI를 사용한 다음 {{cmd}}을(를) 실행하세요.","dashboard.identity.title":"내 프로필","dashboard.identity.subtitle":"코딩 여정을 기록하세요","dashboard.identity.fallback":"익명","dashboard.screenshot.title_line1":"코딩 에이전트","dashboard.screenshot.title_line2":"2025 연말 결산","dashboard.screenshot.twitter_button":"X에 공유","dashboard.screenshot.twitter_label":"X에 공유","dashboard.screenshot.twitter_hint":"이미지를 클립보드에 자동 복사합니다","dashboard.screenshot.twitter_text":"기록된 {{total_tokens}} 토큰.\\n{{model_name}}이(가) {{model_percent}}%로 1위.\\n\\n검증되지 않은 나의 AI 사용량 →\\ntokentracker.cc","heatmap.3d.hover_tip":"클릭하여 3D 전체 화면 회전 분석 모드로 진입","heatmap.3d.modal.title":"토큰 3D 투시","heatmap.3d.modal.desc":"마우스 왼쪽 버튼으로 드래그하여 회전하세요. 마우스를 올리면 일별 활동과 다차원 지표를 확인할 수 있습니다.","heatmap.3d.modal.stats.total_tokens":"연간 총 토큰","heatmap.3d.modal.stats.precision_total_tokens":"정확한 연간 소비량","heatmap.3d.modal.stats.estimated_cost":"연간 예상 비용","heatmap.3d.modal.stats.active_rate_days":"활동 비율 / 일수","heatmap.3d.modal.stats.max_streak":"최장 연속 활동","heatmap.3d.modal.stats.days_suffix":"일","heatmap.3d.modal.stats.peak_day":"단일 최고 폭발","heatmap.3d.modal.stats.precision_peak_value":"정확한 일일 최고치","heatmap.3d.modal.stats.no_data":"데이터 없음","heatmap.3d.modal.legend.title":"활동 단계","heatmap.3d.modal.palette.emerald":"에메랄드 시티","heatmap.3d.modal.palette.ocean":"심해의 심연","heatmap.3d.modal.palette.neon":"사이버 네온","heatmap.3d.modal.palette.amber":"타오르는 호박빛","heatmap.3d.modal.control.play":"느린 자동 회전 시작","heatmap.3d.modal.control.pause":"자동 회전 일시정지","heatmap.3d.modal.control.reset":"3D 시점 초기화","heatmap.3d.modal.footer.tip":"핀치 확대 / 스크롤 확대 / 드래그로 3D 차트 회전","heatmap.3d.modal.ai.title.default":"꾸준한 창작자","heatmap.3d.modal.ai.eval.default":"기술의 강물 속에서 꾸준히 나아가세요. 매일의 코딩이 늘 웅장하지는 않더라도, 작은 활동 하나하나가 당신의 사고와 탐구를 기록합니다. 불꽃이 모여 결국 당신만의 디지털 바다로 수렴합니다.","heatmap.3d.modal.ai.title.peak":"최고 기여자","heatmap.3d.modal.ai.eval.peak":"올 한 해, 당신의 토큰 산출량은 극도로 높은 엔지니어링 밀도를 보여줍니다. 이 정도 규모의 개발은 중대형 시스템 기반의 리팩터링에 깊이 참여한 것과 맞먹으며, 키 입력 하나하나가 복잡한 로직을 결정론적 코드로 수렴시킵니다. 순수한 엔지니어링 열정의 증거입니다.","heatmap.3d.modal.ai.title.heavy":"고생산 개발자","heatmap.3d.modal.ai.eval.heavy":"탁월한 지속적 산출. 누적된 토큰이 수백만 개에 달하며, 이는 수십 편의 기술 중편 소설 분량에 해당합니다. 고도로 밀도 높은 코딩 리듬은 디지털 자산을 구축하는 당신의 뛰어난 실행력을 보여줍니다.","heatmap.3d.modal.ai.title.core":"핵심 생산성 전문가","heatmap.3d.modal.ai.eval.core":"매우 견고한 장기적 헌신. 지난 한 해 동안 당신은 고강도의 개발 리듬을 꾸준히 유지해 왔습니다. 탄탄한 코드 분량과 토큰 산출로 묵묵히 핵심 아키텍처를 쌓아 올린, 진정한 엔지니어링의 기둥입니다.","heatmap.3d.modal.ai.title.steady":"안정적인 개발자","heatmap.3d.modal.ai.eval.steady":"착실하고 굳건한 기술 축적. 토큰이 늘어나는 한 걸음 한 걸음이 미래의 기반을 다지는 벽돌입니다. 이 느리지만 꾸준한 리듬이야말로 뛰어난 개발자가 엔지니어링의 대가로 나아가는 길입니다.","heatmap.3d.voxel.joke.1":"🔥 완전 미쳤어요! {{value}} tokens 산출! 대형 언어 모델을 훈련하는 건가요, 아니면 직접 컴파일러를 만드는 건가요?","heatmap.3d.voxel.joke.2":"🚀 서사시급 산출! 총 {{value}} tokens. 오늘의 산출량이면 지구를 한 바퀴 돌 수 있어요. AI마저 당신에게 놀랐습니다!","heatmap.3d.voxel.joke.3":"⚡ 폭발의 날! {{value}} tokens. 코드가 샘솟아 키보드에서 연기가 나기 시작합니다!","heatmap.3d.voxel.level3":"⚡ 생산성 대폭발 ({{value}} tokens)! 높은 효율과 집중력, 이 최고의 상태를 계속 유지하세요!","heatmap.3d.voxel.level2":"🌱 점점 무르익는 중 ({{value}} tokens)! 꾸준한 산출, 키 입력 하나하나가 아키텍처에 기여하고 있습니다.","heatmap.3d.voxel.level1":"🍃 티끌 모아 태산 ({{value}} tokens). 작은 커밋도 미래에 대한 투자입니다. 복리의 힘을 받아들이세요!","heatmap.3d.voxel.level0":"💤 재충전 중. 코딩하지 않는 날에도 영감은 조용히 자라납니다.","ipcheck.page.title":"Claude IP 확인","ipcheck.page.subtitle":"Claude에 접속하는 출구 IP와 함께 평판, 지리 정보, 로그인에 영향을 주거나 사용 제한을 유발할 수 있는 위험 신호를 점검하세요.","ipcheck.mask.toggle":"IP 숨기기","ipcheck.ipv6.warn":"IPv6가 감지되었습니다. IPv6로 Claude Code에 접속하는 것은 권장하지 않으며, 일부 검사 결과가 불완전할 수 있습니다.","ipcheck.ip.cn":"중국 출구 IPv4","ipcheck.ip.cloudflare":"Cloudflare 출구","ipcheck.ip.claude":"Claude 출구","ipcheck.ip.failed":"가져올 수 없음","ipcheck.ip.loading":"불러오는 중...","ipcheck.trust.title":"신뢰 점수","ipcheck.trust.subtitle":"Claude 위험 관리 관점에서의 IP 청결도","ipcheck.trust.no_data":"데이터 없음","ipcheck.trust.no_ip":"Claude 출구 IP가 감지되지 않아 점수를 매길 수 없습니다","ipcheck.trust.no_score":"이 IP에 대한 점수 데이터가 없습니다","ipcheck.trust.gauge.low":"0 고위험","ipcheck.trust.gauge.high":"100 신뢰됨","ipcheck.trust.label.pristine":"매우 깨끗함","ipcheck.trust.label.clean":"깨끗함","ipcheck.trust.label.good":"양호","ipcheck.trust.label.neutral":"중립","ipcheck.trust.label.suspicious":"의심스러움","ipcheck.trust.label.unreachable":"접근 불가","ipcheck.trust.text.excellent":"평판이 매우 우수함","ipcheck.trust.text.great":"평판이 우수함","ipcheck.trust.text.minor":"경미한 위험","ipcheck.trust.text.moderate":"보통 수준의 위험","ipcheck.trust.text.severe":"심각한 위험","ipcheck.trust.text.restricted":"제한 지역 — Claude가 엄격한 위험 관리를 적용합니다","ipcheck.trust.region_warn.title":"Claude 출구 IP가 {{region}}에 있습니다","ipcheck.trust.region_warn.body":"로그인을 피하세요. 계정 플래그 처리를 유발할 가능성이 높습니다.","ipcheck.trust.region_support":"Claude 지원 지역","ipcheck.trust.region.accessible":"접근 가능","ipcheck.common.unknown":"알 수 없음","ipcheck.props.title":"IP 속성","ipcheck.props.region":"지역","ipcheck.props.city":"도시","ipcheck.props.type":"유형","ipcheck.props.asn":"ASN","ipcheck.props.org":"ISP","ipcheck.props.residential":"가정용","ipcheck.props.datacenter":"데이터센터","ipcheck.security.title":"보안 검사","ipcheck.security.vpn":"VPN","ipcheck.security.proxy":"프록시","ipcheck.security.tor":"Tor","ipcheck.security.crawler":"크롤러","ipcheck.security.abuser":"악용 이력","ipcheck.security.proxy_flag":"프록시","ipcheck.security.crawler_yes":"예","ipcheck.security.crawler_no":"아니요","ipcheck.security.abuser_yes":"기록 있음","ipcheck.security.abuser_no":"기록 없음","ipcheck.security.clean":"감지되지 않음","ipcheck.avail.title":"Claude 가용성","ipcheck.avail.tooltip":"Claude 서버는 미국에 있으므로 아시아에서 100ms를 초과하는 지연은 정상입니다.","ipcheck.avail.refresh":"새로고침","ipcheck.avail.svc_row":"서비스 상태","ipcheck.avail.latency.normal":"정상","ipcheck.avail.latency.good":"양호","ipcheck.avail.latency.slow":"느림","ipcheck.avail.latency.unreachable":"접근 불가","ipcheck.avail.svc.none":"모든 시스템 정상","ipcheck.avail.svc.minor":"경미한 장애","ipcheck.avail.svc.major":"주요 장애","ipcheck.avail.svc.critical":"심각한 장애","ipcheck.avail.svc.maintenance":"점검 중","ipcheck.avail.svc.other":"서비스 이상","ipcheck.dns.title":"DNS 누출","ipcheck.dns.status":"상태","ipcheck.dns.outlet":"DNS 출구","ipcheck.dns.outlet_ip":"DNS 출구 IP","ipcheck.dns.isp":"제공업체","ipcheck.dns.leaked":"누출 가능성 있음","ipcheck.dns.no_leak":"누출이 감지되지 않음","ipcheck.dns.encrypted":"DNS 암호화 또는 비노출","ipcheck.dns.cn_tag":"중국 DNS","ipcheck.udp.title":"WebRTC UDP 누출","ipcheck.udp.status":"상태","ipcheck.udp.outlet":"UDP 출구","ipcheck.udp.outlet_ip":"UDP 출구 IP","ipcheck.udp.origin":"출처","ipcheck.udp.disabled":"WebRTC 비활성화됨","ipcheck.udp.no_leak":"누출이 감지되지 않음","ipcheck.udp.leaked":"누출 가능성 있음","ipcheck.udp.anomaly":"이상","ipcheck.device.title":"기기 정보","ipcheck.device.tz":"시간대","ipcheck.device.lang":"언어","ipcheck.device.os":"OS / 브라우저","ipcheck.device.touch":"터치","ipcheck.device.net":"네트워크 유형","ipcheck.device.dnt":"Do Not Track","ipcheck.device.webgl_render":"WebGL 렌더러","ipcheck.device.canvas_fp":"Canvas 지문","ipcheck.device.webgl_fp":"WebGL 지문","ipcheck.device.match":"일치","ipcheck.device.mismatch":"불일치","ipcheck.device.local":"로컬","ipcheck.device.estimate_suffix":"(추정)","ipcheck.device.diff_equal":"약간의 오차","ipcheck.device.diff_ahead":"Claude가 {{h}}시간 빠름","ipcheck.device.diff_behind":"Claude가 {{h}}시간 느림","ipcheck.device.lang_expected":"Claude 지역 일반적","ipcheck.device.touch_yes":"예","ipcheck.device.touch_no":"아니요","ipcheck.device.dnt_on":"켜짐","ipcheck.device.dnt_off":"꺼짐","ipcheck.device.dnt_unset":"설정 안 됨","ipcheck.device.net_unsupported":"감지되지 않음","ipcheck.device.unsupported":"지원되지 않음","ipcheck.history.title":"Claude 출구 IP 기록","ipcheck.history.subtitle":"이 브라우저에만 저장되며 최대 6개까지 보관됩니다","ipcheck.history.clear":"지우기","ipcheck.history.empty":"아직 기록이 없습니다","ipcheck.history.current":"현재","ipcheck.region.CN":"중국 본토","ipcheck.region.HK":"홍콩","ipcheck.region.MO":"마카오","ipcheck.region.RU":"러시아","ipcheck.region.KP":"북한","ipcheck.region.IR":"이란","ipcheck.region.SY":"시리아","ipcheck.region.CU":"쿠바","ipcheck.region.BY":"벨라루스","ipcheck.region.VE":"베네수엘라","leaderboard.profile_modal.close":"닫기","leaderboard.profile_modal.loading":"프로필 불러오는 중…","leaderboard.profile_modal.error":"프로필을 불러오지 못했습니다.","leaderboard.profile_modal.empty":"이 프로필은 공개되지 않았습니다.","leaderboard.profile_modal.row_aria":"{{name}}의 프로필 열기","leaderboard.profile_modal.rank":"#{{rank}}","leaderboard.profile.hero.rank_label":"순위","leaderboard.profile_modal.hero.total_tokens":"총 토큰","leaderboard.profile_modal.hero.total_cost":"총비용","leaderboard.profile_modal.hero.github":"GitHub 프로필","leaderboard.profile_modal.stat.total_cost":"총비용","leaderboard.profile_modal.stat.total_tokens":"총 토큰","leaderboard.profile_modal.stat.active_days":"활동 일수","leaderboard.profile_modal.stat.avg_per_day":"일 평균","leaderboard.profile_modal.streak.current":"현재 연속","leaderboard.profile_modal.streak.longest":"최장 연속","leaderboard.profile_modal.streak.days":"{{count}}일","leaderboard.profile_modal.best_day.title":"최고의 날","leaderboard.profile_modal.best_day.none":"—","leaderboard.profile_modal.models.count":"{{count}}개 모델 사용","leaderboard.profile_modal.models.favorite":"최애 모델","leaderboard.profile_modal.models.none":"추적된 모델 없음","leaderboard.profile_modal.heatmap.title":"활동 (최근 365일)","leaderboard.profile_modal.providers.title":"제공자별","leaderboard.profile_modal.providers.none":"이 기간에는 사용 데이터가 없습니다.","leaderboard.profile_modal.view_full":"전체 프로필 보기","local_only.title":"앱에서 사용 가능","local_only.body":"이 페이지는 사용자의 컴퓨터에 있는 데이터를 읽으므로 Mac 앱 또는 CLI 대시보드에서만 작동합니다.","local_only.open_app":"Mac 앱에서 열기","local_only.download":"Mac 앱 받기"},qL={"landing.handle.default":"VIBE_USER","landing.handle.special":"VOLT","landing.screenshot.alt":"TokenTracker 대시보드 스크린샷","landing.nav.login":"로그인","landing.nav.signup":"회원가입","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"명령 복사","landing.install.action.copied":"복사됨","landing.meta.title":"Token Tracker — AI Agent CLI를 위한 토큰 사용량 추적기","landing.meta.description":"Claude Code, Cursor, Codex 등의 토큰 사용량을 자동으로 모니터링하세요. 로컬 우선, 개인정보 보호 중심, 수동 설정 불필요.","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/dashboard-dark.png","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker 공유","share.meta.description":"모델, 프로젝트, 기간별 토큰 사용량 인사이트가 담긴 Token Tracker 대시보드 스냅샷을 공유하세요.","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/dashboard-dark.png","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.handle.placeholder":"'{{handle}}' 입력해 보기","landing.rank.expectation":"예상 순위: {{rank}}","landing.rank.singularity":"정점","landing.rank.unranked":"순위 없음","landing.cta.primary":"대시보드 보기","landing.cta.secondary":"GITHUB 소스","landing.v2.hero.title_line1":"당신의 모든","landing.v2.hero.title_line2":"AI 토큰 추적","landing.v2.install.mac_cta":"MAC 앱 (DMG)","landing.v2.models.title":"지원하는 AI CLI 도구","landing.v2.compare.kicker":"매끄러운 추적","landing.v2.compare.title":"AI 사용량을 더 이상 추측하지 마세요.","landing.v2.compare.subtitle":"AI CLI 도구는 사용량 데이터를 잘 보이지 않는 로컬 파일에 숨겨 둡니다. TokenTracker는 이를 하나의 멋진 대시보드로 실시간 집계합니다.","landing.v2.distill.body":"100% 로컬 처리. 프롬프트나 코드는 절대 수집하지 않습니다.","landing.v2.compare.with.title":"TOKEN TRACKER 사용 시","landing.v2.compare.with.p1":"통합된 사용량 대시보드","landing.v2.compare.with.p2":"실시간 토큰 지표","landing.v2.compare.with.p3":"100% 로컬, 개인정보 보장","landing.v2.compare.without.title":"사용하지 않을 때","landing.v2.compare.without.p1":"흩어진 JSON 로그 파일","landing.v2.compare.without.p2":"토큰 소비량에 대한 깜깜이","landing.v2.compare.without.p3":"예상치 못한 API 청구서","landing.v2.footer.line":"Token Tracker — 개발자가 만든, 개발자를 위한.","landing.v2.nav.status":"상태","landing.v2.nav.github":"GitHub","landing.v2.models.agent.codex":"CODEX","landing.v2.models.agent.claude_code":"CLAUDE CODE","landing.v2.models.agent.cursor":"CURSOR","landing.v2.models.agent.gemini":"GEMINI","landing.v2.models.agent.opencode":"OPENCODE","landing.v2.models.agent.openclaw":"OPENCLAW","landing.v2.cta.primary":"Dashboard","landing.v2.hero.subtagline":"Claude Code, Cursor, Codex 등의 토큰 사용량을 자동으로 모니터링하세요. 로컬 우선, 개인정보 보호 중심, 수동 설정 불필요.","leaderboard.profile.nav.back":"리더보드","leaderboard.title":"리더보드","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"전체 기간","leaderboard.generated_at":"{{ts}} 업데이트됨","leaderboard.period.week":"주","leaderboard.period.month":"월","leaderboard.period.total":"전체","leaderboard.me_label":"나","leaderboard.anon_label":"익명","leaderboard.error.unknown":"알 수 없는 오류","leaderboard.loading":"불러오는 중…","leaderboard.empty":"데이터 없음","leaderboard.column.rank":"순위","leaderboard.column.user":"사용자","leaderboard.column.total":"전체","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"GitHub Copilot","leaderboard.column.kimi":"Kimi Code","leaderboard.column.supplemental":"기타","leaderboard.column.est_cost":"예상 비용","leaderboard.signin_prompt":"로그인하여 리더보드에 참여하세요","leaderboard.signin_button":"로그인","leaderboard.sync_prompt":"클라우드 동기화를 켜면 순위에 표시됩니다","leaderboard.sync_button.idle":"켜고 동기화","leaderboard.sync_button.busy":"동기화 중...","leaderboard.pagination.page_size_label":"페이지당 행 수","leaderboard.pagination.prev":"이전","leaderboard.pagination.next":"다음","leaderboard.pagination.ellipsis":"…","leaderboard.pagination.page_unknown":"{{page}} 페이지","share.modal.title":"내 통계 공유","share.modal.subtitle":"포스터 스타일 카드를 생성해 어디든 공유하세요.","share.modal.close":"닫기","share.modal.action.x":"X에 공유","share.modal.action.download":"다운로드","share.modal.action.copy":"이미지 복사","share.modal.hint.x":"트윗에 이미지 붙여넣기","share.modal.hint.copy":"클립보드로","share.modal.name_label":"표시 이름","share.modal.name_placeholder":"이름을 입력하세요","share.modal.style_label":"스타일","share.modal.footer":"데이터는 항상 로컬에 보관됩니다 — 이미지는 브라우저에서 생성되며 절대 업로드되지 않습니다.","share.button.label":"공유","share.button.aria":"공유 카드 열기","share.toast.copied":"이미지가 클립보드에 복사되었습니다","share.toast.downloaded":"이미지가 저장되었습니다","share.toast.failed":"이미지를 생성하지 못했습니다","share.toast.working":"생성 중…","share.variant.neon":"네온","share.variant.broadsheet":"특집","share.date.month_year":"{{year}}년 {{month}}","share.issue.all_time":"전체 기간","share.month_short.jan":"1월","share.month_short.feb":"2월","share.month_short.mar":"3월","share.month_short.apr":"4월","share.month_short.may":"5월","share.month_short.jun":"6월","share.month_short.jul":"7월","share.month_short.aug":"8월","share.month_short.sep":"9월","share.month_short.oct":"10월","share.month_short.nov":"11월","share.month_short.dec":"12월","share.hook.top_loyal":"{{percent}}%를 {{name}}에 집중.","share.hook.days_record":"{{days}}일 기록.","share.hook.top_led":"{{name}} 선두 ({{percent}}%).","share.hook.multi_models":"{{count}}개 모델, {{days}}일에 걸쳐.","share.hook.days_with_model":"{{name}}와(과) 함께한 {{days}}일.","share.hook.new_chapter":"새로운 장의 시작.","share.card.broadsheet.issue":"호","share.card.broadsheet.by":"작성자","share.card.broadsheet.tracked_since":"추적 시작","share.card.broadsheet.total_tokens":"총 토큰","share.card.broadsheet.estimated_spend":"예상 지출","share.card.broadsheet.billable_days":"활동 {{days}}일","share.card.broadsheet.heatmap_title":"올해의 인쇄본","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}}일 기록","share.card.broadsheet.roster_title":"모델 명단","share.card.broadsheet.roster_subtitle":"정기적으로 사용하는 모델","share.card.broadsheet.empty":"한산한 한 주 — 윤전기가 조용했습니다.","share.card.broadsheet.global_rank":"전체 순위","share.card.broadsheet.active_days":"활동","share.card.broadsheet.days_count":"{{days}}일","share.card.broadsheet.track_yours":"내 것도 추적하기","share.card.annual.report_title":"토큰 리포트","share.card.annual.less":"적음","share.card.annual.more":"많음","share.card.annual.heatmap_title":"토큰 사용량 히트맵","share.card.annual.total_tokens":"총 토큰","share.card.annual.estimated_cost":"예상 비용","share.card.annual.longest_streak":"최장 연속","share.card.annual.days_count":"{{days}}일","share.card.annual.top_model":"인기 모델"},ww="tokentracker-locale",go="system",iu="en",xw="zh-CN",Pw="zh-TW",Sw="ja",Cw="ko",YL=/^zh[-_](hant|tw|hk|mo)\b/i;function Tw(e){return/^zh(?:[-_]|$)/i.test(e)?YL.test(e)?Pw:xw:/^ja(?:[-_]|$)/i.test(e)?Sw:/^ko(?:[-_]|$)/i.test(e)?Cw:null}function Ew(e){return typeof e!="string"?iu:Tw(e.trim())||iu}function Ru(e){return e===go?go:Ew(e)}function ZL(){return typeof navigator>"u"?[]:Array.isArray(navigator.languages)&&navigator.languages.length?navigator.languages.filter(e=>typeof e=="string"):typeof navigator.language=="string"?[navigator.language]:[]}function ou(e,t=ZL()){const n=Ru(e);if(n!==go)return n;const r=t.map(o=>typeof o=="string"?o.trim():"").find(o=>o.length>0);return r&&Tw(r)||iu}function Df(){return Ru(Ps(ww)||go)}function XL(e){return Ss(ww,Ru(e))}const QL=["key","module","page","component","slot","text"],JL={[xw]:{...jL,...UL,...BL},[Pw]:{...FL,...VL,...zL},[Sw]:{...HL,...$L,...WL},[Cw]:{...GL,...KL,...qL}};let Oh=null,Aw=ou(Df());function eD(e){const t=[];let n=[],r="",o=!1;for(let s=0;s<e.length;s+=1){const c=e[s];if(o){c==='"'?e[s+1]==='"'?(r+='"',s+=1):o=!1:r+=c;continue}if(c==='"'){o=!0;continue}if(c===","){n.push(r),r="";continue}if(c===`
|
|
845
|
-
`){n.push(r),r="",n.every(u=>u.trim()==="")||t.push(n),n=[];continue}c!=="\r"&&(r+=c)}return n.push(r),n.every(s=>s.trim()==="")||t.push(n),t}function tD(e){const t=eD(e);if(!t.length)return{map:new Map,rows:[]};const n=t[0].map(u=>String(u).trim());if(QL.filter(u=>!n.includes(u)).length)return{map:new Map,rows:[]};const o=Object.fromEntries(n.map((u,h)=>[u,h])),s=[],c=new Map;return t.slice(1).forEach((u,h)=>{const p={key:String(u[o.key]||"").trim(),module:String(u[o.module]||"").trim(),page:String(u[o.page]||"").trim(),component:String(u[o.component]||"").trim(),slot:String(u[o.slot]||"").trim(),text:String(u[o.text]??"").trim()};p.key&&(c.has(p.key),c.set(p.key,p),s.push(p))}),{map:c,rows:s}}function nD(){return Oh||(Oh=tD(OL)),Oh}function aD(){return JL[Aw]||{}}function rD(e){const t=aD()[String(e)];return typeof t=="string"&&t.trim()?t:null}function iD(e,t){return t?e.replace(/\{\{(\w+)\}\}/g,(n,r)=>t[r]==null?n:String(t[r])):e}function oD(e){return String(e).replace(/\\n/g,`
|
|
846
|
-
`)}function sD(e,t){return rD(t)||e?.text||t}function lD(e){Aw=Ew(e)}function Fe(e,t){const r=nD().map.get(e);return iD(oD(sD(r,e)),t)}const Xv="tokentracker_native_app";let Rw=null;const xp=new Set;typeof window<"u"&&window.addEventListener("native:systemAppearanceChanged",e=>{const t=e?.detail?.isDark;if(typeof t=="boolean"){Rw=t;try{const n=document.documentElement;t?n.classList.add("dark"):n.classList.remove("dark")}catch{}xp.forEach(n=>{try{n(t)}catch{}})}});function Qv(){return Rw}function cD(e){return xp.add(e),()=>xp.delete(e)}function If(){if(typeof window>"u")return!1;try{if(new URLSearchParams(window.location.search).get("app")==="1"){try{window.localStorage.setItem(Xv,"1")}catch{}return!0}return window.localStorage.getItem(Xv)==="1"}catch{return!1}}function ra(){return typeof window>"u"?!1:!!window.webkit?.messageHandlers?.nativeBridge}function Lw(){return typeof window>"u"?null:window.webkit?.messageHandlers?.nativeBridge??null}function i4(){return!!Lw()}function Xs(e){const t=Lw();if(!t)return!1;try{return t.postMessage(e),!0}catch(n){return console.warn("[tokentracker] nativeBridge post failed:",n),!1}}function o4(){return Xs({type:"getSettings"})}function Cs(e,t){return Xs({type:"setSetting",key:e,value:t})}function s4(e){return Xs({type:"action",name:e})}function uD(){return Xs({type:"getSystemAppearance"})}function dD(e,t){if(!ra())return;Xs({type:"setChromeAppearance",isDark:e==="dark",theme:t??"system"})}function l4(e){if(typeof window>"u")return()=>{};const t=n=>{n&&n.detail&&typeof n.detail=="object"&&e(n.detail)};return window.addEventListener("native:settings",t),()=>window.removeEventListener("native:settings",t)}const Dw=b.createContext(null);function hD(){return ou(Df())}function pD(e){typeof document>"u"||(document.documentElement.lang=e)}function Jv(e,t){lD(e),t(n=>n===e?n:e)}function fD({children:e}){const[t,n]=b.useState(Df),[r,o]=b.useState(hD);b.useLayoutEffect(()=>{pD(r)},[r]),b.useLayoutEffect(()=>{ra()&&Cs("locale",t)},[t]),b.useLayoutEffect(()=>{if(t!==go||typeof window>"u")return;const u=()=>Jv(ou(go),o);return window.addEventListener("languagechange",u),()=>window.removeEventListener("languagechange",u)},[t]);const s=b.useCallback(u=>{const h=Ru(u);Jv(ou(h),o),n(h),XL(h),ra()&&Cs("locale",h)},[]),c=b.useMemo(()=>({locale:t,setLocale:s,resolvedLocale:r}),[t,r,s]);return N.jsx(Dw.Provider,{value:c,children:e})}const mD="https://open.er-api.com/v6/latest/USD",gD=1440*60*1e3,yD=5e3;function vD(e,t=gD,n=Date.now()){return!e||!Number.isFinite(e)?!0:n-e>t}async function kD(e={}){const{timeoutMs:t=yD,fetchImpl:n,url:r=mD,codes:o=Tf}=e,s=n??(typeof fetch<"u"?fetch:null);if(!s)throw new Error("fetch is not available");const c=typeof AbortController<"u"?new AbortController:null,u=c?setTimeout(()=>c.abort(),t):null;try{const h=await s(r,c?{signal:c.signal}:void 0);if(!h||!h.ok)throw new Error(`exchange rate fetch failed: ${h?.status??"no-response"}`);const m=(await h.json())?.rates;if(!m||typeof m!="object")throw new Error("exchange rate response missing rates");const y={USD:1};for(const k of o){if(k==="USD")continue;const w=m[k];au(w)&&(y[k]=w)}if(Object.keys(y).length<=1)throw new Error("no supported currency rates in response");return{rates:y,fetchedAt:Date.now()}}finally{u&&clearTimeout(u)}}const _D=b.createContext(null);function ek(e,t,n){ra()&&(Cs("currency",e),Cs("currencySymbol",n),au(t)&&Cs("exchangeRate",t))}function bD({children:e}){const[t,n]=b.useState(nL),r=b.useMemo(()=>iL(),[]),[o,s]=b.useState(r.rates),[c,u]=b.useState(r.source),[h,p]=b.useState(r.fetchedAt),m=b.useRef(!1),y=b.useRef(!1),k=b.useCallback((L,R,O)=>{s(L),u(R),p(O),oL({rates:L,source:R,fetchedAt:O})},[]),w=b.useCallback(async()=>{if(!m.current){m.current=!0;try{const{rates:L,fetchedAt:R}=await kD();k({...Ef,...L},"fetched",R)}catch{}finally{m.current=!1}}},[k]),x=b.useCallback(L=>{const R=Af(L);n(R),aL(R);const O=Ih(o,R),K=Nc(R);ek(R,O,K)},[o]);b.useEffect(()=>{y.current||t!==Os&&vD(h)&&(y.current=!0,w())},[t,h,w]),b.useEffect(()=>{const L=Ih(o,t),R=Nc(t);ek(t,L,R)},[t,o]);const C=b.useMemo(()=>Ih(o,t),[o,t]),S=b.useMemo(()=>Nc(t),[t]),D=b.useMemo(()=>({currency:t,rate:C,symbol:S,rates:o,rateSource:c,rateFetchedAt:h,setCurrency:x}),[t,C,S,o,c,h,x]);return N.jsx(_D.Provider,{value:D,children:e})}const wD="modulepreload",xD=function(e){return"/"+e},tk={},Hn=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){let h=function(p){return Promise.all(p.map(m=>Promise.resolve(m).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),u=c?.nonce||c?.getAttribute("nonce");o=h(n.map(p=>{if(p=xD(p),p in tk)return;tk[p]=!0;const m=p.endsWith(".css"),y=m?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${y}`))return;const k=document.createElement("link");if(k.rel=m?"stylesheet":wD,m||(k.as="script"),k.crossOrigin="",k.href=p,u&&k.setAttribute("nonce",u),document.head.appendChild(k),m)return new Promise((w,x)=>{k.addEventListener("load",w),k.addEventListener("error",()=>x(new Error(`Unable to preload CSS for ${p}`)))})}))}function s(c){const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=c,window.dispatchEvent(u),!u.defaultPrevented)throw c}return o.then(c=>{for(const u of c||[])u.status==="rejected"&&s(u.reason);return t().catch(s)})};var su={},PD=()=>{window.va||(window.va=function(...t){window.vaq||(window.vaq=[]),window.vaq.push(t)})},SD="@vercel/analytics",CD="2.0.1";function Iw(){return typeof window<"u"}function Mw(){try{const e="production"}catch{}return"production"}function TD(e="auto"){if(e==="auto"){window.vam=Mw();return}window.vam=e}function ED(){return(Iw()?window.vam:Mw())||"production"}function Mf(){return ED()==="development"}function AD(e){return e.scriptSrc?ro(e.scriptSrc):Mf()?"https://va.vercel-scripts.com/v1/script.debug.js":e.basePath?ro(`${e.basePath}/insights/script.js`):"/_vercel/insights/script.js"}function RD(e,t){var n;let r=e;if(t)try{r={...(n=JSON.parse(t))==null?void 0:n.analytics,...e}}catch{}TD(r.mode);const o={sdkn:SD+(r.framework?`/${r.framework}`:""),sdkv:CD};return r.disableAutoTrack&&(o.disableAutoTrack="1"),r.viewEndpoint&&(o.viewEndpoint=ro(r.viewEndpoint)),r.eventEndpoint&&(o.eventEndpoint=ro(r.eventEndpoint)),r.sessionEndpoint&&(o.sessionEndpoint=ro(r.sessionEndpoint)),Mf()&&r.debug===!1&&(o.debug="false"),r.dsn&&(o.dsn=r.dsn),r.endpoint?o.endpoint=r.endpoint:r.basePath&&(o.endpoint=ro(`${r.basePath}/insights`)),{beforeSend:r.beforeSend,src:AD(r),dataset:o}}function ro(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:`/${e}`}function LD(e={debug:!0},t){var n;if(!Iw())return;const{beforeSend:r,src:o,dataset:s}=RD(e,t);if(PD(),r&&((n=window.va)==null||n.call(window,"beforeSend",r)),document.head.querySelector(`script[src*="${o}"]`))return;const c=document.createElement("script");c.src=o;for(const[u,h]of Object.entries(s))c.dataset[u]=h;c.defer=!0,c.onerror=()=>{const u=Mf()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log(`[Vercel Web Analytics] Failed to load script from ${o}. ${u}`)},document.head.appendChild(c)}function DD({route:e,path:t}){var n;(n=window.va)==null||n.call(window,"pageview",{route:e,path:t})}function ID(){if(!(typeof process>"u"||typeof su>"u"))return su.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}function MD(){if(!(typeof process>"u"||typeof su>"u"))return su.REACT_APP_VERCEL_OBSERVABILITY_CLIENT_CONFIG}function ND(e){return b.useEffect(()=>{var t;e.beforeSend&&((t=window.va)==null||t.call(window,"beforeSend",e.beforeSend))},[e.beforeSend]),b.useEffect(()=>{LD({framework:e.framework||"react",basePath:e.basePath??ID(),...e.route!==void 0&&{disableAutoTrack:!0},...e},e.configString??MD())},[]),b.useEffect(()=>{e.route&&e.path&&DD({route:e.route,path:e.path})},[e.route,e.path]),null}var lu={},OD=()=>{window.si||(window.si=function(...t){window.siq=window.siq||[],window.siq.push(t)})},jD="@vercel/speed-insights",UD="2.0.0";function BD(){return typeof window<"u"}function FD(){try{const e="production"}catch{}return"production"}function Nw(){return FD()==="development"}function VD(e){return e.scriptSrc?cu(e.scriptSrc):Nw()?"https://va.vercel-scripts.com/v1/speed-insights/script.debug.js":e.dsn?"https://va.vercel-scripts.com/v1/speed-insights/script.js":e.basePath?cu(`${e.basePath}/speed-insights/script.js`):"/_vercel/speed-insights/script.js"}function zD(e,t){var n;let r=e;if(t)try{r={...(n=JSON.parse(t))==null?void 0:n.speedInsights,...e}}catch{}const o={sdkn:jD+(r.framework?`/${r.framework}`:""),sdkv:UD};return r.sampleRate&&(o.sampleRate=r.sampleRate.toString()),r.route&&(o.route=r.route),Nw()&&r.debug===!1&&(o.debug="false"),r.dsn&&(o.dsn=r.dsn),r.endpoint?o.endpoint=cu(r.endpoint):r.basePath&&(o.endpoint=cu(`${r.basePath}/speed-insights/vitals`)),{src:VD(r),beforeSend:r.beforeSend,dataset:o}}function cu(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:`/${e}`}function HD(e={},t){var n;if(!BD()||e.route===null)return null;OD();const{beforeSend:r,src:o,dataset:s}=zD(e,t);if(document.head.querySelector(`script[src*="${o}"]`))return null;r&&((n=window.si)==null||n.call(window,"beforeSend",r));const c=document.createElement("script");c.src=o,c.defer=!0;for(const[u,h]of Object.entries(s))c.dataset[u]=h;return c.onerror=()=>{console.log(`[Vercel Speed Insights] Failed to load script from ${o}. Please check if any content blockers are enabled and try again.`)},document.head.appendChild(c),{setRoute:u=>{c.dataset.route=u??void 0}}}function $D(){if(!(typeof process>"u"||typeof lu>"u"))return lu.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}function WD(){if(!(typeof process>"u"||typeof lu>"u"))return lu.REACT_APP_VERCEL_OBSERVABILITY_CLIENT_CONFIG}function GD(e){b.useEffect(()=>{var n;e.beforeSend&&((n=window.si)==null||n.call(window,"beforeSend",e.beforeSend))},[e.beforeSend]);const t=b.useRef(null);return b.useEffect(()=>{if(!t.current){const n=HD({framework:e.framework??"react",basePath:e.basePath??$D(),...e},e.configString??WD());n&&(t.current=n.setRoute)}},[e]),b.useEffect(()=>{t.current&&e.route&&t.current(e.route)},[e.route]),null}const Ow=(...e)=>e.filter((t,n,r)=>!!t&&t.trim()!==""&&r.indexOf(t)===n).join(" ").trim();const KD=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const qD=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,n,r)=>r?r.toUpperCase():n.toLowerCase());const nk=e=>{const t=qD(e);return t.charAt(0).toUpperCase()+t.slice(1)};var jh={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const YD=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0;return!1},ZD=b.createContext({}),XD=()=>b.useContext(ZD),QD=b.forwardRef(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:o="",children:s,iconNode:c,...u},h)=>{const{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:y=!1,color:k="currentColor",className:w=""}=XD()??{},x=r??y?Number(n??m)*24/Number(t??p):n??m;return b.createElement("svg",{ref:h,...jh,width:t??p??jh.width,height:t??p??jh.height,stroke:e??k,strokeWidth:x,className:Ow("lucide",w,o),...!s&&!YD(u)&&{"aria-hidden":"true"},...u},[...c.map(([C,S])=>b.createElement(C,S)),...Array.isArray(s)?s:[s]])});const hn=(e,t)=>{const n=b.forwardRef(({className:r,...o},s)=>b.createElement(QD,{ref:s,iconNode:t,className:Ow(`lucide-${KD(nk(e))}`,`lucide-${e}`,r),...o}));return n.displayName=nk(e),n};const JD=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],eI=hn("chart-column",JD);const tI=[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]],nI=hn("gauge",tI);const aI=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],rI=hn("globe",aI);const iI=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],oI=hn("layout-grid",iI);const sI=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],lI=hn("mail",sI);const cI=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],uI=hn("menu",cI);const dI=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],hI=hn("monitor",dI);const pI=[["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",key:"kfwtm"}]],jw=hn("moon",pI);const fI=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],mI=hn("puzzle",fI);const gI=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],yI=hn("refresh-cw",gI);const vI=[["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",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],kI=hn("settings",vI);const _I=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],Uw=hn("sun",_I);const bI=[["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",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],wI=hn("triangle-alert",bI);const xI=[["path",{d:"M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978",key:"1n3hpd"}],["path",{d:"M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978",key:"rfe1zi"}],["path",{d:"M18 9h1.5a1 1 0 0 0 0-5H18",key:"7xy6bh"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z",key:"1mhfuq"}],["path",{d:"M6 9H4.5a1 1 0 0 1 0-5H6",key:"tex48p"}]],PI=hn("trophy",xI);const SI=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Bw=hn("x",SI);function CI({children:e,variant:t="primary",size:n="md",onClick:r,disabled:o=!1,className:s="",as:c="button",...u}){const h="inline-flex items-center justify-center font-medium transition-all duration-200 rounded-md focus:outline-none focus:ring-2 focus:ring-oai-blue/30 active:scale-[0.98] active:duration-100",p={primary:"bg-oai-black dark:bg-oai-white text-white dark:text-oai-black border border-transparent hover:bg-oai-gray-800 dark:hover:bg-oai-gray-200 active:bg-oai-gray-900 dark:active:bg-oai-gray-300 disabled:bg-oai-gray-300 dark:disabled:bg-oai-gray-700 disabled:text-oai-gray-500 dark:disabled:text-oai-gray-400 focus:ring-oai-brand/30 transition-colors duration-200",secondary:"bg-oai-white dark:bg-oai-gray-900 text-oai-black dark:text-oai-white border border-oai-gray-300 dark:border-oai-gray-700 hover:border-oai-brand hover:text-oai-brand active:bg-oai-gray-50 dark:active:bg-oai-gray-800 active:border-oai-brand-dark disabled:text-oai-gray-400 dark:disabled:text-oai-gray-500 disabled:border-oai-gray-200 dark:disabled:border-oai-gray-700 focus:ring-oai-brand/30 transition-colors duration-200",ghost:"bg-transparent text-oai-gray-600 dark:text-oai-gray-300 border border-transparent hover:text-oai-brand hover:bg-oai-brand-50/50 dark:hover:bg-oai-brand-950/30 active:bg-oai-brand-50 dark:active:bg-oai-brand-900/50 disabled:text-oai-gray-400 dark:disabled:text-oai-gray-500 focus:ring-oai-brand/30 transition-colors duration-200"},m={sm:"h-8 px-3 text-sm",md:"h-10 px-4 text-sm",lg:"h-12 px-6 text-base"},y=o?"cursor-not-allowed opacity-60":"cursor-pointer",k=`${h} ${p[t]} ${m[n]} ${y} ${s}`;return N.jsx(c,{className:k,onClick:r,disabled:o,...u,children:e})}class TI extends Ls.Component{constructor(t){super(t),this.state={error:null},this.handleReload=this.handleReload.bind(this)}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,n){console.error("ErrorBoundary caught an error:",t)}handleReload(){typeof window>"u"||window.location.reload()}render(){const{error:t}=this.state;if(!t)return this.props.children;const n=String(t?.message||t||""),r=n?Fe("shared.error.prefix",{error:n}):Fe("error.boundary.no_details");return N.jsx("div",{className:"flex min-h-screen items-center justify-center bg-oai-white p-6 font-oai text-oai-black antialiased dark:bg-oai-gray-950 dark:text-oai-white",children:N.jsxs("div",{className:"w-full max-w-lg rounded-xl border border-oai-gray-200 bg-white p-6 text-center shadow-sm dark:border-oai-gray-800 dark:bg-oai-gray-900",children:[N.jsx("div",{className:"mx-auto flex h-10 w-10 items-center justify-center rounded-full bg-amber-50 text-amber-600 dark:bg-amber-950/30 dark:text-amber-300",children:N.jsx(wI,{className:"h-5 w-5","aria-hidden":!0})}),N.jsx("div",{className:"mt-4 text-xs font-medium uppercase text-oai-gray-500 dark:text-oai-gray-400",children:Fe("error.boundary.title")}),N.jsx("h1",{className:"mt-2 text-xl font-semibold text-oai-black dark:text-white",children:Fe("error.boundary.subtitle")}),N.jsx("p",{className:"mt-2 text-sm text-oai-gray-500 dark:text-oai-gray-400",children:Fe("error.boundary.hint")}),N.jsx("div",{className:"mt-4 max-h-32 overflow-auto rounded-lg border border-oai-gray-200 bg-oai-gray-50 px-3 py-2 text-left text-xs leading-5 text-oai-gray-600 dark:border-oai-gray-800 dark:bg-oai-gray-950 dark:text-oai-gray-300",children:r}),N.jsxs(CI,{type:"button",size:"md",onClick:this.handleReload,className:"mt-5",children:[N.jsx(yI,{className:"mr-2 h-4 w-4","aria-hidden":!0}),Fe("error.boundary.action.reload")]})]})})}}function Qs(){const e=b.useContext(Dw);if(e===null)throw new Error("useLocale must be used within a LocaleProvider");return e}const Pp="tokentracker-theme",Fw=b.createContext(null);function EI(){if(typeof window>"u")return"system";try{const e=localStorage.getItem(Pp);if(e==="light"||e==="dark"||e==="system")return e}catch{}return"system"}function yc(){return typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function AI(e){if(typeof document>"u")return;const t=document.documentElement;e==="dark"?t.classList.add("dark"):t.classList.remove("dark")}function RI({children:e}){const[t,n]=b.useState(EI),[r,o]=b.useState(()=>{if(t!=="system")return t;if(ra()){const p=Qv();if(typeof p=="boolean")return p?"dark":"light"}return yc()}),s=b.useRef(t);b.useEffect(()=>{s.current=t},[t]),b.useEffect(()=>{AI(r)},[r]),b.useLayoutEffect(()=>{if(t==="system"){if(ra()){const p=Qv();o(typeof p=="boolean"?p?"dark":"light":yc()),uD();return}o(yc())}else o(t)},[t]),b.useEffect(()=>ra()?cD(m=>{s.current==="system"&&o(m?"dark":"light")}):void 0,[]),b.useEffect(()=>{if(typeof window>"u"||t!=="system"||ra())return;const p=window.matchMedia("(prefers-color-scheme: dark)"),m=y=>{const k=y.matches?"dark":"light";o(k)};return p.addEventListener?(p.addEventListener("change",m),()=>p.removeEventListener("change",m)):(p.addListener(m),()=>p.removeListener(m))},[t]),b.useEffect(()=>{const p=t==="system"&&!ra()?yc():r;dD(p,t)},[r,t]);const c=b.useCallback(p=>{if(n(p),typeof window<"u")try{localStorage.setItem(Pp,p)}catch{}},[]),u=b.useCallback(()=>{c(p=>{const m=p==="dark"?"light":"dark";if(typeof window<"u")try{localStorage.setItem(Pp,m)}catch{}return m})},[]),h=b.useMemo(()=>({theme:t,setTheme:c,toggleTheme:u,resolvedTheme:r}),[t,c,u,r]);return N.jsx(Fw.Provider,{value:h,children:e})}const Vw=b.createContext({isOpen:!1,openLoginModal:()=>{},closeLoginModal:()=>{}});function LI({children:e}){const[t,n]=b.useState(!1),r=b.useCallback(()=>n(!0),[]),o=b.useCallback(()=>n(!1),[]);return N.jsx(Vw.Provider,{value:{isOpen:t,openLoginModal:r,closeLoginModal:o},children:e})}function zw(){return b.useContext(Vw)}const Nf=b.createContext({});function Of(e){const t=b.useRef(null);return t.current===null&&(t.current=e()),t.current}const DI=typeof window<"u",Hw=DI?b.useLayoutEffect:b.useEffect,Lu=b.createContext(null);function jf(e,t){e.indexOf(t)===-1&&e.push(t)}function uu(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}const xa=(e,t,n)=>n>t?t:n<e?e:n;let Uf=()=>{};const Mr={},$w=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e);function Ww(e){return typeof e=="object"&&e!==null}const Gw=e=>/^0[^.\s]+$/u.test(e);function Kw(e){let t;return()=>(t===void 0&&(t=e()),t)}const jn=e=>e,II=(e,t)=>n=>t(e(n)),Js=(...e)=>e.reduce(II),Us=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r};class Bf{constructor(){this.subscriptions=[]}add(t){return jf(this.subscriptions,t),()=>uu(this.subscriptions,t)}notify(t,n,r){const o=this.subscriptions.length;if(o)if(o===1)this.subscriptions[0](t,n,r);else for(let s=0;s<o;s++){const c=this.subscriptions[s];c&&c(t,n,r)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const Sn=e=>e*1e3,On=e=>e/1e3;function qw(e,t){return t?e*(1e3/t):0}const Yw=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,MI=1e-7,NI=12;function OI(e,t,n,r,o){let s,c,u=0;do c=t+(n-t)/2,s=Yw(c,r,o)-e,s>0?n=c:t=c;while(Math.abs(s)>MI&&++u<NI);return c}function el(e,t,n,r){if(e===t&&n===r)return jn;const o=s=>OI(s,0,1,e,n);return s=>s===0||s===1?s:Yw(o(s),t,r)}const Zw=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,Xw=e=>t=>1-e(1-t),Qw=el(.33,1.53,.69,.99),Ff=Xw(Qw),Jw=Zw(Ff),e0=e=>e>=1?1:(e*=2)<1?.5*Ff(e):.5*(2-Math.pow(2,-10*(e-1))),Vf=e=>1-Math.sin(Math.acos(e)),t0=Xw(Vf),n0=Zw(Vf),jI=el(.42,0,1,1),UI=el(0,0,.58,1),a0=el(.42,0,.58,1),BI=e=>Array.isArray(e)&&typeof e[0]!="number",r0=e=>Array.isArray(e)&&typeof e[0]=="number",FI={linear:jn,easeIn:jI,easeInOut:a0,easeOut:UI,circIn:Vf,circInOut:n0,circOut:t0,backIn:Ff,backInOut:Jw,backOut:Qw,anticipate:e0},VI=e=>typeof e=="string",ak=e=>{if(r0(e)){Uf(e.length===4);const[t,n,r,o]=e;return el(t,n,r,o)}else if(VI(e))return FI[e];return e},vc=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function zI(e,t){let n=new Set,r=new Set,o=!1,s=!1;const c=new WeakSet;let u={delta:0,timestamp:0,isProcessing:!1};function h(m){c.has(m)&&(p.schedule(m),e()),m(u)}const p={schedule:(m,y=!1,k=!1)=>{const x=k&&o?n:r;return y&&c.add(m),x.add(m),m},cancel:m=>{r.delete(m),c.delete(m)},process:m=>{if(u=m,o){s=!0;return}o=!0;const y=n;n=r,r=y,n.forEach(h),n.clear(),o=!1,s&&(s=!1,p.process(m))}};return p}const HI=40;function i0(e,t){let n=!1,r=!0;const o={delta:0,timestamp:0,isProcessing:!1},s=()=>n=!0,c=vc.reduce((R,O)=>(R[O]=zI(s),R),{}),{setup:u,read:h,resolveKeyframes:p,preUpdate:m,update:y,preRender:k,render:w,postRender:x}=c,C=()=>{const R=Mr.useManualTiming,O=R?o.timestamp:performance.now();n=!1,R||(o.delta=r?1e3/60:Math.max(Math.min(O-o.timestamp,HI),1)),o.timestamp=O,o.isProcessing=!0,u.process(o),h.process(o),p.process(o),m.process(o),y.process(o),k.process(o),w.process(o),x.process(o),o.isProcessing=!1,n&&t&&(r=!1,e(C))},S=()=>{n=!0,r=!0,o.isProcessing||e(C)};return{schedule:vc.reduce((R,O)=>{const K=c[O];return R[O]=(W,z=!1,P=!1)=>(n||S(),K.schedule(W,z,P)),R},{}),cancel:R=>{for(let O=0;O<vc.length;O++)c[vc[O]].cancel(R)},state:o,steps:c}}const{schedule:dt,cancel:Nr,state:Gt,steps:Uh}=i0(typeof requestAnimationFrame<"u"?requestAnimationFrame:jn,!0);let jc;function $I(){jc=void 0}const sn={now:()=>(jc===void 0&&sn.set(Gt.isProcessing||Mr.useManualTiming?Gt.timestamp:performance.now()),jc),set:e=>{jc=e,queueMicrotask($I)}},o0=e=>t=>typeof t=="string"&&t.startsWith(e),s0=o0("--"),WI=o0("var(--"),zf=e=>WI(e)?GI.test(e.split("/*")[0].trim()):!1,GI=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function rk(e){return typeof e!="string"?!1:e.split("/*")[0].includes("var(--")}const bo={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Bs={...bo,transform:e=>xa(0,1,e)},kc={...bo,default:1},Ts=e=>Math.round(e*1e5)/1e5,Hf=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function KI(e){return e==null}const qI=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,$f=(e,t)=>n=>!!(typeof n=="string"&&qI.test(n)&&n.startsWith(e)||t&&!KI(n)&&Object.prototype.hasOwnProperty.call(n,t)),l0=(e,t,n)=>r=>{if(typeof r!="string")return r;const[o,s,c,u]=r.match(Hf);return{[e]:parseFloat(o),[t]:parseFloat(s),[n]:parseFloat(c),alpha:u!==void 0?parseFloat(u):1}},YI=e=>xa(0,255,e),Bh={...bo,transform:e=>Math.round(YI(e))},ri={test:$f("rgb","red"),parse:l0("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+Bh.transform(e)+", "+Bh.transform(t)+", "+Bh.transform(n)+", "+Ts(Bs.transform(r))+")"};function ZI(e){let t="",n="",r="",o="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),r=e.substring(5,7),o=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),r=e.substring(3,4),o=e.substring(4,5),t+=t,n+=n,r+=r,o+=o),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(r,16),alpha:o?parseInt(o,16)/255:1}}const Sp={test:$f("#"),parse:ZI,transform:ri.transform},tl=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),Sr=tl("deg"),va=tl("%"),_e=tl("px"),XI=tl("vh"),QI=tl("vw"),ik={...va,parse:e=>va.parse(e)/100,transform:e=>va.transform(e*100)},io={test:$f("hsl","hue"),parse:l0("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+va.transform(Ts(t))+", "+va.transform(Ts(n))+", "+Ts(Bs.transform(r))+")"},Lt={test:e=>ri.test(e)||Sp.test(e)||io.test(e),parse:e=>ri.test(e)?ri.parse(e):io.test(e)?io.parse(e):Sp.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?ri.transform(e):io.transform(e),getAnimatableNone:e=>{const t=Lt.parse(e);return t.alpha=0,Lt.transform(t)}},JI=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function e2(e){return isNaN(e)&&typeof e=="string"&&(e.match(Hf)?.length||0)+(e.match(JI)?.length||0)>0}const c0="number",u0="color",t2="var",n2="var(",ok="${}",a2=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function yo(e){const t=e.toString(),n=[],r={color:[],number:[],var:[]},o=[];let s=0;const u=t.replace(a2,h=>(Lt.test(h)?(r.color.push(s),o.push(u0),n.push(Lt.parse(h))):h.startsWith(n2)?(r.var.push(s),o.push(t2),n.push(h)):(r.number.push(s),o.push(c0),n.push(parseFloat(h))),++s,ok)).split(ok);return{values:n,split:u,indexes:r,types:o}}function r2(e){return yo(e).values}function d0({split:e,types:t}){const n=e.length;return r=>{let o="";for(let s=0;s<n;s++)if(o+=e[s],r[s]!==void 0){const c=t[s];c===c0?o+=Ts(r[s]):c===u0?o+=Lt.transform(r[s]):o+=r[s]}return o}}function i2(e){return d0(yo(e))}const o2=e=>typeof e=="number"?0:Lt.test(e)?Lt.getAnimatableNone(e):e,s2=(e,t)=>typeof e=="number"?t?.trim().endsWith("/")?e:0:o2(e);function l2(e){const t=yo(e);return d0(t)(t.values.map((r,o)=>s2(r,t.split[o])))}const oa={test:e2,parse:r2,createTransformer:i2,getAnimatableNone:l2};function Fh(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function c2({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=100;let o=0,s=0,c=0;if(!t)o=s=c=n;else{const u=n<.5?n*(1+t):n+t-n*t,h=2*n-u;o=Fh(h,u,e+1/3),s=Fh(h,u,e),c=Fh(h,u,e-1/3)}return{red:Math.round(o*255),green:Math.round(s*255),blue:Math.round(c*255),alpha:r}}function du(e,t){return n=>n>0?t:e}const vt=(e,t,n)=>e+(t-e)*n,Vh=(e,t,n)=>{const r=e*e,o=n*(t*t-r)+r;return o<0?0:Math.sqrt(o)},u2=[Sp,ri,io],d2=e=>u2.find(t=>t.test(e));function sk(e){const t=d2(e);if(!t)return!1;let n=t.parse(e);return t===io&&(n=c2(n)),n}const lk=(e,t)=>{const n=sk(e),r=sk(t);if(!n||!r)return du(e,t);const o={...n};return s=>(o.red=Vh(n.red,r.red,s),o.green=Vh(n.green,r.green,s),o.blue=Vh(n.blue,r.blue,s),o.alpha=vt(n.alpha,r.alpha,s),ri.transform(o))},Cp=new Set(["none","hidden"]);function h2(e,t){return Cp.has(e)?n=>n<=0?e:t:n=>n>=1?t:e}function p2(e,t){return n=>vt(e,t,n)}function Wf(e){return typeof e=="number"?p2:typeof e=="string"?zf(e)?du:Lt.test(e)?lk:g2:Array.isArray(e)?h0:typeof e=="object"?Lt.test(e)?lk:f2:du}function h0(e,t){const n=[...e],r=n.length,o=e.map((s,c)=>Wf(s)(s,t[c]));return s=>{for(let c=0;c<r;c++)n[c]=o[c](s);return n}}function f2(e,t){const n={...e,...t},r={};for(const o in n)e[o]!==void 0&&t[o]!==void 0&&(r[o]=Wf(e[o])(e[o],t[o]));return o=>{for(const s in r)n[s]=r[s](o);return n}}function m2(e,t){const n=[],r={color:0,var:0,number:0};for(let o=0;o<t.values.length;o++){const s=t.types[o],c=e.indexes[s][r[s]],u=e.values[c]??0;n[o]=u,r[s]++}return n}const g2=(e,t)=>{const n=oa.createTransformer(t),r=yo(e),o=yo(t);return r.indexes.var.length===o.indexes.var.length&&r.indexes.color.length===o.indexes.color.length&&r.indexes.number.length>=o.indexes.number.length?Cp.has(e)&&!o.values.length||Cp.has(t)&&!r.values.length?h2(e,t):Js(h0(m2(r,o),o.values),n):du(e,t)};function p0(e,t,n){return typeof e=="number"&&typeof t=="number"&&typeof n=="number"?vt(e,t,n):Wf(e)(e,t)}const y2=e=>{const t=({timestamp:n})=>e(n);return{start:(n=!0)=>dt.update(t,n),stop:()=>Nr(t),now:()=>Gt.isProcessing?Gt.timestamp:sn.now()}},f0=(e,t,n=10)=>{let r="";const o=Math.max(Math.round(t/n),2);for(let s=0;s<o;s++)r+=Math.round(e(s/(o-1))*1e4)/1e4+", ";return`linear(${r.substring(0,r.length-2)})`},hu=2e4;function Gf(e){let t=0;const n=50;let r=e.next(t);for(;!r.done&&t<hu;)t+=n,r=e.next(t);return t>=hu?1/0:t}function v2(e,t=100,n){const r=n({...e,keyframes:[0,t]}),o=Math.min(Gf(r),hu);return{type:"keyframes",ease:s=>r.next(o*s).value/t,duration:On(o)}}const Pt={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function Tp(e,t){return e*Math.sqrt(1-t*t)}const k2=12;function _2(e,t,n){let r=n;for(let o=1;o<k2;o++)r=r-e(r)/t(r);return r}const zh=.001;function b2({duration:e=Pt.duration,bounce:t=Pt.bounce,velocity:n=Pt.velocity,mass:r=Pt.mass}){let o,s,c=1-t;c=xa(Pt.minDamping,Pt.maxDamping,c),e=xa(Pt.minDuration,Pt.maxDuration,On(e)),c<1?(o=p=>{const m=p*c,y=m*e,k=m-n,w=Tp(p,c),x=Math.exp(-y);return zh-k/w*x},s=p=>{const y=p*c*e,k=y*n+n,w=Math.pow(c,2)*Math.pow(p,2)*e,x=Math.exp(-y),C=Tp(Math.pow(p,2),c);return(-o(p)+zh>0?-1:1)*((k-w)*x)/C}):(o=p=>{const m=Math.exp(-p*e),y=(p-n)*e+1;return-zh+m*y},s=p=>{const m=Math.exp(-p*e),y=(n-p)*(e*e);return m*y});const u=5/e,h=_2(o,s,u);if(e=Sn(e),isNaN(h))return{stiffness:Pt.stiffness,damping:Pt.damping,duration:e};{const p=Math.pow(h,2)*r;return{stiffness:p,damping:c*2*Math.sqrt(r*p),duration:e}}}const w2=["duration","bounce"],x2=["stiffness","damping","mass"];function ck(e,t){return t.some(n=>e[n]!==void 0)}function P2(e){let t={velocity:Pt.velocity,stiffness:Pt.stiffness,damping:Pt.damping,mass:Pt.mass,isResolvedFromDuration:!1,...e};if(!ck(e,x2)&&ck(e,w2))if(t.velocity=0,e.visualDuration){const n=e.visualDuration,r=2*Math.PI/(n*1.2),o=r*r,s=2*xa(.05,1,1-(e.bounce||0))*Math.sqrt(o);t={...t,mass:Pt.mass,stiffness:o,damping:s}}else{const n=b2({...e,velocity:0});t={...t,...n,mass:Pt.mass},t.isResolvedFromDuration=!0}return t}function pu(e=Pt.visualDuration,t=Pt.bounce){const n=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e;let{restSpeed:r,restDelta:o}=n;const s=n.keyframes[0],c=n.keyframes[n.keyframes.length-1],u={done:!1,value:s},{stiffness:h,damping:p,mass:m,duration:y,velocity:k,isResolvedFromDuration:w}=P2({...n,velocity:-On(n.velocity||0)}),x=k||0,C=p/(2*Math.sqrt(h*m)),S=c-s,D=On(Math.sqrt(h/m)),L=Math.abs(S)<5;r||(r=L?Pt.restSpeed.granular:Pt.restSpeed.default),o||(o=L?Pt.restDelta.granular:Pt.restDelta.default);let R,O,K,W,z,P;if(C<1)K=Tp(D,C),W=(x+C*D*S)/K,R=X=>{const ue=Math.exp(-C*D*X);return c-ue*(W*Math.sin(K*X)+S*Math.cos(K*X))},z=C*D*W+S*K,P=C*D*S-W*K,O=X=>Math.exp(-C*D*X)*(z*Math.sin(K*X)+P*Math.cos(K*X));else if(C===1){R=ue=>c-Math.exp(-D*ue)*(S+(x+D*S)*ue);const X=x+D*S;O=ue=>Math.exp(-D*ue)*(D*X*ue-x)}else{const X=D*Math.sqrt(C*C-1);R=pe=>{const le=Math.exp(-C*D*pe),fe=Math.min(X*pe,300);return c-le*((x+C*D*S)*Math.sinh(fe)+X*S*Math.cosh(fe))/X};const ue=(x+C*D*S)/X,se=C*D*ue-S*X,Ae=C*D*S-ue*X;O=pe=>{const le=Math.exp(-C*D*pe),fe=Math.min(X*pe,300);return le*(se*Math.sinh(fe)+Ae*Math.cosh(fe))}}const Y={calculatedDuration:w&&y||null,velocity:X=>Sn(O(X)),next:X=>{if(!w&&C<1){const se=Math.exp(-C*D*X),Ae=Math.sin(K*X),pe=Math.cos(K*X),le=c-se*(W*Ae+S*pe),fe=Sn(se*(z*Ae+P*pe));return u.done=Math.abs(fe)<=r&&Math.abs(c-le)<=o,u.value=u.done?c:le,u}const ue=R(X);if(w)u.done=X>=y;else{const se=Sn(O(X));u.done=Math.abs(se)<=r&&Math.abs(c-ue)<=o}return u.value=u.done?c:ue,u},toString:()=>{const X=Math.min(Gf(Y),hu),ue=f0(se=>Y.next(X*se).value,X,30);return X+"ms "+ue},toTransition:()=>{}};return Y}pu.applyToOptions=e=>{const t=v2(e,100,pu);return e.ease=t.ease,e.duration=Sn(t.duration),e.type="keyframes",e};const S2=5;function m0(e,t,n){const r=Math.max(t-S2,0);return qw(n-e(r),t-r)}function Ep({keyframes:e,velocity:t=0,power:n=.8,timeConstant:r=325,bounceDamping:o=10,bounceStiffness:s=500,modifyTarget:c,min:u,max:h,restDelta:p=.5,restSpeed:m}){const y=e[0],k={done:!1,value:y},w=P=>u!==void 0&&P<u||h!==void 0&&P>h,x=P=>u===void 0?h:h===void 0||Math.abs(u-P)<Math.abs(h-P)?u:h;let C=n*t;const S=y+C,D=c===void 0?S:c(S);D!==S&&(C=D-y);const L=P=>-C*Math.exp(-P/r),R=P=>D+L(P),O=P=>{const Y=L(P),X=R(P);k.done=Math.abs(Y)<=p,k.value=k.done?D:X};let K,W;const z=P=>{w(k.value)&&(K=P,W=pu({keyframes:[k.value,x(k.value)],velocity:m0(R,P,k.value),damping:o,stiffness:s,restDelta:p,restSpeed:m}))};return z(0),{calculatedDuration:null,next:P=>{let Y=!1;return!W&&K===void 0&&(Y=!0,O(P),z(P)),K!==void 0&&P>=K?W.next(P-K):(!Y&&O(P),k)}}}function C2(e,t,n){const r=[],o=n||Mr.mix||p0,s=e.length-1;for(let c=0;c<s;c++){let u=o(e[c],e[c+1]);if(t){const h=Array.isArray(t)?t[c]||jn:t;u=Js(h,u)}r.push(u)}return r}function T2(e,t,{clamp:n=!0,ease:r,mixer:o}={}){const s=e.length;if(Uf(s===t.length),s===1)return()=>t[0];if(s===2&&t[0]===t[1])return()=>t[1];const c=e[0]===e[1];e[0]>e[s-1]&&(e=[...e].reverse(),t=[...t].reverse());const u=C2(t,r,o),h=u.length,p=m=>{if(c&&m<e[0])return t[0];let y=0;if(h>1)for(;y<e.length-2&&!(m<e[y+1]);y++);const k=Us(e[y],e[y+1],m);return u[y](k)};return n?m=>p(xa(e[0],e[s-1],m)):p}function E2(e,t){const n=e[e.length-1];for(let r=1;r<=t;r++){const o=Us(0,t,r);e.push(vt(n,1,o))}}function A2(e){const t=[0];return E2(t,e.length-1),t}function R2(e,t){return e.map(n=>n*t)}function L2(e,t){return e.map(()=>t||a0).splice(0,e.length-1)}function Es({duration:e=300,keyframes:t,times:n,ease:r="easeInOut"}){const o=BI(r)?r.map(ak):ak(r),s={done:!1,value:t[0]},c=R2(n&&n.length===t.length?n:A2(t),e),u=T2(c,t,{ease:Array.isArray(o)?o:L2(t,o)});return{calculatedDuration:e,next:h=>(s.value=u(h),s.done=h>=e,s)}}const D2=e=>e!==null;function Du(e,{repeat:t,repeatType:n="loop"},r,o=1){const s=e.filter(D2),u=o<0||t&&n!=="loop"&&t%2===1?0:s.length-1;return!u||r===void 0?s[u]:r}const I2={decay:Ep,inertia:Ep,tween:Es,keyframes:Es,spring:pu};function g0(e){typeof e.type=="string"&&(e.type=I2[e.type])}class Kf{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(t=>{this.resolve=t})}notifyFinished(){this.resolve()}then(t,n){return this.finished.then(t,n)}}const M2=e=>e/100;class fu extends Kf{constructor(t){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{const{motionValue:n}=this.options;n&&n.updatedAt!==sn.now()&&this.tick(sn.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=t,this.initAnimation(),this.play(),t.autoplay===!1&&this.pause()}initAnimation(){const{options:t}=this;g0(t);const{type:n=Es,repeat:r=0,repeatDelay:o=0,repeatType:s,velocity:c=0}=t;let{keyframes:u}=t;const h=n||Es;h!==Es&&typeof u[0]!="number"&&(this.mixKeyframes=Js(M2,p0(u[0],u[1])),u=[0,100]);const p=h({...t,keyframes:u});s==="mirror"&&(this.mirroredGenerator=h({...t,keyframes:[...u].reverse(),velocity:-c})),p.calculatedDuration===null&&(p.calculatedDuration=Gf(p));const{calculatedDuration:m}=p;this.calculatedDuration=m,this.resolvedDuration=m+o,this.totalDuration=this.resolvedDuration*(r+1)-o,this.generator=p}updateTime(t){const n=Math.round(t-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=n}tick(t,n=!1){const{generator:r,totalDuration:o,mixKeyframes:s,mirroredGenerator:c,resolvedDuration:u,calculatedDuration:h}=this;if(this.startTime===null)return r.next(0);const{delay:p=0,keyframes:m,repeat:y,repeatType:k,repeatDelay:w,type:x,onUpdate:C,finalKeyframe:S}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-o/this.speed,this.startTime)),n?this.currentTime=t:this.updateTime(t);const D=this.currentTime-p*(this.playbackSpeed>=0?1:-1),L=this.playbackSpeed>=0?D<0:D>o;this.currentTime=Math.max(D,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=o);let R=this.currentTime,O=r;if(y){const P=Math.min(this.currentTime,o)/u;let Y=Math.floor(P),X=P%1;!X&&P>=1&&(X=1),X===1&&Y--,Y=Math.min(Y,y+1),Y%2&&(k==="reverse"?(X=1-X,w&&(X-=w/u)):k==="mirror"&&(O=c)),R=xa(0,1,X)*u}let K;L?(this.delayState.value=m[0],K=this.delayState):K=O.next(R),s&&!L&&(K.value=s(K.value));let{done:W}=K;!L&&h!==null&&(W=this.playbackSpeed>=0?this.currentTime>=o:this.currentTime<=0);const z=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&W);return z&&x!==Ep&&(K.value=Du(m,this.options,S,this.speed)),C&&C(K.value),z&&this.finish(),K}then(t,n){return this.finished.then(t,n)}get duration(){return On(this.calculatedDuration)}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+On(t)}get time(){return On(this.currentTime)}set time(t){t=Sn(t),this.currentTime=t,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=t,this.tick(t))}getGeneratorVelocity(){const t=this.currentTime;if(t<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(t);const n=this.generator.next(t).value;return m0(r=>this.generator.next(r).value,t,n)}get speed(){return this.playbackSpeed}set speed(t){const n=this.playbackSpeed!==t;n&&this.driver&&this.updateTime(sn.now()),this.playbackSpeed=t,n&&this.driver&&(this.time=On(this.currentTime))}play(){if(this.isStopped)return;const{driver:t=y2,startTime:n}=this.options;this.driver||(this.driver=t(o=>this.tick(o))),this.options.onPlay?.();const r=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=r):this.holdTime!==null?this.startTime=r-this.holdTime:this.startTime||(this.startTime=n??r),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(sn.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}attachTimeline(t){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),t.observe(this)}}function N2(e){for(let t=1;t<e.length;t++)e[t]??(e[t]=e[t-1])}const ii=e=>e*180/Math.PI,Ap=e=>{const t=ii(Math.atan2(e[1],e[0]));return Rp(t)},O2={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:e=>(Math.abs(e[0])+Math.abs(e[3]))/2,rotate:Ap,rotateZ:Ap,skewX:e=>ii(Math.atan(e[1])),skewY:e=>ii(Math.atan(e[2])),skew:e=>(Math.abs(e[1])+Math.abs(e[2]))/2},Rp=e=>(e=e%360,e<0&&(e+=360),e),uk=Ap,dk=e=>Math.sqrt(e[0]*e[0]+e[1]*e[1]),hk=e=>Math.sqrt(e[4]*e[4]+e[5]*e[5]),j2={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:dk,scaleY:hk,scale:e=>(dk(e)+hk(e))/2,rotateX:e=>Rp(ii(Math.atan2(e[6],e[5]))),rotateY:e=>Rp(ii(Math.atan2(-e[2],e[0]))),rotateZ:uk,rotate:uk,skewX:e=>ii(Math.atan(e[4])),skewY:e=>ii(Math.atan(e[1])),skew:e=>(Math.abs(e[1])+Math.abs(e[4]))/2};function Lp(e){return e.includes("scale")?1:0}function Dp(e,t){if(!e||e==="none")return Lp(t);const n=e.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let r,o;if(n)r=j2,o=n;else{const u=e.match(/^matrix\(([-\d.e\s,]+)\)$/u);r=O2,o=u}if(!o)return Lp(t);const s=r[t],c=o[1].split(",").map(B2);return typeof s=="function"?s(c):c[s]}const U2=(e,t)=>{const{transform:n="none"}=getComputedStyle(e);return Dp(n,t)};function B2(e){return parseFloat(e.trim())}const wo=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],xo=new Set(wo),pk=e=>e===bo||e===_e,F2=new Set(["x","y","z"]),V2=wo.filter(e=>!F2.has(e));function z2(e){const t=[];return V2.forEach(n=>{const r=e.getValue(n);r!==void 0&&(t.push([n,r.get()]),r.set(n.startsWith("scale")?1:0))}),t}const Lr={width:({x:e},{paddingLeft:t="0",paddingRight:n="0",boxSizing:r})=>{const o=e.max-e.min;return r==="border-box"?o:o-parseFloat(t)-parseFloat(n)},height:({y:e},{paddingTop:t="0",paddingBottom:n="0",boxSizing:r})=>{const o=e.max-e.min;return r==="border-box"?o:o-parseFloat(t)-parseFloat(n)},top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:(e,{transform:t})=>Dp(t,"x"),y:(e,{transform:t})=>Dp(t,"y")};Lr.translateX=Lr.x;Lr.translateY=Lr.y;const oi=new Set;let Ip=!1,Mp=!1,Np=!1;function y0(){if(Mp){const e=Array.from(oi).filter(r=>r.needsMeasurement),t=new Set(e.map(r=>r.element)),n=new Map;t.forEach(r=>{const o=z2(r);o.length&&(n.set(r,o),r.render())}),e.forEach(r=>r.measureInitialState()),t.forEach(r=>{r.render();const o=n.get(r);o&&o.forEach(([s,c])=>{r.getValue(s)?.set(c)})}),e.forEach(r=>r.measureEndState()),e.forEach(r=>{r.suspendedScrollY!==void 0&&window.scrollTo(0,r.suspendedScrollY)})}Mp=!1,Ip=!1,oi.forEach(e=>e.complete(Np)),oi.clear()}function v0(){oi.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(Mp=!0)})}function H2(){Np=!0,v0(),y0(),Np=!1}class qf{constructor(t,n,r,o,s,c=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...t],this.onComplete=n,this.name=r,this.motionValue=o,this.element=s,this.isAsync=c}scheduleResolve(){this.state="scheduled",this.isAsync?(oi.add(this),Ip||(Ip=!0,dt.read(v0),dt.resolveKeyframes(y0))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:t,name:n,element:r,motionValue:o}=this;if(t[0]===null){const s=o?.get(),c=t[t.length-1];if(s!==void 0)t[0]=s;else if(r&&n){const u=r.readValue(n,c);u!=null&&(t[0]=u)}t[0]===void 0&&(t[0]=c),o&&s===void 0&&o.set(t[0])}N2(t)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(t=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,t),oi.delete(this)}cancel(){this.state==="scheduled"&&(oi.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const $2=e=>e.startsWith("--");function k0(e,t,n){$2(t)?e.style.setProperty(t,n):e.style[t]=n}const W2={};function _0(e,t){const n=Kw(e);return()=>W2[t]??n()}const G2=_0(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),b0=_0(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),bs=([e,t,n,r])=>`cubic-bezier(${e}, ${t}, ${n}, ${r})`,fk={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:bs([0,.65,.55,1]),circOut:bs([.55,0,1,.45]),backIn:bs([.31,.01,.66,-.59]),backOut:bs([.33,1.53,.69,.99])};function w0(e,t){if(e)return typeof e=="function"?b0()?f0(e,t):"ease-out":r0(e)?bs(e):Array.isArray(e)?e.map(n=>w0(n,t)||fk.easeOut):fk[e]}function K2(e,t,n,{delay:r=0,duration:o=300,repeat:s=0,repeatType:c="loop",ease:u="easeOut",times:h}={},p=void 0){const m={[t]:n};h&&(m.offset=h);const y=w0(u,o);Array.isArray(y)&&(m.easing=y);const k={delay:r,duration:o,easing:Array.isArray(y)?"linear":y,fill:"both",iterations:s+1,direction:c==="reverse"?"alternate":"normal"};return p&&(k.pseudoElement=p),e.animate(m,k)}function x0(e){return typeof e=="function"&&"applyToOptions"in e}function q2({type:e,...t}){return x0(e)&&b0()?e.applyToOptions(t):(t.duration??(t.duration=300),t.ease??(t.ease="easeOut"),t)}class P0 extends Kf{constructor(t){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!t)return;const{element:n,name:r,keyframes:o,pseudoElement:s,allowFlatten:c=!1,finalKeyframe:u,onComplete:h}=t;this.isPseudoElement=!!s,this.allowFlatten=c,this.options=t,Uf(typeof t.type!="string");const p=q2(t);this.animation=K2(n,r,o,p,s),p.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!s){const m=Du(o,this.options,u,this.speed);this.updateMotionValue&&this.updateMotionValue(m),k0(n,r,m),this.animation.cancel()}h?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:t}=this;t==="idle"||t==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){const t=this.options?.element;!this.isPseudoElement&&t?.isConnected&&this.animation.commitStyles?.()}get duration(){const t=this.animation.effect?.getComputedTiming?.().duration||0;return On(Number(t))}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+On(t)}get time(){return On(Number(this.animation.currentTime)||0)}set time(t){const n=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=Sn(t),n&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(t){t<0&&(this.finishedTime=null),this.animation.playbackRate=t}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(t){this.manualStartTime=this.animation.startTime=t}attachTimeline({timeline:t,rangeStart:n,rangeEnd:r,observe:o}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,t&&G2()?(this.animation.timeline=t,n&&(this.animation.rangeStart=n),r&&(this.animation.rangeEnd=r),jn):o(this)}}const S0={anticipate:e0,backInOut:Jw,circInOut:n0};function Y2(e){return e in S0}function Z2(e){typeof e.ease=="string"&&Y2(e.ease)&&(e.ease=S0[e.ease])}const Hh=10;class X2 extends P0{constructor(t){Z2(t),g0(t),super(t),t.startTime!==void 0&&t.autoplay!==!1&&(this.startTime=t.startTime),this.options=t}updateMotionValue(t){const{motionValue:n,onUpdate:r,onComplete:o,element:s,...c}=this.options;if(!n)return;if(t!==void 0){n.set(t);return}const u=new fu({...c,autoplay:!1}),h=Math.max(Hh,sn.now()-this.startTime),p=xa(0,Hh,h-Hh),m=u.sample(h).value,{name:y}=this.options;s&&y&&k0(s,y,m),n.setWithVelocity(u.sample(Math.max(0,h-p)).value,m,p),u.stop()}}const mk=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(oa.test(e)||e==="0")&&!e.startsWith("url("));function Q2(e){const t=e[0];if(e.length===1)return!0;for(let n=0;n<e.length;n++)if(e[n]!==t)return!0}function J2(e,t,n,r){const o=e[0];if(o===null)return!1;if(t==="display"||t==="visibility")return!0;const s=e[e.length-1],c=mk(o,t),u=mk(s,t);return!c||!u?!1:Q2(e)||(n==="spring"||x0(n))&&r}function Op(e){e.duration=0,e.type="keyframes"}const C0=new Set(["opacity","clipPath","filter","transform"]),eM=/^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/;function tM(e){for(let t=0;t<e.length;t++)if(typeof e[t]=="string"&&eM.test(e[t]))return!0;return!1}const nM=new Set(["color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),aM=Kw(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function rM(e){const{motionValue:t,name:n,repeatDelay:r,repeatType:o,damping:s,type:c,keyframes:u}=e;if(!(t?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:p,transformTemplate:m}=t.owner.getProps();return aM()&&n&&(C0.has(n)||nM.has(n)&&tM(u))&&(n!=="transform"||!m)&&!p&&!r&&o!=="mirror"&&s!==0&&c!=="inertia"}const iM=40;class oM extends Kf{constructor({autoplay:t=!0,delay:n=0,type:r="keyframes",repeat:o=0,repeatDelay:s=0,repeatType:c="loop",keyframes:u,name:h,motionValue:p,element:m,...y}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=sn.now();const k={autoplay:t,delay:n,type:r,repeat:o,repeatDelay:s,repeatType:c,name:h,motionValue:p,element:m,...y},w=m?.KeyframeResolver||qf;this.keyframeResolver=new w(u,(x,C,S)=>this.onKeyframesResolved(x,C,k,!S),h,p,m),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(t,n,r,o){this.keyframeResolver=void 0;const{name:s,type:c,velocity:u,delay:h,isHandoff:p,onUpdate:m}=r;this.resolvedAt=sn.now();let y=!0;J2(t,s,c,u)||(y=!1,(Mr.instantAnimations||!h)&&m?.(Du(t,r,n)),t[0]=t[t.length-1],Op(r),r.repeat=0);const w={startTime:o?this.resolvedAt?this.resolvedAt-this.createdAt>iM?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:n,...r,keyframes:t},x=y&&!p&&rM(w),C=w.motionValue?.owner?.current;let S;if(x)try{S=new X2({...w,element:C})}catch{S=new fu(w)}else S=new fu(w);S.finished.then(()=>{this.notifyFinished()}).catch(jn),this.pendingTimeline&&(this.stopTimeline=S.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=S}get finished(){return this._animation?this.animation.finished:this._finished}then(t,n){return this.finished.finally(t).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),H2()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(t){this.animation.time=t}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(t){this.animation.speed=t}get startTime(){return this.animation.startTime}attachTimeline(t){return this._animation?this.stopTimeline=this.animation.attachTimeline(t):this.pendingTimeline=t,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}function T0(e,t,n,r=0,o=1){const s=Array.from(e).sort((p,m)=>p.sortNodePosition(m)).indexOf(t),c=e.size,u=(c-1)*r;return typeof n=="function"?n(s,c):o===1?s*r:u-s*r}const sM=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function lM(e){const t=sM.exec(e);if(!t)return[,];const[,n,r,o]=t;return[`--${n??r}`,o]}function E0(e,t,n=1){const[r,o]=lM(e);if(!r)return;const s=window.getComputedStyle(t).getPropertyValue(r);if(s){const c=s.trim();return $w(c)?parseFloat(c):c}return zf(o)?E0(o,t,n+1):o}const cM={type:"spring",stiffness:500,damping:25,restSpeed:10},uM=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),dM={type:"keyframes",duration:.8},hM={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},pM=(e,{keyframes:t})=>t.length>2?dM:xo.has(e)?e.startsWith("scale")?uM(t[1]):cM:hM;function A0(e,t){if(e?.inherit&&t){const{inherit:n,...r}=e;return{...t,...r}}return e}function Yf(e,t){const n=e?.[t]??e?.default??e;return n!==e?A0(n,e):n}const fM=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function mM(e){for(const t in e)if(!fM.has(t))return!0;return!1}const Zf=(e,t,n,r={},o,s)=>c=>{const u=Yf(r,e)||{},h=u.delay||r.delay||0;let{elapsed:p=0}=r;p=p-Sn(h);const m={keyframes:Array.isArray(n)?n:[null,n],ease:"easeOut",velocity:t.getVelocity(),...u,delay:-p,onUpdate:k=>{t.set(k),u.onUpdate&&u.onUpdate(k)},onComplete:()=>{c(),u.onComplete&&u.onComplete()},name:e,motionValue:t,element:s?void 0:o};mM(u)||Object.assign(m,pM(e,m)),m.duration&&(m.duration=Sn(m.duration)),m.repeatDelay&&(m.repeatDelay=Sn(m.repeatDelay)),m.from!==void 0&&(m.keyframes[0]=m.from);let y=!1;if((m.type===!1||m.duration===0&&!m.repeatDelay)&&(Op(m),m.delay===0&&(y=!0)),(Mr.instantAnimations||Mr.skipAnimations||o?.shouldSkipAnimations)&&(y=!0,Op(m),m.delay=0),m.allowFlatten=!u.type&&!u.ease,y&&!s&&t.get()!==void 0){const k=Du(m.keyframes,u);if(k!==void 0){dt.update(()=>{m.onUpdate(k),m.onComplete()});return}}return u.isSync?new fu(m):new oM(m)};function gk(e){const t=[{},{}];return e?.values.forEach((n,r)=>{t[0][r]=n.get(),t[1][r]=n.getVelocity()}),t}function Xf(e,t,n,r){if(typeof t=="function"){const[o,s]=gk(r);t=t(n!==void 0?n:e.custom,o,s)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){const[o,s]=gk(r);t=t(n!==void 0?n:e.custom,o,s)}return t}function si(e,t,n){const r=e.getProps();return Xf(r,t,n!==void 0?n:r.custom,e)}const R0=new Set(["width","height","top","left","right","bottom",...wo]),yk=30,gM=e=>!isNaN(parseFloat(e)),vk={current:void 0};class yM{constructor(t,n={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=r=>{const o=sn.now();if(this.updatedAt!==o&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(r),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const s of this.dependents)s.dirty()},this.hasAnimated=!1,this.setCurrent(t),this.owner=n.owner}setCurrent(t){this.current=t,this.updatedAt=sn.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=gM(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new Bf);const r=this.events[t].add(n);return t==="change"?()=>{r(),dt.read(()=>{this.events.change.getSize()||this.stop()})}:r}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t){this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t)}setWithVelocity(t,n,r){this.set(n),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-r}jump(t,n=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,n&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(t){this.dependents||(this.dependents=new Set),this.dependents.add(t)}removeDependent(t){this.dependents&&this.dependents.delete(t)}get(){return vk.current&&vk.current.push(this),this.current}getPrevious(){return this.prev}getVelocity(){const t=sn.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>yk)return 0;const n=Math.min(this.updatedAt-this.prevUpdatedAt,yk);return qw(parseFloat(this.current)-parseFloat(this.prevFrameValue),n)}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function vo(e,t){return new yM(e,t)}const jp=e=>Array.isArray(e);function vM(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,vo(n))}function kM(e){return jp(e)?e[e.length-1]||0:e}function _M(e,t){const n=si(e,t);let{transitionEnd:r={},transition:o={},...s}=n||{};s={...s,...r};for(const c in s){const u=kM(s[c]);vM(e,c,u)}}const Kt=e=>!!(e&&e.getVelocity);function bM(e){return!!(Kt(e)&&e.add)}function Up(e,t){const n=e.getValue("willChange");if(bM(n))return n.add(t);if(!n&&Mr.WillChange){const r=new Mr.WillChange("auto");e.addValue("willChange",r),r.add(t)}}function Qf(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}const wM="framerAppearId",L0="data-"+Qf(wM);function D0(e){return e.props[L0]}function xM({protectedKeys:e,needsAnimating:t},n){const r=e.hasOwnProperty(n)&&t[n]!==!0;return t[n]=!1,r}function I0(e,t,{delay:n=0,transitionOverride:r,type:o}={}){let{transition:s,transitionEnd:c,...u}=t;const h=e.getDefaultTransition();s=s?A0(s,h):h;const p=s?.reduceMotion;r&&(s=r);const m=[],y=o&&e.animationState&&e.animationState.getState()[o];for(const k in u){const w=e.getValue(k,e.latestValues[k]??null),x=u[k];if(x===void 0||y&&xM(y,k))continue;const C={delay:n,...Yf(s||{},k)},S=w.get();if(S!==void 0&&!w.isAnimating()&&!Array.isArray(x)&&x===S&&!C.velocity){dt.update(()=>w.set(x));continue}let D=!1;if(window.MotionHandoffAnimation){const O=D0(e);if(O){const K=window.MotionHandoffAnimation(O,k,dt);K!==null&&(C.startTime=K,D=!0)}}Up(e,k);const L=p??e.shouldReduceMotion;w.start(Zf(k,w,x,L&&R0.has(k)?{type:!1}:C,e,D));const R=w.animation;R&&m.push(R)}if(c){const k=()=>dt.update(()=>{c&&_M(e,c)});m.length?Promise.all(m).then(k):k()}return m}function Bp(e,t,n={}){const r=si(e,t,n.type==="exit"?e.presenceContext?.custom:void 0);let{transition:o=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(o=n.transitionOverride);const s=r?()=>Promise.all(I0(e,r,n)):()=>Promise.resolve(),c=e.variantChildren&&e.variantChildren.size?(h=0)=>{const{delayChildren:p=0,staggerChildren:m,staggerDirection:y}=o;return PM(e,t,h,p,m,y,n)}:()=>Promise.resolve(),{when:u}=o;if(u){const[h,p]=u==="beforeChildren"?[s,c]:[c,s];return h().then(()=>p())}else return Promise.all([s(),c(n.delay)])}function PM(e,t,n=0,r=0,o=0,s=1,c){const u=[];for(const h of e.variantChildren)h.notify("AnimationStart",t),u.push(Bp(h,t,{...c,delay:n+(typeof r=="function"?0:r)+T0(e.variantChildren,h,r,o,s)}).then(()=>h.notify("AnimationComplete",t)));return Promise.all(u)}function SM(e,t,n={}){e.notify("AnimationStart",t);let r;if(Array.isArray(t)){const o=t.map(s=>Bp(e,s,n));r=Promise.all(o)}else if(typeof t=="string")r=Bp(e,t,n);else{const o=typeof t=="function"?si(e,t,n.custom):t;r=Promise.all(I0(e,o,n))}return r.then(()=>{e.notify("AnimationComplete",t)})}const CM={test:e=>e==="auto",parse:e=>e},M0=e=>t=>t.test(e),N0=[bo,_e,va,Sr,QI,XI,CM],kk=e=>N0.find(M0(e));function TM(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||Gw(e):!0}const EM=new Set(["brightness","contrast","saturate","opacity"]);function AM(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(Hf)||[];if(!r)return e;const o=n.replace(r,"");let s=EM.has(t)?1:0;return r!==n&&(s*=100),t+"("+s+o+")"}const RM=/\b([a-z-]*)\(.*?\)/gu,Fp={...oa,getAnimatableNone:e=>{const t=e.match(RM);return t?t.map(AM).join(" "):e}},Vp={...oa,getAnimatableNone:e=>{const t=oa.parse(e);return oa.createTransformer(e)(t.map(r=>typeof r=="number"?0:typeof r=="object"?{...r,alpha:1}:r))}},_k={...bo,transform:Math.round},LM={rotate:Sr,rotateX:Sr,rotateY:Sr,rotateZ:Sr,scale:kc,scaleX:kc,scaleY:kc,scaleZ:kc,skew:Sr,skewX:Sr,skewY:Sr,distance:_e,translateX:_e,translateY:_e,translateZ:_e,x:_e,y:_e,z:_e,perspective:_e,transformPerspective:_e,opacity:Bs,originX:ik,originY:ik,originZ:_e},Jf={borderWidth:_e,borderTopWidth:_e,borderRightWidth:_e,borderBottomWidth:_e,borderLeftWidth:_e,borderRadius:_e,borderTopLeftRadius:_e,borderTopRightRadius:_e,borderBottomRightRadius:_e,borderBottomLeftRadius:_e,width:_e,maxWidth:_e,height:_e,maxHeight:_e,top:_e,right:_e,bottom:_e,left:_e,inset:_e,insetBlock:_e,insetBlockStart:_e,insetBlockEnd:_e,insetInline:_e,insetInlineStart:_e,insetInlineEnd:_e,padding:_e,paddingTop:_e,paddingRight:_e,paddingBottom:_e,paddingLeft:_e,paddingBlock:_e,paddingBlockStart:_e,paddingBlockEnd:_e,paddingInline:_e,paddingInlineStart:_e,paddingInlineEnd:_e,margin:_e,marginTop:_e,marginRight:_e,marginBottom:_e,marginLeft:_e,marginBlock:_e,marginBlockStart:_e,marginBlockEnd:_e,marginInline:_e,marginInlineStart:_e,marginInlineEnd:_e,fontSize:_e,backgroundPositionX:_e,backgroundPositionY:_e,...LM,zIndex:_k,fillOpacity:Bs,strokeOpacity:Bs,numOctaves:_k},DM={...Jf,color:Lt,backgroundColor:Lt,outlineColor:Lt,fill:Lt,stroke:Lt,borderColor:Lt,borderTopColor:Lt,borderRightColor:Lt,borderBottomColor:Lt,borderLeftColor:Lt,filter:Fp,WebkitFilter:Fp,mask:Vp,WebkitMask:Vp},O0=e=>DM[e],IM=new Set([Fp,Vp]);function j0(e,t){let n=O0(e);return IM.has(n)||(n=oa),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const MM=new Set(["auto","none","0"]);function NM(e,t,n){let r=0,o;for(;r<e.length&&!o;){const s=e[r];typeof s=="string"&&!MM.has(s)&&yo(s).values.length&&(o=e[r]),r++}if(o&&n)for(const s of t)e[s]=j0(n,o)}class OM extends qf{constructor(t,n,r,o,s){super(t,n,r,o,s,!0)}readKeyframes(){const{unresolvedKeyframes:t,element:n,name:r}=this;if(!n||!n.current)return;super.readKeyframes();for(let m=0;m<t.length;m++){let y=t[m];if(typeof y=="string"&&(y=y.trim(),zf(y))){const k=E0(y,n.current);k!==void 0&&(t[m]=k),m===t.length-1&&(this.finalKeyframe=y)}}if(this.resolveNoneKeyframes(),!R0.has(r)||t.length!==2)return;const[o,s]=t,c=kk(o),u=kk(s),h=rk(o),p=rk(s);if(h!==p&&Lr[r]){this.needsMeasurement=!0;return}if(c!==u)if(pk(c)&&pk(u))for(let m=0;m<t.length;m++){const y=t[m];typeof y=="string"&&(t[m]=parseFloat(y))}else Lr[r]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:t,name:n}=this,r=[];for(let o=0;o<t.length;o++)(t[o]===null||TM(t[o]))&&r.push(o);r.length&&NM(t,r,n)}measureInitialState(){const{element:t,unresolvedKeyframes:n,name:r}=this;if(!t||!t.current)return;r==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=Lr[r](t.measureViewportBox(),window.getComputedStyle(t.current)),n[0]=this.measuredOrigin;const o=n[n.length-1];o!==void 0&&t.getValue(r,o).jump(o,!1)}measureEndState(){const{element:t,name:n,unresolvedKeyframes:r}=this;if(!t||!t.current)return;const o=t.getValue(n);o&&o.jump(this.measuredOrigin,!1);const s=r.length-1,c=r[s];r[s]=Lr[n](t.measureViewportBox(),window.getComputedStyle(t.current)),c!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=c),this.removedTransforms?.length&&this.removedTransforms.forEach(([u,h])=>{t.getValue(u).set(h)}),this.resolveNoneKeyframes()}}function U0(e,t,n){if(e==null)return[];if(e instanceof EventTarget)return[e];if(typeof e=="string"){let r=document;const o=n?.[e]??r.querySelectorAll(e);return o?Array.from(o):[]}return Array.from(e).filter(r=>r!=null)}const B0=(e,t)=>t&&typeof e=="number"?t.transform(e):e;function Uc(e){return Ww(e)&&"offsetHeight"in e&&!("ownerSVGElement"in e)}const{schedule:em}=i0(queueMicrotask,!1),na={x:!1,y:!1};function F0(){return na.x||na.y}function jM(e){return e==="x"||e==="y"?na[e]?null:(na[e]=!0,()=>{na[e]=!1}):na.x||na.y?null:(na.x=na.y=!0,()=>{na.x=na.y=!1})}function V0(e,t){const n=U0(e),r=new AbortController,o={passive:!0,...t,signal:r.signal};return[n,o,()=>r.abort()]}function UM(e){return!(e.pointerType==="touch"||F0())}function BM(e,t,n={}){const[r,o,s]=V0(e,n);return r.forEach(c=>{let u=!1,h=!1,p;const m=()=>{c.removeEventListener("pointerleave",x)},y=S=>{p&&(p(S),p=void 0),m()},k=S=>{u=!1,window.removeEventListener("pointerup",k),window.removeEventListener("pointercancel",k),h&&(h=!1,y(S))},w=()=>{u=!0,window.addEventListener("pointerup",k,o),window.addEventListener("pointercancel",k,o)},x=S=>{if(S.pointerType!=="touch"){if(u){h=!0;return}y(S)}},C=S=>{if(!UM(S))return;h=!1;const D=t(c,S);typeof D=="function"&&(p=D,c.addEventListener("pointerleave",x,o))};c.addEventListener("pointerenter",C,o),c.addEventListener("pointerdown",w,o)}),s}const z0=(e,t)=>t?e===t?!0:z0(e,t.parentElement):!1,tm=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1,FM=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function VM(e){return FM.has(e.tagName)||e.isContentEditable===!0}const zM=new Set(["INPUT","SELECT","TEXTAREA"]);function HM(e){return zM.has(e.tagName)||e.isContentEditable===!0}const Bc=new WeakSet;function bk(e){return t=>{t.key==="Enter"&&e(t)}}function $h(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}const $M=(e,t)=>{const n=e.currentTarget;if(!n)return;const r=bk(()=>{if(Bc.has(n))return;$h(n,"down");const o=bk(()=>{$h(n,"up")}),s=()=>$h(n,"cancel");n.addEventListener("keyup",o,t),n.addEventListener("blur",s,t)});n.addEventListener("keydown",r,t),n.addEventListener("blur",()=>n.removeEventListener("keydown",r),t)};function wk(e){return tm(e)&&!F0()}const xk=new WeakSet;function WM(e,t,n={}){const[r,o,s]=V0(e,n),c=u=>{const h=u.currentTarget;if(!wk(u)||xk.has(u))return;Bc.add(h),n.stopPropagation&&xk.add(u);const p=t(h,u),m=(w,x)=>{window.removeEventListener("pointerup",y),window.removeEventListener("pointercancel",k),Bc.has(h)&&Bc.delete(h),wk(w)&&typeof p=="function"&&p(w,{success:x})},y=w=>{m(w,h===window||h===document||n.useGlobalTarget||z0(h,w.target))},k=w=>{m(w,!1)};window.addEventListener("pointerup",y,o),window.addEventListener("pointercancel",k,o)};return r.forEach(u=>{(n.useGlobalTarget?window:u).addEventListener("pointerdown",c,o),Uc(u)&&(u.addEventListener("focus",p=>$M(p,o)),!VM(u)&&!u.hasAttribute("tabindex")&&(u.tabIndex=0))}),s}function nm(e){return Ww(e)&&"ownerSVGElement"in e}const Fc=new WeakMap;let Vc;const H0=(e,t,n)=>(r,o)=>o&&o[0]?o[0][e+"Size"]:nm(r)&&"getBBox"in r?r.getBBox()[t]:r[n],GM=H0("inline","width","offsetWidth"),KM=H0("block","height","offsetHeight");function qM({target:e,borderBoxSize:t}){Fc.get(e)?.forEach(n=>{n(e,{get width(){return GM(e,t)},get height(){return KM(e,t)}})})}function YM(e){e.forEach(qM)}function ZM(){typeof ResizeObserver>"u"||(Vc=new ResizeObserver(YM))}function XM(e,t){Vc||ZM();const n=U0(e);return n.forEach(r=>{let o=Fc.get(r);o||(o=new Set,Fc.set(r,o)),o.add(t),Vc?.observe(r)}),()=>{n.forEach(r=>{const o=Fc.get(r);o?.delete(t),o?.size||Vc?.unobserve(r)})}}const zc=new Set;let oo;function QM(){oo=()=>{const e={get width(){return window.innerWidth},get height(){return window.innerHeight}};zc.forEach(t=>t(e))},window.addEventListener("resize",oo)}function JM(e){return zc.add(e),oo||QM(),()=>{zc.delete(e),!zc.size&&typeof oo=="function"&&(window.removeEventListener("resize",oo),oo=void 0)}}function Pk(e,t){return typeof e=="function"?JM(e):XM(e,t)}function eN(e){return nm(e)&&e.tagName==="svg"}const tN=[...N0,Lt,oa],nN=e=>tN.find(M0(e)),Sk=()=>({translate:0,scale:1,origin:0,originPoint:0}),so=()=>({x:Sk(),y:Sk()}),Ck=()=>({min:0,max:0}),Ot=()=>({x:Ck(),y:Ck()}),aN=new WeakMap;function Iu(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}function Fs(e){return typeof e=="string"||Array.isArray(e)}const am=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],rm=["initial",...am];function Mu(e){return Iu(e.animate)||rm.some(t=>Fs(e[t]))}function $0(e){return!!(Mu(e)||e.variants)}function rN(e,t,n){for(const r in t){const o=t[r],s=n[r];if(Kt(o))e.addValue(r,o);else if(Kt(s))e.addValue(r,vo(o,{owner:e}));else if(s!==o)if(e.hasValue(r)){const c=e.getValue(r);c.liveStyle===!0?c.jump(o):c.hasAnimated||c.set(o)}else{const c=e.getStaticValue(r);e.addValue(r,vo(c!==void 0?c:o,{owner:e}))}}for(const r in n)t[r]===void 0&&e.removeValue(r);return t}const zp={current:null},W0={current:!1},iN=typeof window<"u";function oN(){if(W0.current=!0,!!iN)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>zp.current=e.matches;e.addEventListener("change",t),t()}else zp.current=!1}const Tk=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let mu={};function G0(e){mu=e}function sN(){return mu}class lN{scrapeMotionValuesFromProps(t,n,r){return{}}constructor({parent:t,props:n,presenceContext:r,reducedMotionConfig:o,skipAnimations:s,blockInitialAnimation:c,visualState:u},h={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=qf,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const w=sn.now();this.renderScheduledAt<w&&(this.renderScheduledAt=w,dt.render(this.render,!1,!0))};const{latestValues:p,renderState:m}=u;this.latestValues=p,this.baseTarget={...p},this.initialValues=n.initial?{...p}:{},this.renderState=m,this.parent=t,this.props=n,this.presenceContext=r,this.depth=t?t.depth+1:0,this.reducedMotionConfig=o,this.skipAnimationsConfig=s,this.options=h,this.blockInitialAnimation=!!c,this.isControllingVariants=Mu(n),this.isVariantNode=$0(n),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);const{willChange:y,...k}=this.scrapeMotionValuesFromProps(n,{},this);for(const w in k){const x=k[w];p[w]!==void 0&&Kt(x)&&x.set(p[w])}}mount(t){if(this.hasBeenMounted)for(const n in this.initialValues)this.values.get(n)?.jump(this.initialValues[n]),this.latestValues[n]=this.initialValues[n];this.current=t,aN.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((n,r)=>this.bindToMotionValue(r,n)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(W0.current||oN(),this.shouldReduceMotion=zp.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,this.parent?.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){this.projection&&this.projection.unmount(),Nr(this.notifyUpdate),Nr(this.render),this.valueSubscriptions.forEach(t=>t()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const t in this.events)this.events[t].clear();for(const t in this.features){const n=this.features[t];n&&(n.unmount(),n.isMounted=!1)}this.current=null}addChild(t){this.children.add(t),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(t)}removeChild(t){this.children.delete(t),this.enteringChildren&&this.enteringChildren.delete(t)}bindToMotionValue(t,n){if(this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)(),n.accelerate&&C0.has(t)&&this.current instanceof HTMLElement){const{factory:c,keyframes:u,times:h,ease:p,duration:m}=n.accelerate,y=new P0({element:this.current,name:t,keyframes:u,times:h,ease:p,duration:Sn(m)}),k=c(y);this.valueSubscriptions.set(t,()=>{k(),y.cancel()});return}const r=xo.has(t);r&&this.onBindTransform&&this.onBindTransform();const o=n.on("change",c=>{this.latestValues[t]=c,this.props.onUpdate&&dt.preRender(this.notifyUpdate),r&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let s;typeof window<"u"&&window.MotionCheckAppearSync&&(s=window.MotionCheckAppearSync(this,t,n)),this.valueSubscriptions.set(t,()=>{o(),s&&s(),n.owner&&n.stop()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in mu){const n=mu[t];if(!n)continue;const{isEnabled:r,Feature:o}=n;if(!this.features[t]&&o&&r(this.props)&&(this.features[t]=new o(this)),this.features[t]){const s=this.features[t];s.isMounted?s.update():(s.mount(),s.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Ot()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let r=0;r<Tk.length;r++){const o=Tk[r];this.propEventSubscriptions[o]&&(this.propEventSubscriptions[o](),delete this.propEventSubscriptions[o]);const s="on"+o,c=t[s];c&&(this.propEventSubscriptions[o]=this.on(o,c))}this.prevMotionValues=rN(this,this.scrapeMotionValuesFromProps(t,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(t){return this.props.variants?this.props.variants[t]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(t){const n=this.getClosestVariantNode();if(n)return n.variantChildren&&n.variantChildren.add(t),()=>n.variantChildren.delete(t)}addValue(t,n){const r=this.values.get(t);n!==r&&(r&&this.removeValue(t),this.bindToMotionValue(t,n),this.values.set(t,n),this.latestValues[t]=n.get())}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(n(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,n){if(this.props.values&&this.props.values[t])return this.props.values[t];let r=this.values.get(t);return r===void 0&&n!==void 0&&(r=vo(n===null?void 0:n,{owner:this}),this.addValue(t,r)),r}readValue(t,n){let r=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:this.getBaseTargetFromProps(this.props,t)??this.readValueFromInstance(this.current,t,this.options);return r!=null&&(typeof r=="string"&&($w(r)||Gw(r))?r=parseFloat(r):!nN(r)&&oa.test(n)&&(r=j0(t,n)),this.setBaseTarget(t,Kt(r)?r.get():r)),Kt(r)?r.get():r}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){const{initial:n}=this.props;let r;if(typeof n=="string"||typeof n=="object"){const s=Xf(this.props,n,this.presenceContext?.custom);s&&(r=s[t])}if(n&&r!==void 0)return r;const o=this.getBaseTargetFromProps(this.props,t);return o!==void 0&&!Kt(o)?o:this.initialValues[t]!==void 0&&r===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new Bf),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}scheduleRenderMicrotask(){em.render(this.render)}}class K0 extends lN{constructor(){super(...arguments),this.KeyframeResolver=OM}sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){const r=t.style;return r?r[n]:void 0}removeValueFromRenderState(t,{vars:n,style:r}){delete n[t],delete r[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;Kt(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}}class jr{constructor(t){this.isMounted=!1,this.node=t}update(){}}function q0({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function cN({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function uN(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),r=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:r.y,right:r.x}}function Wh(e){return e===void 0||e===1}function Hp({scale:e,scaleX:t,scaleY:n}){return!Wh(e)||!Wh(t)||!Wh(n)}function ti(e){return Hp(e)||Y0(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function Y0(e){return Ek(e.x)||Ek(e.y)}function Ek(e){return e&&e!=="0%"}function gu(e,t,n){const r=e-n,o=t*r;return n+o}function Ak(e,t,n,r,o){return o!==void 0&&(e=gu(e,o,r)),gu(e,n,r)+t}function $p(e,t=0,n=1,r,o){e.min=Ak(e.min,t,n,r,o),e.max=Ak(e.max,t,n,r,o)}function Z0(e,{x:t,y:n}){$p(e.x,t.translate,t.scale,t.originPoint),$p(e.y,n.translate,n.scale,n.originPoint)}const Rk=.999999999999,Lk=1.0000000000001;function dN(e,t,n,r=!1){const o=n.length;if(!o)return;t.x=t.y=1;let s,c;for(let u=0;u<o;u++){s=n[u],c=s.projectionDelta;const{visualElement:h}=s.options;h&&h.props.style&&h.props.style.display==="contents"||(r&&s.options.layoutScroll&&s.scroll&&s!==s.root&&(ma(e.x,-s.scroll.offset.x),ma(e.y,-s.scroll.offset.y)),c&&(t.x*=c.x.scale,t.y*=c.y.scale,Z0(e,c)),r&&ti(s.latestValues)&&Hc(e,s.latestValues,s.layout?.layoutBox))}t.x<Lk&&t.x>Rk&&(t.x=1),t.y<Lk&&t.y>Rk&&(t.y=1)}function ma(e,t){e.min+=t,e.max+=t}function Dk(e,t,n,r,o=.5){const s=vt(e.min,e.max,o);$p(e,t,n,s,r)}function Ik(e,t){return typeof e=="string"?parseFloat(e)/100*(t.max-t.min):e}function Hc(e,t,n){const r=n??e;Dk(e.x,Ik(t.x,r.x),t.scaleX,t.scale,t.originX),Dk(e.y,Ik(t.y,r.y),t.scaleY,t.scale,t.originY)}function X0(e,t){return q0(uN(e.getBoundingClientRect(),t))}function hN(e,t,n){const r=X0(e,n),{scroll:o}=t;return o&&(ma(r.x,o.offset.x),ma(r.y,o.offset.y)),r}const pN={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},fN=wo.length;function mN(e,t,n){let r="",o=!0;for(let s=0;s<fN;s++){const c=wo[s],u=e[c];if(u===void 0)continue;let h=!0;if(typeof u=="number")h=u===(c.startsWith("scale")?1:0);else{const p=parseFloat(u);h=c.startsWith("scale")?p===1:p===0}if(!h||n){const p=B0(u,Jf[c]);if(!h){o=!1;const m=pN[c]||c;r+=`${m}(${p}) `}n&&(t[c]=p)}}return r=r.trim(),n?r=n(t,o?"":r):o&&(r="none"),r}function im(e,t,n){const{style:r,vars:o,transformOrigin:s}=e;let c=!1,u=!1;for(const h in t){const p=t[h];if(xo.has(h)){c=!0;continue}else if(s0(h)){o[h]=p;continue}else{const m=B0(p,Jf[h]);h.startsWith("origin")?(u=!0,s[h]=m):r[h]=m}}if(t.transform||(c||n?r.transform=mN(t,e.transform,n):r.transform&&(r.transform="none")),u){const{originX:h="50%",originY:p="50%",originZ:m=0}=s;r.transformOrigin=`${h} ${p} ${m}`}}function Q0(e,{style:t,vars:n},r,o){const s=e.style;let c;for(c in t)s[c]=t[c];o?.applyProjectionStyles(s,r);for(c in n)s.setProperty(c,n[c])}function Mk(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const ms={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(_e.test(e))e=parseFloat(e);else return e;const n=Mk(e,t.target.x),r=Mk(e,t.target.y);return`${n}% ${r}%`}},gN={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,o=oa.parse(e);if(o.length>5)return r;const s=oa.createTransformer(e),c=typeof o[0]!="number"?1:0,u=n.x.scale*t.x,h=n.y.scale*t.y;o[0+c]/=u,o[1+c]/=h;const p=vt(u,h,.5);return typeof o[2+c]=="number"&&(o[2+c]/=p),typeof o[3+c]=="number"&&(o[3+c]/=p),s(o)}},Wp={borderRadius:{...ms,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:ms,borderTopRightRadius:ms,borderBottomLeftRadius:ms,borderBottomRightRadius:ms,boxShadow:gN};function J0(e,{layout:t,layoutId:n}){return xo.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!Wp[e]||e==="opacity")}function om(e,t,n){const r=e.style,o=t?.style,s={};if(!r)return s;for(const c in r)(Kt(r[c])||o&&Kt(o[c])||J0(c,e)||n?.getValue(c)?.liveStyle!==void 0)&&(s[c]=r[c]);return s}function yN(e){return window.getComputedStyle(e)}class vN extends K0{constructor(){super(...arguments),this.type="html",this.renderInstance=Q0}readValueFromInstance(t,n){if(xo.has(n))return this.projection?.isProjecting?Lp(n):U2(t,n);{const r=yN(t),o=(s0(n)?r.getPropertyValue(n):r[n])||0;return typeof o=="string"?o.trim():o}}measureInstanceViewportBox(t,{transformPagePoint:n}){return X0(t,n)}build(t,n,r){im(t,n,r.transformTemplate)}scrapeMotionValuesFromProps(t,n,r){return om(t,n,r)}}const kN={offset:"stroke-dashoffset",array:"stroke-dasharray"},_N={offset:"strokeDashoffset",array:"strokeDasharray"};function bN(e,t,n=1,r=0,o=!0){e.pathLength=1;const s=o?kN:_N;e[s.offset]=`${-r}`,e[s.array]=`${t} ${n}`}const wN=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function ex(e,{attrX:t,attrY:n,attrScale:r,pathLength:o,pathSpacing:s=1,pathOffset:c=0,...u},h,p,m){if(im(e,u,p),h){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:y,style:k}=e;y.transform&&(k.transform=y.transform,delete y.transform),(k.transform||y.transformOrigin)&&(k.transformOrigin=y.transformOrigin??"50% 50%",delete y.transformOrigin),k.transform&&(k.transformBox=m?.transformBox??"fill-box",delete y.transformBox);for(const w of wN)y[w]!==void 0&&(k[w]=y[w],delete y[w]);t!==void 0&&(y.x=t),n!==void 0&&(y.y=n),r!==void 0&&(y.scale=r),o!==void 0&&bN(y,o,s,c,!1)}const tx=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),nx=e=>typeof e=="string"&&e.toLowerCase()==="svg";function xN(e,t,n,r){Q0(e,t,void 0,r);for(const o in t.attrs)e.setAttribute(tx.has(o)?o:Qf(o),t.attrs[o])}function ax(e,t,n){const r=om(e,t,n);for(const o in e)if(Kt(e[o])||Kt(t[o])){const s=wo.indexOf(o)!==-1?"attr"+o.charAt(0).toUpperCase()+o.substring(1):o;r[s]=e[o]}return r}class PN extends K0{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Ot}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(xo.has(n)){const r=O0(n);return r&&r.default||0}return n=tx.has(n)?n:Qf(n),t.getAttribute(n)}scrapeMotionValuesFromProps(t,n,r){return ax(t,n,r)}build(t,n,r){ex(t,n,this.isSVGTag,r.transformTemplate,r.style)}renderInstance(t,n,r,o){xN(t,n,r,o)}mount(t){this.isSVGTag=nx(t.tagName),super.mount(t)}}const SN=rm.length;function rx(e){if(!e)return;if(!e.isControllingVariants){const n=e.parent?rx(e.parent)||{}:{};return e.props.initial!==void 0&&(n.initial=e.props.initial),n}const t={};for(let n=0;n<SN;n++){const r=rm[n],o=e.props[r];(Fs(o)||o===!1)&&(t[r]=o)}return t}function ix(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let r=0;r<n;r++)if(t[r]!==e[r])return!1;return!0}const CN=[...am].reverse(),TN=am.length;function EN(e){return t=>Promise.all(t.map(({animation:n,options:r})=>SM(e,n,r)))}function AN(e){let t=EN(e),n=Nk(),r=!0,o=!1;const s=p=>(m,y)=>{const k=si(e,y,p==="exit"?e.presenceContext?.custom:void 0);if(k){const{transition:w,transitionEnd:x,...C}=k;m={...m,...C,...x}}return m};function c(p){t=p(e)}function u(p){const{props:m}=e,y=rx(e.parent)||{},k=[],w=new Set;let x={},C=1/0;for(let D=0;D<TN;D++){const L=CN[D],R=n[L],O=m[L]!==void 0?m[L]:y[L],K=Fs(O),W=L===p?R.isActive:null;W===!1&&(C=D);let z=O===y[L]&&O!==m[L]&&K;if(z&&(r||o)&&e.manuallyAnimateOnMount&&(z=!1),R.protectedKeys={...x},!R.isActive&&W===null||!O&&!R.prevProp||Iu(O)||typeof O=="boolean")continue;if(L==="exit"&&R.isActive&&W!==!0){R.prevResolvedValues&&(x={...x,...R.prevResolvedValues});continue}const P=RN(R.prevProp,O);let Y=P||L===p&&R.isActive&&!z&&K||D>C&&K,X=!1;const ue=Array.isArray(O)?O:[O];let se=ue.reduce(s(L),{});W===!1&&(se={});const{prevResolvedValues:Ae={}}=R,pe={...Ae,...se},le=G=>{Y=!0,w.has(G)&&(X=!0,w.delete(G)),R.needsAnimating[G]=!0;const Z=e.getValue(G);Z&&(Z.liveStyle=!1)};for(const G in pe){const Z=se[G],$=Ae[G];if(x.hasOwnProperty(G))continue;let M=!1;jp(Z)&&jp($)?M=!ix(Z,$):M=Z!==$,M?Z!=null?le(G):w.add(G):Z!==void 0&&w.has(G)?le(G):R.protectedKeys[G]=!0}R.prevProp=O,R.prevResolvedValues=se,R.isActive&&(x={...x,...se}),(r||o)&&e.blockInitialAnimation&&(Y=!1);const fe=z&&P;Y&&(!fe||X)&&k.push(...ue.map(G=>{const Z={type:L};if(typeof G=="string"&&(r||o)&&!fe&&e.manuallyAnimateOnMount&&e.parent){const{parent:$}=e,M=si($,G);if($.enteringChildren&&M){const{delayChildren:q}=M.transition||{};Z.delay=T0($.enteringChildren,e,q)}}return{animation:G,options:Z}}))}if(w.size){const D={};if(typeof m.initial!="boolean"){const L=si(e,Array.isArray(m.initial)?m.initial[0]:m.initial);L&&L.transition&&(D.transition=L.transition)}w.forEach(L=>{const R=e.getBaseTarget(L),O=e.getValue(L);O&&(O.liveStyle=!0),D[L]=R??null}),k.push({animation:D})}let S=!!k.length;return r&&(m.initial===!1||m.initial===m.animate)&&!e.manuallyAnimateOnMount&&(S=!1),r=!1,o=!1,S?t(k):Promise.resolve()}function h(p,m){if(n[p].isActive===m)return Promise.resolve();e.variantChildren?.forEach(k=>k.animationState?.setActive(p,m)),n[p].isActive=m;const y=u(p);for(const k in n)n[k].protectedKeys={};return y}return{animateChanges:u,setActive:h,setAnimateFunction:c,getState:()=>n,reset:()=>{n=Nk(),o=!0}}}function RN(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!ix(t,e):!1}function Jr(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Nk(){return{animate:Jr(!0),whileInView:Jr(),whileHover:Jr(),whileTap:Jr(),whileDrag:Jr(),whileFocus:Jr(),exit:Jr()}}function Gp(e,t){e.min=t.min,e.max=t.max}function ta(e,t){Gp(e.x,t.x),Gp(e.y,t.y)}function Ok(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}const ox=1e-4,LN=1-ox,DN=1+ox,sx=.01,IN=0-sx,MN=0+sx;function ln(e){return e.max-e.min}function NN(e,t,n){return Math.abs(e-t)<=n}function jk(e,t,n,r=.5){e.origin=r,e.originPoint=vt(t.min,t.max,e.origin),e.scale=ln(n)/ln(t),e.translate=vt(n.min,n.max,e.origin)-e.originPoint,(e.scale>=LN&&e.scale<=DN||isNaN(e.scale))&&(e.scale=1),(e.translate>=IN&&e.translate<=MN||isNaN(e.translate))&&(e.translate=0)}function As(e,t,n,r){jk(e.x,t.x,n.x,r?r.originX:void 0),jk(e.y,t.y,n.y,r?r.originY:void 0)}function Uk(e,t,n,r=0){const o=r?vt(n.min,n.max,r):n.min;e.min=o+t.min,e.max=e.min+ln(t)}function ON(e,t,n,r){Uk(e.x,t.x,n.x,r?.x),Uk(e.y,t.y,n.y,r?.y)}function Bk(e,t,n,r=0){const o=r?vt(n.min,n.max,r):n.min;e.min=t.min-o,e.max=e.min+ln(t)}function yu(e,t,n,r){Bk(e.x,t.x,n.x,r?.x),Bk(e.y,t.y,n.y,r?.y)}function Fk(e,t,n,r,o){return e-=t,e=gu(e,1/n,r),o!==void 0&&(e=gu(e,1/o,r)),e}function jN(e,t=0,n=1,r=.5,o,s=e,c=e){if(va.test(t)&&(t=parseFloat(t),t=vt(c.min,c.max,t/100)-c.min),typeof t!="number")return;let u=vt(s.min,s.max,r);e===s&&(u-=t),e.min=Fk(e.min,t,n,u,o),e.max=Fk(e.max,t,n,u,o)}function Vk(e,t,[n,r,o],s,c){jN(e,t[n],t[r],t[o],t.scale,s,c)}const UN=["x","scaleX","originX"],BN=["y","scaleY","originY"];function zk(e,t,n,r){Vk(e.x,t,UN,n?n.x:void 0,r?r.x:void 0),Vk(e.y,t,BN,n?n.y:void 0,r?r.y:void 0)}function Hk(e){return e.translate===0&&e.scale===1}function lx(e){return Hk(e.x)&&Hk(e.y)}function $k(e,t){return e.min===t.min&&e.max===t.max}function FN(e,t){return $k(e.x,t.x)&&$k(e.y,t.y)}function Wk(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function cx(e,t){return Wk(e.x,t.x)&&Wk(e.y,t.y)}function Gk(e){return ln(e.x)/ln(e.y)}function Kk(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}function fa(e){return[e("x"),e("y")]}function VN(e,t,n){let r="";const o=e.x.translate/t.x,s=e.y.translate/t.y,c=n?.z||0;if((o||s||c)&&(r=`translate3d(${o}px, ${s}px, ${c}px) `),(t.x!==1||t.y!==1)&&(r+=`scale(${1/t.x}, ${1/t.y}) `),n){const{transformPerspective:p,rotate:m,rotateX:y,rotateY:k,skewX:w,skewY:x}=n;p&&(r=`perspective(${p}px) ${r}`),m&&(r+=`rotate(${m}deg) `),y&&(r+=`rotateX(${y}deg) `),k&&(r+=`rotateY(${k}deg) `),w&&(r+=`skewX(${w}deg) `),x&&(r+=`skewY(${x}deg) `)}const u=e.x.scale*t.x,h=e.y.scale*t.y;return(u!==1||h!==1)&&(r+=`scale(${u}, ${h})`),r||"none"}const ux=["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"],zN=ux.length,qk=e=>typeof e=="string"?parseFloat(e):e,Yk=e=>typeof e=="number"||_e.test(e);function HN(e,t,n,r,o,s){o?(e.opacity=vt(0,n.opacity??1,$N(r)),e.opacityExit=vt(t.opacity??1,0,WN(r))):s&&(e.opacity=vt(t.opacity??1,n.opacity??1,r));for(let c=0;c<zN;c++){const u=ux[c];let h=Zk(t,u),p=Zk(n,u);if(h===void 0&&p===void 0)continue;h||(h=0),p||(p=0),h===0||p===0||Yk(h)===Yk(p)?(e[u]=Math.max(vt(qk(h),qk(p),r),0),(va.test(p)||va.test(h))&&(e[u]+="%")):e[u]=p}(t.rotate||n.rotate)&&(e.rotate=vt(t.rotate||0,n.rotate||0,r))}function Zk(e,t){return e[t]!==void 0?e[t]:e.borderRadius}const $N=dx(0,.5,t0),WN=dx(.5,.95,jn);function dx(e,t,n){return r=>r<e?0:r>t?1:n(Us(e,t,r))}function GN(e,t,n){const r=Kt(e)?e:vo(e);return r.start(Zf("",r,t,n)),r.animation}function Vs(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n)}const KN=(e,t)=>e.depth-t.depth;class qN{constructor(){this.children=[],this.isDirty=!1}add(t){jf(this.children,t),this.isDirty=!0}remove(t){uu(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(KN),this.isDirty=!1,this.children.forEach(t)}}function YN(e,t){const n=sn.now(),r=({timestamp:o})=>{const s=o-n;s>=t&&(Nr(r),e(s-t))};return dt.setup(r,!0),()=>Nr(r)}function $c(e){return Kt(e)?e.get():e}class ZN{constructor(){this.members=[]}add(t){jf(this.members,t);for(let n=this.members.length-1;n>=0;n--){const r=this.members[n];if(r===t||r===this.lead||r===this.prevLead)continue;const o=r.instance;(!o||o.isConnected===!1)&&!r.snapshot&&(uu(this.members,r),r.unmount())}t.scheduleRender()}remove(t){if(uu(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){for(let n=this.members.indexOf(t)-1;n>=0;n--){const r=this.members[n];if(r.isPresent!==!1&&r.instance?.isConnected!==!1)return this.promote(r),!0}return!1}promote(t,n){const r=this.lead;if(t!==r&&(this.prevLead=r,this.lead=t,t.show(),r)){r.updateSnapshot(),t.scheduleRender();const{layoutDependency:o}=r.options,{layoutDependency:s}=t.options;(o===void 0||o!==s)&&(t.resumeFrom=r,n&&(r.preserveOpacity=!0),r.snapshot&&(t.snapshot=r.snapshot,t.snapshot.latestValues=r.animationValues||r.latestValues),t.root?.isUpdating&&(t.isLayoutDirty=!0)),t.options.crossfade===!1&&r.hide()}}exitAnimationComplete(){this.members.forEach(t=>{t.options.onExitComplete?.(),t.resumingFrom?.options.onExitComplete?.()})}scheduleRender(){this.members.forEach(t=>t.instance&&t.scheduleRender(!1))}removeLeadSnapshot(){this.lead?.snapshot&&(this.lead.snapshot=void 0)}}const Wc={hasAnimatedSinceResize:!0,hasEverUpdated:!1},Gh=["","X","Y","Z"],XN=1e3;let QN=0;function Kh(e,t,n,r){const{latestValues:o}=t;o[e]&&(n[e]=o[e],t.setStaticValue(e,0),r&&(r[e]=0))}function hx(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:t}=e.options;if(!t)return;const n=D0(t);if(window.MotionHasOptimisedAnimation(n,"transform")){const{layout:o,layoutId:s}=e.options;window.MotionCancelOptimisedAnimation(n,"transform",dt,!(o||s))}const{parent:r}=e;r&&!r.hasCheckedOptimisedAppear&&hx(r)}function px({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:o}){return class{constructor(c={},u=t?.()){this.id=QN++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(tO),this.nodes.forEach(sO),this.nodes.forEach(lO),this.nodes.forEach(nO)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=c,this.root=u?u.root||u:this,this.path=u?[...u.path,u]:[],this.parent=u,this.depth=u?u.depth+1:0;for(let h=0;h<this.path.length;h++)this.path[h].shouldResetTransform=!0;this.root===this&&(this.nodes=new qN)}addEventListener(c,u){return this.eventHandlers.has(c)||this.eventHandlers.set(c,new Bf),this.eventHandlers.get(c).add(u)}notifyListeners(c,...u){const h=this.eventHandlers.get(c);h&&h.notify(...u)}hasListeners(c){return this.eventHandlers.has(c)}mount(c){if(this.instance)return;this.isSVG=nm(c)&&!eN(c),this.instance=c;const{layoutId:u,layout:h,visualElement:p}=this.options;if(p&&!p.current&&p.mount(c),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(h||u)&&(this.isLayoutDirty=!0),e){let m,y=0;const k=()=>this.root.updateBlockedByResize=!1;dt.read(()=>{y=window.innerWidth}),e(c,()=>{const w=window.innerWidth;w!==y&&(y=w,this.root.updateBlockedByResize=!0,m&&m(),m=YN(k,250),Wc.hasAnimatedSinceResize&&(Wc.hasAnimatedSinceResize=!1,this.nodes.forEach(Jk)))})}u&&this.root.registerSharedNode(u,this),this.options.animate!==!1&&p&&(u||h)&&this.addEventListener("didUpdate",({delta:m,hasLayoutChanged:y,hasRelativeLayoutChanged:k,layout:w})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const x=this.options.transition||p.getDefaultTransition()||pO,{onLayoutAnimationStart:C,onLayoutAnimationComplete:S}=p.getProps(),D=!this.targetLayout||!cx(this.targetLayout,w),L=!y&&k;if(this.options.layoutRoot||this.resumeFrom||L||y&&(D||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const R={...Yf(x,"layout"),onPlay:C,onComplete:S};(p.shouldReduceMotion||this.options.layoutRoot)&&(R.delay=0,R.type=!1),this.startAnimation(R),this.setAnimationOrigin(m,L)}else y||Jk(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=w})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const c=this.getStack();c&&c.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),Nr(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(cO),this.animationId++)}getTransformTemplate(){const{visualElement:c}=this.options;return c&&c.getProps().transformTemplate}willUpdate(c=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&hx(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let m=0;m<this.path.length;m++){const y=this.path[m];y.shouldResetTransform=!0,(typeof y.latestValues.x=="string"||typeof y.latestValues.y=="string")&&(y.isLayoutDirty=!0),y.updateScroll("snapshot"),y.options.layoutRoot&&y.willUpdate(!1)}const{layoutId:u,layout:h}=this.options;if(u===void 0&&!h)return;const p=this.getTransformTemplate();this.prevTransformTemplateValue=p?p(this.latestValues,""):void 0,this.updateSnapshot(),c&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){const h=this.updateBlockedByResize;this.unblockUpdate(),this.updateBlockedByResize=!1,this.clearAllSnapshots(),h&&this.nodes.forEach(rO),this.nodes.forEach(Xk);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(Qk);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(iO),this.nodes.forEach(oO),this.nodes.forEach(JN),this.nodes.forEach(eO)):this.nodes.forEach(Qk),this.clearAllSnapshots();const u=sn.now();Gt.delta=xa(0,1e3/60,u-Gt.timestamp),Gt.timestamp=u,Gt.isProcessing=!0,Uh.update.process(Gt),Uh.preRender.process(Gt),Uh.render.process(Gt),Gt.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,em.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(aO),this.sharedNodes.forEach(uO)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,dt.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){dt.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!ln(this.snapshot.measuredBox.x)&&!ln(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let h=0;h<this.path.length;h++)this.path[h].updateScroll();const c=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected||(this.layoutCorrected=Ot()),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:u}=this.options;u&&u.notify("LayoutMeasure",this.layout.layoutBox,c?c.layoutBox:void 0)}updateScroll(c="measure"){let u=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===c&&(u=!1),u&&this.instance){const h=r(this.instance);this.scroll={animationId:this.root.animationId,phase:c,isRoot:h,offset:n(this.instance),wasRoot:this.scroll?this.scroll.isRoot:h}}}resetTransform(){if(!o)return;const c=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,u=this.projectionDelta&&!lx(this.projectionDelta),h=this.getTransformTemplate(),p=h?h(this.latestValues,""):void 0,m=p!==this.prevTransformTemplateValue;c&&this.instance&&(u||ti(this.latestValues)||m)&&(o(this.instance,p),this.shouldResetTransform=!1,this.scheduleRender())}measure(c=!0){const u=this.measurePageBox();let h=this.removeElementScroll(u);return c&&(h=this.removeTransform(h)),fO(h),{animationId:this.root.animationId,measuredBox:u,layoutBox:h,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:c}=this.options;if(!c)return Ot();const u=c.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(mO))){const{scroll:p}=this.root;p&&(ma(u.x,p.offset.x),ma(u.y,p.offset.y))}return u}removeElementScroll(c){const u=Ot();if(ta(u,c),this.scroll?.wasRoot)return u;for(let h=0;h<this.path.length;h++){const p=this.path[h],{scroll:m,options:y}=p;p!==this.root&&m&&y.layoutScroll&&(m.wasRoot&&ta(u,c),ma(u.x,m.offset.x),ma(u.y,m.offset.y))}return u}applyTransform(c,u=!1,h){const p=h||Ot();ta(p,c);for(let m=0;m<this.path.length;m++){const y=this.path[m];!u&&y.options.layoutScroll&&y.scroll&&y!==y.root&&(ma(p.x,-y.scroll.offset.x),ma(p.y,-y.scroll.offset.y)),ti(y.latestValues)&&Hc(p,y.latestValues,y.layout?.layoutBox)}return ti(this.latestValues)&&Hc(p,this.latestValues,this.layout?.layoutBox),p}removeTransform(c){const u=Ot();ta(u,c);for(let h=0;h<this.path.length;h++){const p=this.path[h];if(!ti(p.latestValues))continue;let m;p.instance&&(Hp(p.latestValues)&&p.updateSnapshot(),m=Ot(),ta(m,p.measurePageBox())),zk(u,p.latestValues,p.snapshot?.layoutBox,m)}return ti(this.latestValues)&&zk(u,this.latestValues),u}setTargetDelta(c){this.targetDelta=c,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(c){this.options={...this.options,...c,crossfade:c.crossfade!==void 0?c.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==Gt.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(c=!1){const u=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=u.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=u.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=u.isSharedProjectionDirty);const h=!!this.resumingFrom||this!==u;if(!(c||h&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:m,layoutId:y}=this.options;if(!this.layout||!(m||y))return;this.resolvedRelativeTargetAt=Gt.timestamp;const k=this.getClosestProjectingParent();k&&this.linkedParentVersion!==k.layoutVersion&&!k.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(this.options.layoutAnchor!==!1&&k&&k.layout?this.createRelativeTarget(k,this.layout.layoutBox,k.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=Ot(),this.targetWithTransforms=Ot()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),ON(this.target,this.relativeTarget,this.relativeParent.target,this.options.layoutAnchor||void 0)):this.targetDelta?(this.resumingFrom?this.applyTransform(this.layout.layoutBox,!1,this.target):ta(this.target,this.layout.layoutBox),Z0(this.target,this.targetDelta)):ta(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,this.options.layoutAnchor!==!1&&k&&!!k.resumingFrom==!!this.resumingFrom&&!k.options.layoutScroll&&k.target&&this.animationProgress!==1?this.createRelativeTarget(k,this.target,k.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||Hp(this.parent.latestValues)||Y0(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(c,u,h){this.relativeParent=c,this.linkedParentVersion=c.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Ot(),this.relativeTargetOrigin=Ot(),yu(this.relativeTargetOrigin,u,h,this.options.layoutAnchor||void 0),ta(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){const c=this.getLead(),u=!!this.resumingFrom||this!==c;let h=!0;if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(h=!1),u&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(h=!1),this.resolvedRelativeTargetAt===Gt.timestamp&&(h=!1),h)return;const{layout:p,layoutId:m}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(p||m))return;ta(this.layoutCorrected,this.layout.layoutBox);const y=this.treeScale.x,k=this.treeScale.y;dN(this.layoutCorrected,this.treeScale,this.path,u),c.layout&&!c.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(c.target=c.layout.layoutBox,c.targetWithTransforms=Ot());const{target:w}=c;if(!w){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(Ok(this.prevProjectionDelta.x,this.projectionDelta.x),Ok(this.prevProjectionDelta.y,this.projectionDelta.y)),As(this.projectionDelta,this.layoutCorrected,w,this.latestValues),(this.treeScale.x!==y||this.treeScale.y!==k||!Kk(this.projectionDelta.x,this.prevProjectionDelta.x)||!Kk(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",w))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(c=!0){if(this.options.visualElement?.scheduleRender(),c){const u=this.getStack();u&&u.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=so(),this.projectionDelta=so(),this.projectionDeltaWithTransform=so()}setAnimationOrigin(c,u=!1){const h=this.snapshot,p=h?h.latestValues:{},m={...this.latestValues},y=so();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!u;const k=Ot(),w=h?h.source:void 0,x=this.layout?this.layout.source:void 0,C=w!==x,S=this.getStack(),D=!S||S.members.length<=1,L=!!(C&&!D&&this.options.crossfade===!0&&!this.path.some(hO));this.animationProgress=0;let R;this.mixTargetDelta=O=>{const K=O/1e3;e_(y.x,c.x,K),e_(y.y,c.y,K),this.setTargetDelta(y),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(yu(k,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),dO(this.relativeTarget,this.relativeTargetOrigin,k,K),R&&FN(this.relativeTarget,R)&&(this.isProjectionDirty=!1),R||(R=Ot()),ta(R,this.relativeTarget)),C&&(this.animationValues=m,HN(m,p,this.latestValues,K,L,D)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=K},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(c){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(Nr(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=dt.update(()=>{Wc.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=vo(0)),this.motionValue.jump(0,!1),this.currentAnimation=GN(this.motionValue,[0,1e3],{...c,velocity:0,isSync:!0,onUpdate:u=>{this.mixTargetDelta(u),c.onUpdate&&c.onUpdate(u)},onStop:()=>{},onComplete:()=>{c.onComplete&&c.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const c=this.getStack();c&&c.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(XN),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const c=this.getLead();let{targetWithTransforms:u,target:h,layout:p,latestValues:m}=c;if(!(!u||!h||!p)){if(this!==c&&this.layout&&p&&fx(this.options.animationType,this.layout.layoutBox,p.layoutBox)){h=this.target||Ot();const y=ln(this.layout.layoutBox.x);h.x.min=c.target.x.min,h.x.max=h.x.min+y;const k=ln(this.layout.layoutBox.y);h.y.min=c.target.y.min,h.y.max=h.y.min+k}ta(u,h),Hc(u,m),As(this.projectionDeltaWithTransform,this.layoutCorrected,u,m)}}registerSharedNode(c,u){this.sharedNodes.has(c)||this.sharedNodes.set(c,new ZN),this.sharedNodes.get(c).add(u);const p=u.options.initialPromotionConfig;u.promote({transition:p?p.transition:void 0,preserveFollowOpacity:p&&p.shouldPreserveFollowOpacity?p.shouldPreserveFollowOpacity(u):void 0})}isLead(){const c=this.getStack();return c?c.lead===this:!0}getLead(){const{layoutId:c}=this.options;return c?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:c}=this.options;return c?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:c}=this.options;if(c)return this.root.sharedNodes.get(c)}promote({needsReset:c,transition:u,preserveFollowOpacity:h}={}){const p=this.getStack();p&&p.promote(this,h),c&&(this.projectionDelta=void 0,this.needsReset=!0),u&&this.setOptions({transition:u})}relegate(){const c=this.getStack();return c?c.relegate(this):!1}resetSkewAndRotation(){const{visualElement:c}=this.options;if(!c)return;let u=!1;const{latestValues:h}=c;if((h.z||h.rotate||h.rotateX||h.rotateY||h.rotateZ||h.skewX||h.skewY)&&(u=!0),!u)return;const p={};h.z&&Kh("z",c,p,this.animationValues);for(let m=0;m<Gh.length;m++)Kh(`rotate${Gh[m]}`,c,p,this.animationValues),Kh(`skew${Gh[m]}`,c,p,this.animationValues);c.render();for(const m in p)c.setStaticValue(m,p[m]),this.animationValues&&(this.animationValues[m]=p[m]);c.scheduleRender()}applyProjectionStyles(c,u){if(!this.instance||this.isSVG)return;if(!this.isVisible){c.visibility="hidden";return}const h=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,c.visibility="",c.opacity="",c.pointerEvents=$c(u?.pointerEvents)||"",c.transform=h?h(this.latestValues,""):"none";return}const p=this.getLead();if(!this.projectionDelta||!this.layout||!p.target){this.options.layoutId&&(c.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,c.pointerEvents=$c(u?.pointerEvents)||""),this.hasProjected&&!ti(this.latestValues)&&(c.transform=h?h({},""):"none",this.hasProjected=!1);return}c.visibility="";const m=p.animationValues||p.latestValues;this.applyTransformsToTarget();let y=VN(this.projectionDeltaWithTransform,this.treeScale,m);h&&(y=h(m,y)),c.transform=y;const{x:k,y:w}=this.projectionDelta;c.transformOrigin=`${k.origin*100}% ${w.origin*100}% 0`,p.animationValues?c.opacity=p===this?m.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:m.opacityExit:c.opacity=p===this?m.opacity!==void 0?m.opacity:"":m.opacityExit!==void 0?m.opacityExit:0;for(const x in Wp){if(m[x]===void 0)continue;const{correct:C,applyTo:S,isCSSVariable:D}=Wp[x],L=y==="none"?m[x]:C(m[x],p);if(S){const R=S.length;for(let O=0;O<R;O++)c[S[O]]=L}else D?this.options.visualElement.renderState.vars[x]=L:c[x]=L}this.options.layoutId&&(c.pointerEvents=p===this?$c(u?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(c=>c.currentAnimation?.stop()),this.root.nodes.forEach(Xk),this.root.sharedNodes.clear()}}}function JN(e){e.updateLayout()}function eO(e){const t=e.resumeFrom?.snapshot||e.snapshot;if(e.isLead()&&e.layout&&t&&e.hasListeners("didUpdate")){const{layoutBox:n,measuredBox:r}=e.layout,{animationType:o}=e.options,s=t.source!==e.layout.source;if(o==="size")fa(m=>{const y=s?t.measuredBox[m]:t.layoutBox[m],k=ln(y);y.min=n[m].min,y.max=y.min+k});else if(o==="x"||o==="y"){const m=o==="x"?"y":"x";Gp(s?t.measuredBox[m]:t.layoutBox[m],n[m])}else fx(o,t.layoutBox,n)&&fa(m=>{const y=s?t.measuredBox[m]:t.layoutBox[m],k=ln(n[m]);y.max=y.min+k,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[m].max=e.relativeTarget[m].min+k)});const c=so();As(c,n,t.layoutBox);const u=so();s?As(u,e.applyTransform(r,!0),t.measuredBox):As(u,n,t.layoutBox);const h=!lx(c);let p=!1;if(!e.resumeFrom){const m=e.getClosestProjectingParent();if(m&&!m.resumeFrom){const{snapshot:y,layout:k}=m;if(y&&k){const w=e.options.layoutAnchor||void 0,x=Ot();yu(x,t.layoutBox,y.layoutBox,w);const C=Ot();yu(C,n,k.layoutBox,w),cx(x,C)||(p=!0),m.options.layoutRoot&&(e.relativeTarget=C,e.relativeTargetOrigin=x,e.relativeParent=m)}}}e.notifyListeners("didUpdate",{layout:n,snapshot:t,delta:u,layoutDelta:c,hasLayoutChanged:h,hasRelativeLayoutChanged:p})}else if(e.isLead()){const{onExitComplete:n}=e.options;n&&n()}e.options.transition=void 0}function tO(e){e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function nO(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function aO(e){e.clearSnapshot()}function Xk(e){e.clearMeasurements()}function rO(e){e.isLayoutDirty=!0,e.updateLayout()}function Qk(e){e.isLayoutDirty=!1}function iO(e){e.isAnimationBlocked&&e.layout&&!e.isLayoutDirty&&(e.snapshot=e.layout,e.isLayoutDirty=!0)}function oO(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function Jk(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function sO(e){e.resolveTargetDelta()}function lO(e){e.calcProjection()}function cO(e){e.resetSkewAndRotation()}function uO(e){e.removeLeadSnapshot()}function e_(e,t,n){e.translate=vt(t.translate,0,n),e.scale=vt(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function t_(e,t,n,r){e.min=vt(t.min,n.min,r),e.max=vt(t.max,n.max,r)}function dO(e,t,n,r){t_(e.x,t.x,n.x,r),t_(e.y,t.y,n.y,r)}function hO(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const pO={duration:.45,ease:[.4,0,.1,1]},n_=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),a_=n_("applewebkit/")&&!n_("chrome/")?Math.round:jn;function r_(e){e.min=a_(e.min),e.max=a_(e.max)}function fO(e){r_(e.x),r_(e.y)}function fx(e,t,n){return e==="position"||e==="preserve-aspect"&&!NN(Gk(t),Gk(n),.2)}function mO(e){return e!==e.root&&e.scroll?.wasRoot}const gO=px({attachResizeListener:(e,t)=>Vs(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body?.scrollLeft||0,y:document.documentElement.scrollTop||document.body?.scrollTop||0}),checkIsScrollRoot:()=>!0}),qh={current:void 0},mx=px({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!qh.current){const e=new gO({});e.mount(window),e.setOptions({layoutScroll:!0}),qh.current=e}return qh.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),sm=b.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});function i_(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function yO(...e){return t=>{let n=!1;const r=e.map(o=>{const s=i_(o,t);return!n&&typeof s=="function"&&(n=!0),s});if(n)return()=>{for(let o=0;o<r.length;o++){const s=r[o];typeof s=="function"?s():i_(e[o],null)}}}}function vO(...e){return b.useCallback(yO(...e),e)}class kO extends b.Component{getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(Uc(n)&&t.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const r=n.offsetParent,o=Uc(r)&&r.offsetWidth||0,s=Uc(r)&&r.offsetHeight||0,c=getComputedStyle(n),u=this.props.sizeRef.current;u.height=parseFloat(c.height),u.width=parseFloat(c.width),u.top=n.offsetTop,u.left=n.offsetLeft,u.right=o-u.width-u.left,u.bottom=s-u.height-u.top}return null}componentDidUpdate(){}render(){return this.props.children}}function _O({children:e,isPresent:t,anchorX:n,anchorY:r,root:o,pop:s}){const c=b.useId(),u=b.useRef(null),h=b.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:p}=b.useContext(sm),m=e.props?.ref??e?.ref,y=vO(u,m);return b.useInsertionEffect(()=>{const{width:k,height:w,top:x,left:C,right:S,bottom:D}=h.current;if(t||s===!1||!u.current||!k||!w)return;const L=n==="left"?`left: ${C}`:`right: ${S}`,R=r==="bottom"?`bottom: ${D}`:`top: ${x}`;u.current.dataset.motionPopId=c;const O=document.createElement("style");p&&(O.nonce=p);const K=o??document.head;return K.appendChild(O),O.sheet&&O.sheet.insertRule(`
|
|
847
|
-
[data-motion-pop-id="${c}"] {
|
|
848
|
-
position: absolute !important;
|
|
849
|
-
width: ${k}px !important;
|
|
850
|
-
height: ${w}px !important;
|
|
851
|
-
${L}px !important;
|
|
852
|
-
${R}px !important;
|
|
853
|
-
}
|
|
854
|
-
`),()=>{u.current?.removeAttribute("data-motion-pop-id"),K.contains(O)&&K.removeChild(O)}},[t]),N.jsx(kO,{isPresent:t,childRef:u,sizeRef:h,pop:s,children:s===!1?e:b.cloneElement(e,{ref:y})})}const bO=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:o,presenceAffectsLayout:s,mode:c,anchorX:u,anchorY:h,root:p})=>{const m=Of(wO),y=b.useId();let k=!0,w=b.useMemo(()=>(k=!1,{id:y,initial:t,isPresent:n,custom:o,onExitComplete:x=>{m.set(x,!0);for(const C of m.values())if(!C)return;r&&r()},register:x=>(m.set(x,!1),()=>m.delete(x))}),[n,m,r]);return s&&k&&(w={...w}),b.useMemo(()=>{m.forEach((x,C)=>m.set(C,!1))},[n]),b.useEffect(()=>{!n&&!m.size&&r&&r()},[n]),e=N.jsx(_O,{pop:c==="popLayout",isPresent:n,anchorX:u,anchorY:h,root:p,children:e}),N.jsx(Lu.Provider,{value:w,children:e})};function wO(){return new Map}function gx(e=!0){const t=b.useContext(Lu);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:r,register:o}=t,s=b.useId();b.useEffect(()=>{if(e)return o(s)},[e]);const c=b.useCallback(()=>e&&r&&r(s),[s,r,e]);return!n&&r?[!1,c]:[!0]}const _c=e=>e.key||"";function o_(e){const t=[];return b.Children.forEach(e,n=>{b.isValidElement(n)&&t.push(n)}),t}const xO=({children:e,custom:t,initial:n=!0,onExitComplete:r,presenceAffectsLayout:o=!0,mode:s="sync",propagate:c=!1,anchorX:u="left",anchorY:h="top",root:p})=>{const[m,y]=gx(c),k=b.useMemo(()=>o_(e),[e]),w=c&&!m?[]:k.map(_c),x=b.useRef(!0),C=b.useRef(k),S=Of(()=>new Map),D=b.useRef(new Set),[L,R]=b.useState(k),[O,K]=b.useState(k);Hw(()=>{x.current=!1,C.current=k;for(let P=0;P<O.length;P++){const Y=_c(O[P]);w.includes(Y)?(S.delete(Y),D.current.delete(Y)):S.get(Y)!==!0&&S.set(Y,!1)}},[O,w.length,w.join("-")]);const W=[];if(k!==L){let P=[...k];for(let Y=0;Y<O.length;Y++){const X=O[Y],ue=_c(X);w.includes(ue)||(P.splice(Y,0,X),W.push(X))}return s==="wait"&&W.length&&(P=W),K(o_(P)),R(k),null}const{forceRender:z}=b.useContext(Nf);return N.jsx(N.Fragment,{children:O.map(P=>{const Y=_c(P),X=c&&!m?!1:k===O||w.includes(Y),ue=()=>{if(D.current.has(Y))return;if(S.has(Y))D.current.add(Y),S.set(Y,!0);else return;let se=!0;S.forEach(Ae=>{Ae||(se=!1)}),se&&(z?.(),K(C.current),c&&y?.(),r&&r())};return N.jsx(bO,{isPresent:X,initial:!x.current||n?void 0:!1,custom:t,presenceAffectsLayout:o,mode:s,root:p,onExitComplete:X?void 0:ue,anchorX:u,anchorY:h,children:P},Y)})})},yx=b.createContext({strict:!1}),s_={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let l_=!1;function PO(){if(l_)return;const e={};for(const t in s_)e[t]={isEnabled:n=>s_[t].some(r=>!!n[r])};G0(e),l_=!0}function vx(){return PO(),sN()}function SO(e){const t=vx();for(const n in e)t[n]={...t[n],...e[n]};G0(t)}const CO=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function vu(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||CO.has(e)}let kx=e=>!vu(e);function TO(e){typeof e=="function"&&(kx=t=>t.startsWith("on")?!vu(t):e(t))}try{TO(require("@emotion/is-prop-valid").default)}catch{}function EO(e,t,n){const r={};for(const o in e)o==="values"&&typeof e.values=="object"||Kt(e[o])||(kx(o)||n===!0&&vu(o)||!t&&!vu(o)||e.draggable&&o.startsWith("onDrag"))&&(r[o]=e[o]);return r}const Nu=b.createContext({});function AO(e,t){if(Mu(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Fs(n)?n:void 0,animate:Fs(r)?r:void 0}}return e.inherit!==!1?t:{}}function RO(e){const{initial:t,animate:n}=AO(e,b.useContext(Nu));return b.useMemo(()=>({initial:t,animate:n}),[c_(t),c_(n)])}function c_(e){return Array.isArray(e)?e.join(" "):e}const lm=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function _x(e,t,n){for(const r in t)!Kt(t[r])&&!J0(r,n)&&(e[r]=t[r])}function LO({transformTemplate:e},t){return b.useMemo(()=>{const n=lm();return im(n,t,e),Object.assign({},n.vars,n.style)},[t])}function DO(e,t){const n=e.style||{},r={};return _x(r,n,e),Object.assign(r,LO(e,t)),r}function IO(e,t){const n={},r=DO(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,r.userSelect=r.WebkitUserSelect=r.WebkitTouchCallout="none",r.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=r,n}const bx=()=>({...lm(),attrs:{}});function MO(e,t,n,r){const o=b.useMemo(()=>{const s=bx();return ex(s,t,nx(r),e.transformTemplate,e.style),{...s.attrs,style:{...s.style}}},[t]);if(e.style){const s={};_x(s,e.style,e),o.style={...s,...o.style}}return o}const NO=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function cm(e){return typeof e!="string"||e.includes("-")?!1:!!(NO.indexOf(e)>-1||/[A-Z]/u.test(e))}function OO(e,t,n,{latestValues:r},o,s=!1,c){const h=(c??cm(e)?MO:IO)(t,r,o,e),p=EO(t,typeof e=="string",s),m=e!==b.Fragment?{...p,...h,ref:n}:{},{children:y}=t,k=b.useMemo(()=>Kt(y)?y.get():y,[y]);return b.createElement(e,{...m,children:k})}function jO({scrapeMotionValuesFromProps:e,createRenderState:t},n,r,o){return{latestValues:UO(n,r,o,e),renderState:t()}}function UO(e,t,n,r){const o={},s=r(e,{});for(const k in s)o[k]=$c(s[k]);let{initial:c,animate:u}=e;const h=Mu(e),p=$0(e);t&&p&&!h&&e.inherit!==!1&&(c===void 0&&(c=t.initial),u===void 0&&(u=t.animate));let m=n?n.initial===!1:!1;m=m||c===!1;const y=m?u:c;if(y&&typeof y!="boolean"&&!Iu(y)){const k=Array.isArray(y)?y:[y];for(let w=0;w<k.length;w++){const x=Xf(e,k[w]);if(x){const{transitionEnd:C,transition:S,...D}=x;for(const L in D){let R=D[L];if(Array.isArray(R)){const O=m?R.length-1:0;R=R[O]}R!==null&&(o[L]=R)}for(const L in C)o[L]=C[L]}}}return o}const wx=e=>(t,n)=>{const r=b.useContext(Nu),o=b.useContext(Lu),s=()=>jO(e,t,r,o);return n?s():Of(s)},BO=wx({scrapeMotionValuesFromProps:om,createRenderState:lm}),FO=wx({scrapeMotionValuesFromProps:ax,createRenderState:bx}),VO=Symbol.for("motionComponentSymbol");function zO(e,t,n){const r=b.useRef(n);b.useInsertionEffect(()=>{r.current=n});const o=b.useRef(null);return b.useCallback(s=>{s&&e.onMount?.(s);const c=r.current;if(typeof c=="function")if(s){const u=c(s);typeof u=="function"&&(o.current=u)}else o.current?(o.current(),o.current=null):c(s);else c&&(c.current=s);t&&(s?t.mount(s):t.unmount())},[t])}const xx=b.createContext({});function no(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function HO(e,t,n,r,o,s){const{visualElement:c}=b.useContext(Nu),u=b.useContext(yx),h=b.useContext(Lu),p=b.useContext(sm),m=p.reducedMotion,y=p.skipAnimations,k=b.useRef(null),w=b.useRef(!1);r=r||u.renderer,!k.current&&r&&(k.current=r(e,{visualState:t,parent:c,props:n,presenceContext:h,blockInitialAnimation:h?h.initial===!1:!1,reducedMotionConfig:m,skipAnimations:y,isSVG:s}),w.current&&k.current&&(k.current.manuallyAnimateOnMount=!0));const x=k.current,C=b.useContext(xx);x&&!x.projection&&o&&(x.type==="html"||x.type==="svg")&&$O(k.current,n,o,C);const S=b.useRef(!1);b.useInsertionEffect(()=>{x&&S.current&&x.update(n,h)});const D=n[L0],L=b.useRef(!!D&&typeof window<"u"&&!window.MotionHandoffIsComplete?.(D)&&window.MotionHasOptimisedAnimation?.(D));return Hw(()=>{w.current=!0,x&&(S.current=!0,window.MotionIsMounted=!0,x.updateFeatures(),x.scheduleRenderMicrotask(),L.current&&x.animationState&&x.animationState.animateChanges())}),b.useEffect(()=>{x&&(!L.current&&x.animationState&&x.animationState.animateChanges(),L.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(D)}),L.current=!1),x.enteringChildren=void 0)}),x}function $O(e,t,n,r){const{layoutId:o,layout:s,drag:c,dragConstraints:u,layoutScroll:h,layoutRoot:p,layoutAnchor:m,layoutCrossfade:y}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:Px(e.parent)),e.projection.setOptions({layoutId:o,layout:s,alwaysMeasureLayout:!!c||u&&no(u),visualElement:e,animationType:typeof s=="string"?s:"both",initialPromotionConfig:r,crossfade:y,layoutScroll:h,layoutRoot:p,layoutAnchor:m})}function Px(e){if(e)return e.options.allowProjection!==!1?e.projection:Px(e.parent)}function Yh(e,{forwardMotionProps:t=!1,type:n}={},r,o){r&&SO(r);const s=n?n==="svg":cm(e),c=s?FO:BO;function u(p,m){let y;const k={...b.useContext(sm),...p,layoutId:WO(p)},{isStatic:w}=k,x=RO(p),C=c(p,w);if(!w&&typeof window<"u"){GO();const S=KO(k);y=S.MeasureLayout,x.visualElement=HO(e,C,k,o,S.ProjectionNode,s)}return N.jsxs(Nu.Provider,{value:x,children:[y&&x.visualElement?N.jsx(y,{visualElement:x.visualElement,...k}):null,OO(e,p,zO(C,x.visualElement,m),C,w,t,s)]})}u.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const h=b.forwardRef(u);return h[VO]=e,h}function WO({layoutId:e}){const t=b.useContext(Nf).id;return t&&e!==void 0?t+"-"+e:e}function GO(e,t){b.useContext(yx).strict}function KO(e){const t=vx(),{drag:n,layout:r}=t;if(!n&&!r)return{};const o={...n,...r};return{MeasureLayout:n?.isEnabled(e)||r?.isEnabled(e)?o.MeasureLayout:void 0,ProjectionNode:o.ProjectionNode}}function qO(e,t){if(typeof Proxy>"u")return Yh;const n=new Map,r=(s,c)=>Yh(s,c,e,t),o=(s,c)=>r(s,c);return new Proxy(o,{get:(s,c)=>c==="create"?r:(n.has(c)||n.set(c,Yh(c,void 0,e,t)),n.get(c))})}const YO=(e,t)=>t.isSVG??cm(e)?new PN(t):new vN(t,{allowProjection:e!==b.Fragment});class ZO extends jr{constructor(t){super(t),t.animationState||(t.animationState=AN(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();Iu(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let XO=0;class QO extends jr{constructor(){super(...arguments),this.id=XO++,this.isExitComplete=!1}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:r}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===r)return;if(t&&r===!1){if(this.isExitComplete){const{initial:s,custom:c}=this.node.getProps();if(typeof s=="string"){const u=si(this.node,s,c);if(u){const{transition:h,transitionEnd:p,...m}=u;for(const y in m)this.node.getValue(y)?.jump(m[y])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const o=this.node.animationState.setActive("exit",!t);n&&!t&&o.then(()=>{this.isExitComplete=!0,n(this.id)})}mount(){const{register:t,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const JO={animation:{Feature:ZO},exit:{Feature:QO}};function nl(e){return{point:{x:e.pageX,y:e.pageY}}}const e3=e=>t=>tm(t)&&e(t,nl(t));function Rs(e,t,n,r){return Vs(e,t,e3(n),r)}const Sx=({current:e})=>e?e.ownerDocument.defaultView:null,u_=(e,t)=>Math.abs(e-t);function t3(e,t){const n=u_(e.x,t.x),r=u_(e.y,t.y);return Math.sqrt(n**2+r**2)}const d_=new Set(["auto","scroll"]);class Cx{constructor(t,n,{transformPagePoint:r,contextWindow:o=window,dragSnapToOrigin:s=!1,distanceThreshold:c=3,element:u}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=w=>{this.handleScroll(w.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=bc(this.lastRawMoveEventInfo,this.transformPagePoint));const w=Zh(this.lastMoveEventInfo,this.history),x=this.startEvent!==null,C=t3(w.offset,{x:0,y:0})>=this.distanceThreshold;if(!x&&!C)return;const{point:S}=w,{timestamp:D}=Gt;this.history.push({...S,timestamp:D});const{onStart:L,onMove:R}=this.handlers;x||(L&&L(this.lastMoveEvent,w),this.startEvent=this.lastMoveEvent),R&&R(this.lastMoveEvent,w)},this.handlePointerMove=(w,x)=>{this.lastMoveEvent=w,this.lastRawMoveEventInfo=x,this.lastMoveEventInfo=bc(x,this.transformPagePoint),dt.update(this.updatePoint,!0)},this.handlePointerUp=(w,x)=>{this.end();const{onEnd:C,onSessionEnd:S,resumeAnimation:D}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&D&&D(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const L=Zh(w.type==="pointercancel"?this.lastMoveEventInfo:bc(x,this.transformPagePoint),this.history);this.startEvent&&C&&C(w,L),S&&S(w,L)},!tm(t))return;this.dragSnapToOrigin=s,this.handlers=n,this.transformPagePoint=r,this.distanceThreshold=c,this.contextWindow=o||window;const h=nl(t),p=bc(h,this.transformPagePoint),{point:m}=p,{timestamp:y}=Gt;this.history=[{...m,timestamp:y}];const{onSessionStart:k}=n;k&&k(t,Zh(p,this.history)),this.removeListeners=Js(Rs(this.contextWindow,"pointermove",this.handlePointerMove),Rs(this.contextWindow,"pointerup",this.handlePointerUp),Rs(this.contextWindow,"pointercancel",this.handlePointerUp)),u&&this.startScrollTracking(u)}startScrollTracking(t){let n=t.parentElement;for(;n;){const r=getComputedStyle(n);(d_.has(r.overflowX)||d_.has(r.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const n=this.scrollPositions.get(t);if(!n)return;const r=t===window,o=r?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},s={x:o.x-n.x,y:o.y-n.y};s.x===0&&s.y===0||(r?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=s.x,this.lastMoveEventInfo.point.y+=s.y):this.history.length>0&&(this.history[0].x-=s.x,this.history[0].y-=s.y),this.scrollPositions.set(t,o),dt.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Nr(this.updatePoint)}}function bc(e,t){return t?{point:t(e.point)}:e}function h_(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Zh({point:e},t){return{point:e,delta:h_(e,Tx(t)),offset:h_(e,n3(t)),velocity:a3(t,.1)}}function n3(e){return e[0]}function Tx(e){return e[e.length-1]}function a3(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const o=Tx(e);for(;n>=0&&(r=e[n],!(o.timestamp-r.timestamp>Sn(t)));)n--;if(!r)return{x:0,y:0};r===e[0]&&e.length>2&&o.timestamp-r.timestamp>Sn(t)*2&&(r=e[1]);const s=On(o.timestamp-r.timestamp);if(s===0)return{x:0,y:0};const c={x:(o.x-r.x)/s,y:(o.y-r.y)/s};return c.x===1/0&&(c.x=0),c.y===1/0&&(c.y=0),c}function r3(e,{min:t,max:n},r){return t!==void 0&&e<t?e=r?vt(t,e,r.min):Math.max(e,t):n!==void 0&&e>n&&(e=r?vt(n,e,r.max):Math.min(e,n)),e}function p_(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function i3(e,{top:t,left:n,bottom:r,right:o}){return{x:p_(e.x,n,o),y:p_(e.y,t,r)}}function f_(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.min<e.max-e.min&&([n,r]=[r,n]),{min:n,max:r}}function o3(e,t){return{x:f_(e.x,t.x),y:f_(e.y,t.y)}}function s3(e,t){let n=.5;const r=ln(e),o=ln(t);return o>r?n=Us(t.min,t.max-r,e.min):r>o&&(n=Us(e.min,e.max-o,t.min)),xa(0,1,n)}function l3(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const Kp=.35;function c3(e=Kp){return e===!1?e=0:e===!0&&(e=Kp),{x:m_(e,"left","right"),y:m_(e,"top","bottom")}}function m_(e,t,n){return{min:g_(e,t),max:g_(e,n)}}function g_(e,t){return typeof e=="number"?e:e[t]||0}const u3=new WeakMap;class d3{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Ot(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:n=!1,distanceThreshold:r}={}){const{presenceContext:o}=this.visualElement;if(o&&o.isPresent===!1)return;const s=y=>{n&&this.snapToCursor(nl(y).point),this.stopAnimation()},c=(y,k)=>{const{drag:w,dragPropagation:x,onDragStart:C}=this.getProps();if(w&&!x&&(this.openDragLock&&this.openDragLock(),this.openDragLock=jM(w),!this.openDragLock))return;this.latestPointerEvent=y,this.latestPanInfo=k,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),fa(D=>{let L=this.getAxisMotionValue(D).get()||0;if(va.test(L)){const{projection:R}=this.visualElement;if(R&&R.layout){const O=R.layout.layoutBox[D];O&&(L=ln(O)*(parseFloat(L)/100))}}this.originPoint[D]=L}),C&&dt.update(()=>C(y,k),!1,!0),Up(this.visualElement,"transform");const{animationState:S}=this.visualElement;S&&S.setActive("whileDrag",!0)},u=(y,k)=>{this.latestPointerEvent=y,this.latestPanInfo=k;const{dragPropagation:w,dragDirectionLock:x,onDirectionLock:C,onDrag:S}=this.getProps();if(!w&&!this.openDragLock)return;const{offset:D}=k;if(x&&this.currentDirection===null){this.currentDirection=p3(D),this.currentDirection!==null&&C&&C(this.currentDirection);return}this.updateAxis("x",k.point,D),this.updateAxis("y",k.point,D),this.visualElement.render(),S&&dt.update(()=>S(y,k),!1,!0)},h=(y,k)=>{this.latestPointerEvent=y,this.latestPanInfo=k,this.stop(y,k),this.latestPointerEvent=null,this.latestPanInfo=null},p=()=>{const{dragSnapToOrigin:y}=this.getProps();(y||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:m}=this.getProps();this.panSession=new Cx(t,{onSessionStart:s,onStart:c,onMove:u,onSessionEnd:h,resumeAnimation:p},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:m,distanceThreshold:r,contextWindow:Sx(this.visualElement),element:this.visualElement.current})}stop(t,n){const r=t||this.latestPointerEvent,o=n||this.latestPanInfo,s=this.isDragging;if(this.cancel(),!s||!o||!r)return;const{velocity:c}=o;this.startAnimation(c);const{onDragEnd:u}=this.getProps();u&&dt.postRender(()=>u(r,o))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:r}=this.getProps();!r&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,n,r){const{drag:o}=this.getProps();if(!r||!wc(t,o,this.currentDirection))return;const s=this.getAxisMotionValue(t);let c=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(c=r3(c,this.constraints[t],this.elastic[t])),s.set(c)}resolveConstraints(){const{dragConstraints:t,dragElastic:n}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,o=this.constraints;t&&no(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=i3(r.layoutBox,t):this.constraints=!1,this.elastic=c3(n),o!==this.constraints&&!no(t)&&r&&this.constraints&&!this.hasMutatedConstraints&&fa(s=>{this.constraints!==!1&&this.getAxisMotionValue(s)&&(this.constraints[s]=l3(r.layoutBox[s],this.constraints[s]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!no(t))return!1;const r=t.current,{projection:o}=this.visualElement;if(!o||!o.layout)return!1;const s=hN(r,o.root,this.visualElement.getTransformPagePoint());let c=o3(o.layout.layoutBox,s);if(n){const u=n(cN(c));this.hasMutatedConstraints=!!u,u&&(c=q0(u))}return c}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:o,dragTransition:s,dragSnapToOrigin:c,onDragTransitionEnd:u}=this.getProps(),h=this.constraints||{},p=fa(m=>{if(!wc(m,n,this.currentDirection))return;let y=h&&h[m]||{};(c===!0||c===m)&&(y={min:0,max:0});const k=o?200:1e6,w=o?40:1e7,x={type:"inertia",velocity:r?t[m]:0,bounceStiffness:k,bounceDamping:w,timeConstant:750,restDelta:1,restSpeed:10,...s,...y};return this.startAxisValueAnimation(m,x)});return Promise.all(p).then(u)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return Up(this.visualElement,t),r.start(Zf(t,r,0,n,this.visualElement,!1))}stopAnimation(){fa(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,r=this.visualElement.getProps(),o=r[n];return o||this.visualElement.getValue(t,(r.initial?r.initial[t]:void 0)||0)}snapToCursor(t){fa(n=>{const{drag:r}=this.getProps();if(!wc(n,r,this.currentDirection))return;const{projection:o}=this.visualElement,s=this.getAxisMotionValue(n);if(o&&o.layout){const{min:c,max:u}=o.layout.layoutBox[n],h=s.get()||0;s.set(t[n]-vt(c,u,.5)+h)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!no(n)||!r||!this.constraints)return;this.stopAnimation();const o={x:0,y:0};fa(c=>{const u=this.getAxisMotionValue(c);if(u&&this.constraints!==!1){const h=u.get();o[c]=s3({min:h,max:h},this.constraints[c])}});const{transformTemplate:s}=this.visualElement.getProps();this.visualElement.current.style.transform=s?s({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.constraints=!1,this.resolveConstraints(),fa(c=>{if(!wc(c,t,null))return;const u=this.getAxisMotionValue(c),{min:h,max:p}=this.constraints[c];u.set(vt(h,p,o[c]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;u3.set(this.visualElement,this);const t=this.visualElement.current,n=Rs(t,"pointerdown",p=>{const{drag:m,dragListener:y=!0}=this.getProps(),k=p.target,w=k!==t&&HM(k);m&&y&&!w&&this.start(p)});let r;const o=()=>{const{dragConstraints:p}=this.getProps();no(p)&&p.current&&(this.constraints=this.resolveRefConstraints(),r||(r=h3(t,p.current,()=>this.scalePositionWithinConstraints())))},{projection:s}=this.visualElement,c=s.addEventListener("measure",o);s&&!s.layout&&(s.root&&s.root.updateScroll(),s.updateLayout()),dt.read(o);const u=Vs(window,"resize",()=>this.scalePositionWithinConstraints()),h=s.addEventListener("didUpdate",(({delta:p,hasLayoutChanged:m})=>{this.isDragging&&m&&(fa(y=>{const k=this.getAxisMotionValue(y);k&&(this.originPoint[y]+=p[y].translate,k.set(k.get()+p[y].translate))}),this.visualElement.render())}));return()=>{u(),n(),c(),h&&h(),r&&r()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:o=!1,dragConstraints:s=!1,dragElastic:c=Kp,dragMomentum:u=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:o,dragConstraints:s,dragElastic:c,dragMomentum:u}}}function y_(e){let t=!0;return()=>{if(t){t=!1;return}e()}}function h3(e,t,n){const r=Pk(e,y_(n)),o=Pk(t,y_(n));return()=>{r(),o()}}function wc(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function p3(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class f3 extends jr{constructor(t){super(t),this.removeGroupControls=jn,this.removeListeners=jn,this.controls=new d3(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||jn}update(){const{dragControls:t}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};t!==n&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const Xh=e=>(t,n)=>{e&&dt.update(()=>e(t,n),!1,!0)};class m3 extends jr{constructor(){super(...arguments),this.removePointerDownListener=jn}onPointerDown(t){this.session=new Cx(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:Sx(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:o}=this.node.getProps();return{onSessionStart:Xh(t),onStart:Xh(n),onMove:Xh(r),onEnd:(s,c)=>{delete this.session,o&&dt.postRender(()=>o(s,c))}}}mount(){this.removePointerDownListener=Rs(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Qh=!1;class g3 extends b.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:o}=this.props,{projection:s}=t;s&&(n.group&&n.group.add(s),r&&r.register&&o&&r.register(s),Qh&&s.root.didUpdate(),s.addEventListener("animationComplete",()=>{this.safeToRemove()}),s.setOptions({...s.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),Wc.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:o,isPresent:s}=this.props,{projection:c}=r;return c&&(c.isPresent=s,t.layoutDependency!==n&&c.setOptions({...c.options,layoutDependency:n}),Qh=!0,o||t.layoutDependency!==n||n===void 0||t.isPresent!==s?c.willUpdate():this.safeToRemove(),t.isPresent!==s&&(s?c.promote():c.relegate()||dt.postRender(()=>{const u=c.getStack();(!u||!u.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:t,layoutAnchor:n}=this.props,{projection:r}=t;r&&(r.options.layoutAnchor=n,r.root.didUpdate(),em.postRender(()=>{!r.currentAnimation&&r.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:o}=t;Qh=!0,o&&(o.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(o),r&&r.deregister&&r.deregister(o))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function Ex(e){const[t,n]=gx(),r=b.useContext(Nf);return N.jsx(g3,{...e,layoutGroup:r,switchLayoutGroup:b.useContext(xx),isPresent:t,safeToRemove:n})}const y3={pan:{Feature:m3},drag:{Feature:f3,ProjectionNode:mx,MeasureLayout:Ex}};function v_(e,t,n){const{props:r}=e;e.animationState&&r.whileHover&&e.animationState.setActive("whileHover",n==="Start");const o="onHover"+n,s=r[o];s&&dt.postRender(()=>s(t,nl(t)))}class v3 extends jr{mount(){const{current:t}=this.node;t&&(this.unmount=BM(t,(n,r)=>(v_(this.node,r,"Start"),o=>v_(this.node,o,"End"))))}unmount(){}}class k3 extends jr{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=Js(Vs(this.node.current,"focus",()=>this.onFocus()),Vs(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function k_(e,t,n){const{props:r}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&r.whileTap&&e.animationState.setActive("whileTap",n==="Start");const o="onTap"+(n==="End"?"":n),s=r[o];s&&dt.postRender(()=>s(t,nl(t)))}class _3 extends jr{mount(){const{current:t}=this.node;if(!t)return;const{globalTapTarget:n,propagate:r}=this.node.props;this.unmount=WM(t,(o,s)=>(k_(this.node,s,"Start"),(c,{success:u})=>k_(this.node,c,u?"End":"Cancel")),{useGlobalTarget:n,stopPropagation:r?.tap===!1})}unmount(){}}const qp=new WeakMap,Jh=new WeakMap,b3=e=>{const t=qp.get(e.target);t&&t(e)},w3=e=>{e.forEach(b3)};function x3({root:e,...t}){const n=e||document;Jh.has(n)||Jh.set(n,{});const r=Jh.get(n),o=JSON.stringify(t);return r[o]||(r[o]=new IntersectionObserver(w3,{root:e,...t})),r[o]}function P3(e,t,n){const r=x3(t);return qp.set(e,n),r.observe(e),()=>{qp.delete(e),r.unobserve(e)}}const S3={some:0,all:1};class C3 extends jr{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.stopObserver?.();const{viewport:t={}}=this.node.getProps(),{root:n,margin:r,amount:o="some",once:s}=t,c={root:n?n.current:void 0,rootMargin:r,threshold:typeof o=="number"?o:S3[o]},u=h=>{const{isIntersecting:p}=h;if(this.isInView===p||(this.isInView=p,s&&!p&&this.hasEnteredView))return;p&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",p);const{onViewportEnter:m,onViewportLeave:y}=this.node.getProps(),k=p?m:y;k&&k(h)};this.stopObserver=P3(this.node.current,c,u)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(T3(t,n))&&this.startObserver()}unmount(){this.stopObserver?.(),this.hasEnteredView=!1,this.isInView=!1}}function T3({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const E3={inView:{Feature:C3},tap:{Feature:_3},focus:{Feature:k3},hover:{Feature:v3}},A3={layout:{ProjectionNode:mx,MeasureLayout:Ex}},R3={...JO,...E3,...y3,...A3},ep=qO(R3,YO);function Ax(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=Ax(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function L3(){for(var e,t,n=0,r="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=Ax(e))&&(r&&(r+=" "),r+=t);return r}const D3=(e,t)=>{const n=new Array(e.length+t.length);for(let r=0;r<e.length;r++)n[r]=e[r];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},I3=(e,t)=>({classGroupId:e,validator:t}),Rx=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),ku="-",__=[],M3="arbitrary..",N3=e=>{const t=j3(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:c=>{if(c.startsWith("[")&&c.endsWith("]"))return O3(c);const u=c.split(ku),h=u[0]===""&&u.length>1?1:0;return Lx(u,h,t)},getConflictingClassGroupIds:(c,u)=>{if(u){const h=r[c],p=n[c];return h?p?D3(p,h):h:p||__}return n[c]||__}}},Lx=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const o=e[t],s=n.nextPart.get(o);if(s){const p=Lx(e,t+1,s);if(p)return p}const c=n.validators;if(c===null)return;const u=t===0?e.join(ku):e.slice(t).join(ku),h=c.length;for(let p=0;p<h;p++){const m=c[p];if(m.validator(u))return m.classGroupId}},O3=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),r=t.slice(0,n);return r?M3+r:void 0})(),j3=e=>{const{theme:t,classGroups:n}=e;return U3(n,t)},U3=(e,t)=>{const n=Rx();for(const r in e){const o=e[r];um(o,n,r,t)}return n},um=(e,t,n,r)=>{const o=e.length;for(let s=0;s<o;s++){const c=e[s];B3(c,t,n,r)}},B3=(e,t,n,r)=>{if(typeof e=="string"){F3(e,t,n);return}if(typeof e=="function"){V3(e,t,n,r);return}z3(e,t,n,r)},F3=(e,t,n)=>{const r=e===""?t:Dx(t,e);r.classGroupId=n},V3=(e,t,n,r)=>{if(H3(e)){um(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(I3(n,e))},z3=(e,t,n,r)=>{const o=Object.entries(e),s=o.length;for(let c=0;c<s;c++){const[u,h]=o[c];um(h,Dx(t,u),n,r)}},Dx=(e,t)=>{let n=e;const r=t.split(ku),o=r.length;for(let s=0;s<o;s++){const c=r[s];let u=n.nextPart.get(c);u||(u=Rx(),n.nextPart.set(c,u)),n=u}return n},H3=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,$3=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null);const o=(s,c)=>{n[s]=c,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(s){let c=n[s];if(c!==void 0)return c;if((c=r[s])!==void 0)return o(s,c),c},set(s,c){s in n?n[s]=c:o(s,c)}}},Yp="!",b_=":",W3=[],w_=(e,t,n,r,o)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:o}),G3=e=>{const{prefix:t,experimentalParseClassName:n}=e;let r=o=>{const s=[];let c=0,u=0,h=0,p;const m=o.length;for(let C=0;C<m;C++){const S=o[C];if(c===0&&u===0){if(S===b_){s.push(o.slice(h,C)),h=C+1;continue}if(S==="/"){p=C;continue}}S==="["?c++:S==="]"?c--:S==="("?u++:S===")"&&u--}const y=s.length===0?o:o.slice(h);let k=y,w=!1;y.endsWith(Yp)?(k=y.slice(0,-1),w=!0):y.startsWith(Yp)&&(k=y.slice(1),w=!0);const x=p&&p>h?p-h:void 0;return w_(s,w,k,x)};if(t){const o=t+b_,s=r;r=c=>c.startsWith(o)?s(c.slice(o.length)):w_(W3,!1,c,void 0,!0)}if(n){const o=r;r=s=>n({className:s,parseClassName:o})}return r},K3=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,r)=>{t.set(n,1e6+r)}),n=>{const r=[];let o=[];for(let s=0;s<n.length;s++){const c=n[s],u=c[0]==="[",h=t.has(c);u||h?(o.length>0&&(o.sort(),r.push(...o),o=[]),r.push(c)):o.push(c)}return o.length>0&&(o.sort(),r.push(...o)),r}},q3=e=>({cache:$3(e.cacheSize),parseClassName:G3(e),sortModifiers:K3(e),...N3(e)}),Y3=/\s+/,Z3=(e,t)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:o,sortModifiers:s}=t,c=[],u=e.trim().split(Y3);let h="";for(let p=u.length-1;p>=0;p-=1){const m=u[p],{isExternal:y,modifiers:k,hasImportantModifier:w,baseClassName:x,maybePostfixModifierPosition:C}=n(m);if(y){h=m+(h.length>0?" "+h:h);continue}let S=!!C,D=r(S?x.substring(0,C):x);if(!D){if(!S){h=m+(h.length>0?" "+h:h);continue}if(D=r(x),!D){h=m+(h.length>0?" "+h:h);continue}S=!1}const L=k.length===0?"":k.length===1?k[0]:s(k).join(":"),R=w?L+Yp:L,O=R+D;if(c.indexOf(O)>-1)continue;c.push(O);const K=o(D,S);for(let W=0;W<K.length;++W){const z=K[W];c.push(R+z)}h=m+(h.length>0?" "+h:h)}return h},X3=(...e)=>{let t=0,n,r,o="";for(;t<e.length;)(n=e[t++])&&(r=Ix(n))&&(o&&(o+=" "),o+=r);return o},Ix=e=>{if(typeof e=="string")return e;let t,n="";for(let r=0;r<e.length;r++)e[r]&&(t=Ix(e[r]))&&(n&&(n+=" "),n+=t);return n},Q3=(e,...t)=>{let n,r,o,s;const c=h=>{const p=t.reduce((m,y)=>y(m),e());return n=q3(p),r=n.cache.get,o=n.cache.set,s=u,u(h)},u=h=>{const p=r(h);if(p)return p;const m=Z3(h,n);return o(h,m),m};return s=c,(...h)=>s(X3(...h))},J3=[],Nt=e=>{const t=n=>n[e]||J3;return t.isThemeGetter=!0,t},Mx=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Nx=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ej=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,tj=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,nj=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,aj=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,rj=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ij=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,xr=e=>ej.test(e),qe=e=>!!e&&!Number.isNaN(Number(e)),Pr=e=>!!e&&Number.isInteger(Number(e)),tp=e=>e.endsWith("%")&&qe(e.slice(0,-1)),Fa=e=>tj.test(e),Ox=()=>!0,oj=e=>nj.test(e)&&!aj.test(e),dm=()=>!1,sj=e=>rj.test(e),lj=e=>ij.test(e),cj=e=>!ke(e)&&!be(e),uj=e=>Ur(e,Bx,dm),ke=e=>Mx.test(e),ei=e=>Ur(e,Fx,oj),x_=e=>Ur(e,vj,qe),dj=e=>Ur(e,zx,Ox),hj=e=>Ur(e,Vx,dm),P_=e=>Ur(e,jx,dm),pj=e=>Ur(e,Ux,lj),xc=e=>Ur(e,Hx,sj),be=e=>Nx.test(e),gs=e=>yi(e,Fx),fj=e=>yi(e,Vx),S_=e=>yi(e,jx),mj=e=>yi(e,Bx),gj=e=>yi(e,Ux),Pc=e=>yi(e,Hx,!0),yj=e=>yi(e,zx,!0),Ur=(e,t,n)=>{const r=Mx.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},yi=(e,t,n=!1)=>{const r=Nx.exec(e);return r?r[1]?t(r[1]):n:!1},jx=e=>e==="position"||e==="percentage",Ux=e=>e==="image"||e==="url",Bx=e=>e==="length"||e==="size"||e==="bg-size",Fx=e=>e==="length",vj=e=>e==="number",Vx=e=>e==="family-name",zx=e=>e==="number"||e==="weight",Hx=e=>e==="shadow",kj=()=>{const e=Nt("color"),t=Nt("font"),n=Nt("text"),r=Nt("font-weight"),o=Nt("tracking"),s=Nt("leading"),c=Nt("breakpoint"),u=Nt("container"),h=Nt("spacing"),p=Nt("radius"),m=Nt("shadow"),y=Nt("inset-shadow"),k=Nt("text-shadow"),w=Nt("drop-shadow"),x=Nt("blur"),C=Nt("perspective"),S=Nt("aspect"),D=Nt("ease"),L=Nt("animate"),R=()=>["auto","avoid","all","avoid-page","page","left","right","column"],O=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],K=()=>[...O(),be,ke],W=()=>["auto","hidden","clip","visible","scroll"],z=()=>["auto","contain","none"],P=()=>[be,ke,h],Y=()=>[xr,"full","auto",...P()],X=()=>[Pr,"none","subgrid",be,ke],ue=()=>["auto",{span:["full",Pr,be,ke]},Pr,be,ke],se=()=>[Pr,"auto",be,ke],Ae=()=>["auto","min","max","fr",be,ke],pe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],le=()=>["start","end","center","stretch","center-safe","end-safe"],fe=()=>["auto",...P()],Ne=()=>[xr,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...P()],G=()=>[xr,"screen","full","dvw","lvw","svw","min","max","fit",...P()],Z=()=>[xr,"screen","full","lh","dvh","lvh","svh","min","max","fit",...P()],$=()=>[e,be,ke],M=()=>[...O(),S_,P_,{position:[be,ke]}],q=()=>["no-repeat",{repeat:["","x","y","space","round"]}],xe=()=>["auto","cover","contain",mj,uj,{size:[be,ke]}],Re=()=>[tp,gs,ei],Pe=()=>["","none","full",p,be,ke],Te=()=>["",qe,gs,ei],Ke=()=>["solid","dashed","dotted","double"],Qe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Ue=()=>[qe,tp,S_,P_],jt=()=>["","none",x,be,ke],$n=()=>["none",qe,be,ke],Ca=()=>["none",qe,be,ke],ft=()=>[qe,be,ke],en=()=>[xr,"full",...P()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Fa],breakpoint:[Fa],color:[Ox],container:[Fa],"drop-shadow":[Fa],ease:["in","out","in-out"],font:[cj],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Fa],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Fa],shadow:[Fa],spacing:["px",qe],text:[Fa],"text-shadow":[Fa],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",xr,ke,be,S]}],container:["container"],columns:[{columns:[qe,ke,be,u]}],"break-after":[{"break-after":R()}],"break-before":[{"break-before":R()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:K()}],overflow:[{overflow:W()}],"overflow-x":[{"overflow-x":W()}],"overflow-y":[{"overflow-y":W()}],overscroll:[{overscroll:z()}],"overscroll-x":[{"overscroll-x":z()}],"overscroll-y":[{"overscroll-y":z()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Y()}],"inset-x":[{"inset-x":Y()}],"inset-y":[{"inset-y":Y()}],start:[{"inset-s":Y(),start:Y()}],end:[{"inset-e":Y(),end:Y()}],"inset-bs":[{"inset-bs":Y()}],"inset-be":[{"inset-be":Y()}],top:[{top:Y()}],right:[{right:Y()}],bottom:[{bottom:Y()}],left:[{left:Y()}],visibility:["visible","invisible","collapse"],z:[{z:[Pr,"auto",be,ke]}],basis:[{basis:[xr,"full","auto",u,...P()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[qe,xr,"auto","initial","none",ke]}],grow:[{grow:["",qe,be,ke]}],shrink:[{shrink:["",qe,be,ke]}],order:[{order:[Pr,"first","last","none",be,ke]}],"grid-cols":[{"grid-cols":X()}],"col-start-end":[{col:ue()}],"col-start":[{"col-start":se()}],"col-end":[{"col-end":se()}],"grid-rows":[{"grid-rows":X()}],"row-start-end":[{row:ue()}],"row-start":[{"row-start":se()}],"row-end":[{"row-end":se()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Ae()}],"auto-rows":[{"auto-rows":Ae()}],gap:[{gap:P()}],"gap-x":[{"gap-x":P()}],"gap-y":[{"gap-y":P()}],"justify-content":[{justify:[...pe(),"normal"]}],"justify-items":[{"justify-items":[...le(),"normal"]}],"justify-self":[{"justify-self":["auto",...le()]}],"align-content":[{content:["normal",...pe()]}],"align-items":[{items:[...le(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...le(),{baseline:["","last"]}]}],"place-content":[{"place-content":pe()}],"place-items":[{"place-items":[...le(),"baseline"]}],"place-self":[{"place-self":["auto",...le()]}],p:[{p:P()}],px:[{px:P()}],py:[{py:P()}],ps:[{ps:P()}],pe:[{pe:P()}],pbs:[{pbs:P()}],pbe:[{pbe:P()}],pt:[{pt:P()}],pr:[{pr:P()}],pb:[{pb:P()}],pl:[{pl:P()}],m:[{m:fe()}],mx:[{mx:fe()}],my:[{my:fe()}],ms:[{ms:fe()}],me:[{me:fe()}],mbs:[{mbs:fe()}],mbe:[{mbe:fe()}],mt:[{mt:fe()}],mr:[{mr:fe()}],mb:[{mb:fe()}],ml:[{ml:fe()}],"space-x":[{"space-x":P()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":P()}],"space-y-reverse":["space-y-reverse"],size:[{size:Ne()}],"inline-size":[{inline:["auto",...G()]}],"min-inline-size":[{"min-inline":["auto",...G()]}],"max-inline-size":[{"max-inline":["none",...G()]}],"block-size":[{block:["auto",...Z()]}],"min-block-size":[{"min-block":["auto",...Z()]}],"max-block-size":[{"max-block":["none",...Z()]}],w:[{w:[u,"screen",...Ne()]}],"min-w":[{"min-w":[u,"screen","none",...Ne()]}],"max-w":[{"max-w":[u,"screen","none","prose",{screen:[c]},...Ne()]}],h:[{h:["screen","lh",...Ne()]}],"min-h":[{"min-h":["screen","lh","none",...Ne()]}],"max-h":[{"max-h":["screen","lh",...Ne()]}],"font-size":[{text:["base",n,gs,ei]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,yj,dj]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",tp,ke]}],"font-family":[{font:[fj,hj,t]}],"font-features":[{"font-features":[ke]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[o,be,ke]}],"line-clamp":[{"line-clamp":[qe,"none",be,x_]}],leading:[{leading:[s,...P()]}],"list-image":[{"list-image":["none",be,ke]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",be,ke]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:$()}],"text-color":[{text:$()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Ke(),"wavy"]}],"text-decoration-thickness":[{decoration:[qe,"from-font","auto",be,ei]}],"text-decoration-color":[{decoration:$()}],"underline-offset":[{"underline-offset":[qe,"auto",be,ke]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:P()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",be,ke]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",be,ke]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:M()}],"bg-repeat":[{bg:q()}],"bg-size":[{bg:xe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Pr,be,ke],radial:["",be,ke],conic:[Pr,be,ke]},gj,pj]}],"bg-color":[{bg:$()}],"gradient-from-pos":[{from:Re()}],"gradient-via-pos":[{via:Re()}],"gradient-to-pos":[{to:Re()}],"gradient-from":[{from:$()}],"gradient-via":[{via:$()}],"gradient-to":[{to:$()}],rounded:[{rounded:Pe()}],"rounded-s":[{"rounded-s":Pe()}],"rounded-e":[{"rounded-e":Pe()}],"rounded-t":[{"rounded-t":Pe()}],"rounded-r":[{"rounded-r":Pe()}],"rounded-b":[{"rounded-b":Pe()}],"rounded-l":[{"rounded-l":Pe()}],"rounded-ss":[{"rounded-ss":Pe()}],"rounded-se":[{"rounded-se":Pe()}],"rounded-ee":[{"rounded-ee":Pe()}],"rounded-es":[{"rounded-es":Pe()}],"rounded-tl":[{"rounded-tl":Pe()}],"rounded-tr":[{"rounded-tr":Pe()}],"rounded-br":[{"rounded-br":Pe()}],"rounded-bl":[{"rounded-bl":Pe()}],"border-w":[{border:Te()}],"border-w-x":[{"border-x":Te()}],"border-w-y":[{"border-y":Te()}],"border-w-s":[{"border-s":Te()}],"border-w-e":[{"border-e":Te()}],"border-w-bs":[{"border-bs":Te()}],"border-w-be":[{"border-be":Te()}],"border-w-t":[{"border-t":Te()}],"border-w-r":[{"border-r":Te()}],"border-w-b":[{"border-b":Te()}],"border-w-l":[{"border-l":Te()}],"divide-x":[{"divide-x":Te()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":Te()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Ke(),"hidden","none"]}],"divide-style":[{divide:[...Ke(),"hidden","none"]}],"border-color":[{border:$()}],"border-color-x":[{"border-x":$()}],"border-color-y":[{"border-y":$()}],"border-color-s":[{"border-s":$()}],"border-color-e":[{"border-e":$()}],"border-color-bs":[{"border-bs":$()}],"border-color-be":[{"border-be":$()}],"border-color-t":[{"border-t":$()}],"border-color-r":[{"border-r":$()}],"border-color-b":[{"border-b":$()}],"border-color-l":[{"border-l":$()}],"divide-color":[{divide:$()}],"outline-style":[{outline:[...Ke(),"none","hidden"]}],"outline-offset":[{"outline-offset":[qe,be,ke]}],"outline-w":[{outline:["",qe,gs,ei]}],"outline-color":[{outline:$()}],shadow:[{shadow:["","none",m,Pc,xc]}],"shadow-color":[{shadow:$()}],"inset-shadow":[{"inset-shadow":["none",y,Pc,xc]}],"inset-shadow-color":[{"inset-shadow":$()}],"ring-w":[{ring:Te()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:$()}],"ring-offset-w":[{"ring-offset":[qe,ei]}],"ring-offset-color":[{"ring-offset":$()}],"inset-ring-w":[{"inset-ring":Te()}],"inset-ring-color":[{"inset-ring":$()}],"text-shadow":[{"text-shadow":["none",k,Pc,xc]}],"text-shadow-color":[{"text-shadow":$()}],opacity:[{opacity:[qe,be,ke]}],"mix-blend":[{"mix-blend":[...Qe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Qe()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[qe]}],"mask-image-linear-from-pos":[{"mask-linear-from":Ue()}],"mask-image-linear-to-pos":[{"mask-linear-to":Ue()}],"mask-image-linear-from-color":[{"mask-linear-from":$()}],"mask-image-linear-to-color":[{"mask-linear-to":$()}],"mask-image-t-from-pos":[{"mask-t-from":Ue()}],"mask-image-t-to-pos":[{"mask-t-to":Ue()}],"mask-image-t-from-color":[{"mask-t-from":$()}],"mask-image-t-to-color":[{"mask-t-to":$()}],"mask-image-r-from-pos":[{"mask-r-from":Ue()}],"mask-image-r-to-pos":[{"mask-r-to":Ue()}],"mask-image-r-from-color":[{"mask-r-from":$()}],"mask-image-r-to-color":[{"mask-r-to":$()}],"mask-image-b-from-pos":[{"mask-b-from":Ue()}],"mask-image-b-to-pos":[{"mask-b-to":Ue()}],"mask-image-b-from-color":[{"mask-b-from":$()}],"mask-image-b-to-color":[{"mask-b-to":$()}],"mask-image-l-from-pos":[{"mask-l-from":Ue()}],"mask-image-l-to-pos":[{"mask-l-to":Ue()}],"mask-image-l-from-color":[{"mask-l-from":$()}],"mask-image-l-to-color":[{"mask-l-to":$()}],"mask-image-x-from-pos":[{"mask-x-from":Ue()}],"mask-image-x-to-pos":[{"mask-x-to":Ue()}],"mask-image-x-from-color":[{"mask-x-from":$()}],"mask-image-x-to-color":[{"mask-x-to":$()}],"mask-image-y-from-pos":[{"mask-y-from":Ue()}],"mask-image-y-to-pos":[{"mask-y-to":Ue()}],"mask-image-y-from-color":[{"mask-y-from":$()}],"mask-image-y-to-color":[{"mask-y-to":$()}],"mask-image-radial":[{"mask-radial":[be,ke]}],"mask-image-radial-from-pos":[{"mask-radial-from":Ue()}],"mask-image-radial-to-pos":[{"mask-radial-to":Ue()}],"mask-image-radial-from-color":[{"mask-radial-from":$()}],"mask-image-radial-to-color":[{"mask-radial-to":$()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":O()}],"mask-image-conic-pos":[{"mask-conic":[qe]}],"mask-image-conic-from-pos":[{"mask-conic-from":Ue()}],"mask-image-conic-to-pos":[{"mask-conic-to":Ue()}],"mask-image-conic-from-color":[{"mask-conic-from":$()}],"mask-image-conic-to-color":[{"mask-conic-to":$()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:M()}],"mask-repeat":[{mask:q()}],"mask-size":[{mask:xe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",be,ke]}],filter:[{filter:["","none",be,ke]}],blur:[{blur:jt()}],brightness:[{brightness:[qe,be,ke]}],contrast:[{contrast:[qe,be,ke]}],"drop-shadow":[{"drop-shadow":["","none",w,Pc,xc]}],"drop-shadow-color":[{"drop-shadow":$()}],grayscale:[{grayscale:["",qe,be,ke]}],"hue-rotate":[{"hue-rotate":[qe,be,ke]}],invert:[{invert:["",qe,be,ke]}],saturate:[{saturate:[qe,be,ke]}],sepia:[{sepia:["",qe,be,ke]}],"backdrop-filter":[{"backdrop-filter":["","none",be,ke]}],"backdrop-blur":[{"backdrop-blur":jt()}],"backdrop-brightness":[{"backdrop-brightness":[qe,be,ke]}],"backdrop-contrast":[{"backdrop-contrast":[qe,be,ke]}],"backdrop-grayscale":[{"backdrop-grayscale":["",qe,be,ke]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[qe,be,ke]}],"backdrop-invert":[{"backdrop-invert":["",qe,be,ke]}],"backdrop-opacity":[{"backdrop-opacity":[qe,be,ke]}],"backdrop-saturate":[{"backdrop-saturate":[qe,be,ke]}],"backdrop-sepia":[{"backdrop-sepia":["",qe,be,ke]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":P()}],"border-spacing-x":[{"border-spacing-x":P()}],"border-spacing-y":[{"border-spacing-y":P()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",be,ke]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[qe,"initial",be,ke]}],ease:[{ease:["linear","initial",D,be,ke]}],delay:[{delay:[qe,be,ke]}],animate:[{animate:["none",L,be,ke]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[C,be,ke]}],"perspective-origin":[{"perspective-origin":K()}],rotate:[{rotate:$n()}],"rotate-x":[{"rotate-x":$n()}],"rotate-y":[{"rotate-y":$n()}],"rotate-z":[{"rotate-z":$n()}],scale:[{scale:Ca()}],"scale-x":[{"scale-x":Ca()}],"scale-y":[{"scale-y":Ca()}],"scale-z":[{"scale-z":Ca()}],"scale-3d":["scale-3d"],skew:[{skew:ft()}],"skew-x":[{"skew-x":ft()}],"skew-y":[{"skew-y":ft()}],transform:[{transform:[be,ke,"","none","gpu","cpu"]}],"transform-origin":[{origin:K()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:en()}],"translate-x":[{"translate-x":en()}],"translate-y":[{"translate-y":en()}],"translate-z":[{"translate-z":en()}],"translate-none":["translate-none"],accent:[{accent:$()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:$()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",be,ke]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":P()}],"scroll-mx":[{"scroll-mx":P()}],"scroll-my":[{"scroll-my":P()}],"scroll-ms":[{"scroll-ms":P()}],"scroll-me":[{"scroll-me":P()}],"scroll-mbs":[{"scroll-mbs":P()}],"scroll-mbe":[{"scroll-mbe":P()}],"scroll-mt":[{"scroll-mt":P()}],"scroll-mr":[{"scroll-mr":P()}],"scroll-mb":[{"scroll-mb":P()}],"scroll-ml":[{"scroll-ml":P()}],"scroll-p":[{"scroll-p":P()}],"scroll-px":[{"scroll-px":P()}],"scroll-py":[{"scroll-py":P()}],"scroll-ps":[{"scroll-ps":P()}],"scroll-pe":[{"scroll-pe":P()}],"scroll-pbs":[{"scroll-pbs":P()}],"scroll-pbe":[{"scroll-pbe":P()}],"scroll-pt":[{"scroll-pt":P()}],"scroll-pr":[{"scroll-pr":P()}],"scroll-pb":[{"scroll-pb":P()}],"scroll-pl":[{"scroll-pl":P()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",be,ke]}],fill:[{fill:["none",...$()]}],"stroke-w":[{stroke:[qe,gs,ei,x_]}],stroke:[{stroke:["none",...$()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},_j=Q3(kj);function Tt(...e){return _j(L3(e))}const bj=N.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",children:[N.jsx("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1Z",fill:"#4285F4"}),N.jsx("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23Z",fill:"#34A853"}),N.jsx("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18A10.96 10.96 0 0 0 1 12c0 1.77.42 3.44 1.18 4.93l3.66-2.84Z",fill:"#FBBC05"}),N.jsx("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53Z",fill:"#EA4335"})]}),wj=N.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor",children:N.jsx("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12Z"})}),xj={google:bj,github:wj},Pj={google:"Google",github:"GitHub",microsoft:"Microsoft",discord:"Discord",apple:"Apple"};function Sj(e){return Pj[e]||String(e||"").replace(/-/g," ")}function Cj(){Qs();const{isOpen:e,closeLoginModal:t}=zw(),{enabled:n,signedIn:r,refreshUser:o,signInWithPassword:s,signUp:c,signInWithOAuth:u,getPublicAuthConfig:h}=Zs(),[p,m]=b.useState("signin"),[y,k]=b.useState(""),[w,x]=b.useState(""),[C,S]=b.useState(""),[D,L]=b.useState(!1),[R,O]=b.useState(null),[K,W]=b.useState(null),[z,P]=b.useState(!1),[Y,X]=b.useState(!0),[ue,se]=b.useState([]),[Ae,pe]=b.useState(8);b.useEffect(()=>{e&&(O(null),W(null),m("signin"),k(""),x(""),S(""),P(!1))},[e]),b.useEffect(()=>{if(!e||!n||ue.length>0)return;let G=!0;return X(!0),(async()=>{const{data:Z,error:$}=await h();if(G){if($||!Z)se(["google","github"]);else{const M=Array.isArray(Z.oAuthProviders)?Z.oAuthProviders:[],q=Array.isArray(Z.customOAuthProviders)?Z.customOAuthProviders:[];se([...M,...q]),typeof Z.passwordMinLength=="number"&&Z.passwordMinLength>0&&pe(Z.passwordMinLength)}X(!1)}})(),()=>{G=!1}},[e,n,h,ue.length]),b.useEffect(()=>{e&&r&&t()},[e,r,t]);const le=b.useMemo(()=>typeof window>"u"?"":!!window.webkit?.messageHandlers?.nativeOAuth?`${window.location.origin}/auth/callback`:`${window.location.origin}/`,[]),fe=b.useCallback(async G=>{O(null),L(!0);try{const{error:Z}=await u(G,le);Z&&O(Z.message||String(Z))}finally{L(!1)}},[u,le]),Ne=b.useCallback(async G=>{G.preventDefault(),O(null),L(!0);try{if(p==="signup"){const{data:$,error:M}=await c({email:y.trim(),password:w,name:C.trim()||void 0});if(M){O(M.message||String(M));return}if($?.requireEmailVerification){W(Fe("login.verify_email_pending")),m("signin");return}await o();return}const{error:Z}=await s({email:y.trim(),password:w});if(Z){O(Z.message||String(Z));return}await o()}finally{L(!1)}},[p,y,w,C,c,s,o]);return b.useEffect(()=>{if(!e)return;const G=Z=>{Z.key==="Escape"&&t()};return document.addEventListener("keydown",G),()=>document.removeEventListener("keydown",G)},[e,t]),n?N.jsx(xO,{children:e&&N.jsxs(ep.div,{className:"fixed inset-0 z-[100] flex items-center justify-center p-4",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},children:[N.jsx(ep.div,{className:"absolute inset-0 bg-black/40 dark:bg-black/60 ",onClick:t,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0}}),N.jsxs(ep.div,{className:"relative w-full max-w-[420px] rounded-2xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-950 p-6 shadow-2xl",initial:{opacity:0,scale:.95,y:10},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:10},transition:{duration:.2},onClick:G=>G.stopPropagation(),children:[N.jsx("button",{type:"button",onClick:t,className:"absolute right-4 top-4 text-oai-gray-400 dark:text-oai-gray-500 hover:text-oai-black dark:hover:text-white transition-colors",children:N.jsx(Bw,{className:"h-5 w-5"})}),N.jsxs("div",{className:"text-center mb-6",children:[N.jsxs("div",{className:"flex items-center justify-center gap-2 mb-2",children:[N.jsx("img",{src:"/app-icon.png",alt:"",width:28,height:28,className:"rounded-md"}),N.jsx("span",{className:"text-lg font-semibold text-oai-black dark:text-white",children:"Token Tracker"})]}),N.jsx("p",{className:"text-sm text-oai-gray-500",children:Fe("login_modal.subtitle")})]}),K&&N.jsx("div",{className:"mb-4 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900/50 px-3 py-2 text-xs text-oai-gray-700 dark:text-oai-gray-300",children:K}),R&&N.jsx("p",{className:"mb-4 text-sm text-red-500 dark:text-red-400",role:"alert",children:R}),N.jsx("div",{className:"space-y-2.5 mb-5",children:Y?N.jsxs("div",{className:"space-y-2.5",children:[N.jsx("div",{className:"h-10 rounded-lg bg-oai-gray-100 dark:bg-oai-gray-900/50 animate-pulse"}),N.jsx("div",{className:"h-10 rounded-lg bg-oai-gray-100 dark:bg-oai-gray-900/50 animate-pulse"})]}):ue.map(G=>N.jsxs("button",{type:"button",disabled:D,onClick:()=>fe(G),className:Tt("w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-900 text-sm font-medium text-oai-black dark:text-white","hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:border-oai-gray-300 dark:hover:border-oai-gray-600 transition-colors disabled:opacity-50","flex items-center justify-center gap-2.5"),children:[xj[G]||null,Fe("login.oauth.continue",{provider:Sj(G)})]},G))}),z?N.jsxs(N.Fragment,{children:[N.jsxs("div",{className:"relative mb-5",children:[N.jsx("div",{className:"absolute inset-0 flex items-center",children:N.jsx("span",{className:"w-full border-t border-oai-gray-200 dark:border-oai-gray-800"})}),N.jsx("div",{className:"relative flex justify-center text-xs uppercase tracking-wider",children:N.jsx("span",{className:"bg-white dark:bg-oai-gray-950 px-3 text-oai-gray-400 dark:text-oai-gray-600",children:Fe("login_modal.divider_email")})})]}),N.jsxs("div",{className:"flex rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 p-0.5 bg-oai-gray-50 dark:bg-oai-gray-900/50 mb-4",children:[N.jsx("button",{type:"button",className:Tt("flex-1 py-1.5 text-xs font-medium rounded-md transition-colors",p==="signin"?"bg-white dark:bg-oai-gray-800 text-oai-black dark:text-white shadow-sm":"text-oai-gray-500 hover:text-oai-gray-700 dark:hover:text-oai-gray-300"),onClick:()=>{m("signin"),O(null)},children:Fe("login.tab.sign_in")}),N.jsx("button",{type:"button",className:Tt("flex-1 py-1.5 text-xs font-medium rounded-md transition-colors",p==="signup"?"bg-white dark:bg-oai-gray-800 text-oai-black dark:text-white shadow-sm":"text-oai-gray-500 hover:text-oai-gray-700 dark:hover:text-oai-gray-300"),onClick:()=>{m("signup"),O(null)},children:Fe("login.tab.sign_up")})]}),N.jsxs("form",{onSubmit:Ne,className:"space-y-3",children:[p==="signup"&&N.jsxs("div",{children:[N.jsx("label",{htmlFor:"modal-name",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:Fe("login.field.name")}),N.jsx("input",{id:"modal-name",type:"text",autoComplete:"name",value:C,onChange:G=>S(G.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500",placeholder:Fe("login.field.name_placeholder")})]}),N.jsxs("div",{children:[N.jsx("label",{htmlFor:"modal-email",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:Fe("login.field.email")}),N.jsx("input",{id:"modal-email",type:"email",autoComplete:"email",required:!0,value:y,onChange:G=>k(G.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"})]}),N.jsxs("div",{children:[N.jsx("label",{htmlFor:"modal-password",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:Fe("login.field.password")}),N.jsx("input",{id:"modal-password",type:"password",autoComplete:p==="signup"?"new-password":"current-password",required:!0,minLength:p==="signup"?Ae:void 0,value:w,onChange:G=>x(G.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"}),p==="signup"&&N.jsx("p",{className:"mt-1 text-xs text-oai-gray-400 dark:text-oai-gray-600",children:Fe("login.password_hint",{min:String(Ae)})})]}),N.jsx("button",{type:"submit",disabled:D,className:"w-full h-10 rounded-lg bg-oai-gray-900 dark:bg-white text-white dark:text-oai-gray-950 text-sm font-semibold hover:bg-oai-gray-800 dark:hover:bg-oai-gray-100 transition-colors disabled:opacity-50",children:Fe(p==="signup"?"login.submit.sign_up":"login.submit.sign_in")})]})]}):N.jsxs(N.Fragment,{children:[N.jsxs("div",{className:"relative mb-5",children:[N.jsx("div",{className:"absolute inset-0 flex items-center",children:N.jsx("span",{className:"w-full border-t border-oai-gray-200 dark:border-oai-gray-800"})}),N.jsx("div",{className:"relative flex justify-center text-xs uppercase tracking-wider",children:N.jsx("span",{className:"bg-white dark:bg-oai-gray-950 px-3 text-oai-gray-400 dark:text-oai-gray-600",children:Fe("login.divider")})})]}),N.jsxs("button",{type:"button",onClick:()=>P(!0),className:Tt("w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-900 text-sm font-medium text-oai-black dark:text-white","hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:border-oai-gray-300 dark:hover:border-oai-gray-600 transition-colors","flex items-center justify-center gap-2.5"),children:[N.jsx(lI,{className:"h-[18px] w-[18px] text-oai-gray-500 dark:text-oai-gray-400",strokeWidth:1.75}),Fe("login_modal.continue_email")]})]})]})]})}):null}const Tj={VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"},u4="https://tokentracker.statuspage.io/";function Ej(){if(typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"))return"";const t=typeof import.meta<"u"?Tj:void 0;return(t?.VITE_TOKENTRACKER_BACKEND_BASE_URL||t?.VITE_INSFORGE_BASE_URL||Wa()).trim()}function d4(){return Wa()}function Aj(e=""){if(typeof e!="string"||e.length===0)return!1;const t=new URLSearchParams(e),n=String(t.get("screenshot")||"").toLowerCase();return n==="1"||n==="true"}const Rj=300*1e3,Lj=720*60*1e3;function hm(e){return typeof e=="string"&&/^https?:\/\//i.test(e.trim())}function Dj(e,t=Date.now()){if(!e?.token||!e?.deviceId||!e?.issuedAt)return!0;const n=Date.parse(e.issuedAt);return Number.isFinite(n)?n+Lj<=t:!0}async function $x(e,t){const n=Wa();if(!hm(n)||!e)return;const r=n.replace(/\/$/,""),o=Ks(),s={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${e}`};o&&(s.apikey=o);try{await fetch(`${r}/functions/tokentracker-leaderboard-refresh`,{method:"POST",headers:s,body:JSON.stringify({period:"week",source:t})})}catch{}}async function Ij(e){const t=Wa();if(!hm(t)||!e)return null;const n=t.replace(/\/$/,""),r=Ks(),o={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${e}`};r&&(o.apikey=r);const s=typeof navigator<"u"&&typeof navigator.platform=="string"?navigator.platform:"web",c=await fetch(`${n}/functions/tokentracker-device-token-issue`,{method:"POST",headers:o,body:JSON.stringify({device_name:"Token Tracker (dashboard)",platform:s})});if(!c.ok)return null;const u=await c.json().catch(()=>null),h=typeof u?.token=="string"?u.token:null,p=typeof u?.device_id=="string"?u.device_id:null;return!h||!p?null:{token:h,deviceId:p,issuedAt:typeof u?.created_at=="string"?u.created_at:new Date().toISOString()}}async function C_(e){const{deviceToken:t,insforgeBaseUrl:n}=e,r={deviceToken:t},o=n||Wa();hm(o)&&(r.insforgeBaseUrl=o.trim());const s=await Lf(),c=await fetch("/functions/tokentracker-local-sync",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json",...s},body:JSON.stringify(r)}),u=await c.json().catch(()=>({}));if(!c.ok){const h=typeof u.error=="string"?u.error:`HTTP ${c.status}`;throw new Error(h)}return u}async function T_(e){const t=await e();if(!t)return null;const n=nw();if(n&&!Dj(n))return n;const r=await Ij(t);return r?($R(r),r):null}async function Wx(e){let t=await e();if(!t)return null;let n=await T_(async()=>t);if(!n)return t;try{return await C_({deviceToken:n.token,insforgeBaseUrl:Wa()}),t}catch(r){if(!nw()||(aw(),t=await e(),!t)||(n=await T_(async()=>t),!n))throw r;return await C_({deviceToken:n.token,insforgeBaseUrl:Wa()}),t}}async function Mj(e){const t=WR();if(Date.now()-t<Rj)return;const n=await Wx(e);n&&(rw(Date.now()),await $x(n,"cloud-sync-auto"))}async function h4(e){const t=await Wx(e);t&&(rw(Date.now()),await $x(t,"cloud-sync-now"))}function Nj(e){const t=e.replace(/\/+$/,"")||"/";return t==="/share"||t==="/share.html"||t.startsWith("/share/")}function Oj(e){const t=e.replace(/\/+$/,"")||"/";return t==="/login"||t==="/landing"||Nj(t)?!1:t==="/"||t==="/dashboard"||t.startsWith("/leaderboard")}function jj(){const e=Fn(),t=Zs(),n=b.useRef(!1);b.useEffect(()=>{if(!zR()||!Oj(e.pathname||"/")||!t.enabled||!t.signedIn||t.loading||!HR())return;let r=!1;const o=window.setTimeout(()=>{(async()=>{if(!(r||n.current)){n.current=!0;try{await Mj(()=>t.getAccessToken())}catch(s){console.warn("[tokentracker] cloud usage sync:",s)}finally{n.current=!1}}})()},2500);return()=>{r=!0,window.clearTimeout(o)}},[e.pathname,t.enabled,t.signedIn,t.loading,t.getAccessToken])}function Uj(){const e=b.useContext(Fw);if(e===null)throw new Error("useTheme must be used within a ThemeProvider");return e}function Bj({prefersReducedMotion:e,screenshotCapture:t}){return!(t||e)}function Fj(e){if(!e||typeof e!="object")return null;const t=e.user_metadata&&typeof e.user_metadata=="object"?e.user_metadata:{},n=e.profile&&typeof e.profile=="object"?e.profile:{},r=t.avatar_url||t.picture||n.avatar_url||e.avatar_url;return typeof r=="string"&&r.trim()?r.trim():null}function Vj(e){return e?If()?`/api/avatar-proxy?url=${encodeURIComponent(e)}`:e:null}function Sc(e){const t=String(e||"").trim();if(!t)return"?";const n=t.split(/\s+/).filter(Boolean);return n.length>=2?(n[0][0]+n[n.length-1][0]).toUpperCase():t.slice(0,2).toUpperCase()}function E_({className:e,variant:t="header",collapsed:n=!1,onAfterAction:r}){Qs();const o=t==="sidebar",{enabled:s,loading:c,signedIn:u,user:h,displayName:p}=Zs(),{openLoginModal:m}=zw(),y=wu(),k=b.useMemo(()=>Fj(h),[h]),w=b.useMemo(()=>Vj(k),[k]),[x,C]=Ls.useState(!1);if(Ls.useEffect(()=>{C(!1)},[w]),!s)return null;if(c)return N.jsx("div",{className:Tt("h-9 w-9 shrink-0 rounded-full bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse",e),"aria-hidden":!0});if(!u)return o?N.jsxs("button",{type:"button",onClick:()=>{m(),r?.()},className:Tt("flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px] font-medium text-oai-gray-700 dark:text-oai-gray-300 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500 min-w-0",n?"h-8 w-8 justify-center px-0":"w-full",e),"aria-label":Fe("header.auth.sign_in_aria"),title:n?Fe("header.auth.sign_in_aria"):void 0,children:[N.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:N.jsx("img",{src:"/app-icon.png",alt:"",width:18,height:18,className:"h-[18px] w-[18px] rounded"})}),!n&&N.jsx("span",{className:"truncate flex-1 text-left",children:Fe("header.auth.sign_in_aria")})]}):N.jsx("button",{type:"button",onClick:m,className:Tt("shrink-0 inline-flex h-9 items-center justify-center gap-1.5 rounded-md px-4 text-sm font-medium transition-colors duration-200 ease-out shadow-sm ring-1 ring-oai-gray-200 dark:ring-white/10 bg-oai-gray-900 text-white hover:bg-oai-gray-800 active:bg-oai-gray-950 dark:bg-white dark:text-oai-gray-900 dark:hover:bg-oai-gray-100 dark:active:bg-oai-gray-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-oai-gray-950",e),"aria-label":Fe("header.auth.sign_in_aria"),children:Fe("header.auth.sign_in_aria")});const S=()=>{y("/settings"),r?.()};return N.jsx("div",{className:Tt(o?"relative flex w-full shrink-0 items-center":"relative flex shrink-0 items-center",e),children:N.jsxs("button",{type:"button",onClick:S,className:Tt(o?Tt("flex w-full items-center gap-2 rounded-md px-2 py-1.5 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 transition-colors min-w-0",n&&"justify-center px-0 py-0 h-9 w-9"):"flex items-center gap-2 rounded-md pl-1 pr-2 py-1 border border-transparent hover:bg-oai-gray-100 dark:hover:bg-oai-gray-900/80 hover:border-oai-gray-200 dark:hover:border-oai-gray-800 transition-colors"),"aria-label":Fe("header.auth.open_settings"),title:o&&n?p:void 0,children:[o?N.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:w&&!x?N.jsx("img",{src:w,alt:"",width:20,height:20,className:"h-5 w-5 rounded-full object-cover ring-1 ring-oai-gray-300 dark:ring-oai-gray-700",referrerPolicy:"no-referrer",onError:()=>C(!0)}):Sc(p)==="?"?N.jsx("span",{className:"flex h-5 w-5 items-center justify-center rounded-full bg-oai-brand-600/30 text-white ring-1 ring-oai-brand-500/50",children:N.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",className:"w-3 h-3 opacity-80",children:N.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z"})})}):N.jsx("span",{className:"flex h-5 w-5 items-center justify-center rounded-full bg-oai-brand-600 text-[9px] font-semibold text-white ring-1 ring-oai-brand-500/50",children:Sc(p)})}):w&&!x?N.jsx("img",{src:w,alt:"",width:32,height:32,className:"h-8 w-8 rounded-full object-cover ring-1 ring-oai-gray-300 dark:ring-oai-gray-700 shrink-0",referrerPolicy:"no-referrer",onError:()=>C(!0)}):Sc(p)==="?"?N.jsx("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-oai-brand-600/30 text-white ring-1 ring-oai-brand-500/50",children:N.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",className:"w-4 h-4 opacity-80",children:N.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z"})})}):N.jsx("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-oai-brand-600 text-xs font-semibold text-white ring-1 ring-oai-brand-500/50",children:Sc(p)}),o?!n&&N.jsx("span",{className:"truncate text-[13px] font-medium text-oai-gray-900 dark:text-oai-gray-200 flex-1 text-left min-w-0",children:p}):N.jsx("span",{className:"hidden sm:inline truncate text-sm font-medium text-oai-gray-900 dark:text-oai-gray-200 max-w-[120px]",children:p})]})})}const Zp="tt.sidebarCollapsed";function zj(){return[{id:"general",label:Fe("nav.group.general"),items:[{id:"usage",to:"/dashboard",icon:eI,label:Fe("nav.usage")},{id:"limits",to:"/limits",icon:nI,label:Fe("nav.limits")},{id:"leaderboard",to:"/leaderboard",icon:PI,label:Fe("nav.leaderboard")}]},{id:"tools",label:Fe("nav.group.tools"),items:[{id:"widgets",to:"/widgets",icon:oI,label:Fe("nav.widgets")},{id:"skills",to:"/skills",icon:mI,label:Fe("nav.skills")},{id:"ip-check",to:"/ip-check",icon:rI,label:Fe("nav.ip_check")}]},{id:"account",label:Fe("nav.group.account"),items:[{id:"settings",to:"/settings",icon:kI,label:Fe("nav.settings")}]}]}function Hj(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(Zp)==="1"}catch{return!1}}function $j(){const[e,t]=b.useState(Hj),n=b.useCallback(()=>{t(r=>{const o=!r;try{typeof window<"u"&&window.localStorage.setItem(Zp,o?"1":"0")}catch{}return o})},[]);return b.useEffect(()=>{if(typeof window>"u")return;const r=o=>{o.key===Zp&&t(o.newValue==="1")};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)},[]),{collapsed:e,toggle:n}}function Wj(e,t){const n=e.replace(/\/+$/,"")||"/";return t==="/dashboard"?n==="/dashboard"||n==="/":t==="/leaderboard"?n==="/leaderboard"||n.startsWith("/leaderboard/"):n===t}function Gj({label:e,collapsed:t,first:n}){return t?n?null:N.jsx("div",{className:"mx-2 my-2 h-px bg-oai-gray-200/70 dark:bg-oai-gray-800/70","aria-hidden":!0}):N.jsx("div",{className:Tt("px-3 pb-1 text-[10px] uppercase tracking-wider text-oai-gray-500 dark:text-oai-gray-500",n?"pt-2":"pt-4"),children:e})}function Kj({item:e,collapsed:t,active:n,onClick:r}){const o=e.icon;return N.jsxs(Pu,{to:e.to,onClick:r,title:t?e.label:void 0,"aria-current":n?"page":void 0,className:Tt("flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px] no-underline transition-colors",t&&"justify-center px-0 py-2",n?"bg-oai-gray-200/70 text-oai-black font-medium dark:bg-oai-gray-800 dark:text-white":"text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/50 hover:text-oai-black dark:hover:bg-oai-gray-800/60 dark:hover:text-white"),children:[N.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:N.jsx(o,{className:"h-[15px] w-[15px]","aria-hidden":!0})}),!t&&N.jsx("span",{className:"truncate",children:e.label})]})}function qj({as:e="button",title:t,onClick:n,href:r,children:o,className:s,...c}){const u=Tt("flex h-10 w-10 items-center justify-center rounded-lg text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",s);return e==="a"?N.jsx("a",{href:r,target:"_blank",rel:"noopener noreferrer",title:t,"aria-label":t,className:u,...c,children:o}):N.jsx("button",{type:"button",title:t,"aria-label":t,onClick:n,className:u,...c,children:o})}function Yj({repo:e="mm7894215/TokenTracker",glassChrome:t=!1}){const[n,r]=b.useState(null);return b.useEffect(()=>{if(typeof window>"u")return;const o=typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;Bj({prefersReducedMotion:o,screenshotCapture:!1})&&fetch(`https://api.github.com/repos/${e}`).then(s=>s.json()).then(s=>{s&&typeof s.stargazers_count=="number"&&r(s.stargazers_count)}).catch(()=>{})},[e]),N.jsxs("a",{href:`https://github.com/${e}`,target:"_blank",rel:"noopener noreferrer","aria-label":n!==null?`Star on GitHub (${n})`:"Star on GitHub",className:Tt("inline-flex h-7 items-center gap-1.5 rounded-full px-2.5 text-xs font-medium transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",t?"border border-gray-500/20 dark:border-gray-500/30 bg-gray-500/[0.04] dark:bg-gray-500/[0.06] backdrop-blur-[2px] text-oai-gray-700 dark:text-oai-gray-300 hover:bg-gray-500/10 dark:hover:bg-gray-500/12 hover:border-gray-500/30 dark:hover:border-gray-500/40 hover:text-oai-black dark:hover:text-white":"border border-oai-gray-200 dark:border-oai-gray-700 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white hover:border-oai-gray-300 dark:hover:border-oai-gray-600"),children:[N.jsx("svg",{height:"12",viewBox:"0 0 16 16",width:"12",className:"shrink-0 fill-current",children:N.jsx("path",{d:"M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"})}),N.jsx("span",{children:"Star"}),n!==null&&N.jsx("span",{className:"text-[10px] text-oai-gray-500 dark:text-oai-gray-500 tabular-nums",children:n})]})}const Zj=[{value:"light",label:"Light",Icon:Uw},{value:"dark",label:"Dark",Icon:jw},{value:"system",label:"System",Icon:hI}];function Xj({theme:e,resolvedTheme:t,onSetTheme:n,glassChrome:r=!1}){const[o,s]=b.useState(!1),c=b.useRef(null),u=t==="dark"?jw:Uw;return b.useEffect(()=>{if(!o)return;const h=m=>{c.current&&!c.current.contains(m.target)&&s(!1)},p=m=>{m.key==="Escape"&&s(!1)};return document.addEventListener("mousedown",h),document.addEventListener("keydown",p),()=>{document.removeEventListener("mousedown",h),document.removeEventListener("keydown",p)}},[o]),N.jsxs("div",{ref:c,className:"relative",children:[N.jsx("button",{type:"button","aria-label":"Theme","aria-expanded":o,"aria-haspopup":"menu",title:"Theme",onClick:()=>s(h=>!h),className:Tt("inline-flex h-7 w-7 items-center justify-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",r?"border border-gray-500/20 dark:border-gray-500/30 bg-gray-500/[0.04] dark:bg-gray-500/[0.06] backdrop-blur-[2px] text-oai-gray-700 dark:text-oai-gray-300 hover:bg-gray-500/10 dark:hover:bg-gray-500/12 hover:border-gray-500/30 dark:hover:border-gray-500/40 hover:text-oai-black dark:hover:text-white":"border border-oai-gray-200 dark:border-oai-gray-700 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white hover:border-oai-gray-300 dark:hover:border-oai-gray-600"),children:N.jsx(u,{className:"h-3.5 w-3.5","aria-hidden":!0})}),o&&N.jsx("div",{role:"menu",className:"absolute bottom-full left-0 mb-2 z-50 min-w-[140px] py-1 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 shadow-lg",children:Zj.map(({value:h,label:p,Icon:m})=>{const y=e===h;return N.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{n(h),s(!1)},className:Tt("flex w-full items-center gap-2.5 px-3 py-1.5 text-[13px] transition-colors",y?"text-oai-black dark:text-white bg-oai-gray-100 dark:bg-oai-gray-800":"text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-50 dark:hover:bg-oai-gray-800/60 hover:text-oai-black dark:hover:text-white"),children:[N.jsx(m,{className:"h-3.5 w-3.5 shrink-0","aria-hidden":!0}),N.jsx("span",{children:p})]},h)})})]})}function Gx({collapsed:e,onToggleCollapsed:t,onItemClick:n,showCloseButton:r=!1,onClose:o,glassChrome:s=!1}){const u=Fn()?.pathname||"/",{theme:h,resolvedTheme:p,setTheme:m}=Uj(),{resolvedLocale:y}=Qs(),k=b.useMemo(()=>zj(),[y]);return N.jsxs(N.Fragment,{children:[N.jsx("div",{className:Tt("px-2 pt-2 pb-2",e&&"flex justify-center"),children:r?N.jsxs("div",{className:"flex items-center gap-2",children:[N.jsx("div",{className:"flex-1 min-w-0",children:N.jsx(E_,{variant:"sidebar",collapsed:e,onAfterAction:n})}),N.jsx("button",{type:"button",onClick:o,"aria-label":Fe("nav.close_menu"),title:Fe("nav.close_menu"),className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-oai-gray-500 dark:text-oai-gray-500 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-gray-900 dark:hover:text-oai-gray-200 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:N.jsx(Bw,{className:"h-4 w-4",strokeWidth:1.75,"aria-hidden":!0})})]}):N.jsx(E_,{variant:"sidebar",collapsed:e,onAfterAction:n})}),N.jsx("nav",{"aria-label":Fe("nav.nav_label"),className:"flex-1 px-2 pb-2 flex flex-col overflow-y-auto",children:k.map((w,x)=>N.jsxs("div",{className:"flex flex-col",children:[N.jsx(Gj,{label:w.label,collapsed:e,first:x===0}),N.jsx("div",{className:"flex flex-col gap-0.5",children:w.items.map(C=>N.jsx(Kj,{item:C,collapsed:e,active:Wj(u,C.to),onClick:n},C.id))})]},w.id))}),N.jsxs("div",{className:Tt("flex items-center px-2 py-3",e?"flex-col justify-center gap-2":"justify-between gap-2"),children:[N.jsx(Xj,{theme:h,resolvedTheme:p,onSetTheme:m,glassChrome:s}),N.jsx("div",{className:"flex items-center gap-1.5",children:!e&&N.jsx(Yj,{glassChrome:s})})]})]})}function Qj({collapsed:e,onToggleCollapsed:t}){const n=b.useMemo(()=>typeof window>"u"?!1:ra()||If(),[]);return N.jsx("aside",{"aria-label":Fe("nav.aside_label"),className:Tt("hidden lg:flex flex-col shrink-0 h-full min-h-0 transition-[width] duration-200",e?"w-[72px]":"w-[220px]"),children:N.jsx(Gx,{collapsed:e,onToggleCollapsed:t,glassChrome:n})})}function Jj({open:e,onClose:t}){return b.useEffect(()=>{if(!e)return;const n=r=>{r.key==="Escape"&&t()};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[e,t]),b.useEffect(()=>{if(!e)return;const n=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=n}},[e]),e?N.jsxs("div",{className:"lg:hidden fixed inset-0 z-[80] flex",children:[N.jsx("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-sm",onClick:t,"aria-hidden":!0}),N.jsx("aside",{"aria-label":Fe("nav.aside_label"),className:"relative w-[260px] max-w-[80vw] flex flex-col bg-oai-white dark:bg-oai-gray-900 border-r border-oai-gray-200 dark:border-oai-gray-800 shadow-2xl",children:N.jsx(Gx,{collapsed:!1,showCloseButton:!0,onClose:t,onItemClick:t})})]}):null}function eU({onOpenDrawer:e}){return N.jsxs("div",{className:"lg:hidden flex items-center justify-between gap-2 px-3 h-14 border-b border-oai-gray-200 dark:border-oai-gray-800",children:[N.jsx(qj,{title:Fe("nav.menu"),onClick:e,children:N.jsx(uI,{className:"h-5 w-5","aria-hidden":!0})}),N.jsxs(Pu,{to:"/landing",className:"flex items-center gap-2 no-underline hover:opacity-80 transition-opacity","aria-label":"Token Tracker",children:[N.jsx("img",{src:"/app-icon.png",alt:"",width:24,height:24,className:"rounded-md"}),N.jsx("span",{className:"text-sm font-semibold text-oai-black dark:text-oai-white",children:"Token Tracker"})]}),N.jsx("div",{className:"w-10 shrink-0","aria-hidden":!0})]})}function tU({children:e}){const{collapsed:t,toggle:n}=$j(),[r,o]=b.useState(!1),s=b.useCallback(()=>o(!0),[]),c=b.useCallback(()=>o(!1),[]),u=b.useMemo(()=>typeof window>"u"?!1:ra()||If(),[]);return N.jsxs("div",{className:Tt("fixed inset-0 flex flex-col text-oai-black dark:text-oai-white font-sans overflow-hidden",u?"bg-transparent":"bg-oai-gray-100 dark:bg-oai-gray-950"),children:[u&&N.jsx("div",{className:"h-7 shrink-0",style:{WebkitAppRegion:"drag"},"aria-hidden":!0}),N.jsxs("div",{className:"flex-1 min-h-0 flex",children:[N.jsx(Qj,{collapsed:t,onToggleCollapsed:n}),N.jsx(Jj,{open:r,onClose:c}),N.jsx("div",{className:"flex-1 min-w-0 min-h-0 p-2 lg:pl-0 lg:pr-3 lg:pb-3 flex flex-col",children:N.jsxs("div",{className:Tt("flex-1 min-h-0 flex flex-col bg-oai-white dark:bg-oai-gray-900 border border-oai-gray-200 dark:border-oai-gray-800 overflow-hidden",u?"tt-native-main-card":"rounded-2xl",!u&&"shadow-sm"),children:[N.jsx(eU,{onOpenDrawer:s}),N.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:e})]})})]})]})}const nU=typeof window<"u"?window.location.search:"",A_=new URLSearchParams(nU),Cc=A_.get("insforge_code")||A_.get("code")||null,aU=typeof window<"u"&&!!window.webkit?.messageHandlers?.nativeOAuth;function rU(){Qs();const{loading:e,signedIn:t}=Zs(),n=wu(),[r,o]=b.useState("processing"),[s,c]=b.useState(null),u=b.useRef(!1);b.useEffect(()=>{if(!(!Cc||u.current)){if(u.current=!0,aU){c(!1);return}(async()=>{try{const m=await(await fetch("/api/auth-bridge/verifier")).json();c(!!m?.native)}catch{c(!1)}})()}},[]),b.useEffect(()=>{if(s!==!0||!Cc)return;o("redirecting");const p=setTimeout(()=>{window.location.href=`tokentracker://auth/callback?insforge_code=${encodeURIComponent(Cc)}`},200);return()=>clearTimeout(p)},[s]),b.useEffect(()=>{if(s!==!1||e)return;if(t){n("/dashboard",{replace:!0});return}const p=setTimeout(()=>{t||o("failed")},12e3);return()=>clearTimeout(p)},[s,e,t,n]),b.useEffect(()=>{if(!Cc&&s===null){const p=setTimeout(()=>o("failed"),3e3);return()=>clearTimeout(p)}},[s]);const h=()=>{n("/dashboard",{replace:!0})};return r==="processing"&&s!==!0&&(s===null||s===!1&&e)?N.jsx("div",{className:"min-h-screen bg-oai-gray-950"}):N.jsx("div",{className:"min-h-screen bg-oai-gray-950 text-white font-oai antialiased dark flex items-center justify-center",children:N.jsxs("div",{className:"text-center space-y-4 max-w-sm px-4",children:[r==="processing"&&N.jsxs(N.Fragment,{children:[N.jsx("div",{className:"w-8 h-8 border-2 border-oai-gray-600 border-t-white rounded-full animate-spin mx-auto"}),N.jsx("p",{className:"text-oai-gray-400 text-sm",children:Fe("auth.callback.processing")})]}),r==="redirecting"&&N.jsxs(N.Fragment,{children:[N.jsx("div",{className:"w-12 h-12 mx-auto rounded-full bg-green-500/15 flex items-center justify-center",children:N.jsx("svg",{className:"w-6 h-6 text-green-400",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:N.jsx("path",{d:"M20 6 9 17l-5-5"})})}),N.jsx("p",{className:"text-white text-sm font-medium",children:Fe("auth.callback.success")}),N.jsx("p",{className:"text-oai-gray-500 text-xs",children:Fe("auth.callback.redirecting")})]}),r==="failed"&&N.jsxs("div",{className:"space-y-3",children:[N.jsx("p",{className:"text-oai-gray-300 text-sm",children:Fe("auth.callback.failed")}),N.jsx("button",{type:"button",onClick:h,className:"px-4 py-2 rounded-lg bg-oai-gray-800 text-sm text-white hover:bg-oai-gray-700 transition-colors",children:Fe("auth.callback.close")})]})]})})}const iU=b.lazy(()=>Hn(()=>import("./DashboardPage-CB6VzM2W.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])).then(e=>({default:e.DashboardPage}))),oU=b.lazy(()=>Hn(()=>import("./IpCheckPage-CJxv_Sd8.js"),[])),sU=b.lazy(()=>Hn(()=>import("./LandingPage-CIOqWNDm.js"),__vite__mapDeps([11,12,8])).then(e=>({default:e.LandingPage}))),lU=b.lazy(()=>Hn(()=>import("./LeaderboardPage-CgtoFmMi.js"),__vite__mapDeps([13,9,2,14,15])).then(e=>({default:e.LeaderboardPage}))),cU=b.lazy(()=>Hn(()=>import("./LeaderboardProfilePage-C7OaZcf2.js"),__vite__mapDeps([16,2,12,17,14,9,3,4,18,19,5])).then(e=>({default:e.LeaderboardProfilePage}))),uU=b.lazy(()=>Hn(()=>import("./LimitsPage-pyyJbh3F.js"),__vite__mapDeps([20,1,21,7,10,8,22,18,23])).then(e=>({default:e.LimitsPage}))),dU=b.lazy(()=>Hn(()=>import("./LoginPage-CDLz8PnP.js"),[]).then(e=>({default:e.LoginPage}))),hU=b.lazy(()=>Hn(()=>import("./DevicePage-CvrCNfjD.js"),[])),pU=b.lazy(()=>Hn(()=>import("./WrappedPage-Cp8uyLbu.js"),[])),fU=b.lazy(()=>Hn(()=>import("./SettingsPage-KVjKUepK.js"),__vite__mapDeps([24,21,25,7,19,2,15,4,23])).then(e=>({default:e.SettingsPage}))),mU=b.lazy(()=>Hn(()=>import("./SkillsPage-DyIY1U9O.js"),__vite__mapDeps([26,22,18,23,7,5,4,9,19,6,8,15])).then(e=>({default:e.SkillsPage}))),gU=b.lazy(()=>Hn(()=>import("./WidgetsPage-BU7ejAYd.js"),__vite__mapDeps([27,25,7,10,8,18,23,15])).then(e=>({default:e.WidgetsPage})));function yU(){const{resolvedLocale:e}=Qs(),t=Fn(),n=Zs();jj();const r=dn(),o=b.useMemo(()=>typeof window>"u"?!1:Aj(window.location.search),[]),s=t?.pathname||"/",c=new URL(window.location.href),u=c.pathname.replace(/\/+$/,"")||"/",p=u.match(/^\/share\/([^/?#]+)$/i)?.[1]||null,m=c.searchParams.get("token")||null,y=p||m,k=u==="/share"||u==="/share.html"||u.startsWith("/share/"),w=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),x=s.replace(/\/+$/,"")||"/",C=x==="/leaderboard",S=x.match(/^\/u\/([^/]+)$/i),D=S?S[1]:null,L=!!(n.enabled&&n.signedIn),R=w||L,O=!1,K=Ej(),W=b.useMemo(()=>!n.enabled||!L?null:{getAccessToken:()=>n.getAccessToken(),name:n.displayName||"",userId:n.user?.id||null},[L,n]);let z=w||r||o?"dashboard":"landing";x==="/landing"&&(z="landing"),x==="/dashboard"&&(z="dashboard"),C&&(z="dashboard"),D&&(z="dashboard");const P=x==="/limits",Y=x==="/settings",X=x==="/skills",ue=x==="/widgets",se=x==="/ip-check";(P||Y||X||ue||se)&&(z="dashboard");let Ae=iU;D?Ae=cU:x==="/leaderboard"?Ae=lU:P?Ae=uU:Y?Ae=fU:X?Ae=mU:ue?Ae=gU:se&&(Ae=oU);const pe=!k&&(x==="/dashboard"||x==="/"||C||P||Y||X||ue||se);let le=null;if(x==="/auth/callback"||x==="/auth/native-callback")le=N.jsx(rU,{});else if(x==="/login")le=N.jsx(dU,{});else if(x==="/device")le=N.jsx(hU,{});else if(x==="/wrapped")le=N.jsx(pU,{});else if(z==="landing")le=N.jsx(sU,{signInUrl:"/login",signUpUrl:"/login"});else{const fe=N.jsx(Ae,{baseUrl:K,auth:W,signedIn:R,sessionSoftExpired:O,signOut:()=>n.enabled?n.signOut():Promise.resolve(),publicMode:k,publicToken:y,userId:D,signInUrl:"/login",signUpUrl:"/login"},e);pe?le=N.jsx(tU,{children:fe}):le=fe}return N.jsx(TI,{children:N.jsx(RI,{children:N.jsxs(LI,{children:[N.jsx(b.Suspense,{fallback:null,children:le}),N.jsx(Cj,{}),N.jsx(ND,{}),N.jsx(GD,{})]})})})}const vU=Z1([{path:"*",element:N.jsx(yU,{})}]);US.createRoot(document.getElementById("root")).render(N.jsx(Ls.StrictMode,{children:N.jsx(fD,{children:N.jsx(bD,{children:N.jsx(NL,{children:N.jsx(cT,{router:vU})})})})}));export{Ar as $,mw as A,Fe as B,N as C,ep as D,Nc as E,FU as F,BU as G,Os as H,CI as I,fu as J,JU as K,Pu as L,sm as M,RU as N,AU as O,xO as P,Uj as Q,Ls as R,Tt as S,zw as T,Zs as U,OU as V,$U as W,Bw as X,Qs as Y,Aj as Z,Hn as _,Kt as a,ZU as a0,VU as a1,eL as a2,LU as a3,DU as a4,XU as a5,UU as a6,NU as a7,E_ as a8,u4 as a9,Pw as aA,Sw as aB,Cw as aC,yI as aD,_D as aE,Ef as aF,Lf as aG,s4 as aH,ra as aI,If as aJ,i4 as aK,l4 as aL,o4 as aM,Cs as aN,W0 as aO,oN as aP,zp as aQ,qU as aR,YU as aS,KU as aT,Wa as aU,IS as aV,Xp as aW,lT as aa,Fn as ab,wu as ac,d4 as ad,HR as ae,CU as af,h4 as ag,TU as ah,GU as ai,PI as aj,Bj as ak,kI as al,a4 as am,kU as an,FR as ao,Nf as ap,zR as aq,Yv as ar,WU as as,Uw as at,jw as au,hI as av,jU as aw,go as ax,iu as ay,xw as az,Hw as b,hn as c,Nr as d,vk as e,dt as f,gw as g,dn as h,T2 as i,EU as j,qR as k,r4 as l,vo as m,cL as n,uL as o,e4 as p,MU as q,b as r,HU as s,t4 as t,Of as u,n4 as v,IU as w,yt as x,zU as y,QU as z};
|