vendor: 12,463 bytes, lines 1-2
1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/welcome-DKf8UNaY.js","assets/index-ZKARECnS.js","assets/accordion-Ca1UkPJz.js","assets/circle-check-BXWyDD6F.js","assets/external-link-CZkHghC7.js","assets/message-circle-YEPgKAVi.js","assets/website-services-BIJLA2Va.js","assets/Reveal-u9hoIpE3.js","assets/FinalCTA-BfShH9Ip.js","assets/loader-circle-DGpjn3jT.js","assets/clock-BrGmBbdD.js","assets/search-DlFwrU72.js","assets/terms-BWeeyJnM.js","assets/roadmap-jQg7XP5K.js","assets/reviews-Cz5KPY76.js","assets/VideoTestimonials-1X4jkBZr.js","assets/star-3SwlRxpV.js","assets/logo-no2h2o-Dnd7ayN-.js","assets/logo-washdoctors-BdC5yFDQ.js","assets/quote-C1cE_kzW.js","assets/privacy-Dm_J3iXY.js","assets/mobile-valeting-DKThIj0l.js","assets/IndustryHero-vrI-_Fgt.js","assets/Pricing-DZ_Y222J.js","assets/chart-column-TY-FZn0b.js","assets/FAQ-KGXtnhJz.js","assets/StoreSpotlight-BbYZ7S_j.js","assets/sparkles-7NLaEFtx.js","assets/wrench-D9aQNbh4.js","assets/helpcenter-gBC1ti7X.js","assets/use-section-animation-CF9WLsQf.js","assets/proxy-dp7bQzSU.js","assets/feedback-Pcjyoalv.js","assets/use-feedback-votes-BW5Vkzrk.js","assets/SignInPanel-BUr0-23K.js","assets/detailing-crm-DagLxheV.js","assets/BlogPreview-CtKNeKKQ.js","assets/ArticleCard-CCw7rfeO.js","assets/BrandsMarquee-7cCwFO1s.js","assets/detailing-D-lu3qtj.js","assets/contact-DlOwn9tY.js","assets/car-detailing-booking-system-D10vWHc7.js","assets/blog-2E6CTsKT.js","assets/affiliates-BDZ4Uzm4.js","assets/index-CRRTuNw5.js","assets/feedback_.admin-B7AC3bfa.js","assets/feedback_._slug-Cdp7TVSt.js","assets/arrow-left-Dclh68Wd.js","assets/case-study.washdoctors-DPJhC8kb.js","assets/case-study.no2h2o-oCNCjFHs.js","assets/blog_._slug-DK8ZDqIq.js"])))=>i.map(i=>d[i]); 2function uj(t,e){for(var n=0;n<e.length;n++){const a=e[n];if(typeof a!="string"&&!Array.isArray(a)){for(const o in a)if(o!=="default"&&!(o in t)){const l=Object.getOwnPropertyDescriptor(a,o);l&&Object.defineProperty(t,o,l.get?l:{enumerable:!0,get:()=>a[o]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}function c0(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var lf={exports:{}},Bo={};var Ub;function dj(){if(Ub)return Bo;Ub=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(a,o,l){var u=null;if(l!==void 0&&(u=""+l),o.key!==void 0&&(u=""+o.key),"key"in o){l={};for(var h in o)h!=="key"&&(l[h]=o[h])}else l=o;return o=l.ref,{$$typeof:t,type:a,key:u,ref:o!==void 0?o:null,props:l}}return Bo.Fragment=e,Bo.jsx=n,Bo.jsxs=n,Bo}var Ib;function hj(){return Ib||(Ib=1,lf.exports=dj()),lf.exports}var d=hj(),cf={exports:{}},Ae={};var Bb;function fj(){if(Bb)return Ae;Bb=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),u=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),w=Symbol.iterator;function x(N){return N===null||typeof N!="object"?null:(N=w&&N[w]||N["@@iterator"],typeof N=="function"?N:null)}var k={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},A=Object.assign,_={};function j(N,G,Z){this.props=N,this.context=G,this.refs=_,this.updater=Z||k}j.prototype.isReactComponent={},j.prototype.setState=function(N,G){if(typeof N!="object"&&typeof N!="function"&&N!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,N,G,"setState")},j.prototype.forceUpdate=function(N){this.updater.enqueueForceUpdate(this,N,"forceUpdate")};function O(){}O.prototype=j.prototype;function R(N,G,Z){this.props=N,this.context=G,this.refs=_,this.updater=Z||k}var M=R.prototype=new O;M.constructor=R,A(M,j.prototype),M.isPureReactComponent=!0;var K=Array.isArray;function V(){}var $={H:null,A:null,T:null,S:null},U=Object.prototype.hasOwnProperty;function Q(N,G,Z){var ee=Z.ref;return{$$typeof:t,type:N,key:G,ref:ee!==void 0?ee:null,props:Z}}function ae(N,G){return Q(N.type,G,N.props)}function se(N){return typeof N=="object"&&N!==null&&N.$$typeof===t}function ye(N){var G={"=":"=0",":":"=2"};return"$"+N.replace(/[=:]/g,function(Z){return G[Z]})}var _e=/\/+/g;function ze(N,G){return typeof N=="object"&&N!==null&&N.key!=null?ye(""+N.key):G.toString(36)}function Ce(N){switch(N.status){case"fulfilled":return N.value;case"rejected":throw N.reason;default:switch(typeof N.status=="string"?N.then(V,V):(N.status="pending",N.then(function(G){N.status==="pending"&&(N.status="fulfilled",N.value=G)},function(G){N.status==="pending"&&(N.status="rejected",N.reason=G)})),N.status){case"fulfilled":return N.value;case"rejected":throw N.reason}}throw N}function L(N,G,Z,ee,X){var ce=typeof N;(ce==="undefined"||ce==="boolean")&&(N=null);var Te=!1;if(N===null)Te=!0;else switch(ce){case"bigint":case"string":case"number":Te=!0;break;case"object":switch(N.$$typeof){case t:case e:Te=!0;break;case b:return Te=N._init,L(Te(N._payload),G,Z,ee,X)}}if(Te)return X=X(N),Te=ee===""?"."+ze(N,0):ee,K(X)?(Z="",Te!=null&&(Z=Te.replace(_e,"$&/")+"/"),L(X,G,Z,"",function(zt){return zt})):X!=null&&(se(X)&&(X=ae(X,Z+(X.key==null||N&&N.key===X.key?"":(""+X.key).replace(_e,"$&/")+"/")+Te)),G.push(X)),1;Te=0;var ke=ee===""?".":ee+":";if(K(N))for(var ve=0;ve<N.length;ve++)ee=N[ve],ce=ke+ze(ee,ve),Te+=L(ee,G,Z,ce,X);else if(ve=x(N),typeof ve=="function")for(N=ve.call(N),ve=0;!(ee=N.next()).done;)ee=ee.value,ce=ke+ze(ee,ve++),Te+=L(ee,G,Z,ce,X);else if(ce==="object"){if(typeof N.then=="function")return L(Ce(N),G,Z,ee,X);throw G=String(N),Error("Objects are not valid as a React child (found: "+(G==="[object Object]"?"object with keys {"+Object.keys(N).join(", ")+"}":G)+"). If you meant to render a collection of children, use an array instead.")}return Te}function Y(N,G,Z){if(N==null)return N;var ee=[],X=0;return L(N,ee,"","",function(ce){return G.call(Z,ce,X++)}),ee}function ie(N){if(N._status===-1){var G=N._result;G=G(),G.then(function(Z){(N._status===0||N._status===-1)&&(N._status=1,N._result=Z)},function(Z){(N._status===0||N._status===-1)&&(N._status=2,N._result=Z)}),N._status===-1&&(N._status=0,N._result=G)}if(N._status===1)return N._result.default;throw N._result}var Se=typeof reportError=="function"?reportError:function(N){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var G=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof N=="object"&&N!==null&&typeof N.message=="string"?String(N.message):String(N),error:N});if(!window.dispatchEvent(G))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",N);return}console.error(N)},ne={map:Y,forEach:function(N,G,Z){Y(N,function(){G.apply(this,arguments)},Z)},count:function(N){var G=0;return Y(N,function(){G++}),G},toArray:function(N){return Y(N,function(G){return G})||[]},only:function(N){if(!se(N))throw Error("React.Children.only expected to receive a single React element child.");return N}};return Ae.Activity=y,Ae.Children=ne,Ae.Component=j,Ae.Fragment=n,Ae.Profiler=o,Ae.PureComponent=R,Ae.StrictMode=a,Ae.Suspense=p,Ae.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=$,Ae.__COMPILER_RUNTIME={__proto__:null,c:function(N){return $.H.useMemoCache(N)}},Ae.cache=function(N){return function(){return N.apply(null,arguments)}},Ae.cacheSignal=function(){return null},Ae.cloneElement=function(N,G,Z){if(N==null)throw Error("The argument must be a React element, but you passed "+N+".");var ee=A({},N.props),X=N.key;if(G!=null)for(ce in G.key!==void 0&&(X=""+G.key),G)!U.call(G,ce)||ce==="key"||ce==="__self"||ce==="__source"||ce==="ref"&&G.ref===void 0||(ee[ce]=G[ce]);var ce=arguments.length-2;if(ce===1)ee.children=Z;else if(1<ce){for(var Te=Array(ce),ke=0;ke<ce;ke++)Te[ke]=arguments[ke+2];ee.children=Te}return Q(N.type,X,ee)},Ae.createContext=function(N){return N={$$typeof:u,_currentValue:N,_currentValue2:N,_threadCount:0,Provider:null,Consumer:null},N.Provider=N,N.Consumer={$$typeof:l,_context:N},N},Ae.createElement=function(N,G,Z){var ee,X={},ce=null;if(G!=null)for(ee in G.key!==void 0&&(ce=""+G.key),G)U.call(G,ee)&&ee!=="key"&&ee!=="__self"&&ee!=="__source"&&(X[ee]=G[ee]);var Te=arguments.length-2;if(Te===1)X.children=Z;else if(1<Te){for(var ke=Array(Te),ve=0;ve<Te;ve++)ke[ve]=arguments[ve+2];X.children=ke}if(N&&N.defaultProps)for(ee in Te=N.defaultProps,Te)X[ee]===void 0&&(X[ee]=Te[ee]);return Q(N,ce,X)},Ae.createRef=function(){return{current:null}},Ae.forwardRef=function(N){return{$$typeof:h,render:N}},Ae.isValidElement=se,Ae.lazy=function(N){return{$$typeof:b,_payload:{_status:-1,_result:N},_init:ie}},Ae.memo=function(N,G){return{$$typeof:m,type:N,compare:G===void 0?null:G}},Ae.startTransition=function(N){var G=$.T,Z={};$.T=Z;try{var ee=N(),X=$.S;X!==null&&X(Z,ee),typeof ee=="object"&&ee!==null&&typeof ee.then=="function"&&ee.then(V,Se)}catch(ce){Se(ce)}finally{G!==null&&Z.types!==null&&(G.types=Z.types),$.T=G}},Ae.unstable_useCacheRefresh=function(){return $.H.useCacheRefresh()},Ae.use=function(N){return $.H.use(N)},Ae.useActionState=function(N,G,Z){return $.H.useActionState(N,G,Z)},Ae.useCallback=function(N,G){return $.H.useCallback(N,G)},Ae.useContext=function(N){return $.H.useContext(N)},Ae.useDebugValue=function(){},Ae.useDeferredValue=function(N,G){return $.H.useDeferredValue(N,G)},Ae.useEffect=function(N,G){return $.H.useEffect(N,G)},Ae.useEffectEvent=function(N){return $.H.useEffectEvent(N)},Ae.useId=function(){return $.H.useId()},Ae.useImperativeHandle=function(N,G,Z){return $.H.useImperativeHandle(N,G,Z)},Ae.useInsertionEffect=function(N,G){return $.H.useInsertionEffect(N,G)},Ae.useLayoutEffect=function(N,G){return $.H.useLayoutEffect(N,G)},Ae.useMemo=function(N,G){return $.H.useMemo(N,G)},Ae.useOptimistic=function(N,G){return $.H.useOptimistic(N,G)},Ae.useReducer=function(N,G,Z){return $.H.useReducer(N,G,Z)},Ae.useRef=function(N){return $.H.useRef(N)},Ae.useState=function(N){return $.H.useState(N)},Ae.useSyncExternalStore=function(N,G,Z){return $.H.useSyncExternalStore(N,G,Z)},Ae.useTransition=function(){return $.H.useTransition()},Ae.version="19.2.5",Ae}var zb;function xl(){return zb||(zb=1,cf.exports=fj()),cf.exports}var I=xl();const te=c0(I),u0=uj({__proto__:null,default:te},[I]);var uf={exports:{}},zo={},df={exports:{}},hf={};var qb;function pj(){return qb||(qb=1,(function(t){function e(L,Y){var ie=L.length;L.push(Y);e:for(;0<ie;){var Se=ie-1>>>1,ne=L[Se];if(0<o(ne,Y))L[Se]=Y,L[ie]=ne,ie=Se;else break e}}function n(L){return L.length===0?null:L[0]}function a(L){if(L.length===0)return null;var Y=L[0],ie=L.pop();if(ie!==Y){L[0]=ie;e:for(var Se=0,ne=L.length,N=ne>>>1;Se<N;){var G=2*(Se+1)-1,Z=L[G],ee=G+1,X=L[ee];if(0>o(Z,ie))ee<ne&&0>o(X,Z)?(L[Se]=X,L[ee]=ie,Se=ee):(L[Se]=Z,L[G]=ie,Se=G);else if(ee<ne&&0>o(X,ie))L[Se]=X,L[ee]=ie,Se=ee;else break e}}return Y}function o(L,Y){var ie=L.sortIndex-Y.sortIndex;return ie!==0?ie:L.id-Y.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var l=performance;t.unstable_now=function(){return l.now()}}else{var u=Date,h=u.now();t.unstable_now=function(){return u.now()-h}}var p=[],m=[],b=1,y=null,w=3,x=!1,k=!1,A=!1,_=!1,j=typeof setTimeout=="function"?setTimeout:null,O=typeof clearTimeout=="function"?clearTimeout:null,R=typeof setImmediate<"u"?setImmediate:null;function M(L){for(var Y=n(m);Y!==null;){if(Y.callback===null)a(m);else if(Y.startTime<=L)a(m),Y.sortIndex=Y.expirationTime,e(p,Y);else break;Y=n(m)}}function K(L){if(A=!1,M(L),!k)if(n(p)!==null)k=!0,V||(V=!0,ye());else{var Y=n(m);Y!==null&&Ce(K,Y.startTime-L)}}var V=!1,$=-1,U=5,Q=-1;function ae(){return _?!0:!(t.unstable_now()-Q<U)}function se(){if(_=!1,V){var L=t.unstable_now();Q=L;var Y=!0;try{e:{k=!1,A&&(A=!1,O($),$=-1),x=!0;var ie=w;try{t:{for(M(L),y=n(p);y!==null&&!(y.expirationTime>L&&ae());){var Se=y.callback;if(typeof Se=="function"){y.callback=null,w=y.priorityLevel;var ne=Se(y.expirationTime<=L);if(L=t.unstable_now(),typeof ne=="function"){y.callback=ne,M(L),Y=!0;break t}y===n(p)&&a(p),M(L)}else a(p);y=n(p)}if(y!==null)Y=!0;else{var N=n(m);N!==null&&Ce(K,N.startTime-L),Y=!1}}break e}finally{y=null,w=ie,x=!1}Y=void 0}}finally{Y?ye():V=!1}}}var ye;
vendor: 6,474 bytes, line 2
2if(typeof R=="function")ye=function(){R(se)};else if(typeof MessageChannel<"u"){var _e=new MessageChannel,ze=_e.port2;_e.port1.onmessage=se,ye=function(){ze.postMessage(null)}}else ye=function(){j(se,0)};function Ce(L,Y){$=j(function(){L(t.unstable_now())},Y)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(L){L.callback=null},t.unstable_forceFrameRate=function(L){0>L||125<L?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):U=0<L?Math.floor(1e3/L):5},t.unstable_getCurrentPriorityLevel=function(){return w},t.unstable_next=function(L){switch(w){case 1:case 2:case 3:var Y=3;break;default:Y=w}var ie=w;w=Y;try{return L()}finally{w=ie}},t.unstable_requestPaint=function(){_=!0},t.unstable_runWithPriority=function(L,Y){switch(L){case 1:case 2:case 3:case 4:case 5:break;default:L=3}var ie=w;w=L;try{return Y()}finally{w=ie}},t.unstable_scheduleCallback=function(L,Y,ie){var Se=t.unstable_now();switch(typeof ie=="object"&&ie!==null?(ie=ie.delay,ie=typeof ie=="number"&&0<ie?Se+ie:Se):ie=Se,L){case 1:var ne=-1;break;case 2:ne=250;break;case 5:ne=1073741823;break;case 4:ne=1e4;break;default:ne=5e3}return ne=ie+ne,L={id:b++,callback:Y,priorityLevel:L,startTime:ie,expirationTime:ne,sortIndex:-1},ie>Se?(L.sortIndex=ie,e(m,L),n(p)===null&&L===n(m)&&(A?(O($),$=-1):A=!0,Ce(K,ie-Se))):(L.sortIndex=ne,e(p,L),k||x||(k=!0,V||(V=!0,ye()))),L},t.unstable_shouldYield=ae,t.unstable_wrapCallback=function(L){var Y=w;return function(){var ie=w;w=Y;try{return L.apply(this,arguments)}finally{w=ie}}}})(hf)),hf}var $b;function mj(){return $b||($b=1,df.exports=pj()),df.exports}var ff={exports:{}},Xt={};var Hb;function gj(){if(Hb)return Xt;Hb=1;var t=xl();function e(p){var m="https://react.dev/errors/"+p;if(1<arguments.length){m+="?args[]="+encodeURIComponent(arguments[1]);for(var b=2;b<arguments.length;b++)m+="&args[]="+encodeURIComponent(arguments[b])}return"Minified React error #"+p+"; visit "+m+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function n(){}var a={d:{f:n,r:function(){throw Error(e(522))},D:n,C:n,L:n,m:n,X:n,S:n,M:n},p:0,findDOMNode:null},o=Symbol.for("react.portal");function l(p,m,b){var y=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:o,key:y==null?null:""+y,children:p,containerInfo:m,implementation:b}}var u=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function h(p,m){if(p==="font")return"";if(typeof m=="string")return m==="use-credentials"?m:""}return Xt.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=a,Xt.createPortal=function(p,m){var b=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!m||m.nodeType!==1&&m.nodeType!==9&&m.nodeType!==11)throw Error(e(299));return l(p,m,null,b)},Xt.flushSync=function(p){var m=u.T,b=a.p;try{if(u.T=null,a.p=2,p)return p()}finally{u.T=m,a.p=b,a.d.f()}},Xt.preconnect=function(p,m){typeof p=="string"&&(m?(m=m.crossOrigin,m=typeof m=="string"?m==="use-credentials"?m:"":void 0):m=null,a.d.C(p,m))},Xt.prefetchDNS=function(p){typeof p=="string"&&a.d.D(p)},Xt.preinit=function(p,m){if(typeof p=="string"&&m&&typeof m.as=="string"){var b=m.as,y=h(b,m.crossOrigin),w=typeof m.integrity=="string"?m.integrity:void 0,x=typeof m.fetchPriority=="string"?m.fetchPriority:void 0;b==="style"?a.d.S(p,typeof m.precedence=="string"?m.precedence:void 0,{crossOrigin:y,integrity:w,fetchPriority:x}):b==="script"&&a.d.X(p,{crossOrigin:y,integrity:w,fetchPriority:x,nonce:typeof m.nonce=="string"?m.nonce:void 0})}},Xt.preinitModule=function(p,m){if(typeof p=="string")if(typeof m=="object"&&m!==null){if(m.as==null||m.as==="script"){var b=h(m.as,m.crossOrigin);a.d.M(p,{crossOrigin:b,integrity:typeof m.integrity=="string"?m.integrity:void 0,nonce:typeof m.nonce=="string"?m.nonce:void 0})}}else m==null&&a.d.M(p)},Xt.preload=function(p,m){if(typeof p=="string"&&typeof m=="object"&&m!==null&&typeof m.as=="string"){var b=m.as,y=h(b,m.crossOrigin);a.d.L(p,b,{crossOrigin:y,integrity:typeof m.integrity=="string"?m.integrity:void 0,nonce:typeof m.nonce=="string"?m.nonce:void 0,type:typeof m.type=="string"?m.type:void 0,fetchPriority:typeof m.fetchPriority=="string"?m.fetchPriority:void 0,referrerPolicy:typeof m.referrerPolicy=="string"?m.referrerPolicy:void 0,imageSrcSet:typeof m.imageSrcSet=="string"?m.imageSrcSet:void 0,imageSizes:typeof m.imageSizes=="string"?m.imageSizes:void 0,media:typeof m.media=="string"?m.media:void 0})}},Xt.preloadModule=function(p,m){if(typeof p=="string")if(m){var b=h(m.as,m.crossOrigin);a.d.m(p,{as:typeof m.as=="string"&&m.as!=="script"?m.as:void 0,crossOrigin:b,integrity:typeof m.integrity=="string"?m.integrity:void 0})}else a.d.m(p)},Xt.requestFormReset=function(p){a.d.r(p)},Xt.unstable_batchedUpdates=function(p,m){return p(m)},Xt.useFormState=function(p,m,b){return u.H.useFormState(p,m,b)},Xt.useFormStatus=function(){return u.H.useHostTransitionStatus()},Xt.version="19.2.5",Xt}var Vb;function d0(){if(Vb)return ff.exports;Vb=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),ff.exports=gj(),ff.exports}var Fb;function yj(){if(Fb)return zo;Fb=1;var t=mj(),e=xl(),n=d0();function a(r){var s="https://react.dev/errors/"+r;if(1<arguments.length){s+="?args[]="+encodeURIComponent(arguments[1]);for(var i=2;i<arguments.length;i++)s+="&args[]="+encodeURIComponent(arguments[i])}return"Minified React error #"+r+"; visit "+s+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function o(r){return!(!r||r.nodeType!==1&&r.nodeType!==9&&r.nodeType!==11)}function l(r){var s=r,i=r;if(r.alternate)for(;s.return;)s=s.return;else{r=s;do s=r,(s.flags&4098)!==0&&(i=s.return),r=s.return;while(r)}return s.tag===3?i:null}function u(r){if(r.tag===13){var s=r.memoizedState;if(s===null&&(r=r.alternate,r!==null&&(s=r.memoizedState)),s!==null)return s.dehydrated}return null}function h(r){if(r.tag===31){var s=r.memoizedState;if(s===null&&(r=r.alternate,r!==null&&(s=r.memoizedState)),s!==null)return s.dehydrated}return null}function p(r){if(l(r)!==r)throw Error(a(188))}function m(r){var s=r.alternate;
vendor: 10,185 bytes, lines 2-9
2if(!s){if(s=l(r),s===null)throw Error(a(188));return s!==r?null:r}for(var i=r,c=s;;){var f=i.return;if(f===null)break;var g=f.alternate;if(g===null){if(c=f.return,c!==null){i=c;continue}break}if(f.child===g.child){for(g=f.child;g;){if(g===i)return p(f),r;if(g===c)return p(f),s;g=g.sibling}throw Error(a(188))}if(i.return!==c.return)i=f,c=g;else{for(var v=!1,S=f.child;S;){if(S===i){v=!0,i=f,c=g;break}if(S===c){v=!0,c=f,i=g;break}S=S.sibling}if(!v){for(S=g.child;S;){if(S===i){v=!0,i=g,c=f;break}if(S===c){v=!0,c=g,i=f;break}S=S.sibling}if(!v)throw Error(a(189))}}if(i.alternate!==c)throw Error(a(190))}if(i.tag!==3)throw Error(a(188));return i.stateNode.current===i?r:s}function b(r){var s=r.tag;if(s===5||s===26||s===27||s===6)return r;for(r=r.child;r!==null;){if(s=b(r),s!==null)return s;r=r.sibling}return null}var y=Object.assign,w=Symbol.for("react.element"),x=Symbol.for("react.transitional.element"),k=Symbol.for("react.portal"),A=Symbol.for("react.fragment"),_=Symbol.for("react.strict_mode"),j=Symbol.for("react.profiler"),O=Symbol.for("react.consumer"),R=Symbol.for("react.context"),M=Symbol.for("react.forward_ref"),K=Symbol.for("react.suspense"),V=Symbol.for("react.suspense_list"),$=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),Q=Symbol.for("react.activity"),ae=Symbol.for("react.memo_cache_sentinel"),se=Symbol.iterator;function ye(r){return r===null||typeof r!="object"?null:(r=se&&r[se]||r["@@iterator"],typeof r=="function"?r:null)}var _e=Symbol.for("react.client.reference");function ze(r){if(r==null)return null;if(typeof r=="function")return r.$$typeof===_e?null:r.displayName||r.name||null;if(typeof r=="string")return r;switch(r){case A:return"Fragment";case j:return"Profiler";case _:return"StrictMode";case K:return"Suspense";case V:return"SuspenseList";case Q:return"Activity"}if(typeof r=="object")switch(r.$$typeof){case k:return"Portal";case R:return r.displayName||"Context";case O:return(r._context.displayName||"Context")+".Consumer";case M:var s=r.render;return r=r.displayName,r||(r=s.displayName||s.name||"",r=r!==""?"ForwardRef("+r+")":"ForwardRef"),r;case $:return s=r.displayName||null,s!==null?s:ze(r.type)||"Memo";case U:s=r._payload,r=r._init;try{return ze(r(s))}catch{}}return null}var Ce=Array.isArray,L=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Y=n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ie={pending:!1,data:null,method:null,action:null},Se=[],ne=-1;function N(r){return{current:r}}function G(r){0>ne||(r.current=Se[ne],Se[ne]=null,ne--)}function Z(r,s){ne++,Se[ne]=r.current,r.current=s}var ee=N(null),X=N(null),ce=N(null),Te=N(null);function ke(r,s){switch(Z(ce,s),Z(X,r),Z(ee,null),s.nodeType){case 9:case 11:r=(r=s.documentElement)&&(r=r.namespaceURI)?ib(r):0;break;default:if(r=s.tagName,s=s.namespaceURI)s=ib(s),r=ob(s,r);else switch(r){case"svg":r=1;break;case"math":r=2;break;default:r=0}}G(ee),Z(ee,r)}function ve(){G(ee),G(X),G(ce)}function zt(r){r.memoizedState!==null&&Z(Te,r);var s=ee.current,i=ob(s,r.type);s!==i&&(Z(X,r),Z(ee,i))}function At(r){X.current===r&&(G(ee),G(X)),Te.current===r&&(G(Te),Po._currentValue=ie)}var vt,Hn;function Et(r){if(vt===void 0)try{throw Error()}catch(i){var s=i.stack.trim().match(/\n( *(at )?)/);vt=s&&s[1]||"",Hn=-1<i.stack.indexOf(` 3 at`)?" (<anonymous>)":-1<i.stack.indexOf("@")?"@unknown:0:0":""}return` 4`+vt+r+Hn}var Vs=!1;function gr(r,s){if(!r||Vs)return"";Vs=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var c={DetermineComponentFrameRoot:function(){try{if(s){var J=function(){throw Error()};if(Object.defineProperty(J.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(J,[])}catch(H){var q=H}Reflect.construct(r,[],J)}else{try{J.call()}catch(H){q=H}r.call(J.prototype)}}else{try{throw Error()}catch(H){q=H}(J=r())&&typeof J.catch=="function"&&J.catch(function(){})}}catch(H){if(H&&q&&typeof H.stack=="string")return[H.stack,q.stack]}return[null,null]}};c.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var f=Object.getOwnPropertyDescriptor(c.DetermineComponentFrameRoot,"name");f&&f.configurable&&Object.defineProperty(c.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var g=c.DetermineComponentFrameRoot(),v=g[0],S=g[1];if(v&&S){var C=v.split(` 5`),z=S.split(` 6`);for(f=c=0;c<C.length&&!C[c].includes("DetermineComponentFrameRoot");)c++;for(;f<z.length&&!z[f].includes("DetermineComponentFrameRoot");)f++;if(c===C.length||f===z.length)for(c=C.length-1,f=z.length-1;1<=c&&0<=f&&C[c]!==z[f];)f--;for(;1<=c&&0<=f;c--,f--)if(C[c]!==z[f]){if(c!==1||f!==1)do if(c--,f--,0>f||C[c]!==z[f]){var F=` 7`+C[c].replace(" at new "," at ");return r.displayName&&F.includes("<anonymous>")&&(F=F.replace("<anonymous>",r.displayName)),F}while(1<=c&&0<=f);break}}}finally{Vs=!1,Error.prepareStackTrace=i}return(i=r?r.displayName||r.name:"")?Et(i):""}function tr(r,s){switch(r.tag){case 26:case 27:case 5:return Et(r.type);case 16:return Et("Lazy");case 13:return r.child!==s&&s!==null?Et("Suspense Fallback"):Et("Suspense");case 19:return Et("SuspenseList");case 0:case 15:return gr(r.type,!1);case 11:return gr(r.type.render,!1);case 1:return gr(r.type,!0);case 31:return Et("Activity");default:return""}}function Rn(r){try{var s="",i=null;do s+=tr(r,i),i=r,r=r.return;while(r);return s}catch(c){return` 8Error generating stack: `+c.message+` 9`+c.stack}}var qt=Object.prototype.hasOwnProperty,vn=t.unstable_scheduleCallback,Fs=t.unstable_cancelCallback,Mt=t.unstable_shouldYield,nr=t.unstable_requestPaint,Dt=t.unstable_now,We=t.unstable_getCurrentPriorityLevel,ft=t.unstable_ImmediatePriority,Cn=t.unstable_UserBlockingPriority,yr=t.unstable_NormalPriority,Ki=t.unstable_LowPriority,br=t.unstable_IdlePriority,jl=t.log,Yr=t.unstable_setDisableYieldValue,Gs=null,en=null;function Vn(r){if(typeof jl=="function"&&Yr(r),en&&typeof en.setStrictMode=="function")try{en.setStrictMode(Gs,r)}catch{}}var Jt=Math.clz32?Math.clz32:rr,Zu=Math.log,Yi=Math.LN2;function rr(r){return r>>>=0,r===0?32:31-(Zu(r)/Yi|0)|0}var Ra=256,Ca=262144,Ks=4194304;function sr(r){var s=r&42;if(s!==0)return s;switch(r&-r){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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return r&261888;case 262144:case 524288:case 1048576:case 2097152:return r&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return r&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return r}}function je(r,s,i){var c=r.pendingLanes;if(c===0)return 0;var f=0,g=r.suspendedLanes,v=r.pingedLanes;r=r.warmLanes;var S=c&134217727;return S!==0?(c=S&~g,c!==0?f=sr(c):(v&=S,v!==0?f=sr(v):i||(i=S&~r,i!==0&&(f=sr(i))))):(S=c&~g,S!==0?f=sr(S):v!==0?f=sr(v):i||(i=c&~r,i!==0&&(f=sr(i)))),f===0?0:s!==0&&s!==f&&(s&g)===0&&(g=f&-f,i=s&-s,g>=i||g===32&&(i&4194048)!==0)?s:f}function at(r,s){return(r.pendingLanes&~(r.suspendedLanes&~r.pingedLanes)&s)===0}function Pt(r,s){switch(r){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32: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 s+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Qt(){var r=Ks;return Ks<<=1,(Ks&62914560)===0&&(Ks=4194304),r}function Wr(r){for(var s=[],i=0;31>i;i++)s.push(r);return s}function ct(r,s){r.pendingLanes|=s,s!==268435456&&(r.suspendedLanes=0,r.pingedLanes=0,r.warmLanes=0)}function sn(r,s,i,c,f,g){var v=r.pendingLanes;r.pendingLanes=i,r.suspendedLanes=0,r.pingedLanes=0,r.warmLanes=0,r.expiredLanes&=i,r.entangledLanes&=i,r.errorRecoveryDisabledLanes&=i,r.shellSuspendCounter=0;var S=r.entanglements,C=r.expirationTimes,z=r.hiddenUpdates;for(i=v&~i;0<i;){var F=31-Jt(i),J=1<<F;S[F]=0,C[F]=-1;var q=z[F];if(q!==null)for(z[F]=null,F=0;F<q.length;F++){var H=q[F];H!==null&&(H.lane&=-536870913)}i&=~J}c!==0&&Ys(r,c,0),g!==0&&f===0&&r.tag!==0&&(r.suspendedLanes|=g&~(v&~s))}function Ys(r,s,i){r.pendingLanes|=s,r.suspendedLanes&=~s;var c=31-Jt(s);r.entangledLanes|=s,r.entanglements[c]=r.entanglements[c]|1073741824|i&261930}function an(r,s){var i=r.entangledLanes|=s;for(r=r.entanglements;i;){var c=31-Jt(i),f=1<<c;f&s|r[c]&s&&(r[c]|=s),i&=~f}}function on(r,s){var i=s&-s;return i=(i&42)!==0?1:Oa(i),(i&(r.suspendedLanes|s))!==0?0:i}function Oa(r){switch(r){case 2:r=1;break;case 8:r=4;break;case 32:r=16;break;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:r=128;break;case 268435456:r=134217728;break;default:r=0}return r}function Fn(r){return r&=-r,2<r?8<r?(r&134217727)!==0?32:268435456:8:2}function Ju(){var r=Y.p;return r!==0?r:(r=window.event,r===void 0?32:Cb(r.type))}function Gp(r,s){var i=Y.p;try{return Y.p=r,s()}finally{Y.p=i}}var Zr=Math.random().toString(36).slice(2),$t="__reactFiber$"+Zr,ln="__reactProps$"+Zr,Na="__reactContainer$"+Zr,Qu="__reactEvents$"+Zr,Xk="__reactListeners$"+Zr,e_="__reactHandles$"+Zr,Kp="__reactResources$"+Zr,Wi="__reactMarker$"+Zr;function Xu(r){delete r[$t],delete r[ln],delete r[Qu],delete r[Xk],delete r[e_]}function Ma(r){var s=r[$t];if(s)return s;for(var i=r.parentNode;i;){if(s=i[Na]||i[$t]){if(i=s.alternate,s.child!==null||i!==null&&i.child!==null)for(r=pb(r);r!==null;){if(i=r[$t])return i;r=pb(r)}return s}r=i,i=r.parentNode}return null}function Da(r){if(r=r[$t]||r[Na]){var s=r.tag;if(s===5||s===6||s===13||s===31||s===26||s===27||s===3)return r}return null}function Zi(r){var s=r.tag;if(s===5||s===26||s===27||s===6)return r.stateNode;throw Error(a(33))}function Pa(r){var s=r[Kp];return s||(s=r[Kp]={hoistableStyles:new Map,hoistableScripts:new Map}),s}function Lt(r){r[Wi]=!0}var Yp=new Set,Wp={};
vendor: 6,950 bytes, line 9
9function Ws(r,s){La(r,s),La(r+"Capture",s)}function La(r,s){for(Wp[r]=s,r=0;r<s.length;r++)Yp.add(s[r])}var t_=RegExp("^[: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]*$"),Zp={},Jp={};function n_(r){return qt.call(Jp,r)?!0:qt.call(Zp,r)?!1:t_.test(r)?Jp[r]=!0:(Zp[r]=!0,!1)}function Tl(r,s,i){if(n_(s))if(i===null)r.removeAttribute(s);else{switch(typeof i){case"undefined":case"function":case"symbol":r.removeAttribute(s);return;case"boolean":var c=s.toLowerCase().slice(0,5);if(c!=="data-"&&c!=="aria-"){r.removeAttribute(s);return}}r.setAttribute(s,""+i)}}function Al(r,s,i){if(i===null)r.removeAttribute(s);else{switch(typeof i){case"undefined":case"function":case"symbol":case"boolean":r.removeAttribute(s);return}r.setAttribute(s,""+i)}}function vr(r,s,i,c){if(c===null)r.removeAttribute(i);else{switch(typeof c){case"undefined":case"function":case"symbol":case"boolean":r.removeAttribute(i);return}r.setAttributeNS(s,i,""+c)}}function On(r){switch(typeof r){case"bigint":case"boolean":case"number":case"string":case"undefined":return r;case"object":return r;default:return""}}function Qp(r){var s=r.type;return(r=r.nodeName)&&r.toLowerCase()==="input"&&(s==="checkbox"||s==="radio")}function r_(r,s,i){var c=Object.getOwnPropertyDescriptor(r.constructor.prototype,s);if(!r.hasOwnProperty(s)&&typeof c<"u"&&typeof c.get=="function"&&typeof c.set=="function"){var f=c.get,g=c.set;return Object.defineProperty(r,s,{configurable:!0,get:function(){return f.call(this)},set:function(v){i=""+v,g.call(this,v)}}),Object.defineProperty(r,s,{enumerable:c.enumerable}),{getValue:function(){return i},setValue:function(v){i=""+v},stopTracking:function(){r._valueTracker=null,delete r[s]}}}}function ed(r){if(!r._valueTracker){var s=Qp(r)?"checked":"value";r._valueTracker=r_(r,s,""+r[s])}}function Xp(r){if(!r)return!1;var s=r._valueTracker;if(!s)return!0;var i=s.getValue(),c="";return r&&(c=Qp(r)?r.checked?"true":"false":r.value),r=c,r!==i?(s.setValue(r),!0):!1}function El(r){if(r=r||(typeof document<"u"?document:void 0),typeof r>"u")return null;try{return r.activeElement||r.body}catch{return r.body}}var s_=/[\n"\\]/g;function Nn(r){return r.replace(s_,function(s){return"\\"+s.charCodeAt(0).toString(16)+" "})}function td(r,s,i,c,f,g,v,S){r.name="",v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"?r.type=v:r.removeAttribute("type"),s!=null?v==="number"?(s===0&&r.value===""||r.value!=s)&&(r.value=""+On(s)):r.value!==""+On(s)&&(r.value=""+On(s)):v!=="submit"&&v!=="reset"||r.removeAttribute("value"),s!=null?nd(r,v,On(s)):i!=null?nd(r,v,On(i)):c!=null&&r.removeAttribute("value"),f==null&&g!=null&&(r.defaultChecked=!!g),f!=null&&(r.checked=f&&typeof f!="function"&&typeof f!="symbol"),S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"?r.name=""+On(S):r.removeAttribute("name")}function em(r,s,i,c,f,g,v,S){if(g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"&&(r.type=g),s!=null||i!=null){if(!(g!=="submit"&&g!=="reset"||s!=null)){ed(r);return}i=i!=null?""+On(i):"",s=s!=null?""+On(s):i,S||s===r.value||(r.value=s),r.defaultValue=s}c=c??f,c=typeof c!="function"&&typeof c!="symbol"&&!!c,r.checked=S?r.checked:!!c,r.defaultChecked=!!c,v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"&&(r.name=v),ed(r)}function nd(r,s,i){s==="number"&&El(r.ownerDocument)===r||r.defaultValue===""+i||(r.defaultValue=""+i)}function Ua(r,s,i,c){if(r=r.options,s){s={};for(var f=0;f<i.length;f++)s["$"+i[f]]=!0;for(i=0;i<r.length;i++)f=s.hasOwnProperty("$"+r[i].value),r[i].selected!==f&&(r[i].selected=f),f&&c&&(r[i].defaultSelected=!0)}else{for(i=""+On(i),s=null,f=0;f<r.length;f++){if(r[f].value===i){r[f].selected=!0,c&&(r[f].defaultSelected=!0);return}s!==null||r[f].disabled||(s=r[f])}s!==null&&(s.selected=!0)}}function tm(r,s,i){if(s!=null&&(s=""+On(s),s!==r.value&&(r.value=s),i==null)){r.defaultValue!==s&&(r.defaultValue=s);return}r.defaultValue=i!=null?""+On(i):""}function nm(r,s,i,c){if(s==null){if(c!=null){if(i!=null)throw Error(a(92));if(Ce(c)){if(1<c.length)throw Error(a(93));c=c[0]}i=c}i==null&&(i=""),s=i}i=On(s),r.defaultValue=i,c=r.textContent,c===i&&c!==""&&c!==null&&(r.value=c),ed(r)}function Ia(r,s){if(s){var i=r.firstChild;if(i&&i===r.lastChild&&i.nodeType===3){i.nodeValue=s;return}}r.textContent=s}var a_=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function rm(r,s,i){var c=s.indexOf("--")===0;i==null||typeof i=="boolean"||i===""?c?r.setProperty(s,""):s==="float"?r.cssFloat="":r[s]="":c?r.setProperty(s,i):typeof i!="number"||i===0||a_.has(s)?s==="float"?r.cssFloat=i:r[s]=(""+i).trim():r[s]=i+"px"}function sm(r,s,i){if(s!=null&&typeof s!="object")throw Error(a(62));if(r=r.style,i!=null){for(var c in i)!i.hasOwnProperty(c)||s!=null&&s.hasOwnProperty(c)||(c.indexOf("--")===0?r.setProperty(c,""):c==="float"?r.cssFloat="":r[c]="");for(var f in s)c=s[f],s.hasOwnProperty(f)&&i[f]!==c&&rm(r,f,c)}else for(var g in s)s.hasOwnProperty(g)&&rm(r,g,s[g])}function rd(r){if(r.indexOf("-")===-1)return!1;switch(r){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 i_=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRen
9dering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),o_=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Rl(r){return o_.test(""+r)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":r}function wr(){}var sd=null;function ad(r){return r=r.target||r.srcElement||window,r.correspondingUseElement&&(r=r.correspondingUseElement),r.nodeType===3?r.parentNode:r}var Ba=null,za=null;function am(r){var s=Da(r);if(s&&(r=s.stateNode)){var i=r[ln]||null;e:switch(r=s.stateNode,s.type){case"input":if(td(r,i.value,i.defaultValue,i.defaultValue,i.checked,i.defaultChecked,i.type,i.name),s=i.name,i.type==="radio"&&s!=null){for(i=r;i.parentNode;)i=i.parentNode;for(i=i.querySelectorAll('input[name="'+Nn(""+s)+'"][type="radio"]'),s=0;s<i.length;s++){var c=i[s];if(c!==r&&c.form===r.form){var f=c[ln]||null;if(!f)throw Error(a(90));td(c,f.value,f.defaultValue,f.defaultValue,f.checked,f.defaultChecked,f.type,f.name)}}for(s=0;s<i.length;s++)c=i[s],c.form===r.form&&Xp(c)}break e;case"textarea":tm(r,i.value,i.defaultValue);break e;case"select":s=i.value,s!=null&&Ua(r,!!i.multiple,s,!1)}}}var id=!1;function im(r,s,i){if(id)return r(s,i);id=!0;try{var c=r(s);return c}finally{if(id=!1,(Ba!==null||za!==null)&&(gc(),Ba&&(s=Ba,r=za,za=Ba=null,am(s),r)))for(s=0;s<r.length;s++)am(r[s])}}function Ji(r,s){var i=r.stateNode;if(i===null)return null;var c=i[ln]||null;if(c===null)return null;i=c[s];e:switch(s){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(c=!c.disabled)||(r=r.type,c=!(r==="button"||r==="input"||r==="select"||r==="textarea")),r=!c;break e;default:r=!1}if(r)return null;if(i&&typeof i!="function")throw Error(a(231,s,typeof i));return i}var xr=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),od=!1;if(xr)try{var Qi={};Object.defineProperty(Qi,"passive",{get:function(){od=!0}}),window.addEventListener("test",Qi,Qi),window.removeEventListener("test",Qi,Qi)}catch{od=!1}var Jr=null,ld=null,Cl=null;function om(){if(Cl)return Cl;var r,s=ld,i=s.length,c,f="value"in Jr?Jr.value:Jr.textContent,g=f.length;for(r=0;r<i&&s[r]===f[r];r++);var v=i-r;for(c=1;c<=v&&s[i-c]===f[g-c];c++);return Cl=f.slice(r,1<c?1-c:void 0)}function Ol(r){var s=r.keyCode;return"charCode"in r?(r=r.charCode,r===0&&s===13&&(r=13)):r=s,r===10&&(r=13),32<=r||r===13?r:0}function Nl(){return!0}function lm(){return!1}function cn(r){function s(i,c,f,g,v){this._reactName=i,this._targetInst=f,this.type=c,this.nativeEvent=g,this.target=v,this.currentTarget=null;for(var S in r)r.hasOwnProperty(S)&&(i=r[S],this[S]=i?i(g):g[S]);return this.isDefaultPrevented=(g.defaultPrevented!=null?g.defaultPrevented:g.returnValue===!1)?Nl:lm,this.isPropagationStopped=lm,this}return y(s.prototype,{preventDefault:function(){this.defaultPrevented=!0;var i=this.nativeEvent;i&&(i.preventDefault?i.preventDefault():typeof i.returnValue!="unknown"&&(i.returnValue=!1),this.isDefaultPrevented=Nl)},stopPropagation:function(){var i=this.nativeEvent;i&&(i.stopPropagation?i.stopPropagation():typeof i.cancelBubble!="unknown"&&(i.cancelBubble=!0),this.isPropagationStopped=Nl)},persist:function(){},isPersistent:Nl}),s}var Zs={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(r){return r.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Ml=cn(Zs),Xi=y({},Zs,{view:0,detail:0}),l_=cn(Xi),cd,ud,eo,Dl=y({},Xi,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:hd,button:0,buttons:0,relatedTarget:function(r){return r.relatedTarget===void 0?r.fromElement===r.srcElement?r.toElement:r.fromElement:r.relatedTarget},movementX:function(r){return"movementX"in r?r.movementX:(r!==eo&&(eo&&r.type==="mousemove"?(cd=r.screenX-eo.screenX,ud=r.screenY-eo.screenY):ud=cd=0,eo=r),cd)},movementY:function(r){return"movementY"in r?r.movementY:ud}}),cm=cn(Dl),c_=y({},Dl,{dataTransfer:0}),u_=cn(c_),d_=y({},Xi,{relatedTarget:0}),dd=cn(d_),h_=y({},Zs,{animationName:0,elapsedTime:0,pseudoElement:0}),f_=cn(h_),p_=y({},Zs,{clipboardData:function(r){return"clipboardData"in r?r.clipboardData:window.clipboardData}}),m_=cn(p_),g_=y({},Zs,{data:0}),um=cn(g_),y_={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},b_={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"},v_={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function w_(r){var s=this.nativeEvent;return s.getModifierState?s.getModifierState(r):(r=v_[r])?!!s[r]:!1}function hd(){return w_}var x_=y({},Xi,{key:function(r){if(r.key){var s=y_[r.key]||r.key;if(s!=="Unidentified")return s}
vendor: 5,186 bytes, line 9
9return r.type==="keypress"?(r=Ol(r),r===13?"Enter":String.fromCharCode(r)):r.type==="keydown"||r.type==="keyup"?b_[r.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:hd,charCode:function(r){return r.type==="keypress"?Ol(r):0},keyCode:function(r){return r.type==="keydown"||r.type==="keyup"?r.keyCode:0},which:function(r){return r.type==="keypress"?Ol(r):r.type==="keydown"||r.type==="keyup"?r.keyCode:0}}),k_=cn(x_),__=y({},Dl,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),dm=cn(__),S_=y({},Xi,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:hd}),j_=cn(S_),T_=y({},Zs,{propertyName:0,elapsedTime:0,pseudoElement:0}),A_=cn(T_),E_=y({},Dl,{deltaX:function(r){return"deltaX"in r?r.deltaX:"wheelDeltaX"in r?-r.wheelDeltaX:0},deltaY:function(r){return"deltaY"in r?r.deltaY:"wheelDeltaY"in r?-r.wheelDeltaY:"wheelDelta"in r?-r.wheelDelta:0},deltaZ:0,deltaMode:0}),R_=cn(E_),C_=y({},Zs,{newState:0,oldState:0}),O_=cn(C_),N_=[9,13,27,32],fd=xr&&"CompositionEvent"in window,to=null;xr&&"documentMode"in document&&(to=document.documentMode);var M_=xr&&"TextEvent"in window&&!to,hm=xr&&(!fd||to&&8<to&&11>=to),fm=" ",pm=!1;function mm(r,s){switch(r){case"keyup":return N_.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function gm(r){return r=r.detail,typeof r=="object"&&"data"in r?r.data:null}var qa=!1;function D_(r,s){switch(r){case"compositionend":return gm(s);case"keypress":return s.which!==32?null:(pm=!0,fm);case"textInput":return r=s.data,r===fm&&pm?null:r;default:return null}}function P_(r,s){if(qa)return r==="compositionend"||!fd&&mm(r,s)?(r=om(),Cl=ld=Jr=null,qa=!1,r):null;switch(r){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1<s.char.length)return s.char;if(s.which)return String.fromCharCode(s.which)}return null;case"compositionend":return hm&&s.locale!=="ko"?null:s.data;default:return null}}var L_={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 ym(r){var s=r&&r.nodeName&&r.nodeName.toLowerCase();return s==="input"?!!L_[r.type]:s==="textarea"}function bm(r,s,i,c){Ba?za?za.push(c):za=[c]:Ba=c,s=_c(s,"onChange"),0<s.length&&(i=new Ml("onChange","change",null,i,c),r.push({event:i,listeners:s}))}var no=null,ro=null;function U_(r){eb(r,0)}function Pl(r){var s=Zi(r);if(Xp(s))return r}function vm(r,s){if(r==="change")return s}var wm=!1;if(xr){var pd;if(xr){var md="oninput"in document;if(!md){var xm=document.createElement("div");xm.setAttribute("oninput","return;"),md=typeof xm.oninput=="function"}pd=md}else pd=!1;wm=pd&&(!document.documentMode||9<document.documentMode)}function km(){no&&(no.detachEvent("onpropertychange",_m),ro=no=null)}function _m(r){if(r.propertyName==="value"&&Pl(ro)){var s=[];bm(s,ro,r,ad(r)),im(U_,s)}}function I_(r,s,i){r==="focusin"?(km(),no=s,ro=i,no.attachEvent("onpropertychange",_m)):r==="focusout"&&km()}function B_(r){if(r==="selectionchange"||r==="keyup"||r==="keydown")return Pl(ro)}function z_(r,s){if(r==="click")return Pl(s)}function q_(r,s){if(r==="input"||r==="change")return Pl(s)}function $_(r,s){return r===s&&(r!==0||1/r===1/s)||r!==r&&s!==s}var wn=typeof Object.is=="function"?Object.is:$_;function so(r,s){if(wn(r,s))return!0;if(typeof r!="object"||r===null||typeof s!="object"||s===null)return!1;var i=Object.keys(r),c=Object.keys(s);if(i.length!==c.length)return!1;for(c=0;c<i.length;c++){var f=i[c];if(!qt.call(s,f)||!wn(r[f],s[f]))return!1}return!0}function Sm(r){for(;r&&r.firstChild;)r=r.firstChild;return r}function jm(r,s){var i=Sm(r);r=0;for(var c;i;){if(i.nodeType===3){if(c=r+i.textContent.length,r<=s&&c>=s)return{node:i,offset:s-r};r=c}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=Sm(i)}}function Tm(r,s){return r&&s?r===s?!0:r&&r.nodeType===3?!1:s&&s.nodeType===3?Tm(r,s.parentNode):"contains"in r?r.contains(s):r.compareDocumentPosition?!!(r.compareDocumentPosition(s)&16):!1:!1}function Am(r){r=r!=null&&r.ownerDocument!=null&&r.ownerDocument.defaultView!=null?r.ownerDocument.defaultView:window;for(var s=El(r.document);s instanceof r.HTMLIFrameElement;){try{var i=typeof s.contentWindow.location.href=="string"}catch{i=!1}if(i)r=s.contentWindow;else break;s=El(r.document)}return s}function gd(r){var s=r&&r.nodeName&&r.nodeName.toLowerCase();return s&&(s==="input"&&(r.type==="text"||r.type==="search"||r.type==="tel"||r.type==="url"||r.type==="password")||s==="textarea"||r.contentEditable==="true")}var H_=xr&&"documentMode"in document&&11>=document.documentMode,$a=null,yd=null,ao=null,bd=!1;function Em(r,s,i){var c=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;bd||$a==null||$a!==El(c)||(c=$a,"selectionStart"in c&&gd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focu
vendor: 19,000 bytes, line 9
9sNode:c.focusNode,focusOffset:c.focusOffset}),ao&&so(ao,c)||(ao=c,c=_c(yd,"onSelect"),0<c.length&&(s=new Ml("onSelect","select",null,s,i),r.push({event:s,listeners:c}),s.target=$a)))}function Js(r,s){var i={};return i[r.toLowerCase()]=s.toLowerCase(),i["Webkit"+r]="webkit"+s,i["Moz"+r]="moz"+s,i}var Ha={animationend:Js("Animation","AnimationEnd"),animationiteration:Js("Animation","AnimationIteration"),animationstart:Js("Animation","AnimationStart"),transitionrun:Js("Transition","TransitionRun"),transitionstart:Js("Transition","TransitionStart"),transitioncancel:Js("Transition","TransitionCancel"),transitionend:Js("Transition","TransitionEnd")},vd={},Rm={};xr&&(Rm=document.createElement("div").style,"AnimationEvent"in window||(delete Ha.animationend.animation,delete Ha.animationiteration.animation,delete Ha.animationstart.animation),"TransitionEvent"in window||delete Ha.transitionend.transition);function Qs(r){if(vd[r])return vd[r];if(!Ha[r])return r;var s=Ha[r],i;for(i in s)if(s.hasOwnProperty(i)&&i in Rm)return vd[r]=s[i];return r}var Cm=Qs("animationend"),Om=Qs("animationiteration"),Nm=Qs("animationstart"),V_=Qs("transitionrun"),F_=Qs("transitionstart"),G_=Qs("transitioncancel"),Mm=Qs("transitionend"),Dm=new Map,wd="abort auxClick beforeToggle 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(" ");wd.push("scrollEnd");function Gn(r,s){Dm.set(r,s),Ws(s,[r])}var Ll=typeof reportError=="function"?reportError:function(r){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var s=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof r=="object"&&r!==null&&typeof r.message=="string"?String(r.message):String(r),error:r});if(!window.dispatchEvent(s))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",r);return}console.error(r)},Mn=[],Va=0,xd=0;function Ul(){for(var r=Va,s=xd=Va=0;s<r;){var i=Mn[s];Mn[s++]=null;var c=Mn[s];Mn[s++]=null;var f=Mn[s];Mn[s++]=null;var g=Mn[s];if(Mn[s++]=null,c!==null&&f!==null){var v=c.pending;v===null?f.next=f:(f.next=v.next,v.next=f),c.pending=f}g!==0&&Pm(i,f,g)}}function Il(r,s,i,c){Mn[Va++]=r,Mn[Va++]=s,Mn[Va++]=i,Mn[Va++]=c,xd|=c,r.lanes|=c,r=r.alternate,r!==null&&(r.lanes|=c)}function kd(r,s,i,c){return Il(r,s,i,c),Bl(r)}function Xs(r,s){return Il(r,null,null,s),Bl(r)}function Pm(r,s,i){r.lanes|=i;var c=r.alternate;c!==null&&(c.lanes|=i);for(var f=!1,g=r.return;g!==null;)g.childLanes|=i,c=g.alternate,c!==null&&(c.childLanes|=i),g.tag===22&&(r=g.stateNode,r===null||r._visibility&1||(f=!0)),r=g,g=g.return;return r.tag===3?(g=r.stateNode,f&&s!==null&&(f=31-Jt(i),r=g.hiddenUpdates,c=r[f],c===null?r[f]=[s]:c.push(s),s.lane=i|536870912),g):null}function Bl(r){if(50<Eo)throw Eo=0,Oh=null,Error(a(185));for(var s=r.return;s!==null;)r=s,s=r.return;return r.tag===3?r.stateNode:null}var Fa={};function K_(r,s,i,c){this.tag=r,this.key=i,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=s,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=c,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function xn(r,s,i,c){return new K_(r,s,i,c)}function _d(r){return r=r.prototype,!(!r||!r.isReactComponent)}function kr(r,s){var i=r.alternate;return i===null?(i=xn(r.tag,s,r.key,r.mode),i.elementType=r.elementType,i.type=r.type,i.stateNode=r.stateNode,i.alternate=r,r.alternate=i):(i.pendingProps=s,i.type=r.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=r.flags&65011712,i.childLanes=r.childLanes,i.lanes=r.lanes,i.child=r.child,i.memoizedProps=r.memoizedProps,i.memoizedState=r.memoizedState,i.updateQueue=r.updateQueue,s=r.dependencies,i.dependencies=s===null?null:{lanes:s.lanes,firstContext:s.firstContext},i.sibling=r.sibling,i.index=r.index,i.ref=r.ref,i.refCleanup=r.refCleanup,i}function Lm(r,s){r.flags&=65011714;var i=r.alternate;return i===null?(r.childLanes=0,r.lanes=s,r.child=null,r.subtreeFlags=0,r.memoizedProps=null,r.memoizedState=null,r.updateQueue=null,r.dependencies=null,r.stateNode=null):(r.childLanes=i.childLanes,r.lanes=i.lanes,r.child=i.child,r.subtreeFlags=0,r.deletions=null,r.memoizedProps=i.memoizedProps,r.memoizedState=i.memoizedState,r.updateQueue=i.updateQueue,r.type=i.type,s=i.dependencies,r.dependencies=s===null?null:{lanes:s.lanes,firstContext:s.firstContext}),r}function zl(r,s,i,c,f,g){var v=0;if(c=r,typeof r=="function")_d(r)&&(v=1);else if(typeof r=="string")v=QS(r,i,ee.current)?26:r==="html"||r==="head"||r==="body"?27:5;else e:switch(r){case Q:return r=xn(31,i,s,f),r.elementType=Q,r.lanes=g,r;case A:return ea(i.children,f,g,s);case _:v=8,f|=24;break;case j:return r=xn(12,i,s,f|2),r.elementType=j,r.lanes=g,r;case K:return r=xn(13,i,s,f),r.elementType=K,r.lanes=g,r;case V:return r=xn(19,i,s,f),r.elementType=V,r.lanes=g,r;default:if(typeof r=="object"&&r!==null)switch(r.$$typeof){case R:v=10;break e;case O:v=9;break e;case M:v=11;break e;case $:v=14;break e;case U:v=16,c=null;break e}v=29,i=Error(a(130,r===null?"null":typeof r,"")),c=null}return s=xn(v,i,s,f),s.elementType=r,s.type=c,s.lanes=g,s}function ea(r,s,i,c){return r=xn(7,r,c,s),r.lanes=i,r}function Sd(r,s,i){return r=xn(6,r,null,s),r.lanes=i,r}function Um(r){var s=xn(18,null,null,0);return s.stateNode=r,s}function jd(r,s,i){return s=xn(4,r.children!==null?r.children:[],r.key,s),s.lanes=i,s.stateNode={containerInfo:r.containerInfo,pendingChildren:null,implementation:r.implementation},s}var Im=new WeakMap;function Dn(r,s){if(typeof r=="object"&&r!==null){var i=Im.get(r);return i!==void 0?i:(s={value:r,source:s,stack:Rn(s)},Im.set(r,s),s)}return{value:r,source:s,stack:Rn(s)}}var Ga=[],Ka=0,ql=null,io=0,Pn=[],Ln=0,Qr=null,ar=1,ir="";function _r(r,s){Ga[Ka++]=io,Ga[Ka++]=ql,ql=r,io=s}function Bm(r,s,i){Pn[Ln++]=ar,Pn[Ln++]=ir,Pn[Ln++]=Qr,Qr=r;var c=ar;r=ir;var f=32-Jt(c)-1;c&=~(1<<f),i+=1;var g=32-Jt(s)+f;if(30<g){var v=f-f%5;g=(c&(1<<v)-1).toString(32),c>>=v,f-=v,ar=1<<32-Jt(s)+f|i<<f|c,ir=g+r}else ar=1<<g|i<<f|c,ir=r}function Td(r){r.return!==null&&(_r(r,1),Bm(r,1,0))}function Ad(r){for(;r===ql;)ql=Ga[--Ka],Ga[Ka]=null,io=Ga[--Ka],Ga[Ka]=null;for(;r===Qr;)Qr=Pn[--Ln],Pn[Ln]=null,ir=Pn[--Ln],Pn[Ln]=null,ar=Pn[--Ln],Pn[Ln]=null}function zm(r,s){Pn[Ln++]=ar,Pn[Ln++]=ir,Pn[Ln++]=Qr,ar=s.id,ir=s.overflow,Qr=r}var Ht=null,rt=null,Be=!1,Xr=null,Un=!1,Ed=Error(a(519));function es(r){var s=Error(a(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw oo(Dn(s,r)),Ed}function qm(r){var s=r.stateNode,i=r.type,c=r.memoizedProps;switch(s[$t]=r,s[ln]=c,i){case"dialog":Le("cancel",s),Le("close",s);break;case"iframe":case"object":case"embed":Le("load",s);break;case"video":case"audio":for(i=0;i<Co.length;i++)Le(Co[i],s);break;case"source":Le("error",s);break;case"img":case"image":case"link":Le("error",s),Le("load",s);break;case"details":Le("toggle",s);break;case"input":Le("invalid",s),em(s,c.value,c.defaultValue,c.checked,c.defaultChecked,c.type,c.name,!0);break;case"select":Le("invalid",s);break;case"textarea":Le("invalid",s),nm(s,c.value,c.defaultValue,c.children)}i=c.children,typeof i!="string"&&typeof i!="number"&&typeof i!="bigint"||s.textContent===""+i||c.suppressHydrationWarning===!0||sb(s.textContent,i)?(c.popover!=null&&(Le("beforetoggle",s),Le("toggle",s)),c.onScroll!=null&&Le("scroll",s),c.onScrollEnd!=null&&Le("scrollend",s),c.onClick!=null&&(s.onclick=wr),s=!0):s=!1,s||es(r,!0)}function $m(r){for(Ht=r.return;Ht;)switch(Ht.tag){case 5:case 31:case 13:Un=!1;return;case 27:case 3:Un=!0;return;default:Ht=Ht.return}}function Ya(r){if(r!==Ht)return!1;if(!Be)return $m(r),Be=!0,!1;var s=r.tag,i;if((i=s!==3&&s!==27)&&((i=s===5)&&(i=r.type,i=!(i!=="form"&&i!=="button")||Gh(r.type,r.memoizedProps)),i=!i),i&&rt&&es(r),$m(r),s===13){if(r=r.memoizedState,r=r!==null?r.dehydrated:null,!r)throw Error(a(317));rt=fb(r)}else if(s===31){if(r=r.memoizedState,r=r!==null?r.dehydrated:null,!r)throw Error(a(317));rt=fb(r)}else s===27?(s=rt,ps(r.type)?(r=Jh,Jh=null,rt=r):rt=s):rt=Ht?Bn(r.stateNode.nextSibling):null;return!0}function ta(){rt=Ht=null,Be=!1}function Rd(){var r=Xr;return r!==null&&(fn===null?fn=r:fn.push.apply(fn,r),Xr=null),r}function oo(r){Xr===null?Xr=[r]:Xr.push(r)}var Cd=N(null),na=null,Sr=null;function ts(r,s,i){Z(Cd,s._currentValue),s._currentValue=i}function jr(r){r._currentValue=Cd.current,G(Cd)}function Od(r,s,i){for(;r!==null;){var c=r.alternate;if((r.childLanes&s)!==s?(r.childLanes|=s,c!==null&&(c.childLanes|=s)):c!==null&&(c.childLanes&s)!==s&&(c.childLanes|=s),r===i)break;r=r.return}}function Nd(r,s,i,c){var f=r.child;for(f!==null&&(f.return=r);f!==null;){var g=f.dependencies;if(g!==null){var v=f.child;g=g.firstContext;e:for(;g!==null;){var S=g;g=f;for(var C=0;C<s.length;C++)if(S.context===s[C]){g.lanes|=i,S=g.alternate,S!==null&&(S.lanes|=i),Od(g.return,i,r),c||(v=null);break e}g=S.next}}else if(f.tag===18){if(v=f.return,v===null)throw Error(a(341));v.lanes|=i,g=v.alternate,g!==null&&(g.lanes|=i),Od(v,i,r),v=null}else v=f.child;if(v!==null)v.return=f;else for(v=f;v!==null;){if(v===r){v=null;break}if(f=v.sibling,f!==null){f.return=v.return,v=f;break}v=v.return}f=v}}function Wa(r,s,i,c){r=null;for(var f=s,g=!1;f!==null;){if(!g){if((f.flags&524288)!==0)g=!0;else if((f.flags&262144)!==0)break}if(f.tag===10){var v=f.alternate;if(v===null)throw Error(a(387));if(v=v.memoizedProps,v!==null){var S=f.type;wn(f.pendingProps.value,v.value)||(r!==null?r.push(S):r=[S])}}else if(f===Te.current){if(v=f.alternate,v===null)throw Error(a(387));v.memoizedState.memoizedState!==f.memoizedState.memoizedState&&(r!==null?r.push(Po):r=[Po])}f=f.return}r!==null&&Nd(s,r,i,c),s.flags|=262144}function $l(r){for(r=r.firstContext;r!==null;){if(!wn(r.context._currentValue,r.memoizedValue))return!0;r=r.next}return!1}function ra(r){na=r,Sr=null,r=r.dependencies,r!==null&&(r.firstContext=null)}function Vt(r){return Hm(na,r)}function Hl(r,s){return na===null&&ra(r),Hm(r,s)}function Hm(r,s){var i=s._currentValue;if(s={context:s,memoizedValue:i,next:null},Sr===null){if(r===null)throw Error(a(308));Sr=s,r.dependencies={lanes:0,firstContext:s},r.flags|=524288}else Sr=Sr.next=s;return i}var Y_=typeof AbortController<"u"?AbortController:function(){var r=[],s=this.signal={aborted:!1,addEventListener:function(i,c){r.push(c)}};this.abort=function(){s.aborted=!0,r.forEach(function(i){return i()})}},W_=t.unstable_scheduleCallback,Z_=t.unstable_NormalPriority,wt={$$typeof:R,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Md(){return{controller:new Y_,data:new Map,refCount:0}}function lo(r){r.refCount--,r.refCount===0&&W_(Z_,function(){r.controller.abort()})}var co=null,Dd=0,Za=0,Ja=null;function J_(r,s){if(co===null){var i=co=[];Dd=0,Za=Uh(),Ja={status:"pending",value:void 0,then:function(c){i.push(c)}}}return Dd++,s.then(Vm,Vm),s}function Vm(){if(--Dd===0&&co!==null){Ja!==null&&(Ja.status="fulfilled");var r=co;co=null,Za=0,Ja=null;for(var s=0;s<r.length;s++)(0,r[s])()}}function Q_(r,s){var i=[],c={status:"pending",value:null,reason:null,then:function(f){i.push(f)}};return r.then(function(){c.status="fulfilled",c.value=s;for(var f=0;f<i.length;f++)(0,i[f])(s)},function(f){for(c.status="rejected",c.reason=f,f=0;f<i.length;f++)(0,i[f])(void 0)}),c}var Fm=L.S;L.S=function(r,s){Ey=Dt(),typeof s=="object"&&s!==null&&typeof s.then=="function"&&J_(r,s),Fm!==null&&Fm(r,s)};var sa=N(null);function Pd(){var r=sa.current;return r!==null?r:Xe.pooledCache}function Vl(r,s){s===null?Z(sa,sa.current):Z(sa,s.pool)}function Gm(){var r=Pd();return r===null?null:{parent:wt._currentValue,pool:r}}var Qa=Error(a(460)),Ld=Error(a(474)),Fl=Error(a(542)),Gl={then:function(){}};function Km(r){return r=r.status,r==="fulfilled"||r==="rejected"}function Ym(r,s,i){switch(i=r[i],i===void 0?r.push(s):i!==s&&(s.then(wr,wr),s=i),s.status){case"fulfilled":return s.value;case"rejected":throw r=s.reason,Zm(r),r;default:if(typeof s.status=="string")s.then(wr,wr);else{if(r=Xe,r!==null&&100<r.shellSuspendCounter)throw Error(a(482));r=s,r.status="pending",r.then(function(c){if(s.status==="pending"){var f=s;f.status="fulfilled",f.value=c}},function(c){if(s.status==="pending"){var f=s;f.status="rejected",f.reason=c}})}switch(s.status){case"fulfilled":return s.value;case"rejected":throw r=s.reason,Zm(r),r}throw ia=s,Qa}}function aa(r){try{var s=r._init;return s(r._payload)}catch(i){throw i!==null&&typeof i=="object"&&typeof i.then=="function"?(ia=i,Qa):i}}var ia=null;function Wm(){if(ia===null)throw Error(a(459));var r=ia;return ia=null,r}function Zm(r){if(r===Qa||r===Fl)throw Error(a(483))}var Xa=null,uo=0;function Kl(r){var s=uo;return uo+=1,Xa===null&&(Xa=[]),Ym(Xa,r,s)}function ho(r,s){s=s.props.ref,r.ref=s!==void 0?s:null}function Yl(r,s){throw s.$$typeof===w?Error(a(525)):(r=Object.prototype.toString.call(s),Error(a(31,r==="[object Object]"?"object with keys {"+Object.keys(s).join(", ")+"}":r)))}function Jm(r){function s(P,D){if(r){var B=P.deletions;B===null?(P.deletions=[D],P.flags|=16):B.push(D)}}function i(P,D){if(!r)return null;for(;D!==null;)s(P,D),D=D.sibling;return null}function c(P){for(var D=new Map;P!==null;)P.key!==null?D.set(P.key,P):D.set(P.index,P),P=P.sibling;return D}function f(P,D){return P=kr(P,D),P.index=0,P.sibling=null,P}function g(P,D,B){return P.index=B,r?(B=P.alternate,B!==null?(B=B.index,B<D?(P.flags|=67108866,D):B):(P.flags|=67108866,D)):(P.flags|=1048576,D)}function v(P){return r&&P.alternate===null&&(P.flags|=67108866),P}function S(P,D,B,W){return D===null||D.tag!==6?(D=Sd(B,P.mode,W),D.return=P,D):(D=f(D,B),D.return=P,D)}function C(P,D,B,W){var be=B.type;return be===A?F(P,D,B.props.children,W,B.key):D!==null&&(D.elementType===be||typeof be=="object"&&be!==null&&be.$$typeof===U&&aa(be)===D.type)?(D=f(D,B.props),ho(D,B),D.return=P,D):(D=zl(B.type,B.key,B.props,null,P.mode,W),ho(D,B),D.return=P,D)}function z(P,D,B,W){return D===null||D.tag!==4||D.stateNode.containerInfo!==B.containerInfo||D.stateNode.implementation!==B.implementation?(D=jd(B,P.mode,W),D.return=P,D):(D=f(D,B.children||[]),D.return=P,D)}function F(P,D,B,W,be){return D===null||D.tag!==7?(D=ea(B,P.mode,W,be),D.return=P,D):(D=f(D,B),D.return=P,D)}function J(P,D,B){if(typeof D=="string"&&D!==""||typeof D=="number"||typeof D=="bigint")return D=Sd(""+D,P.mode,B),D.return=P,D;if(typeof D=="object"&&D!==null){switch(D.$$typeof){case x:return B=zl(D.type,D.key,D.props,null,P.mode,B),ho(B,D),B.return=P,B;case k:return D=jd(D,P.mode,B),D.return=P,D;case U:return D=aa(D),J(P,D,B)}if(Ce(D)||ye(D))return D=ea(D,P.mode,B,null),D.return=P,D;if(typeof D.then=="function")return J(P,Kl(D),B);if(D.$$typeof===R)return J(P,Hl(P,D),B);Yl(P,D)}return null}function q(P,D,B,W){var be=D!==null?D.key:null;if(typeof B=="string"&&B!==""||typeof B=="number"||typeof B=="bigint")return be!==null?null:S(P,D,""+B,W);if(typeof B=="object"&&B!==null){switch(B.$$typeof){case x:return B.key===be?C(P,D,B,W):null;case k:return B.key===be?z(P,D,B,W):null;case U:return B=aa(B),q(P,D,B,W)}if(Ce(B)||ye(B))return be!==null?null:F(P,D,B,W,null);if(typeof B.then=="function")return q(P,D,Kl(B),W);if(B.$$typeof===R)return q(P,D,Hl(P,B),W);Yl(P,B)}return null}function H(P,D,B,W,be){if(typeof W=="string"&&W!==""||typeof W=="number"||typeof W=="bigint")return P=P.get(B)||null,S(D,P,""+W,be);if(typeof W=="object"&&W!==null){switch(W.$$typeof){case x:return P=P.get(W.key===null?B:W.key)||null,C(D,P,W,be);case k:return P=P.get(W.key===null?B:W.key)||null,z(D,P,W,be);case U:return W=aa(W),H(P,D,B,W,be)}if(Ce(W)||ye(W))return P=P.get(B)||null,F(D,P,W,be,null);if(typeof W.then=="function")return H(P,D,B,Kl(W),be);if(W.$$typeof===R)return H(P,D,B,Hl(D,W),be);Yl(D,W)}return null}function ue(P,D,B,W){for(var be=null,$e=null,me=D,Ne=D=0,Ie=null;me!==null&&Ne<B.length;Ne++){me.index>Ne?(Ie=me,me=null):Ie=me.sibling;var He=q(P,me,B[Ne],W);if(He===null){me===null&&(me=Ie);break}r&&me&&He.alternate===null&&s(P,me),D=g(He,D,Ne),$e===null?be=He:$e.sibling=He,$e=He,me=Ie}if(Ne===B.length)return i(P,me),Be&&_r(P,Ne),be;if(me===null){for(;Ne<B.length;Ne++)me=J(P,B[Ne],W),me!==null&&(D=g(me,D,Ne),$e===null?be=me:$e.sibling=me,$e=me);return Be&&_r(P,Ne),be}for(me=c(me);Ne<B.length;Ne++)Ie=H(me,P,Ne,B[Ne],W),Ie!==null&&(r&&Ie.alternate!==null&&me.delete(Ie.key===null?Ne:Ie.key),D=g(Ie,D,Ne),$e===null?be=Ie:$e.sibling=Ie,$e=Ie);return r&&me.forEach(function(vs){return s(P,vs)}),Be&&_r(P,Ne),be}function we(P,D,B,W){if(B==null)throw Error(a(151));for(var be=null,$e=null,me=D,Ne=D=0,Ie=null,He=B.next();me!==null&&!He.done;Ne++,He=B.next()){me.index>Ne?(Ie=me,me=null):Ie=me.sibling;var vs=q(P,me,He.value,W);if(vs===null){me===null&&(me=Ie);break}r&&me&&vs.alternate===null&&s(P,me),D=g(vs,D,Ne),$e===null?be=vs:$e.sibling=vs,$e=vs,me=Ie}if(He.done)return i(P,me),Be&&_r(P,Ne),be;if(me===null){for(;!He.done;Ne++,He=B.next())He=J(P,He.value,W),He!==null&&(D=g(He,D,Ne),$e===null?be=He:$e.sibling=He,$e=He);return Be&&_r(P,Ne),be}for(me=c(me);!He.done;Ne++,He=B.next())He=H(me,P,Ne,He.value,W),He!==null&&(r&&He.alternate!==null&&me.delete(He.key===null?Ne:He.key),D=g(He,D,Ne),$e===null?be=He:$e.sibling=He,$e=He);return r&&me.forEach(function(cj){return s(P,cj)}),Be&&_r(P,Ne),be}function Qe(P,D,B,W){if(typeof B=="object"&&B!==null&&B.type===A&&B.key===null&&(B=B.props.children),typeof B=="object"&&B!==null){switch(B.$$typeof){case x:e:{for(var be=B.key;D!==null;){if(D.key===be){if(be=B.type,be===A){if(D.tag===7){i(P,D.sibling),W=f(D,B.props.children),W.return=P,P=W;break e}}else if(D.elementType===be||typeof be=="object"&&be!==null&&be.$$typeof===U&&aa(be)===D.type){i(P,D.sibling),W=f(D,B.props),ho(W,B),W.return=P,P=W;break e}i(P,D);break}else s(P,D);D=D.sibling}B.type===A?(W=ea(B.props.children,P.mode,W,B.key),W.return=P,P=W):(W=zl(B.type,B.key,B.props,null,P.mode,W),ho(W,B),W.return=P,P=W)}return v(P);case k:e:{for(be=B.key;D!==null;){if(D.key===be)if(D.tag===4&&D.stateNode.containerInfo===B.containerInfo&&D.stateNode.implementation===B.implementation){i(P,D.sibling),W=f(D,B.children||[]),W.return=P,P=W;break e}else{i(P,D);break}else s(P,D);D=D.sibling}W=jd(B,P.mode,W),W.return=P,P=W}return v(P);case U:return B=aa(B),Qe(P,D,B,W)}if(Ce(B))return ue(P,D,B,W);if(ye(B)){if(be=ye(B),typeof be!="function")throw Error(a(150));return B=be.call(B),we(P,D,B,W)}if(typeof B.then=="function")return Qe(P,D,Kl(B),W);if(B.$$typeof===R)return Qe(P,D,Hl(P,B),W);Yl(P,B)}
vendor: 1,601 bytes, line 9
9return typeof B=="string"&&B!==""||typeof B=="number"||typeof B=="bigint"?(B=""+B,D!==null&&D.tag===6?(i(P,D.sibling),W=f(D,B),W.return=P,P=W):(i(P,D),W=Sd(B,P.mode,W),W.return=P,P=W),v(P)):i(P,D)}return function(P,D,B,W){try{uo=0;var be=Qe(P,D,B,W);return Xa=null,be}catch(me){if(me===Qa||me===Fl)throw me;var $e=xn(29,me,null,P.mode);return $e.lanes=W,$e.return=P,$e}}}var oa=Jm(!0),Qm=Jm(!1),ns=!1;function Ud(r){r.updateQueue={baseState:r.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Id(r,s){r=r.updateQueue,s.updateQueue===r&&(s.updateQueue={baseState:r.baseState,firstBaseUpdate:r.firstBaseUpdate,lastBaseUpdate:r.lastBaseUpdate,shared:r.shared,callbacks:null})}function rs(r){return{lane:r,tag:0,payload:null,callback:null,next:null}}function ss(r,s,i){var c=r.updateQueue;if(c===null)return null;if(c=c.shared,(Ge&2)!==0){var f=c.pending;return f===null?s.next=s:(s.next=f.next,f.next=s),c.pending=s,s=Bl(r),Pm(r,null,i),s}return Il(r,c,s,i),Bl(r)}function fo(r,s,i){if(s=s.updateQueue,s!==null&&(s=s.shared,(i&4194048)!==0)){var c=s.lanes;c&=r.pendingLanes,i|=c,s.lanes=i,an(r,i)}}function Bd(r,s){var i=r.updateQueue,c=r.alternate;if(c!==null&&(c=c.updateQueue,i===c)){var f=null,g=null;if(i=i.firstBaseUpdate,i!==null){do{var v={lane:i.lane,tag:i.tag,payload:i.payload,callback:null,next:null};g===null?f=g=v:g=g.next=v,i=i.next}while(i!==null);g===null?f=g=s:g=g.next=s}else f=g=s;i={baseState:c.baseState,firstBaseUpdate:f,lastBaseUpdate:g,shared:c.shared,callbacks:c.callbacks},r.updateQueue=i;return}
vendor: 6,535 bytes, line 9
9r=i.lastBaseUpdate,r===null?i.firstBaseUpdate=s:r.next=s,i.lastBaseUpdate=s}var zd=!1;function po(){if(zd){var r=Ja;if(r!==null)throw r}}function mo(r,s,i,c){zd=!1;var f=r.updateQueue;ns=!1;var g=f.firstBaseUpdate,v=f.lastBaseUpdate,S=f.shared.pending;if(S!==null){f.shared.pending=null;var C=S,z=C.next;C.next=null,v===null?g=z:v.next=z,v=C;var F=r.alternate;F!==null&&(F=F.updateQueue,S=F.lastBaseUpdate,S!==v&&(S===null?F.firstBaseUpdate=z:S.next=z,F.lastBaseUpdate=C))}if(g!==null){var J=f.baseState;v=0,F=z=C=null,S=g;do{var q=S.lane&-536870913,H=q!==S.lane;if(H?(Ue&q)===q:(c&q)===q){q!==0&&q===Za&&(zd=!0),F!==null&&(F=F.next={lane:0,tag:S.tag,payload:S.payload,callback:null,next:null});e:{var ue=r,we=S;q=s;var Qe=i;switch(we.tag){case 1:if(ue=we.payload,typeof ue=="function"){J=ue.call(Qe,J,q);break e}J=ue;break e;case 3:ue.flags=ue.flags&-65537|128;case 0:if(ue=we.payload,q=typeof ue=="function"?ue.call(Qe,J,q):ue,q==null)break e;J=y({},J,q);break e;case 2:ns=!0}}q=S.callback,q!==null&&(r.flags|=64,H&&(r.flags|=8192),H=f.callbacks,H===null?f.callbacks=[q]:H.push(q))}else H={lane:q,tag:S.tag,payload:S.payload,callback:S.callback,next:null},F===null?(z=F=H,C=J):F=F.next=H,v|=q;if(S=S.next,S===null){if(S=f.shared.pending,S===null)break;H=S,S=H.next,H.next=null,f.lastBaseUpdate=H,f.shared.pending=null}}while(!0);F===null&&(C=J),f.baseState=C,f.firstBaseUpdate=z,f.lastBaseUpdate=F,g===null&&(f.shared.lanes=0),cs|=v,r.lanes=v,r.memoizedState=J}}function Xm(r,s){if(typeof r!="function")throw Error(a(191,r));r.call(s)}function eg(r,s){var i=r.callbacks;if(i!==null)for(r.callbacks=null,r=0;r<i.length;r++)Xm(i[r],s)}var ei=N(null),Wl=N(0);function tg(r,s){r=Dr,Z(Wl,r),Z(ei,s),Dr=r|s.baseLanes}function qd(){Z(Wl,Dr),Z(ei,ei.current)}function $d(){Dr=Wl.current,G(ei),G(Wl)}var kn=N(null),In=null;function as(r){var s=r.alternate;Z(yt,yt.current&1),Z(kn,r),In===null&&(s===null||ei.current!==null||s.memoizedState!==null)&&(In=r)}function Hd(r){Z(yt,yt.current),Z(kn,r),In===null&&(In=r)}function ng(r){r.tag===22?(Z(yt,yt.current),Z(kn,r),In===null&&(In=r)):is()}function is(){Z(yt,yt.current),Z(kn,kn.current)}function _n(r){G(kn),In===r&&(In=null),G(yt)}var yt=N(0);function Zl(r){for(var s=r;s!==null;){if(s.tag===13){var i=s.memoizedState;if(i!==null&&(i=i.dehydrated,i===null||Wh(i)||Zh(i)))return s}else if(s.tag===19&&(s.memoizedProps.revealOrder==="forwards"||s.memoizedProps.revealOrder==="backwards"||s.memoizedProps.revealOrder==="unstable_legacy-backwards"||s.memoizedProps.revealOrder==="together")){if((s.flags&128)!==0)return s}else if(s.child!==null){s.child.return=s,s=s.child;continue}if(s===r)break;for(;s.sibling===null;){if(s.return===null||s.return===r)return null;s=s.return}s.sibling.return=s.return,s=s.sibling}return null}var Tr=0,Oe=null,Ze=null,xt=null,Jl=!1,ti=!1,la=!1,Ql=0,go=0,ni=null,X_=0;function pt(){throw Error(a(321))}function Vd(r,s){if(s===null)return!1;for(var i=0;i<s.length&&i<r.length;i++)if(!wn(r[i],s[i]))return!1;return!0}function Fd(r,s,i,c,f,g){return Tr=g,Oe=s,s.memoizedState=null,s.updateQueue=null,s.lanes=0,L.H=r===null||r.memoizedState===null?Bg:ih,la=!1,g=i(c,f),la=!1,ti&&(g=sg(s,i,c,f)),rg(r),g}function rg(r){L.H=vo;var s=Ze!==null&&Ze.next!==null;if(Tr=0,xt=Ze=Oe=null,Jl=!1,go=0,ni=null,s)throw Error(a(300));r===null||kt||(r=r.dependencies,r!==null&&$l(r)&&(kt=!0))}function sg(r,s,i,c){Oe=r;var f=0;do{if(ti&&(ni=null),go=0,ti=!1,25<=f)throw Error(a(301));if(f+=1,xt=Ze=null,r.updateQueue!=null){var g=r.updateQueue;g.lastEffect=null,g.events=null,g.stores=null,g.memoCache!=null&&(g.memoCache.index=0)}L.H=zg,g=s(i,c)}while(ti);return g}function eS(){var r=L.H,s=r.useState()[0];return s=typeof s.then=="function"?yo(s):s,r=r.useState()[0],(Ze!==null?Ze.memoizedState:null)!==r&&(Oe.flags|=1024),s}function Gd(){var r=Ql!==0;return Ql=0,r}function Kd(r,s,i){s.updateQueue=r.updateQueue,s.flags&=-2053,r.lanes&=~i}function Yd(r){if(Jl){for(r=r.memoizedState;r!==null;){var s=r.queue;s!==null&&(s.pending=null),r=r.next}Jl=!1}Tr=0,xt=Ze=Oe=null,ti=!1,go=Ql=0,ni=null}function tn(){var r={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return xt===null?Oe.memoizedState=xt=r:xt=xt.next=r,xt}function bt(){if(Ze===null){var r=Oe.alternate;r=r!==null?r.memoizedState:null}else r=Ze.next;var s=xt===null?Oe.memoizedState:xt.next;if(s!==null)xt=s,Ze=r;else{if(r===null)throw Oe.alternate===null?Error(a(467)):Error(a(310));Ze=r,r={memoizedState:Ze.memoizedState,baseState:Ze.baseState,baseQueue:Ze.baseQueue,queue:Ze.queue,next:null},xt===null?Oe.memoizedState=xt=r:xt=xt.next=r}return xt}function Xl(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function yo(r){var s=go;return go+=1,ni===null&&(ni=[]),r=Ym(ni,r,s),s=Oe,(xt===null?s.memoizedState:xt.next)===null&&(s=s.alternate,L.H=s===null||s.memoizedState===null?Bg:ih),r}function ec(r){if(r!==null&&typeof r=="object"){if(typeof r.then=="function")return yo(r);if(r.$$typeof===R)return Vt(r)}throw Error(a(438,String(r)))}function Wd(r){var s=null,i=Oe.updateQueue;if(i!==null&&(s=i.memoCache),s==null){var c=Oe.alternate;c!==null&&(c=c.updateQueue,c!==null&&(c=c.memoCache,c!=null&&(s={data:c.data.map(function(f){return f.slice()}),index:0})))}if(s==null&&(s={data:[],index:0}),i===null&&(i=Xl(),Oe.updateQueue=i),i.memoCache=s,i=s.data[s.index],i===void 0)for(i=s.data[s.index]=Array(r),c=0;c<r;c++)i[c]=ae;return s.index++,i}function Ar(r,s){return typeof s=="function"?s(r):s}function tc(r){var s=bt();return Zd(s,Ze,r)}function Zd(r,s,i){var c=r.queue;if(c===null)throw Error(a(311));c.lastRenderedReducer=i;var f=r.baseQueue,g=c.pending;if(g!==null){if(f!==null){var v=f.next;f.next=g.next,g.next=v}s.baseQueue=f=g,c.pending=null}if(g=r.baseState,f===null)r.memoizedState=g;else{s=f.next;var S=v=null,C=null,z=s,F=!1;do{var J=z.lane&-536870913;if(J!==z.lane?(Ue&J)===J:(Tr&J)===J){var q=z.revertLane;if(q===0)C!==null&&(C=C.next={lane:0,revertLane:0,gesture:null,action:z.action,hasEagerState:z.hasEagerState,eagerState:z.eagerState,next:null}),J===Za&&(F=!0);else if((Tr&q)===q){z=z.next,q===Za&&(F=!0);continue}else J={lane:0,revertLane:z.revertLane,gesture:null,action:z.action,hasEagerState:z.hasEagerState,eagerState:z.eagerState,next:null},C===null?(S=C=J,v=g):C=C.next=J,Oe.lanes|=q,cs|=q;J=z.action,la&&i(g,J),g=z.hasEagerState?z.eagerState:i(g,J)}else q={lane:J,revertLane:z.revertLane,gesture:z.gesture,action:z.action,hasEagerState:z.hasEagerState,eagerState:z.eagerState,next:null},C===null?(S=C=q,v=g):C=C.next=q,Oe.lanes|=J,cs|=J;z=z.next}
vendor: 5,714 bytes, line 9
9while(z!==null&&z!==s);if(C===null?v=g:C.next=S,!wn(g,r.memoizedState)&&(kt=!0,F&&(i=Ja,i!==null)))throw i;r.memoizedState=g,r.baseState=v,r.baseQueue=C,c.lastRenderedState=g}return f===null&&(c.lanes=0),[r.memoizedState,c.dispatch]}function Jd(r){var s=bt(),i=s.queue;if(i===null)throw Error(a(311));i.lastRenderedReducer=r;var c=i.dispatch,f=i.pending,g=s.memoizedState;if(f!==null){i.pending=null;var v=f=f.next;do g=r(g,v.action),v=v.next;while(v!==f);wn(g,s.memoizedState)||(kt=!0),s.memoizedState=g,s.baseQueue===null&&(s.baseState=g),i.lastRenderedState=g}return[g,c]}function ag(r,s,i){var c=Oe,f=bt(),g=Be;if(g){if(i===void 0)throw Error(a(407));i=i()}else i=s();var v=!wn((Ze||f).memoizedState,i);if(v&&(f.memoizedState=i,kt=!0),f=f.queue,eh(lg.bind(null,c,f,r),[r]),f.getSnapshot!==s||v||xt!==null&&xt.memoizedState.tag&1){if(c.flags|=2048,ri(9,{destroy:void 0},og.bind(null,c,f,i,s),null),Xe===null)throw Error(a(349));g||(Tr&127)!==0||ig(c,s,i)}return i}function ig(r,s,i){r.flags|=16384,r={getSnapshot:s,value:i},s=Oe.updateQueue,s===null?(s=Xl(),Oe.updateQueue=s,s.stores=[r]):(i=s.stores,i===null?s.stores=[r]:i.push(r))}function og(r,s,i,c){s.value=i,s.getSnapshot=c,cg(s)&&ug(r)}function lg(r,s,i){return i(function(){cg(s)&&ug(r)})}function cg(r){var s=r.getSnapshot;r=r.value;try{var i=s();return!wn(r,i)}catch{return!0}}function ug(r){var s=Xs(r,2);s!==null&&pn(s,r,2)}function Qd(r){var s=tn();if(typeof r=="function"){var i=r;if(r=i(),la){Vn(!0);try{i()}finally{Vn(!1)}}}return s.memoizedState=s.baseState=r,s.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ar,lastRenderedState:r},s}function dg(r,s,i,c){return r.baseState=i,Zd(r,Ze,typeof c=="function"?c:Ar)}function tS(r,s,i,c,f){if(sc(r))throw Error(a(485));if(r=s.action,r!==null){var g={payload:f,action:r,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(v){g.listeners.push(v)}};L.T!==null?i(!0):g.isTransition=!1,c(g),i=s.pending,i===null?(g.next=s.pending=g,hg(s,g)):(g.next=i.next,s.pending=i.next=g)}}function hg(r,s){var i=s.action,c=s.payload,f=r.state;if(s.isTransition){var g=L.T,v={};L.T=v;try{var S=i(f,c),C=L.S;C!==null&&C(v,S),fg(r,s,S)}catch(z){Xd(r,s,z)}finally{g!==null&&v.types!==null&&(g.types=v.types),L.T=g}}else try{g=i(f,c),fg(r,s,g)}catch(z){Xd(r,s,z)}}function fg(r,s,i){i!==null&&typeof i=="object"&&typeof i.then=="function"?i.then(function(c){pg(r,s,c)},function(c){return Xd(r,s,c)}):pg(r,s,i)}function pg(r,s,i){s.status="fulfilled",s.value=i,mg(s),r.state=i,s=r.pending,s!==null&&(i=s.next,i===s?r.pending=null:(i=i.next,s.next=i,hg(r,i)))}function Xd(r,s,i){var c=r.pending;if(r.pending=null,c!==null){c=c.next;do s.status="rejected",s.reason=i,mg(s),s=s.next;while(s!==c)}r.action=null}function mg(r){r=r.listeners;for(var s=0;s<r.length;s++)(0,r[s])()}function gg(r,s){return s}function yg(r,s){if(Be){var i=Xe.formState;if(i!==null){e:{var c=Oe;if(Be){if(rt){t:{for(var f=rt,g=Un;f.nodeType!==8;){if(!g){f=null;break t}if(f=Bn(f.nextSibling),f===null){f=null;break t}}g=f.data,f=g==="F!"||g==="F"?f:null}if(f){rt=Bn(f.nextSibling),c=f.data==="F!";break e}}es(c)}c=!1}c&&(s=i[0])}}return i=tn(),i.memoizedState=i.baseState=s,c={pending:null,lanes:0,dispatch:null,lastRenderedReducer:gg,lastRenderedState:s},i.queue=c,i=Lg.bind(null,Oe,c),c.dispatch=i,c=Qd(!1),g=ah.bind(null,Oe,!1,c.queue),c=tn(),f={state:s,dispatch:null,action:r,pending:null},c.queue=f,i=tS.bind(null,Oe,f,g,i),f.dispatch=i,c.memoizedState=r,[s,i,!1]}function bg(r){var s=bt();return vg(s,Ze,r)}function vg(r,s,i){if(s=Zd(r,s,gg)[0],r=tc(Ar)[0],typeof s=="object"&&s!==null&&typeof s.then=="function")try{var c=yo(s)}catch(v){throw v===Qa?Fl:v}else c=s;s=bt();var f=s.queue,g=f.dispatch;return i!==s.memoizedState&&(Oe.flags|=2048,ri(9,{destroy:void 0},nS.bind(null,f,i),null)),[c,g,r]}function nS(r,s){r.action=s}function wg(r){var s=bt(),i=Ze;if(i!==null)return vg(s,i,r);bt(),s=s.memoizedState,i=bt();var c=i.queue.dispatch;return i.memoizedState=r,[s,c,!1]}function ri(r,s,i,c){return r={tag:r,create:i,deps:c,inst:s,next:null},s=Oe.updateQueue,s===null&&(s=Xl(),Oe.updateQueue=s),i=s.lastEffect,i===null?s.lastEffect=r.next=r:(c=i.next,i.next=r,r.next=c,s.lastEffect=r),r}function xg(){return bt().memoizedState}function nc(r,s,i,c){var f=tn();Oe.flags|=r,f.memoizedState=ri(1|s,{destroy:void 0},i,c===void 0?null:c)}function rc(r,s,i,c){var f=bt();c=c===void 0?null:c;var g=f.memoizedState.inst;Ze!==null&&c!==null&&Vd(c,Ze.memoizedState.deps)?f.memoizedState=ri(s,g,i,c):(Oe.flags|=r,f.memoizedState=ri(1|s,g,i,c))}function kg(r,s){nc(8390656,8,r,s)}function eh(r,s){rc(2048,8,r,s)}function rS(r){Oe.flags|=4;var s=Oe.updateQueue;if(s===null)s=Xl(),Oe.updateQueue=s,s.events=[r];else{var i=s.events;i===null?s.events=[r]:i.push(r)}}function _g(r){var s=bt().memoizedState;return rS({ref:s,nextImpl:r}),function(){if((Ge&2)!==0)throw Error(a(440));return s.impl.apply(void 0,arguments)}}function Sg(r,s){return rc(4,2,r,s)}function jg(r,s){return rc(4,4,r,s)}function Tg(r,s){if(typeof s=="function"){r=r();var i=s(r);return function(){typeof i=="function"?i():s(null)}}if(s!=null)return r=r(),s.current=r,function(){s.current=null}}function Ag(r,s,i){i=i!=null?i.concat([r]):null,rc(4,4,Tg.bind(null,s,r),i)}function th(){}function Eg(r,s){var i=bt();s=s===void 0?null:s;var c=i.memoizedState;return s!==null&&Vd(s,c[1])?c[0]:(i.memoizedState=[r,s],r)}function Rg(r,s){var i=bt();s=s===void 0?null:s;var c=i.memoizedState;if(s!==null&&Vd(s,c[1]))return c[0];if(c=r(),la){Vn(!0);try{r()}finally{Vn(!1)}}return i.memoizedState=[c,s],c}function nh(r,s,i){return i===void 0||(Tr&1073741824)!==0&&(Ue&261930)===0?r.memoizedState=s:(r.memoizedState=i,r=Cy(),Oe.lanes|=r,cs|
vendor: 5,409 bytes, line 9
9=r,i)}function Cg(r,s,i,c){return wn(i,s)?i:ei.current!==null?(r=nh(r,i,c),wn(r,s)||(kt=!0),r):(Tr&42)===0||(Tr&1073741824)!==0&&(Ue&261930)===0?(kt=!0,r.memoizedState=i):(r=Cy(),Oe.lanes|=r,cs|=r,s)}function Og(r,s,i,c,f){var g=Y.p;Y.p=g!==0&&8>g?g:8;var v=L.T,S={};L.T=S,ah(r,!1,s,i);try{var C=f(),z=L.S;if(z!==null&&z(S,C),C!==null&&typeof C=="object"&&typeof C.then=="function"){var F=Q_(C,c);bo(r,s,F,Tn(r))}else bo(r,s,c,Tn(r))}catch(J){bo(r,s,{then:function(){},status:"rejected",reason:J},Tn())}finally{Y.p=g,v!==null&&S.types!==null&&(v.types=S.types),L.T=v}}function sS(){}function rh(r,s,i,c){if(r.tag!==5)throw Error(a(476));var f=Ng(r).queue;Og(r,f,s,ie,i===null?sS:function(){return Mg(r),i(c)})}function Ng(r){var s=r.memoizedState;if(s!==null)return s;s={memoizedState:ie,baseState:ie,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ar,lastRenderedState:ie},next:null};var i={};return s.next={memoizedState:i,baseState:i,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ar,lastRenderedState:i},next:null},r.memoizedState=s,r=r.alternate,r!==null&&(r.memoizedState=s),s}function Mg(r){var s=Ng(r);s.next===null&&(s=r.alternate.memoizedState),bo(r,s.next.queue,{},Tn())}function sh(){return Vt(Po)}function Dg(){return bt().memoizedState}function Pg(){return bt().memoizedState}function aS(r){for(var s=r.return;s!==null;){switch(s.tag){case 24:case 3:var i=Tn();r=rs(i);var c=ss(s,r,i);c!==null&&(pn(c,s,i),fo(c,s,i)),s={cache:Md()},r.payload=s;return}s=s.return}}function iS(r,s,i){var c=Tn();i={lane:c,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},sc(r)?Ug(s,i):(i=kd(r,s,i,c),i!==null&&(pn(i,r,c),Ig(i,s,c)))}function Lg(r,s,i){var c=Tn();bo(r,s,i,c)}function bo(r,s,i,c){var f={lane:c,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null};if(sc(r))Ug(s,f);else{var g=r.alternate;if(r.lanes===0&&(g===null||g.lanes===0)&&(g=s.lastRenderedReducer,g!==null))try{var v=s.lastRenderedState,S=g(v,i);if(f.hasEagerState=!0,f.eagerState=S,wn(S,v))return Il(r,s,f,0),Xe===null&&Ul(),!1}catch{}if(i=kd(r,s,f,c),i!==null)return pn(i,r,c),Ig(i,s,c),!0}return!1}function ah(r,s,i,c){if(c={lane:2,revertLane:Uh(),gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},sc(r)){if(s)throw Error(a(479))}else s=kd(r,i,c,2),s!==null&&pn(s,r,2)}function sc(r){var s=r.alternate;return r===Oe||s!==null&&s===Oe}function Ug(r,s){ti=Jl=!0;var i=r.pending;i===null?s.next=s:(s.next=i.next,i.next=s),r.pending=s}function Ig(r,s,i){if((i&4194048)!==0){var c=s.lanes;c&=r.pendingLanes,i|=c,s.lanes=i,an(r,i)}}var vo={readContext:Vt,use:ec,useCallback:pt,useContext:pt,useEffect:pt,useImperativeHandle:pt,useLayoutEffect:pt,useInsertionEffect:pt,useMemo:pt,useReducer:pt,useRef:pt,useState:pt,useDebugValue:pt,useDeferredValue:pt,useTransition:pt,useSyncExternalStore:pt,useId:pt,useHostTransitionStatus:pt,useFormState:pt,useActionState:pt,useOptimistic:pt,useMemoCache:pt,useCacheRefresh:pt};vo.useEffectEvent=pt;var Bg={readContext:Vt,use:ec,useCallback:function(r,s){return tn().memoizedState=[r,s===void 0?null:s],r},useContext:Vt,useEffect:kg,useImperativeHandle:function(r,s,i){i=i!=null?i.concat([r]):null,nc(4194308,4,Tg.bind(null,s,r),i)},useLayoutEffect:function(r,s){return nc(4194308,4,r,s)},useInsertionEffect:function(r,s){nc(4,2,r,s)},useMemo:function(r,s){var i=tn();s=s===void 0?null:s;var c=r();if(la){Vn(!0);try{r()}finally{Vn(!1)}}return i.memoizedState=[c,s],c},useReducer:function(r,s,i){var c=tn();if(i!==void 0){var f=i(s);if(la){Vn(!0);try{i(s)}finally{Vn(!1)}}}else f=s;return c.memoizedState=c.baseState=f,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:r,lastRenderedState:f},c.queue=r,r=r.dispatch=iS.bind(null,Oe,r),[c.memoizedState,r]},useRef:function(r){var s=tn();return r={current:r},s.memoizedState=r},useState:function(r){r=Qd(r);var s=r.queue,i=Lg.bind(null,Oe,s);return s.dispatch=i,[r.memoizedState,i]},useDebugValue:th,useDeferredValue:function(r,s){var i=tn();return nh(i,r,s)},useTransition:function(){var r=Qd(!1);return r=Og.bind(null,Oe,r.queue,!0,!1),tn().memoizedState=r,[!1,r]},useSyncExternalStore:function(r,s,i){var c=Oe,f=tn();if(Be){if(i===void 0)throw Error(a(407));i=i()}else{if(i=s(),Xe===null)throw Error(a(349));(Ue&127)!==0||ig(c,s,i)}f.memoizedState=i;var g={value:i,getSnapshot:s};return f.queue=g,kg(lg.bind(null,c,g,r),[r]),c.flags|=2048,ri(9,{destroy:void 0},og.bind(null,c,g,i,s),null),i},useId:function(){var r=tn(),s=Xe.identifierPrefix;if(Be){var i=ir,c=ar;i=(c&~(1<<32-Jt(c)-1)).toString(32)+i,s="_"+s+"R_"+i,i=Ql++,0<i&&(s+="H"+i.toString(32)),s+="_"}else i=X_++,s="_"+s+"r_"+i.toString(32)+"_";return r.memoizedState=s},useHostTransitionStatus:sh,useFormState:yg,useActionState:yg,useOptimistic:function(r){var s=tn();s.memoizedState=s.baseState=r;var i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return s.queue=i,s=ah.bind(null,Oe,!0,i),i.dispatch=s,[r,s]},useMemoCache:Wd,useCacheRefresh:function(){return tn().memoizedState=aS.bind(null,Oe)},useEffectEvent:function(r){var s=tn(),i={impl:r};return s.memoizedState=i,function(){if((Ge&2)!==0)throw Error(a(440));return i.impl.apply(void 0,arguments)}}},ih={readContext:Vt,use:ec,useCallback:Eg,useContext:Vt,useEffect:eh,useImperativeHandle:Ag,useInsertionEffect:Sg,useLayoutEffect:jg,useMemo:Rg,useReducer:tc,useRef
vendor: 4,200 bytes, line 9
9:xg,useState:function(){return tc(Ar)},useDebugValue:th,useDeferredValue:function(r,s){var i=bt();return Cg(i,Ze.memoizedState,r,s)},useTransition:function(){var r=tc(Ar)[0],s=bt().memoizedState;return[typeof r=="boolean"?r:yo(r),s]},useSyncExternalStore:ag,useId:Dg,useHostTransitionStatus:sh,useFormState:bg,useActionState:bg,useOptimistic:function(r,s){var i=bt();return dg(i,Ze,r,s)},useMemoCache:Wd,useCacheRefresh:Pg};ih.useEffectEvent=_g;var zg={readContext:Vt,use:ec,useCallback:Eg,useContext:Vt,useEffect:eh,useImperativeHandle:Ag,useInsertionEffect:Sg,useLayoutEffect:jg,useMemo:Rg,useReducer:Jd,useRef:xg,useState:function(){return Jd(Ar)},useDebugValue:th,useDeferredValue:function(r,s){var i=bt();return Ze===null?nh(i,r,s):Cg(i,Ze.memoizedState,r,s)},useTransition:function(){var r=Jd(Ar)[0],s=bt().memoizedState;return[typeof r=="boolean"?r:yo(r),s]},useSyncExternalStore:ag,useId:Dg,useHostTransitionStatus:sh,useFormState:wg,useActionState:wg,useOptimistic:function(r,s){var i=bt();return Ze!==null?dg(i,Ze,r,s):(i.baseState=r,[r,i.queue.dispatch])},useMemoCache:Wd,useCacheRefresh:Pg};zg.useEffectEvent=_g;function oh(r,s,i,c){s=r.memoizedState,i=i(c,s),i=i==null?s:y({},s,i),r.memoizedState=i,r.lanes===0&&(r.updateQueue.baseState=i)}var lh={enqueueSetState:function(r,s,i){r=r._reactInternals;var c=Tn(),f=rs(c);f.payload=s,i!=null&&(f.callback=i),s=ss(r,f,c),s!==null&&(pn(s,r,c),fo(s,r,c))},enqueueReplaceState:function(r,s,i){r=r._reactInternals;var c=Tn(),f=rs(c);f.tag=1,f.payload=s,i!=null&&(f.callback=i),s=ss(r,f,c),s!==null&&(pn(s,r,c),fo(s,r,c))},enqueueForceUpdate:function(r,s){r=r._reactInternals;var i=Tn(),c=rs(i);c.tag=2,s!=null&&(c.callback=s),s=ss(r,c,i),s!==null&&(pn(s,r,i),fo(s,r,i))}};function qg(r,s,i,c,f,g,v){return r=r.stateNode,typeof r.shouldComponentUpdate=="function"?r.shouldComponentUpdate(c,g,v):s.prototype&&s.prototype.isPureReactComponent?!so(i,c)||!so(f,g):!0}function $g(r,s,i,c){r=s.state,typeof s.componentWillReceiveProps=="function"&&s.componentWillReceiveProps(i,c),typeof s.UNSAFE_componentWillReceiveProps=="function"&&s.UNSAFE_componentWillReceiveProps(i,c),s.state!==r&&lh.enqueueReplaceState(s,s.state,null)}function ca(r,s){var i=s;if("ref"in s){i={};for(var c in s)c!=="ref"&&(i[c]=s[c])}if(r=r.defaultProps){i===s&&(i=y({},i));for(var f in r)i[f]===void 0&&(i[f]=r[f])}return i}function Hg(r){Ll(r)}function Vg(r){console.error(r)}function Fg(r){Ll(r)}function ac(r,s){try{var i=r.onUncaughtError;i(s.value,{componentStack:s.stack})}catch(c){setTimeout(function(){throw c})}}function Gg(r,s,i){try{var c=r.onCaughtError;c(i.value,{componentStack:i.stack,errorBoundary:s.tag===1?s.stateNode:null})}catch(f){setTimeout(function(){throw f})}}function ch(r,s,i){return i=rs(i),i.tag=3,i.payload={element:null},i.callback=function(){ac(r,s)},i}function Kg(r){return r=rs(r),r.tag=3,r}function Yg(r,s,i,c){var f=i.type.getDerivedStateFromError;if(typeof f=="function"){var g=c.value;r.payload=function(){return f(g)},r.callback=function(){Gg(s,i,c)}}var v=i.stateNode;v!==null&&typeof v.componentDidCatch=="function"&&(r.callback=function(){Gg(s,i,c),typeof f!="function"&&(us===null?us=new Set([this]):us.add(this));var S=c.stack;this.componentDidCatch(c.value,{componentStack:S!==null?S:""})})}function oS(r,s,i,c,f){if(i.flags|=32768,c!==null&&typeof c=="object"&&typeof c.then=="function"){if(s=i.alternate,s!==null&&Wa(s,i,f,!0),i=kn.current,i!==null){switch(i.tag){case 31:case 13:return In===null?yc():i.alternate===null&&mt===0&&(mt=3),i.flags&=-257,i.flags|=65536,i.lanes=f,c===Gl?i.flags|=16384:(s=i.updateQueue,s===null?i.updateQueue=new Set([c]):s.add(c),Dh(r,c,f)),!1;case 22:return i.flags|=65536,c===Gl?i.flags|=16384:(s=i.updateQueue,s===null?(s={transitions:null,markerInstances:null,retryQueue:new Set([c])},i.updateQueue=s):(i=s.retryQueue,i===null?s.retryQueue=new Set([c]):i.add(c)),Dh(r,c,f)),!1}throw Error(a(435,i.tag))}return Dh(r,c,f),yc(),!1}if(Be)return s=kn.current,s!==null?((s.flags&65536)===0&&(s.flags|=256),s.flags|=65536,s.lanes=f,c!==Ed&&(r=Error(a(422),{cause:c}),oo(Dn(r,i)))):(c!==Ed&&(s=Error(a(423),{cause:c}),oo(Dn(s,i))),r=r.current.alternate,r.flags|=65536,f&=-f,r.lanes|=f,c=Dn(c,i),f=ch(r.
vendor: 11,580 bytes, line 9
9stateNode,c,f),Bd(r,f),mt!==4&&(mt=2)),!1;var g=Error(a(520),{cause:c});if(g=Dn(g,i),Ao===null?Ao=[g]:Ao.push(g),mt!==4&&(mt=2),s===null)return!0;c=Dn(c,i),i=s;do{switch(i.tag){case 3:return i.flags|=65536,r=f&-f,i.lanes|=r,r=ch(i.stateNode,c,r),Bd(i,r),!1;case 1:if(s=i.type,g=i.stateNode,(i.flags&128)===0&&(typeof s.getDerivedStateFromError=="function"||g!==null&&typeof g.componentDidCatch=="function"&&(us===null||!us.has(g))))return i.flags|=65536,f&=-f,i.lanes|=f,f=Kg(f),Yg(f,r,i,c),Bd(i,f),!1}i=i.return}while(i!==null);return!1}var uh=Error(a(461)),kt=!1;function Ft(r,s,i,c){s.child=r===null?Qm(s,null,i,c):oa(s,r.child,i,c)}function Wg(r,s,i,c,f){i=i.render;var g=s.ref;if("ref"in c){var v={};for(var S in c)S!=="ref"&&(v[S]=c[S])}else v=c;return ra(s),c=Fd(r,s,i,v,g,f),S=Gd(),r!==null&&!kt?(Kd(r,s,f),Er(r,s,f)):(Be&&S&&Td(s),s.flags|=1,Ft(r,s,c,f),s.child)}function Zg(r,s,i,c,f){if(r===null){var g=i.type;return typeof g=="function"&&!_d(g)&&g.defaultProps===void 0&&i.compare===null?(s.tag=15,s.type=g,Jg(r,s,g,c,f)):(r=zl(i.type,null,c,s,s.mode,f),r.ref=s.ref,r.return=s,s.child=r)}if(g=r.child,!bh(r,f)){var v=g.memoizedProps;if(i=i.compare,i=i!==null?i:so,i(v,c)&&r.ref===s.ref)return Er(r,s,f)}return s.flags|=1,r=kr(g,c),r.ref=s.ref,r.return=s,s.child=r}function Jg(r,s,i,c,f){if(r!==null){var g=r.memoizedProps;if(so(g,c)&&r.ref===s.ref)if(kt=!1,s.pendingProps=c=g,bh(r,f))(r.flags&131072)!==0&&(kt=!0);else return s.lanes=r.lanes,Er(r,s,f)}return dh(r,s,i,c,f)}function Qg(r,s,i,c){var f=c.children,g=r!==null?r.memoizedState:null;if(r===null&&s.stateNode===null&&(s.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),c.mode==="hidden"){if((s.flags&128)!==0){if(g=g!==null?g.baseLanes|i:i,r!==null){for(c=s.child=r.child,f=0;c!==null;)f=f|c.lanes|c.childLanes,c=c.sibling;c=f&~g}else c=0,s.child=null;return Xg(r,s,g,i,c)}if((i&536870912)!==0)s.memoizedState={baseLanes:0,cachePool:null},r!==null&&Vl(s,g!==null?g.cachePool:null),g!==null?tg(s,g):qd(),ng(s);else return c=s.lanes=536870912,Xg(r,s,g!==null?g.baseLanes|i:i,i,c)}else g!==null?(Vl(s,g.cachePool),tg(s,g),is(),s.memoizedState=null):(r!==null&&Vl(s,null),qd(),is());return Ft(r,s,f,i),s.child}function wo(r,s){return r!==null&&r.tag===22||s.stateNode!==null||(s.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),s.sibling}function Xg(r,s,i,c,f){var g=Pd();return g=g===null?null:{parent:wt._currentValue,pool:g},s.memoizedState={baseLanes:i,cachePool:g},r!==null&&Vl(s,null),qd(),ng(s),r!==null&&Wa(r,s,c,!0),s.childLanes=f,null}function ic(r,s){return s=lc({mode:s.mode,children:s.children},r.mode),s.ref=r.ref,r.child=s,s.return=r,s}function ey(r,s,i){return oa(s,r.child,null,i),r=ic(s,s.pendingProps),r.flags|=2,_n(s),s.memoizedState=null,r}function lS(r,s,i){var c=s.pendingProps,f=(s.flags&128)!==0;if(s.flags&=-129,r===null){if(Be){if(c.mode==="hidden")return r=ic(s,c),s.lanes=536870912,wo(null,r);if(Hd(s),(r=rt)?(r=hb(r,Un),r=r!==null&&r.data==="&"?r:null,r!==null&&(s.memoizedState={dehydrated:r,treeContext:Qr!==null?{id:ar,overflow:ir}:null,retryLane:536870912,hydrationErrors:null},i=Um(r),i.return=s,s.child=i,Ht=s,rt=null)):r=null,r===null)throw es(s);return s.lanes=536870912,null}return ic(s,c)}var g=r.memoizedState;if(g!==null){var v=g.dehydrated;if(Hd(s),f)if(s.flags&256)s.flags&=-257,s=ey(r,s,i);else if(s.memoizedState!==null)s.child=r.child,s.flags|=128,s=null;else throw Error(a(558));else if(kt||Wa(r,s,i,!1),f=(i&r.childLanes)!==0,kt||f){if(c=Xe,c!==null&&(v=on(c,i),v!==0&&v!==g.retryLane))throw g.retryLane=v,Xs(r,v),pn(c,r,v),uh;yc(),s=ey(r,s,i)}else r=g.treeContext,rt=Bn(v.nextSibling),Ht=s,Be=!0,Xr=null,Un=!1,r!==null&&zm(s,r),s=ic(s,c),s.flags|=4096;return s}return r=kr(r.child,{mode:c.mode,children:c.children}),r.ref=s.ref,s.child=r,r.return=s,r}function oc(r,s){var i=s.ref;if(i===null)r!==null&&r.ref!==null&&(s.flags|=4194816);else{if(typeof i!="function"&&typeof i!="object")throw Error(a(284));(r===null||r.ref!==i)&&(s.flags|=4194816)}}function dh(r,s,i,c,f){return ra(s),i=Fd(r,s,i,c,void 0,f),c=Gd(),r!==null&&!kt?(Kd(r,s,f),Er(r,s,f)):(Be&&c&&Td(s),s.flags|=1,Ft(r,s,i,f),s.child)}function ty(r,s,i,c,f,g){return ra(s),s.updateQueue=null,i=sg(s,c,i,f),rg(r),c=Gd(),r!==null&&!kt?(Kd(r,s,g),Er(r,s,g)):(Be&&c&&Td(s),s.flags|=1,Ft(r,s,i,g),s.child)}function ny(r,s,i,c,f){if(ra(s),s.stateNode===null){var g=Fa,v=i.contextType;typeof v=="object"&&v!==null&&(g=Vt(v)),g=new i(c,g),s.memoizedState=g.state!==null&&g.state!==void 0?g.state:null,g.updater=lh,s.stateNode=g,g._reactInternals=s,g=s.stateNode,g.props=c,g.state=s.memoizedState,g.refs={},Ud(s),v=i.contextType,g.context=typeof v=="object"&&v!==null?Vt(v):Fa,g.state=s.memoizedState,v=i.getDerivedStateFromProps,typeof v=="function"&&(oh(s,i,v,c),g.state=s.memoizedState),typeof i.getDerivedStateFromProps=="function"||typeof g.getSnapshotBeforeUpdate=="function"||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(v=g.state,typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount(),v!==g.state&&lh.enqueueReplaceState(g,g.state,null),mo(s,c,g,f),po(),g.state=s.memoizedState),typeof g.componentDidMount=="function"&&(s.flags|=4194308),c=!0}else if(r===null){g=s.stateNode;var S=s.memoizedProps,C=ca(i,S);g.props=C;var z=g.context,F=i.contextType;v=Fa,typeof F=="object"&&F!==null&&(v=Vt(F));var J=i.getDerivedStateFromProps;F=typeof J=="function"||typeof g.getSnapshotBeforeUpdate=="function",S=s.pendingProps!==S,F||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(S||z!==v)&&$g(s,g,c,v),ns=!1;var q=s.memoizedState;g.state=q,mo(s,c,g,f),po(),z=s.memoizedState,S||q!==z||ns?(typeof J=="function"&&(oh(s,i,J,c),z=s.memoizedState),(C=ns||qg(s,i,C,c,q,z,v))?(F||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount()),typeof g.componentDidMount=="function"&&(s.flags|=4194308)):(typeof g.componentDidMount=="function"&&(s.flags|=4194308),s.memoizedProps=c,s.memoizedState=z),g.props=c,g.state=z,g.context=v,c=C):(typeof g.componentDidMount=="function"&&(s.flags|=4194308),c=!1)}else{g=s.stateNode,Id(r,s),v=s.memoizedProps,F=ca(i,v),g.props=F,J=s.pendingProps,q=g.context,z=i.contextType,C=Fa,typeof z=="object"&&z!==null&&(C=Vt(z)),S=i.getDerivedStateFromProps,(z=typeof S=="function"||typeof g.getSnapshotBeforeUpdate=="function")||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(v!==J||q!==C)&&$g(s,g,c,C),ns=!1,q=s.memoizedState,g.state=q,mo(s,c,g,f),po();var H=s.memoizedState;v!==J||q!==H||ns||r!==null&&r.dependencies!==null&&$l(r.dependencies)?(typeof S=="function"&&(oh(s,i,S,c),H=s.memoizedState),(F=ns||qg(s,i,F,c,q,H,C)||r!==null&&r.dependencies!==null&&$l(r.dependencies))?(z||typeof g.UNSAFE_componentWillUpdate!="function"&&typeof g.componentWillUpdate!="function"||(typeof g.componentWillUpdate=="function"&&g.componentWillUpdate(c,H,C),typeof g.UNSAFE_componentWillUpdate=="function"&&g.UNSAFE_componentWillUpdate(c,H,C)),typeof g.componentDidUpdate=="function"&&(s.flags|=4),typeof g.getSnapshotBeforeUpdate=="function"&&(s.flags|=1024)):(typeof g.componentDidUpdate!="function"||v===r.memoizedProps&&q===r.memoizedState||(s.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||v===r.memoizedProps&&q===r.memoizedState||(s.flags|=1024),s.memoizedProps=c,s.memoizedState=H),g.props=c,g.state=H,g.context=C,c=F):(typeof g.componentDidUpdate!="function"||v===r.memoizedProps&&q===r.memoizedState||(s.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||v===r.memoizedProps&&q===r.memoizedState||(s.flags|=1024),c=!1)}return g=c,oc(r,s),c=(s.flags&128)!==0,g||c?(g=s.stateNode,i=c&&typeof i.getDerivedStateFromError!="function"?null:g.render(),s.flags|=1,r!==null&&c?(s.child=oa(s,r.child,null,f),s.child=oa(s,null,i,f)):Ft(r,s,i,f),s.memoizedState=g.state,r=s.child):r=Er(r,s,f),r}function ry(r,s,i,c){return ta(),s.flags|=256,Ft(r,s,i,c),s.child}var hh={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function fh(r){return{baseLanes:r,cachePool:Gm()}}function ph(r,s,i){return r=r!==null?r.childLanes&~i:0,s&&(r|=jn),r}function sy(r,s,i){var c=s.pendingProps,f=!1,g=(s.flags&128)!==0,v;if((v=g)||(v=r!==null&&r.memoizedState===null?!1:(yt.current&2)!==0),v&&(f=!0,s.flags&=-129),v=(s.flags&32)!==0,s.flags&=-33,r===null){if(Be){if(f?as(s):is(),(r=rt)?(r=hb(r,Un),r=r!==null&&r.data!=="&"?r:null,r!==null&&(s.memoizedState={dehydrated:r,treeContext:Qr!==null?{id:ar,overflow:ir}:null,retryLane:536870912,hydrationErrors:null},i=Um(r),i.return=s,s.child=i,Ht=s,rt=null)):r=null,r===null)throw es(s);return Zh(r)?s.lanes=32:s.lanes=536870912,null}var S=c.children;return c=c.fallback,f?(is(),f=s.mode,S=lc({mode:"hidden",children:S},f),c=ea(c,f,i,null),S.return=s,c.return=s,S.sibling=c,s.child=S,c=s.child,c.memoizedState=fh(i),c.childLanes=ph(r,v,i),s.memoizedState=hh,wo(null,c)):(as(s),mh(s,S))}var C=r.memoizedState;if(C!==null&&(S=C.dehydrated,S!==null)){if(g)s.flags&256?(as(s),s.flags&=-257,s=gh(r,s,i)):s.memoizedState!==null?(is(),s.child=r.child,s.flags|=128,s=null):(is(),S=c.fallback,f=s.mode,c=lc({mode:"visible",children:c.children},f),S=ea(S,f,i,null),S.flags|=2,c.return=s,S.return=s,c.sibling=S,s.child=c,oa(s,r.child,null,i),c=s.child,c.memoizedState=fh(i),c.childLanes=ph(r,v,i),s.memoizedState=hh,s=wo(null,c));else if(as(s),Zh(S)){if(v=S.nextSibling&&S.nextSibling.dataset,v)var z=v.dgst;v=z,c=Error(a(419)),c.stack="",c.digest=v,oo({value:c,source:null,stack:null}),s=gh(r,s,i)}else if(kt||Wa(r,s,i,!1),v=(i&r.childLanes)!==0,kt||v){if(v=Xe,v!==null&&(c=on(v,i),c!==0&&c!==C.retryLane))throw C.retryLane=c,Xs(r,c),pn(v,r,c),uh;Wh(S)||yc(),s=gh(r,s,i)}else Wh(S)?(s.flags|=192,s.child=r.child,s=null):(r=C.treeContext,rt=Bn(S.nextSibling),Ht=s,Be=!0,Xr=null,Un=!1,r!==null&&zm(s,r),s=mh(s,c.children),s.flags|=4096);return s}return f?(is(),S=c.fallback,f=s.mode,C=r.child,z=C.sibling,c=kr(C,{mode:"hidden",children:c.children}),c.subtreeFlags=C.subtreeFlags&65011712,z!==null?S=kr(z,S):(S=ea(S,f,i,null),S.flags|=2),S.return=s,c.return=s,c.sibling=S,s.child=c,wo(null,c),c=s.child,S=r.child.memoizedState,S===null?S=fh(i):(f=S.cachePool,f!==null?(C=wt._currentValue,f=f.parent!==C?{parent:C,pool:C}:f):f=Gm(),S={baseLanes:S.baseLanes|i,cachePool:f}),c.memoizedState=S,c.childLanes=ph(r,v,i),s.memoizedState=hh,wo(r.child,c)):(as(s),i=r.child,r=i.sibling,i=kr(i,{mode:"visible",children:c.children}),i.return=s,i.sibling=null,r!==null&&(v=s.deletions,v===null?(s.deletions=[r],s.flags|=16):v.push(r)),s.child=i,s.memoizedState=null,i)}function mh(r,s){return s=lc({mode:"visible",children:s},r.mode),s.return=r,r.child=s}function lc(r,s){return r=xn(22,r,null,s),r.lanes=0,r}function gh(r,s,i){return oa(s,r.child,null,i),r=mh(s,s.pendingProps.children),r.flags|=2,s.memoizedState=null,r}function ay(r,s,i){r.lanes|=s;var c=r.alternate;c!==null&&(c.lanes|=s),Od(r.return,s,i)}function yh(r,s,i,c,f,g){var v=r.memoizedState;v===null?r.memoizedState={isBackwards:s,rendering:null,renderingStartTime:0,last:c,tail:i,tailMode:f,treeForkCount:g}:(v.isBackwards=s,v.rendering=null,v.renderingStartTime=0,v.last=c,v.tail=i,v.tailMode=f,v.treeForkCount=g)}function iy(r,s,i){var c=s.pendingProps,f=c.revealOrder,g=c.tail;c=c.children;var v=yt.current,S=(v&2)!==0;
vendor: 4,845 bytes, line 9
9if(S?(v=v&1|2,s.flags|=128):v&=1,Z(yt,v),Ft(r,s,c,i),c=Be?io:0,!S&&r!==null&&(r.flags&128)!==0)e:for(r=s.child;r!==null;){if(r.tag===13)r.memoizedState!==null&&ay(r,i,s);else if(r.tag===19)ay(r,i,s);else if(r.child!==null){r.child.return=r,r=r.child;continue}if(r===s)break e;for(;r.sibling===null;){if(r.return===null||r.return===s)break e;r=r.return}r.sibling.return=r.return,r=r.sibling}switch(f){case"forwards":for(i=s.child,f=null;i!==null;)r=i.alternate,r!==null&&Zl(r)===null&&(f=i),i=i.sibling;i=f,i===null?(f=s.child,s.child=null):(f=i.sibling,i.sibling=null),yh(s,!1,f,i,g,c);break;case"backwards":case"unstable_legacy-backwards":for(i=null,f=s.child,s.child=null;f!==null;){if(r=f.alternate,r!==null&&Zl(r)===null){s.child=f;break}r=f.sibling,f.sibling=i,i=f,f=r}yh(s,!0,i,null,g,c);break;case"together":yh(s,!1,null,null,void 0,c);break;default:s.memoizedState=null}return s.child}function Er(r,s,i){if(r!==null&&(s.dependencies=r.dependencies),cs|=s.lanes,(i&s.childLanes)===0)if(r!==null){if(Wa(r,s,i,!1),(i&s.childLanes)===0)return null}else return null;if(r!==null&&s.child!==r.child)throw Error(a(153));if(s.child!==null){for(r=s.child,i=kr(r,r.pendingProps),s.child=i,i.return=s;r.sibling!==null;)r=r.sibling,i=i.sibling=kr(r,r.pendingProps),i.return=s;i.sibling=null}return s.child}function bh(r,s){return(r.lanes&s)!==0?!0:(r=r.dependencies,!!(r!==null&&$l(r)))}function cS(r,s,i){switch(s.tag){case 3:ke(s,s.stateNode.containerInfo),ts(s,wt,r.memoizedState.cache),ta();break;case 27:case 5:zt(s);break;case 4:ke(s,s.stateNode.containerInfo);break;case 10:ts(s,s.type,s.memoizedProps.value);break;case 31:if(s.memoizedState!==null)return s.flags|=128,Hd(s),null;break;case 13:var c=s.memoizedState;if(c!==null)return c.dehydrated!==null?(as(s),s.flags|=128,null):(i&s.child.childLanes)!==0?sy(r,s,i):(as(s),r=Er(r,s,i),r!==null?r.sibling:null);as(s);break;case 19:var f=(r.flags&128)!==0;if(c=(i&s.childLanes)!==0,c||(Wa(r,s,i,!1),c=(i&s.childLanes)!==0),f){if(c)return iy(r,s,i);s.flags|=128}if(f=s.memoizedState,f!==null&&(f.rendering=null,f.tail=null,f.lastEffect=null),Z(yt,yt.current),c)break;return null;case 22:return s.lanes=0,Qg(r,s,i,s.pendingProps);case 24:ts(s,wt,r.memoizedState.cache)}return Er(r,s,i)}function oy(r,s,i){if(r!==null)if(r.memoizedProps!==s.pendingProps)kt=!0;else{if(!bh(r,i)&&(s.flags&128)===0)return kt=!1,cS(r,s,i);kt=(r.flags&131072)!==0}else kt=!1,Be&&(s.flags&1048576)!==0&&Bm(s,io,s.index);switch(s.lanes=0,s.tag){case 16:e:{var c=s.pendingProps;if(r=aa(s.elementType),s.type=r,typeof r=="function")_d(r)?(c=ca(r,c),s.tag=1,s=ny(null,s,r,c,i)):(s.tag=0,s=dh(null,s,r,c,i));else{if(r!=null){var f=r.$$typeof;if(f===M){s.tag=11,s=Wg(null,s,r,c,i);break e}else if(f===$){s.tag=14,s=Zg(null,s,r,c,i);break e}}throw s=ze(r)||r,Error(a(306,s,""))}}return s;case 0:return dh(r,s,s.type,s.pendingProps,i);case 1:return c=s.type,f=ca(c,s.pendingProps),ny(r,s,c,f,i);case 3:e:{if(ke(s,s.stateNode.containerInfo),r===null)throw Error(a(387));c=s.pendingProps;var g=s.memoizedState;f=g.element,Id(r,s),mo(s,c,null,i);var v=s.memoizedState;if(c=v.cache,ts(s,wt,c),c!==g.cache&&Nd(s,[wt],i,!0),po(),c=v.element,g.isDehydrated)if(g={element:c,isDehydrated:!1,cache:v.cache},s.updateQueue.baseState=g,s.memoizedState=g,s.flags&256){s=ry(r,s,c,i);break e}else if(c!==f){f=Dn(Error(a(424)),s),oo(f),s=ry(r,s,c,i);break e}else for(r=s.stateNode.containerInfo,r.nodeType===9?r=r.body:r=r.nodeName==="HTML"?r.ownerDocument.body:r,rt=Bn(r.firstChild),Ht=s,Be=!0,Xr=null,Un=!0,i=Qm(s,null,c,i),s.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling;else{if(ta(),c===f){s=Er(r,s,i);break e}Ft(r,s,c,i)}s=s.child}return s;case 26:return oc(r,s),r===null?(i=bb(s.type,null,s.pendingProps,null))?s.memoizedState=i:Be||(i=s.type,r=s.pendingProps,c=Sc(ce.current).createElement(i),c[$t]=s,c[ln]=r,Gt(c,i,r),Lt(c),s.stateNode=c):s.memoizedState=bb(s.type,r.memoizedProps,s.pendingProps,r.memoizedState),null;case 27:return zt(s),r===null&&Be&&(c=s.stateNode=mb(s.type,s.pendingProps,ce.current),Ht=s,Un=!0,f=rt,ps(s.type)?(Jh=f,rt=Bn(c.firstChild)):rt=f),Ft(r,s,s.pendingProps.children,i),oc(r,s),r===null&&(s.flags|=4194304),s.child;case 5:return r===null&&Be&&((f=c=rt)&&(c=BS(c,s.type,s.pendingProps,Un),c!==null?(s.stateNode=c,Ht=s,rt=Bn(c.firstChild),Un=!1,f=!0):f=!1),f||es(s)),zt(s),f=s.type,g=s.pendingProps,v=r!==null?r.memoizedProps:null,c=g.children,Gh(f,g)?c=null:v!==null&&Gh(f,v)&&(s.flags|=32),s.memoizedState!==null&&(f=Fd(r,s,eS,null,null,i),Po._currentValue=f),oc(r,s),Ft(r,s,c,i),s.child;case 6:return r===null&&Be&&((r=i=rt)&&(i=zS(i,s.pendingProps,Un),i!==null?(s.stateNode=i,Ht=s,rt=null,r=!0):r=!1),r||es(s)),null;case 13:return sy(r,s,i);case 4:return ke(s,s.stateNode.containerInfo),c=s.pendingProps,r===null?s.child=oa(s,null,c,i):Ft(r,s,c,i),s.child;case 11:return Wg(r,s,s.type,s.pendingProps,i);
vendor: 4,563 bytes, line 9
9case 7:return Ft(r,s,s.pendingProps,i),s.child;case 8:return Ft(r,s,s.pendingProps.children,i),s.child;case 12:return Ft(r,s,s.pendingProps.children,i),s.child;case 10:return c=s.pendingProps,ts(s,s.type,c.value),Ft(r,s,c.children,i),s.child;case 9:return f=s.type._context,c=s.pendingProps.children,ra(s),f=Vt(f),c=c(f),s.flags|=1,Ft(r,s,c,i),s.child;case 14:return Zg(r,s,s.type,s.pendingProps,i);case 15:return Jg(r,s,s.type,s.pendingProps,i);case 19:return iy(r,s,i);case 31:return lS(r,s,i);case 22:return Qg(r,s,i,s.pendingProps);case 24:return ra(s),c=Vt(wt),r===null?(f=Pd(),f===null&&(f=Xe,g=Md(),f.pooledCache=g,g.refCount++,g!==null&&(f.pooledCacheLanes|=i),f=g),s.memoizedState={parent:c,cache:f},Ud(s),ts(s,wt,f)):((r.lanes&i)!==0&&(Id(r,s),mo(s,null,null,i),po()),f=r.memoizedState,g=s.memoizedState,f.parent!==c?(f={parent:c,cache:c},s.memoizedState=f,s.lanes===0&&(s.memoizedState=s.updateQueue.baseState=f),ts(s,wt,c)):(c=g.cache,ts(s,wt,c),c!==f.cache&&Nd(s,[wt],i,!0))),Ft(r,s,s.pendingProps.children,i),s.child;case 29:throw s.pendingProps}throw Error(a(156,s.tag))}function Rr(r){r.flags|=4}function vh(r,s,i,c,f){if((s=(r.mode&32)!==0)&&(s=!1),s){if(r.flags|=16777216,(f&335544128)===f)if(r.stateNode.complete)r.flags|=8192;else if(Dy())r.flags|=8192;else throw ia=Gl,Ld}else r.flags&=-16777217}function ly(r,s){if(s.type!=="stylesheet"||(s.state.loading&4)!==0)r.flags&=-16777217;else if(r.flags|=16777216,!_b(s))if(Dy())r.flags|=8192;else throw ia=Gl,Ld}function cc(r,s){s!==null&&(r.flags|=4),r.flags&16384&&(s=r.tag!==22?Qt():536870912,r.lanes|=s,oi|=s)}function xo(r,s){if(!Be)switch(r.tailMode){case"hidden":s=r.tail;for(var i=null;s!==null;)s.alternate!==null&&(i=s),s=s.sibling;i===null?r.tail=null:i.sibling=null;break;case"collapsed":i=r.tail;for(var c=null;i!==null;)i.alternate!==null&&(c=i),i=i.sibling;c===null?s||r.tail===null?r.tail=null:r.tail.sibling=null:c.sibling=null}}function st(r){var s=r.alternate!==null&&r.alternate.child===r.child,i=0,c=0;if(s)for(var f=r.child;f!==null;)i|=f.lanes|f.childLanes,c|=f.subtreeFlags&65011712,c|=f.flags&65011712,f.return=r,f=f.sibling;else for(f=r.child;f!==null;)i|=f.lanes|f.childLanes,c|=f.subtreeFlags,c|=f.flags,f.return=r,f=f.sibling;return r.subtreeFlags|=c,r.childLanes=i,s}function uS(r,s,i){var c=s.pendingProps;switch(Ad(s),s.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return st(s),null;case 1:return st(s),null;case 3:return i=s.stateNode,c=null,r!==null&&(c=r.memoizedState.cache),s.memoizedState.cache!==c&&(s.flags|=2048),jr(wt),ve(),i.pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(r===null||r.child===null)&&(Ya(s)?Rr(s):r===null||r.memoizedState.isDehydrated&&(s.flags&256)===0||(s.flags|=1024,Rd())),st(s),null;case 26:var f=s.type,g=s.memoizedState;return r===null?(Rr(s),g!==null?(st(s),ly(s,g)):(st(s),vh(s,f,null,c,i))):g?g!==r.memoizedState?(Rr(s),st(s),ly(s,g)):(st(s),s.flags&=-16777217):(r=r.memoizedProps,r!==c&&Rr(s),st(s),vh(s,f,r,c,i)),null;case 27:if(At(s),i=ce.current,f=s.type,r!==null&&s.stateNode!=null)r.memoizedProps!==c&&Rr(s);else{if(!c){if(s.stateNode===null)throw Error(a(166));return st(s),null}r=ee.current,Ya(s)?qm(s):(r=mb(f,c,i),s.stateNode=r,Rr(s))}return st(s),null;case 5:if(At(s),f=s.type,r!==null&&s.stateNode!=null)r.memoizedProps!==c&&Rr(s);else{if(!c){if(s.stateNode===null)throw Error(a(166));return st(s),null}if(g=ee.current,Ya(s))qm(s);else{var v=Sc(ce.current);switch(g){case 1:g=v.createElementNS("http://www.w3.org/2000/svg",f);break;case 2:g=v.createElementNS("http://www.w3.org/1998/Math/MathML",f);break;default:switch(f){case"svg":g=v.createElementNS("http://www.w3.org/2000/svg",f);break;case"math":g=v.createElementNS("http://www.w3.org/1998/Math/MathML",f);break;case"script":g=v.createElement("div"),g.innerHTML="<script><\/script>",g=g.removeChild(g.firstChild);break;case"select":g=typeof c.is=="string"?v.createElement("select",{is:c.is}):v.createElement("select"),c.multiple?g.multiple=!0:c.size&&(g.size=c.size);break;default:g=typeof c.is=="string"?v.createElement(f,{is:c.is}):v.createElement(f)}}g[$t]=s,g[ln]=c;e:for(v=s.child;v!==null;){if(v.tag===5||v.tag===6)g.appendChild(v.stateNode);else if(v.tag!==4&&v.tag!==27&&v.child!==null){v.child.return=v,v=v.child;continue}if(v===s)break e;for(;v.sibling===null;){if(v.return===null||v.return===s)break e;v=v.return}v.sibling.return=v.return,v=v.sibling}s.stateNode=g;e:switch(Gt(g,f,c),f){case"button":case"input":case"select":case"textarea":c=!!c.autoFocus;break e;case"img":c=!0;break e;default:c=!1}
vendor: 23,831 bytes, line 9
9c&&Rr(s)}}return st(s),vh(s,s.type,r===null?null:r.memoizedProps,s.pendingProps,i),null;case 6:if(r&&s.stateNode!=null)r.memoizedProps!==c&&Rr(s);else{if(typeof c!="string"&&s.stateNode===null)throw Error(a(166));if(r=ce.current,Ya(s)){if(r=s.stateNode,i=s.memoizedProps,c=null,f=Ht,f!==null)switch(f.tag){case 27:case 5:c=f.memoizedProps}r[$t]=s,r=!!(r.nodeValue===i||c!==null&&c.suppressHydrationWarning===!0||sb(r.nodeValue,i)),r||es(s,!0)}else r=Sc(r).createTextNode(c),r[$t]=s,s.stateNode=r}return st(s),null;case 31:if(i=s.memoizedState,r===null||r.memoizedState!==null){if(c=Ya(s),i!==null){if(r===null){if(!c)throw Error(a(318));if(r=s.memoizedState,r=r!==null?r.dehydrated:null,!r)throw Error(a(557));r[$t]=s}else ta(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;st(s),r=!1}else i=Rd(),r!==null&&r.memoizedState!==null&&(r.memoizedState.hydrationErrors=i),r=!0;if(!r)return s.flags&256?(_n(s),s):(_n(s),null);if((s.flags&128)!==0)throw Error(a(558))}return st(s),null;case 13:if(c=s.memoizedState,r===null||r.memoizedState!==null&&r.memoizedState.dehydrated!==null){if(f=Ya(s),c!==null&&c.dehydrated!==null){if(r===null){if(!f)throw Error(a(318));if(f=s.memoizedState,f=f!==null?f.dehydrated:null,!f)throw Error(a(317));f[$t]=s}else ta(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;st(s),f=!1}else f=Rd(),r!==null&&r.memoizedState!==null&&(r.memoizedState.hydrationErrors=f),f=!0;if(!f)return s.flags&256?(_n(s),s):(_n(s),null)}return _n(s),(s.flags&128)!==0?(s.lanes=i,s):(i=c!==null,r=r!==null&&r.memoizedState!==null,i&&(c=s.child,f=null,c.alternate!==null&&c.alternate.memoizedState!==null&&c.alternate.memoizedState.cachePool!==null&&(f=c.alternate.memoizedState.cachePool.pool),g=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(g=c.memoizedState.cachePool.pool),g!==f&&(c.flags|=2048)),i!==r&&i&&(s.child.flags|=8192),cc(s,s.updateQueue),st(s),null);case 4:return ve(),r===null&&qh(s.stateNode.containerInfo),st(s),null;case 10:return jr(s.type),st(s),null;case 19:if(G(yt),c=s.memoizedState,c===null)return st(s),null;if(f=(s.flags&128)!==0,g=c.rendering,g===null)if(f)xo(c,!1);else{if(mt!==0||r!==null&&(r.flags&128)!==0)for(r=s.child;r!==null;){if(g=Zl(r),g!==null){for(s.flags|=128,xo(c,!1),r=g.updateQueue,s.updateQueue=r,cc(s,r),s.subtreeFlags=0,r=i,i=s.child;i!==null;)Lm(i,r),i=i.sibling;return Z(yt,yt.current&1|2),Be&&_r(s,c.treeForkCount),s.child}r=r.sibling}c.tail!==null&&Dt()>pc&&(s.flags|=128,f=!0,xo(c,!1),s.lanes=4194304)}else{if(!f)if(r=Zl(g),r!==null){if(s.flags|=128,f=!0,r=r.updateQueue,s.updateQueue=r,cc(s,r),xo(c,!0),c.tail===null&&c.tailMode==="hidden"&&!g.alternate&&!Be)return st(s),null}else 2*Dt()-c.renderingStartTime>pc&&i!==536870912&&(s.flags|=128,f=!0,xo(c,!1),s.lanes=4194304);c.isBackwards?(g.sibling=s.child,s.child=g):(r=c.last,r!==null?r.sibling=g:s.child=g,c.last=g)}return c.tail!==null?(r=c.tail,c.rendering=r,c.tail=r.sibling,c.renderingStartTime=Dt(),r.sibling=null,i=yt.current,Z(yt,f?i&1|2:i&1),Be&&_r(s,c.treeForkCount),r):(st(s),null);case 22:case 23:return _n(s),$d(),c=s.memoizedState!==null,r!==null?r.memoizedState!==null!==c&&(s.flags|=8192):c&&(s.flags|=8192),c?(i&536870912)!==0&&(s.flags&128)===0&&(st(s),s.subtreeFlags&6&&(s.flags|=8192)):st(s),i=s.updateQueue,i!==null&&cc(s,i.retryQueue),i=null,r!==null&&r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(i=r.memoizedState.cachePool.pool),c=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(c=s.memoizedState.cachePool.pool),c!==i&&(s.flags|=2048),r!==null&&G(sa),null;case 24:return i=null,r!==null&&(i=r.memoizedState.cache),s.memoizedState.cache!==i&&(s.flags|=2048),jr(wt),st(s),null;case 25:return null;case 30:return null}throw Error(a(156,s.tag))}function dS(r,s){switch(Ad(s),s.tag){case 1:return r=s.flags,r&65536?(s.flags=r&-65537|128,s):null;case 3:return jr(wt),ve(),r=s.flags,(r&65536)!==0&&(r&128)===0?(s.flags=r&-65537|128,s):null;case 26:case 27:case 5:return At(s),null;case 31:if(s.memoizedState!==null){if(_n(s),s.alternate===null)throw Error(a(340));ta()}return r=s.flags,r&65536?(s.flags=r&-65537|128,s):null;case 13:if(_n(s),r=s.memoizedState,r!==null&&r.dehydrated!==null){if(s.alternate===null)throw Error(a(340));ta()}return r=s.flags,r&65536?(s.flags=r&-65537|128,s):null;case 19:return G(yt),null;case 4:return ve(),null;case 10:return jr(s.type),null;case 22:case 23:return _n(s),$d(),r!==null&&G(sa),r=s.flags,r&65536?(s.flags=r&-65537|128,s):null;case 24:return jr(wt),null;case 25:return null;default:return null}}function cy(r,s){switch(Ad(s),s.tag){case 3:jr(wt),ve();break;case 26:case 27:case 5:At(s);break;case 4:ve();break;case 31:s.memoizedState!==null&&_n(s);break;case 13:_n(s);break;case 19:G(yt);break;case 10:jr(s.type);break;case 22:case 23:_n(s),$d(),r!==null&&G(sa);break;case 24:jr(wt)}}function ko(r,s){try{var i=s.updateQueue,c=i!==null?i.lastEffect:null;if(c!==null){var f=c.next;i=f;do{if((i.tag&r)===r){c=void 0;var g=i.create,v=i.inst;c=g(),v.destroy=c}i=i.next}while(i!==f)}}catch(S){Ye(s,s.return,S)}}function os(r,s,i){try{var c=s.updateQueue,f=c!==null?c.lastEffect:null;if(f!==null){var g=f.next;c=g;do{if((c.tag&r)===r){var v=c.inst,S=v.destroy;if(S!==void 0){v.destroy=void 0,f=s;var C=i,z=S;try{z()}catch(F){Ye(f,C,F)}}}c=c.next}while(c!==g)}}catch(F){Ye(s,s.return,F)}}function uy(r){var s=r.updateQueue;if(s!==null){var i=r.stateNode;try{eg(s,i)}catch(c){Ye(r,r.return,c)}}}function dy(r,s,i){i.props=ca(r.type,r.memoizedProps),i.state=r.memoizedState;try{i.componentWillUnmount()}catch(c){Ye(r,s,c)}}function _o(r,s){try{var i=r.ref;if(i!==null){switch(r.tag){case 26:case 27:case 5:var c=r.stateNode;break;case 30:c=r.stateNode;break;default:c=r.stateNode}typeof i=="function"?r.refCleanup=i(c):i.current=c}}catch(f){Ye(r,s,f)}}function or(r,s){var i=r.ref,c=r.refCleanup;if(i!==null)if(typeof c=="function")try{c()}catch(f){Ye(r,s,f)}finally{r.refCleanup=null,r=r.alternate,r!=null&&(r.refCleanup=null)}else if(typeof i=="function")try{i(null)}catch(f){Ye(r,s,f)}else i.current=null}function hy(r){var s=r.type,i=r.memoizedProps,c=r.stateNode;try{e:switch(s){case"button":case"input":case"select":case"textarea":i.autoFocus&&c.focus();break e;case"img":i.src?c.src=i.src:i.srcSet&&(c.srcset=i.srcSet)}}catch(f){Ye(r,r.return,f)}}function wh(r,s,i){try{var c=r.stateNode;MS(c,r.type,i,s),c[ln]=s}catch(f){Ye(r,r.return,f)}}function fy(r){return r.tag===5||r.tag===3||r.tag===26||r.tag===27&&ps(r.type)||r.tag===4}function xh(r){e:for(;;){for(;r.sibling===null;){if(r.return===null||fy(r.return))return null;r=r.return}for(r.sibling.return=r.return,r=r.sibling;r.tag!==5&&r.tag!==6&&r.tag!==18;){if(r.tag===27&&ps(r.type)||r.flags&2||r.child===null||r.tag===4)continue e;r.child.return=r,r=r.child}if(!(r.flags&2))return r.stateNode}}function kh(r,s,i){var c=r.tag;if(c===5||c===6)r=r.stateNode,s?(i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i).insertBefore(r,s):(s=i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i,s.appendChild(r),i=i._reactRootContainer,i!=null||s.onclick!==null||(s.onclick=wr));else if(c!==4&&(c===27&&ps(r.type)&&(i=r.stateNode,s=null),r=r.child,r!==null))for(kh(r,s,i),r=r.sibling;r!==null;)kh(r,s,i),r=r.sibling}function uc(r,s,i){var c=r.tag;if(c===5||c===6)r=r.stateNode,s?i.insertBefore(r,s):i.appendChild(r);else if(c!==4&&(c===27&&ps(r.type)&&(i=r.stateNode),r=r.child,r!==null))for(uc(r,s,i),r=r.sibling;r!==null;)uc(r,s,i),r=r.sibling}function py(r){var s=r.stateNode,i=r.memoizedProps;try{for(var c=r.type,f=s.attributes;f.length;)s.removeAttributeNode(f[0]);Gt(s,c,i),s[$t]=r,s[ln]=i}catch(g){Ye(r,r.return,g)}}var Cr=!1,_t=!1,_h=!1,my=typeof WeakSet=="function"?WeakSet:Set,Ut=null;function hS(r,s){if(r=r.containerInfo,Vh=Oc,r=Am(r),gd(r)){if("selectionStart"in r)var i={start:r.selectionStart,end:r.selectionEnd};else e:{i=(i=r.ownerDocument)&&i.defaultView||window;var c=i.getSelection&&i.getSelection();if(c&&c.rangeCount!==0){i=c.anchorNode;var f=c.anchorOffset,g=c.focusNode;c=c.focusOffset;try{i.nodeType,g.nodeType}catch{i=null;break e}var v=0,S=-1,C=-1,z=0,F=0,J=r,q=null;t:for(;;){for(var H;J!==i||f!==0&&J.nodeType!==3||(S=v+f),J!==g||c!==0&&J.nodeType!==3||(C=v+c),J.nodeType===3&&(v+=J.nodeValue.length),(H=J.firstChild)!==null;)q=J,J=H;for(;;){if(J===r)break t;if(q===i&&++z===f&&(S=v),q===g&&++F===c&&(C=v),(H=J.nextSibling)!==null)break;J=q,q=J.parentNode}J=H}i=S===-1||C===-1?null:{start:S,end:C}}else i=null}i=i||{start:0,end:0}}else i=null;for(Fh={focusedElem:r,selectionRange:i},Oc=!1,Ut=s;Ut!==null;)if(s=Ut,r=s.child,(s.subtreeFlags&1028)!==0&&r!==null)r.return=s,Ut=r;else for(;Ut!==null;){switch(s=Ut,g=s.alternate,r=s.flags,s.tag){case 0:if((r&4)!==0&&(r=s.updateQueue,r=r!==null?r.events:null,r!==null))for(i=0;i<r.length;i++)f=r[i],f.ref.impl=f.nextImpl;break;case 11:case 15:break;case 1:if((r&1024)!==0&&g!==null){r=void 0,i=s,f=g.memoizedProps,g=g.memoizedState,c=i.stateNode;try{var ue=ca(i.type,f);r=c.getSnapshotBeforeUpdate(ue,g),c.__reactInternalSnapshotBeforeUpdate=r}catch(we){Ye(i,i.return,we)}}break;case 3:if((r&1024)!==0){if(r=s.stateNode.containerInfo,i=r.nodeType,i===9)Yh(r);else if(i===1)switch(r.nodeName){case"HEAD":case"HTML":case"BODY":Yh(r);break;default:r.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((r&1024)!==0)throw Error(a(163))}if(r=s.sibling,r!==null){r.return=s.return,Ut=r;break}Ut=s.return}}function gy(r,s,i){var c=i.flags;switch(i.tag){case 0:case 11:case 15:Nr(r,i),c&4&&ko(5,i);break;case 1:if(Nr(r,i),c&4)if(r=i.stateNode,s===null)try{r.componentDidMount()}catch(v){Ye(i,i.return,v)}else{var f=ca(i.type,s.memoizedProps);s=s.memoizedState;try{r.componentDidUpdate(f,s,r.__reactInternalSnapshotBeforeUpdate)}catch(v){Ye(i,i.return,v)}}c&64&&uy(i),c&512&&_o(i,i.return);break;case 3:if(Nr(r,i),c&64&&(r=i.updateQueue,r!==null)){if(s=null,i.child!==null)switch(i.child.tag){case 27:case 5:s=i.child.stateNode;break;case 1:s=i.child.stateNode}try{eg(r,s)}catch(v){Ye(i,i.return,v)}}break;case 27:s===null&&c&4&&py(i);case 26:case 5:Nr(r,i),s===null&&c&4&&hy(i),c&512&&_o(i,i.return);break;case 12:Nr(r,i);break;case 31:Nr(r,i),c&4&&vy(r,i);break;case 13:Nr(r,i),c&4&&wy(r,i),c&64&&(r=i.memoizedState,r!==null&&(r=r.dehydrated,r!==null&&(i=xS.bind(null,i),qS(r,i))));break;case 22:if(c=i.memoizedState!==null||Cr,!c){s=s!==null&&s.memoizedState!==null||_t,f=Cr;var g=_t;Cr=c,(_t=s)&&!g?Mr(r,i,(i.subtreeFlags&8772)!==0):Nr(r,i),Cr=f,_t=g}break;case 30:break;default:Nr(r,i)}}function yy(r){var s=r.alternate;s!==null&&(r.alternate=null,yy(s)),r.child=null,r.deletions=null,r.sibling=null,r.tag===5&&(s=r.stateNode,s!==null&&Xu(s)),r.stateNode=null,r.return=null,r.dependencies=null,r.memoizedProps=null,r.memoizedState=null,r.pendingProps=null,r.stateNode=null,r.updateQueue=null}var it=null,un=!1;function Or(r,s,i){for(i=i.child;i!==null;)by(r,s,i),i=i.sibling}function by(r,s,i){if(en&&typeof en.onCommitFiberUnmount=="function")try{en.onCommitFiberUnmount(Gs,i)}catch{}switch(i.tag){case 26:_t||or(i,s),Or(r,s,i),i.memoizedState?i.memoizedState.count--:i.stateNode&&(i=i.stateNode,i.parentNode.removeChild(i));break;case 27:_t||or(i,s);var c=it,f=un;ps(i.type)&&(it=i.stateNode,un=!1),Or(r,s,i),No(i.stateNode),it=c,un=f;break;case 5:_t||or(i,s);case 6:if(c=it,f=un,it=null,Or(r,s,i),it=c,un=f,it!==null)if(un)try{(it.nodeType===9?it.body:it.nodeName==="HTML"?it.ownerDocument.body:it).removeChild(i.stateNode)}catch(g){Ye(i,s,g)}else try{it.removeChild(i.stateNode)}catch(g){Ye(i,s,g)}break;case 18:it!==null&&(un?(r=it,ub(r.nodeType===9?r.body:r.nodeName==="HTML"?r.ownerDocument.body:r,i.stateNode),mi(r)):ub(it,i.stateNode));break;case 4:c=it,f=un,it=i.stateNode.containerInfo,un=!0,Or(r,s,i),it=c,un=f;break;case 0:case 11:case 14:case 15:os(2,i,s),_t||os(4,i,s),Or(r,s,i);break;case 1:_t||(or(i,s),c=i.stateNode,typeof c.componentWillUnmount=="function"&&dy(i,s,c)),Or(r,s,i);break;case 21:Or(r,s,i);break;case 22:_t=(c=_t)||i.memoizedState!==null,Or(r,s,i),_t=c;break;default:Or(r,s,i)}}function vy(r,s){if(s.memoizedState===null&&(r=s.alternate,r!==null&&(r=r.memoizedState,r!==null))){r=r.dehydrated;try{mi(r)}catch(i){Ye(s,s.return,i)}}}function wy(r,s){if(s.memoizedState===null&&(r=s.alternate,r!==null&&(r=r.memoizedState,r!==null&&(r=r.dehydrated,r!==null))))try{mi(r)}catch(i){Ye(s,s.return,i)}}function fS(r){switch(r.tag){case 31:case 13:case 19:var s=r.stateNode;return s===null&&(s=r.stateNode=new my),s;case 22:return r=r.stateNode,s=r._retryCache,s===null&&(s=r._retryCache=new my),s;default:throw Error(a(435,r.tag))}}function dc(r,s){var i=fS(r);s.forEach(function(c){if(!i.has(c)){i.add(c);var f=kS.bind(null,r,c);c.then(f,f)}})}function dn(r,s){var i=s.deletions;if(i!==null)for(var c=0;c<i.length;c++){var f=i[c],g=r,v=s,S=v;e:for(;S!==null;){switch(S.tag){case 27:if(ps(S.type)){it=S.stateNode,un=!1;break e}break;case 5:it=S.stateNode,un=!1;break e;case 3:case 4:it=S.stateNode.containerInfo,un=!0;break e}S=S.return}if(it===null)throw Error(a(160));by(g,v,f),it=null,un=!1,g=f.alternate,g!==null&&(g.return=null),f.return=null}if(s.subtreeFlags&13886)for(s=s.child;s!==null;)xy(s,r),s=s.sibling}var Kn=null;function xy(r,s){var i=r.alternate,c=r.flags;switch(r.tag){case 0:case 11:case 14:case 15:dn(s,r),hn(r),c&4&&(os(3,r,r.return),ko(3,r),os(5,r,r.return));break;case 1:dn(s,r),hn(r),c&512&&(_t||i===null||or(i,i.return)),c&64&&Cr&&(r=r.updateQueue,r!==null&&(c=r.callbacks,c!==null&&(i=r.shared.hiddenCallbacks,r.shared.hiddenCallbacks=i===null?c:i.concat(c))));break;case 26:var f=Kn;if(dn(s,r),hn(r),c&512&&(_t||i===null||or(i,i.return)),c&4){var g=i!==null?i.memoizedState:null;if(c=r.memoizedState,i===null)if(c===null)if(r.stateNode===null){e:{c=r.type,i=r.memoizedProps,f=f.ownerDocument||f;t:switch(c){case"title":g=f.getElementsByTagName("title")[0],(!g||g[Wi]||g[$t]||g.namespaceURI==="http://www.w3.org/2000/svg"||g.hasAttribute("itemprop"))&&(g=f.createElement(c),f.head.insertBefore(g,f.querySelector("head > title"))),Gt(g,c,i),g[$t]=r,Lt(g),c=g;break e;case"link":var v=xb("link","href",f).get(c+(i.href||""));if(v){for(var S=0;S<v.length;S++)if(g=v[S],g.getAttribute("href")===(i.href==null||i.href===""?null:i.href)&&g.getAttribute("rel")===(i.rel==null?null:i.rel)&&g.getAttribute("title")===(i.title==null?null:i.title)&&g.getAttribute("crossorigin")===(i.crossOrigin==null?null:i.crossOrigin)){v.splice(S,1);break t}}g=f.createElement(c),Gt(g,c,i),f.head.appendChild(g);break;case"meta":if(v=xb("meta","content",f).get(c+(i.content||""))){for(S=0;S<v.length;S++)if(g=v[S],g.getAttribute("content")===(i.content==null?null:""+i.content)&&g.getAttribute("name")===(i.name==null?null:i.name)&&g.getAttribute("property")===(i.property==null?null:i.property)&&g.getAttribute("http-equiv")===(i.httpEquiv==null?null:i.httpEquiv)&&g.getAttribute("charset")===(i.charSet==null?null:i.charSet)){v.splice(S,1);break t}}g=f.createElement(c),Gt(g,c,i),f.head.appendChild(g);break;default:throw Error(a(468,c))}g[$t]=r,Lt(g),c=g}r.stateNode=c}else kb(f,r.type,r.stateNode);else r.stateNode=wb(f,c,r.memoizedProps);else g!==c?(g===null?i.stateNode!==null&&(i=i.stateNode,i.parentNode.removeChild(i)):g.count--,c===null?kb(f,r.type,r.stateNode):wb(f,c,r.memoizedProps)):c===null&&r.stateNode!==null&&wh(r,r.memoizedProps,i.memoizedProps)}break;case 27:dn(s,r),hn(r),c&512&&(_t||i===null||or(i,i.return)),i!==null&&c&4&&wh(r,r.memoizedProps,i.memoizedProps);break;case 5:if(dn(s,r),hn(r),c&512&&(_t||i===null||or(i,i.return)),r.flags&32){f=r.stateNode;try{Ia(f,"")}catch(ue){Ye(r,r.return,ue)}}c&4&&r.stateNode!=null&&(f=r.memoizedProps,wh(r,f,i!==null?i.memoizedProps:f)),c&1024&&(_h=!0);break;case 6:if(dn(s,r),hn(r),c&4){if(r.stateNode===null)throw Error(a(162));c=r.memoizedProps,i=r.stateNode;try{i.nodeValue=c}catch(ue){Ye(r,r.return,ue)}}break;case 3:if(Ac=null,f=Kn,Kn=jc(s.containerInfo),dn(s,r),Kn=f,hn(r),c&4&&i!==null&&i.memoizedState.isDehydrated)try{mi(s.containerInfo)}catch(ue){Ye(r,r.return,ue)}_h&&(_h=!1,ky(r));break;case 4:c=Kn,Kn=jc(r.stateNode.containerInfo),dn(s,r),hn(r),Kn=c;break;case 12:dn(s,r),hn(r);break;case 31:dn(s,r),hn(r),c&4&&(c=r.updateQueue,c!==null&&(r.updateQueue=null,dc(r,c)));break;case 13:dn(s,r),hn(r),r.child.flags&8192&&r.memoizedState!==null!=(i!==null&&i.memoizedState!==null)&&(fc=Dt()),c&4&&(c=r.updateQueue,c!==null&&(r.updateQueue=null,dc(r,c)));break;case 22:f=r.memoizedState!==null;var C=i!==null&&i.memoizedState!==null,z=Cr,F=_t;if(Cr=z||f,_t=F||C,dn(s,r),_t=F,Cr=z,hn(r),c&8192)e:for(s=r.stateNode,s._visibility=f?s._visibility&-2:s._visibility|1,f&&(i===null||C||Cr||_t||ua(r)),i=null,s=r;;){if(s.tag===5||s.tag===26){if(i===null){C=i=s;try{if(g=C.stateNode,f)v=g.style,typeof v.setProperty=="function"?v.setProperty("display","none","important"):v.display="none";else{S=C.stateNode;var J=C.memoizedProps.style,q=J!=null&&J.hasOwnProperty("display")?J.display:null;S.style.display=q==null||typeof q=="boolean"?"":(""+q).trim()}}catch(ue){Ye(C,C.return,ue)}}}else if(s.tag===6){if(i===null){C=s;try{C.stateNode.nodeValue=f?"":C.memoizedProps}catch(ue){Ye(C,C.return,ue)}}}else if(s.tag===18){if(i===null){C=s;try{var H=C.stateNode;f?db(H,!0):db(C.stateNode,!1)}catch(ue){Ye(C,C.return,ue)}}}else if((s.tag!==22&&s.tag!==23||s.memoizedState===null||s===r)&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===r)break e;for(;s.sibling===null;){if(s.return===null||s.return===r)break e;i===s&&(i=null),s=s.return}i===s&&(i=null),s.sibling.return=s.return,s=s.sibling}c&4&&(c=r.updateQueue,c!==null&&(i=c.retryQueue,i!==null&&(c.retryQueue=null,dc(r,i))));break;case 19:dn(s,r),hn(r),c&4&&(c=r.updateQueue,c!==null&&(r.updateQueue=null,dc(r,c)));break;case 30:break;case 21:break;default:dn(s,r),hn(r)}}function hn(r){var s=r.flags;if(s&2){try{for(var i,c=r.return;c!==null;){if(fy(c)){i=c;break}c=c.return}if(i==null)throw Error(a(160));switch(i.tag){case 27:var f=i.stateNode,g=xh(r);uc(r,g,f);break;case 5:var v=i.stateNode;i.flags&32&&(Ia(v,""),i.flags&=-33);var S=xh(r);uc(r,S,v);break;case 3:case 4:var C=i.stateNode.containerInfo,z=xh(r);kh(r,z,C);break;default:throw Error(a(161))}}catch(F){Ye(r,r.return,F)}r.flags&=-3}s&4096&&(r.flags&=-4097)}function ky(r){if(r.subtreeFlags&1024)for(r=r.child;r!==null;){var s=r;ky(s),s.tag===5&&s.flags&1024&&s.stateNode.reset(),r=r.sibling}}function Nr(r,s){if(s.subtreeFlags&8772)for(s=s.child;s!==null;)gy(r,s.alternate,s),s=s.sibling}function ua(r){for(r=r.child;r!==null;){var s=r;switch(s.tag){case 0:case 11:case 14:case 15:os(4,s,s.return),ua(s);break;case 1:or(s,s.return);var i=s.stateNode;typeof i.componentWillUnmount=="function"&&dy(s,s.return,i),ua(s);break;case 27:No(s.stateNode);case 26:case 5:or(s,s.return),ua(s);break;case 22:s.memoizedState===null&&ua(s);break;case 30:ua(s);break;default:ua(s)}r=r.sibling}}function Mr(r,s,i){for(i=i&&(s.subtreeFlags&8772)!==0,s=s.child;s!==null;){var c=s.alternate,f=r,g=s,v=g.flags;switch(g.tag){case 0:case 11:case 15:Mr(f,g,i),ko(4,g);break;case 1:if(Mr(f,g,i),c=g,f=c.stateNode,typeof f.componentDidMount=="function")try{f.componentDidMount()}catch(z){Ye(c,c.return,z)}if(c=g,f=c.updateQueue,f!==null){var S=c.stateNode;try{var C=f.shared.hiddenCallbacks;if(C!==null)for(f.shared.hiddenCallbacks=null,f=0;f<C.length;f++)Xm(C[f],S)}catch(z){Ye(c,c.return,z)}}i&&v&64&&uy(g),_o(g,g.return);break;case 27:py(g);case 26:case 5:Mr(f,g,i),i&&c===null&&v&4&&hy(g),_o(g,g.return);break;case 12:Mr(f,g,i);break;case 31:Mr(f,g,i),i&&v&4&&vy(f,g);break;case 13:Mr(f,g,i),i&&v&4&&wy(f,g);break;case 22:g.memoizedState===null&&Mr(f,g,i),_o(g,g.return);break;case 30:break;default:Mr(f,g,i)}s=s.sibling}}function Sh(r,s){var i=null;r!==null&&r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(i=r.memoizedState.cachePool.pool),r=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(r=s.memoizedState.cachePool.pool),r!==i&&(r!=null&&r.refCount++,i!=null&&lo(i))}function jh(r,s){r=null,s.alternate!==null&&(r=s.alternate.memoizedState.cache),s=s.memoizedState.cache,s!==r&&(s.refCount++,r!=null&&lo(r))}function Yn(r,s,i,c){if(s.subtreeFlags&10256)for(s=s.child;s!==null;)_y(r,s,i,c),s=s.sibling}function _y(r,s,i,c){var f=s.flags;switch(s.tag){case 0:case 11:case 15:Yn(r,s,i,c),f&2048&&ko(9,s);break;case 1:Yn(r,s,i,c);break;case 3:Yn(r,s,i,c),f&2048&&(r=null,s.alternate!==null&&(r=s.alternate.memoizedState.cache),s=s.memoizedState.cache,s!==r&&(s.refCount++,r!=null&&lo(r)));break;case 12:if(f&2048){Yn(r,s,i,c),r=s.stateNode;try{var g=s.memoizedProps,v=g.id,S=g.onPostCommit;typeof S=="function"&&S(v,s.alternate===null?"mount":"update",r.passiveEffectDuration,-0)}catch(C){Ye(s,s.return,C)}}else Yn(r,s,i,c);break;case 31:Yn(r,s,i,c);break;case 13:Yn(r,s,i,c);break;case 23:break;case 22:g=s.stateNode,v=s.alternate,s.memoizedState!==null?g._visibility&2?Yn(r,s,i,c):So(r,s):g._visibility&2?Yn(r,s,i,c):(g._visibility|=2,si(r,s,i,c,(s.subtreeFlags&10256)!==0||!1)),f&2048&&Sh(v,s);break;case 24:Yn(r,s,i,c),f&2048&&jh(s.alternate,s);break;default:Yn(r,s,i,c)}}function si(r,s,i,c,f){for(f=f&&((s.subtreeFlags&10256)!==0||!1),s=s.child;s!==null;){var g=r,v=s,S=i,C=c,z=v.flags;switch(v.tag){case 0:case 11:case 15:si(g,v,S,C,f),ko(8,v);break;case 23:break;case 22:var F=v.stateNode;v.memoizedState!==null?F._visibility&2?si(g,v,S,C,f):So(g,v):(F._visibility|=2,si(g,v,S,C,f)),f&&z&2048&&Sh(v.alternate,v);break;case 24:si(g,v,S,C,f),f&&z&2048&&jh(v.alternate,v);break;default:si(g,v,S,C,f)}s=s.sibling}}function So(r,s){if(s.subtreeFlags&10256)for(s=s.child;s!==null;){var i=r,c=s,f=c.flags;switch(c.tag){case 22:So(i,c),f&2048&&Sh(c.alternate,c);break;case 24:So(i,c),f&2048&&jh(c.alternate,c);break;default:So(i,c)}s=s.sibling}}var jo=8192;function ai(r,s,i){if(r.subtreeFlags&jo)for(r=r.child;r!==null;)Sy(r,s,i),r=r.sibling}function Sy(r,s,i){switch(r.tag){case 26:ai(r,s,i),r.flags&jo&&r.memoizedState!==null&&XS(i,Kn,r.memoizedState,r.memoizedProps);break;case 5:ai(r,s,i);break;case 3:case 4:var c=Kn;Kn=jc(r.stateNode.containerInfo),ai(r,s,i),Kn=c;break;case 22:r.memoizedState===null&&(c=r.alternate,c!==null&&c.memoizedState!==null?(c=jo,jo=16777216,ai(r,s,i),jo=c):ai(r,s,i));break;default:ai(r,s,i)}}function jy(r){var s=r.alternate;if(s!==null&&(r=s.child,r!==null)){s.child=null;do s=r.sibling,r.sibling=null,r=s;while(r!==null)}}function To(r){var s=r.deletions;if((r.flags&16)!==0){if(s!==null)for(var i=0;i<s.length;i++){var c=s[i];Ut=c,Ay(c,r)}jy(r)}if(r.subtreeFlags&10256)for(r=r.child;r!==null;)Ty(r),r=r.sibling}function Ty(r){switch(r.tag){case 0:case 11:case 15:To(r),r.flags&2048&&os(9,r,r.return);break;case 3:To(r);break;case 12:To(r);break;case 22:var s=r.stateNode;r.memoizedState!==null&&s._visibility&2&&(r.return===null||r.return.tag!==13)?(s._visibility&=-3,hc(r)):To(r);break;default:To(r)}}function hc(r){var s=r.deletions;if((r.flags&16)!==0){if(s!==null)for(var i=0;i<s.length;i++){var c=s[i];Ut=c,Ay(c,r)}jy(r)}for(r=r.child;r!==null;){switch(s=r,s.tag){case 0:case 11:case 15:os(8,s,s.return),hc(s);break;case 22:i=s.stateNode,i._visibility&2&&(i._visibility&=-3,hc(s));break;default:hc(s)}r=r.sibling}}function Ay(r,s){for(;Ut!==null;){var i=Ut;switch(i.tag){case 0:case 11:case 15:os(8,i,s);break;case 23:case 22:if(i.memoizedState!==null&&i.memoizedState.cachePool!==null){var c=i.memoizedState.cachePool.pool;c!=null&&c.refCount++}break;case 24:lo(i.memoizedState.cache)}if(c=i.child,c!==null)c.return=i,Ut=c;else e:for(i=r;Ut!==null;){c=Ut;var f=c.sibling,g=c.return;if(yy(c),c===i){Ut=null;break e}if(f!==null){f.return=g,Ut=f;break e}Ut=g}}}var pS={getCacheForType:function(r){var s=Vt(wt),i=s.data.get(r);return i===void 0&&(i=r(),s.data.set(r,i)),i},cacheSignal:function(){return Vt(wt).controller.signal}},mS=typeof WeakMap=="function"?WeakMap:Map,Ge=0,Xe=null,Pe=null,Ue=0,Ke=0,Sn=null,ls=!1,ii=!1,Th=!1,Dr=0,mt=0,cs=0,da=0,Ah=0,jn=0,oi=0,Ao=null,f
vendor: 16,894 bytes, line 9
9n=null,Eh=!1,fc=0,Ey=0,pc=1/0,mc=null,us=null,Rt=0,ds=null,li=null,Pr=0,Rh=0,Ch=null,Ry=null,Eo=0,Oh=null;function Tn(){return(Ge&2)!==0&&Ue!==0?Ue&-Ue:L.T!==null?Uh():Ju()}function Cy(){if(jn===0)if((Ue&536870912)===0||Be){var r=Ca;Ca<<=1,(Ca&3932160)===0&&(Ca=262144),jn=r}else jn=536870912;return r=kn.current,r!==null&&(r.flags|=32),jn}function pn(r,s,i){(r===Xe&&(Ke===2||Ke===9)||r.cancelPendingCommit!==null)&&(ci(r,0),hs(r,Ue,jn,!1)),ct(r,i),((Ge&2)===0||r!==Xe)&&(r===Xe&&((Ge&2)===0&&(da|=i),mt===4&&hs(r,Ue,jn,!1)),lr(r))}function Oy(r,s,i){if((Ge&6)!==0)throw Error(a(327));var c=!i&&(s&127)===0&&(s&r.expiredLanes)===0||at(r,s),f=c?bS(r,s):Mh(r,s,!0),g=c;do{if(f===0){ii&&!c&&hs(r,s,0,!1);break}else{if(i=r.current.alternate,g&&!gS(i)){f=Mh(r,s,!1),g=!1;continue}if(f===2){if(g=s,r.errorRecoveryDisabledLanes&g)var v=0;else v=r.pendingLanes&-536870913,v=v!==0?v:v&536870912?536870912:0;if(v!==0){s=v;e:{var S=r;f=Ao;var C=S.current.memoizedState.isDehydrated;if(C&&(ci(S,v).flags|=256),v=Mh(S,v,!1),v!==2){if(Th&&!C){S.errorRecoveryDisabledLanes|=g,da|=g,f=4;break e}g=fn,fn=f,g!==null&&(fn===null?fn=g:fn.push.apply(fn,g))}f=v}if(g=!1,f!==2)continue}}if(f===1){ci(r,0),hs(r,s,0,!0);break}e:{switch(c=r,g=f,g){case 0:case 1:throw Error(a(345));case 4:if((s&4194048)!==s)break;case 6:hs(c,s,jn,!ls);break e;case 2:fn=null;break;case 3:case 5:break;default:throw Error(a(329))}if((s&62914560)===s&&(f=fc+300-Dt(),10<f)){if(hs(c,s,jn,!ls),je(c,0,!0)!==0)break e;Pr=s,c.timeoutHandle=lb(Ny.bind(null,c,i,fn,mc,Eh,s,jn,da,oi,ls,g,"Throttled",-0,0),f);break e}Ny(c,i,fn,mc,Eh,s,jn,da,oi,ls,g,null,-0,0)}}break}while(!0);lr(r)}function Ny(r,s,i,c,f,g,v,S,C,z,F,J,q,H){if(r.timeoutHandle=-1,J=s.subtreeFlags,J&8192||(J&16785408)===16785408){J={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:wr},Sy(s,g,J);var ue=(g&62914560)===g?fc-Dt():(g&4194048)===g?Ey-Dt():0;if(ue=ej(J,ue),ue!==null){Pr=g,r.cancelPendingCommit=ue(zy.bind(null,r,s,g,i,c,f,v,S,C,F,J,null,q,H)),hs(r,g,v,!z);return}}zy(r,s,g,i,c,f,v,S,C)}function gS(r){for(var s=r;;){var i=s.tag;if((i===0||i===11||i===15)&&s.flags&16384&&(i=s.updateQueue,i!==null&&(i=i.stores,i!==null)))for(var c=0;c<i.length;c++){var f=i[c],g=f.getSnapshot;f=f.value;try{if(!wn(g(),f))return!1}catch{return!1}}if(i=s.child,s.subtreeFlags&16384&&i!==null)i.return=s,s=i;else{if(s===r)break;for(;s.sibling===null;){if(s.return===null||s.return===r)return!0;s=s.return}s.sibling.return=s.return,s=s.sibling}}return!0}function hs(r,s,i,c){s&=~Ah,s&=~da,r.suspendedLanes|=s,r.pingedLanes&=~s,c&&(r.warmLanes|=s),c=r.expirationTimes;for(var f=s;0<f;){var g=31-Jt(f),v=1<<g;c[g]=-1,f&=~v}i!==0&&Ys(r,i,s)}function gc(){return(Ge&6)===0?(Ro(0),!1):!0}function Nh(){if(Pe!==null){if(Ke===0)var r=Pe.return;else r=Pe,Sr=na=null,Yd(r),Xa=null,uo=0,r=Pe;for(;r!==null;)cy(r.alternate,r),r=r.return;Pe=null}}function ci(r,s){var i=r.timeoutHandle;i!==-1&&(r.timeoutHandle=-1,LS(i)),i=r.cancelPendingCommit,i!==null&&(r.cancelPendingCommit=null,i()),Pr=0,Nh(),Xe=r,Pe=i=kr(r.current,null),Ue=s,Ke=0,Sn=null,ls=!1,ii=at(r,s),Th=!1,oi=jn=Ah=da=cs=mt=0,fn=Ao=null,Eh=!1,(s&8)!==0&&(s|=s&32);var c=r.entangledLanes;if(c!==0)for(r=r.entanglements,c&=s;0<c;){var f=31-Jt(c),g=1<<f;s|=r[f],c&=~g}return Dr=s,Ul(),i}function My(r,s){Oe=null,L.H=vo,s===Qa||s===Fl?(s=Wm(),Ke=3):s===Ld?(s=Wm(),Ke=4):Ke=s===uh?8:s!==null&&typeof s=="object"&&typeof s.then=="function"?6:1,Sn=s,Pe===null&&(mt=1,ac(r,Dn(s,r.current)))}function Dy(){var r=kn.current;return r===null?!0:(Ue&4194048)===Ue?In===null:(Ue&62914560)===Ue||(Ue&536870912)!==0?r===In:!1}function Py(){var r=L.H;return L.H=vo,r===null?vo:r}function Ly(){var r=L.A;return L.A=pS,r}function yc(){mt=4,ls||(Ue&4194048)!==Ue&&kn.current!==null||(ii=!0),(cs&134217727)===0&&(da&134217727)===0||Xe===null||hs(Xe,Ue,jn,!1)}function Mh(r,s,i){var c=Ge;Ge|=2;var f=Py(),g=Ly();(Xe!==r||Ue!==s)&&(mc=null,ci(r,s)),s=!1;var v=mt;e:do try{if(Ke!==0&&Pe!==null){var S=Pe,C=Sn;switch(Ke){case 8:Nh(),v=6;break e;case 3:case 2:case 9:case 6:kn.current===null&&(s=!0);var z=Ke;if(Ke=0,Sn=null,ui(r,S,C,z),i&&ii){v=0;break e}break;default:z=Ke,Ke=0,Sn=null,ui(r,S,C,z)}}yS(),v=mt;break}catch(F){My(r,F)}while(!0);return s&&r.shellSuspendCounter++,Sr=na=null,Ge=c,L.H=f,L.A=g,Pe===null&&(Xe=null,Ue=0,Ul()),v}function yS(){for(;Pe!==null;)Uy(Pe)}function bS(r,s){var i=Ge;Ge|=2;var c=Py(),f=Ly();Xe!==r||Ue!==s?(mc=null,pc=Dt()+500,ci(r,s)):ii=at(r,s);e:do try{if(Ke!==0&&Pe!==null){s=Pe;var g=Sn;t:switch(Ke){case 1:Ke=0,Sn=null,ui(r,s,g,1);break;case 2:case 9:if(Km(g)){Ke=0,Sn=null,Iy(s);break}s=function(){Ke!==2&&Ke!==9||Xe!==r||(Ke=7),lr(r)},g.then(s,s);break e;case 3:Ke=7;break e;case 4:Ke=5;break e;case 7:Km(g)?(Ke=0,Sn=null,Iy(s)):(Ke=0,Sn=null,ui(r,s,g,7));break;case 5:var v=null;switch(Pe.tag){case 26:v=Pe.memoizedState;case 5:case 27:var S=Pe;if(v?_b(v):S.stateNode.complete){Ke=0,Sn=null;var C=S.sibling;if(C!==null)Pe=C;else{var z=S.return;z!==null?(Pe=z,bc(z)):Pe=null}break t}}Ke=0,Sn=null,ui(r,s,g,5);break;case 6:Ke=0,Sn=null,ui(r,s,g,6);break;case 8:Nh(),mt=6;break e;default:throw Error(a(462))}}vS();break}catch(F){My(r,F)}while(!0);return Sr=na=null,L.H=c,L.A=f,Ge=i,Pe!==null?0:(Xe=null,Ue=0,Ul(),mt)}function vS(){for(;Pe!==null&&!Mt();)Uy(Pe)}function Uy(r){var s=oy(r.alternate,r,Dr);r.memoizedProps=r.pendingProps,s===null?bc(r):Pe=s}function Iy(r){var s=r,i=s.alternate;switch(s.tag){case 15:case 0:s=ty(i,s,s.pendingProps,s.type,void 0,Ue);break;case 11:s=ty(i,s,s.pendingProps,s.type.render,s.ref,Ue);break;case 5:Yd(s);default:cy(i,s),s=Pe=Lm(s,Dr),s=oy(i,s,Dr)}r.memoizedProps=r.pendingProps,s===null?bc(r):Pe=s}function ui(r,s,i,c){Sr=na=null,Yd(s),Xa=null,uo=0;var f=s.return;try{if(oS(r,f,s,i,Ue)){mt=1,ac(r,Dn(i,r.current)),Pe=null;return}}catch(g){if(f!==null)throw Pe=f,g;mt=1,ac(r,Dn(i,r.current)),Pe=null;return}s.flags&32768?(Be||c===1?r=!0:ii||(Ue&536870912)!==0?r=!1:(ls=r=!0,(c===2||c===9||c===3||c===6)&&(c=kn.current,c!==null&&c.tag===13&&(c.flags|=16384))),By(s,r)):bc(s)}function bc(r){var s=r;do{if((s.flags&32768)!==0){By(s,ls);return}r=s.return;var i=uS(s.alternate,s,Dr);if(i!==null){Pe=i;return}if(s=s.sibling,s!==null){Pe=s;return}Pe=s=r}while(s!==null);mt===0&&(mt=5)}function By(r,s){do{var i=dS(r.alternate,r);if(i!==null){i.flags&=32767,Pe=i;return}if(i=r.return,i!==null&&(i.flags|=32768,i.subtreeFlags=0,i.deletions=null),!s&&(r=r.sibling,r!==null)){Pe=r;return}Pe=r=i}while(r!==null);mt=6,Pe=null}function zy(r,s,i,c,f,g,v,S,C){r.cancelPendingCommit=null;do vc();while(Rt!==0);if((Ge&6)!==0)throw Error(a(327));if(s!==null){if(s===r.current)throw Error(a(177));if(g=s.lanes|s.childLanes,g|=xd,sn(r,i,g,v,S,C),r===Xe&&(Pe=Xe=null,Ue=0),li=s,ds=r,Pr=i,Rh=g,Ch=f,Ry=c,(s.subtreeFlags&10256)!==0||(s.flags&10256)!==0?(r.callbackNode=null,r.callbackPriority=0,_S(yr,function(){return Fy(),null})):(r.callbackNode=null,r.callbackPriority=0),c=(s.flags&13878)!==0,(s.subtreeFlags&13878)!==0||c){c=L.T,L.T=null,f=Y.p,Y.p=2,v=Ge,Ge|=4;try{hS(r,s,i)}finally{Ge=v,Y.p=f,L.T=c}}Rt=1,qy(),$y(),Hy()}}function qy(){if(Rt===1){Rt=0;var r=ds,s=li,i=(s.flags&13878)!==0;if((s.subtreeFlags&13878)!==0||i){i=L.T,L.T=null;var c=Y.p;Y.p=2;var f=Ge;Ge|=4;try{xy(s,r);var g=Fh,v=Am(r.containerInfo),S=g.focusedElem,C=g.selectionRange;if(v!==S&&S&&S.ownerDocument&&Tm(S.ownerDocument.documentElement,S)){if(C!==null&&gd(S)){var z=C.start,F=C.end;if(F===void 0&&(F=z),"selectionStart"in S)S.selectionStart=z,S.selectionEnd=Math.min(F,S.value.length);else{var J=S.ownerDocument||document,q=J&&J.defaultView||window;if(q.getSelection){var H=q.getSelection(),ue=S.textContent.length,we=Math.min(C.start,ue),Qe=C.end===void 0?we:Math.min(C.end,ue);!H.extend&&we>Qe&&(v=Qe,Qe=we,we=v);var P=jm(S,we),D=jm(S,Qe);if(P&&D&&(H.rangeCount!==1||H.anchorNode!==P.node||H.anchorOffset!==P.offset||H.focusNode!==D.node||H.focusOffset!==D.offset)){var B=J.createRange();B.setStart(P.node,P.offset),H.removeAllRanges(),we>Qe?(H.addRange(B),H.extend(D.node,D.offset)):(B.setEnd(D.node,D.offset),H.addRange(B))}}}}for(J=[],H=S;H=H.parentNode;)H.nodeType===1&&J.push({element:H,left:H.scrollLeft,top:H.scrollTop});for(typeof S.focus=="function"&&S.focus(),S=0;S<J.length;S++){var W=J[S];W.element.scrollLeft=W.left,W.element.scrollTop=W.top}}Oc=!!Vh,Fh=Vh=null}finally{Ge=f,Y.p=c,L.T=i}}r.current=s,Rt=2}}function $y(){if(Rt===2){Rt=0;var r=ds,s=li,i=(s.flags&8772)!==0;if((s.subtreeFlags&8772)!==0||i){i=L.T,L.T=null;var c=Y.p;Y.p=2;var f=Ge;Ge|=4;try{gy(r,s.alternate,s)}finally{Ge=f,Y.p=c,L.T=i}}Rt=3}}function Hy(){if(Rt===4||Rt===3){Rt=0,nr();var r=ds,s=li,i=Pr,c=Ry;(s.subtreeFlags&10256)!==0||(s.flags&10256)!==0?Rt=5:(Rt=0,li=ds=null,Vy(r,r.pendingLanes));var f=r.pendingLanes;if(f===0&&(us=null),Fn(i),s=s.stateNode,en&&typeof en.onCommitFiberRoot=="function")try{en.onCommitFiberRoot(Gs,s,void 0,(s.current.flags&128)===128)}catch{}if(c!==null){s=L.T,f=Y.p,Y.p=2,L.T=null;try{for(var g=r.onRecoverableError,v=0;v<c.length;v++){var S=c[v];g(S.value,{componentStack:S.stack})}}finally{L.T=s,Y.p=f}}(Pr&3)!==0&&vc(),lr(r),f=r.pendingLanes,(i&261930)!==0&&(f&42)!==0?r===Oh?Eo++:(Eo=0,Oh=r):Eo=0,Ro(0)}}function Vy(r,s){(r.pooledCacheLanes&=s)===0&&(s=r.pooledCache,s!=null&&(r.pooledCache=null,lo(s)))}function vc(){return qy(),$y(),Hy(),Fy()}function Fy(){if(Rt!==5)return!1;var r=ds,s=Rh;Rh=0;var i=Fn(Pr),c=L.T,f=Y.p;try{Y.p=32>i?32:i,L.T=null,i=Ch,Ch=null;var g=ds,v=Pr;if(Rt=0,li=ds=null,Pr=0,(Ge&6)!==0)throw Error(a(331));var S=Ge;if(Ge|=4,Ty(g.current),_y(g,g.current,v,i),Ge=S,Ro(0,!1),en&&typeof en.onPostCommitFiberRoot=="function")try{en.onPostCommitFiberRoot(Gs,g)}catch{}return!0}finally{Y.p=f,L.T=c,Vy(r,s)}}function Gy(r,s,i){s=Dn(i,s),s=ch(r.stateNode,s,2),r=ss(r,s,2),r!==null&&(ct(r,2),lr(r))}function Ye(r,s,i){if(r.tag===3)Gy(r,r,i);else for(;s!==null;){if(s.tag===3){Gy(s,r,i);break}else if(s.tag===1){var c=s.stateNode;if(typeof s.type.getDerivedStateFromError=="function"||typeof c.componentDidCatch=="function"&&(us===null||!us.has(c))){r=Dn(i,r),i=Kg(2),c=ss(s,i,2),c!==null&&(Yg(i,c,s,r),ct(c,2),lr(c));break}}s=s.return}}function Dh(r,s,i){var c=r.pingCache;if(c===null){c=r.pingCache=new mS;var f=new Set;c.set(s,f)}else f=c.get(s),f===void 0&&(f=new Set,c.set(s,f));f.has(i)||(Th=!0,f.add(i),r=wS.bind(null,r,s,i),s.then(r,r))}function wS(r,s,i){var c=r.pingCache;c!==null&&c.delete(s),r.pingedLanes|=r.suspendedLanes&i,r.warmLanes&=~i,Xe===r&&(Ue&i)===i&&(mt===4||mt===3&&(Ue&62914560)===Ue&&300>Dt()-fc?(Ge&2)===0&&ci(r,0):Ah|=i,oi===Ue&&(oi=0)),lr(r)}function Ky(r,s){s===0&&(s=Qt()),r=Xs(r,s),r!==null&&(ct(r,s),lr(r))}function xS(r){var s=r.memoizedState,i=0;s!==null&&(i=s.retryLane),Ky(r,i)}function kS(r,s){var i=0;switch(r.tag){case 31:case 13:var c=r.stateNode,f=r.memoizedState;f!==null&&(i=f.retryLane);break;case 19:c=r.stateNode;break;case 22:c=r.stateNode._retryCache;break;default:throw Error(a(314))}c!==null&&c.delete(s),Ky(r,i)}function _S(r,s){return vn(r,s)}var wc=null,di=null,Ph=!1,xc=!1,Lh=!1,fs=0;function lr(r){r!==di&&r.next===null&&(di===null?wc=di=r:di=di.next=r),xc=!0,Ph||(Ph=!0,jS())}function Ro(r,s){if(!Lh&&xc){Lh=!0;do for(var i=!1,c=wc;c!==null;){if(r!==0){var f=c.pendingLanes;if(f===0)var g=0;else{var v=c.suspendedLanes,S=c.pingedLanes;g=(1<<31-Jt(42|r)+1)-1,g&=f&~(v&~S),g=g&201326741?g&201326741|1:g?g|2:0}g!==0&&(i=!0,Jy(c,g))}else g=Ue,g=je(c,c===Xe?g:0,c.cancelPendingCommit!==null||c.timeoutHandle!==-1),(g&3)===0||at(c,g)||(i=!0,Jy(c,g));c=c.next}while(i);Lh=!1}}function SS(){Yy()}function Yy(){xc=Ph=!1;var r=0;fs!==0&&PS()&&(r=fs);for(var s=Dt(),i=null,c=wc;c!==null;){var f=c.next,g=Wy(c,s);g===0?(c.next=null,i===null?wc=f:i.next=f,f===null&&(di=i)):(i=c,(r!==0||(g&3)!==0)&&(xc=!0)),c=f}Rt!==0&&Rt!==5||Ro(r),fs!==0&&(fs=0)}function Wy(r,s){for(var i=r.suspendedLanes,c=r.pingedLanes,f=r.expirationTimes,g=r.pendingLanes&-62914561;0<g;){var v=31-Jt(g),S=1<<v,C=f[v];C===-1?((S&i)===0||(S&c)!==0)&&(f[v]=Pt(S,s)):C<=s&&(r.expiredLanes|=S),g&=~S}if(s=Xe,i=Ue,i=je(r,r===s?i:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),c=r.callbackNode,i===0||r===s&&(Ke===2||Ke===9)||r.cancelPendingCommit!==null)return c!==null&&c!==null&&Fs(c),r.callbackNode=null,r.callbackPriority=0;if((i&3)===0||at(r,i)){if(s=i&-i,s===r.callbackPriority)return s;switch(c!==null&&Fs(c),Fn(i)){case 2:case 8:i=Cn;break;case 32:i=yr;break;case 268435456:i=br;break;default:i=yr}return c=Zy.bind(null,r),i=vn(i,c),r.callbackPriority=s,r.callbackNode=i,s}return c!==null&&c!==null&&Fs(c),r.callbackPriority=2,r.callbackNode=null,2}function Zy(r,s){if(Rt!==0&&Rt!==5)return r.callbackNode=null,r.callbackPriority=0,null;var i=r.callbackNode;if(vc()&&r.callbackNode!==i)return null;var c=Ue;return c=je(r,r===Xe?c:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),c===0?null:(Oy(r,c,s),Wy(r,Dt()),r.callbackNode!=null&&r.callbackNode===i?Zy.bind(null,r):null)}function Jy(r,s){if(vc())return null;Oy(r,s,!0)}function jS(){US(function(){(Ge&6)!==0?vn(ft,SS):Yy()})}function Uh(){if(fs===0){var r=Za;r===0&&(r=Ra,Ra<<=1,(Ra&261888)===0&&(Ra=256)),fs=r}return fs}function Qy(r){return r==null||typeof r=="symbol"||typeof r=="boolean"?null:typeof r=="function"?r:Rl(""+r)}function Xy(r,s){var i=s.ownerDocument.createElement("input");return i.name=s.name,i.value=s.value,r.id&&i.setAttribute("form",r.id),s.parentNode.insertBefore(i,s),r=new FormData(r),i.parentNode.removeChild(i),r}function TS(r,s,i,c,f){if(s==="submit"&&i&&i.stateNode===f){var g=Qy((f[ln]||null).action),v=c.submitter;v&&(s=(s=v[ln]||null)?Qy(s.formAction):v.getAttribute("formAction"),s!==null&&(g=s,v=null));var S=new Ml("action","action",null,c,f);r.push({event:S,listeners:[{instance:null,listener:function(){if(c.defaultPrevented){if(fs!==0){var C=v?Xy(f,v):new FormData(f);rh(i,{pending:!0,data:C,method:f.method,action:g},null,C)}}else typeof g=="function"&&(S.preventDefault(),C=v?Xy(f,v):new FormData(f),rh(i,{pending:!0,data:C,method:f.method,action:g},g,C))},currentTarget:f}]})}}for(var Ih=0;Ih<wd.length;Ih++){var Bh=wd[Ih],AS=Bh.toLowerCase(),ES=Bh[0].toUpperCase()+Bh.slice(1);Gn(AS,"on"+ES)}Gn(Cm,"onAnimationEnd"),Gn(Om,"onAnimationIteration"),Gn(Nm,"onAnimationStart"),Gn("dblclick","onDoubleClick"),Gn("focusin","onFocus"),Gn("focusout","onBlur"),Gn(V_,"onTransitionRun"),Gn(F_,"onTransitionStart"),Gn(G_,"onTransitionCancel"),Gn(Mm,"onTransitionEnd"),La("onMouseEnter",["mouseout","mouseover"]),La("onMouseLeave",["mouseout","mouseover"]),La("onPointerEnter",["pointerout","pointerover"]),La("onPointerLeave",["pointerout","pointerover"]),Ws("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Ws("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Ws("onBeforeInput",["compositionend","keypress","textInput","paste"]),Ws("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Ws("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Ws("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Co="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(" "),RS=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Co));function eb(r,s){s=(s&4)!==0;for(var i=0;i<r.length;i++){var c=r[i],f=c.event;c=c.listeners;e:{var g=void 0;if(s)for(var v=c.length-1;0<=v;v--){var S=c[v],C=S.instance,z=S.currentTarget;if(S=S.listener,C!==g&&f.isPropagationStopped())break e;g=S,f.currentTarget=z;try{g(f)}catch(F){Ll(F)}f.currentTarget=null,g=C}else for(v=0;v<c.length;v++){if(S=c[v],C=S.instance,z=S.currentTarget,S=S.listener,C!==g&&f.isPropagationStopped())break e;g=S,f.currentTarget=z;try{g(f)}catch(F){Ll(F)}f.currentTarget=null,g=C}}}}function Le(r,s){var i=s[Qu];i===void 0&&(i=s[Qu]=new Set);var c=r+"__bubble";i.has(c)||(tb(s,r,2,!1),i.add(c))}function zh(r,s,i){var c=0;s&&(c|=4),tb(i,r,c,s)}var kc="_reactListening"+Math.random().toString(36).slice(2);function qh(r){if(!r[kc]){r[kc]=!0,Yp.forEach(function(i){i!=="selectionchange"&&(RS.has(i)||zh(i,!1,r),zh(i,!0,r))});var s=r.nodeType===9?r:r.ownerDocument;s===null||s[kc]||(s[kc]=!0,zh("selectionchange",!1,s))}}function tb(r,s,i,c){switch(Cb(s)){case 2:var f=rj;break;case 8:f=sj;break;default:f=nf}i=f.bind(null,s,i,r),f=void 0,!od||s!=="touchstart"&&s!=="touchmove"&&s!=="wheel"||(f=!0),c?f!==void 0?r.addEventListener(s,i,{capture:!0,passive:f}):r.addEventListener(s,i,!0):f!==void 0?r.addEventListener(s,i,{passive:f}):r.addEventListener(s,i,!1)}function $h(r,s,i,c,f){var g=c;if((s&1)===0&&(s&2)===0&&c!==null)e:for(;;){if(c===null)return;var v=c.tag;if(v===3||v===4){var S=c.stateNode.containerInfo;
vendor: 2,649 bytes, line 9
9if(S===f)break;if(v===4)for(v=c.return;v!==null;){var C=v.tag;if((C===3||C===4)&&v.stateNode.containerInfo===f)return;v=v.return}for(;S!==null;){if(v=Ma(S),v===null)return;if(C=v.tag,C===5||C===6||C===26||C===27){c=g=v;continue e}S=S.parentNode}}c=c.return}im(function(){var z=g,F=ad(i),J=[];e:{var q=Dm.get(r);if(q!==void 0){var H=Ml,ue=r;switch(r){case"keypress":if(Ol(i)===0)break e;case"keydown":case"keyup":H=k_;break;case"focusin":ue="focus",H=dd;break;case"focusout":ue="blur",H=dd;break;case"beforeblur":case"afterblur":H=dd;break;case"click":if(i.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":H=cm;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":H=u_;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":H=j_;break;case Cm:case Om:case Nm:H=f_;break;case Mm:H=A_;break;case"scroll":case"scrollend":H=l_;break;case"wheel":H=R_;break;case"copy":case"cut":case"paste":H=m_;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":H=dm;break;case"toggle":case"beforetoggle":H=O_}var we=(s&4)!==0,Qe=!we&&(r==="scroll"||r==="scrollend"),P=we?q!==null?q+"Capture":null:q;we=[];for(var D=z,B;D!==null;){var W=D;if(B=W.stateNode,W=W.tag,W!==5&&W!==26&&W!==27||B===null||P===null||(W=Ji(D,P),W!=null&&we.push(Oo(D,W,B))),Qe)break;D=D.return}0<we.length&&(q=new H(q,ue,null,i,F),J.push({event:q,listeners:we}))}}if((s&7)===0){e:{if(q=r==="mouseover"||r==="pointerover",H=r==="mouseout"||r==="pointerout",q&&i!==sd&&(ue=i.relatedTarget||i.fromElement)&&(Ma(ue)||ue[Na]))break e;if((H||q)&&(q=F.window===F?F:(q=F.ownerDocument)?q.defaultView||q.parentWindow:window,H?(ue=i.relatedTarget||i.toElement,H=z,ue=ue?Ma(ue):null,ue!==null&&(Qe=l(ue),we=ue.tag,ue!==Qe||we!==5&&we!==27&&we!==6)&&(ue=null)):(H=null,ue=z),H!==ue)){if(we=cm,W="onMouseLeave",P="onMouseEnter",D="mouse",(r==="pointerout"||r==="pointerover")&&(we=dm,W="onPointerLeave",P="onPointerEnter",D="pointer"),Qe=H==null?q:Zi(H),B=ue==null?q:Zi(ue),q=new we(W,D+"leave",H,i,F),q.target=Qe,q.relatedTarget=B,W=null,Ma(F)===z&&(we=new we(P,D+"enter",ue,i,F),we.target=B,we.relatedTarget=Qe,W=we),Qe=W,H&&ue)t:{for(we=CS,P=H,D=ue,B=0,W=P;W;W=we(W))B++;W=0;for(var be=D;be;be=we(be))W++;for(;0<B-W;)P=we(P),B--;for(;0<W-B;)D=we(D),W--;for(;B--;){if(P===D||D!==null&&P===D.alternate){we=P;break t}P=we(P),D=we(D)}we=null}else we=null;H!==null&&nb(J,q,H,we,!1),ue!==null&&Qe!==null&&nb(J,Qe,ue,we,!0)}}
vendor: 5,189 bytes, lines 9-10
9e:{if(q=z?Zi(z):window,H=q.nodeName&&q.nodeName.toLowerCase(),H==="select"||H==="input"&&q.type==="file")var $e=vm;else if(ym(q))if(wm)$e=q_;else{$e=B_;var me=I_}else H=q.nodeName,!H||H.toLowerCase()!=="input"||q.type!=="checkbox"&&q.type!=="radio"?z&&rd(z.elementType)&&($e=vm):$e=z_;if($e&&($e=$e(r,z))){bm(J,$e,i,F);break e}me&&me(r,q,z),r==="focusout"&&z&&q.type==="number"&&z.memoizedProps.value!=null&&nd(q,"number",q.value)}switch(me=z?Zi(z):window,r){case"focusin":(ym(me)||me.contentEditable==="true")&&($a=me,yd=z,ao=null);break;case"focusout":ao=yd=$a=null;break;case"mousedown":bd=!0;break;case"contextmenu":case"mouseup":case"dragend":bd=!1,Em(J,i,F);break;case"selectionchange":if(H_)break;case"keydown":case"keyup":Em(J,i,F)}var Ne;if(fd)e:{switch(r){case"compositionstart":var Ie="onCompositionStart";break e;case"compositionend":Ie="onCompositionEnd";break e;case"compositionupdate":Ie="onCompositionUpdate";break e}Ie=void 0}else qa?mm(r,i)&&(Ie="onCompositionEnd"):r==="keydown"&&i.keyCode===229&&(Ie="onCompositionStart");Ie&&(hm&&i.locale!=="ko"&&(qa||Ie!=="onCompositionStart"?Ie==="onCompositionEnd"&&qa&&(Ne=om()):(Jr=F,ld="value"in Jr?Jr.value:Jr.textContent,qa=!0)),me=_c(z,Ie),0<me.length&&(Ie=new um(Ie,r,null,i,F),J.push({event:Ie,listeners:me}),Ne?Ie.data=Ne:(Ne=gm(i),Ne!==null&&(Ie.data=Ne)))),(Ne=M_?D_(r,i):P_(r,i))&&(Ie=_c(z,"onBeforeInput"),0<Ie.length&&(me=new um("onBeforeInput","beforeinput",null,i,F),J.push({event:me,listeners:Ie}),me.data=Ne)),TS(J,r,z,i,F)}eb(J,s)})}function Oo(r,s,i){return{instance:r,listener:s,currentTarget:i}}function _c(r,s){for(var i=s+"Capture",c=[];r!==null;){var f=r,g=f.stateNode;if(f=f.tag,f!==5&&f!==26&&f!==27||g===null||(f=Ji(r,i),f!=null&&c.unshift(Oo(r,f,g)),f=Ji(r,s),f!=null&&c.push(Oo(r,f,g))),r.tag===3)return c;r=r.return}return[]}function CS(r){if(r===null)return null;do r=r.return;while(r&&r.tag!==5&&r.tag!==27);return r||null}function nb(r,s,i,c,f){for(var g=s._reactName,v=[];i!==null&&i!==c;){var S=i,C=S.alternate,z=S.stateNode;if(S=S.tag,C!==null&&C===c)break;S!==5&&S!==26&&S!==27||z===null||(C=z,f?(z=Ji(i,g),z!=null&&v.unshift(Oo(i,z,C))):f||(z=Ji(i,g),z!=null&&v.push(Oo(i,z,C)))),i=i.return}v.length!==0&&r.push({event:s,listeners:v})}var OS=/\r\n?/g,NS=/\u0000|\uFFFD/g;function rb(r){return(typeof r=="string"?r:""+r).replace(OS,` 10`).replace(NS,"")}function sb(r,s){return s=rb(s),rb(r)===s}function Je(r,s,i,c,f,g){switch(i){case"children":typeof c=="string"?s==="body"||s==="textarea"&&c===""||Ia(r,c):(typeof c=="number"||typeof c=="bigint")&&s!=="body"&&Ia(r,""+c);break;case"className":Al(r,"class",c);break;case"tabIndex":Al(r,"tabindex",c);break;case"dir":case"role":case"viewBox":case"width":case"height":Al(r,i,c);break;case"style":sm(r,c,g);break;case"data":if(s!=="object"){Al(r,"data",c);break}case"src":case"href":if(c===""&&(s!=="a"||i!=="href")){r.removeAttribute(i);break}if(c==null||typeof c=="function"||typeof c=="symbol"||typeof c=="boolean"){r.removeAttribute(i);break}c=Rl(""+c),r.setAttribute(i,c);break;case"action":case"formAction":if(typeof c=="function"){r.setAttribute(i,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof g=="function"&&(i==="formAction"?(s!=="input"&&Je(r,s,"name",f.name,f,null),Je(r,s,"formEncType",f.formEncType,f,null),Je(r,s,"formMethod",f.formMethod,f,null),Je(r,s,"formTarget",f.formTarget,f,null)):(Je(r,s,"encType",f.encType,f,null),Je(r,s,"method",f.method,f,null),Je(r,s,"target",f.target,f,null)));if(c==null||typeof c=="symbol"||typeof c=="boolean"){r.removeAttribute(i);break}c=Rl(""+c),r.setAttribute(i,c);break;case"onClick":c!=null&&(r.onclick=wr);break;case"onScroll":c!=null&&Le("scroll",r);break;case"onScrollEnd":c!=null&&Le("scrollend",r);break;case"dangerouslySetInnerHTML":if(c!=null){if(typeof c!="object"||!("__html"in c))throw Error(a(61));if(i=c.__html,i!=null){if(f.children!=null)throw Error(a(60));r.innerHTML=i}}break;case"multiple":r.multiple=c&&typeof c!="function"&&typeof c!="symbol";break;case"muted":r.muted=c&&typeof c!="function"&&typeof c!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(c==null||typeof c=="function"||typeof c=="boolean"||typeof c=="symbol"){r.removeAttribute("xlink:href");break}i=Rl(""+c),r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",i);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":c!=null&&typeof c!="function"&&typeof c!="symbol"?r.setAttribute(i,""+c):r.removeAttribute(i);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInl
10ine":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":c&&typeof c!="function"&&typeof c!="symbol"?r.setAttribute(i,""):r.removeAttribute(i);break;case"capture":case"download":c===!0?r.setAttribute(i,""):c!==!1&&c!=null&&typeof c!="function"&&typeof c!="symbol"?r.setAttribute(i,c):r.removeAttribute(i);break;case"cols":case"rows":case"size":case"span":c!=null&&typeof c!="function"&&typeof c!="symbol"&&!isNaN(c)&&1<=c?r.setAttribute(i,c):r.removeAttribute(i);break;case"rowSpan":case"start":c==null||typeof c=="function"||typeof c=="symbol"||isNaN(c)?r.removeAttribute(i):r.setAttribute(i,c);break;case"popover":Le("beforetoggle",r),Le("toggle",r),Tl(r,"popover",c);break;case"xlinkActuate":vr(r,"http://www.w3.org/1999/xlink","xlink:actuate",c);break;case"xlinkArcrole":vr(r,"http://www.w3.org/1999/xlink","xlink:arcrole",c);break;case"xlinkRole":vr(r,"http://www.w3.org/1999/xlink","xlink:role",c);break;case"xlinkShow":vr(r,"http://www.w3.org/1999/xlink","xlink:show",c);break;case"xlinkTitle":vr(r,"http://www.w3.org/1999/xlink","xlink:title",c);break;case"xlinkType":vr(r,"http://www.w3.org/1999/xlink","xlink:type",c);break;case"xmlBase":vr(r,"http://www.w3.org/XML/1998/namespace","xml:base",c);break;case"xmlLang":vr(r,"http://www.w3.org/XML/1998/namespace","xml:lang",c);break;case"xmlSpace":vr(r,"http://www.w3.org/XML/1998/namespace","xml:space",c);break;case"is":Tl(r,"is",c);break;case"innerText":case"textContent":break;default:(!(2<i.length)||i[0]!=="o"&&i[0]!=="O"||i[1]!=="n"&&i[1]!=="N")&&(i=i_.get(i)||i,Tl(r,i,c))}}function Hh(r,s,i,c,f,g){switch(i){case"style":sm(r,c,g);break;case"dangerouslySetInnerHTML":if(c!=null){if(typeof c!="object"||!("__html"in c))throw Error(a(61));if(i=c.__html,i!=null){if(f.children!=null)throw Error(a(60));r.innerHTML=i}}break;case"children":typeof c=="string"?Ia(r,c):(typeof c=="number"||typeof c=="bigint")&&Ia(r,""+c);break;case"onScroll":c!=null&&Le("scroll",r);break;case"onScrollEnd":c!=null&&Le("scrollend",r);break;case"onClick":c!=null&&(r.onclick=wr);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Wp.hasOwnProperty(i))e:{if(i[0]==="o"&&i[1]==="n"&&(f=i.endsWith("Capture"),s=i.slice(2,f?i.length-7:void 0),g=r[ln]||null,g=g!=null?g[i]:null,typeof g=="function"&&r.removeEventListener(s,g,f),typeof c=="function")){typeof g!="function"&&g!==null&&(i in r?r[i]=null:r.hasAttribute(i)&&r.removeAttribute(i)),r.addEventListener(s,c,f);break e}i in r?r[i]=c:c===!0?r.setAttribute(i,""):Tl(r,i,c)}}}function Gt(r,s,i){switch(s){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Le("error",r),Le("load",r);var c=!1,f=!1,g;for(g in i)if(i.hasOwnProperty(g)){var v=i[g];if(v!=null)switch(g){case"src":c=!0;break;case"srcSet":f=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(a(137,s));default:Je(r,s,g,v,i,null)}}f&&Je(r,s,"srcSet",i.srcSet,i,null),c&&Je(r,s,"src",i.src,i,null);return;case"input":Le("invalid",r);var S=g=v=f=null,C=null,z=null;for(c in i)if(i.hasOwnProperty(c)){var F=i[c];if(F!=null)switch(c){case"name":f=F;break;case"type":v=F;break;case"checked":C=F;break;case"defaultChecked":z=F;break;case"value":g=F;break;case"defaultValue":S=F;break;case"children":case"dangerouslySetInnerHTML":if(F!=null)throw Error(a(137,s));break;default:Je(r,s,c,F,i,null)}}em(r,g,S,C,z,v,f,!1);return;case"select":Le("invalid",r),c=v=g=null;for(f in i)if(i.hasOwnProperty(f)&&(S=i[f],S!=null))switch(f){case"value":g=S;break;case"defaultValue":v=S;break;case"multiple":c=S;default:Je(r,s,f,S,i,null)}s=g,i=v,r.multiple=!!c,s!=null?Ua(r,!!c,s,!1):i!=null&&Ua(r,!!c,i,!0);return;case"textarea":Le("invalid",r),g=f=c=null;for(v in i)if(i.hasOwnProperty(v)&&(S=i[v],S!=null))switch(v){case"value":c=S;break;case"defaultValue":f=S;break;case"children":g=S;break;case"dangerouslySetInnerHTML":if(S!=null)throw Error(a(91));break;default:Je(r,s,v,S,i,null)}nm(r,c,f,g);return;case"option":for(C in i)i.hasOwnProperty(C)&&(c=i[C],c!=null)&&(C==="selected"?r.selected=c&&typeof c!="function"&&typeof c!="symbol":Je(r,s,C,c,i,null));return;case"dialog":Le("beforetoggle",r),Le("toggle",r),Le("cancel",r),Le("close",r);break;case"iframe":case"object":Le("load",r);break;case"video":case"audio":for(c=0;c<Co.length;c++)Le(Co[c],r);break;case"image":Le("error",r),Le("load",r);break;case"details":Le("toggle",r);break;case"embed":case"source":case"link":Le("error",r),Le("load",r);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(z in i)if(i.hasOwnProperty(z)&&(c=i[z],c!=null))switch(z){case"children":case"dangerouslySetInnerHTML":throw Error(a(137,s));default:Je(r,s,z,c,i,null)}return;default:if(rd(s)){for(F in i)i.hasOwnProperty(F)&&(c=i[F],c!==void 0&&Hh(r,s,F,c,i,void 0));return}}for(S in i)i.hasOwnProperty(S)&&(c=i[S],c!=null&&Je(r,s,S,c,i,null))}function MS(r,s,i,c){switch(s){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var f=null,g=null,v=null,S=null,C=null,z=null,F=null;for(H in i){var J=i[H];if(i.hasOwnProperty(H)&&J!=null)switch(H){case"checked":break;case"value":break;case"defaultValue":C=J;default:c.hasOwnProperty(H)||Je(r,s,H,null,c,J)}}for(var q in c){var H=c[q];if(J=i[q],c.hasOwnProperty(q)&&(H!=null||J!=null))switch(q){case"type":g=H;break;case"name":f=H;break;case"checked":z=H;break;case"defaultChecked":F=H;break;case"value":v=H;break;case"defaultValue":S=H;break;case"children":case"dangerouslySetInnerHTML":if(H!=null)throw Error(a(137,s));break;default:H!==J&&Je(r,s,q,H,c,J)}}td(r,v,S,C,z,F,g,f);return;case"select":H=v=S=q=null;for(g in i)if(C=i[g],i.hasOwnProperty(g)&&C!=null)switch(g){case"value":break;case"multiple":H=C;default:c.hasOwnProperty(g)||Je(r,s,g,null,c,C)}for(f in c)if(g=c[f],C=i[f],c.hasOwnProperty(f)&&(g!=null||C!=null))switch(f){case"value":q=g;break;case"defaultValue":S=g;break;case"multiple":v=g;default:g!==C&&Je(r,s,f,g,c,C)}s=S,i=v,c=H,q!=null?Ua(r,!!i,q,!1):!!c!=!!i&&(s!=null?Ua(r,!!i,s,!0):Ua(r,!!i,i?[]:"",!1));return;case"textarea":H=q=null;for(S in i)if(f=i[S],i.hasOwnProperty(S)&&f!=null&&!c.hasOwnProperty(S))switch(S){case"value":break;case"children":break;default:Je(r,s,S,null,c,f)}for(v in c)if(f=c[v],g=i[v],c.hasOwnProperty(v)&&(f!=null||g!=null))switch(v){case"value":q=f;break;case"defaultValue":H=f;break;case"children":break;case"dangerouslySetInnerHTML":if(f!=null)throw Error(a(91));break;default:f!==g&&Je(r,s,v,f,c,g)}tm(r,q,H);return;case"option":for(var ue in i)q=i[ue],i.hasOwnProperty(ue)&&q!=null&&!c.hasOwnProperty(ue)&&(ue==="selected"?r.selected=!1:Je(r,s,ue,null,c,q));
vendor: 6,093 bytes, line 10
10for(C in c)q=c[C],H=i[C],c.hasOwnProperty(C)&&q!==H&&(q!=null||H!=null)&&(C==="selected"?r.selected=q&&typeof q!="function"&&typeof q!="symbol":Je(r,s,C,q,c,H));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var we in i)q=i[we],i.hasOwnProperty(we)&&q!=null&&!c.hasOwnProperty(we)&&Je(r,s,we,null,c,q);for(z in c)if(q=c[z],H=i[z],c.hasOwnProperty(z)&&q!==H&&(q!=null||H!=null))switch(z){case"children":case"dangerouslySetInnerHTML":if(q!=null)throw Error(a(137,s));break;default:Je(r,s,z,q,c,H)}return;default:if(rd(s)){for(var Qe in i)q=i[Qe],i.hasOwnProperty(Qe)&&q!==void 0&&!c.hasOwnProperty(Qe)&&Hh(r,s,Qe,void 0,c,q);for(F in c)q=c[F],H=i[F],!c.hasOwnProperty(F)||q===H||q===void 0&&H===void 0||Hh(r,s,F,q,c,H);return}}for(var P in i)q=i[P],i.hasOwnProperty(P)&&q!=null&&!c.hasOwnProperty(P)&&Je(r,s,P,null,c,q);for(J in c)q=c[J],H=i[J],!c.hasOwnProperty(J)||q===H||q==null&&H==null||Je(r,s,J,q,c,H)}function ab(r){switch(r){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function DS(){if(typeof performance.getEntriesByType=="function"){for(var r=0,s=0,i=performance.getEntriesByType("resource"),c=0;c<i.length;c++){var f=i[c],g=f.transferSize,v=f.initiatorType,S=f.duration;if(g&&S&&ab(v)){for(v=0,S=f.responseEnd,c+=1;c<i.length;c++){var C=i[c],z=C.startTime;if(z>S)break;var F=C.transferSize,J=C.initiatorType;F&&ab(J)&&(C=C.responseEnd,v+=F*(C<S?1:(S-z)/(C-z)))}if(--c,s+=8*(g+v)/(f.duration/1e3),r++,10<r)break}}if(0<r)return s/r/1e6}return navigator.connection&&(r=navigator.connection.downlink,typeof r=="number")?r:5}var Vh=null,Fh=null;function Sc(r){return r.nodeType===9?r:r.ownerDocument}function ib(r){switch(r){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function ob(r,s){if(r===0)switch(s){case"svg":return 1;case"math":return 2;default:return 0}return r===1&&s==="foreignObject"?0:r}function Gh(r,s){return r==="textarea"||r==="noscript"||typeof s.children=="string"||typeof s.children=="number"||typeof s.children=="bigint"||typeof s.dangerouslySetInnerHTML=="object"&&s.dangerouslySetInnerHTML!==null&&s.dangerouslySetInnerHTML.__html!=null}var Kh=null;function PS(){var r=window.event;return r&&r.type==="popstate"?r===Kh?!1:(Kh=r,!0):(Kh=null,!1)}var lb=typeof setTimeout=="function"?setTimeout:void 0,LS=typeof clearTimeout=="function"?clearTimeout:void 0,cb=typeof Promise=="function"?Promise:void 0,US=typeof queueMicrotask=="function"?queueMicrotask:typeof cb<"u"?function(r){return cb.resolve(null).then(r).catch(IS)}:lb;function IS(r){setTimeout(function(){throw r})}function ps(r){return r==="head"}function ub(r,s){var i=s,c=0;do{var f=i.nextSibling;if(r.removeChild(i),f&&f.nodeType===8)if(i=f.data,i==="/$"||i==="/&"){if(c===0){r.removeChild(f),mi(s);return}c--}else if(i==="$"||i==="$?"||i==="$~"||i==="$!"||i==="&")c++;else if(i==="html")No(r.ownerDocument.documentElement);else if(i==="head"){i=r.ownerDocument.head,No(i);for(var g=i.firstChild;g;){var v=g.nextSibling,S=g.nodeName;g[Wi]||S==="SCRIPT"||S==="STYLE"||S==="LINK"&&g.rel.toLowerCase()==="stylesheet"||i.removeChild(g),g=v}}else i==="body"&&No(r.ownerDocument.body);i=f}while(i);mi(s)}function db(r,s){var i=r;r=0;do{var c=i.nextSibling;if(i.nodeType===1?s?(i._stashedDisplay=i.style.display,i.style.display="none"):(i.style.display=i._stashedDisplay||"",i.getAttribute("style")===""&&i.removeAttribute("style")):i.nodeType===3&&(s?(i._stashedText=i.nodeValue,i.nodeValue=""):i.nodeValue=i._stashedText||""),c&&c.nodeType===8)if(i=c.data,i==="/$"){if(r===0)break;r--}else i!=="$"&&i!=="$?"&&i!=="$~"&&i!=="$!"||r++;i=c}while(i)}function Yh(r){var s=r.firstChild;for(s&&s.nodeType===10&&(s=s.nextSibling);s;){var i=s;switch(s=s.nextSibling,i.nodeName){case"HTML":case"HEAD":case"BODY":Yh(i),Xu(i);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(i.rel.toLowerCase()==="stylesheet")continue}r.removeChild(i)}}function BS(r,s,i,c){for(;r.nodeType===1;){var f=i;if(r.nodeName.toLowerCase()!==s.toLowerCase()){if(!c&&(r.nodeName!=="INPUT"||r.type!=="hidden"))break}else if(c){if(!r[Wi])switch(s){case"meta":if(!r.hasAttribute("itemprop"))break;return r;case"link":if(g=r.getAttribute("rel"),g==="stylesheet"&&r.hasAttribute("data-precedence"))break;if(g!==f.rel||r.getAttribute("href")!==(f.href==null||f.href===""?null:f.href)||r.getAttribute("crossorigin")!==(f.crossOrigin==null?null:f.crossOrigin)||r.getAttribute("title")!==(f.title==null?null:f.title))break;return r;case"style":if(r.hasAttribute("data-precedence"))break;return r;case"script":if(g=r.getAttribute("src"),(g!==(f.src==null?null:f.src)||r.getAttribute("type")!==(f.type==null?null:f.type)||r.getAttribute("crossorigin")!==(f.crossOrigin==null?null:f.crossOrigin))&&g&&r.hasAttribute("async")&&!r.hasAttribute("itemprop"))break;return r;default:return r}}else if(s==="input"&&r.type==="hidden"){var g=f.name==null?null:""+f.name;if(f.type==="hidden"&&r.getAttribute("name")===g)return r}else return r;if(r=Bn(r.nextSibling),r===null)break}return null}function zS(r,s,i){if(s==="")return null;for(;r.nodeType!==3;)if((r.nodeType!==1||r.nodeName!=="INPUT"||r.type!=="hidden")&&!i||(r=Bn(r.nextSibling),r===null))return null;return r}function hb(r,s){for(;r.nodeType!==8;)if((r.nodeType!==1||r.nodeName!=="INPUT"||r.type!=="hidden")&&!s||(r=Bn(r.nextSibling),r===null))return null;return r}function Wh(r){return r.data==="$?"||r.data==="$~"}function Zh(r){return r.data==="$!"||r.data==="$?"&&r.ownerDocument.readyState!=="loading"}function qS(r,s){var i=r.ownerDocument;if(r.data==="$~")r._reactRetry=s;else if(r.data!=="$?"||i.readyState!=="loading")s();else{var c=function(){s(),i.removeEventListener("DOMContentLoaded",c)};i.addEventListener("DOMContentLoaded",c),r._reactRetry=c}}function Bn(r){for(;r!=null;r=r.nextSibling){var s=r.nodeType;if(s===1||s===3)break;if(s===8){if(s=r.data,s==="$"||s==="$!"||s==="$?"||s==="$~"||s==="&"||s==="F!"||s==="F")break;
vendor: 5,062 bytes, line 10
10if(s==="/$"||s==="/&")return null}}return r}var Jh=null;function fb(r){r=r.nextSibling;for(var s=0;r;){if(r.nodeType===8){var i=r.data;if(i==="/$"||i==="/&"){if(s===0)return Bn(r.nextSibling);s--}else i!=="$"&&i!=="$!"&&i!=="$?"&&i!=="$~"&&i!=="&"||s++}r=r.nextSibling}return null}function pb(r){r=r.previousSibling;for(var s=0;r;){if(r.nodeType===8){var i=r.data;if(i==="$"||i==="$!"||i==="$?"||i==="$~"||i==="&"){if(s===0)return r;s--}else i!=="/$"&&i!=="/&"||s++}r=r.previousSibling}return null}function mb(r,s,i){switch(s=Sc(i),r){case"html":if(r=s.documentElement,!r)throw Error(a(452));return r;case"head":if(r=s.head,!r)throw Error(a(453));return r;case"body":if(r=s.body,!r)throw Error(a(454));return r;default:throw Error(a(451))}}function No(r){for(var s=r.attributes;s.length;)r.removeAttributeNode(s[0]);Xu(r)}var zn=new Map,gb=new Set;function jc(r){return typeof r.getRootNode=="function"?r.getRootNode():r.nodeType===9?r:r.ownerDocument}var Lr=Y.d;Y.d={f:$S,r:HS,D:VS,C:FS,L:GS,m:KS,X:WS,S:YS,M:ZS};function $S(){var r=Lr.f(),s=gc();return r||s}function HS(r){var s=Da(r);s!==null&&s.tag===5&&s.type==="form"?Mg(s):Lr.r(r)}var hi=typeof document>"u"?null:document;function yb(r,s,i){var c=hi;if(c&&typeof s=="string"&&s){var f=Nn(s);f='link[rel="'+r+'"][href="'+f+'"]',typeof i=="string"&&(f+='[crossorigin="'+i+'"]'),gb.has(f)||(gb.add(f),r={rel:r,crossOrigin:i,href:s},c.querySelector(f)===null&&(s=c.createElement("link"),Gt(s,"link",r),Lt(s),c.head.appendChild(s)))}}function VS(r){Lr.D(r),yb("dns-prefetch",r,null)}function FS(r,s){Lr.C(r,s),yb("preconnect",r,s)}function GS(r,s,i){Lr.L(r,s,i);var c=hi;if(c&&r&&s){var f='link[rel="preload"][as="'+Nn(s)+'"]';s==="image"&&i&&i.imageSrcSet?(f+='[imagesrcset="'+Nn(i.imageSrcSet)+'"]',typeof i.imageSizes=="string"&&(f+='[imagesizes="'+Nn(i.imageSizes)+'"]')):f+='[href="'+Nn(r)+'"]';var g=f;switch(s){case"style":g=fi(r);break;case"script":g=pi(r)}zn.has(g)||(r=y({rel:"preload",href:s==="image"&&i&&i.imageSrcSet?void 0:r,as:s},i),zn.set(g,r),c.querySelector(f)!==null||s==="style"&&c.querySelector(Mo(g))||s==="script"&&c.querySelector(Do(g))||(s=c.createElement("link"),Gt(s,"link",r),Lt(s),c.head.appendChild(s)))}}function KS(r,s){Lr.m(r,s);var i=hi;if(i&&r){var c=s&&typeof s.as=="string"?s.as:"script",f='link[rel="modulepreload"][as="'+Nn(c)+'"][href="'+Nn(r)+'"]',g=f;switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":g=pi(r)}if(!zn.has(g)&&(r=y({rel:"modulepreload",href:r},s),zn.set(g,r),i.querySelector(f)===null)){switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(i.querySelector(Do(g)))return}c=i.createElement("link"),Gt(c,"link",r),Lt(c),i.head.appendChild(c)}}}function YS(r,s,i){Lr.S(r,s,i);var c=hi;if(c&&r){var f=Pa(c).hoistableStyles,g=fi(r);s=s||"default";var v=f.get(g);if(!v){var S={loading:0,preload:null};if(v=c.querySelector(Mo(g)))S.loading=5;else{r=y({rel:"stylesheet",href:r,"data-precedence":s},i),(i=zn.get(g))&&Qh(r,i);var C=v=c.createElement("link");Lt(C),Gt(C,"link",r),C._p=new Promise(function(z,F){C.onload=z,C.onerror=F}),C.addEventListener("load",function(){S.loading|=1}),C.addEventListener("error",function(){S.loading|=2}),S.loading|=4,Tc(v,s,c)}v={type:"stylesheet",instance:v,count:1,state:S},f.set(g,v)}}}function WS(r,s){Lr.X(r,s);var i=hi;if(i&&r){var c=Pa(i).hoistableScripts,f=pi(r),g=c.get(f);g||(g=i.querySelector(Do(f)),g||(r=y({src:r,async:!0},s),(s=zn.get(f))&&Xh(r,s),g=i.createElement("script"),Lt(g),Gt(g,"link",r),i.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},c.set(f,g))}}function ZS(r,s){Lr.M(r,s);var i=hi;if(i&&r){var c=Pa(i).hoistableScripts,f=pi(r),g=c.get(f);g||(g=i.querySelector(Do(f)),g||(r=y({src:r,async:!0,type:"module"},s),(s=zn.get(f))&&Xh(r,s),g=i.createElement("script"),Lt(g),Gt(g,"link",r),i.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},c.set(f,g))}}function bb(r,s,i,c){var f=(f=ce.current)?jc(f):null;if(!f)throw Error(a(446));switch(r){case"meta":case"title":return null;case"style":return typeof i.precedence=="string"&&typeof i.href=="string"?(s=fi(i.href),i=Pa(f).hoistableStyles,c=i.get(s),c||(c={type:"style",instance:null,count:0,state:null},i.set(s,c)),c):{type:"void",instance:null,count:0,state:null};case"link":if(i.rel==="stylesheet"&&typeof i.href=="string"&&typeof i.precedence=="string"){r=fi(i.href);var g=Pa(f).hoistableStyles,v=g.get(r);if(v||(f=f.ownerDocument||f,v={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},g.set(r,v),(g=f.querySelector(Mo(r)))&&!g._p&&(v.instance=g,v.state.loading=5),zn.has(r)||(i={rel:"preload",as:"style",href:i.href,crossOrigin:i.crossOrigin,integrity:i.integrity,media:i.media,hrefLang:i.hrefLang,referrerPolicy:i.referrerPolicy},zn.set(r,i),g||JS(f,r,i,v.state))),s&&c===null)throw Error(a(528,""));return v}if(s&&c!==null)throw Error(a(529,""));return null;case"script":return s=i.async,i=i.src,typeof i=="string"&&s&&typeof s!="function"&&typeof s!="symbol"?
vendor: 4,192 bytes, line 10
10(s=pi(i),i=Pa(f).hoistableScripts,c=i.get(s),c||(c={type:"script",instance:null,count:0,state:null},i.set(s,c)),c):{type:"void",instance:null,count:0,state:null};default:throw Error(a(444,r))}}function fi(r){return'href="'+Nn(r)+'"'}function Mo(r){return'link[rel="stylesheet"]['+r+"]"}function vb(r){return y({},r,{"data-precedence":r.precedence,precedence:null})}function JS(r,s,i,c){r.querySelector('link[rel="preload"][as="style"]['+s+"]")?c.loading=1:(s=r.createElement("link"),c.preload=s,s.addEventListener("load",function(){return c.loading|=1}),s.addEventListener("error",function(){return c.loading|=2}),Gt(s,"link",i),Lt(s),r.head.appendChild(s))}function pi(r){return'[src="'+Nn(r)+'"]'}function Do(r){return"script[async]"+r}function wb(r,s,i){if(s.count++,s.instance===null)switch(s.type){case"style":var c=r.querySelector('style[data-href~="'+Nn(i.href)+'"]');if(c)return s.instance=c,Lt(c),c;var f=y({},i,{"data-href":i.href,"data-precedence":i.precedence,href:null,precedence:null});return c=(r.ownerDocument||r).createElement("style"),Lt(c),Gt(c,"style",f),Tc(c,i.precedence,r),s.instance=c;case"stylesheet":f=fi(i.href);var g=r.querySelector(Mo(f));if(g)return s.state.loading|=4,s.instance=g,Lt(g),g;c=vb(i),(f=zn.get(f))&&Qh(c,f),g=(r.ownerDocument||r).createElement("link"),Lt(g);var v=g;return v._p=new Promise(function(S,C){v.onload=S,v.onerror=C}),Gt(g,"link",c),s.state.loading|=4,Tc(g,i.precedence,r),s.instance=g;case"script":return g=pi(i.src),(f=r.querySelector(Do(g)))?(s.instance=f,Lt(f),f):(c=i,(f=zn.get(g))&&(c=y({},i),Xh(c,f)),r=r.ownerDocument||r,f=r.createElement("script"),Lt(f),Gt(f,"link",c),r.head.appendChild(f),s.instance=f);case"void":return null;default:throw Error(a(443,s.type))}else s.type==="stylesheet"&&(s.state.loading&4)===0&&(c=s.instance,s.state.loading|=4,Tc(c,i.precedence,r));return s.instance}function Tc(r,s,i){for(var c=i.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),f=c.length?c[c.length-1]:null,g=f,v=0;v<c.length;v++){var S=c[v];if(S.dataset.precedence===s)g=S;else if(g!==f)break}g?g.parentNode.insertBefore(r,g.nextSibling):(s=i.nodeType===9?i.head:i,s.insertBefore(r,s.firstChild))}function Qh(r,s){r.crossOrigin==null&&(r.crossOrigin=s.crossOrigin),r.referrerPolicy==null&&(r.referrerPolicy=s.referrerPolicy),r.title==null&&(r.title=s.title)}function Xh(r,s){r.crossOrigin==null&&(r.crossOrigin=s.crossOrigin),r.referrerPolicy==null&&(r.referrerPolicy=s.referrerPolicy),r.integrity==null&&(r.integrity=s.integrity)}var Ac=null;function xb(r,s,i){if(Ac===null){var c=new Map,f=Ac=new Map;f.set(i,c)}else f=Ac,c=f.get(i),c||(c=new Map,f.set(i,c));if(c.has(r))return c;for(c.set(r,null),i=i.getElementsByTagName(r),f=0;f<i.length;f++){var g=i[f];if(!(g[Wi]||g[$t]||r==="link"&&g.getAttribute("rel")==="stylesheet")&&g.namespaceURI!=="http://www.w3.org/2000/svg"){var v=g.getAttribute(s)||"";v=r+v;var S=c.get(v);S?S.push(g):c.set(v,[g])}}return c}function kb(r,s,i){r=r.ownerDocument||r,r.head.insertBefore(i,s==="title"?r.querySelector("head > title"):null)}function QS(r,s,i){if(i===1||s.itemProp!=null)return!1;switch(r){case"meta":case"title":return!0;case"style":if(typeof s.precedence!="string"||typeof s.href!="string"||s.href==="")break;return!0;case"link":if(typeof s.rel!="string"||typeof s.href!="string"||s.href===""||s.onLoad||s.onError)break;return s.rel==="stylesheet"?(r=s.disabled,typeof s.precedence=="string"&&r==null):!0;case"script":if(s.async&&typeof s.async!="function"&&typeof s.async!="symbol"&&!s.onLoad&&!s.onError&&s.src&&typeof s.src=="string")return!0}return!1}function _b(r){return!(r.type==="stylesheet"&&(r.state.loading&3)===0)}function XS(r,s,i,c){if(i.type==="stylesheet"&&(typeof c.media!="string"||matchMedia(c.media).matches!==!1)&&(i.state.loading&4)===0){if(i.instance===null){var f=fi(c.href),g=s.querySelector(Mo(f));if(g){s=g._p,s!==null&&typeof s=="object"&&typeof s.then=="function"&&(r.count++,r=Ec.bind(r),s.then(r,r)),i.state.loading|=4,i.instance=g,Lt(g);return}g=s.ownerDocument||s,c=vb(c),(f=zn.get(f))&&Qh(c,f),g=g.createElement("link"),Lt(g);var v=g;v._p=new Promise(function(S,C){v.onload=S,v.onerror=C}),Gt(g,"link",c),i.instance=g}
vendor: 1,059 bytes, line 10
10r.stylesheets===null&&(r.stylesheets=new Map),r.stylesheets.set(i,s),(s=i.state.preload)&&(i.state.loading&3)===0&&(r.count++,i=Ec.bind(r),s.addEventListener("load",i),s.addEventListener("error",i))}}var ef=0;function ej(r,s){return r.stylesheets&&r.count===0&&Cc(r,r.stylesheets),0<r.count||0<r.imgCount?function(i){var c=setTimeout(function(){if(r.stylesheets&&Cc(r,r.stylesheets),r.unsuspend){var g=r.unsuspend;r.unsuspend=null,g()}},6e4+s);0<r.imgBytes&&ef===0&&(ef=62500*DS());var f=setTimeout(function(){if(r.waitingForImages=!1,r.count===0&&(r.stylesheets&&Cc(r,r.stylesheets),r.unsuspend)){var g=r.unsuspend;r.unsuspend=null,g()}},(r.imgBytes>ef?50:800)+s);return r.unsuspend=i,function(){r.unsuspend=null,clearTimeout(c),clearTimeout(f)}}:null}function Ec(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Cc(this,this.stylesheets);else if(this.unsuspend){var r=this.unsuspend;this.unsuspend=null,r()}}}var Rc=null;function Cc(r,s){r.stylesheets=null,r.unsuspend!==null&&(r.count++,Rc=new Map,s.forEac
vendor: 9,856 bytes, line 10
10h(tj,r),Rc=null,Ec.call(r))}function tj(r,s){if(!(s.state.loading&4)){var i=Rc.get(r);if(i)var c=i.get(null);else{i=new Map,Rc.set(r,i);for(var f=r.querySelectorAll("link[data-precedence],style[data-precedence]"),g=0;g<f.length;g++){var v=f[g];(v.nodeName==="LINK"||v.getAttribute("media")!=="not all")&&(i.set(v.dataset.precedence,v),c=v)}c&&i.set(null,c)}f=s.instance,v=f.getAttribute("data-precedence"),g=i.get(v)||c,g===c&&i.set(null,f),i.set(v,f),this.count++,c=Ec.bind(this),f.addEventListener("load",c),f.addEventListener("error",c),g?g.parentNode.insertBefore(f,g.nextSibling):(r=r.nodeType===9?r.head:r,r.insertBefore(f,r.firstChild)),s.state.loading|=4}}var Po={$$typeof:R,Provider:null,Consumer:null,_currentValue:ie,_currentValue2:ie,_threadCount:0};function nj(r,s,i,c,f,g,v,S,C){this.tag=1,this.containerInfo=r,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Wr(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wr(0),this.hiddenUpdates=Wr(null),this.identifierPrefix=c,this.onUncaughtError=f,this.onCaughtError=g,this.onRecoverableError=v,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=C,this.incompleteTransitions=new Map}function Sb(r,s,i,c,f,g,v,S,C,z,F,J){return r=new nj(r,s,i,v,C,z,F,J,S),s=1,g===!0&&(s|=24),g=xn(3,null,null,s),r.current=g,g.stateNode=r,s=Md(),s.refCount++,r.pooledCache=s,s.refCount++,g.memoizedState={element:c,isDehydrated:i,cache:s},Ud(g),r}function jb(r){return r?(r=Fa,r):Fa}function Tb(r,s,i,c,f,g){f=jb(f),c.context===null?c.context=f:c.pendingContext=f,c=rs(s),c.payload={element:i},g=g===void 0?null:g,g!==null&&(c.callback=g),i=ss(r,c,s),i!==null&&(pn(i,r,s),fo(i,r,s))}function Ab(r,s){if(r=r.memoizedState,r!==null&&r.dehydrated!==null){var i=r.retryLane;r.retryLane=i!==0&&i<s?i:s}}function tf(r,s){Ab(r,s),(r=r.alternate)&&Ab(r,s)}function Eb(r){if(r.tag===13||r.tag===31){var s=Xs(r,67108864);s!==null&&pn(s,r,67108864),tf(r,67108864)}}function Rb(r){if(r.tag===13||r.tag===31){var s=Tn();s=Oa(s);var i=Xs(r,s);i!==null&&pn(i,r,s),tf(r,s)}}var Oc=!0;function rj(r,s,i,c){var f=L.T;L.T=null;var g=Y.p;try{Y.p=2,nf(r,s,i,c)}finally{Y.p=g,L.T=f}}function sj(r,s,i,c){var f=L.T;L.T=null;var g=Y.p;try{Y.p=8,nf(r,s,i,c)}finally{Y.p=g,L.T=f}}function nf(r,s,i,c){if(Oc){var f=rf(c);if(f===null)$h(r,s,c,Nc,i),Ob(r,c);else if(ij(f,r,s,i,c))c.stopPropagation();else if(Ob(r,c),s&4&&-1<aj.indexOf(r)){for(;f!==null;){var g=Da(f);if(g!==null)switch(g.tag){case 3:if(g=g.stateNode,g.current.memoizedState.isDehydrated){var v=sr(g.pendingLanes);if(v!==0){var S=g;for(S.pendingLanes|=2,S.entangledLanes|=2;v;){var C=1<<31-Jt(v);S.entanglements[1]|=C,v&=~C}lr(g),(Ge&6)===0&&(pc=Dt()+500,Ro(0))}}break;case 31:case 13:S=Xs(g,2),S!==null&&pn(S,g,2),gc(),tf(g,2)}if(g=rf(c),g===null&&$h(r,s,c,Nc,i),g===f)break;f=g}f!==null&&c.stopPropagation()}else $h(r,s,c,null,i)}}function rf(r){return r=ad(r),sf(r)}var Nc=null;function sf(r){if(Nc=null,r=Ma(r),r!==null){var s=l(r);if(s===null)r=null;else{var i=s.tag;if(i===13){if(r=u(s),r!==null)return r;r=null}else if(i===31){if(r=h(s),r!==null)return r;r=null}else if(i===3){if(s.stateNode.current.memoizedState.isDehydrated)return s.tag===3?s.stateNode.containerInfo:null;r=null}else s!==r&&(r=null)}}return Nc=r,null}function Cb(r){switch(r){case"beforetoggle":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"toggle":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 2;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"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(We()){case ft:return 2;case Cn:return 8;case yr:case Ki:return 32;case br:return 268435456;default:return 32}default:return 32}}var af=!1,ms=null,gs=null,ys=null,Lo=new Map,Uo=new Map,bs=[],aj="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".split(" ");function Ob(r,s){switch(r){case"focusin":case"focusout":ms=null;break;case"dragenter":case"dragleave":gs=null;break;case"mouseover":case"mouseout":ys=null;break;case"pointerover":case"pointerout":Lo.delete(s.pointerId);break;case"gotpointercapture":case"lostpointercapture":Uo.delete(s.pointerId)}}function Io(r,s,i,c,f,g){return r===null||r.nativeEvent!==g?(r={blockedOn:s,domEventName:i,eventSystemFlags:c,nativeEvent:g,targetContainers:[f]},s!==null&&(s=Da(s),s!==null&&Eb(s)),r):(r.eventSystemFlags|=c,s=r.targetContainers,f!==null&&s.indexOf(f)===-1&&s.push(f),r)}function ij(r,s,i,c,f){switch(s){case"focusin":return ms=Io(ms,r,s,i,c,f),!0;case"dragenter":return gs=Io(gs,r,s,i,c,f),!0;case"mouseover":return ys=Io(ys,r,s,i,c,f),!0;case"pointerover":var g=f.pointerId;return Lo.set(g,Io(Lo.get(g)||null,r,s,i,c,f)),!0;case"gotpointercapture":return g=f.pointerId,Uo.set(g,Io(Uo.get(g)||null,r,s,i,c,f)),!0}return!1}function Nb(r){var s=Ma(r.target);if(s!==null){var i=l(s);if(i!==null){if(s=i.tag,s===13){if(s=u(i),s!==null){r.blockedOn=s,Gp(r.priority,function(){Rb(i)});return}}else if(s===31){if(s=h(i),s!==null){r.blockedOn=s,Gp(r.priority,function(){Rb(i)});return}}else if(s===3&&i.stateNode.current.memoizedState.isDehydrated){r.blockedOn=i.tag===3?i.stateNode.containerInfo:null;return}}}r.blockedOn=null}function Mc(r){if(r.blockedOn!==null)return!1;for(var s=r.targetContainers;0<s.length;){var i=rf(r.nativeEvent);if(i===null){i=r.nativeEvent;var c=new i.constructor(i.type,i);sd=c,i.target.dispatchEvent(c),sd=null}else return s=Da(i),s!==null&&Eb(s),r.blockedOn=i,!1;s.shift()}return!0}function Mb(r,s,i){Mc(r)&&i.delete(s)}function oj(){af=!1,ms!==null&&Mc(ms)&&(ms=null),gs!==null&&Mc(gs)&&(gs=null),ys!==null&&Mc(ys)&&(ys=null),Lo.forEach(Mb),Uo.forEach(Mb)}function Dc(r,s){r.blockedOn===s&&(r.blockedOn=null,af||(af=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,oj)))}var Pc=null;function Db(r){Pc!==r&&(Pc=r,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Pc===r&&(Pc=null);for(var s=0;s<r.length;s+=3){var i=r[s],c=r[s+1],f=r[s+2];if(typeof c!="function"){if(sf(c||i)===null)continue;break}var g=Da(i);g!==null&&(r.splice(s,3),s-=3,rh(g,{pending:!0,data:f,method:i.method,action:c},c,f))}}))}function mi(r){function s(C){return Dc(C,r)}ms!==null&&Dc(ms,r),gs!==null&&Dc(gs,r),ys!==null&&Dc(ys,r),Lo.forEach(s),Uo.forEach(s);for(var i=0;i<bs.length;i++){var c=bs[i];c.blockedOn===r&&(c.blockedOn=null)}for(;0<bs.length&&(i=bs[0],i.blockedOn===null);)Nb(i),i.blockedOn===null&&bs.shift();if(i=(r.ownerDocument||r).$$reactFormReplay,i!=null)for(c=0;c<i.length;c+=3){var f=i[c],g=i[c+1],v=f[ln]||null;if(typeof g=="function")v||Db(i);else if(v){var S=null;if(g&&g.hasAttribute("formAction")){if(f=g,v=g[ln]||null)S=v.formAction;else if(sf(f)!==null)continue}else S=v.action;typeof S=="function"?i[c+1]=S:(i.splice(c,3),c-=3),Db(i)}}}function Pb(){function r(g){g.canIntercept&&g.info==="react-transition"&&g.intercept({handler:function(){return new Promise(function(v){return f=v})},focusReset:"manual",scroll:"manual"})}function s(){f!==null&&(f(),f=null),c||setTimeout(i,20)}function i(){if(!c&&!navigation.transition){var g=navigation.currentEntry;g&&g.url!=null&&navigation.navigate(g.url,{state:g.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var c=!1,f=null;return navigation.addEventListener("navigate",r),navigation.addEventListener("navigatesuccess",s),navigation.addEventListener("navigateerror",s),setTimeout(i,100),function(){c=!0,navigation.removeEventListener("navigate",r),navigation.removeEventListener("navigatesuccess",s),navigation.removeEventListener("navigateerror",s),f!==null&&(f(),f=null)}}}function of(r){this._internalRoot=r}Lc.prototype.render=of.prototype.render=function(r){var s=this._internalRoot;if(s===null)throw Error(a(409));var i=s.current,c=Tn();Tb(i,c,r,s,null,null)},Lc.prototype.unmount=of.prototype.unmount=function(){var r=this._internalRoot;if(r!==null){this._internalRoot=null;var s=r.containerInfo;Tb(r.current,2,null,r,null,null),gc(),s[Na]=null}};function Lc(r){this._internalRoot=r}Lc.prototype.unstable_scheduleHydration=function(r){if(r){var s=Ju();r={blockedOn:null,target:r,priority:s};for(var i=0;i<bs.length&&s!==0&&s<bs[i].priority;i++);bs.splice(i,0,r),i===0&&Nb(r)}};var Lb=e.version;if(Lb!=="19.2.5")throw Error(a(527,Lb,"19.2.5"));Y.findDOMNode=function(r){var s=r._reactInternals;if(s===void 0)throw typeof r.render=="function"?Error(a(188)):(r=Object.keys(r).join(","),Error(a(268,r)));return r=m(s),r=r!==null?b(r):null,r=r===null?null:r.stateNode,r};var lj={bundleType:0,version:"19.2.5",rendererPackageName:"react-dom",currentDispatcherRef:L,reconcilerVersion:"19.2.5"};
10if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Uc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Uc.isDisabled&&Uc.supportsFiber)try{Gs=Uc.inject(lj),en=Uc}catch{}}return zo.createRoot=function(r,s){if(!o(r))throw Error(a(299));var i=!1,c="",f=Hg,g=Vg,v=Fg;return s!=null&&(s.unstable_strictMode===!0&&(i=!0),s.identifierPrefix!==void 0&&(c=s.identifierPrefix),s.onUncaughtError!==void 0&&(f=s.onUncaughtError),s.onCaughtError!==void 0&&(g=s.onCaughtError),s.onRecoverableError!==void 0&&(v=s.onRecoverableError)),s=Sb(r,1,!1,null,null,i,c,null,f,g,v,Pb),r[Na]=s.current,qh(r),new of(s)},zo.hydrateRoot=function(r,s,i){if(!o(r))throw Error(a(299));var c=!1,f="",g=Hg,v=Vg,S=Fg,C=null;return i!=null&&(i.unstable_strictMode===!0&&(c=!0),i.identifierPrefix!==void 0&&(f=i.identifierPrefix),i.onUncaughtError!==void 0&&(g=i.onUncaughtError),i.onCaughtError!==void 0&&(v=i.onCaughtError),i.onRecoverableError!==void 0&&(S=i.onRecoverableError),i.formState!==void 0&&(C=i.formState)),s=Sb(r,1,!0,s,i??null,c,f,C,g,v,S,Pb),s.context=jb(null),i=s.current,c=Tn(),c=Oa(c),f=rs(c),f.callback=null,ss(i,f,c),i=c,s.current.lanes=i,ct(s,i),lr(s),r[Na]=s.current,qh(r),new Lc(s)},zo.version="19.2.5",zo}var Gb;function bj(){if(Gb)return uf.exports;Gb=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),uf.exports=yj(),uf.exports}var vj=bj(),wj="__TSS_CONTEXT",Bf=Symbol.for("TSS_SERVER_FUNCTION"),Kb=Symbol.for("TSS_SERVER_FUNCTION_FACTORY"),xj="application/x-tss-framed",Ur={JSON:0,CHUNK:1,END:2,ERROR:3},kj=/;\s*v=(\d+)/;function _j(t){const e=t.match(kj);return e?parseInt(e[1],10):void 0}function Sj(t){const e=_j(t);if(e!==void 0&&e!==1)throw new Error(`Incompatible framed protocol version: server=${e}, client=1. Please ensure client and server are using compatible versions.`)}var _p=()=>window.__TSS_START_OPTIONS__,h0=!1;function nl(t){return t[t.length-1]}function jj(t){return typeof t=="function"}function As(t,e){return jj(t)?t(e):t}var Tj=Object.prototype.hasOwnProperty,Yb=Object.prototype.propertyIsEnumerable,Aj=()=>Object.create(null),ha=(t,e)=>ya(t,e,Aj);function ya(t,e,n=()=>({}),a=0){if(t===e)return t;if(a>500)return e;const o=e,l=Jb(t)&&Jb(o);if(!l&&!(Bi(t)&&Bi(o)))return o;const u=l?t:Wb(t);if(!u)return o;const h=l?o:Wb(o);if(!h)return o;const p=u.length,m=h.length,b=l?new Array(m):n();let y=0;for(let w=0;w<m;w++){const x=l?w:h[w],k=t[x],A=o[x];if(k===A){b[x]=k,(l?w<p:Tj.call(t,x))&&y++;continue}if(k===null||A===null||typeof k!="object"||typeof A!="object"){b[x]=A;continue}const _=ya(k,A,n,a+1);b[x]=_,_===k&&y++}return p===m&&y===p?t:b}function Wb(t){const e=Object.getOwnPropertyNames(t);for(const o of e)if(!Yb.call(t,o))return!1;const n=Object.getOwnPropertySymbols(t);if(n.length===0)return e;const a=e;for(const o of n){if(!Yb.call(t,o))return!1;a.push(o)}return a}function Bi(t){if(!Zb(t))return!1;const e=t.constructor;if(typeof e>"u")return!0;const n=e.prototype;return!(!Zb(n)||!n.hasOwnProperty("isPrototypeOf"))}function Zb(t){return Object.prototype.toString.call(t)==="[object Object]"}function Jb(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function yn(t,e,n){if(t===e)return!0;if(typeof t!=typeof e)return!1;if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let a=0,o=t.length;a<o;a++)if(!yn(t[a],e[a],n))return!1;return!0}if(Bi(t)&&Bi(e)){const a=n?.ignoreUndefined??!0;if(n?.partial){for(const u in e)if((!a||e[u]!==void 0)&&!yn(t[u],e[u],n))return!1;return!0}let o=0;if(!a)o=Object.keys(t).length;else for(const u in t)t[u]!==void 0&&o++;let l=0;for(const u in e)if((!a||e[u]!==void 0)&&(l++,l>o||!yn(t[u],e[u],n)))return!1;return o===l}return!1}function Sa(t){let e,n;const a=new Promise((o,l)=>{e=o,n=l});return a.status="pending",a.resolve=o=>{a.status="resolved",a.value=o,e(o),t?.(o)},a.reject=o=>{a.status="rejected",n(o)},a}function Ej(t){return typeof t?.message!="string"?!1:t.message.startsWith("Failed to fetch dynamically imported module")||t.message.startsWith("error loading dynamically imported module")||t.message.startsWith("Importing a module script failed")}function rl(t){return!!(t&&typeof t=="object"&&typeof t.then=="function")}function Rj(t){return t.replace(/[\x00-\x1f\x7f]/g,"")}function Qb(t){let e;try{e=decodeURI(t)}catch{e=t.replaceAll(/%[0-9A-F]{2}/gi,n=>{try{return decodeURI(n)}catch{return n}})}return Rj(e)}var Cj=["http:","https:","mailto:","tel:"];function lu(t,e){if(!t)return!1;try{const n=new URL(t);return!e.has(n.protocol)}catch{return!1}}var Oj={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},Nj=/[&><\u2028\u2029]/g;function Mj(t){return t.replace(Nj,e=>Oj[e])}function qo(t){if(!t)return{path:t,handledProtocolRelativeURL:!1};if(!/[%\\\x00-\x1f\x7f]/.test(t)&&!t.startsWith("//"))return{path:t,handledProtocolRelativeURL:!1};const e=/%25|%5C/gi;let n=0,a="",o;for(;(o=e.exec(t))!==null;)a+=Qb(t.slice(n,o.index))+o[0],n=e.lastIndex;a=a+Qb(n?t.slice(n):t);let l=!1;return a.startsWith("//")&&(l=!0,a="/"+a.replace(/^\/+/,"")),{path:a,handledProtocolRelativeURL:l}}function Dj(t){return/\s|[^\u0000-\u007F]/.test(t)?t.replace(/\s|[^\u0000-\u007F]/gu,encodeURIComponent):t}function Pj(t,e){if(t===e)return!0;
10if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function bn(){throw new Error("Invariant failed")}function sl(t){const e=new Map;let n,a;const o=l=>{l.next&&(l.prev?(l.prev.next=l.next,l.next.prev=l.prev,l.next=void 0,a&&(a.next=l,l.prev=a)):(l.next.prev=void 0,n=l.next,l.next=void 0,a&&(l.prev=a,a.next=l)),a=l)};return{get(l){const u=e.get(l);if(u)return o(u),u.value},set(l,u){if(e.size>=t&&n){const p=n;e.delete(p.key),p.next&&(n=p.next,p.next.prev=void 0),p===a&&(a=void 0)}const h=e.get(l);if(h)h.value=u,o(h);else{const p={key:l,value:u,prev:a};a&&(a.next=p),a=p,n||(n=p),e.set(l,p)}},clear(){e.clear(),n=void 0,a=void 0}}}var Es=4,f0=5;function Lj(t){const e=t.indexOf("{");if(e===-1)return null;const n=t.indexOf("}",e);return n===-1||e+1>=t.length?null:[e,n]}function Sp(t,e,n=new Uint16Array(6)){const a=t.indexOf("/",e),o=a===-1?t.length:a,l=t.substring(e,o);if(!l||!l.includes("$"))return n[0]=0,n[1]=e,n[2]=e,n[3]=o,n[4]=o,n[5]=o,n;if(l==="$"){const h=t.length;return n[0]=2,n[1]=e,n[2]=e,n[3]=h,n[4]=h,n[5]=h,n}if(l.charCodeAt(0)===36)return n[0]=1,n[1]=e,n[2]=e+1,n[3]=o,n[4]=o,n[5]=o,n;const u=Lj(l);if(u){const[h,p]=u,m=l.charCodeAt(h+1);if(m===45){if(h+2<l.length&&l.charCodeAt(h+2)===36){const b=h+3,y=p;if(b<y)return n[0]=3,n[1]=e+h,n[2]=e+b,n[3]=e+y,n[4]=e+p+1,n[5]=o,n}}else if(m===36){const b=h+1,y=h+2;return y===p?(n[0]=2,n[1]=e+h,n[2]=e+b,n[3]=e+y,n[4]=e+p+1,n[5]=t.length,n):(n[0]=1,n[1]=e+h,n[2]=e+y,n[3]=e+p,n[4]=e+p+1,n[5]=o,n)}}return n[0]=0,n[1]=e,n[2]=e,n[3]=o,n[4]=o,n[5]=o,n}function Cu(t,e,n,a,o,l,u){u?.(n);let h=a;{const p=n.fullPath??n.from,m=p.length,b=n.options?.caseSensitive??t,y=!!(n.options?.params?.parse&&n.options?.skipRouteOnParseError?.params);for(;h<m;){const x=Sp(p,h,e);let k;const A=h,_=x[5];switch(h=_+1,l++,x[0]){case 0:{const j=p.substring(x[2],x[3]);if(b){const O=o.static?.get(j);if(O)k=O;else{o.static??=new Map;const R=ba(n.fullPath??n.from);R.parent=o,R.depth=l,k=R,o.static.set(j,R)}}else{const O=j.toLowerCase(),R=o.staticInsensitive?.get(O);if(R)k=R;else{o.staticInsensitive??=new Map;const M=ba(n.fullPath??n.from);M.parent=o,M.depth=l,k=M,o.staticInsensitive.set(O,M)}}break}case 1:{const j=p.substring(A,x[1]),O=p.substring(x[4],_),R=b&&!!(j||O),M=j?R?j:j.toLowerCase():void 0,K=O?R?O:O.toLowerCase():void 0,V=!y&&o.dynamic?.find($=>!$.skipOnParamError&&$.caseSensitive===R&&$.prefix===M&&$.suffix===K);if(V)k=V;else{const $=mf(1,n.fullPath??n.from,R,M,K);k=$,$.depth=l,$.parent=o,o.dynamic??=[],o.dynamic.push($)}break}case 3:{const j=p.substring(A,x[1]),O=p.substring(x[4],_),R=b&&!!(j||O),M=j?R?j:j.toLowerCase():void 0,K=O?R?O:O.toLowerCase():void 0,V=!y&&o.optional?.find($=>!$.skipOnParamError&&$.caseSensitive===R&&$.prefix===M&&$.suffix===K);if(V)k=V;else{const $=mf(3,n.fullPath??n.from,R,M,K);k=$,$.parent=o,$.depth=l,o.optional??=[],o.optional.push($)}break}case 2:{const j=p.substring(A,x[1]),O=p.substring(x[4],_),R=b&&!!(j||O),M=j?R?j:j.toLowerCase():void 0,K=O?R?O:O.toLowerCase():void 0,V=mf(2,n.fullPath??n.from,R,M,K);k=V,V.parent=o,V.depth=l,o.wildcard??=[],o.wildcard.push(V)}}o=k}if(y&&n.children&&!n.isRoot&&n.id&&n.id.charCodeAt(n.id.lastIndexOf("/")+1)===95){const x=ba(n.fullPath??n.from);x.kind=f0,x.parent=o,l++,x.depth=l,o.pathless??=[],o.pathless.push(x),o=x}const w=(n.path||!n.children)&&!n.isRoot;if(w&&p.endsWith("/")){const x=ba(n.fullPath??n.from);x.kind=Es,x.parent=o,l++,x.depth=l,o.index=x,o=x}o.parse=n.options?.params?.parse??null,o.skipOnParamError=y,o.parsingPriority=n.options?.skipRouteOnParseError?.priority??0,w&&!o.route&&(o.route=n,o.fullPath=n.fullPath??n.from)}if(n.children)for(const p of n.children)Cu(t,e,p,h,o,l,u)}function pf(t,e){if(t.skipOnParamError&&!e.skipOnParamError)return-1;if(!t.skipOnParamError&&e.skipOnParamError)return 1;if(t.skipOnParamError&&e.skipOnParamError&&(t.parsingPriority||e.parsingPriority))return e.parsingPriority-t.parsingPriority;if(t.prefix&&e.prefix&&t.prefix!==e.prefix){if(t.prefix.startsWith(e.prefix))return-1;if(e.prefix.startsWith(t.prefix))return 1}if(t.suffix&&e.suffix&&t.suffix!==e.suffix){if(t.suffix.endsWith(e.suffix))return-1;if(e.suffix.endsWith(t.suffix))return 1}return t.prefix&&!e.prefix?-1:!t.prefix&&e.prefix?1:t.suffix&&!e.suffix?-1:!t.suffix&&e.suffix?1:t.caseSensitive&&!e.caseSensitive?-1:!t.caseSensitive&&e.caseSensitive?1:0}function ks(t){if(t.pathless)for(const e of t.pathless)ks(e);if(t.static)for(const e of t.static.values())ks(e);if(t.staticInsensitive)for(const e of t.staticInsensitive.values())ks(e);if(t.dynamic?.length){t.dynamic.sort(pf);for(const e of t.dynamic)ks(e)}if(t.optional?.length){t.optional.sort(pf);for(const e of t.optional)ks(e)}if(t.wildcard?.length){t.wildcard.sort(pf);for(const e of t.wildcard)ks(e)}}function ba(t){return{kind:0,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:t,parent:null,parse:null,skipOnParamError:!1,parsingPriority:0}}function mf(t,e,n,a,o){return{kind:t,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:e,parent:null,parse:null,skipOnParamError:!1,parsingPriority:0,caseSensitive:n,prefix:a,suffix:o}}function Uj(t,e){const n=ba("/"),a=new Uint16Array(6);
10for(const o of t)Cu(!1,a,o,1,n,0);ks(n),e.masksTree=n,e.flatCache=sl(1e3)}function Ij(t,e){t||="/";const n=e.flatCache.get(t);if(n)return n;const a=jp(t,e.masksTree);return e.flatCache.set(t,a),a}function Bj(t,e,n,a,o){t||="/",a||="/";const l=e?`case\0${t}`:t;let u=o.singleCache.get(l);return u||(u=ba("/"),Cu(e,new Uint16Array(6),{from:t},1,u,0),o.singleCache.set(l,u)),jp(a,u,n)}function zj(t,e,n=!1){const a=n?t:`nofuzz\0${t}`,o=e.matchCache.get(a);if(o!==void 0)return o;t||="/";let l;try{l=jp(t,e.segmentTree,n)}catch(u){if(u instanceof URIError)l=null;else throw u}return l&&(l.branch=Hj(l.route)),e.matchCache.set(a,l),l}function qj(t){return t==="/"?t:t.replace(/\/{1,}$/,"")}function $j(t,e=!1,n){const a=ba(t.fullPath),o=new Uint16Array(6),l={},u={};let h=0;return Cu(e,o,t,1,a,0,p=>{if(n?.(p,h),p.id in l&&bn(),l[p.id]=p,h!==0&&p.path){const m=qj(p.fullPath);(!u[m]||p.fullPath.endsWith("/"))&&(u[m]=p)}h++}),ks(a),{processedTree:{segmentTree:a,singleCache:sl(1e3),matchCache:sl(1e3),flatCache:null,masksTree:null},routesById:l,routesByPath:u}}function jp(t,e,n=!1){const a=t.split("/"),o=Fj(t,a,e,n);if(!o)return null;const[l]=p0(t,a,o);return{route:o.node.route,rawParams:l,parsedParams:o.parsedParams}}function p0(t,e,n){const a=Vj(n.node);let o=null;const l=Object.create(null);let u=n.extract?.part??0,h=n.extract?.node??0,p=n.extract?.path??0,m=n.extract?.segment??0;for(;h<a.length;u++,h++,p++,m++){const b=a[h];if(b.kind===Es)break;if(b.kind===f0){m--,u--,p--;continue}const y=e[u],w=p;if(y&&(p+=y.length),b.kind===1){o??=n.node.fullPath.split("/");const x=o[m],k=b.prefix?.length??0;if(x.charCodeAt(k)===123){const A=b.suffix?.length??0,_=x.substring(k+2,x.length-A-1),j=y.substring(k,y.length-A);l[_]=decodeURIComponent(j)}else{const A=x.substring(1);l[A]=decodeURIComponent(y)}}else if(b.kind===3){if(n.skipped&1<<h){u--,p=w-1;continue}o??=n.node.fullPath.split("/");const x=o[m],k=b.prefix?.length??0,A=b.suffix?.length??0,_=x.substring(k+3,x.length-A-1),j=b.suffix||b.prefix?y.substring(k,y.length-A):y;j&&(l[_]=decodeURIComponent(j))}else if(b.kind===2){const x=b,k=t.substring(w+(x.prefix?.length??0),t.length-(x.suffix?.length??0)),A=decodeURIComponent(k);l["*"]=A,l._splat=A;break}}return n.rawParams&&Object.assign(l,n.rawParams),[l,{part:u,node:h,path:p,segment:m}]}function Hj(t){const e=[t];for(;t.parentRoute;)t=t.parentRoute,e.push(t);return e.reverse(),e}function Vj(t){const e=Array(t.depth+1);do e[t.depth]=t,t=t.parent;while(t);return e}function Fj(t,e,n,a){if(t==="/"&&n.index)return{node:n.index,skipped:0};const o=!nl(e),l=o&&t!=="/",u=e.length-(o?1:0),h=[{node:n,index:1,skipped:0,depth:1,statics:0,dynamics:0,optionals:0}];let p=null,m=null;for(;h.length;){const b=h.pop(),{node:y,index:w,skipped:x,depth:k,statics:A,dynamics:_,optionals:j}=b;let{extract:O,rawParams:R,parsedParams:M}=b;if(y.kind===2&&y.route&&!Bc(m,b))continue;if(y.skipOnParamError){if(!Xb(t,e,b))continue;R=b.rawParams,O=b.extract,M=b.parsedParams}a&&y.route&&y.kind!==Es&&Bc(p,b)&&(p=b);const K=w===u;if(K&&(y.route&&(!l||y.kind===Es||y.kind===2)&&Bc(m,b)&&(m=b),!y.optional&&!y.wildcard&&!y.index&&!y.pathless))continue;const V=K?void 0:e[w];let $;if(K&&y.index){const U={node:y.index,index:w,skipped:x,depth:k+1,statics:A,dynamics:_,optionals:j,extract:O,rawParams:R,parsedParams:M};let Q=!0;if(y.index.skipOnParamError&&(Xb(t,e,U)||(Q=!1)),Q){if(!_&&!j&&!x&&Gj(A,u))return U;Bc(m,U)&&(m=U)}}if(y.wildcard)for(let U=y.wildcard.length-1;U>=0;U--){const Q=y.wildcard[U],{prefix:ae,suffix:se}=Q;if(!(ae&&(K||!(Q.caseSensitive?V:$??=V.toLowerCase()).startsWith(ae)))){if(se){if(K)continue;const ye=e.slice(w).join("/").slice(-se.length);if((Q.caseSensitive?ye:ye.toLowerCase())!==se)continue}h.push({node:Q,index:u,skipped:x,depth:k+1,statics:A,dynamics:_,optionals:j,extract:O,rawParams:R,parsedParams:M})}}if(y.optional){const U=x|1<<k,Q=k+1;for(let ae=y.optional.length-1;ae>=0;ae--){const se=y.optional[ae];h.push({node:se,index:w,skipped:U,depth:Q,statics:A,dynamics:_,optionals:j,extract:O,rawParams:R,parsedParams:M})}if(!K)for(let ae=y.optional.length-1;ae>=0;ae--){const se=y.optional[ae],{prefix:ye,suffix:_e}=se;if(ye||_e){const ze=se.caseSensitive?V:$??=V.toLowerCase();if(ye&&!ze.startsWith(ye)||_e&&!ze.endsWith(_e))continue}h.push({node:se,index:w+1,skipped:x,depth:Q,statics:A,dynamics:_,optionals:j+Ic(u,w),extract:O,rawParams:R,parsedParams:M})}}if(!K&&y.dynamic&&V)for(let U=y.dynamic.length-1;U>=0;U--){const Q=y.dynamic[U],{prefix:ae,suffix:se}=Q;if(ae||se){const ye=Q.caseSensitive?V:$??=V.toLowerCase();if(ae&&!ye.startsWith(ae)||se&&!ye.endsWith(se))continue}h.push({node:Q,index:w+1,skipped:x,depth:k+1,statics:A,dynamics:_+Ic(u,w),optionals:j,extract:O,rawParams:R,parsedParams:M})}if(!K&&y.staticInsensitive){const U=y.staticInsensitive.get($??=V.toLowerCase());U&&h.push({node:U,index:w+1,skipped:x,depth:k+1,statics:A+Ic(u,w),dynamics:_,optionals:j,extract:O,rawParams:R,parsedParams:M})}if(!K&&y.static){const U=y.static.get(V);U&&h.push({node:U,index:w+1,skipped:x,depth:k+1,statics:A+Ic(u,w),dynamics:_,optionals:j,extract:O,rawParams:R,parsedParams:M})}if(y.pathless){const U=k+1;for(let Q=y.pathless.length-1;Q>=0;Q--){const ae=y.pathless[Q];h.push({node:ae,index:w,skipped:x,depth:U,statics:A,dynamics:_,optionals:j,extract:O,rawParams:R,parsedParams:M})}}}if(m)return m;if(a&&p){let b=p.index;for(let w=0;w<p.index;w++)b+=e[w].length;const y=b===t.length?"/":t.slice(b);return p.rawParams??=Object.create(null),p.rawParams["**"]=decodeURIComponent(y),p}return null}function Ic(t,e){return 2**(t-e-1)}function Gj(t,e){return t===2**(e-1)-1}function Xb(t,e,n){try{const[a,o]=p0(t,e,n);n.rawParams=a,n.extract=o;const l=n.node.parse(a);return n.parsedParams=Object.assign(Object.create(null),n.parsedParams,l),!0}catch{return null}}function Bc(t,e){return t?e.statics>t.statics||e.statics===t.statics&&(e.dynamics>t.dynamics||e.dynamics===t.dynamics&&(e.optionals>t.optionals||e.optionals===t.optionals&&((e.node.kind===Es)>(t.node.kind===Es)||e.node.kind===Es==(t.node.kind===Es)&&e.depth>t.depth))):!0}function nu(t){return Tp(t.filter(e=>e!==void 0).join("/"))}function Tp(t){return t.replace(/\/{2,}/g,"/")}function m0(t){return t==="/"?t:t.replace(/^\/{1,}/,"")}function Ns(t){const e=t.length;return e>1&&t[e-1]==="/"?t.replace(/\/{1,}$/,""):t}function g0(t){return Ns(m0(t))}function cu(t,e){return t?.endsWith("/")&&t!=="/"&&t!==`${e}/`?t.slice(0,-1):t}function Kj(t,e,n){return cu(t,n)===cu(e,n)}function Yj({base:t,to:e,trailingSlash:n="never",cache:a}){const o=e.startsWith("/"),l=!o&&e===".";let u;if(a){u=o?e:l?t:t+"\0"+e;const y=a.get(u);if(y)return y}let h;
10if(l)h=t.split("/");else if(o)h=e.split("/");else{for(h=t.split("/");h.length>1&&nl(h)==="";)h.pop();const y=e.split("/");for(let w=0,x=y.length;w<x;w++){const k=y[w];k===""?w?w===x-1&&h.push(k):h=[k]:k===".."?h.pop():k==="."||h.push(k)}}h.length>1&&(nl(h)===""?n==="never"&&h.pop():n==="always"&&h.push(""));let p,m="";for(let y=0;y<h.length;y++){y>0&&(m+="/");const w=h[y];if(!w)continue;p=Sp(w,0,p);const x=p[0];if(x===0){m+=w;continue}const k=p[5],A=w.substring(0,p[1]),_=w.substring(p[4],k),j=w.substring(p[2],p[3]);x===1?m+=A||_?`${A}{$${j}}${_}`:`$${j}`:x===2?m+=A||_?`${A}{$}${_}`:"$":m+=`${A}{-$${j}}${_}`}m=Tp(m);const b=m||"/";return u&&a&&a.set(u,b),b}function Wj(t){const e=new Map(t.map(o=>[encodeURIComponent(o),o])),n=Array.from(e.keys()).map(o=>o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),a=new RegExp(n,"g");return o=>o.replace(a,l=>e.get(l)??l)}function gf(t,e,n){const a=e[t];return typeof a!="string"?a:t==="_splat"?/^[a-zA-Z0-9\-._~!/]*$/.test(a)?a:a.split("/").map(o=>tv(o,n)).join("/"):tv(a,n)}function ev({path:t,params:e,decoder:n,...a}){let o=!1;const l=Object.create(null);if(!t||t==="/")return{interpolatedPath:"/",usedParams:l,isMissingParams:o};if(!t.includes("$"))return{interpolatedPath:t,usedParams:l,isMissingParams:o};const u=t.length;let h=0,p,m="";for(;h<u;){const b=h;p=Sp(t,b,p);const y=p[5];if(h=y+1,b===y)continue;const w=p[0];if(w===0){m+="/"+t.substring(b,y);continue}if(w===2){const x=e._splat;l._splat=x,l["*"]=x;const k=t.substring(b,p[1]),A=t.substring(p[4],y);if(!x){o=!0,(k||A)&&(m+="/"+k+A);continue}const _=gf("_splat",e,n);m+="/"+k+_+A;continue}if(w===1){const x=t.substring(p[2],p[3]);!o&&!(x in e)&&(o=!0),l[x]=e[x];const k=t.substring(b,p[1]),A=t.substring(p[4],y),_=gf(x,e,n)??"undefined";m+="/"+k+_+A;continue}if(w===3){const x=t.substring(p[2],p[3]),k=e[x];if(k==null)continue;l[x]=k;const A=t.substring(b,p[1]),_=t.substring(p[4],y),j=gf(x,e,n)??"";m+="/"+A+j+_;continue}}return t.endsWith("/")&&(m+="/"),{usedParams:l,interpolatedPath:m||"/",isMissingParams:o}}function tv(t,e){const n=encodeURIComponent(t);return e?.(n)??n}function y0(t={}){if(t.isNotFound=!0,t.throw)throw t;return t}function Bt(t){return t?.isNotFound===!0}function Zj(){try{return typeof window<"u"&&typeof window.sessionStorage=="object"?window.sessionStorage:void 0}catch{return}}var Jj="tsr-scroll-restoration-v1_3";function Qj(){const t=Zj();if(!t)return null;let e={};try{const a=JSON.parse(t.getItem("tsr-scroll-restoration-v1_3")||"{}");Bi(a)&&(e=a)}catch{}return{get state(){return e},set:a=>{e=As(a,e)||e},persist:()=>{try{t.setItem(Jj,JSON.stringify(e))}catch{}}}}var nv=Qj(),Xj=t=>t.state.__TSR_key||t.href;function eT(t){const e=[];let n;for(;n=t.parentNode;)e.push(`${t.tagName}:nth-child(${Array.prototype.indexOf.call(n.children,t)+1})`),t=n;return`${e.reverse().join(" > ")}`.toLowerCase()}var zc=!1,$o="window",rv="data-scroll-restoration-id";function tT(t,e){if(!nv)return;const n=nv;if((t.options.scrollRestoration??!1)&&(t.isScrollRestoring=!0),t.isScrollRestorationSetup||!n)return;t.isScrollRestorationSetup=!0,zc=!1;const a=t.options.getScrollRestorationKey||Xj,o=new Map;window.history.scrollRestoration="manual";const l=h=>{if(!(zc||!t.isScrollRestoring))if(h.target===document||h.target===window)o.set($o,{scrollX:window.scrollX||0,scrollY:window.scrollY||0});else{const p=h.target;o.set(p,{scrollX:p.scrollLeft||0,scrollY:p.scrollTop||0})}},u=h=>{if(!t.isScrollRestoring||!h||o.size===0||!n)return;const p=n.state[h]||={};for(const[m,b]of o){let y;if(m===$o)y=$o;else if(m.isConnected){const w=m.getAttribute(rv);y=w?`[${rv}="${w}"]`:eT(m)}y&&(p[y]=b)}};document.addEventListener("scroll",l,!0),t.subscribe("onBeforeLoad",h=>{u(h.fromLocation?a(h.fromLocation):void 0),o.clear()}),window.addEventListener("pagehide",()=>{u(a(t.stores.resolvedLocation.get()??t.stores.location.get())),n.persist()}),t.subscribe("onRendered",h=>{const p=a(h.toLocation),m=t.options.scrollRestorationBehavior,b=t.options.scrollToTopSelectors;if(o.clear(),!t.resetNextScroll){t.resetNextScroll=!0;return}if(!(typeof t.options.scrollRestoration=="function"&&!t.options.scrollRestoration({location:t.latestLocation}))){zc=!0;try{const y=t.isScrollRestoring?n.state[p]:void 0;let w=!1;if(y)for(const x in y){const k=y[x];if(!Bi(k))continue;const{scrollX:A,scrollY:_}=k;if(!(!Number.isFinite(A)||!Number.isFinite(_))){if(x===$o)window.scrollTo({top:_,left:A,behavior:m}),w=!0;else if(x){let j;try{j=document.querySelector(x)}catch{continue}j&&(j.scrollLeft=A,j.scrollTop=_,w=!0)}}}if(!w){const x=t.history.location.hash.slice(1);if(x){const k=window.history.state?.__hashScrollIntoViewOptions??!0;if(k){const A=document.getElementById(x);A&&A.scrollIntoView(k)}}
10else{const k={top:0,left:0,behavior:m};if(window.scrollTo(k),b)for(const A of b){if(A===$o)continue;const _=typeof A=="function"?A():document.querySelector(A);_&&_.scrollTo(k)}}}}finally{zc=!1}t.isScrollRestoring&&n.set(y=>(y[p]||={},y))}})}function b0(t,e=String){const n=new URLSearchParams;for(const a in t){const o=t[a];o!==void 0&&n.set(a,e(o))}return n.toString()}function yf(t){return t?t==="false"?!1:t==="true"?!0:+t*0===0&&+t+""===t?+t:t:""}function nT(t){const e=new URLSearchParams(t),n=Object.create(null);for(const[a,o]of e.entries()){const l=n[a];l==null?n[a]=yf(o):Array.isArray(l)?l.push(yf(o)):n[a]=[l,yf(o)]}return n}var rT=aT(JSON.parse),sT=iT(JSON.stringify,JSON.parse);function aT(t){return e=>{e[0]==="?"&&(e=e.substring(1));const n=nT(e);for(const a in n){const o=n[a];if(typeof o=="string")try{n[a]=t(o)}catch{}}return n}}function iT(t,e){const n=typeof e=="function";function a(o){if(typeof o=="object"&&o!==null)try{return t(o)}catch{}else if(n&&typeof o=="string")try{return e(o),t(o)}catch{}return o}return o=>{const l=b0(o,a);return l?`?${l}`:""}}var xa="__root__";function Ou(t){if(t.statusCode=t.statusCode||t.code||307,!t._builtLocation&&!t.reloadDocument&&typeof t.href=="string")try{new URL(t.href),t.reloadDocument=!0}catch{}const e=new Headers(t.headers);t.href&&e.get("Location")===null&&e.set("Location",t.href);const n=new Response(null,{status:t.statusCode,headers:e});if(n.options=t,t.throw)throw n;return n}function rn(t){return t instanceof Response&&!!t.options}function v0(t){if(t!==null&&typeof t=="object"&&t.isSerializedRedirect)return Ou(t)}function oT(t){return{input:({url:e})=>{for(const n of t)e=zf(n,e);return e},output:({url:e})=>{for(let n=t.length-1;n>=0;n--)e=w0(t[n],e);return e}}}function lT(t){const e=g0(t.basepath),n=`/${e}`,a=`${n}/`,o=t.caseSensitive?n:n.toLowerCase(),l=t.caseSensitive?a:a.toLowerCase();return{input:({url:u})=>{const h=t.caseSensitive?u.pathname:u.pathname.toLowerCase();return h===o?u.pathname="/":h.startsWith(l)&&(u.pathname=u.pathname.slice(n.length)),u},output:({url:u})=>(u.pathname=nu(["/",e,u.pathname]),u)}}function zf(t,e){const n=t?.input?.({url:e});if(n){if(typeof n=="string")return new URL(n);if(n instanceof URL)return n}return e}function w0(t,e){const n=t?.output?.({url:e});if(n){if(typeof n=="string")return new URL(n);if(n instanceof URL)return n}return e}function cT(t,e){const{createMutableStore:n,createReadonlyStore:a,batch:o,init:l}=e,u=new Map,h=new Map,p=new Map,m=n(t.status),b=n(t.loadedAt),y=n(t.isLoading),w=n(t.isTransitioning),x=n(t.location),k=n(t.resolvedLocation),A=n(t.statusCode),_=n(t.redirect),j=n([]),O=n([]),R=n([]),M=a(()=>bf(u,j.get())),K=a(()=>bf(h,O.get())),V=a(()=>bf(p,R.get())),$=a(()=>j.get()[0]),U=a(()=>j.get().some(Y=>u.get(Y)?.get().status==="pending")),Q=a(()=>({locationHref:x.get().href,resolvedLocationHref:k.get()?.href,status:m.get()})),ae=a(()=>({status:m.get(),loadedAt:b.get(),isLoading:y.get(),isTransitioning:w.get(),matches:M.get(),location:x.get(),resolvedLocation:k.get(),statusCode:A.get(),redirect:_.get()})),se=sl(64);function ye(Y){let ie=se.get(Y);return ie||(ie=a(()=>{const Se=j.get();for(const ne of Se){const N=u.get(ne);if(N&&N.routeId===Y)return N.get()}}),se.set(Y,ie)),ie}const _e={status:m,loadedAt:b,isLoading:y,isTransitioning:w,location:x,resolvedLocation:k,statusCode:A,redirect:_,matchesId:j,pendingIds:O,cachedIds:R,matches:M,pendingMatches:K,cachedMatches:V,firstId:$,hasPending:U,matchRouteDeps:Q,matchStores:u,pendingMatchStores:h,cachedMatchStores:p,__store:ae,getRouteMatchStore:ye,setMatches:ze,setPending:Ce,setCached:L};ze(t.matches),l?.(_e);function ze(Y){vf(Y,u,j,n,o)}function Ce(Y){vf(Y,h,O,n,o)}function L(Y){vf(Y,p,R,n,o)}return _e}function bf(t,e){const n=[];for(const a of e){const o=t.get(a);o&&n.push(o.get())}return n}function vf(t,e,n,a,o){const l=t.map(h=>h.id),u=new Set(l);o(()=>{for(const h of e.keys())u.has(h)||e.delete(h);for(const h of t){const p=e.get(h.id);if(!p){const m=a(h);m.routeId=h.routeId,e.set(h.id,m);continue}p.routeId=h.routeId,p.get()!==h&&p.set(h)}Pj(n.get(),l)||n.set(l)})}var qf=t=>
10{if(!t.rendered)return t.rendered=!0,t.onReady?.()},uT=t=>t.stores.matchesId.get().some(e=>t.stores.matchStores.get(e)?.get()._forcePending),Nu=(t,e)=>!!(t.preload&&!t.router.stores.matchStores.has(e)),ka=(t,e,n=!0)=>{const a={...t.router.options.context??{}},o=n?e:e-1;for(let l=0;l<=o;l++){const u=t.matches[l];if(!u)continue;const h=t.router.getMatch(u.id);h&&Object.assign(a,h.__routeContext,h.__beforeLoadContext)}return a},sv=(t,e)=>{if(!t.matches.length)return;const n=e.routeId,a=t.matches.findIndex(u=>u.routeId===t.router.routeTree.id),o=a>=0?a:0;let l=n?t.matches.findIndex(u=>u.routeId===n):t.firstBadMatchIndex??t.matches.length-1;l<0&&(l=o);for(let u=l;u>=0;u--){const h=t.matches[u];if(t.router.looseRoutesById[h.routeId].options.notFoundComponent)return u}return n?l:o},Rs=(t,e,n)=>{if(!(!rn(n)&&!Bt(n)))throw rn(n)&&n.redirectHandled&&!n.options.reloadDocument||(e&&(e._nonReactive.beforeLoadPromise?.resolve(),e._nonReactive.loaderPromise?.resolve(),e._nonReactive.beforeLoadPromise=void 0,e._nonReactive.loaderPromise=void 0,e._nonReactive.error=n,t.updateMatch(e.id,a=>({...a,status:rn(n)?"redirected":Bt(n)?"notFound":a.status==="pending"?"success":a.status,context:ka(t,e.index),isFetching:!1,error:n})),Bt(n)&&!n.routeId&&(n.routeId=e.routeId),e._nonReactive.loadPromise?.resolve()),rn(n)&&(t.rendered=!0,n.options._fromLocation=t.location,n.redirectHandled=!0,n=t.router.resolveRedirect(n))),n},x0=(t,e)=>{const n=t.router.getMatch(e);return!!(!n||n._nonReactive.dehydrated)},av=(t,e,n)=>{const a=ka(t,n);t.updateMatch(e,o=>({...o,context:a}))},Ho=(t,e,n,a)=>{const{id:o,routeId:l}=t.matches[e],u=t.router.looseRoutesById[l];if(n instanceof Promise)throw n;n.routerCode=a,t.firstBadMatchIndex??=e,Rs(t,t.router.getMatch(o),n);try{u.options.onError?.(n)}catch(h){n=h,Rs(t,t.router.getMatch(o),n)}t.updateMatch(o,h=>(h._nonReactive.beforeLoadPromise?.resolve(),h._nonReactive.beforeLoadPromise=void 0,h._nonReactive.loadPromise?.resolve(),{...h,error:n,status:"error",isFetching:!1,updatedAt:Date.now(),abortController:new AbortController})),!t.preload&&!rn(n)&&!Bt(n)&&(t.serialError??=n)},k0=(t,e,n,a)=>{if(a._nonReactive.pendingTimeout!==void 0)return;const o=n.options.pendingMs??t.router.options.defaultPendingMs;if(t.onReady&&!Nu(t,e)&&(n.options.loader||n.options.beforeLoad||S0(n))&&typeof o=="number"&&o!==1/0&&(n.options.pendingComponent??t.router.options?.defaultPendingComponent)){const l=setTimeout(()=>{qf(t)},o);a._nonReactive.pendingTimeout=l}},dT=(t,e,n)=>{const a=t.router.getMatch(e);if(!a._nonReactive.beforeLoadPromise&&!a._nonReactive.loaderPromise)return;k0(t,e,n,a);const o=()=>{const l=t.router.getMatch(e);l.preload&&(l.status==="redirected"||l.status==="notFound")&&Rs(t,l,l.error)};return a._nonReactive.beforeLoadPromise?a._nonReactive.beforeLoadPromise.then(o):o()},hT=(t,e,n,a)=>{const o=t.router.getMatch(e);let l=o._nonReactive.loadPromise;o._nonReactive.loadPromise=Sa(()=>{l?.resolve(),l=void 0});const{paramsError:u,searchError:h}=o;u&&Ho(t,n,u,"PARSE_PARAMS"),h&&Ho(t,n,h,"VALIDATE_SEARCH"),k0(t,e,a,o);const p=new AbortController;let m=!1;const b=()=>{m||(m=!0,t.updateMatch(e,M=>({...M,isFetching:"beforeLoad",fetchCount:M.fetchCount+1,abortController:p})))},y=()=>{o._nonReactive.beforeLoadPromise?.resolve(),o._nonReactive.beforeLoadPromise=void 0,t.updateMatch(e,M=>({...M,isFetching:!1}))};if(!a.options.beforeLoad){t.router.batch(()=>{b(),y()});return}o._nonReactive.beforeLoadPromise=Sa();const w={...ka(t,n,!1),...o.__routeContext},{search:x,params:k,cause:A}=o,_=Nu(t,e),j={search:x,abortController:p,params:k,preload:_,context:w,location:t.location,navigate:M=>t.router.navigate({...M,_fromLocation:t.location}),buildLocation:t.router.buildLocation,cause:_?"preload":A,matches:t.matches,routeId:a.id,...t.router.options.additionalContext},O=M=>{if(M===void 0){t.router.batch(()=>{b(),y()});return}(rn(M)||Bt(M))&&(b(),Ho(t,n,M,"BEFORE_LOAD")),t.router.batch(()=>{b(),t.updateMatch(e,K=>({...K,__beforeLoadContext:M})),y()})};let R;try{if(R=a.options.beforeLoad(j),rl(R))return b(),R.catch(M=>{Ho(t,n,M,"BEFORE_LOAD")}).then(O)}catch(M){b(),Ho(t,n,M,"BEFORE_LOAD")}O(R)},fT=(t,e)=>{const{id:n,routeId:a}=t.matches[e],o=t.router.looseRoutesById[a],l=()=>h(),u=()=>hT(t,n,e,o),h=()=>
10{if(x0(t,n))return;const p=dT(t,n,o);return rl(p)?p.then(u):u()};return l()},pT=(t,e,n)=>{const a=t.router.getMatch(e);if(!a||!n.options.head&&!n.options.scripts&&!n.options.headers)return;const o={ssr:t.router.options.ssr,matches:t.matches,match:a,params:a.params,loaderData:a.loaderData};return Promise.all([n.options.head?.(o),n.options.scripts?.(o),n.options.headers?.(o)]).then(([l,u,h])=>({meta:l?.meta,links:l?.links,headScripts:l?.scripts,headers:h,scripts:u,styles:l?.styles}))},_0=(t,e,n,a,o)=>{const l=e[a-1],{params:u,loaderDeps:h,abortController:p,cause:m}=t.router.getMatch(n),b=ka(t,a),y=Nu(t,n);return{params:u,deps:h,preload:!!y,parentMatchPromise:l,abortController:p,context:b,location:t.location,navigate:w=>t.router.navigate({...w,_fromLocation:t.location}),cause:y?"preload":m,route:o,...t.router.options.additionalContext}},iv=async(t,e,n,a,o)=>{try{const l=t.router.getMatch(n);try{(!(h0??t.router.isServer)||l.ssr===!0)&&al(o);const u=o.options.loader,h=typeof u=="function"?u:u?.handler,p=h?.(_0(t,e,n,a,o)),m=!!h&&rl(p);if((m||o._lazyPromise||o._componentsPromise||o.options.head||o.options.scripts||o.options.headers||l._nonReactive.minPendingPromise)&&t.updateMatch(n,y=>({...y,isFetching:"loader"})),h){const y=m?await p:p;Rs(t,t.router.getMatch(n),y),y!==void 0&&t.updateMatch(n,w=>({...w,loaderData:y}))}o._lazyPromise&&await o._lazyPromise;const b=l._nonReactive.minPendingPromise;b&&await b,o._componentsPromise&&await o._componentsPromise,t.updateMatch(n,y=>({...y,error:void 0,context:ka(t,a),status:"success",isFetching:!1,updatedAt:Date.now()}))}catch(u){let h=u;if(h?.name==="AbortError"){if(l.abortController.signal.aborted){l._nonReactive.loaderPromise?.resolve(),l._nonReactive.loaderPromise=void 0;return}t.updateMatch(n,m=>({...m,status:m.status==="pending"?"success":m.status,isFetching:!1,context:ka(t,a)}));return}const p=l._nonReactive.minPendingPromise;p&&await p,Bt(u)&&await o.options.notFoundComponent?.preload?.(),Rs(t,t.router.getMatch(n),u);try{o.options.onError?.(u)}catch(m){h=m,Rs(t,t.router.getMatch(n),m)}!rn(h)&&!Bt(h)&&await al(o,["errorComponent"]),t.updateMatch(n,m=>({...m,error:h,context:ka(t,a),status:"error",isFetching:!1}))}}catch(l){const u=t.router.getMatch(n);u&&(u._nonReactive.loaderPromise=void 0),Rs(t,u,l)}},mT=async(t,e,n)=>{async function a(x,k,A,_,j){const O=Date.now()-k.updatedAt,R=x?j.options.preloadStaleTime??t.router.options.defaultPreloadStaleTime??3e4:j.options.staleTime??t.router.options.defaultStaleTime??0,M=j.options.shouldReload,K=typeof M=="function"?M(_0(t,e,o,n,j)):M,{status:V,invalid:$}=_,U=O>=R&&(!!t.forceStaleReload||_.cause==="enter"||A!==void 0&&A!==_.id);u=V==="success"&&($||(K??U)),x&&j.options.preload===!1||(u&&!t.sync&&b?(h=!0,(async()=>{try{await iv(t,e,o,n,j);const Q=t.router.getMatch(o);Q._nonReactive.loaderPromise?.resolve(),Q._nonReactive.loadPromise?.resolve(),Q._nonReactive.loaderPromise=void 0,Q._nonReactive.loadPromise=void 0}catch(Q){rn(Q)&&await t.router.navigate(Q.options)}})()):V!=="success"||u?await iv(t,e,o,n,j):av(t,o,n))}const{id:o,routeId:l}=t.matches[n];let u=!1,h=!1;const p=t.router.looseRoutesById[l],m=p.options.loader,b=((typeof m=="function"?void 0:m?.staleReloadMode)??t.router.options.defaultStaleReloadMode)!=="blocking";if(x0(t,o)){if(!t.router.getMatch(o))return t.matches[n];av(t,o,n)}else{const x=t.router.getMatch(o),k=t.router.stores.matchesId.get()[n],A=(k&&t.router.stores.matchStores.get(k)||null)?.routeId===l?k:t.router.stores.matches.get().find(j=>j.routeId===l)?.id,_=Nu(t,o);if(x._nonReactive.loaderPromise){if(x.status==="success"&&!t.sync&&!x.preload&&b)return x;await x._nonReactive.loaderPromise;const j=t.router.getMatch(o),O=j._nonReactive.error||j.error;O&&Rs(t,j,O),j.status==="pending"&&await a(_,x,A,j,p)}else{const j=_&&!t.router.stores.matchStores.has(o),O=t.router.getMatch(o);O._nonReactive.loaderPromise=Sa(),j!==O.preload&&t.updateMatch(o,R=>({...R,preload:j})),await a(_,x,A,O,p)}}const y=t.router.getMatch(o);h||(y._nonReactive.loaderPromise?.resolve(),y._nonReactive.loadPromise?.resolve(),y._nonReactive.loadPromise=void 0),clearTimeout(y._nonReactive.pen
10dingTimeout),y._nonReactive.pendingTimeout=void 0,h||(y._nonReactive.loaderPromise=void 0),y._nonReactive.dehydrated=void 0;const w=h?y.isFetching:!1;return w!==y.isFetching||y.invalid!==!1?(t.updateMatch(o,x=>({...x,isFetching:w,invalid:!1})),t.router.getMatch(o)):y};async function ov(t){const e=t,n=[];uT(e.router)&&qf(e);let a;for(let w=0;w<e.matches.length;w++){try{const x=fT(e,w);rl(x)&&await x}catch(x){if(rn(x))throw x;if(Bt(x))a=x;else if(!e.preload)throw x;break}if(e.serialError||e.firstBadMatchIndex!=null)break}const o=e.firstBadMatchIndex??e.matches.length,l=a&&!e.preload?sv(e,a):void 0,u=a&&e.preload?0:l!==void 0?Math.min(l+1,o):o;let h,p;for(let w=0;w<u;w++)n.push(mT(e,n,w));try{await Promise.all(n)}catch{const w=await Promise.allSettled(n);for(const x of w){if(x.status!=="rejected")continue;const k=x.reason;if(rn(k))throw k;Bt(k)?h??=k:p??=k}if(p!==void 0)throw p}const m=h??(a&&!e.preload?a:void 0);let b=e.firstBadMatchIndex!==void 0?e.firstBadMatchIndex:e.matches.length-1;if(!m&&a&&e.preload)return e.matches;if(m){const w=sv(e,m);w===void 0&&bn();const x=e.matches[w],k=e.router.looseRoutesById[x.routeId],A=e.router.options?.defaultNotFoundComponent;!k.options.notFoundComponent&&A&&(k.options.notFoundComponent=A),m.routeId=x.routeId;const _=x.routeId===e.router.routeTree.id;e.updateMatch(x.id,j=>({...j,..._?{status:"success",globalNotFound:!0,error:void 0}:{status:"notFound",error:m},isFetching:!1})),b=w,await al(k,["notFoundComponent"])}else if(!e.preload){const w=e.matches[0];w.globalNotFound||e.router.getMatch(w.id)?.globalNotFound&&e.updateMatch(w.id,x=>({...x,globalNotFound:!1,error:void 0}))}if(e.serialError&&e.firstBadMatchIndex!==void 0){const w=e.router.looseRoutesById[e.matches[e.firstBadMatchIndex].routeId];await al(w,["errorComponent"])}for(let w=0;w<=b;w++){const{id:x,routeId:k}=e.matches[w],A=e.router.looseRoutesById[k];try{const _=pT(e,x,A);if(_){const j=await _;e.updateMatch(x,O=>({...O,...j}))}}catch(_){console.error(`Error executing head for route ${k}:`,_)}}const y=qf(e);if(rl(y)&&await y,m)throw m;if(e.serialError&&!e.preload&&!e.onReady)throw e.serialError;return e.matches}function lv(t,e){const n=e.map(a=>t.options[a]?.preload?.()).filter(Boolean);if(n.length!==0)return Promise.all(n)}function al(t,e=ru){!t._lazyLoaded&&t._lazyPromise===void 0&&(t.lazyFn?t._lazyPromise=t.lazyFn().then(a=>{const{id:o,...l}=a.options;Object.assign(t.options,l),t._lazyLoaded=!0,t._lazyPromise=void 0}):t._lazyLoaded=!0);const n=()=>t._componentsLoaded?void 0:e===ru?(()=>{if(t._componentsPromise===void 0){const a=lv(t,ru);a?t._componentsPromise=a.then(()=>{t._componentsLoaded=!0,t._componentsPromise=void 0}):t._componentsLoaded=!0}return t._componentsPromise})():lv(t,e);return t._lazyPromise?t._lazyPromise.then(n):n()}function S0(t){for(const e of ru)if(t.options[e]?.preload)return!0;return!1}var ru=["component","errorComponent","pendingComponent","notFoundComponent"],Ms="__TSR_index",cv="popstate",uv="beforeunload";function gT(t){let e=t.getLocation();const n=new Set,a=u=>{e=t.getLocation(),n.forEach(h=>h({location:e,action:u}))},o=u=>{t.notifyOnIndexChange??!0?a(u):e=t.getLocation()},l=async({task:u,navigateOpts:h,...p})=>{if(h?.ignoreBlocker??!1){u();return}const m=t.getBlockers?.()??[],b=p.type==="PUSH"||p.type==="REPLACE";if(typeof document<"u"&&m.length&&b)for(const y of m){const w=uu(p.path,p.state);if(await y.blockerFn({currentLocation:e,nextLocation:w,action:p.type})){t.onBlocked?.();return}}u()};return{get location(){return e},get length(){return t.getLength()},subscribers:n,subscribe:u=>(n.add(u),()=>{n.delete(u)}),push:(u,h,p)=>{const m=e.state[Ms];h=dv(m+1,h),l({task:()=>{t.pushState(u,h),a({type:"PUSH"})},navigateOpts:p,type:"PUSH",path:u,state:h})},replace:(u,h,p)=>{const m=e.state[Ms];h=dv(m,h),l({task:()=>{t.replaceState(u,h),a({type:"REPLACE"})},navigateOpts:p,type:"REPLACE",path:u,state:h})},go:(u,h)=>{l({task:()=>{t.go(u),o({type:"GO",index:u})},navigateOpts:h,type:"GO"})},back:u=>{l({task:()=>{t.back(u?.ignoreBlocker??!1),o({type:"BACK"})},navigateOpts:u,type:"BACK"})},forward:u=>{l({task:()=>{t.forward(u?.ignoreBlocker??!1),o({type:"FORWARD"})},navigateOpts:u,type:"FORWARD"})},canGoBack:()=>e.state[Ms]!==0,createHref:u=>t.createHref(u),block:u=>{if(!t.setBlockers)return()=>{};const h=t.getBlockers?.()??[];return t.setBlockers([...h,u]),()=>{const p=t.getBlockers?.()??[];t.setBlockers?.(p.filter(m=>m!==u))}},flush:()=>t.flush?.(),destroy:()=>t.destroy?.(),notify:a}}function dv(t,e){e||(e={});const n=Ap();return{...e,key:n,__TSR_key:n,[Ms]:t}}function yT(t){const e=typeof document<"u"?window:void 0,n=e.history.pushState,a=e.history.replaceState;let o=[];const l=()=>o,u=U=>o=U,h=(U=>U),p=(()=>uu(`${e.location.pathname}${e.location.search}${e.location.hash}`,e.history.state));if(!e.history.state?.__TSR_key&&!e.history.state?.key){const U=Ap();e.history.replaceState({[Ms]:0,key:U,__TSR_key:U},"")}let m=p(),b,y=!1,w=!1,x=!1,k=!1;const A=()=>m;let _,j;const O=()=>{_&&($._ignoreSubscribers=!0,(_.isPush?e.history.pushState:e.history.replaceState)(_.state,"",_.href),$._ignoreSubscribers=!1,_=void 0,j=void 0,b=void 0)},R=(U,Q,ae)=>{const se=h(Q);j||(b=m),m=uu(Q,ae),_={href:se,state:ae,isPush:_?.isPush||U==="push"}
10,j||(j=Promise.resolve().then(()=>O()))},M=U=>{m=p(),$.notify({type:U})},K=async()=>{if(w){w=!1;return}const U=p(),Q=U.state[Ms]-m.state[Ms],ae=Q===1,se=Q===-1,ye=!ae&&!se||y;y=!1;const _e=ye?"GO":se?"BACK":"FORWARD",ze=ye?{type:"GO",index:Q}:{type:se?"BACK":"FORWARD"};if(x)x=!1;else{const Ce=l();if(typeof document<"u"&&Ce.length){for(const L of Ce)if(await L.blockerFn({currentLocation:m,nextLocation:U,action:_e})){w=!0,e.history.go(1),$.notify(ze);return}}}m=p(),$.notify(ze)},V=U=>{if(k){k=!1;return}let Q=!1;const ae=l();if(typeof document<"u"&&ae.length)for(const se of ae){const ye=se.enableBeforeUnload??!0;if(ye===!0){Q=!0;break}if(typeof ye=="function"&&ye()===!0){Q=!0;break}}if(Q)return U.preventDefault(),U.returnValue=""},$=gT({getLocation:A,getLength:()=>e.history.length,pushState:(U,Q)=>R("push",U,Q),replaceState:(U,Q)=>R("replace",U,Q),back:U=>(U&&(x=!0),k=!0,e.history.back()),forward:U=>{U&&(x=!0),k=!0,e.history.forward()},go:U=>{y=!0,e.history.go(U)},createHref:U=>h(U),flush:O,destroy:()=>{e.history.pushState=n,e.history.replaceState=a,e.removeEventListener(uv,V,{capture:!0}),e.removeEventListener(cv,K)},onBlocked:()=>{b&&m!==b&&(m=b)},getBlockers:l,setBlockers:u,notifyOnIndexChange:!1});return e.addEventListener(uv,V,{capture:!0}),e.addEventListener(cv,K),e.history.pushState=function(...U){const Q=n.apply(e.history,U);return $._ignoreSubscribers||M("PUSH"),Q},e.history.replaceState=function(...U){const Q=a.apply(e.history,U);return $._ignoreSubscribers||M("REPLACE"),Q},$}function bT(t){let e=t.replace(/[\x00-\x1f\x7f]/g,"");return e.startsWith("//")&&(e="/"+e.replace(/^\/+/,"")),e}function uu(t,e){const n=bT(t),a=n.indexOf("#"),o=n.indexOf("?"),l=Ap();return{href:n,pathname:n.substring(0,a>0?o>0?Math.min(a,o):a:o>0?o:n.length),hash:a>-1?n.substring(a):"",search:o>-1?n.slice(o,a===-1?void 0:a):"",state:e||{[Ms]:0,key:l,__TSR_key:l}}}function Ap(){return(Math.random()+1).toString(36).substring(7)}function vT(t){return t instanceof Error?{name:t.name,message:t.message}:{data:t}}function Pi(t,e){const n=e,a=t;return{fromLocation:n,toLocation:a,pathChanged:n?.pathname!==a.pathname,hrefChanged:n?.href!==a.href,hashChanged:n?.hash!==a.hash}}var wT=class{constructor(t,e){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this.resetNextScroll=!0,this.shouldViewTransition=void 0,this.isViewTransitionTypesSupported=void 0,this.subscribers=new Set,this.isScrollRestoring=!1,this.isScrollRestorationSetup=!1,this.startTransition=n=>
10n(),this.update=n=>{const a=this.options,o=this.basepath??a?.basepath??"/",l=this.basepath===void 0,u=a?.rewrite;if(this.options={...a,...n},this.isServer=this.options.isServer??typeof document>"u",this.protocolAllowlist=new Set(this.options.protocolAllowlist),this.options.pathParamsAllowedCharacters&&(this.pathParamsDecoder=Wj(this.options.pathParamsAllowedCharacters)),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.options.history?this.history=this.options.history:this.history=yT()),this.origin=this.options.origin,this.origin||(window?.origin&&window.origin!=="null"?this.origin=window.origin:this.origin="http://localhost"),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let b;this.resolvePathCache=sl(1e3),b=this.buildRouteTree(),this.setRoutes(b)}if(!this.stores&&this.latestLocation){const b=this.getStoreConfig(this);this.batch=b.batch,this.stores=cT(kT(this.latestLocation),b),tT(this)}let h=!1;const p=this.options.basepath??"/",m=this.options.rewrite;if(l||o!==p||u!==m){this.basepath=p;const b=[],y=g0(p);y&&y!=="/"&&b.push(lT({basepath:p})),m&&b.push(m),this.rewrite=b.length===0?void 0:b.length===1?b[0]:oT(b),this.history&&this.updateLatestLocation(),h=!0}h&&this.stores&&this.stores.location.set(this.latestLocation),typeof window<"u"&&"CSS"in window&&typeof window.CSS?.supports=="function"&&(this.isViewTransitionTypesSupported=window.CSS.supports("selector(:active-view-transition-type(a)"))},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{const n=$j(this.routeTree,this.options.caseSensitive,(a,o)=>{a.init({originalIndex:o})});return this.options.routeMasks&&Uj(this.options.routeMasks,n.processedTree),n},this.subscribe=(n,a)=>{const o={eventType:n,fn:a};return this.subscribers.add(o),()=>{this.subscribers.delete(o)}},this.emit=n=>{this.subscribers.forEach(a=>{a.eventType===n.type&&a.fn(n)})},this.parseLocation=(n,a)=>{const o=({pathname:p,search:m,hash:b,href:y,state:w})=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(p)){const j=this.options.parseSearch(m),O=this.options.stringifySearch(j);return{href:p+O+b,publicHref:p+O+b,pathname:qo(p).path,external:!1,searchStr:O,search:ha(a?.search,j),hash:qo(b.slice(1)).path,state:ya(a?.state,w)}}const x=new URL(y,this.origin),k=zf(this.rewrite,x),A=this.options.parseSearch(k.search),_=this.options.stringifySearch(A);return k.search=_,{href:k.href.replace(k.origin,""),publicHref:y,pathname:qo(k.pathname).path,external:!!this.rewrite&&k.origin!==this.origin,searchStr:_,search:ha(a?.search,A),hash:qo(k.hash.slice(1)).path,state:ya(a?.state,w)}},l=o(n),{__tempLocation:u,__tempKey:h}=l.state;if(u&&(!h||h===this.tempLocationKey)){const p=o(u);return p.state.key=l.state.key,p.state.__TSR_key=l.state.__TSR_key,delete p.state.__tempLocation,{...p,maskedLocation:l}}return l},this.resolvePathWithBase=(n,a)=>Yj({base:n,to:Tp(a),trailingSlash:this.options.trailingSlash,cache:this.resolvePathCache}),this.matchRoutes=(n,a,o)=>typeof n=="string"?this.matchRoutesInternal({pathname:n,search:a},o):this.matchRoutesInternal(n,a),this.getMatchedRoutes=n=>_T({pathname:n,routesById:this.routesById,processedTree:this.processedTree}),this.cancelMatch=n=>{const a=this.getMatch(n);a&&(a.abortController.abort(),clearTimeout(a._nonReactive.pendingTimeout),a._nonReactive.pendingTimeout=void 0)},this.cancelMatches=()=>{this.stores.pendingIds.get().forEach(n=>{this.cancelMatch(n)}),this.stores.matchesId.get().forEach(n=>{if(this.stores.pendingMatchStores.has(n))return;const a=this.stores.matchStores.get(n)?.get();a&&(a.status==="pending"||a.isFetching==="loader")&&this.cancelMatch(n)})},this.buildLocation=n=>{const a=(l={})=>{const u=l._fromLocation||this.pendingBuiltLocation||this.latestLocation,h=this.matchRoutesLightweight(u);l.from;const p=l.unsafeRelative==="path"?u.pathname:l.from??h.fullPath,m=this.resolvePathWithBase(p,"."),b=h.search,y=Object.assign(Object.create(null),h.params),w=l.to?this.resolvePathWithBase(m,`${l.to}`):this.resolvePathWithBase(m,"."),x=l.params===!1||l.params===null?Ob
10ject.create(null):(l.params??!0)===!0?y:Object.assign(y,As(l.params,y)),k=this.getMatchedRoutes(w);let A=k.matchedRoutes;if((!k.foundRoute||k.foundRoute.path!=="/"&&k.routeParams["**"])&&this.options.notFoundRoute&&(A=[...A,this.options.notFoundRoute]),Object.keys(x).length>0)for(const ae of A){const se=ae.options.params?.stringify??ae.options.stringifyParams;if(se)try{Object.assign(x,se(x))}catch{}}const _=n.leaveParams?w:qo(ev({path:w,params:x,decoder:this.pathParamsDecoder,server:this.isServer}).interpolatedPath).path;let j=b;if(n._includeValidateSearch&&this.options.search?.strict){const ae={};A.forEach(se=>{if(se.options.validateSearch)try{Object.assign(ae,su(se.options.validateSearch,{...ae,...j}))}catch{}}),j=ae}j=ST({search:j,dest:l,destRoutes:A,_includeValidateSearch:n._includeValidateSearch}),j=ha(b,j);const O=this.options.stringifySearch(j),R=l.hash===!0?u.hash:l.hash?As(l.hash,u.hash):void 0,M=R?`#${R}`:"";let K=l.state===!0?u.state:l.state?As(l.state,u.state):{};K=ya(u.state,K);const V=`${_}${O}${M}`;let $,U,Q=!1;if(this.rewrite){const ae=new URL(V,this.origin),se=w0(this.rewrite,ae);$=ae.href.replace(ae.origin,""),se.origin!==this.origin?(U=se.href,Q=!0):U=se.pathname+se.search+se.hash}else $=Dj(V),U=$;return{publicHref:U,href:$,pathname:_,search:j,searchStr:O,state:K,hash:R??"",external:Q,unmaskOnReload:l.unmaskOnReload}},o=(l={},u)=>{const h=a(l);let p=u?a(u):void 0;if(!p){const m=Object.create(null);if(this.options.routeMasks){const b=Ij(h.pathname,this.processedTree);if(b){Object.assign(m,b.rawParams);const{from:y,params:w,...x}=b.route,k=w===!1||w===null?Object.create(null):(w??!0)===!0?m:Object.assign(m,As(w,m));u={from:n.from,...x,params:k},p=a(u)}}}return p&&(h.maskedLocation=p),h};return n.mask?o(n,{from:n.from,...n.mask}):o(n)},this.commitLocation=async({viewTransition:n,ignoreBlocker:a,...o})=>{const l=()=>{const p=["key","__TSR_key","__TSR_index","__hashScrollIntoViewOptions"];p.forEach(b=>{o.state[b]=this.latestLocation.state[b]});const m=yn(o.state,this.latestLocation.state);return p.forEach(b=>{delete o.state[b]}),m},u=Ns(this.latestLocation.href)===Ns(o.href);let h=this.commitLocationPromise;if(this.commitLocationPromise=Sa(()=>{h?.resolve(),h=void 0}),u&&l())this.load();else{let{maskedLocation:p,hashScrollIntoView:m,...b}=o;p&&(b={...p,state:{...p.state,__tempKey:void 0,__tempLocation:{...b,search:b.searchStr,state:{...b.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(b.unmaskOnReload??this.options.unmaskOnReload??!1)&&(b.state.__tempKey=this.tempLocationKey)),b.state.__hashScrollIntoViewOptions=m??this.options.defaultHashScrollIntoView??!0,this.shouldViewTransition=n,this.history[o.replace?"replace":"push"](b.publicHref,b.state,{ignoreBlocker:a})}return this.resetNextScroll=o.resetScroll??!0,this.history.subscribers.size||this.load(),this.commitLocationPromise},this.buildAndCommitLocation=({replace:n,resetScroll:a,hashScrollIntoView:o,viewTransition:l,ignoreBlocker:u,href:h,...p}={})=>{if(h){const y=this.history.location.state.__TSR_index,w=uu(h,{__TSR_index:n?y:y+1}),x=new URL(w.pathname,this.origin);p.to=zf(this.rewrite,x).pathname,p.search=this.options.parseSearch(w.search),p.hash=w.hash.slice(1)}const m=this.buildLocation({...p,_includeValidateSearch:!0});this.pendingBuiltLocation=m;const b=this.commitLocation({...m,viewTransition:l,replace:n,resetScroll:a,hashScrollIntoView:o,ignoreBlocker:u});return Promise.resolve().then(()=>{this.pendingBuiltLocation===m&&(this.pendingBuiltLocation=void 0)}),b},this.navigate=async({to:n,reloadDocument:a,href:o,publicHref:l,...u})=>{let h=!1;if(o)try{new URL(`${o}`),h=!0}catch{}if(h&&!a&&(a=!0),a){if(n!==void 0||!o){const m=this.buildLocation({to:n,...u});o=o??m.publicHref,l=l??m.publicHref}const p=!h&&l?l:o;if(lu(p,this.protocolAllowlist))return Promise.resolve();if(!u.ignoreBlocker){const m=this.history.getBlockers?.()??[];for(const b of m)if(b?.blockerFn&&await b.blockerFn({currentLocation:this.latestLocation,nextLocation:this.latestLocation,action:"PUSH"}))return Promise.resolve()}return u.replace?window.location.replace(p):window.location.href=p,Promise.resolve()}return this.buildAndCommitLocation({...u,href:o,to:n,_isNavigate:!0})},this.beforeLoad=()=>{this.cancelMatches(),this.updateLatestLocation();const n=this.matchRoutes(this.latestLocation),a=this.stores.cachedMatches.get().filter(o=>!n.some(l=>l.id===o.id));this.batch(()=>{this.stores.status.set("pending"),this.stores.statusCode.set(200),this.stores.isLoading.set(!0),this.stores.location.set(this.latestLocation),this.stores.setPending(n),this.stores.setCached(a)})},this.load=async n=>{let a,o,l;const u=this.stores.resolvedLocation.get()??this.stores.location.get();for(l=new Promise(p=>{this.startTransition(async()=>{try{this.beforeLoad();const m=this.latestLocation,b=Pi(m,this.stores.resolvedLocation.get());
10this.stores.redirect.get()||this.emit({type:"onBeforeNavigate",...b}),this.emit({type:"onBeforeLoad",...b}),await ov({router:this,sync:n?.sync,forceStaleReload:u.href===m.href,matches:this.stores.pendingMatches.get(),location:m,updateMatch:this.updateMatch,onReady:async()=>{this.startTransition(()=>{this.startViewTransition(async()=>{let y=null,w=null,x=null,k=null;this.batch(()=>{const A=this.stores.pendingMatches.get(),_=A.length,j=this.stores.matches.get();y=_?j.filter(M=>!this.stores.pendingMatchStores.has(M.id)):null;const O=new Set;for(const M of this.stores.pendingMatchStores.values())M.routeId&&O.add(M.routeId);const R=new Set;for(const M of this.stores.matchStores.values())M.routeId&&R.add(M.routeId);w=_?j.filter(M=>!O.has(M.routeId)):null,x=_?A.filter(M=>!R.has(M.routeId)):null,k=_?A.filter(M=>R.has(M.routeId)):j,this.stores.isLoading.set(!1),this.stores.loadedAt.set(Date.now()),_&&(this.stores.setMatches(A),this.stores.setPending([]),this.stores.setCached([...this.stores.cachedMatches.get(),...y.filter(M=>M.status!=="error"&&M.status!=="notFound"&&M.status!=="redirected")]),this.clearExpiredCache())});for(const[A,_]of[[w,"onLeave"],[x,"onEnter"],[k,"onStay"]])if(A)for(const j of A)this.looseRoutesById[j.routeId].options[_]?.(j)})})}})}catch(m){rn(m)?(a=m,this.navigate({...a.options,replace:!0,ignoreBlocker:!0})):Bt(m)&&(o=m);const b=a?a.status:o?404:this.stores.matches.get().some(y=>y.status==="error")?500:200;this.batch(()=>{this.stores.statusCode.set(b),this.stores.redirect.set(a)})}this.latestLoadPromise===l&&(this.commitLocationPromise?.resolve(),this.latestLoadPromise=void 0,this.commitLocationPromise=void 0),p()})}),this.latestLoadPromise=l,await l;this.latestLoadPromise&&l!==this.latestLoadPromise;)await this.latestLoadPromise;let h;this.hasNotFoundMatch()?h=404:this.stores.matches.get().some(p=>p.status==="error")&&(h=500),h!==void 0&&this.stores.statusCode.set(h)},this.startViewTransition=n=>
10{const a=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,a&&typeof document<"u"&&"startViewTransition"in document&&typeof document.startViewTransition=="function"){let o;if(typeof a=="object"&&this.isViewTransitionTypesSupported){const l=this.latestLocation,u=this.stores.resolvedLocation.get(),h=typeof a.types=="function"?a.types(Pi(l,u)):a.types;if(h===!1){n();return}o={update:n,types:h}}else o=n;document.startViewTransition(o)}else n()},this.updateMatch=(n,a)=>{this.startTransition(()=>{const o=this.stores.pendingMatchStores.get(n);if(o){o.set(a);return}const l=this.stores.matchStores.get(n);if(l){l.set(a);return}const u=this.stores.cachedMatchStores.get(n);if(u){const h=a(u.get());h.status==="redirected"?this.stores.cachedMatchStores.delete(n)&&this.stores.cachedIds.set(p=>p.filter(m=>m!==n)):u.set(h)}})},this.getMatch=n=>this.stores.cachedMatchStores.get(n)?.get()??this.stores.pendingMatchStores.get(n)?.get()??this.stores.matchStores.get(n)?.get(),this.invalidate=n=>{const a=o=>n?.filter?.(o)??!0?{...o,invalid:!0,...n?.forcePending||o.status==="error"||o.status==="notFound"?{status:"pending",error:void 0}:void 0}:o;return this.batch(()=>{this.stores.setMatches(this.stores.matches.get().map(a)),this.stores.setCached(this.stores.cachedMatches.get().map(a)),this.stores.setPending(this.stores.pendingMatches.get().map(a))}),this.shouldViewTransition=!1,this.load({sync:n?.sync})},this.getParsedLocationHref=n=>n.publicHref||"/",this.resolveRedirect=n=>{const a=n.headers.get("Location");if(!n.options.href||n.options._builtLocation){const o=n.options._builtLocation??this.buildLocation(n.options),l=this.getParsedLocationHref(o);n.options.href=l,n.headers.set("Location",l)}else if(a)try{const o=new URL(a);if(this.origin&&o.origin===this.origin){const l=o.pathname+o.search+o.hash;n.options.href=l,n.headers.set("Location",l)}}catch{}if(n.options.href&&!n.options._builtLocation&&lu(n.options.href,this.protocolAllowlist))throw new Error("Redirect blocked: unsafe protocol");return n.headers.get("Location")||n.headers.set("Location",n.options.href),n},this.clearCache=n=>{const a=n?.filter;a!==void 0?this.stores.setCached(this.stores.cachedMatches.get().filter(o=>!a(o))):this.stores.setCached([])},this.clearExpiredCache=()=>{const n=Date.now(),a=o=>{const l=this.looseRoutesById[o.routeId];if(!l.options.loader)return!0;const u=(o.preload?l.options.preloadGcTime??this.options.defaultPreloadGcTime:l.options.gcTime??this.options.defaultGcTime)??300*1e3;return o.status==="error"?!0:n-o.updatedAt>=u};this.clearCache({filter:a})},this.loadRouteChunk=al,this.preloadRoute=async n=>{const a=n._builtLocation??this.buildLocation(n);let o=this.matchRoutes(a,{throwOnError:!0,preload:!0,dest:n});const l=new Set([...this.stores.matchesId.get(),...this.stores.pendingIds.get()]),u=new Set([...l,...this.stores.cachedIds.get()]),h=o.filter(p=>!u.has(p.id));if(h.length){const p=this.stores.cachedMatches.get();this.stores.setCached([...p,...h])}try{return o=await ov({router:this,matches:o,location:a,preload:!0,updateMatch:(p,m)=>{l.has(p)?o=o.map(b=>b.id===p?m(b):b):this.updateMatch(p,m)}}),o}catch(p){if(rn(p))return p.options.reloadDocument?void 0:await this.preloadRoute({...p.options,_fromLocation:a});Bt(p)||console.error(p);return}},this.matchRoute=(n,a)=>{const o={...n,to:n.to?this.resolvePathWithBase(n.from||"",n.to):void 0,params:n.params||{},leaveParams:!0},l=this.buildLocation(o);if(a?.pending&&this.stores.status.get()!=="pending")return!1;const u=(a?.pending===void 0?!this.stores.isLoading.get():a.pending)?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),h=Bj(l.pathname,a?.caseSensitive??!1,a?.fuzzy??!1,u.pathname,this.processedTree);return!h||n.params&&!yn(h.rawParams,n.params,{partial:!0})?!1:a?.includeSearch??!0?yn(u.search,l.search,{partial:!0})?h.rawParams:!1:h.rawParams},this.hasNotFoundMatch=()=>this.stores.matches.get().some(n=>n.status==="notFound"||n.globalNotFound),this.getStoreConfig=e,this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...t,caseSensitive:t.caseSensitive??!1,notFoundMode:t.notFoundMode??"fuzzy",stringifySearch:t.stringifySearch??sT,parseSearch:t.parseSearch??rT,protocolAllowlist:t.protocolAllowlist??Cj}),typeof document<"u"&&(self.__TSR_ROUTER__=this)}
10isShell(){return!!this.options.isShell}isPrerendering(){return!!this.options.isPrerendering}get state(){return this.stores.__store.get()}setRoutes({routesById:t,routesByPath:e,processedTree:n}){this.routesById=t,this.routesByPath=e,this.processedTree=n;const a=this.options.notFoundRoute;a&&(a.init({originalIndex:99999999999}),this.routesById[a.id]=a)}get looseRoutesById(){return this.routesById}getParentContext(t){return t?.id?t.context??this.options.context??void 0:this.options.context??void 0}matchRoutesInternal(t,e){const n=this.getMatchedRoutes(t.pathname),{foundRoute:a,routeParams:o,parsedParams:l}=n;let{matchedRoutes:u}=n,h=!1;(a?a.path!=="/"&&o["**"]:Ns(t.pathname))&&(this.options.notFoundRoute?u=[...u,this.options.notFoundRoute]:h=!0);const p=h?TT(this.options.notFoundMode,u):void 0,m=new Array(u.length),b=new Map;for(const y of this.stores.matchStores.values())y.routeId&&b.set(y.routeId,y.get());for(let y=0;y<u.length;y++){const w=u[y],x=m[y-1];let k,A,_;{const _e=x?.search??t.search,ze=x?._strictSearch??void 0;try{const Ce=su(w.options.validateSearch,{..._e})??void 0;k={..._e,...Ce},A={...ze,...Ce},_=void 0}catch(Ce){let L=Ce;if(Ce instanceof du||(L=new du(Ce.message,{cause:Ce})),e?.throwOnError)throw L;k=_e,A={},_=L}}const j=w.options.loaderDeps?.({search:k})??"",O=j?JSON.stringify(j):"",{interpolatedPath:R,usedParams:M}=ev({path:w.fullPath,params:o,decoder:this.pathParamsDecoder,server:this.isServer}),K=w.id+R+O,V=this.getMatch(K),$=b.get(w.id),U=V?._strictParams??M;let Q;if(!V)try{hv(w,M,l,U)}catch(_e){if(Bt(_e)||rn(_e)?Q=_e:Q=new xT(_e.message,{cause:_e}),e?.throwOnError)throw Q}Object.assign(o,U);const ae=$?"stay":"enter";let se;if(V)se={...V,cause:ae,params:$?.params??o,_strictParams:U,search:ha($?$.search:V.search,k),_strictSearch:A};else{const _e=w.options.loader||w.options.beforeLoad||w.lazyFn||S0(w)?"pending":"success";se={id:K,ssr:w.options.ssr,index:y,routeId:w.id,params:$?.params??o,_strictParams:U,pathname:R,updatedAt:Date.now(),search:$?ha($.search,k):k,_strictSearch:A,searchError:void 0,status:_e,isFetching:!1,error:void 0,paramsError:Q,__routeC
10ontext:void 0,_nonReactive:{loadPromise:Sa()},__beforeLoadContext:void 0,context:{},abortController:new AbortController,fetchCount:0,cause:ae,loaderDeps:$?ya($.loaderDeps,j):j,invalid:!1,preload:!1,links:void 0,scripts:void 0,headScripts:void 0,meta:void 0,staticData:w.options.staticData||{},fullPath:w.fullPath}}e?.preload||(se.globalNotFound=p===w.id),se.searchError=_;const ye=this.getParentContext(x);se.context={...ye,...se.__routeContext,...se.__beforeLoadContext},m[y]=se}for(let y=0;y<m.length;y++){const w=m[y],x=this.looseRoutesById[w.routeId],k=this.getMatch(w.id),A=b.get(w.routeId);if(w.params=A?ha(A.params,o):o,!k){const _=m[y-1],j=this.getParentContext(_);if(x.options.context){const O={deps:w.loaderDeps,params:w.params,context:j??{},location:t,navigate:R=>this.navigate({...R,_fromLocation:t}),buildLocation:this.buildLocation,cause:w.cause,abortController:w.abortController,preload:!!w.preload,matches:m,routeId:x.id};w.__routeContext=x.options.context(O)??void 0}w.context={...j,...w.__routeContext,...w.__beforeLoadContext}}}return m}matchRoutesLightweight(t){const{matchedRoutes:e,routeParams:n,parsedParams:a}=this.getMatchedRoutes(t.pathname),o=nl(e),l={...t.search};for(const b of e)try{Object.assign(l,su(b.options.validateSearch,l))}catch{}const u=nl(this.stores.matchesId.get()),h=u&&this.stores.matchStores.get(u)?.get(),p=h&&h.routeId===o.id&&h.pathname===t.pathname;let m;if(p)m=h.params;else{const b=Object.assign(Object.create(null),n);for(const y of e)try{hv(y,n,a??{},b)}catch{}m=b}return{matchedRoutes:e,fullPath:o.fullPath,search:l,params:m}}},du=class extends Error{},xT=class extends Error{};function kT(t){return{loadedAt:0,isLoading:!1,isTransitioning:!1,status:"idle",resolvedLocation:void 0,location:t,matches:[],statusCode:200}}function su(t,e){if(t==null)return{};if("~standard"in t){const n=t["~standard"].validate(e);if(n instanceof Promise)throw new du("Async validation not supported");if(n.issues)throw new du(JSON.stringify(n.issues,void 0,2),{cause:n});return n.value}return"parse"in t?t.parse(e):typeof t=="function"?t(e):{}}function _T({pathname:t,routesById:e,processedTree:n}){const a=Object.create(null),o=Ns(t);let l,u;const h=zj(o,n,!0);return h&&(l=h.route,Object.assign(a,h.rawParams),u=Object.assign(Object.create(null),h.parsedParams)),{matchedRoutes:h?.branch||[e.__root__],routeParams:a,foundRoute:l,parsedParams:u}}function ST({search:t,dest:e,destRoutes:n,_includeValidateSearch:a}){return jT(n)(t,e,a??!1)}function jT(t){const e={dest:null,_includeValidateSearch:!1,middlewares:[]};for(const o of t){if("search"in o.options)o.options.search?.middlewares&&e.middlewares.push(...o.options.search.middlewares);else if(o.options.preSearchFilters||o.options.postSearchFilters){const l=({search:u,next:h})=>{let p=u;"preSearchFilters"in o.options&&o.options.preSearchFilters&&(p=o.options.preSearchFilters.reduce((b,y)=>y(b),u));const m=h(p);return"postSearchFilters"in o.options&&o.options.postSearchFilters?o.options.postSearchFilters.reduce((b,y)=>y(b),m):m};e.middlewares.push(l)}if(o.options.validateSearch){const l=({search:u,next:h})=>{const p=h(u);if(!e._includeValidateSearch)return p;try{return{...p,...su(o.options.validateSearch,p)??void 0}}catch{return p}};e.middlewares.push(l)}}const n=({search:o})=>{const l=e.dest;return l.search?l.search===!0?o:As(l.search,o):{}};e.middlewares.push(n);const a=(o,l,u)=>{if(o>=u.length)return l;const h=u[o];return h({search:l,next:m=>a(o+1,m,u)})};return function(l,u,h){return e.dest=u,e._includeValidateSearch=h,a(0,l,e.middlewares)}}function TT(t,e){if(t!=="root")for(let n=e.length-1;n>=0;n--){const a=e[n];if(a.children)return a.id}return xa}function hv(t,e,n,a){const o=t.options.params?.parse??t.options.parseParams;if(o)if(t.options.skipRouteOnParseError)for(const l in e)l in n&&(a[l]=n[l]);else{const l=o(a);Object.assign(a,l)}}var fr=Symbol.for("TSR_DEFERRED_PROMISE");function AT(t,e){const n=t;return n[fr]||(n[fr]={status:"pending"},n.then(a=>{n[fr].status="success",n[fr].data=a}).catch(a=>{n[fr].status="error",n[fr].error={data:vT(a),__isServerError:!0}})),n}var ET="Error preloading route! âï¸";function fv(t,e){if(t)return typeof t=="string"?t:t[e]}function RT(t){return typeof t=="string"?{href:t,crossOrigin:void 0}:t}function CT(t){if(t.tag!=="link")return;const e=t.attrs?.rel,n=t.attrs?.href;if(typeof n=="string"&&(typeof e=="string"?e.split(/\s+/):[]).includes("stylesheet"))return n}function OT(t,e){const n=CT(e);return!!n&&t?.inlineCss?.styles[n]!==void 0}var j0=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(t){if(this.init=e=>{this.originalIndex=e.originalIndex;const n=this.options,a=!n?.path&&!n?.id;this.parentRoute=this.options.getParentRoute?.(),a?this._path=xa:this.parentRoute||bn();let o=a?xa:n?.path;o&&o!=="/"&&(o=m0(o));const l=n?.id||o;let u=a?xa:nu([this.parentRoute.id==="__root__"?"":this.parentRoute.id,l]);o==="__root__"&&(o="/"),u!=="__root__"&&(u=nu(["/",u]));const h=u==="__root__"?"/":nu([this.parentRoute.fullPath,o]);this._path=o,this._id=u,this._fullPath=h,this._to=Ns(h)},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e=="object"&&e!==null&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.redirect=e=>Ou({from:this.fullPath,...e}),this.options=t||{},this.isRoot=!t?.getParentRoute,t?.id&&t?.path)throw new Error("Route cannot have both an 'id' and a 'path' option.")}},NT=class extends j0{constructor(t){super(t)}};function MT(t){if(typeof document<"u"&&document.querySelector){const e=t.stores.location.get(),n=e.state.__hashScrollIntoViewOptions??!0;if(n&&e.hash!==""){const a=document.getElementById(e.hash);a&&a.scrollIntoView(n)}}}var DT=(t=>(t[t.AggregateError=1]="AggregateError",t[t.ArrowFunction=2]="ArrowFunction",t[t.ErrorPrototypeStack=4]="ErrorPrototypeStack",t[t.ObjectAssign=8]="Ob
10jectAssign",t[t.BigIntTypedArray=16]="BigIntTypedArray",t[t.RegExp=32]="RegExp",t))(DT||{}),Hr=Symbol.asyncIterator,T0=Symbol.hasInstance,Li=Symbol.isConcatSpreadable,Vr=Symbol.iterator,A0=Symbol.match,E0=Symbol.matchAll,R0=Symbol.replace,C0=Symbol.search,O0=Symbol.species,N0=Symbol.split,M0=Symbol.toPrimitive,Ui=Symbol.toStringTag,D0=Symbol.unscopables,P0={[Hr]:0,[T0]:1,[Li]:2,[Vr]:3,[A0]:4,[E0]:5,[R0]:6,[C0]:7,[O0]:8,[N0]:9,[M0]:10,[Ui]:11,[D0]:12},PT={0:Hr,1:T0,2:Li,3:Vr,4:A0,5:E0,6:R0,7:C0,8:O0,9:N0,10:M0,11:Ui,12:D0},E=void 0,LT={2:!0,3:!1,1:E,0:null,4:-0,5:Number.POSITIVE_INFINITY,6:Number.NEGATIVE_INFINITY,7:Number.NaN},UT={0:"Error",1:"EvalError",2:"RangeError",3:"ReferenceError",4:"SyntaxError",5:"TypeError",6:"URIError"},IT={0:Error,1:EvalError,2:RangeError,3:ReferenceError,4:SyntaxError,5:TypeError,6:URIError};function Fe(t,e,n,a,o,l,u,h,p,m,b,y){return{t,i:e,s:n,c:a,m:o,p:l,e:u,a:h,f:p,b:m,o:b,l:y}}function Bs(t){return Fe(2,E,t,E,E,E,E,E,E,E,E,E)}var L0=Bs(2),U0=Bs(3),BT=Bs(1),zT=Bs(0),qT=Bs(4),$T=Bs(5),HT=Bs(6),VT=Bs(7);function FT(t){switch(t){case'"':return'\\"';case"\\":return"\\\\";case` 11`:return"\\n";case"\r":return"\\r";case"\b":return"\\b";case" ":return"\\t";case"\f":return"\\f";case"<":return"\\x3C";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return E}}function zs(t){let e="",n=0,a;for(let o=0,l=t.length;o<l;o++)a=FT(t[o]),a&&(e+=t.slice(n,o)+a,n=o+1);return n===0?e=t:e+=t.slice(n),e}function GT(t){switch(t){case"\\\\":return"\\";case'\\"':return'"';case"\\n":return` 12`;case"\\r":return"\r";case"\\b":return"\b";case"\\t":return" ";case"\\f":return"\f";case"\\x3C":return"<";case"\\u2028":return"\u2028";case"\\u2029":return"\u2029";default:return t}}function qs(t){return t.replace(/(\\\\|\\"|\\n|\\r|\\b|\\t|\\f|\\u2028|\\u2029|\\x3C)/g,GT)}var qc="__SEROVAL_REFS__",I0=new Map,Ni=new Map;function B0(t){return I0.has(t)}function KT(t){return Ni.has(t)}function YT(t){if(B0(t))return I0.get(t);throw new j1(t)}function WT(t){if(KT(t))return Ni.get(t);throw new T1(t)}typeof globalThis<"u"?Object.defineProperty(globalThis,qc,{value:Ni,configurable:!0,writable:!1,enumerable:!1}):typeof window<"u"?Object.defineProperty(window,qc,{value:Ni,configurable:!0,writable:!1,enumerable:!1}):typeof self<"u"?Object.defineProperty(self,qc,{value:Ni,configurable:!0,writable:!1,enumerable:!1}):typeof global<"u"&&Object.defineProperty(global,qc,{value:Ni,configurable:!0,writable:!1,enumerable:!1});function Ep(t){return t instanceof EvalError?1:t instanceof RangeError?2:t instanceof ReferenceError?3:t instanceof SyntaxError?4:t instanceof TypeError?5:t instanceof URIError?6:0}function ZT(t){let e=UT[Ep(t)];return t.name!==e?{name:t.name}:t.constructor.name!==e?{name:t.constructor.name}:{}}function z0(t,e){let n=ZT(t),a=Object.getOwnPropertyNames(t);for(let o=0,l=a.length,u;o<l;o++)u=a[o],u!=="name"&&u!=="message"&&(u==="stack"?e&4&&(n=n||{},n[u]=t[u]):(n=n||{},n[u]=t[u]));return n}function q0(t){return Object.isFrozen(t)?3:Object.isSealed(t)?2:Object.isExtensible(t)?0:1}function JT(t){switch(t){case Number.POSITIVE_INFINITY:return $T;case Number.NEGATIVE_INFINITY:return HT}return t!==t?VT:Object.is(t,-0)?qT:Fe(0,E,t,E,E,E,E,E,E,E,E,E)}function $0(t){return Fe(1,E,zs(t),E,E,E,E,E,E,E,E,E)}function QT(t){return Fe(3,E,""+t,E,E,E,E,E,E,E,E,E)}function XT(t){return Fe(4,t,E,E,E,E,E,E,E,E,E,E)}function e1(t,e){let n=e.valueOf();return Fe(5,t,n!==n?"":e.toISOString(),E,E,E,E,E,E,E,E,E)}function t1(t,e){return Fe(6,t,E,zs(e.source),e.flags,E,E,E,E,E,E,E)}function n1(t,e){return Fe(17,t,P0[e],E,E,E,E,E,E,E,E,E)}function r1(t,e){return Fe(18,t,zs(YT(e)),E,E,E,E,E,E,E,E,E)}function s1(t,e,n){return Fe(25,t,n,zs(e),E,E,E,E,E,E,E,E)}function a1(t,e,n){return Fe(9,t,E,E,E,E,E,n,E,E,q0(e),E)}function i1(t,e){return Fe(21,t,E,E,E,E,E,E,e,E,E,E)}function o1(t,e,n){return Fe(15,t,E,e.constructor.name,E,E,E,E,n,e.byteOffset,E,e.length)}function l1(t,e,n){return Fe(16,t,E,e.constructor.name,E,E,E,E,n,e.byteOffset,E,e.byteLength)}function c1(t,e,n){return Fe(20,t,E,E,E,E,E,E,n,e.byteOffset,E,e.byteLength)}function u1(t,e,n){return Fe(13,t,Ep(e),E,zs(e.message),n,E,E,E,E,E,E)}function d1(t,e,n){return Fe(14,t,Ep(e),E,zs(e.message),n,E,E,E,E,E,E)}function h1(t,e){return Fe(7,t,E,E,E,E,E,e,E,E,E,E)}function f1(t,e){return Fe(28,E,E,E,E,E,E,[t,e],E,E,E,E)}function p1(t,e){return Fe(30,E,E,E,E,E,E,[t,e],E,E,E,E)}function m1(t,e,n){return Fe(31,t,E,E,E,E,E,n,e,E,E,E)}function g1(t,e){return Fe(32,t,E,E,E,E,E,E,e,E,E,E)}function y1(t,e){return Fe(33,t,E,E,E,E,E,E,e,E,E,E)}function b1(t,e){return Fe(34,t,E,E,E,E,E,E,e,E,E,E)}function v1(t,e,n,a){return Fe(35,t,n,E,E,E,E,e,E,E,E,a)}
12var w1={parsing:1,serialization:2,deserialization:3};function x1(t){return`Seroval Error (step: ${w1[t]})`}var k1=(t,e)=>x1(t),H0=class extends Error{constructor(t,e){super(k1(t)),this.cause=e}},pv=class extends H0{constructor(t){super("parsing",t)}},_1=class extends H0{constructor(t){super("deserialization",t)}};function Gr(t){return`Seroval Error (specific: ${t})`}var Mu=class extends Error{constructor(e){super(Gr(1)),this.value=e}},V0=class extends Error{constructor(e){super(Gr(2))}},S1=class extends Error{constructor(t){super(Gr(3))}},kl=class extends Error{constructor(t){super(Gr(4))}},j1=class extends Error{constructor(t){super(Gr(5)),this.value=t}},T1=class extends Error{constructor(t){super(Gr(6))}},A1=class extends Error{constructor(t){super(Gr(7))}},$s=class extends Error{constructor(t){super(Gr(8))}},E1=class extends Error{constructor(e){super(Gr(9))}},R1=class{constructor(t,e){this.value=t,this.replacement=e}},Du=()=>{let t={p:0,s:0,f:0};return t.p=new Promise((e,n)=>{t.s=e,t.f=n}),t},C1=(t,e)=>{t.s(e),t.p.s=1,t.p.v=e},O1=(t,e)=>{t.f(e),t.p.s=2,t.p.v=e};Du.toString();C1.toString();O1.toString();var N1=()=>{let t=[],e=[],n=!0,a=!1,o=0,l=(p,m,b)=>{for(b=0;b<o;b++)e[b]&&e[b][m](p)},u=(p,m,b,y)=>{for(m=0,b=t.length;m<b;m++)y=t[m],!n&&m===b-1?p[a?"return":"throw"](y):p.next(y)},h=(p,m)=>(n&&(m=o++,e[m]=p),u(p),()=>{n&&(e[m]=e[o],e[o--]=void 0)});return{__SEROVAL_STREAM__:!0,on:p=>h(p),next:p=>{n&&(t.push(p),l(p,"next"))},throw:p=>{n&&(t.push(p),l(p,"throw"),n=!1,a=!1,e.length=0)},return:p=>{n&&(t.push(p),l(p,"return"),n=!1,a=!0,e.length=0)}}},M1=t=>e=>()=>{let n=0,a={[t]:()=>a,next:()=>{if(n>e.d)return{done:!0,value:void 0};let o=n++,l=e.v[o];if(o===e.t)throw l;return{done:o===e.d,value:l}}};return a},D1=(t,e)=>n=>()=>{let a=0,o=-1,l=!1,u=[],h=[],p=(b=0,y=h.length)=>{for(;b<y;b++)h[b].s({done:!0,value:void 0})};n.on({next:b=>{let y=h.shift();y&&y.s({done:!1,value:b}),u.push(b)},throw:b=>{let y=h.shift();y&&y.f(b),p(),o=u.length,l=!0,u.push(b)},return:b=>{let y=h.shift();y&&y.s({done:!0,value:b}),p(),o=u.length,u.push(b)}});let m={[t]:()=>m,next:()=>{if(o===-1){let w=a++;if(w>=u.length){let x=e();return h.push(x),x.p}return{done:!1,value:u[w]}}if(a>o)return{done:!0,value:void 0};let b=a++,y=u[b];if(b!==o)return{done:!1,value:y};if(l)throw y;return{done:!0,value:y}}};return m},F0=t=>{let e=atob(t),n=e.length,a=new Uint8Array(n);for(let o=0;o<n;o++)a[o]=e.charCodeAt(o);return a.buffer};F0.toString();function P1(t){return"__SEROVAL_SEQUENCE__"in t}function G0(t,e,n){return{__SEROVAL_SEQUENCE__:!0,v:t,t:e,d:n}}function L1(t){let e=[],n=-1,a=-1,o=t[Vr]();for(;;)try{let l=o.next();if(e.push(l.value),l.done){a=e.length-1;break}}catch(l){n=e.length,e.push(l)}return G0(e,n,a)}var U1=M1(Vr);function I1(t){return U1(t)}var B1={},z1={},q1={0:{},1:{},2:{},3:{},4:{},5:{}};function Pu(t){return"__SEROVAL_STREAM__"in t}function Ta(){return N1()}function $1(t){let e=Ta(),n=t[Hr]();async function a(){try{let o=await n.next();o.done?e.return(o.value):(e.next(o.value),await a())}catch(o){e.throw(o)}}return a().catch(()=>{}),e}var H1=D1(Hr,Du);function V1(t){return H1(t)}async function F1(t){try{return[1,await t]}catch(e){return[0,e]}}function G1(t,e){return{plugins:e.plugins,mode:t,marked:new Set,features:63^(e.disabledFeatures||0),refs:e.refs||new Map,depthLimit:e.depthLimit||1e3}}function au(t,e){t.marked.add(e)}function K1(t,e){let n=t.refs.size;return t.refs.set(e,n),n}function Lu(t,e){let n=t.refs.get(e);return n!=null?(au(t,n),{type:1,value:XT(n)}):{type:0,value:K1(t,e)}}function Rp(t,e){let n=Lu(t,e);return n.type===1?n:B0(e)?{type:2,value:r1(n.value,e)}:n}function va(t,e){let n=Rp(t,e);if(n.type!==0)return n.value;if(e in P0)return n1(n.value,e);throw new Mu(e)}function Uu(t,e){let n=Lu(t,q1[e]);return n.type===1?n.value:Fe(26,n.value,e,E,E,E,E,E,E,E,E,E)}function Y1(t){let e=Lu(t,B1);return e.type===1?e.value:Fe(27,e.value,E,E,E,E,E,E,va(t,Vr),E,E,E)}function W1(t){let e=Lu(t,z1);return e.type===1?e.value:Fe(29,e.value,E,E,E,E,E,[Uu(t,1),va(t,Hr)],E,E,E,E)}function Z1(t,e,n,a){return Fe(n?11:10,t,E,E,E,a,E,E,E,E,q0(e),E)}function J1(t,e,n,a){return Fe(8,e,E,E,E,E,{k:n,v:a},E,Uu(t,0),E,E,E)}function Q1(t,e,n){let a=new Uint8Array(n),o="";for(let l=0,u=a.length;l<u;l++)o+=String.fromCharCode(a[l]);return Fe(19,e,zs(btoa(o)),E,E,E,E,E,Uu(t,5),E,E,E)}function X1(t,e){return{base:G1(t,e),child:void 0}}var eA=class{constructor(t,e){this._p=t,this.depth=e}parse(t){return Ot(this._p,this.depth,t)}};async function tA(t,e,n){let a=[];for(let o=0,l=n.length;o<l;o++)o in n?a[o]=await Ot(t,e,n[o]):a[o]=0;return a}
12async function nA(t,e,n,a){return a1(n,a,await tA(t,e,a))}async function Cp(t,e,n){let a=Object.entries(n),o=[],l=[];for(let u=0,h=a.length;u<h;u++)o.push(zs(a[u][0])),l.push(await Ot(t,e,a[u][1]));return Vr in n&&(o.push(va(t.base,Vr)),l.push(f1(Y1(t.base),await Ot(t,e,L1(n))))),Hr in n&&(o.push(va(t.base,Hr)),l.push(p1(W1(t.base),await Ot(t,e,$1(n))))),Ui in n&&(o.push(va(t.base,Ui)),l.push($0(n[Ui]))),Li in n&&(o.push(va(t.base,Li)),l.push(n[Li]?L0:U0)),{k:o,v:l}}async function wf(t,e,n,a,o){return Z1(n,a,o,await Cp(t,e,a))}async function rA(t,e,n,a){return i1(n,await Ot(t,e,a.valueOf()))}async function sA(t,e,n,a){return o1(n,a,await Ot(t,e,a.buffer))}async function aA(t,e,n,a){return l1(n,a,await Ot(t,e,a.buffer))}async function iA(t,e,n,a){return c1(n,a,await Ot(t,e,a.buffer))}async function mv(t,e,n,a){let o=z0(a,t.base.features);return u1(n,a,o?await Cp(t,e,o):E)}async function oA(t,e,n,a){let o=z0(a,t.base.features);return d1(n,a,o?await Cp(t,e,o):E)}async function lA(t,e,n,a){let o=[],l=[];for(let[u,h]of a.entries())o.push(await Ot(t,e,u)),l.push(await Ot(t,e,h));return J1(t.base,n,o,l)}async function cA(t,e,n,a){let o=[];for(let l of a.keys())o.push(await Ot(t,e,l));return h1(n,o)}async function K0(t,e,n,a){let o=t.base.plugins;if(o)for(let l=0,u=o.length;l<u;l++){let h=o[l];if(h.parse.async&&h.test(a))return s1(n,h.tag,await h.parse.async(a,new eA(t,e),{id:n}))}return E}async function uA(t,e,n,a){let[o,l]=await F1(a);return Fe(12,n,o,E,E,E,E,E,await Ot(t,e,l),E,E,E)}function dA(t,e,n,a,o){let l=[],u=n.on({next:h=>{au(this.base,e),Ot(this,t,h).then(p=>{l.push(g1(e,p))},p=>{o(p),u()})},throw:h=>{au(this.base,e),Ot(this,t,h).then(p=>{l.push(y1(e,p)),a(l),u()},p=>{o(p),u()})},return:h=>{au(this.base,e),Ot(this,t,h).then(p=>{l.push(b1(e,p)),a(l),u()},p=>{o(p),u()})}})}async function hA(t,e,n,a){return m1(n,Uu(t.base,4),await new Promise(dA.bind(t,e,n,a)))}async function fA(t,e,n,a){let o=[];for(let l=0,u=a.v.length;l<u;l++)o[l]=await Ot(t,e,a.v[l]);return v1(n,o,a.t,a.d)}async function pA(t,e,n,a){if(Array.isArray(a))return nA(t,e,n,a);if(Pu(a))return hA(t,e,n,a);if(P1(a))return fA(t,e,n,a);let o=a.constructor;if(o===R1)return Ot(t,e,a.replacement);let l=await K0(t,e,n,a);if(l)return l;switch(o){case Object:return wf(t,e,n,a,!1);case E:return wf(t,e,n,a,!0);case Date:return e1(n,a);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return mv(t,e,n,a);case Number:case Boolean:case String:case BigInt:return rA(t,e,n,a);case ArrayBuffer:return Q1(t.base,n,a);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return sA(t,e,n,a);case DataView:return iA(t,e,n,a);case Map:return lA(t,e,n,a);case Set:return cA(t,e,n,a)}if(o===Promise||a instanceof Promise)return uA(t,e,n,a);let u=t.base.features;if(u&32&&o===RegExp)return t1(n,a);if(u&16)switch(o){case BigInt64Array:case BigUint64Array:return aA(t,e,n,a)}if(u&1&&typeof AggregateError<"u"&&(o===AggregateError||a instanceof AggregateError))return oA(t,e,n,a);if(a instanceof Error)return mv(t,e,n,a);if(Vr in a||Hr in a)return wf(t,e,n,a,!!o);throw new Mu(a)}async function mA(t,e,n){let a=Rp(t.base,n);if(a.type!==0)return a.value;let o=await K0(t,e,a.value,n);if(o)return o;throw new Mu(n)}async function Ot(t,e,n){switch(typeof n){case"boolean":return n?L0:U0;case"undefined":return BT;case"string":return $0(n);case"number":return JT(n);case"bigint":return QT(n);case"object":{if(n){let a=Rp(t.base,n);
12return a.type===0?await pA(t,e+1,a.value,n):a.value}return zT}case"symbol":return va(t.base,n);case"function":return mA(t,e,n);default:throw new Mu(n)}}async function gA(t,e){try{return await Ot(t,0,e)}catch(n){throw n instanceof pv?n:new pv(n)}}var yA=(t=>(t[t.Vanilla=1]="Vanilla",t[t.Cross=2]="Cross",t))(yA||{});function Y0(t,e){for(let n=0,a=e.length;n<a;n++){let o=e[n];t.has(o)||(t.add(o),o.extends&&Y0(t,o.extends))}}function W0(t){if(t){let e=new Set;return Y0(e,t),[...e]}}function bA(t){switch(t){case"Int8Array":return Int8Array;case"Int16Array":return Int16Array;case"Int32Array":return Int32Array;case"Uint8Array":return Uint8Array;case"Uint16Array":return Uint16Array;case"Uint32Array":return Uint32Array;case"Uint8ClampedArray":return Uint8ClampedArray;case"Float32Array":return Float32Array;case"Float64Array":return Float64Array;case"BigInt64Array":return BigInt64Array;case"BigUint64Array":return BigUint64Array;default:throw new A1(t)}}var vA=1e6,wA=1e4,xA=2e4;function Z0(t,e){switch(e){case 3:return Object.freeze(t);case 1:return Object.preventExtensions(t);case 2:return Object.seal(t);default:return t}}var kA=1e3;function _A(t,e){var n;return{mode:t,plugins:e.plugins,refs:e.refs||new Map,features:(n=e.features)!=null?n:63^(e.disabledFeatures||0),depthLimit:e.depthLimit||kA}}function SA(t){return{mode:2,base:_A(2,t),child:E}}var jA=class{constructor(t,e){this._p=t,this.depth=e}deserialize(t){return et(this._p,this.depth,t)}};function J0(t,e){if(e<0||!Number.isFinite(e)||!Number.isInteger(e))throw new $s({t:4,i:e});if(t.refs.has(e))throw new Error("Conflicted ref id: "+e)}function TA(t,e,n){return J0(t.base,e),t.state.marked.has(e)&&t.base.refs.set(e,n),n}function AA(t,e,n){return J0(t.base,e),t.base.refs.set(e,n),n}function Nt(t,e,n){return t.mode===1?TA(t,e,n):AA(t,e,n)}function $f(t,e,n){if(Object.hasOwn(e,n))return e[n];throw new $s(t)}function EA(t,e){return Nt(t,e.i,WT(qs(e.s)))}function RA(t,e,n){let a=n.a,o=a.length,l=Nt(t,n.i,new Array(o));for(let u=0,h;u<o;u++)h=a[u],h&&(l[u]=et(t,e,h));return Z0(l,n.o),l}function CA(t){switch(t){case"constructor":case"__proto__":case"prototype":case"__defineGetter__":case"__defineSetter__":case"__lookupGetter__":case"__lookupSetter__":return!1;default:return!0}}function OA(t){switch(t){case Hr:case Li:case Ui:case Vr:return!0;default:return!1}}function gv(t,e,n){CA(e)?t[e]=n:Object.defineProperty(t,e,{value:n,configurable:!0,enumerable:!0,writable:!0})}function NA(t,e,n,a,o){if(typeof a=="string")gv(n,qs(a),et(t,e,o));else{let l=et(t,e,a);switch(typeof l){case"string":gv(n,l,et(t,e,o));break;case"symbol":OA(l)&&(n[l]=et(t,e,o));break;default:throw new $s(a)}}}function Q0(t,e,n,a){let o=n.k;if(o.length>0)for(let l=0,u=n.v,h=o.length;l<h;l++)NA(t,e,a,o[l],u[l]);return a}function MA(t,e,n){let a=Nt(t,n.i,n.t===10?{}:Object.create(null));return Q0(t,e,n.p,a),Z0(a,n.o),a}function DA(t,e){return Nt(t,e.i,new Date(e.s))}function PA(t,e){if(t.base.features&32){let n=qs(e.c);if(n.length>xA)throw new $s(e);return Nt(t,e.i,new RegExp(n,e.m))}throw new V0(e)}function LA(t,e,n){let a=Nt(t,n.i,new Set);for(let o=0,l=n.a,u=l.length;o<u;o++)a.add(et(t,e,l[o]));return a}function UA(t,e,n){let a=Nt(t,n.i,new Map);for(let o=0,l=n.e.k,u=n.e.v,h=l.length;o<h;o++)a.set(et(t,e,l[o]),et(t,e,u[o]));return a}function IA(t,e){if(e.s.length>vA)throw new $s(e);return Nt(t,e.i,F0(qs(e.s)))}function BA(t,e,n){var a;let o=bA(n.c),l=et(t,e,n.f),u=(a=n.b)!=null?a:0;if(u<0||u>l.byteLength)throw new $s(n);return Nt(t,n.i,new o(l,u,n.l))}function zA(t,e,n){var a;let o=et(t,e,n.f),l=(a=n.b)!=null?a:0;if(l<0||l>o.byteLength)throw new $s(n);return Nt(t,n.i,new DataView(o,l,n.l))}function X0(t,e,n,a){if(n.p){let o=Q0(t,e,n.p,{});Object.defineProperties(a,Object.getOwnPropertyDescriptors(o))}return a}function qA(t,e,n){let a=Nt(t,n.i,new AggregateError([],qs(n.m)));return X0(t,e,n,a)}function $A(t,e,n){let a=$f(n,IT,n.s),o=Nt(t,n.i,new a(qs(n.m)));return X0(t,e,n,o)}function HA(t,e,n){let a=Du(),o=Nt(t,n.i,a.p),l=et(t,e,n.f);return n.s?a.s(l):a.f(l),o}function VA(t,e,n){return Nt(t,n.i,Object(et(t,e,n.f)))}function FA(t,e,n){let a=t.base.plugins;if(a){let o=qs(n.c);for(let l=0,u=a.length;l<u;l++){let h=a[l];if(h.tag===o)return Nt(t,n.i,h.deserialize(n.s,new jA(t,e),{id:n.i}))}}throw new S1(n.c)}
12function GA(t,e){return Nt(t,e.i,Nt(t,e.s,Du()).p)}function KA(t,e,n){let a=t.base.refs.get(n.i);if(a)return a.s(et(t,e,n.a[1])),E;throw new kl("Promise")}function YA(t,e,n){let a=t.base.refs.get(n.i);if(a)return a.f(et(t,e,n.a[1])),E;throw new kl("Promise")}function WA(t,e,n){et(t,e,n.a[0]);let a=et(t,e,n.a[1]);return I1(a)}function ZA(t,e,n){et(t,e,n.a[0]);let a=et(t,e,n.a[1]);return V1(a)}function JA(t,e,n){let a=Nt(t,n.i,Ta()),o=n.a,l=o.length;if(l)for(let u=0;u<l;u++)et(t,e,o[u]);return a}function QA(t,e,n){let a=t.base.refs.get(n.i);if(a&&Pu(a))return a.next(et(t,e,n.f)),E;throw new kl("Stream")}function XA(t,e,n){let a=t.base.refs.get(n.i);if(a&&Pu(a))return a.throw(et(t,e,n.f)),E;throw new kl("Stream")}function eE(t,e,n){let a=t.base.refs.get(n.i);if(a&&Pu(a))return a.return(et(t,e,n.f)),E;throw new kl("Stream")}function tE(t,e,n){return et(t,e,n.f),E}function nE(t,e,n){return et(t,e,n.a[1]),E}function rE(t,e,n){let a=Nt(t,n.i,G0([],n.s,n.l));for(let o=0,l=n.a.length;o<l;o++)a.v[o]=et(t,e,n.a[o]);return a}function et(t,e,n){if(e>t.base.depthLimit)throw new E1(t.base.depthLimit);switch(e+=1,n.t){case 2:return $f(n,LT,n.s);case 0:return Number(n.s);case 1:return qs(String(n.s));case 3:if(String(n.s).length>wA)throw new $s(n);return BigInt(n.s);case 4:return t.base.refs.get(n.i);case 18:return EA(t,n);case 9:return RA(t,e,n);case 10:case 11:return MA(t,e,n);case 5:return DA(t,n);case 6:return PA(t,n);case 7:return LA(t,e,n);case 8:return UA(t,e,n);case 19:return IA(t,n);case 16:case 15:return BA(t,e,n);case 20:return zA(t,e,n);case 14:return qA(t,e,n);case 13:return $A(t,e,n);case 12:return HA(t,e,n);case 17:return $f(n,PT,n.s);case 21:return VA(t,e,n);case 25:return FA(t,e,n);case 22:return GA(t,n);case 23:return KA(t,e,n);case 24:return YA(t,e,n);case 28:return WA(t,e,n);case 30:return ZA(t,e,n);case 31:return JA(t,e,n);case 32:return QA(t,e,n);case 33:return XA(t,e,n);case 34:return eE(t,e,n);case 27:return tE(t,e,n);case 29:return nE(t,e,n);case 35:return rE(t,e,n);default:throw new V0(n)}}function sE(t,e){try{return et(t,0,e)}catch(n){throw new _1(n)}}var aE=()=>T;aE.toString();function yv(t,e){let n=W0(e.plugins),a=SA({plugins:n,refs:e.refs,features:e.features,disabledFeatures:e.disabledFeatures,depthLimit:e.depthLimit});return sE(a,t)}async function iE(t,e={}){let n=W0(e.plugins),a=X1(1,{plugins:n,disabledFeatures:e.disabledFeatures});return{t:await gA(a,t),f:a.base.features,m:Array.from(a.base.marked)}}function oE(t){return{tag:"$TSR/t/"+t.key,test:t.test,parse:{sync(e,n,a){return{v:n.parse(t.toSerializable(e))}},async async(e,n,a){return{v:await n.parse(t.toSerializable(e))}},stream(e,n,a){return{v:n.parse(t.toSerializable(e))}}},serialize:void 0,deserialize(e,n,a){return t.fromSerializable(n.deserialize(e.v))}}}var lE=class{constructor(t,e){this.stream=t,this.hint=e?.hint??"binary"}},hu=globalThis.Buffer,ex=!!hu&&typeof hu.from=="function";function tx(t){if(t.length===0)return"";if(ex)return hu.from(t).toString("base64");const e=32768,n=[];for(let a=0;a<t.length;a+=e){const o=t.subarray(a,a+e);n.push(String.fromCharCode.apply(null,o))}return btoa(n.join(""))}function nx(t){if(t.length===0)return new Uint8Array(0);if(ex){const a=hu.from(t,"base64");return new Uint8Array(a.buffer,a.byteOffset,a.byteLength)}const e=atob(t),n=new Uint8Array(e.length);for(let a=0;a<e.length;a++)n[a]=e.charCodeAt(a);return n}var Vo=Object.create(null),Fo=Object.create(null),cE=t=>new ReadableStream({start(e){t.on({next(n){try{e.enqueue(nx(n))}catch{}},throw(n){e.error(n)},return(){try{e.close()}catch{}}})}}),uE=new TextEncoder,dE=t=>new ReadableStream({start(e){t.on({next(n){try{typeof n=="string"?e.enqueue(uE.encode(n)):e.enqueue(nx(n.$b64))}catch{}},throw(n){e.error(n)},return(){try{e.close()}catch{}}})}}),hE="(s=>new ReadableStream({start(c){s.on({next(b){try{const d=atob(b),a=new Uint8Array(d.length);for(let i=0;i<d.length;i++)a[i]=d.charCodeAt(i);c.enqueue(a)}catch(_){}},throw(e){c.error(e)},return(){try{c.close()}catch(_){}}})}}))",fE="(s=>{const e=new TextEncoder();return new ReadableStream({start(c){s.on({next(v){try{if(typeof v==='string'){c.enqueue(e.encode(v))}else{const d=atob(v.$b64),a=new Uint8Array(d.length);for(let i=0;i<d.length;
12i++)a[i]=d.charCodeAt(i);c.enqueue(a)}}catch(_){}},throw(x){c.error(x)},return(){try{c.close()}catch(_){}}})}})})";function bv(t){const e=Ta(),n=t.getReader();return(async()=>{try{for(;;){const{done:a,value:o}=await n.read();if(a){e.return(void 0);break}e.next(tx(o))}}catch(a){e.throw(a)}finally{n.releaseLock()}})(),e}function vv(t){const e=Ta(),n=t.getReader(),a=new TextDecoder("utf-8",{fatal:!0});return(async()=>{try{for(;;){const{done:o,value:l}=await n.read();if(o){try{const u=a.decode();u.length>0&&e.next(u)}catch{}e.return(void 0);break}try{const u=a.decode(l,{stream:!0});u.length>0&&e.next(u)}catch{e.next({$b64:tx(l)})}}}catch(o){e.throw(o)}finally{n.releaseLock()}})(),e}var pE={tag:"tss/RawStream",extends:[{tag:"tss/RawStreamFactory",test(t){return t===Vo},parse:{sync(t,e,n){return{}},async async(t,e,n){return{}},stream(t,e,n){return{}}},serialize(t,e,n){return hE},deserialize(t,e,n){return Vo}},{tag:"tss/RawStreamFactoryText",test(t){return t===Fo},parse:{sync(t,e,n){return{}},async async(t,e,n){return{}},stream(t,e,n){return{}}},serialize(t,e,n){return fE},deserialize(t,e,n){return Fo}}],test(t){return t instanceof lE},parse:{sync(t,e,n){const a=t.hint==="text"?Fo:Vo;return{hint:e.parse(t.hint),factory:e.parse(a),stream:e.parse(Ta())}},async async(t,e,n){const a=t.hint==="text"?Fo:Vo,o=t.hint==="text"?vv(t.stream):bv(t.stream);return{hint:await e.parse(t.hint),factory:await e.parse(a),stream:await e.parse(o)}},stream(t,e,n){const a=t.hint==="text"?Fo:Vo,o=t.hint==="text"?vv(t.stream):bv(t.stream);return{hint:e.parse(t.hint),factory:e.parse(a),stream:e.parse(o)}}},serialize(t,e,n){return"("+e.serialize(t.factory)+")("+e.serialize(t.stream)+")"},deserialize(t,e,n){const a=e.deserialize(t.stream);return e.deserialize(t.hint)==="text"?dE(a):cE(a)}};function mE(t){return{tag:"tss/RawStream",test:()=>!1,parse:{},serialize(){throw new Error("RawStreamDeserializePlugin.serialize should not be called. Client only deserializes.")},deserialize(e,n,a){return t(typeof n?.deserialize=="function"?n.deserialize(e.streamId):e.streamId)}}}var gE={tag:"$TSR/Error",test(t){return t instanceof Error},parse:{sync(t,e){return{message:e.parse(t.message)}},async async(t,e){return{message:await e.parse(t.message)}},stream(t,e){return{message:e.parse(t.message)}}},serialize(t,e){return"new Error("+e.serialize(t.message)+")"},deserialize(t,e){return new Error(e.deserialize(t.message))}},Ss={},rx=t=>new ReadableStream({start:e=>{t.on({next:n=>{try{e.enqueue(n)}catch{}},throw:n=>{e.error(n)},return:()=>{try{e.close()}catch{}}})}}),yE={tag:"seroval-plugins/web/ReadableStreamFactory",test(t){return t===Ss},parse:{sync(){return Ss},async async(){return await Promise.resolve(Ss)},stream(){return Ss}},serialize(){return rx.toString()},deserialize(){return Ss}};function wv(t){let e=Ta(),n=t.getReader();async function a(){try{let o=await n.read();o.done?e.return(o.value):(e.next(o.value),await a())}catch(o){e.throw(o)}}return a().catch(()=>{}),e}var bE={tag:"seroval/plugins/web/ReadableStream",extends:[yE],test(t){return typeof ReadableStream>"u"?!1:t instanceof ReadableStream},parse:{sync(t,e){return{factory:e.parse(Ss),stream:e.parse(Ta())}},async async(t,e){return{factory:await e.parse(Ss),stream:await e.parse(wv(t))}},stream(t,e){return{factory:e.parse(Ss),stream:e.parse(wv(t))}}},serialize(t,e){return"("+e.serialize(t.factory)+")("+e.serialize(t.stream)+")"},deserialize(t,e){let n=e.deserialize(t.stream);return rx(n)}},vE=bE,wE=[gE,pE,vE];function xE(){return[..._p()?.serializationAdapters?.map(oE)??[],...wE]}var xv=new TextDecoder,kE=new Uint8Array(0),kv=16*1024*1024,_v=32*1024*1024,Sv=1024,jv=1e5;function _E(t){const e=new Map,n=new Map,a=new Set;let o=!1,l=null,u=0,h;const p=new ReadableStream({start(y){h=y},cancel(){o=!0;try{l?.cancel()}catch{}e.forEach(y=>{try{y.error(new Error("Framed response cancelled"))}catch{}}),e.clear(),n.clear(),a.clear()}});function m(y){const w=n.get(y);if(w)return w;if(a.has(y))return new ReadableStream({start(k){k.close()}});if(n.size>=Sv)throw new Error(`Too many raw streams in framed response (max ${Sv})`);const x=new ReadableStream({start(k){e.set(y,k)},cancel(){a.add(y),e.delete(y),n.delete(y)}});return n.set(y,x),x}function b(y){return m(y),e.get(y)}return(async()=>{const y=t.getReader();l=y;const w=[];let x=0;function k(){if(x<9)return null;const _=w[0];if(_.length>=9)return{type:_[0],streamId:(_[1]<<24|_[2]<<16|_[3]<<8|_[4])>>>0,length:(_[5]<<24|_[6]<<16|_[7]<<8|_[8])>>>0};const j=new Uint8Array(9);let O=0,R=9;for(let M=0;M<w.length&&R>0;M++){const K=w[M],V=Math.min(K.length,R);j.set(K.subarray(0,V),O),O+=V,R-=V}return{type:j[0],streamId:(j[1]<<24|j[2]<<16|j[3]<<8|j[4])>>>0,length:(j[5]<<24|j[6]<<16|j[7]<<8|j[8])>>>0}}function A(_){if(_===0)return kE;const j=new Uint8Array(_);let O=0,R=_;for(;R>0&&w.length>0;){const M=w[0];if(!M)break;const K=Math.min(M.length,R);j.set(M.subarray(0,K),O),O+=K,R-=K,K===M.length?w.shift():w[0]=M.subarray(K)}return x-=_,j}try{for(;;){const{done:_,value:j}=await y.read();if(o||_)break;
12if(j){if(x+j.length>_v)throw new Error(`Framed response buffer exceeded ${_v} bytes`);for(w.push(j),x+=j.length;;){const O=k();if(!O)break;const{type:R,streamId:M,length:K}=O;if(R!==Ur.JSON&&R!==Ur.CHUNK&&R!==Ur.END&&R!==Ur.ERROR)throw new Error(`Unknown frame type: ${R}`);if(R===Ur.JSON){if(M!==0)throw new Error("Invalid JSON frame streamId (expected 0)")}else if(M===0)throw new Error("Invalid raw frame streamId (expected non-zero)");if(K>kv)throw new Error(`Frame payload too large: ${K} bytes (max ${kv})`);const V=9+K;if(x<V)break;if(++u>jv)throw new Error(`Too many frames in framed response (max ${jv})`);A(9);const $=A(K);switch(R){case Ur.JSON:try{h.enqueue(xv.decode($))}catch{}break;case Ur.CHUNK:{const U=b(M);U&&U.enqueue($);break}case Ur.END:{const U=b(M);if(a.add(M),U){try{U.close()}catch{}e.delete(M)}break}case Ur.ERROR:{const U=b(M);if(a.add(M),U){const Q=xv.decode($);U.error(new Error(Q)),e.delete(M)}break}}}}}if(x!==0)throw new Error("Incomplete frame at end of framed response");try{h.close()}catch{}e.forEach(_=>{try{_.close()}catch{}}),e.clear()}catch(_){try{h.error(_)}catch{}e.forEach(j=>{try{j.error(_)}catch{}}),e.clear()}finally{try{y.releaseLock()}catch{}l=null}})(),{getOrCreateStream:m,jsonChunks:p}}var il=null;async function Hf(t){t.length>0&&await Promise.allSettled(t)}var SE=Object.prototype.hasOwnProperty;function sx(t){for(const e in t)if(SE.call(t,e))return!0;return!1}async function jE(t,e,n){il||(il=xE());const a=e[0],o=a.fetch??n,l=a.data instanceof FormData?"formData":"payload",u=a.headers?new Headers(a.headers):new Headers;if(u.set("x-tsr-serverFn","true"),l==="payload"&&u.set("accept",`${xj}, application/x-ndjson, application/json`),a.method==="GET"){if(l==="formData")throw new Error("FormData is not supported with GET requests");const p=await ax(a);if(p!==void 0){const m=b0({payload:p});t.includes("?")?t+=`&${m}`:t+=`?${m}`}}let h;if(a.method==="POST"){const p=await TE(a);p?.contentType&&u.set("content-type",p.contentType),h=p?.body}return await AE(async()=>o(t,{method:a.method,headers:u,signal:a.signal,body:h}))}async function ax(t){let e=!1;const n={};if(t.data!==void 0&&(e=!0,n.data=t.data),t.context&&sx(t.context)&&(e=!0,n.context=t.context),e)return ix(n)}async function ix(t){return JSON.stringify(await Promise.resolve(iE(t,{plugins:il})))}async function TE(t){if(t.data instanceof FormData){let n;return t.context&&sx(t.context)&&(n=await ix(t.context)),n!==void 0&&t.data.set(wj,n),{body:t.data}}const e=await ax(t);if(e)return{body:e,contentType:"application/json"}}async function AE(t){let e;try{e=await t()}catch(a){if(a instanceof Response)e=a;else throw console.log(a),a}if(e.headers.get("x-tss-raw")==="true")return e;const n=e.headers.get("content-type");if(n||bn(),e.headers.get("x-tss-serialized")){let a;if(n.includes("application/x-tss-framed")){if(Sj(n),!e.body)throw new Error("No response body for framed response");const{getOrCreateStream:o,jsonChunks:l}=_E(e.body),u=[mE(o),...il||[]],h=new Map;a=await EE({jsonStream:l,onMessage:p=>yv(p,{refs:h,plugins:u}),onError(p,m){console.error(p,m)}})}else if(n.includes("application/json")){const o=await e.json(),l=[];a=yv(o,{plugins:il}),await Hf(l)}if(a||bn(),a instanceof Error)throw a;return a}if(n.includes("application/json")){const a=await e.json(),o=v0(a);if(o)throw o;if(Bt(a))throw a;return a}if(!e.ok)throw new Error(await e.text());return e}async function EE({jsonStream:t,onMessage:e,onError:n}){const a=t.getReader(),{value:o,done:l}=await a.read();if(l||!o)throw new Error("Stream ended before first object");const u=JSON.parse(o);let h=!1;const p=(async()=>{try{for(;;){const{value:y,done:w}=await a.read();if(w)break;if(y)try{const x=[];try{e(JSON.parse(y))}finally{}await Hf(x)}catch(x){n?.(`Invalid JSON: ${y}`,x)}}}catch(y){h||n?.("Stream processing error:",y)}})();let m;const b=[];try{m=e(u)}catch(y){throw h=!0,a.cancel().catch(()=>{}),y}return await Hf(b),Promise.resolve(m).catch(()=>{h=!0,a.cancel().catch(()=>{})}),p.finally(()=>{try{a.releaseLock()}catch{}}),m}function Vi(t){const e="/_serverFn/"+t;return Object.assign((...o)=>{const l=_p()?.serverFns?.fetch;return jE(e,o,l??fetch)},{url:e,serverFnMeta:{id:t},[Bf]:!0})}var RE={key:"$TSS/serverfn",test:t=>typeof t!="function"||!(Bf in t)?!1:!!t[Bf],toSerializable:({serverFnMeta:t})=>({functionId:t.id}),fromSerializable:({functionId:t})=>Vi(t)};function ox(t){if(Array.isArray(t))return t.flatMap(b=>ox(b));if(typeof t!="string")return[];const e=[];let n=0,a,o,l,u,h;const p=()=>{for(;n<t.length&&/\s/.test(t.charAt(n));)n+=1;return n<t.length},m=()=>(o=t.charAt(n),o!=="="&&o!==";"&&o!==",");for(;n<t.length;){for(a=n,h=!1;p();)if(o=t.charAt(n),o===","){for(l=n,n+=1,p(),u=n;n<t.length&&m();)n+=1;n<t.length&&t.charAt(n)==="="?(h=!0,n=u,e.push(t.slice(a,l)),a=n):n=l+1}else n+=1;(!h||n>=t.length)&&e.push(t.slice(a))}return e}function CE(t){return t instanceof Headers?t:Array.isArray(t)?new Headers(t):typeof t=="object"?new Headers(t):null}function OE(...t){return t.reduce((e,n)=>{const a=CE(n);if(!a)return e;for(const[o,l]of a.entries())o==="set-cookie"?ox(l).forEach(u=>e.append("set-cookie",u)):e.set(o,l);return e},new Headers)}function Tv(t){return t.replaceAll("\0","/").replaceAll("�","/")}function NE(t,e){t.id=e.i,t.__beforeLoadContext=e.b,t.loaderData=e.l,t.status=e.s,t.ssr=e.ssr,t.updatedAt=e.u,t.error=e.e,e.g!==void 0&&(t.globalNotFound=e.g)}async function ME(t){window.$_TSR||bn();const e=t.options.serializationAdapters;if(e?.length){const _=new Map;e.forEach(j=>{_.set(j.key,j.fromSerializable)}),window.$_TSR.t=_,window.$_TSR.buffer.forEach(j=>j())}window.$_TSR.initialized=!0,window.$_TSR.router||bn();const n=window.$_TSR.router;
12n.matches.forEach(_=>{_.i=Tv(_.i)}),n.lastMatchId&&(n.lastMatchId=Tv(n.lastMatchId));const{manifest:a,dehydratedData:o,lastMatchId:l}=n;t.ssr={manifest:a};const u=document.querySelector('meta[property="csp-nonce"]')?.content;t.options.ssr={nonce:u};const h=t.matchRoutes(t.stores.location.get()),p=Promise.all(h.map(_=>t.loadRouteChunk(t.looseRoutesById[_.routeId])));function m(_){const j=t.looseRoutesById[_.routeId].options.pendingMinMs??t.options.defaultPendingMinMs;if(j){const O=Sa();_._nonReactive.minPendingPromise=O,_._forcePending=!0,setTimeout(()=>{O.resolve(),t.updateMatch(_.id,R=>(R._nonReactive.minPendingPromise=void 0,{...R,_forcePending:void 0}))},j)}}function b(_){const j=t.looseRoutesById[_.routeId];j&&(j.options.ssr=_.ssr)}let y;h.forEach(_=>{const j=n.matches.find(O=>O.i===_.id);if(!j){_._nonReactive.dehydrated=!1,_.ssr=!1,b(_);return}NE(_,j),b(_),_._nonReactive.dehydrated=_.ssr!==!1,(_.ssr==="data-only"||_.ssr===!1)&&y===void 0&&(y=_.index,m(_))}),t.stores.setMatches(h),await t.options.hydrate?.(o);const w=t.stores.matches.get(),x=t.stores.location.get();await Promise.all(w.map(async _=>{try{const j=t.looseRoutesById[_.routeId],O=w[_.index-1]?.context??t.options.context;if(j.options.context){const V={deps:_.loaderDeps,params:_.params,context:O??{},location:x,navigate:$=>t.navigate({...$,_fromLocation:x}),buildLocation:t.buildLocation,cause:_.cause,abortController:_.abortController,preload:!1,matches:h,routeId:j.id};_.__routeContext=j.options.context(V)??void 0}_.context={...O,..._.__routeContext,..._.__beforeLoadContext};const R={ssr:t.options.ssr,matches:w,match:_,params:_.params,loaderData:_.loaderData},M=await j.options.head?.(R),K=await j.options.scripts?.(R);_.meta=M?.meta,_.links=M?.links,_.headScripts=M?.scripts,_.styles=M?.styles,_.scripts=K}catch(j){if(Bt(j))_.error={isNotFound:!0},console.error(`NotFound error during hydration for routeId: ${_.routeId}`,j);else throw _.error=j,console.error(`Error during hydration for route ${_.routeId}:`,j),j}}));const k=h[h.length-1].id!==l;if(!h.some(_=>_.ssr===!1)&&!k)return h.forEach(_=>{_._nonReactive.dehydrated=void 0}),t.stores.resolvedLocation.set(t.stores.location.get()),p;const A=Promise.resolve().then(()=>t.load()).catch(_=>{console.error("Error during router hydration:",_)});if(k){const _=h[1];_||bn(),m(_),_._displayPending=!0,_._nonReactive.displayPendingPromise=A,A.then(()=>{t.batch(()=>{t.stores.status.get()==="pending"&&(t.stores.status.set("idle"),t.stores.resolvedLocation.set(t.stores.location.get())),t.updateMatch(_.id,j=>({...j,_displayPending:void 0,displayPendingPromise:void 0}))})})}return p}var fu=I.use,Wo=typeof window<"u"?I.useLayoutEffect:I.useEffect;function xf(t){const e=I.useRef({value:t,prev:null}),n=e.current.value;return t!==n&&(e.current={value:t,prev:n}),e.current.prev}function DE(t,e,n={},a={}){I.useEffect(()=>{if(!t.current||a.disabled||typeof IntersectionObserver!="function")return;const o=new IntersectionObserver(([l])=>{e(l)},n);return o.observe(t.current),()=>{o.disconnect()}},[e,n,a.disabled,t])}function PE(t){const e=I.useRef(null);return I.useImperativeHandle(t,()=>e.current,[]),e}function LE({promise:t}){if(fu)return fu(t);const e=AT(t);if(e[fr].status==="pending")throw e;if(e[fr].status==="error")throw e[fr].error;return e[fr].data}function UE(t){const e=d.jsx(IE,{...t});return t.fallback?d.jsx(I.Suspense,{fallback:t.fallback,children:e}):e}function IE(t){const e=LE(t);return t.children(e)}function Op(t){const e=t.errorComponent??Np;return d.jsx(BE,{getResetKey:t.getResetKey,onCatch:t.onCatch,children:({error:n,reset:a})=>n?I.createElement(e,{error:n,reset:a}):t.children})}var BE=class extends I.Component{constructor(...t){super(...t),this.state={error:null}}static getDerivedStateFromProps(t,e){const n=t.getResetKey();return e.error&&e.resetKey!==n?{resetKey:n,error:null}:{resetKey:n}}static getDerivedStateFromError(t){return{error:t}}reset(){this.setState({error:null})}componentDidCatch(t,e){this.props.onCatch&&this.props.onCatch(t,e)}render(){return this.props.children({error:this.state.error,reset:()=>{this.reset()}})}};function Np({error:t}){const[e,n]=I.useState(!1);return d.jsxs("div",{style:{padding:".5rem",maxWidth:"100%"},children:[d.jsxs("div",{style:{display:"flex",alignItems:"center",gap:".5rem"},children:[d.jsx("strong",{style:{fontSize:"1rem"},children:"Something went wrong!"}),d.jsx("button",{style:{appearance:"none",fontSize:".6em",border:"1px solid currentColor",padding:".1rem .2rem",fontWeight:"bold",borderRadius:".25rem"},onClick:()=>n(a=>!a),children:e?"Hide Error":"Show Error"})]}),d.jsx("div",{style:{height:".25rem"}}),e?d.jsx("div",{children:d.jsx("pre",{style:{fontSize:".7em",border:"1px solid red",borderRadius:".25rem",padding:".3rem",color:"red",overflow:"auto"},children:t.message?d.jsx("code",{children:t.message}):null})}):null]})}function zE({children:t,fallback:e=null}){return Mp()?d.jsx(te.Fragment,{children:t}):d.jsx(te.Fragment,{children:e})}function Mp(){return te.useSyncExternalStore(qE,()=>!0,()=>!1)}function qE(){return()=>{}}var lx=I.createContext(null);function Wt(t){return I.useContext(lx)}var Iu=I.createContext(void 0),$E=I.createContext(void 0),ot=(t=>(t[t.None=0]="None",t[t.Mutable=1]="Mutable",t[t.Watching=2]="Watching",t[t.RecursedCheck=4]="RecursedCheck",t[t.Recursed=8]="Recursed",t[t.Dirty=16]="Dirty",t[t.Pending=32]="Pending",t))(ot||{});function HE({update:t,notify:e,unwatched:n}){return{link:a,unlink:o,propagate:l,checkDirty:u,shallowPropagate:h};function a(m,b,y){const w=b.depsTail;if(w!==void 0&&w.dep===m)return;const x=w!==void 0?w.nextDep:b.deps;if(x!==void 0&&x.dep===m){x.version=y,b.depsTail=x;return}const k=m.subsTail;if(k!==void 0&&k.version===y&&k.sub===b)return;const A=b.depsTail=m.subsTail={version:y,dep:m,sub:b,prevDep:w,nextDep:x,prevSub:k,nextSub:void 0};x!==void 0&&(x.prevDep=A),w!==void 0?w.nextDep=A:b.deps=A,k!==void 0?k.nextSub=A:m.subs=A}function o(m,b=m.sub){const y=m.dep,w=m.prevDep,x=m.nextDep,k=m.nextSub,A=m.prevSub;return x!==void 0?x.prevDep=w:b.depsTail=w,w!==void 0?w.nextDep=x:b.deps=x,k!==void 0?k.prevSub=A:y.subsTail=A,A!==void 0?A.nextSub=k:(y.subs=k)===void 0&&n(y),x}function l(m){let b=m.nextSub,y;e:do{const w=m.sub;let x=w.flags;if(x&60?x&12?x&4?!(x&48)&&p(m,w)?(w.flags=x|40,x&=1):x=0:w.flags=x&-9|32:x=0:w.flags=x|32,x&2&&e(w),x&1){const k=w.subs;if(k!==void 0){const A=(m=k).nextSub;A!==void 0&&(y={value:b,prev:y},b=A);continue}}if((m=b)!==void 0){b=m.nextSub;continue}for(;y!==void 0;)if(m=y.value,y=y.prev,m!==void 0){b=m.nextSub;continue e}break}while(!0)}function u(m,b){let y,w=0,x=!1;e:do{const k=m.dep,A=k.flags;if(b.flags&16)x=!0;else if((A&17)===17){if(t(k)){const _=k.subs;_.nextSub!==void 0&&h(_),x=!0}}else if((A&33)===33){(m.nextSub!==void 0||m.prevSub!==void 0)&&(y={value:m,prev:y}),m=k.deps,b=k,++w;continue}if(!x){const _=m.nextDep;if(_!==void 0){m=_;continue}}for(;w--;){const _=b.subs,j=_.nextSub!==void 0;
12if(j?(m=y.value,y=y.prev):m=_,x){if(t(b)){j&&h(_),b=m.sub;continue}x=!1}else b.flags&=-33;b=m.sub;const O=m.nextDep;if(O!==void 0){m=O;continue e}}return x}while(!0)}function h(m){do{const b=m.sub,y=b.flags;(y&48)===32&&(b.flags=y|16,(y&6)===2&&e(b))}while((m=m.nextSub)!==void 0)}function p(m,b){let y=b.depsTail;for(;y!==void 0;){if(y===m)return!0;y=y.prevDep}return!1}}function VE(t,e,n){const a=typeof t=="object",o=a?t:void 0;return{next:(a?t.next:t)?.bind(o),error:(a?t.error:e)?.bind(o),complete:(a?t.complete:n)?.bind(o)}}const Vf=[];let iu=0;const{link:Av,unlink:FE,propagate:GE,checkDirty:cx,shallowPropagate:Ev}=HE({update(t){return t._update()},notify(t){Vf[Ff++]=t,t.flags&=~ot.Watching},unwatched(t){t.depsTail!==void 0&&(t.depsTail=void 0,t.flags=ot.Mutable|ot.Dirty,pu(t))}});let $c=0,Ff=0,dr,Gf=0;function ux(t){try{++Gf,t()}finally{--Gf||dx()}}function pu(t){const e=t.depsTail;let n=e!==void 0?e.nextDep:t.deps;for(;n!==void 0;)n=FE(n,t)}function dx(){if(!(Gf>0)){for(;$c<Ff;){const t=Vf[$c];Vf[$c++]=void 0,t.notify()}$c=0,Ff=0}}function Rv(t,e){const n=typeof t=="function",a=t,o={_snapshot:n?void 0:t,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:n?ot.None:ot.Mutable,get(){return dr!==void 0&&Av(o,dr,iu),o._snapshot},subscribe(l){const u=VE(l),h={current:!1},p=KE(()=>{o.get(),h.current?u.next?.(o._snapshot):h.current=!0});return{unsubscribe:()=>{p.stop()}}},_update(l){const u=dr,h=e?.compare??Object.is;if(n)dr=o,++iu,o.depsTail=void 0;else if(l===void 0)return!1;n&&(o.flags=ot.Mutable|ot.RecursedCheck);try{const p=o._snapshot,m=typeof l=="function"?l(p):l===void 0&&n?a(p):l;return p===void 0||!h(p,m)?(o._snapshot=m,!0):!1}finally{dr=u,n&&(o.flags&=~ot.RecursedCheck),pu(o)}}};return n?(o.flags=ot.Mutable|ot.Dirty,o.get=function(){const l=o.flags;if(l&ot.Dirty||l&ot.Pending&&cx(o.deps,o)){if(o._update()){const u=o.subs;u!==void 0&&Ev(u)}}else l&ot.Pending&&(o.flags=l&~ot.Pending);return dr!==void 0&&Av(o,dr,iu),o._snapshot}):o.set=function(l){if(o._update(l)){const u=o.subs;u!==void 0&&(GE(u),Ev(u),dx())}},o}function KE(t){const e=()=>{const a=dr;dr=n,++iu,n.depsTail=void 0,n.flags=ot.Watching|ot.RecursedCheck;try{return t()}finally{dr=a,n.flags&=~ot.RecursedCheck,pu(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:ot.Watching|ot.RecursedCheck,notify(){const a=this.flags;a&ot.Dirty||a&ot.Pending&&cx(this.deps,this)?e():this.flags=ot.Watching},stop(){this.flags=ot.None,this.depsTail=void 0,pu(this)}};return e(),n}var kf={exports:{}},_f={},Sf={exports:{}},jf={};var Cv;function YE(){if(Cv)return jf;Cv=1;var t=xl();function e(y,w){return y===w&&(y!==0||1/y===1/w)||y!==y&&w!==w}var n=typeof Object.is=="function"?Object.is:e,a=t.useState,o=t.useEffect,l=t.useLayoutEffect,u=t.useDebugValue;function h(y,w){var x=w(),k=a({inst:{value:x,getSnapshot:w}}),A=k[0].inst,_=k[1];return l(function(){A.value=x,A.getSnapshot=w,p(A)&&_({inst:A})},[y,x,w]),o(function(){return p(A)&&_({inst:A}),y(function(){p(A)&&_({inst:A})})},[y]),u(x),x}function p(y){var w=y.getSnapshot;y=y.value;try{var x=w();return!n(y,x)}catch{return!0}}function m(y,w){return w()}var b=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?m:h;return jf.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:b,jf}var Ov;function WE(){return Ov||(Ov=1,Sf.exports=YE()),Sf.exports}var Nv;function ZE(){if(Nv)return _f;Nv=1;var t=xl(),e=WE();function n(m,b){return m===b&&(m!==0||1/m===1/b)||m!==m&&b!==b}var a=typeof Object.is=="function"?Object.is:n,o=e.useSyncExternalStore,l=t.useRef,u=t.useEffect,h=t.useMemo,p=t.useDebugValue;return _f.useSyncExternalStoreWithSelector=function(m,b,y,w,x){var k=l(null);if(k.current===null){var A={hasValue:!1,value:null};k.current=A}else A=k.current;k=h(function(){function j(V){if(!O){if(O=!0,R=V,V=w(V),x!==void 0&&A.hasValue){var $=A.value;if(x($,V))return M=$}return M=V}if($=M,a(R,V))return $;var U=w(V);return x!==void 0&&x($,U)?(R=V,$):(R=V,M=U)}var O=!1,R,M,K=y===void 0?null:y;return[function(){return j(b())},K===null?void 0:function(){return j(K())}]},[b,y,w,x]);var _=o(m,k[0],k[1]);return u(function(){A.hasValue=!0,A.value=_},[_]),p(_),_},_f}var Mv;function JE(){return Mv||(Mv=1,kf.exports=ZE()),kf.exports}var QE=JE();function XE(t,e){return t===e}function Tt(t,e,n=XE){const a=I.useCallback(u=>{if(!t)return()=>{};const{unsubscribe:h}=t.subscribe(u);return h},[t]),o=I.useCallback(()=>t?.get(),[t]);return QE.useSyncExternalStoreWithSelector(a,o,o,e,n)}var eR={get:()=>{},subscribe:()=>({unsubscribe:()=>{}})};function Aa(t){const e=Wt(),n=I.useContext(t.from?$E:Iu),a=t.from??n,o=a?t.from?e.stores.getRouteMatchStore(a):e.stores.matchStores.get(a):void 0,l=I.useRef(void 0);return Tt(o??eR,u=>{if((t.shouldThrow??!0)&&!u&&bn(),u===void 0)return;const h=t.select?t.select(u):u;if(t.structuralSharing??e.options.defaultStructuralSharing){const p=ya(l.current,h);return l.current=p,p}return h})}function hx(t){return Aa({from:t.from,strict:t.strict,structuralSharing:t.structuralSharing,select:e=>t.select?t.select(e.loaderData):e.loaderData})}function fx(t){const{select:e,...n}=t;return Aa({...n,select:a=>e?e(a.loaderDeps):a.loaderDeps})}function px(t){return Aa({from:t.from,shouldThrow:t.shouldThrow,structuralSharing:t.structuralSharing,strict:t.strict,select:e=>{const n=t.strict===!1?e.params:e._strictParams;return t.select?t.select(n):n}})}function mx(t){return Aa({from:t.from,strict:t.strict,shouldThrow:t.shouldThrow,structuralSharing:t.structuralSharing,select:e=>t.select?t.select(e.search):e.search})}function gx(t){const e=Wt();return I.useCallback(n=>e.navigate({...n,from:n.from??t?.from}),[t?.from,e])}function yx(t){return Aa({...t,select:e=>t.select?t.select(e.context):e.context})}var bx=d0();const tR=c0(bx);function nR(t,e){const n=Wt(),a=PE(e),{activeProps:o,inactiveProps:l,activeOptions:u,to:h,preload:p,preloadDelay:m,preloadIntentProximity:b,hashScrollIntoView:y,replace:w,startTransition:x,resetScroll:k,viewTransition:A,children:_,target:j,disabled:O,style:R,className:M,onClick:K,onBlur:V,onFocus:$,onMouseEnter:U,onMouseLeave:Q,onTouchStart:ae,ignoreBlocker:se,params:ye,search:_e,hash:ze,state:Ce,mask:L,reloadDocument:Y,unsafeRelative:ie,from:Se,_fromLocation:ne,...N}=t,G=Mp(),Z=I.useMemo(()=>t,[n,t.from,t._fromLocation,t.hash,t.to,t.search,t.params,t.state,t.mask,t.unsafeRelative]),ee=Tt(n.stores.location,We=>We,(We,ft)=>We.href===ft.href),X=I.useMemo(()=>{const We={_fromLocation:ee,...Z};return n.buildLocation(We)},[n,ee,Z]),ce=X.maskedLocation?X.maskedLocation.publicHref:X.publicHref,Te=X.maskedLocation?X.maskedLocation.external:X.external,ke=I.useMemo(()=>lR(ce,Te,n.history,O),[O,Te,ce,n.history]),ve=I.useMemo(()=>
12{if(ke?.external)return lu(ke.href,n.protocolAllowlist)?void 0:ke.href;if(!cR(h)&&!(typeof h!="string"||h.indexOf(":")===-1))try{return new URL(h),lu(h,n.protocolAllowlist)?void 0:h}catch{}},[h,ke,n.protocolAllowlist]),zt=I.useMemo(()=>{if(ve)return!1;if(u?.exact){if(!Kj(ee.pathname,X.pathname,n.basepath))return!1}else{const We=cu(ee.pathname,n.basepath),ft=cu(X.pathname,n.basepath);if(!(We.startsWith(ft)&&(We.length===ft.length||We[ft.length]==="/")))return!1}return(u?.includeSearch??!0)&&!yn(ee.search,X.search,{partial:!u?.exact,ignoreUndefined:!u?.explicitUndefined})?!1:u?.includeHash?G&&ee.hash===X.hash:!0},[u?.exact,u?.explicitUndefined,u?.includeHash,u?.includeSearch,ee,ve,G,X.hash,X.pathname,X.search,n.basepath]),At=zt?As(o,{})??rR:Tf,vt=zt?Tf:As(l,{})??Tf,Hn=[M,At.className,vt.className].filter(Boolean).join(" "),Et=(R||At.style||vt.style)&&{...R,...At.style,...vt.style},[Vs,gr]=I.useState(!1),tr=I.useRef(!1),Rn=t.reloadDocument||ve?!1:p??n.options.defaultPreload,qt=m??n.options.defaultPreloadDelay??0,vn=I.useCallback(()=>{n.preloadRoute({...Z,_builtLocation:X}).catch(We=>{console.warn(We),console.warn(ET)})},[n,Z,X]);DE(a,I.useCallback(We=>{We?.isIntersecting&&vn()},[vn]),oR,{disabled:!!O||Rn!=="viewport"}),I.useEffect(()=>{tr.current||!O&&Rn==="render"&&(vn(),tr.current=!0)},[O,vn,Rn]);const Fs=We=>{const ft=We.currentTarget.getAttribute("target"),Cn=j!==void 0?j:ft;if(!O&&!uR(We)&&!We.defaultPrevented&&(!Cn||Cn==="_self")&&We.button===0){We.preventDefault(),bx.flushSync(()=>{gr(!0)});const yr=n.subscribe("onResolved",()=>{yr(),gr(!1)});n.navigate({...Z,replace:w,resetScroll:k,hashScrollIntoView:y,startTransition:x,viewTransition:A,ignoreBlocker:se})}};if(ve)return{...N,ref:a,href:ve,..._&&{children:_},...j&&{target:j},...O&&{disabled:O},...R&&{style:R},...M&&{className:M},...K&&{onClick:K},...V&&{onBlur:V},...$&&{onFocus:$},...U&&{onMouseEnter:U},...Q&&{onMouseLeave:Q},...ae&&{onTouchStart:ae}};const Mt=We=>{if(O||Rn!=="intent")return;if(!qt){vn();return}const ft=We.currentTarget;if(Go.has(ft))return;const Cn=setTimeout(()=>{Go.delete(ft),vn()},qt);Go.set(ft,Cn)},nr=We=>{O||Rn!=="intent"||vn()},Dt=We=>{if(O||!Rn||!qt)return;const ft=We.currentTarget,Cn=Go.get(ft);Cn&&(clearTimeout(Cn),Go.delete(ft))};return{...N,...At,...vt,href:ke?.href,ref:a,onClick:gi([K,Fs]),onBlur:gi([V,Dt]),onFocus:gi([$,Mt]),onMouseEnter:gi([U,Mt]),onMouseLeave:gi([Q,Dt]),onTouchStart:gi([ae,nr]),disabled:!!O,target:j,...Et&&{style:Et},...Hn&&{className:Hn},...O&&sR,...zt&&aR,...G&&Vs&&iR}}var Tf={},rR={className:"active"},sR={role:"link","aria-disabled":!0},aR={"data-status":"active","aria-current":"page"},iR={"data-transitioning":"transitioning"},Go=new WeakMap,oR={rootMargin:"100px"},gi=t=>e=>{for(const n of t)if(n){if(e.defaultPrevented)return;n(e)}};function lR(t,e,n,a){if(!a)return e?{href:t,external:!0}:{href:n.createHref(t)||"/",external:!1}}function cR(t){if(typeof t!="string")return!1;const e=t.charCodeAt(0);return e===47?t.charCodeAt(1)!==47:e===46}var ut=I.forwardRef((t,e)=>{const{_asChild:n,...a}=t,{type:o,...l}=nR(a,e),u=typeof a.children=="function"?a.children({isActive:l["data-status"]==="active"}):a.children;if(!n){const{disabled:h,...p}=l;return I.createElement("a",p,u)}return I.createElement(n,l,u)});function uR(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}var dR=class extends j0{constructor(e){super(e),this.useMatch=n=>Aa({select:n?.select,from:this.id,structuralSharing:n?.structuralSharing}),this.useRouteContext=n=>yx({...n,from:this.id}),this.useSearch=n=>mx({select:n?.select,structuralSharing:n?.structuralSharing,from:this.id}),this.useParams=n=>px({select:n?.select,structuralSharing:n?.structuralSharing,from:this.id}),this.useLoaderDeps=n=>fx({...n,from:this.id}),this.useLoaderData=n=>hx({...n,from:this.id}),this.useNavigate=()=>gx({from:this.fullPath}),this.Link=te.forwardRef((n,a)=>d.jsx(ut,{ref:a,from:this.fullPath,...n}))}};function hR(t){return new dR(t)}function fR(){return t=>mR(t)}var pR=class extends NT{constructor(t){super(t),this.useMatch=e=>Aa({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>yx({...e,from:this.id}),this.useSearch=e=>mx({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>px({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>fx({...e,from:this.id}),this.useLoaderData=e=>hx({...e,from:this.id}),this.useNavigate=()=>gx({from:this.fullPath}
12),this.Link=te.forwardRef((e,n)=>d.jsx(ut,{ref:n,from:this.fullPath,...e}))}};function mR(t){return new pR(t)}function lt(t){return new gR(t,{silent:!0}).createRoute}var gR=class{constructor(t,e){this.path=t,this.createRoute=n=>{const a=hR(n);return a.isRoot=!1,a},this.silent=e?.silent}};function dt(t,e){let n,a,o,l;const u=()=>(n||(n=t().then(p=>{n=void 0,a=p[e??"default"]}).catch(p=>{if(o=p,Ej(o)&&o instanceof Error&&typeof window<"u"&&typeof sessionStorage<"u"){const m=`tanstack_router_reload:${o.message}`;sessionStorage.getItem(m)||(sessionStorage.setItem(m,"1"),l=!0)}})),n),h=function(m){if(l)throw window.location.reload(),new Promise(()=>{});if(o)throw o;if(!a)if(fu)fu(u());else throw u();return I.createElement(a,m)};return h.preload=u,h}function yR(t){const e=Wt(),n=`not-found-${Tt(e.stores.location,a=>a.pathname)}-${Tt(e.stores.status,a=>a)}`;return d.jsx(Op,{getResetKey:()=>n,onCatch:(a,o)=>{if(Bt(a))t.onCatch?.(a,o);else throw a},errorComponent:({error:a})=>{if(Bt(a))return t.fallback?.(a);throw a},children:t.children})}function bR(){return d.jsx("p",{children:"Not Found"})}function Ti(t){return d.jsx(d.Fragment,{children:t.children})}function vx(t,e,n){return e.options.notFoundComponent?d.jsx(e.options.notFoundComponent,{...n}):t.options.defaultNotFoundComponent?d.jsx(t.options.defaultNotFoundComponent,{...n}):d.jsx(bR,{})}function vR(t){return null}function wR(){return vR(Wt()),null}var wx=I.memo(function({matchId:e}){const n=Wt(),a=n.stores.matchStores.get(e);a||bn();const o=Tt(n.stores.loadedAt,u=>u),l=Tt(a,u=>u);return d.jsx(xR,{router:n,matchId:e,resetKey:o,matchState:I.useMemo(()=>{const u=l.routeId,h=n.routesById[u].parentRoute?.id;return{routeId:u,ssr:l.ssr,_displayPending:l._displayPending,parentRouteId:h}},[l._displayPending,l.routeId,l.ssr,n.routesById])})});function xR({router:t,matchId:e,resetKey:n,matchState:a}){const o=t.routesById[a.routeId],l=o.options.pendingComponent??t.options.defaultPendingComponent,u=l?d.jsx(l,{}):null,h=o.options.errorComponent??t.options.defaultErrorComponent,p=o.options.onCatch??t.options.defaultOnCatch,m=o.isRoot?o.options.notFoundComponent??t.options.notFoundRoute?.options.component:o.options.notFoundComponent,b=a.ssr===!1||a.ssr==="data-only",y=(!o.isRoot||o.options.wrapInSuspense||b)&&(o.options.wrapInSuspense??l??(o.options.errorComponent?.preload||b))?I.Suspense:Ti,w=h?Op:Ti,x=m?yR:Ti;return d.jsxs(o.isRoot?o.options.shellComponent??Ti:Ti,{children:[d.jsx(Iu.Provider,{value:e,children:d.jsx(y,{fallback:u,children:d.jsx(w,{getResetKey:()=>n,errorComponent:h||Np,onCatch:(k,A)=>{if(Bt(k))throw k.routeId??=a.routeId,k;p?.(k,A)},children:d.jsx(x,{fallback:k=>{if(k.routeId??=a.routeId,!m||k.routeId&&k.routeId!==a.routeId||!k.routeId&&!o.isRoot)throw k;return I.createElement(m,k)},children:b||a._displayPending?d.jsx(zE,{fallback:u,children:d.jsx(Dv,{matchId:e})}):d.jsx(Dv,{matchId:e})})})})}),a.parentRouteId===xa?d.jsxs(d.Fragment,{children:[d.jsx(kR,{resetKey:n}),t.options.scrollRestoration&&h0?d.jsx(wR,{}):null]}):null]})}function kR({resetKey:t}){const e=Wt(),n=I.useRef(void 0);return Wo(()=>{const a=e.latestLocation.href;(n.current===void 0||n.current!==a)&&(e.emit({type:"onRendered",...Pi(e.stores.location.get(),e.stores.resolvedLocation.get())}),n.current=a)},[e.latestLocation.state.__TSR_key,t,e]),null}var Dv=I.memo(function({matchId:e}){const n=Wt(),a=(b,y)=>n.getMatch(b.id)?._nonReactive[y]??b._nonReactive[y],o=n.stores.matchStores.get(e);o||bn();const l=Tt(o,b=>b),u=l.routeId,h=n.routesById[u],p=I.useMemo(()=>{const b=(n.routesById[u].options.remountDeps??n.options.defaultRemountDeps)?.({routeId:u,loaderDeps:l.loaderDeps,params:l._strictParams,search:l._strictSearch});return b?JSON.stringify(b):void 0},[u,l.loaderDeps,l._strictParams,l._strictSearch,n.options.defaultRemountDeps,n.routesById]),m=I.useMemo(()=>{const b=h.options.component??n.options.defaultComponent;return b?d.jsx(b,{},p):d.jsx(xx,{})},[p,h.options.component,n.options.defaultComponent]);if(l._displayPending)throw a(l,"displayPendingPromise");if(l._forcePending)throw a(l,"minPendingPromise");if(l.status==="pending"){const b=h.options.pendingMinMs??n.options.defaultPendingMinMs;if(b){const y=n.getMatch(l.id);if(y&&!y._nonReactive.minPendingPromise){const w=Sa();y._nonReactive.minPendingPromise=w,setTimeout(()=>{w.resolve(),y._nonReactive.minPendingPromise=void 0},b)}}throw a(l,"loadPromise")}if(l.status==="notFound")return Bt(l.error)||bn(),vx(n,h,l.error);if(l.status==="redirected")throw rn(l.error)||bn(),a(l,"loadPromise");if(l.status==="error")throw l.error;return m}),xx=I.memo(function(){const e=Wt(),n=I.useContext(Iu);let a,o=!1,l;{const m=n?e.stores.matchStores.get(n):void 0;[a,o]=Tt(m,b=>[b?.routeId,b?.globalNotFound??!1]),l=Tt(e.stores.matchesId,b=>b[b.findIndex(y=>y===n)+1])}const u=a?e.routesById[a]:void 0,h=e.options.defaultPendingComponent?d.jsx(e.options.defaultPendingComponent,{}):null;if(o)return u||bn(),vx(e,u,void 0);if(!l)return null;const p=d.jsx(wx,{matchId:l});return a===xa?d.jsx(I.Suspense,{fallback:h,children:p}):p});function _R(){const t=Wt(),e=I.useRef({router:t,mounted:!1}),[n,a]=I.useState(!1),o=Tt(t.stores.isLoading,y=>y),l=Tt(t.stores.hasPending,y=>y),u=xf(o),h=o||n||l,p=xf(h),m=o||l,b=xf(m);return t.startTransition=y=>{a(!0),I.startTransition(()=>{y(),a(!1)})},I.useEffect(()=>{const y=t.history.subscribe(t.load),w=t.buildLocation({to:t.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});return Ns(t.latestLocation.publicHref)!==Ns(w.publicHref)&&t.commitLocation({...w,replace:!0}),()=>{y()}},[t,t.history]),Wo(()=>
12{if(typeof window<"u"&&t.ssr||e.current.router===t&&e.current.mounted)return;e.current={router:t,mounted:!0},(async()=>{try{await t.load()}catch(w){console.error(w)}})()},[t]),Wo(()=>{u&&!o&&t.emit({type:"onLoad",...Pi(t.stores.location.get(),t.stores.resolvedLocation.get())})},[u,t,o]),Wo(()=>{b&&!m&&t.emit({type:"onBeforeRouteMount",...Pi(t.stores.location.get(),t.stores.resolvedLocation.get())})},[m,b,t]),Wo(()=>{if(p&&!h){const y=Pi(t.stores.location.get(),t.stores.resolvedLocation.get());t.emit({type:"onResolved",...y}),ux(()=>{t.stores.status.set("idle"),t.stores.resolvedLocation.set(t.stores.location.get())}),y.hrefChanged&&MT(t)}},[h,p,t]),null}function SR(){const t=Wt(),e=t.routesById[xa].options.pendingComponent??t.options.defaultPendingComponent,n=e?d.jsx(e,{}):null,a=d.jsxs(typeof document<"u"&&t.ssr?Ti:I.Suspense,{fallback:n,children:[d.jsx(_R,{}),d.jsx(jR,{})]});return t.options.InnerWrap?d.jsx(t.options.InnerWrap,{children:a}):a}function jR(){const t=Wt(),e=Tt(t.stores.firstId,o=>o),n=Tt(t.stores.loadedAt,o=>o),a=e?d.jsx(wx,{matchId:e}):null;return d.jsx(Iu.Provider,{value:e,children:t.options.disableGlobalCatchBoundary?a:d.jsx(Op,{getResetKey:()=>n,errorComponent:Np,onCatch:void 0,children:a})})}var TR=t=>({createMutableStore:Rv,createReadonlyStore:Rv,batch:ux}),AR=t=>new ER(t),ER=class extends wT{constructor(t){super(t,TR)}};function RR({router:t,children:e,...n}){Object.keys(n).length>
120&&t.update({...t.options,...n,context:{...t.options.context,...n.context}});const a=d.jsx(lx.Provider,{value:t,children:e});return t.options.Wrap?d.jsx(t.options.Wrap,{children:a}):a}function CR({router:t,...e}){return d.jsx(RR,{router:t,...e,children:d.jsx(SR,{})})}function kx(t){const{attrs:e,children:n,nonce:a}=t;switch(t.tag){case"title":return d.jsx("title",{...e,suppressHydrationWarning:!0,children:n});case"meta":return d.jsx("meta",{...e,suppressHydrationWarning:!0});case"link":return d.jsx("link",{...e,precedence:e?.precedence??(e?.rel==="stylesheet"?"default":void 0),nonce:a,suppressHydrationWarning:!0});case"style":return t.inlineCss,d.jsx("style",{...e,dangerouslySetInnerHTML:{__html:n},nonce:a});case"script":return d.jsx(OR,{attrs:e,children:n});default:return null}}function OR({attrs:t,children:e}){Wt();const n=Mp(),a=typeof t?.type=="string"&&t.type!==""&&t.type!=="text/javascript"&&t.type!=="module";if(I.useEffect(()=>{if(!a){if(t?.src){const o=(()=>{try{const u=document.baseURI||window.location.href;return new URL(t.src,u).href}catch{return t.src}})();if(Array.from(document.querySelectorAll("script[src]")).find(u=>u.src===o))return;const l=document.createElement("script");for(const[u,h]of Object.entries(t))u!=="suppressHydrationWarning"&&h!==void 0&&h!==!1&&l.setAttribute(u,typeof h=="boolean"?"":String(h));return document.head.appendChild(l),()=>{l.parentNode&&l.parentNode.removeChild(l)}}if(typeof e=="string"){const o=typeof t?.type=="string"?t.type:"text/javascript",l=typeof t?.nonce=="string"?t.nonce:void 0;if(Array.from(document.querySelectorAll("script:not([src])")).find(h=>{if(!(h instanceof HTMLScriptElement))return!1;const p=h.getAttribute("type")??"text/javascript",m=h.getAttribute("nonce")??void 0;return h.textContent===e&&p===o&&m===l}))return;const u=document.createElement("script");if(u.textContent=e,t)for(const[h,p]of Object.entries(t))h!=="suppressHydrationWarning"&&p!==void 0&&p!==!1&&u.setAttribute(h,typeof p=="boolean"?"":String(p));return document.head.appendChild(u),()=>{u.parentNode&&u.parentNode.removeChild(u)}}}},[t,e,a]),a&&typeof e=="string")return d.jsx("script",{...t,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:e}});if(!n){if(t?.src)return d.jsx("script",{...t,suppressHydrationWarning:!0});if(typeof e=="string")return d.jsx("script",{...t,dangerouslySetInnerHTML:{__html:e},suppressHydrationWarning:!0})}return null}var NR=t=>{const e=Wt(),n=e.options.ssr?.nonce,a=Tt(e.stores.matches,m=>m.map(b=>b.meta).filter(Boolean),yn),o=I.useMemo(()=>{const m=[],b={};let y;for(let w=a.length-1;w>=0;w--){const x=a[w];for(let k=x.length-1;k>=0;k--){const A=x[k];if(A)if(A.title)y||(y={tag:"title",children:A.title});else if("script:ld+json"in A)try{const _=JSON.stringify(A["script:ld+json"]);m.push({tag:"script",attrs:{type:"application/ld+json"},children:Mj(_)})}catch{}else{const _=A.name??A.property;if(_){if(b[_])continue;b[_]=!0}m.push({tag:"meta",attrs:{...A,nonce:n}})}}}return y&&m.push(y),n&&m.push({tag:"meta",attrs:{property:"csp-nonce",content:n}}),m.reverse(),m},[a,n]),l=Tt(e.stores.matches,m=>{const b=m.map(x=>x.links).filter(Boolean).flat(1).map(x=>({tag:"link",attrs:{...x,nonce:n}})),y=e.ssr?.manifest,w=m.map(x=>y?.routes[x.routeId]?.assets??[]).filter(Boolean).flat(1).flatMap(x=>x.tag==="link"?OT(y,x)?[]:[{tag:"link",attrs:{...x.attrs,crossOrigin:fv(t,"stylesheet")??x.attrs?.crossOrigin,suppressHydrationWarning:!0,nonce:n}}]:x.tag==="style"?[{tag:"style",attrs:{...x.attrs,nonce:n},children:x.children,...x.inlineCss?{inlineCss:!0}:{}}]:[]);return[...b,...w]},yn),u=Tt(e.stores.matches,m=>{const b=[];return m.map(y=>e.looseRoutesById[y.routeId]).forEach(y=>e.ssr?.manifest?.routes[y.id]?.preloads?.filter(Boolean).forEach(w=>{const x=RT(w);b.push({tag:"link",attrs:{rel:"modulepreload",href:x.href,crossOrigin:fv(t,"modulepreload")??x.crossOrigin,nonce:n}})})),b},yn),h=Tt(e.stores.matches,m=>m.map(b=>b.styles).flat(1).filter(Boolean).map(({children:b,...y})=>({tag:"style",attrs:{...y,nonce:n},children:b})),yn),p=Tt(e.stores.matches,m=>m.map(b=>
12b.headScripts).flat(1).filter(Boolean).map(({children:b,...y})=>({tag:"script",attrs:{...y,nonce:n},children:b})),yn);return MR([...o,...u,...l,...h,...p],m=>JSON.stringify(m))};function MR(t,e){const n=new Set;return t.filter(a=>{const o=e(a);return n.has(o)?!1:(n.add(o),!0)})}function DR(t){const e=NR(t.assetCrossOrigin),n=Wt().options.ssr?.nonce;return d.jsx(d.Fragment,{children:e.map(a=>I.createElement(kx,{...a,key:`tsr-meta-${JSON.stringify(a)}`,nonce:n}))})}var PR=()=>{const t=Wt(),e=t.options.ssr?.nonce,n=l=>{const u=[],h=t.ssr?.manifest;return h?(l.map(p=>t.looseRoutesById[p.routeId]).forEach(p=>h.routes[p.id]?.assets?.filter(m=>m.tag==="script").forEach(m=>{u.push({tag:"script",attrs:{...m.attrs,nonce:e},children:m.children})})),u):[]},a=l=>l.map(u=>u.scripts).flat(1).filter(Boolean).map(({children:u,...h})=>({tag:"script",attrs:{...h,suppressHydrationWarning:!0,nonce:e},children:u})),o=Tt(t.stores.matches,n,yn);return LR(t,Tt(t.stores.matches,a,yn),o)};function LR(t,e,n){let a;t.serverSsr&&(a=t.serverSsr.takeBufferedScripts());const o=[...e,...n];return a&&o.unshift(a),d.jsx(d.Fragment,{children:o.map((l,u)=>I.createElement(kx,{...l,key:`tsr-scripts-${l.tag}-${u}`}))})}function Pv(t){return t!=="__proto__"&&t!=="constructor"&&t!=="prototype"}function Kf(t,e){const n=Object.create(null);if(t)for(const a of Object.keys(t))Pv(a)&&(n[a]=t[a]);if(e&&typeof e=="object")for(const a of Object.keys(e))Pv(a)&&(n[a]=e[a]);return n}function _x(t){return Object.create(null)}var Sx=()=>{throw new Error("createServerOnlyFn() functions can only be called on the server!")},Ds=(t,e)=>{const n=e||t||{};return typeof n.method>"u"&&(n.method="GET"),Object.assign(l=>Ds(void 0,{...n,...l}),{options:n,middleware:l=>{const u=[...n.middleware||[]];l.map(p=>{Kb in p?p.options.middleware&&u.push(...p.options.middleware):u.push(p)});const h=Ds(void 0,{...n,middleware:u});return h[Kb]=!0,h},inputValidator:l=>Ds(void 0,{...n,inputValidator:l}),handler:(...l)=>{const[u,h]=l,p={...n,extractedFn:u,serverFn:h},m=[...p.middleware||[],BR(p)];return u.method=n.method,Object.assign(async b=>{const y=await Lv(m,"client",{...u,...p,data:b?.data,headers:b?.headers,signal:b?.signal,fetch:b?.fetch,context:_x()}),w=v0(y.error);if(w)throw w;if(y.error)throw y.error;return y.result},{...u,method:n.method,__executeServer:async b=>{const y=Sx(),w=y.contextAfterGlobalMiddlewares;return await Lv(m,"server",{...u,...b,serverFnMeta:u.serverFnMeta,context:Kf(b.context,w),request:y.request}).then(x=>({result:x.result,error:x.error,context:x.sendContext}))}})}})};async function Lv(t,e,n){let a=UR([..._p()?.functionMiddleware||[],...t]);if(e==="server"){const l=Sx();l?.executedRequestMiddlewares&&(a=a.filter(u=>!l.executedRequestMiddlewares.has(u)))}const o=async l=>{const u=a.shift();if(!u)return l;try{"inputValidator"in u.options&&u.options.inputValidator&&e==="server"&&(l.data=await IR(u.options.inputValidator,l.data));let h;if(e==="client"?"client"in u.options&&(h=u.options.client):"server"in u.options&&(h=u.options.server),h){const m=await h({...l,next:async(b={})=>{const y=await o({...l,...b,context:Kf(l.context,b.context),sendContext:Kf(l.sendContext,b.sendContext),headers:OE(l.headers,b.headers),_callSiteFetch:l._callSiteFetch,fetch:l._callSiteFetch??b.fetch??l.fetch,result:b.result!==void 0?b.result:b instanceof Response?b:l.result,error:b.error??l.error});if(y.error)throw y.error;return y}});if(rn(m))return{...l,error:m};if(m instanceof Response)return{...l,result:m};if(!m)throw new Error("User middleware returned undefined. You must call next() or return a result in your middlewares.");return m}return o(l)}catch(h){return{...l,error:h}}};return o({...n,headers:n.headers||{},sendContext:n.sendContext||{},context:n.context||_x(),_callSiteFetch:n.fetch})}function UR(t,e=100){const n=new Set,a=[],o=(l,u)=>{if(u>e)throw new Error(`Middleware nesting depth exceeded maximum of ${e}. Check for circular references.`);l.forEach(h=>{h.options.middleware&&o(h.options.middleware,u+1),n.has(h)||(n.add(h),a.push(h))})};return o(t,0),a}async function IR(t,e){if(t==null)return{};if("~standard"in t){const n=await t["~standard"].validate(e);if(n.issues)throw new Error(JSON.stringify(n.issues,void 0,2));return n.value}if("parse"in t)return t.parse(e);if(typeof t=="function")return t(e);throw new Error("Invalid validator type!")}function BR(t){return{"~types":void 0,options:{inputValidator:t.inputValidator,client:async({next:e,sendContext:n,fetch:a,...o})=>{const l={...o,context:n,fetch:a};return e(await t.extractedFn?.(l))},server:async({next:e,...n})=>{const a=await t.serverFn?.(n);return e({...n,result:a})}}}}var Cs=(t,e)=>{const n={type:"request",...e||t};return{options:n,middleware:a=>Cs({},Object.assign(n,{middleware:a})),inputValidator:a=>Cs({},Object.assign(n,{inputValidator:a})),client:a=>Cs({},Object.assign(n,{client:a})),server:a=>Cs({},Object.assign(n,{server:a}))}};function jx(t,e){for(let n=0,a=e.length;n<a;n++){const o=e[n];
12t.has(o)||(t.add(o),o.extends&&jx(t,o.extends))}}var zR=t=>({getOptions:async()=>{const e=await t();if(e.serializationAdapters){const n=new Set;jx(n,e.serializationAdapters),e.serializationAdapters=Array.from(n)}return e},createMiddleware:Cs});function Bu(t,e){var n={};for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&e.indexOf(a)<0&&(n[a]=t[a]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,a=Object.getOwnPropertySymbols(t);o<a.length;o++)e.indexOf(a[o])<0&&Object.prototype.propertyIsEnumerable.call(t,a[o])&&(n[a[o]]=t[a[o]]);return n}function qR(t,e,n,a){function o(l){return l instanceof n?l:new n(function(u){u(l)})}return new(n||(n=Promise))(function(l,u){function h(b){try{m(a.next(b))}catch(y){u(y)}}function p(b){try{m(a.throw(b))}catch(y){u(y)}}function m(b){b.done?l(b.value):o(b.value).then(h,p)}m((a=a.apply(t,e||[])).next())})}const $R=t=>t?(...e)=>t(...e):(...e)=>fetch(...e);class Dp extends Error{constructor(e,n="FunctionsError",a){super(e),this.name=n,this.context=a}toJSON(){return{name:this.name,message:this.message,context:this.context}}}class HR extends Dp{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class Uv extends Dp{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class Iv extends Dp{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var Yf;(function(t){t.Any="any",t.ApNortheast1="ap-northeast-1",t.ApNortheast2="ap-northeast-2",t.ApSouth1="ap-south-1",t.ApSoutheast1="ap-southeast-1",t.ApSoutheast2="ap-southeast-2",t.CaCentral1="ca-central-1",t.EuCentral1="eu-central-1",t.EuWest1="eu-west-1",t.EuWest2="eu-west-2",t.EuWest3="eu-west-3",t.SaEast1="sa-east-1",t.UsEast1="us-east-1",t.UsWest1="us-west-1",t.UsWest2="us-west-2"})(Yf||(Yf={}));class VR{constructor(e,{headers:n={},customFetch:a,region:o=Yf.Any}={}){this.url=e,this.headers=n,this.region=o,this.fetch=$R(a)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return qR(this,arguments,void 0,function*(n,a={}){var o;let l,u;try{const{headers:h,method:p,body:m,signal:b,timeout:y}=a;let w={},{region:x}=a;x||(x=this.region);const k=new URL(`${this.url}/${n}`);x&&x!=="any"&&(w["x-region"]=x,k.searchParams.set("forceFunctionRegion",x));let A;m&&(h&&!Object.prototype.hasOwnProperty.call(h,"Content-Type")||!h)?typeof Blob<"u"&&m instanceof Blob||m instanceof ArrayBuffer?(w["Content-Type"]="application/octet-stream",A=m):typeof m=="string"?(w["Content-Type"]="text/plain",A=m):typeof FormData<"u"&&m instanceof FormData?A=m:(w["Content-Type"]="application/json",A=JSON.stringify(m)):m&&typeof m!="string"&&!(typeof Blob<"u"&&m instanceof Blob)&&!(m instanceof ArrayBuffer)&&!(typeof FormData<"u"&&m instanceof FormData)?A=JSON.stringify(m):A=m;let _=b;y&&(u=new AbortController,l=setTimeout(()=>u.abort(),y),b?(_=u.signal,b.addEventListener("abort",()=>u.abort())):_=u.signal);const j=yield this.fetch(k.toString(),{method:p||"POST",headers:Object.assign(Object.assign(Object.assign({},w),this.headers),h),body:A,signal:_}).catch(K=>{throw new HR(K)}),O=j.headers.get("x-relay-error");if(O&&O==="true")throw new Uv(j);if(!j.ok)throw new Iv(j);let R=((o=j.headers.get("Content-Type"))!==null&&o!==void 0?o:"text/plain").split(";")[0].trim(),M;return R==="application/json"?M=yield j.json():R==="application/octet-stream"||R==="application/pdf"?M=yield j.blob():R==="text/event-stream"?M=j:R==="multipart/form-data"?M=yield j.formData():M=yield j.text(),{data:M,error:null,response:j}}catch(h){return{data:null,error:h,response:h instanceof Iv||h instanceof Uv?h.context:void 0}}finally{l&&clearTimeout(l)}})}}const Tx=3,Bv=t=>Math.min(1e3*2**t,3e4),FR=[520,503],Ax=["GET","HEAD","OPTIONS"];var GR=class extends Error{constructor(t){super(t.message),this.name="PostgrestError",this.details=t.details,this.hint=t.hint,this.co
12de=t.code}toJSON(){return{name:this.name,message:this.message,details:this.details,hint:this.hint,code:this.code}}};function zv(t,e){return new Promise(n=>{if(e?.aborted){n();return}const a=setTimeout(()=>{e?.removeEventListener("abort",o),n()},t);function o(){clearTimeout(a),n()}e?.addEventListener("abort",o)})}function KR(t,e,n,a){return!(!a||n>=Tx||!Ax.includes(t)||!FR.includes(e))}var YR=class{constructor(t){var e,n,a,o,l;this.shouldThrowOnError=!1,this.retryEnabled=!0,this.method=t.method,this.url=t.url,this.headers=new Headers(t.headers),this.schema=t.schema,this.body=t.body,this.shouldThrowOnError=(e=t.shouldThrowOnError)!==null&&e!==void 0?e:!1,this.signal=t.signal,this.isMaybeSingle=(n=t.isMaybeSingle)!==null&&n!==void 0?n:!1,this.shouldStripNulls=(a=t.shouldStripNulls)!==null&&a!==void 0?a:!1,this.urlLengthLimit=(o=t.urlLengthLimit)!==null&&o!==void 0?o:8e3,this.retryEnabled=(l=t.retry)!==null&&l!==void 0?l:!0,t.fetch?this.fetch=t.fetch:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}stripNulls(){if(this.headers.get("Accept")==="text/csv")throw new Error("stripNulls() cannot be used with csv()");return this.shouldStripNulls=!0,this}setHeader(t,e){return this.headers=new Headers(this.headers),this.headers.set(t,e),this}retry(t){return this.retryEnabled=t,this}then(t,e){var n=this;if(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"),this.shouldStripNulls){const u=this.headers.get("Accept");u==="application/vnd.pgrst.object+json"?this.headers.set("Accept","application/vnd.pgrst.object+json;nulls=stripped"):(!u||u==="application/json")&&this.headers.set("Accept","application/vnd.pgrst.array+json;nulls=stripped")}const a=this.fetch;let l=(async()=>{let u=0;for(;;){const m=new Headers(n.headers);u>0&&m.set("X-Retry-Count",String(u));let b;try{b=await a(n.url.toString(),{method:n.method,headers:m,body:JSON.stringify(n.body,(y,w)=>typeof w=="bigint"?w.toString():w),signal:n.signal})}catch(y){if(y?.name==="AbortError"||y?.code==="ABORT_ERR"||!Ax.includes(n.method))throw y;if(n.retryEnabled&&u<Tx){const w=Bv(u);u++,await zv(w,n.signal);continue}throw y}if(KR(n.method,b.status,u,n.retryEnabled)){var h,p;const y=(h=(p=b.headers)===null||p===void 0?void 0:p.get("Retry-After"))!==null&&h!==void 0?h:null,w=y!==null?Math.max(0,parseInt(y,10)||0)*1e3:Bv(u);await b.text(),u++,await zv(w,n.signal);continue}return await n.processResponse(b)}})();return this.shouldThrowOnError||(l=l.catch(u=>{var h;let p="",m="",b="";const y=u?.cause;if(y){var w,x,k,A;const O=(w=y?.message)!==null&&w!==void 0?w:"",R=(x=y?.code)!==null&&x!==void 0?x:"";p=`${(k=u?.name)!==null&&k!==void 0?k:"FetchError"}: ${u?.message}`,p+=` 13 14Caused by: ${(A=y?.name)!==null&&A!==void 0?A:"Error"}: ${O}`,R&&(p+=` (${R})`),y?.stack&&(p+=` 15${y.stack}`)}else{var _;p=(_=u?.stack)!==null&&_!==void 0?_:""}const j=this.url.toString().length;return u?.name==="AbortError"||u?.code==="ABORT_ERR"?(b="",m="Request was aborted (timeout or manual cancellation)",j>this.urlLengthLimit&&(m+=`. Note: Your request URL is ${j} characters, which may exceed server limits. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [many IDs])), consider using an RPC function to pass values server-side.`)):(y?.name==="HeadersOverflowError"||y?.code==="UND_ERR_HEADERS_OVERFLOW")&&(b="",m="HTTP headers exceeded server limits (typically 16KB)",j>this.urlLengthLimit&&(m+=`. Your request URL is ${j} characters. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [200+ IDs])), consider using an RPC function instead.`)),{success:!1,error:{message:`${(h=u?.name)!==null&&h!==void 0?h:"FetchError"}: ${u?.message}`,details:p,hint:m,code:b},data:null,count:null,status:0,statusText:""}})),l.then(t,e)}async processResponse(t){var e=this;let n=null,a=null,o=null,l=t.status,u=t.statusText;if(t.ok){var h,p;if(e.method!=="HEAD"){var m;const w=await t.text();w===""||(e.headers.get("Accept")==="text/csv"||e.headers.get("Accept")&&(!((m=e.headers.get("Accept"))===null||m===void 0)&&m.includes("application/vnd.pgrst.plan+text"))?a=w:a=JSON.parse(w))}const b=(h=e.headers.get("Prefer"))===null||h===void 0?void 0:h.match(/count=(exact|planned|estimated)/),y=(p=t.headers.get("content-range"))===null||p===void 0?void 0:p.split("/");b&&y&&y.length>1&&(o=parseInt(y[1])),e.isMaybeSingle&&Array.isArray(a)&&(a.length>1?(n={code:"PGRST116",details:`Results contain ${a.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},a=null,o=null,l=406,u="Not Acceptable"):a.length===1?a=a[0]:a=null)}else{const b=await t.text();try{n=JSON.parse(b),Array.isArray(n)&&t.status===404&&(a=[],n=null,l=200,u="OK")}catch{t.status===404&&b===""?(l=204,u="No Content"):n={message:b}}if(n&&e.shouldThrowOnError)throw new GR(n)}return{success:n===null,error:n,data:a,count:o,status:l,statusText:u}}returns(){return this}overrideTypes(){return this}},WR=class extends YR{select(t){let e=!1;const n=(t??"*").split("").map(a=>/\s/.test(a)&&!e?"":(a==='"'&&(e=!e),a)).join("");return this.url.searchParams.set("select",n),this.headers.append("Prefer","return=representation"),this}order(t,{ascending:e=!0,nullsFirst:n,foreignTable:a,referencedTable:o=a}={}){const l=o?`${o}.order`:"order",u=this.url.searchParams.get(l);return this.url.searchParams.set(l,`${u?`${u},`:""}${t}.${e?"asc":"desc"}${n===void 0?"":n?".nullsfirst":".nullslast"}`),this}limit(t,{foreignTable:e,referencedTable:n=e}={}){const a=typeof n>"u"?"limit":`${n}.limit`;return this.url.searchParams.set(a,`${t}`),this}range(t,e,{foreignTable:n,referencedTable:a=n}={}){const o=typeof a>"u"?"offset":`${a}.offset`,l=typeof a>"u"?"limit":`${a}.limit`;return this.url.searchParams.set(o,`${t}`),this.url.searchParams.set(l,`${e-t+1}`),this}abortSignal(t){return this.signal=t,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}
15explain({analyze:t=!1,verbose:e=!1,settings:n=!1,buffers:a=!1,wal:o=!1,format:l="text"}={}){var u;const h=[t?"analyze":null,e?"verbose":null,n?"settings":null,a?"buffers":null,o?"wal":null].filter(Boolean).join("|"),p=(u=this.headers.get("Accept"))!==null&&u!==void 0?u:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${l}; for="${p}"; options=${h};`),l==="json"?this:this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(t){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${t}`),this}};const qv=new RegExp("[,()]");var Ai=class extends WR{eq(t,e){return this.url.searchParams.append(t,`eq.${e}`),this}neq(t,e){return this.url.searchParams.append(t,`neq.${e}`),this}gt(t,e){return this.url.searchParams.append(t,`gt.${e}`),this}gte(t,e){return this.url.searchParams.append(t,`gte.${e}`),this}lt(t,e){return this.url.searchParams.append(t,`lt.${e}`),this}lte(t,e){return this.url.searchParams.append(t,`lte.${e}`),this}like(t,e){return this.url.searchParams.append(t,`like.${e}`),this}likeAllOf(t,e){return this.url.searchParams.append(t,`like(all).{${e.join(",")}}`),this}likeAnyOf(t,e){return this.url.searchParams.append(t,`like(any).{${e.join(",")}}`),this}ilike(t,e){return this.url.searchParams.append(t,`ilike.${e}`),this}ilikeAllOf(t,e){return this.url.searchParams.append(t,`ilike(all).{${e.join(",")}}`),this}ilikeAnyOf(t,e){return this.url.searchParams.append(t,`ilike(any).{${e.join(",")}}`),this}regexMatch(t,e){return this.url.searchParams.append(t,`match.${e}`),this}regexIMatch(t,e){return this.url.searchParams.append(t,`imatch.${e}`),this}is(t,e){return this.url.searchParams.append(t,`is.${e}`),this}isDistinct(t,e){return this.url.searchParams.append(t,`isdistinct.${e}`),this}in(t,e){const n=Array.from(new Set(e)).map(a=>typeof a=="string"&&qv.test(a)?`"${a}"`:`${a}`).join(",");return this.url.searchParams.append(t,`in.(${n})`),this}notIn(t,e){const n=Array.from(new Set(e)).map(a=>typeof a=="string"&&qv.test(a)?`"${a}"`:`${a}`).join(",");return this.url.searchParams.append(t,`not.in.(${n})`),this}contains(t,e){return typeof e=="string"?this.url.searchParams.append(t,`cs.${e}`):Array.isArray(e)?this.url.searchParams.append(t,`cs.{${e.join(",")}}`):this.url.searchParams.append(t,`cs.${JSON.stringify(e)}`),this}containedBy(t,e){return typeof e=="string"?this.url.searchParams.append(t,`cd.${e}`):Array.isArray(e)?this.url.searchParams.append(t,`cd.{${e.join(",")}}`):this.url.searchParams.append(t,`cd.${JSON.stringify(e)}`),this}rangeGt(t,e){return this.url.searchParams.append(t,`sr.${e}`),this}rangeGte(t,e){return this.url.searchParams.append(t,`nxl.${e}`),this}rangeLt(t,e){return this.url.searchParams.append(t,`sl.${e}`),this}rangeLte(t,e){return this.url.searchParams.append(t,`nxr.${e}`),this}rangeAdjacent(t,e){return this.url.searchParams.append(t,`adj.${e}`),this}overlaps(t,e){return typeof e=="string"?this.url.searchParams.append(t,`ov.${e}`):this.url.searchParams.append(t,`ov.{${e.join(",")}}`),this}textSearch(t,e,{config:n,type:a}={}){let o="";a==="plain"?o="pl":a==="phrase"?o="ph":a==="websearch"&&(o="w");const l=n===void 0?"":`(${n})`;return this.url.searchParams.append(t,`${o}fts${l}.${e}`),this}match(t){return Object.entries(t).filter(([e,n])=>n!==void 0).forEach(([e,n])=>{this.url.searchParams.append(e,`eq.${n}`)}),this}not(t,e,n){return this.url.searchParams.append(t,`not.${e}.${n}`),this}or(t,{foreignTable:e,referencedTable:n=e}={}){const a=n?`${n}.or`:"or";return this.url.searchParams.append(a,`(${t})`),this}filter(t,e,n){return this.url.searchParams.append(t,`${e}.${n}`),this}},ZR=class{constructor(t,{headers:e={},schema:n,fetch:a,urlLengthLimit:o=8e3,retry:l}){this.url=t,this.headers=new Headers(e),this.schema=n,this.fetch=a,this.urlLengthLimit=o,this.retry=l}cloneRequestState(){return{url:new URL(this.url.toString()),headers:new Headers(this.headers)}}select(t,e){const{head:n=!1,count:a}=e??{},o=n?"HEAD":"GET";let l=!1;const u=(t??"*").split("").map(m=>/\s/.test(m)&&!l?"":(m==='"'&&(l=!l),m)).join(""),{url:h,headers:p}=this.cloneRequestState();return h.searchParams.set("select",u),a&&p.append("Prefer",`count=${a}`),new Ai({method:o,url:h,headers:p,schema:this.schema,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}insert(t,{count:e,defaultToNull:n=!0}={}){var a;const o="POST",{url:l,headers:u}=this.cloneRequestState();if(e&&u.append("Prefer",`count=${e}`),n||u.append("Prefer","missing=default"),Array.isArray(t)){const h=t.reduce((p,m)=>p.concat(Object.keys(m)),[]);if(h.length>0){const p=[...new Set(h)].map(m=>`"${m}"`);l.searchParams.set("columns",p.join(","))}}return new Ai({method:o,url:l,headers:u,schema:this.schema,body:t,fetch:(a=this.fetch)!==null&&a!==void 0?a:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}upsert(t,{onConflict:e,ignoreDuplicates:n=!1,count:a,defaultToNull:o=!0}={}){var l;const u="POST",{url:h,headers:p}=this.cloneRequestState();if(p.append("Prefer",`resolution=${n?"ignore":"merge"}-duplicates`),e!==void 0&&h.searchParams.set("on_conflict",e),a&&p.append("Prefer",`count=${a}`),o||p.append("Prefer","missing=default"),Array.isArray(t)){const m=t.reduce((b,y)=>b.concat(Object.keys(y)),[]);if(m.length>0){const b=[...new Set(m)].map(y=>`"${y}"`);h.searchParams.set("columns",b.join(","))}}return new Ai({method:u,url:h,headers:p,schema:this.schema,body:t,fetch:(l=this.fetch)!==null&&l!==void 0?l:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}update(t,{count:e}={}){var n;const a="PATCH",{url:o,headers:l}=this.cloneRequestState();return e&&l.append("Prefer",`count=${e}`),new Ai({method:a,url:o,headers:l,schema:this.schema,body:t,fetch:(n=this.fetch)!==null&&n!==void 0?n:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}delete({count:t}={}){var e;const n="DELETE",{url:a,headers:o}=this.cloneRequestState();return t&&o.append("Prefer",`count=${t}`),new Ai({method:n,url:a,headers:o,schema:this.schema,fetch:(e=this.fetch)!==null&&e!==void 0?e:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};function ol(t){"@babel/helpers - typeof";return ol=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ol(t)}function JR(t,e){if(ol(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var a=n.call(t,e);if(ol(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function QR(t){var e=JR(t,"string");return ol(e)=="symbol"?e:e+""}function XR(t,e,n){return(e=QR(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function $v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,a)}return n}function Hc(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};
15e%2?$v(Object(n),!0).forEach(function(a){XR(t,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):$v(Object(n)).forEach(function(a){Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(n,a))})}return t}var eC=class Ex{constructor(e,{headers:n={},schema:a,fetch:o,timeout:l,urlLengthLimit:u=8e3,retry:h}={}){this.url=e,this.headers=new Headers(n),this.schemaName=a,this.urlLengthLimit=u;const p=o??globalThis.fetch;l!==void 0&&l>0?this.fetch=(m,b)=>{const y=new AbortController,w=setTimeout(()=>y.abort(),l),x=b?.signal;if(x){if(x.aborted)return clearTimeout(w),p(m,b);const k=()=>{clearTimeout(w),y.abort()};return x.addEventListener("abort",k,{once:!0}),p(m,Hc(Hc({},b),{},{signal:y.signal})).finally(()=>{clearTimeout(w),x.removeEventListener("abort",k)})}return p(m,Hc(Hc({},b),{},{signal:y.signal})).finally(()=>clearTimeout(w))}:this.fetch=p,this.retry=h}from(e){if(!e||typeof e!="string"||e.trim()==="")throw new Error("Invalid relation name: relation must be a non-empty string.");return new ZR(new URL(`${this.url}/${e}`),{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}schema(e){return new Ex(this.url,{headers:this.headers,schema:e,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}rpc(e,n={},{head:a=!1,get:o=!1,count:l}={}){var u;let h;const p=new URL(`${this.url}/rpc/${e}`);let m;const b=x=>x!==null&&typeof x=="object"&&(!Array.isArray(x)||x.some(b)),y=a&&Object.values(n).some(b);y?(h="POST",m=n):a||o?(h=a?"HEAD":"GET",Object.entries(n).filter(([x,k])=>k!==void 0).map(([x,k])=>[x,Array.isArray(k)?`{${k.join(",")}}`:`${k}`]).forEach(([x,k])=>{p.searchParams.append(x,k)})):(h="POST",m=n);const w=new Headers(this.headers);return y?w.set("Prefer",l?`count=${l},return=minimal`:"return=minimal"):l&&w.set("Prefer",`count=${l}`),new Ai({method:h,url:p,headers:w,schema:this.schemaName,body:m,fetch:(u=this.fetch)!==null&&u!==void 0?u:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};class tC{constructor(){}static detectEnvironment(){var e;if(typeof WebSocket<"u")return{type:"native",wsConstructor:WebSocket};const n=globalThis;if(typeof globalThis<"u"&&typeof n.WebSocket<"u")return{type:"native",wsConstructor:n.WebSocket};const a=typeof global<"u"?global:void 0;if(a&&typeof a.WebSocket<"u")return{type:"native",wsConstructor:a.WebSocket};if(typeof globalThis<"u"&&typeof n.WebSocketPair<"u"&&typeof globalThis.WebSocket>"u")return{type:"cloudflare",error:"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.",workaround:"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime."};if(typeof globalThis<"u"&&n.EdgeRuntime||typeof navigator<"u"&&(!((e=navigator.userAgent)===null||e===void 0)&&e.includes("Vercel-Edge")))return{type:"unsupported",error:"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.",workaround:"Use serverless functions or a different deployment target for WebSocket functionality."};const o=globalThis.process;if(o){const l=o.versions;if(l&&l.node){const u=l.node,h=parseInt(u.replace(/^v/,"").split(".")[0]);return h>=22?typeof globalThis.WebSocket<"u"?{type:"native",wsConstructor:globalThis.WebSocket}:{type:"unsupported",error:`Node.js ${h} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}:{type:"unsupported",error:`Node.js ${h} detected without native WebSocket support.`,workaround:`For Node.js < 22, install "ws" package and provide it via the transport option: 16import ws from "ws" 17new RealtimeClient(url, { transport: ws })`}}}return{type:"unsupported",error:"Unknown JavaScript runtime without WebSocket support.",workaround:"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation."}}static getWebSocketConstructor(){const e=this.detectEnvironment();if(e.wsConstructor)return e.wsConstructor;let n=e.error||"WebSocket not supported in this environment.";throw e.workaround&&(n+=` 18 19Suggested solution: ${e.workaround}`),new Error(n)}static isWebSocketSupported(){try{const e=this.detectEnvironment();return e.type==="native"||e.type==="ws"}catch{return!1}}}const nC="2.106.0",rC=`realtime-js/${nC}`,sC="1.0.0",Rx="2.0.0",aC=Rx,iC=1e4,oC=100,js={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},Cx={close:"phx_close",error:"phx_error",join:"phx_join",leave:"phx_leave",access_token:"access_token"},Wf={connecting:"connecting",closing:"closing",closed:"closed"};class lC{constructor(e){this.HEADER_LENGTH=1,this.USER_BROADCAST_PUSH_META_LENGTH=6,this.KINDS={userBroadcastPush:3,userBroadcast:4},this.BINARY_ENCODING=0,this.JSON_ENCODING=1,this.BROADCAST_EVENT="broadcast",this.allowedMetadataKeys=[],this.allowedMetadataKeys=e??[]}encode(e,n){if(e.event===this.BROADCAST_EVENT&&!(e.payload instanceof ArrayBuffer)&&typeof e.payload.event=="string")return n(this._binaryEncodeUserBroadcastPush(e));let a=[e.join_ref,e.ref,e.topic,e.event,e.payload];return n(JSON.stringify(a))}_binaryEncodeUserBroadcastPush(e){var n;return this._isArrayBuffer((n=e.payload)===null||n===void 0?void 0:n.payload)?this._encodeBinaryUserBroadcastPush(e):this._encodeJsonUserBroadcastPush(e)}_encodeBinaryUserBroadcastPush(e){var n,a;const o=(a=(n=e.payload)===null||n===void 0?void 0:n.payload)!==null&&a!==void 0?a:new ArrayBuffer(0);return this._encodeUserBroadcastPush(e,this.BINARY_ENCODING,o)}_encodeJsonUserBroadcastPush(e){var n,a;const o=(a=(n=e.payload)===null||n===void 0?void 0:n.payload)!==null&&a!==void 0?a:{},u=new TextEncoder().encode(JSON.stringify(o)).buffer;return this._encodeUserBroadcastPush(e,this.JSON_ENCODING,u)}_encodeUserBroadcastPush(e,n,a){var o,l;const u=e.topic,h=(o=e.ref)!==null&&o!==void 0?o:"",p=(l=e.join_ref)!==null&&l!==void 0?l:"",m=e.payload.event,b=this.allowedMetadataKeys?this._pick(e.payload,this.allowedMetadataKeys):{},y=Object.keys(b).length===0?"":JSON.stringify(b);if(p.length>255)throw new Error(`joinRef length ${p.length} exceeds maximum of 255`);if(h.length>255)throw new Error(`ref length ${h.length} exceeds maximum of 255`);if(u.length>255)throw new Error(`topic length ${u.length} exceeds maximum of 255`);if(m.length>255)throw new Error(`userEvent length ${m.length} exceeds maximum of 255`);if(y.length>255)throw new Error(`metadata length ${y.length} exceeds maximum of 255`);const w=this.USER_BROADCAST_PUSH_META_LENGTH+p.length+h.length+u.length+m.length+y.length,x=new ArrayBuffer(this.HEADER_LENGTH+w);let k=new DataView(x),A=0;k.setUint8(A++,this.KINDS.userBroadcastPush),k.setUint8(A++,p.length),k.setUint8(A++,h.length),k.setUint8(A++,u.length),k.setUint8(A++,m.length),k.setUint8(A++,y.length),k.setUint8(A++,n),Array.from(p,j=>
19k.setUint8(A++,j.charCodeAt(0))),Array.from(h,j=>k.setUint8(A++,j.charCodeAt(0))),Array.from(u,j=>k.setUint8(A++,j.charCodeAt(0))),Array.from(m,j=>k.setUint8(A++,j.charCodeAt(0))),Array.from(y,j=>k.setUint8(A++,j.charCodeAt(0)));var _=new Uint8Array(x.byteLength+a.byteLength);return _.set(new Uint8Array(x),0),_.set(new Uint8Array(a),x.byteLength),_.buffer}decode(e,n){if(this._isArrayBuffer(e)){let a=this._binaryDecode(e);return n(a)}if(typeof e=="string"){const a=JSON.parse(e),[o,l,u,h,p]=a;return n({join_ref:o,ref:l,topic:u,event:h,payload:p})}return n({})}_binaryDecode(e){const n=new DataView(e),a=n.getUint8(0),o=new TextDecoder;if(a===this.KINDS.userBroadcast)return this._decodeUserBroadcast(e,n,o)}_decodeUserBroadcast(e,n,a){const o=n.getUint8(1),l=n.getUint8(2),u=n.getUint8(3),h=n.getUint8(4);let p=this.HEADER_LENGTH+4;const m=a.decode(e.slice(p,p+o));p=p+o;const b=a.decode(e.slice(p,p+l));p=p+l;const y=a.decode(e.slice(p,p+u));p=p+u;const w=e.slice(p,e.byteLength),x=h===this.JSON_ENCODING?JSON.parse(a.decode(w)):w,k={type:this.BROADCAST_EVENT,event:b,payload:x};return u>0&&(k.meta=JSON.parse(y)),{join_ref:null,ref:null,topic:m,event:this.BROADCAST_EVENT,payload:k}}_isArrayBuffer(e){var n;return e instanceof ArrayBuffer||((n=e?.constructor)===null||n===void 0?void 0:n.name)==="ArrayBuffer"}_pick(e,n){return!e||typeof e!="object"?{}:Object.fromEntries(Object.entries(e).filter(([a])=>n.includes(a)))}}var tt;(function(t){t.abstime="abstime",t.bool="bool",t.date="date",t.daterange="daterange",t.float4="float4",t.float8="float8",t.int2="int2",t.int4="int4",t.int4range="int4range",t.int8="int8",t.int8range="int8range",t.json="json",t.jsonb="jsonb",t.money="money",t.numeric="numeric",t.oid="oid",t.reltime="reltime",t.text="text",t.time="time",t.timestamp="timestamp",t.timestamptz="timestamptz",t.timetz="timetz",t.tsrange="tsrange",t.tstzrange="tstzrange"})(tt||(tt={}));const Hv=(t,e,n={})=>{var a;const o=(a=n.skipTypes)!==null&&a!==void 0?a:[];return e?Object.keys(e).reduce((l,u)=>(l[u]=cC(u,t,e,o),l),{}):{}},cC=(t,e,n,a)=>{const o=e.find(h=>h.name===t),l=o?.type,u=n[t];return l&&!a.includes(l)?Ox(l,u):Zf(u)},Ox=(t,e)=>{if(t.charAt(0)==="_"){const n=t.slice(1,t.length);return fC(e,n)}switch(t){case tt.bool:return uC(e);case tt.float4:case tt.float8:case tt.int2:case tt.int4:case tt.int8:case tt.numeric:case tt.oid:return dC(e);case tt.json:case tt.jsonb:return hC(e);case tt.timestamp:return pC(e);case tt.abstime:case tt.date:case tt.daterange:case tt.int4range:case tt.int8range:case tt.money:case tt.reltime:case tt.text:case tt.time:case tt.timestamptz:case tt.timetz:case tt.tsrange:case tt.tstzrange:return Zf(e);default:return Zf(e)}},Zf=t=>t,uC=t=>{switch(t){case"t":return!0;case"f":return!1;default:return t}},dC=t=>{if(typeof t=="string"){const e=parseFloat(t);if(!Number.isNaN(e))return e}return t},hC=t=>{if(typeof t=="string")try{return JSON.parse(t)}catch{return t}return t},fC=(t,e)=>{if(typeof t!="string")return t;const n=t.length-1,a=t[n];if(t[0]==="{"&&a==="}"){let l;const u=t.slice(1,n);try{l=JSON.parse("["+u+"]")}catch{l=u?u.split(","):[]}return l.map(h=>Ox(e,h))}return t},pC=t=>typeof t=="string"?t.replace(" ","T"):t,Nx=t=>{const e=new URL(t);return e.protocol=e.protocol.replace(/^ws/i,"http"),e.pathname=e.pathname.replace(/\/+$/,"").replace(/\/socket\/websocket$/i,"").replace(/\/socket$/i,"").replace(/\/websocket$/i,""),e.pathname===""||e.pathname==="/"?e.pathname="/api/broadcast":e.pathname=e.pathname+"/api/broadcast",e.href};var Xo=t=>typeof t=="function"?t:function(){return t},mC=typeof self<"u"?self:null,Ei=typeof window<"u"?window:null,hr=mC||Ei||globalThis,gC="2.0.0",yC=1e4,bC=1e3,pr={connecting:0,open:1,closing:2,closed:3},mn={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},zr={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},Jf={longpoll:"longpoll",websocket:"websocket"},vC={complete:4},Qf="base64url.bearer.phx.",Vc=class{constructor(t,e,n,a){this.channel=t,this.event=e,this.payload=n||function(){return{}},this.receivedResp=null,this.timeout=a,this.timeoutTimer=null,this.recHo
vendor: 8,700 bytes, line 19
19oks=[],this.sent=!1,this.ref=void 0}resend(t){this.timeout=t,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(t,e){return this.hasReceived(t)&&e(this.receivedResp.response),this.recHooks.push({status:t,callback:e}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}destroy(){this.cancelRefEvent(),this.cancelTimeout()}matchReceive({status:t,response:e,_ref:n}){this.recHooks.filter(a=>a.status===t).forEach(a=>a.callback(e))}cancelRefEvent(){this.refEvent&&this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,t=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=t,this.matchReceive(t)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}trigger(t,e){this.channel.trigger(this.refEvent,{status:t,response:e})}},Mx=class{constructor(t,e){this.callback=t,this.timerCalc=e,this.timer=void 0,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},wC=class{constructor(t,e,n){this.state=mn.closed,this.topic=t,this.params=Xo(e||{}),this.socket=n,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new Vc(this,zr.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new Mx(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=mn.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(a=>a.send()),this.pushBuffer=[]}),this.joinPush.receive("error",a=>{this.state=mn.errored,this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,a),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic}`),this.state=mn.closed,this.socket.remove(this)}),this.onError(a=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,a),this.isJoining()&&this.joinPush.reset(),this.state=mn.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),new Vc(this,zr.leave,Xo({}),this.timeout).send(),this.state=mn.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(zr.reply,(a,o)=>{this.trigger(this.replyEventName(o),a)})}join(t=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=t,this.joinedOnce=!0,this.rejoin(),this.joinPush}teardown(){this.pushBuffer.forEach(t=>t.destroy()),this.pushBuffer=[],this.rejoinTimer.reset(),this.joinPush.destroy(),this.state=mn.closed,this.bindings=[]}onClose(t){this.on(zr.close,t)}onError(t){return this.on(zr.error,e=>t(e))}on(t,e){let n=this.bindingRef++;return this.bindings.push({event:t,ref:n,callback:e}),n}off(t,e){this.bindings=this.bindings.filter(n=>!(n.event===t&&(typeof e>"u"||e===n.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(t,e,n=this.timeout){if(e=e||{},!this.joinedOnce)throw new Error(`tried to push '${t}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let a=new Vc(this,t,function(){return e},n);return this.canPush()?a.send():(a.startTimeout(),this.pushBuffer.push(a)),a}leave(t=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=mn.leaving;let e=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(zr.close,"leave")},n=new Vc(this,zr.leave,Xo({}),t);return n.receive("ok",()=>e()).receive("timeout",()=>e()),n.send(),this.canPush()||n.trigger("ok",{}),n}onMessage(t,e,n){return e}filterBindings(t,e,n){return!0}isMember(t,e,n,a){return this.topic!==t?!1:a&&a!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:t,event:e,payload:n,joinRef:a}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(t=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=mn.joining,this.joinPush.resend(t))}trigger(t,e,n,a){let o=this.onMessage(t,e,n,a);if(e&&!o)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let l=this.bindings.filter(u=>u.event===t&&this.filterBindings(u,e,n));for(let u=0;u<l.length;u++)l[u].callback(o,n,a||this.joinRef())}replyEventName(t){return`chan_reply_${t}`}isClosed(){return this.state===mn.closed}isErrored(){return this.state===mn.errored}isJoined(){return this.state===mn.joined}isJoining(){return this.state===mn.joining}isLeaving(){return this.state===mn.leaving}},mu=class{static request(t,e,n,a,o,l,u){if(hr.XDomainRequest){let h=new hr.XDomainRequest;return this.xdomainRequest(h,t,e,a,o,l,u)}else if(hr.XMLHttpRequest){let h=new hr.XMLHttpRequest;return this.xhrRequest(h,t,e,n,a,o,l,u)}else{if(hr.fetch&&hr.AbortController)return this.fetchRequest(t,e,n,a,o,l,u);throw new Error("No suitable XMLHttpRequest implementation found")}}static fetchRequest(t,e,n,a,o,l,u){let h={method:t,headers:n,body:a},p=null;return o&&(p=new AbortController,setTimeout(()=>p.abort(),o),h.signal=p.signal),hr.fetch(e,h).then(m=>m.text()).then(m=>this.parseJSON(m)).then(m=>u&&u(m)).catch(m=>{m.name==="AbortError"&&l?l():u&&u(null)}),p}static xdomainRequest(t,e,n,a,o,l,u){return t.timeout=o,t.open(e,n),t.onload=()=>{let h=this.parseJSON(t.responseText);u&&u(h)},l&&(t.ontimeout=l),t.onprogress=()=>{},t.send(a),t}static xhrRequest(t,e,n,a,o,l,u,h){t.open(e,n,!0),t.timeout=l;for(let[p,m]of Object.entries(a))t.setRequestHeader(p,m);return t.onerror=()=>h&&h(null),t.onreadystatechange=()=>{if(t.readyState===vC.complete&&h){let p=this.parseJSON(t.responseText);h(p)}},u&&(t.ontimeout=u),t.send(o),t}static parseJSON(t){if(!t||t==="")return null;try{return JSON.parse(t)}catch{return console&&console.log("failed to parse JSON response",t),null}}static serialize(t,e){let n=[];for(var a in t){if(!Object.prototype.hasOwnProperty.call(t,a))continue;let o=e?`${e}[${a}]`:a,l=t[a];typeof l=="object"?n.push(this.serialize(l,o)):n.push(encodeURIComponent(o)+"="+encodeURIComponent(l))}return n.join("&")}static appendParams(t,e){if(Object.keys(e).length===0)return t;let n=t.match(/\?/)?"&":"?";return`${t}${n}${this.serialize(e)}`}},xC=t=>{let e="",n=new Uint8Array(t),a=n.byteLength;for(let o=0;o<a;o++)e+=String.fromCharCode(n[o]);return btoa(e)},yi=class{constructor(t,e){e&&e.length===2&&e[1].startsWith(Qf)&&(this.authToken=atob(e[1].slice(Qf.length))),this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.awaitingBatchAck=!1,this.currentBatch=null,this.currentBatchTimer=null,this.batchBuffer=[],this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(t),this.readyState=pr.connecting,setTimeout(()=>this.poll(),0)}normalizeEndpoint(t){return t.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Jf.websocket),"$1/"+Jf.longpoll)}endpointURL(){return mu.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(t,e,n){this.close(t,e,n),this.readyState=pr.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===pr.open||this.readyState===pr.connecting}poll(){const t={Accept:"application/json"};this.authToken&&(t["X-Phoenix-AuthToken"]=this.authToken),this.ajax("GET",t,null,()=>this.ontimeout(),e=>{if(e){var{status:n,token:a,messages:o}=e;if(n===410&&this.token!==null){this.onerror(410),this.closeAndRetry(3410,"session_gone",!1);return}this.token=a}else n=0;switch(n){case 200:o.forEach(l=>{setTimeout(()=>this.onmessage({data:l}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=pr.open,this.onopen({}),this.poll();break;
19case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw new Error(`unhandled poll status ${n}`)}})}send(t){typeof t!="string"&&(t=xC(t)),this.currentBatch?this.currentBatch.push(t):this.awaitingBatchAck?this.batchBuffer.push(t):(this.currentBatch=[t],this.currentBatchTimer=setTimeout(()=>{this.batchSend(this.currentBatch),this.currentBatch=null},0))}batchSend(t){this.awaitingBatchAck=!0,this.ajax("POST",{"Content-Type":"application/x-ndjson"},t.join(` 20`),()=>this.onerror("timeout"),e=>{this.awaitingBatchAck=!1,!e||e.status!==200?(this.onerror(e&&e.status),this.closeAndRetry(1011,"internal server error",!1)):this.batchBuffer.length>0&&(this.batchSend(this.batchBuffer),this.batchBuffer=[])})}close(t,e,n){for(let o of this.reqs)o.abort();this.readyState=pr.closed;let a=Object.assign({code:1e3,reason:void 0,wasClean:!0},{code:t,reason:e,wasClean:n});this.batchBuffer=[],clearTimeout(this.currentBatchTimer),this.currentBatchTimer=null,typeof CloseEvent<"u"?this.onclose(new CloseEvent("close",a)):this.onclose(a)}ajax(t,e,n,a,o){let l,u=()=>{this.reqs.delete(l),a()};l=mu.request(t,this.endpointURL(),e,n,this.timeout,u,h=>{this.reqs.delete(l),this.isActive()&&o(h)}),this.reqs.add(l)}},kC=class Zo{constructor(e,n={}){let a=n.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=e,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(a.state,o=>{let{onJoin:l,onLeave:u,onSync:h}=this.caller;this.joinRef=this.channel.joinRef(),this.state=Zo.syncState(this.state,o,l,u),this.pendingDiffs.forEach(p=>{this.state=Zo.syncDiff(this.state,p,l,u)}),this.pendingDiffs=[],h()}),this.channel.on(a.diff,o=>{let{onJoin:l,onLeave:u,onSync:h}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(o):(this.state=Zo.syncDiff(this.state,o,l,u),h())})}onJoin(e){this.caller.onJoin=e}onLeave(e){this.caller.onLeave=e}onSync(e){this.caller.onSync=e}list(e){return Zo.list(this.state,e)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(e,n,a,o){let l=this.clone(e),u={},h={};return this.map(l,(p,m)=>{n[p]||(h[p]=m)}),this.map(n,(p,m)=>{let b=l[p];if(b){let y=m.metas.map(A=>A.phx_ref),w=b.metas.map(A=>A.phx_ref),x=m.metas.filter(A=>w.indexOf(A.phx_ref)<0),k=b.metas.filter(A=>y.indexOf(A.phx_ref)<0);x.length>0&&(u[p]=m,u[p].metas=x),k.length>0&&(h[p]=this.clone(b),h[p].metas=k)}else u[p]=m}),this.syncDiff(l,{joins:u,leaves:h},a,o)}static syncDiff(e,n,a,o){let{joins:l,leaves:u}=this.clone(n);return a||(a=function(){}),o||(o=function(){}),this.map(l,(h,p)=>{let m=e[h];if(e[h]=this.clone(p),m){let b=e[h].metas.map(w=>w.phx_ref),y=m.metas.filter(w=>b.indexOf(w.phx_ref)<0);e[h].metas.unshift(...y)}a(h,m,p)}),this.map(u,(h,p)=>{let m=e[h];if(!m)return;let b=p.metas.map(y=>y.phx_ref);m.metas=m.metas.filter(y=>b.indexOf(y.phx_ref)<0),o(h,m,p),m.metas.length===0&&delete e[h]}),e}static list(e,n){return n||(n=function(a,o){return o}),this.map(e,(a,o)=>n(a,o))}static map(e,n){return Object.getOwnPropertyNames(e).map(a=>n(a,e[a]))}static clone(e){return JSON.parse(JSON.stringify(e))}},Fc={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(t,e){if(t.payload.constructor===ArrayBuffer)return e(this.binaryEncode(t));{let n=[t.join_ref,t.ref,t.topic,t.event,t.payload];return e(JSON.stringify(n))}},decode(t,e){if(t.constructor===ArrayBuffer)return e(this.binaryDecode(t));{let[n,a,o,l,u]=JSON.parse(t);return e({join_ref:n,ref:a,topic:o,event:l,payload:u})}},binaryEncode(t){let{join_ref:e,ref:n,event:a,topic:o,payload:l}=t,u=this.META_LENGTH+e.length+n.length+o.length+a.length,h=new ArrayBuffer(this.HEADER_LENGTH+u),p=new DataView(h),m=0;p.setUint8(m++,this.KINDS.push),p.setUint8(m++,e.length),p.setUint8(m++,n.length),p.setUint8(m++,o.length),p.setUint8(m++,a.length),Array.from(e,y=>p.setUint8(m++,y.charCodeAt(0))),Array.from(n,y=>p.setUint8(m++,y.charCodeAt(0))),Array.from(o,y=>
20p.setUint8(m++,y.charCodeAt(0))),Array.from(a,y=>p.setUint8(m++,y.charCodeAt(0)));var b=new Uint8Array(h.byteLength+l.byteLength);return b.set(new Uint8Array(h),0),b.set(new Uint8Array(l),h.byteLength),b.buffer},binaryDecode(t){let e=new DataView(t),n=e.getUint8(0),a=new TextDecoder;switch(n){case this.KINDS.push:return this.decodePush(t,e,a);case this.KINDS.reply:return this.decodeReply(t,e,a);case this.KINDS.broadcast:return this.decodeBroadcast(t,e,a)}},decodePush(t,e,n){let a=e.getUint8(1),o=e.getUint8(2),l=e.getUint8(3),u=this.HEADER_LENGTH+this.META_LENGTH-1,h=n.decode(t.slice(u,u+a));u=u+a;let p=n.decode(t.slice(u,u+o));u=u+o;let m=n.decode(t.slice(u,u+l));u=u+l;let b=t.slice(u,t.byteLength);return{join_ref:h,ref:null,topic:p,event:m,payload:b}},decodeReply(t,e,n){let a=e.getUint8(1),o=e.getUint8(2),l=e.getUint8(3),u=e.getUint8(4),h=this.HEADER_LENGTH+this.META_LENGTH,p=n.decode(t.slice(h,h+a));h=h+a;let m=n.decode(t.slice(h,h+o));h=h+o;let b=n.decode(t.slice(h,h+l));h=h+l;let y=n.decode(t.slice(h,h+u));h=h+u;let w=t.slice(h,t.byteLength),x={status:y,response:w};return{join_ref:p,ref:m,topic:b,event:zr.reply,payload:x}},decodeBroadcast(t,e,n){let a=e.getUint8(1),o=e.getUint8(2),l=this.HEADER_LENGTH+2,u=n.decode(t.slice(l,l+a));l=l+a;let h=n.decode(t.slice(l,l+o));l=l+o;let p=t.slice(l,t.byteLength);return{join_ref:null,ref:null,topic:u,event:h,payload:p}}},_C=class{constructor(t,e={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.fallbackRef=null,this.timeout=e.timeout||yC,this.transport=e.transport||hr.WebSocket||yi,this.conn=void 0,this.primaryPassedHealthCheck=!1,this.longPollFallbackMs=e.longPollFallbackMs,this.fallbackTimer=null;let n=null;try{n=hr&&hr.sessionStorage}catch{}this.sessionStore=e.sessionStorage||n,this.establishedConnections=0,this.defaultEncoder=Fc.encode.bind(Fc),this.defaultDecoder=Fc.decode.bind(Fc),this.closeWasClean=!0,this.disconnecting=!1,this.binaryType=e.binaryType||"arraybuffer",this.connectClock=1,this.pageHidden=!1,this.encode=void 0,this.decode=void 0,this.transport!==yi?(this.encode=e.encode||this.defaultEncoder,this.decode=e.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let a=null;Ei&&Ei.addEventListener&&(Ei.addEventListener("pagehide",o=>{this.conn&&(this.disconnect(),a=this.connectClock)}),Ei.addEventListener("pageshow",o=>{a===this.connectClock&&(a=null,this.connect())}),Ei.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"?this.pageHidden=!0:(this.pageHidden=!1,!this.isConnected()&&!this.closeWasClean&&this.teardown(()=>this.connect()))})),this.heartbeatIntervalMs=e.heartbeatIntervalMs||3e4,this.autoSendHeartbeat=e.autoSendHeartbeat??!0,this.heartbeatCallback=e.heartbeatCallback??(()=>{}),this.rejoinAfterMs=o=>e.rejoinAfterMs?e.rejoinAfterMs(o):[1e3,2e3,5e3][o-1]||1e4,this.reconnectAfterMs=o=>e.reconnectAfterMs?e.reconnectAfterMs(o):[10,50,100,150,200,250,500,1e3,2e3][o-1]||5e3,this.logger=e.logger||null,!this.logger&&e.debug&&(this.logger=(o,l,u)=>{console.log(`${o}: ${l}`,u)}),this.longpollerTimeout=e.longpollerTimeout||2e4,this.params=Xo(e.params||{}),this.endPoint=`${t}/${Jf.websocket}`,this.vsn=e.vsn||gC,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.heartbeatSentAt=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new Mx(()=>{if(this.pageHidden){this.log("Not reconnecting as page is hidden!"),this.teardown();return}this.teardown(async()=>{e.beforeReconnect&&await e.beforeReconnect(),this.connect()})},this.reconnectAfterMs),this.authToken=e.authToken}getLongPollTransport(){return yi}replaceTransport(t){this.connectClock++,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.conn&&(this.conn.close(),this.conn=null),this.transport=t}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let t=mu.appendParams(mu.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return t.charAt(0)!=="/"?t:t.charAt(1)==="/"?`${this.protocol()}:${t}`:`${this.protocol()}://${location.host}${t}`}disconnect(t,e,n){this.connectClock++,this.disconnecting=!0,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.teardown(()=>{this.disconnecting=!1,t&&t()},e,n)}connect(t){t&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=Xo(t)),!(this.conn&&!this.disconnecting)&&(this.longPollFallbackMs&&this.transport!==yi?this.connectWithF
vendor: 4,353 bytes, line 20
20allback(yi,this.longPollFallbackMs):this.transportConnect())}log(t,e,n){this.logger&&this.logger(t,e,n)}hasLogger(){return this.logger!==null}onOpen(t){let e=this.makeRef();return this.stateChangeCallbacks.open.push([e,t]),e}onClose(t){let e=this.makeRef();return this.stateChangeCallbacks.close.push([e,t]),e}onError(t){let e=this.makeRef();return this.stateChangeCallbacks.error.push([e,t]),e}onMessage(t){let e=this.makeRef();return this.stateChangeCallbacks.message.push([e,t]),e}onHeartbeat(t){this.heartbeatCallback=t}ping(t){if(!this.isConnected())return!1;let e=this.makeRef(),n=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:e});let a=this.onMessage(o=>{o.ref===e&&(this.off([a]),t(Date.now()-n))});return!0}transportName(t){return t===yi?"LongPoll":t.name}transportConnect(){this.connectClock++,this.closeWasClean=!1;let t;this.authToken&&(t=["phoenix",`${Qf}${btoa(this.authToken).replace(/=/g,"")}`]),this.conn=new this.transport(this.endPointURL(),t),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e)}getSession(t){return this.sessionStore&&this.sessionStore.getItem(t)}storeSession(t,e){this.sessionStore&&this.sessionStore.setItem(t,e)}connectWithFallback(t,e=2500){clearTimeout(this.fallbackTimer);let n=!1,a=!0,o,l,u=this.transportName(t),h=p=>{this.log("transport",`falling back to ${u}...`,p),this.off([o,l]),a=!1,this.replaceTransport(t),this.transportConnect()};if(this.getSession(`phx:fallback:${u}`))return h("memorized");this.fallbackTimer=setTimeout(h,e),l=this.onError(p=>{this.log("transport","error",p),a&&!n&&(clearTimeout(this.fallbackTimer),h(p))}),this.fallbackRef&&this.off([this.fallbackRef]),this.fallbackRef=this.onOpen(()=>{if(n=!0,!a){let p=this.transportName(t);return this.primaryPassedHealthCheck||this.storeSession(`phx:fallback:${p}`,"true"),this.log("transport",`established ${p} fallback`)}clearTimeout(this.fallbackTimer),this.fallbackTimer=setTimeout(h,e),this.ping(p=>{this.log("transport","connected to primary after",p),this.primaryPassedHealthCheck=!0,clearTimeout(this.fallbackTimer)})}),this.transportConnect()}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.disconnecting=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.autoSendHeartbeat&&this.resetHeartbeat(),this.triggerStateCallbacks("open")}heartbeatTimeout(){if(this.pendingHeartbeatRef){this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection");try{this.heartbeatCallback("timeout")}catch(t){this.log("error","error in heartbeat callback",t)}this.triggerChanError(new Error("heartbeat timeout")),this.closeWasClean=!1,this.teardown(()=>this.reconnectTimer.scheduleTimeout(),bC,"heartbeat timeout")}}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(t,e,n){if(!this.conn)return t&&t();const a=this.conn;this.waitForBufferDone(a,()=>{e?a.close(e,n||""):a.close(),this.waitForSocketClosed(a,()=>{this.conn===a&&(this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){},this.conn.onclose=function(){},this.conn=null),t&&t()})})}waitForBufferDone(t,e,n=1){if(n===5||!t.bufferedAmount){e();return}setTimeout(()=>{this.waitForBufferDone(t,e,n+1)},150*n)}waitForSocketClosed(t,e,n=1){if(n===5||t.readyState===pr.closed){e();return}setTimeout(()=>{this.waitForSocketClosed(t,e,n+1)},150*n)}onConnClose(t){this.conn&&(this.conn.onclose=()=>{}),this.hasLogger()&&this.log("transport","close",t),this.triggerChanError(t),this.clearHeartbeats(),this.closeWasClean||this.reconnectTimer.scheduleTimeout(),this.triggerStateCallbacks("close",t)}onConnError(t){this.hasLogger()&&this.log("transport","error",t);let e=this.transport,n=this.establishedConnections;this.triggerStateCallbacks("error",t,e,n),(e===this.transport||n>0)&&this.triggerChanError(t)}
20triggerChanError(t){this.channels.forEach(e=>{e.isErrored()||e.isLeaving()||e.isClosed()||e.trigger(zr.error,t)})}connectionState(){switch(this.conn&&this.conn.readyState){case pr.connecting:return"connecting";case pr.open:return"open";case pr.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(t){this.off(t.stateChangeRefs),this.channels=this.channels.filter(e=>e!==t)}off(t){for(let e in this.stateChangeCallbacks)this.stateChangeCallbacks[e]=this.stateChangeCallbacks[e].filter(([n])=>t.indexOf(n)===-1)}channel(t,e={}){let n=new wC(t,e,this);return this.channels.push(n),n}push(t){if(this.hasLogger()){let{topic:e,event:n,payload:a,ref:o,join_ref:l}=t;this.log("push",`${e} ${n} (${l}, ${o})`,a)}this.isConnected()?this.encode(t,e=>this.conn.send(e)):this.sendBuffer.push(()=>this.encode(t,e=>this.conn.send(e)))}makeRef(){let t=this.ref+1;return t===this.ref?this.ref=0:this.ref=t,this.ref.toString()}sendHeartbeat(){if(!this.isConnected()){try{this.heartbeatCallback("disconnected")}catch(t){this.log("error","error in heartbeat callback",t)}return}if(this.pendingHeartbeatRef){this.heartbeatTimeout();return}this.pendingHeartbeatRef=this.makeRef(),this.heartbeatSentAt=Date.now(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef});try{this.heartbeatCallback("sent")}catch(t){this.log("error","error in heartbeat callback",t)}this.heartbeatTimeoutTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs)}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(t=>t()),this.sendBuffer=[])}onConnMessage(t){this.decode(t.data,e=>{let{topic:n,event:a,payload:o,ref:l,join_ref:u}=e;if(l&&l===this.pendingHeartbeatRef){const h=this.heartbeatSentAt?Date.now()-this.heartbeatSentAt:void 0;this.clearHeartbeats();try{this.heartbeatCallback(o.status==="ok"?"ok":"error",h)}catch(p){this.log("error","error in heartbeat callback",p)}this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.autoSendHeartbeat&&(this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}this.hasLogger()&&this.log("receive",`${o.status||""} ${n} ${a} ${l&&"("+l+")"||""}`.trim(),o);for(let h=0;h<this.channels.length;h++){const p=this.channels[h];p.isMember(n,a,o,u)&&p.trigger(a,o,l,u)}this.triggerStateCallbacks("message",e)})}triggerStateCallbacks(t,...e){try{this.stateChangeCallbacks[t].forEach(([n,a])=>{try{a(...e)}catch(o){this.log("error",`error in ${t} callback`,o)}})}catch(n){this.log("error",`error triggering ${t} callbacks`,n)}}leaveOpenTopic(t){let e=this.channels.find(n=>n.topic===t&&(n.isJoined()||n.isJoining()));e&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${t}"`),e.leave())}};class el{constructor(e,n){const a=jC(n);this.presence=new kC(e.getChannel(),a),this.presence.onJoin((o,l,u)=>{const h=el.onJoinPayload(o,l,u);e.getChannel().trigger("presence",h)}),this.presence.onLeave((o,l,u)=>{const h=el.onLeavePayload(o,l,u);e.getChannel().trigger("presence",h)}),this.presence.onSync(()=>{e.getChannel().trigger("presence",{event:"sync"})})}get state(){return el.transformState(this.presence.state)}static transformState(e){return e=SC(e),Object.getOwnPropertyNames(e).reduce((n,a)=>{const o=e[a];return n[a]=ou(o),n},{})}static onJoinPayload(e,n,a){const o=Vv(n),l=ou(a);return{event:"join",key:e,currentPresences:o,newPresences:l}}static onLeavePayload(e,n,a){const o=Vv(n),l=ou(a);return{event:"leave",key:e,currentPresences:o,leftPresences:l}}}function ou(t){return t.metas.map(e=>(e.presence_ref=e.phx_ref,delete e.phx_ref,delete e.phx_ref_prev,e))}function SC(t){return JSON.parse(JSON.stringify(t))}function jC(t){return t?.events&&{events:t.events}}function Vv(t){return t?.metas?ou(t):[]}var Fv;(function(t){t.SYNC="sync",t.JOIN="join",t.LEAVE="leave"})(Fv||(Fv={}));class TC{get state(){return this.presenceAdapter.state}constructor(e,n){this.channel=e,this.presenceAdapter=new el(this.channel.channelAdapter,n)}}function AC(t){if(t instanceof Error)return t;if(typeof t=="string")return new Error(t);if(t&&typeof t=="object"){const e=t;
20if(typeof e.code=="number"){const n=typeof e.reason=="string"&&e.reason?` (${e.reason})`:"";return new Error(`socket closed: ${e.code}${n}`,{cause:t})}return new Error("channel error: transport failure",{cause:t})}return new Error("channel error: connection lost")}class EC{constructor(e,n,a){const o=RC(a);this.channel=e.getSocket().channel(n,o),this.socket=e}get state(){return this.channel.state}set state(e){this.channel.state=e}get joinedOnce(){return this.channel.joinedOnce}get joinPush(){return this.channel.joinPush}get rejoinTimer(){return this.channel.rejoinTimer}on(e,n){return this.channel.on(e,n)}off(e,n){this.channel.off(e,n)}subscribe(e){return this.channel.join(e)}unsubscribe(e){return this.channel.leave(e)}teardown(){this.channel.teardown()}onClose(e){this.channel.onClose(e)}onError(e){return this.channel.onError(e)}push(e,n,a){let o;try{o=this.channel.push(e,n,a)}catch{throw new Error(`tried to push '${e}' to '${this.channel.topic}' before joining. Use channel.subscribe() before pushing events`)}if(this.channel.pushBuffer.length>oC){const l=this.channel.pushBuffer.shift();l.cancelTimeout(),this.socket.log("channel",`discarded push due to buffer overflow: ${l.event}`,l.payload())}return o}updateJoinPayload(e){const n=this.channel.joinPush.payload();this.channel.joinPush.payload=()=>Object.assign(Object.assign({},n),e)}canPush(){return this.socket.isConnected()&&this.state===js.joined}isJoined(){return this.state===js.joined}isJoining(){return this.state===js.joining}isClosed(){return this.state===js.closed}isLeaving(){return this.state===js.leaving}updateFilterBindings(e){this.channel.filterBindings=e}updatePayloadTransform(e){this.channel.onMessage=e}getChannel(){return this.channel}}function RC(t){return{config:Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},t.config)}}var Gv;(function(t){t.ALL="*",t.INSERT="INSERT",t.UPDATE="UPDATE",t.DELETE="DELETE"})(Gv||(Gv={}));var Mi;(function(t){t.BROADCAST="broadcast",t.PRESENCE="presence",t.POSTGRES_CHANGES="postgres_changes",t.SYSTEM="system"})(Mi||(Mi={}));var qr;(function(t){t.SUBSCRIBED="SUBSCRIBED",t.TIMED_OUT="TIMED_OUT",t.CLOSED="CLOSED",t.CHANNEL_ERROR="CHANNEL_ERROR"})(qr||(qr={}));class tl{get state(){return this.channelAdapter.state}set state(e){this.channelAdapter.state=e}get joinedOnce(){return this.channelAdapter.joinedOnce}get timeout(){return this.socket.timeout}get joinPush(){return this.channelAdapter.joinPush}get rejoinTimer(){return this.channelAdapter.rejoinTimer}constructor(e,n={config:{}},a){var o,l;if(this.topic=e,this.params=n,this.socket=a,this.bindings={},this.subTopic=e.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},n.config),this.channelAdapter=new EC(this.socket.socketAdapter,e,this.params),this.presence=new TC(this),this._onClose(()=>{this.socket._remove(this)}),this._updateFilterTransform(),this.broadcastEndpointURL=Nx(this.socket.socketAdapter.endPointURL()),this.private=this.params.config.private||!1,!this.private&&(!((l=(o=this.params.config)===null||o===void 0?void 0:o.broadcast)===null||l===void 0)&&l.replay))throw new Error(`tried to use replay on public channel '${this.topic}'. It must be a private channel.`)}subscribe(e,n=this.timeout){var a,o,l;if(this.socket.isConnected()||this.socket.connect(),this.channelAdapter.isClosed()){const{config:{broadcast:u,presence:h,private:p}}=this.params,m=(o=(a=this.bindings.postgres_changes)===null||a===void 0?void 0:a.map(x=>x.filter))!==null&&o!==void 0?o:[],b=!!this.bindings[Mi.PRESENCE]&&this.bindings[Mi.PRESENCE].length>0||((l=this.params.config.presence)===null||l===void 0?void 0:l.enabled)===!0,y={},w={broadcast:u,presence:Object.assign(Object.assign({},h),{enabled:b}),postgres_changes:m,private:p};this.socket.accessTokenValue&&(y.access_token=this.socket.accessTokenValue),this._onError(x=>{e?.(qr.CHANNEL_ERROR,AC(x))}),this._onClose(()=>e?.(qr.CLOSED)),this.updateJoinPayload(Object.assign({config:w},y)),this._updateFilterMessage(),this.channelAdapter.subscribe(n).receive("ok",async({postgres_changes:x})=>{if(this.socket._isManualToken()||this.socket.setAuth(),x===void 0){e?.(qr.SUBSCRIBED);return}this._updatePostgresBindings(x,e)}).receive("error",x=>{this.state=js.errored;const k=Object.values(x).join(", ")||"error";e?.(qr.CHANNEL_ERROR,new Error(k,{cause:x}))}).receive("timeout",()=>{e?.(qr.TIMED_OUT)})}return this}_updatePostgresBindings(e,n){var a;const o=this.bindings.postgres_changes,l=(a=o?.length)!==null&&a!==void 0?a:0,u=[];for(let h=0;h<l;h++){const p=o[h],{filter:{event:m,schema:b,table:y,filter:w}}=p,x=e&&e[h];if(x&&x.event===m&&tl.isFilterValueEqual(x.schema,b)&&tl.isFilterValueEqual(x.table,y)&&tl.isFilterValueEqual(x.filter,w))u.pu
20sh(Object.assign(Object.assign({},p),{id:x.id}));else{this.unsubscribe(),this.state=js.errored,n?.(qr.CHANNEL_ERROR,new Error("mismatch between server and client bindings for postgres changes"));return}}this.bindings.postgres_changes=u,this.state!=js.errored&&n&&n(qr.SUBSCRIBED)}presenceState(){return this.presence.state}async track(e,n={}){return await this.send({type:"presence",event:"track",payload:e},n.timeout||this.timeout)}async untrack(e={}){return await this.send({type:"presence",event:"untrack"},e)}on(e,n,a){const o=this.channelAdapter.isJoined()||this.channelAdapter.isJoining(),l=e===Mi.PRESENCE||e===Mi.POSTGRES_CHANGES;if(o&&l)throw this.socket.log("channel",`cannot add \`${e}\` callbacks for ${this.topic} after \`subscribe()\`.`),new Error(`cannot add \`${e}\` callbacks for ${this.topic} after \`subscribe()\`.`);return this._on(e,n,a)}async httpSend(e,n,a={}){var o;if(n==null)return Promise.reject(new Error("Payload is required for httpSend()"));const l={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};this.socket.accessTokenValue&&(l.Authorization=`Bearer ${this.socket.accessTokenValue}`);const u={method:"POST",headers:l,body:JSON.stringify({messages:[{topic:this.subTopic,event:e,payload:n,private:this.private}]})},h=await this._fetchWithTimeout(this.broadcastEndpointURL,u,(o=a.timeout)!==null&&o!==void 0?o:this.timeout);if(h.status===202)return{success:!0};let p=h.statusText;try{const m=await h.json();p=m.error||m.message||p}catch{}return Promise.reject(new Error(p))}async send(e,n={}){var a,o;if(!this.channelAdapter.canPush()&&e.type==="broadcast"){console.warn("Realtime send() is automatically falling back to REST API. This behavior will be deprecated
20in the future. Please use httpSend() explicitly for REST delivery.");const{event:l,payload:u}=e,h={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};this.socket.accessTokenValue&&(h.Authorization=`Bearer ${this.socket.accessTokenValue}`);const p={method:"POST",headers:h,body:JSON.stringify({messages:[{topic:this.subTopic,event:l,payload:u,private:this.private}]})};try{const m=await this._fetchWithTimeout(this.broadcastEndpointURL,p,(a=n.timeout)!==null&&a!==void 0?a:this.timeout);return await((o=m.body)===null||o===void 0?void 0:o.cancel()),m.ok?"ok":"error"}catch(m){return m instanceof Error&&m.name==="AbortError"?"timed out":"error"}}else return new Promise(l=>{var u,h,p;const m=this.channelAdapter.push(e.type,e,n.timeout||this.timeout);e.type==="broadcast"&&!(!((p=(h=(u=this.params)===null||u===void 0?void 0:u.config)===null||h===void 0?void 0:h.broadcast)===null||p===void 0)&&p.ack)&&l("ok"),m.receive("ok",()=>l("ok")),m.receive("error",()=>l("error")),m.receive("timeout",()=>l("timed out"))})}updateJoinPayload(e){this.channelAdapter.updateJoinPayload(e)}async unsubscribe(e=this.timeout){return new Promise(n=>{this.channelAdapter.unsubscribe(e).receive("ok",()=>n("ok")).receive("timeout",()=>n("timed out")).receive("error",()=>n("error"))})}teardown(){this.channelAdapter.teardown()}async _fetchWithTimeout(e,n,a){const o=new AbortController,l=setTimeout(()=>o.abort(),a),u=await this.socket.fetch(e,Object.assign(Object.assign({},n),{signal:o.signal}));return clearTimeout(l),u}_on(e,n,a){const o=e.toLocaleLowerCase(),l=this.channelAdapter.on(e,a),u={type:o,filter:n,callback:a,ref:l};return this.bindings[o]?this.bindings[o].push(u):this.bindings[o]=[u],this._updateFilterMessage(),this}_onClose(e){this.channelAdapter.onClose(e)}_onError(e){this.channelAdapter.onError(e)}_updateFilterMessage(){this.channelAdapter.updateFilterBindings((e,n,a)=>{var o,l,u,h,p,m,b;const y=e.event.toLocaleLowerCase();if(this._notThisChannelEvent(y,a))return!1;const w=(o=this.bindings[y])===null||o===void 0?void 0:o.find(x=>x.ref===e.ref);if(!w)return!0;if(["broadcast","presence","postgres_changes"].includes(y))if("id"in w){const x=w.id,k=(l=w.filter)===null||l===void 0?void 0:l.event;return x&&((u=n.ids)===null||u===void 0?void 0:u.includes(x))&&(k==="*"||k?.toLocaleLowerCase()===((h=n.data)===null||h===void 0?void 0:h.type.toLocaleLowerCase()))}else{const x=(m=(p=w?.filter)===null||p===void 0?void 0:p.event)===null||m===void 0?void 0:m.toLocaleLowerCase();return x==="*"||x===((b=n?.event)===null||b===void 0?void 0:b.toLocaleLowerCase())}else return w.type.toLocaleLowerCase()===y})}_notThisChannelEvent(e,n){const{close:a,error:o,leave:l,join:u}=Cx;return n&&[a,o,l,u].includes(e)&&n!==this.joinPush.ref}_updateFilterTransform(){this.channelAdapter.updatePayloadTransform((e,n,a)=>{if(typeof n=="object"&&"ids"in n){const o=n.data,{schema:l,table:u,commit_timestamp:h,type:p,errors:m}=o;return Object.assign(Object.assign({},{schema:l,table:u,commit_timestamp:h,eventType:p,new:{},old:{},errors:m}),this._getPayloadRecords(o))}return n})}copyBindings(e){if(this.joinedOnce)throw new Error("cannot copy bindings into joined channel");for(const n in e.bindings)for(const a of e.bindings[n])this._on(a.type,a.filter,a.callback)}static isFilterValueEqual(e,n){return(e??void 0)===(n??void 0)}_getPayloadRecords(e){const n={new:{},old:{}};return(e.type==="INSERT"||e.type==="UPDATE")&&(n.new=Hv(e.columns,e.record)),(e.type==="UPDATE"||e.type==="DELETE")&&(n.old=Hv(e.columns,e.old_record)),n}}class CC{constructor(e,n){this.socket=new _C(e,n)}get timeout(){return this.socket.timeout}get endPoint(){return this.socket.endPoint}get transport(){return this.socket.transport}get heartbeatIntervalMs(){return this.socket.heartbeatIntervalMs}get heartbeatCallback(){return this.socket.heartbeatCallback}set heartbeatCallback(e){this.socket.heartbeatCallback=e}get heartbeatTimer(){return this.socket.heartbeatTimer}get pendingHeartbeatRef(){return this.socket.pendingHeartbeatRef}get reconnectTimer(){return this.socket.reconnectTimer}get vsn(){return this.socket.vsn}get encode(){return this.socket.encode}get decode(){return this.socket.decode}get reconnectAfterMs(){return this.socket.reconnectAfterMs}get sendBuffer(){return this.socket.sendBuffer}get stateChangeCallbacks(){return this.socket.stateChangeCallbacks}connect(){this.socket.connect()}disconnect(e,n,a,o=1e4){return new Promise(l=>{setTimeout(()=>l("timeout"),o),this.socket.disconnect(()=>{e(),l("ok")},n,a)})}push(e){this.socket.push(e)}log(e,n,a){this.socket.log(e,n,a)}makeRef(){return this.socket.makeRef()}onOpen(e){this.socket.onOpen(e)}onClose(e){this.socket.onClose(e)}onError(e){this.socket.onError(e)}onMessage(e){this.socket.onMessage(e)}isConnected(){return this.socket.isConnected()}isConnecting(){return this.socket.connectionState()==Wf.connecting}isDisconnecting(){return this.socket.connectionState()==Wf.closing}connectionState(){return this.socket.connectionState()}endPointURL(){return this.socket.endPointURL()}sendHeartbeat(){this.socket.sendHeartbeat()}getSocket(){return this.socket}}const Kv={HEARTBEAT_INTERVAL:25e3},OC=[1e3,2e3,5e3,1e4],NC=1e4;function MC(){const t=new Map;return{get length(){return t.size},clear(){t.clear()},getItem(e){return t.has(e)?t.get(e):null},key(e){var n;return(n=Array.from(t.keys())[e])!==null&&n!==void 0?n:null},removeItem(e){t.delete(e)},setItem(e,n){t.set(e,String(n))}}}function DC(){try{if(typeof globalThis<"u"&&globalThis.sessionStorage)return globalThis.sessionStorage}catch{}return MC()}const PC=` 21 addEventListener("message", (e) => { 22 if (e.data.event === "start") { 23 setInterval(() => postMessage({ event: "keepAlive" }), e.data.interval); 24 } 25 });`;class LC{get endPoint(){return this.socketAdapter.endPoint}get timeout(){return this.socketAdapter.timeout}get transport(){return this.socketAdapter.transport}get heartbeatCallback(){return this.socketAdapter.heartbeatCallback}get heartbeatIntervalMs(){return this.socketAdapter.heartbeatIntervalMs}get heartbeatTimer(){return this.worker?this._workerHeartbeatTimer:this.socketAdapter.heartbeatTimer}get pendingHeartbeatRef(){return this.worker?this._pendingWorkerHeartbeatRef:this.socketAdapter.pendingHeartbeatRef}get reconnectTimer(){return this.socketAdapter.reconnectTimer}get vsn(){return this.socketAdapter.vsn}get encode(){return this.socketAdapter.encode}get decode(){return this.socketAdapter.decode}get reconnectAfterMs(){return this.socketAdapter.reconnectAfterMs}get sendBuffer(){return this.socketAdapter.sendBuffer}get stateChangeCallbacks(){return this.socketAdapter.stateChangeCallbacks}constructor(e,n){var a;if(this.channels=new Array,this.accessTokenValue=null,this.accessToken=null,this.apiKey=null,this.httpEndpoint="",this.headers={},this.params={}
25,this.ref=0,this.serializer=new lC,this._manuallySetToken=!1,this._authPromise=null,this._workerHeartbeatTimer=void 0,this._pendingWorkerHeartbeatRef=null,this._pendingDisconnectTimer=null,this._disconnectOnEmptyChannelsAfterMs=0,this._resolveFetch=l=>l?(...u)=>l(...u):(...u)=>fetch(...u),!(!((a=n?.params)===null||a===void 0)&&a.apikey))throw new Error("API key is required to connect to Realtime");this.apiKey=n.params.apikey;const o=this._initializeOptions(n);this.socketAdapter=new CC(e,o),this.httpEndpoint=Nx(e),this.fetch=this._resolveFetch(n?.fetch)}connect(){if(!(this.isConnecting()||this.isDisconnecting()||this.isConnected())){this.accessToken&&!this._authPromise&&this._setAuthSafely("connect"),this._setupConnectionHandlers();try{this.socketAdapter.connect()}catch(e){const n=e.message;throw n.includes("Node.js")?new Error(`${n} 26 27To use Realtime in Node.js, you need to provide a WebSocket implementation: 28 29Option 1: Use Node.js 22+ which has native WebSocket support 30Option 2: Install and provide the "ws" package: 31 32 npm install ws 33 34 import ws from "ws" 35 const client = new RealtimeClient(url, { 36 ...options, 37 transport: ws 38 })`):new Error(`WebSocket not available: ${n}`)}this._handleNodeJsRaceCondition()}}endpointURL(){return this.socketAdapter.endPointURL()}async disconnect(e,n){return this._cancelPendingDisconnect(),this.isDisconnecting()?"ok":await this.socketAdapter.disconnect(()=>{clearInterval(this._workerHeartbeatTimer),this._terminateWorker()},e,n)}getChannels(){return this.channels}async removeChannel(e){const n=await e.unsubscribe();return n==="ok"&&e.teardown(),n}async removeAllChannels(){const e=this.channels.map(async a=>{const o=await a.unsubscribe();return a.teardown(),o}),n=await Promise.all(e);return await this.disconnect(),n}log(e,n,a){this.socketAdapter.log(e,n,a)}connectionState(){return this.socketAdapter.connectionState()||Wf.closed}isConnected(){return this.socketAdapter.isConnected()}isConnecting(){return this.socketAdapter.isConnecting()}isDisconnecting(){return this.socketAdapter.isDisconnecting()}channel(e,n={config:{}}){const a=`realtime:${e}`,o=this.getChannels().find(l=>l.topic===a);if(o)return o;{const l=new tl(`realtime:${e}`,n,this);return this._cancelPendingDisconnect(),this.channels.push(l),l}}push(e){this.socketAdapter.push(e)}async setAuth(e=null){this._authPromise=this._performAuth(e);try{await this._authPromise}finally{this._authPromise=null}}_isManualToken(){return this._manuallySetToken}async sendHeartbeat(){this.socketAdapter.sendHeartbeat()}onHeartbeat(e){this.socketAdapter.heartbeatCallback=this._wrapHeartbeatCallback(e)}_makeRef(){return this.socketAdapter.makeRef()}_remove(e){this.channels=this.channels.filter(n=>n.topic!==e.topic),this.channels.length===0&&(this.log("transport","no channels remaining, scheduling disconnect"),this._schedulePendingDisconnect())}_schedulePendingDisconnect(){if(this._cancelPendingDisconnect(),this._disconnectOnEmptyChannelsAfterMs===0){this.log("transport","disconnecting immediately - no channels"),this.disconnect();return}
38this._pendingDisconnectTimer=setTimeout(()=>{this._pendingDisconnectTimer=null,this.channels.length===0&&(this.log("transport","deferred disconnect fired - no channels, disconnecting"),this.disconnect())},this._disconnectOnEmptyChannelsAfterMs),this.log("transport",`deferred disconnect scheduled in ${this._disconnectOnEmptyChannelsAfterMs}ms`)}_cancelPendingDisconnect(){this._pendingDisconnectTimer!==null&&(this.log("transport","pending disconnect cancelled - channel activity detected"),clearTimeout(this._pendingDisconnectTimer),this._pendingDisconnectTimer=null)}async _performAuth(e=null){let n,a=!1;if(e)n=e,a=!0;else if(this.accessToken)try{n=await this.accessToken()}catch(o){this.log("error","Error fetching access token from callback",o),n=this.accessTokenValue}else n=this.accessTokenValue;a?this._manuallySetToken=!0:this.accessToken&&(this._manuallySetToken=!1),this.accessTokenValue!=n&&(this.accessTokenValue=n,this.channels.forEach(o=>{const l={access_token:n,version:rC};n&&o.updateJoinPayload(l),o.joinedOnce&&o.channelAdapter.isJoined()&&o.channelAdapter.push(Cx.access_token,{access_token:n})}))}async _waitForAuthIfNeeded(){this._authPromise&&await this._authPromise}_setAuthSafely(e="general"){this._isManualToken()||this.setAuth().catch(n=>{this.log("error",`Error setting auth in ${e}`,n)})}_setupConnectionHandlers(){this.socketAdapter.onOpen(()=>{(this._authPromise||(this.accessToken&&!this.accessTokenValue?this.setAuth():Promise.resolve())).catch(n=>{this.log("error","error waiting for auth on connect",n)}),this.worker&&!this.workerRef&&this._startWorkerHeartbeat()}),this.socketAdapter.onClose(()=>{this.worker&&this.workerRef&&this._terminateWorker()}),this.socketAdapter.onMessage(e=>{e.ref&&e.ref===this._pendingWorkerHeartbeatRef&&(this._pendingWorkerHeartbeatRef=null)})}_handleNodeJsRaceCondition(){this.socketAdapter.isConnected()&&this.socketAdapter.getSocket().onConnOpen()}_wrapHeartbeatCallback(e){return(n,a)=>{n=="sent"&&this._setAuthSafely(),e&&e(n,a)}}_startWorkerHeartbeat(){this.workerUrl?this.log("worker",`starting worker for from ${this.workerUrl}`):this.log("worker","starting default worker");const e=this._workerObjectUrl(this.workerUrl);this.workerRef=new Worker(e),this.workerRef.onerror=n=>{this.log("worker","worker error",n.message),this._terminateWorker(),this.disconnect()},this.workerRef.onmessage=n=>{n.data.event==="keepAlive"&&this.sendHeartbeat()},this.workerRef.postMessage({event:"start",interval:this.heartbeatIntervalMs})}_terminateWorker(){this.workerRef&&(this.log("worker","terminating worker"),this.workerRef.terminate(),this.workerRef=void 0)}_workerObjectUrl(e){let n;if(e)n=e;else{const a=new Blob([PC],{type:"application/javascript"});n=URL.createObjectURL(a)}return n}_initializeOptions(e){var n,a,o,l,u,h,p,m,b,y,w,x;this.worker=(n=e?.worker)!==null&&n!==void 0?n:!1,this.accessToken=(a=e?.accessToken)!==null&&a!==void 0?a:null;const k={};k.timeout=(o=e?.timeout)!==null&&o!==void 0?o:iC,k.heartbeatIntervalMs=(l=e?.heartbeatIntervalMs)!==null&&l!==void 0?l:Kv.HEARTBEAT_INTERVAL,this._disconnectOnEmptyChannelsAfterMs=(u=e?.disconnectOnEmptyChannelsAfterMs)!==null&&u!==void 0?u:2*((h=e?.heartbeatIntervalMs)!==null&&h!==void 0?h:Kv.HEARTBEAT_INTERVAL),k.transport=(p=e?.transport)!==null&&p!==void 0?p:tC.getWebSocketConstructor(),k.params=e?.params,k.logger=e?.logger,k.heartbeatCallback=this._wrapHeartbeatCallback(e?.heartbeatCallback),k.sessionStorage=(m=e?.sessionStorage)!==null&&m!==void 0?m:DC(),k.reconnectAfterMs=(b=e?.reconnectAfterMs)!==null&&b!==void 0?b:(O=>OC[O-1]||NC);let A,_;const j=(y=e?.vsn)!==null&&y!==void 0?y:aC;switch(j){case sC:A=(O,R)=>R(JSON.stringify(O)),_=(O,R)=>R(JSON.parse(O));break;case Rx:A=this.serializer.encode.bind(this.serializer),_=this.serializer.decode.bind(this.serializer);break;default:throw new Error(`Unsupported serializer version: ${k.vsn}`)}if(k.vsn=j,k.encode=(w=e?.encode)!==null&&w!==void 0?w:A,k.decode=(x=e?.decode)!==null&&x!==void 0?x:_,k.beforeReconnect=this._reconnectAuth.bind(this),(e?.logLevel||e?.log_level)&&(this.logLevel=e.logLevel||e.log_level,k.params=Object.assign(Object.assign({},k.params),{log_level:this.logLevel})),this.worker){if(typeof window<"u"&&!window.Worker)throw new Error("Web Worker is not supported");this.workerUrl=e?.workerUrl,k.autoSendHeartbeat=!this.worker}return k}async _reconnectAuth(){await this._waitForAuthIfNeeded(),this.isConnected()||this.connect()}}
38var ll=class extends Error{constructor(t,e){super(t),this.name="IcebergError",this.status=e.status,this.icebergType=e.icebergType,this.icebergCode=e.icebergCode,this.details=e.details,this.isCommitStateUnknown=e.icebergType==="CommitStateUnknownException"||[500,502,504].includes(e.status)&&e.icebergType?.includes("CommitState")===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function UC(t,e,n){const a=new URL(e,t);if(n)for(const[o,l]of Object.entries(n))l!==void 0&&a.searchParams.set(o,l);return a.toString()}async function IC(t){return!t||t.type==="none"?{}:t.type==="bearer"?{Authorization:`Bearer ${t.token}`}:t.type==="header"?{[t.name]:t.value}:t.type==="custom"?await t.getHeaders():{}}function BC(t){const e=t.fetchImpl??globalThis.fetch;return{async request({method:n,path:a,query:o,body:l,headers:u}){const h=UC(t.baseUrl,a,o),p=await IC(t.auth),m=await e(h,{method:n,headers:{...l?{"Content-Type":"application/json"}:{},...p,...u},body:l?JSON.stringify(l):void 0}),b=await m.text(),y=(m.headers.get("content-type")||"").includes("application/json"),w=y&&b?JSON.parse(b):b;if(!m.ok){const x=y?w:void 0,k=x?.error;throw new ll(k?.message??`Request failed with status ${m.status}`,{status:m.status,icebergType:k?.type,icebergCode:k?.code,details:x})}return{status:m.status,headers:m.headers,data:w}}}}function Gc(t){return t.join("�")}var zC=class{constructor(t,e=""){this.client=t,this.prefix=e}async listNamespaces(t){const e=t?{parent:Gc(t.namespace)}:void 0;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces`,query:e})).data.namespaces.map(a=>({namespace:a}))}async createNamespace(t,e){const n={namespace:t.namespace,properties:e?.properties};return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces`,body:n})).data}async dropNamespace(t){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${Gc(t.namespace)}`})}async loadNamespaceMetadata(t){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Gc(t.namespace)}`})).data.properties}}async namespaceExists(t){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${Gc(t.namespace)}`}),!0}catch(e){if(e instanceof ll&&e.status===404)return!1;throw e}}async createNamespaceIfNotExists(t,e){try{return await this.createNamespace(t,e)}catch(n){if(n instanceof ll&&n.status===409)return;throw n}}};function bi(t){return t.join("�")}var qC=class{constructor(t,e="",n){this.client=t,this.prefix=e,this.accessDelegation=n}async listTables(t){return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${bi(t.namespace)}/tables`})).data.identifiers}async createTable(t,e){const n={};return this.accessDelegation&&(n["X-Iceberg-Access-Delegation"]=this.accessDelegation),(await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${bi(t.namespace)}/tables`,body:e,headers:n})).data.metadata}async updateTable(t,e){const n=await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${bi(t.namespace)}/tables/${t.name}`,body:e});return{"metadata-location":n.data["metadata-location"],metadata:n.data.metadata}}async dropTable(t,e){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${bi(t.namespace)}/tables/${t.name}`,query:{purgeRequested:String(e?.purge??!1)}})}async loadTable(t){const e={};return this.accessDelegation&&(e["X-Iceberg-Access-Delegation"]=this.accessDelegation),(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${bi(t.namespace)}/tables/${t.name}`,headers:e})).data.metadata}async tableExists(t){const e={};this.accessDelegation&&(e["X-Iceberg-Access-Delegation"]=this.accessDelegation);try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${bi(t.namespace)}/tables/${t.name}`,headers:e}),!0}catch(n){if(n instanceof ll&&n.status===404)return!1;throw n}}async createTableIfNotExists(t,e){try{return await this.createTable(t,e)}catch(n){if(n instanceof ll&&n.status===409)return await this.loadTable({namespace:t.namespace,name:e.name});throw n}}},$C=class{constructor(t){let e="v1";t.catalogName&&(e+=`/${t.catalogName}`);const n=t.baseUrl.endsWith("/")?t.baseUrl:`${t.baseUrl}/`;this.client=BC({baseUrl:n,auth:t.auth,fetchImpl:t.fetch}),this.accessDelegation=t.accessDelegation?.join(","),this.namespaceOps=new zC(this.client,e),this.tableOps=new qC(this.client,e,this.accessDelegation)}async listNamespaces(t){return this.namespaceOps.listNamespaces(t)}async createNamespace(t,e){return this.namespaceOps.createNamespace(t,e)}async dropNamespace(t){await this.namespaceOps.dropNamespace(t)}async loadNamespaceMetadata(t){return this.namespaceOps.loadNamespaceMetadata(t)}async listTables(t){return this.tableOps.listTables(t)}
38async createTable(t,e){return this.tableOps.createTable(t,e)}async updateTable(t,e){return this.tableOps.updateTable(t,e)}async dropTable(t,e){await this.tableOps.dropTable(t,e)}async loadTable(t){return this.tableOps.loadTable(t)}async namespaceExists(t){return this.namespaceOps.namespaceExists(t)}async tableExists(t){return this.tableOps.tableExists(t)}async createNamespaceIfNotExists(t,e){return this.namespaceOps.createNamespaceIfNotExists(t,e)}async createTableIfNotExists(t,e){return this.tableOps.createTableIfNotExists(t,e)}};function cl(t){"@babel/helpers - typeof";return cl=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},cl(t)}function HC(t,e){if(cl(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var a=n.call(t,e);if(cl(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function VC(t){var e=HC(t,"string");return cl(e)=="symbol"?e:e+""}function FC(t,e,n){return(e=VC(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Yv(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,a)}return n}function xe(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Yv(Object(n),!0).forEach(function(a){FC(t,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Yv(Object(n)).forEach(function(a){Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(n,a))})}return t}var zu=class extends Error{constructor(t,e="storage",n,a){super(t),this.__isStorageError=!0,this.namespace=e,this.name=e==="vectors"?"StorageVectorsError":"StorageError",this.status=n,this.statusCode=a}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}};function qu(t){return typeof t=="object"&&t!==null&&"__isStorageError"in t}var Xf=class extends zu{constructor(t,e,n,a="storage"){super(t,a,e,n),this.name=a==="vectors"?"StorageVectorsApiError":"StorageApiError",this.status=e,this.statusCode=n}toJSON(){return xe({},super.toJSON())}},Dx=class extends zu{constructor(t,e,n="storage"){super(t,n),this.name=n==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=e}};function gu(t,e,n){const a=xe({},t),o=e.toLowerCase();for(const l of Object.keys(a))l.toLowerCase()===o&&delete a[l];return a[o]=n,a}function GC(t){const e={};for(const[n,a]of Object.entries(t))e[n.toLowerCase()]=a;return e}const KC=t=>t?(...e)=>t(...e):(...e)=>fetch(...e),YC=t=>{if(typeof t!="object"||t===null)return!1;const e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},ep=t=>{if(Array.isArray(t))return t.map(n=>ep(n));if(typeof t=="function"||t!==Object(t))return t;const e={};return Object.entries(t).forEach(([n,a])=>{const o=n.replace(/([-_][a-z])/gi,l=>l.toUpperCase().replace(/[-_]/g,""));e[o]=ep(a)}),e},WC=t=>!t||typeof t!="string"||t.length===0||t.length>100||t.trim()!==t||t.includes("/")||t.includes("\\")?!1:/^[\w!.\*'() &$@=;:+,?-]+$/.test(t),Wv=t=>{if(typeof t=="object"&&t!==null){const e=t;if(typeof e.msg=="string")return e.msg;if(typeof e.message=="string")return e.message;if(typeof e.error_description=="string")return e.error_description;if(typeof e.error=="string")return e.error;if(typeof e.error=="object"&&e.error!==null){const n=e.error;if(typeof n.message=="string")return n.message}}return JSON.stringify(t)},ZC=async(t,e,n,a)=>{if(t!==null&&typeof t=="object"&&"json"in t&&typeof t.json=="function"){const o=t;let l=parseInt(String(o.status),10);Number.isFinite(l)||(l=500),o.json().then(u=>{const h=u?.statusCode||u?.code||l+"";e(new Xf(Wv(u),l,h,a))}).catch(()=>{const u=l+"";e(new Xf(o.statusText||`HTTP ${l} error`,l,u,a))})}else e(new Dx(Wv(t),t,a))},JC=(t,e,n,a)=>{const o={method:t,headers:e?.headers||{}};if(t==="GET"||t==="HEAD"||!a)return xe(xe({},o),n);if(YC(a)){var l;const u=e?.headers||{};let h;for(const[p,m]of Object.entries(u))p.toLowerCase()==="content-type"&&(h=m);o.headers=gu(u,"Content-Type",(l=h)!==null&&l!==void 0?l:"application/json"),o.body=JSON.stringify(a)}else o.body=a;return e?.duplex&&(o.duplex=e.duplex),xe(xe({},o),n)};async function Ko(t,e,n,a,o,l,u){return new Promise((h,p)=>{t(n,JC(e,a,o,l)).then(m=>{if(!m.ok)throw m;if(a?.noResolveJson)return m;if(u==="vectors"){const b=m.headers.get("content-type");if(m.headers.get("content-length")==="0"||m.status===204)return{};if(!b||!b.includes("application/json"))return{}}return m.json()}).then(m=>h(m)).catch(m=>ZC(m,p,a,u))})}function Px(t="storage"){return{get:async(e,n,a,o)=>Ko(e,"GET",n,a,o,void 0,t),post:async(e,n,a,o,l)=>Ko(e,"POST",n,o,l,a,t),put:async(e,n,a,o,l)=>Ko(e,"PUT",n,o,l,a,t),head:async(e,n,a,o)=>Ko(e,"HEAD",n,xe(xe({},a),{},{noResolveJson:!0}),o,void 0,t),remove:async(e,n,a,o,l)=>Ko(e,"DELETE",n,o,l,a,t)}}const QC=Px("storage"),{get:ul,post:Jn,put:tp,head:XC,remove:Pp}=QC,An=Px("vectors");var Fi=class{constructor(t,e={},n,a="storage"){this.shouldThrowOnError=!1,this.url=t,this.headers=GC(e),this.fetch=KC(n),this.namespace=a}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(t,e){return this.headers=gu(this.headers,t,e),this}async handleOperation(t){var e=this;try{return{data:await t(),error:null}}catch(n){if(e.shouldThrowOnError)throw n;if(qu(n))return{data:null,error:n};throw n}}};let Lx;Lx=Symbol.toStringTag;var eO=class{constructor(t,e){this.downloadFn=t,this.shouldThrowOnError=e,this[Lx]="StreamDownloadBuilder",this.promise=null}
38then(t,e){return this.getPromise().then(t,e)}catch(t){return this.getPromise().catch(t)}finally(t){return this.getPromise().finally(t)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}async execute(){var t=this;try{return{data:(await t.downloadFn()).body,error:null}}catch(e){if(t.shouldThrowOnError)throw e;if(qu(e))return{data:null,error:e};throw e}}};let Ux;Ux=Symbol.toStringTag;var tO=class{constructor(t,e){this.downloadFn=t,this.shouldThrowOnError=e,this[Ux]="BlobDownloadBuilder",this.promise=null}asStream(){return new eO(this.downloadFn,this.shouldThrowOnError)}then(t,e){return this.getPromise().then(t,e)}catch(t){return this.getPromise().catch(t)}finally(t){return this.getPromise().finally(t)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}async execute(){var t=this;try{return{data:await(await t.downloadFn()).blob(),error:null}}catch(e){if(t.shouldThrowOnError)throw e;if(qu(e))return{data:null,error:e};throw e}}};const nO={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},Zv={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};var rO=class extends Fi{constructor(t,e={},n,a){super(t,e,a,"storage"),this.bucketId=n}async uploadOrUpdate(t,e,n,a){var o=this;return o.handleOperation(async()=>{let l;const u=xe(xe({},Zv),a);let h=xe(xe({},o.headers),t==="POST"&&{"x-upsert":String(u.upsert)});const p=u.metadata;if(typeof Blob<"u"&&n instanceof Blob?(l=new FormData,l.append("cacheControl",u.cacheControl),p&&l.append("metadata",o.encodeMetadata(p)),l.append("",n)):typeof FormData<"u"&&n instanceof FormData?(l=n,l.has("cacheControl")||l.append("cacheControl",u.cacheControl),p&&!l.has("metadata")&&l.append("metadata",o.encodeMetadata(p))):(l=n,h["cache-control"]=`max-age=${u.cacheControl}`,h["content-type"]=u.contentType,p&&(h["x-metadata"]=o.toBase64(o.encodeMetadata(p))),(typeof ReadableStream<"u"&&l instanceof ReadableStream||l&&typeof l=="object"&&"pipe"in l&&typeof l.pipe=="function")&&!u.duplex&&(u.duplex="half")),a?.headers)for(const[w,x]of Object.entries(a.headers))h=gu(h,w,x);const m=o._removeEmptyFolders(e),b=o._getFinalPath(m),y=await(t=="PUT"?tp:Jn)(o.fetch,`${o.url}/object/${b}`,l,xe({headers:h},u?.duplex?{duplex:u.duplex}:{}));return{path:m,id:y.Id,fullPath:y.Key}})}async upload(t,e,n){return this.uploadOrUpdate("POST",t,e,n)}async uploadToSignedUrl(t,e,n,a){var o=this;const l=o._removeEmptyFolders(t),u=o._getFinalPath(l),h=new URL(o.url+`/object/upload/sign/${u}`);return h.searchParams.set("token",e),o.handleOperation(async()=>{let p;const m=xe(xe({},Zv),a);let b=xe(xe({},o.headers),{"x-upsert":String(m.upsert)});const y=m.metadata;if(typeof Blob<"u"&&n instanceof Blob?(p=new FormData,p.append("cacheControl",m.cacheControl),y&&p.append("metadata",o.encodeMetadata(y)),p.append("",n)):typeof FormData<"u"&&n instanceof FormData?(p=n,p.has("cacheControl")||p.append("cacheControl",m.cacheControl),y&&!p.has("metadata")&&p.append("metadata",o.encodeMetadata(y))):(p=n,b["cache-control"]=`max-age=${m.cacheControl}`,b["content-type"]=m.contentType,y&&(b["x-metadata"]=o.toBase64(o.encodeMetadata(y))),(typeof ReadableStream<"u"&&p instanceof ReadableStream||p&&typeof p=="object"&&"pipe"in p&&typeof p.pipe=="function")&&!m.duplex&&(m.duplex="half")),a?.headers)for(const[w,x]of Object.entries(a.headers))b=gu(b,w,x);return{path:l,fullPath:(await tp(o.fetch,h.toString(),p,xe({headers:b},m?.duplex?{duplex:m.duplex}:{}))).Key}})}async createSignedUploadUrl(t,e){var n=this;return n.handleOperation(async()=>{let a=n._getFinalPath(t);const o=xe({},n.headers);e?.upsert&&(o["x-upsert"]="true");const l=await Jn(n.fetch,`${n.url}/object/upload/sign/${a}`,{},{headers:o}),u=new URL(n.url+l.url),h=u.searchParams.get("token");if(!h)throw new zu("No token returned by API");return{signedUrl:u.toString(),path:t,token:h}})}async update(t,e,n){return this.uploadOrUpdate("PUT",t,e,n)}async move(t,e,n){var a=this;return a.handleOperation(async()=>await Jn(a.fetch,`${a.url}/object/move`,{bucketId:a.bucketId,sourceKey:t,destinationKey:e,destinationBucket:n?.destinationBucket},{headers:a.headers}))}async copy(t,e,n){var a=this;return a.handleOperation(async()=>({path:(await Jn(a.fetch,`${a.url}/object/copy`,{bucketId:a.bucketId,sourceKey:t,destinationKey:e,destinationBucket:n?.destinationBucket},{headers:a.headers})).Key}))}async createSignedUrl(t,e,n){var a=this;return a.handleOperation(async()=>{let o=a._getFinalPath(t);const l=typeof n?.transform=="object"&&n.transform!==null&&Object.keys(n.transform).length>0;let u=await Jn(a.fetch,`${a.url}/object/sign/${o}
38`,xe({expiresIn:e},l?{transform:n.transform}:{}),{headers:a.headers});const h=new URLSearchParams;n?.download&&h.set("download",n.download===!0?"":n.download),n?.cacheNonce!=null&&h.set("cacheNonce",String(n.cacheNonce));const p=h.toString();return{signedUrl:encodeURI(`${a.url}${u.signedURL}${p?`&${p}`:""}`)}})}async createSignedUrls(t,e,n){var a=this;return a.handleOperation(async()=>{const o=await Jn(a.fetch,`${a.url}/object/sign/${a.bucketId}`,{expiresIn:e,paths:t},{headers:a.headers}),l=new URLSearchParams;n?.download&&l.set("download",n.download===!0?"":n.download),n?.cacheNonce!=null&&l.set("cacheNonce",String(n.cacheNonce));const u=l.toString();return o.map(h=>xe(xe({},h),{},{signedUrl:h.signedURL?encodeURI(`${a.url}${h.signedURL}${u?`&${u}`:""}`):null}))})}download(t,e,n){const a=typeof e?.transform=="object"&&e.transform!==null&&Object.keys(e.transform).length>0?"render/image/authenticated":"object",o=new URLSearchParams;e?.transform&&this.applyTransformOptsToQuery(o,e.transform),e?.cacheNonce!=null&&o.set("cacheNonce",String(e.cacheNonce));const l=o.toString(),u=this._getFinalPath(t),h=()=>ul(this.fetch,`${this.url}/${a}/${u}${l?`?${l}`:""}`,{headers:this.headers,noResolveJson:!0},n);return new tO(h,this.shouldThrowOnError)}async info(t){var e=this;const n=e._getFinalPath(t);return e.handleOperation(async()=>ep(await ul(e.fetch,`${e.url}/object/info/${n}`,{headers:e.headers})))}async exists(t){var e=this;const n=e._getFinalPath(t);try{return await XC(e.fetch,`${e.url}/object/${n}`,{headers:e.headers}),{data:!0,error:null}}catch(o){if(e.shouldThrowOnError)throw o;if(qu(o)){var a;const l=o instanceof Xf?o.status:o instanceof Dx?(a=o.originalError)===null||a===void 0?void 0:a.status:void 0;if(l!==void 0&&[400,404].includes(l))return{data:!1,error:o}}throw o}}getPublicUrl(t,e){const n=this._getFinalPath(t),a=new URLSearchParams;e?.download&&a.set("download",e.download===!0?"":e.download),e?.transform&&this.applyTransformOptsToQuery(a,e.transform),e?.cacheNonce!=null&&a.set("cacheNonce",String(e.cacheNonce));const o=a.toString(),l=typeof e?.transform=="object"&&e.transform!==null&&Object.keys(e.transform).length>0?"render/image":"object";return{data:{publicUrl:encodeURI(`${this.url}/${l}/public/${n}`)+(o?`?${o}`:"")}}}async remove(t){var e=this;return e.handleOperation(async()=>await Pp(e.fetch,`${e.url}/object/${e.bucketId}`,{prefixes:t},{headers:e.headers}))}async list(t,e,n){var a=this;return a.handleOperation(async()=>{const o=xe(xe(xe({},nO),e),{},{prefix:t||""});return await Jn(a.fetch,`${a.url}/object/list/${a.bucketId}`,o,{headers:a.headers},n)})}async listV2(t,e){var n=this;return n.handleOperation(async()=>{const a=xe({},t);return await Jn(n.fetch,`${n.url}/object/list-v2/${n.bucketId}`,a,{headers:n.headers},e)})}encodeMetadata(t){return JSON.stringify(t)}toBase64(t){return typeof Buffer<"u"?Buffer.from(t).toString("base64"):btoa(t)}_getFinalPath(t){return`${this.bucketId}/${t.replace(/^\/+/,"")}`}_removeEmptyFolders(t){return t.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}applyTransformOptsToQuery(t,e){return e.width&&t.set("width",e.width.toString()),e.height&&t.set("height",e.height.toString()),e.resize&&t.set("resize",e.resize),e.format&&t.set("format",e.format),e.quality&&t.set("quality",e.quality.toString()),t}};const sO="2.106.0",_l={"X-Client-Info":`storage-js/${sO}`};var aO=class extends Fi{constructor(t,e={},n,a){const o=new URL(t);a?.useNewHostname&&/supabase\.(co|in|red)$/.test(o.hostname)&&!o.hostname.includes("storage.supabase.")&&(o.hostname=o.hostname.replace("supabase.","storage.supabase."));const l=o.href.replace(/\/$/,""),u=xe(xe({},_l),e);super(l,u,n,"storage")}async listBuckets(t){var e=this;return e.handleOperation(async()=>{const n=e.listBucketOptionsToQueryString(t);return await ul(e.fetch,`${e.url}/bucket${n}`,{headers:e.headers})})}async getBucket(t){var e=this;return e.handleOperation(async()=>await ul(e.fetch,`${e.url}/bucket/${t}`,{headers:e.headers}))}async createBucket(t,e={public:!1}){var n=this;return n.handleOperation(async()=>await Jn(n.fetch,`${n.url}/bucket`,{id:t,name:t,type:e.type,public:e.public,file_size_limit:e.fileSizeLimit,allowed_mime_types:e.allowedMimeTypes},{headers:n.headers}))}async updateBucket(t,e){var n=this;return n.handleOperation(async()=>await tp(n.fetch,`${n.url}/bucket/${t}`,{id:t,name:t,public:e.public,file_size_limit:e.fileSizeLimit,allowed_mime_types:e.allowedMimeTypes},{headers:n.headers}))}async emptyBucket(t){var e=this;return e.handleOperation(async()=>await Jn(e.fetch,`${e.url}/bucket/${t}/empty`,{},{headers:e.headers}))}async deleteBucket(t){var e=this;return e.handleOperation(async()=>await Pp(e.fetch,`${e.url}/bucket/${t}`,{},{headers:e.headers}))}listBucketOptionsToQueryString(t){const e={};return t&&("limit"in t&&(e.limit=String(t.limit)),"offset"in t&&(e.offset=String(t.offset)),t.search&&(e.search=t.search),t.sortColumn&&(e.sortColumn=t.sortColumn),t.sortOrder&&(e.sortOrder=t.sortOrder)),Object.keys(e).length>0?"?"+new URLSearchParams(e).toString():""}},iO=class extends Fi{constructor(t,e={},n){const a=t.replace(/\/$/,""),o=xe(xe({},_l),e);super(a,o,n,"storage")}async createBucket(t){var e=this;return e.handleOperation(async()=>await Jn(e.fetch,`${e.url}/bucket`,{name:t},{headers:e.headers}))}async listBuckets(t){var e=this;return e.handleOperation(async()=>{const n=new URLSearchParams;t?.limit!==void 0&&n.set("limit",t.limit.toString()),t?.offset!==void 0&&n.set("offset",t.offset.toString()),t?.sortColumn&&n.set("sortColumn",t.sortColumn),t?.sortOrder&&n.set("sortOrder",t.sortOrder),t?.search&&n.set("search",t.search);const a=n.toString(),o=a?`${e.url}/bucket?${a}`:`${e.url}/bucket`;return await ul(e.fetch,o,{headers:e.headers})})}async deleteBucket(t){var e=this;return e.handleOperation(async()=>await Pp(e.fetch,`${e.url}/bucket/${t}`,{},{headers:e.headers}))}from(t){var e=this;if(!WC(t))throw new zu("Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.");const n=new $C({baseUrl:this.url,catalogName:t,auth:{type:"custom",getHeaders:async()=>e.headers},fetch:this.fetch}),a=this.shouldThrowOnError;return new Proxy(n,{get(o,l){const u=o[l];return typeof u!="function"?u:async(...h)=>{try{return{data:await u.apply(o,h),error:null}}catch(p){if(a)throw p;return{data:null,error:p}}}}})}},oO=class extends Fi{constructor(t,e={},n){const a=t.replace(/\/$/,""),o=xe(xe({},_l),{},{"Content-Type":"application/json"},e);super(a,o,n,"vectors")}async createIndex(t){var e=this;return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/CreateIndex`,t,{headers:e.headers})||{})}async getIndex(t,e){var n=this;return n.handleOperation(async()=>await An.post(n.fetch,`${n.url}/GetIndex`,{vectorBucketName:t,indexName:e},{headers:n.headers}))}async listIndexes(t){var e=this;return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/ListIndexes`,t,{headers:e.headers}))}async deleteIndex(t,e){var n=this;return n.handleOperation(async()=>await An.post(n.fetch,`${n.url}/DeleteIndex`,{vectorBucketName:t,indexName:e},{headers:n.headers})||{})}}
38,lO=class extends Fi{constructor(t,e={},n){const a=t.replace(/\/$/,""),o=xe(xe({},_l),{},{"Content-Type":"application/json"},e);super(a,o,n,"vectors")}async putVectors(t){var e=this;if(t.vectors.length<1||t.vectors.length>500)throw new Error("Vector batch size must be between 1 and 500 items");return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/PutVectors`,t,{headers:e.headers})||{})}async getVectors(t){var e=this;return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/GetVectors`,t,{headers:e.headers}))}async listVectors(t){var e=this;if(t.segmentCount!==void 0){if(t.segmentCount<1||t.segmentCount>16)throw new Error("segmentCount must be between 1 and 16");if(t.segmentIndex!==void 0&&(t.segmentIndex<0||t.segmentIndex>=t.segmentCount))throw new Error(`segmentIndex must be between 0 and ${t.segmentCount-1}`)}return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/ListVectors`,t,{headers:e.headers}))}async queryVectors(t){var e=this;return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/QueryVectors`,t,{headers:e.headers}))}async deleteVectors(t){var e=this;if(t.keys.length<1||t.keys.length>500)throw new Error("Keys batch size must be between 1 and 500 items");return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/DeleteVectors`,t,{headers:e.headers})||{})}},cO=class extends Fi{constructor(t,e={},n){const a=t.replace(/\/$/,""),o=xe(xe({},_l),{},{"Content-Type":"application/json"},e);super(a,o,n,"vectors")}async createBucket(t){var e=this;return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/CreateVectorBucket`,{vectorBucketName:t},{headers:e.headers})||{})}async getBucket(t){var e=this;return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/GetVectorBucket`,{vectorBucketName:t},{headers:e.headers}))}async listBuckets(t={}){var e=this;return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/ListVectorBuckets`,t,{headers:e.headers}))}async deleteBucket(t){var e=this;return e.handleOperation(async()=>await An.post(e.fetch,`${e.url}/DeleteVectorBucket`,{vectorBucketName:t},{headers:e.headers})||{})}},uO=class extends cO{constructor(t,e={}){super(t,e.headers||{},e.fetch)}from(t){return new dO(this.url,this.headers,t,this.fetch)}async createBucket(t){var e=()=>super.createBucket,n=this;return e().call(n,t)}async getBucket(t){var e=()=>super.getBucket,n=this;return e().call(n,t)}async listBuckets(t={}){var e=()=>super.listBuckets,n=this;return e().call(n,t)}async deleteBucket(t){var e=()=>super.deleteBucket,n=this;return e().call(n,t)}},dO=class extends oO{constructor(t,e,n,a){super(t,e,a),this.vectorBucketName=n}async createIndex(t){var e=()=>super.createIndex,n=this;return e().call(n,xe(xe({},t),{},{vectorBucketName:n.vectorBucketName}))}async listIndexes(t={}){var e=()=>super.listIndexes,n=this;return e().call(n,xe(xe({},t),{},{vectorBucketName:n.vectorBucketName}))}async getIndex(t){var e=()=>super.getIndex,n=this;return e().call(n,n.vectorBucketName,t)}async deleteIndex(t){var e=()=>super.deleteIndex,n=this;return e().call(n,n.vectorBucketName,t)}index(t){return new hO(this.url,this.headers,this.vectorBucketName,t,this.fetch)}},hO=class extends lO{constructor(t,e,n,a,o){super(t,e,o),this.vectorBucketName=n,this.indexName=a}async putVectors(t){var e=()=>super.putVectors,n=this;return e().call(n,xe(xe({},t),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async getVectors(t){var e=()=>super.getVectors,n=this;return e().call(n,xe(xe({},t),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async listVectors(t={}){var e=()=>super.listVectors,n=this;return e().call(n,xe(xe({},t),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async queryVectors(t){var e=()=>super.queryVectors,n=this;return e().call(n,xe(xe({},t),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async deleteVectors(t){var e=()=>super.deleteVectors,n=this;return e().call(n,xe(xe({},t),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}},fO=class extends aO{constructor(t,e={},n,a){super(t,e,n,a)}from(t){return new rO(this.url,this.headers,t,this.fetch)}get vectors(){return new uO(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new iO(this.url+"/iceberg",this.headers,this.fetch)}};const Ix="2.106.0",Ri=30*1e3,np=3,Af=np*Ri,pO="http://localhost:9999",mO="supabase.auth.token",gO={"X-Client-Info":`gotrue-js/${Ix}`},rp="X-Supabase-Api-Version",Bx={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},yO=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,bO=600*1e3;
38class dl extends Error{constructor(e,n,a){super(e),this.__isAuthError=!0,this.name="AuthError",this.status=n,this.code=a}toJSON(){return{name:this.name,message:this.message,status:this.status,code:this.code}}}function oe(t){return typeof t=="object"&&t!==null&&"__isAuthError"in t}class vO extends dl{constructor(e,n,a){super(e,n,a),this.name="AuthApiError",this.status=n,this.code=a}}function wO(t){return oe(t)&&t.name==="AuthApiError"}class Xn extends dl{constructor(e,n){super(e),this.name="AuthUnknownError",this.originalError=n}}class Kr extends dl{constructor(e,n,a,o){super(e,a,o),this.name=n,this.status=a}}class It extends Kr{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function Kc(t){return oe(t)&&t.name==="AuthSessionMissingError"}class vi extends Kr{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Yc extends Kr{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class Wc extends Kr{constructor(e,n=null){super(e,"AuthImplicitGrantRedirectError",500,void 0),this.details=null,this.details=n}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{details:this.details})}}function xO(t){return oe(t)&&t.name==="AuthImplicitGrantRedirectError"}class Jv extends Kr{constructor(e,n=null){super(e,"AuthPKCEGrantCodeExchangeError",500,void 0),this.details=null,this.details=n}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{details:this.details})}}class kO extends Kr{constructor(){super("PKCE code verifier not found in storage. This can happen if the auth flow was initiated in a different browser or device, or if the storage was cleared. For SSR frameworks (Next.js, SvelteKit, etc.), use @supabase/ssr on both the server and client to store the code verifier in cookies.","AuthPKCECodeVerifierMissingError",400,"pkce_code_verifier_not_found")}}class sp extends Kr{constructor(e,n){super(e,"AuthRetryableFetchError",n,void 0)}}function Ef(t){return oe(t)&&t.name==="AuthRetryableFetchError"}class Qv extends Kr{constructor(e,n,a){super(e,"AuthWeakPasswordError",n,"weak_password"),this.reasons=a}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{reasons:this.reasons})}}class ap extends Kr{constructor(e){super(e,"AuthInvalidJwtError",400,"invalid_jwt")}}const yu="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),Xv=` 39\r=`.split(""),_O=(()=>{const t=new Array(128);for(let e=0;e<t.length;e+=1)t[e]=-1;for(let e=0;e<Xv.length;e+=1)t[Xv[e].charCodeAt(0)]=-2;for(let e=0;e<yu.length;e+=1)t[yu[e].charCodeAt(0)]=e;return t})();function ew(t,e,n){if(t!==null)for(e.queue=e.queue<<8|t,e.queuedBits+=8;e.queuedBits>=6;){const a=e.queue>>e.queuedBits-6&63;n(yu[a]),e.queuedBits-=6}else if(e.queuedBits>0)for(e.queue=e.queue<<6-e.queuedBits,e.queuedBits=6;e.queuedBits>=6;){const a=e.queue>>e.queuedBits-6&63;n(yu[a]),e.queuedBits-=6}}function zx(t,e,n){const a=_O[t];if(a>-1)for(e.queue=e.queue<<6|a,e.queuedBits+=6;e.queuedBits>=8;)n(e.queue>>e.queuedBits-8&255),e.queuedBits-=8;else{if(a===-2)return;throw new Error(`Invalid Base64-URL character "${String.fromCharCode(t)}"`)}}function tw(t){const e=[],n=u=>{e.push(String.fromCodePoint(u))},a={utf8seq:0,codepoint:0},o={queue:0,queuedBits:0},l=u=>{TO(u,a,n)};for(let u=0;u<t.length;u+=1)zx(t.charCodeAt(u),o,l);return e.join("")}function SO(t,e){if(t<=127){e(t);return}else if(t<=2047){e(192|t>>6),e(128|t&63);return}else if(t<=65535){e(224|t>>12),e(128|t>>6&63),e(128|t&63);return}else if(t<=1114111){e(240|t>>18),e(128|t>>12&63),e(128|t>>6&63),e(128|t&63);return}throw new Error(`Unrecognized Unicode codepoint: ${t.toString(16)}`)}function jO(t,e){for(let n=0;n<t.length;n+=1){let a=t.charCodeAt(n);if(a>55295&&a<=56319){const o=(a-55296)*1024&65535;a=(t.charCodeAt(n+1)-56320&65535|o)+65536,n+=1}SO(a,e)}}function TO(t,e,n){if(e.utf8seq===0){if(t<=127){n(t);return}for(let a=1;a<6;a+=1)if((t>>7-a&1)===0){e.utf8seq=a;break}if(e.utf8seq===2)e.codepoint=t&31;else if(e.utf8seq===3)e.codepoint=t&15;else if(e.utf8seq===4)e.codepoint=t&7;else throw new Error("Invalid UTF-8 sequence");e.utf8seq-=1}else if(e.utf8seq>0){if(t<=127)throw new Error("Invalid UTF-8 sequence");e.codepoint=e.codepoint<<6|t&63,e.utf8seq-=1,e.utf8seq===0&&n(e.codepoint)}}function Ii(t){const e=[],n={queue:0,queuedBits:0},a=o=>{e.push(o)};for(let o=0;o<t.length;o+=1)zx(t.charCodeAt(o),n,a);return new Uint8Array(e)}function AO(t){const e=[];return jO(t,n=>e.push(n)),new Uint8Array(e)}function wa(t){const e=[],n={queue:0,queuedBits:0},a=o=>{e.push(o)};return t.forEach(o=>ew(o,n,a)),ew(null,n,a),e.join("")}function EO(t){return Math.round(Date.now()/1e3)+t}function RO(){return Symbol("auth-callback")}const Yt=()=>typeof window<"u"&&typeof document<"u",fa={tested:!1,writable:!1},qx=()=>
39{if(!Yt())return!1;try{if(typeof globalThis.localStorage!="object")return!1}catch{return!1}if(fa.tested)return fa.writable;const t=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(t,t),globalThis.localStorage.removeItem(t),fa.tested=!0,fa.writable=!0}catch{fa.tested=!0,fa.writable=!1}return fa.writable};function CO(t){const e={},n=new URL(t);if(n.hash&&n.hash[0]==="#")try{new URLSearchParams(n.hash.substring(1)).forEach((o,l)=>{e[l]=o})}catch{}return n.searchParams.forEach((a,o)=>{e[o]=a}),e}const $x=t=>t?(...e)=>t(...e):(...e)=>fetch(...e),OO=t=>typeof t=="object"&&t!==null&&"status"in t&&"ok"in t&&"json"in t&&typeof t.json=="function",Ci=async(t,e,n)=>{await t.setItem(e,JSON.stringify(n))},pa=async(t,e)=>{const n=await t.getItem(e);if(!n)return null;try{return JSON.parse(n)}catch{return null}},Kt=async(t,e)=>{await t.removeItem(e)};class $u{constructor(){this.promise=new $u.promiseConstructor((e,n)=>{this.resolve=e,this.reject=n})}}$u.promiseConstructor=Promise;function Zc(t){const e=t.split(".");if(e.length!==3)throw new ap("Invalid JWT structure");for(let a=0;a<e.length;a++)if(!yO.test(e[a]))throw new ap("JWT not in base64url format");return{header:JSON.parse(tw(e[0])),payload:JSON.parse(tw(e[1])),signature:Ii(e[2]),raw:{header:e[0],payload:e[1]}}}async function NO(t){return await new Promise(e=>{setTimeout(()=>e(null),t)})}function MO(t,e){return new Promise((a,o)=>{(async()=>{for(let l=0;l<1/0;l++)try{const u=await t(l);if(!e(l,null,u)){a(u);return}}catch(u){if(!e(l,u)){o(u);return}}})()})}function DO(t){return("0"+t.toString(16)).substr(-2)}function PO(){const e=new Uint32Array(56);if(typeof crypto>"u"){const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",a=n.length;let o="";for(let l=0;l<56;l++)o+=n.charAt(Math.floor(Math.random()*a));return o}return crypto.getRandomValues(e),Array.from(e,DO).join("")}async function LO(t){const n=new TextEncoder().encode(t),a=await crypto.subtle.digest("SHA-256",n),o=new Uint8Array(a);return Array.from(o).map(l=>String.fromCharCode(l)).join("")}async function UO(t){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),t;const n=await LO(t);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function wi(t,e,n=!1){const a=PO();let o=a;n&&(o+="/recovery"),await Ci(t,`${e}-code-verifier`,o);const l=await UO(a);return[l,a===l?"plain":"s256"]}const IO=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function BO(t){const e=t.headers.get(rp);if(!e||!e.match(IO))return null;try{return new Date(`${e}T00:00:00.0Z`)}catch{return null}}function zO(t){if(!t)throw new Error("Missing exp claim");const e=Math.floor(Date.now()/1e3);if(t<=e)throw new Error("JWT has expired")}function qO(t){switch(t){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:{name:"SHA-256"}};default:throw new Error("Invalid alg claim")}}const $O=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function Ir(t){if(!$O.test(t))throw new Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function Zn(t){if(!t.passkey)throw new Error("@supabase/auth-js: the passkey API is experimental and disabled by default. Enable it by passing `auth: { experimental: { passkey: true } }` to createClient (or to the GoTrueClient constructor).")}function Rf(){const t={};return new Proxy(t,{get:(e,n)=>{if(n==="__isUserNotAvailableProxy")return!0;if(typeof n=="symbol"){const a=n.toString();if(a==="Symbol(Symbol.toPrimitive)"||a==="Symbol(Symbol.toStringTag)"||a==="Symbol(util.inspect.custom)")return}throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${n}" property of the session object is not supported. Please use getUser() instead.`)},set:(e,n)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${n}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)},deleteProperty:(e,n)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${n}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)}})}function HO(t,e){return new Proxy(t,{get:(n,a,o)=>
39{if(a==="__isInsecureUserWarningProxy")return!0;if(typeof a=="symbol"){const l=a.toString();if(l==="Symbol(Symbol.toPrimitive)"||l==="Symbol(Symbol.toStringTag)"||l==="Symbol(util.inspect.custom)"||l==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(n,a,o)}return!e.value&&typeof a=="string"&&(console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),e.value=!0),Reflect.get(n,a,o)}})}function nw(t){return JSON.parse(JSON.stringify(t))}const ga=t=>{if(typeof t=="object"&&t!==null){const e=t;if(typeof e.msg=="string")return e.msg;if(typeof e.message=="string")return e.message;if(typeof e.error_description=="string")return e.error_description;if(typeof e.error=="string")return e.error}return JSON.stringify(t)},VO=[502,503,504,520,521,522,523,524,530];async function rw(t){var e;if(!OO(t))throw new sp(ga(t),0);if(VO.includes(t.status))throw new sp(ga(t),t.status);let n;try{n=await t.json()}catch(l){throw new Xn(ga(l),l)}let a;const o=BO(t);if(o&&o.getTime()>=Bx["2024-01-01"].timestamp&&typeof n=="object"&&n&&typeof n.code=="string"?a=n.code:typeof n=="object"&&n&&typeof n.error_code=="string"&&(a=n.error_code),a){if(a==="weak_password")throw new Qv(ga(n),t.status,((e=n.weak_password)===null||e===void 0?void 0:e.reasons)||[]);if(a==="session_not_found")throw new It}else if(typeof n=="object"&&n&&typeof n.weak_password=="object"&&n.weak_password&&Array.isArray(n.weak_password.reasons)&&n.weak_password.reasons.length&&n.weak_password.reasons.reduce((l,u)=>l&&typeof u=="string",!0))throw new Qv(ga(n),t.status,n.weak_password.reasons);throw new vO(ga(n),t.status||500,a)}const FO=(t,e,n,a)=>{const o={method:t,headers:e?.headers||{}};return t==="GET"?o:(o.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},e?.headers),o.body=JSON.stringify(a),Object.assign(Object.assign({},o),n))};async function he(t,e,n,a){var o;const l=Object.assign({},a?.headers);l[rp]||(l[rp]=Bx["2024-01-01"].name),a?.jwt&&(l.Authorization=`Bearer ${a.jwt}`);const u=(o=a?.query)!==null&&o!==void 0?o:{};a?.redirectTo&&(u.redirect_to=a.redirectTo);const h=Object.keys(u).length?"?"+new URLSearchParams(u).toString():"",p=await GO(t,e,n+h,{headers:l,noResolveJson:a?.noResolveJson},{},a?.body);return a?.xform?a?.xform(p):{data:Object.assign({},p),error:null}}async function GO(t,e,n,a,o,l){const u=FO(e,a,o,l);let h;try{h=await t(n,Object.assign({},u))}catch(p){throw console.error(p),new sp(ga(p),0)}if(h.ok||await rw(h),a?.noResolveJson)return h;try{return await h.json()}catch(p){await rw(p)}}function qn(t){var e;let n=null;WO(t)&&(n=Object.assign({},t),t.expires_at||(n.expires_at=EO(t.expires_in)));const a=(e=t.user)!==null&&e!==void 0?e:null;return{data:{session:n,user:a},error:null}}function sw(t){const e=qn(t);return!e.error&&t.weak_password&&typeof t.weak_password=="object"&&Array.isArray(t.weak_password.reasons)&&t.weak_password.reasons.length&&t.weak_password.message&&typeof t.weak_password.message=="string"&&t.weak_password.reasons.reduce((n,a)=>n&&typeof a=="string",!0)&&(e.data.weak_password=t.weak_password),e}function Ts(t){var e;return{data:{user:(e=t.user)!==null&&e!==void 0?e:t},error:null}}function KO(t){return{data:t,error:null}}function YO(t){const{action_link:e,email_otp:n,hashed_token:a,redirect_to:o,verification_type:l}=t,u=Bu(t,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),h={action_link:e,email_otp:n,hashed_token:a,redirect_to:o,verification_type:l},p=Object.assign({},u);return{data:{properties:h,user:p},error:null}}function aw(t){return t}function WO(t){return!!t.access_token&&!!t.refresh_token&&!!t.expires_in}const Cf=["global","local","others"];class ZO{constructor({url:e="",headers:n={},fetch:a,experimental:o}){this.url=e,this.headers=n,this.fetch=$x(a),this.experimental=o??{},this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)},this.oauth={listClients:this._listOAuthClients.bind(this),createClient:this._createOAuthClient.bind(this),getClient:this._getOAuthClient.bind(this),updateClient:this._updateOAuthClient.bind(this),deleteClient:this._deleteOAuthClient.bind(this),regenerateClientSecret:this._regenerateOAuthClientSecret.bind(this)},this.customProviders={listProviders:this._listCustomProviders.bind(this),createProvider:this._createCustomProvider.bind(this),getProvider:this._getCustomProvider.bind(this),updateProvider:this._updateCustomProvider.bind(this),deleteProvider:this._deleteCustomProvider.bind(this)},this.passkey={listPasskeys:this._adminListPasskeys.bind(this),deletePasskey:this._adminDeletePasskey.bind(this)}}
39async signOut(e,n=Cf[0]){if(Cf.indexOf(n)<0)throw new Error(`@supabase/auth-js: Parameter scope must be one of ${Cf.join(", ")}`);try{return await he(this.fetch,"POST",`${this.url}/logout?scope=${n}`,{headers:this.headers,jwt:e,noResolveJson:!0}),{data:null,error:null}}catch(a){if(oe(a))return{data:null,error:a};throw a}}async inviteUserByEmail(e,n={}){try{return await he(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:n.data},headers:this.headers,redirectTo:n.redirectTo,xform:Ts})}catch(a){if(oe(a))return{data:{user:null},error:a};throw a}}async generateLink(e){try{const{options:n}=e,a=Bu(e,["options"]),o=Object.assign(Object.assign({},a),n);return"newEmail"in a&&(o.new_email=a?.newEmail,delete o.newEmail),await he(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:o,headers:this.headers,xform:YO,redirectTo:n?.redirectTo})}catch(n){if(oe(n))return{data:{properties:null,user:null},error:n};throw n}}async createUser(e){try{return await he(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:Ts})}catch(n){if(oe(n))return{data:{user:null},error:n};throw n}}async listUsers(e){var n,a,o,l,u,h,p;try{const m={nextPage:null,lastPage:0,total:0},b=await he(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(a=(n=e?.page)===null||n===void 0?void 0:n.toString())!==null&&a!==void 0?a:"",per_page:(l=(o=e?.perPage)===null||o===void 0?void 0:o.toString())!==null&&l!==void 0?l:""},xform:aw});if(b.error)throw b.error;const y=await b.json(),w=(u=b.headers.get("x-total-count"))!==null&&u!==void 0?u:0,x=(p=(h=b.headers.get("link"))===null||h===void 0?void 0:h.split(","))!==null&&p!==void 0?p:[];return x.length>0&&(x.forEach(k=>{const A=parseInt(k.split(";")[0].split("=")[1].substring(0,1)),_=JSON.parse(k.split(";")[1].split("=")[1]);m[`${_}Page`]=A}),m.total=parseInt(w)),{data:Object.assign(Object.assign({},y),m),error:null}}catch(m){if(oe(m))return{data:{users:[]},error:m};throw m}}async getUserById(e){Ir(e);try{return await he(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:Ts})}catch(n){if(oe(n))return{data:{user:null},error:n};throw n}}async updateUserById(e,n){Ir(e);try{return await he(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:n,headers:this.headers,xform:Ts})}catch(a){if(oe(a))return{data:{user:null},error:a};throw a}}async deleteUser(e,n=!1){Ir(e);try{return await he(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:n},xform:Ts})}catch(a){if(oe(a))return{data:{user:null},error:a};throw a}}async _listFactors(e){Ir(e.userId);try{const{data:n,error:a}=await he(this.fetch,"GET",`${this.url}/admin/users/${e.userId}/factors`,{headers:this.headers,xform:o=>({data:{factors:o},error:null})});return{data:n,error:a}}catch(n){if(oe(n))return{data:null,error:n};throw n}}async _deleteFactor(e){Ir(e.userId),Ir(e.id);try{return{data:await he(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/factors/${e.id}`,{headers:this.headers}),error:null}}catch(n){if(oe(n))return{data:null,error:n};throw n}}async _listOAuthClients(e){var n,a,o,l,u,h,p;try{const m={nextPage:null,lastPage:0,total:0},b=await he(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(a=(n=e?.page)===null||n===void 0?void 0:n.toString())!==null&&a!==void 0?a:"",per_page:(l=(o=e?.perPage)===null||o===void 0?void 0:o.toString())!==null&&l!==void 0?l:""},xform:aw});if(b.error)throw b.error;const y=await b.json(),w=(u=b.headers.get("x-total-count"))!==null&&u!==void 0?u:0,x=(p=(h=b.headers.get("link"))===null||h===void 0?void 0:h.split(","))!==null&&p!==void 0?p:[];return x.length>0&&(x.forEach(k=>{const A=parseInt(k.split(";")[0].split("=")[1].substring(0,1)),_=JSON.parse(k.split(";")[1].split("=")[1]);m[`${_}Page`]=A}),m.total=parseInt(w)),{data:Object.assign(Object.assign({},y),m),error:null}}catch(m){if(oe(m))return{data:{clients:[]},error:m};throw m}}async _createOAuthClient(e){try{return await he(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:e,headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(oe(n))return{data:null,error:n};throw n}}async _getOAuthClient(e){try{return await he(this.fetch,"GET",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(oe(n))return{data:null,error:n};throw n}}async _updateOAuthClient(e,n){try{return await he(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${e}`,{body:n,headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(oe(a))return{data:null,error:a};throw a}}async _deleteOAuthClient(e){try{return await he(this.fetch,"DELET
39E",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(n){if(oe(n))return{data:null,error:n};throw n}}async _regenerateOAuthClientSecret(e){try{return await he(this.fetch,"POST",`${this.url}/admin/oauth/clients/${e}/regenerate_secret`,{headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(oe(n))return{data:null,error:n};throw n}}async _listCustomProviders(e){try{const n={};return e?.type&&(n.type=e.type),await he(this.fetch,"GET",`${this.url}/admin/custom-providers`,{headers:this.headers,query:n,xform:a=>{var o;return{data:{providers:(o=a?.providers)!==null&&o!==void 0?o:[]},error:null}}})}catch(n){if(oe(n))return{data:{providers:[]},error:n};throw n}}async _createCustomProvider(e){try{return await he(this.fetch,"POST",`${this.url}/admin/custom-providers`,{body:e,headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(oe(n))return{data:null,error:n};throw n}}async _getCustomProvider(e){try{return await he(this.fetch,"GET",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(oe(n))return{data:null,error:n};throw n}}async _updateCustomProvider(e,n){try{return await he(this.fetch,"PUT",`${this.url}/admin/custom-providers/${e}`,{body:n,headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(oe(a))return{data:null,error:a};throw a}}async _deleteCustomProvider(e){try{return await he(this.fetch,"DELETE",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(n){if(oe(n))return{data:null,error:n};throw n}}async _adminListPasskeys(e){Zn(this.experimental),Ir(e.userId);try{return await he(this.fetch,"GET",`${this.url}/admin/users/${e.userId}/passkeys`,{headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(oe(n))return{data:null,error:n};throw n}}async _adminDeletePasskey(e){Zn(this.experimental),Ir(e.userId),Ir(e.passkeyId);try{return await he(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/passkeys/${e.passkeyId}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(n){if(oe(n))return{data:null,error:n};throw n}}}function iw(t={}){return{getItem:e=>t[e]||null,setItem:(e,n)=>{t[e]=n},removeItem:e=>{delete t[e]}}}const cr={debug:!!(globalThis&&qx()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class Hx extends Error{constructor(e){super(e),this.isAcquireTimeout=!0}}class ow extends Hx{}async function JO(t,e,n){cr.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquire lock",t,e);const a=new globalThis.AbortController;let o;e>0&&(o=setTimeout(()=>{a.abort(),cr.debug&&console.log("@supabase/gotrue-js: navigatorLock acquire timed out",t)},e)),await Promise.resolve();try{return await globalThis.navigator.locks.request(t,e===0?{mode:"exclusive",ifAvailable:!0}:{mode:"exclusive",signal:a.signal},async l=>{if(l){clearTimeout(o),cr.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquired",t,l.name);try{return await n()}finally{cr.debug&&console.log("@supabase/gotrue-js: navigatorLock: released",t,l.name)}}else{if(e===0)throw cr.debug&&console.log("@supabase/gotrue-js: navigatorLock: not immediately available",t),new ow(`Acquiring an exclusive Navigator LockManager lock "${t}" immediately failed`);if(cr.debug)try{const u=await globalThis.navigator.locks.query();console.log("@supabase/gotrue-js: Navigator LockManager state",JSON.stringify(u,null," "))}catch(u){console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state",u)}return console.warn("@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request"),clearTimeout(o),await n()}})}catch(l){if(e>0&&clearTimeout(o),l!==null&&typeof l=="object"&&"name"in l&&l.name==="AbortError"&&e>0){if(a.signal.aborted)return cr.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquire timeout, recovering by stealing lock",t),console.warn(`@
39supabase/gotrue-js: Lock "${t}" was not released within ${e}ms. This may indicate an orphaned lock from a component unmount (e.g., React Strict Mode). Forcefully acquiring the lock to recover.`),await Promise.resolve().then(()=>globalThis.navigator.locks.request(t,{mode:"exclusive",steal:!0},async u=>{if(u){cr.debug&&console.log("@supabase/gotrue-js: navigatorLock: recovered (stolen)",t,u.name);try{return await n()}finally{cr.debug&&console.log("@supabase/gotrue-js: navigatorLock: released (stolen)",t,u.name)}}else return console.warn("@supabase/gotrue-js: Navigator LockManager returned null lock even with steal: true"),await n()}));throw cr.debug&&console.log("@supabase/gotrue-js: navigatorLock: lock was stolen by another request",t),new ow(`Lock "${t}" was released because another request stole it`)}throw l}}function QO(){if(typeof globalThis!="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{typeof self<"u"&&(self.globalThis=self)}}function Vx(t){if(!/^0x[a-fA-F0-9]{40}$/.test(t))throw new Error(`@supabase/auth-js: Address "${t}" is invalid.`);return t.toLowerCase()}function XO(t){return parseInt(t,16)}function e2(t){const e=new TextEncoder().encode(t);return"0x"+Array.from(e,a=>a.toString(16).padStart(2,"0")).join("")}function t2(t){var e;const{chainId:n,domain:a,expirationTime:o,issuedAt:l=new Date,nonce:u,notBefore:h,requestId:p,resources:m,scheme:b,uri:y,version:w}=t;{if(!Number.isInteger(n))throw new Error(`@supabase/auth-js: Invalid SIWE message field "chainId". Chain ID must be a EIP-155 chain ID. Provided value: ${n}`);if(!a)throw new Error('@supabase/auth-js: Invalid SIWE message field "domain". Domain must be provided.');if(u&&u.length<8)throw new Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${u}`);if(!y)throw new Error('@supabase/auth-js: Invalid SIWE message field "uri". URI must be provided.');if(w!=="1")throw new Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${w}`);if(!((e=t.statement)===null||e===void 0)&&e.includes(` 40`))throw new Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${t.statement}`)}const x=Vx(t.address),k=b?`${b}://${a}`:a,A=t.statement?`${t.statement} 41`:"",_=`${k} wants you to sign in with your Ethereum account: 42${x} 43 44${A}`;let j=`URI: ${y} 45Version: ${w} 46Chain ID: ${n}${u?` 47Nonce: ${u}`:""} 48Issued At: ${l.toISOString()}`;if(o&&(j+=` 49Expiration Time: ${o.toISOString()}`),h&&(j+=` 50Not Before: ${h.toISOString()}`),p&&(j+=` 51Request ID: ${p}`),m){let O=` 52Resources:`;for(const R of m){if(!R||typeof R!="string")throw new Error(`@supabase/auth-js: Invalid SIWE message field "resources". Every resource must be a valid string. Provided value: ${R}`);O+=` 53- ${R}`}j+=O}return`${_} 54${j}`}class St extends Error{constructor({message:e,code:n,cause:a,name:o}){var l;super(e,{cause:a}),this.__isWebAuthnError=!0,this.name=(l=o??(a instanceof Error?a.name:void 0))!==null&&l!==void 0?l:"Unknown Error",this.code=n}toJSON(){return{name:this.name,message:this.message,code:this.code}}}class bu extends St{constructor(e,n){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:n,message:e}),this.name="WebAuthnUnknownError",this.originalError=n}}function n2({error:t,options:e}){var n,a,o;const{publicKey:l}=e;if(!l)throw Error("options was missing required publicKey property");if(t.name==="AbortError"){if(e.signal instanceof AbortSignal)return new St({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else if(t.name==="ConstraintError"){if(((n=l.authenticatorSelection)===null||n===void 0?void 0:n.requireResidentKey)===!0)return new St({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:t});if(e.mediation==="conditional"&&((a=l.authenticatorSelection)===null||a===void 0?void 0:a.userVerification)==="required")return new St({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:t});if(((o=l.authenticatorSelection)===null||o===void 0?void 0:o.userVerification)==="required")return new St({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:t})}else{if(t.name==="InvalidStateError")return new St({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:t});if(t.name==="NotAllowedError")return new St({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if(t.name==="NotSupportedError")return l.pubKeyCredParams.filter(h=>h.type==="public-key").length===0?new St({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:t}):new St({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:t});if(t.name==="SecurityError"){const u=window.location.hostname;
54if(Fx(u)){if(l.rp.id!==u)return new St({message:`The RP ID "${l.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else return new St({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t})}else if(t.name==="TypeError"){if(l.user.id.byteLength<1||l.user.id.byteLength>64)return new St({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:t})}else if(t.name==="UnknownError")return new St({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}return new St({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t})}function r2({error:t,options:e}){const{publicKey:n}=e;if(!n)throw Error("options was missing required publicKey property");if(t.name==="AbortError"){if(e.signal instanceof AbortSignal)return new St({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if(t.name==="NotAllowedError")return new St({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if(t.name==="SecurityError"){const a=window.location.hostname;if(Fx(a)){if(n.rpId!==a)return new St({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else return new St({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t})}else if(t.name==="UnknownError")return new St({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}return new St({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t})}class s2{createNewAbortSignal(){if(this.controller){const n=new Error("Cancelling existing WebAuthn API call for new one");n.name="AbortError",this.controller.abort(n)}const e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){const e=new Error("Manually cancelling existing WebAuthn API call");e.name="AbortError",this.controller.abort(e),this.controller=void 0}}}const ip=new s2;function lw(t){if(!t)throw new Error("Credential creation options are required");if(typeof PublicKeyCredential<"u"&&"parseCreationOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseCreationOptionsFromJSON=="function")return PublicKeyCredential.parseCreationOptionsFromJSON(t);const{challenge:e,user:n,excludeCredentials:a}=t,o=Bu(t,["challenge","user","excludeCredentials"]),l=Ii(e).buffer,u=Object.assign(Object.assign({},n),{id:Ii(n.id).buffer}),h=Object.assign(Object.assign({},o),{challenge:l,user:u});if(a&&a.length>0){h.excludeCredentials=new Array(a.length);for(let p=0;p<a.length;p++){const m=a[p];h.excludeCredentials[p]=Object.assign(Object.assign({},m),{id:Ii(m.id).buffer,type:m.type||"public-key",transports:m.transports})}}return h}function cw(t){if(!t)throw new Error("Credential request options are required");if(typeof PublicKeyCredential<"u"&&"parseRequestOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseRequestOptionsFromJSON=="function")return PublicKeyCredential.parseRequestOptionsFromJSON(t);const{challenge:e,allowCredentials:n}=t,a=Bu(t,["challenge","allowCredentials"]),o=Ii(e).buffer,l=Object.assign(Object.assign({},a),{challenge:o});if(n&&n.length>0){l.allowCredentials=new Array(n.length);for(let u=0;u<n.length;u++){const h=n[u];l.allowCredentials[u]=Object.assign(Object.assign({},h),{id:Ii(h.id).buffer,type:h.type||"public-key",transports:h.transports})}}return l}function uw(t){var e;if("toJSON"in t&&typeof t.toJSON=="function")return t.toJSON();const n=t;return{id:t.id,rawId:t.id,response:{attestationObject:wa(new Uint8Array(t.response.attestationObject)),clientDataJSON:wa(new Uint8Array(t.response.clientDataJSON))},type:"public-key",clientExtensionResults:t.getClientExtensionResults(),authenticatorAttachment:(e=n.authenticatorAttachment)!==null&&e!==void 0?e:void 0}}function dw(t){var e;if("toJSON"in t&&typeof t.toJSON=="function")return t.toJSON();const n=t,a=t.getClientExtensionResults(),o=t.response;return{id:t.id,rawId:t.id,response:{authenticatorData:wa(new Uint8Array(o.authenticatorData)),clientDataJSON:wa(new Uint8Array(o.clientDataJSON)),signature:wa(new Uint8Array(o.signature)),userHandle:o.userHandle?wa(new Uint8Array(o.userHandle)):void 0},type:"public-key",clientExtensionResults:a,authenticatorAttachment:(e=n.authenticatorAttachment)!==null&&e!==void 0?e:void 0}}function Fx(t){return t==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(t)}function vu(){var t,e;return!!(Yt()&&"PublicKeyCredential"in window&&window.PublicKeyCredential&&"credentials"in navigator&&typeof((t=navigator?.credentials)===null||t===void 0?void 0:t.create)=="function"&&typeof((e=navigator?.credentials)===null||e===void 0?void 0:e.get)=="function")}async function Gx(t){try{const e=await navigator.credentials.create(t);return e?e instanceof PublicKeyCredential?{data:e,error:null}:{data:null,error:new bu("Browser returned unexpected credential type",e)}:{data:null,error:new bu("Empty credential response",e)}}catch(e){return{data:null,error:n2({error:e,options:t})}}}async function Kx(t){try{const e=await navigator.credentials.get(t);return e?e instanceof PublicKeyCredential?{data:e,error:null}:{data:null,error:new bu("Browser returned unexpected credential type",e)}:{data:null,error:new bu("Empty credential response",e)}}catch(e){return{data:null,error:r2({error:e,options:t})}}}const a2={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},i2={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function wu(...t){const e=o=>o!==null&&typeof o=="object"&&!Array.isArray(o),n=o=>o instanceof ArrayBuffer||ArrayBuffer.isView(o),a={};
54for(const o of t)if(o)for(const l in o){const u=o[l];if(u!==void 0)if(Array.isArray(u))a[l]=u;else if(n(u))a[l]=u;else if(e(u)){const h=a[l];e(h)?a[l]=wu(h,u):a[l]=wu(u)}else a[l]=u}return a}function o2(t,e){return wu(a2,t,e||{})}function l2(t,e){return wu(i2,t,e||{})}class c2{constructor(e){this.client=e,this.enroll=this._enroll.bind(this),this.challenge=this._challenge.bind(this),this.verify=this._verify.bind(this),this.authenticate=this._authenticate.bind(this),this.register=this._register.bind(this)}async _enroll(e){return this.client.mfa.enroll(Object.assign(Object.assign({},e),{factorType:"webauthn"}))}async _challenge({factorId:e,webauthn:n,friendlyName:a,signal:o},l){var u;try{const{data:h,error:p}=await this.client.mfa.challenge({factorId:e,webauthn:n});if(!h)return{data:null,error:p};const m=o??ip.createNewAbortSignal();if(h.webauthn.type==="create"){const{user:b}=h.webauthn.credential_options.publicKey;if(!b.name){const y=a;if(y)b.name=`${b.id}:${y}`;else{const x=(await this.client.getUser()).data.user,k=((u=x?.user_metadata)===null||u===void 0?void 0:u.name)||x?.email||x?.id||"User";b.name=`${b.id}:${k}`}}b.displayName||(b.displayName=b.name)}switch(h.webauthn.type){case"create":{const b=o2(h.webauthn.credential_options.publicKey,l?.create),{data:y,error:w}=await Gx({publicKey:b,signal:m});return y?{data:{factorId:e,challengeId:h.id,webauthn:{type:h.webauthn.type,credential_response:y}},error:null}:{data:null,error:w}}case"request":{const b=l2(h.webauthn.credential_options.publicKey,l?.request),{data:y,error:w}=await Kx(Object.assign(Object.assign({},h.webauthn.credential_options),{publicKey:b,signal:m}));return y?{data:{factorId:e,challengeId:h.id,webauthn:{type:h.webauthn.type,credential_response:y}},error:null}:{data:null,error:w}}}}catch(h){return oe(h)?{data:null,error:h}:{data:null,error:new Xn("Unexpected error in challenge",h)}}}async _verify({challengeId:e,factorId:n,webauthn:a}){return this.client.mfa.verify({factorId:n,challengeId:e,webauthn:a})}async _authenticate({factorId:e,webauthn:{rpId:n=typeof window<"u"?window.location.hostname:void 0,rpOrigins:a=typeof window<"u"?[window.location.origin]:void 0,signal:o}={}},l){if(!n)return{data:null,error:new dl("rpId is required for WebAuthn authentication")};try{if(!vu())return{data:null,error:new Xn("Browser does not support WebAuthn",null)};const{data:u,error:h}=await this.challenge({factorId:e,webauthn:{rpId:n,rpOrigins:a},signal:o},{request:l});if(!u)return{data:null,error:h};const{webauthn:p}=u;return this._verify({factorId:e,challengeId:u.challengeId,webauthn:{type:p.type,rpId:n,rpOrigins:a,credential_response:p.credential_response}})}catch(u){return oe(u)?{data:null,error:u}:{data:null,error:new Xn("Unexpected error in authenticate",u)}}}async _register({friendlyName:e,webauthn:{rpId:n=typeof window<"u"?window.location.hostname:void 0,rpOrigins:a=typeof window<"u"?[window.location.origin]:void 0,signal:o}={}},l){if(!n)return{data:null,error:new dl("rpId is required for WebAuthn registration")};try{if(!vu())return{data:null,error:new Xn("Browser does not support WebAuthn",null)};const{data:u,error:h}=await this._enroll({friendlyName:e});if(!u)return await this.client.mfa.listFactors().then(b=>{var y;return(y=b.data)===null||y===void 0?void 0:y.all.find(w=>w.factor_type==="webauthn"&&w.friendly_name===e&&w.status!=="unverified")}).then(b=>b?this.client.mfa.unenroll({factorId:b?.id}):void 0),{data:null,error:h};const{data:p,error:m}=await this._challenge({factorId:u.id,friendlyName:u.friendly_name,webauthn:{rpId:n,rpOrigins:a},signal:o},{create:l});return p?this._verify({factorId:u.id,challengeId:p.challengeId,webauthn:{rpId:n,rpOrigins:a,type:p.webauthn.type,credential_response:p.webauthn.credential_response}}):{data:null,error:m}}catch(u){return oe(u)?{data:null,error:u}:{data:null,error:new Xn("Unexpected error in register",u)}}}}QO();const u2={url:pO,storageKey:mO,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:gO,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:5e3,skipAutoInitialize:!1,experimental:{}};async function hw(t,e,n){return await n()}const xi={};class hl{get jwks(){var e,n;return(n=(e=xi[this.storageKey])===null||e===void 0?void 0:e.jwks)!==null&&n!==void 0?n:{keys:[]}}set jwks(e){xi[this.storageKey]=Object.assign(Object.assign({},xi[this.storageKey]),{jwks:e})}get jwks_cached_at(){var e,n;return(n=(e=xi[this.storageKey])===null||e===void 0?void 0:e.cachedAt)!==null&&n!==void 0?n:Number.MIN_SAFE_INTEGER}set jwks_cached_at(e){xi[this.storageKey]=Object.assign(Object.assign({},xi[this.storageKey]),{cachedAt:e})}constructor(e){var n,a,o,l;this.userStorage=null,this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.autoRefreshTickTimeout=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.initializePromise=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log;const u=Object.assign(Object.assign({},u2),e);if(this.storageKey=u.storageKey,this.instanceID=(n=hl.nextInstanceID[this.storageKey])!==null&&n!==void 0?n:0,hl.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!u.debug,typeof u.debug=="function"&&(this.logger=u.debug),this.instanceID>0&&Yt()){const h=`${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;console.warn(h),this.logDebugMessages&&console.trace(h)}if(this.persistSession=u.persistSession,this.autoRefreshToken=u.autoRefreshToken,this.experimental=(a=u.experimental)!==null&&a!==void 0?a:{},this.admin=new ZO({url:u.url,headers:u.headers,fetch:u.fetch,experimental:this.experimental}),this.url=u.url,this.headers=u.headers,this.fetch=$x(u.fetch),this.lock=u.lock||hw,this.detectSessionInUrl=u.detectSessionInUrl,this.flowType=u.flowType,this.hasCustomAuthorizationHeader=u.hasCu
54stomAuthorizationHeader,this.throwOnError=u.throwOnError,this.lockAcquireTimeout=u.lockAcquireTimeout,u.lock?this.lock=u.lock:this.persistSession&&Yt()&&(!((o=globalThis?.navigator)===null||o===void 0)&&o.locks)?this.lock=JO:this.lock=hw,this.jwks||(this.jwks={keys:[]},this.jwks_cached_at=Number.MIN_SAFE_INTEGER),this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this),webauthn:new c2(this)},this.oauth={getAuthorizationDetails:this._getAuthorizationDetails.bind(this),approveAuthorization:this._approveAuthorization.bind(this),denyAuthorization:this._denyAuthorization.bind(this),listGrants:this._listOAuthGrants.bind(this),revokeGrant:this._revokeOAuthGrant.bind(this)},this.passkey={startRegistration:this._startPasskeyRegistration.bind(this),verifyRegistration:this._verifyPasskeyRegistration.bind(this),startAuthentication:this._startPasskeyAuthentication.bind(this),verifyAuthentication:this._verifyPasskeyAuthentication.bind(this),list:this._listPasskeys.bind(this),update:this._updatePasskey.bind(this),delete:this._deletePasskey.bind(this)},this.persistSession?(u.storage?this.storage=u.storage:qx()?this.storage=globalThis.localStorage:(this.memoryStorage={},this.storage=iw(this.memoryStorage)),u.userStorage&&(this.userStorage=u.userStorage)):(this.memoryStorage={},this.storage=iw(this.memoryStorage)),Yt()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(h){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",h)}(l=this.broadcastChannel)===null||l===void 0||l.addEventListener("message",async h=>{this._debug("received broadcast notification from other tab or client",h);try{await this._notifyAllSubscribers(h.data.event,h.data.session,!1)}catch(p){this._debug("#broadcastChannel","error",p)}})}u.skipAutoInitialize||this.initialize().catch(h=>{this._debug("#initialize()","error",h)})}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(e){if(this.throwOnError&&e&&e.error)throw e.error;return e}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${Ix}) ${new Date().toISOString()}`}_debug(...e){return this.logDebugMessages&&this.logger(this._logPrefix(),...e),this}async initialize(){return this.initializePromise?await this.initializePromise:(this.initializePromise=(async()=>await this._acquireLock(this.lockAcquireTimeout,async()=>await this._initialize()))(),await this.initializePromise)}async _initialize(){var e;try{let n={},a="none";if(Yt()&&(n=CO(window.location.href),this._isImplicitGrantCallback(n)?a="implicit":await this._isPKCECallback(n)&&(a="pkce")),Yt()&&this.detectSessionInUrl&&a!=="none"){const{data:o,error:l}=await this._getSessionFromURL(n,a);if(l){if(this._debug("#_initialize()","error detecting session from URL",l),xO(l)){const p=(e=l.details)===null||e===void 0?void 0:e.code;if(p==="identity_already_exists"||p==="identity_not_found"||p==="single_identity_not_deletable")return{error:l}}return{error:l}}const{session:u,redirectType:h}=o;return this._debug("#_initialize()","detected session in URL",u,"redirect type",h),await this._saveSession(u),setTimeout(async()=>{h==="recovery"?await this._notifyAllSubscribers("PASSWORD_RECOVERY",u):await this._notifyAllSubscribers("SIGNED_IN",u)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(n){return oe(n)?this._returnResult({error:n}):this._returnResult({error:new Xn("Unexpected error during initialization",n)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var n,a,o;try{const l=await he(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(a=(n=e?.options)===null||n===void 0?void 0:n.data)!==null&&a!==void 0?a:{},gotrue_meta_security:{captcha_token:(o=e?.options)===null||o===void 0?void 0:o.captchaToken}},xform:qn}),{data:u,error:h}=l;if(h||!u)return this._returnResult({data:{user:null,session:null},error:h});const p=u.session,m=u.user;return u.session&&(await this._saveSession(u.session),await this._notifyAllSubscribers("SIGNED_IN",p)),this._returnResult({data:{user:m,session:p},error:null})}catch(l){if(oe(l))return this._returnResult({data:{user:null,session:null},error:l});throw l}}async signUp(e){var n,a,o;try{let l;if("email"in e){const{email:b,password:y,options:w}=e;let x=null,k=null;this.flowType==="pkce"&&([x,k]=await wi(this.storage,this.storageKey)),l=await he(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:w?.emailRedirectTo,body:{email:b,password:y,data:(n=w?.data)!==null&&n!==void 0?n:{},gotrue_meta_security:{captcha_token:w?.captchaToken},code_challenge:x,code_challenge_method:k},xform:qn})}else if("phone"in e){const{phone:b,password:y,options:w}=e;l=await he(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:b,password:y,data:(a=w?.data)!==null&&a!==void 0?a:{},channel:(o=w?.channel)!==null&&o!==void 0?o:"sms",gotrue_meta_security:{captcha_token:w?.captchaToken}},xform:qn})}else throw new Yc("You must provide either an email or phone number and a password");const{data:u,error:h}=l;if(h||!u)return await Kt(this.storage,`${this.storageKey}-code-verifier`),this._returnResult({data:{user:null,session:null},error:h});const p=u.session,m=u.user;return u.session&&(await this._saveSession(u.session),await this._notifyAllSubscribers("SIGNED_IN",p)),this._returnResult({data:{user:m,session:p},error:null})}catch(l){if(await Kt(this.storage,`${this.storageKey}-code-verifier`),oe(l))return this._returnResult({data:{user:null,session:null},error:l});throw l}}async signInWithPassword(e){try{let n;if("email"in e){const{email:l,password:u,options:h}=e;n=await he(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:l,password:u,gotrue_meta_security:{captcha_token:h?.captchaToken}},xform:sw})}else if("phone"in e){const{phone:l,password:u,options:h}=e;n=await he(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:l,password:u,gotrue_meta_security:{captcha_token:h?.captchaToken}},xform:sw})}else throw new Yc("You must provide either an email or phone number and a password");const{data:a,error:o}=n;
54if(o)return this._returnResult({data:{user:null,session:null},error:o});if(!a||!a.session||!a.user){const l=new vi;return this._returnResult({data:{user:null,session:null},error:l})}return a.session&&(await this._saveSession(a.session),await this._notifyAllSubscribers("SIGNED_IN",a.session)),this._returnResult({data:Object.assign({user:a.user,session:a.session},a.weak_password?{weakPassword:a.weak_password}:null),error:o})}catch(n){if(oe(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async signInWithOAuth(e){var n,a,o,l;return await this._handleProviderSignIn(e.provider,{redirectTo:(n=e.options)===null||n===void 0?void 0:n.redirectTo,scopes:(a=e.options)===null||a===void 0?void 0:a.scopes,queryParams:(o=e.options)===null||o===void 0?void 0:o.queryParams,skipBrowserRedirect:(l=e.options)===null||l===void 0?void 0:l.skipBrowserRedirect})}async exchangeCodeForSession(e){return await this.initializePromise,this._acquireLock(this.lockAcquireTimeout,async()=>this._exchangeCodeForSession(e))}async signInWithWeb3(e){const{chain:n}=e;switch(n){case"ethereum":return await this.signInWithEthereum(e);case"solana":return await this.signInWithSolana(e);default:throw new Error(`@supabase/auth-js: Unsupported chain "${n}"`)}}async signInWithEthereum(e){var n,a,o,l,u,h,p,m,b,y,w;let x,k;if("message"in e)x=e.message,k=e.signature;else{const{chain:A,wallet:_,statement:j,options:O}=e;let R;if(Yt())if(typeof _=="object")R=_;else{const Q=window;if("ethereum"in Q&&typeof Q.ethereum=="object"&&"request"in Q.ethereum&&typeof Q.ethereum.request=="function")R=Q.ethereum;else throw new Error("@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.")}else{if(typeof _!="object"||!O?.url)throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");R=_}const M=new URL((n=O?.url)!==null&&n!==void 0?n:window.location.href),K=await R.request({method:"eth_requestAccounts"}).then(Q=>Q).catch(()=>{throw new Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!K||K.length===0)throw new Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");const V=Vx(K[0]);let $=(a=O?.signInWithEthereum)===null||a===void 0?void 0:a.chainId;if(!$){const Q=await R.request({method:"eth_chainId"});$=XO(Q)}const U={domain:M.host,address:V,statement:j,uri:M.href,version:"1",chainId:$,nonce:(o=O?.signInWithEthereum)===null||o===void 0?void 0:o.nonce,issuedAt:(u=(l=O?.signInWithEthereum)===null||l===void 0?void 0:l.issuedAt)!==null&&u!==void 0?u:new Date,expirationTime:(h=O?.signInWithEthereum)===null||h===void 0?void 0:h.expirationTime,notBefore:(p=O?.signInWithEthereum)===null||p===void 0?void 0:p.notBefore,requestId:(m=O?.signInWithEthereum)===null||m===void 0?void 0:m.requestId,resources:(b=O?.signInWithEthereum)===null||b===void 0?void 0:b.resources};x=t2(U),k=await R.request({method:"personal_sign",params:[e2(x),V]})}try{const{data:A,error:_}=await he(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:x,signature:k},!((y=e.options)===null||y===void 0)&&y.captchaToken?{gotrue_meta_security:{captcha_token:(w=e.options)===null||w===void 0?void 0:w.captchaToken}}:null),xform:qn});if(_)throw _;if(!A||!A.session||!A.user){const j=new vi;return this._returnResult({data:{user:null,session:null},error:j})}return A.session&&(await this._saveSession(A.session),await this._notifyAllSubscribers("SIGNED_IN",A.session)),this._returnResult({data:Object.assign({},A),error:_})}catch(A){if(oe(A))return this._returnResult({data:{user:null,session:null},error:A});throw A}}async signInWithSolana(e){var n,a,o,l,u,h,p,m,b,y,w,x;let k,A;if("message"in e)k=e.message,A=e.signature;else{const{chain:_,wallet:j,statement:O,options:R}=e;let M;if(Yt())if(typeof j=="object")M=j;else{const V=window;if("solana"in V&&typeof V.solana=="object"&&("signIn"in V.solana&&typeof V.solana.signIn=="function"||"signMessage"in V.solana&&typeof V.solana.signMessage=="function"))M=V.solana;else throw new Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.")}else{if(typeof j!="object"||!R?.url)throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");M=j}const K=new URL((n=R?.url)!==null&&n!==void 0?n:window.location.href);if("signIn"in M&&M.signIn){const V=await M.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},R?.signInWithSolana),{version:"1",domain:K.host,uri:K.href}),O?{statement:O}:null));let $;if(Array.isArray(V)&&V[0]&&typeof V[0]=="object")$=V[0];else if(V&&typeof V=="object"&&"signedMessage"in V&&"signature"in V)$=V;else throw new Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in $&&"signature"in $&&(typeof $.signedMessage=="string"||$.signedMessage instanceof Uint8Array)&&$.signature instanceof Uint8Array)k=typeof $.signedMessage=="string"?$.signedMessage:new TextDecoder().decode($.signedMessage),A=$.signature;else throw new Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in M)||typeof M.signMessage!="function"||!("publicKey"in M)||typeof M!="object"||!M.publicKey||!("toBase58"in M.publicKey)||typeof M.publicKey.toBase58!="function")throw new Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");k=[`${K.host} wants you to sign in with your Solana account:`,M.publicKey.toBase58(),...O?["",O,""]:[""],"Version: 1",`URI: ${K.href}`,`Issued At: ${(o=(a=R?.signInWithSolana)===null||a===void 0?void 0:a.issuedAt)!==null&&o!==void 0?o:new Date().toISOString()}`,...!((l=R?.signInWithSolana)===null||l===void 0)&&l.notBefore?[`Not Before: ${R.signInWithSolana.notBefore}`]:[],...!((u=R?.signInWithSolana)===null||u===void 0)&&u.expirationTime?[`Expiration Time: ${R.signInWithSolana.expirationTime}
54`]:[],...!((h=R?.signInWithSolana)===null||h===void 0)&&h.chainId?[`Chain ID: ${R.signInWithSolana.chainId}`]:[],...!((p=R?.signInWithSolana)===null||p===void 0)&&p.nonce?[`Nonce: ${R.signInWithSolana.nonce}`]:[],...!((m=R?.signInWithSolana)===null||m===void 0)&&m.requestId?[`Request ID: ${R.signInWithSolana.requestId}`]:[],...!((y=(b=R?.signInWithSolana)===null||b===void 0?void 0:b.resources)===null||y===void 0)&&y.length?["Resources",...R.signInWithSolana.resources.map($=>`- ${$}`)]:[]].join(` 55`);const V=await M.signMessage(new TextEncoder().encode(k),"utf8");if(!V||!(V instanceof Uint8Array))throw new Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");A=V}}try{const{data:_,error:j}=await he(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:k,signature:wa(A)},!((w=e.options)===null||w===void 0)&&w.captchaToken?{gotrue_meta_security:{captcha_token:(x=e.options)===null||x===void 0?void 0:x.captchaToken}}:null),xform:qn});if(j)throw j;if(!_||!_.session||!_.user){const O=new vi;return this._returnResult({data:{user:null,session:null},error:O})}return _.session&&(await this._saveSession(_.session),await this._notifyAllSubscribers("SIGNED_IN",_.session)),this._returnResult({data:Object.assign({},_),error:j})}catch(_){if(oe(_))return this._returnResult({data:{user:null,session:null},error:_});throw _}}async _exchangeCodeForSession(e){const n=await pa(this.storage,`${this.storageKey}-code-verifier`),[a,o]=(n??"").split("/");try{if(!a&&this.flowType==="pkce")throw new kO;const{data:l,error:u}=await he(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:a},xform:qn});if(await Kt(this.storage,`${this.storageKey}-code-verifier`),u)throw u;if(!l||!l.session||!l.user){const h=new vi;return this._returnResult({data:{user:null,session:null,redirectType:null},error:h})}return l.session&&(await this._saveSession(l.session),await this._notifyAllSubscribers(o==="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",l.session)),this._returnResult({data:Object.assign(Object.assign({},l),{redirectType:o??null}),error:u})}catch(l){if(await Kt(this.storage,`${this.storageKey}-code-verifier`),oe(l))return this._returnResult({data:{user:null,session:null,redirectType:null},error:l});throw l}}async signInWithIdToken(e){try{const{options:n,provider:a,token:o,access_token:l,nonce:u}=e,h=await he(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:a,id_token:o,access_token:l,nonce:u,gotrue_meta_security:{captcha_token:n?.captchaToken}},xform:qn}),{data:p,error:m}=h;if(m)return this._returnResult({data:{user:null,session:null},error:m});if(!p||!p.session||!p.user){const b=new vi;return this._returnResult({data:{user:null,session:null},error:b})}return p.session&&(await this._saveSession(p.session),await this._notifyAllSubscribers("SIGNED_IN",p.session)),this._returnResult({data:p,error:m})}catch(n){if(oe(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async signInWithOtp(e){var n,a,o,l,u;try{if("email"in e){const{email:h,options:p}=e;let m=null,b=null;this.flowType==="pkce"&&([m,b]=await wi(this.storage,this.storageKey));const{error:y}=await he(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:h,data:(n=p?.data)!==null&&n!==void 0?n:{},create_user:(a=p?.shouldCreateUser)!==null&&a!==void 0?a:!0,gotrue_meta_security:{captcha_token:p?.captchaToken},code_challenge:m,code_challenge_method:b},redirectTo:p?.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:y})}if("phone"in e){const{phone:h,options:p}=e,{data:m,error:b}=await he(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:h,data:(o=p?.data)!==null&&o!==void 0?o:{},create_user:(l=p?.shouldCreateUser)!==null&&l!==void 0?l:!0,gotrue_meta_security:{captcha_token:p?.captchaToken},channel:(u=p?.channel)!==null&&u!==void 0?u:"sms"}});return this._returnResult({data:{user:null,session:null,messageId:m?.message_id},error:b})}throw new Yc("You must provide either an email or phone number.")}catch(h){if(await Kt(this.storage,`${this.storageKey}-code-verifier`),oe(h))return this._returnResult({data:{user:null,session:null},error:h});throw h}}async verifyOtp(e){var n,a;try{let o,l;"options"in e&&(o=(n=e.options)===null||n===void 0?void 0:n.redirectTo,l=(a=e.options)===null||a===void 0?void 0:a.captchaToken);const{data:u,error:h}=await he(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:l}}),redirectTo:o,xform:qn});if(h)throw h;if(!u)throw new Error("An error occurred on token verification.");const p=u.session,m=u.user;return p?.access_token&&(await this._saveSession(p),await this._notifyAllSubscribers(e.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",p)),this._returnResult({data:{user:m,session:p},error:null})}catch(o){if(oe(o))return this._returnResult({data:{user:null,session:null},error:o});throw o}}async signInWithSSO(e){var n,a,o,l,u;try{let h=null,p=null;this.flowType==="pkce"&&([h,p]=await wi(this.storage,this.storageKey));const m=await he(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in e?{provider_id:e.providerId}:null),"domain"in e?{domain:e.domain}:null),{redirect_to:(a=(n=e.options)===null||n===void 0?void 0:n.redirectTo)!==null&&a!==void 0?a:void 0}),!((o=e?.options)===null||o===void 0)&&o.captchaToken?{gotrue_meta_security:{captcha_token:e.options.captchaToken}}:null),{skip_http_redirect:!0,code_challenge:h,code_challenge_method:p}),headers:this.headers,xform:KO});return!((l=m.data)===null||l===void 0)&&l.url&&Yt()&&!(!((u=e.options)===null||u===void 0)&&u.skipBrowserRedirect)&&window.location.assign(m.data.url),this._returnResult(m)}catch(h){if(await Kt(this.storage,`${this.storageKey}-code-verifier`),oe(h))return this._returnResult({data:null,error:h});throw h}}async reauthenticate(){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._reauthenticate())}async _reauthenticate(){try{return await this._useSession(async e=>{const{data:{session:n},error:a}=e;if(a)throw a;if(!n)throw new It;const{error:o}=await he(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:n.access_token});return this._returnResult({data:{user:null,session:null},error:o})})}catch(e){if(oe(e))return this._returnResult({data:{user:null,session:null},error:e});throw e}}async resend(e){try{const n=`${this.url}/resend`;if("email"in e){const{email:a,type:o,options:l}=e,{error:u}=await he(this.fetch,"POST",n,{headers:this.headers,body:{email:a,type:o,gotrue_meta_security:{captcha_token:l?.captchaToken}},redirectTo:l?.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:u})}else if("phone"in e){const{phone:a,type:o,options:l}=e,{data:u,error:h}=await he(this.fetch,"POST",n,{headers:this.headers,body:{phone:a,type:o,gotrue_meta_security:{captcha_token:l?.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:u?.message_id},error:h})}throw new Yc("You must provide either an email or phone number and a type")}catch(n){if(oe(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async getSession(){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>this._useSession(async n=>n))}async _acquireLock(e,n){this._debug("#_acquireLock","begin",e);try{if(this.lockAcquired){const a=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),o=(async()=>(await a,await n()))();return this.pendingInLock.push((async()=>{try{await o}catch{}})()),o}return await this.lock(`lock:${this.storageKey}`,e,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;const a=n();for(this.pendingInLock.push((async()=>{try{await a}catch{}})()),await a;this.pendingInLock.length;){const o=[...this.pendingInLock];await Promise.all(o),this.pendingInLock.splice(0,o.length)}return await a}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(e){this._debug("#_useSession","begin");try{const n=await this.__loadSession();return await e(n)}finally{this._debug("#_useSession","end")}}async __loadSession(){this._debug("#__loadSession()","begin"),this.lockAcquired||this._debug("#__loadSession()","used outside of an acquired lock!",new Error().stack);try{let e=null;const n=await pa(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",n),n!==null&&(this._isValidSession(n)?e=n:(this._debug("#getSession()","session from storage is not val
55id"),await this._removeSession())),!e)return{data:{session:null},error:null};const a=e.expires_at?e.expires_at*1e3-Date.now()<Af:!1;if(this._debug("#__loadSession()",`session has${a?"":" not"} expired`,"expires_at",e.expires_at),!a){if(this.userStorage){const u=await pa(this.userStorage,this.storageKey+"-user");u?.user?e.user=u.user:e.user=Rf()}if(this.storage.isServer&&e.user&&!e.user.__isUserNotAvailableProxy){const u={value:this.suppressGetSessionWarning};e.user=HO(e.user,u),u.value&&(this.suppressGetSessionWarning=!0)}return{data:{session:e},error:null}}const{data:o,error:l}=await this._callRefreshToken(e.refresh_token);return l?this._returnResult({data:{session:null},error:l}):this._returnResult({data:{session:o},error:null})}finally{this._debug("#__loadSession()","end")}}async getUser(e){if(e)return await this._getUser(e);await this.initializePromise;const n=await this._acquireLock(this.lockAcquireTimeout,async()=>await this._getUser());return n.data.user&&(this.suppressGetSessionWarning=!0),n}async _getUser(e){try{return e?await he(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:Ts}):await this._useSession(async n=>{var a,o,l;const{data:u,error:h}=n;if(h)throw h;return!(!((a=u.session)===null||a===void 0)&&a.access_token)&&!this.hasCustomAuthorizationHeader?{data:{user:null},error:new It}:await he(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(l=(o=u.session)===null||o===void 0?void 0:o.access_token)!==null&&l!==void 0?l:void 0,xform:Ts})})}catch(n){if(oe(n))return Kc(n)&&(await this._removeSession(),await Kt(this.storage,`${this.storageKey}-code-verifier`)),this._returnResult({data:{user:null},error:n});throw n}}async updateUser(e,n={}){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._updateUser(e,n))}async _updateUser(e,n={}){try{return await this._useSession(async a=>{const{data:o,error:l}=a;if(l)throw l;if(!o.session)throw new It;const u=o.session;let h=null,p=null;this.flowType==="pkce"&&e.email!=null&&([h,p]=await wi(this.storage,this.storageKey));const{data:m,error:b}=await he(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:n?.emailRedirectTo,body:Object.assign(Object.assign({},e),{code_challenge:h,code_challenge_method:p}),jwt:u.access_token,xform:Ts});if(b)throw b;return u.user=m.user,await this._saveSession(u),await this._notifyAllSubscribers("USER_UPDATED",u),this._returnResult({data:{user:u.user},error:null})})}catch(a){if(await Kt(this.storage,`${this.storageKey}-code-verifier`),oe(a))return this._returnResult({data:{user:null},error:a});throw a}}async setSession(e){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._setSession(e))}async _setSession(e){try{if(!e.access_token||!e.refresh_token)throw new It;const n=Date.now()/1e3;let a=n,o=!0,l=null;const{payload:u}=Zc(e.access_token);if(u.exp&&(a=u.exp,o=a<=n),o){const{data:h,error:p}=await this._callRefreshToken(e.refresh_token);if(p)return this._returnResult({data:{user:null,session:null},error:p});if(!h)return{data:{user:null,session:null},error:null};l=h}else{const{data:h,error:p}=await this._getUser(e.access_token);if(p)return this._returnResult({data:{user:null,session:null},error:p});l={access_token:e.access_token,refresh_token:e.refresh_token,user:h.user,token_type:"bearer",expires_in:a-n,expires_at:a},await this._saveSession(l),await this._notifyAllSubscribers("SIGNED_IN",l)}return this._returnResult({data:{user:l.user,session:l},error:null})}catch(n){if(oe(n))return this._returnResult({data:{session:null,user:null},error:n});throw n}}async refreshSession(e){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._refreshSession(e))}async _refreshSession(e){try{return await this._useSession(async n=>{var a;if(!e){const{data:u,error:h}=n;if(h)throw h;e=(a=u.session)!==null&&a!==void 0?a:void 0}if(!e?.refresh_token)throw new It;const{data:o,error:l}=await this._callRefreshToken(e.refresh_token);return l?this._returnResult({data:{user:null,session:null},error:l}):o?this._returnResult({data:{user:o.user,session:o},error:null}):this._returnResult({data:{user:null,session:null},error:null})})}catch(n){if(oe(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async _getSessionFromURL(e,n){var a;try{if(!Yt())throw new Wc("No browser detected.");
55if(e.error||e.error_description||e.error_code)throw new Wc(e.error_description||"Error in URL with unspecified error_description",{error:e.error||"unspecified_error",code:e.error_code||"unspecified_code"});switch(n){case"implicit":if(this.flowType==="pkce")throw new Jv("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new Wc("Not a valid implicit grant flow url.");break;default:}if(n==="pkce"){if(this._debug("#_initialize()","begin","is PKCE flow",!0),!e.code)throw new Jv("No code detected.");const{data:R,error:M}=await this._exchangeCodeForSession(e.code);if(M)throw M;const K=new URL(window.location.href);return K.searchParams.delete("code"),window.history.replaceState(window.history.state,"",K.toString()),{data:{session:R.session,redirectType:(a=R.redirectType)!==null&&a!==void 0?a:null},error:null}}const{provider_token:o,provider_refresh_token:l,access_token:u,refresh_token:h,expires_in:p,expires_at:m,token_type:b}=e;if(!u||!p||!h||!b)throw new Wc("No session defined in URL");const y=Math.round(Date.now()/1e3),w=parseInt(p);let x=y+w;m&&(x=parseInt(m));const k=x-y;k*1e3<=Ri&&console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${k}s, should have been closer to ${w}s`);const A=x-w;y-A>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",A,x,y):y-A<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",A,x,y);const{data:_,error:j}=await this._getUser(u);if(j)throw j;const O={provider_token:o,provider_refresh_token:l,access_token:u,expires_in:w,expires_at:x,refresh_token:h,token_type:b,user:_.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:O,redirectType:e.type},error:null})}catch(o){if(oe(o))return this._returnResult({data:{session:null,redirectType:null},error:o});throw o}}_isImplicitGrantCallback(e){return typeof this.detectSessionInUrl=="function"?this.detectSessionInUrl(new URL(window.location.href),e):!!(e.access_token||e.error_description)}async _isPKCECallback(e){const n=await pa(this.storage,`${this.storageKey}-code-verifier`);return!!(e.code&&n)}async signOut(e={scope:"global"}){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._signOut(e))}async _signOut({scope:e}={scope:"global"}){return await this._useSession(async n=>{var a;const{data:o,error:l}=n;if(l&&!Kc(l))return this._returnResult({error:l});const u=(a=o.session)===null||a===void 0?void 0:a.access_token;if(u){const{error:h}=await this.admin.signOut(u,e);if(h&&!(wO(h)&&(h.status===404||h.status===401||h.status===403)||Kc(h)))return this._returnResult({error:h})}return e!=="others"&&(await this._removeSession(),await Kt(this.storage,`${this.storageKey}-code-verifier`)),this._returnResult({error:null})})}onAuthStateChange(e){const n=RO(),a={id:n,callback:e,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",n),this.stateChangeEmitters.delete(n)}};return this._debug("#onAuthStateChange()","registered callback with id",n),this.stateChangeEmitters.set(n,a),(async()=>(await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{this._emitInitialSession(n)})))(),{data:{subscription:a}}}async _emitInitialSession(e){return await this._useSession(async n=>{var a,o;try{const{data:{session:l},error:u}=n;if(u)throw u;await((a=this.stateChangeEmitters.get(e))===null||a===void 0?void 0:a.callback("INITIAL_SESSION",l)),this._debug("INITIAL_SESSION","callback id",e,"session",l)}catch(l){await((o=this.stateChangeEmitters.get(e))===null||o===void 0?void 0:o.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",e,"error",l),Kc(l)?console.warn(l):console.error(l)}})}async resetPasswordForEmail(e,n={}){let a=null,o=null;this.flowType==="pkce"&&([a,o]=await wi(this.storage,this.storageKey,!0));try{return await he(this.fetch,"POST",`${this.url}/recover`,{body:{email:e,code_challenge:a,code_challenge_method:o,gotrue_meta_security:{captcha_token:n.captchaToken}},headers:this.headers,redirectTo:n.redirectTo})}catch(l){if(await Kt(this.storage,`${this.storageKey}-code-verifier`),oe(l))return this._returnResult({data:null,error:l});throw l}}async getUserIdentities(){var e;try{const{data:n,error:a}=await this.getUser();if(a)throw a;return this._returnResult({data:{identities:(e=n.user.identities)!==null&&e!==void 0?e:[]},error:null})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}}async linkIdentity(e){return"token"in e?this.linkIdentityIdToken(e):this.linkIdentityOAuth(e)}async linkIdentityOAuth(e){var n;try{const{data:a,error:o}=await this._useSession(async l=>{var u,h,p,m,b;const{data:y,error:w}=l;if(w)throw w;const x=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,e.provider,{redirectTo:(u=e.options)===null||u===void 0?void 0:u.redirectTo,scopes:(h=e.options)===null||h===void 0?void 0:h.scopes,queryParams:(p=e.options)===null||p===void 0?void 0:p.queryParams,skipBrowserRedirect:!0});return await he(this.fetch,"GET",x,{headers:this.headers,jwt:(b=(m=y.session)===null||m===void 0?void 0:m.access_token)!==null&&b!==void 0?b:void 0})});if(o)throw o;return Yt()&&!(!((n=e.options)===null||n===void 0)&&n.skipBrowserRedirect)&&window.location.assign(a?.url),this._returnResult({data:{provider:e.provider,url:a?.url},error:null})}catch(a){if(oe(a))return this._returnResult({data:{provider:e.provider,url:null},error:a});throw a}}async linkIdentityIdToken(e){return await this._useSession(async n=>{var a;try{const{error:o,data:{session:l}}=n;if(o)throw o;const{options:u,provider:h,token:p,access_token:m,nonce:b}=e,y=await he(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(a=l?.access_token)!==null&&a!==void 0?a:void 0,body:{provider:h,id_token:p,access_token:m,nonce:b,link_identity:!0,gotrue_meta_security:{captcha_token:u?.captchaToken}},xform:qn}),{data:w,error:x}=y;return x?this._returnResult({data:{user:null,session:null},error:x}):!w||!w.session||!w.user?this._returnResult({data:{user:null,session:null},error:new vi}):(w.session&&(await this._saveSession(w.session),await this._notifyAllSubscribers("USER_UPDATED",w.session)),this._returnResult({data:w,error:x}
55))}catch(o){if(await Kt(this.storage,`${this.storageKey}-code-verifier`),oe(o))return this._returnResult({data:{user:null,session:null},error:o});throw o}})}async unlinkIdentity(e){try{return await this._useSession(async n=>{var a,o;const{data:l,error:u}=n;if(u)throw u;return await he(this.fetch,"DELETE",`${this.url}/user/identities/${e.identity_id}`,{headers:this.headers,jwt:(o=(a=l.session)===null||a===void 0?void 0:a.access_token)!==null&&o!==void 0?o:void 0})})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}}async _refreshAccessToken(e){const n=`#_refreshAccessToken(${e.substring(0,5)}...)`;this._debug(n,"begin");try{const a=Date.now();return await MO(async o=>(o>0&&await NO(200*Math.pow(2,o-1)),this._debug(n,"refreshing attempt",o),await he(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:qn})),(o,l)=>{const u=200*Math.pow(2,o);return l&&Ef(l)&&Date.now()+u-a<Ri})}catch(a){if(this._debug(n,"error",a),oe(a))return this._returnResult({data:{session:null,user:null},error:a});throw a}finally{this._debug(n,"end")}}_isValidSession(e){return typeof e=="object"&&e!==null&&"access_token"in e&&"refresh_token"in e&&"expires_at"in e}async _handleProviderSignIn(e,n){const a=await this._getUrlForProvider(`${this.url}/authorize`,e,{redirectTo:n.redirectTo,scopes:n.scopes,queryParams:n.queryParams});return this._debug("#_handleProviderSignIn()","provider",e,"options",n,"url",a),Yt()&&!n.skipBrowserRedirect&&window.location.assign(a),{data:{provider:e,url:a},error:null}}async _recoverAndRefresh(){var e,n;const a="#_recoverAndRefresh()";this._debug(a,"begin");try{const o=await pa(this.storage,this.storageKey);if(o&&this.userStorage){let u=await pa(this.userStorage,this.storageKey+"-user");!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!u&&(u={user:o.user},await Ci(this.userStorage,this.storageKey+"-user",u)),o.user=(e=u?.user)!==null&&e!==void 0?e:Rf()}else if(o&&!o.user&&!o.user){const u=await pa(this.storage,this.storageKey+"-user");u&&u?.user?(o.user=u.user,await Kt(this.storage,this.storageKey+"-user"),await Ci(this.storage,this.storageKey,o)):o.user=Rf()}if(this._debug(a,"session from storage",o),!this._isValidSession(o)){this._debug(a,"session is not valid"),o!==null&&await this._removeSession();return}const l=((n=o.expires_at)!==null&&n!==void 0?n:1/0)*1e3-Date.now()<Af;if(this._debug(a,`session has${l?"":" not"} expired with margin of ${Af}s`),l){if(this.autoRefreshToken&&o.refresh_token){const{error:u}=await this._callRefreshToken(o.refresh_token);u&&(console.error(u),Ef(u)||(this._debug(a,"refresh failed with a non-retryable error, removing the session",u),await this._removeSession()))}}else if(o.user&&o.user.__isUserNotAvailableProxy===!0)try{const{data:u,error:h}=await this._getUser(o.access_token);!h&&u?.user?(o.user=u.user,await this._saveSession(o),await this._notifyAllSubscribers("SIGNED_IN",o)):this._debug(a,"could not get user data, skipping SIGNED_IN notification")}catch(u){console.error("Error getting user data:",u),this._debug(a,"error getting user data, skipping SIGNED_IN notification",u)}else await this._notifyAllSubscribers("SIGNED_IN",o)}catch(o){this._debug(a,"error",o),console.error(o);return}finally{this._debug(a,"end")}}async _callRefreshToken(e){var n,a;if(!e)throw new It;if(this.refreshingDeferred)return this.refreshingDeferred.promise;const o=`#_callRefreshToken(${e.substring(0,5)}...)`;this._debug(o,"begin");try{this.refreshingDeferred=new $u;const{data:l,error:u}=await this._refreshAccessToken(e);if(u)throw u;if(!l.session)throw new It;await this._saveSession(l.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",l.session);const h={data:l.session,error:null};return this.refreshingDeferred.resolve(h),h}catch(l){if(this._debug(o,"error",l),oe(l)){const u={data:null,error:l};return Ef(l)||await this._removeSession(),(n=this.refreshingDeferred)===null||n===void 0||n.resolve(u),u}throw(a=this.refreshingDeferred)===null||a===void 0||a.reject(l),l}finally{this.refreshingDeferred=null,this._debug(o,"end")}}async _notifyAllSubscribers(e,n,a=!0){const o=`#_notifyAllSubscribers(${e})`;this._debug(o,"begin",n,`broadcast = ${a}`);try{this.broadcastChannel&&a&&this.broadcastChannel.postMessage({event:e,session:n});const l=[],u=Array.from(this.stateChangeEmitters.values()).map(async h=>{try{await h.callback(e,n)}catch(p){l.push(p)}});if(await Promise.all(u),l.length>0){for(let h=0;h<l.length;h+=1)console.error(l[h]);throw l[0]}}finally{this._debug(o,"end")}}async _saveSession(e){this._debug("#_saveSession()",e),this.suppressGetSessionWarning=!0,await Kt(this.storage,`${this.storageKey}-code-verifier`);const n=Object.assign({},e),a=n.user&&n.user.__isUserNotAvailableProxy===!0;if(this.userStorage){!a&&n.user&&await Ci(this.userStorage,this.storageKey+"-user",{user:n.user});const o=Object.assign({},n);delete o.user;const l=nw(o);await Ci(this.storage,this.storageKey,l)}else{const o=nw(n);await Ci(this.storage,this.storageKey,o)}}async _removeSession(){this._debug("#_removeSession()"),this.suppressGetSessionWarning=!1,await Kt(this.storage,this.storageKey),await Kt(this.storage,this.storageKey+"-code-verifier"),await Kt(this.storage,this.storageKey+"-user"),this.userStorage&&await Kt(this.userStorage,this.storageKey+"-user"),await this._notifyAllSubscribers("SIGNED_OUT",null)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");const e=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{e&&Yt()&&window?.removeEventListener&&window.removeEventListener("visibilitychange",e)}
55catch(n){console.error("removing visibilitychange callback failed",n)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");const e=setInterval(()=>this._autoRefreshTokenTick(),Ri);this.autoRefreshTicker=e,e&&typeof e=="object"&&typeof e.unref=="function"?e.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(e);const n=setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0);this.autoRefreshTickTimeout=n,n&&typeof n=="object"&&typeof n.unref=="function"?n.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(n)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");const e=this.autoRefreshTicker;this.autoRefreshTicker=null,e&&clearInterval(e);const n=this.autoRefreshTickTimeout;this.autoRefreshTickTimeout=null,n&&clearTimeout(n)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async _autoRefreshTokenTick(){this._debug("#_autoRefreshTokenTick()","begin");try{await this._acquireLock(0,async()=>{try{const e=Date.now();try{return await this._useSession(async n=>{const{data:{session:a}}=n;if(!a||!a.refresh_token||!a.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const o=Math.floor((a.expires_at*1e3-e)/Ri);this._debug("#_autoRefreshTokenTick()",`access token expires in ${o} ticks, a tick lasts ${Ri}ms, refresh threshold is ${np} ticks`),o<=np&&await this._callRefreshToken(a.refresh_token)})}catch(n){console.error("Auto refresh tick failed with error. This is likely a transient error.",n)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(e){if(e instanceof Hx)this._debug("auto refresh token tick lock not available");else throw e}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!Yt()||!window?.addEventListener)return this.autoRefreshToken&&this.startAutoRefresh(),!1;try{this.visibilityChangedCallback=async()=>{try{await this._onVisibilityChanged(!1)}catch(e){this._debug("#visibilityChangedCallback","error",e)}},window?.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(e){console.error("_handleVisibilityChange",e)}}async _onVisibilityChanged(e){const n=`#_onVisibilityChanged(${e})`;this._debug(n,"visibilityState",document.visibilityState),document.visibilityState==="visible"?(this.autoRefreshToken&&this._startAutoRefresh(),e||(await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{if(document.visibilityState!=="visible"){this._debug(n,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()}))):document.visibilityState==="hidden"&&this.autoRefreshToken&&this._stopAutoRefresh()}async _getUrlForProvider(e,n,a){const o=[`provider=${encodeURIComponent(n)}`];if(a?.redirectTo&&o.push(`redirect_to=${encodeURIComponent(a.redirectTo)}`),a?.scopes&&o.push(`scopes=${encodeURIComponent(a.scopes)}`),this.flowType==="pkce"){const[l,u]=await wi(this.storage,this.storageKey),h=new URLSearchParams({code_challenge:`${encodeURIComponent(l)}`,code_challenge_method:`${encodeURIComponent(u)}`});o.push(h.toString())}if(a?.queryParams){const l=new URLSearchParams(a.queryParams);o.push(l.toString())}return a?.skipBrowserRedirect&&o.push(`skip_http_redirect=${a.skipBrowserRedirect}`),`${e}?${o.join("&")}`}async _unenroll(e){try{return await this._useSession(async n=>{var a;const{data:o,error:l}=n;return l?this._returnResult({data:null,error:l}):await he(this.fetch,"DELETE",`${this.url}/factors/${e.factorId}`,{headers:this.headers,jwt:(a=o?.session)===null||a===void 0?void 0:a.access_token})})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}}async _enroll(e){try{return await this._useSession(async n=>{var a,o;const{data:l,error:u}=n;if(u)return this._returnResult({data:null,error:u});const h=Object.assign({friendly_name:e.friendlyName,factor_type:e.factorType},e.factorType==="phone"?{phone:e.phone}:e.factorType==="totp"?{issuer:e.issuer}:{}),{data:p,error:m}=await he(this.fetch,"POST",`${this.url}/factors`,{body:h,headers:this.headers,jwt:(a=l?.session)===null||a===void 0?void 0:a.access_token});return m?this._returnResult({data:null,error:m}):(e.factorType==="totp"&&p.type==="totp"&&(!((o=p?.totp)===null||o===void 0)&&o.qr_code)&&(p.totp.qr_code=`data:image/svg+xml;utf-8,${p.totp.qr_code}`),this._returnResult({data:p,error:null}))})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}}async _verify(e){return this._acquireLock(this.lockAcquireTimeout,async()=>{try{return await this._useSession(async n=>{var a;const{data:o,error:l}=n;if(l)return this._returnResult({data:null,error:l});const u=Object.assign({challenge_id:e.challengeId},"webauthn"in e?{webauthn:Object.assign(Object.assign({},e.webauthn),{credential_response:e.webauthn.type==="create"?uw(e.webauthn.credential_response):dw(e.webauthn.credential_response)})}:{code:e.code}),{data:h,error:p}=await he(this.fetch,"POST",`${this.url}/factors/${e.factorId}/verify`,{body:u,headers:this.headers,jwt:(a=o?.session)===null||a===void 0?void 0:a.access_token});return p?this._returnResult({data:null,error:p}):(await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1e3)+h.expires_in},h)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",h),this._returnResult({data:h,error:p}))})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}})}async _challenge(e){return this._acquireLock(this.lockAcquireTimeout,async()=>{try{return await this._useSession(async n=>{var a;const{data:o,error:l}=n;if(l)return this._returnResult({data:null,error:l});const u=await he(this.fetch,"POST",`${this.url}/factors/${e.factorId}/challenge`,{body:e,headers:this.headers,jwt:(a=o?.session)===null||a===void 0?void 0:a.access_token});if(u.error)return u;const{data:h}=u;if(h.type!=="webauthn")return{data:h,error:null};switch(h.webauthn.type){case"create":return{data:Object.assign(Object.assign({},h),{webauthn:Object.assign(Object.assign({},h.webauthn),{credential_options:Object.assign(Object.assign({},h.webauthn.credential_options),{publicKey:lw(h.webauthn.credential_options.publicKey)})})}),error:null};case"request":return{data:Object.assign(Object.assign({},h),{webauthn:Object.assign(Object.assign({},h.webauthn),{credential_options:Object.assign(Object.assign({},h.webauthn.credential_options),{publicKey:cw(h.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}})}async _challengeAndVerify(e){const{data:n,error:a}=await this._challenge({factorId:e.factorId});return a?this._returnResult({data:null,error:a}):await this._verify({factorId:e.factorId,challengeId:n.id,code:e.code})}async _listFactors(){var e;const{data:{user:n},error:a}=await this.getUser();if(a)return{data:null,error:a};const o={all:[],phone:[],totp:[],webauthn:[]};for(const l of(e=n?.factors)!==null&&e!==void 0?e:[])o.all.push(l),l.status==="verified"&&o[l.factor_type].push(l);return{data:o,error:null}}async _getAuthenticatorAssuranceLevel(e){var n,a,o,l;if(e)try{const{payload:x}=Zc(e);let k=null;x.aal&&(k=x.aal);let A=k;const{data:{user:_},error:j}=await this.getUser(e);if(j)return this._returnResult({data:null,error:j});((a=(n=_?.factors)===null||n===void 0?void 0:n.filter(M=>M.status==="verified"))!==null&&a!==void 0?a:[]).length>0&&(A="aal2");const R=x.amr||[];return{data:{currentLevel:k,nextLevel:A,currentAuthenticationMethods:R},error:null}}
55catch(x){if(oe(x))return this._returnResult({data:null,error:x});throw x}const{data:{session:u},error:h}=await this.getSession();if(h)return this._returnResult({data:null,error:h});if(!u)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};const{payload:p}=Zc(u.access_token);let m=null;p.aal&&(m=p.aal);let b=m;((l=(o=u.user.factors)===null||o===void 0?void 0:o.filter(x=>x.status==="verified"))!==null&&l!==void 0?l:[]).length>0&&(b="aal2");const w=p.amr||[];return{data:{currentLevel:m,nextLevel:b,currentAuthenticationMethods:w},error:null}}async _getAuthorizationDetails(e){try{return await this._useSession(async n=>{const{data:{session:a},error:o}=n;return o?this._returnResult({data:null,error:o}):a?await he(this.fetch,"GET",`${this.url}/oauth/authorizations/${e}`,{headers:this.headers,jwt:a.access_token,xform:l=>({data:l,error:null})}):this._returnResult({data:null,error:new It})})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}}async _approveAuthorization(e,n){try{return await this._useSession(async a=>{const{data:{session:o},error:l}=a;if(l)return this._returnResult({data:null,error:l});if(!o)return this._returnResult({data:null,error:new It});const u=await he(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:o.access_token,body:{action:"approve"},xform:h=>({data:h,error:null})});return u.data&&u.data.redirect_url&&Yt()&&!n?.skipBrowserRedirect&&window.location.assign(u.data.redirect_url),u})}catch(a){if(oe(a))return this._returnResult({data:null,error:a});throw a}}async _denyAuthorization(e,n){try{return await this._useSession(async a=>{const{data:{session:o},error:l}=a;if(l)return this._returnResult({data:null,error:l});if(!o)return this._returnResult({data:null,error:new It});const u=await he(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:o.access_token,body:{action:"deny"},xform:h=>({data:h,error:null})});return u.data&&u.data.redirect_url&&Yt()&&!n?.skipBrowserRedirect&&window.location.assign(u.data.redirect_url),u})}catch(a){if(oe(a))return this._returnResult({data:null,error:a});throw a}}async _listOAuthGrants(){try{return await this._useSession(async e=>{const{data:{session:n},error:a}=e;return a?this._returnResult({data:null,error:a}):n?await he(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:n.access_token,xform:o=>({data:o,error:null})}):this._returnResult({data:null,error:new It})})}catch(e){if(oe(e))return this._returnResult({data:null,error:e});throw e}}async _revokeOAuthGrant(e){try{return await this._useSession(async n=>{const{data:{session:a},error:o}=n;return o?this._returnResult({data:null,error:o}):a?(await he(this.fetch,"DELETE",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:a.access_token,query:{client_id:e.clientId},noResolveJson:!0}),{data:{},error:null}):this._returnResult({data:null,error:new It})})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}}async fetchJwk(e,n={keys:[]}){let a=n.keys.find(h=>h.kid===e);if(a)return a;const o=Date.now();if(a=this.jwks.keys.find(h=>h.kid===e),a&&this.jwks_cached_at+bO>o)return a;const{data:l,error:u}=await he(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(u)throw u;return!l.keys||l.keys.length===0||(this.jwks=l,this.jwks_cached_at=o,a=l.keys.find(h=>h.kid===e),!a)?null:a}async getClaims(e,n={}){try{let a=e;if(!a){const{data:x,error:k}
55=await this.getSession();if(k||!x.session)return this._returnResult({data:null,error:k});a=x.session.access_token}const{header:o,payload:l,signature:u,raw:{header:h,payload:p}}=Zc(a);n?.allowExpired||zO(l.exp);const m=!o.alg||o.alg.startsWith("HS")||!o.kid||!("crypto"in globalThis&&"subtle"in globalThis.crypto)?null:await this.fetchJwk(o.kid,n?.keys?{keys:n.keys}:n?.jwks);if(!m){const{error:x}=await this.getUser(a);if(x)throw x;return{data:{claims:l,header:o,signature:u},error:null}}const b=qO(o.alg),y=await crypto.subtle.importKey("jwk",m,b,!0,["verify"]);if(!await crypto.subtle.verify(b,y,u,AO(`${h}.${p}`)))throw new ap("Invalid JWT signature");return{data:{claims:l,header:o,signature:u},error:null}}catch(a){if(oe(a))return this._returnResult({data:null,error:a});throw a}}async signInWithPasskey(e){var n,a,o;Zn(this.experimental);try{if(!vu())return this._returnResult({data:null,error:new Xn("Browser does not support WebAuthn",null)});const{data:l,error:u}=await this._startPasskeyAuthentication({options:{captchaToken:(n=e?.options)===null||n===void 0?void 0:n.captchaToken}});if(u||!l)return this._returnResult({data:null,error:u});const h=cw(l.options),p=(o=(a=e?.options)===null||a===void 0?void 0:a.signal)!==null&&o!==void 0?o:ip.createNewAbortSignal(),{data:m,error:b}=await Kx({publicKey:h,signal:p});if(b||!m)return this._returnResult({data:null,error:b??new Xn("WebAuthn ceremony failed",null)});const y=dw(m);return this._verifyPasskeyAuthentication({challengeId:l.challenge_id,credential:y})}catch(l){if(oe(l))return this._returnResult({data:null,error:l});throw l}}async registerPasskey(e){var n,a;Zn(this.experimental);try{if(!vu())return this._returnResult({data:null,error:new Xn("Browser does not support WebAuthn",null)});const{data:o,error:l}=await this._startPasskeyRegistration();if(l||!o)return this._returnResult({data:null,error:l});const u=lw(o.options),h=(a=(n=e?.options)===null||n===void 0?void 0:n.signal)!==null&&a!==void 0?a:ip.createNewAbortSignal(),{data:p,error:m}=await Gx({publicKey:u,signal:h});if(m||!p)return this._returnResult({data:null,error:m??new Xn("WebAuthn ceremony failed",null)});const b=uw(p);return this._verifyPasskeyRegistration({challengeId:o.challenge_id,credential:b})}catch(o){if(oe(o))return this._returnResult({data:null,error:o});throw o}}async _startPasskeyRegistration(){Zn(this.experimental);try{return await this._useSession(async e=>{const{data:{session:n},error:a}=e;if(a)return this._returnResult({data:null,error:a});if(!n)return this._returnResult({data:null,error:new It});const{data:o,error:l}=await he(this.fetch,"POST",`${this.url}/passkeys/registration/options`,{headers:this.headers,jwt:n.access_token,body:{}});return l?this._returnResult({data:null,error:l}):this._returnResult({data:o,error:null})})}catch(e){if(oe(e))return this._returnResult({data:null,error:e});throw e}}async _verifyPasskeyRegistration(e){Zn(this.experimental);try{return await this._useSession(async n=>{const{data:{session:a},error:o}=n;if(o)return this._returnResult({data:null,error:o});if(!a)return this._returnResult({data:null,error:new It});const{data:l,error:u}=await he(this.fetch,"POST",`${this.url}/passkeys/registration/verify`,{headers:this.headers,jwt:a.access_token,body:{challenge_id:e.challengeId,credential:e.credential}});return u?this._returnResult({data:null,error:u}):this._returnResult({data:l,error:null})})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}}async _startPasskeyAuthentication(e){var n;Zn(this.experimental);try{const{data:a,error:o}=await he(this.fetch,"POST",`${this.url}/passkeys/authentication/options`,{headers:this.headers,body:{gotrue_meta_security:{captcha_token:(n=e?.options)===null||n===void 0?void 0:n.captchaToken}}});return o?this._returnResult({data:null,error:o}):this._returnResult({data:a,error:null})}catch(a){if(oe(a))return this._returnResult({data:null,error:a});throw a}}async _verifyPasskeyAuthentication(e){Zn(this.experimental);try{const{data:n,error:a}=await he(this.fetch,"POST",`${this.url}/passkeys/authentication/verify`,{headers:this.headers,body:{challenge_id:e.challengeId,credential:e.credential},xform:qn});return a?this._returnResult({data:null,error:a}):(n.session&&(await this._saveSession(n.session),await this._notifyAllSubscribers("SIGNED_IN",n.session)),this._returnResult({data:n,error:null}))}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}}async _listPasskeys(){Zn(this.experimental);try{return await this._useSession(async e=>{const{data:{session:n},error:a}=e;if(a)return this._returnResult({data:null,error:a});if(!n)return this._returnResult({data:null,error:new It});const{data:o,error:l}=await he(this.fetch,"GET",`${this.url}/passkeys`,{headers:this.headers,jwt:n.access_token,xform:u=>({data:u,error:null})});return l?this._returnResult({data:null,error:l}):this._returnResult({data:o,error:null})})}catch(e){if(oe(e))return this._returnResult({data:null,error:e});throw e}}async _updatePasskey(e){Zn(this.experimental);try{return await this._useSession(async n=>{const{data:{session:a},error:o}=n;
55if(o)return this._returnResult({data:null,error:o});if(!a)return this._returnResult({data:null,error:new It});const{data:l,error:u}=await he(this.fetch,"PATCH",`${this.url}/passkeys/${e.passkeyId}`,{headers:this.headers,jwt:a.access_token,body:{friendly_name:e.friendlyName}});return u?this._returnResult({data:null,error:u}):this._returnResult({data:l,error:null})})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}}async _deletePasskey(e){Zn(this.experimental);try{return await this._useSession(async n=>{const{data:{session:a},error:o}=n;if(o)return this._returnResult({data:null,error:o});if(!a)return this._returnResult({data:null,error:new It});const{error:l}=await he(this.fetch,"DELETE",`${this.url}/passkeys/${e.passkeyId}`,{headers:this.headers,jwt:a.access_token,noResolveJson:!0});return l?this._returnResult({data:null,error:l}):this._returnResult({data:null,error:null})})}catch(n){if(oe(n))return this._returnResult({data:null,error:n});throw n}}}hl.nextInstanceID={};const d2=hl,h2="2.106.0";let Jo="";typeof Deno<"u"?Jo="deno":typeof document<"u"?Jo="web":typeof navigator<"u"&&navigator.product==="ReactNative"?Jo="react-native":Jo="node";const f2={"X-Client-Info":`supabase-js-${Jo}/${h2}`},p2={headers:f2},m2={schema:"public"},g2={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},y2={},b2={enabled:!1,respectSamplingDecision:!0};function v2(t,e,n,a){function o(l){return l instanceof n?l:new n(function(u){u(l)})}return new(n||(n=Promise))(function(l,u){function h(b){try{m(a.next(b))}catch(y){u(y)}}function p(b){try{m(a.throw(b))}catch(y){u(y)}}function m(b){b.done?l(b.value):o(b.value).then(h,p)}m((a=a.apply(t,[])).next())})}let Of=null;const w2="@opentelemetry/api";function x2(){return Of===null&&(Of=import(w2).catch(()=>null)),Of}function k2(){return v2(this,void 0,void 0,function*(){try{const t=yield x2();if(!t||!t.propagation||!t.context)return null;const e={};t.propagation.inject(t.context.active(),e);const n=e.traceparent;return n?{traceparent:n,tracestate:e.tracestate,baggage:e.baggage}:null}catch{return null}})}function _2(t){if(!t||typeof t!="string")return null;const e=t.split("-");if(e.length!==4)return null;const[n,a,o,l]=e;if(n.length!==2||a.length!==32||o.length!==16||l.length!==2)return null;const u=/^[0-9a-f]+$/i;return!u.test(n)||!u.test(a)||!u.test(o)||!u.test(l)||a==="00000000000000000000000000000000"||o==="0000000000000000"?null:{version:n,traceId:a,parentId:o,traceFlags:l,isSampled:(parseInt(l,16)&1)===1}}function S2(t,e){if(!t||!e||e.length===0)return!1;let n;if(t instanceof URL)n=t;else try{n=new URL(t)}catch{return!1}for(const a of e)try{if(typeof a=="string"){if(j2(n.hostname,a))return!0}else if(a instanceof RegExp){if(a.test(n.hostname))return!0}else if(typeof a=="function"&&a(n))return!0}catch{continue}return!1}function j2(t,e){if(e===t)return!0;if(e.startsWith("*.")){const n=e.slice(2);if(t.endsWith(n)&&(t===n||t.endsWith("."+n)))return!0}return!1}function T2(t){const e=[];try{const n=new URL(t);e.push(n.hostname)}catch{}return e.push("*.supabase.co","*.supabase.in"),e.push("localhost","127.0.0.1","[::1]"),e}function fl(t){"@babel/helpers - typeof";return fl=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},fl(t)}function A2(t,e){if(fl(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var a=n.call(t,e);if(fl(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function E2(t){var e=A2(t,"string");return fl(e)=="symbol"?e:e+""}function R2(t,e,n){return(e=E2(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function fw(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,a)}return n}function gt(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};
55e%2?fw(Object(n),!0).forEach(function(a){R2(t,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):fw(Object(n)).forEach(function(a){Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(n,a))})}return t}const C2=t=>t?(...e)=>t(...e):(...e)=>fetch(...e),O2=()=>Headers,N2=(t,e,n,a,o)=>{const l=C2(a),u=O2(),h=o?.enabled===!0,p=o?.respectSamplingDecision!==!1,m=h?T2(e):null;return async(b,y)=>{var w;const x=(w=await n())!==null&&w!==void 0?w:t;let k=new u(y?.headers);if(k.has("apikey")||k.set("apikey",t),k.has("Authorization")||k.set("Authorization",`Bearer ${x}`),m){const A=await M2(b,m,p);A&&(A.traceparent&&!k.has("traceparent")&&k.set("traceparent",A.traceparent),A.tracestate&&!k.has("tracestate")&&k.set("tracestate",A.tracestate),A.baggage&&!k.has("baggage")&&k.set("baggage",A.baggage))}return l(b,gt(gt({},y),{},{headers:k}))}};async function M2(t,e,n){if(!S2(typeof t=="string"||t instanceof URL?t:t.url,e))return null;const a=await k2();if(!a||!a.traceparent)return null;if(n){const o=_2(a.traceparent);if(o&&!o.isSampled)return null}return a}function pw(t){return typeof t=="boolean"?{enabled:t}:t}function D2(t){return t.endsWith("/")?t:t+"/"}function P2(t,e){var n,a,o,l,u,h;const{db:p,auth:m,realtime:b,global:y}=t,{db:w,auth:x,realtime:k,global:A}=e,_=pw(t.tracePropagation),j=pw(e.tracePropagation),O={db:gt(gt({},w),p),auth:gt(gt({},x),m),realtime:gt(gt({},k),b),storage:{},global:gt(gt(gt({},A),y),{},{headers:gt(gt({},(n=A?.headers)!==null&&n!==void 0?n:{}),(a=y?.headers)!==null&&a!==void 0?a:{})}),tracePropagation:{enabled:(o=(l=_?.enabled)!==null&&l!==void 0?l:j?.enabled)!==null&&o!==void 0?o:!1,respectSamplingDecision:(u=(h=_?.respectSamplingDecision)!==null&&h!==void 0?h:j?.respectSamplingDecision)!==null&&u!==void 0?u:!0},accessToken:async()=>""};return t.accessToken?O.accessToken=t.accessToken:delete O.accessToken,O}function L2(t){const e=t?.trim();if(!e)throw new Error("supabaseUrl is required.");if(!e.match(/^https?:\/\//i))throw new Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(D2(e))}catch{throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var U2=class extends d2{constructor(t){super(t)}},I2=class{constructor(t,e,n){var a,o;this.supabaseUrl=t,this.supabaseKey=e;const l=L2(t);if(!e)throw new Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",l),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",l),this.storageUrl=new URL("storage/v1",l),this.functionsUrl=new URL("functions/v1",l);const u=`sb-${l.hostname.split(".")[0]}-auth-token`,h={db:m2,realtime:y2,auth:gt(gt({},g2),{},{storageKey:u}),global:p2,tracePropagation:b2},p=P2(n??{},h);if(this.settings=p,this.storageKey=(a=p.auth.storageKey)!==null&&a!==void 0?a:"",this.headers=(o=p.global.headers)!==null&&o!==void 0?o:{},p.accessToken)this.accessToken=p.accessToken,this.auth=new Proxy({},{get:(b,y)=>{throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(y)} is not possible`)}});else{var m;this.auth=this._initSupabaseAuthClient((m=p.auth)!==null&&m!==void 0?m:{},this.headers,p.global.fetch)}this.fetch=N2(e,t,this._getAccessToken.bind(this),p.global.fetch,p.tracePropagation),this.realtime=this._initRealtimeClient(gt({headers:this.headers,accessToken:this._getAccessToken.bind(this),fetch:this.fetch},p.realtime)),this.accessToken&&Promise.resolve(this.accessToken()).then(b=>this.realtime.setAuth(b)).catch(b=>console.warn("Failed to set initial Realtime auth token:",b)),this.rest=new eC(new URL("rest/v1",l).href,{headers:this.headers,schema:p.db.schema,fetch:this.fetch,timeout:p.db.timeout,urlLengthLimit:p.db.urlLengthLimit}),this.storage=new fO(this.storageUrl.href,this.headers,this.fetch,n?.storage),p.accessToken||this._listenForAuthEvents()}get functions(){return new VR(this.functionsUrl.href,{headers:this.headers,customFetch:this.fetch})}from(t){return this.rest.from(t)}schema(t){return this.rest.schema(t)}rpc(t,e={},n={head:!1,get:!1,count:void 0}){return this.rest.rpc(t,e,n)}channel(t,e={config:{}}){return this.realtime.channel(t,e)}getChannels(){return this.realtime.getChannels()}removeChannel(t){return this.realtime.removeChannel(t)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getAccessToken(){var t=this,e,n;if(t.accessToken)return await t.accessToken();const{data:a}=await t.auth.getSession();return(e=(n=a.session)===null||n===void 0?void 0:n.access_token)!==null&&e!==void 0?e:t.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:t,persistSession:e,detectSessionInUrl:n,storage:a,userStorage:o,storageKey:l,flowType:u,lock:h,debug:p,throwOnError:m,experimental:b,lockAcquireTimeout:y,skipAutoInitialize:w},x,k){const A={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new U2({url:this.authUrl.href,headers:gt(gt({},A),x),storageKey:l,autoRefreshToken:t,persistSession:e,detectSessionInUrl:n,storage:a,userStorage:o,flowType:u,lock:h,debug:p,throwOnError:m,experimental:b,fetch:k,lockAcquireTimeout:y,skipAutoInitialize:w,hasCustomAuthorizationHeader:Object.keys(this.headers).some(_=>_.toLowerCase()==="authorization")})}_initRealtimeClient(t){return new LC(this.realtimeUrl.href,gt(gt({},t),{},{params:gt(gt({},{apikey:this.supabaseKey}),t?.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((t,e)=>{this._handleTokenChanged(t,"CLIENT",e?.access_token)})}_handleTokenChanged(t,e,n){(t==="TOKEN_REFRESHED"||t==="SIGNED_IN")&&this.changedAccessToken!==n?(this.changedAccessToken=n,this.realtime.setAuth(n)):t==="SIGNED_OUT"&&(this.realtime.setAuth(),e=="STORAGE"&&this.auth.signOut(),this.changedAccessToken=void 0)}};const B2=(t,e,n)=>new I2(t,e,n);function z2(){if(typeof window<"u")return!1;const t=globalThis.process;if(!t)return!1;const e=t.version;if(e==null)return!1;const n=e.match(/^v(\d+)\./);return n?parseInt(n[1],10)<=18:!1}z2()&&console.warn("â ï¸ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to N
55ode.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");function q2(){if(typeof window>"u")return;const t=location.hostname,n=["lovableproject.com","lovableproject-dev.com","lovable.app","gpt-eng.com","gptengineer.run"].some(_=>t===_||t.endsWith("."+_)),a="[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}",o=n?t.match(new RegExp("^(?:id-preview(?:-[a-z0-9]+)?|project)--("+a+")(?:-dev)?(?=\\.|$)","i"))?.[1]??t.match(new RegExp("^("+a+")(?=[.-])","i"))?.[1]:void 0,l=window.parent&&window.parent!==window;if(!o||!l)return localStorage;const u=t.endsWith(".lovableproject-dev.com")||t.endsWith(".gpt-eng.com"),h=u?/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$|^http:\/\/localhost:3000$/:/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$/,p=location.ancestorOrigins&&location.ancestorOrigins[0]||(document.referrer?new URL(document.referrer).origin:""),m=p&&h.test(p)?[p]:u?["https://lovable.dev","http://localhost:3000"]:["https://lovable.dev"],b="lovable-preview-auth:result",y=2e3,w=()=>Math.random().toString(36).slice(2)+Date.now().toString(36),x=(_,j,O)=>new Promise(R=>{const M=w();let K=!1,V;const $=ae=>{K||(K=!0,clearTimeout(V),window.removeEventListener("message",U),R(ae))},U=ae=>{if(m.indexOf(ae.origin)<0)return;const se=ae.data;se&&se.type===b&&se.requestId===M&&$(se)};window.addEventListener("message",U);const Q={type:_,requestId:M,projectId:o,key:j};O!==void 0&&(Q.value=O);for(const ae of m)window.parent.postMessage(Q,ae);V=setTimeout(()=>$(null),y)});let k=!0;const A=250;return{getItem:async _=>{let j=await x("lovable-preview-auth:get",_);return!j&&k&&(await new Promise(O=>setTimeout(O,A)),j=await x("lovable-preview-auth:get",_)),k=!1,j&&j.ok&&typeof j.value=="string"?j.value===""?(localStorage.removeItem(_),null):j.value:localStorage.getItem(_)},setItem:(_,j)=>(localStorage.setItem(_,j),x("lovable-preview-auth:set",_,j).then(O=>{O&&O.ok&&typeof O.value=="string"&&localStorage.getItem(_)===j&&(O.value===""?localStorage.removeItem(_):localStorage.setItem(_,O.value))})),removeItem:_=>(localStorage.removeItem(_),x("lovable-preview-auth:remove",_).then(()=>{}))}}function $2(){return B2("https://bucttoudookojnidqdhl.supabase.co","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImJ1Y3R0b3Vkb29rb2puaWRxZGhsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzkyNjAwMjgsImV4cCI6MjA5NDgzNjAyOH0.Rph3lOyYnPwp2Rvycn9ARko7PrGinfcmwl1ltirN9I0",{auth:{storage:q2(),persistSession:!0,autoRefreshToken:!0}})}let Nf;const H2=new Proxy({},{get(t,e,n){return Nf||(Nf=$2()),Reflect.get(Nf,e,n)}}),V2=Cs({type:"function"}).client(async({next:t})=>{const{data:e}=await H2.auth.getSession(),n=e.session?.access_token;return t({headers:n?{Authorization:`Bearer ${n}`}:{}})}),F2=Cs(),mw=zR(()=>({functionMiddleware:[V2],requestMiddleware:[F2]}));var Hu=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(t){return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},G2=class extends Hu{#e;#n;#t;constructor(){super(),this.#t=t=>{if(typeof window<"u"&&window.addEventListener){const e=()=>t();return window.addEventListener("visibilitychange",e,!1),()=>{window.removeEventListener("visibilitychange",e)}}}}onSubscribe(){this.#n||this.setEventListener(this.#t)}onUnsubscribe(){this.hasListeners()||(this.#n?.(),this.#n=void 0)}setEventListener(t){this.#t=t,this.#n?.(),this.#n=t(e=>{typeof e=="boolean"?this.setFocused(e):this.onFocus()})}setFocused(t){this.#e!==t&&(this.#e=t,this.onFocus())}onFocus(){const t=this.isFocused();this.listeners.forEach(e=>{e(t)})}isFocused(){return typeof this.#e=="boolean"?this.#e:globalThis.document?.visibilityState!=="hidden"}},Yx=new G2,K2={setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t),setInterval:(t,e)=>setInterval(t,e),clearInterval:t=>clearInterval(t)},Y2=class{#e=K2;#n=!1;setTimeoutProvider(t){this.#e=t}setTimeout(t,e){return this.#e.setTimeout(t,e)}clearTimeout(t){this.#e.clearTimeout(t)}setInterval(t,e){return this.#e.setInterval(t,e)}clearInterval(t){this.#e.clearInterval(t)}},op=new Y2;function W2(t){setTimeout(t,0)}var Z2=typeof window>"u"||"Deno"in globalThis;function Qn(){}function J2(t,e){return typeof t=="function"?t(e):t}function Q2(t){return typeof t=="number"&&t>=0&&t!==1/0}function X2(t,e){return Math.max(t+(e||0)-Date.now(),0)}function lp(t,e){return typeof t=="function"?t(e):t}function eN(t,e){return typeof t=="function"?t(e):t}function gw(t,e){const{type:n="all",exact:a,fetchStatus:o,predicate:l,queryKey:u,stale:h}=t;if(u){if(a){if(e.queryHash!==Lp(u,e.options))return!1}else if(!ml(e.queryKey,u))return!1}if(n!=="all"){const p=e.isActive();if(n==="active"&&!p||n==="inactive"&&p)return!1}return!(typeof h=="boolean"&&e.isStale()!==h||o&&o!==e.state.fetchStatus||l&&!l(e))}function yw(t,e){const{exact:n,status:a,predicate:o,mutationKey:l}=t;if(l){if(!e.options.mutationKey)return!1;if(n){if(pl(e.options.mutationKey)!==pl(l))return!1}else if(!ml(e.options.mutationKey,l))return!1}return!(a&&e.state.status!==a||o&&!o(e))}function Lp(t,e){return(e?.queryKeyHashFn||pl)(t)}function pl(t){return JSON.stringify(t,(e,n)=>cp(n)?Object.keys(n).sort().reduce((a,o)=>(a[o]=n[o],a),{}):n)}function ml(t,e){return t===e?!0:typeof t!=typeof e?!1:t&&e&&typeof t=="object"&&typeof e=="object"?Object.keys(e).every(n=>ml(t[n],e[n])):!1}var tN=Object.prototype.hasOwnProperty;function Wx(t,e,n=0){if(t===e)return t;if(n>500)return e;const a=bw(t)&&bw(e);if(!a&&!(cp(t)&&cp(e)))return e;const l=(a?t:Object.keys(t)).length,u=a?e:Object.keys(e),h=u.length,p=a?new Array(h):{};let m=0;for(let b=0;b<h;b++){const y=a?b:u[b],w=t[y],x=e[y];if(w===x){p[y]=w,(a?b<l:tN.call(t,y))&&m++;continue}if(w===null||x===null||typeof w!="object"||typeof x!="object"){p[y]=x;continue}const k=Wx(w,x,n+1);p[y]=k,k===w&&m++}return l===h&&m===l?t:p}function bw(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function cp(t){if(!vw(t))return!1;const e=t.constructor;if(e===void 0)return!0;const n=e.prototype;return!(!vw(n)||!n.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(t)!==Object.prototype)}function vw(t){return Object.prototype.toString.call(t)==="[object Object]"}function nN(t){return new Promise(e=>{op.setTimeout(e,t)})}function rN(t,e,n){return typeof n.structuralSharing=="function"?n.structuralSharing(t,e):n.structuralSharing!==!1?Wx(t,e):e}function sN(t,e,n=0){const a=[...t,e];return n&&a.length>n?a.slice(1):a}function aN(t,e,n=0){const a=[e,...t];return n&&a.length>n?a.slice(0,-1):a}var Up=Symbol();function Zx(t,e){return!t.queryFn&&e?.initialPromise?()=>e.initialPromise:!t.queryFn||t.queryFn===Up?()=>Promise.reject(new Error(`Missing queryFn: '${t.queryHash}'`)):t.queryFn}function iN(t,e,n){let a=!1,o;return Object.defineProperty(t,"signal",{enumerable:!0,get:()=>(o??=e(),a||(a=!0,o.aborted?n():o.addEventListener("abort",n,{once:!0})),o)}),t}var Jx=(()=>{let t=()=>Z2;return{isServer(){return t()},setIsServer(e){t=e}}})();function oN(){let t,e;const n=new Promise((o,l)=>{t=o,e=l});n.status="pending",n.catch(()=>{});function a(o){Object.assign(n,o),delete n.resolve,delete n.reject}return n.resolve=o=>{a({status:"fulfilled",value:o}),t(o)},n.reject=o=>{a({status:"rejected",reason:o}),e(o)},n}var lN=W2;function cN(){let t=[],e=0,n=h=>{h()},a=h=>{h()},o=lN;const l=h=>{e?t.push(h):o(()=>{n(h)})},u=()=>{const h=t;t=[],h.length&&o(()=>{a(()=>{h.forEach(p=>{n(p)})})})};return{batch:h=>{let p;e++;try{p=h()}finally{e--,e||u()}return p},batchCalls:h=>(...p)=>{l(()=>{h(...p)})},schedule:l,setNotifyFunction:h=>{n=h},setBatchNotifyFunction:h=>{a=h},setScheduler:h=>{o=h}}}var nn=cN(),uN=class extends Hu{#e=!0;#n;#t;constructor(){super(),this.#t=t=>{if(typeof window<"u"&&window.addEventListener){const e=()=>t(!0),n=()=>t(!1);return window.addEventListener("online",e,!1),window.addEventListener("offline",n,!1),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",n
vendor: 24,286 bytes, line 55
55)}}}}onSubscribe(){this.#n||this.setEventListener(this.#t)}onUnsubscribe(){this.hasListeners()||(this.#n?.(),this.#n=void 0)}setEventListener(t){this.#t=t,this.#n?.(),this.#n=t(this.setOnline.bind(this))}setOnline(t){this.#e!==t&&(this.#e=t,this.listeners.forEach(n=>{n(t)}))}isOnline(){return this.#e}},xu=new uN;function dN(t){return Math.min(1e3*2**t,3e4)}function Qx(t){return(t??"online")==="online"?xu.isOnline():!0}var up=class extends Error{constructor(t){super("CancelledError"),this.revert=t?.revert,this.silent=t?.silent}};function Xx(t){let e=!1,n=0,a;const o=oN(),l=()=>o.status!=="pending",u=A=>{if(!l()){const _=new up(A);w(_),t.onCancel?.(_)}},h=()=>{e=!0},p=()=>{e=!1},m=()=>Yx.isFocused()&&(t.networkMode==="always"||xu.isOnline())&&t.canRun(),b=()=>Qx(t.networkMode)&&t.canRun(),y=A=>{l()||(a?.(),o.resolve(A))},w=A=>{l()||(a?.(),o.reject(A))},x=()=>new Promise(A=>{a=_=>{(l()||m())&&A(_)},t.onPause?.()}).then(()=>{a=void 0,l()||t.onContinue?.()}),k=()=>{if(l())return;let A;const _=n===0?t.initialPromise:void 0;try{A=_??t.fn()}catch(j){A=Promise.reject(j)}Promise.resolve(A).then(y).catch(j=>{if(l())return;const O=t.retry??(Jx.isServer()?0:3),R=t.retryDelay??dN,M=typeof R=="function"?R(n,j):R,K=O===!0||typeof O=="number"&&n<O||typeof O=="function"&&O(n,j);if(e||!K){w(j);return}n++,t.onFail?.(n,j),nN(M).then(()=>m()?void 0:x()).then(()=>{e?w(j):k()})})};return{promise:o,status:()=>o.status,cancel:u,continue:()=>(a?.(),o),cancelRetry:h,continueRetry:p,canStart:b,start:()=>(b()?k():x().then(k),o)}}var ek=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Q2(this.gcTime)&&(this.#e=op.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(t){this.gcTime=Math.max(this.gcTime||0,t??(Jx.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#e!==void 0&&(op.clearTimeout(this.#e),this.#e=void 0)}},hN=class extends ek{#e;#n;#t;#s;#r;#a;#i;constructor(t){super(),this.#i=!1,this.#a=t.defaultOptions,this.setOptions(t.options),this.observers=[],this.#s=t.client,this.#t=this.#s.getQueryCache(),this.queryKey=t.queryKey,this.queryHash=t.queryHash,this.#e=xw(this.options),this.state=t.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#r?.promise}setOptions(t){if(this.options={...this.#a,...t},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const e=xw(this.options);e.data!==void 0&&(this.setState(ww(e.data,e.dataUpdatedAt)),this.#e=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#t.remove(this)}setData(t,e){const n=rN(this.state.data,t,this.options);return this.#o({data:n,type:"success",dataUpdatedAt:e?.updatedAt,manual:e?.manual}),n}setState(t,e){this.#o({type:"setState",state:t,setStateOptions:e})}cancel(t){const e=this.#r?.promise;return this.#r?.cancel(t),e?e.then(Qn).catch(Qn):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#e}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(t=>eN(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Up||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(t=>lp(t.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(t=0){return this.state.data===void 0?!0:t==="static"?!1:this.state.isInvalidated?!0:!X2(this.state.dataUpdatedAt,t)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#r?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#r?.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),this.#t.notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(e=>e!==t),this.observers.length||(this.#r&&(this.#i||this.#l()?this.#r.cancel({revert:!0}):this.#r.cancelRetry()),this.scheduleGc()),this.#t.notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}#l(){return this.state.fetchStatus==="paused"&&this.state.status==="pending"}invalidate(){this.state.isInvalidated||this.#o({type:"invalidate"})}async fetch(t,e){if(this.state.fetchStatus!=="idle"&&this.#r?.status()!=="rejected"){if(this.state.data!==void 0&&e?.cancelRefetch)this.cancel({silent:!0});else if(this.#r)return this.#r.continueRetry(),this.#r.promise}if(t&&this.setOptions(t),!this.options.queryFn){const h=this.observers.find(p=>p.options.queryFn);h&&this.setOptions(h.options)}const n=new AbortController,a=h=>{Object.defineProperty(h,"signal",{enumerable:!0,get:()=>(this.#i=!0,n.signal)})},o=()=>{const h=Zx(this.options,e),m=(()=>{const b={client:this.#s,queryKey:this.queryKey,meta:this.meta};return a(b),b})();return this.#i=!1,this.options.persister?this.options.persister(h,m,this):h(m)},u=(()=>{const h={fetchOptions:e,options:this.options,queryKey:this.queryKey,client:this.#s,state:this.state,fetchFn:o};return a(h),h})();this.options.behavior?.onFetch(u,this),this.#n=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==u.fetchOptions?.meta)&&this.#o({type:"fetch",meta:u.fetchOptions?.meta}),this.#r=Xx({initialPromise:e?.initialPromise,fn:u.fetchFn,onCancel:h=>{h instanceof up&&h.revert&&this.setState({...this.#n,fetchStatus:"idle"}),n.abort()},onFail:(h,p)=>{this.#o({type:"failed",failureCount:h,error:p})},onPause:()=>{this.#o({type:"pause"})},onContinue:()=>{this.#o({type:"continue"})},retry:u.options.retry,retryDelay:u.options.retryDelay,networkMode:u.options.networkMode,canRun:()=>!0});try{const h=await this.#r.start();if(h===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(h),this.#t.config.onSuccess?.(h,this),this.#t.config.onSettled?.(h,this.state.error,this),h}catch(h){if(h instanceof up){if(h.silent)return this.#r.promise;if(h.revert){if(this.state.data===void 0)throw h;return this.state.data}}throw this.#o({type:"error",error:h}),this.#t.config.onError?.(h,this),this.#t.config.onSettled?.(this.state.data,h,this),h}finally{this.scheduleGc()}}#o(t){const e=n=>{switch(t.type){case"failed":return{...n,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...n,fetchStatus:"paused"};case"continue":return{...n,fetchStatus:"fetching"};case"fetch":return{...n,...fN(n.data,this.options),fetchMeta:t.meta??null};case"success":const a={...n,...ww(t.data,t.dataUpdatedAt),dataUpdateCount:n.dataUpdateCount+1,...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#n=t.manual?a:void 0,a;case"error":const o=t.error;return{...n,error:o,errorUpdateCount:n.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:n.fetchFailureCount+1,fetchFailureReason:o,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...n,isInvalidated:!0};case"setState":return{...n,...t.state}}};this.state=e(this.state),nn.batch(()=>{this.observers.forEach(n=>{n.onQueryUpdate()}),this.#t.notify({query:this,type:"updated",action:t})})}};function fN(t,e){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:Qx(e.networkMode)?"fetching":"paused",...t===void 0&&{error:null,status:"pending"}}}function ww(t,e){return{data:t,dataUpdatedAt:e??Date.now(),error:null,isInvalidated:!1,status:"success"}}function xw(t){const e=typeof t.initialData=="function"?t.initialData():t.initialData,n=e!==void 0,a=n?typeof t.initialDataUpdatedAt=="function"?t.initialDataUpdatedAt():t.initialDataUpdatedAt:0;return{data:e,dataUpdateCount:0,dataUpdatedAt:n?a??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}function kw(t){return{onFetch:(e,n)=>{const a=e.options,o=e.fetchOptions?.meta?.fetchMore?.direction,l=e.state.data?.pages||[],u=e.state.data?.pageParams||[];let h={pages:[],pageParams:[]},p=0;const m=async()=>{let b=!1;const y=k=>{iN(k,()=>e.signal,()=>b=!0)},w=Zx(e.options,e.fetchOptions),x=async(k,A,_)=>{if(b)return Promise.reject();if(A==null&&k.pages.length)return Promise.resolve(k);const O=(()=>{const V={client:e.client,queryKey:e.queryKey,pageParam:A,direction:_?"backward":"forward",meta:e.options.meta};return y(V),V})(),R=await w(O),{maxPages:M}=e.options,K=_?aN:sN;return{pages:K(k.pages,R,M),pageParams:K(k.pageParams,A,M)}};if(o&&l.length){const k=o==="backward",A=k?pN:_w,_={pages:l,pageParams:u},j=A(a,_);h=await x(_,j,k)}else{const k=t??l.length;do{const A=p===0?u[0]??a.initialPageParam:_w(a,h);if(p>0&&A==null)break;h=await x(h,A),p++}while(p<k)}return h};e.options.persister?e.fetchFn=()=>e.options.persister?.(m,{client:e.client,queryKey:e.queryKey,meta:e.options.meta,signal:e.signal},n):e.fetchFn=m}}}function _w(t,{pages:e,pageParams:n}){const a=e.length-1;return e.length>0?t.getNextPageParam(e[a],e,n[a],n):void 0}function pN(t,{pages:e,pageParams:n}){return e.length>0?t.getPreviousPageParam?.(e[0],e,n[0],n):void 0}var mN=class extends ek{#e;#n;#t;#s;constructor(t){super(),this.#e=t.client,this.mutationId=t.mutationId,this.#t=t.mutationCache,this.#n=[],this.state=t.state||gN(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){this.#n.includes(t)||(this.#n.push(t),this.clearGcTimeout(),this.#t.notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){this.#n=this.#n.filter(e=>e!==t),this.scheduleGc(),this.#t.notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){this.#n.length||(this.state.status==="pending"?this.scheduleGc():this.#t.remove(this))}continue(){return this.#s?.continue()??this.execute(this.state.variables)}async execute(t){const e=()=>{this.#r({type:"continue"})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#s=Xx({fn:()=>this.options.mutationFn?this.options.mutationFn(t,n):Promise.reject(new Error("No mutationFn found")),onFail:(l,u)=>{this.#r({type:"failed",failureCount:l,error:u})},onPause:()=>{this.#r({type:"pause"})},onContinue:e,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#t.canRun(this)});const a=this.state.status==="pending",o=!this.#s.canStart();try{if(a)e();else{this.#r({type:"pending",variables:t,isPaused:o}),this.#t.config.onMutate&&await this.#t.config.onMutate(t,this,n);const u=await this.options.onMutate?.(t,n);u!==this.state.context&&this.#r({type:"pending",context:u,variables:t,isPaused:o})}const l=await this.#s.start();return await this.#t.config.onSuccess?.(l,t,this.state.context,this,n),await this.options.onSuccess?.(l,t,this.state.context,n),await this.#t.config.onSettled?.(l,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(l,null,t,this.state.context,n),this.#r({type:"success",data:l}),l}catch(l){try{await this.#t.config.onError?.(l,t,this.state.context,this,n)}catch(u){Promise.reject(u)}try{await this.options.onError?.(l,t,this.state.context,n)}catch(u){Promise.reject(u)}try{await this.#t.config.onSettled?.(void 0,l,this.state.variables,this.state.context,this,n)}catch(u){Promise.reject(u)}try{await this.options.onSettled?.(void 0,l,t,this.state.context,n)}catch(u){Promise.reject(u)}throw this.#r({type:"error",error:l}),l}finally{this.#t.runNext(this)}}#r(t){const e=n=>{switch(t.type){case"failed":return{...n,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...n,isPaused:!0};case"continue":return{...n,isPaused:!1};case"pending":return{...n,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...n,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...n,data:void 0,error:t.error,failureCount:n.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=e(this.state),nn.batch(()=>{this.#n.forEach(n=>{n.onMutationUpdate(t)}),this.#t.notify({mutation:this,type:"updated",action:t})})}};function gN(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var yN=class extends Hu{constructor(t={}){super(),this.config=t,this.#e=new Set,this.#n=new Map,this.#t=0}#e;#n;#t;build(t,e,n){const a=new mN({client:t,mutationCache:this,mutationId:++this.#t,options:t.defaultMutationOptions(e),state:n});return this.add(a),a}add(t){this.#e.add(t);const e=Jc(t);if(typeof e=="string"){const n=this.#n.get(e);n?n.push(t):this.#n.set(e,[t])}this.notify({type:"added",mutation:t})}remove(t){if(this.#e.delete(t)){const e=Jc(t);if(typeof e=="string"){const n=this.#n.get(e);if(n)if(n.length>1){const a=n.indexOf(t);a!==-1&&n.splice(a,1)}else n[0]===t&&this.#n.delete(e)}}this.notify({type:"removed",mutation:t})}canRun(t){const e=Jc(t);if(typeof e=="string"){const a=this.#n.get(e)?.find(o=>o.state.status==="pending");return!a||a===t}else return!0}runNext(t){const e=Jc(t);return typeof e=="string"?this.#n.get(e)?.find(a=>a!==t&&a.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){nn.batch(()=>{this.#e.forEach(t=>{this.notify({type:"removed",mutation:t})}),this.#e.clear(),this.#n.clear()})}getAll(){return Array.from(this.#e)}find(t){const e={exact:!0,...t};return this.getAll().find(n=>yw(e,n))}findAll(t={}){return this.getAll().filter(e=>yw(t,e))}notify(t){nn.batch(()=>{this.listeners.forEach(e=>{e(t)})})}resumePausedMutations(){const t=this.getAll().filter(e=>e.state.isPaused);return nn.batch(()=>Promise.all(t.map(e=>e.continue().catch(Qn))))}};function Jc(t){return t.options.scope?.id}var bN=class extends Hu{constructor(t={}){super(),this.config=t,this.#e=new Map}#e;build(t,e,n){const a=e.queryKey,o=e.queryHash??Lp(a,e);let l=this.get(o);return l||(l=new hN({client:t,queryKey:a,queryHash:o,options:t.defaultQueryOptions(e),state:n,defaultOptions:t.getQueryDefaults(a)}),this.add(l)),l}add(t){this.#e.has(t.queryHash)||(this.#e.set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const e=this.#e.get(t.queryHash);e&&(t.destroy(),e===t&&this.#e.delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){nn.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return this.#e.get(t)}getAll(){return[...this.#e.values()]}find(t){const e={exact:!0,...t};return this.getAll().find(n=>gw(e,n))}findAll(t={}){const e=this.getAll();return Object.keys(t).length>0?e.filter(n=>gw(t,n)):e}notify(t){nn.batch(()=>{this.listeners.forEach(e=>{e(t)})})}onFocus(){nn.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){nn.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},vN=class{#e;#n;#t;#s;#r;#a;#i;#l;constructor(t={}){this.#e=t.queryCache||new bN,this.#n=t.mutationCache||new yN,this.#t=t.defaultOptions||{},this.#s=new Map,this.#r=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#i=Yx.subscribe(async t=>{t&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#l=xu.subscribe(async t=>{t&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#i?.(),this.#i=void 0,this.#l?.(),this.#l=void 0)}isFetching(t){return this.#e.findAll({...t,fetchStatus:"fetching"}).length}isMutating(t){return this.#n.findAll({...t,status:"pending"}).length}getQueryData(t){const e=this.defaultQueryOptions({queryKey:t});return this.#e.get(e.queryHash)?.state.data}ensureQueryData(t){const e=this.defaultQueryOptions(t),n=this.#e.build(this,e),a=n.state.data;return a===void 0?this.fetchQuery(t):(t.revalidateIfStale&&n.isStaleByTime(lp(e.staleTime,n))&&this.prefetchQuery(e),Promise.resolve(a))}getQueriesData(t){return this.#e.findAll(t).map(({queryKey:e,state:n})=>{const a=n.data;return[e,a]})}setQueryData(t,e,n){const a=this.defaultQueryOptions({queryKey:t}),l=this.#e.get(a.queryHash)?.state.data,u=J2(e,l);if(u!==void 0)return this.#e.build(this,a).setData(u,{...n,manual:!0})}setQueriesData(t,e,n){return nn.batch(()=>this.#e.findAll(t).map(({queryKey:a})=>[a,this.setQueryData(a,e,n)]))}getQueryState(t){const e=this.defaultQueryOptions({queryKey:t});return this.#e.get(e.queryHash)?.state}removeQueries(t){const e=this.#e;nn.batch(()=>{e.findAll(t).forEach(n=>{e.remove(n)})})}resetQueries(t,e){const n=this.#e;return nn.batch(()=>(n.findAll(t).forEach(a=>{a.reset()}),this.refetchQueries({type:"active",...t},e)))}cancelQueries(t,e={}){const n={revert:!0,...e},a=nn.batch(()=>this.#e.findAll(t).map(o=>o.cancel(n)));return Promise.all(a).then(Qn).catch(Qn)}invalidateQueries(t,e={}){return nn.batch(()=>(this.#e.findAll(t).forEach(n=>{n.invalidate()}),t?.refetchType==="none"?Promise.resolve():this.refetchQueries({...t,type:t?.refetchType??t?.type??"active"},e)))}refetchQueries(t,e={}){const n={...e,cancelRefetch:e.cancelRefetch??!0},a=nn.batch(()=>this.#e.findAll(t).filter(o=>!o.isDisabled()&&!o.isStatic()).map(o=>{let l=o.fetch(void 0,n);return n.throwOnError||(l=l.catch(Qn)),o.state.fetchStatus==="paused"?Promise.resolve():l}));return Promise.all(a).then(Qn)}fetchQuery(t){const e=this.defaultQueryOptions(t);e.retry===void 0&&(e.retry=!1);const n=this.#e.build(this,e);return n.isStaleByTime(lp(e.staleTime,n))?n.fetch(e):Promise.resolve(n.state.data)}prefetchQuery(t){return this.fetchQuery(t).then(Qn).catch(Qn)}fetchInfiniteQuery(t){return t.behavior=kw(t.pages),this.fetchQuery(t)}prefetchInfiniteQuery(t){return this.fetchInfiniteQuery(t).then(Qn).catch(Qn)}ensureInfiniteQueryData(t){return t.behavior=kw(t.pages),this.ensureQueryData(t)}resumePausedMutations(){return xu.isOnline()?this.#n.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#n}getDefaultOptions(){return this.#t}setDefaultOptions(t){this.#t=t}setQueryDefaults(t,e){this.#s.set(pl(t),{queryKey:t,defaultOptions:e})}getQueryDefaults(t){const e=[...this.#s.values()],n={};return e.forEach(a=>{ml(t,a.queryKey)&&Object.assign(n,a.defaultOptions)}),n}setMutationDefaults(t,e){this.#r.set(pl(t),{mutationKey:t,defaultOptions:e})}getMutationDefaults(t){const e=[...this.#r.values()],n={};return e.forEach(a=>{ml(t,a.mutationKey)&&Object.assign(n,a.defaultOptions)}),n}defaultQueryOptions(t){if(t._defaulted)return t;const e={...this.#t.queries,...this.getQueryDefaults(t.queryKey),...t,_defaulted:!0};return e.queryHash||(e.queryHash=Lp(e.queryKey,e)),e.refetchOnReconnect===void 0&&(e.refetchOnReconnect=e.networkMode!=="always"),e.throwOnError===void 0&&(e.throwOnError=!!e.suspense),!e.networkMode&&e.persister&&(e.networkMode="offlineFirst"),e.queryFn===Up&&(e.enabled=!1),e}defaultMutationOptions(t){return t?._defaulted?t:{...this.#t.mutations,...t?.mutationKey&&this.getMutationDefaults(t.mutationKey),...t,_defaulted:!0}}clear(){this.#e.clear(),this.#n.clear()}},wN=I.createContext(void 0),xN=({client:t,children:e})=>(I.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),d.jsx(wN.Provider,{value:t,children:e}));const kN="/assets/styles-3LpmkJvn.css";const tk=(...t)=>t.filter((e,n,a)=>!!e&&e.trim()!==""&&a.indexOf(e)===n).join(" ").trim();const _N=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const SN=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,a)=>a?a.toUpperCase():n.toLowerCase());const Sw=t=>{const e=SN(t);return e.charAt(0).toUpperCase()+e.slice(1)};var jN={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 TN=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};const AN=I.forwardRef(({color:t="currentColor",size:e=24,strokeWidth:n=2,absoluteStrokeWidth:a,className:o="",children:l,iconNode:u,...h},p)=>I.createElement("svg",{ref:p,...jN,width:e,height:e,stroke:t,strokeWidth:a?Number(n)*24/Number(e):n,className:tk("lucide",o),...!l&&!TN(h)&&{"aria-hidden":"true"},...h},[...u.map(([m,b])=>I.createElement(m,b)),...Array.isArray(l)?l:[l]]));const Zt=(t,e)=>{const n=I.forwardRef(({className:a,...o},l)=>I.createElement(AN,{ref:l,iconNode:e,className:tk(`lucide-${_N(Sw(t))}`,`lucide-${t}`,a),...o}));return n.displayName=Sw(t),n};const EN=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],jw=Zt("arrow-right",EN);const RN=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 18h.01",key:"lrp35t"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M16 18h.01",key:"kzsmim"}]],CN=Zt("calendar-days",RN);const ON=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],ku=Zt("calendar",ON);const NN=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],$r=Zt("check",NN);const MN=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],DN=Zt("circle-question-mark",MN);const PN=[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]],Ip=Zt("credit-card",PN);const LN=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],UN=Zt("layers",LN);const IN=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]],BN=Zt("map-pin",IN);const zN=[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]],qN=Zt("map",zN);const $N=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],HN=Zt("menu",$N);const VN=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],FN=Zt("message-square",VN);const GN=[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]],KN=Zt("repeat",GN);const YN=[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]],WN=Zt("rocket",YN);const ZN=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],nk=Zt("smartphone",ZN);const JN=[["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"}]],rk=Zt("triangle-alert",JN);const QN=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],sk=Zt("users",QN);const XN=[["path",{d:"M18 6 6 18",key:"1bl5f8"}
55],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],_a=Zt("x",XN),ak="/assets/logo-automate-DRWfCZZS.png",Tw=[{to:"/",hash:"pricing",label:"Pricing"},{to:"/reviews",label:"Reviews"},{to:"/blog",label:"Blog"},{to:"/website-services",label:"Websites"},{to:"/helpcenter",label:"Help"},{to:"/contact",label:"Contact"}];function eM(){const[t,e]=I.useState(!1),[n,a]=I.useState(!1);return I.useEffect(()=>{const o=()=>e(window.scrollY>12);return o(),window.addEventListener("scroll",o,{passive:!0}),()=>window.removeEventListener("scroll",o)},[]),d.jsxs("header",{className:`fixed inset-x-0 top-0 z-50 transition-colors duration-300 ${t||n?"border-b border-border/60 bg-background/85 backdrop-blur-xl":"border-b border-transparent bg-transparent"}`,children:[d.jsxs("div",{className:"container-page flex h-16 items-center justify-between md:h-20",children:[d.jsx(ut,{to:"/",className:"flex items-center gap-2 focus-ring rounded-md",children:d.jsx("img",{src:ak,alt:"Automate â booking software for valeters and detailers",className:"h-7 w-auto md:h-8"})}),d.jsx("nav",{className:"hidden items-center gap-1 lg:flex",children:Tw.map(o=>d.jsx(ut,{to:o.to,hash:"hash"in o?o.hash:void 0,activeProps:{className:"text-foreground"},inactiveProps:{className:"text-muted-foreground hover:text-foreground"},className:"rounded-md px-3 py-2 text-sm font-medium transition-colors focus-ring",children:o.label},`${o.to}${"hash"in o?`#${o.hash}`:""}`))}),d.jsxs("div",{className:"hidden items-center gap-3 lg:flex",children:[d.jsx("a",{href:"https://admin.getautomate.io",className:"inline-flex h-10 items-center justify-center rounded-full border border-border-strong px-5 text-sm font-medium text-foreground transition-colors hover:border-primary/60 hover:bg-surface-2 focus-ring",children:"Log in"}),d.jsx("a",{href:"https://admin.getautomate.io/signup/about",className:"inline-flex h-10 items-center justify-center rounded-full bg-gradient-brand px-5 text-sm font-medium text-primary-foreground shadow-button transition-transform hover:-translate-y-0.5 focus-ring",children:"Start free trial"})]}),d.jsx("button",{onClick:()=>a(o=>!o),className:"inline-flex h-10 w-10 items-center justify-center rounded-md border border-border/60 text-foreground lg:hidden focus-ring","aria-label":"Toggle menu","aria-expanded":n,children:n?d.jsx(_a,{className:"h-5 w-5"}):d.jsx(HN,{className:"h-5 w-5"})})]}),n&&d.jsx("div",{className:"border-t border-border/60 bg-background/95 backdrop-blur-xl lg:hidden",children:d.jsxs("div",{className:"container-page flex flex-col gap-1 py-4",children:[Tw.map(o=>d.jsx(ut,{to:o.to,hash:"hash"in o?o.hash:void 0,onClick:()=>a(!1),className:"rounded-md px-3 py-3 text-base font-medium text-muted-foreground hover:bg-surface-1 hover:text-foreground",children:o.label},`${o.to}${"hash"in o?`#${o.hash}`:""}`)),d.jsx("a",{href:"https://admin.getautomate.io",onClick:()=>a(!1),className:"mt-2 inline-flex h-11 items-center justify-center rounded-full border border-border-strong px-5 text-sm font-medium text-foreground transition-colors hover:border-primary/60 hover:bg-surface-2",children:"Log in"}),d.jsx("a",{href:"https://admin.getautomate.io/signup/about",onClick:()=>a(!1),className:"inline-flex h-11 items-center justify-center rounded-full bg-gradient-brand px-5 text-sm font-medium text-primary-foreground shadow-button",children:"Start free trial"})]})})]})}const tM="/assets/trustpilot-stars-rCyplwSX.png",nM=[{title:"Product",links:[{to:"/mobile-valeting",label:"Mobile Valeting"},{to:"/detailing",label:"Detailing"},{to:"/website-services",label:"Websites"},{to:"/",hash:"pricing",label:"Pricing"}]},{title:"Company",links:[{to:"/blog",label:"Blog"},{to:"/contact",label:"Contact"},{to:"/helpcenter",label:"Help centre"},{to:"/affiliates",label:"Affiliate programme"},{to:"/roadmap",label:"Roadmap"},{to:"/feedback",label:"Feature requests"},{to:"/case-study/no2h2o",label:"Case study: No2H2O"},{to:"/case-study/washdoctors",label:"Case study: Washdoctors"}]},{title:"Legal",links:[{to:"/terms",label:"Terms"},{to:"/privacy",label:"Privacy"}]}];function rM(){return d.jsx("footer",{className:"border-t border-border/60 surface-1",children:d.jsxs("div",{className:"container-page py-16 md:py-20",children:[d.jsxs("div",{className:"grid gap-12 md:grid-cols-[1.5fr_1fr_1fr_1fr]",children:[d.jsxs("div",{className:"max-w-sm",children:[d.jsx(ut,{to:"/",className:"inline-flex items-center gap-2",children:d.jsx("img",{src:ak,alt:"Automate â booking software for valeters and detailers",className:"h-8 w-auto"})}),d.jsx("p",{className:"mt-4 text-sm text-muted-foreground",children:"The booking system built for mobile valeters and detailers. Online bookings, card payments, automated reminders, customer CRM."}),d.jsx("a",{href:"https://uk.trustpilot.com/review/getautomate.
55io",target:"_blank",rel:"noopener noreferrer",className:"mt-6 inline-flex items-center gap-2 no-underline",children:d.jsx("img",{src:tM,alt:"Rated 5 stars on Trustpilot",className:"h-10 w-auto",width:300,height:140,loading:"lazy"})})]}),nM.map(t=>d.jsxs("div",{children:[d.jsx("p",{className:"type-eyebrow mb-4",children:t.title}),d.jsx("ul",{className:"space-y-3",children:t.links.map(e=>d.jsx("li",{children:d.jsx(ut,{to:e.to,hash:"hash"in e?e.hash:void 0,className:"text-sm text-muted-foreground transition-colors hover:text-foreground",children:e.label})},`${e.to}${"hash"in e?`#${e.hash}`:""}`))})]},t.title))]}),d.jsxs("div",{className:"mt-12 flex flex-col items-start justify-between gap-4 border-t border-border/60 pt-8 text-xs text-muted-foreground md:flex-row md:items-center",children:[d.jsxs("p",{children:["© ",new Date().getFullYear()," Automate. All rights reserved."]}),d.jsx("p",{children:"Made in the UK · [email protected]"})]}),d.jsx("p",{className:"mt-6 text-xs text-muted-foreground",children:"Automate is a trading name of Washdoctors Ltd, registered in England and Wales (company no. 10428051)."})]})})}function sM(t){if(typeof document>"u")return;let e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",e.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}const aM=t=>{switch(t){case"success":return lM;case"info":return uM;case"warning":return cM;case"error":return dM;default:return null}},iM=Array(12).fill(0),oM=({visible:t,className:e})=>te.createElement("div",{className:["sonner-loading-wrapper",e].filter(Boolean).join(" "),"data-visible":t},te.createElement("div",{className:"sonner-spinner"},iM.map((n,a)=>te.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${a}`})))),lM=te.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},te.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),cM=te.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},te.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),uM=te.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},te.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),dM=te.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},te.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),hM=te.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},te.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),te.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),fM=()=>{const[t,e]=te.useState(document.hidden);return te.useEffect(()=>{const n=()=>{e(document.hidden)};return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),t};let dp=1;class pM{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{const n=this.subscribers.indexOf(e);this.subscribers.splice(n,1)}),this.publish=e=>{this.subscribers.forEach(n=>n(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{var n;const{message:a,...o}=e,l=typeof e?.id=="number"||((n=e.id)==null?void 0:n.length)>0?e.id:dp++,u=this.toasts.find(p=>p.id===l),h=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(l)&&this.dismissedToasts.delete(l),u?this.toasts=this.toasts.map(p=>p.id===l?(this.publish({...p,...e,id:l,title:a}),{...p,...e,id:l,dismissible:h,title:a}):p):this.addToast({title:a,...o,dismissible:h,id:l}),l},this.dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>
vendor: 3,006 bytes, line 55
55this.subscribers.forEach(n=>n({id:e,dismiss:!0})))):this.toasts.forEach(n=>{this.subscribers.forEach(a=>a({id:n.id,dismiss:!0}))}),e),this.message=(e,n)=>this.create({...n,message:e}),this.error=(e,n)=>this.create({...n,message:e,type:"error"}),this.success=(e,n)=>this.create({...n,type:"success",message:e}),this.info=(e,n)=>this.create({...n,type:"info",message:e}),this.warning=(e,n)=>this.create({...n,type:"warning",message:e}),this.loading=(e,n)=>this.create({...n,type:"loading",message:e}),this.promise=(e,n)=>{if(!n)return;let a;n.loading!==void 0&&(a=this.create({...n,promise:e,type:"loading",message:n.loading,description:typeof n.description!="function"?n.description:void 0}));const o=Promise.resolve(e instanceof Function?e():e);let l=a!==void 0,u;const h=o.then(async m=>{if(u=["resolve",m],te.isValidElement(m))l=!1,this.create({id:a,type:"default",message:m});else if(gM(m)&&!m.ok){l=!1;const y=typeof n.error=="function"?await n.error(`HTTP error! status: ${m.status}`):n.error,w=typeof n.description=="function"?await n.description(`HTTP error! status: ${m.status}`):n.description,k=typeof y=="object"&&!te.isValidElement(y)?y:{message:y};this.create({id:a,type:"error",description:w,...k})}else if(m instanceof Error){l=!1;const y=typeof n.error=="function"?await n.error(m):n.error,w=typeof n.description=="function"?await n.description(m):n.description,k=typeof y=="object"&&!te.isValidElement(y)?y:{message:y};this.create({id:a,type:"error",description:w,...k})}else if(n.success!==void 0){l=!1;const y=typeof n.success=="function"?await n.success(m):n.success,w=typeof n.description=="function"?await n.description(m):n.description,k=typeof y=="object"&&!te.isValidElement(y)?y:{message:y};this.create({id:a,type:"success",description:w,...k})}}).catch(async m=>{if(u=["reject",m],n.error!==void 0){l=!1;const b=typeof n.error=="function"?await n.error(m):n.error,y=typeof n.description=="function"?await n.description(m):n.description,x=typeof b=="object"&&!te.isValidElement(b)?b:{message:b};this.create({id:a,type:"error",description:y,...x})}}).finally(()=>{l&&(this.dismiss(a),a=void 0),n.finally==null||n.finally.call(n)}),p=()=>new Promise((m,b)=>h.then(()=>u[0]==="reject"?b(u[1]):m(u[1])).catch(b));return typeof a!="string"&&typeof a!="number"?{unwrap:p}:Object.assign(a,{unwrap:p})},this.custom=(e,n)=>{const a=n?.id||dp++;return this.create({jsx:e(a),id:a,...n}),a},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const gn=new pM,mM=(t,e)=>{const n=e?.id||dp++;return gn.addToast({title:t,...e,id:n}),n},gM=t=>t&&typeof t=="object"&&"ok"in t&&typeof t.ok=="boolean"&&"status"in t&&typeof t.status=="number",yM=mM,bM=()=>gn.toasts,vM=()=>gn.getActiveToasts(),GU=Object.assign(yM,{success:gn.success,info:gn.info,warning:gn.warning,error:gn.error,custom:gn.custom,message:gn.message,promise:gn.promise,dismiss:gn.dismiss,loading:gn.loading},{getHistory:bM,getToasts:vM});sM
vendor: 14,873 bytes, line 55
55("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function
vendor: 2,367 bytes, line 55
55Qc(t){return t.label!==void 0}const wM=3,xM="24px",kM="16px",Aw=4e3,_M=356,SM=14,jM=45,TM=200;function ur(...t){return t.filter(Boolean).join(" ")}function AM(t){const[e,n]=t.split("-"),a=[];return e&&a.push(e),n&&a.push(n),a}const EM=t=>{var e,n,a,o,l,u,h,p,m;const{invert:b,toast:y,unstyled:w,interacting:x,setHeights:k,visibleToasts:A,heights:_,index:j,toasts:O,expanded:R,removeToast:M,defaultRichColors:K,closeButton:V,style:$,cancelButtonStyle:U,actionButtonStyle:Q,className:ae="",descriptionClassName:se="",duration:ye,position:_e,gap:ze,expandByDefault:Ce,classNames:L,icons:Y,closeButtonAriaLabel:ie="Close toast"}=t,[Se,ne]=te.useState(null),[N,G]=te.useState(null),[Z,ee]=te.useState(!1),[X,ce]=te.useState(!1),[Te,ke]=te.useState(!1),[ve,zt]=te.useState(!1),[At,vt]=te.useState(!1),[Hn,Et]=te.useState(0),[Vs,gr]=te.useState(0),tr=te.useRef(y.duration||ye||Aw),Rn=te.useRef(null),qt=te.useRef(null),vn=j===0,Fs=j+1<=A,Mt=y.type,nr=y.dismissible!==!1,Dt=y.className||"",We=y.descriptionClassName||"",ft=te.useMemo(()=>_.findIndex(je=>je.toastId===y.id)||0,[_,y.id]),Cn=te.useMemo(()=>{var je;return(je=y.closeButton)!=null?je:V},[y.closeButton,V]),yr=te.useMemo(()=>y.duration||ye||Aw,[y.duration,ye]),Ki=te.useRef(0),br=te.useRef(0),jl=te.useRef(0),Yr=te.useRef(null),[Gs,en]=_e.split("-"),Vn=te.useMemo(()=>_.reduce((je,at,Pt)=>Pt>=ft?je:je+at.height,0),[_,ft]),Jt=fM(),Zu=y.invert||b,Yi=Mt==="loading";br.current=te.useMemo(()=>ft*ze+Vn,[ft,Vn]),te.useEffect(()=>{tr.current=yr},[yr]),te.useEffect(()=>{ee(!0)},[]),te.useEffect(()=>{const je=qt.current;if(je){const at=je.getBoundingClientRect().height;return gr(at),k(Pt=>[{toastId:y.id,height:at,position:y.position},...Pt]),()=>k(Pt=>Pt.filter(Qt=>Qt.toastId!==y.id))}},[k,y.id]),te.useLayoutEffect(()=>{if(!Z)return;const je=qt.current,at=je.style.height;je.style.height="auto";const Pt=je.getBoundingClientRect().height;je.style.height=at,gr(Pt),k(Qt=>Qt.find(ct=>ct.toastId===y.id)?Qt.map(ct=>ct.toastId===y.id?{...ct,height:Pt}:ct):[{toastId:y.id,height:Pt,position:y.position},...Qt])},[Z,y.title,y.description,k,y.id,y.jsx,y.action,y.cancel]);const rr=te.useCallback(()=>{ce(!0),Et(br.current),k(je=>je.filter(at=>at.toastId!==y.id)),setTimeout(()=>{M(y)},TM)},[y,M,k,br]);te.useEffect(()=>{if(y.promise&&Mt==="loading"||y.duration===1/0||y.type==="loading")return;let je;return R||x||Jt?(()=>
vendor: 5,696 bytes, line 55
55{if(jl.current<Ki.current){const Qt=new Date().getTime()-Ki.current;tr.current=tr.current-Qt}jl.current=new Date().getTime()})():tr.current!==1/0&&(Ki.current=new Date().getTime(),je=setTimeout(()=>{y.onAutoClose==null||y.onAutoClose.call(y,y),rr()},tr.current)),()=>clearTimeout(je)},[R,x,y,Mt,Jt,rr]),te.useEffect(()=>{y.delete&&(rr(),y.onDismiss==null||y.onDismiss.call(y,y))},[rr,y.delete]);function Ra(){var je;if(Y?.loading){var at;return te.createElement("div",{className:ur(L?.loader,y==null||(at=y.classNames)==null?void 0:at.loader,"sonner-loader"),"data-visible":Mt==="loading"},Y.loading)}return te.createElement(oM,{className:ur(L?.loader,y==null||(je=y.classNames)==null?void 0:je.loader),visible:Mt==="loading"})}const Ca=y.icon||Y?.[Mt]||aM(Mt);var Ks,sr;return te.createElement("li",{tabIndex:0,ref:qt,className:ur(ae,Dt,L?.toast,y==null||(e=y.classNames)==null?void 0:e.toast,L?.default,L?.[Mt],y==null||(n=y.classNames)==null?void 0:n[Mt]),"data-sonner-toast":"","data-rich-colors":(Ks=y.richColors)!=null?Ks:K,"data-styled":!(y.jsx||y.unstyled||w),"data-mounted":Z,"data-promise":!!y.promise,"data-swiped":At,"data-removed":X,"data-visible":Fs,"data-y-position":Gs,"data-x-position":en,"data-index":j,"data-front":vn,"data-swiping":Te,"data-dismissible":nr,"data-type":Mt,"data-invert":Zu,"data-swipe-out":ve,"data-swipe-direction":N,"data-expanded":!!(R||Ce&&Z),"data-testid":y.testId,style:{"--index":j,"--toasts-before":j,"--z-index":O.length-j,"--offset":`${X?Hn:br.current}px`,"--initial-height":Ce?"auto":`${Vs}px`,...$,...y.style},onDragEnd:()=>{ke(!1),ne(null),Yr.current=null},onPointerDown:je=>{je.button!==2&&(Yi||!nr||(Rn.current=new Date,Et(br.current),je.target.setPointerCapture(je.pointerId),je.target.tagName!=="BUTTON"&&(ke(!0),Yr.current={x:je.clientX,y:je.clientY})))},onPointerUp:()=>{var je,at,Pt;if(ve||!nr)return;Yr.current=null;const Qt=Number(((je=qt.current)==null?void 0:je.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Wr=Number(((at=qt.current)==null?void 0:at.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),ct=new Date().getTime()-((Pt=Rn.current)==null?void 0:Pt.getTime()),sn=Se==="x"?Qt:Wr,Ys=Math.abs(sn)/ct;if(Math.abs(sn)>=jM||Ys>.11){Et(br.current),y.onDismiss==null||y.onDismiss.call(y,y),G(Se==="x"?Qt>0?"right":"left":Wr>0?"down":"up"),rr(),zt(!0);return}else{var an,on;(an=qt.current)==null||an.style.setProperty("--swipe-amount-x","0px"),(on=qt.current)==null||on.style.setProperty("--swipe-amount-y","0px")}vt(!1),ke(!1),ne(null)},onPointerMove:je=>{var at,Pt,Qt;if(!Yr.current||!nr||((at=window.getSelection())==null?void 0:at.toString().length)>0)return;const ct=je.clientY-Yr.current.y,sn=je.clientX-Yr.current.x;var Ys;const an=(Ys=t.swipeDirections)!=null?Ys:AM(_e);!Se&&(Math.abs(sn)>1||Math.abs(ct)>1)&&ne(Math.abs(sn)>Math.abs(ct)?"x":"y");let on={x:0,y:0};const Oa=Fn=>1/(1.5+Math.abs(Fn)/20);if(Se==="y"){if(an.includes("top")||an.includes("bottom"))if(an.includes("top")&&ct<0||an.includes("bottom")&&ct>0)on.y=ct;else{const Fn=ct*Oa(ct);on.y=Math.abs(Fn)<Math.abs(ct)?Fn:ct}}else if(Se==="x"&&(an.includes("left")||an.includes("right")))if(an.includes("left")&&sn<0||an.includes("right")&&sn>0)on.x=sn;else{const Fn=sn*Oa(sn);on.x=Math.abs(Fn)<Math.abs(sn)?Fn:sn}(Math.abs(on.x)>0||Math.abs(on.y)>0)&&vt(!0),(Pt=qt.current)==null||Pt.style.setProperty("--swipe-amount-x",`${on.x}px`),(Qt=qt.current)==null||Qt.style.setProperty("--swipe-amount-y",`${on.y}px`)}},Cn&&!y.jsx&&Mt!=="loading"?te.createElement("button",{"aria-label":ie,"data-disabled":Yi,"data-close-button":!0,onClick:Yi||!nr?()=>{}:()=>{rr(),y.onDismiss==null||y.onDismiss.call(y,y)},className:ur(L?.closeButton,y==null||(a=y.classNames)==null?void 0:a.closeButton)},(sr=Y?.close)!=null?sr:hM):null,(Mt||y.icon||y.promise)&&y.icon!==null&&(Y?.[Mt]!==null||y.icon)?te.createElement("div",{"data-icon":"",className:ur(L?.icon,y==null||(o=y.classNames)==null?void 0:o.icon)},y.promise||y.type==="loading"&&!y.icon?y.icon||Ra():null,y.type!=="loading"?Ca:null):null,te.createElement("div",{"data-content":"",className:ur(L?.content,y==null||(l=y.classNames)==null?void 0:l.content)},te.createElement("div",{"data-title":"",className:ur(L?.title,y==null||(u=y.classNames)==null?void 0:u.title)},y.jsx?y.jsx:typeof y.title=="function"?y.title():y.title),y.description?te.createElement("div",{"data-description":"",className:ur(se,We,L?.description,y==null||(h=y.classNames)==null?void 0:h.description)},typeof y.description=="function"?y.description():y.description):null),te.isValidElement(y.cancel)?y.cancel:y.cancel&&Qc(y.cancel)?te.createElement("button",{"data-button":!0,"data-cancel":!0,style:y.cancelButtonStyle||U,onClick:je=>{Qc(y.cancel)&&nr&&(y.cancel.onClick==null||y.cancel.onClick.call(y.cancel,je),rr())},className:ur(L?.cancelButton,y==null||(p=y.classNames)==null?void 0:p.cancelButton)},y.cancel.label):null,te.isValidElement(y.action)?y.action:y.action&&Qc(y.action)?te.createElement("button",{"data-button":!0,"data-action":!0,style:y.actionButtonStyle||Q,onClick:je=>{Qc(y.action)&&(y.action.onClick==null||y.action.onClick.call(y.action,je),!je.defaultPrevented&&rr())},className:ur(L?.actionButton,y==null||(m=y.classNames)==null?void 0:m.actionButton)},y.action.label):null)};function Ew(){if(typeof window>"u"||typeof document>"u")return"ltr";const t=document.documentElement.getAttribute("dir");return t==="auto"||!t?window.getComputedStyle(document.documentElement).direction:t}function RM(t,e){const n={};return[t,e].forEach((a,o)=>{const l=o===1,u=l?"--mobile-offset":"--offset",h=l?kM:xM;function p(m){["top","right","bottom","left"].forEach(b=>{n[`${u}-${b}`]=typeof m=="number"?`${m}px`:m})}
vendor: 4,084 bytes, line 55
55typeof a=="number"||typeof a=="string"?p(a):typeof a=="object"?["top","right","bottom","left"].forEach(m=>{a[m]===void 0?n[`${u}-${m}`]=h:n[`${u}-${m}`]=typeof a[m]=="number"?`${a[m]}px`:a[m]}):p(h)}),n}const CM=te.forwardRef(function(e,n){const{id:a,invert:o,position:l="bottom-right",hotkey:u=["altKey","KeyT"],expand:h,closeButton:p,className:m,offset:b,mobileOffset:y,theme:w="light",richColors:x,duration:k,style:A,visibleToasts:_=wM,toastOptions:j,dir:O=Ew(),gap:R=SM,icons:M,containerAriaLabel:K="Notifications"}=e,[V,$]=te.useState([]),U=te.useMemo(()=>a?V.filter(Z=>Z.toasterId===a):V.filter(Z=>!Z.toasterId),[V,a]),Q=te.useMemo(()=>Array.from(new Set([l].concat(U.filter(Z=>Z.position).map(Z=>Z.position)))),[U,l]),[ae,se]=te.useState([]),[ye,_e]=te.useState(!1),[ze,Ce]=te.useState(!1),[L,Y]=te.useState(w!=="system"?w:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),ie=te.useRef(null),Se=u.join("+").replace(/Key/g,"").replace(/Digit/g,""),ne=te.useRef(null),N=te.useRef(!1),G=te.useCallback(Z=>{$(ee=>{var X;return(X=ee.find(ce=>ce.id===Z.id))!=null&&X.delete||gn.dismiss(Z.id),ee.filter(({id:ce})=>ce!==Z.id)})},[]);return te.useEffect(()=>gn.subscribe(Z=>{if(Z.dismiss){requestAnimationFrame(()=>{$(ee=>ee.map(X=>X.id===Z.id?{...X,delete:!0}:X))});return}setTimeout(()=>{tR.flushSync(()=>{$(ee=>{const X=ee.findIndex(ce=>ce.id===Z.id);return X!==-1?[...ee.slice(0,X),{...ee[X],...Z},...ee.slice(X+1)]:[Z,...ee]})})})}),[V]),te.useEffect(()=>{if(w!=="system"){Y(w);return}if(w==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?Y("dark"):Y("light")),typeof window>"u")return;const Z=window.matchMedia("(prefers-color-scheme: dark)");try{Z.addEventListener("change",({matches:ee})=>{Y(ee?"dark":"light")})}catch{Z.addListener(({matches:X})=>{try{Y(X?"dark":"light")}catch(ce){console.error(ce)}})}},[w]),te.useEffect(()=>{V.length<=1&&_e(!1)},[V]),te.useEffect(()=>{const Z=ee=>{var X;if(u.every(ke=>ee[ke]||ee.code===ke)){var Te;_e(!0),(Te=ie.current)==null||Te.focus()}ee.code==="Escape"&&(document.activeElement===ie.current||(X=ie.current)!=null&&X.contains(document.activeElement))&&_e(!1)};return document.addEventListener("keydown",Z),()=>document.removeEventListener("keydown",Z)},[u]),te.useEffect(()=>{if(ie.current)return()=>{ne.current&&(ne.current.focus({preventScroll:!0}),ne.current=null,N.current=!1)}},[ie.current]),te.createElement("section",{ref:n,"aria-label":`${K} ${Se}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},Q.map((Z,ee)=>{var X;const[ce,Te]=Z.split("-");return U.length?te.createElement("ol",{key:Z,dir:O==="auto"?Ew():O,tabIndex:-1,ref:ie,className:m,"data-sonner-toaster":!0,"data-sonner-theme":L,"data-y-position":ce,"data-x-position":Te,style:{"--front-toast-height":`${((X=ae[0])==null?void 0:X.height)||0}px`,"--width":`${_M}px`,"--gap":`${R}px`,...A,...RM(b,y)},onBlur:ke=>{N.current&&!ke.currentTarget.contains(ke.relatedTarget)&&(N.current=!1,ne.current&&(ne.current.focus({preventScroll:!0}),ne.current=null))},onFocus:ke=>{ke.target instanceof HTMLElement&&ke.target.dataset.dismissible==="false"||N.current||(N.current=!0,ne.current=ke.relatedTarget)},onMouseEnter:()=>_e(!0),onMouseMove:()=>_e(!0),onMouseLeave:()=>{ze||_e(!1)},onDragEnd:()=>_e(!1),onPointerDown:ke=>{ke.target instanceof HTMLElement&&ke.target.dataset.dismissible==="false"||Ce(!0)},onPointerUp:()=>Ce(!1)},U.filter(ke=>!ke.position&&ee===0||ke.position===Z).map((ke,ve)=>{var zt,At;return te.createElement(EM,{key:ke.id,icons:M,index:ve,toast:ke,defaultRichColors:x,duration:(zt=j?.duration)!=null?zt:k,className:j?.className,descriptionClassName:j?.descriptionClassName,invert:o,visibleToasts:_,closeButton:(At=j?.closeButton)!=null?At:p,interacting:ze,position:Z,style:j?.style,unstyled:j?.unstyled,classNames:j?.classNames,cancelButtonStyle:j?.cancelButtonStyle,actionButtonStyle:j?.actionButtonStyle,closeButtonAriaLabel:j?.closeButtonAriaLabel,removeToast:G,toasts:U.filter(vt=>
55vt.position==ke.position),heights:ae.filter(vt=>vt.position==ke.position),setHeights:se,expandByDefault:h,gap:R,expanded:ye,swipeDirections:e.swipeDirections})})):null}))}),OM=({...t})=>d.jsx(CM,{className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...t});function NM(){return d.jsx("div",{className:"flex min-h-screen items-center justify-center bg-background px-4",children:d.jsxs("div",{className:"max-w-md text-center",children:[d.jsx("h1",{className:"text-7xl font-bold text-foreground",children:"404"}),d.jsx("h2",{className:"mt-4 text-xl font-semibold text-foreground",children:"Page not found"}),d.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"The page you're looking for doesn't exist or has been moved."}),d.jsx("div",{className:"mt-6",children:d.jsx(ut,{to:"/",className:"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90",children:"Go home"})})]})})}function MM({error:t,reset:e}){console.error(t);const n=Wt();return d.jsx("div",{className:"flex min-h-screen items-center justify-center bg-background px-4",children:d.jsxs("div",{className:"max-w-md text-center",children:[d.jsx("h1",{className:"text-xl font-semibold tracking-tight text-foreground",children:"This page didn't load"}),d.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"Something went wrong on our end. You can try refreshing or head back home."}),d.jsxs("div",{className:"mt-6 flex flex-wrap justify-center gap-2",children:[d.jsx("button",{onClick:()=>{n.invalidate(),e()},className:"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90",children:"Try again"}),d.jsx("a",{href:"/",className:"inline-flex items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground transition-colors hover:bg-accent",children:"Go home"})]})]})})}const nt=fR()({head:()=>({meta:[{charSet:"utf-8"},{name:"viewport",content:"width=device-width, initial-scale=1"},{name:"author",content:"Automate"},{name:"google-site-verification",content:"5L9FwNO0mbHIRdyGZI6A9s9AXdz5O0LrttKO5WJrzV0"},{property:"og:type",content:"website"},{property:"og:site_name",content:"Automate"},{property:"og:locale",content:"en_GB"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:site",content:"@getautomate"},{property:"og:image",content:"https://storage.googleapis.com/gpt-engineer-file-uploads/1YtQdiZotQXfbPHwsSzNQKjQFl13/social-images/social-1779275528862-og-image.webp"},{name:"twitter:image",content:"https://storage.googleapis.com/gpt-engineer-file-uploads/1YtQdiZotQXfbPHwsSzNQKjQFl13/social-images/social-1779275528862-og-image.webp"}],links:[{rel:"stylesheet",href:kN}],scripts:[{children:"
vendor: 388 bytes, line 55
55!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init','
551367257602122319
vendor: 27 bytes, line 55
55');fbq('track','PageView');
55"},{children:"!function(o,a){if(o.oaiq)return;var q=o.oaiq=function(){(q.q=q.q||[]).push(arguments)};q.q=[];var s=a.createElement('script');s.async=!0;s.src='https://bzr.openai.com/pixel.js';var f=a.getElementsByTagName('script')[0];f.parentNode.insertBefore(s,f);}(window,document);oaiq('init','HyxBMf1HuWcyuJtj3K9Xbk');oaiq('measure','page_view');"},{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://getautomate.io/#organization",name:"Automate",url:"https://getautomate.io",logo:"https://getautomate.io/og-default.png",sameAs:["https://wa.me/447865628162"]},{"@type":"WebSite","@id":"https://getautomate.io/#website",url:"https://getautomate.io",name:"Automate",publisher:{"@id":"https://getautomate.io/#organization"},inLanguage:"en-GB"}]})}]}),shellComponent:DM,component:PM,notFoundComponent:NM,errorComponent:MM});function DM({children:t}){return d.jsxs("html",{lang:"en",children:[d.jsx("head",{children:d.jsx(DR,{})}),d.jsxs("body",{children:[d.jsx("noscript",{children:d.jsx("img",{height:"1",width:"1",style:{display:"none"},src:"https://www.facebook.com/tr?id=1367257602122319&ev=PageView&noscript=1",alt:""})}),t,d.jsx(PR,{})]})]})}function PM(){const{queryClient:t}=nt.useRouteContext();return d.jsx(xN,{client:t,children:d.jsxs("div",{className:"flex min-h-screen flex-col bg-background",children:[d.jsx(eM,{}),d.jsx("main",{className:"flex-1",children:d.jsx(xx,{})}),d.jsx(rM,{}),d.jsx(OM,{})]})})}const LM=lt("/whats-new")({loader:()=>{throw Ou({to:"/blog/$slug",params:{slug:"automate-major-update"},statusCode:301})}}),UM="modulepreload",IM=function(t){return"/"+t},Rw={},ht=function(e,n,a){let o=Promise.resolve();if(n&&n.length>0){let p=function(m){return Promise.all(m.map(b=>Promise.resolve(b).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};document.getElementsByTagName("link");const u=document.querySelector("meta[property=csp-nonce]"),h=u?.nonce||u?.getAttribute("nonce");o=p(n.map(m=>{if(m=IM(m),m in Rw)return;Rw[m]=!0;const b=m.endsWith(".css"),y=b?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${y}`))return;const w=document.createElement("link");if(w.rel=b?"stylesheet":UM,b||(w.as="script"),w.crossOrigin="",w.href=m,h&&w.setAttribute("nonce",h),document.head.appendChild(w),b)return new Promise((x,k)=>{w.addEventListener("load",x),w.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${m}`)))})}))}function l(u){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=u,window.dispatchEvent(h),!h.defaultPrevented)throw u}return o.then(u=>{for(const h of u||[])h.status==="rejected"&&l(h.reason);return e().catch(l)})},BM=()=>ht(()=>import("./welcome-DKf8UNaY.js"),__vite__mapDeps([0,1,2,3,4,5])),zM=lt("/welcome")({head:()=>({meta:[{title:"Welcome to Automate"},{name:"description",content:"Get started with Automate. Your onboarding checklist."},{property:"og:title",content:"Welcome to Automate"},{property:"og:description",content:"Get started with Automate. Your onboarding checklist."},{name:"robots",content:"noindex, nofollow"}]}),component:dt(BM,"component")}),qM=[{q:"What's the free website teardown?",a:"Send us your current website URL and we'll record a short Loom walking through what's losing you bookings â load speed, mobile experience, copy, calls-to-action and SEO basics. No obligation, no sales pitch. Yours to keep."},{q:"What does '3 months of Automate free' include?",a:"Every new website build includes 3 months of Automate at no extra cost â full booking page, calendar, reminders, payments and customer database. After 3 months you continue on your chosen plan, or cancel. No tie-in."},{q:"What are the flexible payment options?",a:"You can pay the full build cost up front, or spread it over 12 monthly payments interest-free. We also offer 6-month and 24-month plans on request."},{q:"How long does it take to build a website?",a:"Most sites are completed within 2-3 weeks from the initial brief. Landing pages can be turned around in as little as 7 days."},{q:"Do you only work with Automate customers?",a:"No. We build websites for any car detailing, valeting, mobile car wash or auto care business, whether you use Automate or not. If you do use Automate, we'll integrate your booking page seamlessly."},{q:"Can I update the website myself?",a:"It depends on the build. We can set up a content management system if you'd like to make your own updates, or we can handle all changes for you."},{q:"What if I need changes after launch?",a:"We offer ongoing support. Minor text and image changes are included. Larger updates are quoted separately at fair rates."},{q:"Do you host the website?",a:"Yes. Hosting, SSL certificates and basic maintenance are all included. We use fast, reliable infrastru
55cture so your site is always online."},{q:"What do you need from me to get started?",a:"Your logo, brand colours (if you have them), photos of your work, and a rough idea of what you'd like. We'll guide you through everything else."}],$M=()=>ht(()=>import("./website-services-BIJLA2Va.js"),__vite__mapDeps([6,7,8,3,9,10,4,11])),HM=lt("/website-services")({head:()=>({meta:[{title:"Car Detailing & Valeting Website Design UK | Automate"},{name:"description",content:"Custom car detailing, valeting and mobile car wash websites built in as little as 7 days. Mobile-first, SEO-optimised, online booking baked in. From £199 with flexible payment options. Free website teardown â no obligation."},{property:"og:title",content:"Car Detailing & Valeting Website Design UK | From £199"},{property:"og:description",content:"Mobile-first websites for detailers, valeters and mobile car wash businesses. Built in 7 days. Booking baked in. Free website teardown."},{property:"og:url",content:"https://getautomate.io/website-services"},{property:"og:type",content:"website"},{property:"og:image",content:"https://getautomate.io/og-default.png"}],links:[{rel:"canonical",href:"https://getautomate.io/website-services"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Service",serviceType:"Website Design",provider:{"@type":"Organization",name:"Automate",url:"https://getautomate.io"},areaServed:{"@type":"Country",name:"United Kingdom"},name:"Car Detailing & Valeting Website Design",description:"Custom-designed, mobile-first websites for car detailing, valeting, mobile car wash and auto care businesses with online booking integration.",offers:{"@type":"AggregateOffer",priceCurrency:"GBP",lowPrice:"199",highPrice:"1299",offerCount:"3"}})},{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:qM.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))})}]}),component:dt($M,"component")}),VM=()=>ht(()=>import("./unsubscribe-DHhL1rCh.js"),[]),FM=lt("/unsubscribe")({validateSearch:t=>({token:typeof t.token=="string"?t.token:""}),head:()=>({meta:[{title:"Unsubscribe â Automate"},{name:"description",content:"Manage your email preferences for Automate."},{property:"og:title",content:"Unsubscribe â Automate"},{property:"og:description",content:"Manage your email preferences for Automate."},{name:"robots",content:"noindex"}]}),component:dt(VM,"component")}),GM=()=>ht(()=>import("./terms-BWeeyJnM.js"),__vite__mapDeps([12,7])),KM=lt("/terms")({head:()=>({meta:[{title:"Terms of service | Automate"},{name:"description",content:"The terms of service that govern your use of Automate's booking software and related products."},{property:"og:title",content:"Terms of service | Automate"},{property:"og:description",content:"Terms governing your use of Automate."},{property:"og:url",content:"https://getautomate.io/terms"},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:"https://getautomate.io/terms"}]}),component:dt(GM,"component")}),Bp=Cs({type:"function"}),ik=Ds({method:"GET"}).handler(Vi("6c28b975d4ba1c579ddb2b618bf499718175b092f2765d9e2c4b0533efc79b4e")),YM=Ds({method:"GET"}).handler(Vi("cc3eac367700839e7ba3a008fa499412290e66e632684311aec1d9431321632b")),KU=Ds({method:"POST"}).middleware([Bp]).handler(Vi("4a785dcf0c61eb05b5b85aa143035ee679cf699a4488f8c13bbd5dc7fce31bd1")),YU=Ds({method:"GET"}).middleware([Bp]).handler(Vi("f3f16355535abc8b66b3a4e31174fcf3d8ada347bd451fb4c39bb1e379cd3437")),WU=Ds({method:"POST"}).middleware([Bp]).handler(Vi("4541797e7cb2fde5cdf91af2a97ecb14be36c2dab2b5e4a24f9c533df4318281")),WM=["under_review","planned","in_progress","shipped","declined"],ok={under_review:"Under review",planned:"Planned",in_progress:"In progress",shipped:"Shipped",declined:"Not planned"},ZU={under_review:"border-border-strong text-muted-foreground",planned:"border-primary/40 text-primary",in_progress:"border-primary/60 text-primary",shipped:"border-emerald-500/40 text-emerald-500",declined:"border-border/60 text-muted-foreground"},JU=["Bookings & diary","Payments","Customers & CRM","Packages & pricing","Reminders & messaging","Mobile app","Reports","Other"];function hp(t){return WM.includes(t)?t:"under_review"}function QU(t){const e=t.toLowerCase().replace(/[^a-z0-9\s-]/g,"").trim().replace(/\s+/g,"-").slice(0,60).replace(/^-+|-+$/g,""),n=Math.random().toString(36).slice(2,7);return`${e||"request"}-${n}`}function XU(t){return new Intl.DateTimeFormat("en-GB",{day:"numeric",month:"short",year:"numeric"}).format(new Date(t))}const ZM=()=>ht(()=>import("./roadmap-jQg7XP5K.js"),__vite__mapDeps([13,7])),Xc="https://getautomate.
55io/roadmap",Cw="Automate product roadmap: planned, in progress & shipped",Mf="The live Automate roadmap â features planned, in progress and shipped for UK valeters and detailers, voted for by the businesses using it.",JM=lt("/roadmap")({loader:async()=>({requests:await ik()}),head:({loaderData:t})=>{const e=t?.requests??[],n=o=>e.filter(l=>hp(l.status)===o),a=[...n("in_progress"),...n("planned"),...n("shipped")];return{meta:[{title:Cw},{name:"description",content:Mf},{property:"og:title",content:Cw},{property:"og:description",content:Mf},{property:"og:url",content:Xc},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"}],links:[{rel:"canonical",href:Xc}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"ItemList",name:"Automate product roadmap",description:Mf,url:Xc,numberOfItems:a.length,itemListElement:a.map((o,l)=>({"@type":"ListItem",position:l+1,url:`https://getautomate.io/feedback/${o.slug}`,item:{"@type":"CreativeWork",name:o.title,abstract:o.body.slice(0,300),url:`https://getautomate.io/feedback/${o.slug}`,datePublished:o.created_at,about:o.category,creativeWorkStatus:ok[hp(o.status)],interactionStatistic:{"@type":"InteractionCounter",interactionType:"https://schema.org/LikeAction",userInteractionCount:o.vote_count},isPartOf:{"@type":"SoftwareApplication",name:"Automate",applicationCategory:"BusinessApplication",url:"https://getautomate.io"}}}))})},{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Automate",item:"https://getautomate.io"},{"@type":"ListItem",position:2,name:"Roadmap",item:Xc}]})}]}},component:dt(ZM,"component")}),QM=()=>ht(()=>import("./reviews-Cz5KPY76.js"),__vite__mapDeps([14,7,15,16,17,18,19,8])),Ow="https://getautomate.io/reviews",Nw="Reviews â 100% 5-Star on Trustpilot | Automate",Mw="The original booking system for UK valeters and detailers â 100% 5-star rated on Trustpilot.",XM=lt("/reviews")({head:()=>({meta:[{title:Nw},{name:"description",content:Mw},{property:"og:title",content:Nw},{property:"og:description",content:Mw},{property:"og:url",content:Ow},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:Ow}]}),component:dt(QM,"component")}),eD=()=>ht(()=>import("./privacy-Dm_J3iXY.js"),__vite__mapDeps([20,7])),tD=lt("/privacy")({head:()=>({meta:[{title:"Privacy policy | Automate"},{name:"description",content:"How Automate collects, uses and protects your personal data when you use our booking software and website."},{property:"og:title",content:"Privacy policy | Automate"},{property:"og:description",content:"How Automate collects, uses and protects your personal data."},{property:"og:url",content:"https://getautomate.io/privacy"},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:"https://getautomate.io/privacy"}]}),component:dt(eD,"component")}),nD=[{question:"What happens after my free trial?",answer:"After 14 days, your chosen plan billing begins automatically. You can cancel any time before day 15 and you won't be charged a penny."},{question:"Is there a contract?",answer:"No. Automate is pay-as-you-go with no long-term commitment. Cancel any time from the dashboard."},{question:"Can I switch plans later?",answer:"Yes. You can add or remove technicians at any point. Changes take effect on your next billing cycle."},{question:"Do I need to be tech-savvy?",answer:"Not at all. Automate is built for valeters and detailers, not developers. If you can use a smartphone, you can run your business on Automate."},{question:"What payment methods do you accept?",answer:"All major credit and debit cards via Stripe. Your customers can also pay by card at the point of booking or on completion."},{question:"Will my existing customers be able to use it?",answer:"Yes. You can import your customer list and they can book through your new booking page right away. Nothing changes for them, except a much better experience."}],rD=[{question:"Is Automate just for mobile valeters?",answer:"No. Automate works for any mobile car care business: valeters, detailers, PPF installer
55s, smart repairers. But the booking flow, CRM and reminders are specifically optimised for mobile operators working out of a van."},{question:"I'm a one-man-band. Is it worth it?",answer:"Absolutely. Solo operators benefit the most. You're the technician, the receptionist and the accountant. Automate handles the bookings and admin so you can focus on the work. Most solo users save 5â10 hours a week."},{question:"I already use WhatsApp to manage bookings. Why switch?",answer:"WhatsApp works until it doesn't. You can't take payments, send automated reminders, track customer history, or stop double-bookings. Automate does all of that and gives your customers a professional booking experience."},{question:"Can I keep my existing customers?",answer:"Yes. Import your customer list and they'll book through your new page. Nothing changes for them except a better experience."},{question:"Do my customers need to download an app?",answer:"No. Your booking page is a web page. Customers visit the link, pick a date, choose a service and book. No app download required."}],sD=[{question:"Is Automate just for mobile detailers?",answer:"No. Automate works for studio-based detailing units, mobile detailers, and businesses that do both. Whether you've got a single bay or a multi-bay studio, Automate adapts to how you work."},{question:"I offer ceramic coatings, PPF and correction. Can customers choose these when booking?",answer:"Absolutely. You set up your services and packages, and customers choose what they need when they book. You control what's available, the duration and the pricing."},{question:"Can I take deposits when customers book?",answer:"Yes. You can require a deposit at the point of booking with the balance collected on completion. This protects you against no-shows on high-value detailing work."},{question:"Can I manage multiple bays and technicians?",answer:"Yes. Assign jobs to specific bays and technicians, see your whole studio on one calendar, and get a warning before you overbook. Drag-and-drop rescheduling keeps the day tidy as things change."},{question:"Do my customers need to download an app?",answer:"No. Your booking page is a web page. Customers visit the link and book. Works on any phone, tablet or computer with no download required."}],aD=[{question:"What is a car detailing booking system?",answer:"A car detailing booking system is software that lets your customers book and pay for detailing services online, without phone calls or DMs. Automate is built specifically for UK detailers: it handles packages and tiers, takes card deposits, sends automated reminders, manages your calendar across bays and technicians, and keeps every customer in a built-in CRM."},{question:"Can customers pay a deposit when they book?",answer:"Yes. You can require a card deposit at the point of booking, with the balance taken on completion. This is the single biggest fix for no-shows on high-value detailing work like ceramic coatings, PPF and paint correction. Stripe-powered, refundable from your dashboard."},{question:"Does the booking system work for mobile detailers and studio detailers?",answer:"Both. Solo mobile detailers run their week from the technician app with one-tap navigation to the next job. Studios run multi-bay scheduling, assign jobs to technicians, and manage a team calendar. Same product, configured to how you work."},{question:"How does the booking system handle ceramic, PPF and correction packages?",answer:"You build packages and tiers in your booking page â ceramic stages, PPF coverage levels, correction stages, maintenance plans. Customers pick what they need, see live pricing by vehicle size, pay a deposit and book. You stay in control of what's available and when."},{question:"Do my customers need to download an app to book?",answer:"No. The booking system is a web page. Customers visit your link, choose a package, pay a deposit and book. Works on any phone, tablet or laptop. No download, no signup, no friction."},{question:"How long does it take to set up?",answer:"Most detailers are taking their first online booking on the same afternoon. Import your services, set your prices, point your Instagram bio at your new booking page. The 14-day free trial gives you time to get everything dialled in before any payment."}],iD=[{question:"What is a detailing CRM?",answer:"A detailing CRM is software that stores every customer, every vehicle and every job in one place, then helps you bring those customers back. Automate's detailing CRM goes further: bookings, deposits, invoices, reminders and re-booking nudges are all baked in, so you don't run your customer relationships in one tool and your business in another."},{question:"How is this different from a generic CRM like HubSpot or Pipedrive?",answer:"Generic CRMs are built for sales pipelines â leads moving through deal stages. Detailing isn't a pipeline, it's a relationship. Automate is built around vehicles, jobs, products used and re-booking windows. The customer record knows what ceramic batch went on which car in 2024, not which stage of a sales funnel a lead is in."},{question:"Can the CRM handle customers with multiple vehicles?",answer:"Yes. O
55ne customer profile can hold any number of vehicles, each with its own job history, photos, paint codes and notes. When the customer books their second car in, you don't create a duplicate â it sits under the same profile."},{question:"How do automated re-booking nudges work?",answer:"Set a re-booking window per service â for example, 3 months after a maintenance wash or 12 months after a ceramic application. When a customer hits that window, Automate sends them a branded email or SMS with a one-tap link back into your booking page. It's the repeat-work engine most detailers leave on the table."},{question:"Does the CRM include bookings and payments, or do I need other tools?",answer:"Everything is in one place. Online bookings, card deposits via Stripe, balance collection, automated invoices and the customer record all live in the same workflow. No syncing between Google Calendar, a payment processor and a separate CRM."},{question:"Can I import my existing customer list?",answer:"Yes. Import your customers from a spreadsheet or another tool and they'll be ready to book through your new page right away. We'll help you get the import clean during your free trial."}],oD="/assets/hero-valeting-BRUZzRWZ.jpg",zp="/assets/hero-detailing-CTfpbR5y.jpg",Vu="/assets/hero-mockup-SlSGS6YF.webp",Fu="/assets/mockup-booking-B-m6Oomo.png",Gu="/assets/mockup-schedule-Cf2N3AQv.png",Ku="/assets/mockup-payments-COJsBKz8.png",ki={meta:{title:"Mobile valeting booking software | Automate",description:"Booking software for mobile valeters â branded booking page, automated reminders, card payments and CRM. Built for the van.",url:"https://getautomate.io/mobile-valeting"},hero:{eyebrow:"Mobile valeting software",headlineLead:"Fill your van every day.",headlineGradient:"Without picking up the phone.",subhead:"The booking system built for mobile valeters. Branded booking page, route-aware scheduling, card payments and automated reminders, so you can finish the wash, not the admin.",backgroundImage:oD,mockupImage:Vu,mockupAlt:"Automate technician app showing today's valeting jobs"},testimonials:[{quote:"Took me an afternoon to get set up and I've not looked back. Bookings come in while I sleep.",name:"Ryan T.",role:"Mobile valeter · Verified on Trustpilot"},{quote:"Bookings have become seamless. The reminders cut my no-shows massively.",name:"James Wagstaff",role:"Mobile valeter · Verified on Trustpilot"},{quote:"Hands down the best booking platform I've used. Simple to set up, easy for customers.",name:"Ahmed",role:"Mobile valeter · Verified on Trustpilot"}],features:{eyebrow:"Built for the van",headlineLead:"Everything a mobile valeter needs.",headlineGradient:"Nothing they don't.",items:[{icon:ku,title:"A booking page that fills your week",body:"Your own branded page where customers pick a date, choose a wash, pay and book, 24/7. No more WhatsApps at 9pm. No more missed jobs because you were elbow-deep in a wheel arch.",image:Fu,alt:"Mobile valeting booking page with service selection",bullets:["Deposits or full payment at the point of booking","Email & SMS confirmations sent automatically","Recurring bookings for weekly and fortnightly regulars","Cancellation policies that protect your day"]},{icon:nk,title:"Your whole day in your pocket",body:"The technician's app shows what's next, navigates you there, and lets you take card payment on the driveway. No paper diary, no awkward calls back, no double bookings while you're under a bonnet.",image:Gu,alt:"Technician app showing today's mobile valeting route",bullets:["Jobs in running order with one-tap navigation","Customer history, vehicle details and notes","Mark complete and take payment on site","Push notifications for new bookings and changes"]},{icon:qN,title:"Price every postcode properly",body:"Set the areas you cover and price travel differently for each one. ULEZ, congestion, that village 20 minutes out. Never out of pocket on a job again.",image:Ku,alt:"Working area map with per-territory pricing",bullets:["Multiple working areas with custom pricing","Travel surcharges baked into the booking flow","Block postcodes you don't want to cover"]}]},whySwitch:{eyebrow:"Why valeters switch",headline:"Stop running your business from your phone screen at 10pm.",without:["Replying to WhatsApp between jobs","Double-booking your Saturday","Chasing bank transfers next week","N
55o idea who's due a re-book"],with:["Customers book themselves, 24/7","Every job in one calendar","Card payments at the point of booking","Re-booking nudges run themselves"]},finalCta:{eyebrow:"Ready when you are",headlineLead:"Stop chasing your week.",headlineGradient:"Start filling your van.",body:"14-day free trial. No card required. If it doesn't fit how you valet, we'll help you walk away cleanly. No awkward calls, no chasing."}},_i={meta:{title:"Detailing studio booking software | Automate",description:"Bookings, deposits and CRM for detailing studios and mobile detailers. Built for ceramic coatings, PPF and paint correction.",url:"https://getautomate.io/detailing"},hero:{eyebrow:"Detailing studio software",headlineLead:"Bookings, deposits, repeat work.",headlineGradient:"Run the studio like a studio.",subhead:"The booking system built for detailers. Take deposits on ceramic and PPF, manage your bays and keep every customer in one CRM, without bolting on three more tools.",backgroundImage:zp,mockupImage:Vu,mockupAlt:"Automate dashboard showing detailing studio jobs"},testimonials:[{quote:"Deposits at booking changed everything. Our no-show rate on ceramic jobs went to zero.",name:"Marcus",role:"Detailing studio · Verified on Trustpilot"},{quote:"Juggling jobs across two bays used to be a nightmare. Now it's one calendar, done.",name:"Fabio Teodoro",role:"Studio owner · Verified on Trustpilot"},{quote:"Customers can finally see what we offer and book a ceramic slot without DM'ing me at midnight.",name:"Kenneth McD",role:"Detailer · Verified on Trustpilot"}],features:{eyebrow:"Built for the studio",headlineLead:"Everything a detailer needs.",headlineGradient:"Nothing they don't.",items:[{icon:UN,title:"Packages that fit how you actually quote",body:"Ceramic tiers, PPF coverage levels, paint correction stages, maintenance plans. Build packages and add-ons that mirror your studio menu. Customers choose, pay a deposit, and book in one go.",image:Fu,alt:"Detailing booking page with ceramic and PPF packages",bullets:["Tiered packages with upsells and add-ons","Deposits required at the point of booking","Custom durations per service","Vehicle size pricing built in"]},{icon:ku,title:"One calendar across every bay",body:"Schedule a ceramic in one bay while a correction runs in the next. Assign jobs to the right technician, reschedule with a drag, and stop the double-bookings before they happen.",image:Gu,alt:"Studio calendar with jobs across multiple bays",bullets:["Team and bay assignment per job","Drag-and-drop rescheduling","Capacity warnings before you overbook","Customer history visible from every job"]},{icon:Ip,title:"Deposits in. Balance on completion.",body:"Take a deposit when customers book. Protect the slot, protect the cashflow. Collect the balance on the day, send a professional invoice, and watch the no-show rate drop.",image:Ku,alt:"Deposit and balance payment tracking for detailing jobs",bullets:["Card deposits via Stripe UK","Balance collection on completion","Automatic invoicing with your branding","Refunds handled from the dashboard"]}]},whySwitch:{eyebrow:"Why detailers switch",headline:"Stop running a £15K studio with a £0 booking system.",without:["Evenings replying to Instagram DMs","Writing jobs in a diary, hoping you don't double-book a bay","Chasing customers for deposits and bank transfers","No-shows on high-value ceramic and correction jobs"],with:["Customers book and pay deposits, 24/7","Multi-day jobs scheduled across bays automatically","Deposits taken before the slot is held","Reminders that cut no-shows on every job size"]},finalCta:{eyebrow:"Ready when you are",headlineLead:"Run the studio properly.",headlineGradient:"Without another spreadsheet.",body:"14-day free trial. No card required. We'll help you import your packages, set up deposits and get your first online booking inside an afternoon."}},Si={meta:{title:"Car Detailing Booking System & CRM | Automate",description:"Online bookings, deposits, reminders and CRM for UK detailers. The booking system that fills your week. 14-day free trial.",url:"https://getautomate.
55io/car-detailing-booking-system"},hero:{eyebrow:"Car detailing booking system",headlineLead:"The car detailing booking system",headlineGradient:"that fills your week.",subhead:"Online bookings, deposits, automated reminders and a built-in CRM. The booking system UK detailers use to stop chasing DMs and start filling the bay. 14-day free trial, no card required.",backgroundImage:zp,mockupImage:Vu,mockupAlt:"Car detailing booking system shown on phone and laptop"},testimonials:[{quote:"Deposits at booking changed everything. Our no-show rate on ceramic jobs went to zero.",name:"Marcus",role:"Detailing studio · Verified on Trustpilot"},{quote:"Bookings come in while I sleep. It's paid for itself ten times over in the first month.",name:"Ryan T.",role:"Detailer · Verified on Trustpilot"},{quote:"Customers can finally see what we offer and book a slot without DM'ing me at midnight.",name:"Kenneth McD",role:"Detailer · Verified on Trustpilot"}],features:{eyebrow:"How the booking system works",headlineLead:"A booking system built around how detailers work.",headlineGradient:"Not the other way around.",items:[{icon:ku,title:"A booking page that converts",body:"Your own branded booking page where customers pick a package, choose a date, pay a deposit and confirm. 24/7, on any device. No more 'just checking my diary' phone tag.",image:Fu,alt:"Car detailing booking page with ceramic and correction packages",bullets:["Packages, tiers and add-ons that mirror your menu","Deposits taken at the point of booking","Email & SMS confirmations sent automatically","Vehicle size pricing built in"]},{icon:Ip,title:"Deposits in. Balance on completion.",body:"Take a card deposit when the customer books to lock the slot. Collect the balance on the day. Stripe-powered, automatically invoiced, refundable from the dashboard. No more waiting on bank transfers.",image:Ku,alt:"Deposit and balance payments handled by the booking system",bullets:["Card deposits via Stripe UK","Automated invoices with your branding","Balance collection on the day","Refunds and part-payments handled in two clicks"]},{icon:ku,title:"One calendar. Every job. Every bay.",body:"See every booking in one place. Assign jobs to the right technician or bay, reschedule with a drag, and get warned before you overbook. Works the same whether you're solo in a unit or running three bays and a team.",image:Gu,alt:"Detailing studio calendar with jobs across multiple bays",bullets:["Drag-and-drop rescheduling","Multi-bay and multi-technician assignment","Capacity warnings before you overbook","Customer history visible from every job"]}]},whySwitch:{eyebrow:"Why detailers switch to Automate",headline:"Stop running a high-ticket business with a £0 booking system.",without:["Manually replying to DMs and 'how much for a ceramic?'","Diary in a notebook, deposits chased over bank transfer","No-shows on the high-value jobs that hurt the most","No idea which customers are due a re-book"],with:["Customers self-book and pay deposits 24/7","Every booking in one calendar, across every bay","Reminders that cut no-shows on ceramic and correction work","Re-booking nudges that bring regulars back automatically"]},finalCta:{eyebrow:"Ready when you are",headlineLead:"Start taking bookings.",headlineGradient:"Stop chasing DMs.",body:"14-day free trial on every plan. Cancel any time during the trial and you won't be charged. If it doesn't fit, we'll help you walk away cleanly."}},ji={meta:{title:"Detailing CRM for UK Detailers | Automate",description:"Customer profiles, job history, automated re-booking, deposits and one calendar â the CRM built for how detailers actually work.",url:"https://getautomate.io/detailing-crm"},hero:{eyebrow:"Detailing CRM",headlineLead:"The detailing CRM",headlineGradient:"built for how detailers actually work.",subhead:"Every customer, every vehicle, every job in one place. Automated re-booking nudges, deposits, reminders and a calendar that fits ceramic, PPF and correction work. Not a generic CRM bolted onto a booking widget.",backgroundImage:zp,mockupImage:Vu,mockupAlt:"Detailing CRM showing customer profile and job history"},testimonials:[{quote:"I finally know who's due a re-book without scrolling six months of WhatsApp. Game-changer.",name:"Marcus",role:"Detailing studio · Verified on Trustpilot"},{quote:"The customer history is what sold me. Every car, every product used, every note in one place.",name:"Fabio Teodoro",role:"Studio owner · Verified on Trustpilot"},{quote:"Re-booking nudges run themselves. We've doubled our repeat work without lifting a finger.",name:"Kenneth McD",role:"Detailer · Verified on Trustpilot"}],features:{eyebrow:"Why detailers pick a purpose-built CRM",headlineLead:"A CRM that speaks detailing.",headlineGradient:"Not sales pipelines.",items:[{icon:sk,title:"A customer profile per car, not per email",body:"Multi-vehicle customers, paint codes, ceramic batch numbers, swirl notes, that thing the panel does in the sun. Everything you'd otherwise scribble on the back of a job sheet, in one searchable customer profile.",image:Fu,alt:"Detailing CRM customer profile with vehicle history",bullets:["Multi-vehicle support per customer","Service history with products used and notes","Photos against each job, before and after","Search by name, reg, postcode or vehicle"]},{icon:KN,title:"Re-booking nudges that run themselves",body:"Set the cadence â 3 months for a maintenance wash, 12 months for ceramic top-up â and the CRM nudges your customers back
55when they're due. The repeat-work engine most detailers leave on the table.",image:Ku,alt:"Automated re-booking reminder sent from the detailing CRM",bullets:["Per-service re-booking windows","Branded email and SMS nudges","One-tap re-book straight into your calendar","See who's overdue at a glance"]},{icon:FN,title:"Bookings, payments and CRM in one place",body:"Most detailing CRMs are sales-tools with a calendar bolted on. Automate goes the other way: a detailing operations system with the CRM baked in. The customer record, the booking, the deposit, the invoice â same screen, same workflow.",image:Gu,alt:"Detailing CRM showing booking, payment and customer in one view",bullets:["No syncing between Google Calendar, Stripe and a CRM","Deposits and balance tied to the customer record","Automated invoices with your branding","Every interaction logged against the customer"]}]},whySwitch:{eyebrow:"Why detailers switch CRMs",headline:"Stop running a high-ticket business out of Notes, WhatsApp and a generic CRM.",without:["Customer notes scattered across phone, paper and DMs","No idea who's due a ceramic top-up or maintenance wash","A generic CRM that doesn't understand multi-vehicle or job history","Bookings in one tool, payments in another, customers in a third"],with:["One customer record per car, with full job and photo history","Automated re-booking nudges that bring regulars back","Bookings, deposits, invoices and CRM in one workflow","Every customer interaction logged against the profile automatically"]},finalCta:{eyebrow:"Ready when you are",headlineLead:"Run the customer relationship.",headlineGradient:"Don't just store the contact.",body:"14-day free trial on every plan. Cancel any time during the trial and you won't be charged. We'll help you import your customers and set up re-booking nudges inside an afternoon."}},lD=()=>ht(()=>import("./mobile-valeting-DKThIj0l.js"),__vite__mapDeps([21,22,7,16,23,24,1,25,2,26,27,28,15,8])),cD=lt("/mobile-valeting")({head:()=>({meta:[{title:ki.meta.title},{name:"description",content:ki.meta.description},{property:"og:title",content:ki.meta.title},{property:"og:description",content:ki.meta.description},{property:"og:url",content:ki.meta.url},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:ki.meta.url}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:rD.map(t=>({"@type":"Question",name:t.question,acceptedAnswer:{"@type":"Answer",text:t.answer}}))})}]}),component:dt(lD,"component")}),uD=[{icon:WN,name:"Getting Started",articles:[{title:"Step 1: Getting Started",content:"Learn the basics of the Automate platform. In step one we cover getting signed up and some of the core features of how Automate works and what you can do to edit them to suit your valeting or detailing business.",link:"https://youtu.be/e1NndRRugEI"},{title:"Step 2: Building your booking form",content:"In step two we show you how to build the perfect booking form for your business and how to manage technicians, territories and packages, to give your customers the best experience.",link:"https://youtu.be/csozth4Cb7k"},{title:"Step 3: How to use the Technicians app",content:"One of the best features of the Automate platform is the Technicians app. Learn how to set it up and what cool features we have in there to help you run your business like a boss.",link:"https://youtu.be/imD8Mt3z0ig"}]},{icon:CN,name:"Dashboard & Booking Management",articles:[{title:"How to edit bookings (time, date, transfer between technicians)",content:"Log into your Automate Dashboard. Search for the correct booking (filter by Today/Upcoming). Click on the booking. Edit the time or date by clicking on the small pencil icon in the booking information section. If you have multiple technicians covering the area and the service, all will be displayed here, so you can transfer the booking between multiple technicians and reassign it. Once the booking is edited, click save, and it will pop up as unaccepted on the technician app with updated details. Please note: editing the booking from the Admin Dashboard does not send customers an updated confirmation email with booking updates. We advise that you agree with the customer and confirm prior to editing."},{title:"How to cancel bookings (cancellation fee application)",content:'Log into your Automate Dashboard. Search for the correct booking, click on the booking, then go to Actions and select Cancel Booking. This gives you the options of applying or not applying the cancellation fees you have set up, or processing a full refund if those cancellation fees are not applicable. Please note: rejecting the booking on the technician app does not cancel the booking. It flags the booking as "Agent Rejected" on your Admin Dashboard.'},{title:"How to find technician rejected bookings on the dashboard",content:'Log into your Automate Dashboard. At the top of the bookings list, find the red "Action Required" tab. This will display your rejected services in the list for the day or upcoming bookings list, if the rejected booking is not the same day one.'},{title:"How to send or resend booking payment links from the dashboard",content:'Log into your Automate Dashboard. Select the booking you need. Unpaid bookings will appear at the top of the list in the "Action Required" section. Depending on when the booking is, you can filter by Today or Upcoming. Once the correct booking is selected, do not click on it. Simply locate the three dots on the right-hand side of the booking, click on them and select "Resend Payment Link". You can use this as a subtle reminder for your customer to cover the service payment, or if they happen to have lost the initial email with their original payment link.'},{title:"How to change booking status (accept/travelling/arrived/completed)",content:"You may want to update the booking status from your admin dashboard if the technician is caught up and your customer is getting frustrated without appropriate service updates. Log into your Automate Dashboard. Find the correct booking by filtering or through the search by entering customer name or vehicle reg. Then click on the three dots in the rear right corner of the booking. This will give you the options of updating the booking status to Travelling, Arrived, or Completed, in that exact order depending on what the booking status is initially."},{title:"How to add a manual booking or admin event",content:"Log into your Automate Dashboard. You can also do this from your calendar page. Click on your calendar view, then find the option in the right-hand corner. These two options allow you to create admin events up to 24 hours long (the hours input allows up to 24 hours coverage)."},{title:"Adding an admin event across multiple days",content:'Go to the technician calendar view. Set your technician calendar view to "Week" or "Month", depending on how many days you need to cover. Click on the start date slot on your technician calendar and drag across from left to right, making your admin event across multiple days or up to a month. You can then add the admin event details in the pop-up window.'},{title:"How to disable a package",content:"Log into your Automate Dashboard. Go to Packages, then click on the three dots next to the package to change its status. This option will deactivate the offer completely from all technicians if you have several assigned to your account. If you need to remove the offer from a specific technician only, go to Dashboard, then Technicians, select the technician and disable the unwanted package from the list of services offered. You can change the package status back to active at any stage. This option does not delete the package, it simply removes it from the list of live packages showing on your booking page."}]},{icon:Ip,name:"Payments & Refunds",articles:[{title:"How to refund bookings (partially or fully)",content:`Log into your Automate Dashboard. Search for the correct booking (bookings can be filtered by Today's or Upcoming). Click on the booking, then go to Transactions, select Refund Amount, and enter the amount to be refunded. This gives you an option to refund the customer partially or fully without cancelling the booking. Refund processing time with Stripe is up to 3 business days. Transactions refunded within 12 hours of payment being made will appear in the customer account immediately, as the funds are placed on hold rather than transferred. Bookings can also be refunded after being marked as "Completed". Please note: to refund a completed booking, ensure you have a greater payout balance than the refund amount.`},{title:"How to create a discount code",content:"Log into your Automate Dashboard. Go to Payments, then Discounts, and click Add Discount. Add a code name of your choice. Code type allows you to give a set value or specific percentage off. Total usage per user allows you to select the number of times each customer can apply the code. You can make these codes personalised."},{title:"How to make a payout (standard/instant, processing times)",content:"Log into your Automate Dashboard. Go to Payments, then Payouts, and click Make Payout. Enter the amount. This will take a minimum of 2 business days (weekends and bank holidays not included, the cut-off time during the day is 5pm) to reach your bank account."},{title:"How to set cancellation policy and fees",content:"Log into your Automate Dashboard. Go to Settings, then Cancellation Fees. Enter your values and press save."}]},{icon:BN,name:"Packages & Territories",articles:[{title:"How to create packages",content:'Log into your Automate Dashboard. Go to Packages, then Add Package. You can add the package description, features, specifications, and timing. The package image and colour scheme is customisable to your liking. You can set your pricing uniform across all territories you offer or have a variable price range for the same service based on location (for example, services offered in the Congestion Charge area would include the CC payment in the price range). Scroll down to "Set alternative prices for this package in different territories" to set different pricing per territory.'},{title:"How to create territories",content:"Log into your Automate Dashboard. Go to Territories, then Add Territory. You will get two options: Draw Territory or Upload a KML file. To draw your territory, simply zoom the map into the desired location and use the drawing tools to create your working zone. The three drawing tools allow you to grab the location on the map, make a perfect circle of any diameter, or draw a custom shape connecting as many points as you like. Once drawn, name and add a reference city name, then save. Once your territories are available on your page, they will be available to select from and add to your packages of choice when you set up your technician."},{title:"How to create package extras (upgrades)",content:"Log into your Automate Dashboard. Go to Packages, then Upgrades, and click Create an Upgrade. Add upgrade specifications and save. Please note: to add upgrades to your packages, you need to assign them to each package individually by editing the packages. You can drag and drop your upgrades in order of importance, as they will appear on the package page in that order."},{title:"How to assign territories and upgrades to packages",content:'Log into your Automate Dashboard. Go to Packages. To add upgrades: select the package you want to edit, click on "Upgrades", and select the new upgrades from the list below the assigned ones. To add territories: this is done individually for each technician. Select your technician, click on the package of choice from the list they offer, click on "Edit Technician Service", then "Choose Territories", select the new territories to add, click Next and Save.'}]},{icon:sk,name:"Technicians & Customers",articles:[{title:"How to edit technician account (working hours, water/electricity)",content:`Log into your Automate Dashboard. Go to Technicians, click on the three dots next to the technician, and select "Edit Technician". This gives you access to setting up your technician
55working hours (these govern the calendar hours shown for editing in your Technicians App), their requirements for water and electricity supply, and how far out a booking can be made. Don't forget to press save when all is set.`},{title:"Technician working hours and requirements",content:"Your technician settings on the Dashboard should already be set to the working hours you cover. However, the app calendar allows you to edit them further and specify availability by the day of the week. Working hour settings govern which time slots are shown as available on your booking page."},{title:"How to create a customer account on the dashboard",content:"Log into your Automate Dashboard. Go to Customers, then Add Customer. Once you enter your customer details, you are able to send them a link for their customer account activation via email. An activated customer account allows them to use their email address and password to log into the app and make further bookings. You can also make manual bookings from the admin dashboard and automatically have customer details filled in from their account by typing the customer name into the manual booking form."},{title:"How to check or edit customer information",content:'Log into your Automate Dashboard. Go to Customers and search for the customer using the search function. Select the customer and click on their name to access their profile. You will be able to edit their phone number and address. You can also create a new booking for this customer by clicking on the "Account Options" button in the top right-hand corner.'}]},{icon:nk,name:"Technicians App",articles:[{title:"How to set up your weekly schedule",content:'Log into your Automate app. Click on "Other" at the bottom right corner of your app homepage. This will take you to the menu page, then select "Set Weekly Schedule". You can set your working hours for each day of the week and select which days you want to have off (for example, setting Sundays off will lock every Sunday on your availability calendar). To set your working hours, simply tick the hours you would like to show as available to book, Monday to Sunday.'},{title:"Checking your availability",content:'Once your schedule is set, you can check your availability by clicking on the "Schedule" section. This gives you a weekly view, with grey sections showing the blocked times versus white representing the available time slots. At the top of your schedule you will find a drag-down bar. Dragging this down the screen allows you to look at the monthly calendar view and select specific dates you want to check.'},{title:"Creating busy events",content:'With availability set weekly, you may have specific events on certain dates you want to block. You can do so by creating a "Busy Event". Simply click on the + sign in the bottom right corner of your schedule section view, which will give you two options: Quick Booking or Busy Event. Select the option you want and add the details of the event. This will appear on your schedule and lock the time you have specified, so no bookings will come in for that time or date.'},{title:"How to create a quick booking",content:'Log into your Automate app. On your app home page, select the "Quick Booking" option. Fill in the booking form. Once completed, customers will receive a confirmation email with their booking payment link. You will also have an option for QR code payment. The code is shown on your app screen immediately after creating the booking, allowing your customer to scan and pay there and then. You can also access this QR code at any point by clicking on the booking in your calendar view and selecting "Take Payment".'},{title:"How to create an upsell (payment options)",content:'You may want to add an extra to your customer booking, agreed on arrival or beforehand. You can add this using the "Create Upsell" function, available both on the Admin Dashboard and on your Technicians App. From your app, click on the booking, then select "Add Upsell" underneath the booking information. Fill in the upsell details, including payment amount and description, and press "Send Payment & View QR". The customer will have two payment options: a payment link sent via email, and a QR code for instant on-the-spot payment. The QR code payment is instant and goe
55s directly into your payout account, whereas payment via the link will have a processing time lag.'},{title:"How to reject a booking",content:'Log into your Automate app. When a booking comes in, you will have an option of accepting or declining it. Rejecting the booking will send it into "Agent Reject" and it will be visible on your Admin Dashboard in the red "Action Required" section. Rejecting the booking does not notify the customer or affect the technician rating. The booking does not get cancelled or refunded to the customer if rejected. You simply have this option to flag the issue on your Admin Dashboard and leave a message visible to Admin. You can then contact the customer to rearrange, edit the booking time and date on the Dashboard, and the updated booking will be sent to the technician app again for acceptance.'}]},{icon:DN,name:"Further Support",articles:[{title:"How do I change or cancel my Automate subscription?",content:"To make changes to your Automate subscription plan, contact us using the chat pop-up on the site, or via [email protected]. Our team will help you upgrade, downgrade, or cancel your plan."}]}],dD=()=>ht(()=>import("./helpcenter-gBC1ti7X.js"),__vite__mapDeps([29,7,2,1,30,31,11,4])),hD=uD.flatMap(t=>t.articles.map(e=>({question:e.title,answer:e.content}))),fD={"@context":"https://schema.org","@type":"FAQPage",mainEntity:hD.map(t=>({"@type":"Question",name:t.question,acceptedAnswer:{"@type":"Answer",text:t.answer}}))},pD=lt("/helpcenter")({head:()=>({meta:[{title:"Help guides | Automate"},{name:"description",content:"Searchable help guides for Automate: bookings, payments, technicians, packages, territories and the technicians app."},{property:"og:title",content:"Help guides | Automate"},{property:"og:description",content:"Searchable help guides for Automate users: booking management, payments, technicians and more."},{property:"og:url",content:"https://getautomate.io/helpcenter"},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:"https://getautomate.io/helpcenter"}],scripts:[{type:"application/ld+json",children:JSON.stringify(fD)}]}),component:dt(dD,"component")}),mD=lt("/help")({loader:()=>{throw Ou({to:"/helpcenter"})}}),gD=()=>ht(()=>import("./feedback-Pcjyoalv.js"),__vite__mapDeps([32,7,33,34,3])),Df="https://getautomate.io/feedback",Dw="Automate feature requests: vote on what we build next",Pf="The open Automate feature request board. See what UK valeters and detailers have asked for, vote on the ideas you want, and track them through to shipped.",yD=lt("/feedback")({loader:async()=>({requests:await ik()}),head:({loaderData:t})=>{const n=[...t?.requests??[]].sort((a,o)=>o.vote_count-a.vote_count).slice(0,50);return{meta:[{title:Dw},{name:"description",content:Pf},{property:"og:title",content:Dw},{property:"og:description",content:Pf},{property:"og:url",content:Df},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"}],links:[{rel:"canonical",href:Df}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"ItemList",name:"Automate feature requests",description:Pf,url:Df,numberOfItems:n.length,itemListElement:n.map((a,o)=>({"@type":"ListItem",position:o+1,url:`https://getautomate.io/feedback/${a.slug}`,name:a.title}))})}]}},component:dt(gD,"component")}),bD=()=>ht(()=>import("./detailing-crm-DagLxheV.js"),__vite__mapDeps([35,22,7,16,23,24,1,25,2,36,37,31,10,38,15,8])),vD=lt("/detailing-crm")({head:()=>({meta:[{title:ji.meta.title},{name:"description",content:ji.meta.description},{property:"og:title",content:ji.meta.title},{property:"og:description",content:ji.meta.description},{property:"og:url",content:ji.meta.url},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:ji.meta.url}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:iD.map(t=>({"@type":"Question",name:t.question,acceptedAnswer:{"@type":"Answer",text:t.answer}}))})},{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"SoftwareApplication",name:"Automate â Detailing CRM",applicationCategory:"BusinessApplication",operatingSystem:"Web, iOS, Android",offers:{"@type":"Offer",price:"0",priceCurrency:"GBP",description:"14-day free trial, no card required"},aggregateRating:{"@type":"AggregateRating",ratingValue:"5",reviewCount:"30"}})}]}),component:dt(bD,"component")}),wD=()=>ht(()=>
55import("./detailing-D-lu3qtj.js"),__vite__mapDeps([39,22,7,16,23,24,1,25,2,26,27,28,15,8])),xD=lt("/detailing")({head:()=>({meta:[{title:_i.meta.title},{name:"description",content:_i.meta.description},{property:"og:title",content:_i.meta.title},{property:"og:description",content:_i.meta.description},{property:"og:url",content:_i.meta.url},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:_i.meta.url}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:sD.map(t=>({"@type":"Question",name:t.question,acceptedAnswer:{"@type":"Answer",text:t.answer}}))})}]}),component:dt(wD,"component")}),kD=()=>ht(()=>import("./contact-DlOwn9tY.js"),__vite__mapDeps([40,7,5])),_D=lt("/contact")({head:()=>({meta:[{title:"Contact | Automate"},{name:"description",content:"Get in touch with the Automate team by phone, email or WhatsApp. We respond within 24 hours, Monday to Friday."},{property:"og:title",content:"Contact | Automate"},{property:"og:description",content:"Talk to the Automate team by phone, email or WhatsApp."},{property:"og:url",content:"https://getautomate.io/contact"},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:"https://getautomate.io/contact"}]}),component:dt(kD,"component")}),SD=()=>ht(()=>import("./car-detailing-booking-system-D10vWHc7.js"),__vite__mapDeps([41,22,7,16,23,24,1,25,2,36,37,31,10,38,15,8])),jD=lt("/car-detailing-booking-system")({head:()=>({meta:[{title:Si.meta.title},{name:"description",content:Si.meta.description},{property:"og:title",content:Si.meta.title},{property:"og:description",content:Si.meta.description},{property:"og:url",content:Si.meta.url},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:Si.meta.url}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:aD.map(t=>({"@type":"Question",name:t.question,acceptedAnswer:{"@type":"Answer",text:t.answer}}))})},{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"SoftwareApplication",name:"Automate â Car Detailing Booking System",applicationCategory:"BusinessApplication",operatingSystem:"Web, iOS, Android",offers:{"@type":"Offer",price:"0",priceCurrency:"GBP",description:"14-day free trial, no card required"},aggregateRating:{"@type":"AggregateRating",ratingValue:"5",reviewCount:"30"}})}]}),component:dt(SD,"component")});var Ve;(function(t){t.assertEqual=o=>{};function e(o){}t.assertIs=e;function n(o){throw new Error}t.assertNever=n,t.arrayToEnum=o=>{const l={};for(const u of o)l[u]=u;return l},t.getValidEnumValues=o=>{const l=t.objectKeys(o).filter(h=>typeof o[o[h]]!="number"),u={};for(const h of l)u[h]=o[h];return t.objectValues(u)},t.objectValues=o=>t.objectKeys(o).map(function(l){return o[l]}),t.objectKeys=typeof Object.keys=="function"?o=>Object.keys(o):o=>{const l=[];for(const u in o)Object.prototype.hasOwnProperty.call(o,u)&&l.push(u);return l},t.find=(o,l)=>{for(const u of o)if(l(u))return u},t.isInteger=typeof Number.isInteger=="function"?o=>Number.isInteger(o):o=>typeof o=="number"&&Number.isFinite(o)&&Math.floor(o)===o;function a(o,l=" | "){return o.map(u=>typeof u=="string"?`'${u}'`:u).join(l)}t.joinValues=a,t.jsonStringifyReplacer=(o,l)=>typeof l=="bigint"?l.toString():l})(Ve||(Ve={}));var Pw;(function(t){t.mergeShapes=(e,n)=>({...e,...n})})(Pw||(Pw={}));const pe=Ve.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),_s=t=>{switch(typeof t){case"undefined":return pe.undefined;case"string":return pe.string;case"number":return Number.isNaN(t)?pe.nan:pe.number;case"boolean":return pe.boolean;case"function":return pe.function;case"bigint":return pe.bigint;case"symbol":return pe.symbol;case"object":return Array.isArray(t)?pe.array:t===null?pe.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?pe.promise:typeof Map<"u"&&t instanceof Map?pe.map:typeof Set<"u"&&t instanceof Set?pe.set:typeof Date<"u"&&t instanceof Date?pe.date:pe.object;default:return pe.unknown}}
vendor: 15,193 bytes, line 55
55,re=Ve.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 Fr extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=a=>{this.issues=[...this.issues,a]},this.addIssues=(a=[])=>{this.issues=[...this.issues,...a]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=e}format(e){const n=e||function(l){return l.message},a={_errors:[]},o=l=>{for(const u of l.issues)if(u.code==="invalid_union")u.unionErrors.map(o);else if(u.code==="invalid_return_type")o(u.returnTypeError);else if(u.code==="invalid_arguments")o(u.argumentsError);else if(u.path.length===0)a._errors.push(n(u));else{let h=a,p=0;for(;p<u.path.length;){const m=u.path[p];p===u.path.length-1?(h[m]=h[m]||{_errors:[]},h[m]._errors.push(n(u))):h[m]=h[m]||{_errors:[]},h=h[m],p++}}};return o(this),a}static assert(e){if(!(e instanceof Fr))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,Ve.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=n=>n.message){const n={},a=[];for(const o of this.issues)if(o.path.length>0){const l=o.path[0];n[l]=n[l]||[],n[l].push(e(o))}else a.push(e(o));return{formErrors:a,fieldErrors:n}}get formErrors(){return this.flatten()}}Fr.create=t=>new Fr(t);const fp=(t,e)=>{let n;switch(t.code){case re.invalid_type:t.received===pe.undefined?n="Required":n=`Expected ${t.expected}, received ${t.received}`;break;case re.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(t.expected,Ve.jsonStringifyReplacer)}`;break;case re.unrecognized_keys:n=`Unrecognized key(s) in object: ${Ve.joinValues(t.keys,", ")}`;break;case re.invalid_union:n="Invalid input";break;case re.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Ve.joinValues(t.options)}`;break;case re.invalid_enum_value:n=`Invalid enum value. Expected ${Ve.joinValues(t.options)}, received '${t.received}'`;break;case re.invalid_arguments:n="Invalid function arguments";break;case re.invalid_return_type:n="Invalid function return type";break;case re.invalid_date:n="Invalid date";break;case re.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(n=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?n=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?n=`Invalid input: must end with "${t.validation.endsWith}"`:Ve.assertNever(t.validation):t.validation!=="regex"?n=`Invalid ${t.validation}`:n="Invalid";break;case re.too_small:t.type==="array"?n=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?n=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?n=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?n=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?n=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:n="Invalid input";break;case re.too_big:t.type==="array"?n=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?n=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?n=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?n=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?n=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:n="Invalid input";break;case re.custom:n="Invalid input";break;case re.invalid_intersection_types:n="Intersection results could not be merged";break;case re.not_multiple_of:n=`Number must be a multiple of ${t.multipleOf}`;break;case re.not_finite:n="Number must be finite";break;default:n=e.defaultError,Ve.assertNever(t)}return{message:n}};let TD=fp;function AD(){return TD}const ED=t=>{const{data:e,path:n,errorMaps:a,issueData:o}=t,l=[...n,...o.path||[]],u={...o,path:l};if(o.message!==void 0)return{...o,path:l,message:o.message};let h="";const p=a.filter(m=>!!m).slice().reverse();for(const m of p)h=m(u,{data:e,defaultError:h}).message;return{...o,path:l,message:h}};function le(t,e){const n=AD(),a=ED({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,n,n===fp?void 0:fp].filter(o=>!!o)});t.common.issues.push(a)}class En{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,n){const a=[];for(const o of n){if(o.status==="aborted")return Ee;o.status==="dirty"&&e.dirty(),a.push(o.value)}return{status:e.value,value:a}}static async mergeObjectAsync(e,n){const a=[];for(const o of n){const l=await o.key,u=await o.value;a.push({key:l,value:u})}return En.mergeObjectSync(e,a)}static mergeObjectSync(e,n){const a={};for(const o of n){const{key:l,value:u}=o;if(l.status==="aborted"||u.status==="aborted")return Ee;l.status==="dirty"&&e.dirty(),u.status==="dirty"&&e.dirty(),l.value!=="__proto__"&&(typeof u.value<"u"||o.alwaysSet)&&(a[l.value]=u.value)}return{status:e.value,value:a}}}const Ee=Object.freeze({status:"aborted"}),Qo=t=>({status:"dirty",value:t}),$n=t=>({status:"valid",value:t}),Lw=t=>t.status==="aborted",Uw=t=>t.status==="dirty",zi=t=>t.status==="valid",_u=t=>typeof Promise<"u"&&t instanceof Promise;var ge;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(ge||(ge={}));class Ls{constructor(e,n,a,o){this._cachedPath=[],this.parent=e,this.data=n,this._path=a,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 Iw=(t,e)=>{if(zi(e))return{success:!0,data:e.value};if(!t.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 Fr(t.common.issues);return this._error=n,this._error}}};function De(t){if(!t)return{};const{errorMap:e,invalid_type_error:n,required_error:a,description:o}=t;if(e&&(n||a))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:o}:{errorMap:(u,h)=>{const{message:p}=t;return u.code==="invalid_enum_value"?{message:p??h.defaultError}:typeof h.data>"u"?{message:p??a??h.defaultError}:u.code!=="invalid_type"?{message:h.defaultError}:{message:p??n??h.defaultError}},description:o}}class qe{get description(){return this._def.description}_getType(e){return _s(e.data)}_getOrReturnCtx(e,n){return n||{common:e.parent.common,data:e.data,parsedType:_s(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new En,ctx:{common:e.parent.common,data:e.data,parsedType:_s(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const n=this._parse(e);if(_u(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(e){const n=this._parse(e);return Promise.resolve(n)}parse(e,n){const a=this.safeParse(e,n);if(a.success)return a.data;throw a.error}safeParse(e,n){const a={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:_s(e)},o=this._parseSync({data:e,path:a.path,parent:a});return Iw(a,o)}"~validate"(e){const n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:_s(e)};if(!this["~standard"].async)try{const a=this._parseSync({data:e,path:[],parent:n});return zi(a)?{value:a.value}:{issues:n.common.issues}}catch(a){a?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:n}).then(a=>zi(a)?{value:a.value}:{issues:n.common.issues})}async parseAsync(e,n){const a=await this.safeParseAsync(e,n);if(a.success)return a.data;throw a.error}async safeParseAsync(e,n){const a={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:_s(e)},o=this._parse({data:e,path:a.path,parent:a}),l=await(_u(o)?o:Promise.resolve(o));return Iw(a,l)}refine(e,n){const a=o=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(o):n;return this._refinement((o,l)=>{const u=e(o),h=()=>l.addIssue({code:re.custom,...a(o)});return typeof Promise<"u"&&u instanceof Promise?u.then(p=>p?!0:(h(),!1)):u?!0:(h(),!1)})}refinement(e,n){return this._refinement((a,o)=>e(a)?!0:(o.addIssue(typeof n=="function"?n(a,o):n),!1))}_refinement(e){return new $i({schema:this,typeName:Re.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,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 Ps.create(this,this._def)}nullable(){return Hi.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return mr.create(this)}promise(){return Au.create(this,this._def)}or(e){return ju.create([this,e],this._def)}and(e){return Tu.create(this,e,this._def)}transform(e){return new $i({...De(this._def),schema:this,typeName:Re.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const n=typeof e=="function"?e:()=>e;return new mp({...De(this._def),innerType:this,defaultValue:n,typeName:Re.ZodDefault})}brand(){return new JD({typeName:Re.ZodBranded,type:this,...De(this._def)})}catch(e){const n=typeof e=="function"?e:()=>e;return new gp({...De(this._def),innerType:this,catchValue:n,typeName:Re.ZodCatch})}describe(e){const n=this.constructor;return new n({...this._def,description:e})}pipe(e){return qp.create(this,e)}readonly(){return yp.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const RD=/^c[^\s-]{8,}$/i,CD=/^[0-9a-z]+$/,OD=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ND=/^[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,MD=/^[a-z0-9_-]{21}$/i,DD=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,PD=/^[-+]?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)?)??$/,LD=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,UD="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let Lf;const ID=/^(?:(?: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])$/,BD=/^(?:(?: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])$/,zD=/^(([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]))$/,qD=/^(([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])$/,$D=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,HD=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,lk="((\\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])))",VD=new RegExp(`^${lk}$`);function ck(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);const n=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${n}`}function FD(t){return new RegExp(`^${ck(t)}$`)}function GD(t){let e=`${lk}T${ck(t)}`;const n=[];return n.push(t.local?"Z?":"Z"),t.offset&&n.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${n.join("|")})`,new RegExp(`^${e}$`)}function KD(t,e){return!!((e==="v4"||!e)&&ID.test(t)||(e==="v6"||!e)&&zD.test(t))}function YD(t,e){if(!DD.test(t))return!1;try{const[n]=t.split(".");if(!n)return!1;const a=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),o=JSON.parse(atob(a));return!(typeof o!="object"||o===null||"typ"in o&&o?.typ!=="JWT"||!
vendor: 4,103 bytes, line 55
55o.alg||e&&o.alg!==e)}catch{return!1}}function WD(t,e){return!!((e==="v4"||!e)&&BD.test(t)||(e==="v6"||!e)&&qD.test(t))}class Os extends qe{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==pe.string){const l=this._getOrReturnCtx(e);return le(l,{code:re.invalid_type,expected:pe.string,received:l.parsedType}),Ee}const a=new En;let o;for(const l of this._def.checks)if(l.kind==="min")e.data.length<l.value&&(o=this._getOrReturnCtx(e,o),le(o,{code:re.too_small,minimum:l.value,type:"string",inclusive:!0,exact:!1,message:l.message}),a.dirty());else if(l.kind==="max")e.data.length>l.value&&(o=this._getOrReturnCtx(e,o),le(o,{code:re.too_big,maximum:l.value,type:"string",inclusive:!0,exact:!1,message:l.message}),a.dirty());else if(l.kind==="length"){const u=e.data.length>l.value,h=e.data.length<l.value;(u||h)&&(o=this._getOrReturnCtx(e,o),u?le(o,{code:re.too_big,maximum:l.value,type:"string",inclusive:!0,exact:!0,message:l.message}):h&&le(o,{code:re.too_small,minimum:l.value,type:"string",inclusive:!0,exact:!0,message:l.message}),a.dirty())}else if(l.kind==="email")LD.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"email",code:re.invalid_string,message:l.message}),a.dirty());else if(l.kind==="emoji")Lf||(Lf=new RegExp(UD,"u")),Lf.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"emoji",code:re.invalid_string,message:l.message}),a.dirty());else if(l.kind==="uuid")ND.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"uuid",code:re.invalid_string,message:l.message}),a.dirty());else if(l.kind==="nanoid")MD.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"nanoid",code:re.invalid_string,message:l.message}),a.dirty());else if(l.kind==="cuid")RD.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"cuid",code:re.invalid_string,message:l.message}),a.dirty());else if(l.kind==="cuid2")CD.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"cuid2",code:re.invalid_string,message:l.message}),a.dirty());else if(l.kind==="ulid")OD.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"ulid",code:re.invalid_string,message:l.message}),a.dirty());else if(l.kind==="url")try{new URL(e.data)}catch{o=this._getOrReturnCtx(e,o),le(o,{validation:"url",code:re.invalid_string,message:l.message}),a.dirty()}else l.kind==="regex"?(l.regex.lastIndex=0,l.regex.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"regex",code:re.invalid_string,message:l.message}),a.dirty())):l.kind==="trim"?e.data=e.data.trim():l.kind==="includes"?e.data.includes(l.value,l.position)||(o=this._getOrReturnCtx(e,o),le(o,{code:re.invalid_string,validation:{includes:l.value,position:l.position},message:l.message}),a.dirty()):l.kind==="toLowerCase"?e.data=e.data.toLowerCase():l.kind==="toUpperCase"?e.data=e.data.toUpperCase():l.kind==="startsWith"?e.data.startsWith(l.value)||(o=this._getOrReturnCtx(e,o),le(o,{code:re.invalid_string,validation:{startsWith:l.value},message:l.message}),a.dirty()):l.kind==="endsWith"?e.data.endsWith(l.value)||(o=this._getOrReturnCtx(e,o),le(o,{code:re.invalid_string,validation:{endsWith:l.value},message:l.message}),a.dirty()):l.kind==="datetime"?GD(l).test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{code:re.invalid_string,validation:"datetime",message:l.message}),a.dirty()):l.kind==="date"?VD.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{code:re.invalid_string,validation:"date",message:l.message}),a.dirty()):l.kind==="time"?FD(l).test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{code:re.invalid_string,validation:"time",message:l.message}),a.dirty()):l.kind==="duration"?PD.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"duration",code:re.invalid_string,message:l.message}),a.dirty()):l.kind==="ip"?KD(e.data,l.version)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"ip",code:re.invalid_string,message:l.message}),a.dirty()):l.kind==="jwt"?YD(e.data,l.alg)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"jwt",code:re.invalid_string,message:l.message}),a.dirty()):l.kind==="cidr"?WD(e.data,l.version)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"cidr",code:re.
vendor: 26,199 bytes, line 55
55invalid_string,message:l.message}),a.dirty()):l.kind==="base64"?$D.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"base64",code:re.invalid_string,message:l.message}),a.dirty()):l.kind==="base64url"?HD.test(e.data)||(o=this._getOrReturnCtx(e,o),le(o,{validation:"base64url",code:re.invalid_string,message:l.message}),a.dirty()):Ve.assertNever(l);return{status:a.value,value:e.data}}_regex(e,n,a){return this.refinement(o=>e.test(o),{validation:n,code:re.invalid_string,...ge.errToObj(a)})}_addCheck(e){return new Os({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...ge.errToObj(e)})}url(e){return this._addCheck({kind:"url",...ge.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...ge.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...ge.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...ge.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...ge.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...ge.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...ge.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...ge.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...ge.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...ge.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...ge.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...ge.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...ge.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...ge.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...ge.errToObj(e)})}regex(e,n){return this._addCheck({kind:"regex",regex:e,...ge.errToObj(n)})}includes(e,n){return this._addCheck({kind:"includes",value:e,position:n?.position,...ge.errToObj(n?.message)})}startsWith(e,n){return this._addCheck({kind:"startsWith",value:e,...ge.errToObj(n)})}endsWith(e,n){return this._addCheck({kind:"endsWith",value:e,...ge.errToObj(n)})}min(e,n){return this._addCheck({kind:"min",value:e,...ge.errToObj(n)})}max(e,n){return this._addCheck({kind:"max",value:e,...ge.errToObj(n)})}length(e,n){return this._addCheck({kind:"length",value:e,...ge.errToObj(n)})}nonempty(e){return this.min(1,ge.errToObj(e))}trim(){return new Os({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new Os({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new Os({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxLength(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}}Os.create=t=>new Os({checks:[],typeName:Re.ZodString,coerce:t?.coerce??!1,...De(t)});function ZD(t,e){const n=(t.toString().split(".")[1]||"").length,a=(e.toString().split(".")[1]||"").length,o=n>a?n:a,l=Number.parseInt(t.toFixed(o).replace(".","")),u=Number.parseInt(e.toFixed(o).replace(".",""));return l%u/10**o}class gl extends qe{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==pe.number){const l=this._getOrReturnCtx(e);return le(l,{code:re.invalid_type,expected:pe.number,received:l.parsedType}),Ee}let a;const o=new En;for(const l of this._def.checks)l.kind==="int"?Ve.isInteger(e.data)||(a=this._getOrReturnCtx(e,a),le(a,{code:re.invalid_type,expected:"integer",received:"float",message:l.message}),o.dirty()):l.kind==="min"?(l.inclusive?e.data<l.value:e.data<=l.value)&&(a=this._getOrReturnCtx(e,a),le(a,{code:re.too_small,minimum:l.value,type:"number",inclusive:l.inclusive,exact:!1,message:l.message}),o.dirty()):l.kind==="max"?(l.inclusive?e.data>l.value:e.data>=l.value)&&(a=this._getOrReturnCtx(e,a),le(a,{code:re.too_big,maximum:l.value,type:"number",inclusive:l.inclusive,exact:!1,message:l.message}),o.dirty()):l.kind==="multipleOf"?ZD(e.data,l.value)!==0&&(a=this._getOrReturnCtx(e,a),le(a,{code:re.not_multiple_of,multipleOf:l.value,message:l.message}),o.dirty()):l.kind==="finite"?Number.isFinite(e.data)||(a=this._getOrReturnCtx(e,a),le(a,{code:re.not_finite,message:l.message}),o.dirty()):Ve.assertNever(l);return{status:o.value,value:e.data}}gte(e,n){return this.setLimit("min",e,!0,ge.toString(n))}gt(e,n){return this.setLimit("min",e,!1,ge.toString(n))}lte(e,n){return this.setLimit("max",e,!0,ge.toString(n))}lt(e,n){return this.setLimit("max",e,!1,ge.toString(n))}setLimit(e,n,a,o){return new gl({...this._def,checks:[...this._def.checks,{kind:e,value:n,inclusive:a,message:ge.toString(o)}]})}_addCheck(e){return new gl({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:ge.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:ge.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:ge.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:ge.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:ge.toString(e)})}multipleOf(e,n){return this._addCheck({kind:"multipleOf",value:e,message:ge.toString(n)})}finite(e){return this._addCheck({kind:"finite",message:ge.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:ge.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:ge.toString(e)})}get minValue(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxValue(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&Ve.isInteger(e.value))}get isFinite(){let e=null,n=null;for(const a of this._def.checks){if(a.kind==="finite"||a.kind==="int"||a.kind==="multipleOf")return!0;a.kind==="min"?(n===null||a.value>n)&&(n=a.value):a.kind==="max"&&(e===null||a.value<e)&&(e=a.value)}return Number.isFinite(n)&&Number.isFinite(e)}}gl.create=t=>new gl({checks:[],typeName:Re.ZodNumber,coerce:t?.coerce||!1,...De(t)});class yl extends qe{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==pe.bigint)return this._getInvalidInput(e);let a;const o=new En;for(const l of this._def.checks)l.kind==="min"?(l.inclusive?e.data<l.value:e.data<=l.value)&&(a=this._getOrReturnCtx(e,a),le(a,{code:re.too_small,type:"bigint",minimum:l.value,inclusive:l.inclusive,message:l.message}),o.dirty()):l.kind==="max"?(l.inclusive?e.data>l.value:e.data>=l.value)&&(a=this._getOrReturnCtx(e,a),le(a,{code:re.too_big,type:"bigint",maximum:l.value,inclusive:l.inclusive,message:l.message}),o.dirty()):l.kind==="multipleOf"?e.data%l.value!==BigInt(0)&&(a=this._getOrReturnCtx(e,a),le(a,{code:re.not_multiple_of,multipleOf:l.value,message:l.message}),o.dirty()):Ve.assertNever(l);return{status:o.value,value:e.data}}_getInvalidInput(e){const n=this._getOrReturnCtx(e);return le(n,{code:re.invalid_type,expected:pe.bigint,received:n.parsedType}),Ee}gte(e,n){return this.setLimit("min",e,!0,ge.toString(n))}gt(e,n){return this.setLimit("min",e,!1,ge.toString(n))}lte(e,n){return this.setLimit("max",e,!0,ge.toString(n))}lt(e,n){return this.setLimit("max",e,!1,ge.toString(n))}setLimit(e,n,a,o){return new yl({...this._def,checks:[...this._def.checks,{kind:e,value:n,inclusive:a,message:ge.toString(o)}]})}_addCheck(e){return new yl({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:ge.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:ge.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:ge.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:ge.toString(e)})}multipleOf(e,n){return this._addCheck({kind:"multipleOf",value:e,message:ge.toString(n)})}get minValue(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxValue(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}}yl.create=t=>new yl({checks:[],typeName:Re.ZodBigInt,coerce:t?.coerce??!1,...De(t)});class Bw extends qe{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==pe.boolean){const a=this._getOrReturnCtx(e);return le(a,{code:re.invalid_type,expected:pe.boolean,received:a.parsedType}),Ee}return $n(e.data)}}Bw.create=t=>new Bw({typeName:Re.ZodBoolean,coerce:t?.coerce||!1,...De(t)});class Su extends qe{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==pe.date){const l=this._getOrReturnCtx(e);return le(l,{code:re.invalid_type,expected:pe.date,received:l.parsedType}),Ee}if(Number.isNaN(e.data.getTime())){const l=this._getOrReturnCtx(e);return le(l,{code:re.invalid_date}),Ee}const a=new En;let o;for(const l of this._def.checks)l.kind==="min"?e.data.getTime()<l.value&&(o=this._getOrReturnCtx(e,o),le(o,{code:re.too_small,message:l.message,inclusive:!0,exact:!1,minimum:l.value,type:"date"}),a.dirty()):l.kind==="max"?e.data.getTime()>l.value&&(o=this._getOrReturnCtx(e,o),le(o,{code:re.too_big,message:l.message,inclusive:!0,exact:!1,maximum:l.value,type:"date"}),a.dirty()):Ve.assertNever(l);return{status:a.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Su({...this._def,checks:[...this._def.checks,e]})}min(e,n){return this._addCheck({kind:"min",value:e.getTime(),message:ge.toString(n)})}max(e,n){return this._addCheck({kind:"max",value:e.getTime(),message:ge.toString(n)})}get minDate(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e!=null?new Date(e):null}}Su.create=t=>new Su({checks:[],coerce:t?.coerce||!1,typeName:Re.ZodDate,...De(t)});class zw extends qe{_parse(e){if(this._getType(e)!==pe.symbol){const a=this._getOrReturnCtx(e);return le(a,{code:re.invalid_type,expected:pe.symbol,received:a.parsedType}),Ee}return $n(e.data)}}zw.create=t=>new zw({typeName:Re.ZodSymbol,...De(t)});class qw extends qe{_parse(e){if(this._getType(e)!==pe.undefined){const a=this._getOrReturnCtx(e);return le(a,{code:re.invalid_type,expected:pe.undefined,received:a.parsedType}),Ee}return $n(e.data)}}qw.create=t=>new qw({typeName:Re.ZodUndefined,...De(t)});class $w extends qe{_parse(e){if(this._getType(e)!==pe.null){const a=this._getOrReturnCtx(e);return le(a,{code:re.invalid_type,expected:pe.null,received:a.parsedType}),Ee}return $n(e.data)}}$w.create=t=>new $w({typeName:Re.ZodNull,...De(t)});class Hw extends qe{constructor(){super(...arguments),this._any=!0}_parse(e){return $n(e.data)}}Hw.create=t=>new Hw({typeName:Re.ZodAny,...De(t)});class Vw extends qe{constructor(){super(...arguments),this._unknown=!0}_parse(e){return $n(e.data)}}Vw.create=t=>new Vw({typeName:Re.ZodUnknown,...De(t)});class Us extends qe{_parse(e){const n=this._getOrReturnCtx(e);return le(n,{code:re.invalid_type,expected:pe.never,received:n.parsedType}),Ee}}Us.create=t=>new Us({typeName:Re.ZodNever,...De(t)});class Fw extends qe{_parse(e){if(this._getType(e)!==pe.undefined){const a=this._getOrReturnCtx(e);return le(a,{code:re.invalid_type,expected:pe.void,received:a.parsedType}),Ee}return $n(e.data)}}Fw.create=t=>new Fw({typeName:Re.ZodVoid,...De(t)});class mr extends qe{_parse(e){const{ctx:n,status:a}=this._processInputParams(e),o=this._def;if(n.parsedType!==pe.array)return le(n,{code:re.invalid_type,expected:pe.array,received:n.parsedType}),Ee;if(o.exactLength!==null){const u=n.data.length>o.exactLength.value,h=n.data.length<o.exactLength.value;(u||h)&&(le(n,{code:u?re.too_big:re.too_small,minimum:h?o.exactLength.value:void 0,maximum:u?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),a.dirty())}if(o.minLength!==null&&n.data.length<o.minLength.value&&(le(n,{code:re.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),a.dirty()),o.maxLength!==null&&n.data.length>o.maxLength.value&&(le(n,{code:re.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),a.dirty()),n.common.async)return Promise.all([...n.data].map((u,h)=>o.type._parseAsync(new Ls(n,u,n.path,h)))).then(u=>En.mergeArray(a,u));const l=[...n.data].map((u,h)=>o.type._parseSync(new Ls(n,u,n.path,h)));return En.mergeArray(a,l)}get element(){return this._def.type}min(e,n){return new mr({...this._def,minLength:{value:e,message:ge.toString(n)}})}max(e,n){return new mr({...this._def,maxLength:{value:e,message:ge.toString(n)}})}length(e,n){return new mr({...this._def,exactLength:{value:e,message:ge.toString(n)}})}nonempty(e){return this.min(1,e)}}mr.create=(t,e)=>new mr({type:t,minLength:null,maxLength:null,exactLength:null,typeName:Re.ZodArray,...De(e)});function Oi(t){if(t instanceof jt){const e={};for(const n in t.shape){const a=t.shape[n];e[n]=Ps.create(Oi(a))}return new jt({...t._def,shape:()=>e})}else return t instanceof mr?new mr({...t._def,type:Oi(t.element)}):t instanceof Ps?Ps.create(Oi(t.unwrap())):t instanceof Hi?Hi.create(Oi(t.unwrap())):t instanceof ja?ja.create(t.items.map(e=>Oi(e))):t}class jt extends qe{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),n=Ve.objectKeys(e);return this._cached={shape:e,keys:n},this._cached}_parse(e){if(this._getType(e)!==pe.object){const m=this._getOrReturnCtx(e);return le(m,{code:re.invalid_type,expected:pe.object,received:m.parsedType}),Ee}const{status:a,ctx:o}=this._processInputParams(e),{shape:l,keys:u}=this._getCached(),h=[];if(!(this._def.catchall instanceof Us&&this._def.unknownKeys==="strip"))for(const m in o.data)u.includes(m)||h.push(m);const p=[];for(const m of u){const b=l[m],y=o.data[m];p.push({key:{status:"valid",value:m},value:b._parse(new Ls(o,y,o.path,m)),alwaysSet:m in o.data})}if(this._def.catchall instanceof Us){const m=this._def.unknownKeys;if(m==="passthrough")for(const b of h)p.push({key:{status:"valid",value:b},value:{status:"valid",value:o.data[b]}});else if(m==="strict")h.length>0&&(le(o,{code:re.unrecognized_keys,keys:h}),a.dirty());else if(m!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const m=this._def.catchall;for(const b of h){const y=o.data[b];p.push({key:{status:"valid",value:b},value:m._parse(new Ls(o,y,o.path,b)),alwaysSet:b in o.data})}}return o.common.async?Promise.resolve().then(async()=>{const m=[];for(const b of p){const y=await b.key,w=await b.value;m.push({key:y,value:w,alwaysSet:b.alwaysSet})}return m}).then(m=>En.mergeObjectSync(a,m)):En.mergeObjectSync(a,p)}get shape(){return this._def.shape()}strict(e){return ge.errToObj,new jt({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(n,a)=>{const o=this._def.errorMap?.(n,a).message??a.defaultError;return n.code==="unrecognized_keys"?{message:ge.errToObj(e).message??o}:{message:o}}}:{}})}strip(){return new jt({...this._def,unknownKeys:"strip"})}passthrough(){return new jt({...this._def,unknownKeys:"passthrough"})}extend(e){return new jt({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new jt({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Re.ZodObject})}setKey(e,n){return this.augment({[e]:n})}catchall(e){return new jt({...this._def,catchall:e})}pick(e){const n={};for(const a of Ve.objectKeys(e))e[a]&&this.shape[a]&&(n[a]=this.shape[a]);return new jt({...this._def,shape:()=>n})}omit(e){const n={};for(const a of Ve.objectKeys(this.shape))e[a]||(n[a]=this.shape[a]);return new jt({...this._def,shape:()=>n})}deepPartial(){return Oi(this)}partial(e){const n={};for(const a of Ve.objectKeys(this.shape)){const o=this.shape[a];e&&!e[a]?n[a]=o:n[a]=o.optional()}return new jt({...this._def,shape:()=>n})}required(e){const n={};for(const a of Ve.objectKeys(this.shape))if(e&&!e[a])n[a]=this.shape[a];else{let l=this.shape[a];for(;l instanceof Ps;)l=l._def.innerType;n[a]=l}return new jt({...this._def,shape:()=>n})}keyof(){return uk(Ve.objectKeys(this.shape))}}jt.create=(t,e)=>new jt({shape:()=>t,unknownKeys:"strip",catchall:Us.create(),typeName:Re.ZodObject,...De(e)});jt.strictCreate=(t,e)=>new jt({shape:()=>t,unknownKeys:"strict",catchall:Us.create(),typeName:Re.ZodObject,...De(e)});jt.lazycreate=(t,e)=>new jt({shape:t,unknownKeys:"strip",catchall:Us.create(),typeName:Re.ZodObject,...De(e)});class ju extends qe{_parse(e){const{ctx:n}=this._processInputParams(e),a=this._def.options;function o(l){for(const h of l)if(h.result.status==="valid")return h.result;for(const h of l)if(h.result.status==="dirty")return n.common.issues.push(...h.ctx.common.issues),h.result;const u=l.map(h=>new Fr(h.ctx.common.issues));return le(n,{code:re.invalid_union,unionErrors:u}),Ee}if(n.common.async)return Promise.all(a.map(async l=>{const u={...n,common:{...n.common,issues:[]},parent:null};return{result:await l._parseAsync({data:n.data,path:n.path,parent:u}),ctx:u}})).then(o);{let l;const u=[];for(const p of a){const m={...n,common:{...n.common,issues:[]},parent:null},b=p._parseSync({data:n.data,path:n.path,parent:m});if(b.status==="valid")return b;b.status==="dirty"&&!l&&(l={result:b,ctx:m}),m.common.issues.length&&u.push(m.common.issues)}if(l)return n.common.issues.push(...l.ctx.common.issues),l.result;const h=u.map(p=>new Fr(p));return le(n,{code:re.invalid_union,unionErrors:h}),Ee}}get options(){return this._def.options}}ju.create=(t,e)=>new ju({options:t,typeName:Re.ZodUnion,...De(e)});function pp(t,e){const n=_s(t),a=_s(e);if(t===e)return{valid:!0,data:t};if(n===pe.object&&a===pe.object){const o=Ve.objectKeys(e),l=Ve.objectKeys(t).filter(h=>o.indexOf(h)!==-1),u={...t,...e};for(const h of l){const p=pp(t[h],e[h]);if(!p.valid)return{valid:!1};u[h]=p.data}return{valid:!0,data:u}}else if(n===pe.array&&a===pe.array){if(t.length!==e.length)return{valid:!1};const o=[];for(let l=0;l<t.length;l++){const u=t[l],h=e[l],p=pp(u,h);if(!p.valid)return{valid:!1};o.push(p.data)}return{valid:!0,data:o}}else return n===pe.date&&a===pe.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}class Tu extends qe{_parse(e){const{status:n,ctx:a}=this._processInputParams(e),o=(l,u)=>{if(Lw(l)||Lw(u))return Ee;const h=pp(l.value,u.value);return h.valid?((Uw(l)||Uw(u))&&n.dirty(),{status:n.value,value:h.data}):(le(a,{code:re.invalid_intersection_types}),Ee)};return a.common.async?Promise.all([this._def.left._parseAsync({data:a.data,path:a.path,parent:a}),this._def.right._parseAsync({data:a.data,path:a.path,parent:a})]).then(([l,u])=>o(l,u)):o(this._def.left._parseSync({data:a.data,path:a.path,parent:a}),this._def.right._parseSync({data:a.data,path:a.path,parent:a}))}}Tu.create=(t,e,n)=>new Tu({left:t,right:e,typeName:Re.ZodIntersection,...De(n)});class ja extends qe{_parse(e){const{status:n,ctx:a}=this._processInputParams(e);if(a.parsedType!==pe.array)return le(a,{code:re.invalid_type,expected:pe.array,received:a.parsedType}),Ee;if(a.data.length<this._def.items.length)return le(a,{code:re.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Ee;!this._def.rest&&a.data.length>this._def.items.length&&(le(a,{code:re.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const l=[...a.data].map((u,h)=>{const p=this._def.items[h]||this._def.rest;return p?p._parse(new Ls(a,u,a.path,h)):null}).filter(u=>!!u);return a.common.async?Promise.all(l).then(u=>En.mergeArray(n,u)):En.mergeArray(n,l)}get items(){return this._def.items}rest(e){return new ja({...this._def,rest:e})}}ja.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ja({items:t,typeName:Re.ZodTuple,rest:null,...De(e)})};class Gw extends qe{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:n,ctx:a}=this._processInputParams(e);if(a.parsedType!==pe.map)return le(a,{code:re.invalid_type,expected:pe.map,received:a.parsedType}),Ee;const o=this._def.keyType,l=this._def.valueType,u=[...a.data.entries()].map(([h,p],m)=>({key:o._parse(new Ls(a,h,a.path,[m,"key"])),value:l._parse(new Ls(a,p,a.path,[m,"value"]))}));if(a.common.async){const h=new Map;return Promise.resolve().then(async()=>{for(const p of u){const m=await p.key,b=await p.value;if(m.status==="aborted"||b.status==="aborted")return Ee;(m.status==="dirty"||b.status==="dirty")&&n.dirty(),h.set(m.value,b.value)}return{status:n.value,value:h}})}else{const h=new Map;for(const p of u){const m=p.key,b=p.value;if(m.status==="aborted"||b.status==="aborted")return Ee;(m.status==="dirty"||b.status==="dirty")&&n.dirty(),h.set(m.value,b.value)}return{status:n.value,value:h}}}}Gw.create=(t,e,n)=>new Gw({valueType:e,keyType:t,typeName:Re.ZodMap,...De(n)});class bl extends qe{_parse(e){const{status:n,ctx:a}=this._processInputParams(e);if(a.parsedType!==pe.set)return le(a,{code:re.invalid_type,expected:pe.set,received:a.parsedType}),Ee;const o=this._def;o.minSize!==null&&a.data.size<o.minSize.value&&(le(a,{code:re.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,exact:!1,message:o.minSize.message}),n.dirty()),o.maxSize!==null&&a.data.size>o.maxSize.value&&(le(a,{code:re.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),n.dirty());const l=this._def.valueType;function u(p){const m=new Set;for(const b of p){if(b.status==="aborted")return Ee;b.status==="dirty"&&n.dirty(),m.add(b.value)}return{status:n.value,value:m}}const h=[...a.data.values()].map((p,m)=>l._parse(new Ls(a,p,a.path,m)));return a.common.async?Promise.all(h).then(p=>u(p)):u(h)}min(e,n){return new bl({...this._def,minSize:{value:e,message:ge.toString(n)}})}max(e,n){return new bl({...this._def,maxSize:{value:e,message:ge.toString(n)}})}size(e,n){return this.min(e,n).max(e,n)}nonempty(e){return this.min(1,e)}}bl.create=(t,e)=>new bl({valueType:t,minSize:null,maxSize:null,typeName:Re.ZodSet,...De(e)});class Kw extends qe{get schema(){return this._def.getter()}_parse(e){const{ctx:n}=this._processInputParams(e);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}Kw.create=(t,e)=>new Kw({getter:t,typeName:Re.ZodLazy,...De(e)});class Yw extends qe{_parse(e){if(e.data!==this._def.value){const n=this._getOrReturnCtx(e);return le(n,{received:n.data,code:re.invalid_literal,expected:this._def.value}),Ee}return{status:"valid",value:e.data}}get value(){return this._def.value}}Yw.create=(t,e)=>new Yw({value:t,typeName:Re.ZodLiteral,...De(e)});function uk(t,e){return new qi({values:t,typeName:Re.ZodEnum,...De(e)})}class qi extends qe{_parse(e){if(typeof e.data!="string"){const n=this._getOrReturnCtx(e),a=this._def.values;return le(n,{expected:Ve.joinValues(a),received:n.parsedType,code:re.invalid_type}),Ee}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){const n=this._getOrReturnCtx(e),a=this._def.values;return le(n,{received:n.data,code:re.invalid_enum_value,options:a}),Ee}return $n(e.data)}get options(){return this._def.values}get enum(){const e={};for(const n of this._def.values)e[n]=n;return e}get Values(){const e={};for(const n of this._def.values)e[n]=n;return e}get Enum(){const e={};for(const n of this._def.values)e[n]=n;return e}extract(e,n=this._def){return qi.create(e,{...this._def,...n})}exclude(e,n=this._def){return qi.create(this.options.filter(a=>!e.includes(a)),{...this._def,...n})}}qi.create=uk;class Ww extends qe{_parse(e){const n=Ve.getValidEnumValues(this._def.values),a=this._getOrReturnCtx(e);if(a.parsedType!==pe.string&&a.parsedType!==pe.number){const o=Ve.objectValues(n);return le(a,{expected:Ve.joinValues(o),received:a.parsedType,code:re.invalid_type}),Ee}if(this._cache||(this._cache=new Set(Ve.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){const o=Ve.objectValues(n);return le(a,{received:a.data,code:re.invalid_enum_value,options:o}),Ee}return $n(e.data)}get enum(){return this._def.values}}Ww.create=(t,e)=>new Ww({values:t,typeName:Re.ZodNativeEnum,...De(e)});class Au extends qe{unwrap(){return this._def.type}_parse(e){const{ctx:n}=this._processInputParams(e);if(n.parsedType!==pe.promise&&n.common.async===!1)return le(n,{code:re.
vendor: 4,081 bytes, line 55
55invalid_type,expected:pe.promise,received:n.parsedType}),Ee;const a=n.parsedType===pe.promise?n.data:Promise.resolve(n.data);return $n(a.then(o=>this._def.type.parseAsync(o,{path:n.path,errorMap:n.common.contextualErrorMap})))}}Au.create=(t,e)=>new Au({type:t,typeName:Re.ZodPromise,...De(e)});class $i extends qe{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Re.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:n,ctx:a}=this._processInputParams(e),o=this._def.effect||null,l={addIssue:u=>{le(a,u),u.fatal?n.abort():n.dirty()},get path(){return a.path}};if(l.addIssue=l.addIssue.bind(l),o.type==="preprocess"){const u=o.transform(a.data,l);if(a.common.async)return Promise.resolve(u).then(async h=>{if(n.value==="aborted")return Ee;const p=await this._def.schema._parseAsync({data:h,path:a.path,parent:a});return p.status==="aborted"?Ee:p.status==="dirty"||n.value==="dirty"?Qo(p.value):p});{if(n.value==="aborted")return Ee;const h=this._def.schema._parseSync({data:u,path:a.path,parent:a});return h.status==="aborted"?Ee:h.status==="dirty"||n.value==="dirty"?Qo(h.value):h}}if(o.type==="refinement"){const u=h=>{const p=o.refinement(h,l);if(a.common.async)return Promise.resolve(p);if(p instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return h};if(a.common.async===!1){const h=this._def.schema._parseSync({data:a.data,path:a.path,parent:a});return h.status==="aborted"?Ee:(h.status==="dirty"&&n.dirty(),u(h.value),{status:n.value,value:h.value})}else return this._def.schema._parseAsync({data:a.data,path:a.path,parent:a}).then(h=>h.status==="aborted"?Ee:(h.status==="dirty"&&n.dirty(),u(h.value).then(()=>({status:n.value,value:h.value}))))}if(o.type==="transform")if(a.common.async===!1){const u=this._def.schema._parseSync({data:a.data,path:a.path,parent:a});if(!zi(u))return Ee;const h=o.transform(u.value,l);if(h instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:h}}else return this._def.schema._parseAsync({data:a.data,path:a.path,parent:a}).then(u=>zi(u)?Promise.resolve(o.transform(u.value,l)).then(h=>({status:n.value,value:h})):Ee);Ve.assertNever(o)}}$i.create=(t,e,n)=>new $i({schema:t,typeName:Re.ZodEffects,effect:e,...De(n)});$i.createWithPreprocess=(t,e,n)=>new $i({schema:e,effect:{type:"preprocess",transform:t},typeName:Re.ZodEffects,...De(n)});class Ps extends qe{_parse(e){return this._getType(e)===pe.undefined?$n(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Ps.create=(t,e)=>new Ps({innerType:t,typeName:Re.ZodOptional,...De(e)});class Hi extends qe{_parse(e){return this._getType(e)===pe.null?$n(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Hi.create=(t,e)=>new Hi({innerType:t,typeName:Re.ZodNullable,...De(e)});class mp extends qe{_parse(e){const{ctx:n}=this._processInputParams(e);let a=n.data;return n.parsedType===pe.undefined&&(a=this._def.defaultValue()),this._def.innerType._parse({data:a,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}mp.create=(t,e)=>new mp({innerType:t,typeName:Re.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...De(e)});class gp extends qe{_parse(e){const{ctx:n}=this._processInputParams(e),a={...n,common:{...n.common,issues:[]}},o=this._def.innerType._parse({data:a.data,path:a.path,parent:{...a}});return _u(o)?o.then(l=>({status:"valid",value:l.status==="valid"?l.value:this._def.catchValue({get error(){return new Fr(a.common.issues)},input:a.data})})):{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Fr(a.common.issues)},input:a.data})}}removeCatch(){return this._def.innerType}}gp.create=(t,e)=>new gp({innerType:t,typeName:Re.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...De(e)});class Zw extends qe{_parse(e){if(this._getType(e)!==pe.nan){const a=this._getOrReturnCtx(e);
55return le(a,{code:re.invalid_type,expected:pe.nan,received:a.parsedType}),Ee}return{status:"valid",value:e.data}}}Zw.create=t=>new Zw({typeName:Re.ZodNaN,...De(t)});class JD extends qe{_parse(e){const{ctx:n}=this._processInputParams(e),a=n.data;return this._def.type._parse({data:a,path:n.path,parent:n})}unwrap(){return this._def.type}}class qp extends qe{_parse(e){const{status:n,ctx:a}=this._processInputParams(e);if(a.common.async)return(async()=>{const l=await this._def.in._parseAsync({data:a.data,path:a.path,parent:a});return l.status==="aborted"?Ee:l.status==="dirty"?(n.dirty(),Qo(l.value)):this._def.out._parseAsync({data:l.value,path:a.path,parent:a})})();{const o=this._def.in._parseSync({data:a.data,path:a.path,parent:a});return o.status==="aborted"?Ee:o.status==="dirty"?(n.dirty(),{status:"dirty",value:o.value}):this._def.out._parseSync({data:o.value,path:a.path,parent:a})}}static create(e,n){return new qp({in:e,out:n,typeName:Re.ZodPipeline})}}class yp extends qe{_parse(e){const n=this._def.innerType._parse(e),a=o=>(zi(o)&&(o.value=Object.freeze(o.value)),o);return _u(n)?n.then(o=>a(o)):a(n)}unwrap(){return this._def.innerType}}yp.create=(t,e)=>new yp({innerType:t,typeName:Re.ZodReadonly,...De(e)});var Re;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(Re||(Re={}));const QD=Os.create;Us.create;mr.create;const XD=jt.create;ju.create;Tu.create;ja.create;const e3=qi.create;Au.create;Ps.create;Hi.create;const e4=()=>ht(()=>import("./blog-2E6CTsKT.js"),__vite__mapDeps([42,37,31,10,30])),t4=XD({tag:QD().optional()}),n4=lt("/blog")({validateSearch:t4,head:()=>({meta:[{title:"The Automate Blog | Mobile Valeting & Detailing Insights"},{name:"description",content:"Practical advice for running and growing a mobile valeting or detailing business. Pricing, no-shows, booking systems, websites and more."},{property:"og:title",content:"The Automate Blog"},{property:"og:description",content:"Practical advice for running and growing a mobile valeting or detailing business."},{property:"og:url",content:"https://getautomate.io/blog"},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:"https://getautomate.io/blog"}]}),component:dt(e4,"component")}),r4=[{question:"Do I need to use Automate myself?",answer:"No. It helps, because you can speak from experience, but it isn't a requirement."},{question:"When does commission start?",answer:"When the business you introduced converts from trial to a paid month. Trials on their own don't earn."},{question:"What happens if they cancel?",answer:"Commission stops with the subscription, or at the end of the subscriber's first 12 months â whichever comes first. There's no clawback on commission you've already been paid."},{question:"Is there a minimum I have to hit?",answer:"No targets and no minimum activity. One referral a year is fine."},{question:"How long does the discount code last?",answer:"The code gives 50% off the customer's first month. It doesn't expire on your side â you can keep using it."},{question:"Can I negotiate a different rate?",answer:"20% is the standard published rate. If you're bringing something unusual â a large list, a new market, an integration â say so in the form and we'll talk."}],s4=()=>ht(()=>import("./affiliates-BDZ4Uzm4.js"),__vite__mapDeps([43,7,25,16,2,1,3,9,38,10,27])),Jw="Car Detailing Aff
55iliate Programme UK | 20% for 12 Months",Qw="Join the Automate car detailing and valeting affiliate programme. Earn 20% commission on what a referred business pays in its first 12 months. No cap on referrals, paid monthly.",a4=lt("/affiliates")({head:()=>({meta:[{title:Jw},{name:"description",content:Qw},{property:"og:title",content:Jw},{property:"og:description",content:Qw},{property:"og:url",content:"https://getautomate.io/affiliates"},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary_large_image"}],links:[{rel:"canonical",href:"https://getautomate.io/affiliates"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:r4.map(t=>({"@type":"Question",name:t.question,acceptedAnswer:{"@type":"Answer",text:t.answer}}))})}]}),component:dt(s4,"component")}),i4=()=>ht(()=>import("./index-CRRTuNw5.js"),__vite__mapDeps([44,7,16,23,24,1,25,2,36,37,31,10,26,27,28,38,17,18,15,8])),o4=lt("/")({head:()=>({meta:[{title:"Automate | Booking software for valeters & detailers"},{name:"description",content:"Fill your week with bookings without the phone calls. Online booking, card payments, automated reminders and CRM, built for mobile valeters and detailers."},{property:"og:title",content:"Automate | Booking for valeters & detailers"},{property:"og:description",content:"Online bookings, card payments, automated reminders and a CRM, built for mobile operators."},{property:"og:url",content:"https://getautomate.io/"},{property:"og:type",content:"website"}],links:[{rel:"canonical",href:"https://getautomate.io/"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:nD.map(t=>({"@type":"Question",name:t.question,acceptedAnswer:{"@type":"Answer",text:t.answer}}))})}]}),component:dt(i4,"component")}),l4=()=>ht(()=>import("./feedback_.admin-B7AC3bfa.js"),__vite__mapDeps([45,34])),c4=lt("/feedback_/admin")({head:()=>({meta:[{title:"Feedback queue | Automate"},{name:"description",content:"Internal queue for reviewing feature requests."},{name:"robots",content:"noindex, nofollow"}]}),component:dt(l4,"component")}),u4=()=>ht(()=>import("./feedback_._slug-Cdp7TVSt.js"),__vite__mapDeps([46,34,33,47])),d4=lt("/feedback_/$slug")({loader:async({params:t})=>{const e=await YM({data:{slug:t.slug}});if(!e)throw y0();return{request:e}},head:({loaderData:t})=>{const e=t?.request,n=e?ok[hp(e.status)]:null,a=e?`${e.title} â ${n} | Automate roadmap`:"Feature request | Automate",o=e?`${n}: ${e.body.replace(/\s+/g," ").slice(0,140)}`:"A feature request on the Automate board.",l=e?`https://getautomate.io/feedback/${e.slug}`:void 0;return{meta:[{title:a},{name:"description",content:o},{property:"og:title",content:a},{property:"og:description",content:o},...l?[{property:"og:url",content:l}]:[],{property:"og:type",content:"article"},{name:"twitter:card",content:"summary_large_image"}],links:l?[{rel:"canonical",href:l}]:[],scripts:e&&l?[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"CreativeWork",name:e.title,url:l,text:e.body,about:e.category,datePublished:e.created_at,creativeWorkStatus:n,interactionStatistic:{"@type":"InteractionCounter",interactionType:"https://schema.org/LikeAction",userInteractionCount:e.vote_count},isPartOf:{"@type":"SoftwareApplication",name:"Automate",applicationCategory:"BusinessApplication",url:"https://getautomate.io"}})},{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Roadmap",item:"https://getautomate.io/roadmap"},{"@type":"ListItem",position:2,name:"Feature requests",item:"https://getautomate.io/feedback"},{"@type":"ListItem",position:3,name:e.title,item:l}]})}]:[]}},component:dt(u4,"component")}),h4=()=>ht(()=>import("./case-study.washdoctors-DPJhC8kb.js"),__vite__mapDeps([48,7,8,18,24,28,27,19])),f4=lt("/case-study/washdoctors")({head:()=>({meta:[{title:"Washdoctors case study: £200K/month | Automate"},{name:"description",content:"How Washdoctors used a bespoke version of Automate to scale into the UK's leading car care marketplace, doing over £200K/month."},{property:"og:title",content:"Washdoctors: £200K/month with custom Automate"},{property:"og:description",content:"A custom platform built with Automate, powering one of the UK's largest car care marketplaces."}
55,{property:"og:url",content:"https://getautomate.io/case-study/washdoctors"},{property:"og:type",content:"article"},{property:"og:image",content:"https://getautomate.io/og-default.png"}],links:[{rel:"canonical",href:"https://getautomate.io/case-study/washdoctors"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"Washdoctors: £200K/month with a custom Automate platform",description:"How Washdoctors used a bespoke version of Automate to scale into the UK's leading car care marketplace.",author:{"@type":"Organization",name:"Automate"},publisher:{"@type":"Organization",name:"Automate"},mainEntityOfPage:"https://getautomate.io/case-study/washdoctors",about:{"@type":"Organization",name:"Washdoctors"}})}]}),component:dt(h4,"component")}),p4=()=>ht(()=>import("./case-study.no2h2o-oCNCjFHs.js"),__vite__mapDeps([49,7,8,17,24,19])),m4=lt("/case-study/no2h2o")({head:()=>({meta:[{title:"No2H2O case study: £3K to £25K/month | Automate"},{name:"description",content:"How No2H2O scaled from one van and £3K/month to a 5-person team doing £25K/month using Automate's booking automation and marketing tools."},{property:"og:title",content:"No2H2O: £3K to £25K/month with Automate"},{property:"og:description",content:"From one van to a five-person team. Real numbers from a real mobile valeting business."},{property:"og:url",content:"https://getautomate.io/case-study/no2h2o"},{property:"og:type",content:"article"},{property:"og:image",content:"https://getautomate.io/og-default.png"}],links:[{rel:"canonical",href:"https://getautomate.io/case-study/no2h2o"}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"No2H2O: From £3K to £25K/month with Automate",description:"How No2H2O scaled from one van and £3K/month to a 5-person team doing £25K/month using Automate.",author:{"@type":"Organization",name:"Automate"},publisher:{"@type":"Organization",name:"Automate"},mainEntityOfPage:"https://getautomate.io/case-study/no2h2o",about:{"@type":"Organization",name:"No2H2O"}})}]}),component:dt(p4,"component")}),er=({headline:t="Need a booking system for your valeting business?",body:e="Automate handles bookings, reminders, and payments, so you can focus on the work.",buttonText:n="Start Free Trial",buttonLink:a="https://admin.getautomate.io/signup/about"})=>{const o=/^https?:\/\//.test(a);return d.jsxs("div",{className:"not-prose my-12 p-6 md:p-8 rounded-xl bg-card border border-border/60 flex flex-col md:flex-row md:items-center gap-4 md:gap-6",children:[d.jsxs("div",{className:"flex-1",children:[d.jsx("h3",{className:"text-lg font-bold text-foreground mb-1.5",children:t}),d.jsx("p",{className:"text-sm text-muted-foreground",children:e})]}),o?d.jsxs("a",{href:a,className:"inline-flex h-10 items-center justify-center gap-2 rounded-full bg-gradient-brand px-5 text-sm font-medium text-primary-foreground shrink-0 self-start md:self-center hover:-translate-y-0.5 transition-transform",children:[n," ",d.jsx(jw,{className:"w-4 h-4"})]}):d.jsxs(ut,{to:a,className:"inline-flex h-10 items-center justify-center gap-2 rounded-full bg-gradient-brand px-5 text-sm font-medium text-primary-foreground shrink-0 self-start md:self-center hover:-translate-y-0.5 transition-transform",children:[n," ",d.jsx(jw,{className:"w-4 h-4"})]})]})},dk="/assets/blog-reduce-no-shows-RJWdMS4x.jpg",g4=()=>d.jsxs(d.Fragment,{children:[d.jsx("p",{children:"No-shows are one of the most frustrating parts of running a mobile valeting business. You've blocked out the time, driven to the location, and the customer simply isn't there."}),d.jsxs("p",{children:[d.jsx("strong",{children:"According to industry data, the average mobile valeter loses around £7,800 per year to no-shows alone."})," That's money you'll never get back, and time you could have spent on paying customers."]}),d.jsx("p",{children:"But it doesn't have to be that way. Here are five proven strategies that our most successful customers use to dramatically reduce no-shows, some by as much as 80%."}),d.jsx("h2",{children:"1. Send Automated Reminders"}),d.jsx("p",{children:"The single most effective way to reduce no-shows is automated reminders. A simple SMS or email 24 hours before the appointment, followed by another on the morning of the job, cuts no-shows significantly."}),d.jsx("p",{children:"Most customers who no-show aren't being malicious. They've simply forgotten. Life gets busy, and a valeting appointment booked two weeks ago slips their mind."}),d.jsx("p",{children:"With AUTOMATE, reminders are sent automatically. You don't have to remember to chase anyone. Your customer gets a friendly nudge, and you get peace of mind that they'll be there."}),d.jsx("h2",{children:"2. Take Payment Upfront"}),d.jsx("p",{children:`When customers pay at the point of booking, even just a deposit, they're far more likely to show up. There's a psychological commitment that comes with handing over card details that a WhatsApp "yeah mate, see you Tuesday" simply doesn't have.`}),d.jsx("p",{children:"You don't have to charge the full amount upfront. Even a small deposit secures the booking and dramatically reduces the chance of a no-show. If they do cancel, you've at least covered some of your lost time."}),d.jsx("blockquote",{children:"A £10 deposit is often all it takes. Customers who've put money down are significantly more likely to show up, or at least give you proper notice if they can't make it."}),d.jsx("h2",{children:"3. Make Rebooking Easy"}),d.jsx("p",{children:"Sometimes customers need to reschedule. If the only way to do that is to ring you while you're mid-wash, they'll put it off and then just not turn up."}),d.jsx("p",{children:"Give them a simple way to reschedule online, and they'll use it instead of ghosting you. No awkward phone calls, no guilt. Just a quick tap to move the booking."}),d.jsx("p",{children:"A professional booking page with rescheduling options turns a potential no-show into a rebooking. You keep the customer, and your schedule stays full."}),d.jsx(er,{headline:"Need a booking system for your valeting business?",body:"Automate handles bookings, reminders, and payments so you can focus on the work.",buttonText:"Start Free Trial",buttonLink:"/contact"}),d.jsx("h2",{children:"4. Build a Professional Reputation"}),d.jsx("p",{children:"Customers are less likely to no-show on businesses they respect. If your booking confirmation looks professional, your reminders are polished, and your communication is clear, customers treat your time with more respect."}),d.jsx("p",{children:"Compare this to the valeter who confirms bookings via WhatsApp with a thumbs-up emoji. Which one are you more likely to no-show on?"}),d.jsx("img",{src:dk,alt:"Professional mobile valeting booking system showing scheduled appointments and customer management",width:1200,height:675,loading:"lazy",decoding:"async"}),d.jsx("p",{children:"Branded booking confirmations, automated reminder emails with your logo, and a professional online presence all signal that you run a serious operation. Customers respond to that."}),d.jsx("h2",{children:"5. Track and Follow Up on No-Shows"}),d.jsx("p",{children:'Keep a record of customers who no-show. Not to blacklist them (most are genuinely apologetic) but to follow up. A simple "We missed you yesterday, would you like to rebook?" message often results in a booking.'}),d.jsx("p",{children:"With a proper CRM, you can see exactly who no-showed, when, and how many times. Repeat offenders? You can require upfront payment for future bookings. First-timers? A friendly follow-up usually does the trick."}),d.jsx("h2",{children:"The Bottom Line"}),d.jsx("p",{children:`No-shows are a solvable problem. You don't need to accept them as "part of the job." With the right systems in place (automated reminders, upfront payments, easy rescheduling, professional communication, and proper tracking) you can protect your time and
55your revenue.`}),d.jsx("p",{children:"The valeters who've cracked this aren't doing anything revolutionary. They've just put simple systems in place that remove the friction and keep customers accountable."}),d.jsx("blockquote",{children:"Ready to stop losing money to no-shows? Start your free trial of AUTOMATE and see the difference automated reminders and upfront payments make from day one."})]}),y4=()=>d.jsxs(d.Fragment,{children:[d.jsx("blockquote",{children:d.jsxs("p",{children:[d.jsx("strong",{children:"The short version:"})," register as a sole trader with HMRC, get public liability and business-use van insurance, budget £4,000â£10,000 for a functional van setup (pressure washer, wet/dry vac, chemicals, and onboard water and power as soon as you can afford it), price full valets from around £40â£200 depending on vehicle size, then build the five things below: social proof, a website, a way to drive traffic to it, an online booking system, and a review engine. You can be taking bookings inside a fortnight â staying booked is what the rest of this guide is about."]})}),d.jsx("p",{children:"Starting a mobile valeting business is easy. Keeping one alive is the hard part."}),d.jsx("p",{children:"The barriers to entry are practically zero. For less than £1,000, someone can buy a pressure washer, a bucket of chemicals, and a stack of microfibre cloths. They can set up a Facebook page, post a few before-and-after photos, and start taking bookings by the end of the week. There is no qualification required, no licence to obtain, and no regulatory body standing in the way."}),d.jsx("p",{children:"That is exactly why the industry is more competitive than it has ever been."}),d.jsxs("p",{children:["There are over 22,000 car wash and valeting businesses operating in the UK. The market is worth around £1.6 billion, and UK drivers spent more than £600 million on mobile and on-demand valeting services in 2024 (source: ",d.jsx("a",{href:"https://autotidy.co.uk/mobile-valet-car-wash-statistics/",target:"_blank",rel:"noopener",className:"text-primary hover:underline",children:"Autotidy UK mobile valet & car wash statistics"}),"). Those numbers sound encouraging, and they are. Demand is growing. But so is the number of people trying to meet it."]}),d.jsx("p",{children:'The TikTok effect has played a huge role here. Satisfying snow foam videos have racked up millions of views, and they have made mobile valeting look like the dream side hustle. The promise is everywhere: "Make £10k a week as a detailer." The reality, for many, is £30 full valets and a calendar full of gaps.'}),d.jsx("p",{children:"More businesses entering the market means more competition for the same pool of customers. It means advertising costs are climbing. It means customers have more choice, and when they cannot tell the difference between two businesses, they default to whichever one is cheaper. The industry is becoming a buyer's market, and if you are not covering the fundamentals, you will struggle."}),d.jsx("p",{children:'At Automate, we work with mobile valeting and detailing businesses every day. We have seen what the successful ones get right, and we have seen where the ones that struggle tend to fall short. This guide is not about the generic stuff you will find in every "start a business" article. You can Google how to register as a sole trader or what insurance you need. That is basic, and there are plenty of resources that cover it.'}),d.jsx("p",{children:"Instead, this is about the things that actually determine whether your valeting business succeeds or fails. The essentials that separate the businesses still trading in two years from the ones that quietly disappear after six months."}),d.jsx("h2",{id:"van-and-equipment",children:"Get Your Van and Equipment Right From Day One"}),d.jsx("p",{children:"We will keep this brief because equipment lists are everywhere. But there is one piece of advice we consistently give to new valeters that most guides overlook:"}),d.jsx("p",{children:d.jsx("strong",{children:"Get onboard power and water as soon as you can afford it."})}),d.jsx("p",{children:"When you rely on the customer having an outdoor tap and a power socket, you are limiting yourself. Not every customer will have both. Some will have neither. And every time you have to turn down a booking because of access issues, that is money left on the table."}),d.jsx("p",{children:"A van fitted with a water tank (400 to 600 litres) and a generator or leisure battery setup opens up your customer base significantly. You can work on driveways with
55no outdoor tap. You can valet cars in office car parks. You can take on commercial contracts where there is no convenient power source."}),d.jsx("p",{children:"If you cannot afford a full setup on day one, that is fine. Start with what you have and reinvest into onboard capability as quickly as your cash flow allows. It is one of the highest-impact upgrades you can make."}),d.jsx("p",{children:"Beyond that, you need a reliable van, a pressure washer, a wet and dry vacuum, cleaning chemicals, microfibre cloths, and the usual bits. Total startup costs for a basic but functional setup typically sit between £4,000 and £10,000. You do not need the most expensive products on the market. Mid-range equipment that you maintain properly will serve you well."}),d.jsx("h2",{id:"five-things-to-succeed",children:"The Five Things You Actually Need to Succeed"}),d.jsx("p",{children:"Equipment and a van will get you started. But they will not keep you in business. Every successful valeting business we work with has these five things locked down. They are not optional. In a market this competitive, they are the minimum."}),d.jsx("h3",{id:"social-media-presence",children:"1. A Social Media Presence"}),d.jsx("p",{children:"This is not about going viral or becoming an influencer. It is about showing potential customers that you are real, active, and trusted with other people's vehicles."}),d.jsx("p",{children:"When someone hears about your business or finds you online, one of the first things they will do is check your social media. They want to see: Are you still operating? Are you busy? What does your work actually look like?"}),d.jsx("p",{children:"Posting your work once or twice a week is enough. A quick photo or short video of a freshly cleaned car, taken on your phone, does the job. You do not need professional photography or slick editing. You need consistency."}),d.jsx("p",{children:"One thing that matters more than people realise is the range of vehicles you show. If every post features a supercar or a high-end Mercedes, potential customers with a Ford Focus will assume you are too expensive for them, or that you would not be interested in their car. Show the full range. Family cars, everyday runabouts, work vans, the lot. That is the work that pays the bills, and showing it tells a much wider audience that your services are for them."}),d.jsx("p",{children:"It is not common for customers to book directly through social media. But socials build familiarity and trust. They are often the first or second touchpoint before someone decides to visit your website or make an enquiry."}),d.jsx("h3",{id:"website",children:"2. A Website"}),d.jsx("p",{children:"This is your shop front. Without one, you are invisible to the biggest source of new customers in the industry."}),d.jsx("p",{children:'Google remains the gold standard for reaching people with buying intent. When someone searches "mobile valeter near me" or "car detailing in Birmingham," they are not browsing. They are actively looking to book a service. If you do not have a website that explains who you are, what you offer, and where you operate, you simply will not appear in those results.'}),d.jsx("p",{children:"The good news is that your website does not need to be expensive or complicated. A domain name costs around £20 a year. When you are just getting started, a basic but well-designed site is all you need. It should clearly communicate your services, your pricing (or at least a starting-from price), the areas you cover, and how to book. That is it. You do not need a big, multi-page, all-singing-all-dancing website to get going. You can build on it later as the business grows."}),d.jsx("p",{children:"What does matter is that it looks professional. A poorly designed website does more harm than having no website at all, because it actively undermines trust. Clean layout, clear information, and some photos of your work go a long way."}),d.jsxs("p",{children:["You have a few options here. Website builders like Wix allow you to build your own site, and if you are comfortable with that kind of thing, you can put together something functional yourself. Alternatively, ",d.jsx(ut,{to:"/website-services",className:"text-primary hover:underline",children:"Automate builds affordable websites specifically for mobile valeting and detailing businesses"}),". We know what works in this industry, what information customers are looking for, and how to structure a site that converts visitors into bookings. If that sounds like it could be a good fit, ",d.jsx(ut,{to:"/contact",className:"text-primary hover:underline",children:"get in touch"})," for a chat."]}),d.jsx("h3",{id:"getting-customers",children:"3. A Way to Get People Through the Door"}),d.jsx("p",{children:"Here is the part that catches many new valeters off guard. Building a website and launching it is like building a shop in the middle of a field. It might look great inside. Your services might be brilliant. But unless people can find the door, you are not going to sell anything."}),d.jsx("p",{children:"A brand-new website, no matter how good it looks or how well it is built, will not instantly appear at the top of Google. You are competing with established businesses that have been online for years, with more visitors, more backlinks, and higher domain authority. The reality is that your site will initially appear far down in the search results, and most people never scroll past the first few."}),d.jsx("p",{children:"You need to actively drive people to your website, especially in the early days, with the long-term goal that your site will eventually climb the rankings on its own. There are two ways to do this: free and paid."}),d.jsxs("p",{children:[d.jsx("strong",{children:"What you can do for free."})," Put your website link in all of your social media profiles. Post it regularly. If you have existing customers, send them the link. Send it to friends and family and ask them to share it. Put your web address, or even better, a QR code linking to your site, on your van. Post in local community Facebook groups. Find local services groups in your area, introduce yourself and your business, and share your link. Every visitor to your site helps build its credibility with Google over time."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"What you can pay for."})," Paid advertising is, in our experience, the absolute gold standard for reaching new customers. This is especially true for mobile valeting, where individual bookings range from £40 to £200 in value."]}),d.jsx("p",{children:'Think about it this way. Someone searching "mobile valeters near me" on Google is essentially shopping at that exact moment. They have a dirty car, they want it cleaned, and they are looking for someone to do it. If your website appears in front of them right then, through a Google ad, you have a very strong chance of them clicking through, looking at your services, and making a booking.'}),d.jsx("p",{children:"Google Ads sits at the top tier for this reason. The traffic is highly qualified because the person is actively searching for what you sell. Facebook and Instagram ads are also worth considering. The traffic is less targeted than Google because people are not actively searching, but it is not expensive and it puts your business in front of local audiences who might not have been thinking about a valet until they saw your ad."}),d.jsx("p",{children:"A word of caution, though. Paid advertising is not a magic bullet, and it is not an instant fix. It should be part of your wider plan, not the whole plan. This is a competitive space, and other businesses are running ads targeting the same customers you are. Think of it as a long-term investment. For every customer who books through a paid ad, your job is to turn that one-off booking into a regular monthly customer. And that repeat booking costs you nothing."}),d.jsx("p",{children:"Do not just throw money at ads and hope for the best. Set a modest budget, track what is working, and adjust as you learn. Over time, the combination of paid traffic in the short term and organic search growth in the long term creates a steady flow of new customers without the constant spend."}),d.jsx(er,{headline:"Need a website for your valeting business?",body:"We build affordable, professional sites for mobile valeters. We know what works.",buttonText:"Get in Touch â
55",buttonLink:"/contact"}),d.jsx("h3",{id:"booking-system",children:"4. A Booking System"}),d.jsx("p",{children:"If you are still managing bookings through text messages, phone calls, and a paper diary, you are making life harder than it needs to be. And you are likely losing customers because of it."}),d.jsx("p",{children:"Here is what happens without a proper system. You are on a job, elbow-deep in a car interior, and your phone rings. You either miss the call and hope they leave a message (they probably will not), or you stop what you are doing to answer it. Later that evening, you are sending messages trying to confirm tomorrow's appointments, chasing a payment from last week, and trying to figure out whether Thursday at 2pm is actually free or if you already agreed to something in a WhatsApp thread you cannot find."}),d.jsx("p",{children:"This gets old quickly. And it is not just an inconvenience. It looks unprofessional. When a potential customer tries to book and gets voicemail, or has to wait hours for a reply, many of them will simply move on to the next valeter who made it easier."}),d.jsx("p",{children:"A proper booking system changes the game. Customers can see your services and add-ons, view your real availability, and book themselves in without needing to call you. With online payments, they pay securely at the time of booking. Automated reminder emails and SMS messages keep them informed. Automated cancellation policies drastically reduce no-shows. And you get all of this without lifting a finger."}),d.jsxs("p",{children:[d.jsx(ut,{to:"/",className:"text-primary hover:underline",children:"Automate"})," is built specifically for this. It handles your bookings, payments, reminders, and customer management in one place, so you can focus on the actual work. It makes you and your business look professional and trustworthy, which matters enormously when you are asking someone to hand over the keys to their car."]}),d.jsx("p",{children:"A booking system is not a luxury for when your business is bigger. It is a foundation that helps you grow from the start."}),d.jsx("h3",{id:"reviews",children:"5. Reviews"}),d.jsx("p",{children:"This one ties everything together. Active social media tells potential customers that other people are booking you. A good website and booking system tells them you are a serious business. Reviews confirm that all of it is true."}),d.jsx("p",{children:"In a market where customers are spoilt for choice, reviews are the tiebreaker. Two valeters with similar pricing and similar services, but one has 85 five-star Google reviews and the other has three? That is not even a contest."}),d.jsx("p",{children:"The key is to make review collection a habit, not an afterthought. Ask every single customer to leave a review after their valet. Make it easy for them by sending a direct link. And keep your reviews in one place. Do not scatter them across Google, Facebook, Trustpilot, and half a dozen other platforms. Consolidate them on Google. A strong Google Business Profile with plenty of recent, genuine reviews does more for your local visibility than almost anything else."}),d.jsx("p",{children:"Set up a Google Business Profile if you have not already. It is free, and it puts your business on Google Maps and in local search results. Fill it out completely with your services, photos, opening hours, service area, and a link to your website."}),d.jsx("p",{children:"Reply to every review you receive, positive or negative. It shows that you are engaged and that you care about customer feedback. And it keeps your profile looking active."}),d.jsxs("p",{children:["With ",d.jsx(ut,{to:"/",className:"text-primary hover:underline",children:"Automate"}),", review collection can be automated. After every completed booking, the system sends your customer a review link without you having to remember or chase it up. Over time, this builds a bank of genuine reviews that does your selling for you."]}),d.jsx("h2",{id:"playing-the-long-game",children:"Playing the Long Game"}),d.jsx("p",{children:"The mobile valeting businesses that thrive are not the ones with the fanciest equipment or the lowest prices. They are the ones that get the fundamentals right and stick with them."}),d.jsx("p",{children:"Consistency beats everything. Showing up on time, doing quality work, communicating professionally, and building relationships with your customers. These things compound over time. A customer who books you every month is worth far more than a one-off full valet, and they cost you nothing to acquire after that first booking."}),d.jsx("p",{children:"Retention is where the real money is. Existing customers are assets. Every time you turn a new customer into a repeat booking, you reduce your dependence on advertising and word-of-mouth to keep your calendar full. Focus on giving people a reason to come back, not just a reason to book once."}),d.jsx("p",{children:"The competition will keep growing. Advertising costs will keep rising. New valeters will keep entering the market with cheap prices and a pressure washer in the back of their car. That is the reality of an unregulated, low-barrier industry."}),d.jsx("p",{children:"But the ones who last are the ones who build a proper business. A social presence that shows they are active and trusted. A website that makes them easy to find. A system for reaching new customers and driving traffic. A booking platform that handles the admin and makes the customer experience seamless. And a growing bank of reviews that proves they deliver on their promises."}),d.jsx("p",{children:"Nail those five things, and you will not just start a mobile valeting business. You will build one that lasts."})]}),b4=[{step:1,title:"Entry Level",price:"£30 â £50",services:["Mini Valet · Exterior Wash","Maintenance Clean"],role:"THE FRONT DOOR",stats:["Gets customers through the door.","32% come back and upgrade."],accentColor:"oklch(0.65 0.16 240)",accentBg:"oklch(0.65 0.16 240 / 0.12)",badge:null},{step:2,title:"Mid-Level Valet",price:"£50 â £80",services:["Standard Valet · Interior & Exterior","Mini Valet Plus · Maintenance Detail"],role:"THE ENGINE",stats:["56% of all bookings land here.","Where you earn your living.","Price for regular repeat use."],accentColor:"var(--primary)",accentBg:"color-mix(in oklab, var(--primary) 15%, transparent)",badge:"MOST BOOKED"},{step:3,title:"Full / Premium",price:"£100 â £140",services:["Full Valet · Deep Clean","Shampoo · Wax · The Works"],role:"THE MONEYMAKER",stats:["23% of bookings, 32% of revenue.","Avg booking: £119."],accentColor:"oklch(0.78 0.14 75)",accentBg:"oklch(0.78 0.14 75 / 0.12)",badge:null}],v4=()=>d.jsx("div",{className:"not-prose my-12 md:my-16",children:d.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 md:gap-5",children:b4.map(t=>d.jsxs("div",{className:"relative rounded-xl border border-border/60 bg-card p-5 md:p-6",style:{borderTopWidth:3,borderTopColor:t.accentColor},children:[t.badge&&d.jsx("span",{className:"absolute -top-3 left-1/2 -translate-x-1/2 text-[10px] font-bold tracking-wider text-primary-foreground px-3 py-1 rounded-full",style:{backgroundColor:t.accentColor},children:t.badge}),d.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[d.jsx("span",{className:"w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold",style:{backgroundColor:t.accentBg,color:t.accentColor},children:t.step}),d.jsx("span",{className:"font-bold text-foreground text-[15px]",children:t.title})]}),d.jsx("div",{className:"rounded-lg px-4 py-2.5 mb-4 text-center",style:{backgroundColor:t.accentBg},children:d.jsx("span",{className:"text-xl font-bold",style:{color:t.accentColor},children:t.price})}),d.jsx("div",{className:"text-xs text-muted-foreground space-y-1 mb-4",children:t.services.map(e=>d.jsx("p",{children:e},e))}),d.jsx("div",{className:"h-px bg-border mb-4"}),d.jsx("p",{className:"text-[11px] font-semibold tracking-wider mb-1.5",style:{color:t.accentColor},children:t.role}),t.stats.map(e=>d.jsx("p",{className:"text-[11px] text-muted-foreground leading-relaxed",children:e},e))]},t.step))})}),vl=({label:t,children:e})=>d.jsxs("div",{className:"not-prose my-10 md:my-12 rounded-xl border-l-[3px] border-primary bg-primary/5 p-6 md:p-8",children:[d.jsx("p",{className:"text-sm font-bold text-primary tracking-wide mb-2",children:t}
vendor: 4,082 bytes, line 55
55),d.jsx("div",{className:"text-[15px] md:text-[16px] text-foreground/85 leading-relaxed",children:e})]});function hk(t){var e,n,a="";if(typeof t=="string"||typeof t=="number")a+=t;else if(typeof t=="object")if(Array.isArray(t)){var o=t.length;for(e=0;e<o;e++)t[e]&&(n=hk(t[e]))&&(a&&(a+=" "),a+=n)}else for(n in t)t[n]&&(a&&(a+=" "),a+=n);return a}function fk(){for(var t,e,n=0,a="",o=arguments.length;n<o;n++)(t=arguments[n])&&(e=hk(t))&&(a&&(a+=" "),a+=e);return a}const w4=(t,e)=>{const n=new Array(t.length+e.length);for(let a=0;a<t.length;a++)n[a]=t[a];for(let a=0;a<e.length;a++)n[t.length+a]=e[a];return n},x4=(t,e)=>({classGroupId:t,validator:e}),pk=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),Eu="-",Xw=[],k4="arbitrary..",_4=t=>{const e=j4(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:a}=t;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return S4(u);const h=u.split(Eu),p=h[0]===""&&h.length>1?1:0;return mk(h,p,e)},getConflictingClassGroupIds:(u,h)=>{if(h){const p=a[u],m=n[u];return p?m?w4(m,p):p:m||Xw}return n[u]||Xw}}},mk=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const o=t[e],l=n.nextPart.get(o);if(l){const m=mk(t,e+1,l);if(m)return m}const u=n.validators;if(u===null)return;const h=e===0?t.join(Eu):t.slice(e).join(Eu),p=u.length;for(let m=0;m<p;m++){const b=u[m];if(b.validator(h))return b.classGroupId}},S4=t=>t.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),a=e.slice(0,n);return a?k4+a:void 0})(),j4=t=>{const{theme:e,classGroups:n}=t;return T4(n,e)},T4=(t,e)=>{const n=pk();for(const a in t){const o=t[a];$p(o,n,a,e)}return n},$p=(t,e,n,a)=>{const o=t.length;for(let l=0;l<o;l++){const u=t[l];A4(u,e,n,a)}},A4=(t,e,n,a)=>{if(typeof t=="string"){E4(t,e,n);return}if(typeof t=="function"){R4(t,e,n,a);return}C4(t,e,n,a)},E4=(t,e,n)=>{const a=t===""?e:gk(e,t);a.classGroupId=n},R4=(t,e,n,a)=>{if(O4(t)){$p(t(a),e,n,a);return}e.validators===null&&(e.validators=[]),e.validators.push(x4(n,t))},C4=(t,e,n,a)=>{const o=Object.entries(t),l=o.length;for(let u=0;u<l;u++){const[h,p]=o[u];$p(p,gk(e,h),n,a)}},gk=(t,e)=>{let n=t;const a=e.split(Eu),o=a.length;for(let l=0;l<o;l++){const u=a[l];let h=n.nextPart.get(u);h||(h=pk(),n.nextPart.set(u,h)),n=h}return n},O4=t=>"isThemeGetter"in t&&t.isThemeGetter===!0,N4=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),a=Object.create(null);const o=(l,u)=>{n[l]=u,e++,e>t&&(e=0,a=n,n=Object.create(null))};return{get(l){let u=n[l];if(u!==void 0)return u;if((u=a[l])!==void 0)return o(l,u),u},set(l,u){l in n?n[l]=u:o(l,u)}}},bp="!",e0=":",M4=[],t0=(t,e,n,a,o)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:a,isExternal:o}),D4=t=>{const{prefix:e,experimentalParseClassName:n}=t;let a=o=>{const l=[];let u=0,h=0,p=0,m;const b=o.length;for(let A=0;A<b;A++){const _=o[A];if(u===0&&h===0){if(_===e0){l.push(o.slice(p,A)),p=A+1;continue}if(_==="/"){m=A;continue}}_==="["?u++:_==="]"?u--:_==="("?h++:_===")"&&h--}const y=l.length===0?o:o.slice(p);let w=y,x=!1;y.endsWith(bp)?(w=y.slice(0,-1),x=!0):y.startsWith(bp)&&(w=y.slice(1),x=!0);const k=m&&m>p?m-p:void 0;return t0(l,x,w,k)};if(e){const o=e+e0,l=a;a=u=>u.startsWith(o)?l(u.slice(o.length)):t0(M4,!1,u,void 0,!0)}if(n){const o=a;a=l=>n({className:l,parseClassName:o})}return a},P4=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,a)=>{e.set(n,1e6+a)}),n=>{const a=[];let o=[];for(let l=0;l<n.length;l++){const u=n[l],h=u[0]==="[",p=e.has(u);h||p?(o.length>0&&(o.sort(),a.push(...o),o=[]),a.push(u)):o.push(u)}return o.length>0&&(o.sort(),a.push(...o)),a}},L4=t=>({cache:N4(t.cacheSize),parseClassName:D4(t),sortModifiers:P4(t),..._4(t)}),U4=/\s+/,I4=(t,e)=>{const{parseClassName:n,getClassGroupId:a,getConflictingClassGroupIds:o,sortModifiers:l}=e,u=[],h=t.trim().split(U4);let p="";for(let m=h.length-1;m>=0;m-=1){const b=h[m],{isExternal:y,modifiers:w,hasImportantModifier:x,baseClassName:k,maybePostfixModifierPosition:A}=n(b);if(y){p=b+(p.length>0?" "+p:p);continue}let _=!!A,j=a(_?k.substring(0,A):k);
vendor: 4,741 bytes, line 55
55if(!j){if(!_){p=b+(p.length>0?" "+p:p);continue}if(j=a(k),!j){p=b+(p.length>0?" "+p:p);continue}_=!1}const O=w.length===0?"":w.length===1?w[0]:l(w).join(":"),R=x?O+bp:O,M=R+j;if(u.indexOf(M)>-1)continue;u.push(M);const K=o(j,_);for(let V=0;V<K.length;++V){const $=K[V];u.push(R+$)}p=b+(p.length>0?" "+p:p)}return p},B4=(...t)=>{let e=0,n,a,o="";for(;e<t.length;)(n=t[e++])&&(a=yk(n))&&(o&&(o+=" "),o+=a);return o},yk=t=>{if(typeof t=="string")return t;let e,n="";for(let a=0;a<t.length;a++)t[a]&&(e=yk(t[a]))&&(n&&(n+=" "),n+=e);return n},z4=(t,...e)=>{let n,a,o,l;const u=p=>{const m=e.reduce((b,y)=>y(b),t());return n=L4(m),a=n.cache.get,o=n.cache.set,l=h,h(p)},h=p=>{const m=a(p);if(m)return m;const b=I4(p,n);return o(p,b),b};return l=u,(...p)=>l(B4(...p))},q4=[],Ct=t=>{const e=n=>n[t]||q4;return e.isThemeGetter=!0,e},bk=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,vk=/^\((?:(\w[\w-]*):)?(.+)\)$/i,$4=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,H4=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,V4=/\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$/,F4=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,G4=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,K4=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ws=t=>$4.test(t),Me=t=>!!t&&!Number.isNaN(Number(t)),xs=t=>!!t&&Number.isInteger(Number(t)),Uf=t=>t.endsWith("%")&&Me(t.slice(0,-1)),Br=t=>H4.test(t),wk=()=>!0,Y4=t=>V4.test(t)&&!F4.test(t),Hp=()=>!1,W4=t=>G4.test(t),Z4=t=>K4.test(t),J4=t=>!de(t)&&!fe(t),Q4=t=>Hs(t,_k,Hp),de=t=>bk.test(t),ma=t=>Hs(t,Sk,Y4),n0=t=>Hs(t,iP,Me),X4=t=>Hs(t,Tk,wk),eP=t=>Hs(t,jk,Hp),r0=t=>Hs(t,xk,Hp),tP=t=>Hs(t,kk,Z4),eu=t=>Hs(t,Ak,W4),fe=t=>vk.test(t),Yo=t=>Ea(t,Sk),nP=t=>Ea(t,jk),s0=t=>Ea(t,xk),rP=t=>Ea(t,_k),sP=t=>Ea(t,kk),tu=t=>Ea(t,Ak,!0),aP=t=>Ea(t,Tk,!0),Hs=(t,e,n)=>{const a=bk.exec(t);return a?a[1]?e(a[1]):n(a[2]):!1},Ea=(t,e,n=!1)=>{const a=vk.exec(t);return a?a[1]?e(a[1]):n:!1},xk=t=>t==="position"||t==="percentage",kk=t=>t==="image"||t==="url",_k=t=>t==="length"||t==="size"||t==="bg-size",Sk=t=>t==="length",iP=t=>t==="number",jk=t=>t==="family-name",Tk=t=>t==="number"||t==="weight",Ak=t=>t==="shadow",oP=()=>{const t=Ct("color"),e=Ct("font"),n=Ct("text"),a=Ct("font-weight"),o=Ct("tracking"),l=Ct("leading"),u=Ct("breakpoint"),h=Ct("container"),p=Ct("spacing"),m=Ct("radius"),b=Ct("shadow"),y=Ct("inset-shadow"),w=Ct("text-shadow"),x=Ct("drop-shadow"),k=Ct("blur"),A=Ct("perspective"),_=Ct("aspect"),j=Ct("ease"),O=Ct("animate"),R=()=>["auto","avoid","all","avoid-page","page","left","right","column"],M=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],K=()=>[...M(),fe,de],V=()=>["auto","hidden","clip","visible","scroll"],$=()=>["auto","contain","none"],U=()=>[fe,de,p],Q=()=>[ws,"full","auto",...U()],ae=()=>[xs,"none","subgrid",fe,de],se=()=>["auto",{span:["full",xs,fe,de]},xs,fe,de],ye=()=>[xs,"auto",fe,de],_e=()=>["auto","min","max","fr",fe,de],ze=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Ce=()=>["start","end","center","stretch","center-safe","end-safe"],L=()=>["auto",...U()],Y=()=>[ws,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...U()],ie=()=>[ws,"screen","full","dvw","lvw","svw","min","max","fit",...U()],Se=()=>[ws,"screen","full","lh","dvh","lvh","svh","min","max","fit",...U()],ne=()=>[t,fe,de],N=()=>[...M(),s0,r0,{position:[fe,de]}],G=()=>["no-repeat",{repeat:["","x","y","space","round"]}],Z=()=>["auto","cover","contain",rP,Q4,{size:[fe,de]}],ee=()=>[Uf,Yo,ma],X=()=>["","none","full",m,fe,de],ce=()=>["",Me,Yo,ma],Te=()=>["solid","dashed","dotted","double"],ke=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ve=()=>[Me,Uf,s0,r0],zt=()=>["","none",k,fe,de],At=()=>["none",Me,fe,de],vt=()=>["none",Me,fe,de],Hn=()=>[Me,fe,de],Et=()=>[ws,"full",...U()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Br],breakpoint:[Br],color:[wk],container:[Br],"drop-shadow":[Br],ease:["in","out","in-out"],font:[J4],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Br],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Br],shadow:[Br],spacing:["px",Me],text:[Br],"text-shadow":[Br],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ws,de,fe,_]}
vendor: 6,121 bytes, line 55
55],container:["container"],columns:[{columns:[Me,de,fe,h]}],"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:V()}],"overflow-x":[{"overflow-x":V()}],"overflow-y":[{"overflow-y":V()}],overscroll:[{overscroll:$()}],"overscroll-x":[{"overscroll-x":$()}],"overscroll-y":[{"overscroll-y":$()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Q()}],"inset-x":[{"inset-x":Q()}],"inset-y":[{"inset-y":Q()}],start:[{"inset-s":Q(),start:Q()}],end:[{"inset-e":Q(),end:Q()}],"inset-bs":[{"inset-bs":Q()}],"inset-be":[{"inset-be":Q()}],top:[{top:Q()}],right:[{right:Q()}],bottom:[{bottom:Q()}],left:[{left:Q()}],visibility:["visible","invisible","collapse"],z:[{z:[xs,"auto",fe,de]}],basis:[{basis:[ws,"full","auto",h,...U()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Me,ws,"auto","initial","none",de]}],grow:[{grow:["",Me,fe,de]}],shrink:[{shrink:["",Me,fe,de]}],order:[{order:[xs,"first","last","none",fe,de]}],"grid-cols":[{"grid-cols":ae()}],"col-start-end":[{col:se()}],"col-start":[{"col-start":ye()}],"col-end":[{"col-end":ye()}],"grid-rows":[{"grid-rows":ae()}],"row-start-end":[{row:se()}],"row-start":[{"row-start":ye()}],"row-end":[{"row-end":ye()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":_e()}],"auto-rows":[{"auto-rows":_e()}],gap:[{gap:U()}],"gap-x":[{"gap-x":U()}],"gap-y":[{"gap-y":U()}],"justify-content":[{justify:[...ze(),"normal"]}],"justify-items":[{"justify-items":[...Ce(),"normal"]}],"justify-self":[{"justify-self":["auto",...Ce()]}],"align-content":[{content:["normal",...ze()]}],"align-items":[{items:[...Ce(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Ce(),{baseline:["","last"]}]}],"place-content":[{"place-content":ze()}],"place-items":[{"place-items":[...Ce(),"baseline"]}],"place-self":[{"place-self":["auto",...Ce()]}],p:[{p:U()}],px:[{px:U()}],py:[{py:U()}],ps:[{ps:U()}],pe:[{pe:U()}],pbs:[{pbs:U()}],pbe:[{pbe:U()}],pt:[{pt:U()}],pr:[{pr:U()}],pb:[{pb:U()}],pl:[{pl:U()}],m:[{m:L()}],mx:[{mx:L()}],my:[{my:L()}],ms:[{ms:L()}],me:[{me:L()}],mbs:[{mbs:L()}],mbe:[{mbe:L()}],mt:[{mt:L()}],mr:[{mr:L()}],mb:[{mb:L()}],ml:[{ml:L()}],"space-x":[{"space-x":U()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":U()}],"space-y-reverse":["space-y-reverse"],size:[{size:Y()}],"inline-size":[{inline:["auto",...ie()]}],"min-inline-size":[{"min-inline":["auto",...ie()]}],"max-inline-size":[{"max-inline":["none",...ie()]}],"block-size":[{block:["auto",...Se()]}],"min-block-size":[{"min-block":["auto",...Se()]}],"max-block-size":[{"max-block":["none",...Se()]}],w:[{w:[h,"screen",...Y()]}],"min-w":[{"min-w":[h,"screen","none",...Y()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[u]},...Y()]}],h:[{h:["screen","lh",...Y()]}],"min-h":[{"min-h":["screen","lh","none",...Y()]}],"max-h":[{"max-h":["screen","lh",...Y()]}],"font-size":[{text:["base",n,Yo,ma]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[a,aP,X4]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Uf,de]}],"font-family":[{font:[nP,eP,e]}],"font-features":[{"font-features":[de]}],"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,fe,de]}],"line-clamp":[{"line-clamp":[Me,"none",fe,n0]}],leading:[{leading:[l,...U()]}],"list-image":[{"list-image":["none",fe,de]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",fe,de]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:ne()}],"text-color":[{text:ne()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Te(),"wavy"]}],"text-decoration-thickness":[{decoration:[Me,"from-font","auto",fe,ma]}],"text-decoration-color":[{decoration:ne()}],"underline-offset":[{"underline-offset":[Me,"auto",fe,de]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:U()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",fe,de]}],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",fe,de]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:N()}],"bg-repeat":[{bg:G()}],"bg-size":[{bg:Z()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},xs,fe,de],radial:["",fe,de],conic:[xs,fe,de]},sP,tP]}],"bg-color":[{bg:ne()}],"gradient-from-pos":[{from:ee()}
vendor: 7,430 bytes, line 55
55],"gradient-via-pos":[{via:ee()}],"gradient-to-pos":[{to:ee()}],"gradient-from":[{from:ne()}],"gradient-via":[{via:ne()}],"gradient-to":[{to:ne()}],rounded:[{rounded:X()}],"rounded-s":[{"rounded-s":X()}],"rounded-e":[{"rounded-e":X()}],"rounded-t":[{"rounded-t":X()}],"rounded-r":[{"rounded-r":X()}],"rounded-b":[{"rounded-b":X()}],"rounded-l":[{"rounded-l":X()}],"rounded-ss":[{"rounded-ss":X()}],"rounded-se":[{"rounded-se":X()}],"rounded-ee":[{"rounded-ee":X()}],"rounded-es":[{"rounded-es":X()}],"rounded-tl":[{"rounded-tl":X()}],"rounded-tr":[{"rounded-tr":X()}],"rounded-br":[{"rounded-br":X()}],"rounded-bl":[{"rounded-bl":X()}],"border-w":[{border:ce()}],"border-w-x":[{"border-x":ce()}],"border-w-y":[{"border-y":ce()}],"border-w-s":[{"border-s":ce()}],"border-w-e":[{"border-e":ce()}],"border-w-bs":[{"border-bs":ce()}],"border-w-be":[{"border-be":ce()}],"border-w-t":[{"border-t":ce()}],"border-w-r":[{"border-r":ce()}],"border-w-b":[{"border-b":ce()}],"border-w-l":[{"border-l":ce()}],"divide-x":[{"divide-x":ce()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ce()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Te(),"hidden","none"]}],"divide-style":[{divide:[...Te(),"hidden","none"]}],"border-color":[{border:ne()}],"border-color-x":[{"border-x":ne()}],"border-color-y":[{"border-y":ne()}],"border-color-s":[{"border-s":ne()}],"border-color-e":[{"border-e":ne()}],"border-color-bs":[{"border-bs":ne()}],"border-color-be":[{"border-be":ne()}],"border-color-t":[{"border-t":ne()}],"border-color-r":[{"border-r":ne()}],"border-color-b":[{"border-b":ne()}],"border-color-l":[{"border-l":ne()}],"divide-color":[{divide:ne()}],"outline-style":[{outline:[...Te(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Me,fe,de]}],"outline-w":[{outline:["",Me,Yo,ma]}],"outline-color":[{outline:ne()}],shadow:[{shadow:["","none",b,tu,eu]}],"shadow-color":[{shadow:ne()}],"inset-shadow":[{"inset-shadow":["none",y,tu,eu]}],"inset-shadow-color":[{"inset-shadow":ne()}],"ring-w":[{ring:ce()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:ne()}],"ring-offset-w":[{"ring-offset":[Me,ma]}],"ring-offset-color":[{"ring-offset":ne()}],"inset-ring-w":[{"inset-ring":ce()}],"inset-ring-color":[{"inset-ring":ne()}],"text-shadow":[{"text-shadow":["none",w,tu,eu]}],"text-shadow-color":[{"text-shadow":ne()}],opacity:[{opacity:[Me,fe,de]}],"mix-blend":[{"mix-blend":[...ke(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ke()}],"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":[Me]}],"mask-image-linear-from-pos":[{"mask-linear-from":ve()}],"mask-image-linear-to-pos":[{"mask-linear-to":ve()}],"mask-image-linear-from-color":[{"mask-linear-from":ne()}],"mask-image-linear-to-color":[{"mask-linear-to":ne()}],"mask-image-t-from-pos":[{"mask-t-from":ve()}],"mask-image-t-to-pos":[{"mask-t-to":ve()}],"mask-image-t-from-color":[{"mask-t-from":ne()}],"mask-image-t-to-color":[{"mask-t-to":ne()}],"mask-image-r-from-pos":[{"mask-r-from":ve()}],"mask-image-r-to-pos":[{"mask-r-to":ve()}],"mask-image-r-from-color":[{"mask-r-from":ne()}],"mask-image-r-to-color":[{"mask-r-to":ne()}],"mask-image-b-from-pos":[{"mask-b-from":ve()}],"mask-image-b-to-pos":[{"mask-b-to":ve()}],"mask-image-b-from-color":[{"mask-b-from":ne()}],"mask-image-b-to-color":[{"mask-b-to":ne()}],"mask-image-l-from-pos":[{"mask-l-from":ve()}],"mask-image-l-to-pos":[{"mask-l-to":ve()}],"mask-image-l-from-color":[{"mask-l-from":ne()}],"mask-image-l-to-color":[{"mask-l-to":ne()}],"mask-image-x-from-pos":[{"mask-x-from":ve()}],"mask-image-x-to-pos":[{"mask-x-to":ve()}],"mask-image-x-from-color":[{"mask-x-from":ne()}],"mask-image-x-to-color":[{"mask-x-to":ne()}],"mask-image-y-from-pos":[{"mask-y-from":ve()}],"mask-image-y-to-pos":[{"mask-y-to":ve()}],"mask-image-y-from-color":[{"mask-y-from":ne()}],"mask-image-y-to-color":[{"mask-y-to":ne()}],"mask-image-radial":[{"mask-radial":[fe,de]}],"mask-image-radial-from-pos":[{"mask-radial-from":ve()}],"mask-image-radial-to-pos":[{"mask-radial-to":ve()}],"mask-image-radial-from-color":[{"mask-radial-from":ne()}],"mask-image-radial-to-color":[{"mask-radial-to":ne()}],"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":M()}],"mask-image-conic-pos":[{"mask-conic":[Me]}],"mask-image-conic-from-pos":[{"mask-conic-from":ve()}],"mask-image-conic-to-pos":[{"mask-conic-to":ve()}],"mask-image-conic-from-color":[{"mask-conic-from":ne()}],"mask-image-conic-to-color":[{"mask-conic-to":ne()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:N()}],"mask-repeat":[{mask:G()}],"mask-size":[{mask:Z()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",fe,de]}],filter:[{filter:["","none",fe,de]}],blur:[{blur:zt()}],brightness:[{brightness:[Me,fe,de]}],contrast:[{contrast:[Me,fe,de]}],"drop-shadow":[{"drop-shadow":["","none",x,tu,eu]}],"drop-shadow-color":[{"drop-shadow":ne()}],grayscale:[{grayscale:["",Me,fe,de]}],"hue-rotate":[{"hue-rotate":[Me,fe,de]}],invert:[{invert:["",Me,fe,de]}],saturate:[{saturate:[Me,fe,de]}],sepia:[{sepia:["",Me,fe,de]}],"backdrop-filter":[{"backdrop-filter":["","none",fe,de]}],"backdrop-blur":[{"backdrop-blur":zt()}],"backdrop-brightness":[{"backdrop-brightness":[Me,fe,de]}],"backdrop-contrast":[{"backdrop-contrast":[Me,fe,de]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Me,fe,de]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Me,fe,de]}],"backdrop-invert":[{"backdrop-invert":["",Me,fe,de]}],"backdrop-opacity":[{"backdrop-opacity":[Me,fe,de]}],"backdrop-saturate":[{"backdrop-saturate":[Me,fe,de]}],"backdrop-sepia":[{"backdrop-sepia":["",Me,fe,de]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":U()}],"border-spacing-x":[{"border-spacing-x":U()}],"border-spacing-y":[{"border-spacing-y":U()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",fe,de]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Me,"initial",fe,de]}],ease:[{ease:["linear","initial",j,fe,de]}],delay:[{delay:[Me,fe,de]}],animate:[{animate:["none",O,fe,de]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[A,fe,de]}],"perspective-origin":[{"perspective-origin":K()}],rotate:[{rotate:At()}],"rotate-x":[{"rotate-x":At()}],"rotate-y":[{"rotate-y":At()}],"rotate-z":[{"rotate-z":At()}],scale:[{scale:vt()}],"scale-x":[{"scale-x":vt()}],"scale-y":[{"scale-y":vt()}],"scale-z":[{"scale-z":vt()}],"scale-3d":["scale-3d"],skew:[{skew:Hn()}],"skew-x":[{"skew-x":Hn()}],"skew-y":[{"skew-y":Hn()}],transform:[{transform:[fe,de,"","none","gpu","cpu"]}],"transform-origin":[{origin:K()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Et()}],"translate-x":[{"translate-x":Et()}],"translate-y":[{"translate-y":Et()}],"translate-z":[{"translate-z":Et()}],"translate-none":["translate-none"],accent:[{accent:ne()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:ne()}
vendor: 6,998 bytes, line 55
55],"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",fe,de]}],"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":U()}],"scroll-mx":[{"scroll-mx":U()}],"scroll-my":[{"scroll-my":U()}],"scroll-ms":[{"scroll-ms":U()}],"scroll-me":[{"scroll-me":U()}],"scroll-mbs":[{"scroll-mbs":U()}],"scroll-mbe":[{"scroll-mbe":U()}],"scroll-mt":[{"scroll-mt":U()}],"scroll-mr":[{"scroll-mr":U()}],"scroll-mb":[{"scroll-mb":U()}],"scroll-ml":[{"scroll-ml":U()}],"scroll-p":[{"scroll-p":U()}],"scroll-px":[{"scroll-px":U()}],"scroll-py":[{"scroll-py":U()}],"scroll-ps":[{"scroll-ps":U()}],"scroll-pe":[{"scroll-pe":U()}],"scroll-pbs":[{"scroll-pbs":U()}],"scroll-pbe":[{"scroll-pbe":U()}],"scroll-pt":[{"scroll-pt":U()}],"scroll-pr":[{"scroll-pr":U()}],"scroll-pb":[{"scroll-pb":U()}],"scroll-pl":[{"scroll-pl":U()}],"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",fe,de]}],fill:[{fill:["none",...ne()]}],"stroke-w":[{stroke:[Me,Yo,ma,n0]}],stroke:[{stroke:["none",...ne()]}],"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"]}},lP=z4(oP);function Vp(...t){return lP(fk(t))}const Ek=I.forwardRef(({className:t,type:e,...n},a)=>d.jsx("input",{type:e,className:Vp("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:a,...n}));Ek.displayName="Input";function a0(t,e){if(typeof t=="function")return t(e);t!=null&&(t.current=e)}function Yu(...t){return e=>{let n=!1;const a=t.map(o=>{const l=a0(o,e);return!n&&typeof l=="function"&&(n=!0),l});if(n)return()=>{for(let o=0;o<a.length;o++){const l=a[o];typeof l=="function"?l():a0(t[o],null)}}}}function Is(...t){return I.useCallback(Yu(...t),t)}var cP=Symbol.for("react.lazy"),Ru=u0[" use ".trim().toString()];function uP(t){return typeof t=="object"&&t!==null&&"then"in t}function Rk(t){return t!=null&&typeof t=="object"&&"$$typeof"in t&&t.$$typeof===cP&&"_payload"in t&&uP(t._payload)}function Ck(t){const e=dP(t),n=I.forwardRef((a,o)=>{let{children:l,...u}=a;Rk(l)&&typeof Ru=="function"&&(l=Ru(l._payload));const h=I.Children.toArray(l),p=h.find(fP);if(p){const m=p.props.children,b=h.map(y=>y===p?I.Children.count(m)>1?I.Children.only(null):I.isValidElement(m)?m.props.children:null:y);return d.jsx(e,{...u,ref:o,children:I.isValidElement(m)?I.cloneElement(m,void 0,b):null})}return d.jsx(e,{...u,ref:o,children:l})});return n.displayName=`${t}.Slot`,n}var t3=Ck("Slot");function dP(t){const e=I.forwardRef((n,a)=>{let{children:o,...l}=n;if(Rk(o)&&typeof Ru=="function"&&(o=Ru(o._payload)),I.isValidElement(o)){const u=mP(o),h=pP(l,o.props);return o.type!==I.Fragment&&(h.ref=a?Yu(a,u):u),I.cloneElement(o,h)}return I.Children.count(o)>1?I.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var hP=Symbol("radix.slottable");function fP(t){return I.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===hP}function pP(t,e){const n={...e};for(const a in e){const o=t[a],l=e[a];/^on[A-Z]/.test(a)?o&&l?n[a]=(...h)=>{const p=l(...h);return o(...h),p}:o&&(n[a]=o):a==="style"?n[a]={...o,...l}
vendor: 4,209 bytes, line 55
55:a==="className"&&(n[a]=[o,l].filter(Boolean).join(" "))}return{...t,...n}}function mP(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var gP=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],yP=gP.reduce((t,e)=>{const n=Ck(`Primitive.${e}`),a=I.forwardRef((o,l)=>{const{asChild:u,...h}=o,p=u?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),d.jsx(p,{...h,ref:l})});return a.displayName=`Primitive.${e}`,{...t,[e]:a}},{}),bP="Label",Ok=I.forwardRef((t,e)=>d.jsx(yP.label,{...t,ref:e,onMouseDown:n=>{n.target.closest("button, input, select, textarea")||(t.onMouseDown?.(n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));Ok.displayName=bP;var Nk=Ok;const i0=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,o0=fk,vP=(t,e)=>n=>{var a;if(e?.variants==null)return o0(t,n?.class,n?.className);const{variants:o,defaultVariants:l}=e,u=Object.keys(o).map(m=>{const b=n?.[m],y=l?.[m];if(b===null)return null;const w=i0(b)||i0(y);return o[m][w]}),h=n&&Object.entries(n).reduce((m,b)=>{let[y,w]=b;return w===void 0||(m[y]=w),m},{}),p=e==null||(a=e.compoundVariants)===null||a===void 0?void 0:a.reduce((m,b)=>{let{class:y,className:w,...x}=b;return Object.entries(x).every(k=>{let[A,_]=k;return Array.isArray(_)?_.includes({...l,...h}[A]):{...l,...h}[A]===_})?[...m,y,w]:m},[]);return o0(t,u,p,n?.class,n?.className)},wP=vP("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),vp=I.forwardRef(({className:t,...e},n)=>d.jsx(Nk,{ref:n,className:Vp(wP(),t),...e}));vp.displayName=Nk.displayName;function Mk(t,[e,n]){return Math.min(n,Math.max(e,t))}function Di(t,e,{checkForDefaultPrevented:n=!0}={}){return function(o){if(t?.(o),n===!1||!o.defaultPrevented)return e?.(o)}}function Dk(t,e=[]){let n=[];function a(l,u){const h=I.createContext(u),p=n.length;n=[...n,u];const m=y=>{const{scope:w,children:x,...k}=y,A=w?.[t]?.[p]||h,_=I.useMemo(()=>k,Object.values(k));return d.jsx(A.Provider,{value:_,children:x})};m.displayName=l+"Provider";function b(y,w){const x=w?.[t]?.[p]||h,k=I.useContext(x);if(k)return k;if(u!==void 0)return u;throw new Error(`\`${y}\` must be used within \`${l}\``)}return[m,b]}const o=()=>{const l=n.map(u=>I.createContext(u));return function(h){const p=h?.[t]||l;return I.useMemo(()=>({[`__scope${t}`]:{...h,[t]:p}}),[h,p])}};return o.scopeName=t,[a,xP(o,...e)]}function xP(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const a=t.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(l){const u=a.reduce((h,{useScope:p,scopeName:m})=>{const y=p(l)[`__scope${m}`];return{...h,...y}},{});return I.useMemo(()=>({[`__scope${e.scopeName}`]:u}),[u])}};return n.scopeName=e.scopeName,n}var Pk=globalThis?.document?I.useLayoutEffect:()=>{},kP=u0[" useInsertionEffect ".trim().toString()]||Pk;function _P({prop:t,defaultProp:e,onChange:n=()=>{},caller:a}){const[o,l,u]=SP({defaultProp:e,onChange:n}),h=t!==void 0,p=h?t:o;{const b=I.useRef(t!==void 0);I.useEffect(()=>{const y=b.current;y!==h&&console.warn(`${a} is changing from ${y?"controlled":"uncontrolled"} to ${h?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),b.current=h},[h,a])}const m=I.useCallback(b=>{if(h){const y=jP(b)?b(t):b;y!==t&&u.current?.(y)}else l(b)},[h,t,l,u]);return[p,m]}function SP({defaultProp:t,onChange:e}){const[n,a]=I.useState(t),o=I.useRef(n),l=I.useRef(e);return kP(()=>{l.current=e},[e]),I.useEffect(()=>{o.current!==n&&(l.current?.(n),o.current=n)},[n,o]),[n,a,l]}function jP(t){return typeof t=="function"}var TP=I.createContext(void 0);function AP(t){const e=I.useContext(TP);return t||e||"ltr"}function EP(t){const e=I.useRef({value:t,previous:t});return I.useMemo(()=>(e.current.value!==t&&(e.current.previous=e.current.value,e.current.value=t),e.current.previous),[t])}function RP(t){const[e,n]=I.useState(void 0);return Pk(()=>
55{if(t){n({width:t.offsetWidth,height:t.offsetHeight});const a=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const l=o[0];let u,h;if("borderBoxSize"in l){const p=l.borderBoxSize,m=Array.isArray(p)?p[0]:p;u=m.inlineSize,h=m.blockSize}else u=t.offsetWidth,h=t.offsetHeight;n({width:u,height:h})});return a.observe(t,{box:"border-box"}),()=>a.unobserve(t)}else n(void 0)},[t]),e}function CP(t){const e=OP(t),n=I.forwardRef((a,o)=>{const{children:l,...u}=a,h=I.Children.toArray(l),p=h.find(MP);if(p){const m=p.props.children,b=h.map(y=>y===p?I.Children.count(m)>1?I.Children.only(null):I.isValidElement(m)?m.props.children:null:y);return d.jsx(e,{...u,ref:o,children:I.isValidElement(m)?I.cloneElement(m,void 0,b):null})}return d.jsx(e,{...u,ref:o,children:l})});return n.displayName=`${t}.Slot`,n}function OP(t){const e=I.forwardRef((n,a)=>{const{children:o,...l}=n;if(I.isValidElement(o)){const u=PP(o),h=DP(l,o.props);return o.type!==I.Fragment&&(h.ref=a?Yu(a,u):u),I.cloneElement(o,h)}return I.Children.count(o)>1?I.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var NP=Symbol("radix.slottable");function MP(t){return I.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===NP}function DP(t,e){const n={...e};for(const a in e){const o=t[a],l=e[a];/^on[A-Z]/.test(a)?o&&l?n[a]=(...h)=>{const p=l(...h);return o(...h),p}:o&&(n[a]=o):a==="style"?n[a]={...o,...l}:a==="className"&&(n[a]=[o,l].filter(Boolean).join(" "))}return{...t,...n}}function PP(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var LP=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Sl=LP.reduce((t,e)=>{const n=CP(`Primitive.${e}`),a=I.forwardRef((o,l)=>{const{asChild:u,...h}=o,p=u?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),d.jsx(p,{...h,ref:l})});return a.displayName=`Primitive.${e}`,{...t,[e]:a}},{});function l0(t){const e=UP(t),n=I.forwardRef((a,o)=>{const{children:l,...u}=a,h=I.Children.toArray(l),p=h.find(BP);if(p){const m=p.props.children,b=h.map(y=>y===p?I.Children.count(m)>1?I.Children.only(null):I.isValidElement(m)?m.props.children:null:y);return d.jsx(e,{...u,ref:o,children:I.isValidElement(m)?I.cloneElement(m,void 0,b):null})}return d.jsx(e,{...u,ref:o,children:l})});return n.displayName=`${t}.Slot`,n}function UP(t){const e=I.forwardRef((n,a)=>{const{children:o,...l}=n;if(I.isValidElement(o)){const u=qP(o),h=zP(l,o.props);return o.type!==I.Fragment&&(h.ref=a?Yu(a,u):u),I.cloneElement(o,h)}return I.Children.count(o)>1?I.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var IP=Symbol("radix.slottable");function BP(t){return I.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===IP}function zP(t,e){const n={...e};for(const a in e){const o=t[a],l=e[a];/^on[A-Z]/.test(a)?o&&l?n[a]=(...h)=>{const p=l(...h);return o(...h),p}:o&&(n[a]=o):a==="style"?n[a]={...o,...l}:a==="className"&&(n[a]=[o,l].filter(Boolean).join(" "))}return{...t,...n}}function qP(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}function $P(t){const e=t+"CollectionProvider",[n,a]=Dk(e),[o,l]=n(e,{collectionRef:{current:null},itemMap:new Map}),u=A=>{const{scope:_,children:j}=A,O=te.useRef(null),R=te.useRef(new Map).current;return d.jsx(o,{scope:_,itemMap:R,collectionRef:O,children:j})};u.displayName=e;const h=t+"CollectionSlot",p=l0(h),m=te.forwardRef((A,_)=>{const{scope:j,children:O}=A,R=l(h,j),M=Is(_,R.collectionRef);return d.jsx(p,{ref:M,children:O})});m.displayName=h;const b=t+"CollectionItemSlot",y="data-radix-collection-item",w=l0(b),x=te.forwardRef((A,_)=>{const{scope:j,children:O,...R}=A,M=te.useRef(null),K=Is(_,M),V=l(b,j);return te.useEffect(()=>(V.itemMap.set(M,{ref:M,...R}),()=>{V.itemMap.delete(M)})),d.jsx(w,{[y]:"",ref:K,children:O})});x.displayName=b;function k(A){const _=l(t+"CollectionConsumer",A);return te.useCallback(()=>{const O=_.collectionRef.current;if(!O)return[];const R=Array.from(O.querySelectorAll(`[${y}]`));return Array.from(_.itemMap.values()).sort((V,$)=>R.indexOf(V.ref.current)-R.indexOf($.ref.current))},[_.collectionRef,_.itemMap])}return[{Provider:u,Slot:m,ItemSlot:x},k,a]}var Lk=["PageUp","PageDown"],Uk=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Ik={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},Gi="Slider",[wp,HP,VP]=$P(Gi),[Bk]=Dk(Gi,[VP]),[FP,Wu]=Bk(Gi),zk=I.forwardRef((t,e)=>{const{name:n,min:a=0,max:o=100,step:l=1,orientation:u="horizontal",disabled:h=!1,minStepsBetweenThumbs:p=0,defaultValue:m=[a],value:b,onValueChange:y=()=>{},onValueCommit:w=()=>{},inverted:x=!1,form:k,...A}=t,_=I.useRef(new Set),j=I.useRef(0),R=u==="horizontal"?GP:KP,[M=[],K]=_P({prop:b,defaultProp:m,onChange:se=>{[..._.current][j.current]?.focus(),y(se)}}),V=I.useRef(M);function $(se){const ye=QP(M,se);ae(se,ye)}function U(se){ae(se,j.current)}function Q(){const se=V.current[j.current];M[j.current]!==se&&w(M)}function ae(se,ye,{commit:_e}={commit:!1}){const ze=nL(l),Ce=rL(Math.round((se-a)/l)*l+a,ze),L=Mk(Ce,[a,o]);K((Y=[])=>{const ie=ZP(Y,L,ye);if(tL(ie,p*l)){j.current=ie.indexOf(L);const Se=String(ie)!==String(Y);return Se&&_e&&w(ie),Se?ie:Y}else return Y})}return d.jsx(FP,{scope:t.__scopeSlider,name:n,disabled:h,min:a,max:o,valueIndexToChangeRef:j,thumbs:_.current,values:M,orientation:u,form:k,children:d.jsx(wp.Provider,{scope:t.__scopeSlider,children:d.jsx(wp.Slot,{scope:t.__scopeSlider,children:d.jsx(R,{"aria-disabled":h,"data-disabled":h?"":void 0,...A,ref:e,onPointerDown:Di(A.onPointerDown,()=>{h||(V.current=M)}),min:a,max:o,inverted:x,onSlideStart:h?void 0:$,onSlideMove:h?void 0:U,onSlideEnd:h?void 0:Q,onHomeKeyDown:()=>!h&&ae(a,0,{commit:!0}),onEndKeyDown:()=>!h&&ae(o,M.length-1,{commit:!0}),onStepKeyDown:({event:se,direction:ye})=>
55{if(!h){const Ce=Lk.includes(se.key)||se.shiftKey&&Uk.includes(se.key)?10:1,L=j.current,Y=M[L],ie=l*Ce*ye;ae(Y+ie,L,{commit:!0})}}})})})})});zk.displayName=Gi;var[qk,$k]=Bk(Gi,{startEdge:"left",endEdge:"right",size:"width",direction:1}),GP=I.forwardRef((t,e)=>{const{min:n,max:a,dir:o,inverted:l,onSlideStart:u,onSlideMove:h,onSlideEnd:p,onStepKeyDown:m,...b}=t,[y,w]=I.useState(null),x=Is(e,R=>w(R)),k=I.useRef(void 0),A=AP(o),_=A==="ltr",j=_&&!l||!_&&l;function O(R){const M=k.current||y.getBoundingClientRect(),K=[0,M.width],$=Fp(K,j?[n,a]:[a,n]);return k.current=M,$(R-M.left)}return d.jsx(qk,{scope:t.__scopeSlider,startEdge:j?"left":"right",endEdge:j?"right":"left",direction:j?1:-1,size:"width",children:d.jsx(Hk,{dir:A,"data-orientation":"horizontal",...b,ref:x,style:{...b.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:R=>{const M=O(R.clientX);u?.(M)},onSlideMove:R=>{const M=O(R.clientX);h?.(M)},onSlideEnd:()=>{k.current=void 0,p?.()},onStepKeyDown:R=>{const K=Ik[j?"from-left":"from-right"].includes(R.key);m?.({event:R,direction:K?-1:1})}})})}),KP=I.forwardRef((t,e)=>{const{min:n,max:a,inverted:o,onSlideStart:l,onSlideMove:u,onSlideEnd:h,onStepKeyDown:p,...m}=t,b=I.useRef(null),y=Is(e,b),w=I.useRef(void 0),x=!o;function k(A){const _=w.current||b.current.getBoundingClientRect(),j=[0,_.height],R=Fp(j,x?[a,n]:[n,a]);return w.current=_,R(A-_.top)}return d.jsx(qk,{scope:t.__scopeSlider,startEdge:x?"bottom":"top",endEdge:x?"top":"bottom",size:"height",direction:x?1:-1,children:d.jsx(Hk,{"data-orientation":"vertical",...m,ref:y,style:{...m.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:A=>{const _=k(A.clientY);l?.(_)},onSlideMove:A=>{const _=k(A.clientY);u?.(_)},onSlideEnd:()=>{w.current=void 0,h?.()},onStepKeyDown:A=>{const j=Ik[x?"from-bottom":"from-top"].includes(A.key);p?.({event:A,direction:j?-1:1})}})})}),Hk=I.forwardRef((t,e)=>{const{__scopeSlider:n,onSlideStart:a,onSlideMove:o,onSlideEnd:l,onHomeKeyDown:u,onEndKeyDown:h,onStepKeyDown:p,...m}=t,b=Wu(Gi,n);return d.jsx(Sl.span,{...m,ref:e,onKeyDown:Di(t.onKeyDown,y=>{y.key==="Home"?(u(y),y.preventDefault()):y.key==="End"?(h(y),y.preventDefault()):Lk.concat(Uk).includes(y.key)&&(p(y),y.preventDefault())}),onPointerDown:Di(t.onPointerDown,y=>{const w=y.target;w.setPointerCapture(y.pointerId),y.preventDefault(),b.thumbs.has(w)?w.focus():a(y)}),onPointerMove:Di(t.onPointerMove,y=>{y.target.hasPointerCapture(y.pointerId)&&o(y)}),onPointerUp:Di(t.onPointerUp,y=>{const w=y.target;w.hasPointerCapture(y.pointerId)&&(w.releasePointerCapture(y.pointerId),l(y))})})}),Vk="SliderTrack",Fk=I.forwardRef((t,e)=>{const{__scopeSlider:n,...a}=t,o=Wu(Vk,n);return d.jsx(Sl.span,{"data-disabled":o.disabled?"":void 0,"data-orientation":o.orientation,...a,ref:e})});Fk.displayName=Vk;var xp="SliderRange",Gk=I.forwardRef((t,e)=>{const{__scopeSlider:n,...a}=t,o=Wu(xp,n),l=$k(xp,n),u=I.useRef(null),h=Is(e,u),p=o.values.length,m=o.values.map(w=>Wk(w,o.min,o.max)),b=p>1?Math.min(...m):0,y=100-Math.max(...m);return d.jsx(Sl.span,{"data-orientation":o.orientation,"data-disabled":o.disabled?"":void 0,...a,ref:h,style:{...t.style,[l.startEdge]:b+"%",[l.endEdge]:y+"%"}})});Gk.displayName=xp;var kp="SliderThumb",Kk=I.forwardRef((t,e)=>{const n=HP(t.__scopeSlider),[a,o]=I.useState(null),l=Is(e,h=>o(h)),u=I.useMemo(()=>a?n().findIndex(h=>h.ref.current===a):-1,[n,a]);return d.jsx(YP,{...t,ref:l,index:u})}),YP=I.forwardRef((t,e)=>{const{__scopeSlider:n,index:a,name:o,...l}=t,u=Wu(kp,n),h=$k(kp,n),[p,m]=I.useState(null),b=Is(e,O=>m(O)),y=p?u.form||!!p.closest("form"):!0,w=RP(p),x=u.values[a],k=x===void 0?0:Wk(x,u.min,u.max),A=JP(a,u.values.length),_=w?.[h.size],j=_?XP(_,k,h.direction):0;return I.useEffect(()=>{if(p)return u.thumbs.add(p),()=>{u.thumbs.delete(p)}},[p,u.thumbs]),d.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[h.startEdge]:`calc(${k}% + ${j}px)`},children:[d.jsx(wp.ItemSlot,{scope:t.__scopeSlider,children:d.jsx(Sl.span,{role:"slider","aria-label":t["aria-label"]||A,"aria-valuemin":u.min,"aria-valuenow":x,"aria-valuemax":u.max,"aria-orientation":u.orientation,"data-orientation":u.orientation,"data-disabled":u.disabled?"":void 0,tabIndex:u.disabled?void 0:0,...l,ref:b,style:x===void 0?{display:"none"}
55:t.style,onFocus:Di(t.onFocus,()=>{u.valueIndexToChangeRef.current=a})})}),y&&d.jsx(Yk,{name:o??(u.name?u.name+(u.values.length>1?"[]":""):void 0),form:u.form,value:x},a)]})});Kk.displayName=kp;var WP="RadioBubbleInput",Yk=I.forwardRef(({__scopeSlider:t,value:e,...n},a)=>{const o=I.useRef(null),l=Is(o,a),u=EP(e);return I.useEffect(()=>{const h=o.current;if(!h)return;const p=window.HTMLInputElement.prototype,b=Object.getOwnPropertyDescriptor(p,"value").set;if(u!==e&&b){const y=new Event("input",{bubbles:!0});b.call(h,e),h.dispatchEvent(y)}},[u,e]),d.jsx(Sl.input,{style:{display:"none"},...n,ref:l,defaultValue:e})});Yk.displayName=WP;function ZP(t=[],e,n){const a=[...t];return a[n]=e,a.sort((o,l)=>o-l)}function Wk(t,e,n){const l=100/(n-e)*(t-e);return Mk(l,[0,100])}function JP(t,e){return e>2?`Value ${t+1} of ${e}`:e===2?["Minimum","Maximum"][t]:void 0}function QP(t,e){if(t.length===1)return 0;const n=t.map(o=>Math.abs(o-e)),a=Math.min(...n);return n.indexOf(a)}function XP(t,e,n){const a=t/2,l=Fp([0,50],[0,a]);return(a-l(e)*n)*n}function eL(t){return t.slice(0,-1).map((e,n)=>t[n+1]-e)}function tL(t,e){if(e>0){const n=eL(t);return Math.min(...n)>=e}return!0}function Fp(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const a=(e[1]-e[0])/(t[1]-t[0]);return e[0]+a*(n-t[0])}}function nL(t){return(String(t).split(".")[1]||"").length}function rL(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}var Zk=zk,sL=Fk,aL=Gk,iL=Kk;const Jk=I.forwardRef(({className:t,...e},n)=>d.jsxs(Zk,{ref:n,className:Vp("relative flex w-full touch-none select-none items-center",t),...e,children:[d.jsx(sL,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:d.jsx(aL,{className:"absolute h-full bg-primary"})}),d.jsx(iL,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Jk.displayName=Zk.displayName;const oL=()=>{const[t,e]=I.useState(4e4),[n,a]=I.useState(48),[o,l]=I.useState(5),[u,h]=I.useState(85),[p,m]=I.useState(3.5),[b,y]=I.useState(5),[w,x]=I.useState(10),[k,A]=I.useState(500),_=I.useMemo(()=>{const O=n*o,R=Math.round(O*(u/100)),M=Math.round(R*p),K=M>0?t/M:0,V=k*12,$=M*b,U=R*w,Q=V+$+U,ae=M>0?(t+Q)/M:0,se=Math.ceil(ae/5)*5+5;return{billableDays:R,totalJobs:M,requiredRevenue:K,minPrice:ae,suggested:se}},[t,n,o,u,p,b,w,k]),j=(O,R,M,K)=>d.jsxs("div",{children:[d.jsx(vp,{className:"text-xs text-muted-foreground mb-1.5 block",children:O}),d.jsxs("div",{className:"relative",children:[K?.prefix&&d.jsx("span",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground",children:K.prefix}),d.jsx(Ek,{type:"number",value:R,onChange:V=>M(Number(V.target.value)),step:K?.step||1,min:K?.min??0,max:K?.max,className:`h-10 text-sm ${K?.prefix?"pl-7":""} ${K?.suffix?"pr-8":""}`}),K?.suffix&&d.jsx("span",{className:"absolute right-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground",children:K.suffix})]})]});return d.jsxs("div",{className:"not-prose my-12 md:my-16 rounded-xl border border-border/60 bg-card p-6 md:p-8",children:[d.jsx("h3",{className:"text-lg font-bold text-foreground mb-1",children:"Calculate Your Minimum Price Per Job"}),d.jsx("p",{className:"text-sm text-muted-foreground mb-6",children:"Adjust the inputs to see what you actually need to charge."}),d.jsxs("div",{className:"grid md:grid-cols-2 gap-8",children:[d.jsxs("div",{className:"space-y-4",children:[j("Target annual income",t,e,{prefix:"£",step:1e3}),d.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[j("Working weeks/yr",n,a,{min:1,max:52}),j("Days/week",o,l,{min:1,max:7})]}),d.jsxs("div",{children:[d.jsxs(vp,{className:"text-xs text-muted-foreground mb-1.5 block",children:["Billable days adjustment: ",u,"%"]}),d.jsx(Jk,{value:[u],onValueChange:O=>h(O[0]),min:50,max:100,step:5,className:"mt-2"}),d.jsx("p",{className:"text-[11px] text-muted-foreground mt-1",children:"Accounts for weather, cancellations, admin"})]}),j("Avg jobs per day",p,m,{step:.5,min:1,max:10}),d.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[j("Product cost/job",b,y,{prefix:"£"}),j("Daily fuel cost",w,x,{prefix:"£"})]}),j("Monthly overheads",k,A,{prefix:"£",step:50})]}),d.jsx("div",{className:"flex flex-col justify-center",children:d.jsxs("div",{className:"rounded-xl bg-surface-1 border border-border/60 p-5 md:p-6 space-y-4",children:[d.jsxs("div",{className:"flex justify-between text-sm",children:[d.jsx("span",{className:"text-muted-foreground",children:"Billable days/year"}),d.jsx("span",{className:"font-semibold text-foreground",children:_.billableDays})]}),d.jsxs("div",{className:"flex justify-between text-sm",children:[d.jsx("span",{className:"text-muted-foreground",children:"Total jobs/year"}),d.jsx("span",{className:"font-semibold text-foreground",children:_.totalJobs.toLocaleStr
55ing()})]}),d.jsxs("div",{className:"flex justify-between text-sm",children:[d.jsx("span",{className:"text-muted-foreground",children:"Revenue needed/job"}),d.jsxs("span",{className:"font-semibold text-foreground",children:["£",_.requiredRevenue.toFixed(2)]})]}),d.jsxs("div",{className:"flex justify-between text-sm",children:[d.jsx("span",{className:"text-muted-foreground",children:"Min price (inc. costs)"}),d.jsxs("span",{className:"font-semibold text-foreground",children:["£",_.minPrice.toFixed(2)]})]}),d.jsx("div",{className:"h-px bg-border"}),d.jsxs("div",{className:"text-center pt-2",children:[d.jsx("p",{className:"text-xs text-muted-foreground mb-1",children:"Suggested minimum price"}),d.jsxs("p",{className:"text-4xl font-bold text-primary",children:["£",_.suggested]}),d.jsx("p",{className:"text-[11px] text-muted-foreground mt-1",children:"per job (rounded + margin)"})]})]})})]})]})},lL=()=>d.jsxs(d.Fragment,{children:[d.jsx("p",{children:"Most mobile valeters get their pricing wrong. Not catastrophically wrong. Just quietly, consistently wrong, in a way that costs them thousands over the course of a year without them ever realising it."}),d.jsx("p",{children:"Some undercharge because they set their prices when they first started and never revisited them. Some copy whatever the nearest competitor is charging without understanding the cost structure behind those numbers. And a significant number price their services based on what a hand car wash charges, because that is the only reference point their customers have."}),d.jsx("p",{children:"The result is the same in every case: long hours, full calendars, and surprisingly little profit to show for it."}),d.jsx("p",{children:"At Automate, we work with over a hundred mobile valeting and detailing businesses across the UK. We see what they charge, what their customers actually book, and how those numbers translate into revenue over time. We recently sampled some of that data, covering around ten thousand recent bookings made through the Automate platform, and the patterns are clear."}),d.jsx("p",{children:"This guide is built on what the data actually says, not guesswork or generic advice. Whether you are setting prices for the first time or wondering if you are charging enough, this is the framework that works."}),d.jsx("h2",{id:"the-car-wash-problem",children:"The Car Wash Problem"}),d.jsx("p",{children:"Before we get into the numbers, there is something important to understand about how your customers think about pricing."}),d.jsx("p",{children:"A significant number of people who book a mobile valeter for the first time have never used one before. Their only frame of reference for having a car cleaned is the £10 hand car wash on the retail park, or the £7 drive-through jet wash at the petrol station. That is the mental anchor they bring with them when they look at your prices."}),d.jsx("p",{children:"When they see a Mini Valet at £45 or a Full Valet at £110, their first reaction is often sticker shock. Not because your prices are unreasonable, but because they are comparing a professional, at-your-door service with a five-minute rinse from a stranger with a sponge."}),d.jsx("p",{children:"This is not a pricing problem. It is a communication problem. And solving it is one of the most important things you can do for your business."}),d.jsx("p",{children:"Your booking page, your website, and your social media all need to make the distinction clear. You are not a car wash. You are a professional service that comes to the customer, uses specialist products, takes genuine care of their vehicle, and delivers results that a car wash simply cannot. The more clearly you communicate that, the less resistance you will get on price."}),d.jsx("h2",{id:"design-your-packages",children:"Design Your Packages Around the Customer Journey"}),d.jsx("p",{children:"The biggest mistake we see with pricing is not charging too much or too little. It is offering the wrong packages."}),d.jsx("p",{children:'Too many valeters list five or six services at similar price points with overlapping descriptions, and expect the customer to figure out which one they need. The customer does not know what a "Silver Plus Hybrid Ceramic Wax" is. They do not know the difference between your Bronze and your Gold package. When they cannot tell the difference, they either pick the cheapest option or they leave.'}),d.jsx("p",{children:"The most successful businesses on Automate use a simple tiered structure. Three core packages, clearly differentiated, with a logical step up between each one. Think of it as a ladder."}),d.jsxs("p",{children:[d.jsx("strong",{children:"The entry-level service"})," is your Mini Valet, your Exterior Wash, your Maintenance Clean, whatever you choose to call it. This is priced to be accessible and quick, typically between £30 and £50. It is not designed to be your most profitable service. It is designed to get people through the door."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"The mid-level service"})," is your workhorse. This is the package most of your customers will book most of the time. A proper interior and exterior clean, a good level of attention, and a price that feels fair for the time and quality involved. Across the Automate network, the most commonly booked packages sit in the £50 to £80 range. This is the sweet spot where the majority of your revenue will come from."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"The premium service"})," is your Full Valet or Deep Clean. This is the one where you spend proper time on the vehicle, include extras like a shampoo extraction or a
55wax, and deliver a result that genuinely transforms the car. These typically sit between £100 and £140, and they make up a smaller share of your bookings but a disproportionately large share of your revenue."]}),d.jsx("p",{children:"Beyond these three, you might offer specialist services like detailing, paint correction, or ceramic coatings. These are high-ticket items, often £200 to £500 or more, and they serve a different market. But for the core of your business, three clear tiers is the structure that works."}),d.jsx("p",{children:"The key is that each tier has an obvious reason to exist, and the customer can immediately understand what they are getting at each level without needing a glossary."}),d.jsx(v4,{}),d.jsx("h2",{id:"what-the-data-shows",children:"What the Data Actually Shows"}),d.jsx("p",{children:"When we looked at the ten thousand bookings across the Automate network, the distribution was striking."}),d.jsx("p",{children:"Over half of all bookings (around 56%) were mid-level services in the £50 to £80 range. This is the engine of most valeting businesses. If you do not have a well-priced, clearly defined package in this band, you are missing the majority of the market."}),d.jsx("p",{children:"Full Valets and premium cleans accounted for about 23% of bookings, but here is the important part: they generated nearly a third of all revenue. The average Full Valet on Automate is booked at £119. So while these are not your highest-volume services, they are where pricing precision matters most. Every £10 you leave on the table at this level compounds significantly over a year."}),d.jsx("p",{children:"Entry-level services (exterior washes, quick cleans, maintenance packages) made up around 10% of bookings and less than 4% of total revenue. On the surface, that looks like they barely matter. But they are far more important than the revenue numbers suggest, and here is why."}),d.jsx("h2",{id:"cheapest-service-best-marketing",children:"Your Cheapest Service Is Your Best Marketing Tool"}),d.jsx("p",{children:"This is the insight that changes how smart valeters think about pricing."}),d.jsx("p",{children:"Entry-level services are not profit centres. They are customer acquisition tools."}),d.jsx("p",{children:"When we looked at the data, customers who booked an entry-level service for the first time came back at a rate of 32%. That is almost one in three. And of those who came back, nearly 40% upgraded to a higher-tier service at some point. Their average lifetime spend was over four times the value of their first booking."}),d.jsx(vl,{label:"The Gateway Effect",children:"Customers who booked an entry-level service came back 32% of the time. Of those who returned, nearly 40% upgraded to a higher-tier service. Average lifetime value: over 4à their first booking."}),d.jsx("p",{children:"Think about what that means. A customer who books a £30 exterior wash is not worth £30. If they come back and upgrade, they are worth £130 or more over the lifetime of the relationship. You would happily spend £30 to acquire a customer worth £130. That is exactly what your entry-level package does, except the customer is paying you for the privilege."}),d.jsx("p",{children:"This is why it is so important to have an accessible, competitively priced entry-level option. It is the front door. It is the service that bridges the gap between the £10 car wash and the professional valeting experience. It gives first-time customers a low-risk way to try you out, experience the quality difference, and build the trust that leads to bigger bookings down the line."}),d.jsx("p",{children:"Price it too high and the car-wash customer never tries you. Price it right and you are building a pipeline."}),d.jsx("h2",{id:"repeat-customers",children:"Repeat Customers Are the Business"}),d.jsx("p",{children:"This is not a new insight, but the data makes it impossible to ignore."}),d.jsx("p",{children:"Across the Automate network, roughly 28% of customers become repeat customers. That sounds modest until you see what they are worth. Repeat customers account for more than half of all bookings. Their average lifetime spend is three times that of a one-time customer."}),d.jsx("p",{children:"Repeat customers cost you nothing to acquire after that first booking. No ad spend, no marketing, no chasing. They just come back. And the more of them you have, the less dependent you are on constantly f
55inding new customers to fill your calendar."}),d.jsx("p",{children:"This has a direct implication for pricing. Your prices need to be set at a level that people are comfortable paying regularly, not just once. If your mid-level service is priced so high that customers treat it as an occasional luxury rather than a monthly routine, you are leaving repeat revenue on the table."}),d.jsx("p",{children:"The businesses that do best are the ones where customers book every four to six weeks without thinking twice. That only happens when the price-to-value ratio feels right for ongoing use, not just for a one-off treat."}),d.jsx("h2",{id:"calculate-what-to-charge",children:"How to Calculate What You Actually Need to Charge"}),d.jsx("p",{children:"Theory is useful, but at some point you need to arrive at actual numbers. Here is a straightforward way to work out your minimum viable price per job."}),d.jsxs("p",{children:[d.jsx("strong",{children:"Start with what you want to earn."})," If your target is £40,000 a year before tax, that is your starting point. Adjust this number to whatever makes sense for you and your situation."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Work out your available days."})," Assume 48 working weeks (you need holidays) and 5 days a week. That gives you 240 working days. In practice, weather cancellations, quiet periods, and admin days will reduce this. A realistic number for a solo mobile valeter is around 200 billable days per year."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Estimate your jobs per day."})," This depends on the mix of services you offer and the travel time between jobs. Most solo valeters manage three to four jobs per day on average once travel, setup, and cleanup are factored
55in. Call it 3.5."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"That gives you 700 jobs per year."})," To hit £40,000, you need an average of £57 per job."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Now add your costs."})," Products and chemicals per job typically run £3 to £6. Fuel depends on your travel radius but budget £8 to £12 per day. Insurance, van costs, phone, software, accounting, and marketing might add up to £400 to £600 per month. These are rough figures (your numbers will vary), but when you add them up, you might need an average job value closer to £70 to £75 to actually take home £40,000."]}),d.jsx("p",{children:"This is why so many valeters who charge £40 for a Full Valet and £25 for a Mini Valet end up working constantly and earning very little. The maths simply does not work at those prices once you account for real costs."}),d.jsx("p",{children:"Run this calculation with your own numbers. Be honest about costs, realistic about the number of jobs you can actually do in a day, and do not forget to factor in the days you will not be working. The number you arrive at is your floor. Everything you charge should be above it."}),d.jsx(oL,{}),d.jsx("h2",{id:"when-to-raise-prices",children:"When to Raise Your Prices"}),d.jsx("p",{children:"Most valeters wait too long to raise prices. The best time to do it is before you feel like you need to. Here are the signals that you are ready:"}),d.jsxs("p",{children:[d.jsx("strong",{children:"You are consistently booked two or more weeks in advance."})," If customers are waiting a fortnight to get a slot, your demand exceeds your supply. That is the textbook moment to raise prices."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"You are turning away work."})," If you are saying no to enquiries because your calendar is full, you are undercharging. Higher prices will naturally filter towards customers who value your service more, and you will earn more from fewer jobs."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Your costs have gone up."})," Product prices, fuel, insurance, and van costs have all risen in the last couple of years. If your prices have not moved, your margins have shrunk without you noticing."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"You have added skills or services."})," If you have invested in training, bought new equipment, or added services like machine polishing or ceramic coatings, your prices should reflect that investment."]}),d.jsx("p",{children:'When you do raise prices, be straightforward about it. A short message to existing customers (for example: "From next month, our prices will be increasing slightly to reflect rising costs and continued investment in our service") is honest, professional, and almost always accepted without pushback. Most customers expect prices to go up over time. The ones who leave over a £5 increase were never your best customers anyway.'}),d.jsx("h2",{id:"pricing-shows-up-online",children:"How Your Pricing Shows Up Online Matters"}),d.jsx("p",{children:"The final piece of the puzzle is presentation. Your prices can be perfectly calculated and your packages beautifully structured, but if they are buried in a WhatsApp conversation or listed in a blurry photo on Instagram, you are undermining all of that work."}),d.jsx("p",{children:'When a potential customer lands on your booking page or website, they should be able to see exactly what you offer, what it costs, and how to book it, within about ten seconds. No scrolling through a chat history. No "DM for prices." No waiting for a reply that might come in three hours when you finish a job.'}),d.jsx("p",{children:"Clear, professional pricing on a proper booking page does three things. It builds trust, because it shows you are an established business with nothing to hide. It reduces friction, because the customer can make a decision and book immediately rather than entering a back-and-forth conversation. And it filters out the wrong customers, because someone who thinks £80 is too much for a Full Valet will see that upfront rather than wasting your time with enquiries."}),d.jsxs("p",{children:["This is one of the things ",d.jsx(ut,{to:"/",className:"text-primary hover:underline",children:"Automate"})," is built for. Your services, your prices, your add-ons, your availability, all presented clearly on a branded booking page where customers can choose what they want and book themselves in. No phone calls while you are mid-job. No evening admin. No ambiguity."]}),d.jsx("p",{children:"Every valeter we work with who moves from informal pricing to a structured booking page sees the same thing: more bookings, fewer no-shows, and customers who arrive already understanding what they are paying for."}),d.jsx(er,{headline:"Want a booking page that does this for you?",body:"Automate gives your customers a professional booking experience with clear pricing, online payments, and automated reminders.",buttonText:"Start Free Trial â",buttonLink:"/contact"}),d.jsx("h2",{id:"the-short-version",children:"The Short Version"}),d.jsx("p",{children:"If you take nothing else from this article, take these five things:"}),d.jsxs("p",{children:[d.jsx("strong",{children:"Price in three tiers."})," Entry, mid, and premium. Clear differentiation, obvious progression, no confusion."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Your entry-level service is not about profit."})," It is about getting customers through the door. Price it to be accessible. The lifetime value will follow."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"The mid-level sweet spot is £50 to £80."})," Over half of all bookings on Automate land in this range. This is where you earn your living."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Repeat customers are worth three times what one-timers are."})," Price for regularity, not just single transactions. Make it easy for people to keep coming back."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Present your prices professionally."})," A clear booking page with structured packages converts better than a price list in your Instagram bio. Every time."]}),d.jsx("p",{children:"Get the pricing right, present it clearly, and make it easy for customers to book. That is the formula. The rest is doing great work and letting the results speak for themselves."})]}),cL=()=>d.jsxs(d.Fragment,{children:[d.jsx("p",{children:"Your website can be perfect. Your Google Ads can be dialled in. Your reviews can be glowing. But if your mobile valeting booking page (the place where a customer actually commits and pays) is confusing, slow, or just looks a bit off, none of it matters. They leave."}),d.jsx("p",{children:"This is something most valeting businesses never think about. They spend time and money getting people to their booking page, and then lose them at the finish line because the experience does not match the expectation. The customer clicked through from a professional-looking website. They saw great reviews. They found a package that suits them. And then they land on a booking page that looks like it was built in 2018, with no clear pricing summary, no idea how long the service will take, and a layout that feels clunky on their phone."}),d.jsx("p",{children:"That customer does not complain. They do not send you feedback. They just close the tab and book with someone else."}),d.jsx("p",{children:"We know this because we have seen it happen. Automate has processed over 120,000 bookings across our network of UK mobile valeting and detailing businesses. We have data on how customers interact with online booking pages, where they hesitate, where they drop off, and what makes them commit. And for a long time, we knew our booking page was leaving performance on the table."}),d.jsx("p",{children:"So we rebuilt it. Completely. Here is what makes a high-converting booking page for a mobile valeting business, and what we changed to get there."}),d.jsx("h2",{id:"what-great-booking-page-looks-like",children:"What a Great Valeting Booking Page Actually Looks Like"}),d.jsx("p",{children:"This was not a tweak. It was a ground-up redesign of the entire online booking experience, informed by years of real booking data from hundreds of thousands of interactions across our service provider network."}),d.jsx("p",{children:"Here is what we shipped."}),d.jsx("h3",{id:"modern-design",children:"A Modern, Conversion-Focused Design"}),d.jsx("p",{children:'The old booking page worked. But "works" is not the same as "converts." We rebuilt the interface from scratch with a modern, clean design that matches the quality of the businesses using it.'}),d.jsx("p",{children:"Customers trust a booking page that looks good and presents information in a way that is easy to understand. First impressions matter enormously in online booking. If your valeting booking page looks dated or cluttered, customers hesitate. If it looks polished and professional, they feel confident handing over their card details and booking in."}),d.jsx("p",{children:'The new design is built around clarity. Every element has a purpose. Nothing competes for attention. The customer sees what they need to see, in the order they need to see it, with no friction. This is the foundation of any booking page that converts well: reducing the gap between "I want this" and "I have booked this" to as few seconds as possible.'}),d.jsx("h3",{id:"light-dark-mode",children:"Light Mode and Dark Mode"}),d.jsx("p",{children:"This might sound cosmetic, but it is more significant than people realise when it comes to booking page conversion rates."}),d.jsx("p",{children:"Every valeting business using Automate has its own branding, its own colours, its own identity. A one-size-fits-all booking page that forces a white background and blue buttons does not work when your brand is dark, moody, and premium. It does not work when your website is black and gold and your booking page is suddenly bright white."}),d.jsx("p",{children:"The new booking page supports both light and dark mode, so the checkout experience feels like a natural extension of your website rather than a
55jarring redirect to a generic third-party tool. When a customer moves from your site to your online booking system, the experience should feel seamless. Now it does."}),d.jsx(vl,{label:"WHY THIS MATTERS",children:"Trust is cumulative. Every moment that feels consistent reinforces confidence. Every moment that feels disconnected introduces doubt. And doubt is the enemy of conversions."}),d.jsx("h3",{id:"checkout-summary",children:"A Clear Checkout Summary With Subtotals for Add-Ons"}),d.jsx("p",{children:'One of the most common sources of hesitation in any online checkout is uncertainty about cost. "What am I actually paying for? Why is the total different from what I expected? What are these add-ons adding up to?"'}),d.jsx("p",{children:"If you run a mobile valeting business, you know that add-ons are a significant part of your revenue. Engine bay cleans, leather conditioning, headlight restoration, alloy wheel sealant. These extras add up. But if the customer cannot see a clear breakdown of what they are selecting and what it costs, they either skip the add-ons entirely or abandon the booking because the total feels unclear."}),d.jsx("p",{children:"The new Automate booking page includes a clear, itemised checkout summary that breaks down the base package, every add-on selected, and the subtotals for each. No surprises. No ambiguity. The customer can see exactly what they are getting and exactly what it costs before they hit confirm."}),d.jsx("p",{children:"This is not just about transparency. It is about confidence. When a customer can see a clean breakdown of what they are paying for, they are far more likely to go through with the booking. Uncertainty kills conversions. Clarity drives them. And for valeting businesses offering tiered pricing structures, this kind of transparency at checkout is essential."}),d.jsx(er,{headline:"Want to see the new booking page in action?",body:"Start a free trial and see what a modern booking experience looks like for your customers.",buttonText:"See It In Action",buttonLink:"/contact"}),d.jsx("h3",{id:"estimated-duration",children:"Estimated Duration That Updates in Real Time"}),d.jsx("p",{children:"This one came directly from the data. We noticed that customers frequently want to know how long a service will take, especially if they are booking a mobile valet during a work day, between school runs, or during a specific window of availability."}),d.jsx("p",{children:"The new checkout summary now calculates and displays an estimated duration for the booking based on the package selected and any add-ons. Choose a full valet with an engine bay clean and leather conditioning? The estimated time updates automatically so the customer knows what to expect before they book."}),d.jsx("p",{children:"It sounds simple, but it removes a question that previously required the customer to either guess, check the service descriptions, or message the business to ask. Every question a customer has to ask themselves is a chance for them to talk themselves out of booking. We removed that question entirely."}),d.jsx("p",{children:"This is particularly important for mobile valeting, where the service happens at the customer's location. They need to plan around it. Giving them an accurate time estimate at the point of booking (not buried in a FAQ or a service description three pages back) means they can commit with confidence. And customers who commit with confidence are far less likely to cancel or no-show."}),d.jsx("h2",{id:"booking-page-matters",children:"Why Your Booking Page Matters More Than Your Website"}),d.jsx("p",{children:"If you are a mobile valeter or detailer using Automate, your booking page just got significantly better without you having to do anything. Every improvement listed above is live on your booking page right now."}),d.jsx("p",{children:"But if you are not using Automate, this is still worth paying attention to, because the principle applies regardless of what booking system you use."}),d.jsx("p",{children:"Your booking page is not an afterthought. It is the single most important page in y
55our entire online presence. It is the page where interest becomes revenue. Every other page on your website, every ad you run, every social media post you make: all of it exists to get someone to your online booking page. If that page underperforms, everything upstream is wasted effort."}),d.jsx(vl,{label:"THE MATHS",children:"If you are spending £300 a month on Google Ads and your booking page converts at 5%, you are getting a certain number of bookings. If a better-designed booking page pushes that to 7%, you have just increased your bookings by 40% without spending a single extra pound on advertising."}),d.jsx("p",{children:"Most valeting businesses obsess over getting more traffic. The smarter ones obsess over converting the traffic they already have."}),d.jsx("h2",{id:"designed-for-customer",children:"Designed for the Customer, Not the Business Owner"}),d.jsx("p",{children:"One of the mistakes we see repeatedly in this industry is booking systems that are designed around what the business owner needs rather than what the customer experiences. Admin panels full of features are great. But if the customer-facing side of the system (the bit your customer actually sees) looks like a form from 2015, those features are not translating into bookings."}),d.jsx("p",{children:"We designed the new Automate booking page around one question: what does the customer need to feel confident enough to book?"}),d.jsx("p",{children:"They need to see the services clearly. They need to understand what they are paying for. They need to know how long it will take. They need the page to look professional and trustworthy. And they need the whole process to take less than two minutes on their phone."}),d.jsx("p",{children:"That is it. Everything else is noise."}),d.jsxs("p",{children:["If you are ",d.jsx(ut,{to:"/blog/$slug",params:{slug:"start-mobile-valeting-business"},className:"text-primary hover:underline",children:"starting a mobile valeting business"}),", your booking page is one of the five foundational things you need to get right from day one. If you have been running for years, it is probably the single biggest lever you have not pulled yet."]}),d.jsx("h2",{id:"what-comes-next",children:"What Comes Next"}),d.jsx("p",{children:"This redesign is not the end. It is the foundation for everything we are building next. A modern, fast, conversion-optimised booking page is the starting point for features like real-time conversion tracking, guest checkout, and deeper analytics that help you understand exactly how your online booking system is performing."}),d.jsx("p",{children:"We are building Automate for the long term, and every decision we make is backed by real data from real businesses in this industry. Not guesswork. Not trends. Data from over 120,000 completed bookings across the UK's mobile valeting and detailing sector."}),d.jsx("p",{children:"If you are already on Automate, your new booking page is live. Take a look. Share it with a customer. See the difference."}),d.jsxs("p",{children:["If you are not on Automate yet, ",d.jsx("a",{href:"https://admin.getautomate.io/signup/about",className:"text-primary hover:underline",children:"start your free trial"})," and see what a booking system built specifically for UK mobile valeting and detailing businesses actually looks like. No setup fee. No contract. If it is not for you, no hard feelings."]})]}),uL="/assets/blog-crm-customer-profile-BQz6PzQb.jpg",dL="/assets/blog-crm-customer-portal-mUZ9NRP-.jpg",hL=["Persistent customer records on every booking","Multiple vehicles per customer","Full booking history per customer","Customer self-service portal","Marketing email capability with consent capture","Automated review collection and rebooking","CSV export of customer data"],fL=()=>d.jsxs(d.Fragment,{children:[d.jsx("p",{children:"It's a question every UK detailer asks once they pass a certain size. Do I need a CRM?"}),d.jsx("p",{children:'The trouble is, when you Google it, you get hit with a wall of software companies all claiming to be "the number one CRM for auto detailing." Every one of them tells you the answer is yes, and that theirs is the one to buy.'}),d.jsx("p",{children:"That's not an answer. That's marketing."}),d.jsxs("p",{children:["This article is the honest answer. It's written by the team behind ",d.jsx(ut,{to:"/",className:"text-primary hover:underline",children:"Automate"}),", the booking system used by valeting and detailing businesses across the UK, and we're going to be straight with you about a few things. What a CRM actually is. What you actually need. What our software does, what it doesn't, and why we're not embarrassed about either."]}),d.jsx("p",{children:"Read this, and by the end you'll know whether your detailing business needs a CRM, whether you already have enough CRM functionality through your booking system, and how to make the call without overspending on features you'll never use."}),d.jsx("h2",{id:"what-a-crm-is",children:"What a CRM actually is, in plain English"}),d.jsx("p",{children:"In its original meaning, a Customer Relationship Management system is software that stores everything your business knows about every customer, every prospect, and every interaction."}),d.jsx("p",{children:"The term comes from B2B sales. CRMs were originally built for salespeople selling to other businesses. The classic use case is a sales rep working a deal over six months, talking to multiple stakeholders inside the buying company, sending proposals, doing demos, and negotiating contracts. The CRM is the source of truth that holds it all together. Every email, every call, every meeting, every document, every quote."}),d.jsx("p",{children:"The big enterprise platforms you've heard of were built for this world. Sales teams. Long sales cycles. Multiple decision-makers. Six-figure deals."}
55),d.jsx("p",{children:"Then everyone else started using the word."}),d.jsx("p",{children:'Today, the label "CRM" gets stuck in front of just about any software that touches a customer. Booking systems call themselves CRMs. Email tools call themselves CRMs. Loyalty apps call themselves CRMs. Even spreadsheets get called CRMs sometimes.'}),d.jsx("p",{children:`For a UK mobile detailer trying to work out what they actually need, this is confusing in a useful way. Because when you search "CRM for detailing," you're almost certainly not looking for Salesforce. You're looking for something that remembers your customers, stores their vehicle details, makes it easier to rebook them, and saves you from typing their address into Google Maps every Tuesday morning.`}),d.jsx("p",{children:"That isn't a CRM in the original sense. It's a customer-aware booking system. And most modern booking systems already are one."}),d.jsx("div",{className:"not-prose my-10 md:my-12 overflow-x-auto rounded-xl border border-border",children:d.jsxs("table",{className:"w-full text-sm md:text-[15px] min-w-[640px]",children:[d.jsx("thead",{children:d.jsxs("tr",{className:"bg-secondary/50 border-b border-border",children:[d.jsx("th",{className:"text-left p-4 font-semibold text-foreground"}),d.jsx("th",{className:"text-left p-4 font-semibold text-foreground",children:"Traditional CRM"}),d.jsx("th",{className:"text-left p-4 font-semibold text-foreground",children:'"CRM" Marketed All-in-Ones'}),d.jsx("th",{className:"text-left p-4 font-semibold text-primary",children:"Customer-Aware Booking System"})]})}),d.jsxs("tbody",{children:[d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Built for"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"B2B sales teams"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Detailing shops with full marketing stacks"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"UK mobile detailers and valeters"})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Typical cost"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"£30 to £150+ per user/mo"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"£40 to £100+ per mo"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"£25 to £60 per mo"})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"What you get"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Pipelines, deal stages, forecasting, automation"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Everything in a CRM, plus booking and operations"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Booking, customer records, history, automation that actually gets used"})]}),d.jsxs("tr",{className:"bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"What you'll skip"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Almost nothing, but you'll pay for things you don't need"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Half the features, paid for in full"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"None of the bells and whistles, by design"})]})]})]})}),d.jsx("h2",{id:"what-detailers-mean",children:'What detailers actually mean when they search "CRM"'}),d.jsx("p",{children:'Strip away the marketing buzzwords and the things UK detailers really want from a "CRM" cluster into seven specific jobs.'}),d.jsxs("ol",{children:[d.jsx("li",{children:"Remember every customer you've ever served, and every job you've done for them."}),d.jsx("li",{children:"Store their vehicle details, make, model, plate, multiple vehicles per customer, so you don't have to ask every time."}),d.jsx("li",{children:"Show you a customer's full booking history at a glance."}),d.jsx("li",{children:"Let customers help themselves, book again, see upcoming jobs, update details, without messaging you."}),d.jsx("li",{children:"Send the occasional marketing email when you've got a promotion or quiet days to fill."}),d.jsx("li",{children:"Automatically chase reviews after a job and prompt customers to rebook."}),d.jsx("li",{children:"Let you export your customer data when you want to do something more advanced."})]}),d.jsx("p",{children:"Notice what's not on this list. Lead pipelines. Sales forecasting. Deal stages. Multi-touch attribution. Complex segmentation campaigns. Account hierarchies."}),d.jsx("p",{children:"Those are real CRM features. They're also, for a UK mobile detailer, almost completely useless."}),d.jsx("p",{children:'A booking system that nails the seven jobs above gives you everything you actually need from a "CRM," without the complexity, the bloat, or the £100-a-month price tag of a tool designed for B2B sales teams. For the vast majority of UK detailers, this is the right level.'}),d.jsx("p",{children:"You're not running a B2B sales operation. You're running a service business that wants to remember customers, deliver good experiences, and grow. That's a different problem, and it deserves a different solution."}),d.jsx("img",{src:uL,alt:"Smartphone mockup showing a customer profile screen with vehicle details, booking history and a book again button",loading:"lazy",width:1200,height:800}),d.jsx("h2",{id:"features-to-skip",children:"The CRM features you can probably ski
55p"}),d.jsx("p",{children:`If you're being sold a "CRM" by a software company, ask yourself which of these features they're hyping. Most of them are noise for a mobile detailer.`}),d.jsxs("p",{children:[d.jsx("strong",{children:"Lead pipelines and deal stages."}),` Useful if you're a B2B sales rep tracking twenty simultaneous deals worth six figures each, each with multiple decision-makers and a six-month sales cycle. Useless if you're a detailer fielding enquiries on WhatsApp, Instagram DMs, and Google. Most enquiries either book or they don't. Your "pipeline" is your inbox.`]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Sales forecasting."})," Predicting next quarter's revenue based on weighted deal probability. Designed for predictable B2B SaaS revenue. Detailing revenue is too event-based, seasonal, and weather-dependent for this kind of forecasting to be useful."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Complex marketing automation campaigns."})," Drip sequences, behavioural triggers, branching customer journeys. Most detailers who buy these features never set them up, and the ones who do find that the 80/20 of detailing marketing is automated review collection and a rebooking nudge, both of which a good booking system handles natively, without you having to design a workflow."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Sophisticated segmentation."}),` "Customers who booked a Stage 2 polish in the last six months but haven't booked a maintenance wash in four weeks." Sounds powerful. In practice you're looking at a list of thirty customers, and you'd be better off picking up the phone or sending one email to all of them.`]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Multi-touch attribution."})," Knowing exactly which Facebook ad, Instagram post, or Google search led to which booking, weighted across touchpoints. Useful at scale. Pointless when ninety percent of your customers found you through Google, word of mouth, or your van."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Account hierarchies."})," Mapping the buying organisation, parent companies, subsidiaries. Useful if you sell into fleet management or corporate accounts. Useless for retail mobile detailing."]}),d.jsxs("p",{children:["If a CRM company is selling you these features, ask what they actually do for ",d.jsx("em",{children:"your"}),' business. The honest answer is usually "nothing, but they look impressive in a demo."']}),d.jsxs("div",{className:"not-prose my-8 rounded-xl border border-amber-500/30 bg-amber-500/5 p-5 md:p-6 flex gap-4",children:[d.jsx(rk,{className:"w-6 h-6 text-amber-500 shrink-0 mt-0.5","aria-hidden":"true"}),d.jsx("p",{className:"text-[15px] md:text-[16px] text-foreground/90 leading-relaxed font-medium",children:"If a CRM company is selling you features you'll never use, you're paying for someone else's business model."})]}),d.jsx("h2",{id:"when-you-need-one",children:"When you actually do need a separate CRM"}),d.jsx("p",{children:"Rare, but worth being honest about. You probably do need a dedicated CRM if:"}),d.jsxs("ul",{children:[d.jsx("li",{children:"You're doing significant B2B sales, fleet contracts, dealership work, corporate accounts, and managing more than ten or fifteen active sales conversations at once"}),d.jsx("li",{children:"You've got a sales team, meaning more than one person doing outbound"}),d.jsx("li",{children:"You're at a scale where customer data analysis is a full-time role rather than something you do once a quarter in a spreadsheet"}),d.jsx("li",{children:"You need integrations with enterprise tools (ERP, finance, accounting platforms) that your booking system doesn't support"})]}),d.jsx("p",{children:"If none of that applies, and for the vast majority of UK mobile detailers it doesn't, your booking system's built-in customer-management features are enough. A separate CRM would be duplicated cost and effort, and you'd never use eighty percent of what you paid for."}),d.jsx("h2",{id:"seven-features",children:"The seven CRM-like features your booking system should do"}),d.jsxs("p",{children:["Here's the criteria. Same approach as our ",d.jsx(ut,{to:"/blog/$slug",params:{slug:"booking-system-for-mobile-detailers"},className:"text-primary hover:underline",children:"booking system buyer's guide"}),", measure your booking system against this checklist, and if it ticks them, you don't need a separate C
55RM on top."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"1. Persistent customer records."})," Every booking should automatically link to an existing customer if they're a repeat. A new booking from Sarah at 14 Oak Lane should not create a duplicate. The system should recognise her, link the new booking to her record, and update her history. Sounds basic. Plenty of generic scheduling tools don't do it."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"2. Multi-vehicle support per customer."})," A customer with a daily-driver Audi and a weekend Porsche shouldn't be set up twice. Both vehicles attached to one customer record, both individually bookable, both with their own service history."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"3. Full booking history at a glance."})," Open the customer's profile and see every job you've ever done for them, service, date, vehicle, price, notes, in one view. This is what makes good repeat customer service possible. You walk up to the car remembering which package she had last time, the bumper scuff, the leather she likes treated."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"4. A customer-facing self-service portal."})," Customers log in, see their upcoming bookings, see their history, manage their saved vehicles, and rebook without messaging you. This is one of the most under-rated features in the category. A customer who can rebook themselves at eleven at night is one you'd otherwise have lost to your evening voicemail."]}),d.jsx("img",{src:dL,alt:"Customer portal interface mockup on laptop and phone showing upcoming bookings, vehicle list and a book again button",loading:"lazy",width:1200,height:800}),d.jsxs("p",{children:[d.jsx("strong",{children:"5. Marketing email to your customer base."})," When you've got a Spring promotion, capacity to fill in a slow week, or a new service to announce, you can send a one-off email to every customer who's opted in. GDPR-compliant, opt-out-respecting. This doesn't need to be sophisticated. Universal sends to everyone who's consented are enough for ninety-five percent of cases."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"6. Automated review collection and rebooking nudges."})," Covered in detail elsewhere, but the system should do this for you, automatically, without you having to remember every single time. Reviews and rebooks are the two biggest growth levers in this industry, and they happen consistently when they're automated and inconsistently when they're not."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"7. CSV export when you want to go further."}),' This is the secret weapon, and the bit most detailers miss. If you want to do real segmentation, find your top customers, identify dormant ones, calculate lifetime value, build a custom audience for Facebook ads, send a targeted email campaign through a marketing tool, export your customer list to a CSV and do it in a spreadsheet. Twenty minutes in Google Sheets handles ninety-five percent of the "advanced CRM" use cases for a mobile detailer. Without buying a separate tool.']}),d.jsx("p",{children:`If your booking system does all seven of these, you have a "CRM." You just don't have a CRM-flavoured invoice.`}),d.jsx(er,{headline:"Looking for a booking system that does all seven?",body:"Automate is built for UK mobile detailers and valeters. Customer records, vehicle history, customer portal, marketing emails, automated reviews, recurring bookings, and CSV export, included as standard. Fourteen-day free trial.",buttonText:"Start Free Trial â",buttonLink:"/contact"}),d.jsx("h2",{id:"where-automate-fits",children:"Where Automate fits, an honest breakdown"}),d.jsx("p",{children:"We built Automate as a booking system for UK mobile valeters and detailers. It's not a CRM in the traditional enterprise sense, and we're not going to pretend it is."}),d.jsx("p",{children:"Here's an honest breakdown."}),d.jsx("p",{children:d.jsx("strong",{children:"What Automate does well on the customer-management side:"})}),d.jsxs("ul",{children:[d.jsx("li",{children:"Persistent customer records, every customer is recognised on repeat bookings"}),d.jsx("li",{children:"Multiple vehicles per customer, with details saved against the customer record"}),d.jsx("li",{children:"Booking-location details stored against the customer"}),d.jsx("li",{children:"Full booking history visible on every customer profile"}),d.jsx("li",{children:"A customer-facing portal where customers log in to see upcoming bookings, full history, and manage their saved vehicles"}),d.jsx("li",{children:"Automated review collection"}),d.jsx("li",{children:"Rebooking reminders"}),d.jsx("li",{children:"Recurring bookings (customer sets the frequency, future bookings automated)"}),d.jsx("li",{children:"Marketing emails to your customer list, with built-in consent capture"}),d.jsx("li",{children:"Discount codes, applied at checkout"}),d.jsx("li",{children:"Full CSV export of your customer data"})]}),d.jsx("p",{children:d.jsx("strong",{children:"What Automate doesn't do, at least, not yet:"})}),d.jsxs("ul",{children:[d.jsx("li",{children:"Customer-level analytics (lifetime value per customer, top-customer rankings, dormant-customer lists). On the roadmap. For now, the CSV export covers the same ground, a few minutes in Google Sheets gives you your top customers, your dormant ones, and your LTV without paying anyone extra."}),d.jsx("li",{children:"Segmented marketing emails, sends are currently universal to your consented list. Roadmap."}),d.jsx("li",{children:"SMS marketing campaigns, automated booking-related SMS works (confirmations, reminders), but you can't yet broadcast SMS marketing. Roadmap."}),d.jsx("li",{children:"Customer-level notes, you can attach notes to bookings, not to a customer profile. Mostly by design. We've found that booking-level notes are where the relevant context actually lives for most detailers."}),d.jsx("li",{children:"Lead pipelines, Automate is built around bookings, not enquiries. If someone messages you on Instagram and doesn't book, that lead isn't in Automate. (Quick Booking Builder, an upcoming feature, will start to bridge this gap.)"}),d.jsx("li",{children:"Direct integrations with external CRMs and email marketing platforms. The bridge is the CSV export."})]}),d.jsx("p",{children:"This is what we mean when we say Automate is built for valeters and detailers, not for sales teams. We've focused on the features that actually move the needle for a mobile detailing business, and we've deliberately not built the features that look impressive in a demo but never get used."}
55),d.jsxs("div",{className:"not-prose my-12 md:my-14 rounded-2xl border-l-4 border-primary bg-gradient-to-br from-primary/[0.07] via-primary/[0.04] to-transparent p-7 md:p-10",children:[d.jsx("p",{className:"text-xs font-bold text-primary tracking-wider uppercase mb-3",children:"Our Philosophy"}),d.jsx("h3",{className:"text-xl md:text-2xl font-bold text-foreground mb-5 leading-snug",children:"The honest summary, in our own words."}),d.jsxs("div",{className:"space-y-4 text-[16px] md:text-[17px] leading-[1.75] text-foreground/85 italic",children:[d.jsx("p",{children:"Automate is built for UK mobile valeters and detailers. We focus on the features we know are important, that we know move the needle, and that are actually useful to people in this industry. Without overcomplicating it. Without the bloat."}),d.jsx("p",{children:"Mobile valeters and detailers don't have time to learn complicated software, or to spend their evenings getting bogged down in setups and admin. The software is meant to support them, not become another job they have to work at. It's designed to remove admin work and make running a successful, growing business simpler."}),d.jsx("p",{children:"It's also designed to give your customers a smooth experience, booking without needing to call, paying securely online, getting their reminders by email and SMS automatically."}),d.jsx("p",{children:"The features that build long-term momentum, automated review collection, rebooking reminders, discount codes, recurring bookings where the customer sets the frequency once and we handle the rest, are designed to act as a flywheel. They're how a detailing business grows, not just how it gets easier to manage."}),d.jsx("p",{children:"That's the philosophy. It's why we look the way we look. And if it sounds like the right fit for the way you want to run your business, we'd be glad to have you."})]})]}),d.jsx("p",{children:"If you're a detailer who needs a real B2B lead pipeline, complex marketing automation, or sophisticated segmentation today, Automate isn't the right tool, and we'd tell you that on a phone call before you signed up. If you're a UK mobile detailer who wants a booking system that handles enough customer-management work that you'll never need to think about a separate CRM, that's exactly what we're built to do."}),d.jsx("h2",{id:"how-to-decide",children:"How to decide"}),d.jsx("p",{children:"A simple framework. Run through these questions in order and the answer will reveal itself."}),d.jsxs("ol",{children:[d.jsx("li",{children:"Are you running a B2B sales operation with ten or more active deals at any time? You probably need a real enterprise CRM. Plus a booking system for the operational side."}),d.jsx("li",{children:"Do you have a dedicated sales person or marketing person who'd actually use complex segmentation and pipeline tools? If yes, separate CRM. If no, skip."}),d.jsx("li",{children:"Do you need integrations with enterprise tools (ERP, finance, accounting) that your booking system doesn't support? If yes, separate CRM. If no, skip."}),d.jsx("li",{children:"Is your business primarily B2C, retail customers booking detailing services? A booking system with the seven CRM-like features above is enough. You don't need a separate CRM."})]}),d.jsx("p",{children:"For the vast majority of UK mobile detailers, the answer is question four: yes. You don't need a CRM. You need a booking system that does enough customer-management work that the question becomes irrelevant."}),d.jsxs("div",{className:"not-prose my-10 md:my-12 rounded-2xl border border-border bg-gradient-to-br from-card to-card/60 p-7 md:p-10 shadow-lg",children:[d.jsx("p",{className:"text-xs font-bold text-primary tracking-wider uppercase mb-2",children:"The 7-Point Checklist"}),d.jsx("h3",{className:"text-xl md:text-2xl font-bold text-foreground mb-6 leading-snug",children:"Your seven-point checklist. If your booking system does these, you don't need a separate CRM."}),d.jsx("ul",{className:"grid md:grid-cols-2 gap-x-8 gap-y-3.5",children:hL.map((t,e)=>d.jsxs("li",{className:"flex gap-3 items-start",children:[d.jsx("span",{className:"shrink-0 w-5 h-5 mt-0.5 rounded-md bg-primary/15 flex items-center justify-center",children:d.jsx($r,{className:"w-3.5 h-3.5 text-primary",strokeWidth:3,"aria-hidden":"true"})}
55),d.jsx("span",{className:"text-[15px] md:text-[16px] text-foreground/90 leading-snug",children:t})]},e))})]}),d.jsx("h2",{id:"closing",children:"Closing"}),d.jsx("p",{children:"The detailing industry doesn't have a CRM problem. It has a marketing problem. Too many software companies hype features that don't fit how UK mobile valeters and detailers actually work."}),d.jsx("p",{children:"Pick a tool that does what you actually need. Skip the features you don't. If your booking system already does the seven things on the checklist above, you have a CRM. Even if nobody calls it that."}),d.jsx("p",{children:"If you want one that's built specifically for UK mobile detailers, with the customer-management features that actually move the needle and none of the bloat that doesn't, that's exactly what we built Automate to be."})]}),pL=["Customer-facing booking link with real availability","Online card payments","Automated confirmations and SMS reminders","Deposits at booking","Automated cancellation policies","Multi-territory or service-area pricing","Vehicle-size pricing","Pre-booking requirements (power, water, space)","Recurring bookings, customer-initiated","Automated review collection and rebooking reminders","Discount codes","Human support from people who know your business"],mL=[{title:"Set up your three most booked services.",body:"Not all of them. Just the three you do most. Full Valet, Mini Valet, Interior Deep Clean, or whatever your equivalent is. Set the prices, the durations, the vehicle-size tiers, the add-ons."},{title:"Get three real customers to book through it.",body:"Ideally repeat customers you trust. Send them the link and ask them to book as they normally would. Watch what they do. Ask them what confused them. This will tell you more than any demo."},{title:"Take three real payments.",body:"Either at the point of booking or on the day. See the money land in your account. Check the invoice that gets generated. Check the fees."},{title:"Trigger a no-show.",body:"Have one customer deliberately not show up. Watch how the system handles it. Does the deposit get kept? Does the cancellation policy kick in? Or do you end up chasing?"},{title:"Cancel one booking.",body:"Have one customer cancel within the cancellation window, and one outside it. Watch what happens to the money, the calendar slot, and the customer communication."}],gL=()=>d.jsxs(d.Fragment,{children:[d.jsx("p",{children:"Most mobile detailers pick a booking system the same way most people pick car insurance. They search for something cheap, sign up for the first one that looks reasonable, and never look at it again until it breaks or starts costing them money."}),d.jsx("p",{children:"Then it does both."}),d.jsxs("p",{children:["At ",d.jsx(ut,{to:"/",className:"text-primary hover:underline",children:"Automate"}),", we work with mobile detailers and valeters across the UK every day. We've seen the full spectrum. Detailers running hundred-grand-a-year operations from a paper diary. Detailers paying £80 a month for software built for American barbers. Detailers still replying to WhatsApp messages at eleven at night because they haven't figured out there's another way."]}),d.jsx("p",{children:"This guide is written for anyone in the UK detailing industry who's about to pick a booking system, or who's suspecting the one they're on isn't quite right. It's not a list of our top five tools. It's a checklist of the features and qualities that actually matter, so you can work it out yourself."}),d.jsx("h2",{id:"real-cost",children:"The real cost of the wrong choice"}),d.jsx("p",{children:"A booking system is one of the lowest-cost, highest-leverage decisions a mobile detailer makes. It touches every customer you have. Every quote. Every confirmation. Every payment. Every review. It's the spine of how your business runs."}),d.jsx("p",{children:"Which means when it's wrong, it's not a small problem. It's a quiet, compounding tax on your time and your revenue."}),d.jsx("p",{children:"Lose one booking a week because a customer couldn't work out how to book with you online and couldn't be bothered to call. That's fifty bookings a year. At an average ticket of sixty to a hundred and twenty pounds, that's three to six thousand pounds of revenue you never saw walk through the door."}),d.jsx("p",{children:"Miss one chance a week to collect a review because your system doesn't ask automatically. That's fifty Google reviews you didn't get this year. Local search rankings are built on review volume and recency. Over twelve months, that gap compounds into a measurable ranking loss, which compounds into fewer enquiries, which compounds into slower growth."}),d.jsx("p",{children:"The cheapest booking system in the world is expensive if it costs you bookings."}),d.jsx("blockquote",{children:"One lost booking a week is three to six thousand pounds a year. One missing review a week is a measurable hit to your local search ranking. The wrong booking system doesn't cost you £30 a month. It costs you everything the right one would have unlocked."}),d.jsx("h2",{id:"when-not-needed",children:"When you probably don't need a booking system yet"}),d.jsx("p",{children:"Worth saying up front, because it's honest and because most buyer's guides won't."}),d.jsx("p",{children:"If you're doing fewer than five jobs a week, your entire customer base is repeat locals who know you personally, and you're happy with the volume you've got, you probably don't need a booking system. A paper diary and a WhatsApp thread will see you through."}),d.jsx("p",{children:"The moment that stops being true is usually predictable. New customer enquiries outnumber existing ones. Evenings disappear into replying to messages. A no-show costs you a full morning because you drove thirty miles and the customer forgot. You start missing things."}),d.jsx("p",{children:"If any of that sounds familiar, you've passed the point where a diary is enough. The rest of this guide is for you."}),d.jsx("h2",{id:"three-types",children:"The three types of tool you'll encounter"}),d.jsx("p",{children:"Before we get into the checklist, it helps to know what's actually on the market. Broadly, there are three categories of booking system a mobile detailer will c
55ome across, and they serve very different jobs."}),d.jsxs("p",{children:[d.jsx("strong",{children:"Generic appointment scheduling tools."})," Things like Calendly, Square Appointments, Bookedin. Built for anyone who needs to take a booking. Cheap, easy to set up, very shallow. They'll give you a calendar and a booking link. They won't give you a way to handle vehicle-size pricing, mobile service areas, deposits on specific services, or any of the operational realities of running a van-based business."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Generic field service platforms."})," Jobber, ServiceM8, Housecall Pro. Built originally for American trades like plumbers, HVAC technicians, and landscapers. Powerful, feature-rich, and often expensive. They can do most of what you need, but you'll spend weeks configuring them for detailing and you'll still end up with American payment flows, American SMS conventions, and features you don't use cluttering the interface."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Specialist detailing and valeting software."})," Automate, DetailBook, Urable, OrbisX, Detail Bookie. Built specifically for vehicle care businesses. Some are UK-focused, some are US-focused. The best of them understand the operational realities of mobile work: the power and water requirements, the travel-based pricing, the vehicle-size tiers, the need for deposits on higher-ticket services."]}),d.jsx("p",{children:"Which category is right for you depends on your business, but for most UK mobile detailers doing more than ten jobs a week, specialist software is the honest answer. Generic tools will save you money month-to-month and cost you money everywhere else."}),d.jsx("div",{className:"not-prose my-10 md:my-12 overflow-x-auto rounded-xl border border-border",children:d.jsxs("table",{className:"w-full text-sm md:text-[15px] min-w-[640px]",children:[d.jsx("thead",{children:d.jsxs("tr",{className:"bg-secondary/50 border-b border-border",children:[d.jsx("th",{className:"text-left p-4 font-semibold text-foreground"}),d.jsx("th",{className:"text-left p-4 font-semibold text-foreground",children:"Generic Scheduling"}),d.jsx("th",{className:"text-left p-4 font-semibold text-foreground",children:"Generic Field Service"}),d.jsx("th",{className:"text-left p-4 font-semibold text-primary",children:"Specialist Detailing"})]})}),d.jsxs("tbody",{children:[d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Built for"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Anyone with a calendar"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"US trades (plumbers, HVAC)"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"UK valeting and detailing businesses"})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Typical cost"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"£10â£25/mo"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"£40â£100+/mo"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"£25â£60/mo"})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Strengths"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Cheap, quick setup, familiar"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Route planning, team scheduling"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Vehicle pricing, service areas, deposits, mobile-native features"})]}),d.jsxs("tr",{className:"bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Where it breaks"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"No vehicle/service-specific logic, no deposits on specific services, no territory pricing"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Overkill, American UX, weeks to configure, priced for teams"}
55),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Smaller ecosystem, fewer integrations than field service giants"})]})]})]})}),d.jsx("h2",{id:"twelve-things",children:"The 12 things that actually matter"}),d.jsx("p",{children:"Here's the checklist. Twelve criteria, grouped into five themes. Score any tool you're considering against these and you'll know within an hour whether it's worth your time."}),d.jsx("h3",{id:"fundamentals",children:"The fundamentals (non-negotiable)"}),d.jsx("p",{children:"If a booking system doesn't tick these three, walk away. It doesn't matter what else it does."}),d.jsxs("p",{children:[d.jsx("strong",{children:"1. A customer-facing booking link that shows your real availability."}),` Not a form that sends you a request. Not a page that says "contact us for availability." A page where the customer sees your actual packages, your actual add-ons, and the slots you actually have open, and can book themselves in without needing to speak to you. This is the single biggest unlock. You stop being the bottleneck. Your business can take bookings while you're elbow-deep in a passenger-seat footwell.`]}),d.jsxs("p",{children:[d.jsx("strong",{children:"2. Online card payments."})," Your customers expect to pay by card. Most of your competitors offer it. Offering bank transfer only, or cash on the day, signals that you're an amateur operation, whether you are or not. A booking system that takes card payments at the point of booking, or on the day, is table stakes in 2026."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"3. Automated confirmations and reminders."})," Every booking should trigger an instant confirmation and an automatic reminder before the appointment. No manual work from you. Email is the minimum. SMS is better, which we'll come back to."]}),d.jsx("h3",{id:"revenue-protection",children:"Revenue protection"}),d.jsx("p",{children:"The next three are about stopping money slipping through the cracks. Most detailers don't realise how much they're losing until they start measuring it."}),d.jsxs("p",{children:[d.jsx("strong",{children:"4. Deposits at the point of booking."})," The average UK mobile detailer loses thousands a year to no-shows. Deposits are the single most effective defence. A booking system that lets you set a deposit amount per service, collect it at booking, and deduct it from the final balance is doing direct financial work for you from day one. If your system doesn't handle deposits, it's costing you money every month."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"5. Automated cancellation policies."}),` Set a rule ("cancellations within twenty-four hours forfeit the deposit"), and have the system enforce it automatically. No awkward conversations. No chasing. The policy does the work. Customers respect it because it's clear and consistent.`]}),d.jsxs("p",{children:[d.jsx("strong",{children:"6. SMS reminders, not just email."})," Email reminders have an open rate of around twenty percent. SMS sits closer to ninety-eight. Your customers are on their phones. Your reminders need to be too. A booking system that only does email reminders is only doing part of the job."]}),d.jsx("div",{className:"not-prose my-8 rounded-lg border-l-[3px] border-primary bg-primary/5 px-5 py-4",children:d.jsxs("p",{className:"text-[15px] text-foreground/85",children:[d.jsx("span",{className:"font-semibold text-foreground",children:"Read more on this: "}),d.jsx(ut,{to:"/blog/$slug",params:{slug:"reduce-no-shows-mobile-valeting"},className:"text-primary hover:underline",children:"5 Proven Ways to Reduce No-Shows in Your Mobile Valeting Business"}),"."]})}),d.jsx(er,{headline:"Need deposits, cancellation policies, and SMS reminders set up in fifteen minutes?",body:"Automate is the UK booking system built for mobile detailers. Start your fourteen-day free trial today.",buttonText:"Start Free Trial â",buttonLink:"/contact"}),d.jsx("h3",{id:"operational-fit",children:"Operational fit for mobile detailing"}),d.jsx("p",{children:"This is where most generic booking systems fall over. These three criteria are built around the specific realities of running a van-based, travel-around, vehicle-specific business."}),d.jsxs("p",{children:[d.jsx("strong",{children:"7. Pre-booking requirements that the customer has to confirm."})," Before a customer can book you in, they need to confirm they have the things you need: a safe place to park, an outside tap if you use water, an outdoor socket if you need power, enough space around the vehicle to work. A booking system that can ask these questions at the point of booking, and block the booking if the answer's wrong, saves you wasted trips. This is the clearest line between a booking system that was built for mobile work and one that wasn't."]}),d.jsxs("div",{className:"not-prose my-8 rounded-xl border border-amber-500/30 bg-amber-500/5 p-5 md:p-6 flex gap-4",children:[d.jsx(rk,{className:"w-6 h-6 text-amber-500 shrink-0 mt-0.5","aria-hidden":"true"}
55),d.jsx("p",{className:"text-[15px] md:text-[16px] text-foreground/90 leading-relaxed font-medium",children:"If your booking system can't ask a customer whether they have a water tap or outdoor socket before confirming, it wasn't built for mobile work. Full stop."})]}),d.jsxs("p",{children:[d.jsx("strong",{children:"8. Multi-territory and service-area pricing."})," If you cover more than one area, you probably charge differently in each one. London Zone 1 is not Buckinghamshire. A ceramic coating in central London has congestion charge, ULEZ, parking, and time costs baked into it that don't apply thirty miles out. A booking system that lets you set different prices for different service areas, and serves the right price to the right customer based on their postcode, is doing real operational work for you. Most generic tools can't do this at all. Some specialist tools can. It's worth asking specifically."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"9. Vehicle-size pricing."})," A Range Rover is not a Fiat 500. Your pricing shouldn't treat them the same, and your customers won't believe you're a serious detailer if it does. A booking system that lets you set different prices for different vehicle sizes (small, medium, large, extra-large, commercial) and has the customer select their vehicle at booking is the only sensible way to handle this. Flat pricing for all cars is either losing you money on larger jobs or pricing you out of smaller ones."]}),d.jsx("h3",{id:"growth-engine",children:"The growth engine"}),d.jsx("p",{children:"The next three aren't about running your business day-to-day. They're about building compounding growth into the machine."}),d.jsxs("p",{children:[d.jsx("strong",{children:"10. Recurring bookings the customer sets up themselves."})," Your most profitable customers are the ones who come back. A booking system that lets a customer book once, set a frequency (every month, every six weeks, every quarter), and have future bookings generated automatically is doing long-term revenue work for you in the background. One customer on a monthly recurring booking is worth more than ten one-offs. A good system makes recurring bookings a default, not an afterthought."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"11. Automated review collection and rebooking reminders."})," Reviews are the single highest-leverage marketing asset a local service business has. Most detailers don't get enough of them because they forget to ask. A booking system that automatically sends a review request at the right moment after a job, and separately sends a rebooking nudge a few weeks or months later based on the service type, turns a one-off job into a flywheel. Manual systems don't do this consistently. Automated ones do."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"12. Discount codes and promotions."})," Useful for running offers, incentivising referrals, retaining customers after a tricky job, or giving VIPs something back. A booking system that lets you create, track, and expire discount codes is doing small marketing work constantly. A system that doesn't forces you to handle discounts manually, which you won't do, which means you won't run offers, which means a lever you could be pulling stays stuck."]}),d.jsx("h3",{id:"support",children:"The support you'll actually get"}),d.jsx("p",{children:"The twelfth and final criterion is the one most buyer's guides skip. It's also, in our direct experience of working with UK detailers day in and day out, the one that matters most over the long run."}),d.jsx("p",{children:d.jsx("strong",{children:"The people behind the software."})}),d.jsx("p",{children:"A booking system is not a one-time purchase. It's a relationship. You'll rely on it every day. Things will go wrong. You'll have questions that aren't covered in the help docs. You'll want to change how something works because your business has grown. The difference between a software company that treats you like a support ticket and one that treats you like a human being you have a relationship with is the difference between a tool that grows with you and one you outgrow in eighteen months."}),d.jsx("p",{children:"When we talk to our customers, the feedback we get about Automate most often isn't about a feature. It's about the fact that we pick up the phone. That they speak to the same people each time. That we know their business, their vans, their customers, their goals. That we care whether they succeed, and we'll tell them honestly when something isn't a good fit, even when it means they don't buy."}),d.jsx("p",{children:"That's a business model choice, not a software feature. And it's the thing that's hardest to test during a free trial, be
55cause it only reveals itself over months."}),d.jsx("p",{children:"Here's a specific example of what it looks like in practice."}),d.jsxs("div",{className:"not-prose my-12 md:my-14 rounded-2xl border-l-4 border-primary bg-gradient-to-br from-primary/[0.07] via-primary/[0.04] to-transparent p-7 md:p-10",children:[d.jsx("p",{className:"text-xs font-bold text-primary tracking-wider uppercase mb-3",children:"Customer Story"}),d.jsx("h3",{className:"text-xl md:text-2xl font-bold text-foreground mb-5 leading-snug",children:"A booking system should grow with you. Here's what that actually looks like."}),d.jsxs("div",{className:"space-y-4 text-[16px] md:text-[17px] leading-[1.75] text-foreground/85 italic",children:[d.jsx("p",{children:"One of our detailers joined Automate just over a year ago. At the time, he was holding down a full-time job and doing detailing on weekends only. His heart was in the work, and he wanted to build something for himself, but the jump from weekend side-hustle to full-time business felt too big to take blind."}),d.jsx("p",{children:"Over the first few months, we got to know him. We helped him think through his pricing, his packages, his service area, how to position himself. Through the platform, he built a proper booking page, collected deposits, automated his reminders, and started getting consistent reviews. Slowly, his weekends filled up. New customers started looking for slots he didn't have available."}),d.jsx("p",{children:"That gave him the confidence to take the leap. He left his job and went full-time, upgraded his van and his equipment, and kept growing."}),d.jsxs("p",{children:["He then joined ",d.jsx("a",{href:"https://www.washdoctors.co.uk",target:"_blank",rel:"noopener noreferrer",className:"text-primary not-italic font-semibold hover:underline",children:"Wash Doctors"})," through our partnership programme, which any Automate customer is eligible to apply for, and which filled his diary further. Most recently, he bought a second van and is now employing someone."]}),d.jsx("p",{children:"That journey is not unique. It's the story a good chunk of our customer base could tell. None of it happened because the booking system had a specific feature. It happened because the booking system was run by people who were invested in his business alongside him."}),d.jsx("p",{children:"That's the criterion we'd most encourage you to weigh, and it's the one most buyer's guides don't mention."})]})]}),d.jsx("h2",{id:"uk-specific",children:"UK-specific things generic tools get wrong"}),d.jsx("p",{children:"Beyond the twelve criteria above, there are a handful of UK-specific details worth checking before you commit to any booking system. These are the quiet technical gotchas that don't show up until you're already using the tool."}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"GBP payment rails."})," The system should process card payments in sterling through a UK-available provider (Stripe UK, or similar), with no conversion fees, and payouts to a UK bank account. American-built tools sometimes use US-only payment processors that quietly charge you FX on every transaction."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"SMS from a UK sender ID."})," Your customer should receive an SMS that shows your business name or a UK number, not a random American long code or an alphanumeric sender that arrives in the spam folder. This matters more than you'd think for open rates and trust."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"VAT-compliant invoicing."})," If you're VAT registered, or planning to be, your booking system needs to generate invoices that meet HMRC requirements (VAT number, correct breakdown, clear tax point). Many American tools don't do this without heavy customisation."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"GDPR and ICO compliance."})," Your customer data sits in your booking system. If the provider isn't handling GDPR properly, that's your legal exposure, not theirs. Ask where data is stored and what their compliance posture is."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"UK hours support."})," If something breaks at seven in the evening on a Tuesday, is there a human available to help? For American-built tools, probably not. For UK-built tools, probably yes."]})]}),d.jsx("h2",{id:"how-to-trial",children:"How to trial a booking system properly"}),d.jsx("p",{children:"Every decent booking system offers a free trial. Most people waste them. They log in, have a click around for ten minutes, and decide based on first impressions. That tells you almost nothing about whether the tool will actually work for you."}),d.jsx("p",{children:"Here's how to run a trial that gives you real information."}),d.jsx("div",{className:"not-prose my-10 space-y-4",children:mL.map((t,e)=>d.jsxs("div",{className:"flex gap-5 rounded-xl border border-border bg-card p-5 md:p-6 transition-colors hover:border-primary/30",children:[d.jsx("div",{className:"shrink-0 w-10 h-10 rounded-full bg-primary/15 text-primary font-bold flex items-center justify-center text-base",children:e+1}),d.jsxs("div",{className:"flex-1",children:[d.jsx("p",{className:"font-semibold text-foreground mb-1.5 text-[16px] md:text-[17px]",children:t.title}
55),d.jsx("p",{className:"text-[15px] md:text-[16px] text-muted-foreground leading-relaxed",children:t.body})]})]},e))}),d.jsx("p",{children:"If the system survives those five tests, it'll survive your business. If it falls over on any of them, you've just saved yourself the cost of finding out the hard way six months in."}),d.jsx("h2",{id:"decision-framework",children:"Your five-minute decision framework"}),d.jsx("p",{children:"Before you commit to any booking system, run through this checklist one last time."}),d.jsxs("div",{className:"not-prose my-10 md:my-12 rounded-2xl border border-border bg-gradient-to-br from-card to-card/60 p-7 md:p-10 shadow-lg",children:[d.jsx("p",{className:"text-xs font-bold text-primary tracking-wider uppercase mb-2",children:"The 12-Point Checklist"}),d.jsx("h3",{className:"text-xl md:text-2xl font-bold text-foreground mb-6 leading-snug",children:"What every UK mobile detailer's booking system should do"}),d.jsx("ul",{className:"grid md:grid-cols-2 gap-x-8 gap-y-3.5",children:pL.map((t,e)=>d.jsxs("li",{className:"flex gap-3 items-start",children:[d.jsx("span",{className:"shrink-0 w-5 h-5 mt-0.5 rounded-md bg-primary/15 flex items-center justify-center",children:d.jsx($r,{className:"w-3.5 h-3.5 text-primary",strokeWidth:3,"aria-hidden":"true"})}),d.jsx("span",{className:"text-[15px] md:text-[16px] text-foreground/90 leading-snug",children:t})]},e))})]}),d.jsx("p",{children:"If a system ticks ten or more, it's a serious contender. If it ticks fewer than eight, keep looking."}),d.jsx("p",{children:"The right tool will save you hours of admin every week, protect you from thousands of pounds of no-shows a year, and grow your business in the background while you focus on the work."}),d.jsx("p",{children:"The wrong one will quietly cost you all of that."}),d.jsx("p",{children:"Pick carefully."})]}),yL=()=>d.jsxs(d.Fragment,{children:[d.jsx("p",{children:"If you're a UK mobile detailer searching for a booking system, Acuity Scheduling is probably one of the names that's come up. It's well-known, it's cheap, and it does a respectable job for a yoga teacher, a tutor, or a therapist."}),d.jsx("p",{children:"It is not built for you."}),d.jsxs("p",{children:["At ",d.jsx(ut,{to:"/",className:"text-primary hover:underline",children:"Automate"}),", we work with UK mobile detailers and valeters every day. We talk to operators who've tried Acuity and either bounced off it in their first week or are quietly losing money to it months in. This guide is an honest, side-by-side comparison: where Acuity does a fine job, where it falls short for UK detailing, and what to look for in a tool built for the work you actually do."]}),d.jsx("h2",{id:"what-acuity-is",children:"What Acuity Scheduling actually is"}),d.jsx("p",{children:"Acuity is a generic appointment scheduling tool, now owned by Squarespace. It was designed for service providers who sell time: a forty-five-minute coaching call, a sixty-minute massage, a thirty-minute consultation. The product is excellent at that core job. You pick a time, it goes in a calendar, the customer pays."}),d.jsx("p",{children:"Detailing is not that job. You're not selling time slots from a fixed location. You're selling vehicle-specific services, often at the customer's address, with real-world operational constraints: power, water, parking, vehicle size, travel distance, and in some parts of the UK, congestion and emissions charges. A generic scheduler doesn't know any of that exists."}),d.jsx("h2",{id:"side-by-side",children:"Acuity vs Automate, side by side"}),d.jsx("div",{className:"not-prose my-10 md:my-12 overflow-x-auto rounded-xl border border-border",children:d.jsxs("table",{className:"w-full text-sm md:text-[15px] min-w-[640px]",children:[d.jsx("thead",{children:d.jsxs("tr",{className:"bg-secondary/50 border-b border-border",children:[d.jsx("th",{className:"text-left p-4 font-semibold text-foreground"}),d.jsx("th",{className:"text-left p-4 font-semibold text-foreground",children:"Acuity Scheduling"}),d.jsx("th",{className:"text-left p-4 font-semibold text-primary",children:"Automate"})]})}),d.jsxs("tbody",{children:[d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Built for"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Generic appointments (coaches, therapists, salons)"}
55),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"UK mobile valeting and detailing"})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Vehicle-size pricing"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Workarounds with intake forms; no native pricing logic"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Native: small / medium / large / XL / commercial"})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Territory / postcode pricing"}),d.jsxs("td",{className:"p-4 text-muted-foreground align-top",children:[d.jsx(_a,{className:"inline w-4 h-4 text-muted-foreground"})," Not supported"]}),d.jsxs("td",{className:"p-4 text-foreground/90 align-top",children:[d.jsx($r,{className:"inline w-4 h-4 text-primary"})," Different prices per service area, served by postcode"]})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"ULEZ / Congestion Charge zones"}),d.jsxs("td",{className:"p-4 text-muted-foreground align-top",children:[d.jsx(_a,{className:"inline w-4 h-4 text-muted-foreground"})," No concept of UK pricing zones"]}),d.jsxs("td",{className:"p-4 text-foreground/90 align-top",children:[d.jsx($r,{className:"inline w-4 h-4 text-primary"})," Build ULEZ / CCZ uplifts into the right postcodes"]})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Pre-booking requirements (power, water, parking)"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Free-text intake; doesn't block bad bookings"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Conditional questions that can block the booking"})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Technician's mobile app"}),d.jsxs("td",{className:"p-4 text-muted-foreground align-top",children:[d.jsx(_a,{className:"inline w-4 h-4 text-muted-foreground"})," Calendar view only"]}),d.jsxs("td",{className:"p-4 text-foreground/90 align-top",children:[d.jsx($r,{className:"inline w-4 h-4 text-primary"})," Native iOS & Android app for the day's jobs, routes, and notes"]})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Deposits"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Full payment or nothing; partial deposits awkward"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Per-service deposit amounts, deducted from final balance"})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"SMS reminders"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"US-priced add-on, US number formats"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"UK SMS included, UK sender IDs"})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Automated review collection"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Not built in"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Post-job Google review requests, automatic"})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Recurring bookings"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Repeating appointments, no service-specific cadence"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Customer-initiated recurring valets at any frequency"})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Support"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"US-hours email / chat ticketing"}
55),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"UK team, pick up the phone, know your business"})]}),d.jsxs("tr",{className:"bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Currency & tax"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"USD-first; VAT handling clunky"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"GBP and UK VAT, natively"})]})]})]})}),d.jsx("h2",{id:"uk-specific",children:"Why the UK-specific stuff actually matters"}),d.jsx("p",{children:"It's easy to dismiss things like ULEZ pricing or postcode-based territory rules as edge cases. They're not. They're the difference between a quote that's profitable and a quote that costs you money to fulfil."}),d.jsxs("p",{children:[d.jsx("strong",{children:"ULEZ and Congestion Charge zones."})," If you cover London, a ceramic coating in Zone 1 has £15 of congestion charge and £12.50 of ULEZ baked into it before you've touched the car. A booking system that can't add that automatically based on the customer's postcode either forces you to manually quote every London job, or quietly eats the charge yourself. Acuity has no concept of UK pricing zones. Automate does."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Multi-territory pricing."})," Most UK mobile detailers cover more than one area, and prices should reflect travel time and local market rates. A Full Valet in central Bristol is not the same job as one thirty miles out in Wells. Automate serves the right price to the right customer based on their postcode. Acuity gives every customer the same price list."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Pre-booking requirements."}),` A booking that turns up to find no outdoor tap, no power, or no parking is a wasted morning. Automate can ask conditional questions before confirming the booking, and block it if the answer's wrong. Acuity has a free-text intake form. The customer ticks "yes" without reading. You drive forty minutes for nothing.`]}),d.jsx(er,{headline:"Built in the UK, for UK mobile detailers.",body:"ULEZ pricing, postcode territories, vehicle-size tiers, and a technician's app. Fourteen-day free trial. Cancel anytime.",buttonText:"Start Free Trial â",buttonLink:"/contact"}),d.jsx("h2",{id:"technicians-app",children:"The technician's app: the difference on the day"}),d.jsx("p",{children:"Acuity gives you a calendar. That's it. On the day, you open it on your phone, read the address, and drive there."}),d.jsx("p",{children:"Automate gives your technicians (or you) a dedicated iOS and Android app built around the working day. The day's jobs, in route order. Customer notes from previous visits. Vehicle history. Pre-booking answers (power, water, parking). One tap to mark a job complete, which triggers the invoice, the review request, and the rebooking reminder automatically."}),d.jsx("p",{children:"If you're a solo operator, this is the difference between fumbling through screens in a customer's driveway and looking like a serious operation. If you grow and put a second van on the road, it's the difference between a team that runs itself and one that needs you to project-manage every job."}),d.jsx("h2",{id:"where-acuity-wins",children:"Where Acuity genuinely wins"}),d.jsx("p",{children:"To be fair: Acuity is great if you're a single-location service provider selling time. If you ran a barber shop, a yoga studio, or a one-room mobile beauty business, we'd tell you to try Acuity first."}),d.jsx("p",{children:"It's also genuinely cheap at the entry tier, the setup is fast, and the interface is friendly. None of that is in dispute. The question is whether those wins survive contact with the operational realities of UK mobile detailing. In our experience working with detailers across the UK, they don't."}),d.jsx("h2",{id:"cost-of-the-wrong-tool",children:"The real cost of using the wrong tool"}),d.jsx("p",{children:"Acuity's headline price looks low next to specialist tools. The full cost is different. Add the SMS add-on for UK numbers. Add a separate tool for review collection. Add a spreadsheet for postcode pricing because the softw
55are can't do it. Add the wasted trips to bookings the system should have blocked. Add the under-quoted London jobs where the congestion charge came out of your margin."}),d.jsx("p",{children:"The cheapest booking system is rarely the cheapest booking system."}),d.jsx("h2",{id:"who-should-switch",children:"Who should switch, and who shouldn't"}),d.jsx("p",{children:"You probably don't need to switch if: you're doing fewer than five jobs a week, all of your customers are repeat locals who know you personally, you work a single tight area with no zone-based charges, and you're happy with the volume you've got."}),d.jsx("p",{children:"You probably should switch if any of the following are true:"}),d.jsxs("ul",{children:[d.jsx("li",{children:"You cover London or any area with congestion or emissions charges."}),d.jsx("li",{children:"You charge different prices in different parts of your service area."}),d.jsx("li",{children:"You've turned up to a job that wasn't viable because of power, water, or parking."}),d.jsx("li",{children:"You're manually chasing reviews, rebookings, or deposit balances."}),d.jsx("li",{children:"You're considering putting a second van on the road in the next twelve months."})]}),d.jsx("p",{children:"If two or more of those are true, the right specialist tool will pay for itself inside a quarter."}),d.jsx("h2",{id:"how-to-try",children:"How to try Automate without committing"}),d.jsx("p",{children:"Our advice, whether you end up on Automate or not, is the same advice we give to anyone evaluating a booking system: don't watch a demo, run a real test. Set up your three most-booked services. Send the booking link to three real customers. Take three real payments. Trigger a no-show. Cancel a booking inside and outside your cancellation window. Watch what happens."}),d.jsx("p",{children:"You'll know within a week whether the tool is built for the way you actually work. Automate's free trial is fourteen days, no card required, and you can cancel any time before day fifteen."}),d.jsx("p",{children:"If you'd rather see it in action first, our team is in the UK and happy to talk. We'll tell you honestly if we're not the right fit."})]}),bL=()=>d.jsxs(d.Fragment,{children:[d.jsx("p",{children:`Fresha is one of the biggest booking platforms in the world, and it's showing up more and more in conversations we have with UK mobile detailers. Some are curious about the "free" model. Some have already tried it and want to know what a specialist alternative looks like. This is an honest breakdown of what Fresha actually costs, what it's built for, and where it works â or doesn't â for UK mobile valeting and detailing.`}),d.jsxs("p",{children:["At ",d.jsx(ut,{to:"/",className:"text-primary hover:underline",children:"Automate"}),", we work with UK mobile detailers every day. We're not neutral. But every number below is sourced from Fresha's own pricing and help-centre pages, verified against independent UK reviews. If you'd rather just check the receipts, the links are in-line."]}),d.jsx("h2",{id:"what-fresha-is",children:"What Fresha actually is"}),d.jsxs("p",{children:["Fresha (formerly Shedul) is a booking and business-management platform built for the ",d.jsx("strong",{children:"beauty and wellness industry"})," â salons, spas, barbers, nail bars, aestheticians. That's who the software, the marketplace, and the marketing are designed around. Its own pricing page and help centre describe the product in those terms, and the public marketplace at fresha.com lists services under categories like hair, nails, waxing, massage and eyebrows."]}),d.jsx("p",{children:"A handful of UK car-valeting and detailing businesses do use it (you can find a few listed on the marketplace), but they're the exception. There is no vehicle-size pricing, no ULEZ or postcode logic, no technician-on-the-road app, no concept of a service area or travel time. You're using a salon tool for a mobile trade."}),d.jsx("h2",{id:"pricing",children:"Fresha's pricing, in plain English"}),d.jsxs("p",{children:['Fresha was famously "free forever" until 2025, when it introduced mandatory subscriptions. The current UK pricing, verified on ',d.jsx("a",{href:"https://www.fresha.com/en-GB/pricing",target:"_blank",rel:"noopener",className:"text-primary hover:underline",children:"fresha.com/en-GB/pricing"}),", has three layers:"]}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"Subscription."})," £14.95/month for a solo operator (Independent plan), or £9.95/month per bookable team member (Team plan)."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Marketplace new-client commission."}),' A one-time 20% fee on the first appointment value of any client Fresha classifies as a "new marketplace client," with a £4 minimum. Documented in ',d.jsx("a",{href:"https://www.fresha.com/help-center/knowledge-base/billing-and-fees/188-marketplace-new-client-fees",target:"_blank",rel:"noopener",className:"text-primary hover:underline",children:"Fresha's own help centre"}),". Non-refundable. Applies even if you cancel the booking on the client's behalf."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Payment processing (Fresha Pay)."})," 1.19% + £0.20 in person (plus £0.07 per Tap-to-Pay authorisation); 1.40% + £0.25 online; 2.20% + £0.20 for manual card entry."]})]}
55),d.jsx("p",{children:'On top of that, SMS is charged at £0.05 per text after a small monthly allowance (20 per bookable team member), and features most operators would consider basic â advanced analytics ("Insights"), a loyalty programme, structured data export â are paid add-ons. Data Connector, for example, is £190/month per location if you want a real export of your own data.'}),d.jsx("h2",{id:"the-marketplace",children:"The marketplace, and where the commission gets uncomfortable"}),d.jsx("p",{children:"On paper, the 20% new-client commission is a fair trade: Fresha's marketplace has millions of monthly visitors, and a genuine new client acquired for a one-time 20% fee is usually profitable. Some Fresha users report strong returns from it."}),d.jsxs("p",{children:[`The complaint that shows up repeatedly on Capterra, Trustpilot and Reddit is different: the commission gets charged for clients the operator introduced themselves. Someone finds you on Google, ends up on your Fresha URL, and Fresha classifies them as "new marketplace." A regular scans your in-shop QR code (which routes through Fresha's domain) and gets flagged. The `,d.jsx("a",{href:"https://www.fresha.com/help-center/knowledge-base/billing-and-fees/188-marketplace-new-client-fees",target:"_blank",rel:"noopener",className:"text-primary hover:underline",children:"help-centre page"})," confirms the fee is non-refundable and only waived if the client cancels their own booking online."]}),d.jsx("p",{children:"For a salon this is manageable friction. For a mobile detailer whose average job value is £80â£250 rather than a £20 haircut, a 20% first-visit commission on a client you'd have got anyway is a real number."}),d.jsx("h2",{id:"side-by-side",children:"Fresha vs Automate, side by side"}),d.jsx("div",{className:"not-prose my-10 md:my-12 overflow-x-auto rounded-xl border border-border",children:d.jsxs("table",{className:"w-full text-sm md:text-[15px] min-w-[640px]",children:[d.jsx("thead",{children:d.jsxs("tr",{className:"bg-secondary/50 border-b border-border",children:[d.jsx("th",{className:"text-left p-4 font-semibold text-foreground"}),d.jsx("th",{className:"text-left p-4 font-semibold text-foreground",children:"Fresha"}),d.jsx("th",{className:"text-left p-4 font-semibold text-primary",children:"Automate"})]})}),d.jsxs("tbody",{children:[d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Built for"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Beauty & wellness (salons, spas, barbers, nails)"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"UK mobile valeting and detailing"})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Pricing model"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Subscription + 20% marketplace commission + card fees + SMS + add-ons"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Flat subscription. No commission on your bookings. No paywalled analytics or export."})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Vehicle-size pricing"}),d.jsxs("td",{className:"p-4 text-muted-foreground align-top",children:[d.jsx(_a,{className:"inline w-4 h-4 text-muted-foreground"})," Not a concept in the product"]}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Native: small / medium / large / XL / commercial"})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Postcode / territory pricing"}),d.jsxs("td",{className:"p-4 text-muted-foreground align-top",children:[d.jsx(_a,{className:"inline w-4 h-4 text-muted-foreground"})," Single price list per business"]}),d.jsxs("td",{className:"p-4 text-foreground/90 align-top",children:[d.jsx($r,{className:"inline w-4 h-4 text-primary"})," Different prices per service area, served by postcode"]})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"ULEZ / Congestion Charge zones"}),d.jsxs("td",{className:"p-4 text-muted-foreground align-top",children:[d.jsx(_a,{className:"inline w-4 h-4 text-muted-foreground"})," No UK-specific pricing zones"]}
55),d.jsxs("td",{className:"p-4 text-foreground/90 align-top",children:[d.jsx($r,{className:"inline w-4 h-4 text-primary"})," Build ULEZ / CCZ uplifts into the right postcodes"]})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Pre-booking checks (power / water / parking)"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Basic consultation forms, no conditional blocking"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"Conditional questions that can block a bad booking"})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Technician's mobile app"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Business-owner calendar app, not built around a mobile day"}),d.jsxs("td",{className:"p-4 text-foreground/90 align-top",children:[d.jsx($r,{className:"inline w-4 h-4 text-primary"})," Native iOS & Android app for the day's jobs, routes and notes"]})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Marketplace commission"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"20% on first appointment (£4 min), non-refundable"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"None. Your bookings are your bookings."})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"SMS reminders"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"20 free per team member, then £0.05 each"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"UK SMS included in plan, UK sender IDs"})]}),d.jsxs("tr",{className:"border-b border-border bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Data export / API"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Data Connector add-on at £190/mo per location"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"CSV export included"})]}),d.jsxs("tr",{className:"border-b border-border",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Support"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"Email/chat (phone on Team plan)"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"UK team, pick up the phone, know your trade"})]}),d.jsxs("tr",{className:"bg-secondary/20",children:[d.jsx("td",{className:"p-4 font-semibold text-foreground align-top",children:"Currency & tax"}),d.jsx("td",{className:"p-4 text-muted-foreground align-top",children:"GBP supported; primary product context is beauty"}),d.jsx("td",{className:"p-4 text-foreground/90 align-top",children:"GBP and UK VAT, natively"})]})]})]})}),d.jsx("h2",{id:"what-you-actually-pay",children:"What a UK detailer actually pays on Fresha"}),d.jsxs("p",{children:["Take a realistic solo mobile valeter: 40 jobs a month, average job value £75, 70% paid by card, 15% of monthly bookings from new customers. Using Fresha's ",d.jsx("a",{href:"https://www.fresha.com/en-GB/pricing",target:"_blank",rel:"noopener",className:"text-primary hover:underline",children:"published UK rates"}),":"]}),d.jsxs("ul",{children:[d.jsxs("li",{children:["Subscription (Independent): £14.95/mo â ",d.jsx("strong",{children:"£179/yr"})]}),d.jsxs("li",{children:["Card processing (28 transactions à ~£1.09 each on a £75 job at 1.19% + 20p + 7p): ~£30/mo â ",d.jsx("strong",{children:"£366/yr"})]}),d.jsxs("li",{children:["Marketplace commission on new clients (6/mo à 20% of £75 = £15): £90/mo â ",d.jsx("strong",{children:"£1,080/yr"})]}),d.jsxs("li",{children:["SMS overages (say 40 reminders/mo, 20 free, 20 billable at 5p): £1/mo â ",d.jsx("strong",{children:"£12/yr"})]})]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Realistic annual cost: ~£1,600"}),", of which two-thirds is marketplace commission. Scale to a two-van operation doing 120 jobs/month and it climbs into the £4,000â£6,000/yr range before add-ons. That's before the operational cost of not having territory pricing, vehicle tiers, or a technician's app â which is much harder to put a number on but tends to be the bigger issue in practice."]}),d.jsx(er,{headline:"A booking system built for UK mobile detailers, not salons.",body:"Flat pricing, no commission on your bookings, vehicle-size tiers, postcode territories, and a technician's app. Fourteen-day free trial. Cancel anytime.",buttonText:"Start Free Trial â",buttonLink:"/contact"}),d.jsx("h2",{id:"where-fresha-wins",children:"Where Fresha genuinely wins"}),d.jsx("p",{children:"Two things, honestly."}),d.jsxs("p",{children:[d.jsx("strong",{children:"The marketplace."})," If you're in a category the marketplace actually promotes â hair, nails, aesthetics â the discovery layer can be genuinely valuable, and the 20% first-visit fee can pay for itself many times over. For mobile detailing, that discovery flywheel is much weaker; customers don't search Fresha for a car valet the way they search it for a barber."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Consumer-grade polish."})," The client-facing booking experience is clean, modern and well-known. There's a real benefit to a customer recognising the brand at checkout. That benef
55it is bigger in beauty than it is in automotive."]}),d.jsx("h2",{id:"where-fresha-hurts",children:"Where Fresha hurts a mobile detailer"}),d.jsx("p",{children:"Every operational thing that makes UK mobile detailing different from a salon is invisible to Fresha:"}),d.jsxs("ul",{children:[d.jsx("li",{children:"No vehicle-size pricing tiers. You either build a duplicated service menu or you undercharge the SUVs."}),d.jsx("li",{children:"No postcode-based pricing. A £120 valet in central Bristol is the same booking as one 30 miles out in Wells."}),d.jsx("li",{children:"No ULEZ or Congestion Charge logic. Every London job is a manual quote or a margin leak."}),d.jsx("li",{children:"No pre-booking gate for power, water or parking. Wasted trips are on you."}),d.jsx("li",{children:"No technician's mobile app. You're managing your working day out of a calendar built for a salon front desk."}),d.jsx("li",{children:"Structured data export is a £190/month add-on. Your customer list is not fully yours in any practical sense."})]}),d.jsx("h2",{id:"who-should-use-what",children:"Who should use what"}),d.jsxs("p",{children:["Use ",d.jsx("strong",{children:"Fresha"})," if: you're a salon, spa or barber; the marketplace is the main reason you'd sign up; you're comfortable with the commission model and confident your customers will actually come from Fresha discovery rather than your own marketing."]}),d.jsxs("p",{children:["Use ",d.jsx("strong",{children:"Automate"})," if: you're a UK mobile valeter or detailer; you charge different prices for different vehicles or areas; you cover London or any zone with congestion or emissions charges; you'd rather pay a flat subscription than a percentage of every new booking; you want a technician's app built around a mobile working day."]}),d.jsx("h2",{id:"how-to-try",children:"How to test either without committing"}),d.jsx("p",{children:"Whichever way you're leaning, don't rely on a demo. Set up your three most-booked services. Send the booking link to three real customers. Take three real payments. Trigger a no-show. Cancel a booking inside and outside your cancellation window. You'll know in a week whether the tool fits the way you actually work."}),d.jsx("p",{children:"Automate's free trial is fourteen days, no card required. Our team is in the UK and will tell you honestly if we're not the right fit."})]}),vL=()=>d.jsxs(d.Fragment,{children:[d.jsx("p",{children:"Most people in the UK detailing trade already recommend software. You tell someone which booking system you use, they sign up, and nothing comes back to you. An affiliate programme just formalises that â you get paid for the introductions you were already making."}),d.jsxs("p",{children:["This is a plain explanation of how affiliate programmes work in the car detailing space, what the numbers actually look like, and how the ",d.jsx(ut,{to:"/affiliates",className:"text-primary hover:underline",children:"Automate affiliate programme"})," is structured. We run it, so treat the last section as what it is."]}),d.jsx("h2",{id:"what-it-is",children:"What a detailing affiliate programme actually is"}),d.jsx("p",{children:"You get a tracked link or a discount code. When someone signs up through it, you earn a share of what they pay. There are two broad models:"}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"One-off bounty."})," A fixed payment â say £50 â the first time a referral converts. Simple, but it stops immediately."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Recurring revenue share."})," A percentage of the subscription for as long as that account keeps paying. Slower to start, much larger over a year or two."]})]}),d.jsx("p",{children:"Physical product affiliate schemes (chemicals, machine polishers, PPE) are usually one-off and typically pay 5â10% of an order. Software schemes are usually recurring, because the underlying revenue is recurring. That difference matters more than the headline percentage."}),d.jsx("h2",{id:"who-it-suits",children:"Who this actually works for"}),d.jsx("p",{children:"Recurring software commission suits people with repeated contact with detailing business owners, not people with generic car-related traffic:"}),d.jsxs("ul",{children:[d.jsx("li",{children:"Product suppliers and distributors selling to detailers"}),d.jsx("li",{children:"Training providers and academies running start-up courses"}),d.jsx("li",{children:"Detailing YouTubers and content creators with a trade audience"}),d.jsx("li",{children:"Franchise networks and multi-van operators onboarding new units"}),d.jsx("li",{children:"Accountants, bookkeepers and web designers serving the trade"}),d.jsx("li",{children:"Established detailers who mentor newer operators"})]}),d.jsx("p",{children:"What it doesn't suit: general coupon sites, or anyone whose audience is car owners rather than car businesses. A booking system is a B2B product. Consumer traffic converts at close to nothing."}),d.jsx("h2",{id:"the-maths",children:"The maths, honestly"}),d.jsx("p",{children:"Take a 20% recurring commission on a £49/month subscription. That's £9.80 per account per month â £117.60 a year, per referral, for as long as they stay."}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"5 accounts:"})," £49/month â £588/year"]}),d.jsxs("li",{children:[d.jsx("strong",{children:"20 accounts:"})," £196/month â £2,352/year"]}),d.jsxs("li",{children:[d.jsx("strong",{children:"50 accounts:"})," £490/month â £5,880/year"]})]}),d.jsx("p",{children:"Compare that to a £50 one-off bounty: five referrals earns you £250 and then nothing. Recurring overtakes it inside six months and keeps compounding. The catch is obvious â the first three months feel like nothing is happening, because they're supposed to."}),d.jsx("p",{children:"The number that decides whether recurring is worth it is retention. A programme paying 30% on a product people churn out of in four months is worth less than 20% on one they keep for three years. Ask about average account lifetime before you judge a percentage."}),d.jsx(er,{headline:"Earn 20% for a full year on every detailer you introduce.",body:"Paid monthly for a referred business's first 12 months. No cap on referrals, no exclusivity, and a real person reading every application.",buttonText:"Apply to the programme â",buttonLink:"/affiliates"}),d.jsx("h2",{id:"what-to-check",children:"Six things to check before you join any programme"}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"Recurring or one-off?"})," And if recurring, for how long â 12 months, or the lifetime of the account?"]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Cookie or code attribution?"})," A 30-day cookie loses the referral if someone thinks about it for six weeks. A discount code doesn't expire."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Hold period and payout minimum."})," Most programmes hold commission for 30 days against refunds and pay out above a threshold. Both are normal; know them upfront."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Free trials."})," Does commission start at sign-up or at first payment? It's almost always first payment."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Brand bidding rules."})," Nearly every programme bans paid search on the brand name. Breaking it usually voids commission."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Who owns the customer."})," If your referral turns into a support problem, does it come back to you? It shouldn't."]})]}),d.jsx("h2",{id:"promoting-well",children:"How the good affiliates actually promote it"}),d.jsx("p",{children:"The ones who earn well don't post a link and wait. Three patterns come up repeatedly:"}),d.jsxs("p",{children:[d.jsx("strong",{children:"Solve the problem the softw
55are solves."}),` A post or video about no-shows, deposits or double-bookings converts far better than "here's a tool I like", because the reader already feels the pain.`]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Show your own setup."})," A screen recording of your booking page, your pricing tiers, your reminder messages. Real screens from a real business beat any feature list."]}),d.jsxs("p",{children:[d.jsx("strong",{children:"Introduce at the right moment."})," When someone finishes a training course, buys their first van kit, or takes on a second technician â that's when they need a booking system, not in a random newsletter slot."]}),d.jsx("h2",{id:"automate",children:"How the Automate programme is structured"}),d.jsx("p",{children:"For transparency, here's ours in full:"}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"20% commission for the first 12 months"})," â £9.80 per account per month on a £49 plan, paid on everything the business pays in its first year, not a one-off bounty."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Paid monthly"})," by bank transfer, with a 30-day hold against refunds and cancellations."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"£50 minimum payout."})," Anything below it rolls into the next month."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"No cap, no exclusivity."})," Refer one business or fifty."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Three rules:"})," no paid search on our brand terms, no manufactured sign-ups, and describe the product accurately. Break them and commission is void."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Applications are read by a person"})," â we come back within three working days either way."]})]}),d.jsx("p",{children:"We deliberately don't run a bounty scheme. A one-off payment rewards volume; paying a share of what a business actually spends over its first year rewards sending us operators who stick around, which is the only kind of referral worth having."}),d.jsx("h2",{id:"next",children:"If you're considering it"}),d.jsx("p",{children:"Work out roughly how many detailing business owners you speak to in a year, and how many of them are actively looking for a booking system. If the answer is more than a handful, a recurring programme is worth the ten minutes it takes to apply. If it's two people, it isn't â and we'd rather say so now."}),d.jsxs("p",{children:["Full details, an earnings calculator and the application form are on the ",d.jsx(ut,{to:"/affiliates",className:"text-primary hover:underline",children:"affiliate programme page"}),"."]})]}),wL="/__l5e/assets-v1/d4155218-de2b-41c3-8409-ab54d8d0b8c9/whats-new-mobile-agenda.png",xL={url:wL},kL="/__l5e/assets-v1/9ae16172-a927-43d2-ac4f-47df3dc4d4dc/whats-new-dashboard.png",_L={url:kL},SL="/__l5e/assets-v1/9504911d-d0db-44b1-ac2e-a19b117a40f3/whats-new-partners.png",jL={url:SL},TL="/__l5e/assets-v1/f42e3053-49a9-4645-90c4-3371a6d0894b/whats-new-calendar-week.png",AL={url:TL},EL="/__l5e/assets-v1/8fa590e5-1e1b-4112-a735-e283b7f80e2c/whats-new-calendar-day.png",RL={url:EL},CL="/__l5e/assets-v1/66efc1ea-bb92-4a18-9932-1df83f83ae1e/whats-new-booking-detail.png",OL={url:CL},NL="/__l5e/assets-v1/c5c60312-a5f6-4eee-bb19-4ebff7aff74c/whats-new-package-editor.png",ML={url:NL},DL="/__l5e/assets-v1/673faee4-1d7f-470c-8a5c-ff6a21d9b62b/whats-new-package-upgrades.png",PL={url:DL},LL="/__l5e/assets-v1/3143cd2a-e028-484d-8fde-2714776ccae7/whats-new-territory-packages.png",UL={url:LL},IL="/__l5e/assets-v1/2300a241-bc1e-4ba7-9a77-2ad73f4c8595/whats-new-brand-colour.png",BL={url:IL},zL=["Built for the phone, on every screen","Rebuilt dashboard with bookings, earnings and upcoming value","Booking link, one tap to copy or share","Partner offers panel","Day, week and month calendar views","Multi-day admin and time-off blocks","Redesigned booking detail page","Rebuilt package editor with template packages","Upgrades within a package","Territory and technician selection inside the package editor","Custom package categories","Packages attached from the territory editor","Brand-colour accents throughout"],qL=[{title:"Quote-based bookings.",body:"For jobs that need pricing before they can be committed to."},{title:"Better discounting.",body:"More control over offers, codes and pricing rules."},{title:"Marketing tools.",body:"Improvements to the way you manage marketing emails and customer segments."}],$L=()=>d.jsxs(d.Fragment,{children:[d.jsx("blockquote",{children:d.jsx("p",{children:"This update is rolling out to all Automate accounts from 3 September 2026. Everything on this page is included at no extra cost, and there's nothing to install or move across."})}),d.jsx("p",{children:"This is the biggest update we've shipped since Automate launched. The dashboard, the calendar, the package editor and the whole phone experience have been rebuilt â and so has the foundation underneath them. That foundation is what makes the things at the end of this page possible."}),d.jsxs(vl,{label:"Billing",children:[d.jsx("h3",{className:"text-lg font-bold text-foreground mb-3",children:"Your billing hasn't changed"}),d.jsx("p",{className:"mb-3 last:mb-0",children:"This update adds subscription management to Automate. Accounts created before it are on a legacy billing arrangement: they keep their current price and everything they already have, and their card is charged exactly as it has been."}),d.jsx("p",{className:"mb-3 last:mb-0",children:` 56`}),d.jsx("p",{className:"mb-3 last:mb-0",children:` 57`})]}),d.jsx("h2",{id:"its-built-for-the-phone",className:"text-gradient-brand",children:"It's built for the phone"}),d.jsx("p",{children:"Most of you use Automate between jobs, in the van, one-handed. Every screen has been rebuilt for that, rather than squeezing a desktop layout onto a small display."}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"Readable at a glance."})," Type sizes and tap targets sized for one-handed use, not a desktop layout squeezed down."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"The diary as a list."})," A stacked agenda built for a narrow screen, with jobs in the order they happen rather than a compressed grid."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Everything two taps away."})," Bookings, payments and customer details are reachable from wherever you are in the app."]})]}),d.jsx("figure",{className:"not-prose my-8 md:my-10",children:d.jsx("img",{src:xL.url,alt:"The Automate c
57alendar on a phone, with the month view in front and a booking open in the day view behind it",width:1080,height:1080,loading:"lazy",className:"mx-auto w-full max-w-md rounded-xl"})}),d.jsx("h2",{id:"your-numbers-first-thing",className:"text-gradient-brand",children:"Your numbers, first thing"}),d.jsx("p",{children:"The dashboard is built around the three figures you check every morning, and the one thing you send out a dozen times a week."}),d.jsxs("ul",{children:[d.jsx("li",{children:"Bookings, earnings and upcoming value. How many jobs, what you've taken, and what's still to come in â on one screen, without digging."}),d.jsx("li",{children:"Your booking link, one tap away. Copy or share it straight from the dashboard, into a text, a bio or a comment."}),d.jsx("li",{children:"Partner offers. Deals on kit and supplies, in a panel on your dashboard."})]}),d.jsx("figure",{className:"not-prose my-8 md:my-10",children:d.jsx("img",{src:_L.url,alt:"The rebuilt Automate dashboard showing your booking link, bookings, earnings and upcoming value",width:1080,height:700,loading:"lazy",className:"w-full rounded-xl"})}),d.jsx("h2",{id:"supplier-deals-inside-the-app",className:"text-gradient-brand",children:"Supplier deals, inside the app"}),d.jsx("p",{children:"There's a panel on your dashboard carrying exclusive offers and discounts from the suppliers, tool makers and services we've partnered with. The line-up isn't fixed â new partners come on board over time, so it's worth checking back in."}),d.jsx("p",{children:"It's there because you're an Automate customer, at no extra cost."}),d.jsx("p",{children:"Buy from a supplier you rate? Tell us who, and we'll approach them."}),d.jsx("figure",{className:"not-prose my-8 md:my-10",children:d.jsx("img",{src:jL.url,alt:"The partner offers panel on a phone, showing supplier deals, training courses and the washdoctors marketplace inside the app",width:1080,height:1080,loading:"lazy",className:"mx-auto w-full max-w-md rounded-xl"})}),d.jsx(er,{headline:"Not on Automate yet?",body:"The booking system built for UK mobile valeters and detailers. Online bookings, card payments, automated reminders and a customer CRM. Fourteen-day free trial, cancel anytime.",buttonText:"Start Free Trial",buttonLink:"/contact"}),d.jsx("h2",{id:"a-diary-that-matches-how-you-work",className:"text-gradient-brand",children:"A diary that matches how you work"}),d.jsx("p",{children:"The calendar has three views, each doing a different job, rather than one view trying to cover all three."}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"Day view."})," Bookings stack, so a fully booked day stays readable at a glance."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Week view."})," Jobs and time off side by side. Drag across several days to block out admin, holiday, or a van off the road."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Month view."})," The wider picture, for planning ahead and spotting the quiet weeks."]})]}),d.jsx("figure",{className:"not-prose my-8 md:my-10",children:d.jsx("img",{src:AL.url,alt:"The calendar week view with jobs and time off side by side",width:1080,height:700,loading:"lazy",className:"w-full rounded-xl"})}),d.jsx("figure",{className:"not-prose my-8 md:my-10",children:d.jsx("img",{src:RL.url,alt:"The calendar day view with bookings stacked",width:1080,height:700,loading:"lazy",className:"w-full rounded-xl"})}),d.jsx("h2",{id:"a-job-on-one-page",className:"text-gradient-brand",children:"A job on one page"}),d.jsx("p",{children:"The booking page puts the customer, the vehicle, the service, the money and the history together, instead of spreading them across tabs you have to remember the order of."}),d.jsx("figure",{className:"not-prose my-8 md:my-10",children:d.jsx("img",{src:OL.url,alt:"The redesigned booking detail page, with the customer, vehicle, service, money and history on one page",width:1080,height:700,loading:"lazy",className:"w-full rounded-xl"})}),d.jsx("h2",{id:"packages-built-the-way-you-sell-them",className:"text-gradient-brand",children:"Packages built the way you sell them"}),d.jsx("p",{children:"The package editor is rebuilt from scratch. It's the part of Automate where the difference is largest, and the part most worth a quiet half hour with a cup of tea."}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"Start from a template."})," Eleven ready-made packages with pricing tiers and vehicle-size bands, modelled on 14,000+ real bookings across the platform. Sensible defaults you can then change."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Upgrades inside a package."})," When a customer moves up mid-booking, the price difference is calculated from the same package, so the upsell is a two-tap job."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Territories and technicians in one place."})," No more saving a package, then going elsewhere to attach it."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Your own categories."})," Group packages the way your business is organised, rather than the way a system expects."]})]}),d.jsx("figure",{className:"not-prose my-8 md:my-10",children:d.jsx("img",{src:ML.url,alt:"The rebuilt package editor in Automate, with the Express Wash package open showing booking type, customer-facing title, internal name and summary",width:1080,height:700,loading:"lazy",className:"w-full rounded-xl"})}),d.jsx("figure",{className:"not-prose my-8 md:my-10",children:d.jsx("img",{src:PL.url,alt:"Building a package on a phone, starting from a template and editing the name, summary and category",width:1080,height:1080,loading:"lazy",className:"mx-auto w-full max-w-md rounded-xl"})}),d.jsx("h2",{id:"areas-and-their-packages-in-one-go",className:"text-gradient-brand",children:"Areas and their packages in one go"}),d.jsx("p",{children:"Packages can be attached to a territory directly from the territory editor. Adding a new postcode area no longer means a
57second trip through the package screens."}),d.jsx("figure",{className:"not-prose my-8 md:my-10",children:d.jsx("img",{src:UL.url,alt:"The territory editor with a service area on the map, and the packages and technicians that serve it listed alongside",width:1080,height:700,loading:"lazy",className:"w-full rounded-xl"})}),d.jsx("h2",{id:"friendlier-throughout-in-your-colour",className:"text-gradient-brand",children:"Friendlier throughout, in your colour"}),d.jsx("p",{children:"Every screen has been cleaned up, not just the new ones: shorter forms, labels that say what they mean, and less clutter on the screens you spend the most time in â the diary, the booking page, the dashboard."}),d.jsx("p",{children:"Accents across the app pick up the brand colour set in your settings, so Automate looks like your business rather than ours, from onboarding onwards."}),d.jsx("figure",{className:"not-prose my-8 md:my-10",children:d.jsx("img",{src:BL.url,alt:"Setting up Automate on a phone, choosing your brand colour and starting service area as part of onboarding",width:1080,height:1080,loading:"lazy",className:"mx-auto w-full max-w-md rounded-xl"})}),d.jsxs("div",{className:"not-prose my-10 md:my-12 rounded-2xl border border-border bg-gradient-to-br from-card to-card/60 p-7 md:p-10 shadow-lg",children:[d.jsx("p",{className:"text-xs font-bold text-primary tracking-wider uppercase mb-2",children:"In this update"}),d.jsx("h3",{className:"text-xl md:text-2xl font-bold text-foreground mb-6 leading-snug",children:"Everything that changed"}),d.jsx("ul",{className:"grid md:grid-cols-2 gap-x-8 gap-y-3.5",children:zL.map(t=>d.jsxs("li",{className:"flex gap-3 items-start",children:[d.jsx("span",{className:"shrink-0 w-5 h-5 mt-0.5 rounded-md bg-primary/15 flex items-center justify-center",children:d.jsx($r,{className:"w-3.5 h-3.5 text-primary",strokeWidth:3,"aria-hidden":"true"})}),d.jsx("span",{className:"text-[15px] md:text-[16px] text-foreground/90 leading-snug",children:t})]},t))})]}),d.jsx("h2",{id:"what-this-unlocks",className:"text-gradient-brand",children:"What this unlocks"}),d.jsx("p",{children:"This update rebuilds the foundations of Automate, which clears the way for the things customers have asked for most."}),d.jsx("div",{className:"not-prose my-10 space-y-4",children:qL.map((t,e)=>d.jsxs("div",{className:"flex gap-5 rounded-xl border border-border bg-card p-5 md:p-6",children:[d.jsx("div",{className:"shrink-0 w-10 h-10 rounded-full bg-primary/15 text-primary font-bold flex items-center justify-center text-base",children:e+1}),d.jsxs("div",{className:"flex-1",children:[d.jsx("p",{className:"font-semibold text-foreground mb-1.5 text-[16px] md:text-[17px]",children:t.title}),d.jsx("p",{className:"text-[15px] md:text-[16px] text-muted-foreground leading-relaxed",children:t.body})]})]},t.title))}),d.jsx("p",{children:"Those three are the requests we hear most often. This release doesn't ship them yet â it makes them possible to build properly, instead of bolting them onto the old foundations. That's the point of the biggest update so far."})]}),HL="/__l5e/assets-v1/2d8220f8-c260-4095-bd35-fe7429ff84d6/store-landing.png",VL={url:HL},FL="/__l5e/assets-v1/e179d4ba-443a-4d8d-a1b3-b7d0eb1ea13f/automate-store-product-page.png",GL={url:FL},KL=()=>d.jsxs(d.Fragment,{children:[d.jsx("blockquote",{children:d.jsx("p",{children:"The Automate Store is live in every Automate account, including free trials. It's included at no extra cost, and there's nothing to switch on."})}),d.jsx("p",{children:"Every operator we speak to can tell us their monthly revenue. Far fewer can tell us what they spend on consumables."}),d.jsx("p",{children:"It's the quietest cost in the business. Snow foam, wheel cleaner, drying towels, pads, coatings, a replacement lance because the last one got run over. None of it feels like a big spend on the day. Add twelve months of it up and it's one of the largest lines on the P&L after fuel and labour. Unlike fuel, it's a line you can actually do something about."}),d.jsx("p",{children:"So we've done something about it."}),d.jsx("h2",{id:"whats-new",className:"text-gradient-brand",children:"What's new"}),d.jsx("p",{children:"The Automate Store is now live in your admin dashboard. It's a place to buy the products and equipment you already use, at prices negotiated specifically for Automate users: up to 25% off retail."}),d.jsx("p",{children:"Five categories at launch:"}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"Supplies:"})," microfibre, pads, applicators, brushes, the consumables that disappear fastest"]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Chemicals:"})," shampoos, snow foams, wheel cleaners, tar removers, interior products"]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Ceramic coatings:"})," coatings, sealants and prep products, including professional-grade lines"]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Equipment:"})," machines, lances, extractors, the hardware that costs real money"]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Merch:"})," branded workwear and kit"]})]}),d.jsxs("p",{children:["Log in, open ",d.jsx("strong",{children:"Store"})," from the dashboard, and it's there."]}),d.jsxs("figure",{className:"not-prose my-8 md:my-10",children:[d.jsx("img",{src:VL.url,alt:"The Automate Store products page inside the admin dashboard, showing Mile Deep products with exclusive member pricing",className:"w-full rounded-xl border border-border shadow-sm",loading:"lazy"}),d.jsx("figcaption",{className:"mt-3 text-center text-xs text-muted-foreground",children:"The Automate Store inside the admin dashboard: exclusive member pricing on products you already buy."})]}),d.jsx("h2",{id:"why-the-pricing-is-different",className:"text-gradient-brand",children:"Why the pricing is different"}),d.jsx("p",{children:"This isn't a page of public discount codes scraped off the internet. Anyone can find those, and they're worth roughly what you pay for them."}),d.jsx("p",{children:"These are rates agreed with suppliers on behalf of Automate users as a group. That distinction matters commercially. One operator with one van walking into a supplier has very little leverage. Several hundred UK valeting and detailing businesses buying through one channel have quite a lot. The discounts exist because of the collective, which is why they're only available inside the platform."}),d.jsxs("p",{children:["The first supplier on board is ",d.jsx("strong",{children:"Mile Deep"}),", whose chemicals and coatings a lot of you are already buying at full retail. More are being onboarded on a rolling basis, so the range will keep growing. If there's a brand you buy from every month that isn't in there yet, tell us: supplier requests from operators are how we're deciding who to approach next."]}),d.jsxs("figure",{className:"not-prose my-8 md:my-10",children:[d.jsx("img",{src:GL.url,alt:"Automate Store product pages on mobile showing Mile Deep products with exclusive member pricing and size options",className:"w-full rounded-xl border border-border shadow-sm",loading:"lazy"}),d.jsx("figcaption",{className:"mt-3 text-center text-xs text-muted-foreground",children:"Mile Deep products in the Automate Store: discounted member pricing and variant selection on mobile."})]}),d.jsx("h2",{id:"what-its-worth",className:"text-gradient-brand",children:"What this is actually worth"}),d.jsx("p",{children:"Run your own numbers rather than ours. Take what you spent on products and equipment over the last three months, divide by three, and apply the discount rates you'll see in the store."}),d.jsxs(vl,{label:"The maths",children:[d.jsx("h3",{className:"text-lg font-bold text-foreground mb-3",children:"£400 a month on products, 25% off, is £100 back"}),d.jsx("p",{className:"mb-3 last:mb-0",children:"That's twice the £49/month subscription, out of a budget you were already spending. For a single-van operator spending £200 a month, the saving still covers the subscription with room to spare. That was the design goal: a feature that pays for itself."})]}),d.jsx("p",{children:"There's a second benefit that's less obvious. Buying through the dashboard means your product spend sits in the same system as your bookings and your revenue, rather than scattered across six supplier accounts and a shoebox of receipts. Knowing what you spend per job is the first step to pricing properly."}),d.jsx(er,{headline:"The store is included with every Automate account.",body:"Bookings, deposits, reminders, the technician app â and trade pricing on the products you already buy. Fourteen-day free trial, store access from day one.",buttonText:"Start Free Trial",buttonLink:"https://admin.getautomate.
57io/signup/about"}),d.jsx("h2",{id:"how-to-get-to-it",className:"text-gradient-brand",children:"How to get to it"}),d.jsxs("ol",{children:[d.jsx("li",{children:"Log in to your Automate admin dashboard"}),d.jsxs("li",{children:["Open ",d.jsx("strong",{children:"Store"})," from the main navigation"]}),d.jsx("li",{children:"Browse by category, or search for a product directly"}),d.jsx("li",{children:"Checkout, and it ships to you"})]}),d.jsx("p",{children:"No separate account to create, no code to remember at a third-party checkout, and no minimum order to unlock the rate."}),d.jsx("h2",{id:"part-of-a-bigger-release",className:"text-gradient-brand",children:"Part of a bigger release"}),d.jsxs("p",{children:["The store lands on the back of"," ",d.jsx("a",{href:"/blog/automate-major-update",children:"the biggest Automate update yet"}),": the rebuilt admin dashboard, the new package editor, and the redesigned calendar. The dashboard rebuild is what made the store possible. Once you've got a proper command centre rather than a booking tool with bits bolted on, you can start adding things that have nothing to do with bookings and everything to do with running the business profitably."]}),d.jsx("p",{children:"That's the direction. Automate started as the answer to managing your diary from WhatsApp at 10pm. It's turning into the system the whole business runs through: the jobs, the money, the customers, and now the kit."}),d.jsx("h2",{id:"whats-next",className:"text-gradient-brand",children:"What's next"}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"More suppliers."})," The roster at launch is the starting point, not the finished article."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Reorder from history."})," One tap to repeat your usual monthly order."]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Spend visibility."})," Product spend reported alongside revenue, so you can see cost per job properly."]})]}),d.jsx("h2",{id:"get-access",className:"text-gradient-brand",children:"Get access"}),d.jsx("p",{children:"If you're already on Automate, the store is in your dashboard now. Nothing to switch on."}),d.jsx("p",{children:"If you're not, every plan includes a 14-day free trial with no setup fee and no contract. You'll get the booking page, the technician app, the CRM, the automated reminders, and the store, from day one of the trial."})]}),YL={"reduce-no-shows-mobile-valeting":g4,"start-mobile-valeting-business":y4,"pricing-mobile-valeting-services":lL,"valeting-booking-page-design":cL,"detailing-crm-uk-guide":fL,"booking-system-for-mobile-detailers":gL,"automate-vs-acuity-scheduling-for-detailers":yL,"automate-vs-fresha-for-detailers":bL,"car-detailing-affiliate-program-uk":vL,"automate-major-update":$L,"automate-store-supplier-discounts":KL},WL="/assets/blog-start-valeting-business-DuKC-1sw.jpg",ZL="/assets/blog-pricing-valeting-ByvOCDEu.jpg",JL="/assets/blog-booking-page-design-C_coQslk.jpg",QL="/assets/blog-booking-system-detailers-DCRIYdjx.jpg",XL="/assets/blog-detailing-crm-1t1yicln.jpg",eU="/assets/blog-automate-vs-acuity-BQ3xZl8b.jpg",tU="/assets/blog-automate-vs-fresha-BLTrsxW-.jpg",nU="/assets/blog-detailing-affiliate-program-BbOxlX4O.jpg",rU="/__l5e/assets-v1/e8263d14-d654-4417-ac66-6cf3ebaaa0e0/blog-whats-new-hero.png",sU={url:rU},aU="/__l5e/assets-v1/be951dbd-cbb7-48ee-95f3-e7daf3f3d969/blog-whats-new-og.jpg",iU={url:aU},oU="/__l5e/assets-v1/c388db6c-8898-4ce2-9e5d-2d7438ef9996/automate-store-devices.png",lU={url:oU},Wn={name:"Dan Houston",role:"Managing Director",bio:"Working with Valeting and Detailing businesses across the UK to help them grow and achieve their goals.",avatarInitial:"D"},wl=[{slug:"automate-store-supplier-discounts",title:"The Automate Store: exclusive supplier discounts",metaTitle:"Automate Store â Exclusive Supplier Discounts for Valeters | Automate",subtitle:"Trade pricing on supplies, chemicals, ceramic coatings, equipment and merch â up to 25% off retail, built into your dashboard.",excerpt:"Automate users now get exclusive trade discounts of up to 25% off retail on supplies, chemicals, ceramic coatings, equipment and merch â direct from the admin dashboard.",category:"Product Updates",tags:["Product Updates","Business Tips"],author:Wn,publishedAt:"2026-09-09",readTimeMinutes:6,featuredImageUrl:lU.url,featuredImageAlt:"The Automate Store shown on a laptop and phone, with product categories for supplies, chemicals, ceramic coatings and equipment"},{slug:"automate-major-update",title:"The biggest Automate update yet",metaTitle:"The Biggest Automate Update Yet | Automate",subt
57itle:"A rebuilt dashboard, a redesigned calendar, a new package editor, and a product built for the phone you actually run your business from.",excerpt:"A rebuilt dashboard, a redesigned calendar, a new package editor, and a product built for the phone. Everything that changed in the biggest update to Automate so far.",category:"Product Updates",tags:["Product Updates"],author:Wn,publishedAt:"2026-09-03",readTimeMinutes:6,featuredImageUrl:sU.url,ogImageUrl:iU.url,transparentHero:!0,featuredImageAlt:"The Automate dashboard on a laptop with the technician app calendar open on two phones beside it"},{slug:"car-detailing-affiliate-program-uk",title:"Car Detailing Affiliate Program UK: How Payouts Work",subtitle:"One-off bounties versus recurring revenue share, what the numbers really look like, and how to judge a programme before you join it.",excerpt:"How car detailing affiliate programmes work in the UK: recurring vs one-off commission, real payout maths on 20% commission for a subscriber's first 12 months, and six things to check before joining.",category:"Guides",tags:["Business Tips","Growth"],author:Wn,publishedAt:"2026-08-26",readTimeMinutes:7,featuredImageUrl:nU,featuredImageAlt:"Laptop on a workshop bench showing a rising earnings chart beside a stack of £20 notes, microfibre towels and shelves of car care bottles"},{slug:"automate-vs-fresha-for-detailers",title:"Automate vs Fresha for Mobile Detailers",subtitle:"Fresha is a beauty and wellness platform. Here's what that actually means for UK mobile detailers â and what it costs.",excerpt:"Fresha vs Automate for UK mobile detailers. Subscription, 20% marketplace commission, card fees, and why a salon tool struggles with vehicle tiers, postcodes and ULEZ.",category:"Guides",tags:["Business Tips","Growth","Mobile Valeting"],author:Wn,publishedAt:"2026-07-16",readTimeMinutes:10,featuredImageUrl:tU,featuredImageAlt:"Two phones on slate, one showing a pastel salon appointments app and one a dark detailing booking dashboard, beside microfibre towels and ceramic sealant"},{slug:"automate-vs-acuity-scheduling-for-detailers",title:"Automate vs Acuity Scheduling for Detailers",subtitle:"Why a generic appointment tool isn't built for UK mobile detailing â and what you actually need instead.",excerpt:"Acuity vs Automate for UK mobile detailers. ULEZ pricing, postcode territories, vehicle-size tiers, deposits, and a technician's app â compared honestly.",category:"Guides",tags:["Business Tips","Growth","Mobile Valeting"],author:Wn,publishedAt:"2026-06-25",readTimeMinutes:9,featuredImageUrl:eU,featuredImageAlt:"Phone showing a plain calendar grid resting on the wet bonnet of a freshly detailed black car, with a microfibre cloth and spray bottle alongside"},{slug:"detailing-crm-uk-guide",title:"Do You Need a CRM for Detailing? UK Guide",subtitle:"An honest look at what a CRM actually is, what most detailers actually need, and the features that matter against the ones that don't.",excerpt:"Do UK detailers really need a CRM? An honest look at what one is, what most need, and the features that matter against the ones that don't.",category:"Guides",tags:["Business Tips","Growth","Mobile Valeting"],author:Wn,publishedAt:"2026-04-28",readTimeMinutes:11,featuredImageUrl:XL,featuredImageAlt:"Overhead view of a laptop showing a customer profile, a phone with a booking confirmation, a notebook and coffee on a clean desk"},{slug:"booking-system-for-mobile-detailers",title:"Choosing a Booking System for Detailers",subtitle:"A UK buyer's guide to the 12 things that separate a tool that runs your business from one that gets in the way.",excerpt:"How to pick a mobile detailing booking system that actually works: the 12 things that separate the best tools from the ones that get in the way.",category:"Guides",tags:["Business Tips","Growth","Mobile Valeting"],author:Wn,publishedAt:"2026-04-17",readTimeMinutes:12,featuredImageUrl:QL,featuredImageAlt:"Mobile car detailer in a navy polo shirt cleaning a dark premium car at golden hour with a smartphone showing a booking calendar nearby"},{slug:"valeting-booking-page-design",title:"Build a Booking Page That Converts",subtitle:"What We Learned From 120,000 Valeting Bookings",excerpt:"What makes a great mobile valeting booking page? Lessons from rebuilding ours with data from 120,000+ bookings: what works and what costs you customers.",category:"Guides",tags:["Growth","Business Tips"],author:Wn,publishedAt:"2026-04-01",readTimeMinutes:7,featuredImageUrl:JL,featuredImageAlt:"Modern dark-themed mobile valeting booking page with checkout summary on a phone screen"},{slug:"pricing-mobile-valeting-services",title:"How to Price Mobile Valeting Services",subtitle:"What to charge, how to structure your packages, and why your cheapest service might be the most important one you offer.",excerpt:"What to charge for mobile valeting in the UK. Real pricing data from 10,000+ bookings, package structure advice, and a free calculator.",category:"Guides",tags:["Pricing","Growth","Business Tips"],author:Wn,publishedAt:"2026-03-20",readTimeMinutes:8,featuredImageUrl:ZL,featuredImageAlt:"Mobile valeting pricing guide with calculator and cleaning products"},{slug:"start-mobile-valeting-business",title:"How to Start a Mobile Car Valeting Business (UK)",metaTitle:"How to Start a Mobile Car Valeting Business UK | Automate",subt
57itle:"Startup costs, kit, pricing and the five things that decide whether you're still trading in two years.",excerpt:"How to start a mobile car valeting business in the UK: real startup costs (£4kâ£10k), the kit you need, pricing, and the 5 essentials most new valeters miss.",category:"Guides",tags:["Starting a Business","Marketing","Growth"],author:Wn,publishedAt:"2026-02-26",readTimeMinutes:9,featuredImageUrl:WL,featuredImageAlt:"Close-up of a mobile valeter detailing a car with a microfibre cloth"},{slug:"reduce-no-shows-mobile-valeting",title:"5 Ways to Reduce Mobile Valeting No-Shows",subtitle:"Protect your time and revenue with strategies that actually work.",excerpt:"No-shows cost the average mobile valeter thousands every year. Here are five practical strategies to protect your time and revenue.",category:"Guides",tags:["No-Shows","Mobile Valeting","Business Tips"],author:Wn,publishedAt:"2026-02-26",readTimeMinutes:6,featuredImageUrl:dk,featuredImageAlt:"Mobile valeter checking their booking schedule on a phone"}];function Qk(t){return wl.find(e=>e.slug===t)}function n3(){const t=new Set;return wl.forEach(e=>e.tags.forEach(n=>t.add(n))),Array.from(t).sort()}function r3(t){return wl.filter(e=>e.tags.some(n=>n.toLowerCase()===t.toLowerCase()))}function s3(t,e=3){const n=Qk(t);return n?wl.filter(a=>a.slug!==t&&a.category===n.category).slice(0,e):wl.slice(0,e)}function a3(t){return new Date(t).toLocaleDateString("en-GB",{day:"numeric",month:"long",year:"numeric"})}const cU=()=>ht(()=>import("./blog_._slug-DK8ZDqIq.js"),__vite__mapDeps([50,1,37,31,10,30,47])),uU=()=>ht(()=>import("./blog_._slug-CZUa2CR4.js"),[]),dU=lt("/blog_/$slug")({loader:({params:t})=>{const e=Qk(t.slug);if(!e||!YL[t.slug])throw y0();return{article:e}},head:({loaderData:t,params:e})=>{if(!t)return{};const{article:n}=t,a=`https://getautomate.io/blog/${e.slug}`;return{meta:[{title:n.metaTitle??`${n.title} | Automate Blog`},{name:"description",content:n.excerpt},{property:"og:title",content:n.title},{property:"og:description",content:n.excerpt},{property:"og:type",content:"article"},{property:"og:locale",content:"en_GB"},{property:"og:url",content:a},...n.featuredImageUrl?[{property:"og:image",content:`https://getautomate.io${n.ogImageUrl??n.featuredImageUrl}`}]:[],{property:"article:published_time",content:n.publishedAt},{property:"article:author",content:n.author.name},{name:"twitter:card",content:"summary_large_image"}],links:[{rel:"canonical",href:a}],scripts:[{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:n.title,description:n.excerpt,datePublished:n.publishedAt,author:{"@type":"Person",name:n.author.name},publisher:{"@type":"Organization",name:"Automate",url:"https://getautomate.io"},mainEntityOfPage:{"@type":"WebPage","@id":a},...n.featuredImageUrl?{image:`https://getautomate.io${n.ogImageUrl??n.featuredImageUrl}`}:{}})}]}},notFoundComponent:dt(uU,"notFoundComponent"),component:dt(cU,"component")}),hU=LM.update({id:"/whats-new",path:"/whats-new",getParentRoute:()=>nt}),fU=zM.update({id:"/welcome",path:"/welcome",getParentRoute:()=>nt}),pU=HM.update({id:"/website-services",path:"/website-services",getParentRoute:()=>nt}),mU=FM.update({id:"/unsubscribe",path:"/unsubscribe",getParentRoute:()=>nt}),gU=KM.update({id:"/terms",path:"/terms",getParentRoute:()=>nt}),yU=JM.update({id:"/roadmap",path:"/roadmap",getParentRoute:()=>nt}),bU=XM.update({id:"/reviews",path:"/reviews",getParentRoute:()=>nt}),vU=tD.update({id:"/privacy",path:"/privacy",getParentRoute:()=>nt}),wU=cD.update({id:"/mobile-valeting",path:"/mobile-valeting",getParentRoute:()=>nt}),xU=pD.update({id:"/helpcenter",path:"/helpcenter",getParentRoute:()=>nt}),kU=mD.update({id:"/help",path:"/help",getParentRoute:()=>nt}),_U=yD.update({id:"/feedback",path:"/feedback",getParentRoute:()=>nt}),SU=vD.update({id:"/detailing-crm",path:"/detailing-crm",getParentRoute:()=>nt}),jU=xD.update({id:"/detailing",path:"/detailing",getParentRoute:()=>nt}),TU=_D.update({id:"/contact",path:"/contact",getParentRoute:()=>nt}),AU=jD.update({id:"/car-detailing-booking-system",path:"/car-detailing-booking-system",getParentRoute:()=>nt}),EU=n4.update({id:"/blog",path:"/blog",getParentRoute:()=>nt}),RU=a4.update({id:"/affiliates",path:"/affiliates",getParentRoute:()=>nt}),CU=o4.update({id:"/",path:"/",getParentRoute:()=>nt}),OU=c4.update({id:"/feedback_/admin",path:"/feedback/admin",getParentRoute:()=>nt}),NU=d4.update({id:"/feedback_/$slug",path:"/feedback/$slug",getParentRoute:()=>nt}),MU=f4.update({id:"/case-study/washdoctors",path:"/case-study/washdoctors",getParentRoute:()=>nt}),DU=m4.update({id:"/case-study/no2h2o",path:"/case-study/no2h2o",getParentRoute:()=>nt}),PU=dU.update({id:"/blog_/$slug",path:"/blog/$slug",getParentRoute:()=>nt}),LU={IndexRoute:CU,AffiliatesRoute:RU,BlogRoute:EU,CarDetailingBookingSystemRoute:AU,ContactRoute:TU,DetailingRoute:jU,DetailingCrmRoute:SU,FeedbackRoute:_U,HelpRoute:kU,HelpcenterRoute:xU,MobileValetingRoute:wU,PrivacyRoute:vU,ReviewsRoute:bU,RoadmapRoute:yU,TermsRoute:gU,UnsubscribeRoute:mU,WebsiteServicesRoute:pU,WelcomeRoute:fU,WhatsNewRoute:hU,BlogSlugRoute:PU,CaseStudyNo2h2oRoute:DU,CaseStudyWashdoctorsRoute:MU,FeedbackSlugRoute:NU,FeedbackAdminRoute:OU},UU=nt._addFileChildren(LU),IU=()=>{const t=new vN;return AR({routeTree:UU,context:{queryClient:t},scrollRestoration:!0,defaultPreloadStaleTime:0})};async function BU(){const t=await IU();let e;if(mw){const n=await mw.getOptions();n.serializationAdapters=n.serializationAdapters??[],window.__TSS_START_OPTIONS__=n,e=n.serializationAdapters,t.options.defaultSsr=n.defaultSsr}else e=[],window.__TSS_START_OPTIONS__={serializationAdapters:e};return e.push(RE),t.options.serializationAdapters&&e.push(...t.options.serializationAdapters),t.update({basepath:"",serializationAdapters:e}),t.stores.matchesId.get().length||await ME(t),t}async function zU(){const t=await BU();return window.$_TSR?.h(),t}var If;function qU(){return If||(If=zU()),d.jsx(UE,{promise:If,children:t=>d.jsx(CR,{router:t})})}I.startTransition(()=>{vj.hydrateRoot(document,d.jsx(I.StrictMode,{children:d.jsx(qU,{})}))});export{sk as $,jw as A,H2 as B,$r as C,QU as D,yD as E,JU as F,Wt as G,WM as H,Ek as I,ji as J,iD as K,ut as L,_i as M,sD as N,Si as O,Sl as P,aD as Q,JM as R,t3 as S,n4 as T,gx as U,n3 as V,wl as W,r3 as X,e3 as Y,Jk as Z,Gu as _,Vp as a,FN as a0,_a as a1,r4 as a2,Vu as a3,nD as a4,lU as a5,qN as a6,Fu as a7,ku as a8,Ku as a9,te as aa,$P as ab,AP as ac,rn as ad,YU as ae,KU as af,WU as ag,d4 as ah,BN as ai,tM as aj,s3 as ak,a3 as al,dU as am,YL as an,Pk as ao,u0 as ap,vP as b,Zt as c,Is as d,Di as e,EP as f,RP as g,Dk as h,Ck as i,d as j,Ip as k,nk as l,qM as m,mx as n,XD as o,hp as p,ok as q,I as r,QD as s,GU as t,_P as u,XU as v,ki as w,rD as x,uD as y,ZU as z};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.