PageSourceSearch

https://snapestimate.ai/assets/index-BabEtOMX.js

js snapestimate.ai collected 2026-10-05 14:40:18 UTC 1,316,295 bytes, 922 lines download raw bytes

vendor: 6,166 bytes, lines 1-9
1var pN=Object.defineProperty;var zx=e=>{throw TypeError(e)};var fN=(e,t,n)=>t in e?pN(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var St=(e,t,n)=>fN(e,typeof t!="symbol"?t+"":t,n),Xp=(e,t,n)=>t.has(e)||zx("Cannot "+n);var H=(e,t,n)=>(Xp(e,t,"read from private field"),n?n.call(e):t.get(e)),Ue=(e,t,n)=>t.has(e)?zx("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),_e=(e,t,n,i)=>(Xp(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n),yt=(e,t,n)=>(Xp(e,t,"access private method"),n);var dh=(e,t,n,i)=>({set _(l){_e(e,t,l,n)},get _(){return H(e,t,i)}});function gN(e,t){for(var n=0;n<t.length;n++){const i=t[n];if(typeof i!="string"&&!Array.isArray(i)){for(const l in i)if(l!=="default"&&!(l in e)){const d=Object.getOwnPropertyDescriptor(i,l);d&&Object.defineProperty(e,l,d.get?d:{enumerable:!0,get:()=>i[l]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))i(l);new MutationObserver(l=>{for(const d of l)if(d.type==="childList")for(const h of d.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&i(h)}).observe(document,{childList:!0,subtree:!0});function n(l){const d={};return l.integrity&&(d.integrity=l.integrity),l.referrerPolicy&&(d.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?d.credentials="include":l.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function i(l){if(l.ep)return;l.ep=!0;const d=n(l);fetch(l.href,d)}})();function um(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ef={exports:{}},ed={},tf={exports:{}},ct={};/**
2 * @license React
3 * react.production.min.js
4 *
5 * Copyright (c) Facebook, Inc. and its affiliates.
6 *
7 * This source code is licensed under the MIT license found in the
8 * LICENSE file in the root directory of this source tree.
9 */var Wx;function yN(){if(Wx)return ct;Wx=1;var e=Symbol.for("react.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),h=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),y=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),w=Symbol.iterator;function j(O){return O===null||typeof O!="object"?null:(O=w&&O[w]||O["@@iterator"],typeof O=="function"?O:null)}var P={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,k={};function A(O,te,ye){this.props=O,this.context=te,this.refs=k,this.updater=ye||P}A.prototype.isReactComponent={},A.prototype.setState=function(O,te){if(typeof O!="object"&&typeof O!="function"&&O!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,O,te,"setState")},A.prototype.forceUpdate=function(O){this.updater.enqueueForceUpdate(this,O,"forceUpdate")};function E(){}E.prototype=A.prototype;function $(O,te,ye){this.props=O,this.context=te,this.refs=k,this.updater=ye||P}var I=$.prototype=new E;I.constructor=$,C(I,A.prototype),I.isPureReactComponent=!0;var M=Array.isArray,F=Object.prototype.hasOwnProperty,z={current:null},V={key:!0,ref:!0,__self:!0,__source:!0};function W(O,te,ye){var ge,pe={},re=null,$e=null;if(te!=null)for(ge in te.ref!==void 0&&($e=te.ref),te.key!==void 0&&(re=""+te.key),te)F.call(te,ge)&&!V.hasOwnProperty(ge)&&(pe[ge]=te[ge]);var He=arguments.length-2;if(He===1)pe.children=ye;else if(1<He){for(var De=Array(He),Et=0;Et<He;Et++)De[Et]=arguments[Et+2];pe.children=De}if(O&&O.defaultProps)for(ge in He=O.defaultProps,He)pe[ge]===void 0&&(pe[ge]=He[ge]);return{$$typeof:e,type:O,key:re,ref:$e,props:pe,_owner:z.current}}function ne(O,te){return{$$typeof:e,type:O.type,key:te,ref:O.ref,props:O.props,_owner:O._owner}}function de(O){return typeof O=="object"&&O!==null&&O.$$typeof===e}function be(O){var te={"=":"=0",":":"=2"};return"$"+O.replace(/[=:]/g,function(ye){return te[ye]})}var Re=/\/+/g;function Je(O,te){return typeof O=="object"&&O!==null&&O.key!=null?be(""+O.key):te.toString(36)}function Ie(O,te,ye,ge,pe){var re=typeof O;(re==="undefined"||re==="boolean")&&(O=null);var $e=!1;if(O===null)$e=!0;else switch(re){case"string":case"number":$e=!0;break;case"object":switch(O.$$typeof){case e:case t:$e=!0}}if($e)return $e=O,pe=pe($e),O=ge===""?"."+Je($e,0):ge,M(pe)?(ye="",O!=null&&(ye=O.replace(Re,"$&/")+"/"),Ie(pe,te,ye,"",function(Et){return Et})):pe!=null&&(de(pe)&&(pe=ne(pe,ye+(!pe.key||$e&&$e.key===pe.key?"":(""+pe.key).replace(Re,"$&/")+"/")+O)),te.push(pe)),1;if($e=0,ge=ge===""?".":ge+":",M(O))for(var He=0;He<O.length;He++){re=O[He];var De=ge+Je(re,He);$e+=Ie(re,te,ye,De,pe)}else if(De=j(O),typeof De=="function")for(O=De.call(O),He=0;!(re=O.next()).done;)re=re.value,De=ge+Je(re,He++),$e+=Ie(re,te,ye,De,pe);else if(re==="object")throw te=String(O),Error("Objects are not valid as a React child (found: "+(te==="[object Object]"?"object with keys {"+Object.keys(O).join(", ")+"}":te)+"). If you meant to render a collection of children, use an array instead.");return $e}function mt(O,te,ye){if(O==null)return O;var ge=[],pe=0;return Ie(O,ge,"","",function(re){return te.call(ye,re,pe++)}),ge}function Se(O){if(O._status===-1){var te=O._result;te=te(),te.then(function(ye){(O._status===0||O._status===-1)&&(O._status=1,O._result=ye)},function(ye){(O._status===0||O._status===-1)&&(O._status=2,O._result=ye)}),O._status===-1&&(O._status=0,O._result=te)}if(O._status===1)return O._result.default;throw O._result}var je={current:null},X={transition:null},ue={ReactCurrentDispatcher:je,ReactCurrentBatchConfig:X,ReactCurrentOwner:z};function q(){throw Error("act(...) is not supported in production builds of React.")}return ct.Children={map:mt,forEach:function(O,te,ye){mt(O,function(){te.apply(this,arguments)},ye)},count:function(O){var te=0;return mt(O,function(){te++}
vendor: 4,598 bytes, lines 9-25
9),te},toArray:function(O){return mt(O,function(te){return te})||[]},only:function(O){if(!de(O))throw Error("React.Children.only expected to receive a single React element child.");return O}},ct.Component=A,ct.Fragment=n,ct.Profiler=l,ct.PureComponent=$,ct.StrictMode=i,ct.Suspense=g,ct.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ue,ct.act=q,ct.cloneElement=function(O,te,ye){if(O==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+O+".");var ge=C({},O.props),pe=O.key,re=O.ref,$e=O._owner;if(te!=null){if(te.ref!==void 0&&(re=te.ref,$e=z.current),te.key!==void 0&&(pe=""+te.key),O.type&&O.type.defaultProps)var He=O.type.defaultProps;for(De in te)F.call(te,De)&&!V.hasOwnProperty(De)&&(ge[De]=te[De]===void 0&&He!==void 0?He[De]:te[De])}var De=arguments.length-2;if(De===1)ge.children=ye;else if(1<De){He=Array(De);for(var Et=0;Et<De;Et++)He[Et]=arguments[Et+2];ge.children=He}return{$$typeof:e,type:O.type,key:pe,ref:re,props:ge,_owner:$e}},ct.createContext=function(O){return O={$$typeof:h,_currentValue:O,_currentValue2:O,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},O.Provider={$$typeof:d,_context:O},O.Consumer=O},ct.createElement=W,ct.createFactory=function(O){var te=W.bind(null,O);return te.type=O,te},ct.createRef=function(){return{current:null}},ct.forwardRef=function(O){return{$$typeof:m,render:O}},ct.isValidElement=de,ct.lazy=function(O){return{$$typeof:x,_payload:{_status:-1,_result:O},_init:Se}},ct.memo=function(O,te){return{$$typeof:y,type:O,compare:te===void 0?null:te}},ct.startTransition=function(O){var te=X.transition;X.transition={};try{O()}finally{X.transition=te}},ct.unstable_act=q,ct.useCallback=function(O,te){return je.current.useCallback(O,te)},ct.useContext=function(O){return je.current.useContext(O)},ct.useDebugValue=function(){},ct.useDeferredValue=function(O){return je.current.useDeferredValue(O)},ct.useEffect=function(O,te){return je.current.useEffect(O,te)},ct.useId=function(){return je.current.useId()},ct.useImperativeHandle=function(O,te,ye){return je.current.useImperativeHandle(O,te,ye)},ct.useInsertionEffect=function(O,te){return je.current.useInsertionEffect(O,te)},ct.useLayoutEffect=function(O,te){return je.current.useLayoutEffect(O,te)},ct.useMemo=function(O,te){return je.current.useMemo(O,te)},ct.useReducer=function(O,te,ye){return je.current.useReducer(O,te,ye)},ct.useRef=function(O){return je.current.useRef(O)},ct.useState=function(O){return je.current.useState(O)},ct.useSyncExternalStore=function(O,te,ye){return je.current.useSyncExternalStore(O,te,ye)},ct.useTransition=function(){return je.current.useTransition()},ct.version="18.3.1",ct}var Ux;function Zg(){return Ux||(Ux=1,tf.exports=yN()),tf.exports}/**
10 * @license React
11 * react-jsx-runtime.production.min.js
12 *
13 * Copyright (c) Facebook, Inc. and its affiliates.
14 *
15 * This source code is licensed under the MIT license found in the
16 * LICENSE file in the root directory of this source tree.
17 */var Hx;function xN(){if(Hx)return ed;Hx=1;var e=Zg(),t=Symbol.for("react.element"),n=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,d={key:!0,ref:!0,__self:!0,__source:!0};function h(m,g,y){var x,w={},j=null,P=null;y!==void 0&&(j=""+y),g.key!==void 0&&(j=""+g.key),g.ref!==void 0&&(P=g.ref);for(x in g)i.call(g,x)&&!d.hasOwnProperty(x)&&(w[x]=g[x]);if(m&&m.defaultProps)for(x in g=m.defaultProps,g)w[x]===void 0&&(w[x]=g[x]);return{$$typeof:t,type:m,key:j,ref:P,props:w,_owner:l.current}}return ed.Fragment=n,ed.jsx=h,ed.jsxs=h,ed}var Vx;function vN(){return Vx||(Vx=1,ef.exports=xN()),ef.exports}var r=vN(),S=Zg();const nn=um(S),hm=gN({__proto__:null,default:nn},[S]);var uh={},nf={exports:{}},ur={},rf={exports:{}},sf={};/**
18 * @license React
19 * scheduler.production.min.js
20 *
21 * Copyright (c) Facebook, Inc. and its affiliates.
22 *
23 * This source code is licensed under the MIT license found in the
24 * LICENSE file in the root directory of this source tree.
25 */var qx;function bN(){return qx||(qx=1,(function(e){function t(X,ue){var q=X.length;X.push(ue);e:for(;0<q;){var O=q-1>>>1,te=X[O];if(0<l(te,ue))X[O]=ue,X[q]=te,q=O;else break e}}function n(X){return X.length===0?null:X[0]}function i(X){if(X.length===0)return null;var ue=X[0],q=X.pop();if(q!==ue){X[0]=q;e:for(var O=0,te=X.length,ye=te>>>1;O<ye;){var ge=2*(O+1)-1,pe=X[ge],re=ge+1,$e=X[re];if(0>l(pe,q))re<te&&0>l($e,pe)?(X[O]=$e,X[re]=q,O=re):(X[O]=pe,X[ge]=q,O=ge);else if(re<te&&0>l($e,q))X[O]=$e,X[re]=q,O=re;else break e}}return ue}
vendor: 53,012 bytes, lines 25-38
25function l(X,ue){var q=X.sortIndex-ue.sortIndex;return q!==0?q:X.id-ue.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;e.unstable_now=function(){return d.now()}}else{var h=Date,m=h.now();e.unstable_now=function(){return h.now()-m}}var g=[],y=[],x=1,w=null,j=3,P=!1,C=!1,k=!1,A=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,$=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function I(X){for(var ue=n(y);ue!==null;){if(ue.callback===null)i(y);else if(ue.startTime<=X)i(y),ue.sortIndex=ue.expirationTime,t(g,ue);else break;ue=n(y)}}function M(X){if(k=!1,I(X),!C)if(n(g)!==null)C=!0,Se(F);else{var ue=n(y);ue!==null&&je(M,ue.startTime-X)}}function F(X,ue){C=!1,k&&(k=!1,E(W),W=-1),P=!0;var q=j;try{for(I(ue),w=n(g);w!==null&&(!(w.expirationTime>ue)||X&&!be());){var O=w.callback;if(typeof O=="function"){w.callback=null,j=w.priorityLevel;var te=O(w.expirationTime<=ue);ue=e.unstable_now(),typeof te=="function"?w.callback=te:w===n(g)&&i(g),I(ue)}else i(g);w=n(g)}if(w!==null)var ye=!0;else{var ge=n(y);ge!==null&&je(M,ge.startTime-ue),ye=!1}return ye}finally{w=null,j=q,P=!1}}var z=!1,V=null,W=-1,ne=5,de=-1;function be(){return!(e.unstable_now()-de<ne)}function Re(){if(V!==null){var X=e.unstable_now();de=X;var ue=!0;try{ue=V(!0,X)}finally{ue?Je():(z=!1,V=null)}}else z=!1}var Je;if(typeof $=="function")Je=function(){$(Re)};else if(typeof MessageChannel<"u"){var Ie=new MessageChannel,mt=Ie.port2;Ie.port1.onmessage=Re,Je=function(){mt.postMessage(null)}}else Je=function(){A(Re,0)};function Se(X){V=X,z||(z=!0,Je())}function je(X,ue){W=A(function(){X(e.unstable_now())},ue)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(X){X.callback=null},e.unstable_continueExecution=function(){C||P||(C=!0,Se(F))},e.unstable_forceFrameRate=function(X){0>X||125<X?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):ne=0<X?Math.floor(1e3/X):5},e.unstable_getCurrentPriorityLevel=function(){return j},e.unstable_getFirstCallbackNode=function(){return n(g)},e.unstable_next=function(X){switch(j){case 1:case 2:case 3:var ue=3;break;default:ue=j}var q=j;j=ue;try{return X()}finally{j=q}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(X,ue){switch(X){case 1:case 2:case 3:case 4:case 5:break;default:X=3}var q=j;j=X;try{return ue()}finally{j=q}},e.unstable_scheduleCallback=function(X,ue,q){var O=e.unstable_now();switch(typeof q=="object"&&q!==null?(q=q.delay,q=typeof q=="number"&&0<q?O+q:O):q=O,X){case 1:var te=-1;break;case 2:te=250;break;case 5:te=1073741823;break;case 4:te=1e4;break;default:te=5e3}return te=q+te,X={id:x++,callback:ue,priorityLevel:X,startTime:q,expirationTime:te,sortIndex:-1},q>O?(X.sortIndex=q,t(y,X),n(g)===null&&X===n(y)&&(k?(E(W),W=-1):k=!0,je(M,q-O))):(X.sortIndex=te,t(g,X),C||P||(C=!0,Se(F))),X},e.unstable_shouldYield=be,e.unstable_wrapCallback=function(X){var ue=j;return function(){var q=j;j=ue;try{return X.apply(this,arguments)}finally{j=q}}}})(sf)),sf}var Jx;function wN(){return Jx||(Jx=1,rf.exports=bN()),rf.exports}/**
26 * @license React
27 * react-dom.production.min.js
28 *
29 * Copyright (c) Facebook, Inc. and its affiliates.
30 *
31 * This source code is licensed under the MIT license found in the
32 * LICENSE file in the root directory of this source tree.
33 */var Gx;function _N(){if(Gx)return ur;Gx=1;var e=Zg(),t=wN();function n(s){for(var a="https://reactjs.org/docs/error-decoder.html?invariant="+s,u=1;u<arguments.length;u++)a+="&args[]="+encodeURIComponent(arguments[u]);return"Minified React error #"+s+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function d(s,a){h(s,a),h(s+"Capture",a)}function h(s,a){for(l[s]=a,s=0;s<a.length;s++)i.add(a[s])}var m=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),g=Object.prototype.hasOwnProperty,y=/^[: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]*$/,x={},w={};function j(s){return g.call(w,s)?!0:g.call(x,s)?!1:y.test(s)?w[s]=!0:(x[s]=!0,!1)}function P(s,a,u,f){if(u!==null&&u.type===0)return!1;switch(typeof a){case"function":case"symbol":return!0;case"boolean":return f?!1:u!==null?!u.acceptsBooleans:(s=s.toLowerCase().slice(0,5),s!=="data-"&&s!=="aria-");default:return!1}}function C(s,a,u,f){if(a===null||typeof a>"u"||P(s,a,u,f))return!0;if(f)return!1;if(u!==null)switch(u.type){case 3:return!a;case 4:return a===!1;case 5:return isNaN(a);case 6:return isNaN(a)||1>a}return!1}function k(s,a,u,f,b,_,T){this.acceptsBooleans=a===2||a===3||a===4,this.attributeName=f,this.attributeNamespace=b,this.mustUseProperty=u,this.propertyName=s,this.type=a,this.sanitizeURL=_,this.removeEmptyString=T}var A={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(s){A[s]=new k(s,0,!1,s,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(s){var a=s[0];A[a]=new k(a,1,!1,s[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(s){A[s]=new k(s,2,!1,s.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(s){A[s]=new k(s,2,!1,s,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(s){A[s]=new k(s,3,!1,s.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(s){A[s]=new k(s,3,!0,s,null,!1,!1)}),["capture","download"].forEach(function(s){A[s]=new k(s,4,!1,s,null,!1,!1)}),["cols","rows","size","span"].forEach(function(s){A[s]=new k(s,6,!1,s,null,!1,!1)}),["rowSpan","start"].forEach(function(s){A[s]=new k(s,5,!1,s.toLowerCase(),null,!1,!1)});var E=/[\-:]([a-z])/g;function $(s){return s[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(s){var a=s.replace(E,$);A[a]=new k(a,1,!1,s,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(s){var a=s.replace(E,$);A[a]=new k(a,1,!1,s,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(s){var a=s.replace(E,$);A[a]=new k(a,1,!1,s,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(s){A[s]=new k(s,1,!1,s.toLowerCase(),null,!1,!1)}),A.xlinkHref=new k("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(s){A[s]=new k(s,1,!1,s.toLowerCase(),null,!0,!0)});function I(s,a,u,f){var b=A.hasOwnProperty(a)?A[a]:null;(b!==null?b.type!==0:f||!(2<a.length)||a[0]!=="o"&&a[0]!=="O"||a[1]!=="n"&&a[1]!=="N")&&(C(a,u,b,f)&&(u=null),f||b===null?j(a)&&(u===null?s.removeAttribute(a):s.setAttribute(a,""+u)):b.mustUseProperty?s[b.propertyName]=u===null?b.type===3?!1:"":u:(a=b.attributeName,f=b.attributeNamespace,u===null?s.removeAttribute(a):(b=b.type,u=b===3||b===4&&u===!0?"":""+u,f?s.setAttributeNS(f,a,u):s.setAttribute(a,u))))}var M=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,F=Symbol.for("react.element"),z=Symbol.for("react.portal"),V=Symbol.for("react.fragment"),W=Symbol.for("react.strict_mode"),ne=Symbol.for("react.profiler"),de=Symbol.for("react.provider"),be=Symbol.for("react.context"),Re=Symbol.for("react.forward_ref"),Je=Symbol.for("react.suspense"),Ie=Symbol.for("react.suspense_list"),mt=Symbol.for("react.memo"),Se=Symbol.for("react.lazy"),je=Symbol.for("react.offscreen"),X=Symbol.iterator;function ue(s){return s===null||typeof s!="object"?null:(s=X&&s[X]||s["@@iterator"],typeof s=="function"?s:null)}var q=Object.assign,O;function te(s){if(O===void 0)try{throw Error()}catch(u){var a=u.stack.trim().match(/\n( *(at )?)/);O=a&&a[1]||""}return`
34`+O+s}var ye=!1;function ge(s,a){if(!s||ye)return"";ye=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(a)if(a=function(){throw Error()},Object.defineProperty(a.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(a,[])}catch(ee){var f=ee}Reflect.construct(s,[],a)}else{try{a.call()}catch(ee){f=ee}s.call(a.prototype)}else{try{throw Error()}catch(ee){f=ee}s()}}catch(ee){if(ee&&f&&typeof ee.stack=="string"){for(var b=ee.stack.split(`
35`),_=f.stack.split(`
36`),T=b.length-1,D=_.length-1;1<=T&&0<=D&&b[T]!==_[D];)D--;for(;1<=T&&0<=D;T--,D--)if(b[T]!==_[D]){if(T!==1||D!==1)do if(T--,D--,0>D||b[T]!==_[D]){var U=`
37`+b[T].replace(" at new "," at ");return s.displayName&&U.includes("<anonymous>")&&(U=U.replace("<anonymous>",s.displayName)),U}while(1<=T&&0<=D);break}}}finally{ye=!1,Error.prepareStackTrace=u}return(s=s?s.displayName||s.name:"")?te(s):""}function pe(s){switch(s.tag){case 5:return te(s.type);case 16:return te("Lazy");case 13:return te("Suspense");case 19:return te("SuspenseList");case 0:case 2:case 15:return s=ge(s.type,!1),s;case 11:return s=ge(s.type.render,!1),s;case 1:return s=ge(s.type,!0),s;default:return""}}function re(s){if(s==null)return null;if(typeof s=="function")return s.displayName||s.name||null;if(typeof s=="string")return s;switch(s){case V:return"Fragment";case z:return"Portal";case ne:return"Profiler";case W:return"StrictMode";case Je:return"Suspense";case Ie:return"SuspenseList"}if(typeof s=="object")switch(s.$$typeof){case be:return(s.displayName||"Context")+".Consumer";case de:return(s._context.displayName||"Context")+".Provider";case Re:var a=s.render;return s=s.displayName,s||(s=a.displayName||a.name||"",s=s!==""?"ForwardRef("+s+")":"ForwardRef"),s;case mt:return a=s.displayName||null,a!==null?a:re(s.type)||"Memo";case Se:a=s._payload,s=s._init;try{return re(s(a))}catch{}}return null}function $e(s){var a=s.type;switch(s.tag){case 24:return"Cache";case 9:return(a.displayName||"Context")+".Consumer";case 10:return(a._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return s=a.render,s=s.displayName||s.name||"",a.displayName||(s!==""?"ForwardRef("+s+")":"ForwardRef");case 7:return"Fragment";case 5:return a;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return re(a);case 8:return a===W?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof a=="function")return a.displayName||a.name||null;if(typeof a=="string")return a}return null}function He(s){switch(typeof s){case"boolean":case"number":case"string":case"undefined":return s;case"object":return s;default:return""}}function De(s){var a=s.type;return(s=s.nodeName)&&s.toLowerCase()==="input"&&(a==="checkbox"||a==="radio")}function Et(s){var a=De(s)?"checked":"value",u=Object.getOwnPropertyDescriptor(s.constructor.prototype,a),f=""+s[a];if(!s.hasOwnProperty(a)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var b=u.get,_=u.set;return Object.defineProperty(s,a,{configurable:!0,get:function(){return b.call(this)},set:function(T){f=""+T,_.call(this,T)}}),Object.defineProperty(s,a,{enumerable:u.enumerable}),{getValue:function(){return f},setValue:function(T){f=""+T},stopTracking:function(){s._valueTracker=null,delete s[a]}}}}function It(s){s._valueTracker||(s._valueTracker=Et(s))}function kt(s){if(!s)return!1;var a=s._valueTracker;if(!a)return!0;var u=a.getValue(),f="";return s&&(f=De(s)?s.checked?"true":"false":s.value),s=f,s!==u?(a.setValue(s),!0):!1}function dn(s){if(s=s||(typeof document<"u"?document:void 0),typeof s>"u")return null;try{return s.activeElement||s.body}catch{return s.body}}function un(s,a){var u=a.checked;return q({},a,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:u??s._wrapperState.initialChecked})}function Bt(s,a){var u=a.defaultValue==null?"":a.defaultValue,f=a.checked!=null?a.checked:a.defaultChecked;u=He(a.value!=null?a.value:u),s._wrapperState={initialChecked:f,initialValue:u,controlled:a.type==="checkbox"||a.type==="radio"?a.checked!=null:a.value!=null}}function Be(s,a){a=a.checked,a!=null&&I(s,"checked",a,!1)}function At(s,a){Be(s,a);var u=He(a.value),f=a.type;if(u!=null)f==="number"?(u===0&&s.value===""||s.value!=u)&&(s.value=""+u):s.value!==""+u&&(s.value=""+u);else if(f==="submit"||f==="reset"){s.removeAttribute("value");return}a.hasOwnProperty("value")?xn(s,a.type,u):a.hasOwnProperty("defaultValue")&&xn(s,a.type,He(a.defaultValue)),a.checked==null&&a.defaultChecked!=null&&(s.defaultChecked=!!a.defaultChecked)}function zt(s,a,u){if(a.hasOwnProperty("value")||a.hasOwnProperty("defaultValue")){var f=a.type;if(!(f!=="submit"&&f!=="reset"||a.value!==void 0&&a.value!==null))return;a=""+s._wrapperState.initialValue,u||a===s.value||(s.value=a),s.defaultValue=a}u=s.name,u!==""&&(s.name=""),s.defaultChecked=!!s._wrapperState.initialChecked,u!==""&&(s.name=u)}function xn(s,a,u){(a!=="number"||dn(s.ownerDocument)!==s)&&(u==null?s.defaultValue=""+s._wrapperState.initialValue:s.defaultValue!==""+u&&(s.defaultValue=""+u))}var Rt=Array.isArray;function Vn(s,a,u,f){if(s=s.options,a){a={};for(var b=0;b<u.length;b++)a["$"+u[b]]=!0;for(u=0;u<s.length;u++)b=a.hasOwnProperty("$"+s[u].value),s[u].selected!==b&&(s[u].selected=b),b&&f&&(s[u].defaultSelected=!0)}else{for(u=""+He(u),a=null,b=0;b<s.length;b++){if(s[b].value===u){s[b].selected=!0,f&&(s[b].defaultSelected=!0);return}a!==null||s[b].disabled||(a=s[b])}a!==null&&(a.selected=!0)}}function En(s,a){if(a.dangerouslySetInnerHTML!=null)throw Error(n(91));return q({},a,{value:void 0,defaultValue:void 0,children:""+s._wrapperState.initialValue})}function Ks(s,a){var u=a.value;if(u==null){if(u=a.children,a=a.defaultValue,u!=null){if(a!=null)throw Error(n(92));if(Rt(u)){if(1<u.length)throw Error(n(93));u=u[0]}a=u}a==null&&(a=""),u=a}s._wrapperState={initialValue:He(u)}}function Bo(s,a){var u=He(a.value),f=He(a.defaultValue);u!=null&&(u=""+u,u!==s.value&&(s.value=u),a.defaultValue==null&&s.defaultValue!==u&&(s.defaultValue=u)),f!=null&&(s.defaultValue=""+f)}function fr(s){var a=s.textContent;a===s._wrapperState.initialValue&&a!==""&&a!==null&&(s.value=a)}function nr(s){switch(s){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Mr(s,a){return s==null||s==="http://www.w3.org/1999/xhtml"?nr(a):s==="http://www.w3.org/2000/svg"&&a==="foreignObject"?"http://www.w3.org/1999/xhtml":s}var on,js=(function(s){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(a,u,f,b){MSApp.execUnsafeLocalFunction(function(){return s(a,u,f,b)})}:s})(function(s,a){if(s.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in s)s.innerHTML=a;else{for(on=on||document.createElement("div"),on.innerHTML="<svg>"+a.valueOf().toString()+"</svg>",a=on.firstChild;s.firstChild;)s.removeChild(s.firstChild);for(;a.firstChild;)s.appendChild(a.firstChild)}});function qn(s,a){if(a){var u=s.firstChild;if(u&&u===s.lastChild&&u.nodeType===3){u.nodeValue=a;return}}s.textContent=a}var Jn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Ys=["Webkit","ms","Moz","O"];Object.keys(Jn).forEach(function(s){Ys.forEach(function(a){a=a+s.charAt(0).toUpperCase()+s.substring(1),Jn[a]=Jn[s]})});function gr(s,a,u){return a==null||typeof a=="boolean"||a===""?"":u||typeof a!="number"||a===0||Jn.hasOwnProperty(s)&&Jn[s]?(""+a).trim():a+"px"}function ns(s,a){s=s.style;for(var u in a)if(a.hasOwnProperty(u)){var f=u.indexOf("--")===0,b=gr(u,a[u],f);u==="float"&&(u="cssFloat"),f?s.setProperty(u,b):s[u]=b}}var Ir=q({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ks(s,a){if(a){if(Ir[s]&&(a.children!=null||a.dangerouslySetInnerHTML!=null))throw Error(n(137,s));if(a.dangerouslySetInnerHTML!=null){if(a.children!=null)throw Error(n(60));if(typeof a.dangerouslySetInnerHTML!="object"||!("__html"in a.dangerouslySetInnerHTML))throw Error(n(61))}if(a.style!=null&&typeof a.style!="object")throw Error(n(62))}}function rr(s,a){if(s.indexOf("-")===-1)return typeof a.is=="string";switch(s){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 rs=null;function ss(s){return s=s.target||s.srcElement||window,s.correspondingUseElement&&(s=s.correspondingUseElement),s.nodeType===3?s.parentNode:s}var $r=null,vn=null,An=null;function Ri(s){if(s=ci(s)){if(typeof $r!="function")throw Error(n(280));var a=s.stateNode;a&&(a=gl(a),$r(s.stateNode,s.type,a))}}function fe(s){vn?An?An.push(s):An=[s]:vn=s}function Oe(){if(vn){var s=vn,a=An;if(An=vn=null,Ri(s),a)for(s=0;s<a.length;s++)Ri(a[s])}}function at(s,a){return s(a)}function bt(){}var Jt=!1;function Gn(s,a,u){if(Jt)return s(a,u);Jt=!0;try{return at(s,a,u)}finally{Jt=!1,(vn!==null||An!==null)&&(bt(),Oe())}}function is(s,a){var u=s.stateNode;if(u===null)return null;var f=gl(u);if(f===null)return null;u=f[a];e:switch(a){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(f=!f.disabled)||(s=s.type,f=!(s==="button"||s==="input"||s==="select"||s==="textarea")),s=!f;break e;default:s=!1}if(s)return null;if(u&&typeof u!="function")throw Error(n(231,a,typeof u));return u}var Va=!1;if(m)try{var Li={};Object.defineProperty(Li,"passive",{get:function(){Va=!0}}),window.addEventListener("test",Li,Li),window.removeEventListener("test",Li,Li)}catch{Va=!1}function yr(s,a,u,f,b,_,T,D,U){var ee=Array.prototype.slice.call(arguments,3);try{a.apply(u,ee)}catch(le){this.onError(le)}}var hn=!1,Ne=null,Cs=!1,Mi=null,zo={onError:function(s){hn=!0,Ne=s}};function Wo(s,a,u,f,b,_,T,D,U){hn=!1,Ne=null,yr.apply(zo,arguments)}function Ii(s,a,u,f,b,_,T,D,U){if(Wo.apply(this,arguments),hn){if(hn){var ee=Ne;hn=!1,Ne=null}else throw Error(n(198));Cs||(Cs=!0,Mi=ee)}}function Dr(s){var a=s,u=s;if(s.alternate)for(;a.return;)a=a.return;else{s=a;do a=s,(a.flags&4098)!==0&&(u=a.return),s=a.return;while(s)}return a.tag===3?u:null}function os(s){if(s.tag===13){var a=s.memoizedState;if(a===null&&(s=s.alternate,s!==null&&(a=s.memoizedState)),a!==null)return a.dehydrated}return null}function Qs(s){if(Dr(s)!==s)throw Error(n(188))}function qa(s){var a=s.alternate;if(!a){if(a=Dr(s),a===null)throw Error(n(188));return a!==s?null:s}for(var u=s,f=a;;){var b=u.return;if(b===null)break;var _=b.alternate;if(_===null){if(f=b.return,f!==null){u=f;continue}break}if(b.child===_.child){for(_=b.child;_;){if(_===u)return Qs(b),s;if(_===f)return Qs(b),a;_=_.sibling}throw Error(n(188))}if(u.return!==f.return)u=b,f=_;else{for(var T=!1,D=b.child;D;){if(D===u){T=!0,u=b,f=_;break}if(D===f){T=!0,f=b,u=_;break}D=D.sibling}if(!T){for(D=_.child;D;){if(D===u){T=!0,u=_,f=b;break}if(D===f){T=!0,f=_,u=b;break}D=D.sibling}if(!T)throw Error(n(189))}}if(u.alternate!==f)throw Error(n(190))}if(u.tag!==3)throw Error(n(188));return u.stateNode.current===u?s:a}function ae(s){return s=qa(s),s!==null?Ce(s):null}function Ce(s){if(s.tag===5||s.tag===6)return s;for(s=s.child;s!==null;){var a=Ce(s);if(a!==null)return a;s=s.sibling}return null}var Qe=t.unstable_scheduleCallback,Ge=t.unstable_cancelCallback,Ke=t.unstable_shouldYield,Xt=t.unstable_requestPaint,pt=t.unstable_now,Uo=t.unstable_getCurrentPriorityLevel,pc=t.unstable_ImmediatePriority,nu=t.unstable_UserBlockingPriority,Ja=t.unstable_NormalPriority,fc=t.unstable_LowPriority,$i=t.unstable_IdlePriority,Ho=null,xr=null;function Vo(s){if(xr&&typeof xr.onCommitFiberRoot=="function")try{xr.onCommitFiberRoot(Ho,s,void 0,(s.current.flags&128)===128)}catch{}}var et=Math.clz32?Math.clz32:Di,$t=Math.log,Ga=Math.LN2;function Di(s){return s>>>=0,s===0?32:31-($t(s)/Ga|0)|0}var as=64,Oi=4194304;function Xe(s){switch(s&-s){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return s&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return s&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return s}}function Lt(s,a){var u=s.pendingLanes;if(u===0)return 0;var f=0,b=s.suspendedLanes,_=s.pingedLanes,T=u&268435455;if(T!==0){var D=T&~b;D!==0?f=Xe(D):(_&=T,_!==0&&(f=Xe(_)))}else T=u&~b,T!==0?f=Xe(T):_!==0&&(f=Xe(_));if(f===0)return 0;if(a!==0&&a!==f&&(a&b)===0&&(b=f&-f,_=a&-a,b>=_||b===16&&(_&4194240)!==0))return a;if((f&4)!==0&&(f|=u&16),a=s.entangledLanes,a!==0)for(s=s.entanglements,a&=f;0<a;)u=31-et(a),b=1<<u,f|=s[u],a&=~b;return f}function gc(s,a){switch(s){case 1:case 2:case 4:return a+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Za(s,a){for(var u=s.suspendedLanes,f=s.pingedLanes,b=s.expirationTimes,_=s.pendingLanes;0<_;){var T=31-et(_),D=1<<T,U=b[T];U===-1?((D&u)===0||(D&f)!==0)&&(b[T]=gc(D,a)):U<=a&&(s.expiredLanes|=D),_&=~D}}function Rn(s){return s=s.pendingLanes&-1073741825,s!==0?s:s&1073741824?1073741824:0}function ru(){var s=as;return as<<=1,(as&4194240)===0&&(as=64),s}function Fi(s){for(var a=[],u=0;31>u;u++)a.push(s);return a}function vr(s,a,u){s.pendingLanes|=a,a!==536870912&&(s.suspendedLanes=0,s.pingedLanes=0),s=s.eventTimes,a=31-et(a),s[a]=u}function Gt(s,a){var u=s.pendingLanes&~a;s.pendingLanes=a,s.suspendedLanes=0,s.pingedLanes=0,s.expiredLanes&=a,s.mutableReadLanes&=a,s.entangledLanes&=a,a=s.entanglements;var f=s.eventTimes;for(s=s.expirationTimes;0<u;){var b=31-et(u),_=1<<b;a[b]=0,f[b]=-1,s[b]=-1,u&=~_}}function ls(s,a){var u=s.entangledLanes|=a;for(s=s.entanglements;u;){var f=31-et(u),b=1<<f;b&a|s[f]&a&&(s[f]|=a),u&=~b}}var gt=0;function Bi(s){return s&=-s,1<s?4<s?(s&268435455)!==0?16:536870912:4:1}var Ka,Xs,Ya,Qa,qo,Jo=!1,zi=[],br=null,cs=null,Or=null,Go=new Map,Ze=new Map,mn=[],Ct="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function yc(s,a){switch(s){case"focusin":case"focusout":br=null;break;case"dragenter":case"dragleave":cs=null;break;case"mouseover":case"mouseout":Or=null;break;case"pointerover":case"pointerout":Go.delete(a.pointerId);break;case"gotpointercapture":case"lostpointercapture":Ze.delete(a.pointerId)}}function ei(s,a,u,f,b,_){return s===null||s.nativeEvent!==_?(s={blockedOn:a,domEventName:u,eventSystemFlags:f,nativeEvent:_,targetContainers:[b]},a!==null&&(a=ci(a),a!==null&&Xs(a)),s):(s.eventSystemFlags|=f,a=s.targetContainers,b!==null&&a.indexOf(b)===-1&&a.push(b),s)}function xc(s,a,u,f,b){switch(a){case"focusin":return br=ei(br,s,a,u,f,b),!0;case"dragenter":return cs=ei(cs,s,a,u,f,b),!0;case"mouseover":return Or=ei(Or,s,a,u,f,b),!0;case"pointerover":var _=b.pointerId;return Go.set(_,ei(Go.get(_)||null,s,a,u,f,b)),!0;case"gotpointercapture":return _=b.pointerId,Ze.set(_,ei(Ze.get(_)||null,s,a,u,f,b)),!0}return!1}function Xa(s){var a=li(s.target);if(a!==null){var u=Dr(a);if(u!==null){if(a=u.tag,a===13){if(a=os(u),a!==null){s.blockedOn=a,qo(s.priority,function(){Ya(u)});return}}else if(a===3&&u.stateNode.current.memoizedState.isDehydrated){s.blockedOn=u.tag===3?u.stateNode.containerInfo:null;return}}}s.blockedOn=null}function Fr(s){if(s.blockedOn!==null)return!1;for(var a=s.targetContainers;0<a.length;){var u=nl(s.domEventName,s.eventSystemFlags,a[0],s.nativeEvent);if(u===null){u=s.nativeEvent;var f=new u.constructor(u.type,u);rs=f,u.target.dispatchEvent(f),rs=null}else return a=ci(u),a!==null&&Xs(a),s.blockedOn=u,!1;a.shift()}return!0}function el(s,a,u){Fr(s)&&u.delete(a)}function Zo(){Jo=!1,br!==null&&Fr(br)&&(br=null),cs!==null&&Fr(cs)&&(cs=null),Or!==null&&Fr(Or)&&(Or=null),Go.forEach(el),Ze.forEach(el)}function Ut(s,a){s.blockedOn===a&&(s.blockedOn=null,Jo||(Jo=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,Zo)))}function wr(s){function a(b){return Ut(b,s)}if(0<zi.length){Ut(zi[0],s);for(var u=1;u<zi.length;u++){var f=zi[u];f.blockedOn===s&&(f.blockedOn=null)}}for(br!==null&&Ut(br,s),cs!==null&&Ut(cs,s),Or!==null&&Ut(Or,s),Go.forEach(a),Ze.forEach(a),u=0;u<mn.length;u++)f=mn[u],f.blockedOn===s&&(f.blockedOn=null);for(;0<mn.length&&(u=mn[0],u.blockedOn===null);)Xa(u),u.blockedOn===null&&mn.shift()}var ti=M.ReactCurrentBatchConfig,Ko=!0;function Mm(s,a,u,f){var b=gt,_=ti.transition;ti.transition=null;try{gt=1,Yo(s,a,u,f)}finally{gt=b,ti.transition=_}}function su(s,a,u,f){var b=gt,_=ti.transition;ti.transition=null;try{gt=4,Yo(s,a,u,f)}finally{gt=b,ti.transition=_}}function Yo(s,a,u,f){if(Ko){var b=nl(s,a,u,f);if(b===null)o(s,a,f,tl,u),yc(s,f);else if(xc(b,s,a,u,f))f.stopPropagation();else if(yc(s,f),a&4&&-1<Ct.indexOf(s)){for(;b!==null;){var _=ci(b);if(_!==null&&Ka(_),_=nl(s,a,u,f),_===null&&o(s,a,f,tl,u),_===b)break;b=_}b!==null&&f.stopPropagation()}else o(s,a,f,null,u)}}var tl=null;function nl(s,a,u,f){if(tl=null,s=ss(f),s=li(s),s!==null)if(a=Dr(s),a===null)s=null;else if(u=a.tag,u===13){if(s=os(a),s!==null)return s;s=null}else if(u===3){if(a.stateNode.current.memoizedState.isDehydrated)return a.tag===3?a.stateNode.containerInfo:null;s=null}else a!==s&&(s=null);return tl=s,null}function ft(s){switch(s){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Uo()){case pc:return 1;case nu:return 4;case Ja:case fc:return 16;case $i:return 536870912;default:return 16}default:return 16}}var Ps=null,Zn=null,Ts=null;function vc(){if(Ts)return Ts;var s,a=Zn,u=a.length,f,b="value"in Ps?Ps.value:Ps.textContent,_=b.length;for(s=0;s<u&&a[s]===b[s];s++);var T=u-s;for(f=1;f<=T&&a[u-f]===b[_-f];f++);return Ts=b.slice(s,1<f?1-f:void 0)}function rl(s){var a=s.keyCode;return"charCode"in s?(s=s.charCode,s===0&&a===13&&(s=13)):s=a,s===10&&(s=13),32<=s||s===13?s:0}function Wi(){return!0}function iu(){return!1}function Ln(s){function a(u,f,b,_,T){this._reactName=u,this._targetInst=b,this.type=f,this.nativeEvent=_,this.target=T,this.currentTarget=null;for(var D in s)s.hasOwnProperty(D)&&(u=s[D],this[D]=u?u(_):_[D]);return this.isDefaultPrevented=(_.defaultPrevented!=null?_.defaultPrevented:_.returnValue===!1)?Wi:iu,this.isPropagationStopped=iu,this}return q(a.prototype,{preventDefault:function(){this.defaultPrevented=!0;var u=this.nativeEvent;u&&(u.preventDefault?u.preventDefault():typeof u.returnValue!="unknown"&&(u.returnValue=!1),this.isDefaultPrevented=Wi)},stopPropagation:function(){var u=this.nativeEvent;u&&(u.stopPropagation?u.stopPropagation():typeof u.cancelBubble!="unknown"&&(u.cancelBubble=!0),this.isPropagationStopped=Wi)},persist:function(){},isPersistent:Wi}),a}var Ui={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(s){return s.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},bc=Ln(Ui),ni=q({},Ui,{view:0,detail:0}),Im=Ln(ni),sr,wc,Hi,_r=q({},ni,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:si,button:0,buttons:0,relatedTarget:function(s){return s.relatedTarget===void 0?s.fromElement===s.srcElement?s.toElement:s.fromElement:s.relatedTarget},movementX:function(s){return"movementX"in s?s.movementX:(s!==Hi&&(Hi&&s.type==="mousemove"?(sr=s.screenX-Hi.screenX,wc=s.screenY-Hi.screenY):wc=sr=0,Hi=s),sr)},movementY:function(s){return"movementY"in s?s.movementY:wc}}),_c=Ln(_r),ou=q({},_r,{dataTransfer:0}),Sc=Ln(ou),$m=q({},ni,{relatedTarget:0}),sl=Ln($m),au=q({},Ui,{animationName:0,elapsedTime:0,pseudoElement:0}),Dm=Ln(au),Om=q({},Ui,{clipboardData:function(s){return"clipboardData"in s?s.clipboardData:window.clipboardData}}),Nc=Ln(Om),Fm=q({},Ui,{data:0}),jc=Ln(Fm),lu={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},il={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"},ri={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Bm(s){var a=this.nativeEvent;return a.getModifierState?a.getModifierState(s):(s=ri[s])?!!a[s]:!1}function si(){return Bm}var ir=q({},ni,{key:function(s){if(s.key){var a=lu[s.key]||s.key;if(a!=="Unidentified")return a}return s.type==="keypress"?(s=rl(s),s===13?"Enter":String.fromCharCode(s)):s.type==="keydown"||s.type==="keyup"?il[s.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:si,charCode:function(s){return s.type==="keypress"?rl(s):0},keyCode:function(s){return s.type==="keydown"||s.type==="keyup"?s.keyCode:0},which:function(s){return s.type==="keypress"?rl(s):s.type==="keydown"||s.type==="keyup"?s.keyCode:0}}),cu=Ln(ir),du=q({},_r,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),uu=Ln(du),kc=q({},ni,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:si}),Cc=Ln(kc),zm=q({},Ui,{propertyName:0,elapsedTime:0,pseudoElement:0}),Wm=Ln(zm),hu=q({},_r,{deltaX:function(s){return"deltaX"in s?s.deltaX:"wheelDeltaX"in s?-s.wheelDeltaX:0},deltaY:function(s){return"deltaY"in s?s.deltaY:"wheelDeltaY"in s?-s.wheelDeltaY:"wheelDelta"in s?-s.wheelDelta:0},deltaZ:0,deltaMode:0}),Um=Ln(hu),Sr=[9,13,27,32],Es=m&&"CompositionEvent"in window,Qo=null;m&&"documentMode"in document&&(Qo=document.documentMode);var ds=m&&"TextEvent"in window&&!Qo,mu=m&&(!Es||Qo&&8<Qo&&11>=Qo),ii=" ",pu=!1;function Vi(s,a){switch(s){case"keyup":return Sr.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Pc(s){return s=s.detail,typeof s=="object"&&"data"in s?s.data:null}var us=!1;function Hm(s,a){switch(s){case"compositionend":return Pc(a);case"keypress":return a.which!==32?null:(pu=!0,ii);case"textInput":return s=a.data,s===ii&&pu?null:s;default:return null}}function As(s,a){if(us)return s==="compositionend"||!Es&&Vi(s,a)?(s=vc(),Ts=Zn=Ps=null,us=!1,s):null;switch(s){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1<a.char.length)return a.char;if(a.which)return String.fromCharCode(a.which)}return null;case"compositionend":return mu&&a.locale!=="ko"?null:a.data;default:return null}}var ol={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 fu(s){var a=s&&s.nodeName&&s.nodeName.toLowerCase();return a==="input"?!!ol[s.type]:a==="textarea"}function al(s,a,u,f){fe(f),a=p(a,"onChange"),0<a.length&&(u=new bc("onChange","change",null,u,f),s.push({event:u,listeners:a}))}var Xo=null,Kn=null;function Vm(s){Dc(s,0)}function hs(s){var a=di(s);if(kt(a))return s}function qm(s,a){if(s==="change")return a}var Br=!1;if(m){var qi;if(m){var ll="oninput"in document;if(!ll){var cl=document.createElement("div");cl.setAttribute("oninput","return;"),ll=typeof cl.oninput=="function"}qi=ll}else qi=!1;Br=qi&&(!document.documentMode||9<document.documentMode)}function ea(){Xo&&(Xo.detachEvent("onpropertychange",dl),Kn=Xo=null)}function dl(s){if(s.propertyName==="value"&&hs(Kn)){var a=[];al(a,Kn,s,ss(s)),Gn(Vm,a)}}function ul(s,a,u){s==="focusin"?(ea(),Xo=a,Kn=u,Xo.attachEvent("onpropertychange",dl)):s==="focusout"&&ea()}function Ji(s){if(s==="selectionchange"||s==="keyup"||s==="keydown")return hs(Kn)}function hl(s,a){if(s==="click")return hs(a)}function Tc(s,a){if(s==="input"||s==="change")return hs(a)}function gu(s,a){return s===a&&(s!==0||1/s===1/a)||s!==s&&a!==a}var Nr=typeof Object.is=="function"?Object.is:gu;function Rs(s,a){if(Nr(s,a))return!0;if(typeof s!="object"||s===null||typeof a!="object"||a===null)return!1;var u=Object.keys(s),f=Object.keys(a);if(u.length!==f.length)return!1;for(f=0;f<u.length;f++){var b=u[f];if(!g.call(a,b)||!Nr(s[b],a[b]))return!1}return!0}function yu(s){for(;s&&s.firstChild;)s=s.firstChild;return s}function Ec(s,a){var u=yu(s);s=0;for(var f;u;){if(u.nodeType===3){if(f=s+u.textContent.length,s<=a&&f>=a)return{node:u,offset:a-s};s=f}e:{for(;u;){if(u.nextSibling){u=u.nextSibling;break e}u=u.parentNode}u=void 0}u=yu(u)}}function xu(s,a){return s&&a?s===a?!0:s&&s.nodeType===3?!1:a&&a.nodeType===3?xu(s,a.parentNode):"contains"in s?s.contains(a):s.compareDocumentPosition?!!(s.compareDocumentPosition(a)&16):!1:!1}function Ac(){for(var s=window,a=dn();a instanceof s.HTMLIFrameElement;){try{var u=typeof a.contentWindow.location.href=="string"}catch{u=!1}if(u)s=a.contentWindow;else break;a=dn(s.document)}return a}function Rc(s){var a=s&&s.nodeName&&s.nodeName.toLowerCase();return a&&(a==="input"&&(s.type==="text"||s.type==="search"||s.type==="tel"||s.type==="url"||s.type==="password")||a==="textarea"||s.contentEditable==="true")}function zr(s){var a=Ac(),u=s.focusedElem,f=s.selectionRange;if(a!==u&&u&&u.ownerDocument&&xu(u.ownerDocument.documentElement,u)){if(f!==null&&Rc(u)){if(a=f.start,s=f.end,s===void 0&&(s=a),"selectionStart"in u)u.selectionStart=a,u.selectionEnd=Math.min(s,u.value.length);else if(s=(a=u.ownerDocument||document)&&a.defaultView||window,s.getSelection){s=s.getSelection();var b=u.textContent.length,_=Math.min(f.start,b);f=f.end===void 0?_:Math.min(f.end,b),!s.extend&&_>f&&(b=f,f=_,_=b),b=Ec(u,_);var T=Ec(u,f);b&&T&&(s.rangeCount!==1||s.anchorNode!==b.node||s.anchorOffset!==b.offset||s.focusNode!==T.node||s.focusOffset!==T.offset)&&(a=a.createRange(),a.setStart(b.node,b.offset),s.removeAllRanges(),_>f?(s.addRange(a),s.extend(T.node,T.offset)):(a.setEnd(T.node,T.offset),s.addRange(a)))}}for(a=[],s=u;s=s.parentNode;)s.nodeType===1&&a.push({element:s,left:s.scrollLeft,top:s.scrollTop});for(typeof u.focus=="function"&&u.focus(),u=0;u<a.length;u++)s=a[u],s.element.scrollLeft=s.left,s.element.scrollTop=s.top}}var ml=m&&"documentMode"in document&&11>=document.documentMode,Gi=null,Zi=null,ta=null,pl=!1;function vu(s,a,u){var f=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;pl||Gi==null||Gi!==dn(f)||(f=Gi,"selectionStart"in f&&Rc(f)?f={start:f.selectionStart,end:f.selectionEnd}:(f=(f.ownerDocument&&f.ownerDocument.defaultView||window).getSelection(),f={anchorNode:f.anchorNode,anchorOffset:f.anchorOffset,focusNode:f.focusNode,focusOffset:f.focusOffset}),ta&&Rs(ta,f)||(ta=f,f=p(Zi,"onSelect"),0<f.length&&(a=new bc("onSelect","select",null,a,u),s.push({event:a,listeners:f}),a.target=Gi)))}function Ls(s,a){var u={};return u[s.toLowerCase()]=a.toLowerCase(),u["Webkit"+s]="webkit"+a,u["Moz"+s]="moz"+a,u}var Ki={animationend:Ls("Animation","AnimationEnd"),animationiteration:Ls("Animation","AnimationIteration"),animationstart:Ls("Animation","AnimationStart"),transitionend:Ls("Transition","TransitionEnd")},Ms={},Lc={};m&&(Lc=document.createElement("div").style,"AnimationEvent"in window||(delete Ki.animationend.animation,delete Ki.animationiteration.animation,delete Ki.animationstart.animation),"TransitionEvent"in window||delete Ki.transitionend.transition);function na(s){if(Ms[s])return Ms[s];if(!Ki[s])return s;var a=Ki[s],u;for(u in a)if(a.hasOwnProperty(u)&&u in Lc)return Ms[s]=a[u];return s}var bu=na("animationend"),Wr=na("animationiteration"),Mc=na("animationstart"),Ic=na("transitionend"),Yi=new Map,wu="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function jr(s,a){Yi.set(s,a),d(a,[s])}for(var oi=0;oi<wu.length;oi++){var fl=wu[oi],_u=fl.toLowerCase(),Jm=fl[0].toUpperCase()+fl.slice(1);jr(_u,"on"+Jm)}jr(bu,"onAnimationEnd"),jr(Wr,"onAnimationIteration"),jr(Mc,"onAnimationStart"),jr("dblclick","onDoubleClick"),jr("focusin","onFocus"),jr("focusout","onBlur"),jr(Ic,"onTransitionEnd"),h("onMouseEnter",["mouseout","mouseover"]),h("onMouseLeave",["mouseout","mouseover"]),h("onPointerEnter",["pointerout","pointerover"]),h("onPointerLeave",["pointerout","pointerover"]),d("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),d("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),d("onBeforeInput",["compositionend","keypress","textInput","paste"]),d("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),d("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),d("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Qi="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(" "),Su=new Set("cancel close invalid load scroll toggle".split(" ").concat(Qi));function $c(s,a,u){var f=s.type||"unknown-event";s.currentTarget=u,Ii(f,a,void 0,s),s.currentTarget=null}function Dc(s,a){a=(a&4)!==0;for(var u=0;u<s.length;u++){var f=s[u],b=f.event;f=f.listeners;e:{var _=void 0;if(a)for(var T=f.length-1;0<=T;T--){var D=f[T],U=D.instance,ee=D.currentTarget;if(D=D.listener,U!==_&&b.isPropagationStopped())break e;$c(b,D,ee),_=U}else for(T=0;T<f.length;T++){if(D=f[T],U=D.instance,ee=D.currentTarget,D=D.listener,U!==_&&b.isPropagationStopped())break e;$c(b,D,ee),_=U}}}if(Cs)throw s=Mi,Cs=!1,Mi=null,s}function Pt(s,a){var u=a[no];u===void 0&&(u=a[no]=new Set);var f=s+"__bubble";u.has(f)||(Nu(a,s,2,!1),u.add(f))}function Oc(s,a,u){var f=0;a&&(f|=4),Nu(u,s,f,a)}var ra="_reactListening"+Math.random().toString(36).slice(2);function Xi(s){if(!s[ra]){s[ra]=!0,i.forEach(function(u){u!=="selectionchange"&&(Su.has(u)||Oc(u,!1,s),Oc(u,!0,s))});var a=s.nodeType===9?s:s.ownerDocument;a===null||a[ra]||(a[ra]=!0,Oc("selectionchange",!1,a))}}function Nu(s,a,u,f){switch(ft(a)){case 1:var b=Mm;break;case 4:b=su;break;default:b=Yo}u=b.bind(null,a,u,s),b=void 0,!Va||a!=="touchstart"&&a!=="touchmove"&&a!=="wheel"||(b=!0),f?b!==void 0?s.addEventListener(a,u,{capture:!0,passive:b}):s.addEventListener(a,u,!0):b!==void 0?s.addEventListener(a,u,{passive:b}):s.addEventListener(a,u,!1)}function o(s,a,u,f,b){var _=f;if((a&1)===0&&(a&2)===0&&f!==null)e:for(;;){if(f===null)return;var T=f.tag;if(T===3||T===4){var D=f.stateNode.containerInfo;if(D===b||D.nodeType===8&&D.parentNode===b)break;if(T===4)for(T=f.return;T!==null;){var U=T.tag;if((U===3||U===4)&&(U=T.stateNode.containerInfo,U===b||U.nodeType===8&&U.parentNode===b))return;T=T.return}for(;D!==null;){if(T=li(D),T===null)return;if(U=T.tag,U===5||U===6){f=_=T;continue e}D=D.parentNode}}f=f.return}Gn(function(){var ee=_,le=ss(u),he=[];e:{var oe=Yi.get(s);if(oe!==void 0){var we=bc,Pe=s;switch(s){case"keypress":if(rl(u)===0)break e;case"keydown":case"keyup":we=cu;break;case"focusin":Pe="focus",we=sl;break;case"focusout":Pe="blur",we=sl;break;case"beforeblur":case"afterblur":we=sl;break;case"click":if(u.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":we=_c;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":we=Sc;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":we=Cc;break;case bu:case Wr:case Mc:we=Dm;break;case Ic:we=Wm;break;case"scroll":we=Im;break;case"wheel":we=Um;break;case"copy":case"cut":case"paste":we=Nc;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":we=uu}var Ae=(a&4)!==0,en=!Ae&&s==="scroll",K=Ae?oe!==null?oe+"Capture":null:oe;Ae=[];for(var J=ee,Y;J!==null;){Y=J;var me=Y.stateNode;if(Y.tag===5&&me!==null&&(Y=me,K!==null&&(me=is(J,K),me!=null&&Ae.push(c(J,me,Y)))),en)break;J=J.return}0<Ae.length&&(oe=new we(oe,Pe,null,u,le),he.push({event:oe,listeners:Ae}))}}if((a&7)===0){e:{if(oe=s==="mouseover"||s==="pointerover",we=s==="mouseout"||s==="pointerout",oe&&u!==rs&&(Pe=u.relatedTarget||u.fromElement)&&(li(Pe)||Pe[Nt]))break e;if((we||oe)&&(oe=le.window===le?le:(oe=le.ownerDocument)?oe.defaultView||oe.parentWindow:window,we?(Pe=u.relatedTarget||u.toElement,we=ee,Pe=Pe?li(Pe):null,Pe!==null&&(en=Dr(Pe),Pe!==en||Pe.tag!==5&&Pe.tag!==6)&&(Pe=null)):(we=null,Pe=ee),we!==Pe)){if(Ae=_c,me="onMouseLeave",K="onMouseEnter",J="mouse",(s==="pointerout"||s==="pointerover")&&(Ae=uu,me="onPointerLeave",K="onPointerEnter",J="pointer"),en=we==null?oe:di(we),Y=Pe==null?oe:di(Pe),oe=new Ae(me,J+"leave",we,u,le),oe.target=en,oe.relatedTarget=Y,me=null,li(le)===ee&&(Ae=new Ae(K,J+"enter",Pe,u,le),Ae.target=Y,Ae.relatedTarget=en,me=Ae),en=me,we&&Pe)t:{for(Ae=we,K=Pe,J=0,Y=Ae;Y;Y=v(Y))J++;for(Y=0,me=K;me;me=v(me))Y++;for(;0<J-Y;)Ae=v(Ae),J--;for(;0<Y-J;)K=v(K),Y--;for(;J--;){if(Ae===K||K!==null&&Ae===K.alternate)break t;Ae=v(Ae),K=v(K)}Ae=null}else Ae=null;we!==null&&N(he,oe,we,Ae,!1),Pe!==null&&en!==null&&N(he,en,Pe,Ae,!0)}}e:{if(oe=ee?di(ee):window,we=oe.nodeName&&oe.nodeName.toLowerCase(),we==="select"||we==="input"&&oe.type==="file")var Le=qm;else if(fu(oe))if(Br)Le=Tc;else{Le=Ji;var ze=ul}else(we=oe.nodeName)&&we.toLowerCase()==="input"&&(oe.type==="checkbox"||oe.type==="radio")&&(Le=hl);if(Le&&(Le=Le(s,ee))){al(he,Le,u,le);break e}ze&&ze(s,oe,ee),s==="focusout"&&(ze=oe._wrapperState)&&ze.controlled&&oe.type==="number"&&xn(oe,"number",oe.value)}switch(ze=ee?di(ee):window,s){case"focusin":(fu(ze)||ze.contentEditable==="true")&&(Gi=ze,Zi=ee,ta=null);break;case"focusout":ta=Zi=Gi=null;break;case"mousedown":pl=!0;break;case"contextmenu":case"mouseup":case"dragend":pl=!1,vu(he,u,le);break;case"selectionchange":if(ml)break;case"keydown":case"keyup":vu(he,u,le)}var We;if(Es)e:{switch(s){case"compositionstart":var Ye="onCompositionStart";break e;case"compositionend":Ye="onCompositionEnd";break e;case"compositionupdate":Ye="onCompositionUpdate";break e}Ye=void 0}else us?Vi(s,u)&&(Ye="onCompositionEnd"):s==="keydown"&&u.keyCode===229&&(Ye="onCompositionStart");Ye&&(mu&&u.locale!=="ko"&&(us||Ye!=="onCompositionStart"?Ye==="onCompositionEnd"&&us&&(We=vc()):(Ps=le,Zn="value"in Ps?Ps.value:Ps.textContent,us=!0)),ze=p(ee,Ye),0<ze.length&&(Ye=new jc(Ye,s,null,u,le),he.push({event:Ye,listeners:ze}),We?Ye.data=We:(We=Pc(u),We!==null&&(Ye.data=We)))),(We=ds?Hm(s,u):As(s,u))&&(ee=p(ee,"onBeforeInput"),0<ee.length&&(le=new jc("onBeforeInput","beforeinput",null,u,le),he.push({event:le,listeners:ee}),le.data=We))}Dc(he,a)})}function c(s,a,u){return{instance:s,listener:a,currentTarget:u}}function p(s,a){for(var u=a+"Capture",f=[];s!==null;){var b=s,_=b.stateNode;b.tag===5&&_!==null&&(b=_,_=is(s,u),_!=null&&f.unshift(c(s,_,b)),_=is(s,a),_!=null&&f.push(c(s,_,b))),s=s.return}return f}function v(s){if(s===null)return null;do s=s.return;while(s&&s.tag!==5);return s||null}function N(s,a,u,f,b){for(var _=a._reactName,T=[];u!==null&&u!==f;){var D=u,U=D.alternate,ee=D.stateNode;if(U!==null&&U===f)break;D.tag===5&&ee!==null&&(D=ee,b?(U=is(u,_),U!=null&&T.unshift(c(u,U,D))):b||(U=is(u,_),U!=null&&T.push(c(u,U,D)))),u=u.return}T.length!==0&&s.push({event:a,listeners:T})}var R=/\r\n?/g,B=/\u0000|\uFFFD/g;function Z(s){return(typeof s=="string"?s:""+s).replace(R,`
38`).replace(B,"")}function Q(s,a,u){if(a=Z(a),Z(s)!==a&&u)throw Error(n(425))}function se(){}var ve=null,Fe=null;function st(s,a){return s==="textarea"||s==="noscript"||typeof a.children=="string"||typeof a.children=="number"||typeof a.dangerouslySetInnerHTML=="object"&&a.dangerouslySetInnerHTML!==null&&a.dangerouslySetInnerHTML.__html!=null}var pn=typeof setTimeout=="function"?setTimeout:void 0,an=typeof clearTimeout=="function"?clearTimeout:void 0,Yn=typeof Promise=="function"?Promise:void 0,Mn=typeof queueMicrotask=="function"?queueMicrotask:typeof Yn<"u"?function(s){return Yn.resolve(null).then(s).catch(eo)}:pn;function eo(s){setTimeout(function(){throw s})}function Fc(s,a){var u=a,f=0;do{var b=u.nextSibling;if(s.removeChild(u),b&&b.nodeType===8)if(u=b.data,u==="/$"){if(f===0){s.removeChild(b),wr(a);return}f--}else u!=="$"&&u!=="$?"&&u!=="$!"||f++;u=b}while(u);wr(a)}function Is(s){for(;s!=null;s=s.nextSibling){var a=s.nodeType;if(a===1||a===3)break;if(a===8){if(a=s.data,a==="$"||a==="$!"||a==="$?")break;if(a==="/$")return null}}return s}function ju(s){s=s.previousSibling;for(var a=0;s;){if(s.nodeType===8){var u=s.data;if(u==="$"||u==="$!"||u==="$?"){if(a===0)return s;a--}else u==="/$"&&a++}s=s.previousSibling}return null}var ai=Math.random().toString(36).slice(2),Ur="__reactFiber$"+ai,to="__reactProps$"+ai,Nt="__reactContainer$"+ai,no="__reactEvents$"+ai,Gm="__reactListeners$"+ai,Zm="__reactHandles$"+ai;function li(s){var a=s[Ur];if(a)return a;for(var u=s.parentNode;u;){if(a=u[Nt]||u[Ur]){if(u=a.alternate,a.child!==null||u!==null&&u.child!==null)for(s=ju(s);s!==null;){if(u=s[Ur])return u;s=ju(s)}return a}s=u,u=s.parentNode}return null}function ci(s){return s=s[Ur]||s[Nt],!s||s.tag!==5&&s.tag!==6&&s.tag!==13&&s.tag!==3?null:s}function di(s){if(s.tag===5||s.tag===6)return s.stateNode;throw Error(n(33))}function gl(s){return s[to]||null}var Km=[],yl=-1;function ro(s){return{current:s}}function Dt(s){0>yl||(s.current=Km[yl],Km[yl]=null,yl--)}function Mt(s,a){yl++,Km[yl]=s.current,s.current=a}var so={},In=ro(so),or=ro(!1),sa=so;function xl(s,a){var u=s.type.contextTypes;if(!u)return so;var f=s.stateNode;if(f&&f.__reactInternalMemoizedUnmaskedChildContext===a)return f.__reactInternalMemoizedMaskedChildContext;var b={},_;for(_ in u)b[_]=a[_];return f&&(s=s.stateNode,s.__reactInternalMemoizedUnmaskedChildContext=a,s.__reactInternalMemoizedMaskedChildContext=b),b}function ar(s){return s=s.childContextTypes,s!=null}function ku(){Dt(or),Dt(In)}function cy(s,a,u){if(In.current!==so)throw Error(n(168));Mt(In,a),Mt(or,u)}function dy(s,a,u){var f=s.stateNode;if(a=a.childContextTypes,typeof f.getChildContext!="function")return u;f=f.getChildContext();for(var b in f)if(!(b in a))throw Error(n(108,$e(s)||"Unknown",b));return q({},u,f)}function Cu(s){return s=(s=s.stateNode)&&s.__reactInternalMemoizedMergedChildContext||so,sa=In.current,Mt(In,s),Mt(or,or.current),!0}function uy(s,a,u){var f=s.stateNode;if(!f)throw Error(n(169));u?(s=dy(s,a,sa),f.__reactInternalMemoizedMergedChildContext=s,Dt(or),Dt(In),Mt(In,s)):Dt(or),Mt(or,u)}var ui=null,Pu=!1,Ym=!1;function hy(s){ui===null?ui=[s]:ui.push(s)}function L4(s){Pu=!0,hy(s)}function io(){if(!Ym&&ui!==null){Ym=!0;var s=0,a=gt;try{var u=ui;for(gt=1;s<u.length;s++){var f=u[s];do f=f(!0);while(f!==null)}ui=null,Pu=!1}catch(b){throw ui!==null&&(ui=ui.slice(s+1)),Qe(pc,io),b}finally{gt=a,Ym=!1}}return null}var vl=[],bl=0,Tu=null,Eu=0,Hr=[],Vr=0,ia=null,hi=1,mi="";function oa(s,a){vl[bl++]=Eu,vl[bl++]=Tu,Tu=s,Eu=a}function my(s,a,u){Hr[Vr++]=hi,Hr[Vr++]=mi,Hr[Vr++]=ia,ia=s;var f=hi;s=mi;var b=32-et(f)-1;f&=~(1<<b),u+=1;var _=32-et(a)+b;if(30<_){var T=b-b%5;_=(f&(1<<T)-1).toString(32),f>>=T,b-=T,hi=1<<32-et(a)+b|u<<b|f,mi=_+s}else hi=1<<_|u<<b|f,mi=s}function Qm(s){s.return!==null&&(oa(s,1),my(s,1,0))}function Xm(s){for(;s===Tu;)Tu=vl[--bl],vl[bl]=null,Eu=vl[--bl],vl[bl]=null;for(;s===ia;)ia=Hr[--Vr],Hr[Vr]=null,mi=Hr[--Vr],Hr[Vr]=null,hi=Hr[--Vr],Hr[Vr]=null}var kr=null,Cr=null,Wt=!1,ms=null;function py(s,a){var u=Zr(5,null,null,0);u.elementType="DELETED",u.stateNode=a,u.return=s,a=s.deletions,a===null?(s.deletions=[u],s.flags|=16):a.push(u)}function fy(s,a){switch(s.tag){case 5:var u=s.type;return a=a.nodeType!==1||u.toLowerCase()!==a.nodeName.toLowerCase()?null:a,a!==null?(s.stateNode=a,kr=s,Cr=Is(a.firstChild),!0):!1;case 6:return a=s.pendingProps===""||a.nodeType!==3?null:a,a!==null?(s.stateNode=a,kr=s,Cr=null,!0):!1;case 13:return a=a.nodeType!==8?null:a,a!==null?(u=ia!==null?{id:hi,overflow:mi}:null,s.memoizedState={dehydrated:a,treeContext:u,retryLane:1073741824},u=Zr(18,null,null,0),u.stateNode=a,u.return=s,s.child=u,kr=s,Cr=null,!0):!1;default:return!1}}function ep(s){return(s.mode&1)!==0&&(s.flags&128)===0}function tp(s){if(Wt){var a=Cr;if(a){var u=a;
vendor: 5,684 bytes, line 38
38if(!fy(s,a)){if(ep(s))throw Error(n(418));a=Is(u.nextSibling);var f=kr;a&&fy(s,a)?py(f,u):(s.flags=s.flags&-4097|2,Wt=!1,kr=s)}}else{if(ep(s))throw Error(n(418));s.flags=s.flags&-4097|2,Wt=!1,kr=s}}}function gy(s){for(s=s.return;s!==null&&s.tag!==5&&s.tag!==3&&s.tag!==13;)s=s.return;kr=s}function Au(s){if(s!==kr)return!1;if(!Wt)return gy(s),Wt=!0,!1;var a;if((a=s.tag!==3)&&!(a=s.tag!==5)&&(a=s.type,a=a!=="head"&&a!=="body"&&!st(s.type,s.memoizedProps)),a&&(a=Cr)){if(ep(s))throw yy(),Error(n(418));for(;a;)py(s,a),a=Is(a.nextSibling)}if(gy(s),s.tag===13){if(s=s.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(n(317));e:{for(s=s.nextSibling,a=0;s;){if(s.nodeType===8){var u=s.data;if(u==="/$"){if(a===0){Cr=Is(s.nextSibling);break e}a--}else u!=="$"&&u!=="$!"&&u!=="$?"||a++}s=s.nextSibling}Cr=null}}else Cr=kr?Is(s.stateNode.nextSibling):null;return!0}function yy(){for(var s=Cr;s;)s=Is(s.nextSibling)}function wl(){Cr=kr=null,Wt=!1}function np(s){ms===null?ms=[s]:ms.push(s)}var M4=M.ReactCurrentBatchConfig;function Bc(s,a,u){if(s=u.ref,s!==null&&typeof s!="function"&&typeof s!="object"){if(u._owner){if(u=u._owner,u){if(u.tag!==1)throw Error(n(309));var f=u.stateNode}if(!f)throw Error(n(147,s));var b=f,_=""+s;return a!==null&&a.ref!==null&&typeof a.ref=="function"&&a.ref._stringRef===_?a.ref:(a=function(T){var D=b.refs;T===null?delete D[_]:D[_]=T},a._stringRef=_,a)}if(typeof s!="string")throw Error(n(284));if(!u._owner)throw Error(n(290,s))}return s}function Ru(s,a){throw s=Object.prototype.toString.call(a),Error(n(31,s==="[object Object]"?"object with keys {"+Object.keys(a).join(", ")+"}":s))}function xy(s){var a=s._init;return a(s._payload)}function vy(s){function a(K,J){if(s){var Y=K.deletions;Y===null?(K.deletions=[J],K.flags|=16):Y.push(J)}}function u(K,J){if(!s)return null;for(;J!==null;)a(K,J),J=J.sibling;return null}function f(K,J){for(K=new Map;J!==null;)J.key!==null?K.set(J.key,J):K.set(J.index,J),J=J.sibling;return K}function b(K,J){return K=po(K,J),K.index=0,K.sibling=null,K}function _(K,J,Y){return K.index=Y,s?(Y=K.alternate,Y!==null?(Y=Y.index,Y<J?(K.flags|=2,J):Y):(K.flags|=2,J)):(K.flags|=1048576,J)}function T(K){return s&&K.alternate===null&&(K.flags|=2),K}function D(K,J,Y,me){return J===null||J.tag!==6?(J=Jp(Y,K.mode,me),J.return=K,J):(J=b(J,Y),J.return=K,J)}function U(K,J,Y,me){var Le=Y.type;return Le===V?le(K,J,Y.props.children,me,Y.key):J!==null&&(J.elementType===Le||typeof Le=="object"&&Le!==null&&Le.$$typeof===Se&&xy(Le)===J.type)?(me=b(J,Y.props),me.ref=Bc(K,J,Y),me.return=K,me):(me=nh(Y.type,Y.key,Y.props,null,K.mode,me),me.ref=Bc(K,J,Y),me.return=K,me)}function ee(K,J,Y,me){return J===null||J.tag!==4||J.stateNode.containerInfo!==Y.containerInfo||J.stateNode.implementation!==Y.implementation?(J=Gp(Y,K.mode,me),J.return=K,J):(J=b(J,Y.children||[]),J.return=K,J)}function le(K,J,Y,me,Le){return J===null||J.tag!==7?(J=pa(Y,K.mode,me,Le),J.return=K,J):(J=b(J,Y),J.return=K,J)}function he(K,J,Y){if(typeof J=="string"&&J!==""||typeof J=="number")return J=Jp(""+J,K.mode,Y),J.return=K,J;if(typeof J=="object"&&J!==null){switch(J.$$typeof){case F:return Y=nh(J.type,J.key,J.props,null,K.mode,Y),Y.ref=Bc(K,null,J),Y.return=K,Y;case z:return J=Gp(J,K.mode,Y),J.return=K,J;case Se:var me=J._init;return he(K,me(J._payload),Y)}if(Rt(J)||ue(J))return J=pa(J,K.mode,Y,null),J.return=K,J;Ru(K,J)}return null}function oe(K,J,Y,me){var Le=J!==null?J.key:null;if(typeof Y=="string"&&Y!==""||typeof Y=="number")return Le!==null?null:D(K,J,""+Y,me);if(typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case F:return Y.key===Le?U(K,J,Y,me):null;case z:return Y.key===Le?ee(K,J,Y,me):null;case Se:return Le=Y._init,oe(K,J,Le(Y._payload),me)}if(Rt(Y)||ue(Y))return Le!==null?null:le(K,J,Y,me,null);Ru(K,Y)}return null}function we(K,J,Y,me,Le){if(typeof me=="string"&&me!==""||typeof me=="number")return K=K.get(Y)||null,D(J,K,""+me,Le);if(typeof me=="object"&&me!==null){switch(me.$$typeof){case F:return K=K.get(me.key===null?Y:me.key)||null,U(J,K,me,Le);case z:return K=K.get(me.key===null?Y:me.key)||null,ee(J,K,me,Le);case Se:var ze=me._init;return we(K,J,Y,ze(me._payload),Le)}if(Rt(me)||ue(me))return K=K.get(Y)||null,le(J,K,me,Le,null);Ru(J,me)}return null}function Pe(K,J,Y,me){for(var Le=null,ze=null,We=J,Ye=J=0,_n=null;We!==null&&Ye<Y.length;Ye++){We.index>Ye?(_n=We,We=null):_n=We.sibling;var _t=oe(K,We,Y[Ye],me);if(_t===null){We===null&&(We=_n);break}s&&We&&_t.alternate===null&&a(K,We),J=_(_t,J,Ye),ze===null?Le=_t:ze.sibling=_t,ze=_t,We=_n}if(Ye===Y.length)return u(K,We),Wt&&oa(K,Ye),Le;if(We===null){for(;Ye<Y.length;Ye++)We=he(K,Y[Ye],me),We!==null&&(J=_(We,J,Ye),ze===null?Le=We:ze.sibling=We,ze=We);return Wt&&oa(K,Ye),Le}for(We=f(K,We);Ye<Y.length;Ye++)_n=we(We,K,Ye,Y[Ye],me),_n!==null&&(s&&_n.alternate!==null&&We.delete(_n.key===null?Ye:_n.key),J=_(_n,J,Ye),ze===null?Le=_n:ze.sibling=_n,ze=_n);return s&&We.forEach(function(fo){return a(K,fo)}),Wt&&oa(K,Ye),Le}function Ae(K,J,Y,me){var Le=ue(Y);if(typeof Le!="function")throw Error(n(150));if(Y=Le.call(Y),Y==null)throw Error(n(151));for(var ze=Le=null,We=J,Ye=J=0,_n=null,_t=Y.next();We!==null&&!_t.done;Ye++,_t=Y.next()){We.index>Ye?(_n=We,We=null):_n=We.sibling;var fo=oe(K,We,_t.value,me);if(fo===null){We===null&&(We=_n);break}s&&We&&fo.alternate===null&&a(K,We),J=_(fo,J,Ye),ze===null?Le=fo:ze.sibling=fo,ze=fo,We=_n}if(_t.done)return u(K,We),Wt&&oa(K,Ye),Le;if(We===null){for(;!_t.done;Ye++,_t=Y.next())_t=he(K,_t.value,me),_t!==null&&(J=_(_t,J,Ye),ze===null?Le=_t:ze.sibling=_t,ze=_t);return Wt&&oa(K,Ye),Le}for(We=f(K,We);!_t.done;Ye++,_t=Y.next())_t=we(We,K,Ye,_t.value,me),_t!==null&&(s&&_t.alternate!==null&&We.delete(_t.key===null?Ye:_t.ke
vendor: 9,676 bytes, line 38
38y),J=_(_t,J,Ye),ze===null?Le=_t:ze.sibling=_t,ze=_t);return s&&We.forEach(function(mN){return a(K,mN)}),Wt&&oa(K,Ye),Le}function en(K,J,Y,me){if(typeof Y=="object"&&Y!==null&&Y.type===V&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case F:e:{for(var Le=Y.key,ze=J;ze!==null;){if(ze.key===Le){if(Le=Y.type,Le===V){if(ze.tag===7){u(K,ze.sibling),J=b(ze,Y.props.children),J.return=K,K=J;break e}}else if(ze.elementType===Le||typeof Le=="object"&&Le!==null&&Le.$$typeof===Se&&xy(Le)===ze.type){u(K,ze.sibling),J=b(ze,Y.props),J.ref=Bc(K,ze,Y),J.return=K,K=J;break e}u(K,ze);break}else a(K,ze);ze=ze.sibling}Y.type===V?(J=pa(Y.props.children,K.mode,me,Y.key),J.return=K,K=J):(me=nh(Y.type,Y.key,Y.props,null,K.mode,me),me.ref=Bc(K,J,Y),me.return=K,K=me)}return T(K);case z:e:{for(ze=Y.key;J!==null;){if(J.key===ze)if(J.tag===4&&J.stateNode.containerInfo===Y.containerInfo&&J.stateNode.implementation===Y.implementation){u(K,J.sibling),J=b(J,Y.children||[]),J.return=K,K=J;break e}else{u(K,J);break}else a(K,J);J=J.sibling}J=Gp(Y,K.mode,me),J.return=K,K=J}return T(K);case Se:return ze=Y._init,en(K,J,ze(Y._payload),me)}if(Rt(Y))return Pe(K,J,Y,me);if(ue(Y))return Ae(K,J,Y,me);Ru(K,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"?(Y=""+Y,J!==null&&J.tag===6?(u(K,J.sibling),J=b(J,Y),J.return=K,K=J):(u(K,J),J=Jp(Y,K.mode,me),J.return=K,K=J),T(K)):u(K,J)}return en}var _l=vy(!0),by=vy(!1),Lu=ro(null),Mu=null,Sl=null,rp=null;function sp(){rp=Sl=Mu=null}function ip(s){var a=Lu.current;Dt(Lu),s._currentValue=a}function op(s,a,u){for(;s!==null;){var f=s.alternate;if((s.childLanes&a)!==a?(s.childLanes|=a,f!==null&&(f.childLanes|=a)):f!==null&&(f.childLanes&a)!==a&&(f.childLanes|=a),s===u)break;s=s.return}}function Nl(s,a){Mu=s,rp=Sl=null,s=s.dependencies,s!==null&&s.firstContext!==null&&((s.lanes&a)!==0&&(lr=!0),s.firstContext=null)}function qr(s){var a=s._currentValue;if(rp!==s)if(s={context:s,memoizedValue:a,next:null},Sl===null){if(Mu===null)throw Error(n(308));Sl=s,Mu.dependencies={lanes:0,firstContext:s}}else Sl=Sl.next=s;return a}var aa=null;function ap(s){aa===null?aa=[s]:aa.push(s)}function wy(s,a,u,f){var b=a.interleaved;return b===null?(u.next=u,ap(a)):(u.next=b.next,b.next=u),a.interleaved=u,pi(s,f)}function pi(s,a){s.lanes|=a;var u=s.alternate;for(u!==null&&(u.lanes|=a),u=s,s=s.return;s!==null;)s.childLanes|=a,u=s.alternate,u!==null&&(u.childLanes|=a),u=s,s=s.return;return u.tag===3?u.stateNode:null}var oo=!1;function lp(s){s.updateQueue={baseState:s.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function _y(s,a){s=s.updateQueue,a.updateQueue===s&&(a.updateQueue={baseState:s.baseState,firstBaseUpdate:s.firstBaseUpdate,lastBaseUpdate:s.lastBaseUpdate,shared:s.shared,effects:s.effects})}function fi(s,a){return{eventTime:s,lane:a,tag:0,payload:null,callback:null,next:null}}function ao(s,a,u){var f=s.updateQueue;if(f===null)return null;if(f=f.shared,(wt&2)!==0){var b=f.pending;return b===null?a.next=a:(a.next=b.next,b.next=a),f.pending=a,pi(s,u)}return b=f.interleaved,b===null?(a.next=a,ap(f)):(a.next=b.next,b.next=a),f.interleaved=a,pi(s,u)}function Iu(s,a,u){if(a=a.updateQueue,a!==null&&(a=a.shared,(u&4194240)!==0)){var f=a.lanes;f&=s.pendingLanes,u|=f,a.lanes=u,ls(s,u)}}function Sy(s,a){var u=s.updateQueue,f=s.alternate;if(f!==null&&(f=f.updateQueue,u===f)){var b=null,_=null;if(u=u.firstBaseUpdate,u!==null){do{var T={eventTime:u.eventTime,lane:u.lane,tag:u.tag,payload:u.payload,callback:u.callback,next:null};_===null?b=_=T:_=_.next=T,u=u.next}while(u!==null);_===null?b=_=a:_=_.next=a}else b=_=a;u={baseState:f.baseState,firstBaseUpdate:b,lastBaseUpdate:_,shared:f.shared,effects:f.effects},s.updateQueue=u;return}s=u.lastBaseUpdate,s===null?u.firstBaseUpdate=a:s.next=a,u.lastBaseUpdate=a}function $u(s,a,u,f){var b=s.updateQueue;oo=!1;var _=b.firstBaseUpdate,T=b.lastBaseUpdate,D=b.shared.pending;if(D!==null){b.shared.pending=null;var U=D,ee=U.next;U.next=null,T===null?_=ee:T.next=ee,T=U;var le=s.alternate;le!==null&&(le=le.updateQueue,D=le.lastBaseUpdate,D!==T&&(D===null?le.firstBaseUpdate=ee:D.next=ee,le.lastBaseUpdate=U))}if(_!==null){var he=b.baseState;T=0,le=ee=U=null,D=_;do{var oe=D.lane,we=D.eventTime;if((f&oe)===oe){le!==null&&(le=le.next={eventTime:we,lane:0,tag:D.tag,payload:D.payload,callback:D.callback,next:null});e:{var Pe=s,Ae=D;switch(oe=a,we=u,Ae.tag){case 1:if(Pe=Ae.payload,typeof Pe=="function"){he=Pe.call(we,he,oe);break e}he=Pe;break e;case 3:Pe.flags=Pe.flags&-65537|128;case 0:if(Pe=Ae.payload,oe=typeof Pe=="function"?Pe.call(we,he,oe):Pe,oe==null)break e;he=q({},he,oe);break e;case 2:oo=!0}}D.callback!==null&&D.lane!==0&&(s.flags|=64,oe=b.effects,oe===null?b.effects=[D]:oe.push(D))}else we={eventTime:we,lane:oe,tag:D.tag,payload:D.payload,callback:D.callback,next:null},le===null?(ee=le=we,U=he):le=le.next=we,T|=oe;if(D=D.next,D===null){if(D=b.shared.pending,D===null)break;oe=D,D=oe.next,oe.next=null,b.lastBaseUpdate=oe,b.shared.pending=null}}while(!0);if(le===null&&(U=he),b.baseState=U,b.firstBaseUpdate=ee,b.lastBaseUpdate=le,a=b.shared.interleaved,a!==null){b=a;do T|=b.lane,b=b.next;while(b!==a)}else _===null&&(b.shared.lanes=0);da|=T,s.lanes=T,s.memoizedState=he}}function Ny(s,a,u){if(s=a.effects,a.effects=null,s!==null)for(a=0;a<s.length;a++){var f=s[a],b=f.callback;if(b!==null){if(f.callback=null,f=u,typeof b!="function")throw Error(n(191,b));b.call(f)}}}var zc={},$s=ro(zc),Wc=ro(zc),Uc=ro(zc);function la(s){if(s===zc)throw Error(n(174));return s}function cp(s,a){switch(Mt(Uc,a),Mt(Wc,s),Mt($s,zc),s=a.nodeType,s){case 9:case 11:a=(a=a.documentElement)?a.namespaceURI:Mr(null,"");break;default:s=s===8?a.parentNode:a,a=s.namespaceURI||null,s=s.tagName,a=Mr(a,s)}Dt($s),Mt($s,a)}function jl(){Dt($s),Dt(Wc),Dt(Uc)}function jy(s){la(Uc.current);var a=la($s.current),u=Mr(a,s.type);a!==u&&(Mt(Wc,s),Mt($s,u))}function dp(s){Wc.current===s&&(Dt($s),Dt(Wc))}var Ht=ro(0);function Du(s){for(var a=s;a!==null;){if(a.tag===13){var u=a.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||u.data==="$!"))return a}else if(a.tag===19&&a.memoizedProps.revealOrder!==void 0){if((a.flags&128)!==0)return a}else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===s)break;for(;a.sibling===null;){if(a.return===null||a.return===s)return null;a=a.return}a.sibling.return=a.return,a=a.sibling}return null}var up=[];function hp(){for(var s=0;s<up.length;s++)up[s]._workInProgressVersionPrimary=null;up.length=0}var Ou=M.ReactCurrentDispatcher,mp=M.ReactCurrentBatchConfig,ca=0,Vt=null,fn=null,bn=null,Fu=!1,Hc=!1,Vc=0,I4=0;function $n(){throw Error(n(321))}function pp(s,a){if(a===null)return!1;for(var u=0;u<a.length&&u<s.length;u++)if(!Nr(s[u],a[u]))return!1;return!0}function fp(s,a,u,f,b,_){if(ca=_,Vt=a,a.memoizedState=null,a.updateQueue=null,a.lanes=0,Ou.current=s===null||s.memoizedState===null?F4:B4,s=u(f,b),Hc){_=0;do{if(Hc=!1,Vc=0,25<=_)throw Error(n(301));_+=1,bn=fn=null,a.updateQueue=null,Ou.current=z4,s=u(f,b)}while(Hc)}if(Ou.current=Wu,a=fn!==null&&fn.next!==null,ca=0,bn=fn=Vt=null,Fu=!1,a)throw Error(n(300));return s}function gp(){var s=Vc!==0;return Vc=0,s}function Ds(){var s={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return bn===null?Vt.memoizedState=bn=s:bn=bn.next=s,bn}function Jr(){if(fn===null){var s=Vt.alternate;s=s!==null?s.memoizedState:null}else s=fn.next;var a=bn===null?Vt.memoizedState:bn.next;if(a!==null)bn=a,fn=s;else{if(s===null)throw Error(n(310));fn=s,s={memoizedState:fn.memoizedState,baseState:fn.baseState,baseQueue:fn.baseQueue,queue:fn.queue,next:null},bn===null?Vt.memoizedState=bn=s:bn=bn.next=s}return bn}function qc(s,a){return typeof a=="function"?a(s):a}function yp(s){var a=Jr(),u=a.queue;if(u===null)throw Error(n(311));u.lastRenderedReducer=s;var f=fn,b=f.baseQueue,_=u.pending;if(_!==null){if(b!==null){var T=b.next;b.next=_.next,_.next=T}f.baseQueue=b=_,u.pending=null}if(b!==null){_=b.next,f=f.baseState;var D=T=null,U=null,ee=_;do{var le=ee.lane;if((ca&le)===le)U!==null&&(U=U.next={lane:0,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null}),f=ee.hasEagerState?ee.eagerState:s(f,ee.action);else{var he={lane:le,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null};U===null?(D=U=he,T=f):U=U.next=he,Vt.lanes|=le,da|=le}ee=ee.next}while(ee!==null&&ee!==_);U===null?T=f:U.next=D,Nr(f,a.memoizedState)||(lr=!0),a.memoizedState=f,a.baseState=T,a.baseQueue=U,u.lastRenderedState=f}if(s=u.interleaved,s!==null){b=s;do _=b.lane,Vt.lanes|=_,da|=_,b=b.next;while(b!==s)}else b===null&&(u.lanes=0);return[a.memoizedState,u.dispatch]}function xp(s){var a=Jr(),u=a.queue;if(u===null)throw Error(n(311));u.lastRenderedReducer=s;var f=u.dispatch,b=u.pending,_=a.memoizedState;if(b!==null){u.pending=null;var T=b=b.next;do _=s(_,T.action),T=T.next;while(T!==b);Nr(_,a.memoizedState)||(lr=!0),a.memoizedState=_,a.baseQueue===null&&(a.baseState=_),u.lastRenderedState=_}return[_,f]}function ky(){}function Cy(s,a){var u=Vt,f=Jr(),b=a(),_=!Nr(f.memoizedState,b);if(_&&(f.memoizedState=b,lr=!0),f=f.queue,vp(Ey.bind(null,u,f,s),[s]),f.getSnapshot!==a||_||bn!==null&&bn.memoizedState.tag&1){if(u.flags|=2048,Jc(9,Ty.bind(null,u,f,b,a),void 0,null),wn===null)throw Error(n(349));(ca&30)!==0||Py(u,a,b)}return b}function Py(s,a,u){s.flags|=16384,s={getSnapshot:a,value:u},a=Vt.updateQueue,a===null?(a={lastEffect:null,stores:null},Vt.updateQueue=a,a.stores=[s]):(u=a.stores,u===null?a.stores=[s]:u.push(s))}function Ty(s,a,u,f){a.value=u,a.getSnapshot=f,Ay(a)&&Ry(s)}function Ey(s,a,u){return u(function(){Ay(a)&&Ry(s)})}
vendor: 4,932 bytes, line 38
38function Ay(s){var a=s.getSnapshot;s=s.value;try{var u=a();return!Nr(s,u)}catch{return!0}}function Ry(s){var a=pi(s,1);a!==null&&ys(a,s,1,-1)}function Ly(s){var a=Ds();return typeof s=="function"&&(s=s()),a.memoizedState=a.baseState=s,s={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:qc,lastRenderedState:s},a.queue=s,s=s.dispatch=O4.bind(null,Vt,s),[a.memoizedState,s]}function Jc(s,a,u,f){return s={tag:s,create:a,destroy:u,deps:f,next:null},a=Vt.updateQueue,a===null?(a={lastEffect:null,stores:null},Vt.updateQueue=a,a.lastEffect=s.next=s):(u=a.lastEffect,u===null?a.lastEffect=s.next=s:(f=u.next,u.next=s,s.next=f,a.lastEffect=s)),s}function My(){return Jr().memoizedState}function Bu(s,a,u,f){var b=Ds();Vt.flags|=s,b.memoizedState=Jc(1|a,u,void 0,f===void 0?null:f)}function zu(s,a,u,f){var b=Jr();f=f===void 0?null:f;var _=void 0;if(fn!==null){var T=fn.memoizedState;if(_=T.destroy,f!==null&&pp(f,T.deps)){b.memoizedState=Jc(a,u,_,f);return}}Vt.flags|=s,b.memoizedState=Jc(1|a,u,_,f)}function Iy(s,a){return Bu(8390656,8,s,a)}function vp(s,a){return zu(2048,8,s,a)}function $y(s,a){return zu(4,2,s,a)}function Dy(s,a){return zu(4,4,s,a)}function Oy(s,a){if(typeof a=="function")return s=s(),a(s),function(){a(null)};if(a!=null)return s=s(),a.current=s,function(){a.current=null}}function Fy(s,a,u){return u=u!=null?u.concat([s]):null,zu(4,4,Oy.bind(null,a,s),u)}function bp(){}function By(s,a){var u=Jr();a=a===void 0?null:a;var f=u.memoizedState;return f!==null&&a!==null&&pp(a,f[1])?f[0]:(u.memoizedState=[s,a],s)}function zy(s,a){var u=Jr();a=a===void 0?null:a;var f=u.memoizedState;return f!==null&&a!==null&&pp(a,f[1])?f[0]:(s=s(),u.memoizedState=[s,a],s)}function Wy(s,a,u){return(ca&21)===0?(s.baseState&&(s.baseState=!1,lr=!0),s.memoizedState=u):(Nr(u,a)||(u=ru(),Vt.lanes|=u,da|=u,s.baseState=!0),a)}function $4(s,a){var u=gt;gt=u!==0&&4>u?u:4,s(!0);var f=mp.transition;mp.transition={};try{s(!1),a()}finally{gt=u,mp.transition=f}}function Uy(){return Jr().memoizedState}function D4(s,a,u){var f=ho(s);if(u={lane:f,action:u,hasEagerState:!1,eagerState:null,next:null},Hy(s))Vy(a,u);else if(u=wy(s,a,u,f),u!==null){var b=Xn();ys(u,s,f,b),qy(u,a,f)}}function O4(s,a,u){var f=ho(s),b={lane:f,action:u,hasEagerState:!1,eagerState:null,next:null};if(Hy(s))Vy(a,b);else{var _=s.alternate;if(s.lanes===0&&(_===null||_.lanes===0)&&(_=a.lastRenderedReducer,_!==null))try{var T=a.lastRenderedState,D=_(T,u);if(b.hasEagerState=!0,b.eagerState=D,Nr(D,T)){var U=a.interleaved;U===null?(b.next=b,ap(a)):(b.next=U.next,U.next=b),a.interleaved=b;return}}catch{}finally{}u=wy(s,a,b,f),u!==null&&(b=Xn(),ys(u,s,f,b),qy(u,a,f))}}function Hy(s){var a=s.alternate;return s===Vt||a!==null&&a===Vt}function Vy(s,a){Hc=Fu=!0;var u=s.pending;u===null?a.next=a:(a.next=u.next,u.next=a),s.pending=a}function qy(s,a,u){if((u&4194240)!==0){var f=a.lanes;f&=s.pendingLanes,u|=f,a.lanes=u,ls(s,u)}}var Wu={readContext:qr,useCallback:$n,useContext:$n,useEffect:$n,useImperativeHandle:$n,useInsertionEffect:$n,useLayoutEffect:$n,useMemo:$n,useReducer:$n,useRef:$n,useState:$n,useDebugValue:$n,useDeferredValue:$n,useTransition:$n,useMutableSource:$n,useSyncExternalStore:$n,useId:$n,unstable_isNewReconciler:!1},F4={readContext:qr,useCallback:function(s,a){return Ds().memoizedState=[s,a===void 0?null:a],s},useContext:qr,useEffect:Iy,useImperativeHandle:function(s,a,u){return u=u!=null?u.concat([s]):null,Bu(4194308,4,Oy.bind(null,a,s),u)},useLayoutEffect:function(s,a){return Bu(4194308,4,s,a)},useInsertionEffect:function(s,a){return Bu(4,2,s,a)},useMemo:function(s,a){var u=Ds();return a=a===void 0?null:a,s=s(),u.memoizedState=[s,a],s},useReducer:function(s,a,u){var f=Ds();return a=u!==void 0?u(a):a,f.memoizedState=f.baseState=a,s={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:s,lastRenderedState:a},f.queue=s,s=s.dispatch=D4.bind(null,Vt,s),[f.memoizedState,s]},useRef:function(s){var a=Ds();return s={current:s},a.memoizedState=s},useState:Ly,useDebugValue:bp,useDeferredValue:function(s){return Ds().memoizedState=s},useTransition:function(){var s=Ly(!1),a=s[0];return s=$4.bind(null,s[1]),Ds().memoizedState=s,[a,s]},useMutableSource:function(){},useSyncExternalStore:function(s,a,u){var f=Vt,b=Ds();if(Wt){if(u===void 0)throw Error(n(407));u=u()}else{if(u=a(),wn===null)throw Error(n(349));(ca&30)!==0||Py(f,a,u)}b.memoizedState=u;var _={value:u,getSnapshot:a};return b.queue=_,Iy(Ey.bind(null,f,_,s),[s]),f.flags|=2048,Jc(9,Ty.bind(null,f,_,u,a),void 0,null),u},useId:function(){var s=Ds(),a=wn.identifierPrefix;if(Wt){var u=mi,f=hi;u=(f&~(1<<32-et(f)-1)).toString(32)+u,a=":"+a+"R"+u,u=Vc++,0<u&&(a+="H"+u.toString(32)),a+=":"}else u=I4++,a=":"+a+"r"+u.toString(32)+":";return s.memoizedState=a},unstable_isNewReconciler:!1},B4={readContext:qr,useCallback:By,useContext:qr,useEffect:vp,useImperativeHandle:Fy,useInsertionEffect:$y,useLayoutEffect:Dy,useMemo:zy,useReducer:yp,useRef
vendor: 5,262 bytes, lines 38-40
38:My,useState:function(){return yp(qc)},useDebugValue:bp,useDeferredValue:function(s){var a=Jr();return Wy(a,fn.memoizedState,s)},useTransition:function(){var s=yp(qc)[0],a=Jr().memoizedState;return[s,a]},useMutableSource:ky,useSyncExternalStore:Cy,useId:Uy,unstable_isNewReconciler:!1},z4={readContext:qr,useCallback:By,useContext:qr,useEffect:vp,useImperativeHandle:Fy,useInsertionEffect:$y,useLayoutEffect:Dy,useMemo:zy,useReducer:xp,useRef:My,useState:function(){return xp(qc)},useDebugValue:bp,useDeferredValue:function(s){var a=Jr();return fn===null?a.memoizedState=s:Wy(a,fn.memoizedState,s)},useTransition:function(){var s=xp(qc)[0],a=Jr().memoizedState;return[s,a]},useMutableSource:ky,useSyncExternalStore:Cy,useId:Uy,unstable_isNewReconciler:!1};function ps(s,a){if(s&&s.defaultProps){a=q({},a),s=s.defaultProps;for(var u in s)a[u]===void 0&&(a[u]=s[u]);return a}return a}function wp(s,a,u,f){a=s.memoizedState,u=u(f,a),u=u==null?a:q({},a,u),s.memoizedState=u,s.lanes===0&&(s.updateQueue.baseState=u)}var Uu={isMounted:function(s){return(s=s._reactInternals)?Dr(s)===s:!1},enqueueSetState:function(s,a,u){s=s._reactInternals;var f=Xn(),b=ho(s),_=fi(f,b);_.payload=a,u!=null&&(_.callback=u),a=ao(s,_,b),a!==null&&(ys(a,s,b,f),Iu(a,s,b))},enqueueReplaceState:function(s,a,u){s=s._reactInternals;var f=Xn(),b=ho(s),_=fi(f,b);_.tag=1,_.payload=a,u!=null&&(_.callback=u),a=ao(s,_,b),a!==null&&(ys(a,s,b,f),Iu(a,s,b))},enqueueForceUpdate:function(s,a){s=s._reactInternals;var u=Xn(),f=ho(s),b=fi(u,f);b.tag=2,a!=null&&(b.callback=a),a=ao(s,b,f),a!==null&&(ys(a,s,f,u),Iu(a,s,f))}};function Jy(s,a,u,f,b,_,T){return s=s.stateNode,typeof s.shouldComponentUpdate=="function"?s.shouldComponentUpdate(f,_,T):a.prototype&&a.prototype.isPureReactComponent?!Rs(u,f)||!Rs(b,_):!0}function Gy(s,a,u){var f=!1,b=so,_=a.contextType;return typeof _=="object"&&_!==null?_=qr(_):(b=ar(a)?sa:In.current,f=a.contextTypes,_=(f=f!=null)?xl(s,b):so),a=new a(u,_),s.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=Uu,s.stateNode=a,a._reactInternals=s,f&&(s=s.stateNode,s.__reactInternalMemoizedUnmaskedChildContext=b,s.__reactInternalMemoizedMaskedChildContext=_),a}function Zy(s,a,u,f){s=a.state,typeof a.componentWillReceiveProps=="function"&&a.componentWillReceiveProps(u,f),typeof a.UNSAFE_componentWillReceiveProps=="function"&&a.UNSAFE_componentWillReceiveProps(u,f),a.state!==s&&Uu.enqueueReplaceState(a,a.state,null)}function _p(s,a,u,f){var b=s.stateNode;b.props=u,b.state=s.memoizedState,b.refs={},lp(s);var _=a.contextType;typeof _=="object"&&_!==null?b.context=qr(_):(_=ar(a)?sa:In.current,b.context=xl(s,_)),b.state=s.memoizedState,_=a.getDerivedStateFromProps,typeof _=="function"&&(wp(s,a,_,u),b.state=s.memoizedState),typeof a.getDerivedStateFromProps=="function"||typeof b.getSnapshotBeforeUpdate=="function"||typeof b.UNSAFE_componentWillMount!="function"&&typeof b.componentWillMount!="function"||(a=b.state,typeof b.componentWillMount=="function"&&b.componentWillMount(),typeof b.UNSAFE_componentWillMount=="function"&&b.UNSAFE_componentWillMount(),a!==b.state&&Uu.enqueueReplaceState(b,b.state,null),$u(s,u,b,f),b.state=s.memoizedState),typeof b.componentDidMount=="function"&&(s.flags|=4194308)}function kl(s,a){try{var u="",f=a;do u+=pe(f),f=f.return;while(f);var b=u}catch(_){b=`
39Error generating stack: `+_.message+`
40`+_.stack}return{value:s,source:a,stack:b,digest:null}}function Sp(s,a,u){return{value:s,source:null,stack:u??null,digest:a??null}}function Np(s,a){try{console.error(a.value)}catch(u){setTimeout(function(){throw u})}}var W4=typeof WeakMap=="function"?WeakMap:Map;function Ky(s,a,u){u=fi(-1,u),u.tag=3,u.payload={element:null};var f=a.value;return u.callback=function(){Ku||(Ku=!0,Fp=f),Np(s,a)},u}function Yy(s,a,u){u=fi(-1,u),u.tag=3;var f=s.type.getDerivedStateFromError;if(typeof f=="function"){var b=a.value;u.payload=function(){return f(b)},u.callback=function(){Np(s,a)}}var _=s.stateNode;return _!==null&&typeof _.componentDidCatch=="function"&&(u.callback=function(){Np(s,a),typeof f!="function"&&(co===null?co=new Set([this]):co.add(this));var T=a.stack;this.componentDidCatch(a.value,{componentStack:T!==null?T:""})}),u}function Qy(s,a,u){var f=s.pingCache;if(f===null){f=s.pingCache=new W4;var b=new Set;f.set(a,b)}else b=f.get(a),b===void 0&&(b=new Set,f.set(a,b));b.has(u)||(b.add(u),s=nN.bind(null,s,a,u),a.then(s,s))}function Xy(s){do{var a;if((a=s.tag===13)&&(a=s.memoizedState,a=a!==null?a.dehydrated!==null:!0),a)return s;s=s.return}while(s!==null);return null}function ex(s,a,u,f,b){return(s.mode&1)===0?(s===a?s.flags|=65536:(s.flags|=128,u.flags|=131072,u.flags&=-52805,u.tag===1&&(u.alternate===null?u.tag=17:(a=fi(-1,1),a.tag=2,ao(u,a,1))),u.lanes|=1),s):(s.flags|=65536,s.lanes=b,s)}var U4=M.ReactCurrentOwner,lr=!1;function Qn(s,a,u,f){a.child=s===null?by(a,null,u,f):_l(a,s.child,u,f)}function tx(s,a,u,f,b){u=u.render;var _=a.ref;return Nl(a,b),f=fp(s,a,u,f,_,b),u=gp(),s!==null&&!lr?(a.updateQueue=s.updateQueue,a.flags&=-2053,s.lanes&=~b,gi(s,a,b)):(Wt&&u&&Qm(a),a.flags|=1,Qn(s,a,f,b),a.child)}function nx(s,a,u,f,b){if(s===null){var _=u.type;return typeof _=="function"&&!qp(_)&&_.defaultProps===void 0&&u.compare===null&&u.defaultProps===void 0?(a.tag=15,a.type=_,rx(s,a,_,f,b)):(s=n
vendor: 11,877 bytes, line 40
40h(u.type,null,f,a,a.mode,b),s.ref=a.ref,s.return=a,a.child=s)}if(_=s.child,(s.lanes&b)===0){var T=_.memoizedProps;if(u=u.compare,u=u!==null?u:Rs,u(T,f)&&s.ref===a.ref)return gi(s,a,b)}return a.flags|=1,s=po(_,f),s.ref=a.ref,s.return=a,a.child=s}function rx(s,a,u,f,b){if(s!==null){var _=s.memoizedProps;if(Rs(_,f)&&s.ref===a.ref)if(lr=!1,a.pendingProps=f=_,(s.lanes&b)!==0)(s.flags&131072)!==0&&(lr=!0);else return a.lanes=s.lanes,gi(s,a,b)}return jp(s,a,u,f,b)}function sx(s,a,u){var f=a.pendingProps,b=f.children,_=s!==null?s.memoizedState:null;if(f.mode==="hidden")if((a.mode&1)===0)a.memoizedState={baseLanes:0,cachePool:null,transitions:null},Mt(Pl,Pr),Pr|=u;else{if((u&1073741824)===0)return s=_!==null?_.baseLanes|u:u,a.lanes=a.childLanes=1073741824,a.memoizedState={baseLanes:s,cachePool:null,transitions:null},a.updateQueue=null,Mt(Pl,Pr),Pr|=s,null;a.memoizedState={baseLanes:0,cachePool:null,transitions:null},f=_!==null?_.baseLanes:u,Mt(Pl,Pr),Pr|=f}else _!==null?(f=_.baseLanes|u,a.memoizedState=null):f=u,Mt(Pl,Pr),Pr|=f;return Qn(s,a,b,u),a.child}function ix(s,a){var u=a.ref;(s===null&&u!==null||s!==null&&s.ref!==u)&&(a.flags|=512,a.flags|=2097152)}function jp(s,a,u,f,b){var _=ar(u)?sa:In.current;return _=xl(a,_),Nl(a,b),u=fp(s,a,u,f,_,b),f=gp(),s!==null&&!lr?(a.updateQueue=s.updateQueue,a.flags&=-2053,s.lanes&=~b,gi(s,a,b)):(Wt&&f&&Qm(a),a.flags|=1,Qn(s,a,u,b),a.child)}function ox(s,a,u,f,b){if(ar(u)){var _=!0;Cu(a)}else _=!1;if(Nl(a,b),a.stateNode===null)Vu(s,a),Gy(a,u,f),_p(a,u,f,b),f=!0;else if(s===null){var T=a.stateNode,D=a.memoizedProps;T.props=D;var U=T.context,ee=u.contextType;typeof ee=="object"&&ee!==null?ee=qr(ee):(ee=ar(u)?sa:In.current,ee=xl(a,ee));var le=u.getDerivedStateFromProps,he=typeof le=="function"||typeof T.getSnapshotBeforeUpdate=="function";he||typeof T.UNSAFE_componentWillReceiveProps!="function"&&typeof T.componentWillReceiveProps!="function"||(D!==f||U!==ee)&&Zy(a,T,f,ee),oo=!1;var oe=a.memoizedState;T.state=oe,$u(a,f,T,b),U=a.memoizedState,D!==f||oe!==U||or.current||oo?(typeof le=="function"&&(wp(a,u,le,f),U=a.memoizedState),(D=oo||Jy(a,u,D,f,oe,U,ee))?(he||typeof T.UNSAFE_componentWillMount!="function"&&typeof T.componentWillMount!="function"||(typeof T.componentWillMount=="function"&&T.componentWillMount(),typeof T.UNSAFE_componentWillMount=="function"&&T.UNSAFE_componentWillMount()),typeof T.componentDidMount=="function"&&(a.flags|=4194308)):(typeof T.componentDidMount=="function"&&(a.flags|=4194308),a.memoizedProps=f,a.memoizedState=U),T.props=f,T.state=U,T.context=ee,f=D):(typeof T.componentDidMount=="function"&&(a.flags|=4194308),f=!1)}else{T=a.stateNode,_y(s,a),D=a.memoizedProps,ee=a.type===a.elementType?D:ps(a.type,D),T.props=ee,he=a.pendingProps,oe=T.context,U=u.contextType,typeof U=="object"&&U!==null?U=qr(U):(U=ar(u)?sa:In.current,U=xl(a,U));var we=u.getDerivedStateFromProps;(le=typeof we=="function"||typeof T.getSnapshotBeforeUpdate=="function")||typeof T.UNSAFE_componentWillReceiveProps!="function"&&typeof T.componentWillReceiveProps!="function"||(D!==he||oe!==U)&&Zy(a,T,f,U),oo=!1,oe=a.memoizedState,T.state=oe,$u(a,f,T,b);var Pe=a.memoizedState;D!==he||oe!==Pe||or.current||oo?(typeof we=="function"&&(wp(a,u,we,f),Pe=a.memoizedState),(ee=oo||Jy(a,u,ee,f,oe,Pe,U)||!1)?(le||typeof T.UNSAFE_componentWillUpdate!="function"&&typeof T.componentWillUpdate!="function"||(typeof T.componentWillUpdate=="function"&&T.componentWillUpdate(f,Pe,U),typeof T.UNSAFE_componentWillUpdate=="function"&&T.UNSAFE_componentWillUpdate(f,Pe,U)),typeof T.componentDidUpdate=="function"&&(a.flags|=4),typeof T.getSnapshotBeforeUpdate=="function"&&(a.flags|=1024)):(typeof T.componentDidUpdate!="function"||D===s.memoizedProps&&oe===s.memoizedState||(a.flags|=4),typeof T.getSnapshotBeforeUpdate!="function"||D===s.memoizedProps&&oe===s.memoizedState||(a.flags|=1024),a.memoizedProps=f,a.memoizedState=Pe),T.props=f,T.state=Pe,T.context=U,f=ee):(typeof T.componentDidUpdate!="function"||D===s.memoizedProps&&oe===s.memoizedState||(a.flags|=4),typeof T.getSnapshotBeforeUpdate!="function"||D===s.memoizedProps&&oe===s.memoizedState||(a.flags|=1024),f=!1)}return kp(s,a,u,f,_,b)}function kp(s,a,u,f,b,_){ix(s,a);var T=(a.flags&128)!==0;if(!f&&!T)return b&&uy(a,u,!1),gi(s,a,_);f=a.stateNode,U4.current=a;var D=T&&typeof u.getDerivedStateFromError!="function"?null:f.render();return a.flags|=1,s!==null&&T?(a.child=_l(a,s.child,null,_),a.child=_l(a,null,D,_)):Qn(s,a,D,_),a.memoizedState=f.state,b&&uy(a,u,!0),a.child}function ax(s){var a=s.stateNode;a.pendingContext?cy(s,a.pendingContext,a.pendingContext!==a.context):a.context&&cy(s,a.context,!1),cp(s,a.containerInfo)}function lx(s,a,u,f,b){return wl(),np(b),a.flags|=256,Qn(s,a,u,f),a.child}var Cp={dehydrated:null,treeContext:null,retryLane:0};function Pp(s){return{baseLanes:s,cachePool:null,transitions:null}}function cx(s,a,u){var f=a.pendingProps,b=Ht.current,_=!1,T=(a.flags&128)!==0,D;if((D=T)||(D=s!==null&&s.memoizedState===null?!1:(b&2)!==0),D?(_=!0,a.flags&=-129):(s===null||s.memoizedState!==null)&&(b|=1),Mt(Ht,b&1),s===null)return tp(a),s=a.memoizedState,s!==null&&(s=s.dehydrated,s!==null)?((a.mode&1)===0?a.lanes=1:s.data==="$!"?a.lanes=8:a.lanes=1073741824,null):(T=f.children,s=f.fallback,_?(f=a.mode,_=a.child,T={mode:"hidden",children:T},(f&1)===0&&_!==null?(_.childLanes=0,_.pendingProps=T):_=rh(T,f,0,null),s=pa(s,f,u,null),_.return=a,s.return=a,_.sibling=s,a.child=_,a.child.memoizedState=Pp(u),a.memoizedState=Cp,s):Tp(a,T));if(b=s.memoizedState,b!==null&&(D=b.dehydrated,D!==null))return H4(s,a,T,f,D,b,u);if(_){_=f.fallback,T=a.mode,b=s.child,D=b.sibling;var U={mode:"hidden",children:f.children};return(T&1)===0&&a.child!==b?(f=a.child,f.childLanes=0,f.pendingProps=U,a.deletions=null):(f=po(b,U),f.subtreeFlags=b.subtreeFlags&14680064),D!==null?_=po(D,_):(_=pa(_,T,u,null),_.flags|=2),_.return=a,f.return=a,f.sibling=_,a.child=f,f=_,_=a.child,T=s.child.memoizedState,T=T===null?Pp(u):{baseLanes:T.baseLanes|u,cachePool:null,transitions:T.transitions},_.memoizedState=T,_.childLanes=s.childLanes&~u,a.memoizedState=Cp,f}return _=s.child,s=_.sibling,f=po(_,{mode:"visible",children:f.children}),(a.mode&1)===0&&(f.lanes=u),f.return=a,f.sibling=null,s!==null&&(u=a.deletions,u===null?(a.deletions=[s],a.flags|=16):u.push(s)),a.child=f,a.memoizedState=null,f}function Tp(s,a){return a=rh({mode:"visible",children:a},s.mode,0,null),a.return=s,s.child=a}function Hu(s,a,u,f){return f!==null&&np(f),_l(a,s.child,null,u),s=Tp(a,a.pendingProps.children),s.flags|=2,a.memoizedState=null,s}function H4(s,a,u,f,b,_,T){if(u)return a.flags&256?(a.flags&=-257,f=Sp(Error(n(422))),Hu(s,a,T,f)):a.memoizedState!==null?(a.child=s.child,a.flags|=128,null):(_=f.fallback,b=a.mode,f=rh({mode:"visible",children:f.children},b,0,null),_=pa(_,b,T,null),_.flags|=2,f.return=a,_.return=a,f.sibling=_,a.child=f,(a.mode&1)!==0&&_l(a,s.child,null,T),a.child.memoizedState=Pp(T),a.memoizedState=Cp,_);if((a.mode&1)===0)return Hu(s,a,T,null);if(b.data==="$!"){if(f=b.nextSibling&&b.nextSibling.dataset,f)var D=f.dgst;return f=D,_=Error(n(419)),f=Sp(_,f,void 0),Hu(s,a,T,f)}if(D=(T&s.childLanes)!==0,lr||D){if(f=wn,f!==null){switch(T&-T){case 4:b=2;break;case 16:b=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:b=32;break;case 536870912:b=268435456;break;default:b=0}b=(b&(f.suspendedLanes|T))!==0?0:b,b!==0&&b!==_.retryLane&&(_.retryLane=b,pi(s,b),ys(f,s,b,-1))}return Vp(),f=Sp(Error(n(421))),Hu(s,a,T,f)}return b.data==="$?"?(a.flags|=128,a.child=s.child,a=rN.bind(null,s),b._reactRetry=a,null):(s=_.treeContext,Cr=Is(b.nextSibling),kr=a,Wt=!0,ms=null,s!==null&&(Hr[Vr++]=hi,Hr[Vr++]=mi,Hr[Vr++]=ia,hi=s.id,mi=s.overflow,ia=a),a=Tp(a,f.children),a.flags|=4096,a)}function dx(s,a,u){s.lanes|=a;var f=s.alternate;f!==null&&(f.lanes|=a),op(s.return,a,u)}function Ep(s,a,u,f,b){var _=s.memoizedState;_===null?s.memoizedState={isBackwards:a,rendering:null,renderingStartTime:0,last:f,tail:u,tailMode:b}:(_.isBackwards=a,_.rendering=null,_.renderingStartTime=0,_.last=f,_.tail=u,_.tailMode=b)}function ux(s,a,u){var f=a.pendingProps,b=f.revealOrder,_=f.tail;if(Qn(s,a,f.children,u),f=Ht.current,(f&2)!==0)f=f&1|2,a.flags|=128;else{if(s!==null&&(s.flags&128)!==0)e:for(s=a.child;s!==null;){if(s.tag===13)s.memoizedState!==null&&dx(s,u,a);else if(s.tag===19)dx(s,u,a);else if(s.child!==null){s.child.return=s,s=s.child;continue}if(s===a)break e;for(;s.sibling===null;){if(s.return===null||s.return===a)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}f&=1}if(Mt(Ht,f),(a.mode&1)===0)a.memoizedState=null;else switch(b){case"forwards":for(u=a.child,b=null;u!==null;)s=u.alternate,s!==null&&Du(s)===null&&(b=u),u=u.sibling;u=b,u===null?(b=a.child,a.child=null):(b=u.sibling,u.sibling=null),Ep(a,!1,b,u,_);break;case"backwards":for(u=null,b=a.child,a.child=null;b!==null;){if(s=b.alternate,s!==null&&Du(s)===null){a.child=b;break}s=b.sibling,b.sibling=u,u=b,b=s}Ep(a,!0,u,null,_);break;case"together":Ep(a,!1,null,null,void 0);break;default:a.memoizedState=null}return a.child}function Vu(s,a){(a.mode&1)===0&&s!==null&&(s.alternate=null,a.alternate=null,a.flags|=2)}function gi(s,a,u){if(s!==null&&(a.dependencies=s.dependencies),da|=a.lanes,(u&a.childLanes)===0)return null;if(s!==null&&a.child!==s.child)throw Error(n(153));if(a.child!==null){for(s=a.child,u=po(s,s.pendingProps),a.child=u,u.return=a;s.sibling!==null;)s=s.sibling,u=u.sibling=po(s,s.pendingProps),u.return=a;u.sibling=null}return a.child}function V4(s,a,u){switch(a.tag){case 3:ax(a),wl();break;case 5:jy(a);break;case 1:ar(a.type)&&Cu(a);break;case 4:cp(a,a.stateNode.containerInfo);break;case 10:var f=a.type._context,b=a.memoizedProps.value;Mt(Lu,f._currentValue),f._currentValue=b;break;case 13:if(f=a.memoizedState,f!==null)return f.dehydrated!==null?(Mt(Ht,Ht.current&1),a.flags|=128,null):(u&a.child.childLanes)!==0?cx(s,a,u):(Mt(Ht,Ht.current&1),s=gi(s,a,u),s!==null?s.sibling:null);Mt(Ht,Ht.current&1);break;case 19:if(f=(u&a.childLanes)!==0,(s.flags&128)!==0){if(f)return ux(s,a,u);a.flags|=128}if(b=a.memoizedState,b!==null&&(b.rendering=null,b.tail=null,b.lastEffect=null),Mt(Ht,Ht.current),f)break;return null;case 22:case 23:return a.lanes=0,sx(s,a,u)}return gi(s,a,u)}var hx,Ap,mx,px;hx=function(s,a){for(var u=a.child;u!==null;){if(u.tag===5||u.tag===6)s.appendChild(u.stateNode);else if(u.tag!==4&&u.child!==null){u.child.return=u,u=u.child;continue}if(u===a)break;for(;u.sibling===null;){if(u.return===null||u.return===a)return;u=u.return}u.sibling.return=u.return,u=u.sibling}},Ap=function(){},mx=function(s,a,u,f){var b=s.memoizedProps;if(b!==f){s=a.stateNode,la($s.current);var _=null;switch(u){case"input":b=un(s,b),f=un(s,f),_=[];break;case"select":b=q({},b,{value:void 0}),f=q({},f,{value:void 0}),_=[];break;case"textarea":b=En(s,b),f=En(s,f),_=[];break;default:typeof b.onClick!="function"&&typeof f.onClick=="function"&&(s.onclick=se)}ks(u,f);var T;u=null;for(ee in b)if(!f.hasOwnProperty(ee)&&b.hasOwnProperty(ee)&&b[ee]!=null)if(ee==="style"){var D=b[ee];for(T in D)D.hasOwnProperty(T)&&(u||(u={}),u[T]="")}else ee!=="dangerouslySetInnerHTML"&&ee!=="children"&&ee!=="suppressContentEditableWarning"&&ee!=="suppressHydrationWarning"&&ee!=="autoFocus"&&(l.hasOwnProperty(ee)?_||(_=[]):(_=_||[]).push(ee,null));for(ee in f){var U=f[ee];if(D=b!=null?b[ee]:void 0,f.hasOwnProperty(ee)&&U!==D&&(U!=null||D!=null))if(ee==="style")if(D){for(T in D)!D.hasOwnProperty(T)||U&&U.hasOwnProperty(T)||(u||(u={}),u[T]="");for(T in U)U.hasOwnProperty(T)&&D[T]!==U[T]&&(u||(u={}),u[T]=U[T])}else u||(_||(_=[]),_.push(ee,u)),u=U;else ee==="dangerouslySetInnerHTML"?(U=U?U.__html:void 0,D=D?D.__html:void 0,U!=null&&D!==U&&(_=_||[]).push(ee,U)):ee==="children"?typeof U!="str
40ing"&&typeof U!="number"||(_=_||[]).push(ee,""+U):ee!=="suppressContentEditableWarning"&&ee!=="suppressHydrationWarning"&&(l.hasOwnProperty(ee)?(U!=null&&ee==="onScroll"&&Pt("scroll",s),_||D===U||(_=[])):(_=_||[]).push(ee,U))}u&&(_=_||[]).push("style",u);var ee=_;(a.updateQueue=ee)&&(a.flags|=4)}},px=function(s,a,u,f){u!==f&&(a.flags|=4)};function Gc(s,a){if(!Wt)switch(s.tailMode){case"hidden":a=s.tail;for(var u=null;a!==null;)a.alternate!==null&&(u=a),a=a.sibling;u===null?s.tail=null:u.sibling=null;break;case"collapsed":u=s.tail;for(var f=null;u!==null;)u.alternate!==null&&(f=u),u=u.sibling;f===null?a||s.tail===null?s.tail=null:s.tail.sibling=null:f.sibling=null}}function Dn(s){var a=s.alternate!==null&&s.alternate.child===s.child,u=0,f=0;if(a)for(var b=s.child;b!==null;)u|=b.lanes|b.childLanes,f|=b.subtreeFlags&14680064,f|=b.flags&14680064,b.return=s,b=b.sibling;else for(b=s.child;b!==null;)u|=b.lanes|b.childLanes,f|=b.subtreeFlags,f|=b.flags,b.return=s,b=b.sibling;return s.subtreeFlags|=f,s.childLanes=u,a}function q4(s,a,u){var f=a.pendingProps;switch(Xm(a),a.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Dn(a),null;case 1:return ar(a.type)&&ku(),Dn(a),null;case 3:return f=a.stateNode,jl(),Dt(or),Dt(In),hp(),f.pendingContext&&(f.context=f.pendingContext,f.pendingContext=null),(s===null||s.child===null)&&(Au(a)?a.flags|=4:s===null||s.memoizedState.isDehydrated&&(a.flags&256)===0||(a.flags|=1024,ms!==null&&(Wp(ms),ms=null))),Ap(s,a),Dn(a),null;case 5:dp(a);var b=la(Uc.current);if(u=a.type,s!==null&&a.stateNode!=null)mx(s,a,u,f,b),s.ref!==a.ref&&(a.flags|=512,a.flags|=2097152);else{if(!f){if(a.stateNode===null)throw Error(n(166));return Dn(a),null}if(s=la($s.current),Au(a)){f=a.stateNode,u=a.type;var _=a.memoizedProps;switch(f[Ur]=a,f[to]=_,s=(a.mode&1)!==0,u){case"dialog":Pt("cancel",f),Pt("close",f);break;case"iframe":case"object":case"embed":Pt("load",f);break;case"video":case"audio":for(b=0;b<Qi.length;b++)Pt(Qi[b],f);break;case"source":Pt("error",f);break;case"img":case"image":case"link":Pt("error",f),Pt("load",f);break;case"details":Pt("toggle",f);break;case"input":Bt(f,_),Pt("invalid",f);break;case"select":f._wrapperState={wasMultiple:!!_.multiple},Pt("invalid",f);break;case"textarea":Ks(f,_),Pt("invalid",f)}ks(u,_),b=null;for(var T in _)if(_.hasOwnProperty(T)){var D=_[T];
vendor: 25,568 bytes, line 40
40T==="children"?typeof D=="string"?f.textContent!==D&&(_.suppressHydrationWarning!==!0&&Q(f.textContent,D,s),b=["children",D]):typeof D=="number"&&f.textContent!==""+D&&(_.suppressHydrationWarning!==!0&&Q(f.textContent,D,s),b=["children",""+D]):l.hasOwnProperty(T)&&D!=null&&T==="onScroll"&&Pt("scroll",f)}switch(u){case"input":It(f),zt(f,_,!0);break;case"textarea":It(f),fr(f);break;case"select":case"option":break;default:typeof _.onClick=="function"&&(f.onclick=se)}f=b,a.updateQueue=f,f!==null&&(a.flags|=4)}else{T=b.nodeType===9?b:b.ownerDocument,s==="http://www.w3.org/1999/xhtml"&&(s=nr(u)),s==="http://www.w3.org/1999/xhtml"?u==="script"?(s=T.createElement("div"),s.innerHTML="<script><\/script>",s=s.removeChild(s.firstChild)):typeof f.is=="string"?s=T.createElement(u,{is:f.is}):(s=T.createElement(u),u==="select"&&(T=s,f.multiple?T.multiple=!0:f.size&&(T.size=f.size))):s=T.createElementNS(s,u),s[Ur]=a,s[to]=f,hx(s,a,!1,!1),a.stateNode=s;e:{switch(T=rr(u,f),u){case"dialog":Pt("cancel",s),Pt("close",s),b=f;break;case"iframe":case"object":case"embed":Pt("load",s),b=f;break;case"video":case"audio":for(b=0;b<Qi.length;b++)Pt(Qi[b],s);b=f;break;case"source":Pt("error",s),b=f;break;case"img":case"image":case"link":Pt("error",s),Pt("load",s),b=f;break;case"details":Pt("toggle",s),b=f;break;case"input":Bt(s,f),b=un(s,f),Pt("invalid",s);break;case"option":b=f;break;case"select":s._wrapperState={wasMultiple:!!f.multiple},b=q({},f,{value:void 0}),Pt("invalid",s);break;case"textarea":Ks(s,f),b=En(s,f),Pt("invalid",s);break;default:b=f}ks(u,b),D=b;for(_ in D)if(D.hasOwnProperty(_)){var U=D[_];_==="style"?ns(s,U):_==="dangerouslySetInnerHTML"?(U=U?U.__html:void 0,U!=null&&js(s,U)):_==="children"?typeof U=="string"?(u!=="textarea"||U!=="")&&qn(s,U):typeof U=="number"&&qn(s,""+U):_!=="suppressContentEditableWarning"&&_!=="suppressHydrationWarning"&&_!=="autoFocus"&&(l.hasOwnProperty(_)?U!=null&&_==="onScroll"&&Pt("scroll",s):U!=null&&I(s,_,U,T))}switch(u){case"input":It(s),zt(s,f,!1);break;case"textarea":It(s),fr(s);break;case"option":f.value!=null&&s.setAttribute("value",""+He(f.value));break;case"select":s.multiple=!!f.multiple,_=f.value,_!=null?Vn(s,!!f.multiple,_,!1):f.defaultValue!=null&&Vn(s,!!f.multiple,f.defaultValue,!0);break;default:typeof b.onClick=="function"&&(s.onclick=se)}switch(u){case"button":case"input":case"select":case"textarea":f=!!f.autoFocus;break e;case"img":f=!0;break e;default:f=!1}}f&&(a.flags|=4)}a.ref!==null&&(a.flags|=512,a.flags|=2097152)}return Dn(a),null;case 6:if(s&&a.stateNode!=null)px(s,a,s.memoizedProps,f);else{if(typeof f!="string"&&a.stateNode===null)throw Error(n(166));if(u=la(Uc.current),la($s.current),Au(a)){if(f=a.stateNode,u=a.memoizedProps,f[Ur]=a,(_=f.nodeValue!==u)&&(s=kr,s!==null))switch(s.tag){case 3:Q(f.nodeValue,u,(s.mode&1)!==0);break;case 5:s.memoizedProps.suppressHydrationWarning!==!0&&Q(f.nodeValue,u,(s.mode&1)!==0)}_&&(a.flags|=4)}else f=(u.nodeType===9?u:u.ownerDocument).createTextNode(f),f[Ur]=a,a.stateNode=f}return Dn(a),null;case 13:if(Dt(Ht),f=a.memoizedState,s===null||s.memoizedState!==null&&s.memoizedState.dehydrated!==null){if(Wt&&Cr!==null&&(a.mode&1)!==0&&(a.flags&128)===0)yy(),wl(),a.flags|=98560,_=!1;else if(_=Au(a),f!==null&&f.dehydrated!==null){if(s===null){if(!_)throw Error(n(318));if(_=a.memoizedState,_=_!==null?_.dehydrated:null,!_)throw Error(n(317));_[Ur]=a}else wl(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;Dn(a),_=!1}else ms!==null&&(Wp(ms),ms=null),_=!0;if(!_)return a.flags&65536?a:null}return(a.flags&128)!==0?(a.lanes=u,a):(f=f!==null,f!==(s!==null&&s.memoizedState!==null)&&f&&(a.child.flags|=8192,(a.mode&1)!==0&&(s===null||(Ht.current&1)!==0?gn===0&&(gn=3):Vp())),a.updateQueue!==null&&(a.flags|=4),Dn(a),null);case 4:return jl(),Ap(s,a),s===null&&Xi(a.stateNode.containerInfo),Dn(a),null;case 10:return ip(a.type._context),Dn(a),null;case 17:return ar(a.type)&&ku(),Dn(a),null;case 19:if(Dt(Ht),_=a.memoizedState,_===null)return Dn(a),null;if(f=(a.flags&128)!==0,T=_.rendering,T===null)if(f)Gc(_,!1);else{if(gn!==0||s!==null&&(s.flags&128)!==0)for(s=a.child;s!==null;){if(T=Du(s),T!==null){for(a.flags|=128,Gc(_,!1),f=T.updateQueue,f!==null&&(a.updateQueue=f,a.flags|=4),a.subtreeFlags=0,f=u,u=a.child;u!==null;)_=u,s=f,_.flags&=14680066,T=_.alternate,T===null?(_.childLanes=0,_.lanes=s,_.child=null,_.subtreeFlags=0,_.memoizedProps=null,_.memoizedState=null,_.updateQueue=null,_.dependencies=null,_.stateNode=null):(_.childLanes=T.childLanes,_.lanes=T.lanes,_.child=T.child,_.subtreeFlags=0,_.deletions=null,_.memoizedProps=T.memoizedProps,_.memoizedState=T.memoizedState,_.updateQueue=T.updateQueue,_.type=T.type,s=T.dependencies,_.dependencies=s===null?null:{lanes:s.lanes,firstContext:s.firstContext}),u=u.sibling;return Mt(Ht,Ht.current&1|2),a.child}s=s.sibling}_.tail!==null&&pt()>Tl&&(a.flags|=128,f=!0,Gc(_,!1),a.lanes=4194304)}else{if(!f)if(s=Du(T),s!==null){if(a.flags|=128,f=!0,u=s.updateQueue,u!==null&&(a.updateQueue=u,a.flags|=4),Gc(_,!0),_.tail===null&&_.tailMode==="hidden"&&!T.alternate&&!Wt)return Dn(a),null}else 2*pt()-_.renderingStartTime>Tl&&u!==1073741824&&(a.flags|=128,f=!0,Gc(_,!1),a.lanes=4194304);_.isBackwards?(T.sibling=a.child,a.child=T):(u=_.last,u!==null?u.sibling=T:a.child=T,_.last=T)}return _.tail!==null?(a=_.tail,_.rendering=a,_.tail=a.sibling,_.renderingStartTime=pt(),a.sibling=null,u=Ht.current,Mt(Ht,f?u&1|2:u&1),a):(Dn(a),null);case 22:case 23:return Hp(),f=a.memoizedState!==null,s!==null&&s.memoizedState!==null!==f&&(a.flags|=8192),f&&(a.mode&1)!==0?(Pr&1073741824)!==0&&(Dn(a),a.subtreeFlags&6&&(a.flags|=8192)):Dn(a),null;case 24:return null;case 25:return null}throw Error(n(156,a.tag))}function J4(s,a){switch(Xm(a),a.tag){case 1:return ar(a.type)&&ku(),s=a.flags,s&65536?(a.flags=s&-65537|128,a):null;case 3:return jl(),Dt(or),Dt(In),hp(),s=a.flags,(s&65536)!==0&&(s&128)===0?(a.flags=s&-65537|128,a):null;case 5:return dp(a),null;case 13:if(Dt(Ht),s=a.memoizedState,s!==null&&s.dehydrated!==null){if(a.alternate===null)throw Error(n(340));wl()}return s=a.flags,s&65536?(a.flags=s&-65537|128,a):null;case 19:return Dt(Ht),null;case 4:return jl(),null;case 10:return ip(a.type._context),null;case 22:case 23:return Hp(),null;case 24:return null;default:return null}}var qu=!1,On=!1,G4=typeof WeakSet=="function"?WeakSet:Set,ke=null;function Cl(s,a){var u=s.ref;if(u!==null)if(typeof u=="function")try{u(null)}catch(f){Zt(s,a,f)}else u.current=null}function Rp(s,a,u){try{u()}catch(f){Zt(s,a,f)}}var fx=!1;function Z4(s,a){if(ve=Ko,s=Ac(),Rc(s)){if("selectionStart"in s)var u={start:s.selectionStart,end:s.selectionEnd};else e:{u=(u=s.ownerDocument)&&u.defaultView||window;var f=u.getSelection&&u.getSelection();if(f&&f.rangeCount!==0){u=f.anchorNode;var b=f.anchorOffset,_=f.focusNode;f=f.focusOffset;try{u.nodeType,_.nodeType}catch{u=null;break e}var T=0,D=-1,U=-1,ee=0,le=0,he=s,oe=null;t:for(;;){for(var we;he!==u||b!==0&&he.nodeType!==3||(D=T+b),he!==_||f!==0&&he.nodeType!==3||(U=T+f),he.nodeType===3&&(T+=he.nodeValue.length),(we=he.firstChild)!==null;)oe=he,he=we;for(;;){if(he===s)break t;if(oe===u&&++ee===b&&(D=T),oe===_&&++le===f&&(U=T),(we=he.nextSibling)!==null)break;he=oe,oe=he.parentNode}he=we}u=D===-1||U===-1?null:{start:D,end:U}}else u=null}u=u||{start:0,end:0}}else u=null;for(Fe={focusedElem:s,selectionRange:u},Ko=!1,ke=a;ke!==null;)if(a=ke,s=a.child,(a.subtreeFlags&1028)!==0&&s!==null)s.return=a,ke=s;else for(;ke!==null;){a=ke;try{var Pe=a.alternate;if((a.flags&1024)!==0)switch(a.tag){case 0:case 11:case 15:break;case 1:if(Pe!==null){var Ae=Pe.memoizedProps,en=Pe.memoizedState,K=a.stateNode,J=K.getSnapshotBeforeUpdate(a.elementType===a.type?Ae:ps(a.type,Ae),en);K.__reactInternalSnapshotBeforeUpdate=J}break;case 3:var Y=a.stateNode.containerInfo;Y.nodeType===1?Y.textContent="":Y.nodeType===9&&Y.documentElement&&Y.removeChild(Y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}catch(me){Zt(a,a.return,me)}if(s=a.sibling,s!==null){s.return=a.return,ke=s;break}ke=a.return}return Pe=fx,fx=!1,Pe}function Zc(s,a,u){var f=a.updateQueue;if(f=f!==null?f.lastEffect:null,f!==null){var b=f=f.next;do{if((b.tag&s)===s){var _=b.destroy;b.destroy=void 0,_!==void 0&&Rp(a,u,_)}b=b.next}while(b!==f)}}function Ju(s,a){if(a=a.updateQueue,a=a!==null?a.lastEffect:null,a!==null){var u=a=a.next;do{if((u.tag&s)===s){var f=u.create;u.destroy=f()}u=u.next}while(u!==a)}}function Lp(s){var a=s.ref;if(a!==null){var u=s.stateNode;switch(s.tag){case 5:s=u;break;default:s=u}typeof a=="function"?a(s):a.current=s}}function gx(s){var a=s.alternate;a!==null&&(s.alternate=null,gx(a)),s.child=null,s.deletions=null,s.sibling=null,s.tag===5&&(a=s.stateNode,a!==null&&(delete a[Ur],delete a[to],delete a[no],delete a[Gm],delete a[Zm])),s.stateNode=null,s.return=null,s.dependencies=null,s.memoizedProps=null,s.memoizedState=null,s.pendingProps=null,s.stateNode=null,s.updateQueue=null}function yx(s){return s.tag===5||s.tag===3||s.tag===4}function xx(s){e:for(;;){for(;s.sibling===null;){if(s.return===null||yx(s.return))return null;s=s.return}for(s.sibling.return=s.return,s=s.sibling;s.tag!==5&&s.tag!==6&&s.tag!==18;){if(s.flags&2||s.child===null||s.tag===4)continue e;s.child.return=s,s=s.child}if(!(s.flags&2))return s.stateNode}}function Mp(s,a,u){var f=s.tag;if(f===5||f===6)s=s.stateNode,a?u.nodeType===8?u.parentNode.insertBefore(s,a):u.insertBefore(s,a):(u.nodeType===8?(a=u.parentNode,a.insertBefore(s,u)):(a=u,a.appendChild(s)),u=u._reactRootContainer,u!=null||a.onclick!==null||(a.onclick=se));else if(f!==4&&(s=s.child,s!==null))for(Mp(s,a,u),s=s.sibling;s!==null;)Mp(s,a,u),s=s.sibling}function Ip(s,a,u){var f=s.tag;if(f===5||f===6)s=s.stateNode,a?u.insertBefore(s,a):u.appendChild(s);else if(f!==4&&(s=s.child,s!==null))for(Ip(s,a,u),s=s.sibling;s!==null;)Ip(s,a,u),s=s.sibling}var Nn=null,fs=!1;function lo(s,a,u){for(u=u.child;u!==null;)vx(s,a,u),u=u.sibling}function vx(s,a,u){if(xr&&typeof xr.onCommitFiberUnmount=="function")try{xr.onCommitFiberUnmount(Ho,u)}catch{}switch(u.tag){case 5:On||Cl(u,a);case 6:var f=Nn,b=fs;Nn=null,lo(s,a,u),Nn=f,fs=b,Nn!==null&&(fs?(s=Nn,u=u.stateNode,s.nodeType===8?s.parentNode.removeChild(u):s.removeChild(u)):Nn.removeChild(u.stateNode));break;case 18:Nn!==null&&(fs?(s=Nn,u=u.stateNode,s.nodeType===8?Fc(s.parentNode,u):s.nodeType===1&&Fc(s,u),wr(s)):Fc(Nn,u.stateNode));break;case 4:f=Nn,b=fs,Nn=u.stateNode.containerInfo,fs=!0,lo(s,a,u),Nn=f,fs=b;break;case 0:case 11:case 14:case 15:if(!On&&(f=u.updateQueue,f!==null&&(f=f.lastEffect,f!==null))){b=f=f.next;do{var _=b,T=_.destroy;_=_.tag,T!==void 0&&((_&2)!==0||(_&4)!==0)&&Rp(u,a,T),b=b.next}while(b!==f)}lo(s,a,u);break;case 1:if(!On&&(Cl(u,a),f=u.stateNode,typeof f.componentWillUnmount=="function"))try{f.props=u.memoizedProps,f.state=u.memoizedState,f.componentWillUnmount()}catch(D){Zt(u,a,D)}lo(s,a,u);break;case 21:lo(s,a,u);break;case 22:u.mode&1?(On=(f=On)||u.memoizedState!==null,lo(s,a,u),On=f):lo(s,a,u);break;default:lo(s,a,u)}}function bx(s){var a=s.updateQueue;if(a!==null){s.updateQueue=null;var u=s.stateNode;u===null&&(u=s.stateNode=new G4),a.forEach(function(f){var b=sN.bind(null,s,f);u.has(f)||(u.add(f),f.then(b,b))})}}function gs(s,a){var u=a.deletions;if(u!==null)for(var f=0;f<u.length;f++){var b=u[f];try{var _=s,T=a,D=T;e:for(;D!==null;){switch(D.tag){case 5:Nn=D.stateNode,fs=!1;break e;case 3:Nn=D.stateNode.containerInfo,fs=!0;break e;case 4:Nn=D.stateNode.containerInfo,fs=!0;break e}D=D.return}if(Nn===null)throw Error(n(160));vx(_,T,b),Nn=null,fs=!1;var U=b.alternate;U!==null&&(U.return=null),b.return=null}catch(ee){Zt(b,a,ee)}}if(a.subtreeFlags&12854)for(a=a.child;a!==null;)wx(a,s),a=a.sibling}function wx(s,a){var u=s.alternate,f=s.flags;switch(s.tag){case 0:case 11:case 14:case 15:if(gs(a,s),Os(s),f&4){try{Zc(3,s,s.return),Ju(3,s)}catch(Ae){Zt(s,s.return,Ae)}try{Zc(5,s,s.return)}catch(Ae){Zt(s,s.return,Ae)}}break;case 1:gs(a,s),Os(s),f&512&&u!==null&&Cl(u,u.return);break;case 5:if(gs(a,s),Os(s),f&512&&u!==null&&Cl(u,u.return),s.flags&32){var b=s.stateNode;try{qn(b,"")}catch(Ae){Zt(s,s.return,Ae)}}if(f&4&&(b=s.stateNode,b!=null)){var _=s.memoizedProps,T=u!==null?u.memoizedProps:_,D=s.type,U=s.updateQueue;if(s.updateQueue=null,U!==null)try{D==="input"&&_.type==="radio"&&_.name!=null&&Be(b,_),rr(D,T);var ee=rr(D,_);for(T=0;T<U.length;T+=2){var le=U[T],he=U[T+1];le==="style"?ns(b,he):le==="dangerouslySetInnerHTML"?js(b,he):le==="children"?qn(b,he):I(b,le,he,ee)}switch(D){case"input":At(b,_);break;case"textarea":Bo(b,_);break;case"select":var oe=b._wrapperState.wasMultiple;b._wrapperState.wasMultiple=!!_.multiple;var we=_.value;we!=null?Vn(b,!!_.multiple,we,!1):oe!==!!_.multiple&&(_.defaultValue!=null?Vn(b,!!_.multiple,_.defaultValue,!0):Vn(b,!!_.multiple,_.multiple?[]:"",!1))}b[to]=_}catch(Ae){Zt(s,s.return,Ae)}}break;case 6:if(gs(a,s),Os(s),f&4){if(s.stateNode===null)throw Error(n(162));b=s.stateNode,_=s.memoizedProps;try{b.nodeValue=_}catch(Ae){Zt(s,s.return,Ae)}}break;case 3:if(gs(a,s),Os(s),f&4&&u!==null&&u.memoizedState.isDehydrated)try{wr(a.containerInfo)}catch(Ae){Zt(s,s.return,Ae)}break;case 4:gs(a,s),Os(s);break;case 13:gs(a,s),Os(s),b=s.child,b.flags&8192&&(_=b.memoizedState!==null,b.stateNode.isHidden=_,!_||b.alternate!==null&&b.alternate.memoizedState!==null||(Op=pt())),f&4&&bx(s);break;case 22:if(le=u!==null&&u.memoizedState!==null,s.mode&1?(On=(ee=On)||le,gs(a,s),On=ee):gs(a,s),Os(s),f&8192){if(ee=s.memoizedState!==null,(s.stateNode.isHidden=ee)&&!le&&(s.mode&1)!==0)for(ke=s,le=s.child;le!==null;){for(he=ke=le;ke!==null;){switch(oe=ke,we=oe.child,oe.tag){case 0:case 11:case 14:case 15:Zc(4,oe,oe.return);break;case 1:Cl(oe,oe.return);var Pe=oe.stateNode;if(typeof Pe.componentWillUnmount=="function"){f=oe,u=oe.return;try{a=f,Pe.props=a.memoizedProps,Pe.state=a.memoizedState,Pe.componentWillUnmount()}catch(Ae){Zt(f,u,Ae)}}break;case 5:Cl(oe,oe.return);break;case 22:if(oe.memoizedState!==null){Nx(he);continue}}we!==null?(we.return=oe,ke=we):Nx(he)}le=le.sibling}e:for(le=null,he=s;;){if(he.tag===5){if(le===null){le=he;try{b=he.stateNode,ee?(_=b.style,typeof _.setProperty=="function"?_.setProperty("display","none","important"):_.display="none"):(D=he.stateNode,U=he.memoizedProps.style,T=U!=null&&U.hasOwnProperty("display")?U.display:null,D.style.display=gr("display",T))}catch(Ae){Zt(s,s.return,Ae)}}}else if(he.tag===6){if(le===null)try{he.stateNode.nodeValue=ee?"":he.memoizedProps}catch(Ae){Zt(s,s.return,Ae)}}else if((he.tag!==22&&he.tag!==23||he.memoizedState===null||he===s)&&he.child!==null){he.child.return=he,he=he.child;continue}if(he===s)break e;for(;he.sibling===null;){if(he.return===null||he.return===s)break e;le===he&&(le=null),he=he.return}le===he&&(le=null),he.sibling.return=he.return,he=he.sibling}}break;case 19:gs(a,s),Os(s),f&4&&bx(s);break;case 21:break;default:gs(a,s),Os(s)}}function Os(s){var a=s.flags;if(a&2){try{e:{for(var u=s.return;u!==null;){if(yx(u)){var f=u;break e}u=u.return}throw Error(n(160))}switch(f.tag){case 5:var b=f.stateNode;f.flags&32&&(qn(b,""),f.flags&=-33);var _=xx(s);Ip(s,_,b);break;case 3:case 4:var T=f.stateNode.containerInfo,D=xx(s);Mp(s,D,T);break;default:throw Error(n(161))}}catch(U){Zt(s,s.return,U)}s.flags&=-3}a&4096&&(s.flags&=-4097)}function K4(s,a,u){ke=s,_x(s)}function _x(s,a,u){for(var f=(s.mode&1)!==0;ke!==null;){var b=ke,_=b.child;if(b.tag===22&&f){var T=b.memoizedState!==null||qu;if(!T){var D=b.alternate,U=D!==null&&D.memoizedState!==null||On;D=qu;var ee=On;if(qu=T,(On=U)&&!ee)for(ke=b;ke!==null;)T=ke,U=T.child,T.tag===22&&T.memoizedState!==null?jx(b):U!==null?(U.return=T,ke=U):jx(b);for(;_!==null;)ke=_,_x(_),_=_.sibling;ke=b,qu=D,On=ee}Sx(s)}else(b.subtreeFlags&8772)!==0&&_!==null?(_.return=b,ke=_):Sx(s)}}function Sx(s){for(;ke!==null;){var a=ke;if((a.flags&8772)!==0){var u=a.alternate;try{if((a.flags&8772)!==0)switch(a.tag){case 0:case 11:case 15:On||Ju(5,a);break;case 1:var f=a.stateNode;if(a.flags&4&&!On)if(u===null)f.componentDidMount();else{var b=a.elementType===a.type?u.memoizedProps:ps(a.type,u.memoizedProps);f.componentDidUpdate(b,u.memoizedState,f.__reactInternalSnapshotBeforeUpdate)}var _=a.updateQueue;_!==null&&Ny(a,_,f);break;case 3:var T=a.updateQueue;if(T!==null){if(u=null,a.child!==null)switch(a.child.tag){case 5:u=a.child.stateNode;break;case 1:u=a.child.stateNode}Ny(a,T,u)}break;case 5:var D=a.stateNode;if(u===null&&a.flags&4){u=D;var U=a.memoizedProps;switch(a.type){case"button":case"input":case"select":case"textarea":U.autoFocus&&u.focus();break;case"img":U.src&&(u.src=U.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(a.memoizedState===null){var ee=a.alternate;if(ee!==null){var le=ee.memoizedState;if(le!==null){var he=le.dehydrated;he!==null&&wr(he)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(n(163))}On||a.flags&512&&Lp(a)}catch(oe){Zt(a,a.return,oe)}}if(a===s){ke=null;break}if(u=a.sibling,u!==null){u.return=a.return,ke=u;break}ke=a.return}}function Nx(s){for(;ke!==null;){var a=ke;if(a===s){ke=null;break}var u=a.sibling;if(u!==null){u.return=a.return,ke=u;break}ke=a.return}}function jx(s){for(;ke!==null;){var a=ke;try{switch(a.tag){case 0:case 11:case 15:var u=a.return;try{Ju(4,a)}catch(U){Zt(a,u,U)}break;case 1:var f=a.stateNode;if(typeof f.componentDidMount=="function"){var b=a.return;try{f.componentDidMount()}catch(U){Zt(a,b,U)}}var _=a.return;try{Lp(a)}catch(U){Zt(a,_,U)}break;case 5:var T=a.return;try{Lp(a)}catch(U){Zt(a,T,U)}}}catch(U){Zt(a,a.return,U)}if(a===s){ke=null;break}var D=a.sibling;if(D!==null){D.return=a.return,ke=D;break}ke=a.return}}var Y4=Math.ceil,Gu=M.ReactCurrentDispatcher,$p=M.ReactCurrentOwner,Gr=M.ReactCurrentBatchConfig,wt=0,wn=null,ln=null,jn=0,Pr=0,Pl=ro(0),gn=0,Kc=null,da=0,Zu=0,Dp=0,Yc=null,cr=null,Op=0,Tl=1/0,yi=null,Ku=!1,Fp=null,co=null,Yu=!1,uo=null,Qu=0,Qc=0,Bp=null,Xu=-1,eh=0;function Xn(){return(wt&6)!==0?pt():Xu!==-1?Xu:Xu=pt()}function ho(s){return(s.mode&1)===0?1:(wt&2)!==0&&jn!==0?jn&-jn:M4.transition!==null?(eh===0&&(eh=ru()),eh):(s=gt,s!==0||(s=window.event,s=s===void 0?16:ft(s.type)),s)}function ys(s,a,u,f){if(50<Qc)throw Qc=0,Bp=null,Error(n(185));vr(s,u,f),((wt&2)===0||s!==wn)&&(s===wn&&((wt&2)===0&&(Zu|=u),gn===4&&mo(s,jn)),dr(s,f),u===1&&wt===0&&(a.mode&1)===0&&(Tl=pt()+500,Pu&&io()))}function dr(s,a){var u=s.callbackNode;Za(s,a);var f=Lt(s,s===wn?jn:0);if(f===0)u!==null&&Ge(u),s.callbackNode=null,s.callbackPriority=0;else if(a=f&-f,s.callbackPriority!==a){if(u!=null&&Ge(u),a===1)s.tag===0?L4(Cx.bind(null,s)):hy(Cx.bind(null,s)),Mn(function(){(wt&6)===0&&io()}),u=null;else{switch(Bi(f)){case 1:u=pc;break;case 4:u=nu;break;case 16:u=Ja;break;case 536870912:u=$i;break;default:u=Ja}u=Ix(u,kx.bind(null,s))}s.callbackPriority=a,s.callbackNode=u}}function kx(s,a){if(Xu=-1,eh=0,(wt&6)!==0)throw Error(n(327));var u=s.callbackNode;if(El()&&s.callbackNode!==u)return null;var f=Lt(s,s===wn?jn:0);if(f===0)return null;if((f&30)!==0||(f&s.expiredLanes)!==0||a)a=th(s,f);else{a=f;var b=wt;wt|=2;var _=Tx();(wn!==s||jn!==a)&&(yi=null,Tl=pt()+500,ha(s,a));do try{eN();break}catch(D){Px(s,D)}while(!0);sp(),Gu.current=_,wt=b,ln!==null?a=0:(wn=null,jn=0,a=gn)}if(a!==0){if(a===2&&(b=Rn(s),b!==0&&(f=b,a=zp(s,b))),a===1)throw u=Kc,ha(s,0),mo(s,f),dr(s,pt()),u;if(a===6)mo(s,f);else{if(b=s.current.alternate,(f&30)===0&&!Q4(b)&&(a=th(s,f),a===2&&(_=Rn(s),_!==0&&(f=_,a=zp(s,_))),a===1))throw u=Kc,ha(s,0),mo(s,f),dr(s,pt()),u;switch(s.finishedWork=b,s.finishedLanes=f,a){case 0:case 1:throw Error(n(345));case 2:ma(s,cr,yi);break;case 3:if(mo(s,f),(f&130023424)===f&&(a=Op+500-pt(),10<a)){if(Lt(s,0)!==0)break;if(b=s.suspendedLanes,(b&f)!==f){Xn(),s.pingedLanes|=s.suspendedLanes&b;break}s.timeoutHandle=pn(ma.bind(null,s,cr,yi),a);break}ma(s,cr,yi);break;case 4:if(mo(s,f),(f&4194240)===f)break;for(a=s.eventTimes,b=-1;0<f;){var T=31-et(f);_=1<<T,T=a[T],T>b&&(b=T),f&=~_}if(f=b,f=pt()-f,f=(120>f?120:480>f?480:1080>f?1080:1920>f?1920:3e3>f?3e3:4320>f?4320:1960*Y4(f/1960))-f,10<f){s.timeoutHandle=pn(ma.bind(null,s,cr,yi),f);break}ma(s,cr,yi);break;case 5:ma(s,cr,yi);break;default:throw Error(n(329))}}}return dr(s,pt()),s.callbackNode===u?kx.bind(null,s):null}function zp(s,a){var u=Yc;return s.current.memoizedState.isDehydrated&&(ha(s,a).flags|=256),s=th(s,a),s!==2&&(a=cr,cr=u,a!==null&&Wp(a)),s}function Wp(s){cr===null?cr=s:cr.push.apply(cr,s)}function Q4(s){for(var a=s;;){if(a.flags&16384){var u=a.updateQueue;if(u!==null&&(u=u.stores,u!==null))for(var f=0;f<u.length;f++){var b=u[f],_=b.getSnapshot;b=b.value;try{if(!Nr(_(),b))return!1}catch{return!1}}}if(u=a.child,a.subtreeFlags&16384&&u!==null)u.return=a,a=u;else{if(a===s)break;for(;a.sibling===null;){if(a.return===null||a.return===s)return!0;a=a.return}a.sibling.return=a.return,a=a.sibling}}return!0}function mo(s,a){for(a&=~Dp,a&=~Zu,s.suspendedLanes|=a,s.pingedLanes&=~a,s=s.expirationTimes;0<a;){var u=31-et(a),f=1<<u;s[u]=-1,a&=~f}}function Cx(s){if((wt&6)!==0)throw Error(n(327));El();var a=Lt(s,0);if((a&1)===0)return dr(s,pt()),null;var u=th(s,a);if(s.tag!==0&&u===2){var f=Rn(s);f!==0&&(a=f,u=zp(s,f))}if(u===1)throw u=Kc,ha(s,0),mo(s,a),dr(s,pt()),u;if(u===6)throw Error(n(345));return s.finishedWork=s.current.alternate,s.finishedLanes=a,ma(s,cr,yi),dr(s,pt()),null}function Up(s,a){var u=wt;wt|=1;try{return s(a)}finally{wt=u,wt===0&&(Tl=pt()+500,Pu&&io())}}function ua(s){uo!==null&&uo.tag===0&&(wt&6)===0&&El();var a=wt;wt|=1;var u=Gr.transition,f=gt;try{if(Gr.transition=null,gt=1,s)return s()}finally{gt=f,Gr.transition=u,wt=a,(wt&6)===0&&io()}}function Hp(){Pr=Pl.current,Dt(Pl)}function ha(s,a){s.finishedWork=null,s.finishedLanes=0;var u=s.timeoutHandle;if(u!==-1&&(s.timeoutHandle=-1,an(u)),ln!==null)for(u=ln.return;u!==null;){var f=u;switch(Xm(f),f.tag){case 1:f=f.type.childContextTypes,f!=null&&ku();break;case 3:jl(),Dt(or),Dt(In),hp();break;case 5:dp(f);break;case 4:jl();break;case 13:Dt(Ht);break;case 19:Dt(Ht);break;case 10:ip(f.type._context);break;case 22:case 23:Hp()}u=u.return}if(wn=s,ln=s=po(s.current,null),jn=Pr=a,gn=0,Kc=null,Dp=Zu=da=0,cr=Yc=null,aa!==null){for(a=0;a<aa.length;a++)if(u=aa[a],f=u.interleaved,f!==null){u.interleaved=null;var b=f.next,_=u.pending;if(_!==null){var T=_.next;_.next=b,f.next=T}u.pending=f}aa=null}return s}function Px(s,a){do{var u=ln;try{if(sp(),Ou.current=Wu,Fu){for(var f=Vt.memoizedState;f!==null;){var b=f.queue;b!==null&&(b.pending=null),f=f.next}Fu=!1}if(ca=0,bn=fn=Vt=null,Hc=!1,Vc=0,$p.current=null,u===null||u.return===null){gn=1,Kc=a,ln=null;break}e:{var _=s,T=u.return,D=u,U=a;if(a=jn,D.flags|=32768,U!==null&&typeof U=="object"&&typeof U.then=="function"){var ee=U,le=D,he=le.tag;if((le.mode&1)===0&&(he===0||he===11||he===15)){var oe=le.alternate;oe?(le.updateQueue=oe.updateQueue,le.memoizedState=oe.memoizedState,le.lanes=oe.lanes):(le.updateQueue=null,le.memoizedState=null)}var we=Xy(T);if(we!==null){we.flags&=-257,ex(we,T,D,_,a),we.mode&1&&Qy(_,ee,a),a=we,U=ee;var Pe=a.updateQueue;if(Pe===null){var Ae=new Set;Ae.add(U),a.updateQueue=Ae}else Pe.add(U);break e}else{if((a&1)===0){Qy(_,ee,a),Vp();break e}U=Error(n(426))}}else if(Wt&&D.mode&1){var en=Xy(T);if(en!==null){(en.flags&65536)===0&&(en.flags|=256),ex(en,T,D,_,a),np(kl(U,D));break e}}_=U=kl(U,D),gn!==4&&(gn=2),Yc===null?Yc=[_]:Yc.push(_),_=T;do{switch(_.tag){case 3:_.flags|=65536,a&=-a,_.lanes|=a;var K=Ky(_,U,a);Sy(_,K);break e;case 1:D=U;var J=_.type,Y=_.stateNode;if((_.flags&128)===0&&(typeof J.getDerivedStateFromError=="function"||Y!==null&&typeof Y.componentDidCatch=="function"&&(co===null||!co.has(Y)))){_.flags|=65536,a&=-a,_.lanes|=a;var me=Yy(_,D,a);Sy(_,me);break e}}_=_.return}while(_!==null)}Ax(u)}catch(Le){a=Le,ln===u&&u!==null&&(ln=u=u.return);continue}break}while(!0)}function Tx(){var s=Gu.current;return Gu.current=Wu,s===null?Wu:s}function Vp(){(gn===0||gn===3||gn===2)&&(gn=4),wn===null||(da&268435455)===0&&(Zu&268435455)===0||mo(wn,jn)}function th(s,a){var u=wt;wt|=2;var f=Tx();(wn!==s||jn!==a)&&(yi=null,ha(s,a));do try{X4();break}catch(b){Px(s,b)}while(!0);if(sp(),wt=u,Gu.current=f,ln!==null)throw Error(n(261));return wn=null,jn=0,gn}function X4(){for(;ln!==null;)Ex(ln)}function eN(){for(;ln!==null&&!Ke();)Ex(ln)}function Ex(s){var a=Mx(s.alternate,s,Pr);s.memoizedProps=s.pendingProps,a===null?Ax(s):ln=a,$p.current=null}function Ax(s){var a=s;do{var u=a.alternate;if(s=a.return,(a.flags&32768)===0){if(u=q4(u,a,Pr),u!==null){ln=u;return}}else{if(u=J4(u,a),u!==null){u.flags&=32767,ln=u;return}if(s!==null)s.flags|=32768,s.subtreeFlags=0,s.deletions=null;else{gn=6,ln=null;return}}if(a=a.sibling,a!==null){ln=a;return}ln=a=s}while(a!==null);gn===0&&(gn=5)}function ma(s,a,u){var f=gt,b=Gr.transition;try{Gr.transition=null,gt=1,tN(s,a,u,f)}finally{Gr.transition=b,gt=f}return null}function tN(s,a,u,f){do El();while(uo!==null);if((wt&6)!==0)throw Error(n(327));u=s.finishedWork;var b=s.finishedLanes;if(u===null)return null;if(s.finishedWork=null,s.finishedLanes=0,u===s.current)throw Error(n(177));s.callbackNode=null,s.callbackPriority=0;var _=u.lanes|u.childLanes;if(Gt(s,_),s===wn&&(ln=wn=null,jn=0),(u.subtreeFlags&2064)===0&&(u.flags&2064)===0||Yu||(Yu=!0,Ix(Ja,function(){return El(),null})),_=(u.flags&15990)!==0,(u.subtreeFlags&15990)!==0||_){_=Gr.transition,Gr.transition=null;var T=gt;gt=1;var D=wt;wt|=4,$p.current=null,Z4(s,u),wx(u,s),zr(Fe),Ko=!!ve,Fe=ve=null,s.current=u,K4(u),Xt(),wt=D,gt=T,Gr.transition=_}else s.current=u;if(Yu&&(Yu=!1,uo=s,Qu=b),_=s.pendingLanes,_===0&&(co=null),Vo(u.stateNode),dr(s,pt()),a!==null)for(f=s.onRecoverableError,u=0;u<a.length;u++)b=a[u],f(b.value,{componentStack:b.stack,digest:b.digest});
vendor: 3,914 bytes, line 40
40if(Ku)throw Ku=!1,s=Fp,Fp=null,s;return(Qu&1)!==0&&s.tag!==0&&El(),_=s.pendingLanes,(_&1)!==0?s===Bp?Qc++:(Qc=0,Bp=s):Qc=0,io(),null}function El(){if(uo!==null){var s=Bi(Qu),a=Gr.transition,u=gt;try{if(Gr.transition=null,gt=16>s?16:s,uo===null)var f=!1;else{if(s=uo,uo=null,Qu=0,(wt&6)!==0)throw Error(n(331));var b=wt;for(wt|=4,ke=s.current;ke!==null;){var _=ke,T=_.child;if((ke.flags&16)!==0){var D=_.deletions;if(D!==null){for(var U=0;U<D.length;U++){var ee=D[U];for(ke=ee;ke!==null;){var le=ke;switch(le.tag){case 0:case 11:case 15:Zc(8,le,_)}var he=le.child;if(he!==null)he.return=le,ke=he;else for(;ke!==null;){le=ke;var oe=le.sibling,we=le.return;if(gx(le),le===ee){ke=null;break}if(oe!==null){oe.return=we,ke=oe;break}ke=we}}}var Pe=_.alternate;if(Pe!==null){var Ae=Pe.child;if(Ae!==null){Pe.child=null;do{var en=Ae.sibling;Ae.sibling=null,Ae=en}while(Ae!==null)}}ke=_}}if((_.subtreeFlags&2064)!==0&&T!==null)T.return=_,ke=T;else e:for(;ke!==null;){if(_=ke,(_.flags&2048)!==0)switch(_.tag){case 0:case 11:case 15:Zc(9,_,_.return)}var K=_.sibling;if(K!==null){K.return=_.return,ke=K;break e}ke=_.return}}var J=s.current;for(ke=J;ke!==null;){T=ke;var Y=T.child;if((T.subtreeFlags&2064)!==0&&Y!==null)Y.return=T,ke=Y;else e:for(T=J;ke!==null;){if(D=ke,(D.flags&2048)!==0)try{switch(D.tag){case 0:case 11:case 15:Ju(9,D)}}catch(Le){Zt(D,D.return,Le)}if(D===T){ke=null;break e}var me=D.sibling;if(me!==null){me.return=D.return,ke=me;break e}ke=D.return}}if(wt=b,io(),xr&&typeof xr.onPostCommitFiberRoot=="function")try{xr.onPostCommitFiberRoot(Ho,s)}catch{}f=!0}return f}finally{gt=u,Gr.transition=a}}return!1}function Rx(s,a,u){a=kl(u,a),a=Ky(s,a,1),s=ao(s,a,1),a=Xn(),s!==null&&(vr(s,1,a),dr(s,a))}function Zt(s,a,u){if(s.tag===3)Rx(s,s,u);else for(;a!==null;){if(a.tag===3){Rx(a,s,u);break}else if(a.tag===1){var f=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof f.componentDidCatch=="function"&&(co===null||!co.has(f))){s=kl(u,s),s=Yy(a,s,1),a=ao(a,s,1),s=Xn(),a!==null&&(vr(a,1,s),dr(a,s));break}}a=a.return}}function nN(s,a,u){var f=s.pingCache;f!==null&&f.delete(a),a=Xn(),s.pingedLanes|=s.suspendedLanes&u,wn===s&&(jn&u)===u&&(gn===4||gn===3&&(jn&130023424)===jn&&500>pt()-Op?ha(s,0):Dp|=u),dr(s,a)}function Lx(s,a){a===0&&((s.mode&1)===0?a=1:(a=Oi,Oi<<=1,(Oi&130023424)===0&&(Oi=4194304)));var u=Xn();s=pi(s,a),s!==null&&(vr(s,a,u),dr(s,u))}function rN(s){var a=s.memoizedState,u=0;a!==null&&(u=a.retryLane),Lx(s,u)}function sN(s,a){var u=0;switch(s.tag){case 13:var f=s.stateNode,b=s.memoizedState;b!==null&&(u=b.retryLane);break;case 19:f=s.stateNode;break;default:throw Error(n(314))}f!==null&&f.delete(a),Lx(s,u)}var Mx;Mx=function(s,a,u){if(s!==null)if(s.memoizedProps!==a.pendingProps||or.current)lr=!0;else{if((s.lanes&u)===0&&(a.flags&128)===0)return lr=!1,V4(s,a,u);lr=(s.flags&131072)!==0}else lr=!1,Wt&&(a.flags&1048576)!==0&&my(a,Eu,a.index);switch(a.lanes=0,a.tag){case 2:var f=a.type;Vu(s,a),s=a.pendingProps;var b=xl(a,In.current);Nl(a,u),b=fp(null,a,f,s,b,u);var _=gp();return a.flags|=1,typeof b=="object"&&b!==null&&typeof b.render=="function"&&b.$$typeof===void 0?(a.tag=1,a.memoizedState=null,a.updateQueue=null,ar(f)?(_=!0,Cu(a)):_=!1,a.memoizedState=b.state!==null&&b.state!==void 0?b.state:null,lp(a),b.updater=Uu,a.stateNode=b,b._reactInternals=a,_p(a,f,s,u),a=kp(null,a,f,!0,_,u)):(a.tag=0,Wt&&_&&Qm(a),Qn(null,a,b,u),a=a.child),a;case 16:f=a.elementType;e:{switch(Vu(s,a),s=a.pendingProps,b=f._init,f=b(f._payload),a.type=f,b=a.tag=oN(f),s=ps(f,s),b){case 0:a=jp(null,a,f,s,u);break e;case 1:a=ox(null,a,f,s,u);break e;case 11:a=tx(null,a,f,s,u);break e;case 14:a=nx(null,a,f,ps(f.type,s),u);break e}throw Error(n(306,f,""))}return a;case 0:return f=a.type,b=a.pendingProps,b=a.elementType===f?b:ps(f,b),jp(s,a,f,b,u);case 1:return f=a.type,b=a.pendingProps,b=a.elementType===f?b:ps(f,b),ox(s,a,f,b,u);case 3:e:{if(ax(a),s===null)throw Error(n(387));
vendor: 10,378 bytes, line 40
40f=a.pendingProps,_=a.memoizedState,b=_.element,_y(s,a),$u(a,f,null,u);var T=a.memoizedState;if(f=T.element,_.isDehydrated)if(_={element:f,isDehydrated:!1,cache:T.cache,pendingSuspenseBoundaries:T.pendingSuspenseBoundaries,transitions:T.transitions},a.updateQueue.baseState=_,a.memoizedState=_,a.flags&256){b=kl(Error(n(423)),a),a=lx(s,a,f,u,b);break e}else if(f!==b){b=kl(Error(n(424)),a),a=lx(s,a,f,u,b);break e}else for(Cr=Is(a.stateNode.containerInfo.firstChild),kr=a,Wt=!0,ms=null,u=by(a,null,f,u),a.child=u;u;)u.flags=u.flags&-3|4096,u=u.sibling;else{if(wl(),f===b){a=gi(s,a,u);break e}Qn(s,a,f,u)}a=a.child}return a;case 5:return jy(a),s===null&&tp(a),f=a.type,b=a.pendingProps,_=s!==null?s.memoizedProps:null,T=b.children,st(f,b)?T=null:_!==null&&st(f,_)&&(a.flags|=32),ix(s,a),Qn(s,a,T,u),a.child;case 6:return s===null&&tp(a),null;case 13:return cx(s,a,u);case 4:return cp(a,a.stateNode.containerInfo),f=a.pendingProps,s===null?a.child=_l(a,null,f,u):Qn(s,a,f,u),a.child;case 11:return f=a.type,b=a.pendingProps,b=a.elementType===f?b:ps(f,b),tx(s,a,f,b,u);case 7:return Qn(s,a,a.pendingProps,u),a.child;case 8:return Qn(s,a,a.pendingProps.children,u),a.child;case 12:return Qn(s,a,a.pendingProps.children,u),a.child;case 10:e:{if(f=a.type._context,b=a.pendingProps,_=a.memoizedProps,T=b.value,Mt(Lu,f._currentValue),f._currentValue=T,_!==null)if(Nr(_.value,T)){if(_.children===b.children&&!or.current){a=gi(s,a,u);break e}}else for(_=a.child,_!==null&&(_.return=a);_!==null;){var D=_.dependencies;if(D!==null){T=_.child;for(var U=D.firstContext;U!==null;){if(U.context===f){if(_.tag===1){U=fi(-1,u&-u),U.tag=2;var ee=_.updateQueue;if(ee!==null){ee=ee.shared;var le=ee.pending;le===null?U.next=U:(U.next=le.next,le.next=U),ee.pending=U}}_.lanes|=u,U=_.alternate,U!==null&&(U.lanes|=u),op(_.return,u,a),D.lanes|=u;break}U=U.next}}else if(_.tag===10)T=_.type===a.type?null:_.child;else if(_.tag===18){if(T=_.return,T===null)throw Error(n(341));T.lanes|=u,D=T.alternate,D!==null&&(D.lanes|=u),op(T,u,a),T=_.sibling}else T=_.child;if(T!==null)T.return=_;else for(T=_;T!==null;){if(T===a){T=null;break}if(_=T.sibling,_!==null){_.return=T.return,T=_;break}T=T.return}_=T}Qn(s,a,b.children,u),a=a.child}return a;case 9:return b=a.type,f=a.pendingProps.children,Nl(a,u),b=qr(b),f=f(b),a.flags|=1,Qn(s,a,f,u),a.child;case 14:return f=a.type,b=ps(f,a.pendingProps),b=ps(f.type,b),nx(s,a,f,b,u);case 15:return rx(s,a,a.type,a.pendingProps,u);case 17:return f=a.type,b=a.pendingProps,b=a.elementType===f?b:ps(f,b),Vu(s,a),a.tag=1,ar(f)?(s=!0,Cu(a)):s=!1,Nl(a,u),Gy(a,f,b),_p(a,f,b,u),kp(null,a,f,!0,s,u);case 19:return ux(s,a,u);case 22:return sx(s,a,u)}throw Error(n(156,a.tag))};function Ix(s,a){return Qe(s,a)}function iN(s,a,u,f){this.tag=s,this.key=u,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=a,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=f,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Zr(s,a,u,f){return new iN(s,a,u,f)}function qp(s){return s=s.prototype,!(!s||!s.isReactComponent)}function oN(s){if(typeof s=="function")return qp(s)?1:0;if(s!=null){if(s=s.$$typeof,s===Re)return 11;if(s===mt)return 14}return 2}function po(s,a){var u=s.alternate;return u===null?(u=Zr(s.tag,a,s.key,s.mode),u.elementType=s.elementType,u.type=s.type,u.stateNode=s.stateNode,u.alternate=s,s.alternate=u):(u.pendingProps=a,u.type=s.type,u.flags=0,u.subtreeFlags=0,u.deletions=null),u.flags=s.flags&14680064,u.childLanes=s.childLanes,u.lanes=s.lanes,u.child=s.child,u.memoizedProps=s.memoizedProps,u.memoizedState=s.memoizedState,u.updateQueue=s.updateQueue,a=s.dependencies,u.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext},u.sibling=s.sibling,u.index=s.index,u.ref=s.ref,u}function nh(s,a,u,f,b,_){var T=2;if(f=s,typeof s=="function")qp(s)&&(T=1);else if(typeof s=="string")T=5;else e:switch(s){case V:return pa(u.children,b,_,a);case W:T=8,b|=8;break;case ne:return s=Zr(12,u,a,b|2),s.elementType=ne,s.lanes=_,s;case Je:return s=Zr(13,u,a,b),s.elementType=Je,s.lanes=_,s;case Ie:return s=Zr(19,u,a,b),s.elementType=Ie,s.lanes=_,s;case je:return rh(u,b,_,a);default:if(typeof s=="object"&&s!==null)switch(s.$$typeof){case de:T=10;break e;case be:T=9;break e;case Re:T=11;break e;case mt:T=14;break e;case Se:T=16,f=null;break e}throw Error(n(130,s==null?s:typeof s,""))}return a=Zr(T,u,a,b),a.elementType=s,a.type=f,a.lanes=_,a}function pa(s,a,u,f){return s=Zr(7,s,f,a),s.lanes=u,s}function rh(s,a,u,f){return s=Zr(22,s,f,a),s.elementType=je,s.lanes=u,s.stateNode={isHidden:!1},s}function Jp(s,a,u){return s=Zr(6,s,null,a),s.lanes=u,s}function Gp(s,a,u){return a=Zr(4,s.children!==null?s.children:[],s.key,a),a.lanes=u,a.stateNode={containerInfo:s.containerInfo,pendingChildren:null,implementation:s.implementation},a}function aN(s,a,u,f,b){this.tag=a,this.containerInfo=s,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Fi(0),this.expirationTimes=Fi(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Fi(0),this.identifierPrefix=f,this.onRecoverableError=b,this.mutableSourceEagerHydrationData=null}function Zp(s,a,u,f,b,_,T,D,U){return s=new aN(s,a,u,D,U),a===1?(a=1,_===!0&&(a|=8)):a=0,_=Zr(3,null,null,a),s.current=_,_.stateNode=s,_.memoizedState={element:f,isDehydrated:u,cache:null,transitions:null,pendingSuspenseBoundaries:null},lp(_),s}function lN(s,a,u){var f=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:z,key:f==null?null:""+f,children:s,containerInfo:a,implementation:u}}function $x(s){if(!s)return so;s=s._reactInternals;e:{if(Dr(s)!==s||s.tag!==1)throw Error(n(170));var a=s;do{switch(a.tag){case 3:a=a.stateNode.context;break e;case 1:if(ar(a.type)){a=a.stateNode.__reactInternalMemoizedMergedChildContext;break e}}a=a.return}while(a!==null);throw Error(n(171))}if(s.tag===1){var u=s.type;if(ar(u))return dy(s,u,a)}return a}function Dx(s,a,u,f,b,_,T,D,U){return s=Zp(u,f,!0,s,b,_,T,D,U),s.context=$x(null),u=s.current,f=Xn(),b=ho(u),_=fi(f,b),_.callback=a??null,ao(u,_,b),s.current.lanes=b,vr(s,b,f),dr(s,f),s}function sh(s,a,u,f){var b=a.current,_=Xn(),T=ho(b);return u=$x(u),a.context===null?a.context=u:a.pendingContext=u,a=fi(_,T),a.payload={element:s},f=f===void 0?null:f,f!==null&&(a.callback=f),s=ao(b,a,T),s!==null&&(ys(s,b,T,_),Iu(s,b,T)),T}function ih(s){if(s=s.current,!s.child)return null;switch(s.child.tag){case 5:return s.child.stateNode;default:return s.child.stateNode}}function Ox(s,a){if(s=s.memoizedState,s!==null&&s.dehydrated!==null){var u=s.retryLane;s.retryLane=u!==0&&u<a?u:a}}function Kp(s,a){Ox(s,a),(s=s.alternate)&&Ox(s,a)}function cN(){return null}var Fx=typeof reportError=="function"?reportError:function(s){console.error(s)};function Yp(s){this._internalRoot=s}oh.prototype.render=Yp.prototype.render=function(s){var a=this._internalRoot;if(a===null)throw Error(n(409));sh(s,a,null,null)},oh.prototype.unmount=Yp.prototype.unmount=function(){var s=this._internalRoot;if(s!==null){this._internalRoot=null;var a=s.containerInfo;ua(function(){sh(null,s,null,null)}),a[Nt]=null}};function oh(s){this._internalRoot=s}oh.prototype.unstable_scheduleHydration=function(s){if(s){var a=Qa();s={blockedOn:null,target:s,priority:a};for(var u=0;u<mn.length&&a!==0&&a<mn[u].priority;u++);mn.splice(u,0,s),u===0&&Xa(s)}};function Qp(s){return!(!s||s.nodeType!==1&&s.nodeType!==9&&s.nodeType!==11)}function ah(s){return!(!s||s.nodeType!==1&&s.nodeType!==9&&s.nodeType!==11&&(s.nodeType!==8||s.nodeValue!==" react-mount-point-unstable "))}function Bx(){}function dN(s,a,u,f,b){if(b){if(typeof f=="function"){var _=f;f=function(){var ee=ih(T);_.call(ee)}}var T=Dx(a,f,s,0,null,!1,!1,"",Bx);return s._reactRootContainer=T,s[Nt]=T.current,Xi(s.nodeType===8?s.parentNode:s),ua(),T}for(;b=s.lastChild;)s.removeChild(b);if(typeof f=="function"){var D=f;f=function(){var ee=ih(U);D.call(ee)}}var U=Zp(s,0,!1,null,null,!1,!1,"",Bx);return s._reactRootContainer=U,s[Nt]=U.current,Xi(s.nodeType===8?s.parentNode:s),ua(function(){sh(a,U,u,f)}),U}function lh(s,a,u,f,b){var _=u._reactRootContainer;if(_){var T=_;if(typeof b=="function"){var D=b;b=function(){var U=ih(T);D.call(U)}}sh(a,T,s,b)}else T=dN(u,a,s,b,f);return ih(T)}Ka=function(s){switch(s.tag){case 3:var a=s.stateNode;if(a.current.memoizedState.isDehydrated){var u=Xe(a.pendingLanes);u!==0&&(ls(a,u|1),dr(a,pt()),(wt&6)===0&&(Tl=pt()+500,io()))}break;case 13:ua(function(){var f=pi(s,1);if(f!==null){var b=Xn();ys(f,s,1,b)}}),Kp(s,1)}},Xs=function(s){if(s.tag===13){var a=pi(s,134217728);if(a!==null){var u=Xn();ys(a,s,134217728,u)}Kp(s,134217728)}},Ya=function(s){if(s.tag===13){var a=ho(s),u=pi(s,a);if(u!==null){var f=Xn();ys(u,s,a,f)}Kp(s,a)}},Qa=function(){return gt},qo=function(s,a){var u=gt;try{return gt=s,a()}finally{gt=u}},$r=function(s,a,u){switch(a){case"input":if(At(s,u),a=u.name,u.type==="radio"&&a!=null){for(u=s;u.parentNode;)u=u.parentNode;for(u=u.querySelectorAll("input[name="+JSON.stringify(""+a)+'][type="radio"]'),a=0;a<u.length;a++){var f=u[a];if(f!==s&&f.form===s.form){var b=gl(f);if(!b)throw Error(n(90));kt(f),At(f,b)}}}break;case"textarea":Bo(s,u);break;case"select":a=u.value,a!=null&&Vn(s,!!u.multiple,a,!1)}},at=Up,bt=ua;var uN={usingClientEntryPoint:!1,Events:[ci,di,gl,fe,Oe,Up]},Xc={findFiberByHostInstance:li,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},hN={bundleType:Xc.bundleType,version:Xc.version,rendererPackageName:Xc.rendererPackageName,rendererConfig:Xc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:M.ReactCurrentDispatcher,findHostInstanceByFiber:function(s){return s=ae(s),s===null?null:s.stateNode},findFiberByHostInstance:Xc.findFiberByHostInstance||cN,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};
40if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var ch=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ch.isDisabled&&ch.supportsFiber)try{Ho=ch.inject(hN),xr=ch}catch{}}return ur.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=uN,ur.createPortal=function(s,a){var u=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!Qp(a))throw Error(n(200));return lN(s,a,null,u)},ur.createRoot=function(s,a){if(!Qp(s))throw Error(n(299));var u=!1,f="",b=Fx;return a!=null&&(a.unstable_strictMode===!0&&(u=!0),a.identifierPrefix!==void 0&&(f=a.identifierPrefix),a.onRecoverableError!==void 0&&(b=a.onRecoverableError)),a=Zp(s,1,!1,null,null,u,!1,f,b),s[Nt]=a.current,Xi(s.nodeType===8?s.parentNode:s),new Yp(a)},ur.findDOMNode=function(s){if(s==null)return null;if(s.nodeType===1)return s;var a=s._reactInternals;if(a===void 0)throw typeof s.render=="function"?Error(n(188)):(s=Object.keys(s).join(","),Error(n(268,s)));return s=ae(a),s=s===null?null:s.stateNode,s},ur.flushSync=function(s){return ua(s)},ur.hydrate=function(s,a,u){if(!ah(a))throw Error(n(200));return lh(null,s,a,!0,u)},ur.hydrateRoot=function(s,a,u){if(!Qp(s))throw Error(n(405));var f=u!=null&&u.hydratedSources||null,b=!1,_="",T=Fx;if(u!=null&&(u.unstable_strictMode===!0&&(b=!0),u.identifierPrefix!==void 0&&(_=u.identifierPrefix),u.onRecoverableError!==void 0&&(T=u.onRecoverableError)),a=Dx(a,null,s,1,u??null,b,!1,_,T),s[Nt]=a.current,Xi(s),f)for(s=0;s<f.length;s++)u=f[s],b=u._getVersion,b=b(u._source),a.mutableSourceEagerHydrationData==null?a.mutableSourceEagerHydrationData=[u,b]:a.mutableSourceEagerHydrationData.push(u,b);return new oh(a)},ur.render=function(s,a,u){if(!ah(a))throw Error(n(200));return lh(null,s,a,!1,u)},ur.unmountComponentAtNode=function(s){if(!ah(s))throw Error(n(40));return s._reactRootContainer?(ua(function(){lh(null,null,s,!1,function(){s._reactRootContainer=null,s[Nt]=null})}),!0):!1},ur.unstable_batchedUpdates=Up,ur.unstable_renderSubtreeIntoContainer=function(s,a,u,f){if(!ah(u))throw Error(n(200));if(s==null||s._reactInternals===void 0)throw Error(n(38));return lh(s,a,u,!1,f)},ur.version="18.3.1-next-f1338f8080-20240426",ur}var Zx;function u1(){if(Zx)return nf.exports;Zx=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),nf.exports=_N(),nf.exports}var Kx;function SN(){if(Kx)return uh;Kx=1;var e=u1();return uh.createRoot=e.createRoot,uh.hydrateRoot=e.hydrateRoot,uh}var NN=SN();const jN=um(NN),kN=20,CN=1e6,_i={ADD_TOAST:"ADD_TOAST",UPDATE_TOAST:"UPDATE_TOAST",DISMISS_TOAST:"DISMISS_TOAST",REMOVE_TOAST:"REMOVE_TOAST"};let of=0;function PN(){return of=(of+1)%Number.MAX_VALUE,of.toString()}const af=new Map,Yx=e=>{if(af.has(e))return;const t=setTimeout(()=>{af.delete(e),xd({type:_i.REMOVE_TOAST,toastId:e})},CN);af.set(e,t)},TN=(e,t)=>{switch(t.type){case _i.ADD_TOAST:return{...e,toasts:[t.toast,...e.toasts].slice(0,kN)};case _i.UPDATE_TOAST:return{...e,toasts:e.toasts.map(n=>n.id===t.toast.id?{...n,...t.toast}:n)};case _i.DISMISS_TOAST:{const{toastId:n}=t;return n?Yx(n):e.toasts.forEach(i=>{Yx(i.id)}),{...e,toasts:e.toasts.map(i=>i.id===n||n===void 0?{...i,open:!1}:i)}}case _i.REMOVE_TOAST:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(n=>n.id!==t.toastId)}}},Ah=[];let Rh={toasts:[]};function xd(e){Rh=TN(Rh,e),Ah.forEach(t=>{t(Rh)})}function EN({...e}){const t=PN(),n=l=>xd({type:_i.UPDATE_TOAST,toast:{...l,id:t}}),i=()=>xd({type:_i.DISMISS_TOAST,toastId:t});return xd({type:_i.ADD_TOAST,toast:{...e,id:t,open:!0,onOpenChange:l=>{l||i()}}}),{id:t,dismiss:i,update:n}}function AN(){const[e,t]=S.useState(Rh);return S.useEffect(()=>(Ah.push(t),()=>{const n=Ah.indexOf(t);n>-1&&Ah.splice(n,1)}),[e]),{...e,toast:EN,dismiss:n=>xd({type:_i.DISMISS_TOAST,toastId:n})}}function h1(e){var t,n,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e)){var l=e.length;for(t=0;t<l;t++)e[t]&&(n=h1(e[t]))&&(i&&(i+=" "),i+=n)}else for(n in e)e[n]&&(i&&(i+=" "),i+=n);return i}function m1(){for(var e,t,n=0,i="",l=arguments.length;n<l;n++)(e=arguments[n])&&(t=h1(e))&&(i&&(i+=" "),i+=t);return i}const Qx=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Xx=m1,Kg=(e,t)=>
vendor: 5,938 bytes, lines 40-105
40n=>{var i;if((t==null?void 0:t.variants)==null)return Xx(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:l,defaultVariants:d}=t,h=Object.keys(l).map(y=>{const x=n==null?void 0:n[y],w=d==null?void 0:d[y];if(x===null)return null;const j=Qx(x)||Qx(w);return l[y][j]}),m=n&&Object.entries(n).reduce((y,x)=>{let[w,j]=x;return j===void 0||(y[w]=j),y},{}),g=t==null||(i=t.compoundVariants)===null||i===void 0?void 0:i.reduce((y,x)=>{let{class:w,className:j,...P}=x;return Object.entries(P).every(C=>{let[k,A]=C;return Array.isArray(A)?A.includes({...d,...m}[k]):{...d,...m}[k]===A})?[...y,w,j]:y},[]);return Xx(e,h,g,n==null?void 0:n.class,n==null?void 0:n.className)};/**
41 * @license lucide-react v0.475.0 - ISC
42 *
43 * This source code is licensed under the ISC license.
44 * See the LICENSE file in the root directory of this source tree.
45 */const RN=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),p1=(...e)=>e.filter((t,n,i)=>!!t&&t.trim()!==""&&i.indexOf(t)===n).join(" ").trim();/**
46 * @license lucide-react v0.475.0 - ISC
47 *
48 * This source code is licensed under the ISC license.
49 * See the LICENSE file in the root directory of this source tree.
50 */var LN={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"};/**
51 * @license lucide-react v0.475.0 - ISC
52 *
53 * This source code is licensed under the ISC license.
54 * See the LICENSE file in the root directory of this source tree.
55 */const MN=S.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:i,className:l="",children:d,iconNode:h,...m},g)=>S.createElement("svg",{ref:g,...LN,width:t,height:t,stroke:e,strokeWidth:i?Number(n)*24/Number(t):n,className:p1("lucide",l),...m},[...h.map(([y,x])=>S.createElement(y,x)),...Array.isArray(d)?d:[d]]));/**
56 * @license lucide-react v0.475.0 - ISC
57 *
58 * This source code is licensed under the ISC license.
59 * See the LICENSE file in the root directory of this source tree.
60 */const ce=(e,t)=>{const n=S.forwardRef(({className:i,...l},d)=>S.createElement(MN,{ref:d,iconNode:t,className:p1(`lucide-${RN(e)}`,i),...l}));return n.displayName=`${e}`,n};/**
61 * @license lucide-react v0.475.0 - ISC
62 *
63 * This source code is licensed under the ISC license.
64 * See the LICENSE file in the root directory of this source tree.
65 */const IN=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],mm=ce("ArrowLeft",IN);/**
66 * @license lucide-react v0.475.0 - ISC
67 *
68 * This source code is licensed under the ISC license.
69 * See the LICENSE file in the root directory of this source tree.
70 */const $N=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],DN=ce("ArrowRight",$N);/**
71 * @license lucide-react v0.475.0 - ISC
72 *
73 * This source code is licensed under the ISC license.
74 * See the LICENSE file in the root directory of this source tree.
75 */const ON=[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]],FN=ce("Award",ON);/**
76 * @license lucide-react v0.475.0 - ISC
77 *
78 * This source code is licensed under the ISC license.
79 * See the LICENSE file in the root directory of this source tree.
80 */const BN=[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],qf=ce("BadgeCheck",BN);/**
81 * @license lucide-react v0.475.0 - ISC
82 *
83 * This source code is licensed under the ISC license.
84 * See the LICENSE file in the root directory of this source tree.
85 */const zN=[["path",{d:"M10 4 8 6",key:"1rru8s"}],["path",{d:"M17 19v2",key:"ts1sot"}],["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"M7 19v2",key:"12npes"}],["path",{d:"M9 5 7.621 3.621A2.121 2.121 0 0 0 4 5v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5",key:"14ym8i"}]],WN=ce("Bath",zN);/**
86 * @license lucide-react v0.475.0 - ISC
87 *
88 * This source code is licensed under the ISC license.
89 * See the LICENSE file in the root directory of this source tree.
90 */const UN=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],HN=ce("Bell",UN);/**
91 * @license lucide-react v0.475.0 - ISC
92 *
93 * This source code is licensed under the ISC license.
94 * See the LICENSE file in the root directory of this source tree.
95 */const VN=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],Si=ce("Bot",VN);/**
96 * @license lucide-react v0.475.0 - ISC
97 *
98 * This source code is licensed under the ISC license.
99 * See the LICENSE file in the root directory of this source tree.
100 */const qN=[["path",{d:"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",key:"jecpp"}],["rect",{width:"20",height:"14",x:"2",y:"6",rx:"2",key:"i6l2r4"}]],JN=ce("Briefcase",qN);/**
101 * @license lucide-react v0.475.0 - ISC
102 *
103 * This source code is licensed under the ISC license.
104 * See the LICENSE file in the root directory of this source tree.
105 */const GN=[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6",key:"xs1cw7"}],["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}
105],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4",key:"k3fwyw"}]],f1=ce("Bug",GN);/**
106 * @license lucide-react v0.475.0 - ISC
107 *
108 * This source code is licensed under the ISC license.
109 * See the LICENSE file in the root directory of this source tree.
110 */const ZN=[["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"}]],KN=ce("CalendarDays",ZN);/**
111 * @license lucide-react v0.475.0 - ISC
112 *
113 * This source code is licensed under the ISC license.
114 * See the LICENSE file in the root directory of this source tree.
115 */const YN=[["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"}]],Jh=ce("Calendar",YN);/**
116 * @license lucide-react v0.475.0 - ISC
117 *
118 * This source code is licensed under the ISC license.
119 * See the LICENSE file in the root directory of this source tree.
120 */const QN=[["path",{d:"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z",key:"1tc9qg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]],pm=ce("Camera",QN);/**
121 * @license lucide-react v0.475.0 - ISC
122 *
123 * This source code is licensed under the ISC license.
124 * See the LICENSE file in the root directory of this source tree.
125 */const XN=[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]],Jf=ce("Car",XN);/**
126 * @license lucide-react v0.475.0 - ISC
127 *
128 * This source code is licensed under the ISC license.
129 * See the LICENSE file in the root directory of this source tree.
130 */const ej=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],tj=ce("ChartColumn",ej);/**
131 * @license lucide-react v0.475.0 - ISC
132 *
133 * This source code is licensed under the ISC license.
134 * See the LICENSE file in the root directory of this source tree.
135 */const nj=[["line",{x1:"18",x2:"18",y1:"20",y2:"10",key:"1xfpm4"}],["line",{x1:"12",x2:"12",y1:"20",y2:"4",key:"be30l9"}],["line",{x1:"6",x2:"6",y1:"20",y2:"14",key:"1r4le6"}]],rj=ce("ChartNoAxesColumn",nj);/**
136 * @license lucide-react v0.475.0 - ISC
137 *
138 * This source code is licensed under the ISC license.
139 * See the LICENSE file in the root directory of this source tree.
140 */const sj=[["path",{d:"M17 21a1 1 0 0 0 1-1v-5.35c0-.457.316-.844.727-1.041a4 4 0 0 0-2.134-7.589 5 5 0 0 0-9.186 0 4 4 0 0 0-2.134 7.588c.411.198.727.585.727 1.041V20a1 1 0 0 0 1 1Z",key:"1qvrer"}],["path",{d:"M6 17h12",key:"1jwigz"}]],ij=ce("ChefHat",sj);/**
141 * @license lucide-react v0.475.0 - ISC
142 *
143 * This source code is licensed under the ISC license.
144 * See the LICENSE file in the root directory of this source tree.
145 */const oj=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],$o=ce("ChevronDown",oj);/**
146 * @license lucide-react v0.475.0 - ISC
147 *
148 * This source code is licensed under the ISC license.
149 * See the LICENSE file in the root directory of this source tree.
150 */const aj=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],lj=ce("ChevronLeft",aj);/**
151 * @license lucide-react v0.475.0 - ISC
152 *
153 * This source code is licensed under the ISC license.
154 * See the LICENSE file in the root directory of this source tree.
155 */const cj=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],_s=ce("ChevronRight",cj);/**
156 * @license lucide-react v0.475.0 - ISC
157 *
158 * This source code is licensed under the ISC license.
159 * See the LICENSE file in the root directory of this source tree.
160 */const dj=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],Da=ce("ChevronUp",dj);/**
161 * @license lucide-react v0.475.0 - ISC
162 *
163 * This source code is licensed under the ISC license.
164 * See the LICENSE file in the root directory of this source tree.
165 */const uj=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],g1=ce("CircleAlert",uj);/**
166 * @license lucide-react v0.475.0 - ISC
167 *
168 * This source code is licensed under the ISC license.
169 * See the LICENSE file in the root directory of this source tree.
170 */const hj=[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]],qs=ce("CircleCheckBig",hj);/**
171 * @license lucide-react v0.475.0 - ISC
172 *
173 * This source code is licensed under the ISC license.
174 * See the LICENSE file in the root directory of this source tree.
175 */const mj=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],Ci=ce("CircleCheck",mj);/**
176 * @license lucide-react v0.475.0 - ISC
177 *
178 * This source code is licensed under the ISC license.
179 * See the LICENSE file in the root directory of this source tree.
180 */const pj=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],fj=ce("CircleX",pj);/**
181 * @license lucide-react v0.475.0 - ISC
182 *
183 * This source code is licensed under the ISC license.
184 * See the LICENSE file in the root directory of this source tree.
185 */const gj=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]],yj=ce("ClipboardList",gj);/**
186 * @license lucide-react v0.475.0 - ISC
187 *
188 * This source code is licensed under the ISC license.
189 * See the LICENSE file in the root directory of this source tree.
190 */const xj=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]],fm=ce("Clock",xj);/**
191 * @license lucide-react v0.475.0 - ISC
192 *
193 * This source code is licensed under the ISC license.
194 * See the LICENSE file in the root directory of this source tree.
195 */const vj=[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M16 14v6",key:"1j4efv"}],["path",{d:"M8 14v6",key:"17c4r9"}],["path",{d:"M12 16v6",key:"c8a4gj"}]],bj=ce("CloudRain",vj);/**
196 * @license lucide-react v0.475.0 - ISC
197 *
198 * This source code is licensed under the ISC license.
199 * See the LICENSE file in the root directory of this source tree.
200 */const wj=[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]],y1=ce("CreditCard",wj);/**
201 * @license lucide-react v0.475.0 - ISC
202 *
203 * This source code is licensed under the ISC license.
204 * See the LICENSE file in the root directory of this source tree.
205 */const _j=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],Sj=ce("Database",_j);/**
206 * @license lucide-react v0.475.0 - ISC
207 *
208 * This source code is licensed under the ISC license.
209 * See the LICENSE file in the root directory of this source tree.
210 */const Nj=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],oc=ce("DollarSign",Nj);/**
211 * @license lucide-react v0.475.0 - ISC
212 *
213 * This source code is licensed under the ISC license.
214 * See the LICENSE file in the root directory of this source tree.
215 */const jj=[["path",{d:"M13 4h3a2 2 0 0 1 2 2v14",key:"hrm0s9"}],["path",{d:"M2 20h3",key:"1gaodv"}],["path",{d:"M13 20h9",key:"s90cdi"}],["path",{d:"M10 12v.01",key:"vx6srw"}],["path",{d:"M13 4.562v16.157a1 1 0 0 1-1.242.97L5 20V5.562a2 2 0 0 1 1.515-1.94l4-1A2 2 0 0 1 13 4.561Z",key:"199qr4"}]],x1=ce("DoorOpen",jj);/**
216 * @license lucide-react v0.475.0 - ISC
217 *
218 * This source code is licensed under the ISC license.
219 * See the LICENSE file in the root directory of this source tree.
220 */const kj=[["path",{d:"M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z",key:"c7niix"}]],v1=ce("Droplet",kj);/**
221 * @license lucide-react v0.475.0 - ISC
222 *
223 * This source code is licensed under the ISC license.
224 * See the LICENSE file in the root directory of this source tree.
225 */const Cj=[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z",key:"1ptgy4"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97",key:"1sl1rz"}]],cd=ce("Droplets",Cj);/**
226 * @license lucide-react v0.475.0 - ISC
227 *
228 * This source code is licensed under the ISC license.
229 * See the LICENSE file in the root directory of this source tree.
230 */const Pj=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Tj=ce("EyeOff",Pj);/**
231 * @license lucide-react v0.475.0 - ISC
232 *
233 * This source code is licensed under the ISC license.
234 * See the LICENSE file in the root directory of this source tree.
235 */const Ej=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],b1=ce("Eye",Ej);/**
236 * @license lucide-react v0.475.0 - ISC
237 *
238 * This source code is licensed under the ISC license.
239 * See the LICENSE file in the root directory of this source tree.
240 */const Aj=[["path",{d:"M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z",key:"484a7f"}],["path",{d:"M12 12v.01",key:"u5ubse"}]],Rj=ce("Fan",Aj);/**
241 * @license lucide-react v0.475.0 - ISC
242 *
243 * This source code is licensed under the ISC license.
244 * See the LICENSE file in the root directory of this source tree.
245 */const Lj=[["path",{d:"M4 3 2 5v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",key:"1n2rgs"}],["path",{d:"M6 8h4",key:"utf9t1"}],["path",{d:"M6 18h4",key:"12yh4b"}],["path",{d:"m12 3-2 2v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",key:"3ha7mj"}
245],["path",{d:"M14 8h4",key:"1r8wg2"}],["path",{d:"M14 18h4",key:"1t3kbu"}],["path",{d:"m20 3-2 2v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",key:"dfd4e2"}]],Mj=ce("Fence",Lj);/**
246 * @license lucide-react v0.475.0 - ISC
247 *
248 * This source code is licensed under the ISC license.
249 * See the LICENSE file in the root directory of this source tree.
250 */const Ij=[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]],$j=ce("Filter",Ij);/**
251 * @license lucide-react v0.475.0 - ISC
252 *
253 * This source code is licensed under the ISC license.
254 * See the LICENSE file in the root directory of this source tree.
255 */const Dj=[["path",{d:"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z",key:"96xj49"}]],Gh=ce("Flame",Dj);/**
256 * @license lucide-react v0.475.0 - ISC
257 *
258 * This source code is licensed under the ISC license.
259 * See the LICENSE file in the root directory of this source tree.
260 */const Oj=[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]],Fj=ce("Gauge",Oj);/**
261 * @license lucide-react v0.475.0 - ISC
262 *
263 * This source code is licensed under the ISC license.
264 * See the LICENSE file in the root directory of this source tree.
265 */const Bj=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],w1=ce("Globe",Bj);/**
266 * @license lucide-react v0.475.0 - ISC
267 *
268 * This source code is licensed under the ISC license.
269 * See the LICENSE file in the root directory of this source tree.
270 */const zj=[["path",{d:"m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9",key:"eefl8a"}],["path",{d:"m18 15 4-4",key:"16gjal"}],["path",{d:"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5",key:"b7pghm"}]],_1=ce("Hammer",zj);/**
271 * @license lucide-react v0.475.0 - ISC
272 *
273 * This source code is licensed under the ISC license.
274 * See the LICENSE file in the root directory of this source tree.
275 */const Wj=[["path",{d:"M10 10V5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v5",key:"1p9q5i"}],["path",{d:"M14 6a6 6 0 0 1 6 6v3",key:"1hnv84"}],["path",{d:"M4 15v-3a6 6 0 0 1 6-6",key:"9ciidu"}],["rect",{x:"2",y:"15",width:"20",height:"4",rx:"1",key:"g3x8cw"}]],Uj=ce("HardHat",Wj);/**
276 * @license lucide-react v0.475.0 - ISC
277 *
278 * This source code is licensed under the ISC license.
279 * See the LICENSE file in the root directory of this source tree.
280 */const Hj=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]],Gf=ce("House",Hj);/**
281 * @license lucide-react v0.475.0 - ISC
282 *
283 * This source code is licensed under the ISC license.
284 * See the LICENSE file in the root directory of this source tree.
285 */const Vj=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],qj=ce("Info",Vj);/**
286 * @license lucide-react v0.475.0 - ISC
287 *
288 * This source code is licensed under the ISC license.
289 * See the LICENSE file in the root directory of this source tree.
290 */const Jj=[["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"}]],vd=ce("Layers",Jj);/**
291 * @license lucide-react v0.475.0 - ISC
292 *
293 * This source code is licensed under the ISC license.
294 * See the LICENSE file in the root directory of this source tree.
295 */const Gj=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]],Zj=ce("LayoutDashboard",Gj);/**
296 * @license lucide-react v0.475.0 - ISC
297 *
298 * This source code is licensed under the ISC license.
299 * See the LICENSE file in the root directory of this source tree.
300 */const Kj=[["path",{d:"M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",key:"nnexq3"}],["path",{d:"M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12",key:"mt58a7"}]],Zf=ce("Leaf",Kj);/**
301 * @license lucide-react v0.475.0 - ISC
302 *
303 * This source code is licensed under the ISC license.
304 * See the LICENSE file in the root directory of this source tree.
305 */const Yj=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],Qj=ce("LoaderCircle",Yj);/**
306 * @license lucide-react v0.475.0 - ISC
307 *
308 * This source code is licensed under the ISC license.
309 * See the LICENSE file in the root directory of this source tree.
310 */const Xj=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],S1=ce("Lock",Xj);/**
311 * @license lucide-react v0.475.0 - ISC
312 *
313 * This source code is licensed under the ISC license.
314 * See the LICENSE file in the root directory of this source tree.
315 */const e5=[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]],N1=ce("LogOut",e5);/**
316 * @license lucide-react v0.475.0 - ISC
317 *
318 * This source code is licensed under the ISC license.
319 * See the LICENSE file in the root directory of this source tree.
320 */const t5=[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]],n5=ce("Mail",t5);/**
321 * @license lucide-react v0.475.0 - ISC
322 *
323 * This source code is licensed under the ISC license.
324 * See the LICENSE file in the root directory of this source tree.
325 */const r5=[["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"}]],Yg=ce("MapPin",r5);/**
326 * @license lucide-react v0.475.0 - ISC
327 *
328 * This source code is licensed under the ISC license.
329 * See the LICENSE file in the root directory of this source tree.
330 */const s5=[["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["polyline",{points:"9 21 3 21 3 15",key:"1avn1i"}],["line",{x1:"21",x2:"14",y1:"3",y2:"10",key:"ota7mn"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]],i5=ce("Maximize2",s5);/**
331 * @license lucide-react v0.475.0 - ISC
332 *
333 * This source code is licensed under the ISC license.
334 * See the LICENSE file in the root directory of this source tree.
335 */const o5=[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]],a5=ce("MessageSquare",o5);/**
336 * @license lucide-react v0.475.0 - ISC
337 *
338 * This source code is licensed under the ISC license.
339 * See the LICENSE file in the root directory of this source tree.
340 */const l5=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],j1=ce("Package",l5);/**
341 * @license lucide-react v0.475.0 - ISC
342 *
343 * This source code is licensed under the ISC license.
344 * See the LICENSE file in the root directory of this source tree.
345 */const c5=[["path",{d:"m14.622 17.897-10.68-2.913",key:"vj2p1u"}],["path",{d:"M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z",ke
345y:"18tc5c"}],["path",{d:"M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15",key:"ytzfxy"}]],k1=ce("Paintbrush",c5);/**
346 * @license lucide-react v0.475.0 - ISC
347 *
348 * This source code is licensed under the ISC license.
349 * See the LICENSE file in the root directory of this source tree.
350 */const d5=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}]],u5=ce("PanelTop",d5);/**
351 * @license lucide-react v0.475.0 - ISC
352 *
353 * This source code is licensed under the ISC license.
354 * See the LICENSE file in the root directory of this source tree.
355 */const h5=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],m5=ce("Pen",h5);/**
356 * @license lucide-react v0.475.0 - ISC
357 *
358 * This source code is licensed under the ISC license.
359 * See the LICENSE file in the root directory of this source tree.
360 */const p5=[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]],Er=ce("Phone",p5);/**
361 * @license lucide-react v0.475.0 - ISC
362 *
363 * This source code is licensed under the ISC license.
364 * See the LICENSE file in the root directory of this source tree.
365 */const f5=[["path",{d:"m2 22 1-1h3l9-9",key:"1sre89"}],["path",{d:"M3 21v-3l9-9",key:"hpe2y6"}],["path",{d:"m15 6 3.4-3.4a2.1 2.1 0 1 1 3 3L18 9l.4.4a2.1 2.1 0 1 1-3 3l-3.8-3.8a2.1 2.1 0 1 1 3-3l.4.4Z",key:"196du1"}]],g5=ce("Pipette",f5);/**
366 * @license lucide-react v0.475.0 - ISC
367 *
368 * This source code is licensed under the ISC license.
369 * See the LICENSE file in the root directory of this source tree.
370 */const y5=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],x5=ce("Plus",y5);/**
371 * @license lucide-react v0.475.0 - ISC
372 *
373 * This source code is licensed under the ISC license.
374 * See the LICENSE file in the root directory of this source tree.
375 */const v5=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],Qg=ce("RefreshCw",v5);/**
376 * @license lucide-react v0.475.0 - ISC
377 *
378 * This source code is licensed under the ISC license.
379 * See the LICENSE file in the root directory of this source tree.
380 */const b5=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],w5=ce("RotateCcw",b5);/**
381 * @license lucide-react v0.475.0 - ISC
382 *
383 * This source code is licensed under the ISC license.
384 * See the LICENSE file in the root directory of this source tree.
385 */const _5=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],S5=ce("Save",_5);/**
386 * @license lucide-react v0.475.0 - ISC
387 *
388 * This source code is licensed under the ISC license.
389 * See the LICENSE file in the root directory of this source tree.
390 */const N5=[["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M8.12 8.12 12 12",key:"1alkpv"}],["path",{d:"M20 4 8.12 15.88",key:"xgtan2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M14.8 14.8 20 20",key:"ptml3r"}]],j5=ce("Scissors",N5);/**
391 * @license lucide-react v0.475.0 - ISC
392 *
393 * This source code is licensed under the ISC license.
394 * See the LICENSE file in the root directory of this source tree.
395 */const k5=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]],C1=ce("Search",k5);/**
396 * @license lucide-react v0.475.0 - ISC
397 *
398 * This source code is licensed under the ISC license.
399 * See the LICENSE file in the root directory of this source tree.
400 */const C5=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],P5=ce("Send",C5);/**
401 * @license lucide-react v0.475.0 - ISC
402 *
403 * This source code is licensed under the ISC license.
404 * See the LICENSE file in the root directory of this source tree.
405 */const T5=[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],E5=ce("Settings",T5);/**
406 * @license lucide-react v0.475.0 - ISC
407 *
408 * This source code is licensed under the ISC license.
409 * See the LICENSE file in the root directory of this source tree.
410 */const A5=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],R5=ce("Share2",A5);/**
411 * @license lucide-react v0.475.0 - ISC
412 *
413 * This source code is licensed under the ISC license.
414 * See the LICENSE file in the root directory of this source tree.
415 */const L5=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",ke
415y:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],Ud=ce("ShieldCheck",L5);/**
416 * @license lucide-react v0.475.0 - ISC
417 *
418 * This source code is licensed under the ISC license.
419 * See the LICENSE file in the root directory of this source tree.
420 */const M5=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],P1=ce("Shield",M5);/**
421 * @license lucide-react v0.475.0 - ISC
422 *
423 * This source code is licensed under the ISC license.
424 * See the LICENSE file in the root directory of this source tree.
425 */const I5=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],$5=ce("Smartphone",I5);/**
426 * @license lucide-react v0.475.0 - ISC
427 *
428 * This source code is licensed under the ISC license.
429 * See the LICENSE file in the root directory of this source tree.
430 */const D5=[["path",{d:"M20 9V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v3",key:"1dgpiv"}],["path",{d:"M2 16a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v1.5a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5V11a2 2 0 0 0-4 0z",key:"xacw8m"}],["path",{d:"M4 18v2",key:"jwo5n2"}],["path",{d:"M20 18v2",key:"1ar1qi"}],["path",{d:"M12 4v9",key:"oqhhn3"}]],O5=ce("Sofa",D5);/**
431 * @license lucide-react v0.475.0 - ISC
432 *
433 * This source code is licensed under the ISC license.
434 * See the LICENSE file in the root directory of this source tree.
435 */const F5=[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]],Lh=ce("Sparkles",F5);/**
436 * @license lucide-react v0.475.0 - ISC
437 *
438 * This source code is licensed under the ISC license.
439 * See the LICENSE file in the root directory of this source tree.
440 */const B5=[["path",{d:"M7 20h10",key:"e6iznv"}],["path",{d:"M10 20c5.5-2.5.8-6.4 3-10",key:"161w41"}],["path",{d:"M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z",key:"9gtqwd"}],["path",{d:"M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z",key:"bkxnd2"}]],z5=ce("Sprout",B5);/**
441 * @license lucide-react v0.475.0 - ISC
442 *
443 * This source code is licensed under the ISC license.
444 * See the LICENSE file in the root directory of this source tree.
445 */const W5=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],T1=ce("Star",W5);/**
446 * @license lucide-react v0.475.0 - ISC
447 *
448 * This source code is licensed under the ISC license.
449 * See the LICENSE file in the root directory of this source tree.
450 */const U5=[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]],ev=ce("Tag",U5);/**
451 * @license lucide-react v0.475.0 - ISC
452 *
453 * This source code is licensed under the ISC license.
454 * See the LICENSE file in the root directory of this source tree.
455 */const H5=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]],V5=ce("Target",H5);/**
456 * @license lucide-react v0.475.0 - ISC
457 *
458 * This source code is licensed under the ISC license.
459 * See the LICENSE file in the root directory of this source tree.
460 */const q5=[["path",{d:"M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z",key:"17jzev"}]],tv=ce("Thermometer",q5);/**
461 * @license lucide-react v0.475.0 - ISC
462 *
463 * This source code is licensed under the ISC license.
464 * See the LICENSE file in the root directory of this source tree.
465 */const J5=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],G5=ce("ThumbsDown",J5);/**
466 * @license lucide-react v0.475.0 - ISC
467 *
468 * This source code is licensed under the ISC license.
469 * See the LICENSE file in the root directory of this source tree.
470 */const Z5=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],Xg=ce("ThumbsUp",Z5);/**
471 * @license lucide-react v0.475.0 - ISC
472 *
473 * This source code is licensed under the ISC license.
474 * See the LICENSE file in the root directory of this source tree.
475 */const K5=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],e0=ce("Trash2",K5);/**
476 * @license lucide-react v0.475.0 - ISC
477 *
478 * This source code is licensed under the ISC license.
479 * See the LICENSE file in the root directory of this source tree.
480 */const Y5=[["path",{d:"m17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z",key:"cpyugq"}],["path",{d:"M12 22v-3",key:"kmzjlo"}]],Q5=ce("TreePine",Y5);/**
481 * @license lucide-react v0.475.0 - ISC
482 *
483 * This source code is licensed under the ISC license.
484 * See the LICENSE file in the root directory of this source tree.
485 */const X5=[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]],E1=ce("TrendingUp",X5);/**
486 * @license lucide-react v0.475.0 - ISC
487 *
488 * This source code is licensed under the ISC license.
489 * See the LICENSE file in the root directory of this source tree.
490 */const ek=[["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"}]],Zh=ce("TriangleAlert",ek);/**
491 * @license lucide-react v0.475.0 - ISC
492 *
493 * This source code is licensed under the ISC license.
494 * See the LICENSE file in the root directory of this source tree.
495 */const tk=[["path",{d:"M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2",key:"wrbu53"}],["path",{d:"M15 18H9",key:"1lyqi6"}],["path",{d:"M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14",key:"lysw3i"}],["circle",{cx:"17",cy:"18",r:"2",key:"332jqn"}],["circle",{cx:"7",cy:"18",r:"2",key:"19iecd"}]],A1=ce("Truck",tk);/**
496 * @license lucide-react v0.475.0 - ISC
497 *
498 * This source code is licensed under the ISC license.
499 * See the LICENSE file in the root directory of this source tree.
500 */const nk=[["path",{d:"M22 12a10.06 10.06 1 0 0-20 0Z",key:"1teyop"}],["path",{d:"M12 12v8a2 2 0 0 0 4 0",key:"ulpmoc"}],["path",{d:"M12 2v1",key:"11qlp1"}]],rk=ce("Umbrella",nk);/**
501 * @license lucide-react v0.475.0 - ISC
502 *
503 * This source code is licensed under the ISC license.
504 * See the LICENSE file in the root directory of this source tree.
505 */const sk=[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]],ik=ce("Upload",sk);/**
506 * @license lucide-react v0.475.0 - ISC
507 *
508 * This source code is licensed under the ISC license.
509 * See the LICENSE file in the root directory of this source tree.
510 */const ok=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],ak=ce("User",ok);/**
511 * @license lucide-react v0.475.0 - ISC
512 *
513 * This source code is licensed under the ISC license.
514 * See the LICENSE file in the root directory of this source tree.
515 */const lk=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]],gm=ce("Users",lk);/**
516 * @license lucide-react v0.475.0 - ISC
517 *
518 * This source code is licensed under the ISC license.
519 * See the LICENSE file in the root directory of this source tree.
520 */const ck=[["path",{d:"M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2",key:"cjf0a3"}],["path",{d:"M7 2v20",key:"1473qp"}
vendor: 4,711 bytes, lines 520-555
520],["path",{d:"M21 15V2a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7",key:"j28e5"}]],dk=ce("Utensils",ck);/**
521 * @license lucide-react v0.475.0 - ISC
522 *
523 * This source code is licensed under the ISC license.
524 * See the LICENSE file in the root directory of this source tree.
525 */const uk=[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]],nv=ce("Video",uk);/**
526 * @license lucide-react v0.475.0 - ISC
527 *
528 * This source code is licensed under the ISC license.
529 * See the LICENSE file in the root directory of this source tree.
530 */const hk=[["path",{d:"M22 8.35V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8.35A2 2 0 0 1 3.26 6.5l8-3.2a2 2 0 0 1 1.48 0l8 3.2A2 2 0 0 1 22 8.35Z",key:"gksnxg"}],["path",{d:"M6 18h12",key:"9pbo8z"}],["path",{d:"M6 14h12",key:"4cwo0f"}],["rect",{width:"12",height:"12",x:"6",y:"10",key:"apd30q"}]],mk=ce("Warehouse",hk);/**
531 * @license lucide-react v0.475.0 - ISC
532 *
533 * This source code is licensed under the ISC license.
534 * See the LICENSE file in the root directory of this source tree.
535 */const pk=[["path",{d:"M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",key:"knzxuh"}],["path",{d:"M2 12c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",key:"2jd2cc"}],["path",{d:"M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",key:"rd2r6e"}]],lf=ce("Waves",pk);/**
536 * @license lucide-react v0.475.0 - ISC
537 *
538 * This source code is licensed under the ISC license.
539 * See the LICENSE file in the root directory of this source tree.
540 */const fk=[["path",{d:"M12.8 19.6A2 2 0 1 0 14 16H2",key:"148xed"}],["path",{d:"M17.5 8a2.5 2.5 0 1 1 2 4H2",key:"1u4tom"}],["path",{d:"M9.8 4.4A2 2 0 1 1 11 8H2",key:"75valh"}]],Kf=ce("Wind",fk);/**
541 * @license lucide-react v0.475.0 - ISC
542 *
543 * This source code is licensed under the ISC license.
544 * See the LICENSE file in the root directory of this source tree.
545 */const gk=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]],wa=ce("Wrench",gk);/**
546 * @license lucide-react v0.475.0 - ISC
547 *
548 * This source code is licensed under the ISC license.
549 * See the LICENSE file in the root directory of this source tree.
550 */const yk=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Zs=ce("X",yk);/**
551 * @license lucide-react v0.475.0 - ISC
552 *
553 * This source code is licensed under the ISC license.
554 * See the LICENSE file in the root directory of this source tree.
555 */const xk=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],Hd=ce("Zap",xk),vk=(e,t)=>{const n=new Array(e.length+t.length);for(let i=0;i<e.length;i++)n[i]=e[i];for(let i=0;i<t.length;i++)n[e.length+i]=t[i];return n},bk=(e,t)=>({classGroupId:e,validator:t}),R1=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),Kh="-",rv=[],wk="arbitrary..",_k=e=>{const t=Nk(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:i}=e;return{getClassGroupId:h=>{if(h.startsWith("[")&&h.endsWith("]"))return Sk(h);const m=h.split(Kh),g=m[0]===""&&m.length>1?1:0;return L1(m,g,t)},getConflictingClassGroupIds:(h,m)=>{if(m){const g=i[h],y=n[h];return g?y?vk(y,g):g:y||rv}return n[h]||rv}}},L1=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const l=e[t],d=n.nextPart.get(l);if(d){const y=L1(e,t+1,d);if(y)return y}const h=n.validators;if(h===null)return;const m=t===0?e.join(Kh):e.slice(t).join(Kh),g=h.length;for(let y=0;y<g;y++){const x=h[y];if(x.validator(m))return x.classGroupId}},Sk=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),i=t.slice(0,n);return i?wk+i:void 0})(),Nk=e=>{const{theme:t,classGroups:n}=e;return jk(n,t)},jk=(e,t)=>{const n=R1();for(const i in e){const l=e[i];t0(l,n,i,t)}return n},t0=(e,t,n,i)=>{const l=e.length;for(let d=0;d<l;d++){const h=e[d];kk(h,t,n,i)}},kk=(e,t,n,i)=>{if(typeof e=="string"){Ck(e,t,n);return}if(typeof e=="function"){Pk(e,t,n,i);return}Tk(e,t,n,i)},Ck=(e,t,n)=>{const i=e===""?t:M1(t,e);i.classGroupId=n},Pk=(e,t,n,i)=>{if(Ek(e)){t0(e(i),t,n,i);return}t.validators===null&&(t.validators=[]),t.validators.push(bk(n,e))},Tk=(e,t,n,i)=>{const l=Object.entries(e),d=l.length;for(let h=0;h<d;h++){const[m,g]=l[h];t0(g,M1(t,m),n,i)}},M1=(e,t)=>{let n=e;const i=t.split(Kh),l=i.length;for(let d=0;d<l;d++){const h=i[d];let m=n.nextPart.get(h);m||(m=R1(),n.nextPart.set(h,m)),n=m}return n},Ek=e=>
vendor: 5,478 bytes, line 555
555"isThemeGetter"in e&&e.isThemeGetter===!0,Ak=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),i=Object.create(null);const l=(d,h)=>{n[d]=h,t++,t>e&&(t=0,i=n,n=Object.create(null))};return{get(d){let h=n[d];if(h!==void 0)return h;if((h=i[d])!==void 0)return l(d,h),h},set(d,h){d in n?n[d]=h:l(d,h)}}},Yf="!",sv=":",Rk=[],iv=(e,t,n,i,l)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:i,isExternal:l}),Lk=e=>{const{prefix:t,experimentalParseClassName:n}=e;let i=l=>{const d=[];let h=0,m=0,g=0,y;const x=l.length;for(let k=0;k<x;k++){const A=l[k];if(h===0&&m===0){if(A===sv){d.push(l.slice(g,k)),g=k+1;continue}if(A==="/"){y=k;continue}}A==="["?h++:A==="]"?h--:A==="("?m++:A===")"&&m--}const w=d.length===0?l:l.slice(g);let j=w,P=!1;w.endsWith(Yf)?(j=w.slice(0,-1),P=!0):w.startsWith(Yf)&&(j=w.slice(1),P=!0);const C=y&&y>g?y-g:void 0;return iv(d,P,j,C)};if(t){const l=t+sv,d=i;i=h=>h.startsWith(l)?d(h.slice(l.length)):iv(Rk,!1,h,void 0,!0)}if(n){const l=i;i=d=>n({className:d,parseClassName:l})}return i},Mk=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,i)=>{t.set(n,1e6+i)}),n=>{const i=[];let l=[];for(let d=0;d<n.length;d++){const h=n[d],m=h[0]==="[",g=t.has(h);m||g?(l.length>0&&(l.sort(),i.push(...l),l=[]),i.push(h)):l.push(h)}return l.length>0&&(l.sort(),i.push(...l)),i}},Ik=e=>({cache:Ak(e.cacheSize),parseClassName:Lk(e),sortModifiers:Mk(e),..._k(e)}),$k=/\s+/,Dk=(e,t)=>{const{parseClassName:n,getClassGroupId:i,getConflictingClassGroupIds:l,sortModifiers:d}=t,h=[],m=e.trim().split($k);let g="";for(let y=m.length-1;y>=0;y-=1){const x=m[y],{isExternal:w,modifiers:j,hasImportantModifier:P,baseClassName:C,maybePostfixModifierPosition:k}=n(x);if(w){g=x+(g.length>0?" "+g:g);continue}let A=!!k,E=i(A?C.substring(0,k):C);if(!E){if(!A){g=x+(g.length>0?" "+g:g);continue}if(E=i(C),!E){g=x+(g.length>0?" "+g:g);continue}A=!1}const $=j.length===0?"":j.length===1?j[0]:d(j).join(":"),I=P?$+Yf:$,M=I+E;if(h.indexOf(M)>-1)continue;h.push(M);const F=l(E,A);for(let z=0;z<F.length;++z){const V=F[z];h.push(I+V)}g=x+(g.length>0?" "+g:g)}return g},Ok=(...e)=>{let t=0,n,i,l="";for(;t<e.length;)(n=e[t++])&&(i=I1(n))&&(l&&(l+=" "),l+=i);return l},I1=e=>{if(typeof e=="string")return e;let t,n="";for(let i=0;i<e.length;i++)e[i]&&(t=I1(e[i]))&&(n&&(n+=" "),n+=t);return n},Fk=(e,...t)=>{let n,i,l,d;const h=g=>{const y=t.reduce((x,w)=>w(x),e());return n=Ik(y),i=n.cache.get,l=n.cache.set,d=m,m(g)},m=g=>{const y=i(g);if(y)return y;const x=Dk(g,n);return l(g,x),x};return d=h,(...g)=>d(Ok(...g))},Bk=[],yn=e=>{const t=n=>n[e]||Bk;return t.isThemeGetter=!0,t},$1=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,D1=/^\((?:(\w[\w-]*):)?(.+)\)$/i,zk=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Wk=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Uk=/\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$/,Hk=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Vk=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,qk=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,go=e=>zk.test(e),lt=e=>!!e&&!Number.isNaN(Number(e)),yo=e=>!!e&&Number.isInteger(Number(e)),cf=e=>e.endsWith("%")&&lt(e.slice(0,-1)),xi=e=>Wk.test(e),O1=()=>!0,Jk=e=>Uk.test(e)&&!Hk.test(e),n0=()=>!1,Gk=e=>Vk.test(e),Zk=e=>qk.test(e),Kk=e=>!Te(e)&&!Ee(e),Yk=e=>Do(e,z1,n0),Te=e=>$1.test(e),fa=e=>Do(e,W1,Jk),ov=e=>Do(e,iC,lt),Qk=e=>Do(e,H1,O1),Xk=e=>Do(e,U1,n0),av=e=>Do(e,F1,n0),eC=e=>Do(e,B1,Zk),hh=e=>Do(e,V1,Gk),Ee=e=>D1.test(e),td=e=>Wa(e,W1),tC=e=>Wa(e,U1),lv=e=>Wa(e,F1),nC=e=>Wa(e,z1),rC=e=>Wa(e,B1),mh=e=>Wa(e,V1,!0),sC=e=>Wa(e,H1,!0),Do=(e,t,n)=>{const i=$1.exec(e);return i?i[1]?t(i[1]):n(i[2]):!1},Wa=(e,t,n=!1)=>{const i=D1.exec(e);return i?i[1]?t(i[1]):n:!1},F1=e=>e==="position"||e==="percentage",B1=e=>e==="image"||e==="url",z1=e=>e==="length"||e==="size"||e==="bg-size",W1=e=>e==="length",iC=e=>e==="number",U1=e=>e==="family-name",H1=e=>e==="number"||e==="weight",V1=e=>e==="shadow",oC=()=>{const e=yn("color"),t=yn("font"),n=yn("text"),i=yn("font-weight"),l=yn("tracking"),d=yn("leading"),h=yn("breakpoint"),m=yn("container"),g=yn("spacing"),y=yn("radius"),x=yn("shadow"),w=yn("inset-shadow"),j=yn("text-shadow"),P=yn("drop-shadow"),C=yn("blur"),k=yn("perspective"),A=yn("aspect"),E=yn("ease"),$=yn("animate"),I=()=>["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"],F=()=>[...M(),Ee,Te],z=()=>["auto","hidden","clip","visible","scroll"],V=()=>["auto","contain","none"],W=()=>[Ee,Te,g],ne=()=>[go,"full","auto",...W()],de=()=>[yo,"none","subgrid",Ee,Te],be=()=>["auto",{span:["full",yo,Ee,Te]},yo,Ee,Te],Re=()=>[yo,"auto",Ee,Te],Je=()=>["auto","min","max","fr",Ee,Te],Ie=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],mt=()=>["start","end","center","stretch","center-safe","end-safe"],Se=()=>["auto",...W()],je=()=>[go,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...W()],X=()=>[go,"screen","full","dvw","lvw","svw","min","max","fit",...W()],ue=()=>[go,"screen","full","lh","dvh","lvh","svh","min","max","fit",...W()],q=()=>[e,Ee,Te],O=()=>[...M(),lv,av,{position:[Ee,Te]}],te=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ye=()=>["auto","cover","contain",nC,Yk,{size:[Ee,Te]}],ge=()=>
vendor: 7,218 bytes, line 555
555[cf,td,fa],pe=()=>["","none","full",y,Ee,Te],re=()=>["",lt,td,fa],$e=()=>["solid","dashed","dotted","double"],He=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],De=()=>[lt,cf,lv,av],Et=()=>["","none",C,Ee,Te],It=()=>["none",lt,Ee,Te],kt=()=>["none",lt,Ee,Te],dn=()=>[lt,Ee,Te],un=()=>[go,"full",...W()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[xi],breakpoint:[xi],color:[O1],container:[xi],"drop-shadow":[xi],ease:["in","out","in-out"],font:[Kk],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[xi],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[xi],shadow:[xi],spacing:["px",lt],text:[xi],"text-shadow":[xi],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",go,Te,Ee,A]}],container:["container"],columns:[{columns:[lt,Te,Ee,m]}],"break-after":[{"break-after":I()}],"break-before":[{"break-before":I()}],"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:F()}],overflow:[{overflow:z()}],"overflow-x":[{"overflow-x":z()}],"overflow-y":[{"overflow-y":z()}],overscroll:[{overscroll:V()}],"overscroll-x":[{"overscroll-x":V()}],"overscroll-y":[{"overscroll-y":V()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:ne()}],"inset-x":[{"inset-x":ne()}],"inset-y":[{"inset-y":ne()}],start:[{"inset-s":ne(),start:ne()}],end:[{"inset-e":ne(),end:ne()}],"inset-bs":[{"inset-bs":ne()}],"inset-be":[{"inset-be":ne()}],top:[{top:ne()}],right:[{right:ne()}],bottom:[{bottom:ne()}],left:[{left:ne()}],visibility:["visible","invisible","collapse"],z:[{z:[yo,"auto",Ee,Te]}],basis:[{basis:[go,"full","auto",m,...W()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[lt,go,"auto","initial","none",Te]}],grow:[{grow:["",lt,Ee,Te]}],shrink:[{shrink:["",lt,Ee,Te]}],order:[{order:[yo,"first","last","none",Ee,Te]}],"grid-cols":[{"grid-cols":de()}],"col-start-end":[{col:be()}],"col-start":[{"col-start":Re()}],"col-end":[{"col-end":Re()}],"grid-rows":[{"grid-rows":de()}],"row-start-end":[{row:be()}],"row-start":[{"row-start":Re()}],"row-end":[{"row-end":Re()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Je()}],"auto-rows":[{"auto-rows":Je()}],gap:[{gap:W()}],"gap-x":[{"gap-x":W()}],"gap-y":[{"gap-y":W()}],"justify-content":[{justify:[...Ie(),"normal"]}],"justify-items":[{"justify-items":[...mt(),"normal"]}],"justify-self":[{"justify-self":["auto",...mt()]}],"align-content":[{content:["normal",...Ie()]}],"align-items":[{items:[...mt(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...mt(),{baseline:["","last"]}]}],"place-content":[{"place-content":Ie()}],"place-items":[{"place-items":[...mt(),"baseline"]}],"place-self":[{"place-self":["auto",...mt()]}],p:[{p:W()}],px:[{px:W()}],py:[{py:W()}],ps:[{ps:W()}],pe:[{pe:W()}],pbs:[{pbs:W()}],pbe:[{pbe:W()}],pt:[{pt:W()}],pr:[{pr:W()}],pb:[{pb:W()}],pl:[{pl:W()}],m:[{m:Se()}],mx:[{mx:Se()}],my:[{my:Se()}],ms:[{ms:Se()}],me:[{me:Se()}],mbs:[{mbs:Se()}],mbe:[{mbe:Se()}],mt:[{mt:Se()}],mr:[{mr:Se()}],mb:[{mb:Se()}],ml:[{ml:Se()}],"space-x":[{"space-x":W()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":W()}],"space-y-reverse":["space-y-reverse"],size:[{size:je()}],"inline-size":[{inline:["auto",...X()]}],"min-inline-size":[{"min-inline":["auto",...X()]}],"max-inline-size":[{"max-inline":["none",...X()]}],"block-size":[{block:["auto",...ue()]}],"min-block-size":[{"min-block":["auto",...ue()]}],"max-block-size":[{"max-block":["none",...ue()]}],w:[{w:[m,"screen",...je()]}],"min-w":[{"min-w":[m,"screen","none",...je()]}],"max-w":[{"max-w":[m,"screen","none","prose",{screen:[h]},...je()]}],h:[{h:["screen","lh",...je()]}],"min-h":[{"min-h":["screen","lh","none",...je()]}],"max-h":[{"max-h":["screen","lh",...je()]}],"font-size":[{text:["base",n,td,fa]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[i,sC,Qk]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",cf,Te]}],"font-family":[{font:[tC,Xk,t]}],"font-features":[{"font-features":[Te]}],"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:[l,Ee,Te]}],"line-clamp":[{"line-clamp":[lt,"none",Ee,ov]}],leading:[{leading:[d,...W()]}],"list-image":[{"list-image":["none",Ee,Te]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Ee,Te]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:q()}],"text-color":[{text:q()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...$e(),"wavy"]}],"text-decoration-thickness":[{decoration:[lt,"from-font","auto",Ee,fa]}],"text-decoration-color":[{decoration:q()}],"underline-offset":[{"underline-offset":[lt,"auto",Ee,Te]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:W()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ee,Te]}],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",Ee,Te]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:O()}],"bg-repeat":[{bg:te()}],"bg-size":[{bg:ye()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},yo,Ee,Te],radial:["",Ee,Te],conic:[yo,Ee,Te]},rC,eC]}],"bg-color":[{bg:q()}],"gradient-from-pos":[{from:ge()}
vendor: 7,404 bytes, line 555
555],"gradient-via-pos":[{via:ge()}],"gradient-to-pos":[{to:ge()}],"gradient-from":[{from:q()}],"gradient-via":[{via:q()}],"gradient-to":[{to:q()}],rounded:[{rounded:pe()}],"rounded-s":[{"rounded-s":pe()}],"rounded-e":[{"rounded-e":pe()}],"rounded-t":[{"rounded-t":pe()}],"rounded-r":[{"rounded-r":pe()}],"rounded-b":[{"rounded-b":pe()}],"rounded-l":[{"rounded-l":pe()}],"rounded-ss":[{"rounded-ss":pe()}],"rounded-se":[{"rounded-se":pe()}],"rounded-ee":[{"rounded-ee":pe()}],"rounded-es":[{"rounded-es":pe()}],"rounded-tl":[{"rounded-tl":pe()}],"rounded-tr":[{"rounded-tr":pe()}],"rounded-br":[{"rounded-br":pe()}],"rounded-bl":[{"rounded-bl":pe()}],"border-w":[{border:re()}],"border-w-x":[{"border-x":re()}],"border-w-y":[{"border-y":re()}],"border-w-s":[{"border-s":re()}],"border-w-e":[{"border-e":re()}],"border-w-bs":[{"border-bs":re()}],"border-w-be":[{"border-be":re()}],"border-w-t":[{"border-t":re()}],"border-w-r":[{"border-r":re()}],"border-w-b":[{"border-b":re()}],"border-w-l":[{"border-l":re()}],"divide-x":[{"divide-x":re()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":re()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...$e(),"hidden","none"]}],"divide-style":[{divide:[...$e(),"hidden","none"]}],"border-color":[{border:q()}],"border-color-x":[{"border-x":q()}],"border-color-y":[{"border-y":q()}],"border-color-s":[{"border-s":q()}],"border-color-e":[{"border-e":q()}],"border-color-bs":[{"border-bs":q()}],"border-color-be":[{"border-be":q()}],"border-color-t":[{"border-t":q()}],"border-color-r":[{"border-r":q()}],"border-color-b":[{"border-b":q()}],"border-color-l":[{"border-l":q()}],"divide-color":[{divide:q()}],"outline-style":[{outline:[...$e(),"none","hidden"]}],"outline-offset":[{"outline-offset":[lt,Ee,Te]}],"outline-w":[{outline:["",lt,td,fa]}],"outline-color":[{outline:q()}],shadow:[{shadow:["","none",x,mh,hh]}],"shadow-color":[{shadow:q()}],"inset-shadow":[{"inset-shadow":["none",w,mh,hh]}],"inset-shadow-color":[{"inset-shadow":q()}],"ring-w":[{ring:re()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:q()}],"ring-offset-w":[{"ring-offset":[lt,fa]}],"ring-offset-color":[{"ring-offset":q()}],"inset-ring-w":[{"inset-ring":re()}],"inset-ring-color":[{"inset-ring":q()}],"text-shadow":[{"text-shadow":["none",j,mh,hh]}],"text-shadow-color":[{"text-shadow":q()}],opacity:[{opacity:[lt,Ee,Te]}],"mix-blend":[{"mix-blend":[...He(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":He()}],"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":[lt]}],"mask-image-linear-from-pos":[{"mask-linear-from":De()}],"mask-image-linear-to-pos":[{"mask-linear-to":De()}],"mask-image-linear-from-color":[{"mask-linear-from":q()}],"mask-image-linear-to-color":[{"mask-linear-to":q()}],"mask-image-t-from-pos":[{"mask-t-from":De()}],"mask-image-t-to-pos":[{"mask-t-to":De()}],"mask-image-t-from-color":[{"mask-t-from":q()}],"mask-image-t-to-color":[{"mask-t-to":q()}],"mask-image-r-from-pos":[{"mask-r-from":De()}],"mask-image-r-to-pos":[{"mask-r-to":De()}],"mask-image-r-from-color":[{"mask-r-from":q()}],"mask-image-r-to-color":[{"mask-r-to":q()}],"mask-image-b-from-pos":[{"mask-b-from":De()}],"mask-image-b-to-pos":[{"mask-b-to":De()}],"mask-image-b-from-color":[{"mask-b-from":q()}],"mask-image-b-to-color":[{"mask-b-to":q()}],"mask-image-l-from-pos":[{"mask-l-from":De()}],"mask-image-l-to-pos":[{"mask-l-to":De()}],"mask-image-l-from-color":[{"mask-l-from":q()}],"mask-image-l-to-color":[{"mask-l-to":q()}],"mask-image-x-from-pos":[{"mask-x-from":De()}],"mask-image-x-to-pos":[{"mask-x-to":De()}],"mask-image-x-from-color":[{"mask-x-from":q()}],"mask-image-x-to-color":[{"mask-x-to":q()}],"mask-image-y-from-pos":[{"mask-y-from":De()}],"mask-image-y-to-pos":[{"mask-y-to":De()}],"mask-image-y-from-color":[{"mask-y-from":q()}],"mask-image-y-to-color":[{"mask-y-to":q()}],"mask-image-radial":[{"mask-radial":[Ee,Te]}],"mask-image-radial-from-pos":[{"mask-radial-from":De()}],"mask-image-radial-to-pos":[{"mask-radial-to":De()}],"mask-image-radial-from-color":[{"mask-radial-from":q()}],"mask-image-radial-to-color":[{"mask-radial-to":q()}],"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":[lt]}],"mask-image-conic-from-pos":[{"mask-conic-from":De()}],"mask-image-conic-to-pos":[{"mask-conic-to":De()}],"mask-image-conic-from-color":[{"mask-conic-from":q()}],"mask-image-conic-to-color":[{"mask-conic-to":q()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:O()}],"mask-repeat":[{mask:te()}],"mask-size":[{mask:ye()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Ee,Te]}],filter:[{filter:["","none",Ee,Te]}],blur:[{blur:Et()}],brightness:[{brightness:[lt,Ee,Te]}],contrast:[{contrast:[lt,Ee,Te]}],"drop-shadow":[{"drop-shadow":["","none",P,mh,hh]}],"drop-shadow-color":[{"drop-shadow":q()}],grayscale:[{grayscale:["",lt,Ee,Te]}],"hue-rotate":[{"hue-rotate":[lt,Ee,Te]}],invert:[{invert:["",lt,Ee,Te]}],saturate:[{saturate:[lt,Ee,Te]}],sepia:[{sepia:["",lt,Ee,Te]}],"backdrop-filter":[{"backdrop-filter":["","none",Ee,Te]}],"backdrop-blur":[{"backdrop-blur":Et()}],"backdrop-brightness":[{"backdrop-brightness":[lt,Ee,Te]}],"backdrop-contrast":[{"backdrop-contrast":[lt,Ee,Te]}],"backdrop-grayscale":[{"backdrop-grayscale":["",lt,Ee,Te]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[lt,Ee,Te]}],"backdrop-invert":[{"backdrop-invert":["",lt,Ee,Te]}],"backdrop-opacity":[{"backdrop-opacity":[lt,Ee,Te]}],"backdrop-saturate":[{"backdrop-saturate":[lt,Ee,Te]}],"backdrop-sepia":[{"backdrop-sepia":["",lt,Ee,Te]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":W()}],"border-spacing-x":[{"border-spacing-x":W()}],"border-spacing-y":[{"border-spacing-y":W()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Ee,Te]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[lt,"initial",Ee,Te]}],ease:[{ease:["linear","initial",E,Ee,Te]}],delay:[{delay:[lt,Ee,Te]}],animate:[{animate:["none",$,Ee,Te]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[k,Ee,Te]}],"perspective-origin":[{"perspective-origin":F()}],rotate:[{rotate:It()}],"rotate-x":[{"rotate-x":It()}],"rotate-y":[{"rotate-y":It()}],"rotate-z":[{"rotate-z":It()}],scale:[{scale:kt()}],"scale-x":[{"scale-x":kt()}],"scale-y":[{"scale-y":kt()}],"scale-z":[{"scale-z":kt()}],"scale-3d":["scale-3d"],skew:[{skew:dn()}],"skew-x":[{"skew-x":dn()}],"skew-y":[{"skew-y":dn()}],transform:[{transform:[Ee,Te,"","none","gpu","cpu"]}],"transform-origin":[{origin:F()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:un()}],"translate-x":[{"translate-x":un()}],"translate-y":[{"translate-y":un()}],"translate-z":[{"translate-z":un()}],"translate-none":["translate-none"],accent:[{accent:q()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:q()}
vendor: 6,955 bytes, line 555
555],"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",Ee,Te]}],"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":W()}],"scroll-mx":[{"scroll-mx":W()}],"scroll-my":[{"scroll-my":W()}],"scroll-ms":[{"scroll-ms":W()}],"scroll-me":[{"scroll-me":W()}],"scroll-mbs":[{"scroll-mbs":W()}],"scroll-mbe":[{"scroll-mbe":W()}],"scroll-mt":[{"scroll-mt":W()}],"scroll-mr":[{"scroll-mr":W()}],"scroll-mb":[{"scroll-mb":W()}],"scroll-ml":[{"scroll-ml":W()}],"scroll-p":[{"scroll-p":W()}],"scroll-px":[{"scroll-px":W()}],"scroll-py":[{"scroll-py":W()}],"scroll-ps":[{"scroll-ps":W()}],"scroll-pe":[{"scroll-pe":W()}],"scroll-pbs":[{"scroll-pbs":W()}],"scroll-pbe":[{"scroll-pbe":W()}],"scroll-pt":[{"scroll-pt":W()}],"scroll-pr":[{"scroll-pr":W()}],"scroll-pb":[{"scroll-pb":W()}],"scroll-pl":[{"scroll-pl":W()}],"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",Ee,Te]}],fill:[{fill:["none",...q()]}],"stroke-w":[{stroke:[lt,td,fa,ov]}],stroke:[{stroke:["none",...q()]}],"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"]}},aC=Fk(oC);function Rr(...e){return aC(m1(e))}const q1=S.forwardRef(({...e},t)=>r.jsx("div",{ref:t,className:"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",...e}));q1.displayName="ToastProvider";const J1=S.forwardRef(({...e},t)=>r.jsx("div",{ref:t,className:"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",...e}));J1.displayName="ToastViewport";const lC=Kg("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),G1=S.forwardRef(({className:e,variant:t,...n},i)=>r.jsx("div",{ref:i,className:Rr(lC({variant:t}),e),...n}));G1.displayName="Toast";const cC=S.forwardRef(({className:e,...t},n)=>r.jsx("div",{ref:n,className:Rr("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t}));cC.displayName="ToastAction";const Z1=S.forwardRef(({className:e,...t},n)=>r.jsx("button",{ref:n,className:Rr("absolute right-2 top-2 rounded-md p-1 text-foreground
vendor: 4,808 bytes, line 555
555/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:r.jsx(Zs,{className:"h-4 w-4"})}));Z1.displayName="ToastClose";const K1=S.forwardRef(({className:e,...t},n)=>r.jsx("div",{ref:n,className:Rr("text-sm font-semibold",e),...t}));K1.displayName="ToastTitle";const Y1=S.forwardRef(({className:e,...t},n)=>r.jsx("div",{ref:n,className:Rr("text-sm opacity-90",e),...t}));Y1.displayName="ToastDescription";function dC(){const{toasts:e}=AN();return r.jsxs(q1,{children:[e.map(function({id:t,title:n,description:i,action:l,...d}){return r.jsxs(G1,{...d,children:[r.jsxs("div",{className:"grid gap-1",children:[n&&r.jsx(K1,{children:n}),i&&r.jsx(Y1,{children:i})]}),l,r.jsx(Z1,{})]},t)}),r.jsx(J1,{})]})}var Vd=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},uC={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},wo,Gg,e1,hC=(e1=class{constructor(){Ue(this,wo,uC);Ue(this,Gg,!1)}setTimeoutProvider(e){_e(this,wo,e)}setTimeout(e,t){return H(this,wo).setTimeout(e,t)}clearTimeout(e){H(this,wo).clearTimeout(e)}setInterval(e,t){return H(this,wo).setInterval(e,t)}clearInterval(e){H(this,wo).clearInterval(e)}},wo=new WeakMap,Gg=new WeakMap,e1),_a=new hC;function mC(e){setTimeout(e,0)}var Oa=typeof window>"u"||"Deno"in globalThis;function mr(){}function pC(e,t){return typeof e=="function"?e(t):e}function Qf(e){return typeof e=="number"&&e>=0&&e!==1/0}function Q1(e,t){return Math.max(e+(t||0)-Date.now(),0)}function Eo(e,t){return typeof e=="function"?e(t):e}function es(e,t){return typeof e=="function"?e(t):e}function cv(e,t){const{type:n="all",exact:i,fetchStatus:l,predicate:d,queryKey:h,stale:m}=e;if(h){if(i){if(t.queryHash!==r0(h,t.options))return!1}else if(!Cd(t.queryKey,h))return!1}if(n!=="all"){const g=t.isActive();if(n==="active"&&!g||n==="inactive"&&g)return!1}return!(typeof m=="boolean"&&t.isStale()!==m||l&&l!==t.state.fetchStatus||d&&!d(t))}function dv(e,t){const{exact:n,status:i,predicate:l,mutationKey:d}=e;if(d){if(!t.options.mutationKey)return!1;if(n){if(kd(t.options.mutationKey)!==kd(d))return!1}else if(!Cd(t.options.mutationKey,d))return!1}return!(i&&t.state.status!==i||l&&!l(t))}function r0(e,t){return((t==null?void 0:t.queryKeyHashFn)||kd)(e)}function kd(e){return JSON.stringify(e,(t,n)=>eg(n)?Object.keys(n).sort().reduce((i,l)=>(i[l]=n[l],i),{}):n)}function Cd(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(t).every(n=>Cd(e[n],t[n])):!1}var fC=Object.prototype.hasOwnProperty;function X1(e,t,n=0){if(e===t)return e;if(n>500)return t;const i=uv(e)&&uv(t);if(!i&&!(eg(e)&&eg(t)))return t;const d=(i?e:Object.keys(e)).length,h=i?t:Object.keys(t),m=h.length,g=i?new Array(m):{};let y=0;for(let x=0;x<m;x++){const w=i?x:h[x],j=e[w],P=t[w];if(j===P){g[w]=j,(i?x<d:fC.call(e,w))&&y++;continue}if(j===null||P===null||typeof j!="object"||typeof P!="object"){g[w]=P;continue}const C=X1(j,P,n+1);g[w]=C,C===j&&y++}return d===m&&y===d?e:g}function Xf(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(e[n]!==t[n])return!1;return!0}function uv(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function eg(e){if(!hv(e))return!1;const t=e.constructor;if(t===void 0)return!0;const n=t.prototype;return!(!hv(n)||!n.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(e)!==Object.prototype)}function hv(e){return Object.prototype.toString.call(e)==="[object Object]"}function gC(e){return new Promise(t=>{_a.setTimeout(t,e)})}function tg(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?X1(e,t):t}function yC(e,t,n=0){const i=[...e,t];return n&&i.length>n?i.slice(1):i}function xC(e,t,n=0){const i=[t,...e];return n&&i.length>n?i.slice(0,-1):i}var s0=Symbol();function e_(e,t){return!e.queryFn&&(t!=null&&t.initialPromise)?()=>t.initialPromise:!e.queryFn||e.queryFn===s0?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function t_(e,t){return typeof e=="function"?e(...t):!!e}function vC(e,t,n){let i=!1,l;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(l??(l=t()),i||(i=!0,l.aborted?n():l.addEventListener("abort",n,{once:!0})),l)}),e}var ja,_o,Ul,t1,bC=(t1=class extends Vd{constructor(){super();Ue(this,ja);
vendor: 5,611 bytes, line 555
555Ue(this,_o);Ue(this,Ul);_e(this,Ul,t=>{if(!Oa&&window.addEventListener){const n=()=>t();return window.addEventListener("visibilitychange",n,!1),()=>{window.removeEventListener("visibilitychange",n)}}})}onSubscribe(){H(this,_o)||this.setEventListener(H(this,Ul))}onUnsubscribe(){var t;this.hasListeners()||((t=H(this,_o))==null||t.call(this),_e(this,_o,void 0))}setEventListener(t){var n;_e(this,Ul,t),(n=H(this,_o))==null||n.call(this),_e(this,_o,t(i=>{typeof i=="boolean"?this.setFocused(i):this.onFocus()}))}setFocused(t){H(this,ja)!==t&&(_e(this,ja,t),this.onFocus())}onFocus(){const t=this.isFocused();this.listeners.forEach(n=>{n(t)})}isFocused(){var t;return typeof H(this,ja)=="boolean"?H(this,ja):((t=globalThis.document)==null?void 0:t.visibilityState)!=="hidden"}},ja=new WeakMap,_o=new WeakMap,Ul=new WeakMap,t1),i0=new bC;function ng(){let e,t;const n=new Promise((l,d)=>{e=l,t=d});n.status="pending",n.catch(()=>{});function i(l){Object.assign(n,l),delete n.resolve,delete n.reject}return n.resolve=l=>{i({status:"fulfilled",value:l}),e(l)},n.reject=l=>{i({status:"rejected",reason:l}),t(l)},n}var wC=mC;function _C(){let e=[],t=0,n=m=>{m()},i=m=>{m()},l=wC;const d=m=>{t?e.push(m):l(()=>{n(m)})},h=()=>{const m=e;e=[],m.length&&l(()=>{i(()=>{m.forEach(g=>{n(g)})})})};return{batch:m=>{let g;t++;try{g=m()}finally{t--,t||h()}return g},batchCalls:m=>(...g)=>{d(()=>{m(...g)})},schedule:d,setNotifyFunction:m=>{n=m},setBatchNotifyFunction:m=>{i=m},setScheduler:m=>{l=m}}}var Pn=_C(),Hl,So,Vl,n1,SC=(n1=class extends Vd{constructor(){super();Ue(this,Hl,!0);Ue(this,So);Ue(this,Vl);_e(this,Vl,t=>{if(!Oa&&window.addEventListener){const n=()=>t(!0),i=()=>t(!1);return window.addEventListener("online",n,!1),window.addEventListener("offline",i,!1),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",i)}}})}onSubscribe(){H(this,So)||this.setEventListener(H(this,Vl))}onUnsubscribe(){var t;this.hasListeners()||((t=H(this,So))==null||t.call(this),_e(this,So,void 0))}setEventListener(t){var n;_e(this,Vl,t),(n=H(this,So))==null||n.call(this),_e(this,So,t(this.setOnline.bind(this)))}setOnline(t){H(this,Hl)!==t&&(_e(this,Hl,t),this.listeners.forEach(i=>{i(t)}))}isOnline(){return H(this,Hl)}},Hl=new WeakMap,So=new WeakMap,Vl=new WeakMap,n1),Yh=new SC;function NC(e){return Math.min(1e3*2**e,3e4)}function n_(e){return(e??"online")==="online"?Yh.isOnline():!0}var rg=class extends Error{constructor(e){super("CancelledError"),this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}};function r_(e){let t=!1,n=0,i;const l=ng(),d=()=>l.status!=="pending",h=k=>{var A;if(!d()){const E=new rg(k);j(E),(A=e.onCancel)==null||A.call(e,E)}},m=()=>{t=!0},g=()=>{t=!1},y=()=>i0.isFocused()&&(e.networkMode==="always"||Yh.isOnline())&&e.canRun(),x=()=>n_(e.networkMode)&&e.canRun(),w=k=>{d()||(i==null||i(),l.resolve(k))},j=k=>{d()||(i==null||i(),l.reject(k))},P=()=>new Promise(k=>{var A;i=E=>{(d()||y())&&k(E)},(A=e.onPause)==null||A.call(e)}).then(()=>{var k;i=void 0,d()||(k=e.onContinue)==null||k.call(e)}),C=()=>{if(d())return;let k;const A=n===0?e.initialPromise:void 0;try{k=A??e.fn()}catch(E){k=Promise.reject(E)}Promise.resolve(k).then(w).catch(E=>{var z;if(d())return;const $=e.retry??(Oa?0:3),I=e.retryDelay??NC,M=typeof I=="function"?I(n,E):I,F=$===!0||typeof $=="number"&&n<$||typeof $=="function"&&$(n,E);if(t||!F){j(E);return}n++,(z=e.onFail)==null||z.call(e,n,E),gC(M).then(()=>y()?void 0:P()).then(()=>{t?j(E):C()})})};return{promise:l,status:()=>l.status,cancel:h,continue:()=>(i==null||i(),l),cancelRetry:m,continueRetry:g,canStart:x,start:()=>(x()?C():P().then(C),l)}}var ka,r1,s_=(r1=class{constructor(){Ue(this,ka)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Qf(this.gcTime)&&_e(this,ka,_a.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Oa?1/0:300*1e3))}clearGcTimeout(){H(this,ka)&&(_a.clearTimeout(H(this,ka)),_e(this,ka,void 0))}},ka=new WeakMap,r1),Ca,ql,Xr,Pa,Sn,Od,Ta,vs,vi,s1,jC=(s1=class extends s_{constructor(t){super();Ue(this,vs);Ue(this,Ca);Ue(this,ql);Ue(this,Xr);Ue(this,Pa);Ue(this,Sn);Ue(this,Od);Ue(this,Ta);_e(this,Ta,!1),_e(this,Od,t.defaultOptions),this.setOptions(t.options),this.observers=[],_e(this,Pa,t.client),_e(this,Xr,H(this,Pa).getQueryCache()),this.queryKey=t.queryKey,this.queryHash=t.queryHash,_e(this,Ca,pv(this.options)),this.state=t.state??H(this,Ca),this.scheduleGc()}get meta(){return this.options.meta}get promise(){var t;return(t=H(this,Sn))==null?void 0:t.promise}setOptions(t){if(this.options={...H(this,Od),...t},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const n=pv(this.options);n.data!==void 0&&(this.setState(mv(n.data,n.dataUpdatedAt)),_e(this,Ca,n))}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&H(this,Xr).remove(this)}setData(t,n){const i=tg(this.state.data,t,this.options);return yt(this,vs,vi).call(this,{data:i,type:"success",dataUpdatedAt:n==null?void 0:n.updatedAt,manual:n==null?void 0:n.manual}),i}setState(t,n){yt(this,vs,vi).call(this,{type:"setState",state:t,setStateOptions:n})}cancel(t){var i,l;const n=(i=H(this,Sn))==null?void 0:i.promise;return(l=H(this,Sn))==null||l.cancel(t),n?n.then(mr).catch(mr):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(H(this,Ca))}isActive(){return this.observers.some(t=>es(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===s0||this.state.dataUpdateCount+this.state.errorUpdate
vendor: 3,165 bytes, line 555
555Count===0}isStatic(){return this.getObserversCount()>0?this.observers.some(t=>Eo(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:!Q1(this.state.dataUpdatedAt,t)}onFocus(){var n;const t=this.observers.find(i=>i.shouldFetchOnWindowFocus());t==null||t.refetch({cancelRefetch:!1}),(n=H(this,Sn))==null||n.continue()}onOnline(){var n;const t=this.observers.find(i=>i.shouldFetchOnReconnect());t==null||t.refetch({cancelRefetch:!1}),(n=H(this,Sn))==null||n.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),H(this,Xr).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(n=>n!==t),this.observers.length||(H(this,Sn)&&(H(this,Ta)?H(this,Sn).cancel({revert:!0}):H(this,Sn).cancelRetry()),this.scheduleGc()),H(this,Xr).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||yt(this,vs,vi).call(this,{type:"invalidate"})}async fetch(t,n){var g,y,x,w,j,P,C,k,A,E,$,I;if(this.state.fetchStatus!=="idle"&&((g=H(this,Sn))==null?void 0:g.status())!=="rejected"){if(this.state.data!==void 0&&(n!=null&&n.cancelRefetch))this.cancel({silent:!0});else if(H(this,Sn))return H(this,Sn).continueRetry(),H(this,Sn).promise}if(t&&this.setOptions(t),!this.options.queryFn){const M=this.observers.find(F=>F.options.queryFn);M&&this.setOptions(M.options)}const i=new AbortController,l=M=>{Object.defineProperty(M,"signal",{enumerable:!0,get:()=>(_e(this,Ta,!0),i.signal)})},d=()=>{const M=e_(this.options,n),z=(()=>{const V={client:H(this,Pa),queryKey:this.queryKey,meta:this.meta};return l(V),V})();return _e(this,Ta,!1),this.options.persister?this.options.persister(M,z,this):M(z)},m=(()=>{const M={fetchOptions:n,options:this.options,queryKey:this.queryKey,client:H(this,Pa),state:this.state,fetchFn:d};return l(M),M})();(y=this.options.behavior)==null||y.onFetch(m,this),_e(this,ql,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((x=m.fetchOptions)==null?void 0:x.meta))&&yt(this,vs,vi).call(this,{type:"fetch",meta:(w=m.fetchOptions)==null?void 0:w.meta}),_e(this,Sn,r_({initialPromise:n==null?void 0:n.initialPromise,fn:m.fetchFn,onCancel:M=>{M instanceof rg&&M.revert&&this.setState({...H(this,ql),fetchStatus:"idle"}),i.abort()},onFail:(M,F)=>{yt(this,vs,vi).call(this,{type:"failed",failureCount:M,error:F})},onPause:()=>{yt(this,vs,vi).call(this,{type:"pause"})},onContinue:()=>{yt(this,vs,vi).call(this,{type:"continue"})},retry:m.options.retry,retryDelay:m.options.retryDelay,networkMode:m.options.networkMode,canRun:()=>!0}));try{const M=await H(this,Sn).start();if(M===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(M),(P=(j=H(this,Xr).config).onSuccess)==null||P.call(j,M,this),(k=(C=H(this,Xr).config).onSettled)==null||k.call(C,M,this.state.error,this),M}
555catch(M){if(M instanceof rg){if(M.silent)return H(this,Sn).promise;if(M.revert){if(this.state.data===void 0)throw M;return this.state.data}}throw yt(this,vs,vi).call(this,{type:"error",error:M}),(E=(A=H(this,Xr).config).onError)==null||E.call(A,M,this),(I=($=H(this,Xr).config).onSettled)==null||I.call($,this.state.data,M,this),M}finally{this.scheduleGc()}}},Ca=new WeakMap,ql=new WeakMap,Xr=new WeakMap,Pa=new WeakMap,Sn=new WeakMap,Od=new WeakMap,Ta=new WeakMap,vs=new WeakSet,vi=function(t){const n=i=>{switch(t.type){case"failed":return{...i,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...i,fetchStatus:"paused"};case"continue":return{...i,fetchStatus:"fetching"};case"fetch":return{...i,...i_(i.data,this.options),fetchMeta:t.meta??null};case"success":const l={...i,...mv(t.data,t.dataUpdatedAt),dataUpdateCount:i.dataUpdateCount+1,...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return _e(this,ql,t.manual?l:void 0),l;case"error":const d=t.error;return{...i,error:d,errorUpdateCount:i.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:i.fetchFailureCount+1,fetchFailureReason:d,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...i,isInvalidated:!0};case"setState":return{...i,...t.state}}};this.state=n(this.state),Pn.batch(()=>{this.observers.forEach(i=>{i.onQueryUpdate()}),H(this,Xr).notify({query:this,type:"updated",action:t})})},s1);function i_(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:n_(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function mv(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function pv(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=t!==void 0,i=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?i??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var hr,xt,Fd,er,Ea,Jl,bi,No,Bd,Gl,Zl,Aa,Ra,jo,Kl,jt,dd,sg,ig,og,ag,lg,cg,dg,o_,i1,kC=(i1=class extends Vd{constructor(t,n){super();Ue(this,jt);Ue(this,hr);Ue(this,xt);Ue(this,Fd);Ue(this,er);Ue(this,Ea);Ue(this,Jl);Ue(this,bi);Ue(this,No);Ue(this,Bd);Ue(this,Gl);Ue(this,Zl);Ue(this,Aa);Ue(this,Ra);Ue(this,jo);Ue(this,Kl,new Set);this.options=n,_e(this,hr,t),_e(this,No,null),_e(this,bi,ng()),this.bindMethods(),this.setOptions(n)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(H(this,xt).addObserver(this),fv(H(this,xt),this.options)?yt(this,jt,dd).call(this):this.updateResult(),yt(this,jt,ag).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return ug(H(this,xt),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return ug(H(this,xt),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,yt(this,jt,lg).call(this),yt(this,jt,cg).call(this),H(this,xt).removeObserver(this)}setOptions(t){const n=this.options,i=H(this,xt);if(this.options=H(this,hr).defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof es(this.options.enabled,H(this,xt))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");yt(this,jt,dg).call(this),H(this,xt).setOptions(this.options),n._defaulted&&!Xf(this.options,n)&&H(this,hr).getQueryCache().notify({type:"observerOptionsUpdated",query:H(this,xt),observer:this});const l=this.hasListeners();l&&gv(H(this,xt),i,this.options,n)&&yt(this,jt,dd).call(this),this.updateResult(),l&&(H(this,xt)!==i||es(this.options.enabled,H(this,xt))!==es(n.enabled,H(this,xt))||Eo(this.options.staleTime,H(this,xt))!==Eo(n.staleTime,H(this,xt)))&&yt(this,jt,sg).call(this);const d=yt(this,jt,ig).call(this);l&&(H(this,xt)!==i||es(this.options.enabled,H(this,xt))!==es(n.enabled,H(this,xt))||d!==H(this,jo))&&yt(this,jt,og).call(this,d)}getOptimisticResult(t){const n=H(this,hr).getQueryCache().build(H(this,hr),t),i=this.createResult(n,t);return PC(this,i)&&(_e(this,er,i),_e(this,Jl,this.options),_e(this,Ea,H(this,xt).state)),i}getCurrentResult(){return H(this,er)}trackResult(t,n){return new Proxy(t,{get:(i,l)=>(this.trackProp(l),n==null||n(l),l==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&H(this,bi).status==="pending"&&H(this,bi).reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(i,l))})}trackProp(t){H(this,Kl).add(t)}getCurrentQuery(){return H(this,xt)}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const n=H(this,hr).defaultQueryOptions(t),i=H(this,hr).getQueryCache().build(H(this,hr),n);return i.fetch().then(()=>this.createResult(i,n))}fetch(t){return yt(this,jt,dd).call(this,{...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),H(this,er)))}createResult(t,n){var ne;const i=H(this,xt),l=this.options,d=H(this,er),h=H(this,Ea),m=H(this,Jl),y=t!==i?t.state:H(this,Fd),{state:x}=t;let w={...x},j=!1,P;if(n._optimisticResults){const de=this.hasListeners(),be=!de&&fv(t,n),Re=de&&gv(t,i,n,l);(be||Re)&&(w={...w,...i_(x.data,t.options)}),n._optimisticResults==="isRestoring"&&(w.fetchStatus="idle")}let{error:C,errorUpdatedAt:k,status:A}=w;P=w.data;let E=!1;if(n.placeholderData!==void 0&&P===void 0&&A==="pending"){let de;d!=null&&d.isPlaceholderData&&n.placeholderData===(m==null?void 0:m.placeholderData)?(de=d.data,E=!0):de=typeof n.placeholderData=="function"?n.placeholderData((ne=H(this,Zl))==null?void 0:ne.state.data,H(this,Zl)):n.placeholderData,de!==void 0&&(A="success",P=tg(d==null?void 0:d.data,de,n),j=!0)}if(n.select&&P!==void 0&&!E)if(d&&P===(h==null?void 0:h.data)&&n.select===H(this,Bd))P=H(this,Gl);else try{_e(this,Bd,n.select),P=n.select(P),P=tg(d==null?void 0:d.data,P,n),_e(this,Gl,P),_e(this,No,null)}catch(de){_e(this,No,de)}H(this,No)&&(C=H(this,No),P=H(this,Gl),k=Date.now(),A="error");const $=w.fetchStatus==="fetching",I=A==="pending",M=A==="error",F=I&&$,z=P!==void 0,W={status:A,fetchStatus:w.fetchStatus,isPending:I,isSuccess:A==="success",isError:M,isInitialLoading:F,isLoading:F,data:P,dataUpdatedAt:w.dataUpdatedAt,error:C,errorUpdatedAt:k,failureCount:w.fetchFailureCount,failureReason:w.fetchFailureReason,errorUpdate
vendor: 7,619 bytes, line 555
555Count:w.errorUpdateCount,isFetched:w.dataUpdateCount>0||w.errorUpdateCount>0,isFetchedAfterMount:w.dataUpdateCount>y.dataUpdateCount||w.errorUpdateCount>y.errorUpdateCount,isFetching:$,isRefetching:$&&!I,isLoadingError:M&&!z,isPaused:w.fetchStatus==="paused",isPlaceholderData:j,isRefetchError:M&&z,isStale:o0(t,n),refetch:this.refetch,promise:H(this,bi),isEnabled:es(n.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const de=W.data!==void 0,be=W.status==="error"&&!de,Re=mt=>{be?mt.reject(W.error):de&&mt.resolve(W.data)},Je=()=>{const mt=_e(this,bi,W.promise=ng());Re(mt)},Ie=H(this,bi);switch(Ie.status){case"pending":t.queryHash===i.queryHash&&Re(Ie);break;case"fulfilled":(be||W.data!==Ie.value)&&Je();break;case"rejected":(!be||W.error!==Ie.reason)&&Je();break}}return W}updateResult(){const t=H(this,er),n=this.createResult(H(this,xt),this.options);if(_e(this,Ea,H(this,xt).state),_e(this,Jl,this.options),H(this,Ea).data!==void 0&&_e(this,Zl,H(this,xt)),Xf(n,t))return;_e(this,er,n);const i=()=>{if(!t)return!0;const{notifyOnChangeProps:l}=this.options,d=typeof l=="function"?l():l;if(d==="all"||!d&&!H(this,Kl).size)return!0;const h=new Set(d??H(this,Kl));return this.options.throwOnError&&h.add("error"),Object.keys(H(this,er)).some(m=>{const g=m;return H(this,er)[g]!==t[g]&&h.has(g)})};yt(this,jt,o_).call(this,{listeners:i()})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&yt(this,jt,ag).call(this)}},hr=new WeakMap,xt=new WeakMap,Fd=new WeakMap,er=new WeakMap,Ea=new WeakMap,Jl=new WeakMap,bi=new WeakMap,No=new WeakMap,Bd=new WeakMap,Gl=new WeakMap,Zl=new WeakMap,Aa=new WeakMap,Ra=new WeakMap,jo=new WeakMap,Kl=new WeakMap,jt=new WeakSet,dd=function(t){yt(this,jt,dg).call(this);let n=H(this,xt).fetch(this.options,t);return t!=null&&t.throwOnError||(n=n.catch(mr)),n},sg=function(){yt(this,jt,lg).call(this);const t=Eo(this.options.staleTime,H(this,xt));if(Oa||H(this,er).isStale||!Qf(t))return;const i=Q1(H(this,er).dataUpdatedAt,t)+1;_e(this,Aa,_a.setTimeout(()=>{H(this,er).isStale||this.updateResult()},i))},ig=function(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(H(this,xt)):this.options.refetchInterval)??!1},og=function(t){yt(this,jt,cg).call(this),_e(this,jo,t),!(Oa||es(this.options.enabled,H(this,xt))===!1||!Qf(H(this,jo))||H(this,jo)===0)&&_e(this,Ra,_a.setInterval(()=>{(this.options.refetchIntervalInBackground||i0.isFocused())&&yt(this,jt,dd).call(this)},H(this,jo)))},ag=function(){yt(this,jt,sg).call(this),yt(this,jt,og).call(this,yt(this,jt,ig).call(this))},lg=function(){H(this,Aa)&&(_a.clearTimeout(H(this,Aa)),_e(this,Aa,void 0))},cg=function(){H(this,Ra)&&(_a.clearInterval(H(this,Ra)),_e(this,Ra,void 0))},dg=function(){const t=H(this,hr).getQueryCache().build(H(this,hr),this.options);if(t===H(this,xt))return;const n=H(this,xt);_e(this,xt,t),_e(this,Fd,t.state),this.hasListeners()&&(n==null||n.removeObserver(this),t.addObserver(this))},o_=function(t){Pn.batch(()=>{t.listeners&&this.listeners.forEach(n=>{n(H(this,er))}),H(this,hr).getQueryCache().notify({query:H(this,xt),type:"observerResultsUpdated"})})},i1);function CC(e,t){return es(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&t.retryOnMount===!1)}function fv(e,t){return CC(e,t)||e.state.data!==void 0&&ug(e,t,t.refetchOnMount)}function ug(e,t,n){if(es(t.enabled,e)!==!1&&Eo(t.staleTime,e)!=="static"){const i=typeof n=="function"?n(e):n;return i==="always"||i!==!1&&o0(e,t)}return!1}function gv(e,t,n,i){return(e!==t||es(i.enabled,e)===!1)&&(!n.suspense||e.state.status!=="error")&&o0(e,n)}function o0(e,t){return es(t.enabled,e)!==!1&&e.isStaleByTime(Eo(t.staleTime,e))}function PC(e,t){return!Xf(e.getCurrentResult(),t)}function yv(e){return{onFetch:(t,n)=>{var x,w,j,P,C;const i=t.options,l=(j=(w=(x=t.fetchOptions)==null?void 0:x.meta)==null?void 0:w.fetchMore)==null?void 0:j.direction,d=((P=t.state.data)==null?void 0:P.pages)||[],h=((C=t.state.data)==null?void 0:C.pageParams)||[];let m={pages:[],pageParams:[]},g=0;const y=async()=>{let k=!1;const A=I=>{vC(I,()=>t.signal,()=>k=!0)},E=e_(t.options,t.fetchOptions),$=async(I,M,F)=>{if(k)return Promise.reject();if(M==null&&I.pages.length)return Promise.resolve(I);const V=(()=>{const be={client:t.client,queryKey:t.queryKey,pageParam:M,direction:F?"backward":"forward",meta:t.options.meta};return A(be),be})(),W=await E(V),{maxPages:ne}=t.options,de=F?xC:yC;return{pages:de(I.pages,W,ne),pageParams:de(I.pageParams,M,ne)}};if(l&&d.length){const I=l==="backward",M=I?TC:xv,F={pages:d,pageParams:h},z=M(i,F);m=await $(F,z,I)}else{const I=e??d.length;do{const M=g===0?h[0]??i.initialPageParam:xv(i,m);if(g>0&&M==null)break;m=await $(m,M),g++}while(g<I)}return m};t.options.persister?t.fetchFn=()=>{var k,A;return(A=(k=t.options).persister)==null?void 0:A.call(k,y,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n)}:t.fetchFn=y}}}function xv(e,{pages:t,pageParams:n}){const i=t.length-1;return t.length>0?e.getNextPageParam(t[i],t,n[i],n):void 0}function TC(e,{pages:t,pageParams:n}){var i;return t.length>0?(i=e.getPreviousPageParam)==null?void 0:i.call(e,t[0],t,n[0],n):void 0}var zd,Fs,Bn,La,Bs,xo,o1,EC=(o1=class extends s_{constructor(t){super();Ue(this,Bs);Ue(this,zd);Ue(this,Fs);Ue(this,Bn);Ue(this,La);_e(this,zd,t.client),this.mutationId=t.mutationId,_e(this,Bn,t.mutationCache),_e(this,Fs,[]),this.state=t.state||AC(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){H(this,Fs).includes(t)||(H(this,Fs).push(t),this.clearGcTimeout(),H(this,Bn).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){_e(this,Fs,H(this,Fs).filter(n=>n!==t)),this.scheduleGc(),H(this,Bn).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){H(this,Fs).length||(this.state.status==="pending"?this.scheduleGc():H(this,Bn).remove(this))}continue(){var t;return((t=H(this,La))==null?void 0:t.continue())??this.execute(this.state.variables)}async execute(t){var h,m,g,y,x,w,j,P,C,k,A,E,$,I,M,F,z,V;const n=()=>{yt(this,Bs,xo).call(this,{type:"continue"})},i={client:H(this,zd),meta:this.options.meta,mutationKey:this.options.mutationKey};_e(this,La,r_({fn:()=>this.options.mutationFn?this.options.mutationFn(t,i):Promise.reject(new Error("No mutationFn found")),onFail:(W,ne)=>{yt(this,Bs,xo).call(this,{type:"failed",failureCount:W,error:ne})},onPause:()=>{yt(this,Bs,xo).call(this,{type:"pause"})},onContinue:n,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>H(this,Bn).canRun(this)}));const l=this.state.status==="pending",d=!H(this,La).canStart();try{if(l)n();else{yt(this,Bs,xo).call(this,{type:"pending",variables:t,isPaused:d}),H(this,Bn).config.onMutate&&await H(this,Bn).config.onMutate(t,this,i);const ne=await((m=(h=this.options).onMutate)==null?void 0:m.call(h,t,i));ne!==this.state.context&&yt(this,Bs,xo).call(this,{type:"pending",context:ne,variables:t,isPaused:d})}const W=await H(this,La).start();return await((y=(g=H(this,Bn).config).onSuccess)==null?void 0:y.call(g,W,t,this.state.context,this,i)),await((w=(x=this.options).onSuccess)==null?void 0:w.call(x,W,t,this.state.context,i)),await((P=(j=H(this,Bn).config).onSettled)==null?void 0:P.call(j,W,null,this.state.variables,this.state.context,this,i)),await((k=(C=this.options).onSettled)==null?void 0:k.call(C,W,null,t,this.state.context,i)),yt(this,Bs,xo).call(this,{type:"success",data:W}),W}catch(W){try{await((E=(A=H(this,Bn).config).onError)==null?void 0:E.
555call(A,W,t,this.state.context,this,i))}catch(ne){Promise.reject(ne)}try{await((I=($=this.options).onError)==null?void 0:I.call($,W,t,this.state.context,i))}catch(ne){Promise.reject(ne)}try{await((F=(M=H(this,Bn).config).onSettled)==null?void 0:F.call(M,void 0,W,this.state.variables,this.state.context,this,i))}catch(ne){Promise.reject(ne)}try{await((V=(z=this.options).onSettled)==null?void 0:V.call(z,void 0,W,t,this.state.context,i))}catch(ne){Promise.reject(ne)}throw yt(this,Bs,xo).call(this,{type:"error",error:W}),W}finally{H(this,Bn).runNext(this)}}},zd=new WeakMap,Fs=new WeakMap,Bn=new WeakMap,La=new WeakMap,Bs=new WeakSet,xo=function(t){const n=i=>{switch(t.type){case"failed":return{...i,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...i,isPaused:!0};case"continue":return{...i,isPaused:!1};case"pending":return{...i,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{...i,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...i,data:void 0,error:t.error,failureCount:i.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=n(this.state),Pn.batch(()=>{H(this,Fs).forEach(i=>{i.onMutationUpdate(t)}),H(this,Bn).notify({mutation:this,type:"updated",action:t})})},o1);function AC(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var wi,bs,Wd,a1,RC=(a1=class extends Vd{constructor(t={}){super();Ue(this,wi);Ue(this,bs);Ue(this,Wd);this.config=t,_e(this,wi,new Set),_e(this,bs,new Map),_e(this,Wd,0)}build(t,n,i){const l=new EC({client:t,mutationCache:this,mutationId:++dh(this,Wd)._,options:t.defaultMutationOptions(n),state:i});return this.add(l),l}add(t){H(this,wi).add(t);const n=ph(t);if(typeof n=="string"){const i=H(this,bs).get(n);i?i.push(t):H(this,bs).set(n,[t])}this.notify({type:"added",mutation:t})}remove(t){if(H(this,wi).delete(t)){const n=ph(t);if(typeof n=="string"){const i=H(this,bs).get(n);if(i)if(i.length>1){const l=i.indexOf(t);l!==-1&&i.splice(l,1)}else i[0]===t&&H(this,bs).delete(n)}}this.notify({type:"removed",mutation:t})}canRun(t){const n=ph(t);if(typeof n=="string"){const i=H(this,bs).get(n),l=i==null?void 0:i.find(d=>d.state.status==="pending");return!l||l===t}else return!0}runNext(t){var i;const n=ph(t);if(typeof n=="string"){const l=(i=H(this,bs).get(n))==null?void 0:i.find(d=>d!==t&&d.state.isPaused);return(l==null?void 0:l.continue())??Promise.resolve()}else return Promise.resolve()}clear(){Pn.batch(()=>{H(this,wi).forEach(t=>{this.notify({type:"removed",mutation:t})}),H(this,wi).clear(),H(this,bs).clear()})}getAll(){return Array.from(H(this,wi))}find(t){const n={exact:!0,...t};return this.getAll().find(i=>dv(n,i))}findAll(t={}){return this.getAll().filter(n=>dv(t,n))}notify(t){Pn.batch(()=>{this.listeners.forEach(n=>{n(t)})})}resumePausedMutations(){const t=this.getAll().filter(n=>n.state.isPaused);return Pn.batch(()=>Promise.all(t.map(n=>n.continue().catch(mr))))}},wi=new WeakMap,bs=new WeakMap,Wd=new WeakMap,a1);function ph(e){var t;return(t=e.options.scope)==null?void 0:t.id}var zs,l1,LC=(l1=class extends Vd{constructor(t={}){super();Ue(this,zs);this.config=t,_e(this,zs,new Map)}build(t,n,i){const l=n.queryKey,d=n.queryHash??r0(l,n);let h=this.get(d);return h||(h=new jC({client:t,queryKey:l,queryHash:d,options:t.defaultQueryOptions(n),state:i,defaultOptions:t.getQueryDefaults(l)}),this.add(h)),h}add(t){H(this,zs).has(t.queryHash)||(H(this,zs).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const n=H(this,zs).get(t.queryHash);n&&(t.destroy(),n===t&&H(this,zs).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){Pn.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return H(this,zs).get(t)}getAll(){return[...H(this,zs).values()]}find(t){const n={exact:!0,...t};return this.getAll().find(i=>cv(n,i))}findAll(t={}){const n=this.getAll();return Object.keys(t).length>0?n.filter(i=>cv(t,i)):n}notify(t){Pn.batch(()=>
vendor: 4,721 bytes, line 555
555{this.listeners.forEach(n=>{n(t)})})}onFocus(){Pn.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){Pn.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},zs=new WeakMap,l1),Kt,ko,Co,Yl,Ql,Po,Xl,ec,c1,MC=(c1=class{constructor(e={}){Ue(this,Kt);Ue(this,ko);Ue(this,Co);Ue(this,Yl);Ue(this,Ql);Ue(this,Po);Ue(this,Xl);Ue(this,ec);_e(this,Kt,e.queryCache||new LC),_e(this,ko,e.mutationCache||new RC),_e(this,Co,e.defaultOptions||{}),_e(this,Yl,new Map),_e(this,Ql,new Map),_e(this,Po,0)}mount(){dh(this,Po)._++,H(this,Po)===1&&(_e(this,Xl,i0.subscribe(async e=>{e&&(await this.resumePausedMutations(),H(this,Kt).onFocus())})),_e(this,ec,Yh.subscribe(async e=>{e&&(await this.resumePausedMutations(),H(this,Kt).onOnline())})))}unmount(){var e,t;dh(this,Po)._--,H(this,Po)===0&&((e=H(this,Xl))==null||e.call(this),_e(this,Xl,void 0),(t=H(this,ec))==null||t.call(this),_e(this,ec,void 0))}isFetching(e){return H(this,Kt).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return H(this,ko).findAll({...e,status:"pending"}).length}getQueryData(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=H(this,Kt).get(t.queryHash))==null?void 0:n.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),n=H(this,Kt).build(this,t),i=n.state.data;return i===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(Eo(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(i))}getQueriesData(e){return H(this,Kt).findAll(e).map(({queryKey:t,state:n})=>{const i=n.data;return[t,i]})}setQueryData(e,t,n){const i=this.defaultQueryOptions({queryKey:e}),l=H(this,Kt).get(i.queryHash),d=l==null?void 0:l.state.data,h=pC(t,d);if(h!==void 0)return H(this,Kt).build(this,i).setData(h,{...n,manual:!0})}setQueriesData(e,t,n){return Pn.batch(()=>H(this,Kt).findAll(e).map(({queryKey:i})=>[i,this.setQueryData(i,t,n)]))}getQueryState(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=H(this,Kt).get(t.queryHash))==null?void 0:n.state}removeQueries(e){const t=H(this,Kt);Pn.batch(()=>{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=H(this,Kt);return Pn.batch(()=>(n.findAll(e).forEach(i=>{i.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){const n={revert:!0,...t},i=Pn.batch(()=>H(this,Kt).findAll(e).map(l=>l.cancel(n)));return Promise.all(i).then(mr).catch(mr)}invalidateQueries(e,t={}){return Pn.batch(()=>(H(this,Kt).findAll(e).forEach(n=>{n.invalidate()}),(e==null?void 0:e.refetchType)==="none"?Promise.resolve():this.refetchQueries({...e,type:(e==null?void 0:e.refetchType)??(e==null?void 0:e.type)??"active"},t)))}refetchQueries(e,t={}){const n={...t,cancelRefetch:t.cancelRefetch??!0},i=Pn.batch(()=>H(this,Kt).findAll(e).filter(l=>!l.isDisabled()&&!l.isStatic()).map(l=>{let d=l.fetch(void 0,n);return n.throwOnError||(d=d.catch(mr)),l.state.fetchStatus==="paused"?Promise.resolve():d}));return Promise.all(i).then(mr)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=H(this,Kt).build(this,t);return n.isStaleByTime(Eo(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(mr).catch(mr)}fetchInfiniteQuery(e){return e.behavior=yv(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(mr).catch(mr)}ensureInfiniteQueryData(e){return e.behavior=yv(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return Yh.isOnline()?H(this,ko).resumePausedMutations():Promise.resolve()}getQueryCache(){return H(this,Kt)}getMutationCache(){return H(this,ko)}getDefaultOptions(){return H(this,Co)}setDefaultOptions(e){_e(this,Co,e)}setQueryDefaults(e,t){H(this,Yl).set(kd(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...H(this,Yl).values()],n={};return t.forEach(i=>{Cd(e,i.queryKey)&&Object.assign(n,i.defaultOptions)}),n}setMutationDefaults(e,t){H(this,Ql).set(kd(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...H(this,Ql).values()],n={};return t.forEach(i=>{Cd(e,i.mutationKey)&&Object.assign(n,i.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;const t={...H(this,Co).queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=r0(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===s0&&(t.enabled=!1),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:{...H(this,Co).mutations,...(e==null?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){H(this,Kt).clear(),H(this,ko).clear()}}
555,Kt=new WeakMap,ko=new WeakMap,Co=new WeakMap,Yl=new WeakMap,Ql=new WeakMap,Po=new WeakMap,Xl=new WeakMap,ec=new WeakMap,c1),a_=S.createContext(void 0),IC=e=>{const t=S.useContext(a_);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},$C=({client:e,children:t})=>(S.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),r.jsx(a_.Provider,{value:e,children:t})),l_=S.createContext(!1),DC=()=>S.useContext(l_);l_.Provider;function OC(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var FC=S.createContext(OC()),BC=()=>S.useContext(FC),zC=(e,t,n)=>{const i=n!=null&&n.state.error&&typeof e.throwOnError=="function"?t_(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||i)&&(t.isReset()||(e.retryOnMount=!1))},WC=e=>{S.useEffect(()=>{e.clearReset()},[e])},UC=({result:e,errorResetBoundary:t,throwOnError:n,query:i,suspense:l})=>e.isError&&!t.isReset()&&!e.isFetching&&i&&(l&&e.data===void 0||t_(n,[e.error,i])),HC=e=>{if(e.suspense){const n=l=>l==="static"?l:Math.max(l??1e3,1e3),i=e.staleTime;e.staleTime=typeof i=="function"?(...l)=>n(i(...l)):n(i),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3))}},VC=(e,t)=>e.isLoading&&e.isFetching&&!t,qC=(e,t)=>(e==null?void 0:e.suspense)&&t.isPending,vv=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function JC(e,t,n){var j,P,C,k;const i=DC(),l=BC(),d=IC(),h=d.defaultQueryOptions(e);(P=(j=d.getDefaultOptions().queries)==null?void 0:j._experimental_beforeQuery)==null||P.call(j,h);const m=d.getQueryCache().get(h.queryHash);h._optimisticResults=i?"isRestoring":"optimistic",HC(h),zC(h,l,m),WC(l);const g=!d.getQueryCache().get(h.queryHash),[y]=S.useState(()=>new t(d,h)),x=y.getOptimisticResult(h),w=!i&&e.subscribed!==!1;if(S.useSyncExternalStore(S.useCallback(A=>{const E=w?y.subscribe(Pn.batchCalls(A)):mr;return y.updateResult(),E},[y,w]),()=>y.getCurrentResult(),()=>y.getCurrentResult()),S.useEffect(()=>{y.setOptions(h)},[h,y]),qC(h,x))throw vv(h,y,l);if(UC({result:x,errorResetBoundary:l,throwOnError:h.throwOnError,query:m,suspense:h.suspense}))throw x.error;if((k=(C=d.getDefaultOptions().queries)==null?void 0:C._experimental_afterQuery)==null||k.call(C,h,x),h.experimental_prefetchInRender&&!Oa&&VC(x,i)){const A=g?vv(h,y,l):m==null?void 0:m.promise;A==null||A.catch(mr).finally(()=>{y.updateResult()})}return h.notifyOnChangeProps?x:y.trackResult(x)}function GC(e,t){return JC(e,kC)}const ZC=new MC({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}});var c_=u1();const KC=um(c_);/**
556 * @remix-run/router v1.23.2
557 *
558 * Copyright (c) Remix Software Inc.
559 *
560 * This source code is licensed under the MIT license found in the
561 * LICENSE.md file in the root directory of this source tree.
562 *
563 * @license MIT
564 */function Pd(){return Pd=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Pd.apply(this,arguments)}var To;(function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"})(To||(To={}));const bv="popstate";function YC(e){e===void 0&&(e={});function t(i,l){let{pathname:d,search:h,hash:m}=i.location;return hg("",{pathname:d,search:h,hash:m},l.state&&l.state.usr||null,l.state&&l.state.key||"default")}function n(i,l){return typeof l=="string"?l:Qh(l)}return XC(t,n,null,e)}function rn(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function a0(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function QC(){return Math.random().toString(36).substr(2,8)}function wv(e,t){return{usr:e.state,key:e.key,idx:t}}function hg(e,t,n,i){return n===void 0&&(n=null),Pd({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?ac(t):t,{state:n,key:t&&t.key||i||QC()})}function Qh(e){let{pathname:t="/",search:n="",hash:i=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),i&&i!=="#"&&(t+=i.charAt(0)==="#"?i:"#"+i),t}function ac(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let i=e.indexOf("?");i>=0&&(t.search=e.substr(i),e=e.substr(0,i)),e&&(t.pathname=e)}return t}function XC(e,t,n,i){i===void 0&&(i={});let{window:l=document.defaultView,v5Compat:d=!1}=i,h=l.history,m=To.Pop,g=null,y=x();y==null&&(y=0,h.replaceState(Pd({},h.state,{idx:y}),""));
vendor: 15,636 bytes, lines 564-573
564function x(){return(h.state||{idx:null}).idx}function w(){m=To.Pop;let A=x(),E=A==null?null:A-y;y=A,g&&g({action:m,location:k.location,delta:E})}function j(A,E){m=To.Push;let $=hg(k.location,A,E);y=x()+1;let I=wv($,y),M=k.createHref($);try{h.pushState(I,"",M)}catch(F){if(F instanceof DOMException&&F.name==="DataCloneError")throw F;l.location.assign(M)}d&&g&&g({action:m,location:k.location,delta:1})}function P(A,E){m=To.Replace;let $=hg(k.location,A,E);y=x();let I=wv($,y),M=k.createHref($);h.replaceState(I,"",M),d&&g&&g({action:m,location:k.location,delta:0})}function C(A){let E=l.location.origin!=="null"?l.location.origin:l.location.href,$=typeof A=="string"?A:Qh(A);return $=$.replace(/ $/,"%20"),rn(E,"No window.location.(origin|href) available to create URL for href: "+$),new URL($,E)}let k={get action(){return m},get location(){return e(l,h)},listen(A){if(g)throw new Error("A history only accepts one active listener");return l.addEventListener(bv,w),g=A,()=>{l.removeEventListener(bv,w),g=null}},createHref(A){return t(l,A)},createURL:C,encodeLocation(A){let E=C(A);return{pathname:E.pathname,search:E.search,hash:E.hash}},push:j,replace:P,go(A){return h.go(A)}};return k}var _v;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(_v||(_v={}));function e6(e,t,n){return n===void 0&&(n="/"),t6(e,t,n)}function t6(e,t,n,i){let l=typeof t=="string"?ac(t):t,d=l0(l.pathname||"/",n);if(d==null)return null;let h=d_(e);n6(h);let m=null;for(let g=0;m==null&&g<h.length;++g){let y=p6(d);m=u6(h[g],y)}return m}function d_(e,t,n,i){t===void 0&&(t=[]),n===void 0&&(n=[]),i===void 0&&(i="");let l=(d,h,m)=>{let g={relativePath:m===void 0?d.path||"":m,caseSensitive:d.caseSensitive===!0,childrenIndex:h,route:d};g.relativePath.startsWith("/")&&(rn(g.relativePath.startsWith(i),'Absolute route path "'+g.relativePath+'" nested under path '+('"'+i+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),g.relativePath=g.relativePath.slice(i.length));let y=Ao([i,g.relativePath]),x=n.concat(g);d.children&&d.children.length>0&&(rn(d.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+y+'".')),d_(d.children,t,x,y)),!(d.path==null&&!d.index)&&t.push({path:y,score:c6(y,d.index),routesMeta:x})};return e.forEach((d,h)=>{var m;if(d.path===""||!((m=d.path)!=null&&m.includes("?")))l(d,h);else for(let g of u_(d.path))l(d,h,g)}),t}function u_(e){let t=e.split("/");if(t.length===0)return[];let[n,...i]=t,l=n.endsWith("?"),d=n.replace(/\?$/,"");if(i.length===0)return l?[d,""]:[d];let h=u_(i.join("/")),m=[];return m.push(...h.map(g=>g===""?d:[d,g].join("/"))),l&&m.push(...h),m.map(g=>e.startsWith("/")&&g===""?"/":g)}function n6(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:d6(t.routesMeta.map(i=>i.childrenIndex),n.routesMeta.map(i=>i.childrenIndex)))}const r6=/^:[\w-]+$/,s6=3,i6=2,o6=1,a6=10,l6=-2,Sv=e=>e==="*";function c6(e,t){let n=e.split("/"),i=n.length;return n.some(Sv)&&(i+=l6),t&&(i+=i6),n.filter(l=>!Sv(l)).reduce((l,d)=>l+(r6.test(d)?s6:d===""?o6:a6),i)}function d6(e,t){return e.length===t.length&&e.slice(0,-1).every((i,l)=>i===t[l])?e[e.length-1]-t[t.length-1]:0}function u6(e,t,n){let{routesMeta:i}=e,l={},d="/",h=[];for(let m=0;m<i.length;++m){let g=i[m],y=m===i.length-1,x=d==="/"?t:t.slice(d.length)||"/",w=h6({path:g.relativePath,caseSensitive:g.caseSensitive,end:y},x),j=g.route;if(!w)return null;Object.assign(l,w.params),h.push({params:l,pathname:Ao([d,w.pathname]),pathnameBase:v6(Ao([d,w.pathnameBase])),route:j}),w.pathnameBase!=="/"&&(d=Ao([d,w.pathnameBase]))}return h}function h6(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,i]=m6(e.path,e.caseSensitive,e.end),l=t.match(n);if(!l)return null;let d=l[0],h=d.replace(/(.)\/+$/,"$1"),m=l.slice(1);return{params:i.reduce((y,x,w)=>{let{paramName:j,isOptional:P}=x;if(j==="*"){let k=m[w]||"";h=d.slice(0,d.length-k.length).replace(/(.)\/+$/,"$1")}const C=m[w];return P&&!C?y[j]=void 0:y[j]=(C||"").replace(/%2F/g,"/"),y},{}),pathname:d,pathnameBase:h,pattern:e}}function m6(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),a0(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let i=[],l="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(h,m,g)=>(i.push({paramName:m,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(i.push({paramName:"*"}),l+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?l+="\\/*$":e!==""&&e!=="/"&&(l+="(?:(?=\\/|$))"),[new RegExp(l,t?void 0:"i"),i]}function p6(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return a0(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function l0(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,i=e.charAt(n);return i&&i!=="/"?null:e.slice(n)||"/"}const f6=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,g6=e=>f6.test(e);function y6(e,t){t===void 0&&(t="/");let{pathname:n,search:i="",hash:l=""}=typeof e=="string"?ac(e):e,d;if(n)if(g6(n))d=n;else{if(n.includes("//")){let h=n;n=n.replace(/\/\/+/g,"/"),a0(!1,"Pathnames cannot have embedded double slashes - normalizing "+(h+" -> "+n))}n.startsWith("/")?d=Nv(n.substring(1),"/"):d=Nv(n,t)}else d=t;return{pathname:d,search:b6(i),hash:w6(l)}}function Nv(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(l=>{l===".."?n.length>1&&n.pop():l!=="."&&n.push(l)}),n.length>1?n.join("/"):"/"}function df(e,t,n,i){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(i)+"].  Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function x6(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function c0(e,t){let n=x6(e);return t?n.map((i,l)=>l===n.length-1?i.pathname:i.pathnameBase):n.map(i=>i.pathnameBase)}function d0(e,t,n,i){i===void 0&&(i=!1);let l;typeof e=="string"?l=ac(e):(l=Pd({},e),rn(!l.pathname||!l.pathname.includes("?"),df("?","pathname","search",l)),rn(!l.pathname||!l.pathname.includes("#"),df("#","pathname","hash",l)),rn(!l.search||!l.search.includes("#"),df("#","search","hash",l)));let d=e===""||l.pathname==="",h=d?"/":l.pathname,m;if(h==null)m=n;else{let w=t.length-1;if(!i&&h.startsWith("..")){let j=h.split("/");for(;j[0]==="..";)j.shift(),w-=1;l.pathname=j.join("/")}m=w>=0?t[w]:"/"}let g=y6(l,m),y=h&&h!=="/"&&h.endsWith("/"),x=(d||h===".")&&n.endsWith("/");return!g.pathname.endsWith("/")&&(y||x)&&(g.pathname+="/"),g}const Ao=e=>e.join("/").replace(/\/\/+/g,"/"),v6=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),b6=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,w6=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function _6(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const h_=["post","put","patch","delete"];new Set(h_);const S6=["get",...h_];new Set(S6);/**
565 * React Router v6.30.3
566 *
567 * Copyright (c) Remix Software Inc.
568 *
569 * This source code is licensed under the MIT license found in the
570 * LICENSE.md file in the root directory of this source tree.
571 *
572 * @license MIT
573 */function Td(){return Td=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Td.apply(this,arguments)}const u0=S.createContext(null),N6=S.createContext(null),Oo=S.createContext(null),ym=S.createContext(null),Ti=S.createContext({outlet:null,matches:[],isDataRoute:!1}),m_=S.createContext(null);function j6(e,t){let{relative:n}=t===void 0?{}:t;lc()||rn(!1);let{basename:i,navigator:l}=S.useContext(Oo),{hash:d,pathname:h,search:m}=f_(e,{relative:n}),g=h;return i!=="/"&&(g=h==="/"?i:Ao([i,h])),l.createHref({pathname:g,search:m,hash:d})}function lc(){return S.useContext(ym)!=null}function Ei(){return lc()||rn(!1),S.useContext(ym).location}function p_(e){S.useContext(Oo).static||S.useLayoutEffect(e)}function Hn(){let{isDataRoute:e}=S.useContext(Ti);return e?O6():k6()}function k6(){lc()||rn(!1);let e=S.useContext(u0),{basename:t,future:n,navigator:i}=S.useContext(Oo),{matches:l}=S.useContext(Ti),{pathname:d}=Ei(),h=JSON.stringify(c0(l,n.v7_relativeSplatPath)),m=S.useRef(!1);return p_(()=>{m.current=!0}),S.useCallback(function(y,x){if(x===void 0&&(x={}),!m.current)return;if(typeof y=="number"){i.go(y);return}let w=d0(y,JSON.parse(h),d,x.relative==="path");e==null&&t!=="/"&&(w.pathname=w.pathname==="/"?t:Ao([t,w.pathname])),(x.replace?i.replace:i.push)(w,x.state,x)},[t,i,h,d,e])}function xm(){let{matches:e}=S.useContext(Ti),t=e[e.length-1];return t?t.params:{}}function f_(e,t){let{relative:n}=t===void 0?{}:t,{future:i}=S.useContext(Oo),{matches:l}=S.useContext(Ti),{pathname:d}=Ei(),h=JSON.stringify(c0(l,i.v7_relativeSplatPath));return S.useMemo(()=>d0(e,JSON.parse(h),d,n==="path"),[e,h,d,n])}function C6(e,t){return P6(e,t)}function P6(e,t,n,i){lc()||rn(!1);let{navigator:l}=S.useContext(Oo),{matches:d}=S.useContext(Ti),h=d[d.length-1],m=h?h.params:{};h&&h.pathname;let g=h?h.pathnameBase:"/";h&&h.route;let y=Ei(),x;if(t){var w;let A=typeof t=="string"?ac(t):t;g==="/"||(w=A.pathname)!=null&&w.startsWith(g)||rn(!1),x=A}else x=y;let j=x.pathname||"/",P=j;if(g!=="/"){let A=g.replace(/^\//,"").split("/");P="/"+j.replace(/^\//,"").split("/").slice(A.length).join("/")}let C=e6(e,{pathname:P}),k=L6(C&&C.map(A=>Object.assign({},A,{params:Object.assign({},m,A.params),pathname:Ao([g,l.encodeLocation?l.encodeLocation(A.pathname).pathname:A.pathname]),pathnameBase:A.pathnameBase==="/"?g:Ao([g,l.encodeLocation?l.encodeLocation(A.pathnameBase).pathname:A.pathnameBase])})),d,n,i);return t&&k?S.createElement(ym.Provider,{value:{location:Td({pathname:"/",search:"",hash:"",state:null,key:"default"},x),navigationType:To.Pop}},k):k}function T6(){let e=D6(),t=_6(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,l={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return S.createElement(S.Fragment,null,S.createElement("h2",null,"Unexpected Application Error!"),S.createElement("h3",{style:{fontStyle:"italic"}},t),n?S.createElement("pre",{style:l},n):null,null)}const E6=S.createElement(T6,null);class A6 extends S.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?S.createElement(Ti.Provider,{value:this.props.routeContext},S.createElement(m_.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function R6(e){let{routeContext:t,match:n,children:i}=e,l=S.useContext(u0);return l&&l.static&&l.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(l.staticContext._deepestRenderedBoundaryId=n.route.id),S.createElement(Ti.Provider,{value:t},i)}function L6(e,t,n,i){var l;if(t===void 0&&(t=[]),n===void 0&&(n=null),i===void 0&&(i=null),e==null){var d;if(!n)return null;if(n.errors)e=n.matches;else if((d=i)!=null&&d.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let h=e,m=(l=n)==null?void 0:l.errors;if(m!=null){let x=h.findIndex(w=>w.route.id&&(m==null?void 0:m[w.route.id])!==void 0);x>=0||rn(!1),h=h.slice(0,Math.min(h.length,x+1))}let g=!1,y=-1;if(n&&i&&i.v7_partialHydration)for(let x=0;x<h.length;x++){let w=h[x];if((w.route.HydrateFallback||w.route.hydrateFallbackElement)&&(y=x),w.route.id){let{loaderData:j,errors:P}=n,C=w.route.loader&&j[w.route.id]===void 0&&(!P||P[w.route.id]===void 0);if(w.route.lazy||C){g=!0,y>=0?h=h.slice(0,y+1):h=[h[0]];break}}}return h.reduceRight((x,w,j)=>{let P,C=!1,k=null,A=null;n&&(P=m&&w.route.id?m[w.route.id]:void 0,k=w.route.errorElement||E6,g&&(y<0&&j===0?(F6("route-fallback"),C=!0,A=null):y===j&&(C=!0,A=w.route.hydrateFallbackElement||null)));let E=t.concat(h.slice(0,j+1)),$=()=>{let I;return P?I=k:C?I=A:w.route.Component?I=S.createElement(w.route.Component,null):w.route.element?I=w.route.element:I=x,S.createElement(R6,{match:w,routeContext:{outlet:x,matches:E,isDataRoute:n!=null},children:I})};return n&&(w.route.ErrorBoundary||w.route.errorElement||j===0)?S.createElement(A6,{location:n.location,revalidation:n.revalidation,component:k,error:P,children:$(),routeContext:{outlet:null,matches:E,isDataRoute:!0}}):$()},null)}var g_=(function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e})(g_||{}),y_=(function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e})(y_||{});function M6(e){let t=S.useContext(u0);return t||rn(!1),t}function I6(e){let t=S.useContext(N6);return t||rn(!1),t}function $6(e){let t=S.useContext(Ti);return t||rn(!1),t}function x_(e){let t=$6(),n=t.matches[t.matches.length-1];return n.route.id||rn(!1),n.route.id}function D6(){var e;let t=S.useContext(m_),n=I6(),i=x_();return t!==void 0?t:(e=n.errors)==null?void 0:e[i]}function O6(){let{router:e}=M6(g_.UseNavigateStable),t=x_(y_.UseNavigateStable),n=S.useRef(!1);return p_(()=>{n.current=!0}),S.useCallback(function(l,d){d===void 0&&(d={}),n.current&&(typeof l=="number"?e.navigate(l):e.navigate(l,Td({fromRouteId:t},d)))},[e,t])}const jv={};function F6(e,t,n){jv[e]||(jv[e]=!0)}function B6(e,t){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function ut(e){let{to:t,replace:n,state:i,relative:l}=e;lc()||rn(!1);let{future:d,static:h}=S.useContext(Oo),{matches:m}=S.useContext(Ti),{pathname:g}=Ei(),y=Hn(),x=d0(t,c0(m,d.v7_relativeSplatPath),g,l==="path"),w=JSON.stringify(x);return S.useEffect(()=>y(JSON.parse(w),{replace:n,state:i,relative:l}),[y,w,l,n,i]),null}function ie(e){rn(!1)}function z6(e){let{basename:t="/",children:n=null,location:i,navigationType:l=To.Pop,navigator:d,static:h=!1,future:m}=e;lc()&&rn(!1);let g=t.replace(/^\/*/,"/"),y=S.useMemo(()=>({basename:g,navigator:d,static:h,future:Td({v7_relativeSplatPath:!1},m)}),[g,m,d,h]);typeof i=="string"&&(i=ac(i));let{pathname:x="/",search:w="",hash:j="",state:P=null,key:C="default"}=i,k=S.useMemo(()=>{let A=l0(x,g);return A==null?null:{location:{pathname:A,search:w,hash:j,state:P,key:C},navigationType:l}},[g,x,w,j,P,C,l]);return k==null?null:S.createElement(Oo.Provider,{value:y},S.createElement(ym.Provider,{children:n,value:k}))}function W6(e){let{children:t,location:n}=e;return C6(mg(t),n)}new Promise(()=>{});function mg(e,t){t===void 0&&(t=[]);let n=[];
573return S.Children.forEach(e,(i,l)=>{if(!S.isValidElement(i))return;let d=[...t,l];if(i.type===S.Fragment){n.push.apply(n,mg(i.props.children,d));return}i.type!==ie&&rn(!1),!i.props.index||!i.props.children||rn(!1);let h={id:i.props.id||d.join("-"),caseSensitive:i.props.caseSensitive,element:i.props.element,Component:i.props.Component,index:i.props.index,path:i.props.path,loader:i.props.loader,action:i.props.action,errorElement:i.props.errorElement,ErrorBoundary:i.props.ErrorBoundary,hasErrorBoundary:i.props.ErrorBoundary!=null||i.props.errorElement!=null,shouldRevalidate:i.props.shouldRevalidate,handle:i.props.handle,lazy:i.props.lazy};i.props.children&&(h.children=mg(i.props.children,d)),n.push(h)}),n}/**
574 * React Router DOM v6.30.3
575 *
576 * Copyright (c) Remix Software Inc.
577 *
578 * This source code is licensed under the MIT license found in the
579 * LICENSE.md file in the root directory of this source tree.
580 *
581 * @license MIT
582 */function pg(){return pg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},pg.apply(this,arguments)}function U6(e,t){if(e==null)return{};var n={},i=Object.keys(e),l,d;for(d=0;d<i.length;d++)l=i[d],!(t.indexOf(l)>=0)&&(n[l]=e[l]);return n}function H6(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function V6(e,t){return e.button===0&&(!t||t==="_self")&&!H6(e)}function fg(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let i=e[n];return t.concat(Array.isArray(i)?i.map(l=>[n,l]):[[n,i]])},[]))}function q6(e,t){let n=fg(e);return t&&t.forEach((i,l)=>{n.has(l)||t.getAll(l).forEach(d=>{n.append(l,d)})}),n}const J6=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],G6="6";try{window.__reactRouterVersion=G6}catch{}const Z6="startTransition",kv=hm[Z6];function K6(e){let{basename:t,children:n,future:i,window:l}=e,d=S.useRef();d.current==null&&(d.current=YC({window:l,v5Compat:!0}));let h=d.current,[m,g]=S.useState({action:h.action,location:h.location}),{v7_startTransition:y}=i||{},x=S.useCallback(w=>{y&&kv?kv(()=>g(w)):g(w)},[g,y]);return S.useLayoutEffect(()=>h.listen(x),[h,x]),S.useEffect(()=>B6(i),[i]),S.createElement(z6,{basename:t,children:n,location:m.location,navigationType:m.action,navigator:h,future:i})}const Y6=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Q6=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Qt=S.forwardRef(function(t,n){let{onClick:i,relative:l,reloadDocument:d,replace:h,state:m,target:g,to:y,preventScrollReset:x,viewTransition:w}=t,j=U6(t,J6),{basename:P}=S.useContext(Oo),C,k=!1;if(typeof y=="string"&&Q6.test(y)&&(C=y,Y6))try{let I=new URL(window.location.href),M=y.startsWith("//")?new URL(I.protocol+y):new URL(y),F=l0(M.pathname,P);M.origin===I.origin&&F!=null?y=F+M.search+M.hash:k=!0}catch{}let A=j6(y,{relative:l}),E=X6(y,{replace:h,state:m,target:g,preventScrollReset:x,relative:l,viewTransition:w});function $(I){i&&i(I),I.defaultPrevented||E(I)}return S.createElement("a",pg({},j,{href:C||A,onClick:k||d?i:$,ref:n,target:g}))});var Cv;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Cv||(Cv={}));var Pv;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Pv||(Pv={}));function X6(e,t){let{target:n,replace:i,state:l,preventScrollReset:d,relative:h,viewTransition:m}=t===void 0?{}:t,g=Hn(),y=Ei(),x=f_(e,{relative:h});return S.useCallback(w=>{if(V6(w,n)){w.preventDefault();let j=i!==void 0?i:Qh(y)===Qh(x);g(e,{replace:j,state:l,preventScrollReset:d,relative:h,viewTransition:m})}},[y,g,x,i,l,n,e,d,h,m])}function v_(e){let t=S.useRef(fg(e)),n=S.useRef(!1),i=Ei(),l=S.useMemo(()=>q6(i.search,n.current?null:t.current),[i.search]),d=Hn(),h=S.useCallback((m,g)=>{const y=fg(typeof m=="function"?m(l):m);n.current=!0,d("?"+y,g)},[d,l]);return[l,h]}function b_(e,t){return function(){return e.apply(t,arguments)}}const{toString:e3}=Object.prototype,{getPrototypeOf:tc}=Object,{iterator:qd,toStringTag:w_}=Symbol,Xh=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Ed=(e,t)=>{let n=e;const i=[];for(;n!=null&&n!==Object.prototype;){if(i.indexOf(n)!==-1)return!1;if(i.push(n),Xh(n,t))return!0;n=tc(n)}return!1},t3=(e,t)=>
vendor: 10,377 bytes, lines 582-584
582e!=null&&Ed(e,t)?e[t]:void 0,h0=(e=>t=>{const n=e3.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Ss=e=>(e=e.toLowerCase(),t=>h0(t)===e),vm=e=>t=>typeof t===e,{isArray:Fa}=Array,nc=vm("undefined");function cc(e){return e!==null&&!nc(e)&&e.constructor!==null&&!nc(e.constructor)&&pr(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const __=Ss("ArrayBuffer");function n3(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&__(e.buffer),t}const r3=vm("string"),pr=vm("function"),S_=vm("number"),dc=e=>e!==null&&typeof e=="object",s3=e=>e===!0||e===!1,Mh=e=>{if(!dc(e))return!1;const t=tc(e);return(t===null||t===Object.prototype||tc(t)===null)&&!Ed(e,w_)&&!Ed(e,qd)},i3=e=>{if(!dc(e)||cc(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},o3=Ss("Date"),a3=Ss("File"),l3=e=>!!(e&&typeof e.uri<"u"),c3=e=>e&&typeof e.getParts<"u",d3=Ss("Blob"),u3=Ss("FileList"),h3=e=>dc(e)&&pr(e.pipe);function m3(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const Tv=m3(),Ev=typeof Tv.FormData<"u"?Tv.FormData:void 0,p3=e=>{if(!e)return!1;if(Ev&&e instanceof Ev)return!0;const t=tc(e);if(!t||t===Object.prototype||!pr(e.append))return!1;const n=h0(e);return n==="formdata"||n==="object"&&pr(e.toString)&&e.toString()==="[object FormData]"},f3=Ss("URLSearchParams"),[g3,y3,x3,v3]=["ReadableStream","Request","Response","Headers"].map(Ss),b3=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Jd(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let i,l;if(typeof e!="object"&&(e=[e]),Fa(e))for(i=0,l=e.length;i<l;i++)t.call(null,e[i],i,e);else{if(cc(e))return;const d=n?Object.getOwnPropertyNames(e):Object.keys(e),h=d.length;let m;for(i=0;i<h;i++)m=d[i],t.call(null,e[m],m,e)}}function N_(e,t){if(cc(e))return null;t=t.toLowerCase();const n=Object.keys(e);let i=n.length,l;for(;i-- >0;)if(l=n[i],t===l.toLowerCase())return l;return null}const Sa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,j_=e=>!nc(e)&&e!==Sa;function gg(...e){const{caseless:t,skipUndefined:n}=j_(this)&&this||{},i={},l=(d,h)=>{if(h==="__proto__"||h==="constructor"||h==="prototype")return;const m=t&&typeof h=="string"&&N_(i,h)||h,g=Xh(i,m)?i[m]:void 0;Mh(g)&&Mh(d)?i[m]=gg(g,d):Mh(d)?i[m]=gg({},d):Fa(d)?i[m]=d.slice():(!n||!nc(d))&&(i[m]=d)};for(let d=0,h=e.length;d<h;d++){const m=e[d];if(!m||cc(m)||(Jd(m,l),typeof m!="object"||Fa(m)))continue;const g=Object.getOwnPropertySymbols(m);for(let y=0;y<g.length;y++){const x=g[y];R3.call(m,x)&&l(m[x],x)}}return i}const w3=(e,t,n,{allOwnKeys:i}={})=>(Jd(t,(l,d)=>{n&&pr(l)?Object.defineProperty(e,d,{__proto__:null,value:b_(l,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,d,{__proto__:null,value:l,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:i}),e),_3=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),S3=(e,t,n,i)=>{e.prototype=Object.create(t.prototype,i),Object.defineProperty(e.prototype,"constructor",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{__proto__:null,value:t.prototype}),n&&Object.assign(e.prototype,n)},N3=(e,t,n,i)=>{let l,d,h;const m={};if(t=t||{},e==null)return t;do{for(l=Object.getOwnPropertyNames(e),d=l.length;d-- >0;)h=l[d],(!i||i(h,e,t))&&!m[h]&&(t[h]=e[h],m[h]=!0);e=n!==!1&&tc(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},j3=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const i=e.indexOf(t,n);return i!==-1&&i===n},k3=e=>{if(!e)return null;if(Fa(e))return e;let t=e.length;if(!S_(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},C3=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&tc(Uint8Array)),P3=(e,t)=>{const i=(e&&e[qd]).call(e);let l;for(;(l=i.next())&&!l.done;){const d=l.value;t.call(e,d[0],d[1])}},T3=(e,t)=>{let n;const i=[];for(;(n=e.exec(t))!==null;)i.push(n);return i},E3=Ss("HTMLFormElement"),A3=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,i,l){return i.toUpperCase()+l}),{propertyIsEnumerable:R3}=Object.prototype,L3=Ss("RegExp"),k_=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),i={};Jd(n,(l,d)=>{let h;(h=t(l,d,e))!==!1&&(i[d]=h||l)}),Object.defineProperties(e,i)},M3=e=>{k_(e,(t,n)=>{if(pr(e)&&["arguments","caller","callee"].includes(n))return!1;const i=e[n];if(pr(i)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},I3=(e,t)=>{const n={},i=l=>{l.forEach(d=>{n[d]=!0})};return Fa(e)?i(e):i(String(e).split(t)),n},$3=()=>{},D3=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function O3(e){return!!(e&&pr(e.append)&&e[w_]==="FormData"&&e[qd])}const F3=e=>{const t=new WeakSet,n=i=>{if(dc(i)){if(t.has(i))return;if(cc(i))return i;if(!("toJSON"in i)){t.add(i);const l=Fa(i)?[]:{};return Jd(i,(d,h)=>{const m=n(d);!nc(m)&&(l[h]=m)}),t.delete(i),l}}return i};return n(e)},B3=Ss("AsyncFunction"),z3=e=>e&&(dc(e)||pr(e))&&pr(e.then)&&pr(e.catch),C_=((e,t)=>e?setImmediate:t?((n,i)=>(Sa.addEventListener("message",({source:l,data:d})=>{l===Sa&&d===n&&i.length&&i.shift()()},!1),l=>{i.push(l),Sa.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",pr(Sa.postMessage)),W3=typeof queueMicrotask<"u"?queueMicrotask.bind(Sa):typeof process<"u"&&process.nextTick||C_,P_=e=>e!=null&&pr(e[qd]),U3=e=>e!=null&&Ed(e,qd)&&P_(e),G={isArray:Fa,isArrayBuffer:__,isBuffer:cc,isFormData:p3,isArrayBufferView:n3,isString:r3,isNumber:S_,isBoolean:s3,isObject:dc,isPlainObject:Mh,isEmptyObject:i3,isReadableStream:g3,isRequest:y3,isResponse:x3,isHeaders:v3,isUndefined:nc,isDate:o3,isFile:a3,isReactNativeBlob:l3,isReactNative:c3,isBlob:d3,isRegExp:L3,isFunction:pr,isStream:h3,isURLSearchParams:f3,isTypedArray:C3,isFileList:u3,forEach:Jd,merge:gg,extend:w3,trim:b3,stripBOM:_3,inherits:S3,toFlatObject:N3,kindOf:h0,kindOfTest:Ss,endsWith:j3,toArray:k3,forEachEntry:P3,matchAll:T3,isHTMLForm:E3,hasOwnProperty:Xh,hasOwnProp:Xh,hasOwnInPrototypeChain:Ed,getSafeProp:t3,reduceDescriptors:k_,freezeMethods:M3,toObjectSet:I3,toCamelCase:A3,noop:$3,toFiniteNumber:D3,findKey:N_,global:Sa,isContextDefined:j_,isSpecCompliantForm:O3,toJSONObject:F3,isAsyncFn:B3,isThenable:z3,setImmediate:C_,asap:W3,isIterable:P_,isSafeIterable:U3},H3=G.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),V3=e=>{const t={};let n,i,l;return e&&e.split(`
583`).forEach(function(h){l=h.indexOf(":"),n=h.substring(0,l).trim().toLowerCase(),i=h.substring(l+1).trim(),!(!n||t[n]&&H3[n])&&(n==="set-cookie"?t[n]?t[n].push(i):t[n]=[i]:t[n]=t[n]?t[n]+", "+i:i)}),t};function q3(e){let t=0,n=e.length;for(;t<n;){const i=e.charCodeAt(t);if(i!==9&&i!==32)break;t+=1}for(;n>t;){const i=e.charCodeAt(n-1);if(i!==9&&i!==32)break;n-=1}return t===0&&n===e.length?e:e.slice(t,n)}const J3=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),G3=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function m0(e,t){return G.isArray(e)?e.map(n=>m0(n,t)):q3(String(e).replace(t,""))}const Z3=e=>m0(e,J3),K3=e=>m0(e,G3);function T_(e){const t=Object.create(null);return G.forEach(e.toJSON(),(n,i)=>{t[i]=K3(n)}),t}const Av=Symbol("internals");function nd(e){return e&&String(e).trim().toLowerCase()}function Ih(e){return e===!1||e==null?e:G.isArray(e)?e.map(Ih):Z3(String(e))}function Y3(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=n.exec(e);)t[i[1]]=i[2];return t}const Q3=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function uf(e,t,n,i,l){if(G.isFunction(i))return i.call(this,t,n);if(l&&(t=n),!!G.isString(t)){if(G.isString(i))return t.indexOf(i)!==-1;if(G.isRegExp(i))return i.test(t)}}function X3(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,i)=>n.toUpperCase()+i)}function eP(e,t){const n=G.toCamelCase(" "+t);["get","set","has"].forEach(i=>{Object.defineProperty(e,i+n,{__proto__:null,value:function(l,d,h){return this[i].call(this,t,l,d,h)},configurable:!0})})}let Un=class{constructor(t){t&&this.set(t)}set(t,n,i){const l=this;function d(m,g,y){const x=nd(g);if(!x)return;const w=G.findKey(l,x);(!w||l[w]===void 0||y===!0||y===void 0&&l[w]!==!1)&&(l[w||g]=Ih(m))}const h=(m,g)=>G.forEach(m,(y,x)=>d(y,x,g));if(G.isPlainObject(t)||t instanceof this.constructor)h(t,n);else if(G.isString(t)&&(t=t.trim())&&!Q3(t))h(V3(t),n);else if(G.isObject(t)&&G.isSafeIterable(t)){let m=Object.create(null),g,y;for(const x of t){if(!G.isArray(x))throw new TypeError("Object iterator must return a key-value pair");y=x[0],G.hasOwnProp(m,y)?(g=m[y],m[y]=G.isArray(g)?[...g,x[1]]:[g,x[1]]):m[y]=x[1]}h(m,n)}else t!=null&&d(n,t,i);return this}get(t,n){if(t=nd(t),t){const i=G.findKey(this,t);if(i){const l=this[i];if(!n)return l;if(n===!0)return Y3(l);if(G.isFunction(n))return n.call(this,l,i);if(G.isRegExp(n))return n.exec(l);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=nd(t),t){const i=G.findKey(this,t);return!!(i&&this[i]!==void 0&&(!n||uf(this,this[i],i,n)))}return!1}delete(t,n){const i=this;let l=!1;function d(h){if(h=nd(h),h){const m=G.findKey(i,h);m&&(!n||uf(i,i[m],m,n))&&(delete i[m],l=!0)}}return G.isArray(t)?t.forEach(d):d(t),l}clear(t){const n=Object.keys(this);let i=n.length,l=!1;for(;i--;){const d=n[i];(!t||uf(this,this[d],d,t,!0))&&(delete this[d],l=!0)}return l}normalize(t){const n=this,i={};return G.forEach(this,(l,d)=>{const h=G.findKey(i,d);if(h){n[h]=Ih(l),delete n[d];return}const m=t?X3(d):String(d).trim();m!==d&&delete n[d],n[m]=Ih(l),i[m]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return G.forEach(this,(i,l)=>{i!=null&&i!==!1&&(n[l]=t&&G.isArray(i)?i.join(", "):i)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(`
584`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const i=new this(t);
vendor: 5,075 bytes, line 584
584return n.forEach(l=>i.set(l)),i}static accessor(t){const i=(this[Av]=this[Av]={accessors:{}}).accessors,l=this.prototype;function d(h){const m=nd(h);i[m]||(eP(l,h),i[m]=!0)}return G.isArray(t)?t.forEach(d):d(t),this}};Un.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);G.reduceDescriptors(Un.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(i){this[n]=i}}});G.freezeMethods(Un);const tP="[REDACTED ****]";function nP(e){if(G.hasOwnProp(e,"toJSON"))return!0;let t=Object.getPrototypeOf(e);for(;t&&t!==Object.prototype;){if(G.hasOwnProp(t,"toJSON"))return!0;t=Object.getPrototypeOf(t)}return!1}function rP(e,t){const n=new Set(t.map(d=>String(d).toLowerCase())),i=[],l=d=>{if(d===null||typeof d!="object"||G.isBuffer(d))return d;if(i.indexOf(d)!==-1)return;d instanceof Un&&(d=d.toJSON()),i.push(d);let h;if(G.isArray(d))h=[],d.forEach((m,g)=>{const y=l(m);G.isUndefined(y)||(h[g]=y)});else{if(!G.isPlainObject(d)&&nP(d))return i.pop(),d;h=Object.create(null);for(const[m,g]of Object.entries(d)){const y=n.has(m.toLowerCase())?tP:l(g);G.isUndefined(y)||(h[m]=y)}}return i.pop(),h};return l(e)}let xe=class E_ extends Error{static from(t,n,i,l,d,h){const m=new E_(t.message,n||t.code,i,l,d);return Object.defineProperty(m,"cause",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),m.name=t.name,t.status!=null&&m.status==null&&(m.status=t.status),h&&Object.assign(m,h),m}constructor(t,n,i,l,d){super(t),Object.defineProperty(this,"message",{__proto__:null,value:t,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),i&&(this.config=i),l&&(this.request=l),d&&(this.response=d,this.status=d.status)}toJSON(){const t=this.config,n=t&&G.hasOwnProp(t,"redact")?t.redact:void 0,i=G.isArray(n)&&n.length>0?rP(t,n):G.toJSONObject(t);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:i,code:this.code,status:this.status}}};xe.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";xe.ERR_BAD_OPTION="ERR_BAD_OPTION";xe.ECONNABORTED="ECONNABORTED";xe.ETIMEDOUT="ETIMEDOUT";xe.ECONNREFUSED="ECONNREFUSED";xe.ERR_NETWORK="ERR_NETWORK";xe.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";xe.ERR_DEPRECATED="ERR_DEPRECATED";xe.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";xe.ERR_BAD_REQUEST="ERR_BAD_REQUEST";xe.ERR_CANCELED="ERR_CANCELED";xe.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";xe.ERR_INVALID_URL="ERR_INVALID_URL";xe.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const sP=null,A_=100;function yg(e){return G.isPlainObject(e)||G.isArray(e)}function R_(e){return G.endsWith(e,"[]")?e.slice(0,-2):e}function hf(e,t,n){return e?e.concat(t).map(function(l,d){return l=R_(l),!n&&d?"["+l+"]":l}).join(n?".":""):t}function iP(e){return G.isArray(e)&&!e.some(yg)}const oP=G.toFlatObject(G,{},null,function(t){return/^is[A-Z]/.test(t)});function bm(e,t,n){if(!G.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=G.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function($,I){return!G.isUndefined(I[$])});const i=n.metaTokens,l=n.visitor||C,d=n.dots,h=n.indexes,m=n.Blob||typeof Blob<"u"&&Blob,g=n.maxDepth===void 0?A_:n.maxDepth,y=m&&G.isSpecCompliantForm(t),x=[];if(!G.isFunction(l))throw new TypeError("visitor must be a function");function w(E){if(E===null)return"";if(G.isDate(E))return E.toISOString();if(G.isBoolean(E))return E.toString();if(!y&&G.isBlob(E))throw new xe("Blob is not supported. Use a Buffer instead.");if(G.isArrayBuffer(E)||G.isTypedArray(E)){if(y&&typeof m=="function")return new m([E]);if(typeof Buffer<"u")return Buffer.from(E);throw new xe("Blob is not supported. Use a Buffer instead.",xe.ERR_NOT_SUPPORT)}return E}function j(E){if(E>g)throw new xe("Object is too deeply nested ("+E+" levels). Max depth: "+g,xe.ERR_FORM_DATA_DEPTH_EXCEEDED)}function P(E,$){if(g===1/0)return JSON.stringify(E);const I=[];return JSON.stringify(E,function(F,z){if(!G.isObject(z))return z;for(;I.length&&I[I.length-1]!==this;)I.pop();return I.push(z),j($+I.length-1),z})}function C(E,$,I){let M=E;if(G.isReactNative(t)&&G.isReactNativeBlob(E))return t.append(hf(I,$,d),w(E)),!1;if(E&&!I&&typeof E=="object"){if(G.endsWith($,"{}"))$=i?$:$.slice(0,-2),E=P(E,1);else if(G.isArray(E)&&iP(E)||(G.isFileList(E)||G.endsWith($,"[]"))&&(M=G.toArray(E)))return $=R_($),M.forEach(function(z,V){!(G.isUndefined(z)||z===null)&&t.append(h===!0?hf([$],V,d):h===null?$:$+"[]",w(z))}),!1}return yg(E)?!0:(t.append(hf(I,$,d),w(E)),!1)}const k=Object.assign(oP,{defaultVisitor:C,convertValue:w,isVisitable:yg});function A(E,$,I=0){if(!G.isUndefined(E)){if(j(I),x.indexOf(E)!==-1)throw new Error("Circular reference detected in "+$.join("."));x.push(E),G.forEach(E,function(F,z){(!(G.isUndefined(F)||F===null)&&l.call(t,F,G.isString(z)?z.trim():z,$,k))===!0&&A(F,$?$.concat(z):[z],I+1)}),x.pop()}}if(!G.isObject(e))throw new TypeError("data must be an object");return A(e),t}
vendor: 3,951 bytes, line 584
584function Rv(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(i){return t[i]})}function p0(e,t){this._pairs=[],e&&bm(e,this,t)}const L_=p0.prototype;L_.append=function(t,n){this._pairs.push([t,n])};L_.toString=function(t){const n=t?i=>t.call(this,i,Rv):Rv;return this._pairs.map(function(l){return n(l[0])+"="+n(l[1])},"").join("&")};function aP(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function M_(e,t,n){if(!t)return e;e=e||"";const i=G.isFunction(n)?{serialize:n}:n,l=G.getSafeProp(i,"encode")||aP,d=G.getSafeProp(i,"serialize");let h;if(d?h=d(t,i):h=G.isURLSearchParams(t)?t.toString():new p0(t,i).toString(l),h){const m=e.indexOf("#");m!==-1&&(e=e.slice(0,m)),e+=(e.indexOf("?")===-1?"?":"&")+h}return e}class Lv{constructor(){this.handlers=[]}use(t,n,i){return this.handlers.push({fulfilled:t,rejected:n,synchronous:i?i.synchronous:!1,runWhen:i?i.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){G.forEach(this.handlers,function(i){i!==null&&t(i)})}}const f0={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0},lP=typeof URLSearchParams<"u"?URLSearchParams:p0,cP=typeof FormData<"u"?FormData:null,dP=typeof Blob<"u"?Blob:null,uP={isBrowser:!0,classes:{URLSearchParams:lP,FormData:cP,Blob:dP},protocols:["http","https","file","blob","url","data"]},g0=typeof window<"u"&&typeof document<"u",xg=typeof navigator=="object"&&navigator||void 0,hP=g0&&(!xg||["ReactNative","NativeScript","NS"].indexOf(xg.product)<0),mP=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",pP=g0&&window.location.href||"http://localhost",fP=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:g0,hasStandardBrowserEnv:hP,hasStandardBrowserWebWorkerEnv:mP,navigator:xg,origin:pP},Symbol.toStringTag,{value:"Module"})),Tn={...fP,...uP};function gP(e,t){return bm(e,new Tn.classes.URLSearchParams,{visitor:function(n,i,l,d){return Tn.isNode&&G.isBuffer(n)?(this.append(i,n.toString("base64")),!1):d.defaultVisitor.apply(this,arguments)},...t})}const Mv=A_;function I_(e){if(e>Mv)throw new xe("FormData field is too deeply nested ("+e+" levels). Max depth: "+Mv,xe.ERR_FORM_DATA_DEPTH_EXCEEDED)}function yP(e){const t=[],n=/\w+|\[(\w*)]/g;let i;for(;(i=n.exec(e))!==null;)I_(t.length),t.push(i[0]==="[]"?"":i[1]||i[0]);return t}function xP(e){const t={},n=Object.keys(e);let i;const l=n.length;let d;for(i=0;i<l;i++)d=n[i],t[d]=e[d];return t}function $_(e){function t(n,i,l,d){I_(d);let h=n[d++];if(h==="__proto__")return!0;const m=Number.isFinite(+h),g=d>=n.length;return h=!h&&G.isArray(l)?l.length:h,g?(G.hasOwnProp(l,h)?l[h]=G.isArray(l[h])?l[h].concat(i):[l[h],i]:l[h]=i,!m):((!G.hasOwnProp(l,h)||!G.isObject(l[h]))&&(l[h]=[]),t(n,i,l[h],d)&&G.isArray(l[h])&&(l[h]=xP(l[h])),!m)}if(G.isFormData(e)&&G.isFunction(e.entries)){const n={};return G.forEachEntry(e,(i,l)=>{t(yP(i),l,n,0)}),n}return null}const Al=(e,t)=>e!=null&&G.hasOwnProp(e,t)?e[t]:void 0;function vP(e,t,n){if(G.isString(e))try{return(t||JSON.parse)(e),G.trim(e)}catch(i){if(i.name!=="SyntaxError")throw i}return(n||JSON.stringify)(e)}const Gd={transitional:f0,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const i=n.getContentType()||"",l=i.indexOf("application/json")>-1,d=G.isObject(t);if(d&&G.isHTMLForm(t)&&(t=new FormData(t)),G.isFormData(t))return l?JSON.stringify($_(t)):t;if(G.isArrayBuffer(t)||G.isBuffer(t)||G.isStream(t)||G.isFile(t)||G.isBlob(t)||G.isReadableStream(t))return t;if(G.isArrayBufferView(t))return t.buffer;if(G.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let m;
vendor: 10,665 bytes, line 584
584if(d){const g=Al(this,"formSerializer");if(i.indexOf("application/x-www-form-urlencoded")>-1)return gP(t,g).toString();if((m=G.isFileList(t))||i.indexOf("multipart/form-data")>-1){const y=Al(this,"env"),x=y&&y.FormData;return bm(m?{"files[]":t}:t,x&&new x,g)}}return d||l?(n.setContentType("application/json",!1),vP(t)):t}],transformResponse:[function(t){const n=Al(this,"transitional")||Gd.transitional,i=n&&n.forcedJSONParsing,l=Al(this,"responseType"),d=l==="json";if(G.isResponse(t)||G.isReadableStream(t))return t;if(t&&G.isString(t)&&(i&&!l||d)){const m=!(n&&n.silentJSONParsing)&&d;try{return JSON.parse(t,Al(this,"parseReviver"))}catch(g){if(m)throw g.name==="SyntaxError"?xe.from(g,xe.ERR_BAD_RESPONSE,this,null,Al(this,"response")):g}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Tn.classes.FormData,Blob:Tn.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};G.forEach(["delete","get","head","post","put","patch","query"],e=>{Gd.headers[e]={}});function mf(e,t){const n=this||Gd,i=t||n,l=Un.from(i.headers);let d=i.data;return G.forEach(e,function(m){d=m.call(n,d,l.normalize(),t?t.status:void 0)}),l.normalize(),d}function D_(e){return!!(e&&e.__CANCEL__)}let Zd=class extends xe{constructor(t,n,i){super(t??"canceled",xe.ERR_CANCELED,n,i),this.name="CanceledError",this.__CANCEL__=!0}};function O_(e,t,n){const i=n.config.validateStatus;!n.status||!i||i(n.status)?e(n):t(new xe("Request failed with status code "+n.status,n.status>=400&&n.status<500?xe.ERR_BAD_REQUEST:xe.ERR_BAD_RESPONSE,n.config,n.request,n))}function bP(e){const t=/^([-+\w]{1,25}):(?:\/\/)?/.exec(e);return t&&t[1]||""}function wP(e,t){e=e||10;const n=new Array(e),i=new Array(e);let l=0,d=0,h;return t=t!==void 0?t:1e3,function(g){const y=Date.now(),x=i[d];h||(h=y),n[l]=g,i[l]=y;let w=d,j=0;for(;w!==l;)j+=n[w++],w=w%e;if(l=(l+1)%e,l===d&&(d=(d+1)%e),y-h<t)return;const P=x&&y-x;return P?Math.round(j*1e3/P):void 0}}function _P(e,t){let n=0,i=1e3/t,l,d;const h=(y,x=Date.now())=>{n=x,l=null,d&&(clearTimeout(d),d=null),e(...y)};return[(...y)=>{const x=Date.now(),w=x-n;w>=i?h(y,x):(l=y,d||(d=setTimeout(()=>{d=null,h(l)},i-w)))},()=>l&&h(l)]}const em=(e,t,n=3)=>{let i=0;const l=wP(50,250);return _P(d=>{if(!d||typeof d.loaded!="number")return;const h=d.loaded,m=d.lengthComputable?d.total:void 0,g=m!=null?Math.min(h,m):h,y=Math.max(0,g-i),x=l(y);i=Math.max(i,g);const w={loaded:g,total:m,progress:m?g/m:void 0,bytes:y,rate:x||void 0,estimated:x&&m?(m-g)/x:void 0,event:d,lengthComputable:m!=null,[t?"download":"upload"]:!0};e(w)},n)},Iv=(e,t)=>{const n=e!=null;return[i=>t[0]({lengthComputable:n,total:e,loaded:i}),t[1]]},$v=e=>(...t)=>G.asap(()=>e(...t)),SP=Tn.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,Tn.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(Tn.origin),Tn.navigator&&/(msie|trident)/i.test(Tn.navigator.userAgent)):()=>!0,NP=Tn.hasStandardBrowserEnv?{write(e,t,n,i,l,d,h){if(typeof document>"u")return;const m=[`${e}=${encodeURIComponent(t)}`];G.isNumber(n)&&m.push(`expires=${new Date(n).toUTCString()}`),G.isString(i)&&m.push(`path=${i}`),G.isString(l)&&m.push(`domain=${l}`),d===!0&&m.push("secure"),G.isString(h)&&m.push(`SameSite=${h}`),document.cookie=m.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.split(";");for(let n=0;n<t.length;n++){const i=t[n].replace(/^\s+/,""),l=i.indexOf("=");if(l!==-1&&i.slice(0,l)===e)try{return decodeURIComponent(i.slice(l+1))}catch{return i.slice(l+1)}}return null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function jP(e){return typeof e!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function kP(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}const CP=/^https?:(?!\/\/)/i,PP=/[\t\n\r]/g;function TP(e){let t=0;for(;t<e.length&&e.charCodeAt(t)<=32;)t++;return e.slice(t)}function EP(e){return TP(e).replace(PP,"")}function Dv(e,t){if(typeof e=="string"&&CP.test(EP(e)))throw new xe('Invalid URL: missing "//" after protocol',xe.ERR_INVALID_URL,t)}function F_(e,t,n,i){Dv(t,i);let l=!jP(t);return e&&(l||n===!1)?(Dv(e,i),kP(e,t)):t}const Ov=e=>e instanceof Un?{...e}:e;function Ba(e,t){e=e||{},t=t||{};const n=Object.create(null);Object.defineProperty(n,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function i(x,w,j,P){return G.isPlainObject(x)&&G.isPlainObject(w)?G.merge.call({caseless:P},x,w):G.isPlainObject(w)?G.merge({},w):G.isArray(w)?w.slice():w}function l(x,w,j,P){if(G.isUndefined(w)){if(!G.isUndefined(x))return i(void 0,x,j,P)}else return i(x,w,j,P)}function d(x,w){if(!G.isUndefined(w))return i(void 0,w)}function h(x,w){if(G.isUndefined(w)){if(!G.isUndefined(x))return i(void 0,x)}else return i(void 0,w)}function m(x){const w=G.hasOwnProp(t,"transitional")?t.transitional:void 0;if(!G.isUndefined(w))if(G.isPlainObject(w)){if(G.hasOwnProp(w,x))return w[x]}else return;const j=G.hasOwnProp(e,"transitional")?e.transitional:void 0;if(G.isPlainObject(j)&&G.hasOwnProp(j,x))return j[x]}function g(x,w,j){if(G.hasOwnProp(t,j))return i(x,w);if(G.hasOwnProp(e,j))return i(void 0,x)}const y={url:d,method:d,data:d,baseURL:h,transformRequest:h,transformResponse:h,paramsSerializer:h,timeout:h,timeoutMessage:h,withCredentials:h,withXSRFToken:h,adapter:h,responseType:h,xsrfCookieName:h,xsrfHeaderName:h,onUploadProgress:h,onDownloadProgress:h,decompress:h,maxContentLength:h,maxBodyLength:h,beforeRedirect:h,transport:h,httpAgent:h,httpsAgent:h,cancelToken:h,socketPath:h,allowedSocketPaths:h,responseEncoding:h,validateStatus:g,headers:(x,w,j)=>l(Ov(x),Ov(w),j,!0)};return G.forEach(Object.keys({...e,...t}),function(w){if(w==="__proto__"||w==="constructor"||w==="prototype")return;const j=G.hasOwnProp(y,w)?y[w]:l,P=G.hasOwnProp(e,w)?e[w]:void 0,C=G.hasOwnProp(t,w)?t[w]:void 0,k=j(P,C,w);G.isUndefined(k)&&j!==g||(n[w]=k)}),G.hasOwnProp(t,"validateStatus")&&G.isUndefined(t.validateStatus)&&m("validateStatusUndefinedResolves")===!1&&(G.hasOwnProp(e,"validateStatus")?n.validateStatus=i(void 0,e.validateStatus):delete n.validateStatus),n}const AP=["content-type","content-length"];function RP(e,t,n){if(n!=="content-only"){e.set(t);return}Object.entries(t||{}).forEach(([i,l])=>{AP.includes(i.toLowerCase())&&e.set(i,l)})}const LP=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(t,n)=>String.fromCharCode(parseInt(n,16)));function B_(e){const t=Ba({},e),n=j=>G.hasOwnProp(t,j)?t[j]:void 0,i=n("data");let l=n("withXSRFToken");const d=n("xsrfHeaderName"),h=n("xsrfCookieName");let m=n("headers");const g=n("auth"),y=n("baseURL"),x=n("allowAbsoluteUrls"),w=n("url");if(t.headers=m=Un.from(m),t.url=M_(F_(y,w,x,t),n("params"),n("paramsSerializer")),g){const j=G.getSafeProp(g,"username")||"",P=G.getSafeProp(g,"password")||"";try{m.set("Authorization","Basic "+btoa(j+":"+(P?LP(P):"")))}catch(C){throw xe.from(C,xe.ERR_BAD_OPTION_VALUE,e)}}if(G.isFormData(i)&&(Tn.hasStandardBrowserEnv||Tn.hasStandardBrowserWebWorkerEnv||G.isReactNative(i)?m.setContentType(void 0):G.isFunction(i.getHeaders)&&RP(m,i.getHeaders(),n("formDataHeaderPolicy"))),Tn.hasStandardBrowserEnv&&(G.isFunction(l)&&(l=l(t)),l===!0||l==null&&SP(t.url))){const P=d&&h&&NP.read(h);P&&m.set(d,P)}return t}const MP=typeof XMLHttpRequest<"u",IP=MP&&function(e){return new Promise(function(n,i){const l=B_(e);let d=l.data;const h=Un.from(l.headers).normalize();let{responseType:m,onUploadProgress:g,onDownloadProgress:y}=l,x,w,j,P,C;function k(){P&&P(),C&&C(),l.cancelToken&&l.cancelToken.unsubscribe(x),l.signal&&l.signal.removeEventListener("abort",x)}let A=new XMLHttpRequest;A.open(l.method.toUpperCase(),l.url,!0),A.timeout=l.timeout;function E(){if(!A)return;const I=Un.from("getAllResponseHeaders"in A&&A.getAllResponseHeaders()),F={data:!m||m==="text"||m==="json"?A.responseText:A.response,status:A.status,statusText:A.statusText,headers:I,config:e,request:A};O_(function(V){n(V),k()},function(V){i(V),k()},F),A=null}"onloadend"in A?A.onloadend=E:A.onreadystatechange=function(){!A||A.readyState!==4||A.status===0&&!(A.responseURL&&A.responseURL.startsWith("file:"))||setTimeout(E)},A.onabort=function(){A&&(i(new xe("Request aborted",xe.ECONNABORTED,e,A)),k(),A=null)},A.onerror=function(M){const F=M&&M.message?M.message:"Network Error",z=new xe(F,xe.ERR_NETWORK,e,A);z.event=M||null,i(z),k(),A=null},A.ontimeout=function(){let M=l.timeout?"timeout of "+l.timeout+"ms exceeded":"timeout exceeded";const F=l.transitional||f0;l.timeoutErrorMessage&&(M=l.timeoutErrorMessage),i(new xe(M,F.clarifyTimeoutError?xe.ETIMEDOUT:xe.ECONNABORTED,e,A)),k(),A=null},d===void 0&&h.setContentType(null),"setRequestHeader"in A&&G.forEach(T_(h),function(M,F){A.setRequestHeader(F,M)}),G.isUndefined(l.withCredentials)||(A.withCredentials=!!l.withCredentials),m&&m!=="json"&&(A.responseType=l.responseType),y&&([j,C]=em(y,!0),A.addEventListener("progress",j)),g&&A.upload&&([w,P]=em(g),A.upload.addEventListener("progress",w),A.upload.addEventListener("loadend",P)),(l.cancelToken||l.signal)&&(x=I=>{A&&(i(!I||I.type?new Zd(null,e,A):I),A.abort(),k(),A=null)},l.cancelToken&&l.cancelToken.subscribe(x),l.signal&&(l.signal.aborted?x():l.signal.addEventListener("abort",x)));const $=bP(l.url);if($&&!Tn.protocols.includes($)){i(new xe("Unsupported protocol "+$+":",xe.ERR_BAD_REQUEST,e)),k();return}A.send(d||null)})},$P=(e,t)=>{if(e=e?e.filter(Boolean):[],!t&&!e.length)return;const n=new AbortController;let i=!1;const l=function(g){if(!i){i=!0,h();const y=g instanceof Error?g:this.reason;n.abort(y instanceof xe?y:new Zd(y instanceof Error?y.message:y))}};let d=t&&setTimeout(()=>{d=null,l(new xe(`timeout of ${t}ms exceeded`,xe.ETIMEDOUT))},t);const h=()=>{e&&(d&&clearTimeout(d),d=null,e.forEach(g=>{g.unsubscribe?g.unsubscribe(l):g.removeEventListener("abort",l)}),e=null)};e.forEach(g=>g.addEventListener("abort",l,{once:!0}));const{signal:m}=n;return m.unsubscribe=()=>G.asap(h),m},DP=function*(e,t){let n=e.byteLength;if(n<t){yield e;return}let i=0,l;for(;i<n;)l=i+t,yield e.slice(i,l),i=l},OP=async function*(e,t){for await(const n of FP(e))yield*DP(n,t)},FP=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:n,value:i}=await t.read();if(n)break;yield i}}finally{await t.cancel()}},Fv=(e,t,n,i)=>{const l=OP(e,t);let d=0,h,m=g=>{h||(h=!0,i&&i(g))};return new ReadableStream({async pull(g){try{const{done:y,value:x}=await l.next();if(y){m(),g.close();return}let w=x.byteLength;if(n){let j=d+=w;n(j)}
vendor: 4,915 bytes, line 584
584g.enqueue(new Uint8Array(x))}catch(y){throw m(y),y}},cancel(g){return m(g),l.return()}},{highWaterMark:2})},tm=e=>e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102,BP=(e,t,n)=>t+2<n&&tm(e.charCodeAt(t+1))&&tm(e.charCodeAt(t+2));function zP(e){if(!e||typeof e!="string"||!e.startsWith("data:"))return 0;const t=e.indexOf(",");if(t<0)return 0;const n=e.slice(5,t),i=e.slice(t+1);if(/;base64/i.test(n)){let h=i.length;const m=i.length;for(let P=0;P<m;P++)if(i.charCodeAt(P)===37&&P+2<m){const C=i.charCodeAt(P+1),k=i.charCodeAt(P+2);tm(C)&&tm(k)&&(h-=2,P+=2)}let g=0,y=m-1;const x=P=>P>=2&&i.charCodeAt(P-2)===37&&i.charCodeAt(P-1)===51&&(i.charCodeAt(P)===68||i.charCodeAt(P)===100);y>=0&&(i.charCodeAt(y)===61?(g++,y--):x(y)&&(g++,y-=3)),g===1&&y>=0&&(i.charCodeAt(y)===61||x(y))&&g++;const j=Math.floor(h/4)*3-(g||0);return j>0?j:0}let d=0;for(let h=0,m=i.length;h<m;h++){const g=i.charCodeAt(h);if(g===37&&BP(i,h,m))d+=1,h+=2;else if(g<128)d+=1;else if(g<2048)d+=2;else if(g>=55296&&g<=56319&&h+1<m){const y=i.charCodeAt(h+1);y>=56320&&y<=57343?(d+=4,h++):d+=3}else d+=3}return d}const y0="1.18.1",Bv=64*1024,{isFunction:fh}=G,WP=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(t,n)=>String.fromCharCode(parseInt(n,16))),zv=e=>{if(!G.isString(e))return e;try{return decodeURIComponent(e)}catch{return e}},Wv=(e,...t)=>{try{return!!e(...t)}catch{return!1}},UP=e=>{const t=e.indexOf("://");let n=e;return t!==-1&&(n=n.slice(t+3)),n.includes("@")||n.includes(":")},HP=e=>{const t=G.global!==void 0&&G.global!==null?G.global:globalThis,{ReadableStream:n,TextEncoder:i}=t;e=G.merge.call({skipUndefined:!0},{Request:t.Request,Response:t.Response},e);const{fetch:l,Request:d,Response:h}=e,m=l?fh(l):typeof fetch=="function",g=fh(d),y=fh(h);if(!m)return!1;const x=m&&fh(n),w=m&&(typeof i=="function"?(E=>$=>E.encode($))(new i):async E=>new Uint8Array(await new d(E).arrayBuffer())),j=g&&x&&Wv(()=>{let E=!1;const $=new d(Tn.origin,{body:new n,method:"POST",get duplex(){return E=!0,"half"}}),I=$.headers.has("Content-Type");return $.body!=null&&$.body.cancel(),E&&!I}),P=y&&x&&Wv(()=>G.isReadableStream(new h("").body)),C={stream:P&&(E=>E.body)};m&&["text","arrayBuffer","blob","formData","stream"].forEach(E=>{!C[E]&&(C[E]=($,I)=>{let M=$&&$[E];if(M)return M.call($);throw new xe(`Response type '${E}' is not supported`,xe.ERR_NOT_SUPPORT,I)})});const k=async E=>{if(E==null)return 0;if(G.isBlob(E))return E.size;if(G.isSpecCompliantForm(E))return(await new d(Tn.origin,{method:"POST",body:E}).arrayBuffer()).byteLength;if(G.isArrayBufferView(E)||G.isArrayBuffer(E))return E.byteLength;if(G.isURLSearchParams(E)&&(E=E+""),G.isString(E))return(await w(E)).byteLength},A=async(E,$)=>{const I=G.toFiniteNumber(E.getContentLength());return I??k($)};return async E=>{let{url:$,method:I,data:M,signal:F,cancelToken:z,timeout:V,onDownloadProgress:W,onUploadProgress:ne,responseType:de,headers:be,withCredentials:Re="same-origin",fetchOptions:Je,maxContentLength:Ie,maxBodyLength:mt}=B_(E);const Se=G.isNumber(Ie)&&Ie>-1,je=G.isNumber(mt)&&mt>-1,X=re=>G.hasOwnProp(E,re)?E[re]:void 0;let ue=l||fetch;de=de?(de+"").toLowerCase():"text";let q=$P([F,z&&z.toAbortSignal()],V),O=null;const te=q&&q.unsubscribe&&(()=>{q.unsubscribe()});let ye,ge=null;const pe=()=>new xe("Request body larger than maxBodyLength limit",xe.ERR_BAD_REQUEST,E,O);try{let re;const $e=X("auth");if($e){const Be=G.getSafeProp($e,"username")||"",At=G.getSafeProp($e,"password")||"";re={username:Be,password:At}}if(UP($)){const Be=new URL($,Tn.origin);if(!re&&(Be.username||Be.password)){const At=zv(Be.username),zt=zv(Be.password);re={username:At,password:zt}}(Be.username||Be.password)&&(Be.username="",Be.password="",$=Be.href)}if(re&&(be.delete("authorization"),be.set("Authorization","Basic "+btoa(WP((re.username||"")+":"+(re.password||""))))),Se&&typeof $=="string"&&$.startsWith("data:")&&zP($)>Ie)throw new xe("maxContentLength size of "+Ie+" exceeded",xe.ERR_BAD_RESPONSE,E,O);if(je&&I!=="get"&&I!=="head"){const Be=await k(M);if(typeof Be=="number"&&isFinite(Be)&&(ye=Be,Be>mt))throw pe()}const He=je&&(G.isReadableStream(M)||G.isStream(M)),De=(Be,At,zt)=>Fv(Be,Bv,xn=>{if(je&&xn>mt)throw ge=pe();At&&At(xn)},zt);if(j&&I!=="get"&&I!=="head"&&(ne||He)){if(ye=ye??await A(be,M),ye!==0||He){let Be=new d($,{method:"POST",body:M,duplex:"half"}),At;if(G.isFormData(M)&&(At=Be.headers.get("content-type"))&&be.setContentType(At),Be.body){const[zt,xn]=ne&&Iv(ye,em($v(ne)))||[];M=De(Be.body,zt,xn)}}}else if(He&&!g&&x&&I!=="get"&&I!=="head")M=De(M);else if(He&&g&&!j&&I!=="get"&&I!=="head")throw new xe("Stream request bodies are not supported by the current fetch implementation",xe.ERR_NOT_SUPPORT,E,O);G.isString(Re)||(Re=Re?"include":"omit");const Et=g&&"credentials"in d.prototype;if(G.isFormData(M)){const Be=be.getContentType();Be&&/^multipart\/form-data/i.test(Be)&&!/boundary=/i.test(Be)&&be.delete("content-type")}be.set("User-Agent","axios/"+y0,!1);
vendor: 5,171 bytes, lines 584-586
584const It={...Je,signal:q,method:I.toUpperCase(),headers:T_(be.normalize()),body:M,duplex:"half",credentials:Et?Re:void 0};O=g&&new d($,It);let kt=await(g?ue(O,Je):ue($,It));const dn=Un.from(kt.headers);if(Se){const Be=G.toFiniteNumber(dn.getContentLength());if(Be!=null&&Be>Ie)throw new xe("maxContentLength size of "+Ie+" exceeded",xe.ERR_BAD_RESPONSE,E,O)}const un=P&&(de==="stream"||de==="response");if(P&&kt.body&&(W||Se||un&&te)){const Be={};["status","statusText","headers"].forEach(En=>{Be[En]=kt[En]});const At=G.toFiniteNumber(dn.getContentLength()),[zt,xn]=W&&Iv(At,em($v(W),!0))||[];let Rt=0;const Vn=En=>{if(Se&&(Rt=En,Rt>Ie))throw new xe("maxContentLength size of "+Ie+" exceeded",xe.ERR_BAD_RESPONSE,E,O);zt&&zt(En)};kt=new h(Fv(kt.body,Bv,Vn,()=>{xn&&xn(),te&&te()}),Be)}de=de||"text";let Bt=await C[G.findKey(C,de)||"text"](kt,E);if(Se&&!P&&!un){let Be;if(Bt!=null&&(typeof Bt.byteLength=="number"?Be=Bt.byteLength:typeof Bt.size=="number"?Be=Bt.size:typeof Bt=="string"&&(Be=typeof i=="function"?new i().encode(Bt).byteLength:Bt.length)),typeof Be=="number"&&Be>Ie)throw new xe("maxContentLength size of "+Ie+" exceeded",xe.ERR_BAD_RESPONSE,E,O)}return!un&&te&&te(),await new Promise((Be,At)=>{O_(Be,At,{data:Bt,headers:Un.from(kt.headers),status:kt.status,statusText:kt.statusText,config:E,request:O})})}catch(re){if(te&&te(),q&&q.aborted&&q.reason instanceof xe){const $e=q.reason;throw $e.config=E,O&&($e.request=O),re!==$e&&Object.defineProperty($e,"cause",{__proto__:null,value:re,writable:!0,enumerable:!1,configurable:!0}),$e}if(ge)throw O&&!ge.request&&(ge.request=O),ge;if(re instanceof xe)throw O&&!re.request&&(re.request=O),re;if(re&&re.name==="TypeError"&&/Load failed|fetch/i.test(re.message)){const $e=new xe("Network Error",xe.ERR_NETWORK,E,O,re&&re.response);throw Object.defineProperty($e,"cause",{__proto__:null,value:re.cause||re,writable:!0,enumerable:!1,configurable:!0}),$e}throw xe.from(re,re&&re.code,E,O,re&&re.response)}}},VP=new Map,z_=e=>{let t=e&&e.env||{};const{fetch:n,Request:i,Response:l}=t,d=[i,l,n];let h=d.length,m=h,g,y,x=VP;for(;m--;)g=d[m],y=x.get(g),y===void 0&&x.set(g,y=m?new Map:HP(t)),x=y;return y};z_();const x0={http:sP,xhr:IP,fetch:{get:z_}};G.forEach(x0,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{__proto__:null,value:t})}catch{}Object.defineProperty(e,"adapterName",{__proto__:null,value:t})}});const Uv=e=>`- ${e}`,qP=e=>G.isFunction(e)||e===null||e===!1;function JP(e,t){e=G.isArray(e)?e:[e];const{length:n}=e;let i,l;const d={};for(let h=0;h<n;h++){i=e[h];let m;if(l=i,!qP(i)&&(l=x0[(m=String(i)).toLowerCase()],l===void 0))throw new xe(`Unknown adapter '${m}'`);if(l&&(G.isFunction(l)||(l=l.get(t))))break;d[m||"#"+h]=l}if(!l){const h=Object.entries(d).map(([g,y])=>`adapter ${g} `+(y===!1?"is not supported by the environment":"is not available in the build"));let m=n?h.length>1?`since :
585`+h.map(Uv).join(`
586`):" "+Uv(h[0]):"as no adapter specified";throw new xe("There is no suitable adapter to dispatch the request "+m,xe.ERR_NOT_SUPPORT)}return l}const W_={getAdapter:JP,adapters:x0};function pf(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Zd(null,e)}function Hv(e){return pf(e),e.headers=Un.from(e.headers),e.data=mf.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),W_.getAdapter(e.adapter||Gd.adapter,e)(e).then(function(i){pf(e),e.response=i;try{i.data=mf.call(e,e.transformResponse,i)}finally{delete e.response}return i.headers=Un.from(i.headers),i},function(i){if(!D_(i)&&(pf(e),i&&i.response)){e.response=i.response;try{i.response.data=mf.call(e,e.transformResponse,i.response)}finally{delete e.response}i.response.headers=Un.from(i.response.headers)}return Promise.reject(i)})}const wm={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{wm[e]=function(i){return typeof i===e||"a"+(t<1?"n ":" ")+e}});const Vv={};wm.transitional=function(t,n,i){function l(d,h){return"[Axios v"+y0+"] Transitional option '"+d+"'"+h+(i?". "+i:"")}return(d,h,m)=>{if(t===!1)throw new xe(l(h," has been removed"+(n?" in "+n:"")),xe.ERR_DEPRECATED);return n&&!Vv[h]&&(Vv[h]=!0,console.warn(l(h," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(d,h,m):!0}};wm.spelling=function(t){return(n,i)=>(console.warn(`${i} is likely a misspelling of ${t}`),!0)};function GP(e,t,n){if(typeof e!="object"||e===null)throw new xe("options must be an object",xe.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let l=i.length;for(;l-- >0;){const d=i[l],h=Object.prototype.hasOwnProperty.call(t,d)?t[d]:void 0;if(h){const m=e[d],g=m===void 0||h(m,d,e);if(g!==!0)throw new xe("option "+d+" must be "+g,xe.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new xe("Unknown option "+d,xe.ERR_BAD_OPTION)}}const $h={assertOptions:GP,validators:wm},Fn=$h.validators;let Ma=class{constructor(t){this.defaults=t||{},this.interceptors={request:new Lv,response:new Lv}}async request(t,n){try{return await this._request(t,n)}catch(i){if(i instanceof Error){let l={};Error.captureStackTrace?Error.captureStackTrace(l):l=new Error;const d=(()=>
vendor: 3,918 bytes, lines 586-590
586{if(!l.stack)return"";const h=l.stack.indexOf(`
587`);return h===-1?"":l.stack.slice(h+1)})();try{if(!i.stack)i.stack=d;else if(d){const h=d.indexOf(`
588`),m=h===-1?-1:d.indexOf(`
589`,h+1),g=m===-1?"":d.slice(m+1);String(i.stack).endsWith(g)||(i.stack+=`
590`+d)}}catch{}}throw i}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Ba(this.defaults,n);const{transitional:i,paramsSerializer:l,headers:d}=n;i!==void 0&&$h.assertOptions(i,{silentJSONParsing:Fn.transitional(Fn.boolean),forcedJSONParsing:Fn.transitional(Fn.boolean),clarifyTimeoutError:Fn.transitional(Fn.boolean),legacyInterceptorReqResOrdering:Fn.transitional(Fn.boolean),advertiseZstdAcceptEncoding:Fn.transitional(Fn.boolean),validateStatusUndefinedResolves:Fn.transitional(Fn.boolean)},!1),l!=null&&(G.isFunction(l)?n.paramsSerializer={serialize:l}:$h.assertOptions(l,{encode:Fn.function,serialize:Fn.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),$h.assertOptions(n,{baseUrl:Fn.spelling("baseURL"),withXsrfToken:Fn.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let h=d&&G.merge(d.common,d[n.method]);d&&G.forEach(["delete","get","head","post","put","patch","query","common"],C=>{delete d[C]}),n.headers=Un.concat(h,d);const m=[];let g=!0;this.interceptors.request.forEach(function(k){if(typeof k.runWhen=="function"&&k.runWhen(n)===!1)return;g=g&&k.synchronous;const A=n.transitional||f0;A&&A.legacyInterceptorReqResOrdering?m.unshift(k.fulfilled,k.rejected):m.push(k.fulfilled,k.rejected)});const y=[];this.interceptors.response.forEach(function(k){y.push(k.fulfilled,k.rejected)});let x,w=0,j;if(!g){const C=[Hv.bind(this),void 0];for(C.unshift(...m),C.push(...y),j=C.length,x=Promise.resolve(n);w<j;)x=x.then(C[w++],C[w++]);return x}j=m.length;let P=n;for(;w<j;){const C=m[w++],k=m[w++];try{P=C(P)}catch(A){k.call(this,A);break}}try{x=Hv.call(this,P)}catch(C){return Promise.reject(C)}for(w=0,j=y.length;w<j;)x=x.then(y[w++],y[w++]);return x}getUri(t){t=Ba(this.defaults,t);const n=F_(t.baseURL,t.url,t.allowAbsoluteUrls,t);return M_(n,t.params,t.paramsSerializer)}};G.forEach(["delete","get","head","options"],function(t){Ma.prototype[t]=function(n,i){return this.request(Ba(i||{},{method:t,url:n,data:i&&G.hasOwnProp(i,"data")?i.data:void 0}))}});G.forEach(["post","put","patch","query"],function(t){function n(i){return function(d,h,m){return this.request(Ba(m||{},{method:t,headers:i?{"Content-Type":"multipart/form-data"}:{},url:d,data:h}))}}Ma.prototype[t]=n(),t!=="query"&&(Ma.prototype[t+"Form"]=n(!0))});let ZP=class U_{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(d){n=d});const i=this;this.promise.then(l=>{if(!i._listeners)return;let d=i._listeners.length;for(;d-- >0;)i._listeners[d](l);i._listeners=null}),this.promise.then=l=>{let d;const h=new Promise(m=>{i.subscribe(m),d=m}).then(l);return h.cancel=function(){i.unsubscribe(d)},h},t(function(d,h,m){i.reason||(i.reason=new Zd(d,h,m),n(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=i=>{t.abort(i)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new U_(function(l){t=l}),cancel:t}}};function KP(e){return function(n){return e.apply(null,n)}}function YP(e){return G.isObject(e)&&e.isAxiosError===!0}const vg={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,Parti
590alContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(vg).forEach(([e,t])=>{vg[t]=e});function H_(e){const t=new Ma(e),n=b_(Ma.prototype.request,t);return G.extend(n,Ma.prototype,t,{allOwnKeys:!0}),G.extend(n,t,null,{allOwnKeys:!0}),n.create=function(l){return H_(Ba(e,l))},n}const sn=H_(Gd);sn.Axios=Ma;sn.CanceledError=Zd;sn.CancelToken=ZP;sn.isCancel=D_;sn.VERSION=y0;sn.toFormData=bm;sn.AxiosError=xe;sn.Cancel=sn.CanceledError;sn.all=function(t){return Promise.all(t)};sn.spread=KP;sn.isAxiosError=YP;sn.mergeConfig=Ba;sn.AxiosHeaders=Un;sn.formToJSON=e=>$_(G.isHTMLForm(e)?new FormData(e):e);sn.getAdapter=W_.getAdapter;sn.HttpStatusCode=vg;sn.default=sn;const{Axios:fD,AxiosError:gD,CanceledError:yD,isCancel:xD,CancelToken:vD,VERSION:bD,all:wD,Cancel:_D,isAxiosError:SD,spread:ND,toFormData:jD,AxiosHeaders:kD,HttpStatusCode:CD,formToJSON:PD,getAdapter:TD,mergeConfig:ED,create:AD}=sn,V_=typeof window>"u",qv=!V_&&window.self!==window.top,QP=!V_&&typeof document>"u",ff=()=>Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),kn=[];for(let e=0;e<256;++e)kn.push((e+256).toString(16).slice(1));function XP(e,t=0){return(kn[e[t+0]]+kn[e[t+1]]+kn[e[t+2]]+kn[e[t+3]]+"-"+kn[e[t+4]]+kn[e[t+5]]+"-"+kn[e[t+6]]+kn[e[t+7]]+"-"+kn[e[t+8]]+kn[e[t+9]]+"-"+kn[e[t+10]]+kn[e[t+11]]+kn[e[t+12]]+kn[e[t+13]]+kn[e[t+14]]+kn[e[t+15]]).toLowerCase()}let gf;const eT=new Uint8Array(16);function tT(){if(!gf){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");gf=crypto.getRandomValues.bind(crypto)}return gf(eT)}const nT=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Jv={randomUUID:nT};function rT(e,t,n){var l;e=e||{};const i=e.random??((l=e.rng)==null?void 0:l.call(e))??tT();if(i.length<16)throw new Error("Random bytes length must be >= 16");return i[6]=i[6]&15|64,i[8]=i[8]&63|128,XP(i)}function sT(e,t,n){return Jv.randomUUID&&!e?Jv.randomUUID():rT(e)}const rd=typeof window<"u"?window:{base44SharedInstances:{}};function iT(e,t){return rd.base44SharedInstances||(rd.base44SharedInstances={}),rd.base44SharedInstances[e]||(rd.base44SharedInstances[e]={instance:t()}),rd.base44SharedInstances[e].instance}const oT="__user_heartbeat_event__",aT="__initialization_event__",lT="__session_duration_event__",Gv="analytics-enable",Zv="base44_analytics_session_id",cT={enabled:!0,maxQueueSize:1e3,throttleTime:1e3,batchSize:30,heartBeatInterval:60*1e3},dT="analytics",Tt=iT(dT,()=>({requestsQueue:[],isProcessing:!1,isHeartBeatProcessing:!1,wasInitializationTracked:!1,sessionContext:null,sessionStartTime:null,config:{...cT,...xT()}})),uT=({axiosClient:e,serverUrl:t,appId:n,userAuthModule:i})=>{var l;const{maxQueueSize:d,throttleTime:h,batchSize:m}=Tt.config;if(!(!((l=Tt.config)===null||l===void 0)&&l.enabled)||QP)return{track:()=>{},cleanup:()=>{}};let g;const y=`${t}/api/apps/${n}/analytics/track/batch`,x=async I=>{await e.request({method:"POST",url:`/apps/${n}/analytics/track/batch`,data:{events:I}})},w=I=>{try{const M=JSON.stringify({events:I}),F=new Blob([M],{type:"application/json"});return typeof navigator>"u"||M.length>6e4||!navigator.sendBeacon(y,F)}catch{return!1}},j=async(I,M={})=>
590{if(I.length===0)return;const F=await yT(i),z=I.map(gT(F));try{(!M.isBeacon||!w(z))&&await x(z)}catch{}},P=()=>{Yv(j,{throttleTime:h,batchSize:m})},C=I=>{if(Tt.requestsQueue.length>=d)return;const M=fT();Tt.requestsQueue.push({...I,...M}),P()},k=()=>{Yv(j,{throttleTime:h,batchSize:m}),g=Qv(C),mT()},A=()=>{Kv(),g==null||g(),pT(C);const I=Tt.requestsQueue.splice(0);j(I,{isBeacon:!0})},E=()=>{typeof window>"u"||(document.visibilityState==="hidden"?A():document.visibilityState==="visible"&&k())},$=()=>{Kv(),g==null||g(),typeof window<"u"&&window.removeEventListener("visibilitychange",E)};return P(),g=Qv(C),hT(C),typeof window<"u"&&window.addEventListener("visibilitychange",E),{track:C,cleanup:$}};function Kv(){Tt.isProcessing=!1}async function Yv(e,t){if(Tt.isProcessing)return;Tt.isProcessing=!0;const{throttleTime:n=1e3,batchSize:i=30}=t??{};for(;Tt.isProcessing&&Tt.requestsQueue.length>0;){const l=Tt.requestsQueue.splice(0,i);l.length&&await e(l),await new Promise(d=>setTimeout(d,n))}Tt.isProcessing=!1}function Qv(e){var t;if(Tt.isHeartBeatProcessing||((t=Tt.config.heartBeatInterval)!==null&&t!==void 0?t:0)<10)return()=>{};Tt.isHeartBeatProcessing=!0;const n=setInterval(()=>{e({eventName:oT})},Tt.config.heartBeatInterval);return()=>{clearInterval(n),Tt.isHeartBeatProcessing=!1}}function hT(e){typeof window>"u"||Tt.wasInitializationTracked||(Tt.wasInitializationTracked=!0,e({eventName:aT,properties:{referrer:document==null?void 0:document.referrer}}))}function mT(){typeof window>"u"||Tt.sessionStartTime!==null||(Tt.sessionStartTime=new Date().toISOString())}function pT(e){if(typeof window>"u"||Tt.sessionStartTime===null)return;const t=new Date().getTime()-new Date(Tt.sessionStartTime).getTime();Tt.sessionStartTime=null,e({eventName:lT,properties:{sessionDuration:t}})}function fT(){return{timestamp:new Date().toISOString(),pageUrl:typeof window<"u"?window.location.pathname:null}}function gT(e){return t=>({event_name:t.eventName,properties:t.properties,timestamp:t.timestamp,page_url:t.pageUrl,...e})}let yf=null;async function yT(e){if(!Tt.sessionContext){if(!yf){const t=v0();yf=e.me().then(n=>({user_id:n.id,session_id:t})).catch(()=>({user_id:null,session_id:t}))}Tt.sessionContext=await yf}return Tt.sessionContext}function xT(){if(typeof window>"u"||!window.location)return;const t=new URLSearchParams(window.location.search).get(Gv);if(t==null||!t.length)return;const n=new URLSearchParams(window.location.search);n.delete(Gv);const i=window.location.pathname+(n.toString()?"?"+n.toString():"");return window.history.replaceState({},"",i),{enabled:t==="true"}}function v0(){if(typeof window>"u")return ff();try{const e=localStorage.getItem(Zv);if(!e){const t=ff();return localStorage.setItem(Zv,t),t}return e}catch{return ff()}}class vT extends Error{constructor(t,n,i,l,d){super(t),this.name="Base44Error",this.status=n,this.code=i,this.data=l,this.originalError=d}toJSON(){return{name:this.name,message:this.message,status:this.status,code:this.code,data:this.data}}}function ud({baseURL:e,headers:t={},token:n,interceptResponses:i=!0,onError:l}){const d=sn.create({baseURL:e,headers:{"Content-Type":"application/json",Accept:"application/json",...t}});return n&&(d.defaults.headers.common.Authorization=`Bearer ${n}`),d.interceptors.request.use(h=>{typeof window<"u"&&window.location&&(h.headers.set("X-Origin-URL",window.location.href),h.headers.get("Authorization")||h.headers.set("X-Base44-Anonymous-Id",v0()));const m=sT();if(h.requestId=m,qv)try{window.parent.postMessage({type:"api-request-start",requestId:m,data:{url:e+h.url,method:h.method,body:h.data instanceof FormData?"[FormData object]":h.data}},"*")}catch{}return h}),i&&d.interceptors.response.use(h=>{var m;const g=(m=h.config)===null||m===void 0?void 0:m.requestId;try{qv&&g&&window.parent.postMessage({type:"api-request-end",requestId:g,data:{statusCode:h.status,response:h.data}},"*")}catch{}return h.data},h=>{var m,g,y,x,w,j,P,C;const k=((g=(m=h.response)===null||m===void 0?void 0:m.data)===null||g===void 0?void 0:g.message)||((x=(y=h.response)===null||y===void 0?void 0:y.data)===null||x===void 0?void 0:x.detail)||h.message,A=new vT(k,(w=h.response)===null||w===void 0?void 0:w.status,(P=(j=h.response)===null||j===void 0?void 0:j.data)===null||P===void 0?void 0:P.code,(C=h.response)===null||C===void 0?void 0:C.data,h);return l==null||l(A),Promise.reject(A)}),d}function Xv(e){const{axios:t,appId:n,getSocket:i}=e;return new Proxy({},{get(l,d){if(!(typeof d!="string"||d==="then"||d.startsWith("_")))return wT(t,n,d,i)}})}function bT(e){var t;try{const n=JSON.parse(e);return{type:n.type,data:n.data,id:n.id||((t=n.data)===null||t===void 0?void 0:t.id),timestamp:n.timestamp||new Date().toISOString()}}catch(n){return console.warn("[Base44 SDK] Failed to parse realtime message:",n),null}}function wT(e,t,n,i){const l=`/apps/${t}/entities/${n}`;return{async list(d,h,m,g){const y={};return d&&(y.sort=d),h&&(y.limit=h),m&&(y.skip=m),g&&(y.fields=Array.isArray(g)?g.join(","):g),e.get(l,{params:y})},async filter(d,h,m,g,y){const x={q:JSON.stringify(d)};return h&&(x.sort=h),m&&(x.limit=m),g&&(x.skip=g),y&&(x.fields=Array.isArray(y)?y.join(","):y),e.get(l,{params:x})},async get(d){return e.get(`${l}/${d}
590`)},async create(d){return e.post(l,d)},async update(d,h){return e.put(`${l}/${d}`,h)},async delete(d){return e.delete(`${l}/${d}`)},async deleteMany(d){return e.delete(l,{data:d})},async bulkCreate(d){return e.post(`${l}/bulk`,d)},async updateMany(d,h){return e.patch(`${l}/update-many`,{query:d,data:h})},async bulkUpdate(d){return e.put(`${l}/bulk`,d)},async importEntities(d){const h=new FormData;return h.append("file",d,d.name),e.post(`${l}/import`,h,{headers:{"Content-Type":"multipart/form-data"}})},subscribe(d){const h=`entities:${t}:${n}`;return i().subscribeToRoom(h,{update_model:y=>{var x;const w=bT(y.data);if(w){w.type!=="delete"&&(!((x=w.data)===null||x===void 0)&&x._oversize)&&console.error(`[Base44 SDK] Realtime broadcast for ${n}#${w.id} was oversize and got slimmed for transport. Fields >10 KB are empty and the rest of the record may be a stub. Call \`entities.${n}.get("${w.id}")\` to fetch the full record.`);try{d(w)}catch(j){console.error("[Base44 SDK] Subscription callback error:",j)}}}})}}}function _T(e,t){return{async call(n,i,l){if(!(n!=null&&n.trim()))throw new Error("Integration slug is required and cannot be empty");if(!(i!=null&&i.trim()))throw new Error("Operation ID is required and cannot be empty");const{pathParams:d,queryParams:h,...m}=l??{},g={...m,...d&&{path_params:d},...h&&{query_params:h}};return await e.post(`/apps/${t}/integrations/custom/${n}/${i}`,g)}}}function eb(e,t){const n=_T(e,t);return new Proxy({},{get(i,l){if(!(typeof l!="string"||l==="then"||l.startsWith("_")))return l==="custom"?n:new Proxy({},{get(d,h){if(!(typeof h!="string"||h==="then"||h.startsWith("_")))return async m=>{if(typeof m=="string")throw new Error(`Integration ${h} must receive an object with named parameters, received: ${m}`);let g,y;return m instanceof FormData||m&&Object.values(m).some(x=>x instanceof File)?(g=new FormData,Object.keys(m).forEach(x=>{m[x]instanceof File?g.append(x,m[x],m[x].name):typeof m[x]=="object"&&m[x]!==null?g.append(x,JSON.stringify(m[x])):g.append(x,m[x])}),y="multipart/form-data"):(g=m,y="application/json"),l==="Core"?e.post(`/apps/${t}/integration-endpoints/Core/${h}`,g||m,{headers:{"Content-Type":y}}):e.post(`/apps/${t}/integration-endpoints/installable/${l}/integration-endpoints/${h}`,g||m,{headers:{"Content-Type":y}})}}})}})}function ST(){return typeof window>"u"?!1:window!==window.parent}function NT(e,t,n){const d=Math.round(window.screenX+(window.outerWidth-500)/2),h=Math.round(window.screenY+(window.outerHeight-600)/2),m=window.open(e,"base44_auth",`width=500,height=600,left=${d},top=${h},resizable=yes,scrollbars=yes`);if(!m)return;const g=()=>{window.removeEventListener("message",y),clearInterval(x),m.closed||m.close()},y=w=>{var j;if(w.origin!==n||w.source!==m||!(!((j=w.data)===null||j===void 0)&&j.access_token))return;g();const P=new URL(t),{access_token:C,is_new_user:k}=w.data;P.searchParams.set("access_token",C),k!=null&&P.searchParams.set("is_new_user",String(k)),window.location.href=P.toString()},x=setInterval(()=>{m.closed&&g()},500);window.addEventListener("message",y)}function jT(e,t,n,i){return{async me(){return e.get(`/apps/${n}/entities/User/me`)},async updateMe(l){return e.put(`/apps/${n}/entities/User/me`,l)},redirectToLogin(l){if(typeof window>"u")throw new Error("Login method can only be used in a browser environment");const d=l?new URL(l,window.location.origin).toString():window.location.href,h=`${i.appBaseUrl}/login?from_url=${encodeURIComponent(d)}`;window.location.href=h},loginWithProvider(l,d="/"){const h=new URL(d,window.location.origin).toString(),m=`app_id=${n}&from_url=${encodeURIComponent(h)}`;let g;l==="sso"?g=`/apps/${n}/auth/sso/login`:g=`/apps/auth${l==="google"?"":`/${l}`}/login`;const y=`${i.appBaseUrl}/api${g}?${m}`;if(ST()){const x=`${y}&popup_origin=${encodeURIComponent(window.location.origin)}`;return NT(x,h,window.location.origin)}window.location.href=y},logout(l){if(delete e.defaults.headers.common.Authorization,typeof window<"u"){if(window.localStorage)try{window.localStorage.removeItem("base44_access_token"),window.localStorage.removeItem("token")}catch(m){console.error("Failed to remove token from localStorage:",m)}const d=l||window.location.href,h=`${i.appBaseUrl}/api/apps/auth/logout?from_url=${encodeURIComponent(d)}`;window.location.href=h}},setToken(l,d=!0){if(l&&(e.defaults.headers.common.Authorization=`Bearer ${l}`,t.defaults.headers.common.Authorization=`Bearer ${l}
590`,d&&typeof window<"u"&&window.localStorage))try{window.localStorage.setItem("base44_access_token",l),window.localStorage.setItem("token",l)}catch(h){console.error("Failed to save token to localStorage:",h)}},async loginViaEmailPassword(l,d,h){var m;try{const g=await e.post(`/apps/${n}/auth/login`,{email:l,password:d,...h&&{turnstile_token:h}}),{access_token:y,user:x}=g;return y&&this.setToken(y),{access_token:y,user:x}}catch(g){throw((m=g.response)===null||m===void 0?void 0:m.status)===401&&await this.logout(),g}},async isAuthenticated(){try{return await this.me(),!0}catch{return!1}},inviteUser(l,d){return e.post(`/apps/${n}/users/invite-user`,{user_email:l,role:d})},register(l){return e.post(`/apps/${n}/auth/register`,l)},verifyOtp({email:l,otpCode:d}){return e.post(`/apps/${n}/auth/verify-otp`,{email:l,otp_code:d})},resendOtp(l){return e.post(`/apps/${n}/auth/resend-otp`,{email:l})},resetPasswordRequest(l){return e.post(`/apps/${n}/auth/reset-password-request`,{email:l})},resetPassword({resetToken:l,newPassword:d}){return e.post(`/apps/${n}/auth/reset-password`,{reset_token:l,new_password:d})},changePassword({userId:l,currentPassword:d,newPassword:h}){return e.post(`/apps/${n}/auth/change-password`,{user_id:l,current_password:d,new_password:h})}}}function kT(e,t){return{async getAccessToken(n){const i=`/apps/${t}/auth/sso/accesstoken/${n}`;return e.get(i)},async getIdToken(n){const i=`/apps/${t}/auth/sso/idtoken/${n}`;return e.get(i)}}}function CT(e,t){return{async getAccessToken(n){if(!n||typeof n!="string")throw new Error("Integration type is required and must be a string");return(await e.get(`/apps/${t}/external-auth/tokens/${n}`)).access_token},async getConnection(n){var i;if(!n||typeof n!="string")throw new Error("Integration type is required and must be a string");const d=await e.get(`/apps/${t}/external-auth/tokens/${n}`);return{accessToken:d.access_token,connectionConfig:(i=d.connection_config)!==null&&i!==void 0?i:null}},async getWorkspaceConnection(n){var i;if(!n||typeof n!="string")throw new Error("Connector ID is required and must be a string");const d=await e.get(`/apps/${t}/external-auth/tokens/connectors/${n}`);return{accessToken:d.access_token,connectionConfig:(i=d.connection_config)!==null&&i!==void 0?i:null}},async getCurrentAppUserAccessToken(n){if(!n||typeof n!="string")throw new Error("Connector ID is required and must be a string");return(await e.get(`/apps/${t}/app-user-auth/connectors/${n}/token`)).access_token},async getCurrentAppUserConnection(n){var i;if(!n||typeof n!="string")throw new Error("Connector ID is required and must be a string");const d=await e.get(`/apps/${t}/app-user-auth/connectors/${n}/token`);return{accessToken:d.access_token,connectionConfig:(i=d.connection_config)!==null&&i!==void 0?i:null}}}}function PT(e,t){return{async connectAppUser(n){if(!n||typeof n!="string")throw new Error("Connector ID is required and must be a string");return(await e.post(`/apps/${t}/app-user-auth/connectors/${n}/initiate`)).redirect_url},async disconnectAppUser(n){if(!n||typeof n!="string")throw new Error("Connector ID is required and must be a string");await e.delete(`/apps/${t}/app-user-auth/connectors/${n}`)}}}function Ia(e={}){const{storageKey:t="base44_access_token",paramName:n="access_token",saveToStorage:i=!0,removeFromUrl:l=!0}=e;let d=null;if(typeof window<"u"&&window.location)try{const h=new URLSearchParams(window.location.search);if(d=h.get(n),d){if(i&&TT(d,{storageKey:t}),l){h.delete(n);const m=`${window.location.pathname}${h.toString()?`?${h.toString()}`:""}${window.location.hash}`;window.history.replaceState({},document.title,m)}return d}}catch(h){console.error("Error retrieving token from URL:",h)}if(typeof window<"u"&&window.localStorage)try{return d=window.localStorage.getItem(t),d}catch(h){console.error("Error retrieving token from local storage:",h)}return null}function TT(e,t){const{storageKey:n="base44_access_token"}=t;if(typeof window>"u"||!window.localStorage||!e)return!1;try{return window.localStorage.setItem(n,e),window.localStorage.setItem("token",e),!0}catch(i){return console.error("Error saving token to local storage:",i),!1}}function tb(e,t,n){const i=(d,h)=>d?`${String(d).replace(/\/$/,"")}${h}`:h,l=d=>{const h=new Headers;if(n!=null&&n.getAuthHeaders){const m=n.getAuthHeaders();Object.entries(m).forEach(([g,y])=>{y!=null&&h.set(g,String(y))})}
590return d&&new Headers(d).forEach((m,g)=>{h.set(g,m)}),h};return{async invoke(d,h){if(typeof h=="string")throw new Error(`Function ${d} must receive an object with named parameters, received: ${h}`);let m,g;return h instanceof FormData||h&&Object.values(h).some(y=>y instanceof File)?(m=new FormData,Object.keys(h).forEach(y=>{h[y]instanceof File?m.append(y,h[y],h[y].name):typeof h[y]=="object"&&h[y]!==null?m.append(y,JSON.stringify(h[y])):m.append(y,h[y])}),g="multipart/form-data"):(m=h,g="application/json"),e.post(`/apps/${t}/functions/${d}`,m||h,{headers:{"Content-Type":g}})},async fetch(d,h={}){const g=`/functions${d.startsWith("/")?d:`/${d}`}`,y=l(h.headers),x={...h,headers:y};return await fetch(i(n==null?void 0:n.baseURL,g),x)}}}function nb({axios:e,getSocket:t,appId:n,serverUrl:i,token:l}){const d=`/apps/${n}/agents`,h={},m=()=>e.get(`${d}/conversations`),g=k=>e.get(`${d}/conversations/${k}`);return{getConversations:m,getConversation:g,listConversations:k=>e.get(`${d}/conversations`,{params:k}),createConversation:k=>e.post(`${d}/conversations`,k),addMessage:async(k,A)=>e.post(`${d}/conversations/v2/${k.id}/messages`,A),subscribeToConversation:(k,A)=>{const E=`/agent-conversations/${k}`,$=t(),I=g(k).then(M=>(h[k]=M,M));return $.subscribeToRoom(E,{connect:()=>{},update_model:async({data:M})=>{const F=JSON.parse(M);if(F._message){await I;const z=F._message,V=h[k];if(V){const W=V.messages||[],ne=W.findIndex(be=>be.id===z.id),de=ne!==-1?W.map((be,Re)=>Re===ne?z:be):[...W,z];h[k]={...V,messages:de},A==null||A(h[k])}}}})},getWhatsAppConnectURL:k=>{const A=`${i}/api/apps/${n}/agents/${encodeURIComponent(k)}/whatsapp`,E=l??Ia();return E?`${A}?token=${E}`:A},getTelegramConnectURL:k=>{const A=`${i}/api/apps/${n}/agents/${encodeURIComponent(k)}/telegram`,E=l??Ia();return E?`${A}?token=${E}`:A}}}function rb({serverUrl:e,token:t,appId:n}){return{connection:()=>{var l;return{baseURL:`${e}/api/apps/${n}/ai/openai/v1`,token:(l=t??Ia())!==null&&l!==void 0?l:""}}}}function sb(e,t){const n=`/app-logs/${t}`;return{async logUserInApp(i){await e.post(`${n}/log-user-in-app/${i}`)},async fetchLogs(i={}){return await e.get(n,{params:i})},async getStats(i={}){return await e.get(`${n}/stats`,{params:i})}}}function ET(e,t){return{async inviteUser(n,i){if(i!=="user"&&i!=="admin")throw new Error(`Invalid role: "${i}". Role must be either "user" or "admin".`);return await e.post(`/apps/${t}/runtime/users/invite-user`,{user_email:n,role:i})}}}const Js=Object.create(null);Js.open="0";Js.close="1";Js.ping="2";Js.pong="3";Js.message="4";Js.upgrade="5";Js.noop="6";const Dh=Object.create(null);Object.keys(Js).forEach(e=>{Dh[Js[e]]=e});const bg={type:"error",data:"parser error"},q_=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",J_=typeof ArrayBuffer=="function",G_=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,b0=({type:e,data:t},n,i)=>q_&&t instanceof Blob?n?i(t):ib(t,i):J_&&(t instanceof ArrayBuffer||G_(t))?n?i(t):ib(new Blob([t]),i):i(Js[e]+(t||"")),ib=(e,t)=>{const n=new FileReader;return n.onload=function(){const i=n.result.split(",")[1];t("b"+(i||""))},n.readAsDataURL(e)};function ob(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let xf;function AT(e,t){if(q_&&e.data instanceof Blob)return e.data.arrayBuffer().then(ob).then(t);if(J_&&(e.data instanceof ArrayBuffer||G_(e.data)))return t(ob(e.data));b0(e,!1,n=>{xf||(xf=new TextEncoder),t(xf.encode(n))})}const ab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",hd=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e<ab.length;e++)hd[ab.charCodeAt(e)]=e;const RT=e=>{let t=e.length*.75,n=e.length,i,l=0,d,h,m,g;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const y=new ArrayBuffer(t),x=new Uint8Array(y);for(i=0;i<n;i+=4)d=hd[e.charCodeAt(i)],h=hd[e.charCodeAt(i+1)],m=hd[e.charCodeAt(i+2)],g=hd[e.charCodeAt(i+3)],x[l++]=d<<2|h>>4,x[l++]=(h&15)<<4|m>>2,x[l++]=(m&3)<<6|g&63;return y},LT=typeof ArrayBuffer=="function",w0=(e,t)=>{if(typeof e!="string")return{type:"message",data:Z_(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:MT(e.substring(1),t)}:Dh[n]?e.length>1?{type:Dh[n],data:e.substring(1)}:{type:Dh[n]}:bg},MT=(e,t)=>{if(LT){const n=RT(e);return Z_(n,t)}else return{base64:!0,data:e}},Z_=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},K_="�",IT=(e,t)=>{const n=e.length,i=new Array(n);let l=0;e.forEach((d,h)=>{b0(d,!1,m=>{i[h]=m,++l===n&&t(i.join(K_))})})},$T=(e,t)=>
vendor: 3,901 bytes, line 590
590{const n=e.split(K_),i=[];for(let l=0;l<n.length;l++){const d=w0(n[l],t);if(i.push(d),d.type==="error")break}return i};function DT(){return new TransformStream({transform(e,t){AT(e,n=>{const i=n.length;let l;if(i<126)l=new Uint8Array(1),new DataView(l.buffer).setUint8(0,i);else if(i<65536){l=new Uint8Array(3);const d=new DataView(l.buffer);d.setUint8(0,126),d.setUint16(1,i)}else{l=new Uint8Array(9);const d=new DataView(l.buffer);d.setUint8(0,127),d.setBigUint64(1,BigInt(i))}e.data&&typeof e.data!="string"&&(l[0]|=128),t.enqueue(l),t.enqueue(n)})}})}let vf;function gh(e){return e.reduce((t,n)=>t+n.length,0)}function yh(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let i=0;for(let l=0;l<t;l++)n[l]=e[0][i++],i===e[0].length&&(e.shift(),i=0);return e.length&&i<e[0].length&&(e[0]=e[0].slice(i)),n}function OT(e,t){vf||(vf=new TextDecoder);const n=[];let i=0,l=-1,d=!1;return new TransformStream({transform(h,m){for(n.push(h);;){if(i===0){if(gh(n)<1)break;const g=yh(n,1);d=(g[0]&128)===128,l=g[0]&127,l<126?i=3:l===126?i=1:i=2}else if(i===1){if(gh(n)<2)break;const g=yh(n,2);l=new DataView(g.buffer,g.byteOffset,g.length).getUint16(0),i=3}else if(i===2){if(gh(n)<8)break;const g=yh(n,8),y=new DataView(g.buffer,g.byteOffset,g.length),x=y.getUint32(0);if(x>Math.pow(2,21)-1){m.enqueue(bg);break}l=x*Math.pow(2,32)+y.getUint32(4),i=3}else{if(gh(n)<l)break;const g=yh(n,l);m.enqueue(w0(d?g:vf.decode(g),t)),i=0}if(l===0||l>e){m.enqueue(bg);break}}}})}const Y_=4;function cn(e){if(e)return FT(e)}function FT(e){for(var t in cn.prototype)e[t]=cn.prototype[t];return e}cn.prototype.on=cn.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};cn.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};cn.prototype.off=cn.prototype.removeListener=cn.prototype.removeAllListeners=cn.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var i,l=0;l<n.length;l++)if(i=n[l],i===t||i.fn===t){n.splice(l,1);break}return n.length===0&&delete this._callbacks["$"+e],this};cn.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),n=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(n){n=n.slice(0);for(var i=0,l=n.length;i<l;++i)n[i].apply(this,t)}return this};cn.prototype.emitReserved=cn.prototype.emit;cn.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]};cn.prototype.hasListeners=function(e){return!!this.listeners(e).length};const _m=typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,n)=>n(t,0),ts=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),BT="arraybuffer";function Q_(e,...t){return t.reduce((n,i)=>(e.hasOwnProperty(i)&&(n[i]=e[i]),n),{})}const zT=ts.setTimeout,WT=ts.clearTimeout;function Sm(e,t){t.useNativeTimers?(e.setTimeoutFn=zT.bind(ts),e.clearTimeoutFn=WT.bind(ts)):(e.setTimeoutFn=ts.setTimeout.bind(ts),e.clearTimeoutFn=ts.clearTimeout.bind(ts))}const UT=1.33;function HT(e){return typeof e=="string"?VT(e):Math.ceil((e.byteLength||e.size)*UT)}function VT(e){let t=0,n=0;for(let i=0,l=e.length;i<l;i++)t=e.charCodeAt(i),t<128?n+=1:t<2048?n+=2:t<55296||t>=57344?n+=3:(i++,n+=4);return n}function X_(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function qT(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function JT(e){let t={},n=e.split("&");for(let i=0,l=n.length;i<l;i++){let d=n[i].split("=");
vendor: 6,261 bytes, line 590
590t[decodeURIComponent(d[0])]=decodeURIComponent(d[1])}return t}class GT extends Error{constructor(t,n,i){super(t),this.description=n,this.context=i,this.type="TransportError"}}class _0 extends cn{constructor(t){super(),this.writable=!1,Sm(this,t),this.opts=t,this.query=t.query,this.socket=t.socket,this.supportsBinary=!t.forceBase64}onError(t,n,i){return super.emitReserved("error",new GT(t,n,i)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(t){this.readyState==="open"&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const n=w0(t,this.socket.binaryType);this.onPacket(n)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}pause(t){}createUri(t,n={}){return t+"://"+this._hostname()+this._port()+this.opts.path+this._query(n)}_hostname(){const t=this.opts.hostname;return t.indexOf(":")===-1?t:"["+t+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(t){const n=qT(t);return n.length?"?"+n:""}}class ZT extends _0{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(t){this.readyState="pausing";const n=()=>{this.readyState="paused",t()};if(this._polling||!this.writable){let i=0;this._polling&&(i++,this.once("pollComplete",function(){--i||n()})),this.writable||(i++,this.once("drain",function(){--i||n()}))}else n()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const n=i=>{if(this.readyState==="opening"&&i.type==="open"&&this.onOpen(),i.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(i)};$T(t,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,IT(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=X_()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(t,n)}}let e2=!1;try{e2=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const KT=e2;function YT(){}class QT extends ZT{constructor(t){if(super(t),typeof location<"u"){const n=location.protocol==="https:";let i=location.port;i||(i=n?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||i!==t.port}}doWrite(t,n){const i=this.request({method:"POST",data:t});i.on("success",n),i.on("error",(l,d)=>{this.onError("xhr post error",l,d)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(n,i)=>{this.onError("xhr poll error",n,i)}),this.pollXhr=t}}class Us extends cn{constructor(t,n,i){super(),this.createRequest=t,Sm(this,i),this._opts=i,this._method=i.method||"GET",this._uri=n,this._data=i.data!==void 0?i.data:null,this._create()}_create(){var t;const n=Q_(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this._opts.xd;const i=this._xhr=this.createRequest(n);try{i.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){i.setDisableHeaderCheck&&i.setDisableHeaderCheck(!0);for(let l in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(l)&&i.setRequestHeader(l,this._opts.extraHeaders[l])}}catch{}if(this._method==="POST")try{i.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{i.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(i),"withCredentials"in i&&(i.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(i.timeout=this._opts.requestTimeout),i.onreadystatechange=()=>{var l;i.readyState===3&&((l=this._opts.cookieJar)===null||l===void 0||l.parseCookies(i.getResponseHeader("set-cookie"))),i.readyState===4&&(i.status===200||i.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof i.status=="number"?i.status:0)},0))},i.send(this._data)}catch(l){this.setTimeoutFn(()=>{this._onError(l)},0);return}typeof document<"u"&&(this._index=Us.requestsCount++,Us.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=YT,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Us.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}Us.requestsCount=0;Us.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",lb);else if(typeof addEventListener=="function"){const e="onpagehide"in ts?"pagehide":"unload";addEventListener(e,lb,!1)}}function lb(){for(let e in Us.requests)Us.requests.hasOwnProperty(e)&&Us.requests[e].abort()}const XT=(function(){const e=t2({xdomain:!1});return e&&e.responseType!==null})();class eE extends QT{constructor(t){super(t);const n=t&&t.forceBase64;this.supportsBinary=XT&&!n}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new Us(t2,this.uri(),t)}}function t2(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||KT))return new XMLHttpRequest}catch{}if(!t)try{return new ts[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const n2=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class tE extends _0{get name(){return"websocket"}doOpen(){const t=this.uri(),n=this.opts.protocols,i=n2?{}:Q_(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(i.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,n,i)}catch(l){return this.emitReserved("error",l)}
vendor: 15,989 bytes, line 590
590this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let n=0;n<t.length;n++){const i=t[n],l=n===t.length-1;b0(i,this.supportsBinary,d=>{try{this.doWrite(i,d)}catch{}l&&_m(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=X_()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}}const bf=ts.WebSocket||ts.MozWebSocket;class nE extends tE{createSocket(t,n,i){return n2?new bf(t,n,i):n?new bf(t,n):new bf(t)}doWrite(t,n){this.ws.send(n)}}class rE extends _0{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{const n=OT(Number.MAX_SAFE_INTEGER,this.socket.binaryType),i=t.readable.pipeThrough(n).getReader(),l=DT();l.readable.pipeTo(t.writable),this._writer=l.writable.getWriter();const d=()=>{i.read().then(({done:m,value:g})=>{m||(this.onPacket(g),d())}).catch(m=>{})};d();const h={type:"open"};this.query.sid&&(h.data=`{"sid":"${this.query.sid}"}`),this._writer.write(h).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let n=0;n<t.length;n++){const i=t[n],l=n===t.length-1;this._writer.write(i).then(()=>{l&&_m(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}}const sE={websocket:nE,webtransport:rE,polling:eE},iE=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,oE=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function wg(e){if(e.length>8e3)throw"URI too long";const t=e,n=e.indexOf("["),i=e.indexOf("]");n!=-1&&i!=-1&&(e=e.substring(0,n)+e.substring(n,i).replace(/:/g,";")+e.substring(i,e.length));let l=iE.exec(e||""),d={},h=14;for(;h--;)d[oE[h]]=l[h]||"";return n!=-1&&i!=-1&&(d.source=t,d.host=d.host.substring(1,d.host.length-1).replace(/;/g,":"),d.authority=d.authority.replace("[","").replace("]","").replace(/;/g,":"),d.ipv6uri=!0),d.pathNames=aE(d,d.path),d.queryKey=lE(d,d.query),d}function aE(e,t){const n=/\/{2,9}/g,i=t.replace(n,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&i.splice(0,1),t.slice(-1)=="/"&&i.splice(i.length-1,1),i}function lE(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(i,l,d){l&&(n[l]=d)}),n}const _g=typeof addEventListener=="function"&&typeof removeEventListener=="function",Oh=[];_g&&addEventListener("offline",()=>{Oh.forEach(e=>e())},!1);class Ro extends cn{constructor(t,n){if(super(),this.binaryType=BT,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(n=t,t=null),t){const i=wg(t);n.hostname=i.host,n.secure=i.protocol==="https"||i.protocol==="wss",n.port=i.port,i.query&&(n.query=i.query)}else n.host&&(n.hostname=wg(n.host).host);Sm(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},n.transports.forEach(i=>{const l=i.prototype.name;this.transports.push(l),this._transportsByName[l]=i}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=JT(this.opts.query)),_g&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Oh.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const n=Object.assign({},this.opts.query);n.EIO=Y_,n.transport=t,this.id&&(n.sid=this.id);const i=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](i)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const t=this.opts.rememberUpgrade&&Ro.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const n=this.createTransport(t);n.open(),this.setTransport(n)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",n=>this._onClose("transport close",n))}onOpen(){this.readyState="open",Ro.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const n=new Error("server error");n.code=t.data,this._onError(n);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let i=0;i<this.writeBuffer.length;i++){const l=this.writeBuffer[i].data;if(l&&(n+=HT(l)),i>0&&n>this._maxPayload)return this.writeBuffer.slice(0,i);n+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,_m(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,n,i){return this._sendPacket("message",t,n,i),this}send(t,n,i){return this._sendPacket("message",t,n,i),this}_sendPacket(t,n,i,l){if(typeof n=="function"&&(l=n,n=void 0),typeof i=="function"&&(l=i,i=null),this.readyState==="closing"||this.readyState==="closed")return;i=i||{},i.compress=i.compress!==!1;const d={type:t,data:n,options:i};this.emitReserved("packetCreate",d),this.writeBuffer.push(d),l&&this.once("flush",l),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),t()},i=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?i():t()}):this.upgrading?i():t()),this}_onError(t){if(Ro.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,n){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),_g&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const i=Oh.indexOf(this._offlineEventListener);i!==-1&&Oh.splice(i,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this._prevBufferLen=0}}}Ro.protocol=Y_;class cE extends Ro{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t<this._upgrades.length;t++)this._probe(this._upgrades[t])}_probe(t){let n=this.createTransport(t),i=!1;Ro.priorWebsocketSuccess=!1;const l=()=>{i||(n.send([{type:"ping",data:"probe"}]),n.once("packet",w=>{if(!i)if(w.type==="pong"&&w.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;Ro.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{i||this.readyState!=="closed"&&(x(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const j=new Error("probe error");j.transport=n.name,this.emitReserved("upgradeError",j)}}))};function d(){i||(i=!0,x(),n.close(),n=null)}const h=w=>{const j=new Error("probe error: "+w);j.transport=n.name,d(),this.emitReserved("upgradeError",j)};function m(){h("transport closed")}function g(){h("socket closed")}function y(w){n&&w.name!==n.name&&d()}const x=()=>{n.removeListener("open",l),n.removeListener("error",h),n.removeListener("close",m),this.off("close",g),this.off("upgrading",y)};n.once("open",l),n.once("error",h),n.once("close",m),this.once("close",g),this.once("upgrading",y),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{i||n.open()},200):n.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const n=[];for(let i=0;i<t.length;i++)~this.transports.indexOf(t[i])&&n.push(t[i]);return n}}let dE=class extends cE{constructor(t,n={}){const i=typeof t=="object"?t:n;(!i.transports||i.transports&&typeof i.transports[0]=="string")&&(i.transports=(i.transports||["polling","websocket","webtransport"]).map(l=>sE[l]).filter(l=>!!l)),super(t,i)}};function uE(e,t="",n){let i=e;n=n||typeof location<"u"&&location,e==null&&(e=n.protocol+"//"+n.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=n.protocol+e:e=n.host+e),/^(https?|wss?):\/\//.test(e)||(typeof n<"u"?e=n.protocol+"//"+e:e="https://"+e),i=wg(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const d=i.host.indexOf(":")!==-1?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+d+":"+i.port+t,i.href=i.protocol+"://"+d+(n&&n.port===i.port?"":":"+i.port),i}const hE=typeof ArrayBuffer=="function",mE=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,r2=Object.prototype.toString,pE=typeof Blob=="function"||typeof Blob<"u"&&r2.call(Blob)==="[object BlobConstructor]",fE=typeof File=="function"||typeof File<"u"&&r2.call(File)==="[object FileConstructor]";function S0(e){return hE&&(e instanceof ArrayBuffer||mE(e))||pE&&e instanceof Blob||fE&&e instanceof File}function Fh(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,i=e.length;n<i;n++)if(Fh(e[n]))return!0;return!1}if(S0(e))return!0;if(e.toJSON&&typeof e.toJSON=="function"&&arguments.length===1)return Fh(e.toJSON(),!0);for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&Fh(e[n]))return!0;return!1}function gE(e){const t=[],n=e.data,i=e;return i.data=Sg(n,t),i.attachments=t.length,{packet:i,buffers:t}}function Sg(e,t){if(!e)return e;if(S0(e)){const n={_placeholder:!0,num:t.length};return t.push(e),n}else if(Array.isArray(e)){const n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=Sg(e[i],t);return n}else if(typeof e=="object"&&!(e instanceof Date)){const n={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(n[i]=Sg(e[i],t));return n}return e}function yE(e,t){return e.data=Ng(e.data,t),delete e.attachments,e}function Ng(e,t){if(!e)return e;if(e&&e._placeholder===!0){if(typeof e.num=="number"&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}else if(Array.isArray(e))for(let n=0;n<e.length;n++)e[n]=Ng(e[n],t);else if(typeof e=="object")for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(e[n]=Ng(e[n],t));return e}const xE=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var vt;(function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"})(vt||(vt={}));class vE{constructor(t){this.replacer=t}encode(t){return(t.type===vt.EVENT||t.type===vt.ACK)&&Fh(t)?this.encodeAsBinary({type:t.type===vt.EVENT?vt.BINARY_EVENT:vt.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id}):[this.encodeAsString(t)]}encodeAsString(t){let n=""+t.type;return(t.type===vt.BINARY_EVENT||t.type===vt.BINARY_ACK)&&(n+=t.attachments+"-"),t.nsp&&t.nsp!=="/"&&(n+=t.nsp+","),t.id!=null&&(n+=t.id),t.data!=null&&(n+=JSON.stringify(t.data,this.replacer)),n}encodeAsBinary(t){const n=gE(t),i=this.encodeAsString(n.packet),l=n.buffers;return l.unshift(i),l}}class N0 extends cn{constructor(t){super(),this.reviver=t}add(t){let n;if(typeof t=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");n=this.decodeString(t);const i=n.type===vt.BINARY_EVENT;i||n.type===vt.BINARY_ACK?(n.type=i?vt.EVENT:vt.ACK,this.reconstructor=new bE(n),n.attachments===0&&super.emitReserved("decoded",n)):super.emitReserved("decoded",n)}else if(S0(t)||t.base64)if(this.reconstructor)n=this.reconstructor.takeBinaryData(t),n&&(this.reconstructor=null,super.emitReserved("decoded",n));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+t)}decodeString(t){let n=0;const i={type:Number(t.charAt(0))};if(vt[i.type]===void 0)throw new Error("unknown packet type "+i.type);if(i.type===vt.BINARY_EVENT||i.type===vt.BINARY_ACK){const d=n+1;for(;t.charAt(++n)!=="-"&&n!=t.length;);const h=t.substring(d,n);if(h!=Number(h)||t.charAt(n)!=="-")throw new Error("Illegal attachments");i.attachments=Number(h)}if(t.charAt(n+1)==="/"){const d=n+1;for(;++n&&!(t.charAt(n)===","||n===t.length););i.nsp=t.substring(d,n)}else i.nsp="/";const l=t.charAt(n+1);if(l!==""&&Number(l)==l){const d=n+1;for(;++n;){const h=t.charAt(n);if(h==null||Number(h)!=h){--n;break}if(n===t.length)break}i.id=Number(t.substring(d,n+1))}
vendor: 4,501 bytes, line 590
590if(t.charAt(++n)){const d=this.tryParse(t.substr(n));if(N0.isPayloadValid(i.type,d))i.data=d;else throw new Error("invalid payload")}return i}tryParse(t){try{return JSON.parse(t,this.reviver)}catch{return!1}}static isPayloadValid(t,n){switch(t){case vt.CONNECT:return cb(n);case vt.DISCONNECT:return n===void 0;case vt.CONNECT_ERROR:return typeof n=="string"||cb(n);case vt.EVENT:case vt.BINARY_EVENT:return Array.isArray(n)&&(typeof n[0]=="number"||typeof n[0]=="string"&&xE.indexOf(n[0])===-1);case vt.ACK:case vt.BINARY_ACK:return Array.isArray(n)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class bE{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const n=yE(this.reconPack,this.buffers);return this.finishedReconstruction(),n}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}function cb(e){return Object.prototype.toString.call(e)==="[object Object]"}const wE=Object.freeze(Object.defineProperty({__proto__:null,Decoder:N0,Encoder:vE,get PacketType(){return vt}},Symbol.toStringTag,{value:"Module"}));function ws(e,t,n){return e.on(t,n),function(){e.off(t,n)}}const _E=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class s2 extends cn{constructor(t,n,i){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=n,i&&i.auth&&(this.auth=i.auth),this._opts=Object.assign({},i),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[ws(t,"open",this.onopen.bind(this)),ws(t,"packet",this.onpacket.bind(this)),ws(t,"error",this.onerror.bind(this)),ws(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...n){var i,l,d;if(_E.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');if(n.unshift(t),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(n),this;const h={type:vt.EVENT,data:n};if(h.options={},h.options.compress=this.flags.compress!==!1,typeof n[n.length-1]=="function"){const x=this.ids++,w=n.pop();this._registerAckCallback(x,w),h.id=x}const m=(l=(i=this.io.engine)===null||i===void 0?void 0:i.transport)===null||l===void 0?void 0:l.writable,g=this.connected&&!(!((d=this.io.engine)===null||d===void 0)&&d._hasPingExpired());return this.flags.volatile&&!m||(g?(this.notifyOutgoingListeners(h),this.packet(h)):this.sendBuffer.push(h)),this.flags={},this}_registerAckCallback(t,n){var i;const l=(i=this.flags.timeout)!==null&&i!==void 0?i:this._opts.ackTimeout;if(l===void 0){this.acks[t]=n;return}const d=this.io.setTimeoutFn(()=>{delete this.acks[t];for(let m=0;m<this.sendBuffer.length;m++)this.sendBuffer[m].id===t&&this.sendBuffer.splice(m,1);n.call(this,new Error("operation has timed out"))},l),h=(...m)=>{this.io.clearTimeoutFn(d),n.apply(this,m)};h.withError=!0,this.acks[t]=h}emitWithAck(t,...n){return new Promise((i,l)=>{const d=(h,m)=>h?l(h):i(m);d.withError=!0,n.push(d),this.emit(t,...n)})}_addToQueue(t){let n;typeof t[t.length-1]=="function"&&(n=t.pop());const i={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((l,...d)=>(this._queue[0],l!==null?i.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(l)):(this._queue.shift(),n&&n(null,...d)),i.pending=!1,this._drainQueue())),this._queue.push(i),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!t||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:vt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,n),this._clearAcks()}
vendor: 6,031 bytes, line 590
590_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(i=>String(i.id)===t)){const i=this.acks[t];delete this.acks[t],i.withError&&i.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case vt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case vt.EVENT:case vt.BINARY_EVENT:this.onevent(t);break;case vt.ACK:case vt.BINARY_ACK:this.onack(t);break;case vt.DISCONNECT:this.ondisconnect();break;case vt.CONNECT_ERROR:this.destroy();const i=new Error(t.data.message);i.data=t.data.data,this.emitReserved("connect_error",i);break}}onevent(t){const n=t.data||[];t.id!=null&&n.push(this.ack(t.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const i of n)i.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const n=this;let i=!1;return function(...l){i||(i=!0,n.packet({type:vt.ACK,id:t,data:l}))}}onack(t){const n=this.acks[t.id];typeof n=="function"&&(delete this.acks[t.id],n.withError&&t.data.unshift(null),n.apply(this,t.data))}onconnect(t,n){this.id=t,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:vt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const n=this._anyListeners;for(let i=0;i<n.length;i++)if(t===n[i])return n.splice(i,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(t),this}prependAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(t),this}offAnyOutgoing(t){if(!this._anyOutgoingListeners)return this;if(t){const n=this._anyOutgoingListeners;for(let i=0;i<n.length;i++)if(t===n[i])return n.splice(i,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(t){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const n=this._anyOutgoingListeners.slice();for(const i of n)i.apply(this,t.data)}}}function uc(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}uc.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=(Math.floor(t*10)&1)==0?e-n:e+n}return Math.min(e,this.max)|0};uc.prototype.reset=function(){this.attempts=0};uc.prototype.setMin=function(e){this.ms=e};uc.prototype.setMax=function(e){this.max=e};uc.prototype.setJitter=function(e){this.jitter=e};class jg extends cn{constructor(t,n){var i;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(n=t,t=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,Sm(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((i=n.randomizationFactor)!==null&&i!==void 0?i:.5),this.backoff=new uc({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=t;const l=n.parser||wE;this.encoder=new l.Encoder,this.decoder=new l.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var n;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(n=this.backoff)===null||n===void 0||n.setMin(t),this)}randomizationFactor(t){var n;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(n=this.backoff)===null||n===void 0||n.setJitter(t),this)}reconnectionDelayMax(t){var n;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(n=this.backoff)===null||n===void 0||n.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new dE(this.uri,this.opts);const n=this.engine,i=this;this._readyState="opening",this.skipReconnect=!1;const l=ws(n,"open",function(){i.onopen(),t&&t()}),d=m=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",m),t?t(m):this.maybeReconnectOnOpen()},h=ws(n,"error",d);if(this._timeout!==!1){const m=this._timeout,g=this.setTimeoutFn(()=>
590{l(),d(new Error("timeout")),n.close()},m);this.opts.autoUnref&&g.unref(),this.subs.push(()=>{this.clearTimeoutFn(g)})}return this.subs.push(l),this.subs.push(h),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(ws(t,"ping",this.onping.bind(this)),ws(t,"data",this.ondata.bind(this)),ws(t,"error",this.onerror.bind(this)),ws(t,"close",this.onclose.bind(this)),ws(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(n){this.onclose("parse error",n)}}ondecoded(t){_m(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let i=this.nsps[t];return i?this._autoConnect&&!i.active&&i.connect():(i=new s2(this,t,n),this.nsps[t]=i),i}_destroy(t){const n=Object.keys(this.nsps);for(const i of n)if(this.nsps[i].active)return;this._close()}_packet(t){const n=this.encoder.encode(t);for(let i=0;i<n.length;i++)this.engine.write(n[i],t.options)}cleanup(){this.subs.forEach(t=>t()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,n){var i;this.cleanup(),(i=this.engine)===null||i===void 0||i.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const i=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(l=>{l?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",l)):t.onreconnect()}))},n);this.opts.autoUnref&&i.unref(),this.subs.push(()=>{this.clearTimeoutFn(i)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const sd={};function Bh(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=uE(e,t.path||"/socket.io"),i=n.source,l=n.id,d=n.path,h=sd[l]&&d in sd[l].nsps,m=t.forceNew||t["force new connection"]||t.multiplex===!1||h;let g;return m?g=new jg(i,t):(sd[l]||(sd[l]=new jg(i,t)),g=sd[l]),n.query&&!t.query&&(t.query=n.queryKey),g.socket(n.path,t)}Object.assign(Bh,{Manager:jg,Socket:s2,io:Bh,connect:Bh});const SE=250;function db(e,t){var n;const i=(n=e.token)!==null&&n!==void 0?n:Ia(),l={app_id:e.appId,token:i};i||(l.anonymous_id=v0());const d=Bh(e.serverUrl,{path:e.mountPath,transports:e.transports,query:l});return d.on("connect",async()=>{var h;return console.log("connect",d.id),(h=t.connect)===null||h===void 0?void 0:h.call(t)}),d.on("update_model",async h=>{var m;return(m=t.update_model)===null||m===void 0?void 0:m.call(t,h)}),d.on("error",async h=>{var m;return(m=t.error)===null||m===void 0?void 0:m.call(t,h)}),d.on("connect_error",async h=>{var m;return console.error("connect_error",h),(m=t.error)===null||m===void 0?void 0:m.call(t,h)}),d}function NE({config:e}){let t={...e};const n={},i={},l={connect:async()=>{const E=[];Object.keys(n).forEach($=>{const I=j($);I.length!==0&&(y($),I.forEach(({connect:M})=>{const F=async()=>M==null?void 0:M();E.push(F())}))}),await Promise.all(E)},update_model:async E=>{const I=j(E.room).map(M=>{var F;return(F=M.update_model)===null||F===void 0?void 0:F.call(M,E)});await Promise.all(I)},error:async E=>{console.error("error",E);const $=Object.values(n).flat().map(I=>{var M;return(M=I.error)===null||M===void 0?void 0:M.call(I,E)});await Promise.all($)}};let d=db(e,l);function h(){m()}function m(){C(),d&&d.disconnect()}function g(E){h(),t={...t,...E},d=db(t,l)}function y(E){d.emit("join",E)}function x(E){d.emit("leave",E)}async function w(E,$){var I;const M=JSON.stringify($);return(I=l.update_model)===null||I===void 0?void 0:I.call(l,{room:E,data:M})}function j(E){var $;return($=n[E])!==null&&$!==void 0?$:[]}function P(E){const $=i[E];$&&(clearTimeout($),delete i[E])}
590function C(){Object.keys(i).forEach(E=>{var $,I;clearTimeout(i[E]),delete i[E],((I=($=n[E])===null||$===void 0?void 0:$.length)!==null&&I!==void 0?I:0)===0&&delete n[E]})}function k(E){P(E),i[E]=setTimeout(()=>{var $,I;delete i[E],!(((I=($=n[E])===null||$===void 0?void 0:$.length)!==null&&I!==void 0?I:0)>0)&&(x(E),delete n[E])},SE)}return{socket:d,subscribeToRoom:(E,$)=>{n[E]?P(E):(y(E),n[E]=[]),n[E].push($);let I=!1;return()=>{var M,F;I||(I=!0,n[E]=(F=(M=n[E])===null||M===void 0?void 0:M.filter(z=>z!==$))!==null&&F!==void 0?F:[],n[E].length===0&&k(E))}},updateConfig:g,updateModel:w,disconnect:m}}(!globalThis.EventTarget||!globalThis.Event)&&console.error(`
591  PartySocket requires a global 'EventTarget' class to be available!
592  You can polyfill this global by adding this to your code before any partysocket imports: 
593  
594  \`\`\`
595  import 'partysocket/event-target-polyfill';
596  \`\`\`
597  Please file an issue at https://github.com/partykit/partykit if you're still having trouble.
598`);var i2=class extends Event{constructor(t,n){super("error",n);St(this,"message");St(this,"error");this.message=t.message,this.error=t}},o2=class extends Event{constructor(t=1e3,n="",i){super("close",i);St(this,"code");St(this,"reason");St(this,"wasClean",!0);this.code=t,this.reason=n}},wf={Event,ErrorEvent:i2,CloseEvent:o2};function jE(e,t){if(!e)throw new Error(t)}function kE(e){return new e.constructor(e.type,e)}function CE(e){return"data"in e?new MessageEvent(e.type,e):"code"in e||"reason"in e?new o2(e.code||1999,e.reason||"unknown reason",e):"error"in e?new i2(e.error,e):new Event(e.type,e)}var d1,PE=typeof process<"u"&&typeof((d1=process.versions)==null?void 0:d1.node)<"u"&&typeof document>"u",xh=PE?CE:kE,ga={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0},ub=!1,TE=class xa extends EventTarget{constructor(n,i,l={}){super();St(this,"_ws");St(this,"_retryCount",-1);St(this,"_uptimeTimeout");St(this,"_connectTimeout");St(this,"_shouldReconnect",!0);St(this,"_connectLock",!1);St(this,"_binaryType","blob");St(this,"_closeCalled",!1);St(this,"_messageQueue",[]);St(this,"_url");St(this,"_protocols");St(this,"_options");St(this,"onclose",null);St(this,"onerror",null);St(this,"onmessage",null);St(this,"onopen",null);St(this,"_handleOpen",n=>{this._debug("open event");const{minUptime:i=ga.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),i),jE(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(l=>{var d;return(d=this._ws)==null?void 0:d.send(l)}),this._messageQueue=[],this.onopen&&this.onopen(n),this.dispatchEvent(xh(n))});St(this,"_handleMessage",n=>{this._debug("message event"),this.onmessage&&this.onmessage(n),this.dispatchEvent(xh(n))});St(this,"_handleError",n=>{this._debug("error event",n.message),this._disconnect(void 0,n.message==="TIMEOUT"?"timeout":void 0),this.onerror&&this.onerror(n),this._debug("exec error listeners"),this.dispatchEvent(xh(n)),this._connect()});St(this,"_handleClose",n=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(n),this.dispatchEvent(xh(n))});this._url=n,this._protocols=i,this._options=l,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}static get CONNECTING(){return 0}static get OPEN(){return 1}static get CLOSING(){return 2}static get CLOSED(){return 3}get CONNECTING(){return xa.CONNECTING}get OPEN(){return xa.OPEN}get CLOSING(){return xa.CLOSING}get CLOSED(){return xa.CLOSED}get binaryType(){return this._ws?this._ws.binaryType:this._binaryType}set binaryType(n){this._binaryType=n,this._ws&&(this._ws.binaryType=n)}get retryCount(){return Math.max(this._retryCount,0)}get bufferedAmount(){return this._messageQueue.reduce((i,l)=>(typeof l=="string"?i+=l.length:l instanceof Blob?i+=l.size:i+=l.byteLength,i),0)+(this._ws?this._ws.bufferedAmount:0)}get extensions(){return this._ws?this._ws.extensions:""}get protocol(){return this._ws?this._ws.protocol:""}get readyState(){return this._ws?this._ws.readyState:this._options.startClosed?xa.CLOSED:xa.CONNECTING}get url(){return this._ws?this._ws.url:""}get shouldReconnect(){return this._shouldReconnect}close(n=1e3,i){if(this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(n,i)}reconnect(n,i){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(n,i),this._connect())}send(n){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",n),this._ws.send(n);else{const{maxEnqueuedMessages:i=ga.maxEnqueuedMessages}=this._options;this._messageQueue.length<i&&(this._debug("enqueue",n),this._messageQueue.push(n))}}_debug(...n){this._options.debug&&console.log.apply(console,["RWS>",...n])}_getNextDelay(){const{reconnectionDelayGrowFactor:n=ga.reconnectionDelayGrowFactor,minReconnectionDelay:i=ga.minReconnectionDelay,maxReconnectionDelay:l=ga.maxReconnectionDelay}=this._options;let d=0;return this._retryCount>0&&(d=i*Math.pow(n,this._retryCount-1),d>l&&(d=l)),this._debug("next delay",d),d}_wait(){return new Promise(n=>{setTimeout(n,this._getNextDelay())})}_getNextProtocols(n){if(!n)return Promise.resolve(null);if(typeof n=="string"||Array.isArray(n))return Promise.resolve(n);if(typeof n=="function"){const i=n();if(!i)return Promise.resolve(null);if(typeof i=="string"||Array.isArray(i))return Promise.resolve(i);if(i.then)return i}throw Error("Invalid protocols")}_getNextUrl(n){if(typeof n=="string")return Promise.resolve(n);if(typeof n=="function"){const i=n();if(typeof i=="string")return Promise.resolve(i);if(i.then)return i}throw Error("Invalid URL")}_connect(){if(this._connectLock||!this._shouldReconnect)return;this._connectLock=!0;
598const{maxRetries:n=ga.maxRetries,connectionTimeout:i=ga.connectionTimeout}=this._options;if(this._retryCount>=n){this._debug("max retries reached",this._retryCount,">=",n);return}this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),this._wait().then(()=>Promise.all([this._getNextUrl(this._url),this._getNextProtocols(this._protocols||null)])).then(([l,d])=>{if(this._closeCalled){this._connectLock=!1;return}!this._options.WebSocket&&typeof WebSocket>"u"&&!ub&&(console.error(`‼️ No WebSocket implementation available. You should define options.WebSocket. 
599
600For example, if you're using node.js, run \`npm install ws\`, and then in your code:
601
602import PartySocket from 'partysocket';
603import WS from 'ws';
604
605const partysocket = new PartySocket({
606  host: "127.0.0.1:1999",
607  room: "test-room",
608  WebSocket: WS
609});
610
611`),ub=!0);const h=this._options.WebSocket||WebSocket;this._debug("connect",{url:l,protocols:d}),this._ws=d?new h(l,d):new h(l),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),i)}).catch(l=>{this._connectLock=!1,this._handleError(new wf.ErrorEvent(Error(l.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new wf.ErrorEvent(Error("TIMEOUT"),this))}_disconnect(n=1e3,i){if(this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(n,i),this._handleClose(new wf.CloseEvent(n,i,this))}catch{}}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_removeListeners(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))}_addListeners(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};/*!
612 * Reconnecting WebSocket
613 * by Pedro Ladaria <[email protected]>
614 * https://github.com/pladaria/reconnecting-websocket
615 * License MIT
616 */var EE=e=>e[1]!==null&&e[1]!==void 0;function AE(){if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();let e=new Date().getTime(),t=typeof performance<"u"&&performance.now&&performance.now()*1e3||0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){let i=Math.random()*16;return e>0?(i=(e+i)%16|0,e=Math.floor(e/16)):(i=(t+i)%16|0,t=Math.floor(t/16)),(n==="x"?i:i&3|8).toString(16)})}function a2(e,t,n={}){const{host:i,path:l,protocol:d,room:h,party:m,query:g}=e;let y=i.replace(/^(http|https|ws|wss):\/\//,"");if(y.endsWith("/")&&(y=y.slice(0,-1)),l&&l.startsWith("/"))throw new Error("path must not start with a slash");const x=m??"main",w=l?`/${l}`:"",j=d||(y.startsWith("localhost:")||y.startsWith("127.0.0.1:")||y.startsWith("192.168.")||y.startsWith("10.")||y.startsWith("172.")&&y.split(".")[1]>="16"&&y.split(".")[1]<="31"||y.startsWith("[::ffff:7f00:1]:")?t:t+"s"),P=`${j}://${y}/${m?`parties/${m}`:"party"}/${h}${w}`,C=(A={})=>`${P}?${new URLSearchParams([...Object.entries(n),...Object.entries(A).filter(EE)])}`,k=typeof g=="function"?async()=>C(await g()):C(g);return{host:y,path:w,room:h,name:x,protocol:j,partyUrl:P,urlProvider:k}}var RE=class extends TE{constructor(t){const n=hb(t);super(n.urlProvider,n.protocols,n.socketOptions);St(this,"_pk");St(this,"_pkurl");St(this,"name");St(this,"room");St(this,"host");St(this,"path");this.partySocketOptions=t,this.setWSProperties(n)}updateProperties(t){const n=hb({...t,host:t.host??this.host,room:t.room??this.room,path:t.path??this.path});this._url=n.urlProvider,this._protocols=n.protocols,this._options=n.socketOptions,this.setWSProperties(n)}setWSProperties(t){const{_pk:n,_pkurl:i,name:l,room:d,host:h,path:m}=t;this._pk=n,this._pkurl=i,this.name=l,this.room=d,this.host=h,this.path=m}reconnect(t,n){if(!this.room||!this.host)throw new Error("The room and host must be set before connecting, use `updateProperties` method to set them or pass them to the constructor.");super.reconnect(t,n)}get id(){return this._pk}get roomUrl(){return this._pkurl}static async fetch(t,n){const i=a2(t,"http"),l=typeof i.urlProvider=="string"?i.urlProvider:await i.urlProvider();return(t.fetch??fetch)(l,n)}};function hb(e){const{id:t,host:n,path:i,party:l,room:d,protocol:h,query:m,protocols:g,...y}=e,x=t||AE(),w=a2(e,"ws",{_pk:x});return{_pk:x,_pkurl:w.partyUrl,name:w.name,room:w.room,host:w.host,path:w.path,protocols:g,socketOptions:y,urlProvider:w.urlProvider}}const LE=1e3,ME=3e3;class IE{constructor(t,n,i,l,d){var h;this.onClose=d,this.listeners=new Set,this.heartbeat=null,this.id=(h=l==null?void 0:l.id)!==null&&h!==void 0?h:crypto.randomUUID();const m=new RE({host:i.host,party:t,room:n,id:this.id,query:()=>{const x=i.getAuthToken();return{app_id:i.appId,handler:t,...x?{token:x}:{},...i.functionsVersion?{fv:i.functionsVersion}:{}}}});this.ws=m;let g=Date.now();const y=()=>{g=Date.now()};m.addEventListener("open",y),m.addEventListener("message",x=>{y();let w;try{w=JSON.parse(x.data)}catch{return}if((w&&typeof w=="object"?w.type:void 0)!=="__pong")for(const P of this.listeners)P(w)}),this.heartbeat=setInterval(()=>{if(Date.now()-g>ME){y(),m.reconnect();return}try{m.send(JSON.stringify({type:"__ping"}))}catch{}},LE)}subscribe(t){return this.listeners.add(t),{unsubscribe:()=>{this.listeners.delete(t)}}}send(t){this.ws.send(JSON.stringify(t))}close(){this.heartbeat&&(clearInterval(this.heartbeat),this.heartbeat=null),this.listeners.clear(),this.ws.close(),this.onClose()}}function $E(e,t,n,i){let l=null;return{connect(d){if(l)return l;const h=new IE(e,t,n,d,()=>
616{i.delete(h),l===h&&(l=null)});return l=h,i.add(h),h}}}function DE(e,t){return e&&!e.startsWith("/")?e:t??e}function OE(e){const t=new Set;return{module:new Proxy({},{get(i,l){if(!(typeof l!="string"||l==="then"))return d=>$E(l,d,e,t)}}),closeAll:()=>{for(const i of[...t])i.close()}}}function FE(e){var t,n,i;const{serverUrl:l="https://base44.app",appId:d,token:h,serviceToken:m,requiresAuth:g=!1,appBaseUrl:y,options:x,functionsVersion:w,headers:j}=e,P=typeof y=="string"?y:"",C={serverUrl:l,mountPath:"/ws-user-apps/socket.io/",transports:["websocket"],appId:d,token:h};let k=null;const A=()=>(k||(k=NE({config:C})),k),E={...j,"X-App-Id":String(d)},$=w?{...E,"Base44-Functions-Version":w}:E,I=ud({baseURL:`${l}/api`,headers:E,token:h,onError:x==null?void 0:x.onError}),M=ud({baseURL:`${l}/api`,headers:$,token:h,interceptResponses:!1,onError:x==null?void 0:x.onError}),F={...E,...h?{"on-behalf-of":`Bearer ${h}`}:{}},z=ud({baseURL:`${l}/api`,headers:F,token:m,onError:x==null?void 0:x.onError}),V=ud({baseURL:`${l}/api`,headers:$,token:m,interceptResponses:!1}),W=jT(I,M,d,{appBaseUrl:P});if(typeof window<"u"){const Je=h||Ia();Je&&W.setToken(Je)}const ne=OE({appId:d,host:DE(l,typeof window<"u"?(t=window.location)===null||t===void 0?void 0:t.origin:void 0),functionsVersion:w,getAuthToken:()=>h||Ia()}),de={entities:Xv({axios:I,appId:d,getSocket:A}),integrations:eb(I,d),connectors:PT(I,d),auth:W,functions:tb(M,d,{getAuthHeaders:()=>{const Je={},Ie=h||Ia();return Ie&&(Je.Authorization=`Bearer ${Ie}`),Je},baseURL:(n=M.defaults)===null||n===void 0?void 0:n.baseURL}),agents:nb({axios:I,getSocket:A,appId:d,serverUrl:l,token:h}),aiGateway:rb({serverUrl:l,token:h,appId:d}),appLogs:sb(I,d),users:ET(I,d),analytics:uT({axiosClient:I,serverUrl:l,appId:d,userAuthModule:W}),actors:ne.module,cleanup:()=>{de.analytics.cleanup(),ne.closeAll(),k&&k.disconnect()}},be={entities:Xv({axios:z,appId:d,getSocket:A}),integrations:eb(z,d),sso:kT(z,d),connectors:CT(z,d),functions:tb(V,d,{getAuthHeaders:()=>{const Je={};return m&&(Je.Authorization=`Bearer ${m}`),Je},baseURL:(i=V.defaults)===null||i===void 0?void 0:i.baseURL}),agents:nb({axios:z,getSocket:A,appId:d,serverUrl:l,token:h}),aiGateway:rb({serverUrl:l,token:m,appId:d}),appLogs:sb(z,d),cleanup:()=>{k&&k.disconnect()}};return g&&typeof window<"u"&&setTimeout(async()=>{try{await de.auth.isAuthenticated()||de.auth.redirectToLogin(window.location.href)}catch(Je){console.error("Authentication check failed:",Je),de.auth.redirectToLogin(window.location.href)}},0),{...de,setToken(Je){de.auth.setToken(Je),k&&k.updateConfig({token:Je}),C.token=Je},getConfig(){return{serverUrl:l,appId:d,requiresAuth:g}},get asServiceRole(){if(!m)throw new Error("Service token is required to use asServiceRole. Please provide a serviceToken when creating the client.");return be}}}const l2=typeof window>"u",BE=l2?{localStorage:new Map}:window,bd=BE.localStorage,zE=e=>e.replace(/([A-Z])/g,"_$1").toLowerCase(),Rl=(e,{defaultValue:t=void 0,removeFromUrl:n=!1}={})=>{if(l2)return t;const i=`base44_${zE(e)}`,l=new URLSearchParams(window.location.search),d=l.get(e);if(n){l.delete(e);const m=`${window.location.pathname}${l.toString()?`?${l.toString()}`:""}${window.location.hash}`;window.history.replaceState({},document.title,m)}if(d)return bd.setItem(i,d),d;if(t)return bd.setItem(i,t),t;const h=bd.getItem(i);return h||null},WE=()=>(Rl("clear_access_token")==="true"&&(bd.removeItem("base44_access_token"),bd.removeItem("token")),{appId:Rl("app_id",{defaultValue:"69c6c2e37ddb6d40cc99594e"}),token:Rl("access_token",{removeFromUrl:!0}),fromUrl:Rl("from_url",{defaultValue:window.location.href}),functionsVersion:Rl("functions_version",{defaultValue:"prod"}),appBaseUrl:Rl("app_base_url",{defaultValue:void 0})}),md={...WE()},{appId:UE,token:HE,functionsVersion:VE,appBaseUrl:qE}=md,Me=FE({appId:UE,token:HE,functionsVersion:VE,serverUrl:"",requiresAuth:!1,appBaseUrl:qE});function JE({}){var l;const t=Ei().pathname.substring(1),{data:n,isFetched:i}=GC({queryKey:["user"],queryFn:async()=>{try{return{user:await Me.auth.me(),isAuthenticated:!0}}catch{return{user:null,isAuthenticated:!1}}}});return r.jsx("div",{className:"min-h-screen flex items-center justify-center p-6 bg-slate-50",children:r.jsx("div",{className:"max-w-md w-full",children:r.jsxs("div",{className:"text-center space-y-6",children:[r.jsxs("div",{className:"space-y-2",children:[r.jsx("h1",{className:"text-7xl font-light text-slate-300",children:"404"}),r.jsx("div",{className:"h-0.5 w-16 bg-slate-200 mx-auto"})]}),r.jsxs("div",{className:"space-y-3",children:[r.jsx("h2",{className:"text-2xl font-medium text-slate-800",children:"Page Not Found"}),r.jsxs("p",{className:"text-slate-600 leading-relaxed",children:["The page ",r.jsxs("span",{className:"font-medium text-slate-700",children:['"',t,'"']})," could not be found in this application."]})]}),i&&n.isAuthenticated&&((l=n.user)==null?void 0:l.role)==="admin"&&r.jsx("div",{className:"mt-8 p-4 bg-slate-100 rounded-lg border border-slate-200",children:r.jsxs("div",{className:"flex items-start space-x-3",children:[r.jsx("div",{className:"flex-shrink-0 w-5 h-5 rounded-full bg-orange-100 flex items-center justify-center mt-0.5",children:r.jsx("div",{className:"w-2 h-2 rounded-full bg-orange-400"})}),r.jsxs("div",{className:"text-left space-y-1",children:[r.jsx("p",{className:"text-sm font-medium text-slate-700",children:"Admin Note"}),r.jsx("p",{className:"text-sm text-slate-600 leading-relaxed",children:"This could mean that the AI hasn't implemented this page yet. Ask it to implement it in the chat."})]})]})}),r.jsx("div",{className:"pt-6",children:r.jsxs("button",{onClick:()=>window.location.href="/",className:"inline-flex items-center px-4 py-2 text-sm font-medium text-slate-700 bg-white border border-slate-200 rounded-lg hover:bg-slate-50 hover:border-slate-300 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-slate-500",children:[r.jsx("svg",{className:"w-4 h-4 mr-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"})}),"Go Home"]})})]})})})}const c2=S.createContext(),GE=({children:e})=>{const[t,n]=S.useState(null),[i,l]=S.useState(!1),[d,h]=S.useState(!0),[m,g]=S.useState(!0),[y,x]=S.useState(null),[w,j]=S.useState(null);S.useEffect(()=>{P()},[]);const P=async()=>{var E,$;try{g(!0),x(null);const I=ud({baseURL:"/api/apps/public",headers:{"X-App-Id":md.appId},token:md.token,interceptResponses:!0});try{const M=await I.get(`/prod/public-settings/by-id/${md.appId}`);j(M),md.token?await C():(h(!1),l(!1)),g(!1)}
616catch(M){if(console.error("App state check failed:",M),M.status===403&&(($=(E=M.data)==null?void 0:E.extra_data)!=null&&$.reason)){const F=M.data.extra_data.reason;x(F==="auth_required"?{type:"auth_required",message:"Authentication required"}:F==="user_not_registered"?{type:"user_not_registered",message:"User not registered for this app"}:{type:F,message:M.message})}else x({type:"unknown",message:M.message||"Failed to load app"});g(!1),h(!1)}}catch(I){console.error("Unexpected error:",I),x({type:"unknown",message:I.message||"An unexpected error occurred"}),g(!1),h(!1)}},C=async()=>{try{h(!0);const E=await Me.auth.me();n(E),l(!0),h(!1)}catch(E){console.error("User auth check failed:",E),h(!1),l(!1),(E.status===401||E.status===403)&&x({type:"auth_required",message:"Authentication required"})}},k=(E=!0)=>{n(null),l(!1),E?Me.auth.logout(window.location.href):Me.auth.logout()},A=()=>{Me.auth.redirectToLogin(window.location.href)};return r.jsx(c2.Provider,{value:{user:t,isAuthenticated:i,isLoadingAuth:d,isLoadingPublicSettings:m,authError:y,appPublicSettings:w,logout:k,navigateToLogin:A,checkAppState:P},children:e})},d2=()=>{const e=S.useContext(c2);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e},ZE=()=>r.jsx("div",{className:"flex flex-col items-center justify-center min-h-screen bg-gradient-to-b from-white to-slate-50",children:r.jsx("div",{className:"max-w-md w-full p-8 bg-white rounded-lg shadow-lg border border-slate-100",children:r.jsxs("div",{className:"text-center",children:[r.jsx("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-6 rounded-full bg-orange-100",children:r.jsx("svg",{className:"w-8 h-8 text-orange-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),r.jsx("h1",{className:"text-3xl font-bold text-slate-900 mb-4",children:"Access Restricted"}),r.jsx("p",{className:"text-slate-600 mb-8",children:"You are not registered to use this application. Please contact the app administrator to request access."}),r.jsxs("div",{className:"p-4 bg-slate-50 rounded-md text-sm text-slate-600",children:[r.jsx("p",{children:"If you believe this is an error, you can:"}),r.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[r.jsx("li",{children:"Verify you are logged in with the correct account"}),r.jsx("li",{children:"Contact the app administrator for access"}),r.jsx("li",{children:"Try logging out and back in again"})]})]})]})})});function mb(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Nm(...e){return t=>{let n=!1;const i=e.map(l=>{const d=mb(l,t);return!n&&typeof d=="function"&&(n=!0),d});if(n)return()=>{for(let l=0;l<i.length;l++){const d=i[l];typeof d=="function"?d():mb(e[l],null)}}}}function Ua(...e){return S.useCallback(Nm(...e),e)}var KE=Symbol.for("react.lazy"),nm=hm[" use ".trim().toString()];function YE(e){return typeof e=="object"&&e!==null&&"then"in e}function u2(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===KE&&"_payload"in e&&YE(e._payload)}function QE(e){const t=e9(e),n=S.forwardRef((i,l)=>{let{children:d,...h}=i;u2(d)&&typeof nm=="function"&&(d=nm(d._payload));const m=S.Children.toArray(d),g=m.find(n9);if(g){const y=g.props.children,x=m.map(w=>w===g?S.Children.count(y)>1?S.Children.only(null):S.isValidElement(y)?y.props.children:null:w);return r.jsx(t,{...h,ref:l,children:S.isValidElement(y)?S.cloneElement(y,void 0,x):null})}return r.jsx(t,{...h,ref:l,children:d})});return n.displayName=`${e}.Slot`,n}var XE=QE("Slot");function e9(e){const t=S.forwardRef((n,i)=>{let{children:l,...d}=n;if(u2(l)&&typeof nm=="function"&&(l=nm(l._payload)),S.isValidElement(l)){const h=s9(l),m=r9(d,l.props);return l.type!==S.Fragment&&(m.ref=i?Nm(i,h):h),S.cloneElement(l,m)}return S.Children.count(l)>1?S.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var t9=Symbol("radix.slottable");function n9(e){return S.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===t9}function r9(e,t){const n={...t};for(const i in t){const l=e[i],d=t[i];/^on[A-Z]/.test(i)?l&&d?n[i]=(...m)=>{const g=d(...m);return l(...m),g}:l&&(n[i]=l):i==="style"?n[i]={...l,...d}
vendor: 20,449 bytes, line 616
616:i==="className"&&(n[i]=[l,d].filter(Boolean).join(" "))}return{...e,...n}}function s9(e){var i,l;let t=(i=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:i.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(l=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:l.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}const i9=Kg("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),qe=S.forwardRef(({className:e,variant:t,size:n,asChild:i=!1,...l},d)=>{const h=i?XE:"button";return r.jsx(h,{className:Rr(i9({variant:t,size:n,className:e})),ref:d,...l})});qe.displayName="Button";function j0({onConfirm:e,onClose:t}){const[n,i]=S.useState(""),[l,d]=S.useState(""),[h,m]=S.useState(!1),g=async()=>{var y;if(!/^\d{5}$/.test(n)){d("Please enter a valid 5-digit zip code.");return}m(!0),sessionStorage.setItem("userZip",n),sessionStorage.removeItem("userCity");try{const w=(y=(await Me.functions.invoke("getUserState",{zip:n})).data)==null?void 0:y.city;w&&w!=="your area"&&sessionStorage.setItem("userCity",w)}catch{}m(!1),e(n)};return r.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 px-4",onClick:t,children:r.jsxs("div",{className:"bg-white rounded-2xl shadow-2xl w-full max-w-sm p-6 flex flex-col gap-4",onClick:y=>y.stopPropagation(),children:[r.jsxs("div",{className:"flex items-center justify-between",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(Yg,{className:"w-5 h-5 text-[hsl(197,100%,40%)]"}),r.jsx("h2",{className:"text-lg font-bold text-gray-900",children:"Enter Your Zip Code"})]}),r.jsx("button",{onClick:t,className:"text-gray-400 hover:text-gray-600",children:r.jsx(Zs,{className:"w-5 h-5"})})]}),r.jsx("p",{className:"text-sm text-gray-500",children:"We'll show you accurate local pricing for your area."}),r.jsx("input",{type:"text",inputMode:"numeric",maxLength:5,placeholder:"e.g. 07001",value:n,onChange:y=>{i(y.target.value.replace(/\D/g,"")),d("")},onKeyDown:y=>y.key==="Enter"&&g(),className:"border border-gray-300 rounded-lg px-4 py-3 text-lg font-semibold tracking-widest focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)] text-center",autoFocus:!0}),l&&r.jsx("p",{className:"text-sm text-red-500 text-center",children:l}),r.jsx(qe,{onClick:g,disabled:h,className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] disabled:opacity-60 text-white font-bold py-3 text-base rounded-xl",children:h?"Locating...":"Continue"})]})})}function Lo(e,t,{checkForDefaultPrevented:n=!0}={}){return function(l){if(e==null||e(l),n===!1||!l.defaultPrevented)return t==null?void 0:t(l)}}function o9(e,t){const n=S.createContext(t),i=d=>{const{children:h,...m}=d,g=S.useMemo(()=>m,Object.values(m));return r.jsx(n.Provider,{value:g,children:h})};i.displayName=e+"Provider";function l(d){const h=S.useContext(n);if(h)return h;if(t!==void 0)return t;throw new Error(`\`${d}\` must be used within \`${e}\``)}return[i,l]}function a9(e,t=[]){let n=[];function i(d,h){const m=S.createContext(h),g=n.length;n=[...n,h];const y=w=>{var E;const{scope:j,children:P,...C}=w,k=((E=j==null?void 0:j[e])==null?void 0:E[g])||m,A=S.useMemo(()=>C,Object.values(C));return r.jsx(k.Provider,{value:A,children:P})};y.displayName=d+"Provider";function x(w,j){var k;const P=((k=j==null?void 0:j[e])==null?void 0:k[g])||m,C=S.useContext(P);if(C)return C;if(h!==void 0)return h;throw new Error(`\`${w}\` must be used within \`${d}\``)}return[y,x]}const l=()=>{const d=n.map(h=>S.createContext(h));return function(m){const g=(m==null?void 0:m[e])||d;return S.useMemo(()=>({[`__scope${e}`]:{...m,[e]:g}}),[m,g])}};return l.scopeName=e,[i,l9(l,...t)]}function l9(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const i=e.map(l=>({useScope:l(),scopeName:l.scopeName}));return function(d){const h=i.reduce((m,{useScope:g,scopeName:y})=>{const w=g(d)[`__scope${y}`];return{...m,...w}},{});return S.useMemo(()=>({[`__scope${t.scopeName}`]:h}),[h])}};return n.scopeName=t.scopeName,n}var Ad=globalThis!=null&&globalThis.document?S.useLayoutEffect:()=>{},c9=hm[" useId ".trim().toString()]||(()=>{}),d9=0;function _f(e){const[t,n]=S.useState(c9());return Ad(()=>{n(i=>i??String(d9++))},[e]),e||(t?`radix-${t}`:"")}var u9=hm[" useInsertionEffect ".trim().toString()]||Ad;function h9({prop:e,defaultProp:t,onChange:n=()=>{},caller:i}){const[l,d,h]=m9({defaultProp:t,onChange:n}),m=e!==void 0,g=m?e:l;{const x=S.useRef(e!==void 0);S.useEffect(()=>{const w=x.current;w!==m&&console.warn(`${i} is changing from ${w?"controlled":"uncontrolled"} to ${m?"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.`),x.current=m},[m,i])}const y=S.useCallback(x=>{var w;if(m){const j=p9(x)?x(e):x;j!==e&&((w=h.current)==null||w.call(h,j))}else d(x)},[m,e,d,h]);return[g,y]}function m9({defaultProp:e,onChange:t}){const[n,i]=S.useState(e),l=S.useRef(n),d=S.useRef(t);return u9(()=>{d.current=t},[t]),S.useEffect(()=>{var h;l.current!==n&&((h=d.current)==null||h.call(d,n),l.current=n)},[n,l]),[n,i,d]}function p9(e){return typeof e=="function"}function f9(e){const t=g9(e),n=S.forwardRef((i,l)=>{const{children:d,...h}=i,m=S.Children.toArray(d),g=m.find(x9);if(g){const y=g.props.children,x=m.map(w=>w===g?S.Children.count(y)>1?S.Children.only(null):S.isValidElement(y)?y.props.children:null:w);return r.jsx(t,{...h,ref:l,children:S.isValidElement(y)?S.cloneElement(y,void 0,x):null})}return r.jsx(t,{...h,ref:l,children:d})});return n.displayName=`${e}.Slot`,n}function g9(e){const t=S.forwardRef((n,i)=>{const{children:l,...d}=n;if(S.isValidElement(l)){const h=b9(l),m=v9(d,l.props);return l.type!==S.Fragment&&(m.ref=i?Nm(i,h):h),S.cloneElement(l,m)}return S.Children.count(l)>1?S.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var y9=Symbol("radix.slottable");function x9(e){return S.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===y9}function v9(e,t){const n={...t};for(const i in t){const l=e[i],d=t[i];/^on[A-Z]/.test(i)?l&&d?n[i]=(...m)=>{const g=d(...m);return l(...m),g}:l&&(n[i]=l):i==="style"?n[i]={...l,...d}:i==="className"&&(n[i]=[l,d].filter(Boolean).join(" "))}return{...e,...n}}function b9(e){var i,l;let t=(i=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:i.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(l=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:l.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var w9=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ai=w9.reduce((e,t)=>{const n=f9(`Primitive.${t}`),i=S.forwardRef((l,d)=>{const{asChild:h,...m}=l,g=h?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),r.jsx(g,{...m,ref:d})});return i.displayName=`Primitive.${t}`,{...e,[t]:i}},{});function _9(e,t){e&&c_.flushSync(()=>e.dispatchEvent(t))}function Rd(e){const t=S.useRef(e);return S.useEffect(()=>{t.current=e}),S.useMemo(()=>(...n)=>{var i;return(i=t.current)==null?void 0:i.call(t,...n)},[])}function S9(e,t=globalThis==null?void 0:globalThis.document){const n=Rd(e);S.useEffect(()=>{const i=l=>{l.key==="Escape"&&n(l)};return t.addEventListener("keydown",i,{capture:!0}),()=>t.removeEventListener("keydown",i,{capture:!0})},[n,t])}var N9="DismissableLayer",kg="dismissableLayer.update",j9="dismissableLayer.pointerDownOutside",k9="dismissableLayer.focusOutside",pb,h2=S.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),m2=S.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:i,onPointerDownOutside:l,onFocusOutside:d,onInteractOutside:h,onDismiss:m,...g}=e,y=S.useContext(h2),[x,w]=S.useState(null),j=(x==null?void 0:x.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,P]=S.useState({}),C=Ua(t,V=>w(V)),k=Array.from(y.layers),[A]=[...y.layersWithOutsidePointerEventsDisabled].slice(-1),E=k.indexOf(A),$=x?k.indexOf(x):-1,I=y.layersWithOutsidePointerEventsDisabled.size>0,M=$>=E,F=T9(V=>{const W=V.target,ne=[...y.branches].some(de=>de.contains(W));!M||ne||(l==null||l(V),h==null||h(V),V.defaultPrevented||m==null||m())},j),z=E9(V=>{const W=V.target;[...y.branches].some(de=>de.contains(W))||(d==null||d(V),h==null||h(V),V.defaultPrevented||m==null||m())},j);return S9(V=>{$===y.layers.size-1&&(i==null||i(V),!V.defaultPrevented&&m&&(V.preventDefault(),m()))},j),S.useEffect(()=>{if(x)return n&&(y.layersWithOutsidePointerEventsDisabled.size===0&&(pb=j.body.style.pointerEvents,j.body.style.pointerEvents="none"),y.layersWithOutsidePointerEventsDisabled.add(x)),y.layers.add(x),fb(),()=>{n&&y.layersWithOutsidePointerEventsDisabled.size===1&&(j.body.style.pointerEvents=pb)}},[x,j,n,y]),S.useEffect(()=>()=>{x&&(y.layers.delete(x),y.layersWithOutsidePointerEventsDisabled.delete(x),fb())},[x,y]),S.useEffect(()=>{const V=()=>P({});return document.addEventListener(kg,V),()=>document.removeEventListener(kg,V)},[]),r.jsx(Ai.div,{...g,ref:C,style:{pointerEvents:I?M?"auto":"none":void 0,...e.style},onFocusCapture:Lo(e.onFocusCapture,z.onFocusCapture),onBlurCapture:Lo(e.onBlurCapture,z.onBlurCapture),onPointerDownCapture:Lo(e.onPointerDownCapture,F.onPointerDownCapture)})});m2.displayName=N9;var C9="DismissableLayerBranch",P9=S.forwardRef((e,t)=>{const n=S.useContext(h2),i=S.useRef(null),l=Ua(t,i);return S.useEffect(()=>{const d=i.current;if(d)return n.branches.add(d),()=>{n.branches.delete(d)}},[n.branches]),r.jsx(Ai.div,{...e,ref:l})});P9.displayName=C9;function T9(e,t=globalThis==null?void 0:globalThis.document){const n=Rd(e),i=S.useRef(!1),l=S.useRef(()=>{});return S.useEffect(()=>{const d=m=>{if(m.target&&!i.current){let g=function(){p2(j9,n,y,{discrete:!0})};const y={originalEvent:m};m.pointerType==="touch"?(t.removeEventListener("click",l.current),l.current=g,t.addEventListener("click",l.current,{once:!0})):g()}else t.removeEventListener("click",l.current);i.current=!1},h=window.setTimeout(()=>{t.addEventListener("pointerdown",d)},0);return()=>{window.clearTimeout(h),t.removeEventListener("pointerdown",d),t.removeEventListener("click",l.current)}},[t,n]),{onPointerDownCapture:()=>i.current=!0}}function E9(e,t=globalThis==null?void 0:globalThis.document){const n=Rd(e),i=S.useRef(!1);return S.useEffect(()=>{const l=d=>{d.target&&!i.current&&p2(k9,n,{originalEvent:d},{discrete:!1})};return t.addEventListener("focusin",l),()=>t.removeEventListener("focusin",l)},[t,n]),{onFocusCapture:()=>i.current=!0,onBlurCapture:()=>i.current=!1}}function fb(){const e=new CustomEvent(kg);document.dispatchEvent(e)}function p2(e,t,n,{discrete:i}){const l=n.originalEvent.target,d=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&l.addEventListener(e,t,{once:!0}),i?_9(l,d):l.dispatchEvent(d)}var Sf="focusScope.autoFocusOnMount",Nf="focusScope.autoFocusOnUnmount",gb={bubbles:!1,cancelable:!0},A9="FocusScope",f2=S.forwardRef((e,t)=>{const{loop:n=!1,trapped:i=!1,onMountAutoFocus:l,onUnmountAutoFocus:d,...h}=e,[m,g]=S.useState(null),y=Rd(l),x=Rd(d),w=S.useRef(null),j=Ua(t,k=>g(k)),P=S.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;S.useEffect(()=>{if(i){let k=function(I){if(P.paused||!m)return;const M=I.target;m.contains(M)?w.current=M:vo(w.current,{select:!0})},A=function(I){if(P.paused||!m)return;const M=I.relatedTarget;M!==null&&(m.contains(M)||vo(w.current,{select:!0}))},E=function(I){if(document.activeElement===document.body)for(const F of I)F.removedNodes.length>0&&vo(m)};document.addEventListener("focusin",k),document.addEventListener("focusout",A);const $=new MutationObserver(E);return m&&$.observe(m,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",k),document.removeEventListener("focusout",A),$.disconnect()}}},[i,m,P.paused]),S.useEffect(()=>{if(m){xb.add(P);const k=document.activeElement;if(!m.contains(k)){const E=new CustomEvent(Sf,gb);m.addEventListener(Sf,y),m.dispatchEvent(E),E.defaultPrevented||(R9(D9(g2(m)),{select:!0}),document.activeElement===k&&vo(m))}return()=>{m.removeEventListener(Sf,y),setTimeout(()=>{const E=new CustomEvent(Nf,gb);m.addEventListener(Nf,x),m.dispatchEvent(E),E.defaultPrevented||vo(k??document.body,{select:!0}),m.removeEventListener(Nf,x),xb.remove(P)},0)}}},[m,y,x,P]);const C=S.useCallback(k=>{if(!n&&!i||P.paused)return;const A=k.key==="Tab"&&!k.altKey&&!k.ctrlKey&&!k.metaKey,E=document.activeElement;if(A&&E){const $=k.currentTarget,[I,M]=L9($);I&&M?!k.shiftKey&&E===M?(k.preventDefault(),n&&vo(I,{select:!0})):k.shiftKey&&E===I&&(k.preventDefault(),n&&vo(M,{select:!0})):E===$&&k.preventDefault()}},[n,i,P.paused]);return r.jsx(Ai.div,{tabIndex:-1,...h,ref:j,onKeyDown:C})});f2.displayName=A9;function R9(e,{select:t=!1}={}){const n=document.activeElement;for(const i of e)if(vo(i,{select:t}),document.activeElement!==n)return}function L9(e){const t=g2(e),n=yb(t,e),i=yb(t.reverse(),e);return[n,i]}function g2(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:i=>{const l=i.tagName==="INPUT"&&i.type==="hidden";return i.disabled||i.hidden||l?NodeFilter.FILTER_SKIP:i.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function yb(e,t){for(const n of e)if(!M9(n,{upTo:t}))return n}function M9(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function I9(e){return e instanceof HTMLInputElement&&"select"in e}function vo(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&I9(e)&&t&&e.select()}}var xb=$9();function $9(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=vb(e,t),e.unshift(t)},remove(t){var n;e=vb(e,t),(n=e[0])==null||n.resume()}}}function vb(e,t){const n=[...e],i=n.indexOf(t);return i!==-1&&n.splice(i,1),n}function D9(e){return e.filter(t=>t.tagName!=="A")}var O9="Portal",y2=S.forwardRef((e,t)=>{var m;const{container:n,...i}=e,[l,d]=S.useState(!1);Ad(()=>d(!0),[]);const h=n||l&&((m=globalThis==null?void 0:globalThis.document)==null?void 0:m.body);return h?KC.createPortal(r.jsx(Ai.div,{...i,ref:t}),h):null});y2.displayName=O9;function F9(e,t){return S.useReducer((n,i)=>t[n][i]??n,e)}var jm=e=>{const{present:t,children:n}=e,i=B9(t),l=typeof n=="function"?n({present:i.isPresent}):S.Children.only(n),d=Ua(i.ref,z9(l));return typeof n=="function"||i.isPresent?S.cloneElement(l,{ref:d}):null};jm.displayName="Presence";function B9(e){const[t,n]=S.useState(),i=S.useRef(null),l=S.useRef(e),d=S.useRef("none"),h=e?"mounted":"unmounted",[m,g]=F9(h,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return S.useEffect(()=>{const y=vh(i.current);d.current=m==="mounted"?y:"none"},[m]),Ad(()=>{const y=i.current,x=l.current;if(x!==e){const j=d.current,P=vh(y);e?g("MOUNT"):P==="none"||(y==null?void 0:y.display)==="none"?g("UNMOUNT"):g(x&&j!==P?"ANIMATION_OUT":"UNMOUNT"),l.current=e}},[e,g]),Ad(()=>{if(t){let y;const x=t.ownerDocument.defaultView??window,w=P=>{const k=vh(i.current).includes(CSS.escape(P.animationName));if(P.target===t&&k&&(g("ANIMATION_END"),!l.current)){const A=t.style.animationFillMode;t.style.animationFillMode="forwards",y=x.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=A)})}},j=P=>{P.target===t&&(d.current=vh(i.current))};return t.addEventListener("animationstart",j),t.addEventListener("animationcancel",w),t.addEventListener("animationend",w),()=>{x.clearTimeout(y),t.removeEventListener("animationstart",j),t.removeEventListener("animationcancel",w),t.removeEventListener("animationend",w)}}else g("ANIMATION_END")},[t,g]),{isPresent:["mounted","unmountSuspended"].includes(m),ref:S.useCallback(y=>{i.current=y?getComputedStyle(y):null,n(y)},[])}}function vh(e){return(e==null?void 0:e.animationName)||"none"}function z9(e){var i,l;let t=(i=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:i.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(l=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:l.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var jf=0;function W9(){S.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??bb()),document.body.insertAdjacentElement("beforeend",e[1]??bb()),jf++,()=>{jf===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),jf--}},[])}function bb(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Ws=function(){return Ws=Object.assign||function(t){for(var n,i=1,l=arguments.length;i<l;i++){n=arguments[i];for(var d in n)Object.prototype.hasOwnProperty.call(n,d)&&(t[d]=n[d])}return t},Ws.apply(this,arguments)};function x2(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,i=Object.getOwnPropertySymbols(e);l<i.length;l++)t.indexOf(i[l])<0&&Object.prototype.propertyIsEnumerable.call(e,i[l])&&(n[i[l]]=e[i[l]]);return n}function U9(e,t,n){if(n||arguments.length===2)for(var i=0,l=t.length,d;i<l;i++)(d||!(i in t))&&(d||(d=Array.prototype.slice.call(t,0,i)),d[i]=t[i]);return e.concat(d||Array.prototype.slice.call(t))}var zh="right-scroll-bar-position",Wh="width-before-scroll-bar",H9="with-scroll-bars-hidden",V9="--removed-body-scroll-bar-size";function kf(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function q9(e,t){var n=S.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(i){var l=n.value;l!==i&&(n.value=i,n.callback(i,l))}}}})[0];return n.callback=t,n.facade}var J9=typeof window<"u"?S.useLayoutEffect:S.useEffect,wb=new WeakMap;function G9(e,t){var n=q9(null,function(i){return e.forEach(function(l){return kf(l,i)})});return J9(function(){var i=wb.get(n);if(i){var l=new Set(i),d=new Set(e),h=n.current;l.forEach(function(m){d.has(m)||kf(m,null)}),d.forEach(function(m){l.has(m)||kf(m,h)})}wb.set(n,e)},[e]),n}function Z9(e){return e}function K9(e,t){t===void 0&&(t=Z9);var n=[],i=!1,l={read:function(){if(i)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(d){var h=t(d,i);return n.push(h),function(){n=n.filter(function(m){return m!==h})}},assignSyncMedium:function(d){for(i=!0;n.length;){var h=n;n=[],h.forEach(d)}n={push:function(m){return d(m)},filter:function(){return n}}},assignMedium:function(d){i=!0;var h=[];if(n.length){var m=n;n=[],m.forEach(d),h=n}var g=function(){var x=h;h=[],x.forEach(d)},y=function(){return Promise.resolve().then(g)};y(),n={push:function(x){h.push(x),y()},filter:function(x){return h=h.filter(x),n}}}};return l}function Y9(e){e===void 0&&(e={});var t=K9(null);return t.options=Ws({async:!0,ssr:!1},e),t}var v2=function(e){var t=e.sideCar,n=x2(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var i=t.read();if(!i)throw new Error("Sidecar medium not found");return S.createElement(i,Ws({},n))};
vendor: 10,378 bytes, lines 616-656
616v2.isSideCarExport=!0;function Q9(e,t){return e.useMedium(t),v2}var b2=Y9(),Cf=function(){},km=S.forwardRef(function(e,t){var n=S.useRef(null),i=S.useState({onScrollCapture:Cf,onWheelCapture:Cf,onTouchMoveCapture:Cf}),l=i[0],d=i[1],h=e.forwardProps,m=e.children,g=e.className,y=e.removeScrollBar,x=e.enabled,w=e.shards,j=e.sideCar,P=e.noRelative,C=e.noIsolation,k=e.inert,A=e.allowPinchZoom,E=e.as,$=E===void 0?"div":E,I=e.gapMode,M=x2(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),F=j,z=G9([n,t]),V=Ws(Ws({},M),l);return S.createElement(S.Fragment,null,x&&S.createElement(F,{sideCar:b2,removeScrollBar:y,shards:w,noRelative:P,noIsolation:C,inert:k,setCallbacks:d,allowPinchZoom:!!A,lockRef:n,gapMode:I}),h?S.cloneElement(S.Children.only(m),Ws(Ws({},V),{ref:z})):S.createElement($,Ws({},V,{className:g,ref:z}),m))});km.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};km.classNames={fullWidth:Wh,zeroRight:zh};var X9=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function eA(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=X9();return t&&e.setAttribute("nonce",t),e}function tA(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function nA(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var rA=function(){var e=0,t=null;return{add:function(n){e==0&&(t=eA())&&(tA(t,n),nA(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},sA=function(){var e=rA();return function(t,n){S.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},w2=function(){var e=sA(),t=function(n){var i=n.styles,l=n.dynamic;return e(i,l),null};return t},iA={left:0,top:0,right:0,gap:0},Pf=function(e){return parseInt(e||"",10)||0},oA=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],i=t[e==="padding"?"paddingTop":"marginTop"],l=t[e==="padding"?"paddingRight":"marginRight"];return[Pf(n),Pf(i),Pf(l)]},aA=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return iA;var t=oA(e),n=document.documentElement.clientWidth,i=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,i-n+t[2]-t[0])}},lA=w2(),Wl="data-scroll-locked",cA=function(e,t,n,i){var l=e.left,d=e.top,h=e.right,m=e.gap;return n===void 0&&(n="margin"),`
617  .`.concat(H9,` {
618   overflow: hidden `).concat(i,`;
619   padding-right: `).concat(m,"px ").concat(i,`;
620  }
621  body[`).concat(Wl,`] {
622    overflow: hidden `).concat(i,`;
623    overscroll-behavior: contain;
624    `).concat([t&&"position: relative ".concat(i,";"),n==="margin"&&`
625    padding-left: `.concat(l,`px;
626    padding-top: `).concat(d,`px;
627    padding-right: `).concat(h,`px;
628    margin-left:0;
629    margin-top:0;
630    margin-right: `).concat(m,"px ").concat(i,`;
631    `),n==="padding"&&"padding-right: ".concat(m,"px ").concat(i,";")].filter(Boolean).join(""),`
632  }
633  
634  .`).concat(zh,` {
635    right: `).concat(m,"px ").concat(i,`;
636  }
637  
638  .`).concat(Wh,` {
639    margin-right: `).concat(m,"px ").concat(i,`;
640  }
641  
642  .`).concat(zh," .").concat(zh,` {
643    right: 0 `).concat(i,`;
644  }
645  
646  .`).concat(Wh," .").concat(Wh,` {
647    margin-right: 0 `).concat(i,`;
648  }
649  
650  body[`).concat(Wl,`] {
651    `).concat(V9,": ").concat(m,`px;
652  }
653`)},_b=function(){var e=parseInt(document.body.getAttribute(Wl)||"0",10);return isFinite(e)?e:0},dA=function(){S.useEffect(function(){return document.body.setAttribute(Wl,(_b()+1).toString()),function(){var e=_b()-1;e<=0?document.body.removeAttribute(Wl):document.body.setAttribute(Wl,e.toString())}},[])},uA=function(e){var t=e.noRelative,n=e.noImportant,i=e.gapMode,l=i===void 0?"margin":i;dA();var d=S.useMemo(function(){return aA(l)},[l]);return S.createElement(lA,{styles:cA(d,!t,l,n?"":"!important")})},Cg=!1;if(typeof window<"u")try{var bh=Object.defineProperty({},"passive",{get:function(){return Cg=!0,!0}});window.addEventListener("test",bh,bh),window.removeEventListener("test",bh,bh)}catch{Cg=!1}var Ll=Cg?{passive:!1}:!1,hA=function(e){return e.tagName==="TEXTAREA"},_2=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!hA(e)&&n[t]==="visible")},mA=function(e){return _2(e,"overflowY")},pA=function(e){return _2(e,"overflowX")},Sb=function(e,t){var n=t.ownerDocument,i=t;do{typeof ShadowRoot<"u"&&i instanceof ShadowRoot&&(i=i.host);var l=S2(e,i);if(l){var d=N2(e,i),h=d[1],m=d[2];if(h>m)return!0}i=i.parentNode}while(i&&i!==n.body);return!1},fA=function(e){var t=e.scrollTop,n=e.scrollHeight,i=e.clientHeight;return[t,n,i]},gA=function(e){var t=e.scrollLeft,n=e.scrollWidth,i=e.clientWidth;return[t,n,i]},S2=function(e,t){return e==="v"?mA(t):pA(t)},N2=function(e,t){return e==="v"?fA(t):gA(t)},yA=function(e,t){return e==="h"&&t==="rtl"?-1:1},xA=function(e,t,n,i,l){var d=yA(e,window.getComputedStyle(t).direction),h=d*i,m=n.target,g=t.contains(m),y=!1,x=h>0,w=0,j=0;do{if(!m)break;var P=N2(e,m),C=P[0],k=P[1],A=P[2],E=k-A-d*C;(C||E)&&S2(e,m)&&(w+=E,j+=C);var $=m.parentNode;m=$&&$.nodeType===Node.DOCUMENT_FRAGMENT_NODE?$.host:$}while(!g&&m!==document.body||g&&(t.contains(m)||t===m));return(x&&Math.abs(w)<1||!x&&Math.abs(j)<1)&&(y=!0),y},wh=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Nb=function(e){return[e.deltaX,e.deltaY]},jb=function(e){return e&&"current"in e?e.current:e},vA=function(e,t){return e[0]===t[0]&&e[1]===t[1]},bA=function(e){return`
654  .block-interactivity-`.concat(e,` {pointer-events: none;}
655  .allow-interactivity-`).concat(e,` {pointer-events: all;}
656`)},wA=0,Ml=[];function _A(e){var t=S.useRef([]),n=S.useRef([0,0]),i=S.useRef(),l=S.useState(wA++)[0],d=S.useState(w2)[0],h=S.useRef(e);S.useEffect(function(){h.current=e},[e]),S.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(l));var k=U9([e.lockRef.current],(e.shards||[]).map(jb),!0).filter(Boolean);return k.forEach(function(A){return A.classList.add("allow-interactivity-".concat(l))}),function(){document.body.classList.remove("block-interactivity-".concat(l)),k.forEach(function(A){return A.classList.remove("allow-interactivity-".concat(l))})}}},[e.inert,e.lockRef.current,e.shards]);var m=S.useCallback(function(k,A){if("touches"in k&&k.touches.length===2||k.type==="wheel"&&k.ctrlKey)return!h.current.allowPinchZoom;var E=wh(k),$=n.current,I="deltaX"in k?k.deltaX:$[0]-E[0],M="deltaY"in k?k.deltaY:$[1]-E[1],F,z=k.target,V=Math.abs(I)>Math.abs(M)?"h":"v";if("touches"in k&&V==="h"&&z.type==="range")return!1;var W=window.getSelection(),ne=W&&W.anchorNode,de=ne?ne===z||ne.contains(z):!1;if(de)return!1;var be=Sb(V,z);if(!be)return!0;if(be?F=V:(F=V==="v"?"h":"v",be=Sb(V,z)),!be)return!1;if(!i.current&&"changedTouches"in k&&(I||M)&&(i.current=F),!F)return!0;var Re=i.current||F;return xA(Re,A,k,Re==="h"?I:M)},[]),g=S.useCallback(function(k){var A=k;if(!(!Ml.length||Ml[Ml.length-1]!==d)){var E="deltaY"in A?Nb(A):wh(A),$=t.current.filter(function(F){return F.name===A.type&&(F.target===A.target||A.target===F.shadowParent)&&vA(F.delta,E)})[0];if($&&$.should){A.cancelable&&A.preventDefault();return}if(!$){var I=(h.current.shards||[]).map(jb).filter(Boolean).filter(function(F){return F.contains(A.target)}),M=I.length>0?m(A,I[0]):!h.current.noIsolation;M&&A.cancelable&&A.preventDefault()}}},[]),y=S.useCallback(function(k,A,E,$){var I={name:k,delta:A,target:E,should:$,shadowParent:SA(E)};t.current.push(I),setTimeout(function(){t.current=t.current.filter(function(M){return M!==I})},1)},[]),x=S.useCallback(function(k){n.current=wh(k),i.current=void 0},[]),w=S.useCallback(function(k){y(k.type,Nb(k),k.target,m(k,e.lockRef.current))},[]),j=S.useCallback(function(k){y(k.type,wh(k),k.target,m(k,e.lockRef.current))},[]);S.useEffect(function(){return Ml.push(d),e.setCallbacks({onScrollCapture:w,onWheelCapture:w,onTouchMoveCapture:j}),document.addEventListener("wheel",g,Ll),document.addEventListener("touchmove",g,Ll),document.addEventListener("touchstart",x,Ll),function(){Ml=Ml.filter(function(k){return k!==d}),document.removeEventListener("wheel",g,Ll),document.removeEventListener("touchmove",g,Ll),document.removeEventListener("touchstart",x,Ll)}},[]);var P=e.removeScrollBar,C=e.inert;return S.createElement(S.Fragment,null,C?S.createElement(d,{styles:bA(l)}):null,P?S.createElement(uA,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function SA(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const NA=Q9(b2,_A);var j2=S.forwardRef(function(e,t){return S.createElement(km,Ws({},e,{ref:t,sideCar:NA}))});j2.classNames=km.classNames;var jA=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Il=new WeakMap,_h=new WeakMap,Sh={},Tf=0,k2=function(e){return e&&(e.host||k2(e.parentNode))},kA=function(e,t){return t.map(function(n){if(e.contains(n))return n;var i=k2(n);return i&&e.contains(i)?i:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},CA=function(e,t,n,i){var l=kA(t,Array.isArray(e)?e:[e]);Sh[n]||(Sh[n]=new WeakMap);var d=Sh[n],h=[],m=new Set,g=new Set(l),y=function(w){!w||m.has(w)||(m.add(w),y(w.parentNode))};l.forEach(y);var x=function(w){!w||g.has(w)||Array.prototype.forEach.call(w.children,function(j){if(m.has(j))x(j);else try{var P=j.getAttribute(i),C=P!==null&&P!=="false",k=(Il.get(j)||0)+1,A=(d.get(j)||0)+1;Il.set(j,k),d.set(j,A),h.push(j),k===1&&C&&_h.set(j,!0),A===1&&j.setAttribute(n,"true"),C||j.setAttribute(i,"true")}catch(E){console.error("aria-hidden: cannot operate on ",j,E)}})};return x(t),m.clear(),Tf++,function(){h.forEach(function(w){var j=Il.get(w)-1,P=d.get(w)-1;Il.set(w,j),d.set(w,P),j||(_h.has(w)||w.removeAttribute(i),_h.delete(w)),P||w.removeAttribute(n)}),Tf--,Tf||(Il=new WeakMap,Il=new WeakMap,_h=new WeakMap,Sh={})}},PA=function(e,t,n){n===void 0&&(n="data-aria-hidden");var i=Array.from(Array.isArray(e)?e:[e]),l=jA(e);return l?(i.push.apply(i,Array.from(l.querySelectorAll("[aria-live], script"))),CA(i,l,n,"aria-hidden")):function(){return null}};function TA(e){const t=EA(e),n=S.forwardRef((i,l)=>{const{children:d,...h}=i,m=S.Children.toArray(d),g=m.find(RA);
vendor: 7,638 bytes, lines 656-660
656if(g){const y=g.props.children,x=m.map(w=>w===g?S.Children.count(y)>1?S.Children.only(null):S.isValidElement(y)?y.props.children:null:w);return r.jsx(t,{...h,ref:l,children:S.isValidElement(y)?S.cloneElement(y,void 0,x):null})}return r.jsx(t,{...h,ref:l,children:d})});return n.displayName=`${e}.Slot`,n}function EA(e){const t=S.forwardRef((n,i)=>{const{children:l,...d}=n;if(S.isValidElement(l)){const h=MA(l),m=LA(d,l.props);return l.type!==S.Fragment&&(m.ref=i?Nm(i,h):h),S.cloneElement(l,m)}return S.Children.count(l)>1?S.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var AA=Symbol("radix.slottable");function RA(e){return S.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===AA}function LA(e,t){const n={...t};for(const i in t){const l=e[i],d=t[i];/^on[A-Z]/.test(i)?l&&d?n[i]=(...m)=>{const g=d(...m);return l(...m),g}:l&&(n[i]=l):i==="style"?n[i]={...l,...d}:i==="className"&&(n[i]=[l,d].filter(Boolean).join(" "))}return{...e,...n}}function MA(e){var i,l;let t=(i=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:i.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(l=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:l.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Cm="Dialog",[C2]=a9(Cm),[IA,Ns]=C2(Cm),P2=e=>{const{__scopeDialog:t,children:n,open:i,defaultOpen:l,onOpenChange:d,modal:h=!0}=e,m=S.useRef(null),g=S.useRef(null),[y,x]=h9({prop:i,defaultProp:l??!1,onChange:d,caller:Cm});return r.jsx(IA,{scope:t,triggerRef:m,contentRef:g,contentId:_f(),titleId:_f(),descriptionId:_f(),open:y,onOpenChange:x,onOpenToggle:S.useCallback(()=>x(w=>!w),[x]),modal:h,children:n})};P2.displayName=Cm;var T2="DialogTrigger",E2=S.forwardRef((e,t)=>{const{__scopeDialog:n,...i}=e,l=Ns(T2,n),d=Ua(t,l.triggerRef);return r.jsx(Ai.button,{type:"button","aria-haspopup":"dialog","aria-expanded":l.open,"aria-controls":l.contentId,"data-state":P0(l.open),...i,ref:d,onClick:Lo(e.onClick,l.onOpenToggle)})});E2.displayName=T2;var k0="DialogPortal",[$A,A2]=C2(k0,{forceMount:void 0}),R2=e=>{const{__scopeDialog:t,forceMount:n,children:i,container:l}=e,d=Ns(k0,t);return r.jsx($A,{scope:t,forceMount:n,children:S.Children.map(i,h=>r.jsx(jm,{present:n||d.open,children:r.jsx(y2,{asChild:!0,container:l,children:h})}))})};R2.displayName=k0;var rm="DialogOverlay",L2=S.forwardRef((e,t)=>{const n=A2(rm,e.__scopeDialog),{forceMount:i=n.forceMount,...l}=e,d=Ns(rm,e.__scopeDialog);return d.modal?r.jsx(jm,{present:i||d.open,children:r.jsx(OA,{...l,ref:t})}):null});L2.displayName=rm;var DA=TA("DialogOverlay.RemoveScroll"),OA=S.forwardRef((e,t)=>{const{__scopeDialog:n,...i}=e,l=Ns(rm,n);return r.jsx(j2,{as:DA,allowPinchZoom:!0,shards:[l.contentRef],children:r.jsx(Ai.div,{"data-state":P0(l.open),...i,ref:t,style:{pointerEvents:"auto",...i.style}})})}),za="DialogContent",M2=S.forwardRef((e,t)=>{const n=A2(za,e.__scopeDialog),{forceMount:i=n.forceMount,...l}=e,d=Ns(za,e.__scopeDialog);return r.jsx(jm,{present:i||d.open,children:d.modal?r.jsx(FA,{...l,ref:t}):r.jsx(BA,{...l,ref:t})})});M2.displayName=za;var FA=S.forwardRef((e,t)=>{const n=Ns(za,e.__scopeDialog),i=S.useRef(null),l=Ua(t,n.contentRef,i);return S.useEffect(()=>{const d=i.current;if(d)return PA(d)},[]),r.jsx(I2,{...e,ref:l,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Lo(e.onCloseAutoFocus,d=>{var h;d.preventDefault(),(h=n.triggerRef.current)==null||h.focus()}),onPointerDownOutside:Lo(e.onPointerDownOutside,d=>{const h=d.detail.originalEvent,m=h.button===0&&h.ctrlKey===!0;(h.button===2||m)&&d.preventDefault()}),onFocusOutside:Lo(e.onFocusOutside,d=>d.preventDefault())})}),BA=S.forwardRef((e,t)=>{const n=Ns(za,e.__scopeDialog),i=S.useRef(!1),l=S.useRef(!1);return r.jsx(I2,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:d=>{var h,m;(h=e.onCloseAutoFocus)==null||h.call(e,d),d.defaultPrevented||(i.current||(m=n.triggerRef.current)==null||m.focus(),d.preventDefault()),i.current=!1,l.current=!1},onInteractOutside:d=>{var g,y;(g=e.onInteractOutside)==null||g.call(e,d),d.defaultPrevented||(i.current=!0,d.detail.originalEvent.type==="pointerdown"&&(l.current=!0));const h=d.target;((y=n.triggerRef.current)==null?void 0:y.contains(h))&&d.preventDefault(),d.detail.originalEvent.type==="focusin"&&l.current&&d.preventDefault()}})}),I2=S.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:i,onOpenAutoFocus:l,onCloseAutoFocus:d,...h}=e,m=Ns(za,n),g=S.useRef(null),y=Ua(t,g);return W9(),r.jsxs(r.Fragment,{children:[r.jsx(f2,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:l,onUnmountAutoFocus:d,children:r.jsx(m2,{role:"dialog",id:m.contentId,"aria-describedby":m.descriptionId,"aria-labelledby":m.titleId,"data-state":P0(m.open),...h,ref:y,onDismiss:()=>m.onOpenChange(!1)})}),r.jsxs(r.Fragment,{children:[r.jsx(zA,{titleId:m.titleId}),r.jsx(UA,{contentRef:g,descriptionId:m.descriptionId})]})]})}),C0="DialogTitle",$2=S.forwardRef((e,t)=>{const{__scopeDialog:n,...i}=e,l=Ns(C0,n);return r.jsx(Ai.h2,{id:l.titleId,...i,ref:t})});$2.displayName=C0;var D2="DialogDescription",O2=S.forwardRef((e,t)=>{const{__scopeDialog:n,...i}=e,l=Ns(D2,n);return r.jsx(Ai.p,{id:l.descriptionId,...i,ref:t})});O2.displayName=D2;var F2="DialogClose",B2=S.forwardRef((e,t)=>{const{__scopeDialog:n,...i}=e,l=Ns(F2,n);return r.jsx(Ai.button,{type:"button",...i,ref:t,onClick:Lo(e.onClick,()=>l.onOpenChange(!1))})});B2.displayName=F2;function P0(e){return e?"open":"closed"}var z2="DialogTitleWarning",[LD,W2]=o9(z2,{contentName:za,titleName:C0,docsSlug:"dialog"}),zA=({titleId:e})=>{const t=W2(z2),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
657
658If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
659
660For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return S.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},WA="DialogDescriptionWarning",UA=({contentRef:e,descriptionId:t})=>{const i=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${W2(WA).contentName}}.`;return S.useEffect(()=>{var d;const l=(d=e.current)==null?void 0:d.getAttribute("aria-describedby");t&&l&&(document.getElementById(t)||console.warn(i))},[i,e,t]),null},HA=P2,VA=E2,qA=R2,U2=L2,H2=M2,V2=$2,q2=O2,JA=B2;const GA=HA,ZA=VA,KA=qA,J2=S.forwardRef(({className:e,...t},n)=>r.jsx(U2,{className:Rr("fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t,ref:n}));J2.displayName=U2.displayName;const YA=Kg("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),G2=S.forwardRef(({side:e="right",className:t,children:n,...i},l)=>r.jsxs(KA,{children:[r.jsx(J2,{}),r.jsxs(H2,{ref:l,className:Rr(YA({side:e}),t),...i,children:[r.jsxs(JA,{className:"absolute right-4 top-4 roun
660ded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[r.jsx(Zs,{className:"h-4 w-4"}),r.jsx("span",{className:"sr-only",children:"Close"})]}),n]})]}));G2.displayName=H2.displayName;const Z2=({className:e,...t})=>r.jsx("div",{className:Rr("flex flex-col space-y-2 text-center sm:text-left",e),...t});Z2.displayName="SheetHeader";const K2=S.forwardRef(({className:e,...t},n)=>r.jsx(V2,{ref:n,className:Rr("text-lg font-semibold text-foreground",e),...t}));K2.displayName=V2.displayName;const QA=S.forwardRef(({className:e,...t},n)=>r.jsx(q2,{ref:n,className:Rr("text-sm text-muted-foreground",e),...t}));QA.displayName=q2.displayName;const kb={"Tree Service":58,"Junk Removal":61,"Chimney Liner & Masonry":62,"Handyman Service":53,"Water & Mold Cleanup":959};function XA(){return Math.floor(Date.now()/864e5)%10}function Kd(e,t=!1){const n=XA();if(kb[e])return kb[e];if(!e)return t?85:27;let i=0;for(let l=0;l<e.length;l++)i=(i<<5)-i+e.charCodeAt(l),i=i&i;return t?Math.abs(i)%21+75+n-4:Math.abs(i)%46+15+n-4}const id=[{name:"Air Conditioner Installation",icon:Kf,highDemand:!0},{name:"Appliance Repair",icon:wa},{name:"Basement Waterproofing",icon:cd},{name:"Bathroom Remodeling",icon:Lh},{name:"Carpet Cleaning",icon:Lh},{name:"Chimney Liner & Masonry",icon:Gh,trending:!0},{name:"Cleaning",icon:Lh},{name:"Custom Closets",icon:j1},{name:"Custom Garage",icon:Jf},{name:"Decks & Porches",icon:vd},{name:"Driveway Service",icon:Jf,highDemand:!0},{name:"Duct Cleaning",icon:Kf},{name:"Electrical",icon:Hd},{name:"Fencing",icon:P1},{name:"Garage Doors",icon:Gf},{name:"Gutter Service",icon:cd},{name:"Handyman Service",icon:_1,trending:!0},{name:"Heating System Installation",icon:tv},{name:"Home Inspection",icon:C1},{name:"Home Remodeling",icon:Gf},{name:"Junk Removal",icon:e0,trending:!0},{name:"Kitchen Remodeling",icon:ij},{name:"Landscaping",icon:Zf},{name:"Lawn Care",icon:j5},{name:"Moving Service",icon:A1},{name:"New Window & Door",icon:x1},{name:"Painting",icon:k1},{name:"Pest Control",icon:f1},{name:"Plumbing",icon:v1},{name:"Roofing",icon:vd,highDemand:!0},{name:"Sewer Camera Inspection",icon:pm},{name:"Sewer Descaling",icon:wa},{name:"Sewer Hydro Jetting",icon:cd},{name:"Sewer Relining",icon:wa},{name:"Sewer Rooter Service",icon:wa},{name:"Siding",icon:vd},{name:"Tree Service",icon:Zf,trending:!0},{name:"Water Fire Restoration",icon:Gh},{name:"Water Heater Installation",icon:tv,highDemand:!0},{name:"Water Softener",icon:cd}];function eR(e,t){const n=S.useMemo(()=>e.map(d=>Kd(d.name,d.highDemand||!1)),[]),[i,l]=S.useState(()=>n.map(()=>0));return S.useEffect(()=>{if(!t)return;l(n.map(()=>0));let d=0;const h=80,m=setInterval(()=>{d++,d>=h?(l([...n]),clearInterval(m)):l(n.map(g=>Math.floor(g*d/h)))},75);return()=>clearInterval(m)},[t]),i}function tR({label:e="Let's Get Started - Click Here",className:t="",open:n,onOpenChange:i}){const l=Hn(),[d,h]=S.useState(!1),m=n!==void 0?n:d,g=i||h,y=eR(id,m),[x,w]=S.useState(null),j=C=>C.replace(/\s*&\s*/g,"And").replace(/\s+/g,""),P=C=>{g(!1),w(`/${j(C)}`)};return r.jsxs(r.Fragment,{children:[x&&r.jsx(j0,{onConfirm:C=>{sessionStorage.setItem("userZip",C),l(x),w(null),window.scrollTo(0,0)},onClose:()=>w(null)}),r.jsxs(GA,{open:m,onOpenChange:g,children:[r.jsx(ZA,{asChild:!0,children:r.jsx("button",{className:`h-12 bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-bold text-base rounded-md shadow-lg px-8 cursor-pointer hidden ${t}`,children:e})}),r.jsxs(G2,{side:"bottom",className:"max-h-[80vh] overflow-y-auto rounded-t-2xl safe-bottom",children:[r.jsx(Z2,{className:"mb-4",children:r.jsx(K2,{children:"Select a Service"})}),r.jsx("div",{className:"grid grid-cols-1 divide-y divide-gray-100",children:id.map(({name:C,icon:k},A)=>r.jsxs("button",{onClick:()=>P(C),className:"flex items-center justify-between w-full py-3 px-1 text-left hover:bg-gray-50 transition-colors rounded-md group",children:[r.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[r.jsx("div",{className:"w-8 h-8 rounded-lg bg-[hsl(197,100%,95%)] flex items-center justify-center flex-shrink-0 group-hover:bg-[hsl(197,100%,88%)] transition-colors",children:r.jsx(k,{className:"w-4 h-4 text-[hsl(197,100%,40%)]"})}),r.jsxs("div",{className:"flex flex-col gap-1",children:[r.jsx("span",{className:"text-base text-foreground group-hover:text-[hsl(197,100%,35%)] font-medium transition-colors",children:C}),r.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[id[A].highDemand&&r.jsx("span",{className:"text-xs font-bold bg-red-500 text-white px-2 py-0.5 rounded-full",children:"🔥 High Demand"}),id[A].trending&&!id[A].highDemand&&r.jsx("span",{className:"text-xs font-bold bg-blue-500 text-white px-2 py-0.5 rounded-full",children:"📈 Trending"}),r.jsxs("div",{className:"flex items-center gap-1 bg-[#22c55e]/10 border border-[#22c55e] rounded-full px-2 py-0.5",children:[r.jsx("span",{className:"w-2 h-2 rounded-full bg-[#22c55e] animate-pulse inline-block",style:{boxShadow:"0 0 6px #22c55e, 0 0 12px rgba(34, 197, 94, 0.5)"}}),r.jsxs("span",{className:"text-xs text-[#22c55e] font-semibold",children:[y[A]," Estimates Today"]})]})]})]})]}),r.jsx(_s,{className:"w-4 h-4 text-gray-400 flex-shrink-0"})]},C))})]})]})]})}function nR(e){const[t,n]=S.useState(!1),[i,l]=S.useState(0),d=S.useRef(null),h=70;return S.useEffect(()=>{const m=x=>{window.scrollY===0&&(d.current=x.touches[0].clientY)},g=x=>{if(d.current===null)return;const w=x.touches[0].clientY-d.current;w>0&&window.scrollY===0&&(n(!0),l(Math.min(w*.4,h)))},y=()=>{t&&i>=h&&(e==null||e()),n(!1),l(0),d.current=null};return window.addEventListener("touchstart",m,{passive:!0}),window.addEventListener("touchmove",g,{passive:!0}),window.addEventListener("touchend",y),()=>{window.removeEventListener("touchstart",m),window.removeEventListener("touchmove",g),window.removeEventListener("touchend",y)}},[t,i,e]),{pulling:t,pullDistance:i,THRESHOLD:h}}function rR({pullDistance:e,threshold:t}){if(e===0)return null;const n=Math.min(e/t,1),i=n>=1;return r.jsx("div",{className:"fixed top-0 left-0 right-0 flex justify-center items-center z-50 pointer-events-none transition-all",style:{height:`${e}px`},children:r.jsx("div",{className:`w-9 h-9 rounded-full bg-white shadow-md flex items-center justify-center transition-colors ${i?"bg-[hsl(197,100%,50%)]":""}`,children:r.jsx(Qg,{className:`w-4 h-4 transition-colors ${i?"text-white":"text-gray-400"}`,style:{transform:`rotate(${n*360}deg)`}})})})}function Lr(){const e=Ei(),t=Hn(),n=e.pathname==="/";return r.jsx("nav",{className:"w-full bg-white shadow-sm sticky top-0 z-50 safe-top",children:r.jsxs("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 flex items-center justify-center h-28 sm:h-36 relative",children:[!n&&r.jsxs("button",{onClick:()=>t(-1),className:"sm:hidden flex items-center gap-1 text-sm text-gray-600 absolute left-4 -ml-1 min-h-[44px] min-w-[44px]",children:[r.jsx(lj,{className:"w-5 h-5"}),"Back"]}),r.jsxs(Qt,{to:"/",onClick:()=>window.scrollTo(0,0),className:"flex items-center gap-1 hover:opacity-80 transition-opacity",children:[r.jsx("img",{src:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/d40a5d8af_Screenshot2026-04-28115037.png",alt:"SnapEstimate.Ai logo",className:"h-20 sm:h-28 w-auto object-contain flex-shrink-0"}),r.jsx("span",{className:"text-xs sm:text-sm font-semibold text-[hsl(197,100%,50%)] self-center flex-shrink-0",children:"(Beta)"})]})]})})}function sR(){const e=Hn(),[t,n]=S.useState(""),[i,l]=S.useState(!1),d=S.useRef(null);return S.useEffect(()=>{const h=()=>{l(!0),clearTimeout(d.current),d.current=setTimeout(()=>l(!1),200)};return window.addEventListener("scroll",h,{passive:!0}),window.addEventListener("touchmove",h,{passive:!0}),()=>{window.removeEventListener("scroll",h),window.removeEventListener("touchmove",h)}},[]),r.jsxs(r.Fragment,{children:[t&&r.jsx(j0,{onConfirm:h=>{sessionStorage.setItem("userZip",h),e(t),n(""),window.scrollTo(0,0)},onClose:()=>n("")}),r.jsx("section",{className:"w-full bg-black",children:r.jsx("div",{className:"w-full max-w-5xl mx-auto",style:{aspectRatio:"16/9"},children:r.jsx("iframe",{src:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=home_page_kc46e8&autoplay=1&muted=false&controls=true&loop=false",allow:"autoplay; fullscreen; encrypted-media; picture-in-picture",allowFullScreen:!0,className:"w-full h-full",style:{border:"none",display:"block",pointerEvents:i?"none":"auto"}})})})]})}const T0=S.createContext({});function E0(e){const t=S.useRef(null);return t.current===null&&(t.current=e()),t.current}const Pm=S.createContext(null),A0=S.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});class iR extends S.Component{getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(n&&t.isPresent&&!this.props.isPresent){const i=this.props.sizeRef.current;i.height=n.offsetHeight||0,i.width=n.offsetWidth||0,i.top=n.offsetTop,i.left=n.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function oR({children:e,isPresent:t}){const n=S.useId(),i=S.useRef(null),l=S.useRef({width:0,height:0,top:0,left:0}),{nonce:d}=S.useContext(A0);return S.useInsertionEffect(()=>{const{width:h,height:m,top:g,left:y}=l.current;if(t||!i.current||!h||!m)return;i.current.dataset.motionPopId=n;const x=document.createElement("style");return d&&(x.nonce=d),document.head.appendChild(x),x.sheet&&x.sheet.insertRule(`
661          [data-motion-pop-id="${n}"] {
662            position: absolute !important;
663            width: ${h}px !important;
664            height: ${m}px !important;
665            top: ${g}px !important;
666            left: ${y}px !important;
667          }
668        `),()=>{document.head.removeChild(x)}},[t]),r.jsx(iR,{isPresent:t,childRef:i,sizeRef:l,children:S.cloneElement(e,{ref:i})})}const aR=({children:e,initial:t,isPresent:n,onExitComplete:i,custom:l,presenceAffectsLayout:d,mode:h})=>{const m=E0(lR),g=S.useId(),y=S.useCallback(w=>{m.set(w,!0);for(const j of m.values())if(!j)return;i&&i()},[m,i]),x=S.useMemo(()=>({id:g,initial:t,isPresent:n,custom:l,onExitComplete:y,register:w=>(m.set(w,!1),()=>m.delete(w))}),d?[Math.random(),y]:[n,y]);return S.useMemo(()=>{m.forEach((w,j)=>m.set(j,!1))},[n]),S.useEffect(()=>{!n&&!m.size&&i&&i()},[n]),h==="popLayout"&&(e=r.jsx(oR,{isPresent:n,children:e})),r.jsx(Pm.Provider,{value:x,children:e})};function lR(){return new Map}function Y2(e=!0){const t=S.useContext(Pm);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:i,register:l}=t,d=S.useId();S.useEffect(()=>{e&&l(d)},[e]);const h=S.useCallback(()=>e&&i&&i(d),[d,i,e]);return!n&&i?[!1,h]:[!0]}const Nh=e=>e.key||"";function Cb(e){const t=[];
vendor: 6,833 bytes, line 668
668return S.Children.forEach(e,n=>{S.isValidElement(n)&&t.push(n)}),t}const R0=typeof window<"u",Q2=R0?S.useLayoutEffect:S.useEffect,Yd=({children:e,custom:t,initial:n=!0,onExitComplete:i,presenceAffectsLayout:l=!0,mode:d="sync",propagate:h=!1})=>{const[m,g]=Y2(h),y=S.useMemo(()=>Cb(e),[e]),x=h&&!m?[]:y.map(Nh),w=S.useRef(!0),j=S.useRef(y),P=E0(()=>new Map),[C,k]=S.useState(y),[A,E]=S.useState(y);Q2(()=>{w.current=!1,j.current=y;for(let M=0;M<A.length;M++){const F=Nh(A[M]);x.includes(F)?P.delete(F):P.get(F)!==!0&&P.set(F,!1)}},[A,x.length,x.join("-")]);const $=[];if(y!==C){let M=[...y];for(let F=0;F<A.length;F++){const z=A[F],V=Nh(z);x.includes(V)||(M.splice(F,0,z),$.push(z))}d==="wait"&&$.length&&(M=$),E(Cb(M)),k(y);return}const{forceRender:I}=S.useContext(T0);return r.jsx(r.Fragment,{children:A.map(M=>{const F=Nh(M),z=h&&!m?!1:y===A||x.includes(F),V=()=>{if(P.has(F))P.set(F,!0);else return;let W=!0;P.forEach(ne=>{ne||(W=!1)}),W&&(I==null||I(),E(j.current),h&&(g==null||g()),i&&i())};return r.jsx(aR,{isPresent:z,initial:!w.current||n?void 0:!1,custom:z?void 0:t,presenceAffectsLayout:l,mode:d,onExitComplete:z?void 0:V,children:M},F)})})},Tr=e=>e;let X2=Tr;function L0(e){let t;return()=>(t===void 0&&(t=e()),t)}const rc=(e,t,n)=>{const i=t-e;return i===0?1:(n-e)/i},Ni=e=>e*1e3,ji=e=>e/1e3,cR={useManualTiming:!1};function dR(e){let t=new Set,n=new Set,i=!1,l=!1;const d=new WeakSet;let h={delta:0,timestamp:0,isProcessing:!1};function m(y){d.has(y)&&(g.schedule(y),e()),y(h)}const g={schedule:(y,x=!1,w=!1)=>{const P=w&&i?t:n;return x&&d.add(y),P.has(y)||P.add(y),y},cancel:y=>{n.delete(y),d.delete(y)},process:y=>{if(h=y,i){l=!0;return}i=!0,[t,n]=[n,t],t.forEach(m),t.clear(),i=!1,l&&(l=!1,g.process(y))}};return g}const jh=["read","resolveKeyframes","update","preRender","render","postRender"],uR=40;function eS(e,t){let n=!1,i=!0;const l={delta:0,timestamp:0,isProcessing:!1},d=()=>n=!0,h=jh.reduce((E,$)=>(E[$]=dR(d),E),{}),{read:m,resolveKeyframes:g,update:y,preRender:x,render:w,postRender:j}=h,P=()=>{const E=performance.now();n=!1,l.delta=i?1e3/60:Math.max(Math.min(E-l.timestamp,uR),1),l.timestamp=E,l.isProcessing=!0,m.process(l),g.process(l),y.process(l),x.process(l),w.process(l),j.process(l),l.isProcessing=!1,n&&t&&(i=!1,e(P))},C=()=>{n=!0,i=!0,l.isProcessing||e(P)};return{schedule:jh.reduce((E,$)=>{const I=h[$];return E[$]=(M,F=!1,z=!1)=>(n||C(),I.schedule(M,F,z)),E},{}),cancel:E=>{for(let $=0;$<jh.length;$++)h[jh[$]].cancel(E)},state:l,steps:h}}const{schedule:Ft,cancel:Mo,state:Cn,steps:Ef}=eS(typeof requestAnimationFrame<"u"?requestAnimationFrame:Tr,!0),tS=S.createContext({strict:!1}),Pb={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},sc={};for(const e in Pb)sc[e]={isEnabled:t=>Pb[e].some(n=>!!t[n])};function hR(e){for(const t in e)sc[t]={...sc[t],...e[t]}}const mR=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function sm(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||mR.has(e)}let nS=e=>!sm(e);function pR(e){e&&(nS=t=>t.startsWith("on")?!sm(t):e(t))}try{pR(require("@emotion/is-prop-valid").default)}catch{}function fR(e,t,n){const i={};for(const l in e)l==="values"&&typeof e.values=="object"||(nS(l)||n===!0&&sm(l)||!t&&!sm(l)||e.draggable&&l.startsWith("onDrag"))&&(i[l]=e[l]);return i}function gR(e){if(typeof Proxy>"u")return e;const t=new Map,n=(...i)=>e(...i);return new Proxy(n,{get:(i,l)=>l==="create"?e:(t.has(l)||t.set(l,e(l)),t.get(l))})}const Tm=S.createContext({});function Ld(e){return typeof e=="string"||Array.isArray(e)}function Em(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}const M0=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],I0=["initial",...M0];function Am(e){return Em(e.animate)||I0.some(t=>Ld(e[t]))}function rS(e){return!!(Am(e)||e.variants)}function yR(e,t){if(Am(e)){const{initial:n,animate:i}=e;return{initial:n===!1||Ld(n)?n:void 0,animate:Ld(i)?i:void 0}}return e.inherit!==!1?t:{}}function xR(e){const{initial:t,animate:n}=yR(e,S.useContext(Tm));return S.useMemo(()=>({initial:t,animate:n}),[Tb(t),Tb(n)])}function Tb(e){return Array.isArray(e)?e.join(" "):e}const vR=Symbol.for("motionComponentSymbol");function $l(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function bR(e,t,n){return S.useCallback(i=>{i&&e.onMount&&e.onMount(i),t&&(i?t.mount(i):t.unmount()),n&&(typeof n=="function"?n(i):$l(n)&&(n.current=i))},[t])}const $0=e=>e.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),wR="framerAppearId",sS="data-"+$0(wR),{schedule:D0}=eS(queueMicrotask,!1),iS=S.createContext({});function _R(e,t,n,i,l){var d,h;const{visualElement:m}=S.useContext(Tm),g=S.useContext(tS),y=S.useContext(Pm),x=S.useContext(A0).reducedMotion,w=S.useRef(null);i=i||g.renderer,!w.current&&i&&(w.current=i(e,{visualState:t,parent:m,props:n,presenceContext:y,blockInitialAnimation:y?y.initial===!1:!1,reducedMotionConfig:x}));const j=w.current,P=S.useContext(iS);j&&!j.projection&&l&&(j.type==="html"||j.type==="svg")&&SR(w.current,n,l,P);const C=S.useRef(!1);S.useInsertionEffect(()=>{j&&C.current&&j.update(n,y)});const k=n[sS],A=S.useRef(!!k&&!(!((d=window.MotionHandoffIsComplete)===null||d===void 0)&&d.call(window,k))&&((h=window.MotionHasOptimisedAnimation)===null||h===void 0?void 0:h.call(window,k)));return Q2(()=>{j&&(C.current=!0,window.MotionIsMounted=!0,j.updateFeatures(),D0.render(j.render),A.current&&j.animationState&&j.animationState.animateChanges())}),S.useEffect(()=>{j&&(!A.current&&j.animationState&&j.animationState.animateChanges(),A.current&&(queueMicrotask(()=>{var E;(E=window.MotionHandoffMarkAsComplete)===null||E===void 0||E.call(window,k)}),A.current=!1))}),j}function SR(e,t,n,i){const{layoutId:l,layout:d,drag:h,dragConstraints:m,layoutScroll:g,layoutRoot:y}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:oS(e.parent)),e.projection.setOptions({layoutId:l,layout:d,alwaysMeasureLayout:!!h||m&&$l(m),visualElement:e,animationType:typeof d=="str
668ing"?d:"both",initialPromotionConfig:i,layoutScroll:g,layoutRoot:y})}function oS(e){if(e)return e.options.allowProjection!==!1?e.projection:oS(e.parent)}function NR({preloadedFeatures:e,createVisualElement:t,useRender:n,useVisualState:i,Component:l}){var d,h;e&&hR(e);function m(y,x){let w;const j={...S.useContext(A0),...y,layoutId:jR(y)},{isStatic:P}=j,C=xR(y),k=i(y,P);if(!P&&R0){kR();const A=CR(j);w=A.MeasureLayout,C.visualElement=_R(l,k,j,t,A.ProjectionNode)}return r.jsxs(Tm.Provider,{value:C,children:[w&&C.visualElement?r.jsx(w,{visualElement:C.visualElement,...j}):null,n(l,y,bR(k,C.visualElement,x),k,P,C.visualElement)]})}m.displayName=`motion.${typeof l=="string"?l:`create(${(h=(d=l.displayName)!==null&&d!==void 0?d:l.name)!==null&&h!==void 0?h:""})`}`;const g=S.forwardRef(m);return g[vR]=l,g}function jR({layoutId:e}){const t=S.useContext(T0).id;return t&&e!==void 0?t+"-"+e:e}function kR(e,t){S.useContext(tS).strict}function CR(e){const{drag:t,layout:n}=sc;if(!t&&!n)return{};const i={...t,...n};return{MeasureLayout:t!=null&&t.isEnabled(e)||n!=null&&n.isEnabled(e)?i.MeasureLayout:void 0,ProjectionNode:i.ProjectionNode}}const PR=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function O0(e){return typeof e!="string"||e.includes("-")?!1:!!(PR.indexOf(e)>-1||/[A-Z]/u.test(e))}function Eb(e){const t=[{},{}];return e==null||e.values.forEach((n,i)=>{t[0][i]=n.get(),t[1][i]=n.getVelocity()}),t}function F0(e,t,n,i){if(typeof t=="function"){const[l,d]=Eb(i);t=t(n!==void 0?n:e.custom,l,d)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){const[l,d]=Eb(i);t=t(n!==void 0?n:e.custom,l,d)}return t}const Pg=e=>Array.isArray(e),TR=e=>!!(e&&typeof e=="object"&&e.mix&&e.toValue),ER=e=>Pg(e)?e[e.length-1]||0:e,Wn=e=>!!(e&&e.getVelocity);function Uh(e){const t=Wn(e)?e.get():e;return TR(t)?t.toValue():t}function AR({scrapeMotionValuesFromProps:e,createRenderState:t,onUpdate:n},i,l,d){const h={latestValues:RR(i,l,d,e),renderState:t()};return n&&(h.onMount=m=>n({props:i,current:m,...h}),h.onUpdate=m=>n(m)),h}const aS=e=>(t,n)=>{const i=S.useContext(Tm),l=S.useContext(Pm),d=()=>AR(e,t,i,l);return n?d():E0(d)};function RR(e,t,n,i){const l={},d=i(e,{});for(const j in d)l[j]=Uh(d[j]);let{initial:h,animate:m}=e;const g=Am(e),y=rS(e);t&&y&&!g&&e.inherit!==!1&&(h===void 0&&(h=t.initial),m===void 0&&(m=t.animate));let x=n?n.initial===!1:!1;x=x||h===!1;const w=x?m:h;if(w&&typeof w!="boolean"&&!Em(w)){const j=Array.isArray(w)?w:[w];for(let P=0;P<j.length;P++){const C=F0(e,j[P]);if(C){const{transitionEnd:k,transition:A,...E}=C;for(const $ in E){let I=E[$];if(Array.isArray(I)){const M=x?I.length-1:0;I=I[M]}I!==null&&(l[$]=I)}for(const $ in k)l[$]=k[$]}}}return l}const hc=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Ha=new Set(hc),lS=e=>t=>typeof t=="string"&&t.startsWith(e),cS=lS("--"),LR=lS("var(--"),B0=e=>LR(e)?MR.test(e.split("/*")[0].trim()):!1,MR=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,dS=(e,t)=>t&&typeof e=="number"?t.transform(e):e,Pi=(e,t,n)=>n>t?t:n<e?e:n,mc={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Md={...mc,transform:e=>Pi(0,1,e)},kh={...mc,default:1},Qd=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),bo=Qd("deg"),Hs=Qd("%"),Ve=Qd("px"),IR=Qd("vh"),$R=Qd("vw"),Ab={...Hs,parse:e=>Hs.parse(e)/100,transform:e=>Hs.transform(e*100)},DR={borderWidth:Ve,borderTopWidth:Ve,borderRightWidth:Ve,borderBottomWidth:Ve,borderLeftWidth:Ve,borderRadius:Ve,radius:Ve,borderTopLeftRadius:Ve,borderTopRightRadius:Ve,borderBottomRightRadius:Ve,borderBottomLeftRadius:Ve,width:Ve,maxWidth:Ve,height:Ve,maxHeight:Ve,top:Ve,right:Ve,bottom:Ve,left:Ve,padding:Ve,paddingTop:Ve,paddingRight:Ve,paddingBottom:Ve,paddingLeft:Ve,margin:Ve,marginTop:Ve,marginRight:Ve,marginBottom:Ve,marginLeft:Ve,backgroundPositionX:Ve,backgroundPositionY:Ve},OR={rotate:bo,rotateX:bo,rotateY:bo,rotateZ:bo,scale:kh,scaleX:kh,scaleY:kh,scaleZ:kh,skew:bo,skewX:bo,skewY:bo,distance:Ve,translateX:Ve,translateY:Ve,translateZ:Ve,x:Ve,y:Ve,z:Ve,perspective:Ve,transformPerspective:Ve,opacity:Md,originX:Ab,originY:Ab,originZ:Ve},Rb={...mc,transform:Math.round},z0={...DR,...OR,zIndex:Rb,size:Ve,fillOpacity:Md,strokeOpacity:Md,numOctaves:Rb},FR={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},BR=hc.length;function zR(e,t,n){let i="",l=!0;for(let d=0;d<BR;d++){const h=hc[d],m=e[h];if(m===void 0)continue;let g=!0;if(typeof m=="number"?g=m===(h.startsWith("scale")?1:0):g=parseFloat(m)===0,!g||n){const y=dS(m,z0[h]);if(!g){l=!1;const x=FR[h]||h;i+=`${x}(${y}) `}n&&(t[h]=y)}}return i=i.trim(),n?i=n(t,l?"":i):l&&(i="none"),i}
vendor: 18,286 bytes, line 668
668function W0(e,t,n){const{style:i,vars:l,transformOrigin:d}=e;let h=!1,m=!1;for(const g in t){const y=t[g];if(Ha.has(g)){h=!0;continue}else if(cS(g)){l[g]=y;continue}else{const x=dS(y,z0[g]);g.startsWith("origin")?(m=!0,d[g]=x):i[g]=x}}if(t.transform||(h||n?i.transform=zR(t,e.transform,n):i.transform&&(i.transform="none")),m){const{originX:g="50%",originY:y="50%",originZ:x=0}=d;i.transformOrigin=`${g} ${y} ${x}`}}const WR={offset:"stroke-dashoffset",array:"stroke-dasharray"},UR={offset:"strokeDashoffset",array:"strokeDasharray"};function HR(e,t,n=1,i=0,l=!0){e.pathLength=1;const d=l?WR:UR;e[d.offset]=Ve.transform(-i);const h=Ve.transform(t),m=Ve.transform(n);e[d.array]=`${h} ${m}`}function Lb(e,t,n){return typeof e=="string"?e:Ve.transform(t+n*e)}function VR(e,t,n){const i=Lb(t,e.x,e.width),l=Lb(n,e.y,e.height);return`${i} ${l}`}function U0(e,{attrX:t,attrY:n,attrScale:i,originX:l,originY:d,pathLength:h,pathSpacing:m=1,pathOffset:g=0,...y},x,w){if(W0(e,y,w),x){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:j,style:P,dimensions:C}=e;j.transform&&(C&&(P.transform=j.transform),delete j.transform),C&&(l!==void 0||d!==void 0||P.transform)&&(P.transformOrigin=VR(C,l!==void 0?l:.5,d!==void 0?d:.5)),t!==void 0&&(j.x=t),n!==void 0&&(j.y=n),i!==void 0&&(j.scale=i),h!==void 0&&HR(j,h,m,g,!1)}const H0=()=>({style:{},transform:{},transformOrigin:{},vars:{}}),uS=()=>({...H0(),attrs:{}}),V0=e=>typeof e=="string"&&e.toLowerCase()==="svg";function hS(e,{style:t,vars:n},i,l){Object.assign(e.style,t,l&&l.getProjectionStyles(i));for(const d in n)e.style.setProperty(d,n[d])}const mS=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function pS(e,t,n,i){hS(e,t,void 0,i);for(const l in t.attrs)e.setAttribute(mS.has(l)?l:$0(l),t.attrs[l])}const im={};function qR(e){Object.assign(im,e)}function fS(e,{layout:t,layoutId:n}){return Ha.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!im[e]||e==="opacity")}function q0(e,t,n){var i;const{style:l}=e,d={};for(const h in l)(Wn(l[h])||t.style&&Wn(t.style[h])||fS(h,e)||((i=n==null?void 0:n.getValue(h))===null||i===void 0?void 0:i.liveStyle)!==void 0)&&(d[h]=l[h]);return d}function gS(e,t,n){const i=q0(e,t,n);for(const l in e)if(Wn(e[l])||Wn(t[l])){const d=hc.indexOf(l)!==-1?"attr"+l.charAt(0).toUpperCase()+l.substring(1):l;i[d]=e[l]}return i}function JR(e,t){try{t.dimensions=typeof e.getBBox=="function"?e.getBBox():e.getBoundingClientRect()}catch{t.dimensions={x:0,y:0,width:0,height:0}}}const Mb=["x","y","width","height","cx","cy","r"],GR={useVisualState:aS({scrapeMotionValuesFromProps:gS,createRenderState:uS,onUpdate:({props:e,prevProps:t,current:n,renderState:i,latestValues:l})=>{if(!n)return;let d=!!e.drag;if(!d){for(const m in l)if(Ha.has(m)){d=!0;break}}if(!d)return;let h=!t;if(t)for(let m=0;m<Mb.length;m++){const g=Mb[m];e[g]!==t[g]&&(h=!0)}h&&Ft.read(()=>{JR(n,i),Ft.render(()=>{U0(i,l,V0(n.tagName),e.transformTemplate),pS(n,i)})})}})},ZR={useVisualState:aS({scrapeMotionValuesFromProps:q0,createRenderState:H0})};function yS(e,t,n){for(const i in t)!Wn(t[i])&&!fS(i,n)&&(e[i]=t[i])}function KR({transformTemplate:e},t){return S.useMemo(()=>{const n=H0();return W0(n,t,e),Object.assign({},n.vars,n.style)},[t])}function YR(e,t){const n=e.style||{},i={};return yS(i,n,e),Object.assign(i,KR(e,t)),i}function QR(e,t){const n={},i=YR(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,i.userSelect=i.WebkitUserSelect=i.WebkitTouchCallout="none",i.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=i,n}function XR(e,t,n,i){const l=S.useMemo(()=>{const d=uS();return U0(d,t,V0(i),e.transformTemplate),{...d.attrs,style:{...d.style}}},[t]);if(e.style){const d={};yS(d,e.style,e),l.style={...d,...l.style}}return l}function eL(e=!1){return(n,i,l,{latestValues:d},h)=>{const g=(O0(n)?XR:QR)(i,d,h,n),y=fR(i,typeof n=="string",e),x=n!==S.Fragment?{...y,...g,ref:l}:{},{children:w}=i,j=S.useMemo(()=>Wn(w)?w.get():w,[w]);return S.createElement(n,{...x,children:j})}}function tL(e,t){return function(i,{forwardMotionProps:l}={forwardMotionProps:!1}){const h={...O0(i)?GR:ZR,preloadedFeatures:e,useRender:eL(l),createVisualElement:t,Component:i};return NR(h)}}function xS(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let i=0;i<n;i++)if(t[i]!==e[i])return!1;return!0}function Rm(e,t,n){const i=e.getProps();return F0(i,t,n!==void 0?n:i.custom,e)}const nL=L0(()=>window.ScrollTimeline!==void 0);class rL{constructor(t){this.stop=()=>this.runAll("stop"),this.animations=t.filter(Boolean)}get finished(){return Promise.all(this.animations.map(t=>"finished"in t?t.finished:t))}getAll(t){return this.animations[0][t]}setAll(t,n){for(let i=0;i<this.animations.length;i++)this.animations[i][t]=n}attachTimeline(t,n){const i=this.animations.map(l=>{if(nL()&&l.attachTimeline)return l.attachTimeline(t);if(typeof n=="function")return n(l)});return()=>{i.forEach((l,d)=>{l&&l(),this.animations[d].stop()})}}get time(){return this.getAll("time")}set time(t){this.setAll("time",t)}get speed(){return this.getAll("speed")}set speed(t){this.setAll("speed",t)}get startTime(){return this.getAll("startTime")}get duration(){let t=0;for(let n=0;n<this.animations.length;n++)t=Math.max(t,this.animations[n].duration);return t}runAll(t){this.animations.forEach(n=>n[t]())}flatten(){this.runAll("flatten")}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}class sL extends rL{then(t,n){return Promise.all(this.animations).then(t).catch(n)}}function J0(e,t){return e?e[t]||e.default||e:void 0}const Tg=2e4;function vS(e){let t=0;const n=50;let i=e.next(t);for(;!i.done&&t<Tg;)t+=n,i=e.next(t);return t>=Tg?1/0:t}function G0(e){return typeof e=="function"}function Ib(e,t){e.timeline=t,e.onfinish=null}const Z0=e=>Array.isArray(e)&&typeof e[0]=="number",iL={linearEasing:void 0};function oL(e,t){const n=L0(e);return()=>{var i;return(i=iL[t])!==null&&i!==void 0?i:n()}}const om=oL(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),bS=(e,t,n=10)=>{let i="";const l=Math.max(Math.round(t/n),2);for(let d=0;d<l;d++)i+=e(rc(0,l-1,d))+", ";return`linear(${i.substring(0,i.length-2)})`};function wS(e){return!!(typeof e=="function"&&om()||!e||typeof e=="string"&&(e in Eg||om())||Z0(e)||Array.isArray(e)&&e.every(wS))}const pd=([e,t,n,i])=>`cubic-bezier(${e}, ${t}, ${n}, ${i})`,Eg={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:pd([0,.65,.55,1]),circOut:pd([.55,0,1,.45]),backIn:pd([.31,.01,.66,-.59]),backOut:pd([.33,1.53,.69,.99])};function _S(e,t){if(e)return typeof e=="function"&&om()?bS(e,t):Z0(e)?pd(e):Array.isArray(e)?e.map(n=>_S(n,t)||Eg.easeOut):Eg[e]}const xs={x:!1,y:!1};function SS(){return xs.x||xs.y}function aL(e,t,n){var i;if(e instanceof Element)return[e];if(typeof e=="string"){let l=document;const d=(i=void 0)!==null&&i!==void 0?i:l.querySelectorAll(e);return d?Array.from(d):[]}return Array.from(e)}function NS(e,t){const n=aL(e),i=new AbortController,l={passive:!0,...t,signal:i.signal};return[n,l,()=>i.abort()]}function $b(e){return t=>{t.pointerType==="touch"||SS()||e(t)}}function lL(e,t,n={}){const[i,l,d]=NS(e,n),h=$b(m=>{const{target:g}=m,y=t(m);if(typeof y!="function"||!g)return;const x=$b(w=>{y(w),g.removeEventListener("pointerleave",x)});g.addEventListener("pointerleave",x,l)});return i.forEach(m=>{m.addEventListener("pointerenter",h,l)}),d}const jS=(e,t)=>t?e===t?!0:jS(e,t.parentElement):!1,K0=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1,cL=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function dL(e){return cL.has(e.tagName)||e.tabIndex!==-1}const fd=new WeakSet;function Db(e){return t=>{t.key==="Enter"&&e(t)}}function Af(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}const uL=(e,t)=>{const n=e.currentTarget;if(!n)return;const i=Db(()=>{if(fd.has(n))return;Af(n,"down");const l=Db(()=>{Af(n,"up")}),d=()=>Af(n,"cancel");n.addEventListener("keyup",l,t),n.addEventListener("blur",d,t)});n.addEventListener("keydown",i,t),n.addEventListener("blur",()=>n.removeEventListener("keydown",i),t)};function Ob(e){return K0(e)&&!SS()}function hL(e,t,n={}){const[i,l,d]=NS(e,n),h=m=>{const g=m.currentTarget;if(!Ob(m)||fd.has(g))return;fd.add(g);const y=t(m),x=(P,C)=>{window.removeEventListener("pointerup",w),window.removeEventListener("pointercancel",j),!(!Ob(P)||!fd.has(g))&&(fd.delete(g),typeof y=="function"&&y(P,{success:C}))},w=P=>{x(P,n.useGlobalTarget||jS(g,P.target))},j=P=>{x(P,!1)};window.addEventListener("pointerup",w,l),window.addEventListener("pointercancel",j,l)};return i.forEach(m=>{!dL(m)&&m.getAttribute("tabindex")===null&&(m.tabIndex=0),(n.useGlobalTarget?window:m).addEventListener("pointerdown",h,l),m.addEventListener("focus",y=>uL(y,l),l)}),d}function mL(e){return e==="x"||e==="y"?xs[e]?null:(xs[e]=!0,()=>{xs[e]=!1}):xs.x||xs.y?null:(xs.x=xs.y=!0,()=>{xs.x=xs.y=!1})}const kS=new Set(["width","height","top","left","right","bottom",...hc]);let Hh;function pL(){Hh=void 0}const Vs={now:()=>(Hh===void 0&&Vs.set(Cn.isProcessing||cR.useManualTiming?Cn.timestamp:performance.now()),Hh),set:e=>{Hh=e,queueMicrotask(pL)}};function Y0(e,t){e.indexOf(t)===-1&&e.push(t)}function Q0(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class X0{constructor(){this.subscriptions=[]}add(t){return Y0(this.subscriptions,t),()=>Q0(this.subscriptions,t)}notify(t,n,i){const l=this.subscriptions.length;if(l)if(l===1)this.subscriptions[0](t,n,i);else for(let d=0;d<l;d++){const h=this.subscriptions[d];h&&h(t,n,i)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}function CS(e,t){return t?e*(1e3/t):0}const Fb=30,fL=e=>!isNaN(parseFloat(e));class gL{constructor(t,n={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(i,l=!0)=>{const d=Vs.now();this.updatedAt!==d&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(i),this.current!==this.prev&&this.events.change&&this.events.change.notify(this.current),l&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.hasAnimated=!1,this.setCurrent(t),this.owner=n.owner}setCurrent(t){this.current=t,this.updatedAt=Vs.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=fL(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new X0);const i=this.events[t].add(n);return t==="change"?()=>{i(),Ft.read(()=>{this.events.change.getSize()||this.stop()})}:i}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t,n=!0){!n||!this.passiveEffect?this.updateAndNotify(t,n):this.passiveEffect(t,this.updateAndNotify)}setWithVelocity(t,n,i){this.set(n),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-i}jump(t,n=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,n&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const t=Vs.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>Fb)return 0;const n=Math.min(this.updatedAt-this.prevUpdatedAt,Fb);return CS(parseFloat(this.current)-parseFloat(this.prevFrameValue),n)}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Id(e,t){return new gL(e,t)}function yL(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,Id(n))}function xL(e,t){const n=Rm(e,t);let{transitionEnd:i={},transition:l={},...d}=n||{};d={...d,...i};for(const h in d){const m=ER(d[h]);yL(e,h,m)}}function vL(e){return!!(Wn(e)&&e.add)}function Ag(e,t){const n=e.getValue("willChange");if(vL(n))return n.add(t)}function PS(e){return e.props[sS]}const TS=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,bL=1e-7,wL=12;function _L(e,t,n,i,l){let d,h,m=0;do h=t+(n-t)/2,d=TS(h,i,l)-e,d>0?n=h:t=h;while(Math.abs(d)>bL&&++m<wL);return h}function Xd(e,t,n,i){if(e===t&&n===i)return Tr;const l=d=>_L(d,0,1,e,n);return d=>d===0||d===1?d:TS(l(d),t,i)}const ES=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,AS=e=>t=>1-e(1-t),RS=Xd(.33,1.53,.69,.99),ey=AS(RS),LS=ES(ey),MS=e=>(e*=2)<1?.5*ey(e):.5*(2-Math.pow(2,-10*(e-1))),ty=e=>1-Math.sin(Math.acos(e)),IS=AS(ty),$S=ES(ty),DS=e=>/^0[^.\s]+$/u.test(e);function SL(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||DS(e):!0}const wd=e=>Math.round(e*1e5)/1e5,ny=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function NL(e){return e==null}const jL=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,ry=(e,t)=>n=>!!(typeof n=="string"&&jL.test(n)&&n.startsWith(e)||t&&!NL(n)&&Object.prototype.hasOwnProperty.call(n,t)),OS=(e,t,n)=>i=>{if(typeof i!="string")return i;const[l,d,h,m]=i.match(ny);return{[e]:parseFloat(l),[t]:parseFloat(d),[n]:parseFloat(h),alpha:m!==void 0?parseFloat(m):1}},kL=e=>Pi(0,255,e),Rf={...mc,transform:e=>Math.round(kL(e))},Na={test:ry("rgb","red"),parse:OS("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:i=1})=>"rgba("+Rf.transform(e)+", "+Rf.transform(t)+", "+Rf.transform(n)+", "+wd(Md.transform(i))+")"};function CL(e){let t="",n="",i="",l="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),i=e.substring(5,7),l=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),i=e.substring(3,4),l=e.substring(4,5),t+=t,n+=n,i+=i,l+=l),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(i,16),alpha:l?parseInt(l,16)/255:1}}const Rg={test:ry("#"),parse:CL,transform:Na.transform},Dl={test:ry("hsl","hue"),parse:OS("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:i=1})=>"hsla("+Math.round(e)+", "+Hs.transform(wd(t))+", "+Hs.transform(wd(n))+", "+wd(Md.transform(i))+")"},zn={test:e=>Na.test(e)||Rg.test(e)||Dl.test(e),parse:e=>Na.test(e)?Na.parse(e):Dl.test(e)?Dl.parse(e):Rg.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?Na.transform(e):Dl.transform(e)},PL=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function TL(e){var t,n;return isNaN(e)&&typeof e=="string"&&(((t=e.match(ny))===null||t===void 0?void 0:t.length)||0)+(((n=e.match(PL))===null||n===void 0?void 0:n.length)||0)>0}const FS="number",BS="color",EL="var",AL="var(",Bb="${}",RL=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function $d(e){const t=e.toString(),n=[],i={color:[],number:[],var:[]},l=[];let d=0;const m=t.replace(RL,g=>(zn.test(g)?(i.color.push(d),l.push(BS),n.push(zn.parse(g))):g.startsWith(AL)?(i.var.push(d),l.push(EL),n.push(g)):(i.number.push(d),l.push(FS),n.push(parseFloat(g))),++d,Bb)).split(Bb);return{values:n,split:m,indexes:i,types:l}}function zS(e){return $d(e).values}function WS(e){const{split:t,types:n}=$d(e),i=t.length;return l=>{let d="";for(let h=0;h<i;h++)if(d+=t[h],l[h]!==void 0){const m=n[h];m===FS?d+=wd(l[h]):m===BS?d+=zn.transform(l[h]):d+=l[h]}return d}}const LL=e=>typeof e=="number"?0:e;function ML(e){const t=zS(e);return WS(e)(t.map(LL))}const Io={test:TL,parse:zS,createTransformer:WS,getAnimatableNone:ML},IL=new Set(["brightness","contrast","saturate","opacity"]);function $L(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[i]=n.match(ny)||[];if(!i)return e;const l=n.replace(i,"");let d=IL.has(t)?1:0;return i!==n&&(d*=100),t+"("+d+l+")"}const DL=/\b([a-z-]*)\(.*?\)/gu,Lg={...Io,getAnimatableNone:e=>{const t=e.match(DL);return t?t.map($L).join(" "):e}},OL={...z0,color:zn,backgroundColor:zn,outlineColor:zn,fill:zn,stroke:zn,borderColor:zn,borderTopColor:zn,borderRightColor:zn,borderBottomColor:zn,borderLeftColor:zn,filter:Lg,WebkitFilter:Lg},sy=e=>OL[e];function US(e,t){let n=sy(e);return n!==Lg&&(n=Io),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const FL=new Set(["auto","none","0"]);function BL(e,t,n){let i=0,l;for(;i<e.length&&!l;){const d=e[i];typeof d=="string"&&!FL.has(d)&&$d(d).values.length&&(l=e[i]),i++}if(l&&n)for(const d of t)e[d]=US(n,l)}const zb=e=>e===mc||e===Ve,Wb=(e,t)=>parseFloat(e.split(", ")[t]),Ub=(e,t)=>(n,{transform:i})=>{if(i==="none"||!i)return 0;const l=i.match(/^matrix3d\((.+)\)$/u);if(l)return Wb(l[1],t);{const d=i.match(/^matrix\((.+)\)$/u);return d?Wb(d[1],e):0}},zL=new Set(["x","y","z"]),WL=hc.filter(e=>!zL.has(e));function UL(e){const t=[];return WL.forEach(n=>{const i=e.getValue(n);i!==void 0&&(t.push([n,i.get()]),i.set(n.startsWith("scale")?1:0))}),t}const ic={width:({x:e},{paddingLeft:t="0",paddingRight:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),height:({y:e},{paddingTop:t="0",paddingBottom:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:Ub(4,13),y:Ub(5,14)};ic.translateX=ic.x;ic.translateY=ic.y;const $a=new Set;let Mg=!1,Ig=!1;function HS(){if(Ig){const e=Array.from($a).filter(i=>i.needsMeasurement),t=new Set(e.map(i=>i.element)),n=new Map;t.forEach(i=>
vendor: 7,979 bytes, line 668
668{const l=UL(i);l.length&&(n.set(i,l),i.render())}),e.forEach(i=>i.measureInitialState()),t.forEach(i=>{i.render();const l=n.get(i);l&&l.forEach(([d,h])=>{var m;(m=i.getValue(d))===null||m===void 0||m.set(h)})}),e.forEach(i=>i.measureEndState()),e.forEach(i=>{i.suspendedScrollY!==void 0&&window.scrollTo(0,i.suspendedScrollY)})}Ig=!1,Mg=!1,$a.forEach(e=>e.complete()),$a.clear()}function VS(){$a.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(Ig=!0)})}function HL(){VS(),HS()}class iy{constructor(t,n,i,l,d,h=!1){this.isComplete=!1,this.isAsync=!1,this.needsMeasurement=!1,this.isScheduled=!1,this.unresolvedKeyframes=[...t],this.onComplete=n,this.name=i,this.motionValue=l,this.element=d,this.isAsync=h}scheduleResolve(){this.isScheduled=!0,this.isAsync?($a.add(this),Mg||(Mg=!0,Ft.read(VS),Ft.resolveKeyframes(HS))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:t,name:n,element:i,motionValue:l}=this;for(let d=0;d<t.length;d++)if(t[d]===null)if(d===0){const h=l==null?void 0:l.get(),m=t[t.length-1];if(h!==void 0)t[0]=h;else if(i&&n){const g=i.readValue(n,m);g!=null&&(t[0]=g)}t[0]===void 0&&(t[0]=m),l&&h===void 0&&l.set(t[0])}else t[d]=t[d-1]}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(){this.isComplete=!0,this.onComplete(this.unresolvedKeyframes,this.finalKeyframe),$a.delete(this)}cancel(){this.isComplete||(this.isScheduled=!1,$a.delete(this))}resume(){this.isComplete||this.scheduleResolve()}}const qS=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e),VL=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function qL(e){const t=VL.exec(e);if(!t)return[,];const[,n,i,l]=t;return[`--${n??i}`,l]}function JS(e,t,n=1){const[i,l]=qL(e);if(!i)return;const d=window.getComputedStyle(t).getPropertyValue(i);if(d){const h=d.trim();return qS(h)?parseFloat(h):h}return B0(l)?JS(l,t,n+1):l}const GS=e=>t=>t.test(e),JL={test:e=>e==="auto",parse:e=>e},ZS=[mc,Ve,Hs,bo,$R,IR,JL],Hb=e=>ZS.find(GS(e));class KS extends iy{constructor(t,n,i,l,d){super(t,n,i,l,d,!0)}readKeyframes(){const{unresolvedKeyframes:t,element:n,name:i}=this;if(!n||!n.current)return;super.readKeyframes();for(let g=0;g<t.length;g++){let y=t[g];if(typeof y=="string"&&(y=y.trim(),B0(y))){const x=JS(y,n.current);x!==void 0&&(t[g]=x),g===t.length-1&&(this.finalKeyframe=y)}}if(this.resolveNoneKeyframes(),!kS.has(i)||t.length!==2)return;const[l,d]=t,h=Hb(l),m=Hb(d);if(h!==m)if(zb(h)&&zb(m))for(let g=0;g<t.length;g++){const y=t[g];typeof y=="string"&&(t[g]=parseFloat(y))}else this.needsMeasurement=!0}resolveNoneKeyframes(){const{unresolvedKeyframes:t,name:n}=this,i=[];for(let l=0;l<t.length;l++)SL(t[l])&&i.push(l);i.length&&BL(t,i,n)}measureInitialState(){const{element:t,unresolvedKeyframes:n,name:i}=this;if(!t||!t.current)return;i==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=ic[i](t.measureViewportBox(),window.getComputedStyle(t.current)),n[0]=this.measuredOrigin;const l=n[n.length-1];l!==void 0&&t.getValue(i,l).jump(l,!1)}measureEndState(){var t;const{element:n,name:i,unresolvedKeyframes:l}=this;if(!n||!n.current)return;const d=n.getValue(i);d&&d.jump(this.measuredOrigin,!1);const h=l.length-1,m=l[h];l[h]=ic[i](n.measureViewportBox(),window.getComputedStyle(n.current)),m!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=m),!((t=this.removedTransforms)===null||t===void 0)&&t.length&&this.removedTransforms.forEach(([g,y])=>{n.getValue(g).set(y)}),this.resolveNoneKeyframes()}}const Vb=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(Io.test(e)||e==="0")&&!e.startsWith("url("));function GL(e){const t=e[0];if(e.length===1)return!0;for(let n=0;n<e.length;n++)if(e[n]!==t)return!0}function ZL(e,t,n,i){const l=e[0];if(l===null)return!1;if(t==="display"||t==="visibility")return!0;const d=e[e.length-1],h=Vb(l,t),m=Vb(d,t);return!h||!m?!1:GL(e)||(n==="spring"||G0(n))&&i}const KL=e=>e!==null;function Lm(e,{repeat:t,repeatType:n="loop"},i){const l=e.filter(KL),d=t&&n!=="loop"&&t%2===1?0:l.length-1;return!d||i===void 0?l[d]:i}const YL=40;class YS{constructor({autoplay:t=!0,delay:n=0,type:i="keyframes",repeat:l=0,repeatDelay:d=0,repeatType:h="loop",...m}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.createdAt=Vs.now(),this.options={autoplay:t,delay:n,type:i,repeat:l,repeatDelay:d,repeatType:h,...m},this.updateFinishedPromise()}calcStartTime(){return this.resolvedAt?this.resolvedAt-this.createdAt>YL?this.resolvedAt:this.createdAt:this.createdAt}get resolved(){return!this._resolved&&!this.hasAttemptedResolve&&HL(),this._resolved}onKeyframesResolved(t,n){this.resolvedAt=Vs.now(),this.hasAttemptedResolve=!0;const{name:i,type:l,velocity:d,delay:h,onComplete:m,onUpdate:g,isGenerator:y}=this.options;if(!y&&!ZL(t,i,l,d))if(h)this.options.duration=0;else{g&&g(Lm(t,this.options,n)),m&&m(),this.resolveFinishedPromise();return}const x=this.initPlayback(t,n);x!==!1&&(this._resolved={keyframes:t,finalKeyframe:n,...x},this.onPostResolved())}onPostResolved(){}then(t,n){return this.currentFinishedPromise.then(t,n)}flatten(){this.options.type="keyframes",this.options.ease="linear"}updateFinishedPromise(){this.currentFinishedPromise=new Promise(t=>{this.resolveFinishedPromise=t})}}const qt=(e,t,n)=>e+(t-e)*n;function Lf(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function QL({hue:e,saturation:t,lightness:n,alpha:i}){e/=360,t/=100,n/=100;let l=0,d=0,h=0;if(!t)l=d=h=n;else{const m=n<.5?n*(1+t):n+t-n*t,g=2*n-m;l=Lf(g,m,e+1/3),d=Lf(g,m,e),h=Lf(g,m,e-1/3)}return{red:Math.round(l*255),green:Math.round(d*255),blue:Math.round(h*255),alpha:i}}function am(e,t){return n=>n>0?t:e}const Mf=(e,t,n)=>{const i=e*e,l=n*(t*t-i)+i;return l<0?0:Math.sqrt(l)},XL=[Rg,Na,Dl],eM=e=>XL.find(t=>t.test(e));function qb(e){const t=eM(e);if(!t)return!1;let n=t.parse(e);return t===Dl&&(n=QL(n)),n}const Jb=(e,t)=>{const n=qb(e),i=qb(t);if(!n||!i)return am(e,t);const l={...n};return d=>(l.red=Mf(n.red,i.red,d),l.green=Mf(n.green,i.green,d),l.blue=Mf(n.blue,i.blue,d),l.alpha=qt(n.alpha,i.alpha,d),Na.transform(l))},tM=(e,t)=>n=>t(e(n)),eu=(...e)=>e.reduce(tM),$g=new Set(["none","hidden"]);function nM(e,t){return $g.has(e)?n=>n<=0?e:t:n=>n>=1?t:e}function rM(e,t){return n=>qt(e,t,n)}function oy(e){return typeof e=="number"?rM:typeof e=="string"?B0(e)?am:zn.test(e)?Jb:oM:Array.isArray(e)?QS:typeof e=="object"?zn.test(e)?Jb:sM:am}function QS(e,t){const n=[...e],i=n.length,l=e.map((d,h)=>oy(d)(d,t[h]));return d=>{for(let h=0;h<i;h++)n[h]=l[h](d);return n}}function sM(e,t){const n={...e,...t},i={};for(const l in n)e[l]!==void 0&&t[l]!==void 0&&(i[l]=oy(e[l])(e[l],t[l]));return l=>{for(const d in i)n[d]=i[d](l);return n}}function iM(e,t){var n;const i=[],l={color:0,var:0,number:0};for(let d=0;d<t.values.length;d++){const h=t.types[d],m=e.indexes[h][l[h]],g=(n=e.values[m])!==null&&n!==void 0?n:0;i[d]=g,l[h]++}return i}const oM=(e,t)=>{const n=Io.createTransformer(t),i=$d(e),l=$d(t);return i.indexes.var.length===l.indexes.var.length&&i.indexes.color.length===l.indexes.color.length&&i.indexes.number.length>=l.indexes.number.length?$g.has(e)&&!l.values.length||$g.has(t)&&!i.values.length?nM(e,t):eu(QS(iM(i,l),l.values),n):am(e,t)};function XS(e,t,n){return typeof e=="number"&&typeof t=="number"&&typeof n=="number"?qt(e,t,n):oy(e)(e,t)}const aM=5;function e4(e,t,n){const i=Math.max(t-aM,0);return CS(n-e(i),t-i)}const Yt={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},If=.001;function lM({duration:e=Yt.duration,bounce:t=Yt.bounce,velocity:n=Yt.velocity,mass:i=Yt.mass}){let l,d,h=1-t;h=Pi(Yt.minDamping,Yt.maxDamping,h),e=Pi(Yt.minDuration,Yt.maxDuration,ji(e)),h<1?(l=y=>{const x=y*h,w=x*e,j=x-n,P=Dg(y,h),C=Math.exp(-w);return If-j/P*C},d=y=>{const w=y*h*e,j=w*n+n,P=Math.pow(h,2)*Math.pow(y,2)*e,C=Math.exp(-w),
vendor: 9,177 bytes, line 668
668k=Dg(Math.pow(y,2),h);return(-l(y)+If>0?-1:1)*((j-P)*C)/k}):(l=y=>{const x=Math.exp(-y*e),w=(y-n)*e+1;return-If+x*w},d=y=>{const x=Math.exp(-y*e),w=(n-y)*(e*e);return x*w});const m=5/e,g=dM(l,d,m);if(e=Ni(e),isNaN(g))return{stiffness:Yt.stiffness,damping:Yt.damping,duration:e};{const y=Math.pow(g,2)*i;return{stiffness:y,damping:h*2*Math.sqrt(i*y),duration:e}}}const cM=12;function dM(e,t,n){let i=n;for(let l=1;l<cM;l++)i=i-e(i)/t(i);return i}function Dg(e,t){return e*Math.sqrt(1-t*t)}const uM=["duration","bounce"],hM=["stiffness","damping","mass"];function Gb(e,t){return t.some(n=>e[n]!==void 0)}function mM(e){let t={velocity:Yt.velocity,stiffness:Yt.stiffness,damping:Yt.damping,mass:Yt.mass,isResolvedFromDuration:!1,...e};if(!Gb(e,hM)&&Gb(e,uM))if(e.visualDuration){const n=e.visualDuration,i=2*Math.PI/(n*1.2),l=i*i,d=2*Pi(.05,1,1-(e.bounce||0))*Math.sqrt(l);t={...t,mass:Yt.mass,stiffness:l,damping:d}}else{const n=lM(e);t={...t,...n,mass:Yt.mass},t.isResolvedFromDuration=!0}return t}function t4(e=Yt.visualDuration,t=Yt.bounce){const n=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e;let{restSpeed:i,restDelta:l}=n;const d=n.keyframes[0],h=n.keyframes[n.keyframes.length-1],m={done:!1,value:d},{stiffness:g,damping:y,mass:x,duration:w,velocity:j,isResolvedFromDuration:P}=mM({...n,velocity:-ji(n.velocity||0)}),C=j||0,k=y/(2*Math.sqrt(g*x)),A=h-d,E=ji(Math.sqrt(g/x)),$=Math.abs(A)<5;i||(i=$?Yt.restSpeed.granular:Yt.restSpeed.default),l||(l=$?Yt.restDelta.granular:Yt.restDelta.default);let I;if(k<1){const F=Dg(E,k);I=z=>{const V=Math.exp(-k*E*z);return h-V*((C+k*E*A)/F*Math.sin(F*z)+A*Math.cos(F*z))}}else if(k===1)I=F=>h-Math.exp(-E*F)*(A+(C+E*A)*F);else{const F=E*Math.sqrt(k*k-1);I=z=>{const V=Math.exp(-k*E*z),W=Math.min(F*z,300);return h-V*((C+k*E*A)*Math.sinh(W)+F*A*Math.cosh(W))/F}}const M={calculatedDuration:P&&w||null,next:F=>{const z=I(F);if(P)m.done=F>=w;else{let V=0;k<1&&(V=F===0?Ni(C):e4(I,F,z));const W=Math.abs(V)<=i,ne=Math.abs(h-z)<=l;m.done=W&&ne}return m.value=m.done?h:z,m},toString:()=>{const F=Math.min(vS(M),Tg),z=bS(V=>M.next(F*V).value,F,30);return F+"ms "+z}};return M}function Zb({keyframes:e,velocity:t=0,power:n=.8,timeConstant:i=325,bounceDamping:l=10,bounceStiffness:d=500,modifyTarget:h,min:m,max:g,restDelta:y=.5,restSpeed:x}){const w=e[0],j={done:!1,value:w},P=W=>m!==void 0&&W<m||g!==void 0&&W>g,C=W=>m===void 0?g:g===void 0||Math.abs(m-W)<Math.abs(g-W)?m:g;let k=n*t;const A=w+k,E=h===void 0?A:h(A);E!==A&&(k=E-w);const $=W=>-k*Math.exp(-W/i),I=W=>E+$(W),M=W=>{const ne=$(W),de=I(W);j.done=Math.abs(ne)<=y,j.value=j.done?E:de};let F,z;const V=W=>{P(j.value)&&(F=W,z=t4({keyframes:[j.value,C(j.value)],velocity:e4(I,W,j.value),damping:l,stiffness:d,restDelta:y,restSpeed:x}))};return V(0),{calculatedDuration:null,next:W=>{let ne=!1;return!z&&F===void 0&&(ne=!0,M(W),V(W)),F!==void 0&&W>=F?z.next(W-F):(!ne&&M(W),j)}}}const pM=Xd(.42,0,1,1),fM=Xd(0,0,.58,1),n4=Xd(.42,0,.58,1),gM=e=>Array.isArray(e)&&typeof e[0]!="number",yM={linear:Tr,easeIn:pM,easeInOut:n4,easeOut:fM,circIn:ty,circInOut:$S,circOut:IS,backIn:ey,backInOut:LS,backOut:RS,anticipate:MS},Kb=e=>{if(Z0(e)){X2(e.length===4);const[t,n,i,l]=e;return Xd(t,n,i,l)}else if(typeof e=="string")return yM[e];return e};function xM(e,t,n){const i=[],l=n||XS,d=e.length-1;for(let h=0;h<d;h++){let m=l(e[h],e[h+1]);if(t){const g=Array.isArray(t)?t[h]||Tr:t;m=eu(g,m)}i.push(m)}return i}function vM(e,t,{clamp:n=!0,ease:i,mixer:l}={}){const d=e.length;if(X2(d===t.length),d===1)return()=>t[0];if(d===2&&t[0]===t[1])return()=>t[1];const h=e[0]===e[1];e[0]>e[d-1]&&(e=[...e].reverse(),t=[...t].reverse());const m=xM(t,i,l),g=m.length,y=x=>{if(h&&x<e[0])return t[0];let w=0;if(g>1)for(;w<e.length-2&&!(x<e[w+1]);w++);const j=rc(e[w],e[w+1],x);return m[w](j)};return n?x=>y(Pi(e[0],e[d-1],x)):y}function bM(e,t){const n=e[e.length-1];for(let i=1;i<=t;i++){const l=rc(0,t,i);e.push(qt(n,1,l))}}function wM(e){const t=[0];return bM(t,e.length-1),t}function _M(e,t){return e.map(n=>n*t)}function SM(e,t){return e.map(()=>t||n4).splice(0,e.length-1)}function lm({duration:e=300,keyframes:t,times:n,ease:i="easeInOut"}){const l=gM(i)?i.map(Kb):Kb(i),d={done:!1,value:t[0]},h=_M(n&&n.length===t.length?n:wM(t),e),m=vM(h,t,{ease:Array.isArray(l)?l:SM(t,l)});return{calculatedDuration:e,next:g=>(d.value=m(g),d.done=g>=e,d)}}const NM=e=>{const t=({timestamp:n})=>e(n);return{start:()=>Ft.update(t,!0),stop:()=>Mo(t),now:()=>Cn.isProcessing?Cn.timestamp:Vs.now()}},jM={decay:Zb,inertia:Zb,tween:lm,keyframes:lm,spring:t4},kM=e=>e/100;class ay extends YS{constructor(t){super(t),this.holdTime=null,this.cancelTime=null,this.currentTime=0,this.playbackSpeed=1,this.pendingPlayState="running",this.startTime=null,this.state="idle",this.stop=()=>{if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.teardown();const{onStop:g}=this.options;g&&g()};const{name:n,motionValue:i,element:l,keyframes:d}=this.options,h=(l==null?void 0:l.KeyframeResolver)||iy,m=(g,y)=>this.onKeyframesResolved(g,y);this.resolver=new h(d,m,n,i,l),this.resolver.scheduleResolve()}flatten(){super.flatten(),this._resolved&&Object.assign(this._resolved,this.initPlayback(this._resolved.keyframes))}initPlayback(t){const{type:n="keyframes",repeat:i=0,repeatDelay:l=0,repeatType:d,velocity:h=0}=this.options,m=G0(n)?n:jM[n]||lm;let g,y;m!==lm&&typeof t[0]!="number"&&(g=eu(kM,XS(t[0],t[1])),t=[0,100]);const x=m({...this.options,keyframes:t});d==="mirror"&&(y=m({...this.options,keyframes:[...t].reverse(),velocity:-h})),x.calculatedDuration===null&&(x.calculatedDuration=vS(x));const{calculatedDuration:w}=x,j=w+l,P=j*(i+1)-l;return{generator:x,mirroredGenerator:y,mapPercentToKeyframes:g,calculatedDuration:w,resolvedDuration:j,totalDuration:P}}onPostResolved(){const{autoplay:t=!0}=this.options;this.play(),this.pendingPlayState==="paused"||!t?this.pause():this.state=this.pendingPlayState}tick(t,n=!1){const{resolved:i}=this;if(!i){const{keyframes:W}=this.options;return{done:!0,value:W[W.length-1]}}const{finalKeyframe:l,generator:d,mirroredGenerator:h,mapPercentToKeyframes:m,keyframes:g,calculatedDuration:y,totalDuration:x,resolvedDuration:w}=i;if(this.startTime===null)return d.next(0);const{delay:j,repeat:P,repeatType:C,repeatDelay:k,onUpdate:A}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-x/this.speed,this.startTime)),n?this.currentTime=t:this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=Math.round(t-this.startTime)*this.speed;const E=this.currentTime-j*(this.speed>=0?1:-1),$=this.speed>=0?E<0:E>x;this.currentTime=Math.max(E,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=x);let I=this.currentTime,M=d;if(P){const W=Math.min(this.currentTime,x)/w;let ne=Math.floor(W),de=W%1;!de&&W>=1&&(de=1),de===1&&ne--,ne=Math.min(ne,P+1),!!(ne%2)&&(C==="reverse"?(de=1-de,k&&(de-=k/w)):C==="mirror"&&(M=h)),I=Pi(0,1,de)*w}const F=$?{done:!1,value:g[0]}:M.next(I);m&&(F.value=m(F.value));let{done:z}=F;!$&&y!==null&&(z=this.speed>=0?this.currentTime>=x:this.currentTime<=0);const V=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&z);return V&&l!==void 0&&(F.value=Lm(g,this.options,l)),A&&A(F.value),V&&this.finish(),F}get duration(){const{resolved:t}=this;return t?ji(t.calculatedDuration):0}get time(){return ji(this.currentTime)}set time(t){t=Ni(t),this.currentTime=t,this.holdTime!==null||this.speed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.speed)}get speed(){return this.playbackSpeed}set speed(t){const n=this.playbackSpeed!==t;this.playbackSpeed=t,n&&(this.time=ji(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;const{driver:t=NM,onPlay:n,startTime:i}=this.options;this.driver||(this.driver=t(d=>this.tick(d))),n&&n();const l=this.driver.now();this.holdTime!==null?this.startTime=l-this.holdTime:this.startTime?this.state==="finished"&&(this.startTime=l):this.startTime=i??this.calcStartTime(),this.state==="finished"&&this.updateFinishedPromise(),this.cancelTime=this.startTime,this.holdTime=null,this.state="running",this.driver.start()}pause(){var t;if(!this._resolved){this.pendingPlayState="paused";return}this.state="paused",this.holdTime=(t=this.currentTime)!==null&&t!==void 0?t:0}complete(){this.state!=="running"&&this.play(),this.pendingPlayState=this.state="finished",this.holdTime=null}finish(){this.teardown(),this.state="finished";const{onComplete:t}=this.options;t&&t()}cancel(){this.cancelTime!==null&&this.tick(this.cancelTime),this.teardown(),this.updateFinishedPromise()}teardown(){this.state="idle",this.stopDriver(),this.resolveFinishedPromise(),this.updateFinishedPromise(),this.startTime=this.cancelTime=null,this.resolver.cancel()}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}}const CM=new Set(["opacity","clipPath","filter","transform"]);function PM(e,t,n,{delay:i=0,duration:l=300,repeat:d=0,repeatType:h="loop",ease:m="easeInOut",times:g}={}){const y={[t]:n};g&&(y.offset=g);const x=_S(m,l);
vendor: 6,366 bytes, line 668
668return Array.isArray(x)&&(y.easing=x),e.animate(y,{delay:i,duration:l,easing:Array.isArray(x)?"linear":x,fill:"both",iterations:d+1,direction:h==="reverse"?"alternate":"normal"})}const TM=L0(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),cm=10,EM=2e4;function AM(e){return G0(e.type)||e.type==="spring"||!wS(e.ease)}function RM(e,t){const n=new ay({...t,keyframes:e,repeat:0,delay:0,isGenerator:!0});let i={done:!1,value:e[0]};const l=[];let d=0;for(;!i.done&&d<EM;)i=n.sample(d),l.push(i.value),d+=cm;return{times:void 0,keyframes:l,duration:d-cm,ease:"linear"}}const r4={anticipate:MS,backInOut:LS,circInOut:$S};function LM(e){return e in r4}class Yb extends YS{constructor(t){super(t);const{name:n,motionValue:i,element:l,keyframes:d}=this.options;this.resolver=new KS(d,(h,m)=>this.onKeyframesResolved(h,m),n,i,l),this.resolver.scheduleResolve()}initPlayback(t,n){let{duration:i=300,times:l,ease:d,type:h,motionValue:m,name:g,startTime:y}=this.options;if(!m.owner||!m.owner.current)return!1;if(typeof d=="string"&&om()&&LM(d)&&(d=r4[d]),AM(this.options)){const{onComplete:w,onUpdate:j,motionValue:P,element:C,...k}=this.options,A=RM(t,k);t=A.keyframes,t.length===1&&(t[1]=t[0]),i=A.duration,l=A.times,d=A.ease,h="keyframes"}const x=PM(m.owner.current,g,t,{...this.options,duration:i,times:l,ease:d});return x.startTime=y??this.calcStartTime(),this.pendingTimeline?(Ib(x,this.pendingTimeline),this.pendingTimeline=void 0):x.onfinish=()=>{const{onComplete:w}=this.options;m.set(Lm(t,this.options,n)),w&&w(),this.cancel(),this.resolveFinishedPromise()},{animation:x,duration:i,times:l,type:h,ease:d,keyframes:t}}get duration(){const{resolved:t}=this;if(!t)return 0;const{duration:n}=t;return ji(n)}get time(){const{resolved:t}=this;if(!t)return 0;const{animation:n}=t;return ji(n.currentTime||0)}set time(t){const{resolved:n}=this;if(!n)return;const{animation:i}=n;i.currentTime=Ni(t)}get speed(){const{resolved:t}=this;if(!t)return 1;const{animation:n}=t;return n.playbackRate}set speed(t){const{resolved:n}=this;if(!n)return;const{animation:i}=n;i.playbackRate=t}get state(){const{resolved:t}=this;if(!t)return"idle";const{animation:n}=t;return n.playState}get startTime(){const{resolved:t}=this;if(!t)return null;const{animation:n}=t;return n.startTime}attachTimeline(t){if(!this._resolved)this.pendingTimeline=t;else{const{resolved:n}=this;if(!n)return Tr;const{animation:i}=n;Ib(i,t)}return Tr}play(){if(this.isStopped)return;const{resolved:t}=this;if(!t)return;const{animation:n}=t;n.playState==="finished"&&this.updateFinishedPromise(),n.play()}pause(){const{resolved:t}=this;if(!t)return;const{animation:n}=t;n.pause()}stop(){if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.resolveFinishedPromise(),this.updateFinishedPromise();const{resolved:t}=this;if(!t)return;const{animation:n,keyframes:i,duration:l,type:d,ease:h,times:m}=t;if(n.playState==="idle"||n.playState==="finished")return;if(this.time){const{motionValue:y,onUpdate:x,onComplete:w,element:j,...P}=this.options,C=new ay({...P,keyframes:i,duration:l,type:d,ease:h,times:m,isGenerator:!0}),k=Ni(this.time);y.setWithVelocity(C.sample(k-cm).value,C.sample(k).value,cm)}const{onStop:g}=this.options;g&&g(),this.cancel()}complete(){const{resolved:t}=this;t&&t.animation.finish()}cancel(){const{resolved:t}=this;t&&t.animation.cancel()}static supports(t){const{motionValue:n,name:i,repeatDelay:l,repeatType:d,damping:h,type:m}=t;if(!n||!n.owner||!(n.owner.current instanceof HTMLElement))return!1;const{onUpdate:g,transformTemplate:y}=n.owner.getProps();return TM()&&i&&CM.has(i)&&!g&&!y&&!l&&d!=="mirror"&&h!==0&&m!=="inertia"}}const MM={type:"spring",stiffness:500,damping:25,restSpeed:10},IM=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),$M={type:"keyframes",duration:.8},DM={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},OM=(e,{keyframes:t})=>t.length>2?$M:Ha.has(e)?e.startsWith("scale")?IM(t[1]):MM:DM;function FM({when:e,delay:t,delayChildren:n,staggerChildren:i,staggerDirection:l,repeat:d,repeatType:h,repeatDelay:m,from:g,elapsed:y,...x}){return!!Object.keys(x).length}const ly=(e,t,n,i={},l,d)=>h=>{const m=J0(i,e)||{},g=m.delay||i.delay||0;let{elapsed:y=0}=i;y=y-Ni(g);let x={keyframes:Array.isArray(n)?n:[null,n],ease:"easeOut",velocity:t.getVelocity(),...m,delay:-y,onUpdate:j=>{t.set(j),m.onUpdate&&m.onUpdate(j)},onComplete:()=>{h(),m.onComplete&&m.onComplete()},name:e,motionValue:t,element:d?void 0:l};FM(m)||(x={...x,...OM(e,x)}),x.duration&&(x.duration=Ni(x.duration)),x.repeatDelay&&(x.repeatDelay=Ni(x.repeatDelay)),x.from!==void 0&&(x.keyframes[0]=x.from);let w=!1;if((x.type===!1||x.duration===0&&!x.repeatDelay)&&(x.duration=0,x.delay===0&&(w=!0)),w&&!d&&t.get()!==void 0){const j=Lm(x.keyframes,m);if(j!==void 0)return Ft.update(()=>{x.onUpdate(j),x.onComplete()}),new sL([])}return!d&&Yb.supports(x)?new Yb(x):new ay(x)};function BM({protectedKeys:e,needsAnimating:t},n){const i=e.hasOwnProperty(n)&&t[n]!==!0;return t[n]=!1,i}function s4(e,t,{delay:n=0,transitionOverride:i,type:l}={}){var d;let{transition:h=e.getDefaultTransition(),transitionEnd:m,...g}=t;i&&(h=i);const y=[],x=l&&e.animationState&&e.animationState.getState()[l];for(const w in g){const j=e.getValue(w,(d=e.latestValues[w])!==null&&d!==void 0?d:null),P=g[w];if(P===void 0||x&&BM(x,w))continue;const C={delay:n,...J0(h||{},w)};let k=!1;if(window.MotionHandoffAnimation){const E=PS(e);if(E){const $=window.MotionHandoffAnimation(E,w,Ft);$!==null&&(C.startTime=$,k=!0)}}Ag(e,w),j.start(ly(w,j,P,e.shouldReduceMotion&&kS.has(w)?{type:!1}:C,e,k));const A=j.animation;A&&y.push(A)}return m&&Promise.all(y).then(()=>{Ft.update(()=>{m&&xL(e,m)})}),y}function Og(e,t,n={}){var i;const l=Rm(e,t,n.type==="exit"?(i=e.presenceContext)===null||i===void 0?void 0:i.custom:void 0);let{transition:d=e.getDefaultTransition()||{}}=l||{};n.transitionOverride&&(d=n.transitionOverride);const h=l?()=>Promise.all(s4(e,l,n)):()=>Promise.resolve(),m=e.variantChildren&&e.variantChildren.size?(y=0)=>{const{delayChildren:x=0,staggerChildren:w,staggerDirection:j}=d;return zM(e,t,x+y,w,j,n)}:()=>Promise.resolve(),{when:g}=d;if(g){const[y,x]=g==="beforeChildren"?[h,m]:[m,h];return y().then(()=>x())}else return Promise.all([h(),m(n.delay)])}function zM(e,t,n=0,i=0,l=1,d){const h=[],m=(e.variantChildren.size-1)*i,g=l===1?(y=0)=>y*i:(y=0)=>m-y*i;
vendor: 46,231 bytes, line 668
668return Array.from(e.variantChildren).sort(WM).forEach((y,x)=>{y.notify("AnimationStart",t),h.push(Og(y,t,{...d,delay:n+g(x)}).then(()=>y.notify("AnimationComplete",t)))}),Promise.all(h)}function WM(e,t){return e.sortNodePosition(t)}function UM(e,t,n={}){e.notify("AnimationStart",t);let i;if(Array.isArray(t)){const l=t.map(d=>Og(e,d,n));i=Promise.all(l)}else if(typeof t=="string")i=Og(e,t,n);else{const l=typeof t=="function"?Rm(e,t,n.custom):t;i=Promise.all(s4(e,l,n))}return i.then(()=>{e.notify("AnimationComplete",t)})}const HM=I0.length;function i4(e){if(!e)return;if(!e.isControllingVariants){const n=e.parent?i4(e.parent)||{}:{};return e.props.initial!==void 0&&(n.initial=e.props.initial),n}const t={};for(let n=0;n<HM;n++){const i=I0[n],l=e.props[i];(Ld(l)||l===!1)&&(t[i]=l)}return t}const VM=[...M0].reverse(),qM=M0.length;function JM(e){return t=>Promise.all(t.map(({animation:n,options:i})=>UM(e,n,i)))}function GM(e){let t=JM(e),n=Qb(),i=!0;const l=g=>(y,x)=>{var w;const j=Rm(e,x,g==="exit"?(w=e.presenceContext)===null||w===void 0?void 0:w.custom:void 0);if(j){const{transition:P,transitionEnd:C,...k}=j;y={...y,...k,...C}}return y};function d(g){t=g(e)}function h(g){const{props:y}=e,x=i4(e.parent)||{},w=[],j=new Set;let P={},C=1/0;for(let A=0;A<qM;A++){const E=VM[A],$=n[E],I=y[E]!==void 0?y[E]:x[E],M=Ld(I),F=E===g?$.isActive:null;F===!1&&(C=A);let z=I===x[E]&&I!==y[E]&&M;if(z&&i&&e.manuallyAnimateOnMount&&(z=!1),$.protectedKeys={...P},!$.isActive&&F===null||!I&&!$.prevProp||Em(I)||typeof I=="boolean")continue;const V=ZM($.prevProp,I);let W=V||E===g&&$.isActive&&!z&&M||A>C&&M,ne=!1;const de=Array.isArray(I)?I:[I];let be=de.reduce(l(E),{});F===!1&&(be={});const{prevResolvedValues:Re={}}=$,Je={...Re,...be},Ie=je=>{W=!0,j.has(je)&&(ne=!0,j.delete(je)),$.needsAnimating[je]=!0;const X=e.getValue(je);X&&(X.liveStyle=!1)};for(const je in Je){const X=be[je],ue=Re[je];if(P.hasOwnProperty(je))continue;let q=!1;Pg(X)&&Pg(ue)?q=!xS(X,ue):q=X!==ue,q?X!=null?Ie(je):j.add(je):X!==void 0&&j.has(je)?Ie(je):$.protectedKeys[je]=!0}$.prevProp=I,$.prevResolvedValues=be,$.isActive&&(P={...P,...be}),i&&e.blockInitialAnimation&&(W=!1),W&&(!(z&&V)||ne)&&w.push(...de.map(je=>({animation:je,options:{type:E}})))}if(j.size){const A={};j.forEach(E=>{const $=e.getBaseTarget(E),I=e.getValue(E);I&&(I.liveStyle=!0),A[E]=$??null}),w.push({animation:A})}let k=!!w.length;return i&&(y.initial===!1||y.initial===y.animate)&&!e.manuallyAnimateOnMount&&(k=!1),i=!1,k?t(w):Promise.resolve()}function m(g,y){var x;if(n[g].isActive===y)return Promise.resolve();(x=e.variantChildren)===null||x===void 0||x.forEach(j=>{var P;return(P=j.animationState)===null||P===void 0?void 0:P.setActive(g,y)}),n[g].isActive=y;const w=h(g);for(const j in n)n[j].protectedKeys={};return w}return{animateChanges:h,setActive:m,setAnimateFunction:d,getState:()=>n,reset:()=>{n=Qb(),i=!0}}}function ZM(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!xS(t,e):!1}function ya(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Qb(){return{animate:ya(!0),whileInView:ya(),whileHover:ya(),whileTap:ya(),whileDrag:ya(),whileFocus:ya(),exit:ya()}}class Fo{constructor(t){this.isMounted=!1,this.node=t}update(){}}class KM extends Fo{constructor(t){super(t),t.animationState||(t.animationState=GM(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();Em(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),(t=this.unmountControls)===null||t===void 0||t.call(this)}}let YM=0;class QM extends Fo{constructor(){super(...arguments),this.id=YM++}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:i}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===i)return;const l=this.node.animationState.setActive("exit",!t);n&&!t&&l.then(()=>n(this.id))}mount(){const{register:t}=this.node.presenceContext||{};t&&(this.unmount=t(this.id))}unmount(){}}const XM={animation:{Feature:KM},exit:{Feature:QM}};function Dd(e,t,n,i={passive:!0}){return e.addEventListener(t,n,i),()=>e.removeEventListener(t,n)}function tu(e){return{point:{x:e.pageX,y:e.pageY}}}const e7=e=>t=>K0(t)&&e(t,tu(t));function _d(e,t,n,i){return Dd(e,t,e7(n),i)}const Xb=(e,t)=>Math.abs(e-t);function t7(e,t){const n=Xb(e.x,t.x),i=Xb(e.y,t.y);return Math.sqrt(n**2+i**2)}class o4{constructor(t,n,{transformPagePoint:i,contextWindow:l,dragSnapToOrigin:d=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const w=Df(this.lastMoveEventInfo,this.history),j=this.startEvent!==null,P=t7(w.offset,{x:0,y:0})>=3;if(!j&&!P)return;const{point:C}=w,{timestamp:k}=Cn;this.history.push({...C,timestamp:k});const{onStart:A,onMove:E}=this.handlers;j||(A&&A(this.lastMoveEvent,w),this.startEvent=this.lastMoveEvent),E&&E(this.lastMoveEvent,w)},this.handlePointerMove=(w,j)=>{this.lastMoveEvent=w,this.lastMoveEventInfo=$f(j,this.transformPagePoint),Ft.update(this.updatePoint,!0)},this.handlePointerUp=(w,j)=>{this.end();const{onEnd:P,onSessionEnd:C,resumeAnimation:k}=this.handlers;if(this.dragSnapToOrigin&&k&&k(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const A=Df(w.type==="pointercancel"?this.lastMoveEventInfo:$f(j,this.transformPagePoint),this.history);this.startEvent&&P&&P(w,A),C&&C(w,A)},!K0(t))return;this.dragSnapToOrigin=d,this.handlers=n,this.transformPagePoint=i,this.contextWindow=l||window;const h=tu(t),m=$f(h,this.transformPagePoint),{point:g}=m,{timestamp:y}=Cn;this.history=[{...g,timestamp:y}];const{onSessionStart:x}=n;x&&x(t,Df(m,this.history)),this.removeListeners=eu(_d(this.contextWindow,"pointermove",this.handlePointerMove),_d(this.contextWindow,"pointerup",this.handlePointerUp),_d(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),Mo(this.updatePoint)}}function $f(e,t){return t?{point:t(e.point)}:e}function ew(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Df({point:e},t){return{point:e,delta:ew(e,a4(t)),offset:ew(e,n7(t)),velocity:r7(t,.1)}}function n7(e){return e[0]}function a4(e){return e[e.length-1]}function r7(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,i=null;const l=a4(e);for(;n>=0&&(i=e[n],!(l.timestamp-i.timestamp>Ni(t)));)n--;if(!i)return{x:0,y:0};const d=ji(l.timestamp-i.timestamp);if(d===0)return{x:0,y:0};const h={x:(l.x-i.x)/d,y:(l.y-i.y)/d};return h.x===1/0&&(h.x=0),h.y===1/0&&(h.y=0),h}const l4=1e-4,s7=1-l4,i7=1+l4,c4=.01,o7=0-c4,a7=0+c4;function Ar(e){return e.max-e.min}function l7(e,t,n){return Math.abs(e-t)<=n}function tw(e,t,n,i=.5){e.origin=i,e.originPoint=qt(t.min,t.max,e.origin),e.scale=Ar(n)/Ar(t),e.translate=qt(n.min,n.max,e.origin)-e.originPoint,(e.scale>=s7&&e.scale<=i7||isNaN(e.scale))&&(e.scale=1),(e.translate>=o7&&e.translate<=a7||isNaN(e.translate))&&(e.translate=0)}function Sd(e,t,n,i){tw(e.x,t.x,n.x,i?i.originX:void 0),tw(e.y,t.y,n.y,i?i.originY:void 0)}function nw(e,t,n){e.min=n.min+t.min,e.max=e.min+Ar(t)}function c7(e,t,n){nw(e.x,t.x,n.x),nw(e.y,t.y,n.y)}function rw(e,t,n){e.min=t.min-n.min,e.max=e.min+Ar(t)}function Nd(e,t,n){rw(e.x,t.x,n.x),rw(e.y,t.y,n.y)}function d7(e,{min:t,max:n},i){return t!==void 0&&e<t?e=i?qt(t,e,i.min):Math.max(e,t):n!==void 0&&e>n&&(e=i?qt(n,e,i.max):Math.min(e,n)),e}function sw(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function u7(e,{top:t,left:n,bottom:i,right:l}){return{x:sw(e.x,n,l),y:sw(e.y,t,i)}}function iw(e,t){let n=t.min-e.min,i=t.max-e.max;return t.max-t.min<e.max-e.min&&([n,i]=[i,n]),{min:n,max:i}}function h7(e,t){return{x:iw(e.x,t.x),y:iw(e.y,t.y)}}function m7(e,t){let n=.5;const i=Ar(e),l=Ar(t);return l>i?n=rc(t.min,t.max-i,e.min):i>l&&(n=rc(e.min,e.max-l,t.min)),Pi(0,1,n)}function p7(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const Fg=.35;function f7(e=Fg){return e===!1?e=0:e===!0&&(e=Fg),{x:ow(e,"left","right"),y:ow(e,"top","bottom")}}function ow(e,t,n){return{min:aw(e,t),max:aw(e,n)}}function aw(e,t){return typeof e=="number"?e:e[t]||0}const lw=()=>({translate:0,scale:1,origin:0,originPoint:0}),Ol=()=>({x:lw(),y:lw()}),cw=()=>({min:0,max:0}),tn=()=>({x:cw(),y:cw()});function Yr(e){return[e("x"),e("y")]}function d4({top:e,left:t,right:n,bottom:i}){return{x:{min:t,max:n},y:{min:e,max:i}}}function g7({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function y7(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),i=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:i.y,right:i.x}}function Of(e){return e===void 0||e===1}function Bg({scale:e,scaleX:t,scaleY:n}){return!Of(e)||!Of(t)||!Of(n)}function va(e){return Bg(e)||u4(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function u4(e){return dw(e.x)||dw(e.y)}function dw(e){return e&&e!=="0%"}function dm(e,t,n){const i=e-n,l=t*i;return n+l}function uw(e,t,n,i,l){return l!==void 0&&(e=dm(e,l,i)),dm(e,n,i)+t}function zg(e,t=0,n=1,i,l){e.min=uw(e.min,t,n,i,l),e.max=uw(e.max,t,n,i,l)}function h4(e,{x:t,y:n}){zg(e.x,t.translate,t.scale,t.originPoint),zg(e.y,n.translate,n.scale,n.originPoint)}const hw=.999999999999,mw=1.0000000000001;function x7(e,t,n,i=!1){const l=n.length;if(!l)return;t.x=t.y=1;let d,h;for(let m=0;m<l;m++){d=n[m],h=d.projectionDelta;const{visualElement:g}=d.options;g&&g.props.style&&g.props.style.display==="contents"||(i&&d.options.layoutScroll&&d.scroll&&d!==d.root&&Bl(e,{x:-d.scroll.offset.x,y:-d.scroll.offset.y}),h&&(t.x*=h.x.scale,t.y*=h.y.scale,h4(e,h)),i&&va(d.latestValues)&&Bl(e,d.latestValues))}t.x<mw&&t.x>hw&&(t.x=1),t.y<mw&&t.y>hw&&(t.y=1)}function Fl(e,t){e.min=e.min+t,e.max=e.max+t}function pw(e,t,n,i,l=.5){const d=qt(e.min,e.max,l);zg(e,t,n,d,i)}function Bl(e,t){pw(e.x,t.x,t.scaleX,t.scale,t.originX),pw(e.y,t.y,t.scaleY,t.scale,t.originY)}function m4(e,t){return d4(y7(e.getBoundingClientRect(),t))}function v7(e,t,n){const i=m4(e,n),{scroll:l}=t;return l&&(Fl(i.x,l.offset.x),Fl(i.y,l.offset.y)),i}const p4=({current:e})=>e?e.ownerDocument.defaultView:null,b7=new WeakMap;class w7{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=tn(),this.visualElement=t}start(t,{snapToCursor:n=!1}={}){const{presenceContext:i}=this.visualElement;if(i&&i.isPresent===!1)return;const l=x=>{const{dragSnapToOrigin:w}=this.getProps();w?this.pauseAnimation():this.stopAnimation(),n&&this.snapToCursor(tu(x).point)},d=(x,w)=>{const{drag:j,dragPropagation:P,onDragStart:C}=this.getProps();if(j&&!P&&(this.openDragLock&&this.openDragLock(),this.openDragLock=mL(j),!this.openDragLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Yr(A=>{let E=this.getAxisMotionValue(A).get()||0;if(Hs.test(E)){const{projection:$}=this.visualElement;if($&&$.layout){const I=$.layout.layoutBox[A];I&&(E=Ar(I)*(parseFloat(E)/100))}}this.originPoint[A]=E}),C&&Ft.postRender(()=>C(x,w)),Ag(this.visualElement,"transform");const{animationState:k}=this.visualElement;k&&k.setActive("whileDrag",!0)},h=(x,w)=>{const{dragPropagation:j,dragDirectionLock:P,onDirectionLock:C,onDrag:k}=this.getProps();if(!j&&!this.openDragLock)return;const{offset:A}=w;if(P&&this.currentDirection===null){this.currentDirection=_7(A),this.currentDirection!==null&&C&&C(this.currentDirection);return}this.updateAxis("x",w.point,A),this.updateAxis("y",w.point,A),this.visualElement.render(),k&&k(x,w)},m=(x,w)=>this.stop(x,w),g=()=>Yr(x=>{var w;return this.getAnimationState(x)==="paused"&&((w=this.getAxisMotionValue(x).animation)===null||w===void 0?void 0:w.play())}),{dragSnapToOrigin:y}=this.getProps();this.panSession=new o4(t,{onSessionStart:l,onStart:d,onMove:h,onSessionEnd:m,resumeAnimation:g},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:y,contextWindow:p4(this.visualElement)})}stop(t,n){const i=this.isDragging;if(this.cancel(),!i)return;const{velocity:l}=n;this.startAnimation(l);const{onDragEnd:d}=this.getProps();d&&Ft.postRender(()=>d(t,n))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:i}=this.getProps();!i&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}updateAxis(t,n,i){const{drag:l}=this.getProps();if(!i||!Ch(t,l,this.currentDirection))return;const d=this.getAxisMotionValue(t);let h=this.originPoint[t]+i[t];this.constraints&&this.constraints[t]&&(h=d7(h,this.constraints[t],this.elastic[t])),d.set(h)}resolveConstraints(){var t;const{dragConstraints:n,dragElastic:i}=this.getProps(),l=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(t=this.visualElement.projection)===null||t===void 0?void 0:t.layout,d=this.constraints;n&&$l(n)?this.constraints||(this.constraints=this.resolveRefConstraints()):n&&l?this.constraints=u7(l.layoutBox,n):this.constraints=!1,this.elastic=f7(i),d!==this.constraints&&l&&this.constraints&&!this.hasMutatedConstraints&&Yr(h=>{this.constraints!==!1&&this.getAxisMotionValue(h)&&(this.constraints[h]=p7(l.layoutBox[h],this.constraints[h]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!$l(t))return!1;const i=t.current,{projection:l}=this.visualElement;if(!l||!l.layout)return!1;const d=v7(i,l.root,this.visualElement.getTransformPagePoint());let h=h7(l.layout.layoutBox,d);if(n){const m=n(g7(h));this.hasMutatedConstraints=!!m,m&&(h=d4(m))}return h}startAnimation(t){const{drag:n,dragMomentum:i,dragElastic:l,dragTransition:d,dragSnapToOrigin:h,onDragTransitionEnd:m}=this.getProps(),g=this.constraints||{},y=Yr(x=>{if(!Ch(x,n,this.currentDirection))return;let w=g&&g[x]||{};h&&(w={min:0,max:0});const j=l?200:1e6,P=l?40:1e7,C={type:"inertia",velocity:i?t[x]:0,bounceStiffness:j,bounceDamping:P,timeConstant:750,restDelta:1,restSpeed:10,...d,...w};return this.startAxisValueAnimation(x,C)});return Promise.all(y).then(m)}startAxisValueAnimation(t,n){const i=this.getAxisMotionValue(t);return Ag(this.visualElement,t),i.start(ly(t,i,0,n,this.visualElement,!1))}stopAnimation(){Yr(t=>this.getAxisMotionValue(t).stop())}pauseAnimation(){Yr(t=>{var n;return(n=this.getAxisMotionValue(t).animation)===null||n===void 0?void 0:n.pause()})}getAnimationState(t){var n;return(n=this.getAxisMotionValue(t).animation)===null||n===void 0?void 0:n.state}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,i=this.visualElement.getProps(),l=i[n];return l||this.visualElement.getValue(t,(i.initial?i.initial[t]:void 0)||0)}snapToCursor(t){Yr(n=>{const{drag:i}=this.getProps();if(!Ch(n,i,this.currentDirection))return;const{projection:l}=this.visualElement,d=this.getAxisMotionValue(n);if(l&&l.layout){const{min:h,max:m}=l.layout.layoutBox[n];d.set(t[n]-qt(h,m,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:i}=this.visualElement;if(!$l(n)||!i||!this.constraints)return;this.stopAnimation();const l={x:0,y:0};Yr(h=>{const m=this.getAxisMotionValue(h);if(m&&this.constraints!==!1){const g=m.get();l[h]=m7({min:g,max:g},this.constraints[h])}});const{transformTemplate:d}=this.visualElement.getProps();this.visualElement.current.style.transform=d?d({},""):"none",i.root&&i.root.updateScroll(),i.updateLayout(),this.resolveConstraints(),Yr(h=>{if(!Ch(h,t,null))return;const m=this.getAxisMotionValue(h),{min:g,max:y}=this.constraints[h];m.set(qt(g,y,l[h]))})}addListeners(){if(!this.visualElement.current)return;b7.set(this.visualElement,this);const t=this.visualElement.current,n=_d(t,"pointerdown",g=>{const{drag:y,dragListener:x=!0}=this.getProps();y&&x&&this.start(g)}),i=()=>{const{dragConstraints:g}=this.getProps();$l(g)&&g.current&&(this.constraints=this.resolveRefConstraints())},{projection:l}=this.visualElement,d=l.addEventListener("measure",i);l&&!l.layout&&(l.root&&l.root.updateScroll(),l.updateLayout()),Ft.read(i);const h=Dd(window,"resize",()=>this.scalePositionWithinConstraints()),m=l.addEventListener("didUpdate",(({delta:g,hasLayoutChanged:y})=>{this.isDragging&&y&&(Yr(x=>{const w=this.getAxisMotionValue(x);w&&(this.originPoint[x]+=g[x].translate,w.set(w.get()+g[x].translate))}),this.visualElement.render())}));return()=>{h(),n(),d(),m&&m()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:i=!1,dragPropagation:l=!1,dragConstraints:d=!1,dragElastic:h=Fg,dragMomentum:m=!0}=t;return{...t,drag:n,dragDirectionLock:i,dragPropagation:l,dragConstraints:d,dragElastic:h,dragMomentum:m}}}function Ch(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function _7(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class S7 extends Fo{constructor(t){super(t),this.removeGroupControls=Tr,this.removeListeners=Tr,this.controls=new w7(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Tr}unmount(){this.removeGroupControls(),this.removeListeners()}}const fw=e=>(t,n)=>{e&&Ft.postRender(()=>e(t,n))};class N7 extends Fo{constructor(){super(...arguments),this.removePointerDownListener=Tr}onPointerDown(t){this.session=new o4(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:p4(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:i,onPanEnd:l}=this.node.getProps();return{onSessionStart:fw(t),onStart:fw(n),onMove:i,onEnd:(d,h)=>{delete this.session,l&&Ft.postRender(()=>l(d,h))}}}mount(){this.removePointerDownListener=_d(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}const Vh={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function gw(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const od={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(Ve.test(e))e=parseFloat(e);else return e;const n=gw(e,t.target.x),i=gw(e,t.target.y);return`${n}% ${i}%`}},j7={correct:(e,{treeScale:t,projectionDelta:n})=>{const i=e,l=Io.parse(e);if(l.length>5)return i;const d=Io.createTransformer(e),h=typeof l[0]!="number"?1:0,m=n.x.scale*t.x,g=n.y.scale*t.y;l[0+h]/=m,l[1+h]/=g;const y=qt(m,g,.5);return typeof l[2+h]=="number"&&(l[2+h]/=y),typeof l[3+h]=="number"&&(l[3+h]/=y),d(l)}};class k7 extends S.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:i,layoutId:l}=this.props,{projection:d}=t;qR(C7),d&&(n.group&&n.group.add(d),i&&i.register&&l&&i.register(d),d.root.didUpdate(),d.addEventListener("animationComplete",()=>{this.safeToRemove()}),d.setOptions({...d.options,onExitComplete:()=>this.safeToRemove()})),Vh.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:i,drag:l,isPresent:d}=this.props,h=i.projection;return h&&(h.isPresent=d,l||t.layoutDependency!==n||n===void 0?h.willUpdate():this.safeToRemove(),t.isPresent!==d&&(d?h.promote():h.relegate()||Ft.postRender(()=>{const m=h.getStack();(!m||!m.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),D0.postRender(()=>{!t.currentAnimation&&t.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:i}=this.props,{projection:l}=t;l&&(l.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(l),i&&i.deregister&&i.deregister(l))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function f4(e){const[t,n]=Y2(),i=S.useContext(T0);return r.jsx(k7,{...e,layoutGroup:i,switchLayoutGroup:S.useContext(iS),isPresent:t,safeToRemove:n})}const C7={borderRadius:{...od,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:od,borderTopRightRadius:od,borderBottomLeftRadius:od,borderBottomRightRadius:od,boxShadow:j7};function P7(e,t,n){const i=Wn(e)?e:Id(e);return i.start(ly("",i,t,n)),i.animation}function T7(e){return e instanceof SVGElement&&e.tagName!=="svg"}const E7=(e,t)=>e.depth-t.depth;class A7{constructor(){this.children=[],this.isDirty=!1}add(t){Y0(this.children,t),this.isDirty=!0}remove(t){Q0(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(E7),this.isDirty=!1,this.children.forEach(t)}}function R7(e,t){const n=Vs.now(),i=({timestamp:l})=>{const d=l-n;d>=t&&(Mo(i),e(d-t))};return Ft.read(i,!0),()=>Mo(i)}const g4=["TopLeft","TopRight","BottomLeft","BottomRight"],L7=g4.length,yw=e=>typeof e=="string"?parseFloat(e):e,xw=e=>typeof e=="number"||Ve.test(e);function M7(e,t,n,i,l,d){l?(e.opacity=qt(0,n.opacity!==void 0?n.opacity:1,I7(i)),e.opacityExit=qt(t.opacity!==void 0?t.opacity:1,0,$7(i))):d&&(e.opacity=qt(t.opacity!==void 0?t.opacity:1,n.opacity!==void 0?n.opacity:1,i));for(let h=0;h<L7;h++){const m=`border${g4[h]}Radius`;let g=vw(t,m),y=vw(n,m);if(g===void 0&&y===void 0)continue;g||(g=0),y||(y=0),g===0||y===0||xw(g)===xw(y)?(e[m]=Math.max(qt(yw(g),yw(y),i),0),(Hs.test(y)||Hs.test(g))&&(e[m]+="%")):e[m]=y}(t.rotate||n.rotate)&&(e.rotate=qt(t.rotate||0,n.rotate||0,i))}function vw(e,t){return e[t]!==void 0?e[t]:e.borderRadius}const I7=y4(0,.5,IS),$7=y4(.5,.95,Tr);function y4(e,t,n){return i=>i<e?0:i>t?1:n(rc(e,t,i))}function bw(e,t){e.min=t.min,e.max=t.max}function Kr(e,t){bw(e.x,t.x),bw(e.y,t.y)}function ww(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}function _w(e,t,n,i,l){return e-=t,e=dm(e,1/n,i),l!==void 0&&(e=dm(e,1/l,i)),e}function D7(e,t=0,n=1,i=.5,l,d=e,h=e){if(Hs.test(t)&&(t=parseFloat(t),t=qt(h.min,h.max,t/100)-h.min),typeof t!="number")return;let m=qt(d.min,d.max,i);e===d&&(m-=t),e.min=_w(e.min,t,n,m,l),e.max=_w(e.max,t,n,m,l)}function Sw(e,t,[n,i,l],d,h){D7(e,t[n],t[i],t[l],t.scale,d,h)}const O7=["x","scaleX","originX"],F7=["y","scaleY","originY"];function Nw(e,t,n,i){Sw(e.x,t,O7,n?n.x:void 0,i?i.x:void 0),Sw(e.y,t,F7,n?n.y:void 0,i?i.y:void 0)}function jw(e){return e.translate===0&&e.scale===1}function x4(e){return jw(e.x)&&jw(e.y)}function kw(e,t){return e.min===t.min&&e.max===t.max}function B7(e,t){return kw(e.x,t.x)&&kw(e.y,t.y)}function Cw(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function v4(e,t){return Cw(e.x,t.x)&&Cw(e.y,t.y)}function Pw(e){return Ar(e.x)/Ar(e.y)}function Tw(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}class z7{constructor(){this.members=[]}add(t){Y0(this.members,t),t.scheduleRender()}remove(t){if(Q0(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){const n=this.members.findIndex(l=>t===l);if(n===0)return!1;let i;for(let l=n;l>=0;l--){const d=this.members[l];if(d.isPresent!==!1){i=d;break}}return i?(this.promote(i),!0):!1}promote(t,n){const i=this.lead;if(t!==i&&(this.prevLead=i,this.lead=t,t.show(),i)){i.instance&&i.scheduleRender(),t.scheduleRender(),t.resumeFrom=i,n&&(t.resumeFrom.preserveOpacity=!0),i.snapshot&&(t.snapshot=i.snapshot,t.snapshot.latestValues=i.animationValues||i.latestValues),t.root&&t.root.isUpdating&&(t.isLayoutDirty=!0);const{crossfade:l}=t.options;l===!1&&i.hide()}}exitAnimationComplete(){this.members.forEach(t=>{const{options:n,resumingFrom:i}=t;n.onExitComplete&&n.onExitComplete(),i&&i.options.onExitComplete&&i.options.onExitComplete()})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function W7(e,t,n){let i="";const l=e.x.translate/t.x,d=e.y.translate/t.y,h=(n==null?void 0:n.z)||0;if((l||d||h)&&(i=`translate3d(${l}px, ${d}px, ${h}px) `),(t.x!==1||t.y!==1)&&(i+=`scale(${1/t.x}, ${1/t.y}) `),n){const{transformPerspective:y,rotate:x,rotateX:w,rotateY:j,skewX:P,skewY:C}=n;y&&(i=`perspective(${y}px) ${i}`),x&&(i+=`rotate(${x}deg) `),w&&(i+=`rotateX(${w}deg) `),j&&(i+=`rotateY(${j}deg) `),P&&(i+=`skewX(${P}deg) `),C&&(i+=`skewY(${C}deg) `)}const m=e.x.scale*t.x,g=e.y.scale*t.y;return(m!==1||g!==1)&&(i+=`scale(${m}, ${g})`),i||"none"}const ba={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},gd=typeof window<"u"&&window.MotionDebug!==void 0,Ff=["","X","Y","Z"],U7={visibility:"hidden"},Ew=1e3;let H7=0;function Bf(e,t,n,i){const{latestValues:l}=t;l[e]&&(n[e]=l[e],t.setStaticValue(e,0),i&&(i[e]=0))}function b4(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:t}=e.options;if(!t)return;const n=PS(t);if(window.MotionHasOptimisedAnimation(n,"transform")){const{layout:l,layoutId:d}=e.options;window.MotionCancelOptimisedAnimation(n,"transform",Ft,!(l||d))}const{parent:i}=e;i&&!i.hasCheckedOptimisedAppear&&b4(i)}function w4({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:i,resetTransform:l}){return class{constructor(h={},m=t==null?void 0:t()){this.id=H7++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,gd&&(ba.totalNodes=ba.resolvedTargetDeltas=ba.recalculatedProjection=0),this.nodes.forEach(J7),this.nodes.forEach(Q7),this.nodes.forEach(X7),this.nodes.forEach(G7),gd&&window.MotionDebug.record(ba)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=h,this.root=m?m.root||m:this,this.path=m?[...m.path,m]:[],this.parent=m,this.depth=m?m.depth+1:0;for(let g=0;g<this.path.length;g++)this.path[g].shouldResetTransform=!0;this.root===this&&(this.nodes=new A7)}addEventListener(h,m){return this.eventHandlers.has(h)||this.eventHandlers.set(h,new X0),this.eventHandlers.get(h).add(m)}notifyListeners(h,...m){const g=this.eventHandlers.get(h);g&&g.notify(...m)}hasListeners(h){return this.eventHandlers.has(h)}mount(h,m=this.root.hasTreeAnimated){if(this.instance)return;this.isSVG=T7(h),this.instance=h;const{layoutId:g,layout:y,visualElement:x}=this.options;if(x&&!x.current&&x.mount(h),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),m&&(y||g)&&(this.isLayoutDirty=!0),e){let w;const j=()=>this.root.updateBlockedByResize=!1;e(h,()=>{this.root.updateBlockedByResize=!0,w&&w(),w=R7(j,250),Vh.hasAnimatedSinceResize&&(Vh.hasAnimatedSinceResize=!1,this.nodes.forEach(Rw))})}g&&this.root.registerSharedNode(g,this),this.options.animate!==!1&&x&&(g||y)&&this.addEventListener("didUpdate",({delta:w,hasLayoutChanged:j,hasRelativeTargetChanged:P,layout:C})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const k=this.options.transition||x.getDefaultTransition()||sI,{onLayoutAnimationStart:A,onLayoutAnimationComplete:E}=x.getProps(),$=!this.targetLayout||!v4(this.targetLayout,C)||P,I=!j&&P;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||I||j&&($||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(w,I);const M={...J0(k,"layout"),onPlay:A,onComplete:E};(x.shouldReduceMotion||this.options.layoutRoot)&&(M.delay=0,M.type=!1),this.startAnimation(M)}else j||Rw(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=C})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const h=this.getStack();h&&h.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,Mo(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(eI),this.animationId++)}getTransformTemplate(){const{visualElement:h}=this.options;return h&&h.getProps().transformTemplate}willUpdate(h=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&b4(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let x=0;x<this.path.length;x++){const w=this.path[x];w.shouldResetTransform=!0,w.updateScroll("snapshot"),w.options.layoutRoot&&w.willUpdate(!1)}const{layoutId:m,layout:g}=this.options;if(m===void 0&&!g)return;const y=this.getTransformTemplate();this.prevTransformTemplateValue=y?y(this.latestValues,""):void 0,this.updateSnapshot(),h&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEach(Aw);return}this.isUpdating||this.nodes.forEach(K7),this.isUpdating=!1,this.nodes.forEach(Y7),this.nodes.forEach(V7),this.nodes.forEach(q7),this.clearAllSnapshots();const m=Vs.now();Cn.delta=Pi(0,1e3/60,m-Cn.timestamp),Cn.timestamp=m,Cn.isProcessing=!0,Ef.update.process(Cn),Ef.preRender.process(Cn),Ef.render.process(Cn),Cn.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,D0.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(Z7),this.sharedNodes.forEach(tI)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,Ft.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){Ft.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let g=0;g<this.path.length;g++)this.path[g].updateScroll();const h=this.layout;this.layout=this.measure(!1),this.layoutCorrected=tn(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:m}=this.options;m&&m.notify("LayoutMeasure",this.layout.layoutBox,h?h.layoutBox:void 0)}updateScroll(h="measure"){let m=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===h&&(m=!1),m){const g=i(this.instance);this.scroll={animationId:this.root.animationId,phase:h,isRoot:g,offset:n(this.instance),wasRoot:this.scroll?this.scroll.isRoot:g}}}resetTransform(){if(!l)return;const h=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,m=this.projectionDelta&&!x4(this.projectionDelta),g=this.getTransformTemplate(),y=g?g(this.latestValues,""):void 0,x=y!==this.prevTransformTemplateValue;h&&(m||va(this.latestValues)||x)&&(l(this.instance,y),this.shouldResetTransform=!1,this.scheduleRender())}measure(h=!0){const m=this.measurePageBox();let g=this.removeElementScroll(m);return h&&(g=this.removeTransform(g)),iI(g),{animationId:this.root.animationId,measuredBox:m,layoutBox:g,latestValues:{},source:this.id}}measurePageBox(){var h;const{visualElement:m}=this.options;if(!m)return tn();const g=m.measureViewportBox();if(!(((h=this.scroll)===null||h===void 0?void 0:h.wasRoot)||this.path.some(oI))){const{scroll:x}=this.root;x&&(Fl(g.x,x.offset.x),Fl(g.y,x.offset.y))}return g}removeElementScroll(h){var m;const g=tn();if(Kr(g,h),!((m=this.scroll)===null||m===void 0)&&m.wasRoot)return g;for(let y=0;y<this.path.length;y++){const x=this.path[y],{scroll:w,options:j}=x;x!==this.root&&w&&j.layoutScroll&&(w.wasRoot&&Kr(g,h),Fl(g.x,w.offset.x),Fl(g.y,w.offset.y))}return g}applyTransform(h,m=!1){const g=tn();Kr(g,h);for(let y=0;y<this.path.length;y++){const x=this.path[y];!m&&x.options.layoutScroll&&x.scroll&&x!==x.root&&Bl(g,{x:-x.scroll.offset.x,y:-x.scroll.offset.y}),va(x.latestValues)&&Bl(g,x.latestValues)}return va(this.latestValues)&&Bl(g,this.latestValues),g}removeTransform(h){const m=tn();Kr(m,h);for(let g=0;g<this.path.length;g++){const y=this.path[g];if(!y.instance||!va(y.latestValues))continue;Bg(y.latestValues)&&y.updateSnapshot();const x=tn(),w=y.measurePageBox();Kr(x,w),Nw(m,y.latestValues,y.snapshot?y.snapshot.layoutBox:void 0,x)}return va(this.latestValues)&&Nw(m,this.latestValues),m}setTargetDelta(h){this.targetDelta=h,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(h){this.options={...this.options,...h,crossfade:h.crossfade!==void 0?h.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==Cn.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(h=!1){var m;const g=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=g.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=g.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=g.isSharedProjectionDirty);const y=!!this.resumingFrom||this!==g;if(!(h||y&&this.isSharedProjectionDirty||this.isProjectionDirty||!((m=this.parent)===null||m===void 0)&&m.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:w,layoutId:j}=this.options;if(!(!this.layout||!(w||j))){if(this.resolvedRelativeTargetAt=Cn.timestamp,!this.targetDelta&&!this.relativeTarget){const P=this.getClosestProjectingParent();P&&P.layout&&this.animationProgress!==1?(this.relativeParent=P,this.forceRelativeParentToResolveTarget(),this.relativeTarget=tn(),this.relativeTargetOrigin=tn(),Nd(this.relativeTargetOrigin,this.layout.layoutBox,P.layout.layoutBox),Kr(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}if(!(!this.relativeTarget&&!this.targetDelta)){if(this.target||(this.target=tn(),this.targetWithTransforms=tn()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),c7(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):Kr(this.target,this.layout.layoutBox),h4(this.target,this.targetDelta)):Kr(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget){this.attemptToResolveRelativeTarget=!1;const P=this.getClosestProjectingParent();P&&!!P.resumingFrom==!!this.resumingFrom&&!P.options.layoutScroll&&P.target&&this.animationProgress!==1?(this.relativeParent=P,this.forceRelativeParentToResolveTarget(),this.relativeTarget=tn(),this.relativeTargetOrigin=tn(),Nd(this.relativeTargetOrigin,this.target,P.target),Kr(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}gd&&ba.resolvedTargetDeltas++}}}getClosestProjectingParent(){if(!(!this.parent||Bg(this.parent.latestValues)||u4(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}calcProjection(){var h;const m=this.getLead(),g=!!this.resumingFrom||this!==m;let y=!0;if((this.isProjectionDirty||!((h=this.parent)===null||h===void 0)&&h.isProjectionDirty)&&(y=!1),g&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(y=!1),this.resolvedRelativeTargetAt===Cn.timestamp&&(y=!1),y)return;const{layout:x,layoutId:w}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(x||w))return;Kr(this.layoutCorrected,this.layout.layoutBox);const j=this.treeScale.x,P=this.treeScale.y;x7(this.layoutCorrected,this.treeScale,this.path,g),m.layout&&!m.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(m.target=m.layout.layoutBox,m.targetWithTransforms=tn());const{target:C}=m;if(!C){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(ww(this.prevProjectionDelta.x,this.projectionDelta.x),ww(this.prevProjectionDelta.y,this.projectionDelta.y)),Sd(this.projectionDelta,this.layoutCorrected,C,this.latestValues),(this.treeScale.x!==j||this.treeScale.y!==P||!Tw(this.projectionDelta.x,this.prevProjectionDelta.x)||!Tw(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",C)),gd&&ba.recalculatedProjection++}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(h=!0){var m;if((m=this.options.visualElement)===null||m===void 0||m.scheduleRender(),h){const g=this.getStack();g&&g.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=Ol(),this.projectionDelta=Ol(),this.projectionDeltaWithTransform=Ol()}setAnimationOrigin(h,m=!1){const g=this.snapshot,y=g?g.latestValues:{},x={...this.latestValues},w=Ol();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!m;const j=tn(),P=g?g.source:void 0,C=this.layout?this.layout.source:void 0,k=P!==C,A=this.getStack(),E=!A||A.members.length<=1,$=!!(k&&!E&&this.options.crossfade===!0&&!this.path.some(rI));this.animationProgress=0;let I;this.mixTargetDelta=M=>{const F=M/1e3;Lw(w.x,h.x,F),Lw(w.y,h.y,F),this.setTargetDelta(w),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Nd(j,this.layout.layoutBox,this.relativeParent.layout.layoutBox),nI(this.relativeTarget,this.relativeTargetOrigin,j,F),I&&B7(this.relativeTarget,I)&&(this.isProjectionDirty=!1),I||(I=tn()),Kr(I,this.relativeTarget)),k&&(this.animationValues=x,M7(x,y,this.latestValues,F,$,E)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=F},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(h){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(Mo(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Ft.update(()=>{Vh.hasAnimatedSinceResize=!0,this.currentAnimation=P7(0,Ew,{...h,onUpdate:m=>{this.mixTargetDelta(m),h.onUpdate&&h.onUpdate(m)},onComplete:()=>{h.onComplete&&h.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const h=this.getStack();h&&h.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(Ew),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const h=this.getLead();let{targetWithTransforms:m,target:g,layout:y,latestValues:x}=h;if(!(!m||!g||!y)){if(this!==h&&this.layout&&y&&_4(this.options.animationType,this.layout.layoutBox,y.layoutBox)){g=this.target||tn();const w=Ar(this.layout.layoutBox.x);g.x.min=h.target.x.min,g.x.max=g.x.min+w;const j=Ar(this.layout.layoutBox.y);g.y.min=h.target.y.min,g.y.max=g.y.min+j}Kr(m,g),Bl(m,x),Sd(this.projectionDeltaWithTransform,this.layoutCorrected,m,x)}}registerSharedNode(h,m){this.sharedNodes.has(h)||this.sharedNodes.set(h,new z7),this.sharedNodes.get(h).add(m);const y=m.options.initialPromotionConfig;m.promote({transition:y?y.transition:void 0,preserveFollowOpacity:y&&y.shouldPreserveFollowOpacity?y.shouldPreserveFollowOpacity(m):void 0})}isLead(){const h=this.getStack();return h?h.lead===this:!0}getLead(){var h;const{layoutId:m}=this.options;return m?((h=this.getStack())===null||h===void 0?void 0:h.lead)||this:this}getPrevLead(){var h;const{layoutId:m}=this.options;return m?(h=this.getStack())===null||h===void 0?void 0:h.prevLead:void 0}getStack(){const{layoutId:h}=this.options;if(h)return this.root.sharedNodes.get(h)}promote({needsReset:h,transition:m,preserveFollowOpacity:g}={}){const y=this.getStack();y&&y.promote(this,g),h&&(this.projectionDelta=void 0,this.needsReset=!0),m&&this.setOptions({transition:m})}relegate(){const h=this.getStack();return h?h.relegate(this):!1}resetSkewAndRotation(){const{visualElement:h}=this.options;if(!h)return;let m=!1;const{latestValues:g}=h;if((g.z||g.rotate||g.rotateX||g.rotateY||g.rotateZ||g.skewX||g.skewY)&&(m=!0),!m)return;const y={};g.z&&Bf("z",h,y,this.animationValues);for(let x=0;x<Ff.length;x++)Bf(`rotate${Ff[x]}`,h,y,this.animationValues),Bf(`skew${Ff[x]}`,h,y,this.animationValues);h.render();for(const x in y)h.setStaticValue(x,y[x]),this.animationValues&&(this.animationValues[x]=y[x]);h.scheduleRender()}getProjectionStyles(h){var m,g;if(!this.instance||this.isSVG)return;if(!this.isVisible)return U7;const y={visibility:""},x=this.getTransformTemplate();if(this.needsReset)return this.needsReset=!1,y.opacity="",y.pointerEvents=Uh(h==null?void 0:h.pointerEvents)||"",y.transform=x?x(this.latestValues,""):"none",y;const w=this.getLead();if(!this.projectionDelta||!this.layout||!w.target){const k={};return this.options.layoutId&&(k.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,k.pointerEvents=Uh(h==null?void 0:h.pointerEvents)||""),this.hasProjected&&!va(this.latestValues)&&(k.transform=x?x({},""):"none",this.hasProjected=!1),k}const j=w.animationValues||w.latestValues;this.applyTransformsToTarget(),y.transform=W7(this.projectionDeltaWithTransform,this.treeScale,j),x&&(y.transform=x(j,y.transform));const{x:P,y:C}=this.projectionDelta;y.transformOrigin=`${P.origin*100}% ${C.origin*100}% 0`,w.animationValues?y.opacity=w===this?(g=(m=j.opacity)!==null&&m!==void 0?m:this.latestValues.opacity)!==null&&g!==void 0?g:1:this.preserveOpacity?this.latestValues.opacity:j.opacityExit:y.opacity=w===this?j.opacity!==void 0?j.opacity:"":j.opacityExit!==void 0?j.opacityExit:0;for(const k in im){if(j[k]===void 0)continue;const{correct:A,applyTo:E}=im[k],$=y.transform==="none"?j[k]:A(j[k],w);if(E){const I=E.length;for(let M=0;M<I;M++)y[E[M]]=$}else y[k]=$}return this.options.layoutId&&(y.pointerEvents=w===this?Uh(h==null?void 0:h.pointerEvents)||"":"none"),y}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(h=>{var m;return(m=h.currentAnimation)===null||m===void 0?void 0:m.stop()}),this.root.nodes.forEach(Aw),this.root.sharedNodes.clear()}}}function V7(e){e.updateLayout()}function q7(e){var t;const n=((t=e.resumeFrom)===null||t===void 0?void 0:t.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&n&&e.hasListeners("didUpdate")){const{layoutBox:i,measuredBox:l}=e.layout,{animationType:d}=e.options,h=n.source!==e.layout.source;d==="size"?Yr(w=>{const j=h?n.measuredBox[w]:n.layoutBox[w],P=Ar(j);j.min=i[w].min,j.max=j.min+P}):_4(d,n.layoutBox,i)&&Yr(w=>{const j=h?n.measuredBox[w]:n.layoutBox[w],P=Ar(i[w]);j.max=j.min+P,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[w].max=e.relativeTarget[w].min+P)});const m=Ol();Sd(m,i,n.layoutBox);const g=Ol();h?Sd(g,e.applyTransform(l,!0),n.measuredBox):Sd(g,i,n.layoutBox);const y=!x4(m);let x=!1;if(!e.resumeFrom){const w=e.getClosestProjectingParent();if(w&&!w.resumeFrom){const{snapshot:j,layout:P}=w;if(j&&P){const C=tn();Nd(C,n.layoutBox,j.layoutBox);const k=tn();Nd(k,i,P.layoutBox),v4(C,k)||(x=!0),w.options.layoutRoot&&(e.relativeTarget=k,e.relativeTargetOrigin=C,e.relativeParent=w)}}}e.notifyListeners("didUpdate",{layout:i,snapshot:n,delta:g,layoutDelta:m,hasLayoutChanged:y,hasRelativeTargetChanged:x})}else if(e.isLead()){const{onExitComplete:i}=e.options;i&&i()}e.options.transition=void 0}function J7(e){gd&&ba.totalNodes++,e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function G7(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function Z7(e){e.clearSnapshot()}function Aw(e){e.clearMeasurements()}function K7(e){e.isLayoutDirty=!1}function Y7(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function Rw(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function Q7(e){e.resolveTargetDelta()}function X7(e){e.calcProjection()}
vendor: 5,738 bytes, line 668
668function eI(e){e.resetSkewAndRotation()}function tI(e){e.removeLeadSnapshot()}function Lw(e,t,n){e.translate=qt(t.translate,0,n),e.scale=qt(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function Mw(e,t,n,i){e.min=qt(t.min,n.min,i),e.max=qt(t.max,n.max,i)}function nI(e,t,n,i){Mw(e.x,t.x,n.x,i),Mw(e.y,t.y,n.y,i)}function rI(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const sI={duration:.45,ease:[.4,0,.1,1]},Iw=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),$w=Iw("applewebkit/")&&!Iw("chrome/")?Math.round:Tr;function Dw(e){e.min=$w(e.min),e.max=$w(e.max)}function iI(e){Dw(e.x),Dw(e.y)}function _4(e,t,n){return e==="position"||e==="preserve-aspect"&&!l7(Pw(t),Pw(n),.2)}function oI(e){var t;return e!==e.root&&((t=e.scroll)===null||t===void 0?void 0:t.wasRoot)}const aI=w4({attachResizeListener:(e,t)=>Dd(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),zf={current:void 0},S4=w4({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!zf.current){const e=new aI({});e.mount(window),e.setOptions({layoutScroll:!0}),zf.current=e}return zf.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),lI={pan:{Feature:N7},drag:{Feature:S7,ProjectionNode:S4,MeasureLayout:f4}};function Ow(e,t,n){const{props:i}=e;e.animationState&&i.whileHover&&e.animationState.setActive("whileHover",n==="Start");const l="onHover"+n,d=i[l];d&&Ft.postRender(()=>d(t,tu(t)))}class cI extends Fo{mount(){const{current:t}=this.node;t&&(this.unmount=lL(t,n=>(Ow(this.node,n,"Start"),i=>Ow(this.node,i,"End"))))}unmount(){}}class dI extends Fo{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=eu(Dd(this.node.current,"focus",()=>this.onFocus()),Dd(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function Fw(e,t,n){const{props:i}=e;e.animationState&&i.whileTap&&e.animationState.setActive("whileTap",n==="Start");const l="onTap"+(n==="End"?"":n),d=i[l];d&&Ft.postRender(()=>d(t,tu(t)))}class uI extends Fo{mount(){const{current:t}=this.node;t&&(this.unmount=hL(t,n=>(Fw(this.node,n,"Start"),(i,{success:l})=>Fw(this.node,i,l?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const Wg=new WeakMap,Wf=new WeakMap,hI=e=>{const t=Wg.get(e.target);t&&t(e)},mI=e=>{e.forEach(hI)};function pI({root:e,...t}){const n=e||document;Wf.has(n)||Wf.set(n,{});const i=Wf.get(n),l=JSON.stringify(t);return i[l]||(i[l]=new IntersectionObserver(mI,{root:e,...t})),i[l]}function fI(e,t,n){const i=pI(t);return Wg.set(e,n),i.observe(e),()=>{Wg.delete(e),i.unobserve(e)}}const gI={some:0,all:1};class yI extends Fo{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:t={}}=this.node.getProps(),{root:n,margin:i,amount:l="some",once:d}=t,h={root:n?n.current:void 0,rootMargin:i,threshold:typeof l=="number"?l:gI[l]},m=g=>{const{isIntersecting:y}=g;if(this.isInView===y||(this.isInView=y,d&&!y&&this.hasEnteredView))return;y&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",y);const{onViewportEnter:x,onViewportLeave:w}=this.node.getProps(),j=y?x:w;j&&j(g)};return fI(this.node.current,h,m)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(xI(t,n))&&this.startObserver()}unmount(){}}function xI({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const vI={inView:{Feature:yI},tap:{Feature:uI},focus:{Feature:dI},hover:{Feature:cI}},bI={layout:{ProjectionNode:S4,MeasureLayout:f4}},Ug={current:null},N4={current:!1};function wI(){if(N4.current=!0,!!R0)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>Ug.current=e.matches;e.addListener(t),t()}else Ug.current=!1}const _I=[...ZS,zn,Io],SI=e=>_I.find(GS(e)),Bw=new WeakMap;function NI(e,t,n){for(const i in t){const l=t[i],d=n[i];if(Wn(l))e.addValue(i,l);else if(Wn(d))e.addValue(i,Id(l,{owner:e}));else if(d!==l)if(e.hasValue(i)){const h=e.getValue(i);h.liveStyle===!0?h.jump(l):h.hasAnimated||h.set(l)}else{const h=e.getStaticValue(i);e.addValue(i,Id(h!==void 0?h:l,{owner:e}))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const zw=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class jI{scrapeMotionValuesFromProps(t,n,i){return{}}constructor({parent:t,props:n,presenceContext:i,reducedMotionConfig:l,blockInitialAnimation:d,visualState:h},m={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=iy,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const P=Vs.now();this.renderScheduledAt<P&&(this.renderScheduledAt=P,Ft.render(this.render,!1,!0))};
vendor: 7,675 bytes, line 668
668const{latestValues:g,renderState:y,onUpdate:x}=h;this.onUpdate=x,this.latestValues=g,this.baseTarget={...g},this.initialValues=n.initial?{...g}:{},this.renderState=y,this.parent=t,this.props=n,this.presenceContext=i,this.depth=t?t.depth+1:0,this.reducedMotionConfig=l,this.options=m,this.blockInitialAnimation=!!d,this.isControllingVariants=Am(n),this.isVariantNode=rS(n),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);const{willChange:w,...j}=this.scrapeMotionValuesFromProps(n,{},this);for(const P in j){const C=j[P];g[P]!==void 0&&Wn(C)&&C.set(g[P],!1)}}mount(t){this.current=t,Bw.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((n,i)=>this.bindToMotionValue(i,n)),N4.current||wI(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:Ug.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){Bw.delete(this.current),this.projection&&this.projection.unmount(),Mo(this.notifyUpdate),Mo(this.render),this.valueSubscriptions.forEach(t=>t()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const t in this.events)this.events[t].clear();for(const t in this.features){const n=this.features[t];n&&(n.unmount(),n.isMounted=!1)}this.current=null}bindToMotionValue(t,n){this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)();const i=Ha.has(t),l=n.on("change",m=>{this.latestValues[t]=m,this.props.onUpdate&&Ft.preRender(this.notifyUpdate),i&&this.projection&&(this.projection.isTransformDirty=!0)}),d=n.on("renderRequest",this.scheduleRender);let h;window.MotionCheckAppearSync&&(h=window.MotionCheckAppearSync(this,t,n)),this.valueSubscriptions.set(t,()=>{l(),d(),h&&h(),n.owner&&n.stop()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in sc){const n=sc[t];if(!n)continue;const{isEnabled:i,Feature:l}=n;if(!this.features[t]&&l&&i(this.props)&&(this.features[t]=new l(this)),this.features[t]){const d=this.features[t];d.isMounted?d.update():(d.mount(),d.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):tn()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let i=0;i<zw.length;i++){const l=zw[i];this.propEventSubscriptions[l]&&(this.propEventSubscriptions[l](),delete this.propEventSubscriptions[l]);const d="on"+l,h=t[d];h&&(this.propEventSubscriptions[l]=this.on(l,h))}this.prevMotionValues=NI(this,this.scrapeMotionValuesFromProps(t,this.prevProps,this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue(),this.onUpdate&&this.onUpdate(this)}getProps(){return this.props}getVariant(t){return this.props.variants?this.props.variants[t]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(t){const n=this.getClosestVariantNode();if(n)return n.variantChildren&&n.variantChildren.add(t),()=>n.variantChildren.delete(t)}addValue(t,n){const i=this.values.get(t);n!==i&&(i&&this.removeValue(t),this.bindToMotionValue(t,n),this.values.set(t,n),this.latestValues[t]=n.get())}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(n(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,n){if(this.props.values&&this.props.values[t])return this.props.values[t];let i=this.values.get(t);return i===void 0&&n!==void 0&&(i=Id(n===null?void 0:n,{owner:this}),this.addValue(t,i)),i}readValue(t,n){var i;let l=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:(i=this.getBaseTargetFromProps(this.props,t))!==null&&i!==void 0?i:this.readValueFromInstance(this.current,t,this.options);return l!=null&&(typeof l=="string"&&(qS(l)||DS(l))?l=parseFloat(l):!SI(l)&&Io.test(n)&&(l=US(t,n)),this.setBaseTarget(t,Wn(l)?l.get():l)),Wn(l)?l.get():l}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){var n;const{initial:i}=this.props;let l;if(typeof i=="string"||typeof i=="object"){const h=F0(this.props,i,(n=this.presenceContext)===null||n===void 0?void 0:n.custom);h&&(l=h[t])}if(i&&l!==void 0)return l;const d=this.getBaseTargetFromProps(this.props,t);return d!==void 0&&!Wn(d)?d:this.initialValues[t]!==void 0&&l===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new X0),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}}class j4 extends jI{constructor(){super(...arguments),this.KeyframeResolver=KS}sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){return t.style?t.style[n]:void 0}removeValueFromRenderState(t,{vars:n,style:i}){delete n[t],delete i[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;Wn(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}}function kI(e){return window.getComputedStyle(e)}class CI extends j4{constructor(){super(...arguments),this.type="html",this.renderInstance=hS}readValueFromInstance(t,n){if(Ha.has(n)){const i=sy(n);return i&&i.default||0}else{const i=kI(t),l=(cS(n)?i.getPropertyValue(n):i[n])||0;return typeof l=="string"?l.trim():l}}measureInstanceViewportBox(t,{transformPagePoint:n}){return m4(t,n)}build(t,n,i){W0(t,n,i.transformTemplate)}scrapeMotionValuesFromProps(t,n,i){return q0(t,n,i)}}class PI extends j4{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=tn}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(Ha.has(n)){const i=sy(n);return i&&i.default||0}return n=mS.has(n)?n:$0(n),t.getAttribute(n)}scrapeMotionValuesFromProps(t,n,i){return gS(t,n,i)}build(t,n,i){U0(t,n,this.isSVGTag,i.transformTemplate)}renderInstance(t,n,i,l){pS(t,n,i,l)}mount(t){this.isSVGTag=V0(t.tagName),super.mount(t)}}const TI=(e,t)=>O0(e)?new PI(t):new CI(t,{allowProjection:e!==S.Fragment}),EI=tL({...XM,...vI,...lI,...bI},TI),Ot=gR(EI),AI=[{icon:P1,title:"Elite Guarantee",guaranteeLink:"/elite-guarantee",description:"At SnapEstimate.ai, we don't just verify—we guarantee. SnapEstimate.ai will provide a satisfaction reimbursement of up to $2,500.00.",details:"While other platforms stop at basic background checks, our Elite Guarantee provides a dedicated safety net for homeowners who hire through our platform. If you hire a professional with an Elite or Excellent rating and the final work quality doesn't meet the standards promised in your SnapEstimate, we've got your back. We will work with the pro to make it right, and if the issue remains unresolved, this isn't just a badge; it's our financial commitment to ensuring your home project is handled with the precision and care you deserve.",expandable:!0}
668,{icon:Ud,title:"Vetted Specialists & Background Screening",description:"We have developed a world-first background screening and quality rating score for local pros based on 13 key metrics that ensures we only get bids from the best local pros near you.",details:{intro:`We believe that the technical training of your specialist is the most important factor in quality service. You no longer have to spend hours hunting for reliable reviews — our proprietary AI Technology does the heavy lifting for you.
669
670Our system continuously combs the internet, cross-referencing data across all major platforms—including Google, Yelp, Angie's List, and the Better Business Bureau (BBB). We only feature contractors who maintain an average rating of 4.5 stars or better, have been in business for a minimum of five years, and carry proper licenses and insurance.
671
672To remain active on our platform, all partners must satisfy and maintain the following professional benchmarks:`,bullets:["Reputation Management — Minimum 4.5-star Google Review average.","Business Longevity — A minimum of 5 years in active operation.","Security Clearance — Comprehensive criminal background check and a Google Guaranteed badge required.","Trade Certification — Valid, up-to-date Trade Licenses for all specialized services.","Insurance & Protection — Certificate of Insurance (COI) and active Workers' Compensation for all employees."],outro:`Every contractor in our network is vetted for reliability, licensing, and insurance.
673
674To ensure our users receive the highest quality of service, we go beyond simple background checks by conducting active quality audits of our service partners. By staying in direct contact with customers after their projects are complete, we verify firsthand that every contractor is maintaining our rigorous professional standards. This continuous feedback loop allows us to monitor real-world performance and ensure that only the most reliable, top-tier specialists remain part of the SnapEstimate.ai network.`},expandable:!0}];function k4(){const[e,t]=S.useState(null),n=i=>t(e===i?null:i);return r.jsx("section",{className:"w-full bg-[hsl(210,20%,96%)] py-16 sm:py-24",children:r.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 lg:px-8",children:[r.jsxs(Ot.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"text-center mb-14",children:[r.jsx("h2",{className:"text-2xl sm:text-3xl md:text-4xl font-bold text-foreground leading-tight max-w-3xl mx-auto",children:"Why is SnapEstimate.AI the best place to organize your home project?"}),r.jsx("p",{className:"text-muted-foreground text-base sm:text-lg mt-4 max-w-2xl mx-auto",children:"The only website that provides all the information and services you need to get the best result on your home project."})]}),r.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8 items-start",children:AI.map((i,l)=>{const d=i.icon,h=e===i.title;return r.jsxs(Ot.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:l*.15},className:"bg-white rounded-2xl p-8 shadow-sm hover:shadow-lg transition-shadow duration-300 flex flex-col",children:[r.jsx("div",{className:"w-14 h-14 rounded-xl bg-primary/10 flex items-center justify-center mb-5",children:r.jsx(d,{className:"w-7 h-7 text-primary"})}),r.jsx("h3",{className:"text-xl font-bold text-foreground mb-3",children:i.title}),r.jsx("blockquote",{className:"border-l-4 border-[hsl(197,100%,45%)] pl-4 mb-3",children:r.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed",children:i.title==="Elite Guarantee"?r.jsxs(r.Fragment,{children:["At SnapEstimate.ai, we don't just verify—we guarantee. SnapEstimate.ai will provide a satisfaction reimbursement of up to ",r.jsx("span",{className:"text-foreground font-bold text-base",children:"$2,500.00"}),"."]}):i.description})}),i.expandable&&r.jsx(Yd,{initial:!1,children:h&&r.jsx(Ot.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.3},className:"overflow-hidden mb-3",children:typeof i.details=="string"?r.jsxs("div",{className:"pt-2 space-y-4",children:[r.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed",children:i.details}),i.showRatingBar&&r.jsxs("div",{children:[r.jsxs("div",{className:"relative h-16 rounded-xl overflow-hidden shadow flex",children:[r.jsx("div",{className:"flex-1",style:{backgroundColor:"hsl(197,100%,50%)"}}),r.jsx("div",{className:"flex-1 bg-blue-500 border-l border-gray-200"}),r.jsx("div",{className:"flex-1 bg-blue-400 border-l border-gray-200"}),r.jsx("div",{className:"flex-1 bg-blue-300 border-l border-gray-200"}),r.jsx("div",{className:"flex-1 bg-blue-200 border-l border-gray-200"}),r.jsx("div",{className:"flex-1 bg-blue-100 border-l border-gray-200"})]}),r.jsx("div",{className:"flex mt-2 text-xs text-muted-foreground font-medium",children:["Elite","Excellent","Very Good","Good","Average","Unrated"].map(m=>r.jsx("div",{className:"flex-1 text-center",children:m},m))})]})]}):r.jsxs("div",{className:"text-muted-foreground text-sm leading-relaxed pt-2 space-y-3",children:[i.details.intro.split(`
675
676`).map((m,g)=>r.jsx("p",{children:m},g)),r.jsx("ul",{className:"list-disc list-inside space-y-1 pl-1",children:i.details.bullets.map((m,g)=>r.jsx("li",{children:m},g))}),i.details.outro&&i.details.outro.split(`
677
678`).map((m,g)=>r.jsx("p",{children:m},g))]})},i.title+"-expanded")}),r.jsx("div",{className:"mt-auto pt-2",children:i.expandable?r.jsxs("div",{className:"flex flex-wrap gap-2",children:[r.jsx(qe,{onClick:()=>n(i.title),className:"bg-[hsl(30,95%,53%)] hover:bg-[hsl(30,95%,46%)] text-white font-semibold rounded-full px-5 text-sm",children:h?"Show Less":"Learn More"}),i.guaranteeLink&&r.jsx(Qt,{to:i.guaranteeLink,children:r.jsx(qe,{variant:"outline",className:"rounded-full px-5 text-sm font-semibold border-[hsl(197,100%,50%)] text-[hsl(197,100%,40%)] hover:bg-[hsl(197,100%,96%)]",style:{backgroundColor:"transparent"},children:"View Full Guarantee"})})]}):i.link?r.jsx(Qt,{to:i.link,children:r.jsx(qe,{className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold rounded-full px-5 text-sm",children:"Learn More"})}):r.jsx(qe,{className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold rounded-full px-5 text-sm",children:"Learn More"})})]},i.title)})})]})})}const RI="To ensure you are matched with the best in the business, we utilize a proprietary Expert Rating Score—a rigorous evaluation system designed by industry veterans to separate top-tier professionals from the rest. Every local pro is scored on a scale of 0 to 100 based on 15 specific criteria that our experts have identified as the essential benchmarks for quality, reliability, and technical skill. By raising the bar across every aspect of the service experience, this system provides you with a transparent, data-backed look at a contractor's true standing, ensuring your project is handled by a pro who has earned their rank through proven excellence.";function C4({hideVideo:e=!1}){const[t,n]=S.useState(!1);return r.jsx("section",{className:"w-full bg-white pt-16 sm:pt-24 pb-8 sm:pb-10",children:r.jsx("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 lg:px-8",children:r.jsx("div",{className:"grid grid-cols-1 gap-12",children:r.jsxs(Ot.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},children:[r.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-foreground mb-4",children:"What is the SnapEstimate.AI Expert Rating Score?"}),r.jsx("p",{className:"text-muted-foreground text-base sm:text-lg mb-8",children:"A score we give a local pro out of 100 based on 15 criteria that our industry experts believe are the best criteria to 
678separate good and bad local pros."}),r.jsxs(Ot.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:.15},className:"w-full",children:[r.jsxs("div",{className:"relative h-24 rounded-xl overflow-hidden shadow-lg flex",children:[r.jsx("div",{className:"flex-1",style:{backgroundColor:"hsl(197,100%,50%)"}}),r.jsx("div",{className:"flex-1 bg-blue-500 border-l border-gray-300"}),r.jsx("div",{className:"flex-1 bg-blue-400 border-l border-gray-300"}),r.jsx("div",{className:"flex-1 bg-blue-300 border-l border-gray-300"}),r.jsx("div",{className:"flex-1 bg-blue-200 border-l border-gray-300"}),r.jsx("div",{className:"flex-1 bg-blue-100 border-l border-gray-300"})]}),r.jsxs("div",{className:"flex mt-6 text-base text-muted-foreground font-medium",children:[r.jsx("div",{className:"flex-1 text-center",children:r.jsx("span",{children:"Elite"})}),r.jsx("div",{className:"flex-1 text-center",children:r.jsx("span",{children:"Excellent"})}),r.jsx("div",{className:"flex-1 text-center",children:r.jsx("span",{children:"Very Good"})}),r.jsx("div",{className:"flex-1 text-center",children:r.jsx("span",{children:"Good"})}),r.jsx("div",{className:"flex-1 text-center",children:r.jsx("span",{children:"Average"})}),r.jsx("div",{className:"flex-1 text-center",children:r.jsx("span",{children:"Unrated"})})]}),r.jsxs("div",{className:"mt-8",children:[r.jsxs("button",{onClick:()=>n(i=>!i),className:"inline-flex items-center gap-1.5 text-[hsl(197,100%,40%)] font-semibold text-sm hover:underline",children:[t?"Show Less":"Learn More",r.jsx($o,{className:`w-4 h-4 transition-transform ${t?"rotate-180":""}`})]}),r.jsx(Yd,{initial:!1,children:t&&r.jsx(Ot.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.3},className:"overflow-hidden",children:r.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed pt-4 max-w-3xl",children:RI})})})]})]}),!e&&r.jsx("div",{className:"mt-10 w-full",children:r.jsx("iframe",{src:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=0403_wqnhiu",allow:"autoplay; fullscreen; encrypted-media; picture-in-picture",allowFullScreen:!0,className:"w-full rounded-2xl shadow-lg",style:{aspectRatio:"16/9",border:"none"}})})]})})})})}const LI=[{icon:qj,title:"About SnapEstimate.ai",description:"SnapEstimate.ai is built to empower both homeowners and professionals with precision tools that streamline your project process from start to finish. Your state pulls from your location for accurate, local pricing.",details:`SnapEstimate.ai marks a revolutionary shift in home improvement as the first platform to combine high-resolution project photos, historical pricing data, and Google Maps integration to deliver instant, market-specific estimates. By leveraging these technologies, we've eliminated the traditional "guessing game" and the need for invasive home visits. Our system analyzes the unique variables of your property and project through the images you provide, offering the ultimate convenience of receiving a professional-grade cost breakdown from the comfort of your couch. Whether you're planning a renovation or a quick repair, you now have the power to access precise, data-backed pricing without ever having to open your front door to a salesperson.`,id:"about"},{icon:S1,title:"Our Guarantee & Privacy Promise",description:"Your home is your biggest investment, and we take your family's safety seriously.",details:{intro:"Every connection made through SnapEstimate.ai is backed by our guarantee:",bullets:["Verified Expertise — Every contractor is manually and digitally screened for a minimum of five years in business and a verified 4.5-star average rating or higher.",'Zero-Spam Policy — Your contact information is encrypted and only shared with the specific, highly-rated professionals you choose to engage with. We never sell your data to third-party "lead farms."',"Real-Time Data Accuracy — Our AI instantly pulls your state and zip code from your location to deliver precise local pricing, hardware costs, and labor rates specific to your area.","Privacy Protection — We use industry-standard SSL encryption to protect your project details and location data. Your personal information stays safe, secure, and under your control."]},id:"guarantee"}];function P4({userState:e="your area",serviceName:t="home services"}){const[n,i]=S.useState(null),l=h=>i(m=>m===h?null:h),d=LI.map(h=>h.id==="about"?{...h,description:`SnapEstimate.ai is built to empower both homeowners and professionals with precision tools that streamline your project process from start to finish. We connect you with vetted, licensed professionals across ${e} for accurate, local pricing.`}:h);return r.jsx("section",{className:"w-full bg-[hsl(210,20%,96%)] py-16 sm:py-24",children:r.jsx("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 lg:px-8",children:r.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8 items-start",children:d.map((h,m)=>{const g=h.icon;return r.jsxs(Ot.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:m*.1},className:"bg-white rounded-2xl p-8 shadow-sm hover:shadow-lg transition-shadow duration-300 flex flex-col self-start",children:[r.jsx("div",{className:"w-14 h-14 roun
678ded-xl bg-primary/10 flex items-center justify-center mb-5",children:r.jsx(g,{className:"w-7 h-7 text-primary"})}),r.jsx("h3",{className:"text-xl font-bold text-foreground mb-3",children:h.title}),r.jsx("blockquote",{className:"border-l-4 border-[hsl(197,100%,45%)] pl-4 mb-3",children:r.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed",children:h.description})}),r.jsx(Yd,{initial:!1,children:n===h.id&&r.jsx(Ot.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.3},className:"overflow-hidden mb-3",children:r.jsx("div",{className:"text-muted-foreground text-sm leading-relaxed pt-2 space-y-2",children:typeof h.details=="string"?h.details.split(`
679
680`).map((y,x)=>r.jsx("p",{children:y},x)):r.jsxs(r.Fragment,{children:[r.jsx("p",{children:h.details.intro}),r.jsx("ul",{className:"list-disc list-inside space-y-1 pl-1",children:h.details.bullets.map((y,x)=>{const[w,...j]=y.split(" — ");return r.jsxs("li",{children:[r.jsx("span",{className:"font-bold text-black",children:w}),j.length>0&&` — ${j.join(" — ")}`]},x)})})]})})})}),r.jsx("div",{className:"mt-auto pt-2",children:r.jsx(qe,{onClick:()=>l(h.id),className:"bg-[hsl(30,95%,53%)] hover:bg-[hsl(30,95%,46%)] text-white font-semibold rounded-full px-5 text-sm",children:n===h.id?"Show Less":"Learn More"})})]},h.id)})})})})}const ad=[{stars:"★★★★★",title:"Absolute game-changer for home projects!",name:"Jennifer Caldwell",body:`"I've done multiple projects through this platform now and couldn't be happier. Every contractor they sent out was professional, on time, and did incredible work. Knowing that every professional is fully vetted and approved gives you total peace of mind before the job even starts. If you want guaranteed great results without the usual headache of finding reliable help, use this platform!"`},{stars:"★★★★☆",title:"4.5 out of 5 Stars",name:"Michael Marvon",company:"Smiley Drain",body:`"This platform is amazing, works pretty well. The only reason I didn't give it a 5 star is because it took two months for it to ramp up. So far, things are looking good on month 3, hoping to change my review to 5 stars, we're getting close. So far as of now I'm getting 5X my investment I could say I'm happy and I definitely recommend this platform, it's almost catching up to my PPC ROI. The reason I love it is I can scale with this platform and buy as many territories as I want. Hopefully this company comes through."`},{stars:"★★★★★",title:"The only way I'll hire contractors from now on.",name:"Sarah Okonkwo",body:`"We've had nothing but great success using this platform. It completely takes the guesswork out of hiring because you already know every contractor is strictly vetted and approved. The quality of work has been flawless across the board. Highly recommend!"`},{stars:"★★★★★",title:"Verified Pro",name:"Steve B.",company:"Lesco Heating Cooling and Refrigeration",body:`"As an HVAC contractor, this platform has been a total game-changer for my business. I was able to score multiple air conditioner installation jobs right away. The best part is that these customers are already in the market and actively shopping for installs, so you don't waste time chasing dead leads. I was able to snag these opportunities, work my way in quickly, and close a few high-value installs almost immediately. If you're a contractor looking to fill your schedule with serious customers, this is the place to be."`}];function MI(){const[e,t]=nn.useState(0),n=ad[e];return r.jsxs("div",{className:"mt-2 max-w-xl w-full text-left",children:[r.jsx("div",{className:"overflow-hidden",children:r.jsxs("div",{className:"transition-all duration-300",children:[r.jsxs("p",{className:"text-xs font-bold text-yellow-400 mb-1",children:[n.stars," ",n.title]}),r.jsx("p",{className:"text-xs text-gray-300 leading-snug italic mb-1",children:n.body}),n.footer&&r.jsx("p",{className:"text-xs font-bold text-white mb-1",children:n.footer}),r.jsxs("p",{className:"text-xs text-gray-400 mt-1",children:["— ",n.name," ",n.company&&r.jsxs("span",{className:"text-gray-500",children:["• ",n.company]}),"  ",r.jsx("span",{className:"text-green-400 font-semibold",children:"✓ Verified"})]})]})}),r.jsxs("div",{className:"flex items-center gap-3 mt-3",children:[r.jsx("button",{onClick:()=>t((e-1+ad.length)%ad.length),className:"text-gray-400 hover:text-white transition-colors text-base",children:"‹"}),r.jsx("div",{className:"flex gap-1.5",children:ad.map((i,l)=>r.jsx("button",{onClick:()=>t(l),className:`w-1.5 h-1.5 rounded-full transition-colors ${l===e?"bg-yellow-400":"bg-gray-600"}`},l))}),r.jsx("button",{onClick:()=>t((e+1)%ad.length),className:"text-gray-400 hover:text-white transition-colors text-base",children:"›"})]})]})}function tr(){const[e,t]=S.useState(!1),[n,i]=S.useState({name:"",email:"",message:""}),[l,d]=S.useState(!1),h=async m=>{m.preventDefault(),d(!0);try{await Me.integrations.Core.SendEmail({to:"[email protected]",subject:`Contact Form Submission from ${n.name}`,body:`Name: ${n.name}
681Email: ${n.email}
682
683Message:
684${n.message}`}),i({name:"",email:"",message:""}),t(!1),alert("Message sent successfully!")}catch{alert("Failed to send message. Please try again.")}finally{d(!1)}};return r.jsxs("footer",{className:"w-full bg-[hsl(213,32%,10%)] text-white py-10",children:[r.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 lg:px-8",children:[r.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4",children:[r.jsx("div",{className:"flex flex-col items-start gap-2",children:r.jsx("a",{href:"/grow",className:"inline-block bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold rounded-full px-6 py-3 text-sm transition-colors",children:"Are you a local pro?"})}),r.jsxs("div",{className:"flex flex-col items-center gap-3 text-xs",children:[r.jsxs("div",{className:"flex items-center gap-6 flex-wrap justify-center",children:[r.jsx(Qt,{to:"/privacy-policy",className:"hover:text-white transition-colors",children:"Privacy Policy"}),r.jsx(Qt,{to:"/terms-of-service",className:"hover:text-white transition-colors",children:"Terms of Service"}),r.jsx(Qt,{to:"/elite-guarantee",className:"hover:text-white transition-colors",children:"Elite Guarantee"}),r.jsx(Qt,{to:"/contact",className:"hover:text-white transition-colors",children:"Contact"}),r.jsx(Qt,{to:"/sms-opt-in",className:"hover:text-white transition-colors",children:"SMS Opt-In / Opt-Out Policy"})]}),r.jsx(MI,{})]}),r.jsxs("div",{className:"flex flex-col items-center gap-2",children:[r.jsx("p",{className:"text-xs",children:"© 2026 SnapEstimate.AI LLC. All rights reserved."}),r.jsx("p",{className:"text-xs",children:"8 Campus Drive, Suite 105"}),r.jsx("p",{className:"text-xs",children:"Parsippany-Troy Hills, NJ 07054"}),r.jsx("button",{onClick:()=>t(!0),className:"hover:text-white transition-colors text-xs whitespace-nowrap underline",children:"Contact Us"}),r.jsxs("div",{className:"flex flex-col items-end",children:[r.jsx("a",{href:"tel:+18339907627",className:"text-xs hover:text-white transition-colors",children:"(833) 990-SNAP"}),r.jsx("a",{href:"tel:+18339907627",className:"text-xs hover:text-white transition-colors",children:"(7627)"})]}),r.jsx("p",{className:"text-xs",children:"Powered By GoDaddy"})]})]}),r.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4 mt-8 pt-6 border-t border-white/10",children:[r.jsxs("div",{className:"flex flex-col items-center gap-1",children:[r.jsx("a",{href:"https://apps.apple.com",target:"_blank",rel:"noopener noreferrer",children:r.jsx("img",{src:"https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg",alt:"Download on the App Store",className:"h-10 w-auto"})}),r.jsx("p",{className:"text-xs text-white/60",children:"Coming Soon"})]}),r.jsx("a",{href:"https://play.google.com",target:"_blank",rel:"noopener noreferrer",children:r.jsx("img",{src:"https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png",alt:"Get it on Google Play",className:"h-14 w-auto"})})]})]}),e&&r.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4",children:r.jsxs("div",{className:"bg-white rounded-lg shadow-lg max-w-md w-full p-6",children:[r.jsxs("div",{className:"flex items-center justify-between mb-4",children:[r.jsx("h2",{className:"text-lg font-bold text-gray-800",children:"Contact Us"}),r.jsx("button",{onClick:()=>t(!1),className:"text-gray-400 hover:text-gray-600",children:r.jsx(Zs,{className:"w-5 h-5"})})]}),r.jsxs("form",{onSubmit:h,className:"space-y-4",children:[r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Name"}),r.jsx("input",{type:"text",required:!0,value:n.name,onChange:m=>i({...n,name:m.target.value}),className:"w-full px-3 py-2 border border-gray-300 rounded-md text-gray-900 focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Email"}),r.jsx("input",{type:"email",required:!0,value:n.email,onChange:m=>i({...n,email:m.target.value}),className:"w-full px-3 py-2 border border-gray-300 rounded-md text-gray-900 focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Message"}),r.jsx("textarea",{required:!0,rows:"4",value:n.message,onChange:m=>i({...n,message:m.target.value}),className:"w-full px-3 py-2 border border-gray-300 rounded-md text-gray-900 focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]}),r.jsx("button",{type:"submit",disabled:l,className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold py-2 rounded-md transition-colors disabled:opacity-50",children:l?"Sending...":"Send Message"})]})]})})]})}function T4({serviceName:e}){const t=Hn(),n=[{icon:pm,title:"Snap a photo or enter your details.",subt
684itle:"No home visit required"},{icon:tj,title:"Review your instant fair-market price breakdown.",subtitle:"Homeowner's guide provided."},{icon:qs,title:"Connect with vetted, local Elite Pros risk-free.",subtitle:"Get up to 3 free quotes today.",guarantee:"Backed by our $2,500.00 Guarantee"}];return r.jsx("section",{className:"w-full bg-white py-16 px-4",children:r.jsxs("div",{className:"max-w-4xl mx-auto",children:[r.jsx("div",{className:"text-center mb-12 pt-4",children:r.jsx("p",{className:"text-3xl sm:text-4xl text-gray-800 font-extrabold",children:"Get a Quote in 60 seconds."})}),r.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-8",children:n.map((i,l)=>{const d=i.icon;return r.jsxs("div",{className:"flex flex-col items-center text-center",children:[r.jsx("div",{className:"w-20 h-20 rounded-full bg-[hsl(197,100%,95%)] flex items-center justify-center mb-5 flex-shrink-0",children:r.jsx(d,{className:"w-10 h-10 text-[hsl(197,100%,50%)]"})}),r.jsx("p",{className:"font-semibold text-[hsl(213,50%,15%)] text-base leading-relaxed",children:i.title}),i.guarantee&&r.jsxs("div",{className:"mt-3 flex flex-col items-center",children:[r.jsx("p",{className:"text-sm text-gray-400 mb-1",children:i.subtitle}),r.jsxs("span",{className:"text-sm text-[hsl(197,100%,50%)] font-semibold",children:["🛡️ Backed by our $2,500.00 Guarantee - ",r.jsx("button",{onClick:()=>{window.scrollTo(0,0),t("/elite-guarantee")},className:"text-[hsl(197,100%,50%)] font-semibold hover:text-[hsl(197,100%,43%)] underline underline-offset-2",children:"Learn More"})]})]}),!i.guarantee&&i.subtitle&&r.jsx("p",{className:"text-sm text-gray-400 mt-3",children:i.subtitle})]},l)})})]})})}function II({onBeforeCall:e}={}){const t=()=>{e&&!e()||(window.location.href="tel:+18339907627")};return r.jsxs("div",{className:"flex flex-col items-center gap-2 w-full sm:w-auto",children:[r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("img",{src:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",alt:"Expert",className:"w-14 h-14 rounded-full object-cover flex-shrink-0"}),r.jsx("p",{className:"text-black font-bold text-base",children:"Need Emergency Service?"})]}),r.jsxs(qe,{onClick:t,className:"bg-transparent border border-[hsl(197,100%,40%)] text-[hsl(197,100%,35%)] hover:bg-[hsl(197,100%,96%)] font-semibold px-4 h-9 rounded-lg flex items-center gap-2 text-sm justify-center",children:[r.jsxs("span",{className:"relative flex items-center justify-center",children:[r.jsx("span",{className:"absolute inline-flex h-5 w-5 rounded-full bg-white opacity-40 animate-ping"}),r.jsx(Er,{className:"w-3 h-3 relative z-10 drop-shadow-[0_0_4px_rgba(255,255,255,0.9)]"})]}),"Call or Text a local Elite Pro now"]})]})}const zl=[{label:"AC Install",icon:Kf,slug:"AirConditionerInstallation",serviceName:"Air Conditioner Installation",highDemand:!0},{label:"Appliance Repair",icon:E5,slug:"ApplianceRepair",serviceName:"Appliance Repair"},{label:"Basement Waterproofing",icon:rk,slug:"BasementWaterproofing",serviceName:"Basement Waterproofing",trending:!0,count:68},{label:"Bathroom Remodeling",icon:WN,slug:"BathroomRemodeling",serviceName:"Bathroom Remodeling"},{label:"Carpet Cleaning",icon:O5,slug:"CarpetCleaning",serviceName:"Carpet Cleaning"},{label:"Chimney Liner & Masonry",icon:Gh,slug:"ChimneyLinerMasonry",serviceName:"Chimney Liner & Masonry"},{label:"Cleaning",icon:Lh,slug:"Cleaning",serviceName:"Cleaning"},{label:"Custom Closets",icon:i5,slug:"CustomClosets",serviceName:"Custom Closets"},{label:"Custom Garage",icon:mk,slug:"CustomGarage",serviceName:"Custom Garage"},{label:"Decks",icon:_1,slug:"DecksAndPorches",serviceName:"Decks & Porches"},{label:"Driveway",icon:Jf,slug:"DrivewayService",serviceName:"Driveway Service",highDemand:!0},{label:"Duct Cleaning",icon:Rj,slug:"DuctCleaning",serviceName:"Duct Cleaning"},{label:"Electrical",icon:Hd,slug:"Electrical",serviceName:"Electrical",highDemand:!0},{label:"Fencing",icon:Mj,slug:"Fencing",serviceName:"Fencing"},{label:"Garage Doors",icon:u5,slug:"GarageDoors",serviceName:"Garage Doors"},{label:"Gutter Service",icon:lf,slug:"GutterService",serviceName:"Gutter Service"},{label:"Handyman",icon:wa,slug:"HandymanService",serviceName:"Handyman Service",trending:!0},{label:"Heating",icon:Gh,slug:"HeatingSystemInstallation",serviceName:"Heating System Installation"},{label:"Home Inspection",icon:b1,slug:"HomeInspection",serviceName:"Home Inspection"},{label:"Home Remodeling",icon:Uj,slug:"HomeRemodeling",serviceName:"Home Remodeling",trending:!0},{label:"Hydro Jetting",icon:Fj,slug:"SewerHydroJetting",serviceName:"Sewer Hydro Jetting"},{label:"Junk Removal",icon:j1,slug:"JunkRemoval",serviceName:"Junk Removal",trending:!0},{label:"Kitchen Remodeling",icon:dk,slug:"KitchenRemodeling",serviceName:"Kitchen Remodeling"},{label:"Landscaping",icon:Zf,slug:"Landscaping",serviceName:"Landscaping",trending:!0},{label:"Lawn Care",icon:z5,slug:"LawnCare",serviceName:"Lawn Care"},{label:"Moving",icon:A1,slug:"MovingService",serviceName:"Moving Service"},{label:"Painting",icon:k1,slug:"Painting",serviceName:"Painting",highDemand:!0},{label:"Pest Control",icon:f1,slug:"PestControl",serviceName:"Pest Control"},{label:"Plumbing",icon:cd,slug:"Plumbing",serviceName:"Plumbing",highDemand:!0},{label:"Pool Service",icon:lf,slug:"PoolService",serviceName:"Pool Service",highDemand:!0},{label:"Roofing",icon:Gf,slug:"Roofing",serviceName:"Roofing",highDemand:!0},{label:"Sewer Camera",icon:pm,slug:"SewerCameraInspection",serviceName:"Sewer Camera Inspection"},{label:"Sewer Descaling",icon:g5,slug:"SewerDescaling",serviceName:"Sewer Descaling"},{label:"Sewer Relining",icon:vd,slug:"SewerRelining",serviceName:"Sewer Relining"},{label:"Sewer Rooter",icon:w5,slug:"SewerRooterService",serviceName:"Sewer Rooter Service"},{label:"Siding",icon:vd,slug:"Siding",serviceName:"Siding",trending:!0},{label:"Tree Service",icon:Q5,slug:"TreeService",serviceName:"Tree Service",trending:!0},{label:"Water & Mold",icon:bj,slug:"WaterFireRestoration",serviceName:"Water & Mold Cleanup",trending:!0,count:68},{label:"Water Heater",icon:lf,slug:"WaterHeaterInstallation",serviceName:"Water Heater Installation",highDemand:!0},{label:"Water Softener",icon:v1,slug:"WaterSoftener",serviceName:"Water Softener"},{label:"Windows & Doors",icon:x1,slug:"NewWindowAndDoor",serviceName:"New Window & Door",trending:!0}];function $I(){const e=Hn(),t=nn.useRef(null),n=nn.useRef(null),[i,l]=S.useState(null),[d,h]=S.useState(""),[m,g]=S.useState(!1),y=S.useRef(null),x=d.trim().length>0?(()=>{const z=d.toLowerCase(),V=zl.filter(ne=>ne.label.toLowerCase().startsWith(z)||ne.serviceName.toLowerCase().startsWith(z)).sort((ne,de)=>ne.serviceName.localeCompare(de.serviceName)),W=zl.filter(ne=>!V.includes(ne)&&(ne.label.toLowerCase().includes(z)||ne.serviceName.toLowerCase().includes(z))).sort((ne,de)=>ne.serviceName.localeCompare(de.serviceName));return[...V,...W]}
684)():[];S.useEffect(()=>{const z=V=>{y.current&&!y.current.contains(V.target)&&g(!1)};return document.addEventListener("mousedown",z),()=>document.removeEventListener("mousedown",z)},[]);const w=zl.map(z=>z.count!==void 0?z.count:Kd(z.serviceName,z.highDemand||!1)),[j,P]=S.useState(()=>w.map(()=>0)),C=S.useCallback(()=>{P(w.map(()=>0));let z=0;const V=80,W=setInterval(()=>{z++,z>=V?(P([...w]),clearInterval(W)):P(w.map(ne=>Math.floor(ne*z/V)))},75);return W},[]);S.useEffect(()=>{const z=C();return()=>clearInterval(z)},[]),S.useEffect(()=>{const z=n.current;if(!z)return;const V=new IntersectionObserver(W=>{W[0].isIntersecting&&C()},{threshold:.1});return V.observe(z),()=>V.disconnect()},[C]);const k=nn.useRef(!1),A=nn.useRef(0),E=nn.useRef(0),$=z=>{k.current=!0,A.current=z.pageX-t.current.offsetLeft,E.current=t.current.scrollLeft,t.current.style.cursor="grabbing"},I=()=>{k.current=!1,t.current&&(t.current.style.cursor="grab")},M=()=>{k.current=!1,t.current&&(t.current.style.cursor="grab")},F=z=>{if(!k.current)return;z.preventDefault();const W=(z.pageX-t.current.offsetLeft-A.current)*1.5;t.current.scrollLeft=E.current-W};return r.jsxs("div",{className:"py-2 w-full",ref:n,children:[i&&r.jsx(j0,{onConfirm:z=>{sessionStorage.setItem("userZip",z),e(i),l(null),window.scrollTo(0,0)},onClose:()=>l(null)}),r.jsxs("div",{className:"relative mb-3 px-2",ref:y,children:[r.jsxs("div",{className:"flex items-center gap-2 border-2 border-[hsl(197,100%,70%)] rounded-xl px-3 h-11 bg-white focus-within:border-[hsl(197,100%,50%)] transition-colors",children:[r.jsx(C1,{className:"w-4 h-4 text-[hsl(197,100%,50%)] flex-shrink-0"}),r.jsx("input",{type:"text",placeholder:"Search a service (e.g. Roofing, Plumbing…)",value:d,onChange:z=>{h(z.target.value),g(!0)},onFocus:()=>g(!0),className:"flex-1 text-sm bg-transparent outline-none text-gray-800 placeholder-gray-400"}),d&&r.jsx("button",{onClick:()=>{h(""),g(!1)},className:"flex-shrink-0",children:r.jsx(Zs,{className:"w-4 h-4 text-gray-400"})})]}),m&&x.length>0&&r.jsx("div",{className:"absolute left-2 right-2 top-12 bg-white border border-gray-200 rounded-xl shadow-lg z-50 max-h-56 overflow-y-auto",children:x.map(z=>{const V=z.icon;return r.jsxs("button",{onMouseDown:()=>{g(!1),h(""),l(`/${z.slug}`)},className:"flex items-center gap-3 w-full px-4 py-3 hover:bg-[hsl(197,100%,94%)] transition-colors text-left",children:[r.jsx("div",{className:"w-8 h-8 rounded-full bg-[hsl(197,100%,94%)] flex items-center justify-center flex-shrink-0",children:r.jsx(V,{className:"w-4 h-4 text-[hsl(197,100%,40%)]"})}),r.jsx("span",{className:"text-sm font-medium text-gray-800",children:z.serviceName}),z.highDemand&&r.jsx("span",{className:"ml-auto text-[10px] font-bold bg-red-500 text-white px-1.5 py-0.5 rounded-full",children:"🔥 Hot"}),z.trending&&!z.highDemand&&r.jsx("span",{className:"ml-auto text-[10px] font-bold bg-blue-500 text-white px-1.5 py-0.5 rounded-full",children:"📈 Trending"})]},z.slug)})}),m&&d.trim().length>0&&x.length===0&&r.jsxs("div",{className:"absolute left-2 right-2 top-12 bg-white border border-gray-200 rounded-xl shadow-lg z-50 px-4 py-3 text-sm text-gray-500",children:['No services found for "',d,'"']})]}),r.jsxs("div",{className:"flex items-center justify-between gap-2 mb-2 px-2",children:[r.jsx("span",{className:"text-sm font-bold",style:{color:"hsl(30,95%,53%)"},children:"Choose a service below."}),r.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[r.jsx("span",{className:"text-base font-bold",style:{color:"hsl(197,100%,50%)"},children:"Scroll for More"}),r.jsx(_s,{className:"w-5 h-5 animate-bounce",style:{color:"hsl(197,100%,50%)"}})]})]}),r.jsx("div",{ref:t,onMouseDown:$,onMouseLeave:I,onMouseUp:M,onMouseMove:F,style:{overflowX:"auto",WebkitOverflowScrolling:"touch",scrollbarWidth:"none",msOverflowStyle:"none",width:"100%",cursor:"grab",userSelect:"none"},children:r.jsx("div",{className:"flex flex-nowrap gap-1 px-4 pb-1",style:{width:"max-content"},children:zl.map((z,V)=>{const W=z.icon;return r.jsxs("button",{onClick:()=>l(`/${z.slug}`),className:"flex flex-col items-center gap-1 px-3 py-2 rounded-xl hover:bg-[hsl(197,100%,90%)] active:bg-[hsl(197,100%,85%)] transition-colors min-w-[72px]",children:[r.jsx("div",{className:"w-10 h-10 rounded-full bg-[hsl(197,100%,94%)] flex items-center justify-center",children:r.jsx(W,{className:"w-5 h-5 text-[hsl(197,100%,40%)]"})}),r.jsx("span",{className:"text-xs text-gray-600 font-medium text-center leading-tight whitespace-nowrap",children:z.label}),z.highDemand&&r.jsx("span",{className:"text-[10px] font-bold bg-red-500 text-white px-1.5 py-0.5 rounded-full whitespace-nowrap",children:"🔥 Hot"}),z.trending&&!z.highDemand&&r.jsx("span",{className:"text-[10px] font-bold bg-blue-500 text-white px-1.5 py-0.5 rounded-full whitespace-nowrap",children:"📈 Trending"})]},z.slug)})})})]})}function DI({onClose:e}){const t=Hn(),[n,i]=S.useState(""),[l,d]=S.useState(""),[h,m]=S.useState(""),g=()=>{if(n.length!==5){m("Please enter a valid 5-digit zip code.");return}if(!l){m("Please select a service.");return}sessionStorage.setItem("userZip",n),e(),t(`/contractor-profile/${l}?zip=${n}`)};return r.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4",onClick:e,children:r.jsxs("div",{className:"bg-white rounded-2xl shadow-2xl p-6 w-full max-w-sm",onClick:y=>y.stopPropagation(),children:[r.jsx("h3",{className:"text-xl font-bold text-foreground mb-1",children:"Connect with a 
684Local Pro"}),r.jsx("p",{className:"text-sm text-gray-500 mb-4",children:"Tell us your zip code and service so we can match you with the right contractor."}),r.jsx("label",{className:"text-xs font-semibold text-gray-600 uppercase tracking-wide mb-1 block",children:"Zip Code"}),r.jsx("input",{type:"text",inputMode:"numeric",maxLength:"5",autoFocus:!0,placeholder:"e.g. 07985",value:n,onChange:y=>{i(y.target.value.replace(/\D/g,"")),m("")},className:"w-full border-2 border-gray-300 rounded-xl px-4 h-11 text-base text-center font-semibold focus:outline-none focus:border-[hsl(197,100%,50%)] mb-3"}),r.jsx("label",{className:"text-xs font-semibold text-gray-600 uppercase tracking-wide mb-1 block",children:"Service Needed"}),r.jsxs("select",{value:l,onChange:y=>{d(y.target.value),m("")},className:"w-full border-2 border-gray-300 rounded-xl px-4 h-11 text-base font-semibold focus:outline-none focus:border-[hsl(197,100%,50%)] mb-4 bg-white",children:[r.jsx("option",{value:"",children:"Select a service..."}),zl.map(y=>r.jsx("option",{value:y.slug,children:y.label},y.slug))]}),h&&r.jsx("p",{className:"text-sm text-red-500 mb-3",children:h}),r.jsx("button",{onClick:g,className:"w-full bg-green-500 hover:bg-green-600 text-white font-bold py-3 rounded-xl transition-colors text-sm",children:"Find My Contractor →"}),r.jsx("button",{onClick:e,className:"w-full mt-2 text-sm text-gray-400 hover:text-gray-600 py-2",children:"Cancel"})]})})}function E4(){const e=Hn(),t=S.useCallback(()=>window.location.reload(),[]),{pullDistance:n,THRESHOLD:i}=nR(t),[l,d]=S.useState(!1),[h,m]=S.useState(!1),[g,y]=S.useState(0),[x,w]=S.useState("New Jersey"),[j,P]=S.useState(""),[C,k]=S.useState(!1),[A,E]=S.useState(!1),[$,I]=S.useState(!1),M=S.useRef(null),F=S.useCallback(()=>{y(0);let W=0;const ne=2020,be=ne/40,Re=setInterval(()=>{W+=be,W>=ne?(y(ne),clearInterval(Re)):y(Math.floor(W))},40);return Re},[]);S.useEffect(()=>{(async()=>{try{const ne=await Me.functions.invoke("getUserState",{});w(ne.data.city||"New Jersey")}catch{w("New Jersey")}})()},[]),S.useEffect(()=>{const W=M.current;if(!W)return;const ne=new IntersectionObserver(de=>{de[0].isIntersecting&&F()},{threshold:.5});return ne.observe(W),()=>ne.disconnect()},[F]),S.useEffect(()=>{const W=M.current;if(!W)return;const ne=()=>{const de=W.getBoundingClientRect();de.top<window.innerHeight&&de.bottom>0&&F()};return window.addEventListener("scroll",ne,{passive:!0}),()=>window.removeEventListener("scroll",ne)},[F]);const z=()=>(m(!0),d(!0),setTimeout(()=>m(!1),3e3),!1),V=async()=>{var W;if(!/^\d{5}$/.test(j)){k(!0);return}sessionStorage.setItem("userZip",j);try{const de=(W=(await Me.functions.invoke("getUserState",{zip:j})).data)==null?void 0:W.city;de&&de!=="your area"&&sessionStorage.setItem("userCity",de)}catch{}E(!1),P(""),e(`/calculate?zip=${j}`)};return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(rR,{pullDistance:n,threshold:i}),r.jsx(Lr,{}),r.jsx(sR,{}),r.jsx(tR,{open:l,onOpenChange:d}),A&&r.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4",onClick:()=>E(!1),children:r.jsxs("div",{className:"bg-white rounded-2xl shadow-2xl p-6 w-full max-w-sm",onClick:W=>W.stopPropagation(),children:[r.jsx("h3",{className:"text-xl font-bold text-foreground mb-2",children:"Enter Your Zip Code"}),r.jsx("p",{className:"text-sm text-gray-500 mb-4",children:"We'll show you accurate estimates for your area."}),r.jsx("input",{type:"text",inputMode:"numeric",maxLength:"5",autoFocus:!0,placeholder:"e.g. 07985",value:j,onChange:W=>P(W.target.value.replace(/\D/g,"")),className:"w-full border-2 border-gray-300 rounded-xl px-4 h-12 text-lg text-center font-semibold focus:outline-none focus:border-[hsl(197,100%,50%)] mb-4"}),C&&r.jsx("p",{className:"text-sm text-red-500 mb-2",children:"Please enter a valid 5-digit zip code."}),r.jsx("button",{disabled:j.trim().length!==5,onClick:V,className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] disabled:opacity-40 text-white font-bold py-3 rounded-xl flex items-center justify-center gap-2 text-sm transition-colors",children:"Get Your Estimate →"}),r.jsx("button",{onClick:()=>E(!1),className:"w-full mt-2 text-sm text-gray-400 hover:text-gray-600 py-2",children:"Cancel"})]})}),r.jsx(T4,{}),r.jsx("div",{ref:M,className:"w-full bg-[hsl(197,100%,96%)] border-y border-[hsl(197,100%,85%)] py-4 px-4",children:r.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col items-center gap-4",children:[r.jsx($I,{}),r.jsx("div",{className:"w-full border-t border-gray-300 pt-4 mt-2",children:r.jsxs("div",{className:"flex items-center justify-between gap-4",children:[r.jsxs("div",{className:"flex-1",children:[r.jsx("p",{className:"text-red-600 font-bold text-sm mb-1",children:"🚨 Need Emergency Service?"}),r.jsx("p",{className:"text-gray-600 text-xs",children:"Connect with a vetted, local Elite Pro right now."})]}),r.jsx("button",{onClick:()=>I(!0),className:"bg-green-500 hover:bg-green-600 text-white font-bold px-4 py-2 rounded-lg whitespace-nowrap transition-colors text-sm",children:"Call or Text Now"}),$&&r.jsx(DI,{onClose:()=>I(!1)})]})})]})}),r.jsx(C4,{hideVideo:!0}),r.jsx(k4,{}),r.jsx(P4,{userState:x}),!1,r.jsx("div",{id:"service-picker",className:"w-full bg-[hsl(197,100%,96%)] border-y border-[hsl(197,100%,85%)] py-4 px-4",children:r.jsxs("div",{className:"max-w-6xl mx-auto",children:[r.jsxs("div",{className:"flex items-center justify-between gap-4",children:[r.jsxs("div",{className:"flex flex-col items-start gap-1",children:[r.jsx("button",{onClick:()=>d(!0),className:"text-sm font-bold text-[hsl(30,95%,53%)] underline underline-offset-2",children:"Explore all services →"}),r.jsxs("span",{className:"text-xs text-[hsl(197,100%,50%)] font-medium",children:["Backed by our $2,500.00 Guarantee - ",r.jsx("button",{onClick:()=>{window.scrollTo(0,0),e("/elite-guarantee")},className:"text-[hsl(197,100%,50%)] font-medium hover:text-[hsl(197,100%,43%)] underline underline-offset-1",children:"Learn more"})]})]}),r.jsx(II,{onBeforeCall:z})]}),h&&r.jsx("p",{className:"text-sm text-red-500 font-semibold mt-3",children:"Please select a service first"})]})}),r.jsx(tr,{})]})}const ht=S.forwardRef(({className:e,type:t,...n},i)=>r.jsx("input",{type:t,className:Rr("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",e),ref:i,...n}));ht.displayName="Input";const jd=S.forwardRef(({className:e,...t},n)=>
vendor: 4,442 bytes, line 684
684r.jsx("textarea",{className:Rr("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm 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",e),ref:n,...t}));jd.displayName="Textarea";function OI(e){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}Array(12).fill(0);let Hg=1;class FI{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{const n=this.subscribers.indexOf(t);this.subscribers.splice(n,1)}),this.publish=t=>{this.subscribers.forEach(n=>n(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var n;const{message:i,...l}=t,d=typeof(t==null?void 0:t.id)=="number"||((n=t.id)==null?void 0:n.length)>0?t.id:Hg++,h=this.toasts.find(g=>g.id===d),m=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(d)&&this.dismissedToasts.delete(d),h?this.toasts=this.toasts.map(g=>g.id===d?(this.publish({...g,...t,id:d,title:i}),{...g,...t,id:d,dismissible:m,title:i}):g):this.addToast({title:i,...l,dismissible:m,id:d}),d},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(n=>n({id:t,dismiss:!0})))):this.toasts.forEach(n=>{this.subscribers.forEach(i=>i({id:n.id,dismiss:!0}))}),t),this.message=(t,n)=>this.create({...n,message:t}),this.error=(t,n)=>this.create({...n,message:t,type:"error"}),this.success=(t,n)=>this.create({...n,type:"success",message:t}),this.info=(t,n)=>this.create({...n,type:"info",message:t}),this.warning=(t,n)=>this.create({...n,type:"warning",message:t}),this.loading=(t,n)=>this.create({...n,type:"loading",message:t}),this.promise=(t,n)=>{if(!n)return;let i;n.loading!==void 0&&(i=this.create({...n,promise:t,type:"loading",message:n.loading,description:typeof n.description!="function"?n.description:void 0}));const l=Promise.resolve(t instanceof Function?t():t);let d=i!==void 0,h;const m=l.then(async y=>{if(h=["resolve",y],nn.isValidElement(y))d=!1,this.create({id:i,type:"default",message:y});else if(zI(y)&&!y.ok){d=!1;const w=typeof n.error=="function"?await n.error(`HTTP error! status: ${y.status}`):n.error,j=typeof n.description=="function"?await n.description(`HTTP error! status: ${y.status}`):n.description,C=typeof w=="object"&&!nn.isValidElement(w)?w:{message:w};this.create({id:i,type:"error",description:j,...C})}else if(y instanceof Error){d=!1;const w=typeof n.error=="function"?await n.error(y):n.error,j=typeof n.description=="function"?await n.description(y):n.description,C=typeof w=="object"&&!nn.isValidElement(w)?w:{message:w};this.create({id:i,type:"error",description:j,...C})}else if(n.success!==void 0){d=!1;const w=typeof n.success=="function"?await n.success(y):n.success,j=typeof n.description=="function"?await n.description(y):n.description,C=typeof w=="object"&&!nn.isValidElement(w)?w:{message:w};this.create({id:i,type:"success",description:j,...C})}}).catch(async y=>{if(h=["reject",y],n.error!==void 0){d=!1;const x=typeof n.error=="function"?await n.error(y):n.error,w=typeof n.description=="function"?await n.description(y):n.description,P=typeof x=="object"&&!nn.isValidElement(x)?x:{message:x};this.create({id:i,type:"error",description:w,...P})}}).finally(()=>{d&&(this.dismiss(i),i=void 0),n.finally==null||n.finally.call(n)}),g=()=>new Promise((y,x)=>m.then(()=>h[0]==="reject"?x(h[1]):y(h[1])).catch(x));return typeof i!="string"&&typeof i!="number"?{unwrap:g}:Object.assign(i,{unwrap:g})},this.custom=(t,n)=>{const i=(n==null?void 0:n.id)||Hg++;return this.create({jsx:t(i),id:i,...n}),i},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const Qr=new FI,BI=(e,t)=>{const n=(t==null?void 0:t.id)||Hg++;return Qr.addToast({title:e,...t,id:n}),n},zI=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",WI=BI,UI=()=>Qr.toasts,HI=()=>Qr.getActiveToasts(),ki=Object.assign(WI,{success:Qr.success,info:Qr.info,warning:Qr.warning,error:Qr.error,custom:Qr.custom,message:Qr.message,promise:Qr.promise,dismiss:Qr.dismiss,loading:Qr.loading},{getHistory:UI,getToasts:HI});OI
vendor: 4,787 bytes, line 684
684("[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;
vendor: 10,077 bytes, line 684
684left: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%)}");
684const VI=["Air Conditioner Installation","Appliance Repair","Bathroom Remodeling","Chimney Liner & Masonry","Cleaning","Decks & Porches","Driveway Service","Electrical","Fencing","Garage Doors","Gutter Service","Handyman Service","Heating System Installation","Home Inspection","Home Remodeling","Junk Removal","Kitchen Remodeling","Landscaping","Lawn Care","Moving Service","New Window & Door","Painting","Pest Control","Roofing","Sewer Camera Inspection","Sewer Descaling","Sewer Hydro Jetting","Sewer Relining","Sewer Rooter Service","Siding","Tree Service","Water Heater Installation"];function qI(){const[e,t]=S.useState({firstName:"",lastName:"",companyName:"",email:"",phone:"",website:"",personalAddress:"",businessAddress:"",serviceTypes:[],yearsInBusiness:"",licenseNumber:"",insuranceInfo:""}),[n,i]=S.useState(null),[l,d]=S.useState(""),[h,m]=S.useState(!1);S.useEffect(()=>{g()},[]);const g=()=>{const j=Math.floor(Math.random()*10)+1,P=Math.floor(Math.random()*10)+1,C=j+P;i({num1:j,num2:P,answer:C}),d("")},y=j=>{const{name:P,value:C}=j.target;t(k=>({...k,[P]:C}))},x=j=>{t(P=>({...P,serviceTypes:P.serviceTypes.includes(j)?P.serviceTypes.filter(C=>C!==j):[...P.serviceTypes,j]}))},w=async j=>{if(j.preventDefault(),parseInt(l)!==n.answer){ki.error("Incorrect CAPTCHA answer. Please try again."),g();return}m(!0);try{await Me.entities.Contractor.create(e);const P=`
685New Contractor Application Received
686
687Personal Information:
688- Name: ${e.firstName} ${e.lastName}
689
690Business Information:
691- Company Name: ${e.companyName}
692- Website: ${e.website||"N/A"}
693- Years in Business: ${e.yearsInBusiness||"N/A"}
694- License Number: ${e.licenseNumber||"N/A"}
695
696Contact Information:
697- Email: ${e.email}
698- Phone: ${e.phone||"N/A"}
699
700Address Information:
701- Personal Address: ${e.personalAddress}
702- Business Address: ${e.businessAddress}
703
704Services Offered:
705${e.serviceTypes.map(C=>`- ${C}`).join(`
706`)||"None selected"}
707
708Insurance Information:
709${e.insuranceInfo||"N/A"}
710      `;await Me.integrations.Core.SendEmail({to:"[email protected]",subject:`New Contractor Application - ${e.firstName} ${e.lastName}`,body:P}),ki.success("Your information has been submitted successfully!"),t({firstName:"",lastName:"",companyName:"",email:"",phone:"",website:"",personalAddress:"",businessAddress:"",serviceTypes:[],yearsInBusiness:"",licenseNumber:"",insuranceInfo:""})}catch{ki.error("Failed to submit form. Please try again.")}finally{m(!1)}};return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),r.jsx("section",{className:"w-full bg-primary py-12 sm:py-16",children:r.jsxs("div",{className:"max-w-3xl mx-auto px-4 text-center",children:[r.jsx(Ot.h1,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},className:"text-3xl sm:text-4xl font-bold text-[hsl(197,100%,50%)] mb-4 font-display",children:"Pay To Sign Up As A Contractor"}),r.jsx(Ot.p,{initial:{opacity:0,y:15},animate:{opacity:1,y:0},transition:{duration:.5,delay:.1},className:"text-[hsl(197,100%,50%)] text-lg",children:"Register your contracting business and start receiving qualified leads"})]})}),r.jsx("section",{className:"w-full bg-white py-16 sm:py-24",children:r.jsx("div",{className:"max-w-3xl mx-auto px-4",children:r.jsxs(Ot.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"space-y-6",children:[r.jsxs("div",{children:[r.jsx("h2",{className:"text-3xl font-bold text-foreground mb-2 font-display",children:"Contractor Partnership Standards"}),r.jsx("p",{className:"text-xl font-semibold text-primary",children:"Excellence is Our Foundation"})]}),r.jsx("p",{className:"text-foreground leading-relaxed",children:"At our platform, we don't just provide leads; we build a network of the industry's most elite professionals. Our mission is to connect high-value clients with contractors who have a proven track record of reliability, safety, and superior craftsmanship."}),r.jsx("p",{className:"text-foreground leading-relaxed",children:"To maintain the integrity of our platform and ensure the best outcomes for both our pros and our customers, we enforce a strict vetting process. We go above and beyond standard lead-gen sites because we believe a strong foundation of trust is the only way to build a sustainable business. If you take pride in your work and meet the rigorous professional standards below, we invite you to apply."}),r.jsx("div",{className:"bg-red-50 border-l-4 border-red-500 p-4 rounded",children:r.jsx("p",{className:"text-red-800 font-semibold",children:"Notice: These requirements are non-negotiable. If your business does not currently meet all the criteria listed below, please do not submit a partnership inquiry at this time."})}),r.jsxs("div",{children:[r.jsx("h3",{className:"text-2xl font-bold text-foreground mb-6",children:"Mandatory Compliance & Qualifications"}),r.jsx("p",{className:"text-foreground mb-6",children:"To remain active on our platform, all partners must satisfy and maintain the following professional benchmarks:"}),r.jsxs("div",{className:"space-y-4",children:[r.jsxs("div",{className:"bg-secondary p-6 rounded-lg",children:[r.jsx("h4",{className:"font-bold text-foreground mb-2",children:"Reputation Management"}),r.jsx("p",{className:"text-foreground",children:"You must maintain a minimum 4.5-star Google Review average. We only partner with pros who consistently deliver 5-star experiences."})]}),r.jsxs("div",{className:"bg-secondary p-6 rounded-lg",children:[r.jsx("h4",{className:"font-bold text-foreground mb-2",children:"Business Longevity"}),r.jsx("p",{className:"text-foreground",children:"A minimum of 5 years in active operation is required to demonstrate stability and seasoned expertise."})]}),r.jsxs("div",{className:"bg-secondary p-6 rounded-lg",children:[r.jsx("h4",{className:"font-bold text-foreground mb-2",children:"Security Clearance"}),r.jsx("p",{className:"text-foreground",children:"All principals and relevant staff must have passed a comprehensive criminal background check, and a Google guaranteed badge on business profile."})]}),r.jsxs("div",{className:"bg-secondary p-6 rounded-lg",children:[r.jsx("h4",{className:"font-bold text-foreground mb-2",children:"Trade Certification"}),r.jsx("p",{className:"text-foreground",children:"Valid, up-to-date Trade Licenses must be provided for all specialized services offered."})]}),r.jsxs("div",{className:"bg-secondary p-6 rounded-lg",children:[r.jsx("h4",{className:"font-bold text-foreground mb-2",children:"Insurance & Protection"}),r.jsx("p",{className:"text-foreground",children:"You must provide and maintain a Certificate of Insurance (COI) and active Workers' Compensation for all employees."})]})]})]})]})})}),r.jsx("section",{className:"flex-1 w-full py-16 sm:py-24",children:r.jsx("div",{className:"max-w-3xl mx-auto px-4",children:r.jsxs(Ot.form,{initial:{opacity:0,y:20}
710,animate:{opacity:1,y:0},transition:{duration:.5},onSubmit:w,className:"bg-card rounded-xl shadow-lg p-8 space-y-6",children:[r.jsxs("div",{children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-4",children:"Personal Information"}),r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[r.jsx(ht,{name:"firstName",placeholder:"First Name",value:e.firstName,onChange:y,required:!0}),r.jsx(ht,{name:"lastName",placeholder:"Last Name",value:e.lastName,onChange:y,required:!0})]})]}),r.jsxs("div",{children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-4",children:"Business Information"}),r.jsxs("div",{className:"space-y-4",children:[r.jsx(ht,{name:"companyName",placeholder:"Company Name",value:e.companyName,onChange:y,required:!0}),r.jsx(ht,{name:"website",placeholder:"Website URL",value:e.website,onChange:y}),r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[r.jsx(ht,{name:"yearsInBusiness",type:"number",placeholder:"Years in Business",value:e.yearsInBusiness,onChange:y}),r.jsx(ht,{name:"licenseNumber",placeholder:"License Number",value:e.licenseNumber,onChange:y})]}),r.jsx(jd,{name:"insuranceInfo",placeholder:"Insurance Information",value:e.insuranceInfo,onChange:y,className:"h-20"})]})]}),r.jsxs("div",{children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-4",children:"Contact Information"}),r.jsxs("div",{className:"space-y-4",children:[r.jsx(ht,{name:"email",type:"email",placeholder:"Email Address",value:e.email,onChange:y,required:!0}),r.jsx(ht,{name:"phone",placeholder:"Phone Number",value:e.phone,onChange:y})]})]}),r.jsxs("div",{children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-4",children:"Address Information"}),r.jsxs("div",{className:"space-y-4",children:[r.jsx(jd,{name:"personalAddress",placeholder:"Personal Home Address",value:e.personalAddress,onChange:y,className:"h-20",required:!0}),r.jsx(jd,{name:"businessAddress",placeholder:"Business Address",value:e.businessAddress,onChange:y,className:"h-20",required:!0})]})]}),r.jsxs("div",{children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-4",children:"Services Offered"}),r.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-3",children:VI.map(j=>r.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[r.jsx("input",{type:"checkbox",checked:e.serviceTypes.includes(j),onChange:()=>x(j),className:"w-4 h-4"}),r.jsx("span",{className:"text-sm text-foreground",children:j})]},j))})]}),r.jsxs("p",{className:"text-xs text-gray-500 leading-relaxed",children:["By providing your phone number, you consent to receive SMS messages from SnapEstimate.AI. Reply STOP to opt out. Msg & data rates may apply. Message frequency varies."," ","View our ",r.jsx("a",{href:"/privacy-policy",className:"text-blue-600 underline",children:"Privacy Policy"})," and ",r.jsx("a",{href:"/sms-opt-in",className:"text-blue-600 underline",children:"SMS Opt-In/Opt-Out Policy"}),"."]}),n&&r.jsxs("div",{className:"bg-secondary p-4 rounded-lg",children:[r.jsxs("label",{className:"text-sm font-semibold text-foreground mb-2 block",children:["Verification: What is ",n.num1," + ",n.num2,"?"]}),r.jsx(ht,{type:"number",placeholder:"Your answer",value:l,onChange:j=>d(j.target.value),required:!0})]}),r.jsx(qe,{type:"submit",disabled:h,className:"w-full h-12 bg-primary hover:bg-primary/90 text-white font-bold text-base rounded-md",children:h?"Submitting...":"Submit Application"})]})})}),r.jsx(tr,{})]})}function JI(){const[e,t]=S.useState({name:"",email:"",phone:"",message:"",type:"homeowner"}),[n,i]=S.useState(null),[l,d]=S.useState(""),[h,m]=S.useState(!1);S.useEffect(()=>{g()},[]);const g=()=>{const j=Math.floor(Math.random()*10)+1,P=Math.floor(Math.random()*10)+1,C=j+P;i({num1:j,num2:P,answer:C}),d("")},y=j=>{const{name:P,value:C}=j.target;t(k=>({...k,[P]:C}))},x=j=>{t(P=>({...P,type:j}))},w=async j=>{if(j.preventDefault(),parseInt(l)!==n.answer){ki.error("Incorrect CAPTCHA answer. Please try again."),g();return}m(!0);try{const P=`
711New Contact Form Submission
712
713Type: ${e.type==="homeowner"?"Homeowner":"Contractor"}
714
715Name: ${e.name}
716Email: ${e.email}
717Phone: ${e.phone}
718
719Message:
720${e.message}
721      `;await Me.integrations.Core.SendEmail({to:"[email protected]",subject:`New Contact Form - ${e.type==="homeowner"?"Homeowner":"Contractor"}`,body:P}
721),ki.success("Thank you! We received your message and will get back to you soon."),t({name:"",email:"",phone:"",message:"",type:"homeowner"})}catch{ki.error("Failed to send message. Please try again.")}finally{m(!1)}};return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),r.jsx("section",{className:"w-full bg-primary py-12 sm:py-16",children:r.jsxs("div",{className:"max-w-3xl mx-auto px-4 text-center",children:[r.jsx(Ot.h1,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},className:"text-3xl sm:text-4xl font-bold text-[hsl(197,100%,50%)] mb-4 font-display",children:"Contact Us"}),r.jsx(Ot.p,{initial:{opacity:0,y:15},animate:{opacity:1,y:0},transition:{duration:.5,delay:.1},className:"text-[hsl(197,100%,50%)] text-lg",children:"We'd love to hear from you. Send us a message!"})]})}),r.jsx("section",{className:"flex-1 w-full py-16 sm:py-24",children:r.jsx("div",{className:"max-w-2xl mx-auto px-4",children:r.jsxs(Ot.form,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},onSubmit:w,className:"bg-card rounded-xl shadow-lg p-8 space-y-6",children:[r.jsxs("div",{children:[r.jsx("h2",{className:"text-lg font-bold text-foreground mb-4",children:"I am a:"}),r.jsxs("div",{className:"flex gap-6",children:[r.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[r.jsx("input",{type:"radio",name:"type",value:"homeowner",checked:e.type==="homeowner",onChange:()=>x("homeowner"),className:"w-4 h-4"}),r.jsx("span",{className:"text-foreground",children:"Homeowner"})]}),r.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[r.jsx("input",{type:"radio",name:"type",value:"contractor",checked:e.type==="contractor",onChange:()=>x("contractor"),className:"w-4 h-4"}),r.jsx("span",{className:"text-foreground",children:"Contractor"})]})]})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-sm font-semibold text-foreground mb-2 block",children:"Name"}),r.jsx(ht,{name:"name",placeholder:"Your Full Name",value:e.name,onChange:y,required:!0})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-sm font-semibold text-foreground mb-2 block",children:"Email"}),r.jsx(ht,{name:"email",type:"email",placeholder:"Your Email Address",value:e.email,onChange:y,required:!0})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-sm font-semibold text-foreground mb-2 block",children:"Phone"}),r.jsx(ht,{name:"phone",type:"tel",placeholder:"Your Phone Number",value:e.phone,onChange:y})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-sm font-semibold text-foreground mb-2 block",children:"Message"}),r.jsx(jd,{name:"message",placeholder:"Your message...",value:e.message,onChange:y,className:"h-32",required:!0})]}),n&&r.jsxs("div",{className:"bg-secondary p-4 rounded-lg",children:[r.jsxs("label",{className:"text-sm font-semibold text-foreground mb-2 block",children:["Verification: What is ",n.num1," + ",n.num2,"?"]}),r.jsx(ht,{type:"number",placeholder:"Your answer",value:l,onChange:j=>d(j.target.value),required:!0})]}),r.jsxs("p",{className:"text-xs text-gray-500 leading-relaxed",children:["By providing your phone number, you consent to receive SMS messages from SnapEstimate.AI. Reply STOP to opt out. Msg & data rates may apply. Message frequency varies."," ","View our ",r.jsx("a",{href:"/privacy-policy",className:"text-blue-600 underline",children:"Privacy Policy"})," and ",r.jsx("a",{href:"/sms-opt-in",className:"text-blue-600 underline",children:"SMS Opt-In/Opt-Out Policy"}),"."]}),r.jsx(qe,{type:"submit",disabled:h,className:"w-full h-12 bg-primary hover:bg-primary/90 text-white font-bold text-base rounded-md",children:h?"Sending...":"Send Message"}),r.jsxs("div",{className:"bg-secondary p-4 rounded-lg mt-8",children:[r.jsx("p",{className:"text-sm text-foreground font-semibold mb-2",children:"SnapEstimate.AI LLC"}),r.jsx("p",{className:"text-sm text-muted-foreground",children:"P.O. Box 16"}),r.jsx("p",{className:"text-sm text-muted-foreground",children:"Boonton Township, New Jersey 07005"})]})]})})}),r.jsx(tr,{})]})}function GI(){const[e,t]=S.useState({firstName:"",lastName:"",email:"",ph
721one:""}),[n,i]=S.useState(!1),l=async d=>{if(d.preventDefault(),!e.firstName||!e.email){ki.error("Please provide at least your first name and email.");return}i(!0);try{await Me.integrations.Core.SendEmail({to:"[email protected]",subject:"Data Privacy Request from SnapEstimate.AI",body:`A user has submitted a data privacy request:
722
723First Name: ${e.firstName}
724Last Name: ${e.lastName}
725Email: ${e.email}
726Phone: ${e.phone}`}),ki.success("Your request has been submitted. We will respond within 2 business days."),t({firstName:"",lastName:"",email:"",phone:""})}catch{ki.error("Something went wrong. Please try again or email us directly.")}i(!1)};return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),r.jsx("main",{className:"flex-1 w-full py-16 sm:py-24",children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8",children:[r.jsx("h1",{className:"text-4xl font-bold text-foreground mb-2",children:"Privacy Policy"}),r.jsxs("p",{className:"text-muted-foreground mb-8",children:[r.jsx("strong",{children:"Effective Date:"})," March 29, 2026"]}),r.jsxs("div",{className:"prose prose-sm max-w-none text-foreground",children:[r.jsxs("p",{className:"text-base leading-relaxed mb-6",children:["This Privacy Policy explains how ",r.jsx("strong",{children:"SnapEstimate.Ai"}),", the operator of this website, gathers, utilizes, and distributes information obtained through our primary domain, subdomains, and related URLs when you engage with our platform or utilize the Services outlined in our Terms of Service."]}),r.jsx("p",{className:"text-base leading-relaxed mb-6",children:'We will notify you of any policy updates by changing the "Last Updated" date above. We encourage you to review this page periodically to stay informed about our data protection practices.'}),r.jsxs("p",{className:"text-base leading-relaxed mb-6",children:["If you have inquiries regarding your privacy or the personal data submitted to our site, please email ",r.jsx("strong",{children:"[email protected]"}),". We aim to respond to all requests within two business days."]}),r.jsxs("p",{className:"text-base leading-relaxed mb-8",children:[r.jsx("strong",{children:"SnapEstimate.Ai"})," is dedicated to the ethical management of user data. Although our primary operations are outside of Europe, we strive to align our practices with European Union standards for data collection and transparency."]}),r.jsx("h2",{className:"text-2xl font-bold text-foreground mt-10 mb-6",children:"Collection of Information"}),r.jsx("p",{className:"text-base leading-relaxed mb-4",children:"To ensure our website functions correctly, we may collect various types of personal information:"}),r.jsxs("ul",{className:"list-disc list-inside space-y-3 mb-8 text-base leading-relaxed",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Voluntary Information:"})," Data you explicitly provide, such as your name, email, physical address, and phone number, typically when requesting quotes or submitting reviews."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Social Media Integration:"})," If you utilize a social media login (e.g., Facebook), we may receive specific profile details associated with that account."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Device and Location Data:"})," We may collect your IP address and device specifications (operating system, mobile network) to provide localized and optimized services."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Cookies and Tracking:"})," We use cookies—small files stored on your device—to remember your preferences and enhance your experience."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Pixels and Analytics:"}),` We may use electronic images (pixels) in our emails or on our site to understand usage patterns and track the effectiveness of our services. You can manage these through your browser's "privacy" or "help" settings.`]})]}),r.jsx("h2",{className:"text-2xl font-bold text-foreground mt-10 mb-6",children:"How We Use Information"}),r.jsx("p",{className:"text-base leading-relaxed mb-4",children:"We utilize the data we gather to operate, maintain, and refine our platform. Specifically, we use it to:"}),r.jsxs("ul",{className:"list-disc list-inside space-y-2 mb-8 text-base leading-relaxed",children:[r.jsx("li",{children:"Deliver technical notices, security alerts, and administrative support."}),r.jsxs("li",{children:["Inform you about products, services, and promotional offers from ",r.jsx("strong",{children:"SnapEstimate.Ai"})," or our featured partners."]}),r.jsx("li",{children:"Analyze site trends and user activity to improve functionality."}),r.jsx("li",{children:"Identify and prevent fraudulent or unauthorized activity."}),r.jsx("li",{children:"Customize the content you see based on your preferences and location."})]}),r.jsx("h2",{className:"text-2xl font-bold text-foreground mt-10 mb-6",children:"How We Share Information"}),r.jsx("p",{className:"text-base leading-relaxed mb-4",children:"We may distribute your information in the following circumstances:"}),r.jsxs("ul",{className:"list-disc list-inside space-y-3 mb-8 text-base leading-relaxed",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Service Providers:"})," With vendors who perform specialized tasks on our behalf."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Reviews and Feedback:"})," Consumer reviews may be shared with the relevant companies and our business affiliates."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Marketing Partners:"})," We may share basic details (like first names or general submissions) with business partners for marketing and analytical purposes."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Legal Obligations:"})," If required by law, subpoena, or government request, we will disclose information to comply with legal processes."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Safety and Rights:"}
726)," To protect the safety, property, or legal rights of ",r.jsx("strong",{children:"SnapEstimate.Ai"})," and our users."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Business Transfers:"})," In the event of a merger, sale of assets, or partnership negotiation, user data may be shared as part of the transaction."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Corporate Family:"})," Between ",r.jsx("strong",{children:"SnapEstimate.Ai"})," and our parent companies or subsidiaries."]})]}),r.jsx("h2",{className:"text-2xl font-bold text-foreground mt-10 mb-6",children:"Camera and Device Permissions"}),r.jsx("p",{className:"text-base leading-relaxed mb-4",children:"Our app may request access to your device's camera. This permission is used solely to allow you to capture and upload photos of your home or project for the purpose of generating cost estimates. Specifically:"}),r.jsxs("ul",{className:"list-disc list-inside space-y-3 mb-8 text-base leading-relaxed",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Camera Access (android.permission.CAMERA):"})," Used to take photos of your property or project area directly within the app. Photos are used only to generate your estimate and are not stored, shared, or sold without your consent."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Photo Library Access:"})," You may also upload existing photos from your device. These images are processed solely to provide you with an accurate cost estimate."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"No Background Access:"})," We do not access your camera in the background. Camera access is only active when you explicitly initiate a photo capture within the app."]})]}),r.jsx("p",{className:"text-base leading-relaxed mb-8",children:"You may revoke camera permissions at any time through your device's system settings. Revoking camera access will not affect other features of the app."}),r.jsx("h2",{className:"text-2xl font-bold text-foreground mt-10 mb-6",children:"Third-Party Links and Services"}),r.jsxs("p",{className:"text-base leading-relaxed mb-6",children:["Our platform may contain links to external sites. ",r.jsx("strong",{children:"SnapEstimate.Ai"})," is not responsible for the privacy standards or content of these third-party websites."]}),r.jsx("p",{className:"text-base leading-relaxed mb-8",children:"Your data is only shared with third parties at your direct request (e.g., when you ask for competitive quotes). In these cases, we maintain agreements to ensure your data is used only for the requested purpose and is deleted upon your request."}),r.jsx("h2",{className:"text-2xl font-bold text-foreground mt-10 mb-6",children:"Privacy Complaints and Rights"}),r.jsxs("p",{className:"text-base leading-relaxed mb-4",children:["Complaints should be sent to ",r.jsx("strong",{children:"[email protected]"}),". If we cannot resolve your concern, you may refer the matter to JAMS (an alternative dispute resolution provider in the U.S.) at no cost to you. ",r.jsx("strong",{children:"SnapEstimate.Ai"})," is subject to the oversight of the Federal Trade Commission."]}),r.jsx("h3",{className:"text-xl font-bold text-foreground mt-8 mb-4",children:"European and California Rights (GDPR/CCPA)"}),r.jsx("p",{className:"text-base leading-relaxed mb-4",children:"We voluntarily support the privacy principles of the EEA, Switzerland, and California. We process your data only when:"}),r.jsxs("ol",{className:"list-decimal list-inside space-y-2 mb-8 text-base leading-relaxed",children:[r.jsx("li",{children:"It is necessary for our contract with you."}),r.jsx("li",{children:"We have a legitimate business interest (e.g., improving services)."}),r.jsx("li",{children:"You have given explicit consent."})]}),r.jsx("p",{className:"text-base leading-relaxed mb-8",children:r.jsx("strong",{children:"We do not sell marketing lists to third parties."})}),r.jsxs("p",{className:"text-base leading-relaxed mb-8",children:["To access, update, or delete your personal data, contact us at ",r.jsx("strong",{children:"[email protected]"}),"."]}),r.jsx("h2",{className:"text-2xl font-bold text-foreground mt-10 mb-6",children:"Communications and Opt-Out"}),r.jsxs("ul",{className:"list-disc list-inside space-y-3 mb-8 text-base leading-relaxed",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Emails:"}),' You can opt out of marketing emails by clicking the "unsubscribe" link in any message. We may still send essential administrative emails regarding your account.']}),r.jsxs("li",{children:[r.jsx("strong",{children:"Text Messages:"})," To stop receiving texts, reply with ",r.jsx("strong",{children:'"STOP"'})," to any message."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Toll-Free Support:"})," You can also reach us via phone at ",r.jsx("strong",{children:"(833) 990-SNAP (7627)"}),"."]})]}),r.jsx("h2",{className:"text-2xl font-bold text-foreground mt-10 mb-6",children:"Contact Us"}),r.jsxs("div",{className:"bg-secondary p-6 rounded-lg mb-8",children:[r.jsx("p",{className:"text-base mb-2",children:r.jsx("strong",{children:"SnapEstimate.Ai"})}),r.jsxs("p",{className:"text-base mb-2",children:[r.jsx("strong",{children:"Email:"})," [email protected]"]}),r.jsxs("p",{className:"text-base",children:[r.jsx("strong",{children:"Phone:"})," (833) 990-SNAP (7627)"]})]}),r.jsx("h2",{className:"text-2xl font-bold text-foreground mt-10 mb-4",children:"Control what happens with your data"}),r.jsxs("p",{className:"text-base leading-relaxed mb-4",children:[r.jsx("strong",{children:"SnapEstimate.AI"})," is committed to providing complete transparency on user data and giving users control over what happens to it. Please contact us at"," ",r.jsx("a",{href:"mailto:[email protected]",className:"text-[hsl(197,100%,40%)] underline",children:"[email protected]"})," to:"]}),r.jsxs("ul",{className:"list-disc list-inside space-y-2 mb-8 text-base leading-relaxed",children:[r.jsx("li",{children:r.jsx("span",{className:"text-[hsl(197,100%,40%)]",children:"Find out how we use your data"})}),r.jsx("li",{children:r.jsx("span",{className:"text-[hsl(197,100%,40%)]",children:"Who we share it with"})}),r.jsx("li",{children:r.jsx("span",{className:"text-[hsl(197,100%,40%)]",children:"Access your personal data"})}),r.jsx("li",{children:r.jsx("span",{className:"text-[hsl(197,100%,40%)]",children:"Delete your personal data"})})]}),r.jsxs("form",{onSubmit:l,className:"space-y-4 mb-8",children:[r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[r.jsx("input",{type:"text",placeholder:"First name",value:e.firstName,onChange:d=>t({...e,firstName:d.target.value}),className:"border border-input rounded-md px-4 py-3 text-sm w-full focus:outline-none focus:ring-2 focus:ring-ring"}),r.jsx("input",{type:"text",placeholder:"Last name",value:e.lastName,onChange:d=>t({...e,lastName:d.target.value}),className:"border border-input rounded-md px-4 py-3 text-sm w-full focus:outline-none focus:ring-2 focus:ring-ring"}),r.jsx("input",{type:"email",placeholder:"Email",value:e.email,onChange:d=>t({...e,email:d.target.value}),className:"border border-input rounded-md px-4 py-3 text-sm w-full focus:outline-none focus:ring-2 focus:ring-ring"}),r.jsx("input",{type:"tel",placeholder:"Phone",value:e.phone,onChange:d=>t({...e,phone:d.target.value}),className:"border border-input rounded-md px-4 py-3 text-sm w-full focus:outline-none focus:ring-2 focus:ring-ring"})]}),r.jsx(qe,{type:"submit",disabled:n,className:"bg-accent hover:bg-accent/90 text-white font-semibold px-8 py-3 rounded-md",children:n?"Submitting...":"Submit"})]})]})]})}),r.jsx(tr,{})]})}function ZI(){return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),r.jsx("main",{className:"flex-1 w-full py-16 sm:py-24",children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8",children:[r.jsx("h1",{className:"text-4xl font-bold text-foreground mb-2",children:"Terms of Use"}),r.jsxs("p",{className:"text-muted-foreground mb-8",children:[r.jsx("strong",{children:"Effective Date:"})," October 26, 2024"]}),r.jsxs("div",{className:"prose prose-sm max-w-none text-foreground space-y-8",children:[r.jsx("p",{className:"text-base leading-relaxed",children:"This agreement outlines the terms and conditions for using our services. By accessing this website or utilizing our platform, you agree to be bound by the Terms and Conditions currently in effect. If you have questions, please contact us using the details provided below. We reserve the right to modify this Agreement at any time."}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground mb-4",children:"Our Services"}),r.jsxs("div",{className:"space-y-4",children:[r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Request a Quote:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"When you submit your project details, SnapEstimate.Ai connects you with third-party organizations that may meet your needs. We may al
726so suggest specific providers for your own research."})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"No Guarantees:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"We do not guarantee that a provider will be available, willing, or capable of meeting your requirements. We make no warranties regarding the skills, licensing, or performance of these third parties."})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Direct Contracting:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"Any agreement or contract is strictly between you and the service provider. We do not warrant the quality of work or the final outcome."})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Dispute Resolution:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"Any disputes must be handled directly with the service provider. By using our services, you release SnapEstimate.Ai (including our employees and affiliates) from any claims, damages, or liabilities arising from your dealings with these third-party organizations."})]})]}),r.jsxs("p",{className:"text-base leading-relaxed mt-4",children:["If you find incorrect information on our site, please notify us at ",r.jsx("strong",{children:"[email protected]"}),"."]})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground mb-4",children:"User Responsibilities"}),r.jsxs("div",{className:"space-y-4",children:[r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Accuracy of Information:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"You agree to provide truthful, current, and accurate information. You are responsible for the legality and intellectual property rights of any data you enter."})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Account Security:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"You are responsible for any activity resulting from access to your account or password, whether authorized or negligent."})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Fraud Prevention:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"Intentionally entering false information (fake names, phone numbers, or emails) is a serious matter. Doing so causes significant damage to SnapEstimate.Ai and our partners."})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Indemnity for False Information:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"If you knowingly submit fraudulent data, you agree to fully indemnify SnapEstimate.Ai and each affected service provider for the greater of:"}),r.jsxs("ul",{className:"list-disc list-inside space-y-2 text-base leading-relaxed ml-2",children:[r.jsx("li",{children:"$10,000 per improper submission to each affected party (including the actual owner of the spoofed email/phone number), plus legal fees."}),r.jsx("li",{children:"The total of all actual, punitive, and consequential damages, including regulatory fines."})]})]})]})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground mb-4",children:"Acceptable Use"}),r.jsxs("div",{className:"space-y-4",children:[r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Personal Use Only:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"Our services are for your private, non-commercial use. Commercial use is strictly prohibited without prior written consent."})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Eligibility:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"This service is available only to citizens of the USA. By using this site, you warrant your citizenship status."})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Automated Access Prohibited:"}),r.jsx("p",{className:"text-base leading-relaxed",children:'You may not use "bots," "scrapers," "spiders," or any automated code to access, monitor, or copy content from SnapEstimate.Ai.'})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Security:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"You may not attempt to gain unauthorized access to our systems, networks, or data through hacking or password mining."})]})]})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground mb-4",children:"Service Professional Profiles & Reviews"}),r.jsxs("div",{className:"space-y-4",children:[r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Profiles:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"We allow companies to post self
726-reported profiles. We do not verify or certify the information in these profiles."})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Accreditation:"}),r.jsx("p",{className:"text-base leading-relaxed",children:'Any "Pre-Screened" status is based on self-certification by the provider. We recommend you independently verify licensing and references before hiring.'})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Ratings & Reviews:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"Reviews reflect the opinions of consumers, not SnapEstimate.Ai. We reserve the right to remove reviews that contain offensive language, illegal references, or false statements. We do not assume liability for any claims or losses resulting from site reviews."})]})]})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground mb-4",children:"Privacy & Data"}),r.jsx("p",{className:"text-base leading-relaxed mb-4",children:"We are committed to protecting your privacy. We collect location and contact data to facilitate your service requests. We do not sell or rent your personal information without your permission."}),r.jsxs("div",{className:"space-y-4",children:[r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Aggregate Data:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"We may share anonymous marketing statistics (traffic patterns, navigation) with third parties to improve our site functionality."})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-foreground mb-2",children:"Cookies:"}),r.jsx("p",{className:"text-base leading-relaxed",children:"We use cookies and action tags to enhance your experience and measure advertising effectiveness."})]})]})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground mb-4",children:"Service Availability"}),r.jsx("p",{className:"text-base leading-relaxed",children:"We strive for 99% availability. However, the service may be briefly offline for maintenance. SnapEstimate.Ai is not liable for the loss or deletion of data, though we perform regular backups to minimize risks."})]}),r.jsxs("section",{className:"border-t-4 border-red-500 pt-8",children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground mb-2",children:"Official Notice: Terms of Access and Prohibited Use"}),r.jsxs("p",{className:"text-base leading-relaxed mb-6",children:[r.jsx("strong",{children:"NOTICE:"})," Any unauthorized commercial or non-commercial use of the systems, data, or content hosted on SnapEstimate.ai is strictly prohibited. We employ advanced monitoring and logging to track all site activities. Any party engaged in unauthorized data harvesting, content pilfering, or system exploits will be subject to aggressive legal prosecution, fines, and reparations for damages."]}),r.jsxs("div",{className:"space-y-6",children:[r.jsxs("div",{children:[r.jsx("h3",{className:"text-xl font-bold text-foreground mb-3",children:"1. Prohibited Automated Activities"}),r.jsx("p",{className:"text-base leading-relaxed mb-3",children:"Users and third parties are strictly forbidden from using any automated devices or methodologies to access, acquire, or monitor any portion of this site. This includes, but is not limited to:"}),r.jsxs("ul",{className:"space-y-2 ml-4",children:[r.jsxs("li",{className:"text-base leading-relaxed",children:[r.jsx("strong",{children:"Automated Tools:"}),' "Scrapers," "robots," "spiders," "bots," or any similar computer code or algorithm.']}),r.jsxs("li",{className:"text-base leading-relaxed",children:[r.jsx("strong",{children:"Data Mining:"})," Unauthorized extraction of data, pricing models, or contractor information."]}),r.jsxs("li",{className:"text-base leading-relaxed",children:[r.jsx("strong",{children:"Deep-Linking:"})," Accessing internal system components without express written consent."]})]})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"text-xl font-bold text-foreground mb-3",children:"2. System Security and Integrity"}),r.jsx("p",{className:"text-base leading-relaxed mb-3",children:"You may only access information that has been intentionally made public through visible links on the interface. You are strictly prohibited from:"}),r.jsxs("ul",{className:"space-y-2 ml-4",children:[r.jsxs("li",{className:"text-base leading-relaxed",children:[r.jsx("strong",{children:"Unauthorized Access:"})," Attempting to breach site security or gain access to private data, servers, or networks through hacking or password mining."]}),r.jsxs("li",{className:"text-base leading-relaxed",children:[r.jsx("strong",{children:"Impersonation:"})," Falsely representing an affiliation with any person, entity, or the SnapEstimate.ai brand."]}),r.jsxs("li",{className:"text-base leading-relaxed",children:[r.jsx("strong",{children:"Interference:"})," Disrupting the proper functioning of the site, its servers, or any ongoing activities conducted through the platform."]})]})]}),r.jsxs("div",{className:"bg-red-50 border-l-4 border-red-500 rounded-r-xl p-6",children:[r.jsx("h3",{className:"text-xl font-bold text-red-700 mb-3",children:"⚠️ Mandatory Fraud Warning: False Information Submission"}),r.jsx("p",{className:"text-base leading-relaxed mb-4 text-gray-800",children:"Inputting intentionally false or fraudulent data—including fake names, phone numbers, addresses, or email addresses—is a serious violation of our terms. Such actions cause significant financial damage to SnapEstimate.ai, our service professional partners, and consumers through loss of time, resources, and privacy rights."}
726),r.jsx("p",{className:"text-base font-bold text-gray-800 mb-3",children:"By using this site, you agree to the following Liquidated Damages:"}),r.jsx("p",{className:"text-base leading-relaxed mb-3 text-gray-800",children:"If you knowingly submit fraudulent or misleading information (including the use of someone else's identity or made-up contact details), you agree to fully indemnify SnapEstimate.ai and all affected service providers for the greater of:"}),r.jsxs("ul",{className:"space-y-3 ml-4",children:[r.jsxs("li",{className:"text-base leading-relaxed text-gray-800",children:[r.jsx("strong",{children:"Statutory Damages:"})," A minimum of $10,000 per improper submission payable to SnapEstimate.ai, plus $10,000 to each affected service professional, and $10,000 to each individual whose privacy was compromised by your submission (plus all associated legal fees)."]}),r.jsxs("li",{className:"text-base leading-relaxed text-gray-800",children:[r.jsx("strong",{children:"Actual Damages:"})," The total sum of all direct, punitive, and consequential damages, including judicial fines or regulatory penalties resulting from the fraudulent activity."]})]})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"text-xl font-bold text-foreground mb-3",children:"3. Compliance and Monitoring"}),r.jsx("p",{className:"text-base leading-relaxed",children:"Your use of this website constitutes your agreement to these terms. We reserve the right to block any IP address or entity suspected of violating these policies and to share logged activity with law enforcement and regulatory bodies to pursue the maximum penalties allowed by law."})]})]})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground mb-4",children:"Telephone & SMS Consent"}),r.jsx("p",{className:"text-base leading-relaxed",children:'By submitting your information and clicking "Continue" on our estimate form, you authorize SnapEstimate.AI or our chosen service providers to use the phone number(s) entered. By clicking "Continue" you also consent to phone calls from the above-mentioned service providers being recorded by SnapEstimate.AI for training and quality assurance purposes. You may opt out of future contact at any time and your consent is not a requirement for any purchase.'})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground mb-4",children:"Contact Us"}),r.jsx("p",{className:"text-base leading-relaxed mb-4",children:"For privacy concerns or general inquiries:"}),r.jsxs("div",{className:"bg-secondary p-6 rounded-lg",children:[r.jsxs("p",{className:"text-base mb-2",children:[r.jsx("strong",{children:"Email:"})," [email protected]"]}),r.jsxs("p",{className:"text-base",children:[r.jsx("strong",{children:"Toll Free:"})," (833) 990-SNAP (7627)"]})]})]})]})]})}),r.jsx(tr,{})]})}function KI(){const{serviceName:e}=xm(),t=Hn();return S.useEffect(()=>{if(e){const n=decodeURIComponent(e).replace(/\s*&\s*/g,"And").replace(/\s+/g,"");t(`/${n}`,{replace:!0})}},[e]),null}function YI({title:e,averagePrice:t,description:n,priceBreakdown:i}){return r.jsx("section",{id:"pricing-section",className:"w-full bg-white py-16 sm:py-24",children:r.jsx("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 lg:px-8",children:r.jsx(Ot.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5}})})})}function A4({service:e,timeline:t,setTimeline:n,quoteCount:i,userTown:l,effectiveService:d}){return r.jsx(r.Fragment,{children:r.jsxs("div",{className:"mb-6",children:[r.jsx("div",{className:"flex flex-wrap gap-2 justify-center mb-4"}),r.jsxs("h2",{className:"text-2xl font-bold text-center text-foreground mb-4",children:["Get your ",e||"service"," Quote In 60 seconds"]}),r.jsxs("div",{className:"border border-gray-200 rounded-xl overflow-hidden",children:[r.jsx("div",{className:"border-b border-gray-200 px-5 py-3 bg-gray-50",children:r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("img",{src:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",alt:"Expert",className:"w-12 h-12 rounded-full object-cover flex-shrink-0"}),r.jsxs("button",{onClick:()=>window.location.href="tel:+18339907627",className:"flex-1 bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white px-4 py-2 rounded-lg flex items-center justify-center gap-2 text-sm font-semibold",children:[r.jsx(Er,{className:"w-4 h-4"}),"LIVE DISPATCH: Speak to a ",d||"service"," Specialist instantly",r.jsxs("span",{className:"flex items-center gap-1.5 ml-auto",children:[r.jsxs("span",{className:"relative flex items-center justify-center",children:[r.jsx("span",{className:"absolute inline-flex h-5 w-5 rounded-full bg-yellow-300 opacity-80 animate-ping"}),r.jsx("span",{className:"relative inline-flex h-3.5 w-3.5 rounded-full bg-yellow-400 border-2 border-white shadow-[0_0_8px_3px_rgba(250,204,21,0.9)]"})]}),r.jsx("span",{className:"text-white font-semibold text-sm",children:"Online Now"})]})]})]})}),[{value:"emergency",label:"Emergency — need a pro today",sub:"Within 1 to 4 hours"},{value:"urgent",label:"Urgent — need a pro right away",sub:"Within 48 hours"},{value:"ready2",label:"Ready to hire, but not in a hurry",sub:"Within 7 days"}].map(h=>r.jsxs("label",{className:"flex items-center gap-4 px-5 py-4 cursor-pointer hover:bg-gray-50 transition-colors border-b border-gray-200 last:border-b-0",children:[r.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex-shrink-0 flex items-center justify-center transition-colors ${t===h.value?"border-[hsl(197,100%,50%)]":"border-gray-300"}`,children:t===h.value&&r.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-[hsl(197,100%,50%)]"})}),r.jsxs("div",{className:"flex-1",children:[r.jsx("p",{className:"font-semibold text-foreground text-sm",children:h.label}),r.jsx("p",{className:"text-[hsl(197,100%,40%)] text-xs",children:h.sub})]}),r.jsx("input",{type:"radio",name:"timeline",value:h.value,checked:t===h.value,onChange:()=>
726n(h.value),className:"hidden"})]},h.value))]})]})})}var yd={exports:{}};/* @preserve
727 * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com
728 * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade
729 */var QI=yd.exports,Ww;function XI(){return Ww||(Ww=1,(function(e,t){(function(n,i){i(t)})(QI,(function(n){var i="1.9.4";function l(o){var c,p,v,N;for(p=1,v=arguments.length;p<v;p++){N=arguments[p];for(c in N)o[c]=N[c]}return o}var d=Object.create||(function(){function o(){}return function(c){return o.prototype=c,new o}})();function h(o,c){var p=Array.prototype.slice;if(o.bind)return o.bind.apply(o,p.call(arguments,1));var v=p.call(arguments,2);return function(){return o.apply(c,v.length?v.concat(p.call(arguments)):arguments)}}var m=0;function g(o){return"_leaflet_id"in o||(o._leaflet_id=++m),o._leaflet_id}function y(o,c,p){var v,N,R,B;return B=function(){v=!1,N&&(R.apply(p,N),N=!1)},R=function(){v?N=arguments:(o.apply(p,arguments),setTimeout(B,c),v=!0)},R}function x(o,c,p){var v=c[1],N=c[0],R=v-N;return o===v&&p?o:((o-N)%R+R)%R+N}function w(){return!1}function j(o,c){if(c===!1)return o;var p=Math.pow(10,c===void 0?6:c);return Math.round(o*p)/p}function P(o){return o.trim?o.trim():o.replace(/^\s+|\s+$/g,"")}function C(o){return P(o).split(/\s+/)}function k(o,c){Object.prototype.hasOwnProperty.call(o,"options")||(o.options=o.options?d(o.options):{});for(var p in c)o.options[p]=c[p];return o.options}function A(o,c,p){var v=[];for(var N in o)v.push(encodeURIComponent(p?N.toUpperCase():N)+"="+encodeURIComponent(o[N]));return(!c||c.indexOf("?")===-1?"?":"&")+v.join("&")}var E=/\{ *([\w_ -]+) *\}/g;function $(o,c){return o.replace(E,function(p,v){var N=c[v];if(N===void 0)throw new Error("No value provided for variable "+p);return typeof N=="function"&&(N=N(c)),N})}var I=Array.isArray||function(o){return Object.prototype.toString.call(o)==="[object Array]"};function M(o,c){for(var p=0;p<o.length;p++)if(o[p]===c)return p;return-1}var F="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function z(o){return window["webkit"+o]||window["moz"+o]||window["ms"+o]}var V=0;function W(o){var c=+new Date,p=Math.max(0,16-(c-V));return V=c+p,window.setTimeout(o,p)}var ne=window.requestAnimationFrame||z("RequestAnimationFrame")||W,de=window.cancelAnimationFrame||z("CancelAnimationFrame")||z("CancelRequestAnimationFrame")||function(o){window.clearTimeout(o)};function be(o,c,p){if(p&&ne===W)o.call(c);else return ne.call(window,h(o,c))}function Re(o){o&&de.call(window,o)}var Je={__proto__:null,extend:l,create:d,bind:h,get lastId(){return m},stamp:g,throttle:y,wrapNum:x,falseFn:w,formatNum:j,trim:P,splitWords:C,setOptions:k,getParamString:A,template:$,isArray:I,indexOf:M,emptyImageUrl:F,requestFn:ne,cancelFn:de,requestAnimFrame:be,cancelAnimFrame:Re};function Ie(){}Ie.extend=function(o){var c=function(){k(this),this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},p=c.__super__=this.prototype,v=d(p);v.constructor=c,c.prototype=v;for(var N in this)Object.prototype.hasOwnProperty.call(this,N)&&N!=="prototype"&&N!=="__super__"&&(c[N]=this[N]);return o.statics&&l(c,o.statics),o.includes&&(mt(o.includes),l.apply(null,[v].concat(o.includes))),l(v,o),delete v.statics,delete v.includes,v.options&&(v.options=p.options?d(p.options):{},l(v.options,o.options)),v._initHooks=[],v.callInitHooks=function(){if(!this._initHooksCalled){p.callInitHooks&&p.callInitHooks.call(this),this._initHooksCalled=!0;for(var R=0,B=v._initHooks.length;R<B;R++)v._initHooks[R].call(this)}},c},Ie.include=function(o){var c=this.prototype.options;return l(this.prototype,o),o.options&&(this.prototype.options=c,this.mergeOptions(o.options)),this},Ie.mergeOptions=function(o){return l(this.prototype.options,o),this},Ie.addInitHook=function(o){var c=Array.prototype.slice.call(arguments,1),p=typeof o=="function"?o:function(){this[o].apply(this,c)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(p),this};function mt(o){if(!(typeof L>"u"||!L||!L.Mixin)){o=I(o)?o:[o];for(var c=0;c<o.length;
729c++)o[c]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",new Error().stack)}}var Se={on:function(o,c,p){if(typeof o=="object")for(var v in o)this._on(v,o[v],c);else{o=C(o);for(var N=0,R=o.length;N<R;N++)this._on(o[N],c,p)}return this},off:function(o,c,p){if(!arguments.length)delete this._events;else if(typeof o=="object")for(var v in o)this._off(v,o[v],c);else{o=C(o);for(var N=arguments.length===1,R=0,B=o.length;R<B;R++)N?this._off(o[R]):this._off(o[R],c,p)}return this},_on:function(o,c,p,v){if(typeof c!="function"){console.warn("wrong listener type: "+typeof c);return}if(this._listens(o,c,p)===!1){p===this&&(p=void 0);var N={fn:c,ctx:p};v&&(N.once=!0),this._events=this._events||{},this._events[o]=this._events[o]||[],this._events[o].push(N)}},_off:function(o,c,p){var v,N,R;if(this._events&&(v=this._events[o],!!v)){if(arguments.length===1){if(this._firingCount)for(N=0,R=v.length;N<R;N++)v[N].fn=w;delete this._events[o];return}if(typeof c!="function"){console.warn("wrong listener type: "+typeof c);return}var B=this._listens(o,c,p);if(B!==!1){var Z=v[B];this._firingCount&&(Z.fn=w,this._events[o]=v=v.slice()),v.splice(B,1)}}},fire:function(o,c,p){if(!this.listens(o,p))return this;var v=l({},c,{type:o,target:this,sourceTarget:c&&c.sourceTarget||this});if(this._events){var N=this._events[o];if(N){this._firingCount=this._firingCount+1||1;for(var R=0,B=N.length;R<B;R++){var Z=N[R],Q=Z.fn;Z.once&&this.off(o,Q,Z.ctx),Q.call(Z.ctx||this,v)}this._firingCount--}}return p&&this._propagateEvent(v),this},listens:function(o,c,p,v){typeof o!="string"&&console.warn('"string" type argument expected');var N=c;typeof c!="function"&&(v=!!c,N=void 0,p=void 0);var R=this._events&&this._events[o];if(R&&R.length&&this._listens(o,N,p)!==!1)return!0;if(v){for(var B in this._eventParents)if(this._eventParents[B].listens(o,c,p,v))return!0}return!1},_listens:function(o,c,p){if(!this._events)return!1;var v=this._events[o]||[];if(!c)return!!v.length;p===this&&(p=void 0);for(var N=0,R=v.length;N<R;N++)if(v[N].fn===c&&v[N].ctx===p)return N;return!1},once:function(o,c,p){if(typeof o=="object")for(var v in o)this._on(v,o[v],c,!0);else{o=C(o);for(var N=0,R=o.length;N<R;N++)this._on(o[N],c,p,!0)}return this},addEventParent:function(o){return this._eventParents=this._eventParents||{},this._eventParents[g(o)]=o,this},removeEventParent:function(o){return this._eventParents&&delete this._eventParents[g(o)],this},_propagateEvent:function(o){for(var c in this._eventParents)this._eventParents[c].fire(o.type,l({layer:o.target,propagatedFrom:o.target},o),!0)}};Se.addEventListener=Se.on,Se.removeEventListener=Se.clearAllEventListeners=Se.off,Se.addOneTimeEventListener=Se.once,Se.fireEvent=Se.fire,Se.hasEventListeners=Se.listens;var je=Ie.extend(Se);function X(o,c,p){this.x=p?Math.round(o):o,this.y=p?Math.round(c):c}var ue=Math.trunc||function(o){return o>0?Math.floor(o):Math.ceil(o)};X.prototype={clone:function(){return new X(this.x,this.y)},add:function(o){return this.clone()._add(q(o))},_add:function(o){return this.x+=o.x,this.y+=o.y,this},subtract:function(o){return this.clone()._subtract(q(o))},_subtract:function(o){return this.x-=o.x,this.y-=o.y,this},divideBy:function(o){return this.clone()._divideBy(o)},_divideBy:function(o){return this.x/=o,this.y/=o,this},multiplyBy:function(o){return this.clone()._multiplyBy(o)},_multiplyBy:function(o){return this.x*=o,this.y*=o,this},scaleBy:function(o){return new X(this.x*o.x,this.y*o.y)},unscaleBy:function(o){return new X(this.x/o.x,this.y/o.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=ue(this.x),this.y=ue(this.y),this},distanceTo:function(o){o=q(o);var c=o.x-this.x,p=o.y-this.y;return Math.sqrt(c*c+p*p)},equals:function(o){return o=q(o),o.x===this.x&&o.y===this.y},contains:function(o){return o=q(o),Math.abs(o.x)<=Math.abs(this.x)&&Math.abs(o.y)<=Math.abs(this.y)},toString:function(){return"Point("+j(this.x)+", "+j(this.y)+")"}};function q(o,c,p){return o instanceof X?o:I(o)?new X(o[0],o[1]):o==null?o:typeof o=="object"&&"x"in o&&"y"in o?new X(o.x,o.y):new X(o,c,p)}function O(o,c){if(o)for(var p=c?[o,c]:o,v=0,N=p.length;v<N;v++)this.extend(p[v])}O.prototype={extend:function(o){var c,p;if(!o)return this;if(o instanceof X||typeof o[0]=="number"||"x"in o)c=p=q(o);else if(o=te(o),c=o.min,p=o.max,!c||!p)return this;return!this.min&&!this.max?(this.min=c.clone(),this.max=p.clone()):(this.min.x=Math.min(c.x,this.min.x),this.max.x=Math.max(p.x,this.max.x),this.min.y=Math.min(c.y,this.min.y),this.max.y=Math.max(p.y,this.max.y)),this},getCenter:function(o){return q((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,o)},getBottomLeft:function(){return q(this.min.x,this.max.y)},getTopRight:function(){return q(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(o){var c,p;return typeof o[0]=="number"||o instanceof X?o=q(o):o=te(o),o instanceof O?
729(c=o.min,p=o.max):c=p=o,c.x>=this.min.x&&p.x<=this.max.x&&c.y>=this.min.y&&p.y<=this.max.y},intersects:function(o){o=te(o);var c=this.min,p=this.max,v=o.min,N=o.max,R=N.x>=c.x&&v.x<=p.x,B=N.y>=c.y&&v.y<=p.y;return R&&B},overlaps:function(o){o=te(o);var c=this.min,p=this.max,v=o.min,N=o.max,R=N.x>c.x&&v.x<p.x,B=N.y>c.y&&v.y<p.y;return R&&B},isValid:function(){return!!(this.min&&this.max)},pad:function(o){var c=this.min,p=this.max,v=Math.abs(c.x-p.x)*o,N=Math.abs(c.y-p.y)*o;return te(q(c.x-v,c.y-N),q(p.x+v,p.y+N))},equals:function(o){return o?(o=te(o),this.min.equals(o.getTopLeft())&&this.max.equals(o.getBottomRight())):!1}};function te(o,c){return!o||o instanceof O?o:new O(o,c)}function ye(o,c){if(o)for(var p=c?[o,c]:o,v=0,N=p.length;v<N;v++)this.extend(p[v])}ye.prototype={extend:function(o){var c=this._southWest,p=this._northEast,v,N;if(o instanceof pe)v=o,N=o;else if(o instanceof ye){if(v=o._southWest,N=o._northEast,!v||!N)return this}else return o?this.extend(re(o)||ge(o)):this;return!c&&!p?(this._southWest=new pe(v.lat,v.lng),this._northEast=new pe(N.lat,N.lng)):(c.lat=Math.min(v.lat,c.lat),c.lng=Math.min(v.lng,c.lng),p.lat=Math.max(N.lat,p.lat),p.lng=Math.max(N.lng,p.lng)),this},pad:function(o){var c=this._southWest,p=this._northEast,v=Math.abs(c.lat-p.lat)*o,N=Math.abs(c.lng-p.lng)*o;return new ye(new pe(c.lat-v,c.lng-N),new pe(p.lat+v,p.lng+N))},getCenter:function(){return new pe((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new pe(this.getNorth(),this.getWest())},getSouthEast:function(){return new pe(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(o){typeof o[0]=="number"||o instanceof pe||"lat"in o?o=re(o):o=ge(o);var c=this._southWest,p=this._northEast,v,N;
729return o instanceof ye?(v=o.getSouthWest(),N=o.getNorthEast()):v=N=o,v.lat>=c.lat&&N.lat<=p.lat&&v.lng>=c.lng&&N.lng<=p.lng},intersects:function(o){o=ge(o);var c=this._southWest,p=this._northEast,v=o.getSouthWest(),N=o.getNorthEast(),R=N.lat>=c.lat&&v.lat<=p.lat,B=N.lng>=c.lng&&v.lng<=p.lng;return R&&B},overlaps:function(o){o=ge(o);var c=this._southWest,p=this._northEast,v=o.getSouthWest(),N=o.getNorthEast(),R=N.lat>c.lat&&v.lat<p.lat,B=N.lng>c.lng&&v.lng<p.lng;return R&&B},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(o,c){return o?(o=ge(o),this._southWest.equals(o.getSouthWest(),c)&&this._northEast.equals(o.getNorthEast(),c)):!1},isValid:function(){return!!(this._southWest&&this._northEast)}};function ge(o,c){return o instanceof ye?o:new ye(o,c)}function pe(o,c,p){if(isNaN(o)||isNaN(c))throw new Error("Invalid LatLng object: ("+o+", "+c+")");this.lat=+o,this.lng=+c,p!==void 0&&(this.alt=+p)}pe.prototype={equals:function(o,c){if(!o)return!1;o=re(o);var p=Math.max(Math.abs(this.lat-o.lat),Math.abs(this.lng-o.lng));return p<=(c===void 0?1e-9:c)},toString:function(o){return"LatLng("+j(this.lat,o)+", "+j(this.lng,o)+")"},distanceTo:function(o){return He.distance(this,re(o))},wrap:function(){return He.wrapLatLng(this)},toBounds:function(o){var c=180*o/40075017,p=c/Math.cos(Math.PI/180*this.lat);return ge([this.lat-c,this.lng-p],[this.lat+c,this.lng+p])},clone:function(){return new pe(this.lat,this.lng,this.alt)}};function re(o,c,p){return o instanceof pe?o:I(o)&&typeof o[0]!="object"?o.length===3?new pe(o[0],o[1],o[2]):o.length===2?new pe(o[0],o[1]):null:o==null?o:typeof o=="object"&&"lat"in o?new pe(o.lat,"lng"in o?o.lng:o.lon,o.alt):c===void 0?null:new pe(o,c,p)}var $e={latLngToPoint:function(o,c){var p=this.projection.project(o),v=this.scale(c);return this.transformation._transform(p,v)},pointToLatLng:function(o,c){var p=this.scale(c),v=this.transformation.untransform(o,p);return this.projection.unproject(v)},project:function(o){return this.projection.project(o)},unproject:function(o){return this.projection.unproject(o)},scale:function(o){return 256*Math.pow(2,o)},zoom:function(o){return Math.log(o/256)/Math.LN2},getProjectedBounds:function(o){if(this.infinite)return null;var c=this.projection.bounds,p=this.scale(o),v=this.transformation.transform(c.min,p),N=this.transformation.transform(c.max,p);return new O(v,N)},infinite:!1,wrapLatLng:function(o){var c=this.wrapLng?x(o.lng,this.wrapLng,!0):o.lng,p=this.wrapLat?x(o.lat,this.wrapLat,!0):o.lat,v=o.alt;return new pe(p,c,v)},wrapLatLngBounds:function(o){var c=o.getCenter(),p=this.wrapLatLng(c),v=c.lat-p.lat,N=c.lng-p.lng;if(v===0&&N===0)return o;
729var R=o.getSouthWest(),B=o.getNorthEast(),Z=new pe(R.lat-v,R.lng-N),Q=new pe(B.lat-v,B.lng-N);return new ye(Z,Q)}},He=l({},$e,{wrapLng:[-180,180],R:6371e3,distance:function(o,c){var p=Math.PI/180,v=o.lat*p,N=c.lat*p,R=Math.sin((c.lat-o.lat)*p/2),B=Math.sin((c.lng-o.lng)*p/2),Z=R*R+Math.cos(v)*Math.cos(N)*B*B,Q=2*Math.atan2(Math.sqrt(Z),Math.sqrt(1-Z));return this.R*Q}}),De=6378137,Et={R:De,MAX_LATITUDE:85.0511287798,project:function(o){var c=Math.PI/180,p=this.MAX_LATITUDE,v=Math.max(Math.min(p,o.lat),-p),N=Math.sin(v*c);return new X(this.R*o.lng*c,this.R*Math.log((1+N)/(1-N))/2)},unproject:function(o){var c=180/Math.PI;return new pe((2*Math.atan(Math.exp(o.y/this.R))-Math.PI/2)*c,o.x*c/this.R)},bounds:(function(){var o=De*Math.PI;return new O([-o,-o],[o,o])})()};function It(o,c,p,v){if(I(o)){this._a=o[0],this._b=o[1],this._c=o[2],this._d=o[3];return}this._a=o,this._b=c,this._c=p,this._d=v}It.prototype={transform:function(o,c){return this._transform(o.clone(),c)},_transform:function(o,c){return c=c||1,o.x=c*(this._a*o.x+this._b),o.y=c*(this._c*o.y+this._d),o},untransform:function(o,c){return c=c||1,new X((o.x/c-this._b)/this._a,(o.y/c-this._d)/this._c)}};function kt(o,c,p,v){return new It(o,c,p,v)}var dn=l({},He,{code:"EPSG:3857",projection:Et,transformation:(function(){var o=.5/(Math.PI*Et.R);return kt(o,.5,-o,.5)})()}),un=l({},dn,{code:"EPSG:900913"});function Bt(o){return document.createElementNS("http://www.w3.org/2000/svg",o)}function Be(o,c){var p="",v,N,R,B,Z,Q;for(v=0,R=o.length;v<R;v++){for(Z=o[v],N=0,B=Z.length;N<B;N++)Q=Z[N],p+=(N?"L":"M")+Q.x+" "+Q.y;p+=c?Ne.svg?"z":"x":""}return p||"M0 0"}var At=document.documentElement.style,zt="ActiveXObject"in window,xn=zt&&!document.addEventListener,Rt="msLaunchUri"in navigator&&!("documentMode"in document),Vn=hn("webkit"),En=hn("android"),Ks=hn("android 2")||hn("android 3"),Bo=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),fr=En&&hn("Google")&&Bo<537&&!("AudioNode"in window),nr=!!window.opera,Mr=!Rt&&hn("chrome"),on=hn("gecko")&&!Vn&&!nr&&!zt,js=!Mr&&hn("safari"),qn=hn("phantom"),Jn="OTransition"in At,Ys=navigator.platform.indexOf("Win")===0,gr=zt&&"transition"in At,ns="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!Ks,Ir="MozPerspective"in At,ks=!window.L_DISABLE_3D&&(gr||ns||Ir)&&!Jn&&!qn,rr=typeof orientation<"u"||hn("mobile"),rs=rr&&Vn,ss=rr&&ns,$r=!window.PointerEvent&&window.MSPointerEvent,vn=!!(window.PointerEvent||$r),An="ontouchstart"in window||!!window.TouchEvent,Ri=!window.L_NO_TOUCH&&(An||vn),fe=rr&&nr,Oe=rr&&on,at=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,bt=(function(){var o=!1;try{var c=Object.defineProperty({},"passive",{get:function(){o=!0}});window.addEventListener("testPassiveEventSupport",w,c),window.removeEventListener("testPassiveEventSupport",w,c)}catch{}return o})(),Jt=(function(){return!!document.createElement("canvas").getContext})(),Gn=!!(document.createElementNS&&Bt("svg").createSVGRect),is=!!Gn&&(function(){var o=document.createElement("div");return o.innerHTML="<svg/>",(o.firstChild&&o.firstChild.namespaceURI)==="http://www.w3.org/2000/svg"})(),Va=!Gn&&(function(){try{var o=document.createElement("div");o.innerHTML='<v:shape adj="1"/>';var c=o.firstChild;return c.style.behavior="url(#default#VML)",c&&typeof c.adj=="object"}catch{return!1}})(),Li=navigator.platform.indexOf("Mac")===0,yr=navigator.platform.indexOf("Linux")===0;function hn(o){return navigator.userAgent.toLowerCase().indexOf(o)>=0}var Ne={ie:zt,ielt9:xn,edge:Rt,webkit:Vn,android:En,android23:Ks,androidStock:fr,opera:nr,chrome:Mr,gecko:on,safari:js,phantom:qn,opera12:Jn,win:Ys,ie3d:gr,webkit3d:ns,gecko3d:Ir,any3d:ks,mobile:rr,mobileWebkit:rs,mobileWebkit3d:ss,msPointer:$r,pointer:vn,touch:Ri,touchNative:An,mobileOpera:fe,mobileGecko:Oe,retina:at,passiveEvents:bt,canvas:Jt,svg:Gn,vml:Va,inlineSvg:is,mac:Li,linux:yr},Cs=Ne.msPointer?"MSPointerDown":"pointerdown",Mi=Ne.msPointer?"MSPointerMove":"pointermove",zo=Ne.msPointer?"MSPointerUp":"pointerup",Wo=Ne.msPointer?"MSPointerCancel":"pointercancel",Ii={touchstart:Cs,touchmove:Mi,touchend:zo,touchcancel:Wo},Dr={touchstart:pt,touchmove:Xt,touchend:Xt,touchcancel:Xt},os={},Qs=!1;function qa(o,c,p){return c==="touchstart"&&Ke(),Dr[c]?(p=Dr[c].bind(this,p),o.addEventListener(Ii[c],p,!1),p):(console.warn("wrong event specified:",c),w)}function ae(o,c,p){if(!Ii[c]){console.warn("wrong event specified:",c);return}o.removeEventListener(Ii[c],p,!1)}function Ce(o){os[o.pointerId]=o}
729function Qe(o){os[o.pointerId]&&(os[o.pointerId]=o)}function Ge(o){delete os[o.pointerId]}function Ke(){Qs||(document.addEventListener(Cs,Ce,!0),document.addEventListener(Mi,Qe,!0),document.addEventListener(zo,Ge,!0),document.addEventListener(Wo,Ge,!0),Qs=!0)}function Xt(o,c){if(c.pointerType!==(c.MSPOINTER_TYPE_MOUSE||"mouse")){c.touches=[];for(var p in os)c.touches.push(os[p]);c.changedTouches=[c],o(c)}}function pt(o,c){c.MSPOINTER_TYPE_TOUCH&&c.pointerType===c.MSPOINTER_TYPE_TOUCH&&Ut(c),Xt(o,c)}function Uo(o){var c={},p,v;for(v in o)p=o[v],c[v]=p&&p.bind?p.bind(o):p;return o=c,c.type="dblclick",c.detail=2,c.isTrusted=!1,c._simulated=!0,c}var pc=200;function nu(o,c){o.addEventListener("dblclick",c);var p=0,v;function N(R){if(R.detail!==1){v=R.detail;return}if(!(R.pointerType==="mouse"||R.sourceCapabilities&&!R.sourceCapabilities.firesTouchEvents)){var B=ti(R);if(!(B.some(function(Q){return Q instanceof HTMLLabelElement&&Q.attributes.for})&&!B.some(function(Q){return Q instanceof HTMLInputElement||Q instanceof HTMLSelectElement}))){var Z=Date.now();Z-p<=pc?(v++,v===2&&c(Uo(R))):v=1,p=Z}}}return o.addEventListener("click",N),{dblclick:c,simDblclick:N}}function Ja(o,c){o.removeEventListener("dblclick",c.dblclick),o.removeEventListener("click",c.simDblclick)}var fc=Fi(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),$i=Fi(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),Ho=$i==="webkitTransition"||$i==="OTransition"?$i+"End":"transitionend";function xr(o){return typeof o=="string"?document.getElementById(o):o}function Vo(o,c){var p=o.style[c]||o.currentStyle&&o.currentStyle[c];if((!p||p==="auto")&&document.defaultView){var v=document.defaultView.getComputedStyle(o,null);p=v?v[c]:null}return p==="auto"?null:p}function et(o,c,p){var v=document.createElement(o);return v.className=c||"",p&&p.appendChild(v),v}function $t(o){var c=o.parentNode;c&&c.removeChild(o)}function Ga(o){for(;o.firstChild;)o.removeChild(o.firstChild)}function Di(o){var c=o.parentNode;c&&c.lastChild!==o&&c.appendChild(o)}function as(o){var c=o.parentNode;c&&c.firstChild!==o&&c.insertBefore(o,c.firstChild)}function Oi(o,c){if(o.classList!==void 0)return o.classList.contains(c);var p=Za(o);return p.length>0&&new RegExp("(^|\\s)"+c+"(\\s|$)").test(p)}function Xe(o,c){if(o.classList!==void 0)for(var p=C(c),v=0,N=p.length;v<N;v++)o.classList.add(p[v]);else if(!Oi(o,c)){var R=Za(o);gc(o,(R?R+" ":"")+c)}}function Lt(o,c){o.classList!==void 0?o.classList.remove(c):gc(o,P((" "+Za(o)+" ").replace(" "+c+" "," ")))}function gc(o,c){o.className.baseVal===void 0?o.className=c:o.className.baseVal=c}function Za(o){return o.correspondingElement&&(o=o.correspondingElement),o.className.baseVal===void 0?o.className:o.className.baseVal}function Rn(o,c){"opacity"in o.style?o.style.opacity=c:"filter"in o.style&&ru(o,c)}function ru(o,c){var p=!1,v="DXImageTransform.Microsoft.Alpha";try{p=o.filters.item(v)}catch{if(c===1)return}c=Math.round(c*100),p?(p.Enabled=c!==100,p.Opacity=c):o.style.filter+=" progid:"+v+"(opacity="+c+")"}function Fi(o){for(var c=document.documentElement.style,p=0;p<o.length;p++)if(o[p]in c)return o[p];return!1}function vr(o,c,p){var v=c||new X(0,0);o.style[fc]=(Ne.ie3d?"translate("+v.x+"px,"+v.y+"px)":"translate3d("+v.x+"px,"+v.y+"px,0)")+(p?" scale("+p+")":"")}function Gt(o,c){o._leaflet_pos=c,Ne.any3d?vr(o,c):(o.style.left=c.x+"px",o.style.top=c.y+"px")}function ls(o){return o._leaflet_pos||new X(0,0)}var gt,Bi,Ka;if("onselectstart"in document)gt=function(){Ze(window,"selectstart",Ut)},Bi=function(){Ct(window,"selectstart",Ut)};else{var Xs=Fi(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);gt=function(){if(Xs){var o=document.documentElement.style;Ka=o[Xs],o[Xs]="none"}},Bi=function(){Xs&&(document.documentElement.style[Xs]=Ka,Ka=void 0)}}function Ya(){Ze(window,"dragstart",Ut)}function Qa(){Ct(window,"dragstart",Ut)}var qo,Jo;function zi(o){for(;o.tabIndex===-1;)o=o.parentNode;o.style&&(br(),qo=o,Jo=o.style.outlineStyle,o.style.outlineStyle="none",Ze(window,"keydown",br))}function br(){qo&&(qo.style.outlineStyle=Jo,qo=void 0,Jo=void 0,Ct(window,"keydown",br))}function cs(o){do o=o.parentNode;while((!o.offsetWidth||!o.offsetHeight)&&o!==document.body);return o}function Or(o){var c=o.getBoundingClientRect();return{x:c.width/o.offsetWidth||1,y:c.height/o.offsetHeight||1,boundingClientRect:c}}var Go={__proto__:null,TRANSFORM:fc,TRANSITION:$i,TRANSITION_END:Ho,get:xr,getStyle:Vo,create:et,remove:$t,empty:Ga,toFront:Di,toBack:as,hasClass:Oi,addClass:Xe,removeClass:Lt,setClass:gc,getClass:Za,setOpacity:Rn,testProp:Fi,setTransform:vr,setPosition:Gt,getPosition:ls,get disableTextSelection(){return gt},get enableTextSelection(){return Bi},disableImageDrag:Ya,enableImageDrag:Qa,preventOutline:zi,restoreOutline:br,getSizedParentNode:cs,getScale:Or};function Ze(o,c,p,v){if(c&&typeof c=="object")for(var N in c)xc(o,N,c[N],p);else{c=C(c);for(var R=0,B=c.length;R<B;R++)xc(o,c[R],p,v)}return this}var mn="_leaflet_events";function Ct(o,c,p,v){if(arguments.length===1)yc(o),delete o[mn];else if(c&&typeof c=="object")for(var N in c)Xa(o,N,c[N],p);else if(c=C(c),arguments.length===2)yc(o,function(Z){return M(c,Z)!==-1});else for(var R=0,B=c.length;R<B;R++)Xa(o,c[R],p,v);return this}function yc(o,c){for(var p in o[mn]){var v=p.split(/\d/)[0];(!c||c(v))&&Xa(o,v,null,null,p)}}
729var ei={mouseenter:"mouseover",mouseleave:"mouseout",wheel:!("onwheel"in window)&&"mousewheel"};function xc(o,c,p,v){var N=c+g(p)+(v?"_"+g(v):"");if(o[mn]&&o[mn][N])return this;var R=function(Z){return p.call(v||o,Z||window.event)},B=R;!Ne.touchNative&&Ne.pointer&&c.indexOf("touch")===0?R=qa(o,c,R):Ne.touch&&c==="dblclick"?R=nu(o,R):"addEventListener"in o?c==="touchstart"||c==="touchmove"||c==="wheel"||c==="mousewheel"?o.addEventListener(ei[c]||c,R,Ne.passiveEvents?{passive:!1}:!1):c==="mouseenter"||c==="mouseleave"?(R=function(Z){Z=Z||window.event,Yo(o,Z)&&B(Z)},o.addEventListener(ei[c],R,!1)):o.addEventListener(c,B,!1):o.attachEvent("on"+c,R),o[mn]=o[mn]||{},o[mn][N]=R}function Xa(o,c,p,v,N){N=N||c+g(p)+(v?"_"+g(v):"");var R=o[mn]&&o[mn][N];if(!R)return this;!Ne.touchNative&&Ne.pointer&&c.indexOf("touch")===0?ae(o,c,R):Ne.touch&&c==="dblclick"?Ja(o,R):"removeEventListener"in o?o.removeEventListener(ei[c]||c,R,!1):o.detachEvent("on"+c,R),o[mn][N]=null}function Fr(o){return o.stopPropagation?o.stopPropagation():o.originalEvent?o.originalEvent._stopped=!0:o.cancelBubble=!0,this}function el(o){return xc(o,"wheel",Fr),this}function Zo(o){return Ze(o,"mousedown touchstart dblclick contextmenu",Fr),o._leaflet_disable_click=!0,this}function Ut(o){return o.preventDefault?o.preventDefault():o.returnValue=!1,this}function wr(o){return Ut(o),Fr(o),this}function ti(o){if(o.composedPath)return o.composedPath();for(var c=[],p=o.target;p;)c.push(p),p=p.parentNode;return c}function Ko(o,c){if(!c)return new X(o.clientX,o.clientY);var p=Or(c),v=p.boundingClientRect;return new X((o.clientX-v.left)/p.x-c.clientLeft,(o.clientY-v.top)/p.y-c.clientTop)}var Mm=Ne.linux&&Ne.chrome?window.devicePixelRatio:Ne.mac?window.devicePixelRatio*3:window.devicePixelRatio>0?2*window.devicePixelRatio:1;function su(o){return Ne.edge?o.wheelDeltaY/2:o.deltaY&&o.deltaMode===0?-o.deltaY/Mm:o.deltaY&&o.deltaMode===1?-o.deltaY*20:o.deltaY&&o.deltaMode===2?-o.deltaY*60:o.deltaX||o.deltaZ?0:o.wheelDelta?(o.wheelDeltaY||o.wheelDelta)/2:o.detail&&Math.abs(o.detail)<32765?-o.detail*20:o.detail?o.detail/-32765*60:0}function Yo(o,c){var p=c.relatedTarget;if(!p)return!0;try{for(;p&&p!==o;)p=p.parentNode}catch{return!1}return p!==o}var tl={__proto__:null,on:Ze,off:Ct,stopPropagation:Fr,disableScrollPropagation:el,disableClickPropagation:Zo,preventDefault:Ut,stop:wr,getPropagationPath:ti,getMousePosition:Ko,getWheelDelta:su,isExternalTarget:Yo,addListener:Ze,removeListener:Ct},nl=je.extend({run:function(o,c,p,v){this.stop(),this._el=o,this._inProgress=!0,this._duration=p||.25,this._easeOutPower=1/Math.max(v||.5,.2),this._startPos=ls(o),this._offset=c.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=be(this._animate,this),this._step()},_step:function(o){var c=+new Date-this._startTime,p=this._duration*1e3;c<p?this._runFrame(this._easeOut(c/p),o):(this._runFrame(1),this._complete())},_runFrame:function(o,c){var p=this._startPos.add(this._offset.multiplyBy(o));c&&p._round(),Gt(this._el,p),this.fire("step")},_complete:function(){Re(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(o){return 1-Math.pow(1-o,this._easeOutPower)}}),ft=je.extend({options:{crs:dn,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(o,c){c=k(this,c),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(o),this._initLayout(),this._onResize=h(this._onResize,this),this._initEvents(),c.maxBounds&&this.setMaxBounds(c.maxBounds),c.zoom!==void 0&&(this._zoom=this._limitZoom(c.zoom)),c.center&&c.zoom!==void 0&&this.setView(re(c.center),c.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=$i&&Ne.any3d&&!Ne.mobileOpera&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),Ze(this._proxy,Ho,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)}
vendor: 1,354 bytes, line 729
729,setView:function(o,c,p){if(c=c===void 0?this._zoom:this._limitZoom(c),o=this._limitCenter(re(o),c,this.options.maxBounds),p=p||{},this._stop(),this._loaded&&!p.reset&&p!==!0){p.animate!==void 0&&(p.zoom=l({animate:p.animate},p.zoom),p.pan=l({animate:p.animate,duration:p.duration},p.pan));var v=this._zoom!==c?this._tryAnimatedZoom&&this._tryAnimatedZoom(o,c,p.zoom):this._tryAnimatedPan(o,p.pan);if(v)return clearTimeout(this._sizeTimer),this}return this._resetView(o,c,p.pan&&p.pan.noMoveStart),this},setZoom:function(o,c){return this._loaded?this.setView(this.getCenter(),o,{zoom:c}):(this._zoom=o,this)},zoomIn:function(o,c){return o=o||(Ne.any3d?this.options.zoomDelta:1),this.setZoom(this._zoom+o,c)},zoomOut:function(o,c){return o=o||(Ne.any3d?this.options.zoomDelta:1),this.setZoom(this._zoom-o,c)},setZoomAround:function(o,c,p){var v=this.getZoomScale(c),N=this.getSize().divideBy(2),R=o instanceof X?o:this.latLngToContainerPoint(o),B=R.subtract(N).multiplyBy(1-1/v),Z=this.containerPointToLatLng(N.add(B));return this.setView(Z,c,{zoom:p})},_getBoundsCenterZoom:function(o,c){c=c||{},o=o.getBounds?o.getBounds():ge(o);var p=q(c.paddingTopLeft||c.padding||[0,0]),v=q(c.paddingBottomRight||c.padding||[0,0]),N=this.getBoundsZoom(o,!1,p.add(v));if(N=typeof c.maxZoom=="number"?Math.min(c.maxZoom,N):N,N===1/0)return{center:o.getCenter(),zoom:N};
729var R=v.subtract(p).divideBy(2),B=this.project(o.getSouthWest(),N),Z=this.project(o.getNorthEast(),N),Q=this.unproject(B.add(Z).divideBy(2).add(R),N);return{center:Q,zoom:N}},fitBounds:function(o,c){if(o=ge(o),!o.isValid())throw new Error("Bounds are not valid.");var p=this._getBoundsCenterZoom(o,c);return this.setView(p.center,p.zoom,c)},fitWorld:function(o){return this.fitBounds([[-90,-180],[90,180]],o)},panTo:function(o,c){return this.setView(o,this._zoom,{pan:c})},panBy:function(o,c){if(o=q(o).round(),c=c||{},!o.x&&!o.y)return this.fire("moveend");if(c.animate!==!0&&!this.getSize().contains(o))return this._resetView(this.unproject(this.project(this.getCenter()).add(o)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new nl,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),c.noMoveStart||this.fire("movestart"),c.animate!==!1){Xe(this._mapPane,"leaflet-pan-anim");var p=this._getMapPanePos().subtract(o).round();this._panAnim.run(this._mapPane,p,c.duration||.25,c.easeLinearity)}else this._rawPanBy(o),this.fire("move").fire("moveend");return this},flyTo:function(o,c,p){if(p=p||{},p.animate===!1||!Ne.any3d)return this.setView(o,c,p);this._stop();var v=this.project(this.getCenter()),N=this.project(o),R=this.getSize(),B=this._zoom;o=re(o),c=c===void 0?B:c;var Z=Math.max(R.x,R.y),Q=Z*this.getZoomScale(B,c),se=N.distanceTo(v)||1,ve=1.42,Fe=ve*ve;function st(Nt){var no=Nt?-1:1,Gm=Nt?Q:Z,Zm=Q*Q-Z*Z+no*Fe*Fe*se*se,li=2*Gm*Fe*se,ci=Zm/li,di=Math.sqrt(ci*ci+1)-ci,gl=di<1e-9?-18:Math.log(di);return gl}function pn(Nt){return(Math.exp(Nt)-Math.exp(-Nt))/2}function an(Nt){return(Math.exp(Nt)+Math.exp(-Nt))/2}function Yn(Nt){return pn(Nt)/an(Nt)}var Mn=st(0);function eo(Nt){return Z*(an(Mn)/an(Mn+ve*Nt))}function Fc(Nt){return Z*(an(Mn)*Yn(Mn+ve*Nt)-pn(Mn))/Fe}function Is(Nt){return 1-Math.pow(1-Nt,1.5)}var ju=Date.now(),ai=(st(1)-Mn)/ve,Ur=p.duration?1e3*p.duration:1e3*ai*.8;function to(){var Nt=(Date.now()-ju)/Ur,no=Is(Nt)*ai;Nt<=1?(this._flyToFrame=be(to,this),this._move(this.unproject(v.add(N.subtract(v).multiplyBy(Fc(no)/se)),B),this.get
vendor: 5,153 bytes, line 729
729ScaleZoom(Z/eo(no),B),{flyTo:!0})):this._move(o,c)._moveEnd(!0)}return this._moveStart(!0,p.noMoveStart),to.call(this),this},flyToBounds:function(o,c){var p=this._getBoundsCenterZoom(o,c);return this.flyTo(p.center,p.zoom,c)},setMaxBounds:function(o){return o=ge(o),this.listens("moveend",this._panInsideMaxBounds)&&this.off("moveend",this._panInsideMaxBounds),o.isValid()?(this.options.maxBounds=o,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this)},setMinZoom:function(o){var c=this.options.minZoom;return this.options.minZoom=o,this._loaded&&c!==o&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(o):this},setMaxZoom:function(o){var c=this.options.maxZoom;return this.options.maxZoom=o,this._loaded&&c!==o&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(o):this},panInsideBounds:function(o,c){this._enforcingBounds=!0;var p=this.getCenter(),v=this._limitCenter(p,this._zoom,ge(o));return p.equals(v)||this.panTo(v,c),this._enforcingBounds=!1,this},panInside:function(o,c){c=c||{};var p=q(c.paddingTopLeft||c.padding||[0,0]),v=q(c.paddingBottomRight||c.padding||[0,0]),N=this.project(this.getCenter()),R=this.project(o),B=this.getPixelBounds(),Z=te([B.min.add(p),B.max.subtract(v)]),Q=Z.getSize();if(!Z.contains(R)){this._enforcingBounds=!0;var se=R.subtract(Z.getCenter()),ve=Z.extend(R).getSize().subtract(Q);N.x+=se.x<0?-ve.x:ve.x,N.y+=se.y<0?-ve.y:ve.y,this.panTo(this.unproject(N),c),this._enforcingBounds=!1}return this},invalidateSize:function(o){if(!this._loaded)return this;o=l({animate:!1,pan:!0},o===!0?{animate:!0}:o);var c=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var p=this.getSize(),v=c.divideBy(2).round(),N=p.divideBy(2).round(),R=v.subtract(N);return!R.x&&!R.y?this:(o.animate&&o.pan?this.panBy(R):(o.pan&&this._rawPanBy(R),this.fire("move"),o.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(h(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:c,newSize:p}))},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(o){if(o=this._locateOptions=l({timeout:1e4,watch:!1},o),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var c=h(this._handleGeolocationResponse,this),p=h(this._handleGeolocationError,this);return o.watch?this._locationWatchId=navigator.geolocation.watchPosition(c,p,o):navigator.geolocation.getCurrentPosition(c,p,o),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(o){if(this._container._leaflet_id){var c=o.code,p=o.message||(c===1?"permission denied":c===2?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:c,message:"Geolocation error: "+p+"."})}},_handleGeolocationResponse:function(o){if(this._container._leaflet_id){var c=o.coords.latitude,p=o.coords.longitude,v=new pe(c,p),N=v.toBounds(o.coords.accuracy*2),R=this._locateOptions;if(R.setView){var B=this.getBoundsZoom(N);this.setView(v,R.maxZoom?Math.min(B,R.maxZoom):B)}var Z={latlng:v,bounds:N,timestamp:o.timestamp};for(var Q in o.coords)typeof o.coords[Q]=="number"&&(Z[Q]=o.coords[Q]);this.fire("locationfound",Z)}},addHandler:function(o,c){if(!c)return this;var p=this[o]=new c(this);return this._handlers.push(p),this.options[o]&&p.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch{this._container._leaflet_id=void 0,this._containerId=void 0}this._locationWatchId!==void 0&&this.stopLocate(),this._stop(),$t(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(Re(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload");var o;for(o in this._layers)this._layers[o].remove();for(o in this._panes)$t(this._panes[o]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(o,c){var p="leaflet-pane"+(o?" leaflet-"+o.replace("Pane","")+"-pane":""),v=et("div",p,c||this._mapPane);return o&&(this._panes[o]=v),v},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var o=this.getPixelBounds(),c=this.unproject(o.getBottomLeft()),p=this.unproject(o.getTopRight());return new ye(c,p)},getMinZoom:function(){return this.options.minZoom===void 0?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===void 0?this._layersMaxZo
729om===void 0?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(o,c,p){o=ge(o),p=q(p||[0,0]);var v=this.getZoom()||0,N=this.getMinZoom(),R=this.getMaxZoom(),B=o.getNorthWest(),Z=o.getSouthEast(),Q=this.getSize().subtract(p),se=te(this.project(Z,v),this.project(B,v)).getSize(),ve=Ne.any3d?this.options.zoomSnap:1,Fe=Q.x/se.x,st=Q.y/se.y,pn=c?Math.max(Fe,st):Math.min(Fe,st);return v=this.getScaleZoom(pn,v),ve&&(v=Math.round(v/(ve/100))*(ve/100),v=c?Math.ceil(v/ve)*ve:Math.floor(v/ve)*ve),Math.max(N,Math.min(R,v))},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new X(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(o,c){var p=this._getTopLeftPoint(o,c);return new O(p,p.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(o){return this.options.crs.getProjectedBounds(o===void 0?this.getZoom():o)},getPane:function(o){return typeof o=="string"?this._panes[o]:o},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(o,c){var p=this.options.crs;return c=c===void 0?this._zoom:c,p.scale(o)/p.scale(c)},getScaleZoom:function(o,c){var p=this.options.crs;c=c===void 0?this._zoom:c;var v=p.zoom(o*p.scale(c));return isNaN(v)?1/0:v},project:function(o,c){return c=c===void 0?this._zoom:c,this.options.crs.latLngToPoint(re(o),c)},unproject:function(o,c){return c=c===void 0?this._zoom:c,this.options.crs.pointToLatLng(q(o),c)},layerPointToLatLng:function(o){var c=q(o).add(this.getPixelOrigin());return this.unproject(c)},latLngToLayerPoint:function(o){var c=this.project(re(o))._round();return c._subtract(this.getPixelOrigin())},wrapLatLng:function(o){return this.options.crs.wrapLatLng(re(o))},wrapLatLngBounds:function(o){return this.options.crs.wrapLatLngBounds(ge(o))},distance:function(o,c){return this.options.crs.distance(re(o),re(c))},containerPointToLayerPoint:function(o){return q(o).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(o){return q(o).add(this._getMapPanePos())},containerPointToLatLng:function(o){var c=this.containerPointToLayerPoint(q(o));return this.layerPointToLatLng(c)},latLngToContainerPoint:function(o){return this.layerPointToContainerPoint(this.latLngToLayerPoint(re(o)))},mouseEventToContainerPoint:function(o){return Ko(o,this._container)},mouseEventToLayerPoint:function(o){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(o))},mouseEventToLatLng:function(o){return this.layerPointToLatLng(this.mouseEventToLayerPoint(o))},_initContainer:function(o){var c=this._container=xr(o);if(c){if(c._leaflet_id)throw new Error("Map container is already initialized.")}else throw new Error("Map container not found.");Ze(c,"scroll",this._onScroll,this),this._containerId=g(c)},_initLayout:function(){var o=this._container;this._fadeAnimated=this.options.fadeAnimation&&Ne.any3d,Xe(o,"leaflet-container"+(Ne.touch?" leaflet-touch":"")+(Ne.retina?" leaflet-retina":"")+(Ne.ielt9?" leaflet-oldie":"")+(Ne.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var c=Vo(o,"position");c!=="absolute"&&c!=="relative"&&c!=="fixed"&&c!=="sticky"&&(o.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var o=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Gt(this._mapPane,new X(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(Xe(o.markerPane,"leaflet-zoom-hide"),Xe(o.shadowPane,"leaflet-zoom-hide"))},_resetView:function(o,c,p){Gt(this._mapPane,new X(0,0));var v=!this._loaded;this._loaded=!0,c=this._limitZoom(c),this.fire("viewprereset");var N=this._zoom!==c;this._moveStart(N,p)._move(o,c)._moveEnd(N),this.fire("viewreset"),v&&this.fire("load")},_moveStart:function(o,c){return o&&this.fire("zoomstart"),c||this.fire("movestart"),this},_move:function(o,c,p,v){c===void 0&&(c=this._zoom);var N=this._zoom!==c;return this._zoom=c,this._lastCenter=o,this._pixelOrigin=this._getNewPixelOrigin(o),v?p&&p.pinch&&this.fire("zoom",p):((N||p&&p.pinch)&&this.fire("zoom",p),this.fire("move",p)),this},_moveEnd:function(o){return o&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return Re(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(o){Gt(this._mapPane,this._getMapPanePos().subtract(o))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(o){this._targets={},this._targets[g(this._container)]=this;var c=o?Ct:Ze;c(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&c(window,"resize",this._onResize,this),Ne.any3d&&this.options.transform3DLimit&&(o?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){Re(this._resizeRequest),this._resizeRequest=be(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var o=this._getMapPanePos();Math.max(Math.abs(o.x),Math.abs(o.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(o,c){for(var p=[],v,N=c==="mouseout"||c==="mouseover",R=o.target||o.srcElement,B=!1;R;){if(v=this._targets[g(R)],v&&(c==="click"||c==="preclick")&&this._draggableMoved(v)){B=!0;break}if(v&&v.listens(c,!0)&&(N&&!Yo(R,o)||(p.push(v),N))||R===this._container)break;R=R.parentNode}return!p.length&&!B&&!N&&this.listens(c,!0)&&(p=[this]),p},_isClickDisabled:function(o){for(;o&&o!==this._container;){if(o._leaflet_disable_click)return!0;o=o.parentNode}},_handleDOMEvent:function(o){var c=o.target||o.srcElement;if(!(!this._loaded||c._leaflet_disable_events||o.type==="click"&&this._isCl
729ickDisabled(c))){var p=o.type;p==="mousedown"&&zi(c),this._fireDOMEvent(o,p)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(o,c,p){if(o.type==="click"){var v=l({},o);v.type="preclick",this._fireDOMEvent(v,v.type,p)}var N=this._findEventTargets(o,c);if(p){for(var R=[],B=0;B<p.length;B++)p[B].listens(c,!0)&&R.push(p[B]);N=R.concat(N)}if(N.length){c==="contextmenu"&&Ut(o);var Z=N[0],Q={originalEvent:o};if(o.type!=="keypress"&&o.type!=="keydown"&&o.type!=="keyup"){var se=Z.getLatLng&&(!Z._radius||Z._radius<=10);Q.containerPoint=se?this.latLngToContainerPoint(Z.getLatLng()):this.mouseEventToContainerPoint(o),Q.layerPoint=this.containerPointToLayerPoint(Q.containerPoint),Q.latlng=se?Z.getLatLng():this.layerPointToLatLng(Q.layerPoint)}for(B=0;B<N.length;B++)if(N[B].fire(c,Q,!0),Q.originalEvent._stopped||N[B].options.bubblingMouseEvents===!1&&M(this._mouseEvents,c)!==-1)return}},_draggableMoved:function(o){return o=o.dragging&&o.dragging.enabled()?o:this,o.dragging&&o.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var o=0,c=this._handlers.length;o<c;o++)this._handlers[o].disable()},whenReady:function(o,c){return this._loaded?o.call(c||this,{target:this}):this.on("load",o,c),this},_getMapPanePos:function(){return ls(this._mapPane)||new X(0,0)},_moved:function(){var o=this._getMapPanePos();return o&&!o.equals([0,0])},_getTopLeftPoint:function(o,c){var p=o&&c!==void 0?this._getNewPixelOrigin(o,c):this.getPixelOrigin();return p.subtract(this._getMapPanePos())},_getNewPixelOrigin:function(o,c){var p=this.getSize()._divideBy(2);return this.project(o,c)._subtract(p)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(o,c,p){var v=this._getNewPixelOrigin(p,c);return this.project(o,c)._subtract(v)},_latLngBoundsToNewLayerBounds:function(o,c,p){var v=this._getNewPixelOrigin(p,c);
vendor: 13,558 bytes, line 729
729return te([this.project(o.getSouthWest(),c)._subtract(v),this.project(o.getNorthWest(),c)._subtract(v),this.project(o.getSouthEast(),c)._subtract(v),this.project(o.getNorthEast(),c)._subtract(v)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(o){return this.latLngToLayerPoint(o).subtract(this._getCenterLayerPoint())},_limitCenter:function(o,c,p){if(!p)return o;var v=this.project(o,c),N=this.getSize().divideBy(2),R=new O(v.subtract(N),v.add(N)),B=this._getBoundsOffset(R,p,c);return Math.abs(B.x)<=1&&Math.abs(B.y)<=1?o:this.unproject(v.add(B),c)},_limitOffset:function(o,c){if(!c)return o;var p=this.getPixelBounds(),v=new O(p.min.add(o),p.max.add(o));return o.add(this._getBoundsOffset(v,c))},_getBoundsOffset:function(o,c,p){var v=te(this.project(c.getNorthEast(),p),this.project(c.getSouthWest(),p)),N=v.min.subtract(o.min),R=v.max.subtract(o.max),B=this._rebound(N.x,-R.x),Z=this._rebound(N.y,-R.y);return new X(B,Z)},_rebound:function(o,c){return o+c>0?Math.round(o-c)/2:Math.max(0,Math.ceil(o))-Math.max(0,Math.floor(c))},_limitZoom:function(o){var c=this.getMinZoom(),p=this.getMaxZoom(),v=Ne.any3d?this.options.zoomSnap:1;return v&&(o=Math.round(o/v)*v),Math.max(c,Math.min(p,o))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){Lt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(o,c){var p=this._getCenterOffset(o)._trunc();return(c&&c.animate)!==!0&&!this.getSize().contains(p)?!1:(this.panBy(p,c),!0)},_createAnimProxy:function(){var o=this._proxy=et("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(o),this.on("zoomanim",function(c){var p=fc,v=this._proxy.style[p];vr(this._proxy,this.project(c.center,c.zoom),this.getZoomScale(c.zoom,1)),v===this._proxy.style[p]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){$t(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var o=this.getCenter(),c=this.getZoom();vr(this._proxy,this.project(o,c),this.getZoomScale(c,1))},_catchTransitionEnd:function(o){this._animatingZoom&&o.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(o,c,p){if(this._animatingZoom)return!0;if(p=p||{},!this._zoomAnimated||p.animate===!1||this._nothingToAnimate()||Math.abs(c-this._zoom)>this.options.zoomAnimationThreshold)return!1;var v=this.getZoomScale(c),N=this._getCenterOffset(o)._divideBy(1-1/v);return p.animate!==!0&&!this.getSize().contains(N)?!1:(be(function(){this._moveStart(!0,p.noMoveStart||!1)._animateZoom(o,c,!0)},this),!0)},_animateZoom:function(o,c,p,v){this._mapPane&&(p&&(this._animatingZoom=!0,this._animateToCenter=o,this._animateToZoom=c,Xe(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:o,zoom:c,noUpdate:v}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(h(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&Lt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Ps(o,c){return new ft(o,c)}var Zn=Ie.extend({options:{position:"topright"},initialize:function(o){k(this,o)},getPosition:function(){return this.options.position},setPosition:function(o){var c=this._map;return c&&c.removeControl(this),this.options.position=o,c&&c.addControl(this),this},getContainer:function(){return this._container},addTo:function(o){this.remove(),this._map=o;var c=this._container=this.onAdd(o),p=this.getPosition(),v=o._controlCorners[p];return Xe(c,"leaflet-control"),p.indexOf("bottom")!==-1?v.insertBefore(c,v.firstChild):v.appendChild(c),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?($t(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(o){this._map&&o&&o.screenX>0&&o.screenY>0&&this._map.getContainer().focus()}}),Ts=function(o){return new Zn(o)};ft.include({addControl:function(o){return o.addTo(this),this},removeControl:function(o){return o.remove(),this},_initControlPos:function(){var o=this._controlCorners={},c="leaflet-",p=this._controlContainer=et("div",c+"control-container",this._container);function v(N,R){var B=c+N+" "+c+R;o[N+R]=et("div",B,p)}v("top","left"),v("top","right"),v("bottom","left"),v("bottom","right")},_clearControlPos:function(){for(var o in this._controlCorners)$t(this._controlCorners[o]);$t(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var vc=Zn.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(o,c,p,v){return p<v?-1:v<p?1:0}},initialize:function(o,c,p){k(this,p),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,this._preventClick=!1;for(var v in o)this._addLayer(o[v],v);for(v in c)this._addLayer(c[v],v,!0)},onAdd:function(o){this._initLayout(),this._update(),this._map=o,o.on("zoomend",this._checkDisabledLayers,this);for(var c=0;c<this._layers.length;c++)this._layers[c].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(o){return Zn.prototype.addTo.call(this,o),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var o=0;o<this._layers.length;o++)this._layers[o].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(o,c){return this._addLayer(o,c),this._map?this._update():this},addOverlay:function(o,c){return this._addLayer(o,c,!0),this._map?this._update():this},removeLayer:function(o){o.off("add remove",this._onLayerChange,this);var c=this._getLayer(g(o));return c&&this._layers.splice(this._layers.indexOf(c),1),this._map?this._update():this},expand:function(){Xe(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var o=this._map.getSize().y-(this._container.offsetTop+50);return o<this._section.clientHeight?(Xe(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=o+"px"):Lt(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return Lt(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var o="leaflet-control-layers",c=this._container=et("div",o),p=this.options.collapsed;c.setAttribute("aria-haspopup",!0),Zo(c),el(c);var v=this._section=et("section",o+"-list");p&&(this._map.on("click",this.collapse,this),Ze(c,{mouseenter:this._expandSafely,mouseleave:this.collapse},this));var N=this._layersLink=et("a",o+"-toggle",c);N.href="#",N.title="Layers",N.setAttribute("role","button"),Ze(N,{keydown:function(R){R.keyCode===13&&this._expandSafely()},click:function(R){Ut(R),this._expandSafely()}},this),p||this.expand(),this._baseLayersList=et("div",o+"-base",v),this._separator=et("div",o+"-separator",v),this._overlaysList=et("div",o+"-overlays",v),c.appendChild(v)},_getLayer:function(o){for(var c=0;c<this._layers.length;c++)if(this._layers[c]&&g(this._layers[c].layer)===o)return this._layers[c]},_addLayer:function(o,c,p){this._map&&o.on("add remove",this._onLayerChange,this),this._layers.push({layer:o,name:c,overlay:p}),this.options.sortLayers&&this._layers.sort(h(function(v,N){return this.options.sortFunction(v.layer,N.layer,v.name,N.name)},this)),this.options.autoZIndex&&o.setZIndex&&(this._lastZIndex++,o.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;Ga(this._baseLayersList),Ga(this._overlaysList),this._layerControlInputs=[];var o,c,p,v,N=0;for(p=0;p<this._layers.length;p++)v=this._layers[p],this._addItem(v),c=c||v.overlay,o=o||!v.overlay,N+=v.overlay?0:1;return this.options.hideSingleBase&&(o=o&&N>1,this._baseLayersList.style.display=o?"":"none"),this._separator.style.display=c&&o?"":"none",this},_onLayerChange:function(o){this._handlingClick||this._update();var c=this._getLayer(g(o.target)),p=c.overlay?o.type==="add"?"overlayadd":"overlayremove":o.type==="add"?"baselayerchange":null;p&&this._map.fire(p,c)},_createRadioElement:function(o,c){var p='<input type="radio" class="leaflet-control-layers-selector" name="'+o+'"'+(c?' checked="checked"':"")+"/>",v=document.createElement("div");return v.innerHTML=p,v.firstChild},_addItem:function(o){var c=document.createElement("label"),p=this._map.hasLayer(o.layer),v;o.overlay?(v=document.createElement("input"),v.type="checkbox",v.className="leaflet-control-layers-selector",v.defaultChecked=p):v=this._createRadioElement("leaflet-base-layers_"+g(this),p),this._layerControlInputs.push(v),v.layerId=g(o.layer),Ze(v,"click",this._onInputClick,this);var N=document.createElement("span");N.innerHTML=" "+o.name;var R=document.createElement("span");c.appendChild(R),R.appendChild(v),R.appendChild(N);var B=o.overlay?this._overlaysList:this._baseLayersList;return B.appendChild(c),this._checkDisabledLayers(),c},_onInputClick:function(){if(!this._preventClick){var o=this._layerControlInputs,c,p,v=[],N=[];this._handlingClick=!0;for(var R=o.length-1;R>=0;R--)c=o[R],p=this._getLayer(c.layerId).layer,c.checked?v.push(p):c.checked||N.push(p);for(R=0;R<N.length;R++)this._map.hasLayer(N[R])&&this._map.removeLayer(N[R]);for(R=0;R<v.length;R++)this._map.hasLayer(v[R])||this._map.addLayer(v[R]);this._handlingClick=!1,this._refocusOnMap()}},_checkDisabledLayers:function(){for(var o=this._layerControlInputs,c,p,v=this._map.getZoom(),N=o.length-1;N>=0;N--)c=o[N],p=this._getLayer(c.layerId).layer,c.disabled=p.options.minZoom!==void 0&&v<p.options.minZoom||p.options.maxZoom!==void 0&&v>p.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var o=this._section;this._preventClick=!0,Ze(o,"click",Ut),this.expand();var c=this;setTimeout(function(){Ct(o,"click",Ut),c._preventClick=!1})}}),rl=function(o,c,p){return new vc(o,c,p)},Wi=Zn.extend({options:{position:"topleft",zoomInText:'<span aria-hidden="true">+</span>',zoomInTitle:"Zoom in",zoomOutText:'<span aria-hidden="true">&#x2212;</span>',zoomOutTitle:"Zoom out"},onAdd:function(o){var c="leaflet-control-zoom",p=et("div",c+" leaflet-bar"),v=this.options;return this._zoomInButton=this._createButton(v.zoomInText,v.zoomInTitle,c+"-in",p,this._zoomIn),this._zoomOutButton=this._createButton(v.zoomOutText,v.zoomOutTitle,c+"-out",p,this._zoomOut),this._updateDisabled(),o.on("zoomend zoomlevelschange",this._updateDisabled,this),p},onRemove:function(o){o.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(o){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(o.shiftKey?3:1))},_zoomOut:function(o){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(o.shiftKey?3:1))},_createButton:function(o,c,p,v,N){var R=et("a",p,v);return R.innerHTML=o,R.href="#",R.title=c,R.setAttribute("role","button"),R.setAttribute("aria-label",c),Zo(R),Ze(R,"click",wr),Ze(R,"click",N,this),Ze(R,"click",this._refocusOnMap,this),R},_updateDisabled:function(){var o=this._map,c="leaflet-disabled";Lt(this._zoomInButton,c),Lt(this._zoomOutButton,c),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),(this._disabled||o._zoom===o.getMinZoom())&&(Xe(this._zoomOutButton,c),this._zoomOutButton.setAttribute("aria-disabled","true")),(this._disabled||o._zoom===o.getMaxZoom())&&(Xe(this._zoomInButton,c),this._zoomInButton.setAttribute("aria-disabled","true"))}});ft.mergeOptions({zoomControl:!0}),ft.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Wi,this.addControl(this.zoomControl))});var iu=function(o){return new Wi(o)},Ln=Zn.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(o){var c="leaflet-control-scale",p=et("div",c),v=this.options;return this._addScales(v,c+"-line",p),o.on(v.updateWhenIdle?"moveend":"move",this._update,this),o.whenReady(this._update,this),p},onRemove:function(o){o.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(o,c,p){o.metric&&(this._mScale=et("div",c,p)),o.imperial&&(this._iScale=et("div",c,p))},_update:function(){var o=this._map,c=o.getSize().y/2,p=o.distance(o.containerPointToLatLng([0,c]),o.containerPointToLatLng([this.options.maxWidth,c]));this._updateScales(p)},_updateScales:function(o){this.options.metric&&o&&this._updateMetric(o),this.options.imperial&&o&&this._updateImperial(o)},_updateMetric:function(o){var c=this._getRoundNum(o),p=c<1e3?c+" m":c/1e3+" km";this._updateScale(this._mScale,p,c/o)},_updateImperial:function(o){var c=o*3.2808399,p,v,N;c>5280?(p=c/5280,v=this._getRoundNum(p),this._updateScale(this._iScale,v+" mi",v/p)):(N=this._getRoundNum(c),this._updateScale(this._iScale,N+" ft",N
729/c))},_updateScale:function(o,c,p){o.style.width=Math.round(this.options.maxWidth*p)+"px",o.innerHTML=c},_getRoundNum:function(o){var c=Math.pow(10,(Math.floor(o)+"").length-1),p=o/c;return p=p>=10?10:p>=5?5:p>=3?3:p>=2?2:1,c*p}}),Ui=function(o){return new Ln(o)},bc='<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8" class="leaflet-attribution-flag"><path fill="#4C7BE1" d="M0 0h12v4H0z"/><path fill="#FFD500" d="M0 4h12v3H0z"/><path fill="#E0BC00" d="M0 7h12v1H0z"/></svg>',ni=Zn.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JavaScript library for interactive maps">'+(Ne.inlineSvg?bc+" ":"")+"Leaflet</a>"},initialize:function(o){k(this,o),this._attributions={}},onAdd:function(o){o.attributionControl=this,this._container=et("div","leaflet-control-attribution"),Zo(this._container);for(var c in o._layers)o._layers[c].getAttribution&&this.addAttribution(o._layers[c].getAttribution());return this._update(),o.on("layeradd",this._addAttribution,this),this._container},onRemove:function(o){o.off("layeradd",this._addAttribution,this)},_addAttribution:function(o){o.layer.getAttribution&&(this.addAttribution(o.layer.getAttribution()),o.layer.once("remove",function(){this.removeAttribution(o.layer.getAttribution())},this))},setPrefix:function(o){return this.options.prefix=o,this._update(),this},addAttribution:function(o){return o?(this._attributions[o]||(this._attributions[o]=0),this._attributions[o]++,this._update(),this):this},removeAttribution:function(o){return o?(this._attributions[o]&&(this._attributions[o]--,this._update()),this):this},_update:function(){if(this._map){var o=[];for(var c in this._attributions)this._attributions[c]&&o.push(c);var p=[];this.options.prefix&&p.push(this.options.prefix),o.length&&p.push(o.join(", ")),this._container.innerHTML=p.join(' <span aria-hidden="true">|</span> ')}}});ft.mergeOptions({attributionControl:!0}),ft.addInitHook(function(){this.options.attributionControl&&new ni().addTo(this)});var Im=function(o){return new ni(o)};Zn.Layers=vc,Zn.Zoom=Wi,Zn.Scale=Ln,Zn.Attribution=ni,Ts.layers=rl,Ts.zoom=iu,Ts.scale=Ui,Ts.attribution=Im;var sr=Ie.extend({initialize:function(o){this._map=o},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});sr.addTo=function(o,c){return o.addHandler(c,this),this};var wc={Events:Se},Hi=Ne.touch?"touchstart mousedown":"mousedown",_r=je.extend({options:{clickTolerance:3},initialize:function(o,c,p,v){k(this,v),this._element=o,this._dragStartTarget=c||o,this._preventOutline=p},enable:function(){this._enabled||(Ze(this._dragStartTarget,Hi,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(_r._dragging===this&&this.finishDrag(!0),Ct(this._dragStartTarget,Hi,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(o){if(this._enabled&&(this._moved=!1,!Oi(this._element,"leaflet-zoom-anim"))){if(o.touches&&o.touches.length!==1){_r._dragging===this&&this.finishDrag();return}if(!(_r._dragging||o.shiftKey||o.which!==1&&o.button!==1&&!o.touches)&&(_r._dragging=this,this._preventOutline&&zi(this._element),Ya(),gt(),!this._moving)){this.fire("down");var c=o.touches?o.touches[0]:o,p=cs(this._element);this._startPoint=new X(c.clientX,c.clientY),this._startPos=ls(this._element),this._parentScale=Or(p);var v=o.type==="mousedown";Ze(document,v?"mousemove":"touchmove",this._onMove,this),Ze(document,v?"mouseup":"touchend touchcancel",this._onUp,this)}}},_onMove:function(o){if(this._enabled){if(o.touches&&o.touches.length>1){this._moved=!0;return}var c=o.touches&&o.touches.length===1?o.touches[0]:o,p=new X(c.clientX,c.clientY)._subtract(this._startPoint);!p.x&&!p.y||Math.abs(p.x)+Math.abs(p.y)<this.options.clickTolerance||(p.x/=this._parentScale.x,p.y/=this._parentScale.y,Ut(o),this._moved||(this.fire("dragstart"),this._moved=!0,Xe(document.body,"leaflet-dragging"),this._lastTarget=o.target||o.srcElement,window.SVGElementInstance&&this._lastTarget instanceof window.SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),Xe(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(p),this._moving=!0,this._lastEvent=o,this._updatePosition())}},_updatePosition:function(){var o={originalEvent:this._lastEvent};this.fire("predrag",o),Gt(this._element,this._newPos),this.fire("drag",o)},_onUp:function(){this._enabled&&this.finishDrag()},finishDrag:function(o){Lt(document.body,"leaflet-dragging"),this._lastTarget&&(Lt(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),Ct(document,"mousemove touchmove",this._onMove,this),Ct(document,"mouseup touchend touchcancel",this._onUp,this),Qa(),Bi();var c=this._moved&&this._moving;this._moving=!1,_r._dragging=!1,c&&this.fire("dragend",{noInertia:o,distance:this._newPos.distanceTo(this._startPos)})}});function _c(o,c,p){var v,N=[1,4,2,8],R,B,Z,Q,se,ve,Fe,st;for(R=0,ve=o.length;R<ve;R++)o[R]._code=ri(o[R],c);for(Z=0;Z<4;Z++){for(Fe=N[Z],v=[],R=0,ve=o.length,B=ve-1;R<ve;
729B=R++)Q=o[R],se=o[B],Q._code&Fe?se._code&Fe||(st=il(se,Q,Fe,c,p),st._code=ri(st,c),v.push(st)):(se._code&Fe&&(st=il(se,Q,Fe,c,p),st._code=ri(st,c),v.push(st)),v.push(Q));o=v}return o}function ou(o,c){var p,v,N,R,B,Z,Q,se,ve;if(!o||o.length===0)throw new Error("latlngs not passed");ir(o)||(console.warn("latlngs are not flat! Only the first ring will be used"),o=o[0]);var Fe=re([0,0]),st=ge(o),pn=st.getNorthWest().distanceTo(st.getSouthWest())*st.getNorthEast().distanceTo(st.getNorthWest());pn<1700&&(Fe=Sc(o));var an=o.length,Yn=[];for(p=0;p<an;p++){var Mn=re(o[p]);Yn.push(c.project(re([Mn.lat-Fe.lat,Mn.lng-Fe.lng])))}for(Z=Q=se=0,p=0,v=an-1;p<an;v=p++)N=Yn[p],R=Yn[v],B=N.y*R.x-R.y*N.x,Q+=(N.x+R.x)*B,se+=(N.y+R.y)*B,Z+=B*3;Z===0?ve=Yn[0]:ve=[Q/Z,se/Z];var eo=c.unproject(q(ve));return re([eo.lat+Fe.lat,eo.lng+Fe.lng])}function Sc(o){for(var c=0,p=0,v=0,N=0;N<o.length;N++){var R=re(o[N]);c+=R.lat,p+=R.lng,v++}return re([c/v,p/v])}var $m={__proto__:null,clipPolygon:_c,polygonCenter:ou,centroid:Sc};function sl(o,c){if(!c||!o.length)return o.slice();var p=c*c;return o=Fm(o,p),o=Om(o,p),o}function au(o,c,p){return Math.sqrt(si(o,c,p,!0))}function Dm(o,c,p){return si(o,c,p)}function Om(o,c){var p=o.length,v=typeof Uint8Array<"u"?Uint8Array:Array,N=new v(p);N[0]=N[p-1]=1,Nc(o,N,c,0,p-1);var R,B=[];for(R=0;R<p;R++)N[R]&&B.push(o[R]);return B}function Nc(o,c,p,v,N){var R=0,B,Z,Q;for(Z=v+1;Z<=N-1;Z++)Q=si(o[Z],o[v],o[N],!0),Q>R&&(B=Z,R=Q);R>p&&(c[B]=1,Nc(o,c,p,v,B),Nc(o,c,p,B,N))}function Fm(o,c){for(var p=[o[0]],v=1,N=0,R=o.length;v<R;v++)Bm(o[v],o[N])>c&&(p.push(o[v]),N=v);return N<R-1&&p.push(o[R-1]),p}var jc;function lu(o,c,p,v,N){var R=v?jc:ri(o,p),B=ri(c,p),Z,Q,se;for(jc=B;;){if(!(R|B))return[o,c];if(R&B)return!1;Z=R||B,Q=il(o,c,Z,p,N),se=ri(Q,p),Z===R?(o=Q,R=se):(c=Q,B=se)}}function il(o,c,p,v,N){var R=c.x-o.x,B=c.y-o.y,Z=v.min,Q=v.max,se,ve;return p&8?(se=o.x+R*(Q.y-o.y)/B,ve=Q.y):p&4?(se=o.x+R*(Z.y-o.y)/B,ve=Z.y):p&2?(se=Q.x,ve=o.y+B*(Q.x-o.x)/R):p&1&&(se=Z.x,ve=o.y+B*(Z.x-o.x)/R),new X(se,ve,N)}function ri(o,c){var p=0;return o.x<c.min.x?p|=1:o.x>c.max.x&&(p|=2),o.y<c.min.y?p|=4:o.y>c.max.y&&(p|=8),p}function Bm(o,c){var p=c.x-o.x,v=c.y-o.y;return p*p+v*v}function si(o,c,p,v){var N=c.x,R=c.y,B=p.x-N,Z=p.y-R,Q=B*B+Z*Z,se;return Q>0&&(se=((o.x-N)*B+(o.y-R)*Z)/Q,se>1?(N=p.x,R=p.y):se>0&&(N+=B*se,R+=Z*se)),B=o.x-N,Z=o.y-R,v?B*B+Z*Z:new X(N,R)}function ir(o){return!I(o[0])||typeof o[0][0]!="object"&&typeof o[0][0]<"u"}function cu(o){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),ir(o)}function du(o,c){var p,v,N,R,B,Z,Q,se;if(!o||o.length===0)throw new Error("latlngs not passed");ir(o)||(console.warn("latlngs are not flat! Only the first ring will be used"),o=o[0]);var ve=re([0,0]),Fe=ge(o),st=Fe.getNorthWest().distanceTo(Fe.getSouthWest
729())*Fe.getNorthEast().distanceTo(Fe.getNorthWest());st<1700&&(ve=Sc(o));var pn=o.length,an=[];for(p=0;p<pn;p++){var Yn=re(o[p]);an.push(c.project(re([Yn.lat-ve.lat,Yn.lng-ve.lng])))}for(p=0,v=0;p<pn-1;p++)v+=an[p].distanceTo(an[p+1])/2;if(v===0)se=an[0];else for(p=0,R=0;p<pn-1;p++)if(B=an[p],Z=an[p+1],N=B.distanceTo(Z),R+=N,R>v){Q=(R-v)/N,se=[Z.x-Q*(Z.x-B.x),Z.y-Q*(Z.y-B.y)];break}var Mn=c.unproject(q(se));return re([Mn.lat+ve.lat,Mn.lng+ve.lng])}var uu={__proto__:null,simplify:sl,pointToSegmentDistance:au,closestPointOnSegment:Dm,clipSegment:lu,_getEdgeIntersection:il,_getBitCode:ri,_sqClosestPointOnSegment:si,isFlat:ir,_flat:cu,polylineCenter:du},kc={project:function(o){return new X(o.lng,o.lat)},unproject:function(o){return new pe(o.y,o.x)},bounds:new O([-180,-90],[180,90])},Cc={R:6378137,R_MINOR:6356752314245179e-9,bounds:new O([-2003750834279e-5,-1549657073972e-5],[2003750834279e-5,1876465623138e-5]),project:function(o){var c=Math.PI/180,p=this.R,v=o.lat*c,N=this.R_MINOR/p,R=Math.sqrt(1-N*N),B=R*Math.sin(v),Z=Math.tan(Math.PI/4-v/2)/Math.pow((1-B)/(1+B),R/2);return v=-p*Math.log(Math.max(Z,1e-10)),new X(o.lng*c*p,v)},unproject:function(o){for(var c=180/Math.PI,p=this.R,v=this.R_MINOR/p,N=Math.sqrt(1-v*v),R=Math.exp(-o.y/p),B=Math.PI/2-2*Math.atan(R),Z=0,Q=.1,se;Z<15&&Math.abs(Q)>1e-7;Z++)se=N*Math.sin(B),se=Math.pow((1-se)/(1+se),N/2),Q=Math.PI/2-2*Math.atan(R*se)-B,B+=Q;return new pe(B*c,o.x*c/p)}},zm={__proto__:null,LonLat:kc,Mercator:Cc,SphericalMercator:Et},Wm=l({},He,{code:"EPSG:3395",projection:Cc,transformation:(function(){var o=.5/(Math.PI*Cc.R);return kt(o,.5,-o,.5)})()}),hu=l({},He,{code:"EPSG:4326",projection:kc,transformation:kt(1/180,1,-1/180,.5)}),Um=l({},$e,{projection:kc,transformation:kt(1,0,-1,0),scale:function(o){return Math.pow(2,o)},zoom:function(o){return Math.log(o)/Math.LN2},distance:function(o,c){var p=c.lng-o.lng,v=c.lat-o.lat;return Math.sqrt(p*p+v*v)},infinite:!0});$e.Earth=He,$e.EPSG3395=Wm,$e.EPSG3857=dn,$e.EPSG900913=un,$e.EPSG4326=hu,$e.Simple=Um;var Sr=je.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(o){return o.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(o){return o&&o.removeLayer(this),this},getPane:function(o){return this._map.getPane(o?this.options[o]||o:this.options.pane)},addInteractiveTarget:function(o){return this._map._targets[g(o)]=this,this},removeInteractiveTarget:function(o){return delete this._map._targets[g(o)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(o){var c=o.target;if(c.hasLayer(this)){if(this._map=c,this._zoomAnimated=c._zoomAnimated,this.getEvents){var p=this.getEvents();c.on(p,this),this.once("remove",function(){c.off(p,this)},this)}this.onAdd(c),this.fire("add"),c.fire("layeradd",{layer:this})}}});ft.include({addLayer:function(o){if(!o._layerAdd)throw new Error("The provided object is not a Layer.");var c=g(o);return this._layers[c]?this:(this._layers[c]=o,o._mapToAdd=this,o.beforeAdd&&o.beforeAdd(this),this.whenReady(o._layerAdd,o),this)},removeLayer:function(o){var c=g(o);return this._layers[c]?(this._loaded&&o.onRemove(this),delete this._layers[c],this._loaded&&(this.fire("layerremove",{layer:o}),o.fire("remove")),o._map=o._mapToAdd=null,this):this},hasLayer:function(o){return g(o)in this._layers},eachLayer:function(o,c){for(var p in this._layers)o.call(c,this._layers[p]);return this},_addLayers:function(o){o=o?I(o)?o:[o]:[];for(var c=0,p=o.length;c<p;c++)this.addLayer(o[c])},_addZoomLimit:function(o){(!isNaN(o.options.maxZoom)||!isNaN(o.options.minZoom))&&(this._zoomBoundLayers[g(o)]=o,this._updateZoomLevels())},_removeZoomLimit:function(o){var c=g(o);this._zoomBoundLayers[c]&&(delete this._zoomBoundLayers[c],this._updateZoomLevels())},_updateZoomLevels:function(){var o=1/0,c=-1/0,p=this._getZoomSpan();for(var v in this._zoomBoundLayers){var N=this._zoomBoundLayers[v].options;o=N.minZoom===void 0?o:Math.min(o,N.minZoom),c=N.maxZoom===void 0?c:Math.max(c,N.maxZoom)}this._layersMaxZoom=c===-1/0?void 0:c,this._layersMinZoom=o===1/0?void 0:o,p!==this._getZoomSpan()&&this.fire("zoomlevelschange"),this.options.maxZoom===void 0&&this._layersMaxZo
729om&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),this.options.minZoom===void 0&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Es=Sr.extend({initialize:function(o,c){k(this,c),this._layers={};var p,v;if(o)for(p=0,v=o.length;p<v;p++)this.addLayer(o[p])},addLayer:function(o){var c=this.getLayerId(o);return this._layers[c]=o,this._map&&this._map.addLayer(o),this},removeLayer:function(o){var c=o in this._layers?o:this.getLayerId(o);return this._map&&this._layers[c]&&this._map.removeLayer(this._layers[c]),delete this._layers[c],this},hasLayer:function(o){var c=typeof o=="number"?o:this.getLayerId(o);return c in this._layers},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(o){var c=Array.prototype.slice.call(arguments,1),p,v;for(p in this._layers)v=this._layers[p],v[o]&&v[o].apply(v,c);return this},onAdd:function(o){this.eachLayer(o.addLayer,o)},onRemove:function(o){this.eachLayer(o.removeLayer,o)},eachLayer:function(o,c){for(var p in this._layers)o.call(c,this._layers[p]);return this},getLayer:function(o){return this._layers[o]},getLayers:function(){var o=[];return this.eachLayer(o.push,o),o},setZIndex:function(o){return this.invoke("setZIndex",o)},getLayerId:function(o){return g(o)}}),Qo=function(o,c){return new Es(o,c)},ds=Es.extend({addLayer:function(o){return this.hasLayer(o)?this:(o.addEventParent(this),Es.prototype.addLayer.call(this,o),this.fire("layeradd",{layer:o}))},removeLayer:function(o){return this.hasLayer(o)?(o in this._layers&&(o=this._layers[o]),o.removeEventParent(this),Es.prototype.removeLayer.call(this,o),this.fire("layerremove",{layer:o})):this},setStyle:function(o){return this.invoke("setStyle",o)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var o=new ye;for(var c in this._layers){var p=this._layers[c];o.extend(p.getBounds?p.getBounds():p.getLatLng())}return o}}),mu=function(o,c){return new ds(o,c)},ii=Ie.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0],crossOrigin:!1},initialize:function(o){k(this,o)},createIcon:function(o){return this._createIcon("icon",o)},createShadow:function(o){return this._createIcon("shadow",o)},_createIcon:function(o,c){var p=this._getIconUrl(o);if(!p){if(o==="icon")throw new Error("iconUrl not set in Icon options (see the docs).");return null}var v=this._createImg(p,c&&c.tagName==="IMG"?c:null);return this._setIconStyles(v,o),(this.options.crossOrigin||this.options.crossOrigin==="")&&(v.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),v},_setIconStyles:function(o,c){var p=this.options,v=p[c+"Size"];typeof v=="number"&&(v=[v,v]);var N=q(v),R=q(c==="shadow"&&p.shadowAnchor||p.iconAnchor||N&&N.divideBy(2,!0));o.className="leaflet-marker-"+c+" "+(p.className||""),R&&(o.style.marginLeft=-R.x+"px",o.style.marginTop=-R.y+"px"),N&&(o.style.width=N.x+"px",o.style.height=N.y+"px")},_createImg:function(o,c){return c=c||document.createElement("img"),c.src=o,c},_getIconUrl:function(o){return Ne.retina&&this.options[o+"RetinaUrl"]||this.options[o+"Url"]}});function pu(o){return new ii(o)}var Vi=ii.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(o){return typeof Vi.imagePath!="string"&&(Vi.imagePath=this._detectIconPath()),(this.options.imagePath||Vi.imagePath)+ii.prototype._getIconUrl.call(this,o)},_stripUrl:function(o){var c=function(p,v,N){var R=v.exec(p);return R&&R[N]};return o=c(o,/^url\((['"])?(.+)\1\)$/,2),o&&c(o,/^(.*)marker-icon\.png$/,1)},_detectIconPath:function(){var o=et("div","leaflet-default-icon-path",document.body),c=Vo(o,"background-image")||Vo(o,"backgroundImage");if(document.body.removeChild(o),c=this._stripUrl(c),c)return c;var p=document.querySelector('link[href$="leaflet.css"]');return p?p.href.substring(0,p.href.length-11-1):""}}
vendor: 4,232 bytes, line 729
729),Pc=sr.extend({initialize:function(o){this._marker=o},addHooks:function(){var o=this._marker._icon;this._draggable||(this._draggable=new _r(o,o,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),Xe(o,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&Lt(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(o){var c=this._marker,p=c._map,v=this._marker.options.autoPanSpeed,N=this._marker.options.autoPanPadding,R=ls(c._icon),B=p.getPixelBounds(),Z=p.getPixelOrigin(),Q=te(B.min._subtract(Z).add(N),B.max._subtract(Z).subtract(N));if(!Q.contains(R)){var se=q((Math.max(Q.max.x,R.x)-Q.max.x)/(B.max.x-Q.max.x)-(Math.min(Q.min.x,R.x)-Q.min.x)/(B.min.x-Q.min.x),(Math.max(Q.max.y,R.y)-Q.max.y)/(B.max.y-Q.max.y)-(Math.min(Q.min.y,R.y)-Q.min.y)/(B.min.y-Q.min.y)).multiplyBy(v);p.panBy(se,{animate:!1}),this._draggable._newPos._add(se),this._draggable._startPos._add(se),Gt(c._icon,this._draggable._newPos),this._onDrag(o),this._panRequest=be(this._adjustPan.bind(this,o))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup&&this._marker.closePopup(),this._marker.fire("movestart").fire("dragstart")},_onPreDrag:function(o){this._marker.options.autoPan&&(Re(this._panRequest),this._panRequest=be(this._adjustPan.bind(this,o)))},_onDrag:function(o){var c=this._marker,p=c._shadow,v=ls(c._icon),N=c._map.layerPointToLatLng(v);p&&Gt(p,v),c._latlng=N,o.latlng=N,o.oldLatLng=this._oldLatLng,c.fire("move",o).fire("drag",o)},_onDragEnd:function(o){Re(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",o)}}),us=Sr.extend({options:{icon:new Vi,interactive:!0,keyboard:!0,title:"",alt:"Marker",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,autoPanOnFocus:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(o,c){k(this,c),this._latlng=re(o)},onAdd:function(o){this._zoomAnimated=this._zoomAnimated&&o.options.markerZoomAnimation,this._zoomAnimated&&o.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(o){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&o.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(o){var c=this._latlng;return this._latlng=re(o),this.update(),this.fire("move",{oldLatLng:c,latlng:this._latlng})},setZIndexOffset:function(o){return this.options.zIndexOffset=o,this.update()},getIcon:function(){return this.options.icon},setIcon:function(o){return this.options.icon=o,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var o=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(o)}return this},_initIcon:function(){var o=this.options,c="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),p=o.icon.createIcon(this._icon),v=!1;p!==this._icon&&(this._icon&&this._removeIcon(),v=!0,o.title&&(p.title=o.title),p.tagName==="IMG"&&(p.alt=o.alt||"")),Xe(p,c),o.keyboard&&(p.tabIndex="0",p.setAttribute("role","button")),this._icon=p,o.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex}),this.options.autoPanOnFocus&&Ze(p,"focus",this._panOnFocus,this);var N=o.icon.createShadow(this._shadow),R=!1;N!==this._shadow&&(this._removeShadow(),R=!0),N&&(Xe(N,c),N.alt=""),this._shadow=N,o.opacity<1&&this._updateOpacity(),v&&this.getPane().appendChild(this._icon),this._initInteraction(),N&&R&&this.getPane(o.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}
vendor: 5,647 bytes, line 729
729),this.options.autoPanOnFocus&&Ct(this._icon,"focus",this._panOnFocus,this),$t(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&$t(this._shadow),this._shadow=null},_setPos:function(o){this._icon&&Gt(this._icon,o),this._shadow&&Gt(this._shadow,o),this._zIndex=o.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(o){this._icon&&(this._icon.style.zIndex=this._zIndex+o)},_animateZoom:function(o){var c=this._map._latLngToNewLayerPoint(this._latlng,o.zoom,o.center).round();this._setPos(c)},_initInteraction:function(){if(this.options.interactive&&(Xe(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Pc)){var o=this.options.draggable;this.dragging&&(o=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Pc(this),o&&this.dragging.enable()}},setOpacity:function(o){return this.options.opacity=o,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var o=this.options.opacity;this._icon&&Rn(this._icon,o),this._shadow&&Rn(this._shadow,o)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_panOnFocus:function(){var o=this._map;if(o){var c=this.options.icon.options,p=c.iconSize?q(c.iconSize):q(0,0),v=c.iconAnchor?q(c.iconAnchor):q(0,0);o.panInside(this._latlng,{paddingTopLeft:v,paddingBottomRight:p.subtract(v)})}},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});function Hm(o,c){return new us(o,c)}var As=Sr.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(o){this._renderer=o.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(o){return k(this,o),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&o&&Object.prototype.hasOwnProperty.call(o,"weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+(this._renderer.options.tolerance||0)}}),ol=As.extend({options:{fill:!0,radius:10},initialize:function(o,c){k(this,c),this._latlng=re(o),this._radius=this.options.radius},setLatLng:function(o){var c=this._latlng;return this._latlng=re(o),this.redraw(),this.fire("move",{oldLatLng:c,latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(o){return this.options.radius=this._radius=o,this.redraw()},getRadius:function(){return this._radius},setStyle:function(o){var c=o&&o.radius||this._radius;return As.prototype.setStyle.call(this,o),this.setRadius(c),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var o=this._radius,c=this._radiusY||o,p=this._clickTolerance(),v=[o+p,c+p];this._pxBounds=new O(this._point.subtract(v),this._point.add(v))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(o){return o.distanceTo(this._point)<=this._radius+this._clickTolerance()}});function fu(o,c){return new ol(o,c)}var al=ol.extend({initialize:function(o,c,p){if(typeof c=="number"&&(c=l({},p,{radius:c})),k(this,c),this._latlng=re(o),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(o){return this._mRadius=o,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var o=[this._radius,this._radiusY||this._radius];return new ye(this._map.layerPointToLatLng(this._point.subtract(o)),this._map.layerPointToLatLng(this._point.add(o)))},setStyle:As.prototype.setStyle,_project:function(){var o=this._latlng.lng,c=this._latlng.lat,p=this._map,v=p.options.crs;if(v.distance===He.distance){var N=Math.PI/180,R=this._mRadius/He.R/N,B=p.project([c+R,o]),Z=p.project([c-R,o]),Q=B.add(Z).divideBy(2),se=p.unproject(Q).lat,ve=Math.acos((Math.cos(R*N)-Math.sin(c*N)*Math.sin(se*N))/(Math.cos(c*N)*Math.cos(se*N)))/N;(isNaN(ve)||ve===0)&&(ve=R/Math.cos(Math.PI/180*c)),this._point=Q.subtract(p.getPixelOrigin()),this._radius=isNaN(ve)?0:Q.x-p.project([se,o-ve]).x,this._radiusY=Q.y-B.y}else{var Fe=v.unproject(v.project(this._latlng).subtract([this._mRadius,0]));this._point=p.latLngToLayerPoint(this._latlng),this._radius=this._point.x-p.latLngToLayerPoint(Fe).x}this._updateBounds()}});function Xo(o,c,p){return new al(o,c,p)}var Kn=As.extend({options:{smoothFactor:1,noClip:!1},initialize:function(o,c){k(this,c),this._setLatLngs(o)},getLatLngs:function(){return this._latlngs},setLatLngs:function(o){return this._setLatLngs(o),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(o){for(var c=1/0,p=null,v=si,N,R,B=0,Z=this._parts.length;B<Z;B++)for(var Q=this._parts[B],se=1,ve=Q.length;se<ve;se++){N=Q[se-1],R=Q[se];var Fe=v(o,N,R,!0);Fe<c&&(c=Fe,p=v(o,N,R))}return p&&(p.distance=Math.sqrt(c)),p}
729,getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");return du(this._defaultShape(),this._map.options.crs)},getBounds:function(){return this._bounds},addLatLng:function(o,c){return c=c||this._defaultShape(),o=re(o),c.push(o),this._bounds.extend(o),this.redraw()},_setLatLngs:function(o){this._bounds=new ye,this._latlngs=this._convertLatLngs(o)},_defaultShape:function(){return ir(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(o){for(var c=[],p=ir(o),v=0,N=o.length;v<N;v++)p?(c[v]=re(o[v]),this._bounds.extend(c[v])):c[v]=this._convertLatLngs(o[v]);return c},_project:function(){var o=new O;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,o),this._bounds.isValid()&&o.isValid()&&(this._rawPxBounds=o,this._updateBounds())},_updateBounds:function(){var o=this._clickTolerance(),c=new X(o,o);this._rawPxBounds&&(this._pxBounds=new O([this._rawPxBounds.min.subtract(c),this._rawPxBounds.max.add(c)]))},_projectLatlngs:function(o,c,p){var v=o[0]instanceof pe,N=o.length,R,B;if(v){for(B=[],R=0;R<N;R++)B[R]=this._map.latLngToLayerPoint(o[R]),p.extend(B[R]);c.push(B)}else for(R=0;R<N;R++)this._projectLatlngs(o[R],c,p)},_clipPoints:function(){var o=this._renderer._bounds;if(this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(o))){if(this.options.noClip){this._parts=this._rings;return}var c=this._parts,p,v,N,R,B,Z,Q;for(p=0,N=0,R=this._rings.length;p<R;p++)for(Q=this._rings[p],v=0,B=Q.length;v<B-1;v++)Z=lu(Q[v],Q[v+1],o,v,!0),Z&&(c[N]=c[N]||[],c[N].push(Z[0]),(Z[1]!==Q[v+1]||v===B-2)&&(c[N].push(Z[1]),N++))}},_simplifyPoints:function(){for(var o=this._parts,c=this.options.smoothFactor,p=0,v=o.length;p<v;p++)o[p]=sl(o[p],c)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(o,c){var p,v,N,R,B,Z,Q=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(o))return!1;for(p=0,R=this._parts.length;p<R;p++)for(Z=this._parts[p],v=0,B=Z.length,N=B-1;v<B;N=v++)if(!(!c&&v===0)&&au(o,Z[N],Z[v])<=Q)return!0;return!1}});function Vm(o,c){return new Kn(o,c)}Kn._flat=cu;var hs=Kn.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length}
729,getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");return ou(this._defaultShape(),this._map.options.crs)},_convertLatLngs:function(o){var c=Kn.prototype._convertLatLngs.call(this,o),p=c.length;return p>=2&&c[0]instanceof pe&&c[0].equals(c[p-1])&&c.pop(),c},_setLatLngs:function(o){Kn.prototype._setLatLngs.call(this,o),ir(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return ir(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var o=this._renderer._bounds,c=this.options.weight,p=new X(c,c);if(o=new O(o.min.subtract(p),o.max.add(p)),this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(o))){if(this.options.noClip){this._parts=this._rings;return}for(var v=0,N=this._rings.length,R;v<N;v++)R=_c(this._rings[v],o,!0),R.length&&this._parts.push(R)}},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(o){var c=!1,p,v,N,R,B,Z,Q,se;if(!this._pxBounds||!this._pxBounds.contains(o))return!1;for(R=0,Q=this._parts.length;R<Q;R++)for(p=this._parts[R],B=0,se=p.length,Z=se-1;B<se;Z=B++)v=p[B],N=p[Z],v.y>o.y!=N.y>o.y&&o.x<(N.x-v.x)*(o.y-v.y)/(N.y-v.y)+v.x&&(c=!c);return c||Kn.prototype._containsPoint.call(this,o,!0)}});function qm(o,c){return new hs(o,c)}var Br=ds.extend({initialize:function(o,c){k(this,c),this._layers={},o&&this.addData(o)},addData:function(o){var c=I(o)?o:o.features,p,v,N;if(c){for(p=0,v=c.length;p<v;p++)N=c[p],(N.geometries||N.geometry||N.features||N.coordinates)&&this.addData(N);return this}var R=this.options;if(R.filter&&!R.filter(o))return this;var B=qi(o,R);return B?(B.feature=hl(o),B.defaultOptions=B.options,this.resetStyle(B),R.onEachFeature&&R.onEachFeature(o,B),this.addLayer(B)):this},resetStyle:function(o){return o===void 0?this.eachLayer(this.resetStyle,this):(o.options=l({},o.defaultOptions),this._setLayerStyle(o,this.options.style),this)},setStyle:function(o){return this.eachLayer(function(c){this._setLayerStyle(c,o)},this)},_setLayerStyle:function(o,c){o.setStyle&&(typeof c=="function"&&(c=c(o.feature)),o.setStyle(c))}});function qi(o,c){var p=o.type==="Feature"?o.geometry:o,v=p?p.coordinates:null,N=[],R=c&&c.pointToLayer,B=c&&c.coordsToLatLng||cl,Z,Q,se,ve;if(!v&&!p)return null;switch(p.type){case"Point":return Z=B(v),ll(R,o,Z,c);case"MultiPoint":for(se=0,ve=v.length;se<ve;se++)Z=B(v[se]),N.push(ll(R,o,Z,c));return new ds(N);case"LineString":case"MultiLineString":return Q=ea(v,p.type==="LineString"?0:1,B),new Kn(Q,c);case"Polygon":case"MultiPolygon":return Q=ea(v,p.type==="Polygon"?1:2,B),new hs(Q,c);case"GeometryCollection":for(se=0,ve=p.geometries.length;se<ve;se++){var Fe=qi({geometry:p.geometries[se],type:"Feature",properties:o.properties},c);Fe&&N.push(Fe)}return new ds(N);case"FeatureCollection":for(se=0,ve=p.features.length;se<ve;se++){var st=qi(p.features[se],c);st&&N.push(st)}return new ds(N);default:throw new Error("Invalid GeoJSON object.")}}function ll(o,c,p,v){return o?o(c,p):new us(p,v&&v.markersInheritOptions&&v)}function cl(o){return new pe(o[1],o[0],o[2])}function ea(o,c,p){for(var v=[],N=0,R=o.length,B;N<R;N++)B=c?ea(o[N],c-1,p):(p||cl)(o[N]),v.push(B);return v}function dl(o,c){return o=re(o),o.alt!==void 0?[j(o.lng,c),j(o.lat,c),j(o.alt,c)]:[j(o.lng,c),j(o.lat,c)]}function ul(o,c,p,v){for(var N=[],R=0,B=o.length;R<B;R++)N.push(c?ul(o[R],ir(o[R])?0:c-1,p,v):dl(o[R],v));return!c&&p&&N.length>0&&N.push(N[0].slice()),N}function Ji(o,c){return o.feature?l({},o.feature,{geometry:c}):hl(c)}function hl(o){return o.type==="Feature"||o.type==="FeatureCollection"?o:{type:"Feature",properties:{},geometry:o}}var Tc={toGeoJSON:function(o){return Ji(this,{type:"Point",coordinates:dl(this.getLatLng(),o)})}};us.include(Tc),al.include(Tc),ol.include(Tc),Kn.include({toGeoJSON:function(o){var c=!ir(this._latlngs),p=ul(this._latlngs,c?1:0,!1,o);return Ji(this,{type:(c?"Multi":"")+"LineString",coordinates:p})}}),hs.include({toGeoJSON:function(o){var c=!ir(this._latlngs),p=c&&!ir(this._latlngs[0]),v=ul(this._latlngs,p?2:c?1:0,!0,o);return c||(v=[v]),Ji(this,{type:(p?"Multi":"")+"Polygon",coordinates:v})}}),Es.include({toMultiPoint:function(o){var c=[];return this.eachLayer(function(p){c.push(p.toGeoJSON(o).geometry.coordinates)}),Ji(this,{type:"MultiPoint",coordinates:c})},toGeoJSON:function(o){var c=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(c==="MultiPoint")return this.toMultiPoint(o);var p=c==="GeometryCollection",v=[];return this.eachLayer(function(N){if(N.toGeoJSON){var R=N.toGeoJSON(o);if(p)v.push(R.geometry);
vendor: 21,019 bytes, line 729
729else{var B=hl(R);B.type==="FeatureCollection"?v.push.apply(v,B.features):v.push(B)}}}),p?Ji(this,{geometries:v,type:"GeometryCollection"}):{type:"FeatureCollection",features:v}}});function gu(o,c){return new Br(o,c)}var Nr=gu,Rs=Sr.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(o,c,p){this._url=o,this._bounds=ge(c),k(this,p)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(Xe(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){$t(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(o){return this.options.opacity=o,this._image&&this._updateOpacity(),this},setStyle:function(o){return o.opacity&&this.setOpacity(o.opacity),this},bringToFront:function(){return this._map&&Di(this._image),this},bringToBack:function(){return this._map&&as(this._image),this},setUrl:function(o){return this._url=o,this._image&&(this._image.src=o),this},setBounds:function(o){return this._bounds=ge(o),this._map&&this._reset(),this},getEvents:function(){var o={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(o.zoomanim=this._animateZoom),o},setZIndex:function(o){return this.options.zIndex=o,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var o=this._url.tagName==="IMG",c=this._image=o?this._url:et("img");if(Xe(c,"leaflet-image-layer"),this._zoomAnimated&&Xe(c,"leaflet-zoom-animated"),this.options.className&&Xe(c,this.options.className),c.onselectstart=w,c.onmousemove=w,c.onload=h(this.fire,this,"load"),c.onerror=h(this._overlayOnError,this,"error"),(this.options.crossOrigin||this.options.crossOrigin==="")&&(c.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),o){this._url=c.src;return}c.src=this._url,c.alt=this.options.alt},_animateZoom:function(o){var c=this._map.getZoomScale(o.zoom),p=this._map._latLngBoundsToNewLayerBounds(this._bounds,o.zoom,o.center).min;vr(this._image,p,c)},_reset:function(){var o=this._image,c=new O(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),p=c.getSize();Gt(o,c.min),o.style.width=p.x+"px",o.style.height=p.y+"px"},_updateOpacity:function(){Rn(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var o=this.options.errorOverlayUrl;o&&this._url!==o&&(this._url=o,this._image.src=o)},getCenter:function(){return this._bounds.getCenter()}}),yu=function(o,c,p){return new Rs(o,c,p)},Ec=Rs.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInline:!0},_initImage:function(){var o=this._url.tagName==="VIDEO",c=this._image=o?this._url:et("video");if(Xe(c,"leaflet-image-layer"),this._zoomAnimated&&Xe(c,"leaflet-zoom-animated"),this.options.className&&Xe(c,this.options.className),c.onselectstart=w,c.onmousemove=w,c.onloadeddata=h(this.fire,this,"load"),o){for(var p=c.getElementsByTagName("source"),v=[],N=0;N<p.length;N++)v.push(p[N].src);this._url=p.length>0?v:[c.src];return}I(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(c.style,"objectFit")&&(c.style.objectFit="fill"),c.autoplay=!!this.options.autoplay,c.loop=!!this.options.loop,c.muted=!!this.options.muted,c.playsInline=!!this.options.playsInline;for(var R=0;R<this._url.length;R++){var B=et("source");B.src=this._url[R],c.appendChild(B)}}});function xu(o,c,p){return new Ec(o,c,p)}var Ac=Rs.extend({_initImage:function(){var o=this._image=this._url;Xe(o,"leaflet-image-layer"),this._zoomAnimated&&Xe(o,"leaflet-zoom-animated"),this.options.className&&Xe(o,this.options.className),o.onselectstart=w,o.onmousemove=w}});function Rc(o,c,p){return new Ac(o,c,p)}var zr=Sr.extend({options:{interactive:!1,offset:[0,0],className:"",pane:void 0,content:""},initialize:function(o,c){o&&(o instanceof pe||I(o))?(this._latlng=re(o),k(this,c)):(k(this,o),this._source=c),this.options.content&&(this._content=this.options.content)},openOn:function(o){return o=arguments.length?o:this._source._map,o.hasLayer(this)||o.addLayer(this),this},close:function(){return this._map&&this._map.removeLayer(this),this},toggle:function(o){return this._map?this.close():(arguments.length?this._source=o:o=this._source,this._prepareOpen(),this.openOn(o._map)),this},onAdd:function(o){this._zoomAnimated=o._zoomAnimated,this._container||this._initLayout(),o._fadeAnimated&&Rn(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),o._fadeAnimated&&Rn(this._container,1),this.bringToFront(),this.options.interactive&&(Xe(this._container,"leaflet-interactive"),this.addInteractiveTarget(this._container))},onRemove:function(o){o._fadeAnimated?(Rn(this._container,0),this._removeTimeout=setTimeout(h($t,void 0,this._container),200)):$t(this._container),this.options.interactive&&(Lt(this._container,"leaflet-interactive"),this.removeInteractiveTarget(this._container))},getLatLng:function(){return this._latlng},setLatLng:function(o){return this._latlng=re(o),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(o){return this._content=o,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var o={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(o.zoomanim=this._animateZoom),o},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&Di(this._container),this},bringToBack:function(){return this._map&&as(this._container),this},_prepareOpen:function(o){var c=this._source;if(!c._map)return!1;if(c instanceof ds){c=null;var p=this._source._layers;for(var v in p)if(p[v]._map){c=p[v];break}if(!c)return!1;this._source=c}if(!o)if(c.getCenter)o=c.getCenter();else if(c.getLatLng)o=c.getLatLng();else if(c.getBounds)o=c.getBounds().getCenter();else throw new Error("Unable to get source layer LatLng.");return this.setLatLng(o),this._map&&this.update(),!0},_updateContent:function(){if(this._content){var o=this._contentNode,c=typeof this._content=="function"?this._content(this._source||this):this._content;if(typeof c=="string")o.innerHTML=c;else{for(;o.hasChildNodes();)o.removeChild(o.firstChild);o.appendChild(c)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var o=this._map.latLngToLayerPoint(this._latlng),c=q(this.options.offset),p=this._getAnchor();this._zoomAnimated?Gt(this._container,o.add(p)):c=c.add(o).add(p);var v=this._containerBottom=-c.y,N=this._containerLeft=-Math.round(this._containerWidth/2)+c.x;this._container.style.bottom=v+"px",this._container.style.left=N+"px"}},_getAnchor:function(){return[0,0]}});ft.include({_initOverlay:function(o,c,p,v){var N=c;return N instanceof o||(N=new o(v).setContent(c)),p&&N.setLatLng(p),N}}),Sr.include({_initOverlay:function(o,c,p,v){var N=p;return N instanceof o?(k(N,v),N._source=this):(N=c&&!v?c:new o(v,this),N.setContent(p)),N}});var ml=zr.extend({options:{pane:"popupPane",offset:[0,7],maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(o){return o=arguments.length?o:this._source._map,!o.hasLayer(this)&&o._popup&&o._popup.options.autoClose&&o.removeLayer(o._popup),o._popup=this,zr.prototype.openOn.call(this,o)},onAdd:function(o){zr.prototype.onAdd.call(this,o),o.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof As||this._source.on("preclick",Fr))},onRemove:function(o){zr.prototype.onRemove.call(this,o),o.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof As||this._source.off("preclick",Fr))},getEvents:function(){var o=zr.prototype.getEvents.call(this);return(this.options.closeOnClick!==void 0?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(o.preclick=this.close),this.options.keepInView&&(o.moveend=this._adjustPan),o},_initLayout:function(){var o="leaflet-popup",c=this._container=et("div",o+" "+(this.options.className||"")+" leaflet-zoom-animated"),p=this._wrapper=et("div",o+"-content-wrapper",c);if(this._contentNode=et("div",o+"-content",p),Zo(c),el(this._contentNode),Ze(c,"contextmenu",Fr),this._tipContainer=et("div",o+"-tip-container",c),this._tip=et("div",o+"-tip",this._tipContainer),this.options.closeButton){var v=this._closeButton=et("a",o+"-close-button",c);v.setAttribute("role","button"),v.setAttribute("aria-label","Close popup"),v.href="#close",v.innerHTML='<span aria-hidden="true">&#215;</span>',Ze(v,"click",function(N){Ut(N),this.close()},this)}},_updateLayout:function(){var o=this._contentNode,c=o.style;c.width="",c.whiteSpace="nowrap";var p=o.offsetWidth;p=Math.min(p,this.options.maxWidth),p=Math.max(p,this.options.minWidth),c.width=p+1+"px",c.whiteSpace="",c.height="";var v=o.offsetHeight,N=this.options.maxHeight,R="leaflet-popup-scrolled";N&&v>N?(c.height=N+"px",Xe(o,R)):Lt(o,R),this._containerWidth=this._container.offsetWidth},_animateZoom:function(o){var c=this._map._latLngToNewLayerPoint(this._latlng,o.zoom,o.center),p=this._getAnchor();Gt(this._container,c.add(p))},_adjustPan:function(){if(this.options.autoPan){if(this._map._panAnim&&this._map._panAnim.stop(),this._autopanning){this._autopanning=!1;return}var o=this._map,c=parseInt(Vo(this._container,"marginBottom"),10)||0,p=this._container.offsetHeight+c,v=this._containerWidth,N=new X(this._containerLeft,-p-this._containerBottom);N._add(ls(this._container));var R=o.layerPointToContainerPoint(N),B=q(this.options.autoPanPadding),Z=q(this.options.autoPanPaddingTopLeft||B),Q=q(this.options.autoPanPaddingBottomRight||B),se=o.getSize(),ve=0,Fe=0;R.x+v+Q.x>se.x&&(ve=R.x+v-se.x+Q.x),R.x-ve-Z.x<0&&(ve=R.x-Z.x),R.y+p+Q.y>se.y&&(Fe=R.y+p-se.y+Q.y),R.y-Fe-Z.y<0&&(Fe=R.y-Z.y),(ve||Fe)&&(this.options.keepInView&&(this._autopanning=!0),o.fire("autopanstart").panBy([ve,Fe]))}},_getAnchor:function(){return q(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),Gi=function(o,c){return new ml(o,c)};ft.mergeOptions({closePopupOnClick:!0}),ft.include({openPopup:function(o,c,p){return this._initOverlay(ml,o,c,p).openOn(this),this},closePopup:function(o){return o=arguments.length?o:this._popup,o&&o.close(),this}}),Sr.include({bindPopup:function(o,c){return this._popup=this._initOverlay(ml,this._popup,o,c),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(o){return this._popup&&(this instanceof ds||(this._popup._source=this),this._popup._prepareOpen(o||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return this._popup?this._popup.isOpen():!1},setPopupContent:function(o){return this._popup&&this._popup.setContent(o),this},getPopup:function(){return this._popup},_openPopup:function(o){if(!(!this._popup||!this._map)){wr(o);var c=o.layer||o.target;if(this._popup._source===c&&!(c instanceof As)){this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(o.latlng);return}this._popup._source=c,this.openPopup(o.latlng)}},_movePopup:function(o){this._popup.setLatLng(o.latlng)},_onKeyPress:function(o){o.originalEvent.keyCode===13&&this._openPopup(o)}});var Zi=zr.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(o){zr.prototype.onAdd.call(this,o),this.setOpacity(this.options.opacity),o.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(o){zr.prototype.onRemove.call(this,o),o.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var o=zr.prototype.getEvents.call(this);return this.options.permanent||(o.preclick=this.close),o},_initLayout:function(){var o="leaflet-tooltip",c=o+" "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=et("div",c),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+g(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(o){var c,p,v=this._map,N=this._container,R=v.latLngToContainerPoint(v.getCenter()),B=v.layerPointToContainerPoint(o),Z=this.options.direction,Q=N.offsetWidth,se=N.offsetHeight,ve=q(this.options.offset),Fe=this._getAnchor();Z==="top"?(c=Q/2,p=se):Z==="bottom"?(c=Q/2,p=0):Z==="center"?(c=Q/2,p=se/2):Z==="right"?(c=0,p=se/2):Z==="left"?(c=Q,p=se/2):B.x<R.x?(Z="right",c=0,p=se/2):(Z="left",c=Q+(ve.x+Fe.x)*2,p=se/2),o=o.subtract(q(c,p,!0)).add(ve).add(Fe),Lt(N,"leaflet-tooltip-right"),Lt(N,"leaflet-tooltip-left"),Lt(N,"leaflet-tooltip-top"),Lt(N,"leaflet-tooltip-bottom"),Xe(N,"leaflet-tooltip-"+Z),Gt(N,o)},_updatePosition:function(){var o=this._map.latLngToLayerPoint(this._latlng);this._setPosition(o)},setOpacity:function(o){this.options.opacity=o,this._container&&Rn(this._container,o)},_animateZoom:function(o){var c=this._map._latLngToNewLayerPoint(this._latlng,o.zoom,o.center);this._setPosition(c)},_getAnchor:function(){return q(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}}),ta=function(o,c){return new Zi(o,c)};ft.include({openTooltip:function(o,c,p){return this._initOverlay(Zi,o,c,p).openOn(this),this},closeTooltip:function(o){return o.close(),this}}),Sr.include({bindTooltip:function(o,c){return this._tooltip&&this.isTooltipOpen()&&this.unbindTooltip(),this._tooltip=this._initOverlay(Zi,this._tooltip,o,c),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(o){if(!(!o&&this._tooltipHandlersAdded)){var c=o?"off":"on",p={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?p.add=this._openTooltip:(p.mouseover=this._openTooltip,p.mouseout=this.closeTooltip,p.click=this._openTooltip,this._map?this._addFocusListeners():p.add=this._addFocusListeners),this._tooltip.options.sticky&&(p.mousemove=this._moveTooltip),this[c](p),this._tooltipHandlersAdded=!o}},openTooltip:function(o){return this._tooltip&&(this instanceof ds||(this._tooltip._source=this),this._tooltip._prepareOpen(o)&&(this._tooltip.openOn(this._map),this.getElement?this._setAriaDescribedByOnLayer(this):this.eachLayer&&this.eachLayer(this._setAriaDescribedByOnLayer,this))),this},closeTooltip:function(){if(this._tooltip)return this._tooltip.close()},toggleTooltip:function(){return this._tooltip&&this._tooltip.toggle(this),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(o){return this._tooltip&&this._tooltip.setContent(o),this},getTooltip:function(){return this._tooltip},_addFocusListeners:function(){this.getElement?this._addFocusListenersOnLayer(this):this.eachLayer&&this.eachLayer(this._addFocusListenersOnLayer,this)},_addFocusListenersOnLayer:function(o){var c=typeof o.getElement=="function"&&o.getElement();c&&(Ze(c,"focus",function(){this._tooltip._source=o,this.openTooltip()},this),Ze(c,"blur",this.closeTooltip,this))},_setAriaDescribedByOnLayer:function(o){var c=typeof o.getElement=="function"&&o.getElement();c&&c.setAttribute("aria-describedby",this._tooltip._container.id)},_openTooltip:function(o){if(!(!this._tooltip||!this._map)){if(this._map.dragging&&this._map.dragging.moving()&&!this._openOnceFlag){this._openOnceFlag=!0;var c=this;this._map.once("moveend",function(){c._openOnceFlag=!1,c._openTooltip(o)});return}this._tooltip._source=o.layer||o.target,this.openTooltip(this._tooltip.options.sticky?o.latlng:void 0)}},_moveTooltip:function(o){var c=o.latlng,p,v;this._tooltip.options.sticky&&o.originalEvent&&(p=this._map.mouseEventToContainerPoint(o.originalEvent),v=this._map.containerPointToLayerPoint(p),c=this._map.layerPointToLatLng(v)),this._tooltip.setLatLng(c)}});var pl=ii.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(o){var c=o&&o.tagName==="DIV"?o:document.createElement("div"),p=this.options;if(p.html instanceof Element?(Ga(c),c.appendChild(p.html)):c.innerHTML=p.html!==!1?p.html:"",p.bgPos){var v=q(p.bgPos);c.style.backgroundPosition=-v.x+"px "+-v.y+"px"}return this._setIconStyles(c,"icon"),c},createShadow:function(){return null}});function vu(o){return new pl(o)}ii.Default=Vi;var Ls=Sr.extend({options:{tileSize:256,opacity:1,updateWhenIdle:Ne.mobile,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(o){k(this,o)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView()},beforeAdd:function(o){o._addZoomLimit(this)},onRemove:function(o){this._removeAllTiles(),$t(this._container),o._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(Di(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(as(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(o){return this.options.opacity=o,this._updateOpacity(),this},setZIndex:function(o){return this.options.zIndex=o,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){if(this._map){this._removeAllTiles();var o=this._clampZoom(this._map.getZoom());o!==this._tileZoom&&(this._tileZoom=o,this._updateLevels()),this._update()}return this},getEvents:function(){var o={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=y(this._onMoveEnd,this.options.updateInterval,this)),o.move=this._onMove),this._zoomAnimated&&(o.zoomanim=this._animateZoom),o},createTile:function(){return document.createElement("div")},getTileSize:function(){var o=this.options.tileSize;return o instanceof X?o:new X(o,o)},_updateZIndex:function(){this._container&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(o){for(var c=this.getPane().children,p=-o(-1/0,1/0),v=0,N=c.length,R;v<N;v++)R=c[v].style.zIndex,c[v]!==this._container&&R&&(p=o(p,+R));isFinite(p)&&(this.options.zIndex=p+o(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Ne.ielt9){Rn(this._container,this.options.opacity);var o=+new Date,c=!1,p=!1;for(var v in this._tiles){var N=this._tiles[v];if(!(!N.current||!N.loaded)){var R=Math.min(1,(o-N.loaded)/200);Rn(N.el,R),R<1?c=!0:(N.active?p=!0:this._onOpaqueTile(N),N.active=!0)}}p&&!this._noPrune&&this._pruneTiles(),c&&(Re(this._fadeFrame),this._fadeFrame=be(this._updateOpacity,this))}},_onOpaqueTile:w,_initContainer:function(){this._container||(this._container=et("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var o=this._tileZoom,c=this.options.maxZoom;if(o!==void 0){for(var p in this._levels)p=Number(p),this._levels[p].el.children.length||p===o?(this._levels[p].el.style.zIndex=c-Math.abs(o-p),this._onUpdateLevel(p)):($t(this._levels[p].el),this._removeTilesAtZoom(p),this._onRemoveLevel(p),delete this._levels[p]);var v=this._levels[o],N=this._map;return v||(v=this._levels[o]={},v.el=et("div","leaflet-tile-container leaflet-zoom-animated",this._container),v.el.style.zIndex=c,v.origin=N.project(N.unproject(N.getPixelOrigin()),o).roun
729d(),v.zoom=o,this._setZoomTransform(v,N.getCenter(),N.getZoom()),w(v.el.offsetWidth),this._onCreateLevel(v)),this._level=v,v}},_onUpdateLevel:w,_onRemoveLevel:w,_onCreateLevel:w,_pruneTiles:function(){if(this._map){var o,c,p=this._map.getZoom();if(p>this.options.maxZoom||p<this.options.minZoom){this._removeAllTiles();return}for(o in this._tiles)c=this._tiles[o],c.retain=c.current;for(o in this._tiles)if(c=this._tiles[o],c.current&&!c.active){var v=c.coords;this._retainParent(v.x,v.y,v.z,v.z-5)||this._retainChildren(v.x,v.y,v.z,v.z+2)}for(o in this._tiles)this._tiles[o].retain||this._removeTile(o)}},_removeTilesAtZoom:function(o){for(var c in this._tiles)this._tiles[c].coords.z===o&&this._removeTile(c)},_removeAllTiles:function(){for(var o in this._tiles)this._removeTile(o)},_invalidateAll:function(){for(var o in this._levels)$t(this._levels[o].el),this._onRemoveLevel(Number(o)),delete this._levels[o];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(o,c,p,v){var N=Math.floor(o/2),R=Math.floor(c/2),B=p-1,Z=new X(+N,+R);Z.z=+B;var Q=this._tileCoordsToKey(Z),se=this._tiles[Q];return se&&se.active?(se.retain=!0,!0):(se&&se.loaded&&(se.retain=!0),B>v?this._retainParent(N,R,B,v):!1)},_retainChildren:function(o,c,p,v){for(var N=2*o;N<2*o+2;N++)for(var R=2*c;R<2*c+2;R++){var B=new X(N,R);B.z=p+1;var Z=this._tileCoordsToKey(B),Q=this._tiles[Z];if(Q&&Q.active){Q.retain=!0;continue}else Q&&Q.loaded&&(Q.retain=!0);p+1<v&&this._retainChildren(N,R,p+1,v)}},_resetView:function(o){var c=o&&(o.pinch||o.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),c,c)},_animateZoom:function(o){this._setView(o.center,o.zoom,!0,o.noUpdate)},_clampZoom:function(o){var c=this.options;return c.minNativeZoom!==void 0&&o<c.minNativeZoom?c.minNativeZoom:c.maxNativeZoom!==void 0&&c.maxNativeZoom<o?c.maxNativeZoom:o},_setView:function(o,c,p,v){var N=Math.round(c);this.options.maxZoom!==void 0&&N>this.options.maxZoom||this.options.minZoom!==void 0&&N<this.options.minZoom?N=void 0:N=this._clampZoom(N);var R=this.options.updateWhenZooming&&N!==this._tileZoom;(!v||R)&&(this._tileZoom=N,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),N!==void 0&&this._update(o),p||this._pruneTiles(),this._noPrune=!!p),this._setZoomTransforms(o,c)},_setZoomTransforms:function(o,c){for(var p in this._levels)this._setZoomTransform(this._levels[p],o,c)},_setZoomTransform:function(o,c,p){var v=this._map.getZoomScale(p,o.zoom),N=o.origin.multiplyBy(v).subtract(this._map._getNewPixelOrigin(c,p)).round();Ne.any3d?vr(o.el,N,v):Gt(o.el,N)},_resetGrid:function(){var o=this._map,c=o.options.crs,p=this._tileSize=this.getTileSize(),v=this._tileZoom,N=this._map.getPixelWorldBounds(this._tileZoom);N&&(this._globalTileRange=this._pxBoundsToTileRange(N)),this._wrapX=c.wrapLng&&!this.options.noWrap&&[Math.floor(o.project([0,c.wrapLng[0]],v).x/p.x),Math.ceil(o.project([0,c.wrapLng[1]],v).x/p.y)],this._wrapY=c.wrapLat&&!this.options.noWrap&&[Math.floor(o.project([c.wrapLat[0],0],v).y/p.x),Math.ceil(o.project([c.wrapLat[1],0],v).y/p.y)]},_onMoveEnd:function(){!this._map||this._map._animatingZoom||this._update()},_getTiledPixelBounds:function(o){var c=this._map,p=c._animatingZoom?Math.max(c._animateToZoom,c.getZoom()):c.getZoom(),v=c.getZoomScale(p,this._tileZoom),N=c.project(o,this._tileZoom).floor(),R=c.getSize().divideBy(v*2);return new O(N.subtract(R),N.add(R))},_update:function(o){var c=this._map;if(c){var p=this._clampZoom(c.getZoom());if(o===void 0&&(o=c.getCenter()),this._tileZoom!==void 0){var v=this._getTiledPixelBounds(o),N=this._pxBoundsToTileRange(v),R=N.getCenter(),B=[],Z=this.options.keepBuffer,Q=new O(N.getBottomLeft().subtract([Z,-Z]),N.getTopRight().add([Z,-Z]));if(!(isFinite(N.min.x)&&isFinite(N.min.y)&&isFinite(N.max.x)&&isFinite(N.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var se in this._tiles){var ve=this._tiles[se].coords;(ve.z!==this._tileZoom||!Q.contains(new X(ve.x,ve.y)))&&(this._tiles[se].current=!1)}if(Math.abs(p-this._tileZoom)>1){this._setView(o,p);return}for(var Fe=N.min.y;Fe<=N.max.y;Fe++)for(var st=N.min.x;st<=N.max.x;st++){var pn=new X(st,Fe);if(pn.z=this._tileZoom,!!this._isValidTile(pn)){var an=this._tiles[this._tileCoordsToKey(pn)];an?an.current=!0:B.push(pn)}}if(B.sort(function(Mn,eo){return Mn.distanceTo(R)-eo.distanceTo(R)}),B.length!==0){this._loading||(this._loading=!0,this.fire("loading"));var Yn=document.createDocumentFragment();for(st=0;st<B.length;st++)this._addTile(B[st],Yn);this._level.el.appendChild(Yn)}}}},_isValidTile:function(o){var c=this._map.options.crs;if(!c.infinite){var p=this._globalTileRange;if(!c.wrapLng&&(o.x<p.min.x||o.x>p.max.x)||!c.wrapLat&&(o.y<p.min.y||o.y>p.max.y))return!1}if(!this.options.bounds)return!0;var v=this._tileCoordsToBounds(o);return ge(this.options.bounds).overlaps(v)},_keyToBounds:function(o){return this._tileCoordsToBounds(this._keyToTileCoords(o))},_tileCoordsToNwSe:function(o){var c=this._map,p=this.getTileSize(),v=o.scaleBy(p),N=v.add(p),R=c.unproject(v,o.z),B=c.unproject(N,o.z);return[R,B]},_tileCoordsToBounds:function(o){var c=this._tileCoordsToNwSe(o),p=new ye(c[0],c[1]);return this.options.noWrap||(p=this._map.wrapLatLngBounds(p)),p}
vendor: 6,885 bytes, line 729
729,_tileCoordsToKey:function(o){return o.x+":"+o.y+":"+o.z},_keyToTileCoords:function(o){var c=o.split(":"),p=new X(+c[0],+c[1]);return p.z=+c[2],p},_removeTile:function(o){var c=this._tiles[o];c&&($t(c.el),delete this._tiles[o],this.fire("tileunload",{tile:c.el,coords:this._keyToTileCoords(o)}))},_initTile:function(o){Xe(o,"leaflet-tile");var c=this.getTileSize();o.style.width=c.x+"px",o.style.height=c.y+"px",o.onselectstart=w,o.onmousemove=w,Ne.ielt9&&this.options.opacity<1&&Rn(o,this.options.opacity)},_addTile:function(o,c){var p=this._getTilePos(o),v=this._tileCoordsToKey(o),N=this.createTile(this._wrapCoords(o),h(this._tileReady,this,o));this._initTile(N),this.createTile.length<2&&be(h(this._tileReady,this,o,null,N)),Gt(N,p),this._tiles[v]={el:N,coords:o,current:!0},c.appendChild(N),this.fire("tileloadstart",{tile:N,coords:o})},_tileReady:function(o,c,p){c&&this.fire("tileerror",{error:c,tile:p,coords:o});var v=this._tileCoordsToKey(o);p=this._tiles[v],p&&(p.loaded=+new Date,this._map._fadeAnimated?(Rn(p.el,0),Re(this._fadeFrame),this._fadeFrame=be(this._updateOpacity,this)):(p.active=!0,this._pruneTiles()),c||(Xe(p.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:p.el,coords:o})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Ne.ielt9||!this._map._fadeAnimated?be(this._pruneTiles,this):setTimeout(h(this._pruneTiles,this),250)))},_getTilePos:function(o){return o.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(o){var c=new X(this._wrapX?x(o.x,this._wrapX):o.x,this._wrapY?x(o.y,this._wrapY):o.y);return c.z=o.z,c},_pxBoundsToTileRange:function(o){var c=this.getTileSize();return new O(o.min.unscaleBy(c).floor(),o.max.unscaleBy(c).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var o in this._tiles)if(!this._tiles[o].loaded)return!1;return!0}});function Ki(o){return new Ls(o)}var Ms=Ls.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(o,c){this._url=o,c=k(this,c),c.detectRetina&&Ne.retina&&c.maxZoom>0?(c.tileSize=Math.floor(c.tileSize/2),c.zoomReverse?(c.zoomOffset--,c.minZoom=Math.min(c.maxZoom,c.minZoom+1)):(c.zoomOffset++,c.maxZoom=Math.max(c.minZoom,c.maxZoom-1)),c.minZoom=Math.max(0,c.minZoom)):c.zoomReverse?c.minZoom=Math.min(c.maxZoom,c.minZoom):c.maxZoom=Math.max(c.minZoom,c.maxZoom),typeof c.subdomains=="string"&&(c.subdomains=c.subdomains.split("")),this.on("tileunload",this._onTileRemove)},setUrl:function(o,c){return this._url===o&&c===void 0&&(c=!0),this._url=o,c||this.redraw(),this},createTile:function(o,c){var p=document.createElement("img");return Ze(p,"load",h(this._tileOnLoad,this,c,p)),Ze(p,"error",h(this._tileOnError,this,c,p)),(this.options.crossOrigin||this.options.crossOrigin==="")&&(p.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),typeof this.options.referrerPolicy=="string"&&(p.referrerPolicy=this.options.referrerPolicy),p.alt="",p.src=this.getTileUrl(o),p},getTileUrl:function(o){var c={r:Ne.retina?"@2x":"",s:this._getSubdomain(o),x:o.x,y:o.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var p=this._globalTileRange.max.y-o.y;this.options.tms&&(c.y=p),c["-y"]=p}return $(this._url,l(c,this.options))},_tileOnLoad:function(o,c){Ne.ielt9?setTimeout(h(o,this,null,c),0):o(null,c)},_tileOnError:function(o,c,p){var v=this.options.errorTileUrl;v&&c.getAttribute("src")!==v&&(c.src=v),o(p,c)},_onTileRemove:function(o){o.tile.onload=null},_getZoomForUrl:function(){var o=this._tileZoom,c=this.options.maxZoom,p=this.options.zoomReverse,v=this.options.zoomOffset;return p&&(o=c-o),o+v},_getSubdomain:function(o){var c=Math.abs(o.x+o.y)%this.options.subdomains.length;return this.options.subdomains[c]},_abortLoading:function(){var o,c;for(o in this._tiles)if(this._tiles[o].coords.z!==this._tileZoom&&(c=this._tiles[o].el,c.onload=w,c.onerror=w,!c.complete)){c.src=F;var p=this._tiles[o].coords;$t(c),delete this._tiles[o],this.fire("tileabort",{tile:c,coords:p})}},_removeTile:function(o){var c=this._tiles[o];if(c)return c.el.setAttribute("src",F),Ls.prototype._removeTile.call(this,o)},_tileReady:function(o,c,p){if(!(!this._map||p&&p.getAttribute("src")===F))return Ls.prototype._tileReady.call(this,o,c,p)}});function Lc(o,c){return new Ms(o,c)}var na=Ms.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(o,c){this._url=o;var p=l({},this.defaultWmsParams);for(var v in c)v in this.options||(p[v]=c[v]);c=k(this,c);var N=c.detectRetina&&Ne.retina?2:1,R=this.getTileSize();p.width=R.x*N,p.height=R.y*N,this.wmsParams=p},onAdd:function(o){this._crs=this.options.crs||o.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var c=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[c]=this._crs.code,Ms.prototype.onAdd.call(this,o)},getTileUrl:function(o){var c=this._tileCoordsToNwSe(o),p=this._crs,v=te(p.project(c[0]),p.project(c[1])),N=v.min,R=v.max,B=(this._wmsVersion>=1.3&&this._crs===hu?[N.y,N.x,R.y,R.x]:[N.x,N.y,R.x,R.y]).join(","),Z=Ms.prototype.getTileUrl.call(this,o);return Z+A(this.wmsParams,Z,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+B},setParams:function(o,c){return l(this.wmsParams,o),c||this.redraw(),this}});function bu(o,c){return new na(o,c)}Ms.WMS=na,Lc.wms=bu;var Wr=Sr.extend({options:{padding:.1},initialize:function(o){k(this,o),g(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),Xe(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var o={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(o.zoomanim=this._onAnimZoom),o},_onAnimZoom:function(o){this._updateTransform(o.center,o.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(o,c){var p=this._map.getZoomScale(c,this._zoom),v=this._map.getSize().multiplyBy(.5+this.options.padding),N=this._map.project(this._center,c),R=v.multiplyBy(-p).add(N).subtract(this._map._getNewPixelOrigin(o,c));Ne.any3d?vr(this._container,R,p):Gt(this._container,R)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var o in this._layers)this._layers[o]._reset()},_onZoomEnd:function(){for(var o in this._layers)this._layers[o]._project()},_updatePaths:function(){for(var o in this._layers)this._layers[o]._update()},_update:function(){var o=this.options.padding,c=this._map.getSize(),p=this._map.containerPointToLayerPoint(c.multiplyBy(-o)).round();
vendor: 3,979 bytes, line 729
729this._bounds=new O(p,p.add(c.multiplyBy(1+o*2)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),Mc=Wr.extend({options:{tolerance:0},getEvents:function(){var o=Wr.prototype.getEvents.call(this);return o.viewprereset=this._onViewPreReset,o},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Wr.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var o=this._container=document.createElement("canvas");Ze(o,"mousemove",this._onMouseMove,this),Ze(o,"click dblclick mousedown mouseup contextmenu",this._onClick,this),Ze(o,"mouseout",this._handleMouseOut,this),o._leaflet_disable_events=!0,this._ctx=o.getContext("2d")},_destroyContainer:function(){Re(this._redrawRequest),delete this._ctx,$t(this._container),Ct(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){var o;this._redrawBounds=null;for(var c in this._layers)o=this._layers[c],o._update();this._redraw()}},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Wr.prototype._update.call(this);var o=this._bounds,c=this._container,p=o.getSize(),v=Ne.retina?2:1;Gt(c,o.min),c.width=v*p.x,c.height=v*p.y,c.style.width=p.x+"px",c.style.height=p.y+"px",Ne.retina&&this._ctx.scale(2,2),this._ctx.translate(-o.min.x,-o.min.y),this.fire("update")}},_reset:function(){Wr.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(o){this._updateDashArray(o),this._layers[g(o)]=o;var c=o._order={layer:o,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=c),this._drawLast=c,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(o){this._requestRedraw(o)},_removePath:function(o){var c=o._order,p=c.next,v=c.prev;p?p.prev=v:this._drawLast=v,v?v.next=p:this._drawFirst=p,delete o._order,delete this._layers[g(o)],this._requestRedraw(o)},_updatePath:function(o){this._extendRedrawBounds(o),o._project(),o._update(),this._requestRedraw(o)},_updateStyle:function(o){this._updateDashArray(o),this._requestRedraw(o)},_updateDashArray:function(o){if(typeof o.options.dashArray=="string"){var c=o.options.dashArray.split(/[, ]+/),p=[],v,N;for(N=0;N<c.length;N++){if(v=Number(c[N]),isNaN(v))return;p.push(v)}o.options._dashArray=p}else o.options._dashArray=o.options.dashArray},_requestRedraw:function(o){this._map&&(this._extendRedrawBounds(o),this._redrawRequest=this._redrawRequest||be(this._redraw,this))},_extendRedrawBounds:function(o){if(o._pxBounds){var c=(o.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new O,this._redrawBounds.extend(o._pxBounds.min.subtract([c,c])),this._redrawBounds.extend(o._pxBounds.max.add([c,c]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var o=this._redrawBounds;if(o){var c=o.getSize();this._ctx.clearRect(o.min.x,o.min.y,c.x,c.y)}else this._ctx.save(),this._ctx.setTransform(1,0,0,1,0,0),this._ctx.clearRect(0,0,this._container.width,this._container.height),this._ctx.restore()},_draw:function(){var o,c=this._redrawBounds;if(this._ctx.save(),c){var p=c.getSize();this._ctx.beginPath(),this._ctx.rect(c.min.x,c.min.y,p.x,p.y),this._ctx.clip()}this._drawing=!0;for(var v=this._drawFirst;v;v=v.next)o=v.layer,(!c||o._pxBounds&&o._pxBounds.intersects(c))&&o._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(o,c){if(this._drawing){var p,v,N,R,B=o._parts,Z=B.length,Q=this._ctx;if(Z){for(Q.beginPath(),p=0;p<Z;p++){for(v=0,N=B[p].length;v<N;v++)R=B[p][v],Q[v?"lineTo":"moveTo"](R.x,R.y);c&&Q.closePath()}this._fillStroke(Q,o)}}},_updateCircle:function(o){if(!(!this._drawing||o._empty())){var c=o._point,p=this._ctx,v=Math.max(Math.round(o._radius),1),N=(Math.max(Math.round(o._radiusY),1)||v)/v;N!==1&&(p.save(),p.scale(1,N)),p.beginPath(),p.arc(c.x,c.y/N,v,0,Math.PI*2,!1),N!==1&&p.restore(
vendor: 6,424 bytes, line 729
729),this._fillStroke(p,o)}},_fillStroke:function(o,c){var p=c.options;p.fill&&(o.globalAlpha=p.fillOpacity,o.fillStyle=p.fillColor||p.color,o.fill(p.fillRule||"evenodd")),p.stroke&&p.weight!==0&&(o.setLineDash&&o.setLineDash(c.options&&c.options._dashArray||[]),o.globalAlpha=p.opacity,o.lineWidth=p.weight,o.strokeStyle=p.color,o.lineCap=p.lineCap,o.lineJoin=p.lineJoin,o.stroke())},_onClick:function(o){for(var c=this._map.mouseEventToLayerPoint(o),p,v,N=this._drawFirst;N;N=N.next)p=N.layer,p.options.interactive&&p._containsPoint(c)&&(!(o.type==="click"||o.type==="preclick")||!this._map._draggableMoved(p))&&(v=p);this._fireEvent(v?[v]:!1,o)},_onMouseMove:function(o){if(!(!this._map||this._map.dragging.moving()||this._map._animatingZoom)){var c=this._map.mouseEventToLayerPoint(o);this._handleMouseHover(o,c)}},_handleMouseOut:function(o){var c=this._hoveredLayer;c&&(Lt(this._container,"leaflet-interactive"),this._fireEvent([c],o,"mouseout"),this._hoveredLayer=null,this._mouseHoverThrottled=!1)},_handleMouseHover:function(o,c){if(!this._mouseHoverThrottled){for(var p,v,N=this._drawFirst;N;N=N.next)p=N.layer,p.options.interactive&&p._containsPoint(c)&&(v=p);v!==this._hoveredLayer&&(this._handleMouseOut(o),v&&(Xe(this._container,"leaflet-interactive"),this._fireEvent([v],o,"mouseover"),this._hoveredLayer=v)),this._fireEvent(this._hoveredLayer?[this._hoveredLayer]:!1,o),this._mouseHoverThrottled=!0,setTimeout(h(function(){this._mouseHoverThrottled=!1},this),32)}},_fireEvent:function(o,c,p){this._map._fireDOMEvent(c,p||c.type,o)},_bringToFront:function(o){var c=o._order;if(c){var p=c.next,v=c.prev;if(p)p.prev=v;else return;v?v.next=p:p&&(this._drawFirst=p),c.prev=this._drawLast,this._drawLast.next=c,c.next=null,this._drawLast=c,this._requestRedraw(o)}},_bringToBack:function(o){var c=o._order;if(c){var p=c.next,v=c.prev;if(v)v.next=p;else return;p?p.prev=v:v&&(this._drawLast=v),c.prev=null,c.next=this._drawFirst,this._drawFirst.prev=c,this._drawFirst=c,this._requestRedraw(o)}}});function Ic(o){return Ne.canvas?new Mc(o):null}var Yi=(function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(o){return document.createElement("<lvml:"+o+' class="lvml">')}}catch{}return function(o){return document.createElement("<"+o+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}})(),wu={_initContainer:function(){this._container=et("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Wr.prototype._update.call(this),this.fire("update"))},_initPath:function(o){var c=o._container=Yi("shape");Xe(c,"leaflet-vml-shape "+(this.options.className||"")),c.coordsize="1 1",o._path=Yi("path"),c.appendChild(o._path),this._updateStyle(o),this._layers[g(o)]=o},_addPath:function(o){var c=o._container;this._container.appendChild(c),o.options.interactive&&o.addInteractiveTarget(c)},_removePath:function(o){var c=o._container;$t(c),o.removeInteractiveTarget(c),delete this._layers[g(o)]},_updateStyle:function(o){var c=o._stroke,p=o._fill,v=o.options,N=o._container;N.stroked=!!v.stroke,N.filled=!!v.fill,v.stroke?(c||(c=o._stroke=Yi("stroke")),N.appendChild(c),c.weight=v.weight+"px",c.color=v.color,c.opacity=v.opacity,v.dashArray?c.dashStyle=I(v.dashArray)?v.dashArray.join(" "):v.dashArray.replace(/( *, *)/g," "):c.dashStyle="",c.endcap=v.lineCap.replace("butt","flat"),c.joinstyle=v.lineJoin):c&&(N.removeChild(c),o._stroke=null),v.fill?(p||(p=o._fill=Yi("fill")),N.appendChild(p),p.color=v.fillColor||v.color,p.opacity=v.fillOpacity):p&&(N.removeChild(p),o._fill=null)},_updateCircle:function(o){var c=o._point.round(),p=Math.round(o._radius),v=Math.round(o._radiusY||p);this._setPath(o,o._empty()?"M0 0":"AL "+c.x+","+c.y+" "+p+","+v+" 0,"+65535*360)},_setPath:function(o,c){o._path.v=c},_bringToFront:function(o){Di(o._container)},_bringToBack:function(o){as(o._container)}},jr=Ne.vml?Yi:Bt,oi=Wr.extend({_initContainer:function(){this._container=jr("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=jr("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){$t(this._container),Ct(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Wr.prototype._update.call(this);var o=this._bounds,c=o.getSize(),p=this._container;(!this._svgSize||!this._svgSize.equals(c))&&(this._svgSize=c,p.setAttribute("width",c.x),p.setAttribute("height",c.y)),Gt(p,o.min),p.setAttribute("viewBox",[o.min.x,o.min.y,c.x,c.y].join(" ")),this.fire("update")}},_initPath:function(o){var c=o._path=jr("path");o.options.className&&Xe(c,o.options.className),o.options.interactive&&Xe(c,"leaflet-interactive"),this._updateStyle(o),this._layers[g(o)]=o},_addPath:function(o){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(o._path),o.addInteractiveTarget(o._path)},_removePath:function(o){$t(o._path),o.removeInteractiveTarget(o._path),delete this._layers[g(o)]},_updatePath:function(o){o._project(),o._update()},_updateStyle:function(o){var c=o._path,p=o.options;c&&(p.stroke?(c.setAttribute("stroke",p.color),c.setAttribute("stroke-opacity",p.opacity),c.setAttribute("stroke-width",p.weight),c.setAttribute("stroke-linecap",p.lineCap),c.setAttribute("stroke-linejoin",p.lineJoin),p.dashArray?c.setAttribute("stroke-dasharray",p.dashArray):c.removeAttribute("stroke-dasharray"),p.dashOffset?c.setAttribute("stroke-dashoffset",p.dashOffset):c.removeAttribute("stroke-dashoffset")):c.setAttribute("stroke","none"),p.fill?(c.setAttribute("fill",p.fillColor||p.color),c.setAttribute("fill-opacity",p.fillOpacity),c.setAttribute("fill-rule",p.fillRule||"evenodd")):c.setAttribute("fill","none"))},_updatePoly:function(o,c){this._setPath(o,Be(o._parts,c))},_updateCircle:function(o){var c=o._point,p=Math.max(Math.round(o._radius),1),v=Math.max(Math.round(o._radiusY),1)||p,N="a"+p+","+v+" 0 1,0 ",R=o._empty()?"M0 0":"M"+(c.x-p)+","+c.y+N+p*2+",0 "+N+-p*2+",0 ";this._setPath(o,R)},_setPath:function(o,c){o._path.setAttribute("d",c)},_bringToFront:function(o){Di(o._path)},_bringToBack:function(o){as(o._path)}});Ne.vml&&oi.include(wu);function fl(o){return Ne.svg||Ne.vml?new oi(o):null}ft.include({getRenderer:function(o){var c=o.options.renderer||this._getPaneRenderer(o.options.pane)||this.options.renderer||this._renderer;return c||(c=this._renderer=this._createRenderer()),this.hasLayer(c)||this.addLayer(c),c}
729,_getPaneRenderer:function(o){if(o==="overlayPane"||o===void 0)return!1;var c=this._paneRenderers[o];return c===void 0&&(c=this._createRenderer({pane:o}),this._paneRenderers[o]=c),c},_createRenderer:function(o){return this.options.preferCanvas&&Ic(o)||fl(o)}});var _u=hs.extend({initialize:function(o,c){hs.prototype.initialize.call(this,this._boundsToLatLngs(o),c)},setBounds:function(o){return this.setLatLngs(this._boundsToLatLngs(o))},_boundsToLatLngs:function(o){return o=ge(o),[o.getSouthWest(),o.getNorthWest(),o.getNorthEast(),o.getSouthEast()]}});function Jm(o,c){return new _u(o,c)}oi.create=jr,oi.pointsToPath=Be,Br.geometryToLayer=qi,Br.coordsToLatLng=cl,Br.coordsToLatLngs=ea,Br.latLngToCoords=dl,Br.latLngsToCoords=ul,Br.getFeature=Ji,Br.asFeature=hl,ft.mergeOptions({boxZoom:!0});var Qi=sr.extend({initialize:function(o){this._map=o,this._container=o._container,this._pane=o._panes.overlayPane,this._resetStateTimeout=0,o.on("unload",this._destroy,this)},addHooks:function(){Ze(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Ct(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){$t(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){this._resetStateTimeout!==0&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(o){if(!o.shiftKey||o.which!==1&&o.button!==1)return!1;this._clearDeferredResetState(),this._resetState(),gt(),Ya(),this._startPoint=this._map.mouseEventToContainerPoint(o),Ze(document,{contextmenu:wr,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(o){this._moved||(this._moved=!0,this._box=et("div","leaflet-zoom-box",this._container),Xe(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(o);var c=new O(this._point,this._startPoint),p=c.getSize();Gt(this._box,c.min),this._box.style.width=p.x+"px",this._box.style.height=p.y+"px"},_finish:function(){this._moved&&($t(this._box),Lt(this._container,"leaflet-crosshair")),Bi(),Qa(),Ct(document,{contextmenu:wr,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(o){if(!(o.which!==1&&o.button!==1)&&(this._finish(),!!this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(h(this._resetState,this),0);var c=new ye(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(c).fire("boxzoomend",{boxZoomBounds:c})}},_onKeyDown:function(o){o.keyCode===27&&(this._finish(),this._clearDeferredResetState(),this._resetState())}});ft.addInitHook("addHandler","boxZoom",Qi),ft.mergeOptions({doubleClickZoom:!0});var Su=sr.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(o){var c=this._map,p=c.getZoom(),v=c.options.zoomDelta,N=o.originalEvent.shiftKey?p-v:p+v;c.options.doubleClickZoom==="center"?c.setZoom(N):c.setZoomAround(o.containerPoint,N)}});ft.addInitHook("addHandler","doubleClickZoom",Su),ft.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var $c=sr.extend({addHooks:function(){if(!this._draggable){var o=this._map;this._draggable=new _r(o._mapPane,o._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),o.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),o.on("zoomend",this._onZoomEnd,this),o.whenReady(this._onZoomEnd,this))}Xe(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){Lt(this._map._container,"leaflet-grab"),Lt(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved}
vendor: 4,218 bytes, line 729
729,moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var o=this._map;if(o._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var c=ge(this._map.options.maxBounds);this._offsetLimit=te(this._map.latLngToContainerPoint(c.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(c.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;o.fire("movestart").fire("dragstart"),o.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(o){if(this._map.options.inertia){var c=this._lastTime=+new Date,p=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(p),this._times.push(c),this._prunePositions(c)}this._map.fire("move",o).fire("drag",o)},_prunePositions:function(o){for(;this._positions.length>1&&o-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var o=this._map.getSize().divideBy(2),c=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=c.subtract(o).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(o,c){return o-(o-c)*this._viscosity},_onPreDragLimit:function(){if(!(!this._viscosity||!this._offsetLimit)){var o=this._draggable._newPos.subtract(this._draggable._startPos),c=this._offsetLimit;o.x<c.min.x&&(o.x=this._viscousLimit(o.x,c.min.x)),o.y<c.min.y&&(o.y=this._viscousLimit(o.y,c.min.y)),o.x>c.max.x&&(o.x=this._viscousLimit(o.x,c.max.x)),o.y>c.max.y&&(o.y=this._viscousLimit(o.y,c.max.y)),this._draggable._newPos=this._draggable._startPos.add(o)}},_onPreDragWrap:function(){var o=this._worldWidth,c=Math.round(o/2),p=this._initialWorldOffset,v=this._draggable._newPos.x,N=(v-c+p)%o+c-p,R=(v+c+p)%o-c-p,B=Math.abs(N+p)<Math.abs(R+p)?N:R;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=B},_onDragEnd:function(o){var c=this._map,p=c.options,v=!p.inertia||o.noInertia||this._times.length<2;if(c.fire("dragend",o),v)c.fire("moveend");else{this._prunePositions(+new Date);var N=this._lastPos.subtract(this._positions[0]),R=(this._lastTime-this._times[0])/1e3,B=p.easeLinearity,Z=N.multiplyBy(B/R),Q=Z.distanceTo([0,0]),se=Math.min(p.inertiaMaxSpeed,Q),ve=Z.multiplyBy(se/Q),Fe=se/(p.inertiaDeceleration*B),st=ve.multiplyBy(-Fe/2).round();!st.x&&!st.y?c.fire("moveend"):(st=c._limitOffset(st,c.options.maxBounds),be(function(){c.panBy(st,{duration:Fe,easeLinearity:B,noMoveStart:!0,animate:!0})}))}}});ft.addInitHook("addHandler","dragging",$c),ft.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Dc=sr.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(o){this._map=o,this._setPanDelta(o.options.keyboardPanDelta),this._setZoomDelta(o.options.zoomDelta)},addHooks:function(){var o=this._map._container;o.tabIndex<=0&&(o.tabIndex="0"),Ze(o,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),Ct(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var o=document.body,c=document.documentElement,p=o.scrollTop||c.scrollTop,v=o.scrollLeft||c.scrollLeft;this._map._container.focus(),window.scrollTo(v,p)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(o){var c=this._panKeys={},p=this.keyCodes,v,N;for(v=0,N=p.left.length;v<N;v++)c[p.left[v]]=[-1*o,0];for(v=0,N=p.right.length;v<N;v++)c[p.right[v]]=[o,0];for(v=0,N=p.down.length;v<N;v++)c[p.down[v]]=[0,o];for(v=0,N=p.up.length;v<N;v++)c[p.up[v]]=[0,-1*o]},_setZoomDelta:function(o){var c=this._zoomKeys={},p=this.keyCodes,v,N;for(v=0,N=p.zoomIn.length;v<N;v++)c[p.zoomIn[v]]=o;for(v=0,N=p.zoomOut.length;v<N;v++)c[p.zoomOut[v]]=-o},_addHooks:function(){Ze(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){Ct(document,"keydown",this._onKeyDown,this)}
729,_onKeyDown:function(o){if(!(o.altKey||o.ctrlKey||o.metaKey)){var c=o.keyCode,p=this._map,v;if(c in this._panKeys){if(!p._panAnim||!p._panAnim._inProgress)if(v=this._panKeys[c],o.shiftKey&&(v=q(v).multiplyBy(3)),p.options.maxBounds&&(v=p._limitOffset(q(v),p.options.maxBounds)),p.options.worldCopyJump){var N=p.wrapLatLng(p.unproject(p.project(p.getCenter()).add(v)));p.panTo(N)}else p.panBy(v)}else if(c in this._zoomKeys)p.setZoom(p.getZoom()+(o.shiftKey?3:1)*this._zoomKeys[c]);else if(c===27&&p._popup&&p._popup.options.closeOnEscapeKey)p.closePopup();else return;wr(o)}}});ft.addInitHook("addHandler","keyboard",Dc),ft.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var Pt=sr.extend({addHooks:function(){Ze(this._map._container,"wheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){Ct(this._map._container,"wheel",this._onWheelScroll,this)},_onWheelScroll:function(o){var c=su(o),p=this._map.options.wheelDebounceTime;this._delta+=c,this._lastMousePos=this._map.mouseEventToContainerPoint(o),this._startTime||(this._startTime=+new Date);var v=Math.max(p-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(h(this._performZoom,this),v),wr(o)},_performZoom:function(){var o=this._map,c=o.getZoom(),p=this._map.options.zoomSnap||0;o._stop();var v=this._delta/(this._map.options.wheelPxPerZoomLevel*4),N=4*Math.log(2/(1+Math.exp(-Math.abs(v))))/Math.LN2,R=p?Math.ceil(N/p)*p:N,B=o._limitZoom(c+(this._delta>0?R:-R))-c;this._delta=0,this._startTime=null,B&&(o.options.scrollWheelZoom==="center"?o.setZoom(c+B):o.setZoomAround(this._lastMousePos,c+B))}});ft.addInitHook("addHandler","scrollWheelZoom",Pt);var Oc=600;ft.mergeOptions({tapHold:Ne.touchNative&&Ne.safari&&Ne.mobile,tapTolerance:15});var ra=sr.extend({addHooks:function(){Ze(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Ct(this._map._container,"touchstart",this._onDown,this)},_onDown:function(o){if(clearTimeout(this._holdTimeout),o.touches.length===1){var c=o.touches[0];this._startPos=this._newPos=new X(c.clientX,c.clientY),this._holdTimeout=setTimeout(h(function(){this._cancel(),this._isTapValid()&&(Ze(document,"touchend",Ut),Ze(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",c))},this),Oc),Ze(document,"touchend touchcancel contextmenu",this._cancel,this),Ze(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function o(){Ct(document,"touchend",Ut),Ct(document,"touchend touchcancel",o)},_cancel:function(){clearTimeout(this._holdTimeout),Ct(document,"touchend touchcancel contextmenu",this._cancel,this),Ct(document,"touchmove",this._onMove,this)},_onMove:function(o){var c=o.touches[0];this._newPos=new X(c.clientX,c.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(o,c){var p=new MouseEvent(o,{bubbles:!0,cancelable:!0,view:window,screenX:c.screenX,screenY:c.screenY,clientX:c.clientX,clientY:c.clientY});p._simulated=!0,c.target.dispatchEvent(p)}});ft.addInitHook("addHandler","tapHold",ra),ft.mergeOptions({touchZoom:Ne.touch,bounceAtZoomLimits:!0});var Xi=sr.extend({addHooks:function(){Xe(this._map._container,"leaflet-touch-zoom"),Ze(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){Lt(this._map._container,"leaflet-touch-zoom"),Ct(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(o){var c=this._map;if(!(!o.touches||o.touches.length!==2||c._animatingZoom||this._zooming)){var p=c.mouseEventToContainerPoint(o.touches[0]),v=c.mouseEventToContainerPoint(o.touches[1]);this._centerPoint=c.getSize()._divideBy(2),this._startLatLng=c.containerPointToLatLng(this._centerPoint),c.options.touchZoom!=="center"&&(this._pinchStartLatLng=c.containerPointToLatLng(p.add(v)._divideBy(2))),this._startDist=p.distanceTo(v),this._startZoom=c.getZoom(),this._moved=!1,this._zooming=!0,c._stop(),Ze(document,"touchmove",this._onTouchMove,this),Ze(document,"touchend touchcancel",this._onTouchEnd,this),Ut(o)}}
729,_onTouchMove:function(o){if(!(!o.touches||o.touches.length!==2||!this._zooming)){var c=this._map,p=c.mouseEventToContainerPoint(o.touches[0]),v=c.mouseEventToContainerPoint(o.touches[1]),N=p.distanceTo(v)/this._startDist;if(this._zoom=c.getScaleZoom(N,this._startZoom),!c.options.bounceAtZoomLimits&&(this._zoom<c.getMinZoom()&&N<1||this._zoom>c.getMaxZoom()&&N>1)&&(this._zoom=c._limitZoom(this._zoom)),c.options.touchZoom==="center"){if(this._center=this._startLatLng,N===1)return}else{var R=p._add(v)._divideBy(2)._subtract(this._centerPoint);if(N===1&&R.x===0&&R.y===0)return;this._center=c.unproject(c.project(this._pinchStartLatLng,this._zoom).subtract(R),this._zoom)}this._moved||(c._moveStart(!0,!1),this._moved=!0),Re(this._animRequest);var B=h(c._move,c,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=be(B,this,!0),Ut(o)}},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=!1;return}this._zooming=!1,Re(this._animRequest),Ct(document,"touchmove",this._onTouchMove,this),Ct(document,"touchend touchcancel",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))}});ft.addInitHook("addHandler","touchZoom",Xi),ft.BoxZoom=Qi,ft.DoubleClickZoom=Su,ft.Drag=$c,ft.Keyboard=Dc,ft.ScrollWheelZoom=Pt,ft.TapHold=ra,ft.TouchZoom=Xi,n.Bounds=O,n.Browser=Ne,n.CRS=$e,n.Canvas=Mc,n.Circle=al,n.CircleMarker=ol,n.Class=Ie,n.Control=Zn,n.DivIcon=pl,n.DivOverlay=zr,n.DomEvent=tl,n.DomUtil=Go,n.Draggable=_r,n.Evented=je,n.FeatureGroup=ds,n.GeoJSON=Br,n.GridLayer=Ls,n.Handler=sr,n.Icon=ii,n.ImageOverlay=Rs,n.LatLng=pe,n.LatLngBounds=ye,n.Layer=Sr,n.LayerGroup=Es,n.LineUtil=uu,n.Map=ft,n.Marker=us,n.Mixin=wc,n.Path=As,n.Point=X,n.PolyUtil=$m,n.Polygon=hs,n.Polyline=Kn,n.Popup=ml,n.PosAnimation=nl,n.Projection=zm,n.Rectangle=_u,n.Renderer=Wr,n.SVG=oi,n.SVGOverlay=Ac,n.TileLayer=Ms,n.Tooltip=Zi,n.Transformation=It,n.Util=Je,n.VideoOverlay=Ec,n.bind=h,n.bounds=te,n.canvas=Ic,n.circle=Xo,n.circleMarker=fu,n.control=Ts,n.divIcon=vu,n.extend=l,n.featureGroup=mu,n.geoJSON=gu,n.geoJson=Nr,n.gridLayer=Ki,n.icon=pu,n.imageOverlay=yu,n.latLng=re,n.latLngBounds=ge,n.layerGroup=Qo,n.map=Ps,n.marker=Hm,n.point=q,n.polygon=qm,n.polyline=Vm,n.popup=Gi,n.rectangle=Jm,n.setOptions=k,n.stamp=g,n.svg=fl,n.svgOverlay=Rc,n.tileLayer=Lc,n.tooltip=ta,n.transformation=kt,n.version=i,n.videoOverlay=xu;var Nu=window.L;n.noConflict=function(){return window.L=Nu,this},window.L=n}))})(yd,yd.exports)),yd.exports}var e$=XI();const R4=um(e$),tt=(e,t,n,i="all of New Jersey")=>[{iconName:"BadgeCheck",label:"ELITE Verified Pro"},{iconName:"Briefcase",label:`Hired ${e} times`},{iconName:"MapPin",label:`Serves ${i}`},{iconName:"ShieldCheck",label:"Background checked"},{iconName:"Users",label:`${t} employees`},{iconName:"Clock",label:`${n} years in business`}],ot=[{day:"Mon – Fri",time:"7:00 AM – 7:00 PM"},{day:"Saturday",time:"8:00 AM – 5:00 PM"},{day:"Sunday",time:"8:00 AM – 5:00 PM"}],nt=["Credit Card","Apple Pay","Google Pay","Venmo","Zelle","PayPal","Cash"],rt=[{iconName:"ShieldCheck",label:"NJ Home Improvement Contractor (HIC) Registered",detail:"License #35HV093411"},{iconName:"Award",label:"General Liability Insurance",detail:"$2M coverage — Certificate available on request"},{iconName:"ShieldCheck",label:"Workers' Compensation Insurance",detail:"All employees covered"},{iconName:"BadgeCheck",label:"Background Checked",detail:"All technicians verified through national database"},{iconName:"Award",label:"ELITE Pro Status",detail:"Top-rated contractor on SnapEstimate.AI"}],dt=[{name:"Sarah M.",rating:5,date:"Yesterday",text:`I can't thank SnapEstimate enough for saving the day! When our AC system conked out, the first technician told us it needed a full replacement. We got a second opinion which confirmed the replacement, but the quote they gave us was shocking.
730
731We decided to use SnapEstimate to see if we were actually getting a fair price—and it turns out, we weren't. The initial quotes we received were outrageous. SnapEstimate connected us with their elite contractor, Lesco, who provided a much more honest and fair estimate. I'm so glad I used this service; it saved me from being taken advantage of. A huge thank you to the whole team for all their hard work in our hot attic. We truly appreciate the help!`,avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/53be3ae62_Screenshot2026-04-29143352.png",response:`Hi Sarah,
732
733Thank you so much for the fantastic feedback! We truly appreciate you taking the time to share your experience.
734
735Professionalism and leaving a clean workspace are top priorities for our team, so it's great to hear we hit the mark for you. We look forward to being your go-to 
735whenever you need us again. Thanks for choosing Lesco!
736
737Best regards,
738
739The Lesco Team`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/f1db3fe0c_Screenshot2026-04-29145115.png"},{name:"James T.",rating:5,date:"3 days ago",text:"Got 3 quotes and these guys were not only the most competitive but also the most thorough in their estimate. Very happy with the result.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/adc83c286_Screenshot2026-04-29143313.png",response:`James,
740
741We're thrilled you took the time to compare and choose us! A detailed, thorough estimate is how we earn trust—we don't cut corners on the planning phase because that's where quality begins.
742
743Your satisfaction is what drives us. Thanks for giving us the opportunity to serve you!
744
745Best regards,
746The Lesco Team`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/f1db3fe0c_Screenshot2026-04-29145115.png"},{name:"Linda R.",rating:4,date:"4 days ago",text:"Great service overall. Minor scheduling hiccup but they communicated well and delivered excellent quality work.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/7f7855a25_Screenshot2026-04-29143252.png",response:`Linda,
747
748Thank you for the honest feedback! We're sorry for the scheduling bump, but we're glad our communication and the final result made up for it. We're constantly working to improve our scheduling process to prevent those kinds of hiccups in the future.
749
750We truly appreciate your business and understanding!
751
752Best regards,
753The Lesco Team`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/f1db3fe0c_Screenshot2026-04-29145115.png"},{name:"Michael B.",rating:5,date:"8 days ago",text:"Used them for an emergency repair and they were at my door within 2 hours. Cannot recommend enough!",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/b12e419fb_Screenshot2026-04-29143206.png",response:`Michael,
754
755Emergencies can't wait, and we understand the stress that comes with them. We're proud that our rapid response team was able to get to you quickly and resolve the issue.
756
757Your trust in us during a critical moment means everything. We're here whenever you need us!
758
759Best regards,
760The Lesco Team`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/f1db3fe0c_Screenshot2026-04-29145115.png"}],t$=[{name:"Patricia M.",rating:5,date:"Yesterday",text:"A-1 Affordable did an amazing job relining our chimney. From the initial inspection to the final cleanup, everything was professional and efficient. They explained every step of the process and the price was very fair. Our fireplace is working perfectly now!",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/7c9c951ca_Screenshot2026-04-30153330.png",response:`Hi Patricia,
761
762Thank you so much for the kind words! We take great pride in making sure every customer understands the work being done and feels confident in the process. So glad your fireplace is back in great shape!
763
764Best regards,
765A-1 Affordable, Inc.`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/d89609417_Screenshot2026-05-01112449.png"},{name:"Robert K.",rating:5,date:"3 days ago",text:"Got 3 quotes for a chimney liner and crown repair and A-1 Affordable was not only the best price but the most knowledgeable. The crew was on time, clean and did outstanding work. Highly recommend!",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/b64f506ba_Screenshot2026-05-01112657.png",response:`Robert,
766
767Thank you for taking the time to compare and for choosing us! We believe every homeowner deserves honest pricing and quality work — no shortcuts, no upsells.
768
769We appreciate your trust and look forward to being your chimney specialist for years to come!
770
771Best regards,
772A-1 Affordable, Inc.`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/d89609417_Screenshot2026-05-01112449.png"},{name:"Donna R.",rating:4,date:"5 days ago",text:"Great experience with A-1 Affordable. There was a slight delay in the start time but they called ahead to let me know. The masonry work on my chimney crown came out beautifully. Would definitely use them again.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/886b518a7_Screenshot2026-05-01112639.png",response:`Donna,
773
774Thank you for the honest feedback! We apologize for the scheduling delay and appreciate your patience. We're glad the crown repair met your expectations — it's one of our most important services for protecting your chimney long-term.
775
776We truly value your business!
777
778Best regards,
779A-1 Affordable, Inc.`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/d89609417_Screenshot2026-05-01112449.png"},{name:"Karen S.",rating:5,date:"1 week ago",text:"I called A-1 Affordable after my home inspector flagged my chimney liner as deteriorated. They came out the next day, gave me a fair written quote, and completed the liner installation within the week. Passed re-inspection with no issues. Very happy with the whole experience!",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/b66a3242d_Screenshot2026-05-01112604.png",response:`Karen,
780
781That's exactly the kind of result we work hard to deliver! A failed inspection can be stressful, and we're glad we could turn it around quickly and get you through re-inspection without a hitch.
782
783Thank you for trusting A-1 Affordable with your home!
784
785Best regards,
786A-1 Affordable, Inc.`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/d89609417_Screenshot2026-05-01112449.png"}],Ph="https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/0413d816f_Screenshot2026-04-30154128.png",n$=[{name:"Tony R.",rating:5,date:"Yesterday",text:`We had a collapsed sewer line under our driveway and were dreading the cost of digging everything up. Arrow Sewer & Drain came out the same day, scoped the line, and told us we were a perfect candidate for trenchless relining. The crew was in and out in one day — no mess, no excavation, and the driveway is completely intact.
787
788The 50-year warranty gave us real peace of mind. Could not be happier with the result.`,avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/e17905ac4_Screenshot2026-04-30153330.png",response:`Tony,
789
790Thank you for sharing your experience! Trenchless is exactly the right solution for situations like yours — and protecting your driveway is always a priority for us.
791
792We're glad we could deliver a permanent fix without the disruption. That 50-year liner will outlast anything else on the market.
793
794Best regards,
795The Arrow Sewer & Drain Team`,responseAvatar:Ph},{name:"Karen S.",rating:5,date:"2 days ago",text:"Arrow Sewer & Drain was recommended by my real estate agent before closing on my home. They scoped the line, found significant root intrusion and cracking, and relining was recommended. Pricing was fair and transparent — no surprises. The work was done before my closing date and I have documentation for the buyer. Highly professional from start to finish.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/adc83c286_Screenshot2026-04-29143313.png",response:`Karen,
796
797Pre-sale sewer work is one of the most important investments a seller can make — it protects your deal and gives the buyer confidence. We're glad we could fit your timeline and provide thorough documentation.
798
799Congratulations on the sale!
800
801Best regards,
802The Arrow Sewer & Drain Team`,responseAvatar:Ph},{name:"Dennis M.",rating:4,date:"5 days ago",text:"Good experience overall. The technician 
802was knowledgeable and walked me through exactly what was happening with my pipe. The CIPP liner install went smoothly. Only minor issue was a slight delay in the morning start time, but they called ahead to let me know. Quality of the work is excellent.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8fcb83f20_Screenshot2026-04-30153244.png",response:`Dennis,
803
804Thank you for the honest feedback — we appreciate it. We apologize for the late start and will continue working to improve our scheduling communication.
805
806We're glad the liner install met your expectations and that our tech took the time to explain everything clearly. That's the Arrow standard.
807
808Best regards,
809The Arrow Sewer & Drain Team`,responseAvatar:Ph},{name:"Patricia L.",rating:5,date:"1 week ago",text:"I called Arrow after getting a quote from another company that wanted to dig up my entire backyard for $18,000. Arrow came out, scoped the line themselves, and offered a trenchless solution for significantly less. The work was completed in a single day and my yard is untouched. I wish I had called them first.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/73c1e185b_Screenshot2026-04-30153218.png",response:`Patricia,
810
811Stories like yours are exactly why we do what we do. Excavation should be a last resort — not a first offer. A proper camera inspection almost always reveals whether trenchless is an option, and in most NJ homes, it is.
812
813Thank you for trusting us with your home!
814
815Best regards,
816The Arrow Sewer & Drain Team`,responseAvatar:Ph}],Uw={"air-conditioner-installation":{title:"Air Conditioner Installation",phone:"+19737062854",contractorName:"Lesco Heating Cooling & Refrigeration",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/e349397ca_LescoLogo1.png",rating:4.9,reviewCount:38,about:"New Jersey's top-rated AC installation experts. We handle everything from single-room mini-splits to full central air systems. Licensed HVAC professionals with same-day availability for urgent installs.",overview:tt(38,8,23),services:["Central AC Installation","Mini-Split / Ductless Systems","Multi-Zone Systems","Ductwork Installation & Repair","AC Replacement & Upgrade","Smart Thermostat Setup","AC Tune-Up & Maintenance","Refrigerant Recharge","Condenser Unit Replacement","Evaporator Coil Replacement","Blower Motor Repair","Capacitor & Contactor Replacement","Drain Line Cleaning","Air Handler Service","Emergency AC Repair","Indoor Air Quality Systems","UV Air Purifier Installation","Whole-Home Dehumidifiers"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/875b77622_Screenshot2026-04-29135906.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/dbea99ca1_Screenshot2026-04-29140449.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/c6b3a59d4_Screenshot2026-04-29140431.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/225b2b885_Screenshot2026-04-29140353.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/01956840b_Screenshot2026-04-29140258.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/aea04f45a_Screenshot2026-04-29140150.png"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"appliance-repair":{title:"Appliance Repair",contractorName:"NJ Appliance Pros",rating:4.8,reviewCount:62,about:"Fast, reliable appliance repair throughout New Jersey. We fix all major brands — washers, dryers, refrigerators, dishwashers, and more. Same-day service available with a 90-day parts & labor warranty.",overview:tt(62,6,7),services:["Washer & Dryer Repair","Refrigerator Repair","Dishwasher Repair","Oven & Range Repair","Microwave Repair","Garbage Disposal"],photos:["https://images.unsplash.com/photo-1581094794329-c8112a89af12?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1521791136064-7986c2920216?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"bathroom-remodeling":{title:"Bathroom Remodeling",contractorName:"Garden State Bath Renovations",rating:4.9,reviewCount:29,about:"Transform your bathroom with NJ's most trusted remodeling team. From luxury master bath upgrades to efficie
816nt guest bath refreshes, we handle design through completion with full permits and inspections.",overview:tt(29,10,12),services:["Full Gut Renovation","Shower Conversion","Tile Installation","Vanity & Fixture Upgrade","Walk-In Shower","Accessibility Modifications"],photos:["https://images.unsplash.com/photo-1552321554-5fefe8c9ef14?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1584622650111-993a426fbf0a?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1571875257727-256c39da42af?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"chimney-liner-masonry":{title:"Chimney Liner & Masonry",contractorName:"A-1 Affordable, Inc.",tagline:"Chimney Specialist",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fd7c46d8b_Remove_and_symbol_and_roofing_202605011117.jpg",phone:"+18008650053",rating:4.8,reviewCount:21,about:"Certified chimney and masonry specialists serving all of New Jersey. We install UL-listed stainless steel liners, rebuild crowns, and restore historic masonry to code. Safety-first approach on every job.",overview:tt(21,45,50),services:["Chimney Liner Install","Crown Repair","Tuckpointing","Chimney Cap","Masonry Restoration","Fireplace Repair"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/46c351330_Screenshot2026-05-01111901.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/c5cc4efd0_Screenshot2026-05-01111913.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/4123fcf58_Screenshot2026-05-01111942.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/55d18ea7c_Screenshot2026-05-01112007.png"],hours:ot,paymentMethods:nt,reviews:t$,credentials:rt},cleaning:{title:"Cleaning",contractorName:"Spotless NJ Cleaning Services",rating:4.9,reviewCount:84,about:"Professional residential and commercial cleaning throughout New Jersey. Fully insured with HEPA equipment and hospital-grade disinfectants. Recurring, deep clean, move-in/move-out — we do it all.",overview:tt(84,15,6),services:["Deep Cleaning","Recurring Maintenance","Move-In / Move-Out","Post-Construction","Office Cleaning","Disinfection Services"],photos:["https://images.unsplash.com/photo-1563453392212-326f5e854473?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1581578731548-c64695cc6952?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"decks-and-porches":{title:"Decks & Porches",contractorName:"NJ Outdoor Living Builders",rating:4.9,reviewCount:33,about:"Custom deck and porch builders serving New Jersey. We specialize in pressure-treated, composite (Trex/Azek), and multi-level designs. Every project is fully permitted with deep frost footings for NJ winters.",overview:tt(33,8,11),services:["Composite Decks","Pressure-Treated Decks","Multi-Level Decks","Porches & Screened Rooms","Pergolas","Deck Repair & Refinishing"],photos:["https://images.unsplash.com/photo-1564013799919-ab600027ffc6?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"driveway-service":{title:"Driveway Service",contractorName:"NJ Paving Experts",rating:4.7,reviewCount:45,about:"Expert driveway installation and repair across New Jersey. We use hot-mix asphalt with proper 6-inch stone bases for NJ's freeze-thaw climate. Pavers, concrete, and asphalt — all with lifetime workmanship guarantees.",overview:tt(45,9,13),services:["Asphalt Installation","Paver Driveways","Concrete Driveways","Resurfacing","Patching & Crack Repair","Sealcoating"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1521791136064-7986c2920216?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},electrical:{title:"Electrical",contractorName:"Garden State Electric 
816LLC",rating:5,reviewCount:57,about:"Licensed Master Electricians serving all of New Jersey. Panel upgrades, EV charger installs, whole-home rewiring, and emergency electrical service. 100% NJ code compliant on every job.",overview:tt(57,7,14),services:["Panel Upgrades (200A)","EV Charger Installation","GFCI / AFCI Circuits","Outlet & Switch Replacement","Whole-Home Rewiring","Emergency Electrical"],photos:["https://images.unsplash.com/photo-1621905251189-08b45d6a269e?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Electrician License",detail:"License #NJ-ME-12345"},...rt.slice(1)]},fencing:{title:"Fencing",contractorName:"NJ Fence & Gate Pros",rating:4.8,reviewCount:41,about:"New Jersey's trusted fencing specialists. Vinyl, aluminum, wood, and chain-link fencing with full property surveys and utility line checks. Every install is permitted and fully guaranteed.",overview:tt(41,6,9),services:["Vinyl Privacy Fencing","Aluminum Fencing","Cedar Wood Fencing","Chain Link","Gate Installation","Fence Repair"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1572981779307-38b8cabb2407?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"garage-doors":{title:"Garage Doors",contractorName:"NJ Garage Door Authority",rating:4.9,reviewCount:53,about:"Complete garage door sales, installation, and repair throughout NJ. We carry insulated steel, custom wood, and carriage-house styles. Same-day spring and opener repairs available.",overview:tt(53,5,8),services:["New Door Installation","Spring Replacement","Opener Install & Repair","Track Replacement","Smart Garage Openers","Emergency Repair"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1560472354-b33ff0c44a43?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"gutter-service":{title:"Gutter Service",contractorName:"NJ Seamless Gutter Pros",rating:4.8,reviewCount:66,about:"Seamless gutter installation, cleaning, and guard systems across New Jersey. We fabricate gutters on-site for a perfect fit. Micro-mesh guards with lifetime clog-free guarantees.",overview:tt(66,7,10),services:["Seamless Gutter Install","Micro-Mesh Guards","Gutter Cleaning","Downspout Extensions","Pitch Correction","Fascia Board Repair"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1521791136064-7986c2920216?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"handyman-service":{title:"Handyman Service",contractorName:"Smiley Plumbing & Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",phone:"+19737645393",rating:5,reviewCount:98,about:"Your reliable all-around home repair specialist. From minor drywall patches to furniture assembly and mounting — Smiley Plumbing & Drain handles it all with the same transparency and integrity we bring to every job.",overview:tt(98,8,10),services:["Drywall Repair","Furniture Assembly","TV & Shelf Mounting","Door & Lock Repair","Caulking & Weatherstripping","Minor Plumbing Fixes","Fixture Installation","Water Shutoff Valves"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99f002b22_Screenshot2026-05-02095528.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8e506aef5_Screenshot2026-05-02095441.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/6182bf414_Screenshot2026-05-02095359.png"],hours:ot,paymentMethods:nt,reviews:dt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #11908"},...rt]},plumbing:{title:"Plumbing",contractorName:"Smiley Plumbing & Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",phone:"+19737645393",rating:5,reviewCount:98,about:"Welcome to the modern way to handle your home's plumbing. At Smiley Drain, we've thrown out the old, stressful service playbook and replaced it with complete transparency, speed, and integrity. From water heaters to sewer lines to emergency repairs — we handle it all.",overview:tt(98,8,10),services:["Emergency Plumbing","Water Heater Installation","Sewer Line Repair","Drain Cleaning","Leak Detection","Pipe Repair","Fixture Installation","Water Softeners","Sump Pump Installation"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99f002b22_Screenshot2026-05-02095528.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8e506aef5_Screenshot2026-05-02095441.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/6182bf414_Screenshot2026-05-02095359.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/360910a8b_Screenshot2026-05-02095333.png"],hours:ot,paymentMethods:nt,reviews:dt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #11908"},...rt]},"heating-system-installation":{title:"Heating System Installation",contractorName:"Smiley Plumbing & Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",phone:"+19737645393",rating:5,reviewCount:98,about:"Expert heating system installation and replacement throughout New Jersey. Gas furnaces, boilers, and heat pumps — we qual
816ify you for every available NJ rebate and federal tax credit.",overview:tt(98,8,10),services:["Gas Furnace Install","Heat Pump Systems","Boiler Replacement","Zoned Heating","Smart Thermostat","Emergency Heating Repair"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99f002b22_Screenshot2026-05-02095528.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8e506aef5_Screenshot2026-05-02095441.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/6182bf414_Screenshot2026-05-02095359.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/360910a8b_Screenshot2026-05-02095333.png"],hours:ot,paymentMethods:nt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #11908"},...rt],reviews:[{name:"Karen M.",rating:5,date:"Yesterday",text:"Our furnace died on the coldest day of January and Smiley had someone at our door within 2 hours. The tech explained everything clearly — we went with a high-efficiency heat pump and he handled all the NJ rebate paperwork on the spot. Could not be happier with the service!",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/53be3ae62_Screenshot2026-04-29143352.png",response:`Hi Karen,
817
818Thank you so much for the kind words! Winter emergencies are our specialty — we know how important heat is for your family. We're thrilled the heat pump is working well and that we could handle the rebate paperwork for you.
819
820Best regards,
821Smiley Plumbing & Drain`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png"},{name:"Robert T.",rating:5,date:"3 days ago",text:"Got 3 quotes for a boiler replacement and Smiley was the most knowledgeable and competitive. The installation was clean and professional. They even upgraded my gas line at a fair price. Highly recommend.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/683b79e07_Screenshot2026-05-01112657.png",response:`Robert,
822
823Thank you for taking the time to compare quotes and choosing us! Boiler replacements require proper sizing and we never cut corners on that step. Enjoy the reliable heat!
824
825Best regards,
826Smiley Plumbing & Drain`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png"},{name:"Susan L.",rating:4,date:"5 days ago",text:"Good experience overall. There was a slight delay getting the new thermostat but they communicated well and the install was done right. The tech explained the NJ code requirements which I didn't know about. Would use again.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/7f7855a25_Screenshot2026-04-29143252.png",response:`Susan,
827
828Thank you for the honest feedback! We appreciate your patience and your business. We never skip the code compliance steps since they protect your system long-term.
829
830Best regards,
831Smiley Plumbing & Drain`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png"},{name:"David P.",rating:5,date:"1 week ago",text:"Smiley replaced my old furnace with a high-efficiency heat pump system. The federal tax credit combined with the NJ utility rebate saved me over $1,000. The tech was on time, respectful of my home, and done in under 4 hours.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/b12e419fb_Screenshot2026-04-29143206.png",response:`David,
832
833That's exactly the kind of result we love to deliver! The heat pump rebate combo is one of the best deals in NJ right now and we're glad we could maximize your savings. Enjoy the efficiency!
834
835Best regards,
836Smiley Plumbing & Drain`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png"}]},"home-inspection":{title:"Home Inspection",contractorName:"NJ Certified Home Inspectors",rating:5,reviewCount:72,about:"NJ-licensed home inspectors with thermal cameras, drones, and moisture meters. We include radon testing and sewer scope options. Detailed digital reports delivered within 24 hours of inspection.",overview:tt(72,4,16),services:["Pre-Purchase Inspection","Rad
836on Testing","Sewer Scope","Mold Assessment","Termite Inspection","11-Month Warranty Inspection"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1560472354-b33ff0c44a43?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"home-remodeling":{title:"Home Remodeling",contractorName:"NJ Premier Home Renovations",rating:4.9,reviewCount:27,about:"Full-scale home remodeling throughout New Jersey. From single rooms to whole-home transformations, we manage permits, subcontractors, and timelines so you don't have to.",overview:tt(27,18,14),services:["Whole-Home Renovation","Room Additions","Basement Finishing","Open Floor Plans","Custom Carpentry","Interior Design Consultation"],photos:["https://images.unsplash.com/photo-1484154218962-a197022b5858?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1560472354-b33ff0c44a43?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"junk-removal":{title:"Junk Removal",contractorName:"NJ Junk Busters",rating:4.8,reviewCount:103,about:"Fast, eco-friendly junk removal across New Jersey. We haul away furniture, appliances, construction debris, and estate items. Licensed NJ haulers — no illegal dumping, ever.",overview:tt(103,8,6),services:["Furniture Removal","Appliance Disposal","Estate Cleanouts","Construction Debris","Yard Waste","Donation Drop-Off"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1521791136064-7986c2920216?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"kitchen-remodeling":{title:"Kitchen Remodeling",contractorName:"NJ Kitchen Design & Build",rating:4.9,reviewCount:31,about:"New Jersey's go-to kitchen remodeling team. We handle everything from cabinet selection and countertop templating to appliance installation and final inspection. Design-build under one roof.",overview:tt(31,12,13),services:["Full Kitchen Gut","Cabinet Installation","Countertop Install","Backsplash Tile","Appliance Integration","Island Build-Out"],photos:["https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1484154218962-a197022b5858?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},landscaping:{title:"Landscaping",contractorName:"NJ Landscape Artisans",rating:4.8,reviewCount:49,about:"Full-service landscaping design and installation throughout New Jersey. Garden beds, hardscaping, French drains, and privacy plantings — we know NJ soil and climate better than anyone.",overview:tt(49,11,9),services:["Landscape Design","Garden Bed Installation","Sod & Seeding","French Drains","Retaining Walls","Privacy Plantings"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1572981779307-38b8cabb2407?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"lawn-care":{title:"Lawn Care",contractorName:"NJ Green Lawn Pros",rating:4.7,reviewCount:118,about:"Professional lawn care and maintenance across New Jersey. Mowing, fertilization, aeration, overseeding, and grub control — custom seasonal programs tailored to your lawn's specific needs.",overview:tt(118,14,8),services:["Mowing & Edging","Fertilization Programs","Aeration & Overseeding","Grub Control","Spring & Fall Cleanup","Snow Removal"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1572981779307-38b8cabb2407?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"moving-service":{title:"Moving Service",contractorName:"NJ Elite Movers",rating:4.8,reviewCount:76,about:"Licensed NJ intrastate movers with a spotless track record. Full-service packing, furniture disassembly, and white-glove delivery. NJ Warehousemen/Mover licensed and fully insured.",overview:tt(76,16,9),services:["Local NJ Moves","Full-Service Packing","Furniture Assembly","P
836iano & Safe Moving","Storage Solutions","Long-Distance Moves"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1521791136064-7986c2920216?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"new-window-and-door":{title:"New Windows & Doors",contractorName:"NJ Window & Door Authority",rating:4.9,reviewCount:58,about:"Energy Star certified window and door replacement throughout NJ. Vinyl, fiberglass, and wood options with full-frame and insert installations. Proper expanding foam insulation on every job.",overview:tt(58,9,11),services:["Full-Frame Replacement","Insert Windows","Entry Door Install","Sliding Doors","Storm Doors","Energy Star Upgrades"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1560472354-b33ff0c44a43?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},painting:{title:"Interior House Painting",contractorName:"NJ Premium Painters",rating:4.9,reviewCount:87,about:"Professional interior and exterior painting across New Jersey. We use Benjamin Moore and Sherwin-Williams low-VOC paints. Meticulous prep work is our specialty — sanding, patching, and priming done right.",overview:tt(87,12,10),services:["Interior Painting","Exterior Painting","Cabinet Painting","Deck Staining","Wallpaper Removal","Drywall Repair & Paint"],photos:["https://images.unsplash.com/photo-1589939705384-5185137a7f0f?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"pest-control":{title:"Pest Control",contractorName:"NJ Pest Defense Specialists",rating:4.8,reviewCount:95,about:"NJ-licensed pest control for termites, rodents, bed bugs, and seasonal pests. Annual inspection plans with a satisfaction guarantee. We identify entry points — not just treat symptoms.",overview:tt(95,8,11),services:["Termite Treatment","Rodent Control","Bed Bug Heat Treatment","Quarterly Maintenance Plans","Ant & Wasp Removal","Mosquito Control"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1521791136064-7986c2920216?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},roofing:{title:"Roofing",contractorName:"NJ Elite Roofing Co.",rating:4.9,reviewCount:64,about:"NJ's most trusted roofing contractor. Architectural shingles, slate, metal, and flat roofing with full tear-off and proper NJ Ice & Water shield installation. Manufacturer-certified installer
836s.",overview:tt(64,14,22),services:["Full Roof Replacement","Architectural Shingles","Metal Roofing","Flat Roof Systems","Roof Repairs","Chimney Flashing"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1572981779307-38b8cabb2407?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"sewer-descaling":{title:"Sewer Descaling",contractorName:"Smiley Plumbing & Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",phone:"+19737645393",rating:5,reviewCount:98,about:"Expert sewer descaling for NJ's aging cast iron pipe infrastructure. At Smiley Drain, we restore flow without excavation using proven descaling techniques. Always camera-inspect first for safety.",overview:tt(98,8,10),services:["Cast Iron Descaling","Tuberculation Removal","Full Line Descaling","Sectional Descaling","Pre-Relining Prep","Flow Restoration","Sewer Camera Inspection","Emergency Service"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99f002b22_Screenshot2026-05-02095528.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8e506aef5_Screenshot2026-05-02095441.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/6182bf414_Screenshot2026-05-02095359.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/360910a8b_Screenshot2026-05-02095333.png"],hours:ot,paymentMethods:nt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #11908"},...rt],reviews:dt},"sewer-hydro-jetting":{title:"Sewer Hydro Jetting",contractorName:"Smiley Plumbing & Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",phone:"+19737645393",rating:5,reviewCount:98,about:"High-pressure hydro jetting for NJ's toughest sewer blockages. At Smiley Drain, 4,000 PSI systems clear roots, grease, and debris permanently. Always camera-inspect before and after.",overview:tt(98,8,10),services:["Main Line Hydro Jetting","Root Removal","Grease Trap Cleaning","Commercial Jetting","Preventative Maintenance","Post-Jet Camera Inspection","Sewer Camera Inspection","Emergency Service"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99f002b22_Screenshot2026-05-02095528.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8e506aef5_Screenshot2026-05-02095441.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/6182bf414_Screenshot2026-05-02095359.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/360910a8b_Screenshot2026-05-02095333.png"],hours:ot,paymentMethods:nt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #11908"},...rt],reviews:dt},"sewer-relining":{title:"Sewer Relining",contractorName:"Smiley Plumbing & Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",phone:"+19737645393",rating:5,reviewCount:98,about:"Trenchless sewer relining saves NJ homeowners from costly excavation. At Smiley Drain, CIPP epoxy liners are backed by a 50-year warranty. Professional installation without disrupting your driveway.",overview:tt(98,8,10),services:["CIPP Lining","Pipe Bursting","Sectional Point Repair","Lateral Lining","No-Dig Replacement","Post-Cure Inspection","Sewer Camera","Hydro Jetting","Emergency Service"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99f002b22_Screenshot2026-05-02095528.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8e506aef5_Screenshot2026-05-02095441.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/6182bf414_Screenshot2026-05-02095359.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/360910a8b_Screenshot2026-05-02095333.png"],hours:ot,paymentMethods:nt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #11908"},...rt],reviews:dt}
836,"sewer-relining-arrow":{title:"Sewer Relining",contractorName:"Arrow Sewer & Drain",tagline:"Residential, Commercial & Municipal Sewer Services",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/f6496c58b_Screenshot2026-04-30152149.png",phone:"+19085290527",rating:4.9,reviewCount:51,about:"New Jersey's top-rated trenchless sewer relining experts. We save NJ homeowners from costly excavation with epoxy CIPP liners backed by a 50-year warranty. Licensed plumbers with same-day availability for urgent jobs.",overview:tt(51,32,23),services:["CIPP Lining","Pipe Bursting","Sectional Point Repair","Lateral Lining","No-Dig Sewer Replacement","Post-Cure Inspection","Sewer Camera Inspection","Hydro Jetting","Sewer Rooter Service","Sewer Descaling","Main Line Repair","Emergency Sewer Service"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/ded0ef614_Screenshot2026-04-30153903.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/a13cb972f_Screenshot2026-04-30153852.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/ed76ff261_Screenshot2026-04-30153839.png"],hours:ot,paymentMethods:nt,reviews:n$,credentials:rt},"sewer-rooter-service":{title:"Sewer Rooter Service",contractorName:"Smiley Plumbing & Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",phone:"+19737645393",rating:5,reviewCount:98,about:"24/7 emergency sewer rooter service throughout NJ. At Smiley Drain, fast mechanical snaking provides quick blockage relief. We always recommend a camera scope afterward to prevent repeat clogs.",overview:tt(98,8,10),services:["Main Line Snaking","Secondary Drain Clearing","Emergency Service","Root Cutting","30-Day No-Clog Guarantee","Post-Rooter Camera Scope","Sewer Camera","Hydro Jetting"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99f002b22_Screenshot2026-05-02095528.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8e506aef5_Screenshot2026-05-02095441.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/6182bf414_Screenshot2026-05-02095359.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/360910a8b_Screenshot2026-05-02095333.png"],hours:[{day:"Mon – Sun",time:"24 Hours / 7 Days"}],paymentMethods:nt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #11908"},...rt],reviews:dt},siding:{title:"Siding",contractorName:"NJ Siding & Exterior Pros",rating:4.8,reviewCount:42,about:"Full siding replacement and repair throughout New Jersey. Vinyl, fiber cement (James Hardie), and engineered wood — all installed over proper house wrap. Coastal NJ high-wind clip systems standard.",overview:tt(42,10,13),services:["Vinyl Siding","James Hardie Install","Soffit & Fascia","Trim & Wrap","Storm Damage Repair","Asbestos Siding Removal"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1572981779307-38b8cabb2407?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"tree-service":{title:"Tree Service",contractorName:"NJ Arborist & Tree Care",rating:4.9,reviewCount:55,about:"ISA-certified arborists serving all of New Jersey. Tree removal, trimming, stump grinding, and emergency storm damage. We never top trees and always pull permits before working near power lines.",overview:tt(55,8,14),services:["Tree Removal","Crown Trimming","Stump Grinding","Emergency Storm Service","Cable & Bracing","Tree Health Assessment"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1572981779307-38b8cabb2407?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"water-heater-installation-tom":{title:"Water Heater Replacement",contractorName:"1-Tom-Plumber",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/992d96b6e_Screenshot2026-05-03092847.png",phone:"+19738889398",rating:5,reviewCount:87,about:"Somerset County's trusted plumbing specialists. At 1-Tom-Plumber, we bring honest pricing and expert craftsmanship to every water heater installation and replacement. Tank, tankless, and hybrid heat pump water heaters installed by licensed NJ Master Plumbers — with full rebate processing and required expansion tank installations.",overview:tt(87,6,15,"Somerset County, NJ"),services:["Tank Water Heater Install","Tankless Water Heater Install","Hybrid Heat Pump WH","Expansion Tank Install","Emergency Replacement","Rebate Processing","Gas Line Upgrades","Electric Water Heater","Commercial Water Heaters","Water Heater Repair","Annual Maintenance","Sediment Flushing"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/e33acadb5_Screenshot2026-05-03095942.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/dc2a7fca5_Screenshot2026-05-03095323.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/1bd46b607_Screenshot2026-05-03095515.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/31442f784_Screenshot2026-05-03095524.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/f7d21df0b_Screenshot2026-05-03095543.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/a38f25722_Screenshot2026-05-03095555.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/875f2affb_Screenshot2026-05-03095615.png"],hours:ot,paymentMethods:nt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"Licensed & Insured in New Jersey"},...rt.filter(e=>!e.label.includes("Home Improvement Contractor"))],reviews:[{name:"Karen M.",rating:5,date:"Yesterday",text:"Our water heater died on a Saturday morning and 1-Tom-Plumber had someone at our door within 2 hours. The tech explained everything clearly — we went with a hybrid heat pump model and he handled all the NJ rebate paperwork on the spot. Could not be happier with the service!",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/53be3ae62_Screenshot2026-04-29143352.png",response:`Hi Karen,
837
838Thank you so much for the kind words! Weekend emergencies are our specialty — we know how important hot water is for your family. We're thrilled the hybrid heat pump is working well and that we could handle the rebate paperwork for you.
839
840Best regards,
8411-Tom-Plumber`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99be2706e_Screenshot2026-05-03093259.png"},{name:"Robert T.",rating:5,date:"3 days ago",text:"Got 3 quotes for a tankless water heater upgrade and 1-Tom-Plumber was the most knowledgeable and competitive. The installation was clean and professional. They even upgraded my gas line at a fair price. Highly recommend.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/683b79e07_Screenshot2026-05-01112657.png",response:`Robert,
842
843Thank you for taking the time to compare quotes and choosing us! Tankless conversions require proper gas line sizing and we never cut corners on that step. Enjoy the endless hot water!
844
845Best regards,
8461-Tom-Plumber`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99be2706e_Screenshot2026-05-03093259.png"},{name:"Susan L.",rating:4,date:"5 days ago",text:"Good experience overall. There was a slight delay getting the expansion tank but they communicated well and the install was done right. The tech explained the NJ code requirement for the expansion tank which I didn't know about. Would use again.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/7f7855a25_Screenshot2026-04-29143252.png",response:`Susan,
847
848Thank you for the honest feedback! We never skip the expansion tank since it's required by NJ plumbing code. We appreciate your patience and your business!
849
850Best regards,
8511-Tom-Plumber`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99be2706e_Screenshot2026-05-03093259.png"},{name:"David P.",rating:5,date:"1 week ago",text:"1-Tom-Plumber replaced my old 40-gallon tank with a 50-gallon hybrid heat pump model. The federal tax credit combined with the NJ utility rebate saved me over $1,000. The tech was on time, respectful of my home, and done in under 3 hours.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/b12e419fb_Screenshot2026-04-29143206.png",response:`David,
852
853That's exactly the kind of result we love to deliver! The hybrid heat pump rebate combo is one of the best deals in NJ right now and we're glad we could maximize your savings. Enjoy the efficiency!
854
855Best regards,
8561-Tom-Plumber`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99be2706e_Screenshot2026-05-03093259.png"}]},"water-heater-installation":{title:"Water Heater Replacement",contractorName:"Smiley Plumbing & Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",phone:"+19737645393",rating:5,reviewCount:132,about:`Welcome to the modern way to handle your home's plumbing. At Smiley Drain, we've thrown out the old, stressful service playbook and replaced it with complete transparency, speed, and integrity.
857
858We know that when you have a clogged main line, a broken water heater, or a plumbing emergency, the last thing you want is a pushy salesperson in your home. That's why we've streamlined our entire process. Using cutting-edge virtual tools, we can often assess your issue and give you a fair, accurate quote directly from your photos—no on-site sales games required.`,overview:tt(132,8,10),services:["Tank Water Heater Install","Tankless Water Heater Install","Hybrid Heat Pump WH","Expansion Tank Install","Emergency Replacement","Rebate Processing","Gas Line Upgrades","Electric Water Heater","Commercial Water Heaters","Water Heater Repair","Annual Maintenance","Sediment Flushing"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99f002b22_Screenshot2026-05-02095528.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8e506aef5_Screenshot2026-05-02095441.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/6182bf414_Screenshot2026-05-02095359.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/360910a8b_Screenshot2026-05-02095333.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/412461092_Screenshot2026-05-02095316.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/293af9705_Screenshot2026-05-02095928.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fb6efd9d0_Screenshot2026-05-02095945.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/01e147ece_Screenshot2026-05-02095958.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/123917121_Screenshot2026-05-02100013.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/04e4081a7_Screenshot2026-05-02100039.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/4bbf34936_Screenshot2026-05-02100053.png"],hours:ot,paymentMethods:nt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #11908"},...rt],reviews:[{name:"Karen M.",rating:5,date:"Yesterday",text:"Our water heater died on a Saturday morning and Smiley had someone at our door within 2 hours. The tech explained everything clearly — we went with a hybrid heat pump model and he handled all the NJ rebate paperwork on the spot. Could not be happier with the service!",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/53be3ae62_Screenshot2026-04-29143352.png",response:`Hi Karen,
859
860Thank you so much for the kind words! Weekend emergencies are our specialty — we know how important hot water is for your family. We're thrilled the hybrid heat pump is working well and that we could handle the rebate paperwork for you.
861
862Best regards,
863Smiley Plumbing & Drain`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png"},{name:"Robert T.",rating:5,date:"3 days ago",text:"Got 3 quotes for a tankless water heater upgrade and Smiley was the most knowledgeable and competitive. The installation was clean and professional. They even upgraded my gas line at a fair price. Highly recommend.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/683b79e07_Screenshot2026-05-01112657.png",response:`Robert,
864
865Thank you for taking the time to compare quotes and choosing us! Tankless conversions require proper gas line sizing and we never cut corners on that step. Enjoy the endless hot water!
866
867Best regards,
868Smiley Plumbing & Drain`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png"},{name:"Susan L.",rating:4,date:"5 days ago",text:"Good experience overall. There was a slight delay getting the expansion tank but they communicated well and the install was done right. The tech explained the NJ code requirement for the expansion tank which I didn't know about. Would use again.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/7f7855a25_Screenshot2026-04-29143252.png",response:`Susan,
869
870Thank you for the honest feedback! We apologize for the parts delay — we never skip the expansion tank since it's required by NJ plumbing code and protects your system long-term. We appreciate your patience and your business!
871
872Best regards,
873Smiley Plumbing & Drain`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png"},{name:"David P.",rating:5,date:"1 week ago",text:"Smiley replaced my old 40-gallon tank with a 50-gallon hybrid heat pump model. The federal tax credit combined with the NJ utility rebate saved me over $1,000. The tech was on time, respectful of my home, and done in under 3 hours.",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/b12e419fb_Screenshot2026-04-29143206.png",response:`David,
874
875That's exactly the kind of result we love to deliver! The hybrid heat pump rebate combo is one of the best deals in NJ right now and we're glad we could maximize your savings. Enjoy the efficiency!
876
877Best regards,
878Smiley Plumbing & Drain`,responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png"}]},"sewer-camera-inspection":{title:"Sewer Camera Inspection",contractorName:"Smiley Plumbing & Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",phone:"+19737645393",rating:5,reviewCount:98,about:"Professional sewer camera inspections with digital reports. At Smiley Drain, we identify root intrusion, cracks, and blockages before recommending solutions. Transparent pricing, no upsells.",overview:tt(98,8,10),services:["Main Line Camera Scope","Underground Locating","Digital Video Report","Pre-Sale Inspection","Drain Diagnostic","Root Assessment","Post-Jetting Inspection","Sewer Mapping","Emergency Service"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99f002b22_Screenshot2026-05-02095528.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8e506aef5_Screenshot2026-05-02095441.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/6182bf414_Screenshot2026-05-02095359.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/360910a8b_Screenshot2026-05-02095333.png"],hours:ot,paymentMethods:nt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #11908"},...rt],reviews:dt},"basement-waterproofing":{title:"Basement Waterproofing",contractorName:"NJ Dry Basement Pros",rating:4.9,reviewCount:36,about:"Comprehensive basement waterproofing for NJ's high water table and coastal conditions. Interior French drains, battery backup sump systems, and exterior membrane applications — fully permitted.",overview:tt(36,9,15),services:["Interior French Drain","Sump Pump Install","Battery Backup Systems","Exterior Waterproofing","Crack Injection","Vapor Barriers"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1560472354-b33ff0c44a43?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"water-softener":{title:"Water Softener Systems",contractorName:"Smiley Plumbing & Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",phone:"+19737645393",rating:5,reviewCount:98,about:"Professional water softener installation calibrated to NJ's county-specific water hardness. At Smiley Drain, salt-based, salt-free, and whole-house filtration systems are tested to your water first.",overview:tt(98,8,10),services:["Ion-Exchange Softeners","Salt-Free Systems","Whole-House Filtration","Water Testing","Reverse Osmosis","System Maintenance","Water Heater Protection"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/99f002b22_Screenshot2026-05-02095528.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8e506aef5_Screenshot2026-05-02095441.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/6182bf414_Screenshot2026-05-02095359.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/360910a8b_Screenshot2026-05-02095333.png"],hours:ot,paymentMethods:nt,credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #11908"},...rt],reviews:dt},"duct-cleaning":{title:"Duct Cleaning",contractorName:"NJ Clean Air Duct Pros",rating:4.8,reviewCount:43,about:"NADCA-certified duct cleaning specialists throughout New Jersey. Truck-mounted HEPA vacuum systems with rotary brush agitation. We improve indoor air quality and HVAC efficie
878ncy — no bait-and-switch pricing.",overview:tt(43,6,7),services:["Whole-House Duct Cleaning","Dryer Vent Cleaning","Mold Sanitizing Treatment","Post-Renovation Cleaning","HVAC Coil Cleaning","Air Quality Testing"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1581094794329-c8112a89af12?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"carpet-cleaning":{title:"Carpet Cleaning",contractorName:"NJ Fresh Carpet Pros",rating:4.8,reviewCount:77,about:"Professional hot water extraction carpet cleaning throughout New Jersey. Truck-mounted systems for the deepest clean. Pet odor treatment, stain removal, and area rug specialists.",overview:tt(77,8,6),services:["Hot Water Extraction","Pet Odor Treatment","Stain Removal","Area Rug Cleaning","Upholstery Cleaning","Tile & Grout Cleaning"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1581578731548-c64695cc6952?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"water-fire-restoration":{title:"Water & Fire Restoration",contractorName:"NJ Restoration Response Team",rating:5,reviewCount:34,about:"IICRC-certified restoration specialists available 24/7 across New Jersey. Water extraction, structural drying, fire damage cleanup, and mold remediation. We work directly with your insurance company.",overview:tt(34,15,11),services:["Water Extraction","Structural Drying","Fire Damage Cleanup","Mold Remediation","Smoke & Odor Removal","Insurance Claims Assistance"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1560472354-b33ff0c44a43?w=400&h=300&fit=crop"],hours:[{day:"Mon – Sun",time:"24 Hours / 7 Days"}],paymentMethods:nt,reviews:dt,credentials:rt},"custom-closets":{title:"Custom Closets",contractorName:"Custom Closets",rating:4.8,reviewCount:34,about:"Expert custom closet design and installation throughout New Jersey. We maximize storage space with premium cabinetry, lighting, and hardware — fully customized to your lifestyle.",overview:tt(34,6,8),services:["Closet Design Consultation","Custom Cabinetry","Lighting Installation","Drawer Systems","Organization Solutions","Wardrobe Planning"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1560472354-b33ff0c44a43?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"custom-garage":{title:"Custom Garage",contractorName:"Custom Garage",rating:4.7,reviewCount:28,about:"Transform your garage with professional epoxy flooring, custom cabinetry, and storage solutions. We turn forgotten spaces into functional showrooms.",overview:tt(28,5,7),services:["Epoxy Flooring","Wall Cabinets","Workbenches","Tool Storage","Wall Organization","Garage Doors"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1560472354-b33ff0c44a43?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt},"duct-cleaning-2":{title:"Duct Cleaning",contractorName:"Air Flow Specialists",rating:4.9,reviewCount:52,about:"NADCA-certified duct cleaning throughout NJ. We improve indoor air quality, reduce allergens, and boost HVAC efficie
878ncy with truck-mounted HEPA systems.",overview:tt(52,7,8),services:["Whole-House Duct Cleaning","Dryer Vent Cleaning","Mold Treatment","Post-Construction Cleaning","HVAC Coil Cleaning","Air Quality Assessment"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=400&h=300&fit=crop","https://images.unsplash.com/photo-1581094794329-c8112a89af12?w=400&h=300&fit=crop"],hours:ot,paymentMethods:nt,reviews:dt,credentials:rt}},Uf=[{label:"7:30 AM – 8:30 AM",value:"7:30-8:30"},{label:"8:30 AM – 11:00 AM",value:"8:30-11:00"},{label:"11:00 AM – 1:00 PM",value:"11:00-13:00"},{label:"1:00 PM – 4:00 PM",value:"13:00-16:00"}];function r$(){return new Date().toISOString().split("T")[0]}function Hw(e){if(!e)return"";const[t,n,i]=e.split("-");return new Date(parseInt(t),parseInt(n)-1,parseInt(i)).toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"})}function s$({contractor:e,onClose:t}){var P;const[n,i]=S.useState(""),[l,d]=S.useState(""),[h,m]=S.useState({firstName:"",lastName:"",email:"",phone:"",street:"",city:"",state:"",zip:"",service:""}),[g,y]=S.useState(!1),[x,w]=S.useState(!1);S.useEffect(()=>{Me.entities.Lead.list("-created_date",1).then(C=>{if(C&&C.length>0){const k=C[0];m({firstName:k.firstName||"",lastName:k.lastName||"",email:k.email||"",phone:k.phone||"",street:k.street||"",city:k.city||"",state:k.state||"",zip:k.zip||"",service:k.service||""})}}).catch(()=>{})},[]);const j=async()=>{var $;if(!n||!l)return;y(!0);const C=Hw(n),k=(($=Uf.find(I=>I.value===l))==null?void 0:$.label)||l,A=e.email||"[email protected]",E=`New Appointment Request from SnapEstimate.AI
879
880Customer: ${h.firstName} ${h.lastName}
881Email: ${h.email}
882Phone: ${h.phone}
883Address: ${h.street}, ${h.city}, ${h.state} ${h.zip}
884Service Requested: ${h.service||e.title||""}
885
886Appointment Date: ${C}
887Time Window: ${k}
888
889Please confirm this appointment with the customer.`;await Me.integrations.Core.SendEmail({to:A,subject:`New Appointment Request — ${h.firstName} ${h.lastName} — ${C}`,body:E}),y(!1),w(!0)};return r.jsx("div",{className:"fixed inset-0 z-50 bg-black/50 flex items-center justify-center px-4",onClick:t,children:r.jsxs("div",{className:"bg-white rounded-2xl shadow-2xl w-full max-w-md p-6 relative",onClick:C=>C.stopPropagation(),children:[r.jsx("button",{onClick:t,className:"absolute top-4 right-4 text-gray-400 hover:text-gray-600",children:r.jsx(Zs,{className:"w-5 h-5"})}),x?r.jsxs("div",{className:"flex flex-col items-center gap-4 py-6",children:[r.jsx(Ci,{className:"w-16 h-16 text-green-500"}),r.jsx("h2",{className:"text-xl font-bold text-gray-800 text-center",children:"Appointment Requested!"}),r.jsxs("p",{className:"text-gray-600 text-center text-sm",children:[e.contractorName," will confirm your appointment for ",r.jsx("strong",{children:Hw(n)})," between ",r.jsx("strong",{children:(P=Uf.find(C=>C.value===l))==null?void 0:P.label}),"."]}),r.jsx("button",{onClick:t,className:"mt-2 bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-bold py-2 px-8 rounded-xl transition-colors",children:"Done"})]}):r.jsxs(r.Fragment,{children:[r.jsxs("h2",{className:"text-xl font-bold text-gray-800 mb-1 flex items-center gap-2",children:[r.jsx(Jh,{className:"w-5 h-5 text-[hsl(197,100%,50%)]"}),"Book Your Appointment"]}),r.jsxs("p",{className:"text-sm text-gray-500 mb-5",children:["with ",e.contractorName]}),(h.firstName||h.email)&&r.jsxs("div",{className:"bg-gray-50 border border-gray-200 rounded-xl px-4 py-3 mb-5 text-sm",children:[r.jsx("p",{className:"font-semibold text-gray-700 mb-1",children:"Your Information"}),r.jsxs("p",{className:"text-gray-600",children:[h.firstName," ",h.lastName]}),h.email&&r.jsx("p",{className:"text-gray-500",children:h.email}),h.phone&&r.jsx("p",{className:"text-gray-500",children:h.phone}),h.street&&r.jsxs("p",{className:"text-gray-500",children:[h.street,", ",h.city,", ",h.state," ",h.zip]}),h.service&&r.jsx("p",{className:"text-[hsl(197,100%,40%)] font-medium mt-1",children:h.service})]}),!h.firstName&&!h.email&&r.jsxs("div",{className:"space-y-3 mb-5",children:[r.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[r.jsxs("div",{children:[r.jsx("label",{className:"block text-xs font-medium text-gray-700 mb-1",children:"First Name"}),r.jsx("input",{type:"text",value:h.firstName,onChange:C=>m({...h,firstName:C.target.value}),className:"w-full border border-gray-300 rounded-lg px-3 py-2 text-sm focus:outline-none focus:border-[hsl(197,100%,50%)]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-xs font-medium text-gray-700 mb-1",children:"Last Name"}),r.jsx("input",{type:"text",value:h.lastName,onChange:C=>m({...h,lastName:C.target.value}),className:"w-full border border-gray-300 rounded-lg px-3 py-2 text-sm focus:outline-none focus:border-[hsl(197,100%,50%)]"})]})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-xs font-medium text-gray-700 mb-1",children:"Email"}),r.jsx("input",{type:"email",value:h.email,onChange:C=>m({...h,email:C.target.value}),className:"w-full border border-gray-300 rounded-lg px-3 py-2 text-sm focus:outline-none focus:border-[hsl(197,100%,50%)]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-xs font-medium text-gray-700 mb-1",children:"Phone"}),r.jsx("input",{type:"tel",value:h.phone,onChange:C=>m({...h,phone:C.target.value}),className:"w-full border border-gray-300 rounded-lg px-3 py-2 text-sm focus:outline-none focus:border-[hsl(197,100%,50%)]"})]})]}),r.jsxs("div",{className:"mb-4",children:[r.jsxs("label",{className:"block text-sm font-semibold text-gray-700 mb-2 flex items-center gap-1.5",children:[r.jsx(Jh,{className:"w-4 h-4 text-[hsl(197,100%,50%)]"})," Select a Date"]}),r.jsx("input",{type:"date",min:r$(),value:n,onChange:C=>i(C.target.value),className:"w-full border-2 border-gray-200 rounded-xl px-4 py-2.5 text-sm focus:outline-none focus:border-[hsl(197,100%,50%)] transition-colors"})]}),r.jsxs("div",{className:"mb-6",children:[r.jsxs("label",{className:"block text-sm font-semibold text-gray-700 mb-2 flex items-center gap-1.5",children:[r.jsx(fm,{className:"w-4 h-4 text-[hsl(197,100%,50%)]"})," Select a Time Window"]}),r.jsx("div",{className:"grid grid-cols-2 gap-2",children:Uf.map(C=>r.jsx("button",{onClick:()=>
889d(C.value),className:`border-2 rounded-xl px-3 py-2.5 text-sm font-medium transition-colors text-center ${l===C.value?"border-[hsl(197,100%,50%)] bg-[hsl(197,100%,96%)] text-[hsl(197,100%,35%)]":"border-gray-200 hover:border-gray-300 text-gray-700"}`,children:C.label},C.value))})]}),r.jsx("button",{onClick:j,disabled:!n||!l||g,className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] disabled:opacity-40 text-white font-bold py-3 rounded-xl transition-colors flex items-center justify-center gap-2",children:g?r.jsx("span",{className:"w-5 h-5 border-2 border-white border-t-transparent rounded-full animate-spin"}):r.jsxs(r.Fragment,{children:[r.jsx(Ci,{className:"w-4 h-4"}),"Confirm Appointment Request"]})})]})]})})}const Vw={BadgeCheck:qf,Briefcase:JN,MapPin:Yg,ShieldCheck:Ud,Users:gm,Clock:fm,Award:FN},i$=["About","Services","Photos","Reviews","Credentials"],o$="https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg";function Hf({rating:e,size:t="sm"}){const n=t==="lg"?"w-5 h-5":"w-4 h-4";return r.jsx("div",{className:"flex items-center gap-0.5",children:[1,2,3,4,5].map(i=>r.jsx(T1,{className:`${n} ${i<=Math.round(e)?"fill-yellow-400 text-yellow-400":"text-gray-300"}`},i))})}function Gs({c:e,serviceSlug:t}){const[n,i]=S.useState("About"),[l,d]=S.useState(!1),[h,m]=S.useState(!1),g=()=>{window.location.href=`tel:${e.phone||"+18339907627"}`},y=()=>{navigator.share?navigator.share({title:e.contractorName,url:window.location.href}):navigator.clipboard.writeText(window.location.href)};return r.jsxs("div",{className:"mb-8",children:[r.jsxs("div",{className:"bg-white rounded-2xl shadow-sm border border-gray-100 p-6 mb-4",children:[r.jsx("div",{className:"flex items-start gap-4 mb-3 flex-col sm:flex-row",children:r.jsxs("div",{className:"flex flex-col items-start gap-4",children:[r.jsxs("div",{className:"flex items-center gap-3",children:[e.logoUrl&&r.jsx("img",{src:e.logoUrl,alt:"Company logo",className:"h-14 w-auto object-contain flex-shrink-0"}),r.jsxs("div",{children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground",children:e.contractorName}),e.tagline&&r.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:e.tagline}),r.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[r.jsx(Hf,{rating:e.rating,size:"lg"}),r.jsx("span",{className:"text-[hsl(197,100%,40%)] font-bold text-sm",children:e.rating}),r.jsxs("span",{className:"text-gray-400 text-sm",children:["(",e.reviewCount," reviews)"]})]})]})]}),r.jsxs("div",{className:"flex flex-col gap-2 w-full",children:[r.jsxs(qe,{onClick:g,className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-bold py-2 rounded-xl text-sm flex items-center gap-2 px-4",children:[r.jsx("img",{src:o$,alt:e.contractorName,className:"w-8 h-8 rounded-full object-cover border-2 border-white flex-shrink-0"}),r.jsx(Er,{className:"w-3.5 h-3.5 flex-shrink-0"}),r.jsx("span",{className:"font-bold",children:"Call or Text"}),r.jsxs("span",{className:"relative flex items-center justify-center",children:[r.jsx("span",{className:"absolute inline-flex h-4 w-4 rounded-full bg-yellow-300 opacity-80 animate-ping"}),r.jsx("span",{className:"relative inline-flex h-2.5 w-2.5 rounded-full bg-yellow-400 border border-white shadow-[0_0_6px_2px_rgba(250,204,21,0.8)]"})]}),r.jsx("span",{className:"text-white font-semibold text-xs",children:"Online Now"})]}),r.jsxs(qe,{onClick:()=>m(!0),className:"bg-green-500 hover:bg-green-600 text-white font-bold py-2 rounded-xl text-sm flex items-center justify-center gap-2 px-4",children:[r.jsx(KN,{className:"w-4 h-4 flex-shrink-0"}),r.jsx("span",{className:"font-bold",children:"Book Appointment Online"})]})]}),r.jsxs("div",{className:"flex flex-col items-stretch gap-2 w-full sm:w-48",children:[r.jsxs("span",{className:"flex items-center justify-center gap-1.5 border border-input bg-background shadow-sm text-xs font-medium px-3 h-8 rounded-md",children:[r.jsx(qf,{className:"w-3.5 h-3.5 text-[hsl(197,100%,40%)]"}),r.jsx("span",{children:"ELITE Pro"})]}),r.jsxs("span",{className:"flex flex-col items-center justify-center border border-input bg-background shadow-sm text-xs font-medium px-3 py-1 rounded-md text-center leading-tight",children:[r.jsxs("span",{children:[r.jsx("span",{className:"text-[hsl(197,100%,50%)]",children:"✓"})," Same Day Service"]}),r.jsx("span",{className:"text-gray-500",children:"Available"})]}),r.jsxs("span",{className:"flex items-center justify-center gap-1.5 border border-input bg-background shadow-sm text-xs font-medium px-3 h-8 rounded-md",children:[r.jsx(qs,{className:"w-3.5 h-3.5 text-[hsl(197,100%,40%)]"}),r.jsx("span",{children:"No Weekend or Emergency Fees"})]}),r.jsxs("button",{onClick:()=>d(!l),className:"flex items-center justify-center gap-1.5 border border-input bg-background shadow-sm text-xs font-medium px-3 h-8 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors",children:[r.jsx(ev,{className:"w-3.5 h-3.5 text-[hsl(197,100%,50%)]"}),r.jsx("span",{children:"Promos & Coupons"}),r.jsx($o,{className:`w-3 h-3 transition-transform ${l?"rotate-180":""}`})]}),r.jsxs("span",{className:"flex flex-col items-center justify-center border border-input bg-background shadow-sm text-xs font-medium px-3 py-1 rounded-md text-center leading-tight",children:[r.jsxs("span",{children:[r.jsx("span",{className:"text-[hsl(197,100%,50%)]",children:"✓"})," 0% Financing"]}),r.jsx("span",{className:"text-gray-500",children:"Available"})]}),r.jsxs("button",{onClick:y,className:"flex items-center justify-center gap-1.5 border border-input bg-background shadow-sm text-xs font-medium px-3 h-8 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors",children:[r.jsx(R5,{className:"w-3.5 h-3.5 text-[hsl(197,100%,50%)]"}),r.jsx("span",{children:"Share"})]})]})]})}),l&&r.jsxs("div",{className:"bg-orange-50 border border-orange-200 rounded-xl p-6 mb-4 space-y-4",children:[r.jsxs("p",{className:"text-xs font-bold text-orange-700 flex items-center gap-1",children:[r.jsx(ev,{className:"w-3.5 h-3.5"}),"Special Promotions & Coupons"]}),r.jsxs("div",{className:"bg-white rounded-lg p-5 border-2 border-dashed border-orange-300 flex items-center gap-4",children:[r.jsx("div",{className:"text-4xl font-black text-orange-500",children:"$50"}),r.jsxs("div",{children:[r.jsx("p",{className:"font-bold text-gray-800 text-sm",children:"OFF for First-Time Customers"}),r.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"Valid on jobs over $3
88900. Mention this coupon when booking."})]})]})]})]}),h&&r.jsx(s$,{contractor:e,onClose:()=>m(!1)}),r.jsxs("div",{className:"bg-white rounded-2xl shadow-sm border border-gray-100 mb-4 overflow-hidden",children:[r.jsx("div",{className:"flex border-b border-gray-100 overflow-x-auto",children:i$.map(x=>r.jsx("button",{onClick:()=>i(x),className:`flex-1 min-w-[70px] px-3 py-3.5 text-sm font-medium transition-colors whitespace-nowrap ${n===x?"text-[hsl(197,100%,40%)] border-b-2 border-[hsl(197,100%,50%)]":"text-gray-500 hover:text-gray-700"}`,children:x},x))}),r.jsxs("div",{className:"p-6",children:[n==="About"&&r.jsxs("div",{className:"space-y-6",children:[r.jsxs("div",{children:[r.jsx("h2",{className:"text-lg font-bold text-foreground mb-2",children:"About"}),r.jsx("p",{className:"text-gray-600 leading-relaxed",children:e.about})]}),r.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[r.jsxs("div",{children:[r.jsx("h3",{className:"text-base font-bold text-foreground mb-3",children:"Overview"}),r.jsx("ul",{className:"space-y-2.5",children:e.overview.map((x,w)=>{const j=Vw[x.iconName]||qf;return r.jsxs("li",{className:"flex items-center gap-2.5",children:[r.jsx(j,{className:"w-4 h-4 flex-shrink-0 text-[hsl(197,100%,40%)]"}),r.jsx("span",{className:"text-gray-700 text-sm",children:x.label})]},w)})})]}),r.jsxs("div",{className:"space-y-6",children:[r.jsxs("div",{children:[r.jsx("h3",{className:"text-base font-bold text-foreground mb-3",children:"Business Hours"}),r.jsx("ul",{className:"space-y-1.5",children:e.hours.map((x,w)=>r.jsxs("li",{className:"flex justify-between text-sm",children:[r.jsx("span",{className:"text-gray-500",children:x.day}),r.jsx("span",{className:"text-gray-800 font-medium",children:x.time})]},w))})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"text-base font-bold text-foreground mb-3",children:"Payment Methods"}),r.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.paymentMethods.map((x,w)=>r.jsxs("span",{className:"inline-flex items-center gap-1 bg-gray-100 text-gray-700 text-xs px-2.5 py-1 rounded-full",children:[r.jsx(y1,{className:"w-3 h-3"}),x]},w))})]})]})]})]}),n==="Services"&&r.jsxs("div",{children:[r.jsx("h2",{className:"text-lg font-bold text-foreground mb-4",children:"Services Offered"}),r.jsx("div",{className:"grid grid-cols-2 gap-2",children:e.services.map((x,w)=>r.jsxs("div",{className:"flex items-center gap-2 bg-gray-50 rounded-xl px-4 py-3 border border-gray-100",children:[r.jsx(qs,{className:"w-4 h-4 text-[hsl(197,100%,50%)] flex-shrink-0"}),r.jsx("span",{className:"text-sm text-gray-700 font-medium",children:x})]},w))})]}),n==="Photos"&&r.jsxs("div",{children:[r.jsx("h2",{className:"text-lg font-bold text-foreground mb-4",children:"Project Photos"}),r.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-3",children:e.photos.map((x,w)=>r.jsx("div",{className:"aspect-square rounded-xl overflow-hidden border border-gray-100",children:r.jsx("img",{src:x,alt:`Project ${w+1}`,className:"w-full h-full object-cover hover:scale-105 transition-transform duration-300"})},w))})]}),n==="Reviews"&&r.jsxs("div",{children:[r.jsx("div",{className:"flex items-center gap-3 mb-6",children:r.jsxs("div",{className:"text-center",children:[r.jsx("div",{className:"text-4xl font-black text-foreground",children:e.rating}),r.jsx(Hf,{rating:e.rating,size:"lg"}),r.jsxs("div",{className:"text-xs text-gray-400 mt-1",children:[e.reviewCount," reviews"]})]})}),r.jsx("div",{className:"space-y-4",children:e.reviews.map((x,w)=>r.jsxs("div",{className:"border border-gray-100 rounded-xl p-4 bg-gray-50",children:[r.jsxs("div",{className:"flex items-center justify-between mb-2",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx("img",{src:x.avatar,alt:x.name,className:"w-8 h-8 rounded-full object-cover"}),r.jsx("span",{className:"font-semibold text-sm text-foreground",children:x.name})]}),r.jsx("span",{className:"text-xs text-gray-400",children:x.date})]}),r.jsx(Hf,{rating:x.rating}),r.jsx("p",{className:"text-gray-600 text-sm mt-2 leading-relaxed",children:x.text}),x.response&&r.jsxs("div",{className:"mt-4 pt-4 border-t border-gray-200",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[x.responseAvatar&&r.jsx("img",{src:x.responseAvatar,alt:"Response",className:"w-6 h-6 rounded-full object-cover"}),r.jsxs("p",{className:"text-xs font-semibold text-[hsl(197,100%,40%)]",children:["Response from ",e.contractorName]})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed whitespace-pre-wrap",children:x.response})]})]},w))})]}),n==="Credentials"&&r.jsxs("div",{children:[r.jsx("h2",{className:"text-lg font-bold text-foreground mb-4",children:"Licenses & Credentials"}),r.jsx("div",{className:"space-y-3",children:e.credentials.map((x,w)=>{const j=Vw[x.iconName]||Ud;return r.jsxs("div",{className:"flex items-start gap-3 border border-gray-100 rounded-xl p-4 bg-gray-50",children:[r.jsx("div",{className:"w-9 h-9 rounded-full bg-[hsl(197,100%,95%)] flex items-center justify-center flex-shrink-0",children:r.jsx(j,{className:"w-4 h-4 text-[hsl(197,100%,40%)]"})}),r.jsxs("div",{children:[r.jsx("p",{className:"font-semibold text-sm text-foreground",children:x.label}),r.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:x.detail})]})]},w)})})]})]})]})]})}const a$=["Smiley","Lesco","A-1 Affordable","1-Tom-Plumber","Arrow Sewer"];function qw(e){return e?a$.some(t=>{var n;return(n=e.contractorName)==null?void 0:n.includes(t)}):!1}function Vg({serviceSlug:e,customerZip:t,embedded:n}){const{serviceSlug:i}=xm(),l=e||i||"plumbing",d=Uw[l],h=`${l}-2`,m=Uw[h]||null,g=qw(d),y=qw(m);if(!g&&!y)return null;const x=r.jsxs(r.Fragment,{children:[g&&r.jsx(Gs,{c:d,serviceSlug:l}),y&&r.jsxs(r.Fragment,{children:[g&&r.jsxs("div",{className:"flex items-center gap-3 my-6",children:[r.jsx("div",{className:"flex-1 h-px bg-gray-200"}),r.jsx("span",{className:"text-sm font-semibold text-gray-400 uppercase tracking-wide",children:"Also Available"}),r.jsx("div",{className:"flex-1 h-px bg-gray-200"})]}),r.jsx(Gs,{c:m,serviceSlug:l})]})]});return n?r.jsxs("div",{className:"w-full",children:[r.jsx("p",{className:"text-sm font-semibold text-foreground mb-3",children:"Pricing provided by:"}),x]}):r.jsxs("div",{className:"min-h-screen flex flex-col bg-gray-50",children:[r.jsx(Lr,{}),r.jsx("div",{className:"max-w-3xl mx-auto w-full px-4 py-6 flex-1",children:x}),r.jsx(tr,{})]})}const l$=[{label:"Air Conditioner Installation",path:"/AirConditionerInstallation"},{label:"Appliance Repair",path:"/ApplianceRepair"},{label:"Basement Waterproofing",path:"/BasementWaterproofing"},{label:"Bathroom Remodeling",path:"/BathroomRemodeling"},{label:"Carpet Cleaning",path:"/CarpetCleaning"},{label:"Chimney Liner & Masonry",path:"/ChimneyLinerMasonry"},{label:"Cleaning",path:"/Cleaning"},{label:"Decks & Porches",path:"/DecksAndPorches"},{label:"Driveway Service",path:"/DrivewayService"},{label:"Duct Cleaning",path:"/DuctCleaning"},{label:"Electrical",path:"/Electrical"},{label:"Fencing",path:"/Fencing"},{label:"Garage Doors",path:"/GarageDoors"},{label:"Gutter Service",path:"/GutterService"},{label:"Handyman Service",path:"/HandymanService"},{label:"Heating System Installation",path:"/HeatingSystemInstallation"},{label:"Home Inspection",path:"/HomeInspection"},{label:"Home Remodeling",path:"/HomeRemodeling"},{label:"Junk Removal",path:"/JunkRemoval"},{label:"Kitchen Remodeling",path:"/KitchenRemodeling"},{label:"Landscaping",path:"/Landscaping"},{label:"Lawn Care",path:"/LawnCare"},{label:"Moving Service",path:"/MovingService"},{label:"New Window & Door",path:"/NewWindowAndDoor"},{label:"Painting",path:"/Painting"},{label:"Pest Control",path:"/PestControl"},{label:"Roofing",path:"/Roofing"},{label:"Sewer Camera Inspection",path:"/SewerCameraInspection"},{label:"Sewer Descaling",path:"/SewerDescaling"},{label:"Sewer Hydro Jetting",path:"/SewerHydroJetting"},{label:"Sewer Relining",path:"/SewerRelining"},{label:"Sewer Rooter Service",path:"/SewerRooterService"},{label:"Siding",path:"/Siding"},{label:"Tree Service",path:"/TreeService"},{label:"Water & Mold Cleanup",path:"/WaterFireRestoration"},{label:"Pool Service",path:"/PoolService"},{label:"Water Heater Installation",path:"/WaterHeaterInstallation"},{label:"Water Softener",path:"/WaterSoftener"}];function c$({compact:e=!1}){const[t,n]=S.useState(!1),i=Hn(),l=d=>{n(!1),i(d),window.scrollTo(0,0)};return r.jsxs(r.Fragment,{children:[t&&!e&&r.jsx("div",{className:"fixed inset-0 z-40",onClick:()=>n(!1)}),e?r.jsxs("button",{onClick:()=>l("/home"),className:"flex items-center justify-center gap-2 bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold rounded-full shadow-lg transition-colors whitespace-nowrap text-sm px-4 py-2 h-10",children:[r.jsx("span",{children:"One Pro for Every Project – View Services"}),r.jsx(Da,{className:"w-3 h-3"})]}):r.jsxs("div",{className:"flex flex-col items-center gap-2",children:[t&&r.jsx("div",{className:"fixed inset-0 z-40",onClick:()=>n(!1)}),r.jsx(Yd,{children:t&&r.jsxs(Ot.div,{initial:{opacity:0,y:10,scale:.95}
889,animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:10,scale:.95},transition:{duration:.15},className:"bg-white border border-gray-200 rounded-2xl shadow-2xl w-72 max-h-72 overflow-y-auto",children:[r.jsx("p",{className:"text-xs font-semibold text-gray-400 uppercase tracking-wide px-4 pt-3 pb-1",children:"All Services"}),r.jsx("ul",{className:"pb-2",children:l$.map(d=>r.jsx("li",{children:r.jsx("button",{onClick:()=>l(d.path),className:"w-full text-left px-4 py-2.5 text-sm text-gray-700 hover:bg-[hsl(197,100%,95%)] hover:text-[hsl(197,100%,35%)] transition-colors",children:d.label})},d.path))})]})}),r.jsxs("button",{onClick:()=>n(!t),className:"flex items-center justify-center gap-2 bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold rounded-full shadow-lg transition-colors whitespace-nowrap text-sm px-4 py-2 h-10",children:[r.jsx("span",{children:"One Pro for Every Project – View Services"}),t?r.jsx($o,{className:"w-3 h-3"}):r.jsx(Da,{className:"w-3 h-3"})]})]})]})}delete R4.Icon.Default.prototype._getIconUrl;R4.Icon.Default.mergeOptions({iconRetinaUrl:"https://unpkg.com/[email protected]/dist/images/marker-icon-2x.png",iconUrl:"https://unpkg.com/[email protected]/dist/images/marker-icon.png",shadowUrl:"https://unpkg.com/[email protected]/dist/images/marker-shadow.png"});const Th={"Air Conditioner Installation":{title:"Air Conditioner Installation",highDemand:!0,priceRange:"$5,300 – $12,500",intro:"Air conditioning in New Jersey requires careful sizing and installation. High electricity rates and variable cooling demands make choosing the right system critical for long-term savings.",equipment:"16-18 SEER2 Condensing unit, evaporator coil, and smart thermostat.",pricingInsights:"High NJ electricity rates (approx. 19¢/kWh) make high-efficiency units essential for a 5-year ROI.",costDrivers:"Attic vs. basement placement and the need for new refrigerant line sets.",redFlags:`Contractors who don't perform a "Manual J" load calculation to size the unit correctly.`,njTip:"A proper Manual J calculation is essential—oversized units waste money, undersized units don't cool effectively.",step6RedFlagNote:"especially for electrical, plumbing, or structural work",step6Tiers:[{tier:"Premium",range:"$10,000+",scope:"High-SEER2 multi-zone systems or full ductwork replacement."},{tier:"Standard",range:"$5,500 – $8,500",scope:"Standard central air unit swap-out using existing ducts."},{tier:"Entry",range:"$3,500 – $5,000",scope:"Smaller 1.5 - 2 ton units or major system repairs."}]},"Appliance Repair":{title:"Appliance Repair",priceRange:"$150 – $600",intro:"Appliance repairs in New Jersey are often more cost-effective than replacement, especially for high-end units. Understanding service call fees and warranty coverage protects your investment.",equipment:"OEM replacement parts (sensors, heating elements, or motors).",pricingInsights:"NJ service call fees typically range from $100 to $175, usually applied toward the repair.",costDrivers:'Sealed system repairs (refrigeration) or high-end "Smart" motherboard replacements.',redFlags:"Technicians who don't offer at least a 90-day warranty on parts and labor.",njTip:"Always get a written warranty on parts and labor—90 days minimum is standard.",step6Tiers:[{tier:"Premium",range:"$600 – $900+",scope:"Control board replacements or sealed system/compressor work."},{tier:"Standard",range:"$350 – $550",scope:"Common mechanical fixes (pumps, belts, or sensors)."},{tier:"Entry",range:"$150 – $250",scope:"Diagnostic visit fee plus minor calibration."}]},"Bathroom Remodeling":{title:"Bathroom Remodeling",priceRange:"$15,000 – $45,000",intro:"Bathroom remodeling is one of the highest-ROI home improvements in New Jersey. NJ's strict plumbing codes and older infrastructure make hiring experienced contractors essential.",equipment:"Waterproofing systems (Schluter), vanities, and high-efficiency toilets.",pricingInsights:"NJ labor for a full gut is premium; moving plumbing stacks in older homes is a major expense.",costDrivers:"Transitioning from a tub to a walk-in shower and custom tile patterns.",redFlags:"Skipping the mandatory 24-hour shower pan flood test.",njTip:"The 24-hour shower pan test is non-negotiable in NJ—it prevents costly water damage.",step6RedFlagNote:"especially for electrical, plumbing, or structural work",step6Tiers:[{tier:"Premium",range:"$40,000+",scope:"Master suite expansion, high-end tile, and custom glass."},{tier:"Standard",range:"$18,000 – $28,000",scope:'Full "gut" renovation of a standard 5x8 bathroom.'},{tier:"Entry",range:"$8,000 – $12,000",scope:'"Refresh" including new vanity, toilet, and floor overlay.'}]},"Chimney Liner & Masonry":{title:"Chimney Liner & Masonry",priceRange:"$2,000 – $5,000",intro:"Chimney safety in New Jersey is non-negotiable. Aging chimneys and fire code compliance require professional assessment and proper materials.",equipment:"UL-listed stainless steel liners and high-heat mortar.",pricingInsights:"Essential for NJ fire code compliance when upgrading to a high-efficiency furnace.",costDrivers:'Height of the chimney and the amount of "tu
889ckpointing" (mortar repair) needed.',redFlags:"Using aluminum liners for wood-burning appliances; only stainless steel is safe.",njTip:"Always use UL-listed stainless steel liners—aluminum is not safe for wood-burning appliances.",step6Tiers:[{tier:"Premium",range:"$8,000+",scope:"Partial chimney rebuild or high-end stone facing."},{tier:"Standard",range:"$3,500 – $5,500",scope:"Stainless steel liner installation and tuck-pointing."},{tier:"Entry",range:"$1,200 – $2,200",scope:"Chimney cap replacement and minor crown repair."}]},Cleaning:{title:"Professional Cleaning",priceRange:"$150 – $800",intro:"Professional cleaning services in New Jersey require proper insurance and expertise. Understanding what's included protects both you and the cleaning crew.",equipment:"HEPA-filter vacuums and hospital-grade disinfectants.",pricingInsights:"NJ rates often factor in high travel/toll costs for crews.",costDrivers:'Square footage and "move-out" vs. standard maintenance depth.',redFlags:"Companies without worker's compensation insurance; you are liable if a cleaner is injured on your property.",njTip:"Always verify worker's compensation insurance before hiring—you're liable if someone is injured.",step6Tiers:[{tier:"Premium",range:"$650+",scope:"Post-construction deep clean or full estate move-out."},{tier:"Standard",range:"$300 – $450",scope:"Full deep clean for a 3-bedroom home."},{tier:"Entry",range:"$150 – $250",scope:"Recurring bi-weekly maintenance cleaning."}]},"Decks & Porches":{title:"Decks & Porches",priceRange:"$4,000 – $35,000",intro:"Deck construction in New Jersey must account for harsh winter weather and strict building codes. Proper materials and installation ensure safety and longevity.",equipment:"Pressure-treated lumber or composite (Trex/Azek) and concrete footings.",pricingInsights:'NJ frost lines require deep footings (36"+) to prevent "heaving" in winter.',costDrivers:"Composite material costs and the addition of lighting or built-in seating.",redFlags:"Building without a permit; NJ towns are notorious for forcing homeowners to tear down unpermitted decks.",njTip:"Always get a permit—unpermitted decks can be forced to be torn down, and it affects resale.",step6RedFlagNote:"especially for electrical, plumbing, or structural work",step6Tiers:[{tier:"Premium",range:"$35,000+",scope:"Multi-level composite (Azek/Trex) with integrated lighting."},{tier:"Standard",range:"$15,000 – $25,000",scope:"Pressure-treated wood deck (approx. 16x20)."},{tier:"Entry",range:"$6,000 – $10,000",scope:"Platform deck or major railing and stair replacement."}]},"Driveway Service":{title:"Driveway Service",highDemand:!0,priceRange:"$4,000 – $8,000",intro:"Driveway installation in New Jersey requires understanding local soil conditions and freeze-thaw cycles. Proper preparation prevents premature failure and costly replacements.",equipment:"Hot-mix asphalt or decorative pavers.",pricingInsights:"NJ's freeze-thaw cycle requires a 6-inch stone base for asphalt to last more than 3 years.",costDrivers:'Excavation of "clay soil" common in NJ and the thickness of the asphalt pour.',redFlags:'Contractors offering "leftover" asphalt from another job; it will be too cold to bond correctly.',njTip:"A proper 6-inch stone base is essential in NJ—without it, your asphalt will fail in 2-3 years.",step6Tiers:[{tier:"Premium",range:"$15,000+",scope:"Concrete pavers or heated driveway systems."},{tier:"Standard",range:"$6,000 – $10,000",scope:'Full asphalt "rip and replace" with new sub-base.'},{tier:"Entry",range:"$1,500 – $3,000",scope:"Asphalt resurfacing (top coat) or extensive patching."}]},Electrical:{title:"Electrical",priceRange:"$150 – $4,500",intro:"Electrical work in New Jersey is strictly regulated. Using licensed professionals ensures code compliance and your home's safety.",equipment:"Copper wiring, AFCI/GFCI breakers, and 200-amp panels.",pricingInsights:"NJ code is strict; any panel upgrade requires a specialized electrical sub-code permit.",costDrivers:"Fishing wires through finished walls vs. open construction.",redFlags:'"Handymen" doing electrical work. NJ requires a licensed Master Electrician for most tasks.',njTip:"Only hire licensed Master Electricians for electrical work—never trust handymen for this.",step6RedFlagNote:"especially for electrical, plumbing, or structural work",step6Tiers:[{tier:"Premium",range:"$4,500+",scope:"Full 200-amp panel upgrade and whole-house surge protection."},{tier:"Standard",range:"$1,500 – $2,800",scope:"Dedicated circuits for EVs or kitchen appliance upgrades."},{tier:"Entry",range:"$250 – $650",scope:"Basic outlet, switch, or light fixture replacements."}]},Fencing:{title:"Fencing",priceRange:"$2,500 – $12,000",intro:"Fence installation in New Jersey involves property line verification and underground utility detection. Proper planning prevents costly disputes and accidents.",equipment:"Vinyl, Aluminum, or Cedar panels.",pricingInsights:"NJ property line disputes are common; always get a fresh survey before installation.",costDrivers:"Digging in rocky NJ soil and the total linear footage.",redFlags:"Setting posts in soil without concrete or failing to check for underground utility lines (Call 811).",njTip:"Always call 811 before digging and get a fresh survey to avoid property disputes.",step6Tiers:[{tier:"Premium",range:"$12,000+",scope:"Ornamental aluminum or premium horizontal cedar privacy fencing."},{tier:"Standard",range:"$5,500 – $8,500",scope:"White vinyl privacy fencing or standard wood picket."},{tier:"Entry",range:"$2,500 – $4,500",scope:"Chain link fencing or repair/replacement of existing sections."}]},"Garage Doors":{title:"Garage Doors",priceRange:"$800 – $2,500",intro:"Garage door installation in New Jersey requires considering the harsh winter climate. Proper insulation protects your home's temperature control and energy efficie
889ncy.",equipment:"Insulated steel doors and torsion spring systems.",pricingInsights:'High-R-value (insulated) doors are a "must" in NJ to protect attached garages from winter cold.',costDrivers:'Custom glass inserts and high-horsepower "Smart" openers.',redFlags:"Re-using old tracks with a new door; tracks warp over time and cause safety sensor failures.",njTip:"Always replace old tracks with a new door—warped tracks cause safety failures.",step6Tiers:[{tier:"Premium",range:"$5,000+",scope:"Custom wood or carriage-house doors with high-end insulation."},{tier:"Standard",range:"$2,200 – $3,500",scope:"Standard double-car steel door with professional installation."},{tier:"Entry",range:"$1,100 – $1,800",scope:"Basic single-layer steel door or major spring/motor replacement."}]},"Gutter Service":{title:"Gutter Service",priceRange:"$200 – $4,000",intro:"Gutter installation and maintenance in New Jersey is critical for protecting your home from water damage. Quality gutters prevent foundation issues and basement flooding.",equipment:"Seamless aluminum gutters and micro-mesh guards.",pricingInsights:"NJ's heavy fall foliage makes high-quality gutter guards a high-ROI investment.",costDrivers:"Total linear feet and the height (stories) of the home.",redFlags:"Gutters pitched incorrectly; water must move toward the downspout, not sit in the middle.",njTip:"Proper pitch is essential—gutters should slope slightly toward downspouts to prevent pooling.",step6Tiers:[{tier:"Premium",range:"$4,500+",scope:"Seamless copper gutters or high-end permanent leaf filtration systems."},{tier:"Standard",range:"$1,800 – $3,000",scope:"New 6-inch seamless aluminum gutters and downspouts."},{tier:"Entry",range:"$250 – $600",scope:"Comprehensive cleaning, pitch adjustment, and minor leak repairs."}]},"Handyman Service":{title:"Handyman Service",priceRange:"$150 – $1,500",intro:"Handyman services are perfect for small repairs and maintenance. Understanding scope limitations ensures quality work without safety risks.",equipment:"General trade tools and hardware consumables.",pricingInsights:'Most NJ pros have a 2-hour minimum "show up" fee ($150–$250).',costDrivers:"The number of different trades involved (e.g., drywall + plumbing + paint).",redFlags:"Handymen taking on structural, electrical, or major plumbing work without proper licensing.",njTip:"Handymen are great for small projects but not for electrical, structural, or major plumbing work.",step6Tiers:[{tier:"Premium",range:"$1,500+",scope:'Full-day rate for complex multi-room repairs or "punch list" completions.'},{tier:"Standard",range:"$400 – $750",scope:"Half-day of service (approx. 4 hours) for mounting or hardware fixes."},{tier:"Entry",range:"$100 – $250",scope:"Single-task service call (e.g., fixing a single fixture or faucet)."}]},"Heating System Installation":{title:"Heating System Installation",priceRange:"$4,000 – $18,000",intro:"Heating system selection in New Jersey is evolving. State incentives for heat pumps are making efficient heating more affordable than ever.",equipment:"Gas furnaces, Boilers, or Electric Heat Pumps.",pricingInsights:"NJ is aggressively moving toward heat pumps with state-funded rebates (up to $2k).",costDrivers:"Converting from oil to gas and the efficiency (AFUE) rating.",redFlags:"Installing a new unit on an old, leaky chimney without a new liner.",njTip:"NJ heat pump rebates can reach $2k—check current incentives before choosing your system.",step6RedFlagNote:"especially for electrical, plumbing, or structural work",step6Tiers:[{tier:"Premium",range:"$12,000+",scope:"High-efficiency boiler systems or multi-stage gas furnaces with smart zoning."},{tier:"Standard",range:"$6,000 – $9,000",scope:"Standard 80-90% AFUE gas furnace replacement."},{tier:"Entry",range:"$4,000 – $5,500",scope:"Basic electric furnace or major heat exchanger repairs."}]},"Home Inspection":{title:"Home Inspection",priceRange:"$350 – $900",intro:"Home inspections in New Jersey almost always require separate testing. Understanding what's included protects your investment in a new property.",equipment:"Thermal cameras, moisture meters, and drones.",pricingInsights:"NJ inspections almost always require a separate Radon test ($150).",costDrivers:'Size of the home and specialized "Sewer Scopes."',redFlags:"Inspectors who don't crawl into the attic or crawlspace.",njTip:"Always include a radon test and sewer scope in your inspection—they're standard in NJ.",step6Tiers:[{tier:"Premium",range:"$1,200+",scope:"Full inspection plus specialized testing (Radon, Mold, Sewer, Termite)."},{tier:"Standard",range:"$650 – $850",scope:"Standard pre-purchase inspection for a single-family home."},{tier:"Entry",range:"$450 – $600",scope:"Inspection for smaller condos, townhomes, or specific structural checks."}]},"Home Remodeling":{title:"Home Remodeling",priceRange:"$50,000 – $400,000+",intro:"Large-scale home remodeling in New Jersey requires patience with permitting and careful project management. Understanding timelines prevents budget overruns.",equipment:"Structural beams, flooring, and dry-walling.",pricingInsights:'NJ permitting for "whole-home" projects can take 2–4 months depending on the town.',costDrivers:"Removing load-bearing walls and architect fees.",redFlags:'No "Sc
889hedule of Values" in the contract; you need to know exactly what you are paying for at each stage.',njTip:`Always insist on a detailed "Schedule of Values" so you know exactly what you're paying for.`,step6RedFlagNote:"especially for electrical, plumbing, or structural work",step6Tiers:[{tier:"Premium",range:"$150,000+",scope:"Whole-house gut renovation including structural changes."},{tier:"Standard",range:"$60,000 – $100,000",scope:"Multi-room renovation with mid-range materials."},{tier:"Entry",range:"$15,000+",scope:'Cosmetic "refresh" of a single large room (flooring, paint, and trim).'}]},Painting:{title:"Interior House Painting",priceRange:"$1,000 – $9,000",intro:"Professional interior painting in New Jersey emphasizes preparation over application. Understanding labor distribution helps you evaluate competitive quotes.",equipment:"Low-VOC paints (Benjamin Moore/Sherwin Williams) and industrial sprayers.",pricingInsights:'NJ labor focuses on "Prep Time"; sanding and patching usually take 60% of the total time.',costDrivers:'Ceiling height and the amount of intricate "crown molding" or trim.',redFlags:"Painters who don't move furniture or cover floors with drop cloths (not plastic).",njTip:"Quality prep work takes 60% of the time—never rush this phase.",step6Tiers:[{tier:"Premium",range:"$15,000+",scope:"Full exterior painting or high-end interior decorative finishes."},{tier:"Standard",range:"$4,000 – $7,000",scope:"Interior painting for 3–4 rooms including ceiling and trim."},{tier:"Entry",range:"$500 – $900",scope:"Single room painting or minor exterior touch-up work."}]},"Junk Removal":{title:"Junk Removal",priceRange:"$100 – $950",intro:"Junk removal in New Jersey involves strict disposal regulations. Using licensed haulers ensures your waste is disposed of legally and responsibly.",equipment:"Dump trucks and lifting equipment.",pricingInsights:'NJ landfill "tipping fees" are weight-based and among the highest in the US.',costDrivers:'Volume (truckloads) and the presence of "hazardous" items (tires/paint).',redFlags:'"Fly-by-night" haulers who illegally dump in NJ woods; you are legally responsible if your junk is found.',njTip:"Always use licensed haulers—you're legally responsible if your junk is illegally dumped.",step6Tiers:[{tier:"Premium",range:"$1,200+",scope:"Multi-load estate cleanouts or heavy construction debris removal."},{tier:"Standard",range:"$500 – $800",scope:"Full 14-foot truckload of mixed household items and furniture."},{tier:"Entry",range:"$150 – $300",scope:"Single large item (like a sofa) or a quarter-truck load."}]},"Kitchen Remodeling":{title:"Kitchen Remodeling",priceRange:"$30,000 – $90,000",intro:"Kitchen remodeling in New Jersey involves intensive permitting and complex coordination. Proper planning prevents costly delays and unexpected expenses.",equipment:"Cabinets, Quartz/Granite counters, and appliances.",pricingInsights:'NJ "permitting" for gas and plumbing is intensive for kitchen remodels.',costDrivers:"Custom vs. semi-custom cabinetry and moving the kitchen island.",redFlags:"Countertops installed on un-leveled cabinets, causing future stone cracking.",njTip:"Cabinets must be perfectly level before countertops are installed—no shortcuts.",step6RedFlagNote:"especially for electrical, plumbing, or structural work",step6Tiers:[{tier:"Premium",range:"$75,000+",scope:"Custom cabinetry, pro-grade appliances, and quartz/exotic stone tops."},{tier:"Standard",range:"$35,000 – $55,000",scope:"Full replacement with semi-custom cabinets and new layout."},{tier:"Entry",range:"$15,000 – $25,000",scope:"Cabinet refacing, new countertops, and backsplash installation."}]},Landscaping:{title:"Landscaping",priceRange:"$1,500 – $25,000",intro:"Landscaping in New Jersey requires understanding local soil and environmental conditions. Proper design creates beautiful, low-maintenance outdoor spaces.",equipment:"Excavators, sod, and nursery-grade plants.",pricingInsights:`NJ's heavy clay soil often requires "French Drains" for proper yard health.`,costDrivers:"Hardscaping (patios/walls) and mature tree plantings.",redFlags:"Planting invasive species (like certain bamboos) which are restricted in some NJ towns.",njTip:"Never plant invasive species like certain bamboos—they're restricted in many NJ towns.",step6Tiers:[{tier:"Premium",range:"$20,000+",scope:"Full landscape design, hardscaping, and high-end privacy plantings."},{tier:"Standard",range:"$3,000 – $7,000",scope:"New garden bed installations, sodding, and shrub planting."},{tier:"Entry",range:"$500 – $1,500",scope:"Seasonal mulching, basic garden cleanup, and hedge trimming."}]},"Lawn Care":{title:"Lawn Care",priceRange:"$50 – $1,800 (Annual)",intro:"Professional lawn care in New Jersey is seasonal. Understanding regional services ensures your lawn stays healthy year-round.",equipment:"Commercial mowers, aerators, and fertilizers.",pricingInsights:'NJ "Spring Cleanups" are a standard regi
889onal service to remove winter debris.',costDrivers:'Total acreage and "Grub Control" treatments.',redFlags:"Mowing too short during a NJ July heatwave, which kills the root system.",njTip:"Never mow too short in summer heat—it stresses the grass and kills the roots.",step6Tiers:[{tier:"Premium",range:"$150 – $250+",scope:"Per-visit mowing for large estate properties (1+ acre)."},{tier:"Standard",range:"$50 – $110",scope:"Per-visit mowing for standard suburban lots (1/4 to 1/2 acre)."},{tier:"Entry",range:"$35 – $45",scope:"Per-visit mowing for small townhome or urban lots (1/8 acre)."}]},"Moving Service":{title:"Moving Service",priceRange:"$600 – $8,000",intro:"Moving services in New Jersey are regulated for intrastate moves. Understanding licensing requirements protects you from unscrupulous operators.",equipment:"Moving trucks, lift-gates, and protective wrap.",pricingInsights:'NJ "Intrastate" moves are regulated; movers must have a NJ Warehouseman/Mover license.',costDrivers:"Number of bedrooms and the distance/tolls.",redFlags:'Quotes given over the phone without a "visual" walk-through (video or in-person).',njTip:"Always get an in-person or video walkthrough before accepting a moving quote.",step6Tiers:[{tier:"Premium",range:"$6,000+",scope:"Full-service packing and moving for a large 4+ bedroom home."},{tier:"Standard",range:"$2,500 – $4,500",scope:"Standard move for a 2–3 bedroom home (local NJ move)."},{tier:"Entry",range:"$800 – $1,500",scope:"Small apartment or studio move with minimal heavy furniture."}]},"New Window & Door":{title:"New Windows & Doors",priceRange:"$700 – $1,500 (Per Unit)",intro:"Window replacement in New Jersey requires understanding climate performance ratings. Energy Star certification is essential for utility savings.",equipment:"Vinyl, Wood, or Fiberglass frames and Argon-gas panes.",pricingInsights:`NJ's climate requires "North-Central" Energy Star ratings to actually lower utility bills.`,costDrivers:'Full-frame replacement vs. "Insert" replacement.',redFlags:"Gaps between the frame and the house that are only filled with caulk instead of expanding foam.",njTip:"Expanding foam is essential for proper insulation—caulk alone is not enough.",step6Tiers:[{tier:"Premium",range:"$25,000+",scope:"Whole-house window replacement with high-efficiency units."},{tier:"Standard",range:"$1,200 – $1,800",scope:"Per-unit cost for pro-grade vinyl or fiberglass replacement windows."},{tier:"Entry",range:"$600 – $900",scope:'Basic "pocket" window inserts or standard interior door replacements.'}]},"Pest Control":{title:"Pest Control",priceRange:"$150 – $950",intro:"Pest control in New Jersey requires understanding regional pest pressures. Regular inspections are the best defense against costly damage.",equipment:"Specialized baits, foggers, and perimeter barriers.",pricingInsights:'NJ is a "Termite Belt"; annual inspections are highly recommended for wood-frame homes.',costDrivers:'Active infestation treatment vs. preventative "Quarterly" plans.',redFlags:"Technicians who don't identify the entry point of the pests.",njTip:"NJ is termite country—annual inspections are a must for wood-frame homes.",step6Tiers:[{tier:"Premium",range:"$3,000+",scope:"Intensive termite remediation or active bed bug heat treatments."},{tier:"Standard",range:"$600 – $900",scope:"Annual preventative maintenance plan (quarterly visits)."},{tier:"Entry",range:"$150 – $300",scope:"One-time targeted treatment for a specific issue."}]},Roofing:{title:"Roofing",highDemand:!0,priceRange:"$12,000 – $30,000",intro:"Roofing in New Jersey is one of the largest home investments a homeowner will make. NJ's strict building codes, coastal weather patterns, and aging housing stock make choosing the right contractor and materials absolutely critical.",equipment:"Architectural shingles, Drip edge, and synthetic underlayment.",pricingInsights:"NJ building code restricts homeowners to a maximum of 2 layers of shingles.",costDrivers:"Roof pitch (steepness) and chimney flashing complexity.",redFlags:'Skipping the "Ice and Water" shield at the eaves (mandatory in NJ).',njTip:"NJ code requires the Ice & Water shield—never skip it, and keep records for resale.",step6Tiers:[{tier:"Premium",range:"$25,000+",scope:"High-end materials like slate, clay tile, or premium metal systems."},{tier:"Standard",range:"$10,000 – $18,000",scope:"Full tear-off and replacement with architectural shingles."},{tier:"Entry",range:"$6,000 – $9,000",scope:"Basic 3-tab shingle replacement or significant repairs."}]},"Sewer Camera Inspection":{title:"Sewer Camera Inspection",priceRange:"$200 – $500",intro:"Sewer camera inspections in New Jersey are often a required step before home sales and are strongly recommended before purchasing any older property. Knowing the condition of your lateral line can prevent costly surprises.",equipment:"Fiber-
889optic cameras with locator beacons.",pricingInsights:"Often required in NJ before home sales to verify the integrity of the line to the street.",costDrivers:'Length of the run and accessibility of the "Cleanout."',redFlags:"Inspectors who don't give you a USB/Digital copy of the video.",njTip:"Always get a digital copy of your sewer camera inspection for your records and resale.",step6Tiers:[{tier:"Premium",range:"$600+",scope:"Full scope with digital recording and underground utility locating."},{tier:"Standard",range:"$350 – $500",scope:"Standard diagnostic scope of the main sewer line to the street."},{tier:"Entry",range:"$150 – $300",scope:"Simple visual scope for a localized drain blockage."}]},"Sewer Descaling":{title:"Sewer Descaling",priceRange:"$350 – $800",intro:"Sewer descaling is a specialized service particularly important in New Jersey's older communities, where decades of cast iron pipe use has resulted in heavy interior rust buildup. Proper descaling restores flow without the cost of full pipe replacement.",equipment:"High-speed rotating chains and flexible shafts.",pricingInsights:"Essential for NJ's old cast iron pipes to restore flow without replacing the whole line.",costDrivers:'The amount of "tuberculation" (rust buildup) inside the pipe.',redFlags:'Descaling a pipe that is already "paper thin," which can cause it to collapse.',njTip:"Camera inspect your sewer line first—never descale a pipe without knowing its condition.",step6Tiers:[{tier:"Premium",range:"$2,500+",scope:"Extensive descaling of old cast iron pipes throughout the entire line."},{tier:"Standard",range:"$1,200 – $1,800",scope:"Standard descaling to restore flow and prepare for relining."},{tier:"Entry",range:"$800 – $1,100",scope:"Targeted descaling of a specific problematic section."}]},"Sewer Hydro Jetting":{title:"Sewer Hydro Jetting",priceRange:"$350 – $800",intro:"Hydro jetting is the most powerful sewer cleaning method available and the only lasting solution for NJ's tree root and grease blockage problems. Understanding when to use it vs. other methods is key.",equipment:"4,000 PSI water jetters with specialized nozzles.",pricingInsights:"The only effective way to clear NJ tree roots and grease blockages permanently.",costDrivers:'Diameter of the pipe and the number of "turns" in the line.',redFlags:"Using high pressure on very old, cracked clay pipes without a prior camera inspection.",njTip:"Always camera-inspect before hydro jetting—it's the only way to know if your pipes can handle it.",step6Tiers:[{tier:"Premium",range:"$1,500+",scope:"High-pressure commercial-grade jetting for complex blockages."},{tier:"Standard",range:"$750 – $1,100",scope:"Standard main line hydro jetting for roots, grease, and debris."},{tier:"Entry",range:"$450 – $650",scope:"Targeted jetting for a secondary line or minor maintenance."}]},"Sewer Relining":{title:"Sewer Relining",priceRange:"$6,000 – $15,000",intro:"Trenchless sewer relining is a revolutionary technology that saves New Jersey homeowners from the nightmare of excavating their driveways and lawns. Understanding the process and its limitations is essential before committing.",equipment:"Epoxy resin liners (trenchless technology).",pricingInsights:'Saves NJ homeowners thousands in "re-paving" costs for driveways.',costDrivers:'Pipe diameter and the number of "lateral" connections.',redFlags:'Not measuring the "cure time" properly, leading to a wavy or failed liner.',njTip:"Trenchless relining saves NJ homeowners thousands on driveway re-paving—worth the investment.",step6RedFlagNote:"especially for electrical, plumbing, or structural work",step6Tiers:[{tier:"Premium",range:"$15,000+",scope:"Full trenchless pipe bursting or CIPP (Cured-In-Place Pipe)."},{tier:"Standard",range:"$7,000 – $10,000",scope:"Mid-range relining or partial line replacement."},{tier:"Entry",range:"$4,000 – $6,000",scope:"Sectional point repair for a specific break or root intrusion."}]},"Sewer Rooter Service":{title:"Sewer Rooter Service",priceRange:"$150 – $450",intro:"Sewer rooter service is the standard emergency response for a backed-up drain in New Jersey. While it provides fast relief, it's often a temporary fix—understanding what comes next is key to a lasting solution.",equipment:"Mechanical snakes with cutting blades.",pricingInsights:'A standard "emergency" service for NJ backups; usually a temporary fix until jetting or relining.',costDrivers:"After-hours/Weekend emergency rates.",redFlags:`Companies that don't offer a 30-day "no-clog" guarantee.`,njTip:"Rooter service is temporary—follow up with hydro jetting or relining to prevent future clogs.",step6Tiers:[{tier:"Premium",range:"$900+",scope:"Emergency after-hours service or removal of severe structural roots."},{tier:"Standard",range:"$450 – $700",scope:"Mechanical snaking/rooter service to restore flow in main line."},{tier:"Entry",range:"$250 – $400",scope:"Basic snaking for secondary drain line (sink, tub, floor drain)."}]},Siding:{title:"Siding",priceRange:"$12,000 – $45,000",intro:"Siding replacement in New Jersey is a major exterior project that protects your home from the elements while dramatically improving curb appeal. NJ's coastal weather and older homes with asbestos siding create unique challenges.",equipment:"Vinyl, Hardie Plank, or Fiber Cement.",pricingInsights:'Coastal NJ siding requires high-wind "clipping" systems.',costDrivers:"Removal of old cedar shakes or asbestos siding.",redFlags:'No "House Wrap" (Tyvek) installed under the new siding.',njTip:"House wrap is essential in NJ to prevent water infiltration—never skip it.",step6Tiers:[{tier:"Premium",range:"$45,000+",scope:"Fiber cement (James Hardie) or engineered wood on a large home."},{tier:"Standard",range:"$18,000 – $30,000",scope:"Full vinyl siding replacement including trim, soffit, and fascia."},{tier:"Entry",range:"$6,000 – $12,000",scope:"Partial siding replacement or major storm damage repair."}]},"Tree Service":{title:"Tree Service",priceRange:"$800 – $5,000",intro:"Tree removal and care in New Jersey involves navigating local permit requirements, working around power lines, and understanding state-specific tree preservation laws. Hiring a certified arborist protects both your property and your liability.",equipment:"Cranes, wood chippers, and stump grinders.",pricingInsights:'NJ "Tree Removal Permits" vary by town; some require an Arborist report.',costDrivers:"Proximity to power lines and the size (diameter) of the trunk.",redFlags:'"Topping" a tree (cutt
889ing the top off), which is considered malpractice by ISA arborists.',njTip:'Always hire certified ISA arborists—avoid "topping" which damages tree health.',step6Tiers:[{tier:"Premium",range:"$5,000+",scope:'Large tree (24"+ diameter) removal near power lines or structures.'},{tier:"Standard",range:"$1,500 – $3,500",scope:'Standard tree removal (12–24" diameter) including stump grinding.'},{tier:"Entry",range:"$400 – $900",scope:"Small tree removal, stump grinding only, or crown trimming."}]},"Basement Waterproofing":{title:"Basement Waterproofing",priceRange:"$4,500 – $12,000 (Standard Residential)",intro:"Professional basement waterproofing in New Jersey is critical due to the high water table in coastal and low-lying areas. Understanding the difference between interior and exterior methods helps you choose the right solution for your home.",equipment:"Jackhammers, industrial-grade sump pumps, French drains, and vapor barriers.",pricingInsights:"In New Jersey, the high water table in coastal and low-lying areas often makes battery backup systems a non-negotiable standard for insurance purposes.",costDrivers:"Linear footage of the perimeter and the method of excavation (Interior vs. Exterior).",redFlags:'Contractors who promise a "lifetime guarantee" without explaining the mechanical maintenance required for sump pumps.',njTip:"Always check if your municipality requires a plumbing permit for sump pump discharge—illegal discharge into the sanitary sewer can lead to heavy fines.",step6RedFlagNote:"especially for structural and plumbing work",step6Tiers:[{tier:"Premium",range:"$15,000 – $30,000+",scope:"Full exterior excavation, foundation membrane application, and structural reinfor
889cement."},{tier:"Standard",range:"$4,500 – $12,000",scope:"Full interior French drain system with a high-capacity sump pump and battery backup."},{tier:"Entry",range:"$800 – $2,500",scope:"Minor crack injections, localized water diversion, or basic sump pump replacement."}],customRedFlags:[{title:'The "Cash-Only" Discount',body:"Signals a lack of insurance, leaving you liable for injuries on your property."},{title:"Missing HIC Registration",body:"If they don't have a 13VH number, they are operating illegally in NJ."},{title:"High Upfront Deposits",body:"Standard practice is 10–25% to secure the date."},{title:"Pressure to Skip Permits",body:"Avoiding inspections compromises your home's safety and resale value. Check with your local building department to confirm whether a permit is required for your type of work."},{title:'Vague "Lump Sum" Bids',body:"Bids should specify exactly how many linear feet of drain are being installed."}]},"Water Softener":{title:"Water Softener Systems",priceRange:"$1,500 – $3,500 (Standard Installation)",intro:"Professional water softener installation in New Jersey is influenced by county-specific water hardness and plumbing complexity. Understanding your water quality before purchasing ensures you get the right system.",equipment:"Resin tanks, brine tanks, control valves, and bypass piping.",pricingInsights:'NJ "Hard Water" varies by county; northern counties often require higher grain capacity units due to mineral content in well water.',costDrivers:"Grain capacity (tank size) and the complexity of the existing plumbing integration.",redFlags:'Contractors who perform a "water test" and use high-pressure sales tactics without providing a laboratory-grade analysis.',njTip:"If you are on a private well in NJ, ensure your softener is calibrated specifically to your latest state-mandated water test results.",step6RedFlagNote:"especially for new pipe integrations requiring a Master Plumber license",step6Tiers:[{tier:"Premium",range:"$4,000 – $6,500+",scope:"Whole-house multi-stage filtration combos with smart-monitoring and salt-free technology."},{tier:"Standard",range:"$1,500 – $3,500",scope:"Standard ion-exchange salt-based softener integrated into existing plumbing loops."},{tier:"Entry",range:"$800 – $1,400",scope:"Basic single-tank units or point-of-use systems for specific fixtures."}],customRedFlags:[{title:'The "Cash-Only" Discount',body:"Likely indicates a contractor skipping professional liability insurance."},{title:"Missing HIC Registration",body:"All NJ plumbing and home service contractors must be registered (13VH)."},{title:"High Upfront Deposits",body:'These are typically "pay-on-completion" or 25% deposit jobs.'},{title:"Pressure to Skip Permits",body:"New plumbing lines and drainage for backwashing require municipal oversight."},{title:'Vague "Lump Sum" Bids',body:"Ensure the bid specifies the brand and grain capacity of the unit being installed."}]},"Duct Cleaning":{title:"Duct Cleaning",priceRange:"$350 – $1,000+",intro:"Air duct cleaning in New Jersey is an often-overlooked home maintenance task that has a direct impact on indoor air quality and HVAC efficie
889ncy. NJ's humid summers and cold winters create ideal conditions for dust, mold spores, and allergens to build up inside ductwork.",equipment:"Truck-mounted or portable HEPA-filtered vacuum systems, rotary brush agitation equipment, and EPA-registered sanitizing agents.",pricingInsights:"NJ pricing is driven by the number of supply and return vents, not just square footage. Homes with multiple HVAC zones or recent renovation debris will cost significantly more.",costDrivers:"Number of vents and air handlers, presence of mold or heavy debris, dryer vent cleaning as an add-on, and whether the home has flexible vs. hard metal ductwork.",redFlags:'Extremely low prices ($49–$99 "whole house" deals) are almost always bait-and-switch scams. A real whole-house cleaning requires specialized equipment and takes 3–5 hours minimum.',njTip:"Always hire NADCA-certified contractors. In NJ's humid climate, ducts should be inspected every 3–5 years. After any major renovation, a duct cleaning is highly recommended.",step6Tiers:[{tier:"Premium",range:"$800 – $1,200+",scope:"Large homes with multiple HVAC zones, mold sanitizing treatment, and dryer vent cleaning included."},{tier:"Standard",range:"$400 – $700",scope:"Full source-removal cleaning for a 3–4 bedroom home with up to 20 vents."},{tier:"Entry",range:"$250 – $380",scope:"Smaller homes or condos with a single air handler and up to 10 vents."}]},"Water Heater Installation":{title:"Water Heater Replacement",highDemand:!0,priceRange:"$1,500 – $4,500",intro:"Water heater replacement in New Jersey offers significant savings opportunities through state and federal incentives, particularly for hybrid heat pump models. Understanding NJ plumbing code requirements prevents costly violations.",equipment:"Tank-style or Tankless (Gas/Electric) units.",pricingInsights:'NJ energy rebates are massive for "Hybrid Heat Pump" water heaters (up to $1,000).',costDrivers:"Converting from tank to tankless (requires gas line upgrades).",redFlags:'Skipping the "Expansion Tank," which is required by NJ plumbing code.',njTip:"Hybrid Heat Pump water heaters qualify for a federal tax credit AND NJ utility rebates that can total over $1,000 in immediate savings.",step6Tiers:[{tier:"Premium",range:"$4,500+",scope:"Tankless on-demand gas or Hybrid Heat Pump water heater installation."},{tier:"Standard",range:"$1,800 – $3,200",scope:"Standard 50-gallon gas water heater replacement with expansion tank."},{tier:"Entry",range:"$900 – $1,500",scope:"Basic 40-gallon electric tank replacement."}]},"Carpet Cleaning":{title:"Carpet Cleaning",priceRange:"$150 – $600+",intro:"Professional carpet cleaning in New Jersey involves specialized equipment and expertise to handle diverse carpet types and soiling conditions. Understanding the difference between cleaning methods helps you get the best value.",equipment:"Truck-mounted or portable HEPA-filtered hot water extraction systems.",pricingInsights:"NJ pricing is driven by square footage and the level of soiling. Stain removal and pet odor treatment are common add-ons.",costDrivers:"Room count, carpet condition, presence of pet odors, and specialized stain treatments.",redFlags:"Companies offering extremely low per-room rates without on-site inspections; they may oversell add-on services.",njTip:"Professional carpet cleaning extends the life of your carpet and improves indoor air quality—recommended every 12-18 months.",step6Tiers:[{tier:"Premium",range:"$600+",scope:"Large homes or deep cleaning with premium stain treatments."},{tier:"Standard",range:"$300 – $450",scope:"Full carpet cleaning for a 3–4 bedroom home."},{tier:"Entry",range:"$150 – $250",scope:"Spot cleaning or small room cleaning."}],customRedFlags:[{title:'The "Cash-Only" Discount',body:"Likely indicates a contractor skipping professional liability insurance."},{title:"Missing HIC Registration",body:"All NJ cleaning service contractors should be registered professionals with liability coverage."},{title:"High Upfront Deposits",body:'These are typically "pay-on-completion" or 25% deposit jobs.'},{title:"Pressure to Skip Permits",body:"Check with your local building department to confirm whether a permit is required for your type of work."},{title:"Vague Pricing",body:"Ensure the bid specifies square footage, room count, and any additional stain treatment costs."}]},"Water & Fire Restoration":{title:"Water & Fire Restoration",priceRange:"$2,500 – $25,000+",intro:"Water and fire damage restoration in New Jersey requires swift professional action to minimize property loss and prevent secondary damage like mold. Understanding restoration methods helps you make informed decisions during emergencie
889s.",equipment:"Industrial dehumidifiers, air movers, moisture meters, HEPA vacuums, thermal imaging, and specialized cleaning equipment.",pricingInsights:"NJ restoration is urgent work—faster response prevents mold growth. Water damage costs $2,500–$10,000+, fire damage $5,000–$25,000+ depending on extent.",costDrivers:"Scope of damage (water in crawlspace vs. entire basement), affected materials, mold remediation needs, structural repairs, and emergency response time.",redFlags:"Contractors who pressure you without thorough inspection, work without proper licenses, demand cash-only, or ignore mold concerns.",njTip:"NJ restoration contractors should be IICRC-certified. Verify certification directly with IICRC. Insurance companies often have preferred vendors—check with them first.",step6Tiers:[{tier:"Premium",range:"$15,000+",scope:"Large-scale damage, structural repairs, and comprehensive mold remediation."},{tier:"Standard",range:"$5,000 – $12,000",scope:"Water extraction, dehumidification, and cleanup for multi-room damage."},{tier:"Entry",range:"$2,500 – $5,000",scope:"Localized water damage or minor fire cleanup."}],customRedFlags:[{title:"No Moisture Mapping",body:"Reputable contractors use moisture meters and thermal imaging. Skipping this step leads to hidden structural damage."},{title:"Inadequate Dehumidification Plan",body:'Industrial dehumidifiers must run for days/weeks. Quick claims of "just open windows" will leave moisture behind, causing mold.'},{title:"Rushing Restoration",body:"Quality drying and structural assessment takes time. Fast estimates promising quick completion may hide damage."},{title:"Missing IICRC Certification",body:"IICRC-certified contractors follow industry standards. Always verify certification directly."},{title:"Pressure to Skip Permits",body:"Restoration often requires permits. Contractors avoiding inspections compromise your safety and resale value."}]}},d$=e=>[{label:"Timeline"},{label:`${e?e.replace(" Installation",""):"Service"} Details`},{label:"See Your Online Estimate & Homeowner's Guide"}],Eh={"air-conditioner":"Air Conditioner Installation","air-conditioner-installation":"Air Conditioner Installation",appliance:"Appliance Repair","appliance-repair":"Appliance Repair",bathroom:"Bathroom Remodeling","bathroom-remodeling":"Bathroom Remodeling",chimney:"Chimney Liner & Masonry","chimney-liner-masonry":"Chimney Liner & Masonry",cleaning:"Cleaning",decks:"Decks & Porches","decks-and-porches":"Decks & Porches",driveway:"Driveway Service","driveway-service":"Driveway Service",electrical:"Electrical",fencing:"Fencing",garage:"Garage Doors","garage-doors":"Garage Doors",gutter:"Gutter Service","gutter-service":"Gutter Service",handyman:"Handyman Service","handyman-service":"Handyman Service",heating:"Heating System Installation","heating-system-installation":"Heating System Installation","home-inspection":"Home Inspection","home-remodeling":"Home Remodeling","junk-removal":"Junk Removal",kitchen:"Kitchen Remodeling","kitchen-remodeling":"Kitchen Remodeling",landscaping:"Landscaping",lawn:"Lawn Care","lawn-care":"Lawn Care",moving:"Moving Service","moving-service":"Moving Service",window:"New Window & Door","new-window-and-door":"New Window & Door",painting:"Painting",pest:"Pest Control","pest-control":"Pest Control",roofing:"Roofing","sewer-camera":"Sewer Camera Inspection","sewer-camera-inspection":"Sewer Camera Inspection","sewer-descaling":"Sewer Descaling","sewer-hydro":"Sewer Hydro Jetting","sewer-hydro-jetting":"Sewer Hydro Jetting","sewer-relining":"Sewer Relining","sewer-rooter":"Sewer Rooter Service","sewer-rooter-service":"Sewer Rooter Service",siding:"Siding",tree:"Tree Service","tree-service":"Tree Service","duct-cleaning":"Duct Cleaning","water-heater":"Water Heater Installation","water-heater-installation":"Water Heater Installation",basement:"Basement Waterproofing","basement-waterproofing":"Basement Waterproofing","water-softener":"Water Softener",carpet:"Carpet Cleaning","carpet-cleaning":"Carpet Cleaning","water-fire":"Water & Fire Restoration","water-fire-restoration":"Water & Fire Restoration"};function qg({serviceSlug:e,initialTimeline:t,startStep:n=1,onClose:i}){const l=Hn(),[d]=v_(),{serviceSlug:h}=xm(),m=e||h,g=ae=>ae&&(Eh[ae.toLowerCase()]||Eh[decodeURIComponent(ae).toLowerCase()])||"",y=g(m)||d.get("service")||"",[x,w]=S.useState(y),j=x||y,P=j||Object.keys(Th)[0];S.useEffect(()=>{const ae=g(m);ae&&w(ae)},[m]);const[C,k]=S.useState(n),[A,E]=S.useState(!1),[$,I]=S.useState(""),[M,F]=S.useState(""),[z,V]=S.useState(""),[W,ne]=S.useState(""),[de,be]=S.useState(null),[Re,Je]=S.useState(null),[Ie,mt]=S.useState(""),[Se,je]=S.useState([]),[X,ue]=S.useState(null),[q,O]=S.useState(t||""),te=S.useRef(null);S.useRef(null);const[ye,ge]=S.useState(""),[pe,re]=S.useState(""),[$e,He]=S.useState(!0),[De,Et]=S.useState(""),[It,kt]=S.useState(""),[dn,un]=S.useState(!0),[Bt,Be]=S.useState(!1),[At,zt]=S.useState(!1),[xn,Rt]=S.useState(""),[Vn,En]=S.useState(""),[Ks,Bo]=S.useState(null),[fr,nr]=S.useState(!1),Mr=()=>{const ae=Math.floor(Math.random()*9)+1,Ce=Math.floor(Math.random()*9)+1;return{a:ae,b:Ce,answer:ae+Ce}},[on,js]=S.useState(()=>Mr()),[qn,Jn]=S.useState(""),[Ys,gr]=S.useState(!1),[ns,Ir]=S.useState(["","","",""]),ks=[S.useRef(null),S.useRef(null),S.useRef(null),S.useRef(null)],[rr,rs]=S.useState(0),[ss,$r]=S.useState("your area");S.useEffect(()=>{(async()=>{try{const Ce=d.get("zip")||sessionStorage.getItem("userZip")||localStorage.getItem("userZip");if(Ce&&Ce.length===5){const Qe=await Me.functions.invoke("getUserState",{zip:Ce}),Ge=Qe.data.city||"your area",Ke=Qe.data.state||"";$r(Ge),ne(Ce),Ge&&Ge!=="your area"&&F(Ge),Ke&&V(Ke)}else{const Qe=await Me.functions.invoke("getUserState",{});$r(Qe.data.city||"your area")}}catch{$r("your area")}})()},[d]),S.useEffect(()=>{var pt;rs(0);let ae=0;const Ce=((pt=Th[j])==null?void 0:pt.highDemand)||!1,Qe=Kd(j,Ce),Ke=Qe/60,Xt=setInterval(()=>{ae+=Ke,ae>=Qe?(rs(Qe),clearInterval(Xt)):rs(Math.floor(ae))},150);return()=>clearInterval(Xt)},[P]);const[vn,An]=S.useState(""),[Ri,fe]=S.useState(!1),[Oe,at]=S.useState(!1),[bt,Jt]=S.useState(!1),[Gn,is]=S.useState(!1),[Va,Li]=S.useState(!1),yr=Object.keys(Eh).filter(ae=>Eh[ae]===j).sort((ae,Ce)=>Ce.length-ae.length)[0]||"",hn=S.useRef(!0);S.useEffect(()=>{if(hn.current){hn.current=!1;return}k(1),at(!1),Jt(!1),mt(""),je([]),O(""),ge(""),re(""),Et(""),I(""),F(""),V(""),ne(""),ue(null),kt(""),un(!1),Jn(""),js(Mr()),Ir(["","","",""]),Be(!1),Rt(""),nr(!1)},[m]);const Ne=10,Cs=ae=>{const Qe=Array.from(ae.target.files).map(Ge=>({file:Ge,url:URL.createObjectURL(Ge)}));je(Ge=>[...Ge,...Qe].slice(0,Ne))},Mi=ae=>{je(Ce=>Ce.filter((Qe,Ge)=>Ge!==ae))},zo=nn.useRef(""),Wo=nn.useRef(null),Ii=async()=>{zt(!0),Rt("");try{const ae=await Me.functions.invoke("sendVerificationSMS",{phoneNumber:It});zo.current=String(ae.data.code),Wo.current=ae.data.sentAt,En(ae.data.code),Bo(ae.data.sentAt),Be(!0)}catch{Rt("Failed to send code. Please try again.")}finally{zt(!1)}},Dr=ae=>{const Qe=Wo.current,Ge=zo.current;if(!Ge){Rt("Code not received yet. Please resend.");return}if(Qe&&Date.now()-Qe>6e5){Rt("Code expired. Please request a new one."),Ir(["","","",""]),nr(!1);return}if(ae!==Ge){Rt("Incorrect code. Please try again."),Ir(["","","",""]),nr(!1),setTimeout(()=>{var Ke;return(Ke=ks[0].current)==null?void 0:Ke.focus()},50);return}Rt(""),nr(!0)},os=async()=>
889{if(C===4){if(parseInt(qn,10)!==on.answer){gr(!0);return}Ii(),k(5);return}if(C<5)k(C+1);else if(C===5){let ae=[],Ce=null;if(Se.length>0&&(ae=await Promise.all(Se.map(async Ge=>{const{file_url:Ke}=await Me.integrations.Core.UploadFile({file:Ge.file});return Ke}))),X){const{file_url:Ge}=await Me.integrations.Core.UploadFile({file:X.file});Ce=Ge}console.log("SUBMIT: effectiveService=",j,"contractorSlug=",yr);let Qe="";try{const Ge=await Me.entities.ContractorAssignment.filter({serviceSlug:yr,isActive:!0});Ge&&Ge.length>0&&(Qe=Ge[0].contractorEmail)}catch{}await Me.entities.Lead.create({firstName:ye,lastName:pe,email:De,phone:It,street:$,city:M,state:z,zip:W,service:j,serviceSlug:yr,timeline:q,projectDescription:Ie,contractorId:`contractor_${yr}`,assignedContractorEmail:Qe||void 0,photoUrls:ae.length>0?ae:void 0,videoUrl:Ce||void 0,callCount:0,leadQuality:"new",status:"new"}),Jt(!0),at(!0),k(5),setTimeout(()=>Jt(!1),800)}else if(C===6){const Ce={"Air Conditioner Installation":"/estimate/air-conditioner-installation","Appliance Repair":"/estimate/appliance-repair","Bathroom Remodeling":"/estimate/bathroom-remodeling","Chimney Liner & Masonry":"/estimate/chimney-liner-masonry",Cleaning:"/estimate/cleaning","Decks & Porches":"/estimate/decks-and-porches","Driveway Service":"/estimate/driveway-service",Electrical:"/estimate/electrical",Fencing:"/estimate/fencing","Garage Doors":"/estimate/garage-doors","Gutter Service":"/estimate/gutter-service","Handyman Service":"/estimate/handyman-service","Heating System Installation":"/estimate/heating-system-installation","Home Inspection":"/estimate/home-inspection","Home Remodeling":"/estimate/home-remodeling","Junk Removal":"/estimate/junk-removal","Kitchen Remodeling":"/estimate/kitchen-remodeling",Landscaping:"/estimate/landscaping","Lawn Care":"/estimate/lawn-care","Moving Service":"/estimate/moving-service","New Window & Door":"/estimate/new-window-and-door",Painting:"/estimate/painting","Pest Control":"/estimate/pest-control",Roofing:"/estimate/roofing","Sewer Camera Inspection":"/estimate/sewer-camera-inspection","Sewer Descaling":"/estimate/sewer-descaling","Sewer Hydro Jetting":"/estimate/sewer-hydro-jetting","Sewer Relining":"/estimate/sewer-relining","Sewer Rooter Service":"/estimate/sewer-rooter-service",Siding:"/estimate/siding","Tree Service":"/estimate/tree-service","Duct Cleaning":"/estimate/duct-cleaning","Water Heater Installation":"/estimate/water-heater","Basement Waterproofing":"/estimate/basement-waterproofing","Water Softener":"/estimate/water-softener","Carpet Cleaning":"/estimate/carpet-cleaning","Water Fire Restoration":"/estimate/water-fire-restoration"}[j]||"/";l(Ce)}};S.useEffect(()=>{fr&&C===5&&!Oe&&(async()=>{try{let Ce=[],Qe=null;if(Se.length>0&&(Ce=await Promise.all(Se.map(async Ke=>{const{file_url:Xt}=await Me.integrations.Core.UploadFile({file:Ke.file});return Xt}))),X){const{file_url:Ke}=await Me.integrations.Core.UploadFile({file:X.file});Qe=Ke}let Ge="";try{const Ke=await Me.entities.ContractorAssignment.filter({serviceSlug:yr,isActive:!0});Ke&&Ke.length>0&&(Ge=Ke[0].contractorEmail)}catch{}await Me.entities.Lead.create({firstName:ye,lastName:pe,email:De,phone:It,street:$,city:M,state:z,zip:W,service:j,serviceSlug:yr,timeline:q,projectDescription:Ie,contractorId:`contractor_${yr}`,assignedContractorEmail:Ge||void 0,photoUrls:Ce.length>0?Ce:void 0,videoUrl:Qe||void 0,callCount:0,leadQuality:"new",status:"new"}),Jt(!0),at(!0),setTimeout(()=>Jt(!1),800)}catch(Ce){console.error("Error submitting lead:",Ce),Rt("Error submitting form. Please try the Next button.")}})()},[fr,C,Oe]);const Qs=d$(P),qa=Oe?3:C<=2?1:C===3?2:3;return r.jsxs("div",{className:"min-h-screen w-full flex flex-col items-center justify-end pb-0 relative overflow-visible",children:[bt&&r.jsxs("div",{className:"fixed inset-0 z-50 bg-white/80 backdrop-blur-sm flex flex-col items-center justify-center gap-3",children:[r.jsx("div",{className:"w-10 h-10 border-4 border-[hsl(197,100%,70%)] border-t-[hsl(197,100%,50%)] rounded-full animate-spin"}),r.jsx("p",{className:"text-sm font-medium text-[hsl(197,100%,40%)]",children:"Preparing your estimate…"})]}),!Oe&&r.jsx("div",{className:"absolute inset-0 z-0 bg-gradient-to-b from-[hsl(197,100%,97%)] to-[hsl(213,40%,92%)]"}),r.jsxs(Ot.div,{initial:{opacity:0,y:40}
889,animate:{opacity:1,y:0},transition:{duration:.4},className:"relative z-10 w-full max-w-2xl max-h-[90vh] bg-white rounded-t-3xl shadow-2xl px-8 pt-10 pb-10 mx-auto overflow-y-auto",children:[r.jsxs("div",{className:"mb-8 px-2",children:[r.jsx("div",{className:"flex items-center justify-between",children:Qs.map((ae,Ce)=>{const Qe=qa-1,Ge=Oe||Ce<Qe,Ke=!Oe&&Ce===Qe,Xt=Ge||Ke;return r.jsxs(nn.Fragment,{children:[r.jsx("div",{className:`w-10 h-10 rounded-full flex items-center justify-center border-2 transition-colors flex-shrink-0 ${Xt?"bg-[hsl(197,100%,50%)] border-[hsl(197,100%,50%)]":"bg-gray-200 border-gray-300"}`,children:Ge?r.jsx(Ci,{className:"w-5 h-5 text-white"}):r.jsx("span",{className:`text-sm font-semibold ${Ke?"text-white":"text-gray-400"}`,children:Ce+1})}),Ce<Qs.length-1&&r.jsx("div",{className:`flex-1 h-0.5 mx-2 transition-colors ${Oe||Ce<Qe?"bg-[hsl(197,100%,50%)]":"bg-gray-200"}`})]},ae.label)})}),r.jsx("div",{className:"flex items-start justify-between mt-2",children:Qs.map((ae,Ce)=>{const Qe=qa-1,Ge=Oe||Ce<Qe,Ke=!Oe&&Ce===Qe,Xt=Ge||Ke;return r.jsx("div",{className:"flex flex-col items-center",style:{width:"40px"},children:r.jsx("span",{className:`text-xs text-center leading-tight ${Ke?"text-[hsl(197,100%,40%)] font-semibold":Xt?"text-[hsl(197,100%,40%)]":"text-gray-400"}`,style:{width:"64px",marginLeft:"-12px"},children:ae.label})},ae.label)})})]}),C===1&&r.jsx(A4,{service:P,timeline:q,setTimeline:O,quoteCount:rr,userTown:ss,effectiveService:j}),C===2&&r.jsxs(r.Fragment,{children:[r.jsxs("h2",{className:"text-3xl font-bold text-center text-foreground mb-6",children:["Explain your ",r.jsx("strong",{children:P||j})," needs:"]}),r.jsx("textarea",{placeholder:`In your own words — tell us about your ${P||j||"service"} needs.`,value:Ie,onChange:ae=>mt(ae.target.value),rows:5,className:"w-full border border-gray-300 rounded-lg px-4 py-3 text-base text-foreground resize-none focus:outline-none focus:border-[hsl(197,100%,50%)] transition-colors mb-5"}),r.jsxs("div",{className:"grid grid-cols-3 gap-3 mb-4",children:[r.jsxs("label",{className:`flex-1 border-2 border-dashed border-gray-300 hover:border-[hsl(197,100%,50%)] rounded-xl p-4 flex flex-col items-center justify-center cursor-pointer transition-colors ${Se.length>=Ne?"opacity-40 pointer-events-none":""}`,children:[r.jsx("input",{type:"file",accept:"image/*",capture:"environment",className:"absolute opacity-0 w-0 h-0",onChange:Cs,disabled:Se.length>=Ne}),r.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-7 h-7 text-gray-400 mb-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:[r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"}),r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M15 13a3 3 0 11-6 0 3 3 0 016 0z"})]}),r.jsx("p",{className:"text-xs text-gray-500 font-medium",children:"Take Photo"}),r.jsx("p",{className:"text-xs text-[hsl(197,100%,50%)]",children:"(optional)"})]}),r.jsxs("label",{className:`flex-1 border-2 border-dashed border-gray-300 hover:border-[hsl(197,100%,50%)] rounded-xl p-4 flex flex-col items-center justify-center cursor-pointer transition-colors ${Se.length>=Ne?"opacity-40 pointer-events-none":""}`,children:[r.jsx("input",{ref:te,type:"file",accept:"image/*",multiple:!0,className:"absolute opacity-0 w-0 h-0",onChange:Cs,disabled:Se.length>=Ne}),r.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-7 h-7 text-gray-400 mb-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M3 16l4-4a3 3 0 014 0l4 4m-2-2l1.5-1.5a3 3 0 014 0L21 16M8 7a1 1 0 110-2 1 1 0 010 2zm13 9H3a1 1 0 01-1-1V6a1 1 0 011-1h18a1 1 0 011 1v12a1 1 0 01-1 1z"})}),r.jsx("p",{className:"text-xs text-gray-500 font-medium",children:"Upload from Library"}),r.jsx("p",{className:"text-xs text-[hsl(197,100%,50%)]",children:"(optional)"})]}),r.jsxs("label",{className:"border-2 border-dashed border-gray-300 hover:border-[hsl(197,100%,50%)] rounded-xl p-4 flex flex-col items-center justify-center cursor-pointer transition-colors",children:[r.jsx("input",{type:"file",accept:"video/*",className:"absolute opacity-0 w-0 h-0",onChange:ae=>{var Ce;if((Ce=ae.target.files)!=null&&Ce[0]){const Qe=ae.target.files[0],Ge=URL.createObjectURL(Qe);ue({file:Qe,url:Ge})}}}),r.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-7 h-7 text-gray-400 mb-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:[r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"}),r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})]}),r.jsx("p",{className:"text-xs text-gray-500 font-medium",children:"Upload Video"}),r.jsx("p",{className:"text-xs text-[hsl(197,100%,50%)]",children:"(optional)"})]})]}),(Se.length>0||X)&&r.jsxs("div",{className:"flex flex-wrap gap-3",children:[X&&r.jsxs("div",{className:"relative w-20 h-20 rounded-lg overflow-hidden border border-gray-200 bg-gray-900",children:[r.jsx("video",{src:X.url,className:"w-full h-full object-cover"}),r.jsx("button",{onClick:()=>ue(null),className:"absolute top-0.5 right-0.5 w-5 h-5 bg-red-500 text-white rounded-full flex items-center justify-center text-xs font-bold leading-none",children:"×"})]}),Se.map((ae,Ce)=>r.jsxs("div",{className:"relative w-20 h-20 rounded-lg overflow-hidden border border-gray-200",children:[r.jsx("img",{src:ae.url,alt:"",className:"w-full h-full object-cover"}),r.jsx("button",{onClick:()=>Mi(Ce),className:"absolute top-0.5 right-0.5 w-5 h-5 bg-red-500 text-white rounded-full flex items-center justify-center text-xs font-bold leading-none",children:"×"})]},Ce))]})]}),C===3&&r.jsxs(r.Fragment,{children:[r.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold text-center text-foreground mb-6",children:["Get your instant ",j?j.toLowerCase():"service"," quote"]}),r.jsxs("div",{className:"grid grid-cols-2 gap-4 mb-5",children:[r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"First Name"}),r.jsx(ht,{type:"text",placeholder:"John",value:ye,onChange:ae=>ge(ae.target.value),className:"h-12 text-base border border-gray-300 rounded-lg px-4 w-full"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Last Name"}
889),r.jsx(ht,{type:"text",placeholder:"Doe",value:pe,onChange:ae=>re(ae.target.value),className:"h-12 text-base border border-gray-300 rounded-lg px-4 w-full"})]})]}),r.jsxs("div",{className:"mb-5",children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Email Address"}),r.jsx(ht,{type:"email",placeholder:"[email protected]",value:De,onChange:ae=>Et(ae.target.value),className:"h-12 text-base border border-gray-300 rounded-lg px-4 w-full"})]}),r.jsxs("div",{className:"mb-5",children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Street Address"}),r.jsx(ht,{type:"text",placeholder:"123 Main St",value:$,onChange:ae=>I(ae.target.value),className:"h-12 text-base border border-gray-300 rounded-lg px-4 w-full"})]}),r.jsxs("div",{className:"grid grid-cols-3 gap-4 mb-5",children:[r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"City"}),r.jsx(ht,{type:"text",placeholder:"New York",value:M,onChange:ae=>F(ae.target.value),className:"h-12 text-base border border-gray-300 rounded-lg px-4 w-full"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"State"}),r.jsx(ht,{type:"text",placeholder:"NY",value:z,onChange:ae=>V(ae.target.value),className:"h-12 text-base border border-gray-300 rounded-lg px-4 w-full"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Zip Code"}),r.jsx(ht,{type:"text",placeholder:"10001",value:W,onChange:ae=>ne(ae.target.value),className:"h-12 text-base border border-gray-300 rounded-lg px-4 w-full"})]})]})]}),C===4&&r.jsxs(r.Fragment,{children:[r.jsx("h1",{className:"text-2xl sm:text-3xl font-bold text-center text-foreground mb-2",children:"One last step!"}),r.jsx("p",{className:"text-2xl sm:text-3xl font-bold text-center text-[hsl(197,100%,50%)] mb-6",children:"Enter your phone number"}),r.jsxs("div",{className:"mb-5",children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Phone Number"}),r.jsx(ht,{type:"tel",placeholder:"(555) 123-4567",value:It,onChange:ae=>kt(ae.target.value),className:"h-12 text-base border border-gray-300 rounded-lg px-4 w-full"})]}),r.jsxs("div",{className:"mb-5",children:[r.jsxs("label",{className:"block text-sm font-medium text-foreground mb-2",children:["Anti-Spam Check: What is ",on.a," + ",on.b,"?"]}),r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",placeholder:"Your answer",value:qn,onChange:ae=>{const Ce=ae.target.value.replace(/\D/g,"");Jn(Ce),gr(!1)},onBlur:ae=>{const Ce=ae.target.value;Ce&&parseInt(Ce)!==on.answer&&gr(!0)},className:`h-12 text-base border-2 rounded-lg px-4 w-40 transition-colors focus:outline-none ${Ys?"border-red-500 bg-red-50 text-red-600 animate-pulse":"border-gray-300 focus:border-[hsl(197,100%,50%)]"}`}),Ys&&r.jsx("span",{className:"text-red-500 text-sm font-medium",children:"Wrong answer, try again"}),r.jsx("button",{type:"button",onClick:()=>{js(Mr()),Jn(""),gr(!1)},className:"text-xs text-[hsl(197,100%,40%)] underline",children:"New question"})]})]})]}),C===5&&!Oe&&r.jsx(r.Fragment,{children:At?r.jsxs("div",{className:"flex flex-col items-center gap-3 py-8",children:[r.jsx("div",{className:"w-8 h-8 border-4 border-[hsl(197,100%,70%)] border-t-[hsl(197,100%,50%)] rounded-full animate-spin"}),r.jsxs("p",{className:"text-gray-500 text-sm",children:["Sending code to ",It,"…"]})]}):r.jsxs(r.Fragment,{children:[r.jsx("h1",{className:"text-2xl sm:text-3xl font-bold text-center text-foreground mb-2",children:"Enter the code we sent to your phone"}),r.jsx("p",{className:"text-center text-gray-500 mb-6",children:"To see your Homeowner's Guide & Online Estimate"}),xn&&r.jsx("p",{className:"text-red-500 text-center mb-4",children:xn}),r.jsx("div",{className:"flex justify-center mb-6",children:r.jsx("input",{ref:ks[0],type:"text",inputMode:"numeric",pattern:"[0-9]*",maxLength:4,value:ns.join(""),placeholder:"0000",autoComplete:"one-time-code",onChange:ae=>
889{const Ce=ae.target.value.replace(/\D/g,"").slice(0,4),Qe=Ce.split("").concat(["","","",""]).slice(0,4);Ir(Qe),Rt(""),Ce.length===4&&Dr(Ce)},className:`w-48 h-16 text-center text-3xl font-bold tracking-[0.5em] border-2 rounded-xl focus:outline-none transition-colors ${fr?"border-green-400 bg-green-50 text-green-600":"border-gray-300 focus:border-[hsl(197,100%,50%)]"}`})}),r.jsxs("p",{className:"text-center text-xs text-gray-400",children:["Didn't get a code?"," ",r.jsx("button",{onClick:Ii,className:"text-[hsl(197,100%,40%)] underline",children:"Resend"})]})]})}),Oe&&r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"flex justify-center mb-6",children:r.jsx("div",{className:"w-16 h-16 rounded-full bg-green-100 flex items-center justify-center",children:r.jsx(Ci,{className:"w-9 h-9 text-green-500"})})}),r.jsx("h1",{className:"text-2xl sm:text-3xl font-bold text-center text-foreground mb-2",children:"Your estimate is ready!"}),r.jsxs("p",{className:"text-center text-gray-500 text-sm mb-6",children:[P," - Preliminary Estimate"]}),r.jsx("p",{className:"text-sm text-gray-600 leading-relaxed text-center mb-6 bg-gray-50 rounded-xl px-4 py-4",children:"We’ve sent your project details over to our network of pre-vetted local pros to secure the best pricing for your home. We’re excited to share that an Elite specialist in your area meets our strict quality standards! Check out their estimated price breakdown below—they'll be in touch soon to provide your exact quote."}),r.jsx("div",{className:"fixed bottom-40 left-1/2 -translate-x-1/2 z-50",children:r.jsx(c$,{compact:!0})}),Th[P]&&(()=>{const ae=Th[P],Ce=(ae==null?void 0:ae.step6Tiers)||[],Qe=z||"NJ",Ke={AL:"Alabama",AK:"Alaska",AZ:"Arizona",AR:"Arkansas",CA:"California",CO:"Colorado",CT:"Connecticut",DE:"Delaware",FL:"Florida",GA:"Georgia",HI:"Hawaii",ID:"Idaho",IL:"Illinois",IN:"Indiana",IA:"Iowa",KS:"Kansas",KY:"Kentucky",LA:"Louisiana",ME:"Maine",MD:"Maryland",MA:"Massachusetts",MI:"Michigan",MN:"Minnesota",MS:"Mississippi",MO:"Missouri",MT:"Montana",NE:"Nebraska",NV:"Nevada",NH:"New Hampshire",NJ:"New Jersey",NM:"New Mexico",NY:"New York",NC:"North Carolina",ND:"North Dakota",OH:"Ohio",OK:"Oklahoma",OR:"Oregon",PA:"Pennsylvania",RI:"Rhode Island",SC:"South Carolina",SD:"South Dakota",TN:"Tennessee",TX:"Texas",UT:"Utah",VT:"Vermont",VA:"Virginia",WA:"Washington",WV:"West Virginia",WI:"Wisconsin",WY:"Wyoming",DC:"Washington DC"}[Qe.toUpperCase()]||Qe,Xt=pt=>pt&&pt.replace(/New Jersey/g,Ke).replace(/\bNJ\b/g,Qe.toUpperCase()||"NJ");return r.jsxs("div",{children:[r.jsxs("div",{className:"bg-[hsl(197,100%,96%)] border border-[hsl(197,100%,80%)] rounded-xl px-6 py-4 mb-4 flex items-center gap-3",children:[r.jsx(oc,{className:"w-6 h-6 text-[hsl(197,100%,40%)] flex-shrink-0"}),r.jsxs("span",{className:"text-[hsl(197,100%,30%)] font-bold text-lg",children:[ss," Area Price Range: ",ae.priceRange]})]}),Ce.length>0&&r.jsx("div",{className:"space-y-3 mb-6",children:Ce.map((pt,Uo)=>r.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-4 border border-gray-200 rounded-xl px-5 py-4",children:[r.jsx("span",{className:"font-bold text-foreground w-24",children:pt.tier}),r.jsx("span",{className:"text-[hsl(197,100%,35%)] font-semibold w-32",children:pt.range}),r.jsx("span",{className:"text-muted-foreground text-sm",children:pt.scope})]},Uo))}),r.jsx("div",{className:"mb-8","data-profile-section":!0,children:r.jsx(Vg,{serviceSlug:yr,customerZip:W,embedded:!0})}),r.jsxs("section",{className:"mb-6",children:[r.jsxs("h2",{className:"text-xl font-bold text-foreground mb-3 flex items-center gap-2",children:[r.jsx(wa,{className:"w-5 h-5 text-[hsl(197,100%,50%)]"}),"Equipment"]}),r.jsx("p",{className:"text-muted-foreground leading-relaxed",children:Xt(ae.equipment)})]}),r.jsxs("section",{className:"mb-6",children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-3",children:"Pricing Insights"}),r.jsx("p",{className:"text-muted-foreground leading-relaxed",children:Xt(ae.pricingInsights)})]}),r.jsxs("section",{className:"mb-6",children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-3",children:"Key Cost Drivers"}),r.jsx("p",{className:"text-muted-foreground leading-relaxed",children:Xt(ae.costDrivers)})]}),r.jsxs("section",{children:[r.jsxs("h2",{className:"text-xl font-bold text-foreground mb-3 flex items-center gap-2",children:[r.jsx(Zh,{className:"w-5 h-5 text-orange-500"}),"Red Flags"]}),r.jsx("div",{className:"border-l-4 border-red-400 pl-4 bg-red-50 rounded-r-xl py-3 pr-4",children:r.jsx("p",{className:"text-gray-700 leading-relaxed",children:Xt(ae.redFlags)})})]}),ae.njTip&&r.jsxs("section",{className:"mt-6",children:[r.jsxs("h2",{className:"text-xl font-bold text-foreground mb-3 flex items-center gap-2",children:[r.jsx(Hd,{className:"w-5 h-5 text-[hsl(197,100%,50%)]"}
889),"Local ",Ke," Tip"]}),r.jsx("div",{className:"bg-green-50 border border-green-200 rounded-xl p-6",children:r.jsx("p",{className:"text-gray-700 leading-relaxed",children:Xt(ae.njTip)})})]}),r.jsxs("section",{className:"mt-12 pt-8 border-t border-gray-200",children:[r.jsxs("h2",{className:"text-2xl font-bold text-foreground mb-6",children:["How to Choose a ",Ke," Contractor: The Homeowner's Checklist"]}),r.jsxs("p",{className:"text-muted-foreground mb-6 leading-relaxed",children:["Hiring a contractor in ",Ke," requires more than just a good price. To protect your home and your wallet, use this 5-step vetting process before signing any agreement."]}),r.jsxs("div",{className:"mb-6",children:[r.jsxs("h3",{className:"text-lg font-bold text-foreground mb-3",children:["1. Verify Their ",Qe.toUpperCase()," Registration & Licenses"]}),r.jsxs("p",{className:"text-muted-foreground mb-3 leading-relaxed",children:["In ",Ke,", almost all home improvement contractors must be registered with the state. Verify their license through your state's contractor licensing board."]}),r.jsxs("ul",{className:"space-y-2 ml-4",children:[r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"HIC Registration:"})," Ask for their Home Improvement Contractor (HIC) registration number. You can verify it in real-time through the ",Ke," Division of Consumer Affairs."]}),r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"Trade-Specific Licenses:"})," For specialized work, an HIC registration isn't enough. Ensure they have the correct master license for electrical, plumbing, HVAC, etc. in ",Ke,"."]})]})]}),r.jsxs("div",{className:"mb-6",children:[r.jsxs("h3",{className:"text-lg font-bold text-foreground mb-3",children:['2. Check for "',Qe.toUpperCase(),'-Grade" Insurance']}),r.jsxs("p",{className:"text-muted-foreground leading-relaxed",children:[`Don't just ask if they are "insured"—ask for a Certificate of Insurance (COI). In `,Ke,", a reputable contractor should carry General Liability and Workers' Compensation coverage."]})]}),r.jsxs("div",{className:"mb-6",children:[r.jsx("h3",{className:"text-lg font-bold text-foreground mb-3",children:'3. The "Rule of Three" Estimates'}),r.jsx("p",{className:"text-muted-foreground leading-relaxed",children:"Never hire the first person you call. Get at least three written estimates to compare scope of work, materials, and pricing."})]}),r.jsxs("div",{className:"mb-6",children:[r.jsxs("h3",{className:"text-lg font-bold text-foreground mb-3",children:["4. Know Your Contract Rights (",Ke," Law)"]}),r.jsxs("p",{className:"text-muted-foreground leading-relaxed",children:["Under the ",Ke," Home Improvement Practices Act, any contract over $500 must be in 
889writing and include contractor details, work scope, timeline, and your 3-day right to cancel. Check with your local building department to confirm whether a permit is required for your type of work."]})]}),r.jsxs("div",{className:"mb-8",children:[r.jsx("h3",{className:"text-lg font-bold text-foreground mb-3",children:"5. Manage the Money Safely"}),r.jsxs("ul",{className:"space-y-2 ml-4",children:[r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"Deposit Limits:"})," Standard ",Ke," deposit is 15-30% of total project. Never pay more than 33% upfront."]}),r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"Milestone Payments:"})," Tie future payments to specific completed stages."]}),r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"The Final Check:"})," Never make final payment until final municipal inspection is passed."]})]})]})]}),r.jsxs("section",{className:"mt-8 pt-8 border-t border-gray-200",children:[r.jsxs("h2",{className:"text-2xl font-bold text-foreground mb-6",children:[(ae==null?void 0:ae.title)||P," — ",Ke," Homeowner's Guide"]}),r.jsx("div",{className:"bg-[hsl(197,100%,96%)] border border-[hsl(197,100%,80%)] rounded-xl px-6 py-4 mb-6",children:r.jsxs("p",{className:"text-[hsl(197,100%,30%)] leading-relaxed",children:["In the ",Ke," market, labor costs are typically ",r.jsx("strong",{children:"15–25% higher"})," than the national average due to insurance requirements (specifically ",Qe.toUpperCase(),"'s high Workers' Comp rates) and strict permitting processes."]})}),r.jsxs("h3",{className:"text-xl font-bold text-foreground mb-4 flex items-center gap-2",children:[r.jsx(Zh,{className:"w-5 h-5 text-orange-500"}),"Red Flag Warnings for Consumers"]}
889),r.jsxs("p",{className:"text-muted-foreground mb-4 leading-relaxed",children:["When collecting estimates in ",Ke,', watch for these "deal-breakers" that often signal a problematic contractor',ae!=null&&ae.step6RedFlagNote?`, ${ae.step6RedFlagNote}`:"",":"]}),r.jsx("div",{className:"space-y-4 mb-8",children:(ae.customRedFlags||[{title:'The "Cash-Only" Discount',body:`If a contractor offers a significantly lower price for cash, they are likely skipping insurance or required ${Ke} permits. This leaves the homeowner liable for any accidents.`},{title:"Missing HIC Registration",body:`In ${Ke}, all home improvement contractors must be registered with the Division of Consumer Affairs. Verify their registration before hiring.`},{title:"High Upfront Deposits",body:`Beware of any contractor asking for more than 33% upfront. Standard practice is 10–25% to secure the date, with remaining payments tied to specific milestones. Protect your investment: ${Ke} state law requires that final payments be held until the project passes its final inspection. This guarantees the contractor completes all code-required corrections before the job is officially closed.`},{title:"Pressure to Skip Permits",body:`If a contractor says "we don't need a permit for this," they are trying to avoid municipal inspections that protect your safety. Call your local building department and confirm whether your project requires a permit or not. Don't take the contractor's word for it. You'll run a risk of being fined up to $5,000.00.`},{title:'Vague "Lump Sum" Bids',body:"A professional estimate should be itemized. A single total price with no breakdown of materials vs. labor makes it impossible to compare with other quotes."}]).map((pt,Uo)=>r.jsxs("div",{className:"border-l-4 border-red-400 pl-4 bg-red-50 rounded-r-xl py-3 pr-4",children:[r.jsx("p",{className:"font-bold text-gray-800 mb-1",children:pt.title}),r.jsx("p",{className:"text-gray-700 text-sm leading-relaxed",children:pt.body})]},Uo))})]})]})})()]}),Oe&&r.jsxs("div",{className:"mt-8 flex flex-col items-center gap-4",children:[r.jsxs(qe,{onClick:()=>k(6),className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold px-6 h-auto min-h-[48px] py-2 rounded-lg flex items-center gap-2",children:["Continue",r.jsx(_s,{className:"w-4 h-4"})]}),r.jsxs("p",{className:"text-xs text-gray-600 text-center leading-relaxed max-w-md",children:["By clicking Continue you agree to ",r.jsx("a",{href:"/terms-of-service",className:"text-blue-600 underline",children:"Terms and Conditions"})," and ",r.jsx("a",{href:"/privacy-policy",className:"text-blue-600 underline",children:"Privacy Policy"})]})]}),!Oe&&r.jsxs("div",{className:"flex items-center justify-between mt-8",children:[r.jsxs("button",{onClick:()=>{if(i&&C<=n){i();return}if(C===1){const ae=P.replace(/\s*&\s*/g,"And").replace(/\s+/g,"");l(`/${ae}`)}else k(C-1)},className:"flex items-center gap-1 text-sm text-gray-500 hover:text-gray-700 transition-colors min-h-[44px] px-1",children:[r.jsx(mm,{className:"w-4 h-4"}),"Back"]}),r.jsxs("div",{className:"flex flex-col items-end gap-2",children:[r.jsxs(qe,{onClick:os,disabled:C===1?!P.trim()||!q.trim():C===2?!Ie.trim()&&Se.length===0&&!X:C===3?!ye.trim()||!pe.trim()||!De.trim()||!$.trim()||!M.trim()||!z.trim()||!W.trim():C===4?!It.trim()||qn.trim()===""||parseInt(qn,10)!==on.answer:C===5?!fr:!1,className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold px-4 h-auto min-h-[48px] py-2 rounded-lg flex items-center gap-2 disabled:opacity-50 whitespace-normal text-center",children:[C===4?"Continue":"Next",r.jsx(_s,{className:"w-4 h-4"})]}),C===4&&r.jsxs("p",{className:"text-xs text-gray-500 text-right leading-relaxed max-w-[220px]",children:["By clicking Continue you agree to ",r.jsx("a",{href:"/terms-of-service",className:"text-blue-600 underline",children:"Terms and Conditions"})," and ",r.jsx("a",{href:"/privacy-policy",className:"text-blue-600 underline",children:"Privacy Policy"})]})]})]})]},C),Ri&&r.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4",onClick:()=>fe(!1),children:r.jsxs("div",{className:"bg-white rounded-2xl shadow-2xl p-6 w-full max-w-sm",onClick:ae=>ae.stopPropagation(),children:[r.jsx("h3",{className:"text-lg font-bold text-foreground mb-1",children:"Enter Your Zip Code"}),r.jsx("p",{className:"text-sm text-gray-500 mb-4",children:"We'll connect you with the right local pro for your area."}),r.jsx("input",{type:"text",inputMode:"numeric",maxLength:5,autoFocus:!0,placeholder:"e.g. 08807",value:vn,onChange:ae=>An(ae.target.value.replace(/\D/g,"")),className:"w-full border-2 border-gray-300 rounded-xl px-4 h-12 text-lg text-center font-semibold focus:outline-none focus:border-[hsl(197,100%,50%)] mb-4"}),r.jsxs("button",{disabled:vn.trim().length!==5,onClick:()=>{const ae=new Set(["07059","07069","07920","07939","07921","07924","07931","07934","07977","08502","08504","08528","08553","08558","08805","08807","08812","08823","08835","08836","08844","08853","08869","08873","08875","08876","08880","08890"]);Me.analytics.track({eventName:"call_button_tapped",properties:{service:j||x,zip:vn}});const Ce=yr||m||"",Qe=j||x||"";let Ge;
889Ce==="water-heater-installation"||Qe==="Water Heater Installation"?Ge=ae.has(vn.trim())?"tel:+19738889398":"tel:+19737645393":Ce==="air-conditioner-installation"?Ge="tel:+19737062854":Ce==="sewer-relining"?Ge="tel:+19085290527":Ce==="sewer-camera-inspection"?Ge="tel:+19737645393":Ce==="chimney-liner-masonry"?Ge="tel:+18008650053":Ge="tel:+18339907627",fe(!1),window.location.href=Ge},className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] disabled:opacity-40 text-white font-bold py-3 rounded-xl flex items-center justify-center gap-2 text-sm",children:[r.jsx(Er,{className:"w-4 h-4"}),"Call Now"]}),r.jsx("button",{onClick:()=>fe(!1),className:"w-full mt-2 text-sm text-gray-400 hover:text-gray-600 py-2",children:"Cancel"})]})})]})}function it({serviceName:e,calcSlug:t,videoSrc:n,videoThumbnail:i,pricingProps:l,statCards:d,extraContent:h,bottomImage:m,topImage:g,pricingTeaser:y,children:x,highDemand:w=!1}){Hn();const[j,P]=S.useState(!1),[C,k]=S.useState(!1),[A,E]=S.useState(!1),$=S.useRef(null),[I,M]=S.useState(0),[F,z]=S.useState("your area"),[V,W]=S.useState(()=>sessionStorage.getItem("userStateAbbr")||""),[ne,de]=S.useState(""),[be,Re]=S.useState(!1),[Je,Ie]=S.useState(""),[mt,Se]=S.useState(!1);S.useEffect(()=>{const ue=()=>{E(!0),clearTimeout($.current),$.current=setTimeout(()=>E(!1),200)};return window.addEventListener("scroll",ue,{passive:!0}),window.addEventListener("touchmove",ue,{passive:!0}),()=>{window.removeEventListener("scroll",ue),window.removeEventListener("touchmove",ue)}},[]);const je=ue=>Me.functions.invoke("getUserState",{zip:ue}).then(q=>{var ye,ge;const O=(ye=q.data)==null?void 0:ye.city;O&&O!=="your area"&&(sessionStorage.setItem("userCity",O),z(O));const te=(ge=q.data)==null?void 0:ge.state;te&&(sessionStorage.setItem("userStateAbbr",te),W(te))}).catch(()=>{});S.useEffect(()=>{const ue=sessionStorage.getItem("userCity");ue&&z(ue);const q=sessionStorage.getItem("userStateAbbr");if(q&&W(q),!ue){const O=sessionStorage.getItem("userZip");O&&je(O)}},[]);const X=S.useCallback(()=>{M(0);let ue=0;const q=Kd(e,w),te=q/60,ye=setInterval(()=>{ue+=te,ue>=q?(M(q),clearInterval(ye)):M(Math.floor(ue))},80);return()=>clearInterval(ye)},[e]);return S.useEffect(()=>X(),[X]),r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),n&&(()=>{try{const ue=new URL(n),q=ue.searchParams.get("cloud_name"),O=ue.searchParams.get("public_id"),te=`https://res.cloudinary.com/${q}/video/upload/f_auto:video/v1/${O}`;return r.jsx("div",{className:"w-full bg-black",style:{aspectRatio:"16/9"},children:r.jsx("video",{src:te,autoPlay:!0,muted:!0,controls:!0,playsInline:!0,loop:!0,className:"w-full h-full",style:{display:"block"}})})}catch{return null}})(),r.jsx(T4,{serviceName:e}),be&&r.jsx("div",{className:"fixed inset-0 z-40 flex items-center justify-center bg-black/50",onClick:()=>Re(!1),children:r.jsxs("div",{className:"bg-white rounded-xl shadow-xl p-6 max-w-xs",onClick:ue=>ue.stopPropagation(),children:[r.jsx("p",{className:"text-lg font-bold text-gray-800",children:"Please enter a valid ZIP code"}),r.jsx("button",{onClick:()=>Re(!1),className:"mt-4 w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold py-2 rounded-lg",children:"OK"})]})}),C&&r.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4",onClick:()=>k(!1),children:r.jsxs("div",{className:"bg-white rounded-2xl shadow-2xl p-6 w-full max-w-sm",onClick:ue=>ue.stopPropagation(),children:[r.jsx("h3",{className:"text-xl font-bold text-foreground mb-2",children:"Enter Your Zip Code"}),r.jsx("p",{className:"text-sm text-gray-500 mb-4",children:"We will show you accurate estimates for your area."}),r.jsx("input",{type:"text",inputMode:"numeric",maxLength:"5",autoFocus:!0,placeholder:"e.g. 07985",value:ne,onChange:ue=>de(ue.target.value.replace(/\D/g,"")),className:"w-full border-2 border-gray-300 rounded-xl px-4 h-12 text-lg text-center font-semibold focus:outline-none focus:border-[hsl(197,100%,50%)] mb-4"}),r.jsx("button",{disabled:ne.trim().length!==5,onClick:()=>{ne.trim().length===5?(sessionStorage.setItem("userZip",ne),k(!1),de(""),Se(!0)):(Re(!0),setTimeout(()=>Re(!1),3e3))},className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] disabled:opacity-40 text-white font-bold py-3 rounded-xl flex items-center justify-center gap-2 text-sm transition-colors",children:"Get Your Estimate"}),r.jsx("button",{onClick:()=>k(!1),className:"w-full mt-2 text-sm text-gray-400 hover:text-gray-600 py-2",children:"Cancel"})]})}),y&&r.jsx("div",{className:"w-full bg-white py-8 px-4",children:r.jsxs("div",{className:"max-w-2xl mx-auto",children:[r.jsx(A4,{service:e,effectiveService:e,timeline:Je,setTimeline:Ie,quoteCount:I,userTown:F}),r.jsxs("div",{className:"flex items-center justify-between mt-6",children:[r.jsx("span",{}),r.jsxs(qe,{onClick:()=>{sessionStorage.getItem("userZip")?Se(!0):k(!0)},disabled:!Je,className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold px-4 h-auto min-h-[48px] py-2 rounded-lg flex items-center gap-2 disabled:opacity-50 whitespace-normal text-center",children:["Next",r.jsx(_s,{className:"w-4 h-4"})]})]})]})}),h,r.jsx(C4,{hideVideo:!0}),r.jsx(YI,{...l}),r.jsx(k4,{}),r.jsx(P4,{serviceName:e}),x,r.jsx(tr,{}),mt&&r.jsx("div",{className:"fixed inset-0 z-50 bg-white overflow-y-auto",children:r.jsx(qg,{serviceSlug:t,initialTimeline:Je,startStep:2,onClose:()=>Se(!1)})})]})}function u$(){return r.jsx(it,{serviceName:"Air Conditioner Installation",calcSlug:"air-conditioner-installation",highDemand:!0,pricingTeaser:{averageRange:"Average AC Installation: $3,000 – $7,000",topItem:"Standard central air installation typically costs $3,000 to $7,000. High-efficiency heat pump or multi-zone mini-split systems range from $8,000 to $15,000+. Costs depend on SEER2 ratings, ductwork, home size, and local labor rates."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/611915a76_Follow_the_same_202604011210.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FHVAC_with_logo_hnuk8x",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Air Conditioner Installation Cost Calculator",averagePrice:"Average AC Installation Cost: $3,000 – $7,000",description:"Standard central air installation typically costs $3,000 to $7,000. High-efficiency heat pump or multi-zone mini-split systems range from $8,000 to $15,000+. Costs depend on SEER2 ratings, ductwork, home size, and local labor rates.",priceBreakdown:[{label:"Standard central air installation (2,000 sq. ft.)",range:"$3,000 to $7,000"},{label:"High-efficiency heat pump or multi-zone mini-split",range:"$8,000 to $15,000+"}],aboutText:"Whether you are upgrading your 'forever home' for seasonal comfort or require an emergency response for a failed cooling system, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the HVAC installation process from start to finish. By combining deep industry research powered by AI, a network of vetted mechanical contractors, and our signature AC cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function h$(){return r.jsx(it,{serviceName:"Appliance Repair",calcSlug:"appli
889ance-repair",pricingTeaser:{averageRange:"Average Appliance Repair: $100 – $400",topItem:"Standard service call with minor repair typically costs $100 to $250. Major overhauls like compressor or drum replacement range from $400 to $600. Costs depend on appliance type and repair complexity."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/10fdfdabb_Remove_new_2K_202604011206.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Appliance_s84xwy",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Appliance Repair Cost Calculator",averagePrice:"Average Repair Cost: $100 – $400",description:"Standard service call with minor repair typically costs $100 to $250. Major overhauls like compressor or drum replacement range from $400 to $600. Costs depend on appliance type and repair complexity.",priceBreakdown:[{label:"Standard service call with minor repair",range:"$100 to $250"},{label:"Major overhaul (compressor or drum replacement)",range:"$400 to $600"}],aboutText:"Whether you are maintaining the essential machines in your 'forever home' or require an emergency repair for a broken refrigerator, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the appliance maintenance process from start to finish. By combining deep industry research powered by AI, a network of vetted repair technicians, and our signature appliance repair cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function m$(){return r.jsx(it,{serviceName:"Basement Waterproofing",calcSlug:"basement-waterproofing",pricingTeaser:{averageRange:"Average Waterproofing: $4,500 – $12,000",topItem:"Professional basement waterproofing typically costs $4,500 to $12,000 for interior systems. Full exterior excavation with membrane ranges from $12,000 to $30,000+. Costs depend on perimeter size and method chosen."},videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FBasment_waterproofing_xwe4c7",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/628b90b36_Image_with_another_202604011215.png",pricingProps:{title:"Basement Waterproofing Cost Calculator",averagePrice:"Average Waterproofing Cost: $4,500 – $12,000",description:"Professional basement waterproofing typically costs $4,500 to $12,000 for interior systems. Full exterior excavation with membrane ranges from $12,000 to $30,000+. Costs depend on perimeter size and method chosen.",priceBreakdown:[{label:"Interior perimeter waterproofing system",range:"$4,500 to $8,000"},{label:"Full exterior excavation with membrane",range:"$12,000 to $30,000+"}],aboutText:"Whether you are protecting your 'forever home' from seasonal flooding or require an emergency response for a compromised foundation, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the waterproofing process from start to finish. By combining deep industry research powered by AI, a network of vetted structural specialists, and our signature cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function p$(){return r.jsx(it,{serviceName:"Bathroom Remodeling",calcSlug:"bathroom-remodeling",pricingTeaser:{averageRange:"Average Bathroom Remodel: $6,000 – $15,000",topItem:"Mid-range bathroom renovations typically cost $6,000 to $15,000 and include fixtures, flooring, and vanity work. High-end luxury remodels with structural changes range from $25,000+. Pricing depends on materials, layout, and local rates."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/5c47457be_Follow_the_same_202604011203.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FBathroom_remodel_g4w5o3",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Bathroom Remodeling Cost Calculator",averagePrice:"Average Bathroom Remodel Cost: $6,000 – $15,000",description:"Mid-range bathroom renovations typically cost $6,000 to $15,000 and include fixtures, flooring, and vanity work. High-end luxury remodels with structural changes range from $25,000+. Pricing depends on materials, layout, and local rates.",priceBreakdown:[{label:"Mid-range bathroom renovation",range:"$6,000 to $15,000"},{label:"High-end luxury remodel with structural changes",range:"$25,000+"}],aboutText:"Whether you are modernizing the master suite of your 'forever home' or require an emergency bathroom renovation due to water damage, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the bathroom remodeling process from start to finish. By combining deep industry research powered by AI, a network of vetted bathroom specialists, and our signature bathroom cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function f$(){return r.jsx(it,{serviceName:"Carpet Cleaning",calcSlug:"carpet-cleaning",pricingTeaser:{averageRange:"Average Carpet Cleaning: $120 – $250",topItem:"Professional carpet cleaning for a three-bedroom home typically costs $150 to $300. Professionals charge per room ($30-$80) or per square foot ($0.20-$0.50). Costs depend on carpet condition and cleaning method."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/465d10d93_replace_basement_waterproofing_202604051233.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FCarpet_Cleaning_gguwnp",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Carpet Cleaning Cost Calculator",averagePrice:"Average Carpet Cleaning Cost: $120 – $250",description:"Professional carpet cleaning for a three-bedroom home typically costs $150 to $300. Professionals charge per room ($30-$80) or per square foot ($0.20-$0.50). Costs depend on carpet condition and cleaning method.",priceBreakdown:[{label:"Single room cleaning (up to 250 sq ft)",range:"$50 to $85"},{label:"Whole house cleaning (5+ rooms)",range:"$250 to $450"}],aboutText:"Whether you are preparing a home for a new tenant or dealing with the aftermath of a busy fam
889ily gathering, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the carpet maintenance process from start to finish. By combining deep industry research powered by AI, a network of vetted specialists, and our signature carpet cleaning cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function Jw(){return r.jsx(it,{serviceName:"Chimney Liner & Masonry",calcSlug:"chimney-liner-masonry",pricingTeaser:{averageRange:"Average Chimney Service: $2,000 – $5,000",topItem:"Stainless steel chimney liner installation typically costs $2,000 to $4,000. Masonry repairs like tuckpointing or crown rebuild range from $1,500 to $5,000. Costs depend on liner type and repair scope."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/d162e6fa5_Follow_the_same_202604011157.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FChimney_bskprw",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Chimney Liner & Masonry Cost Calculator",averagePrice:"Average Chimney Service Cost: $2,000 – $5,000",description:"Stainless steel chimney liner installation typically costs $2,000 to $4,000. Masonry repairs like tuckpointing or crown rebuild range from $1,500 to $5,000. Costs depend on liner type and repair scope.",priceBreakdown:[{label:"Stainless steel chimney liner installation",range:"$2,000 to $4,000"},{label:"Masonry repairs (tuckpointing, crown rebuild)",range:"$1,500 to $5,000"}],aboutText:"Whether you are securing the structural integrity of your 'forever home' or require an emergency chimney liner replacement for fire safety, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the masonry management process from start to finish. By combining deep industry research powered by AI, a network of vetted masonry experts, and our signature chimney cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function g$(){return r.jsx(it,{serviceName:"Cleaning",calcSlug:"cleaning",pricingTeaser:{averageRange:"Average Cleaning: $150 – $300",topItem:"Standard deep cleaning for a 3-bedroom home typically costs $150 to $300. Specialized move-out or post-construction cleaning ranges from $400 to $800. Costs depend on home size and cleaning type."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/7a12fce96_Replace_the_hand_202604011152.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FHouse_cleaning_dlw41g",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Cleaning Cost Calculator",averagePrice:"Average Cleaning Cost: $150 – $300",description:"Standard deep cleaning for a 3-bedroom home typically costs $150 to $300. Specialized move-out or post-construction cleaning ranges from $400 to $800. Costs depend on home size and cleaning type.",priceBreakdown:[{label:"Standard deep clean (3-bedroom home)",range:"$150 to $300"},{label:"Specialized move-out or post-construction cleaning",range:"$400 to $800"}],aboutText:"Whether you are maintaining the sparkle of your 'forever home' or require an emergency deep clean after a major event, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the residential cleaning process from start to finish. By combining deep industry research powered by AI, a network of vetted professional cleaners, and our signature cleaning cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function y$(){return r.jsx(it,{serviceName:"Custom Closets",calcSlug:"custom-closets",pricingTeaser:{averageRange:"Average Custom Closet: $1,500 – $8,000+",topItem:"A basic reach-in custom closet system starts around $1,500. Walk-in closets with built-in shelving, drawers, and lighting typically range from $3,000 to $8,000+. Costs depend on size, materials, and finish level."},bottomImage:"https://images.unsplash.com/photo-1558997519-83ea9252eef8?w=800",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/35c8311b8_image.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Woman_in_front_of_closet_202605251706_1_syxdtf",pricingProps:{title:"Custom Closet C
889ost Calculator",averagePrice:"Average Custom Closet: $1,500 – $8,000+",description:"A basic reach-in custom closet system starts around $1,500. Walk-in closets with built-in shelving, drawers, and lighting typically range from $3,000 to $8,000+. Costs depend on size, materials, and finish level.",priceBreakdown:[{label:"Reach-in closet system (basic)",range:"$1,500 to $3,000"},{label:"Walk-in closet with shelving & drawers",range:"$3,000 to $6,000"},{label:"Walk-in closet (premium finishes, lighting)",range:"$6,000 to $12,000+"},{label:"Built-in wardrobe with doors",range:"$2,500 to $7,000"}],aboutText:"A well-designed custom closet transforms cluttered spaces into organized, functional storage solutions tailored to your lifestyle. SnapEstimate.ai connects New Jersey homeowners with skilled craftsmen who design and install closet systems built to last — from simple reach-in upgrades to full luxury walk-in suites. Get transparent pricing before any work begins."}})}function x$(){return r.jsx(it,{serviceName:"Custom Garage",calcSlug:"custom-garage",pricingTeaser:{averageRange:"Average Custom Garage Build-Out: $5,000 – $50,000+",topItem:"A basic garage organization and epoxy floor package starts around $5,000. Full custom garage builds with cabinetry, flooring, lighting, and storage systems range from $15,000 to $50,000+. Costs depend on size, features, and finish level."},bottomImage:"https://images.unsplash.com/photo-1558618047-3c8c76ca7d13?w=800",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/1c1effb38_image.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Woman_taking_picture_inside_garage_202605251703_wayfrp",pricingProps:{title:"Custom Garage Cost Calculator",averagePrice:"Average Custom Garage Build-Out: $5,000 – $50,000+",description:"A basic garage organization and epoxy floor package starts around $5,000. Full custom garage builds with cabinetry, flooring, lighting, and storage systems range from $15,000 to $50,000+. Costs depend on size, features, and finish level.",priceBreakdown:[{label:"Epoxy floor coating",range:"$1,500 to $4,000"},{label:"Wall storage & shelving system",range:"$2,000 to $6,000"},{label:"Custom cabinetry & workbench",range:"$5,000 to $15,000"},{label:"Full custom garage build-out",range:"$15,000 to $50,000+"}],aboutText:"Your garage can be so much more than a place to park. SnapEstimate.ai connects NJ homeowners with top-rated contractors who specialize in transforming garages into fully functional, organized, and beautiful space
889s. Whether you want a sleek epoxy floor, custom cabinetry, or a complete workshop build-out, we deliver transparent pricing and vetted professionals every time."}})}function v$(){return r.jsx(it,{serviceName:"Decks & Porches",calcSlug:"decks-and-porches",pricingTeaser:{averageRange:"Average Deck/Porch: $4,000 – $12,000",topItem:"Standard 16' x 20' pressure-treated wood decks typically cost $4,000 to $8,000. Premium composite materials range from $15,000 to $35,000. Costs depend on size, materials, and railings."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/dbf8617f6_change_the_color_202604011142.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FCustom_decks_cfzbw0",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Decks & Porches Cost Calculator",averagePrice:"Average Deck/Porch Installation Cost: $4,000 – $12,000",description:"Standard 16' x 20' pressure-treated wood decks typically cost $4,000 to $8,000. Premium composite materials range from $15,000 to $35,000. Costs depend on size, materials, and railings.",priceBreakdown:[{label:"Standard 16' x 20' pressure-treated wood deck",range:"$4,000 to $8,000"},{label:"Premium composite deck installation",range:"$15,000 to $35,000"}],aboutText:"Whether you are expanding the living space of your 'forever home' or require an emergency deck repair, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the deck construction process from start to finish. By combining deep industry research powered by AI, a network of vetted contractors, and our signature deck cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function b$(){return r.jsx(it,{serviceName:"Driveway Service",calcSlug:"driveway-service",highDemand:!0,pricingTeaser:{averageRange:"Average Driveway: $2,000 – $6,000",topItem:"Sealcoating or minor crack repair typically costs $300 to $800. Standard 2-car asphalt replacement ranges from $4,000 to $6,000. Costs depend on surface condition and material type."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/1a6748a24_Change_the_cement_202604011107.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FDriveway_zvinpd",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Driveway Service Cost Calculator",averagePrice:"Average Driveway Installation/Repair Cost: $2,000 – $6,000",description:"Sealcoating or minor crack repair typically costs $300 to $800. Standard 2-car asphalt replacement ranges from $4,000 to $6,000. Costs depend on surface condition and material type.",priceBreakdown:[{label:"Sealcoating or minor crack repair",range:"$300 to $800"},{label:"Standard 2-car asphalt driveway replacement",range:"$4,000 to $6,000"}],aboutText:"Whether you are improving the curb appeal of your 'forever home' or require an emergency driveway repair, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the driveway paving process from start to finish. By combining deep industry research powered by AI, a network of vetted paving teams, and our signature driveway cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function w$(){return r.jsx(it,{serviceName:"Duct Cleaning",calcSlug:"duct-cleaning",pricingTeaser:{averageRange:"Average Duct Cleaning: $350 – $1,000",topItem:"Professional air duct cleaning typically costs $350 to $700. Larger homes with mold remediation cost $800 to $1,200+. Pricing depends on system size and additional services."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/87209febb_Replace_the_images_202604251101.jpg",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Duct_cleaning_3_gt8ig2",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Duct Cleaning Cost Calculator",averagePrice:"Average Duct Cleaning Cost: $350 – $1,000",description:"Professional air duct cleaning typically costs $350 to $700. Larger homes with mold remediation cost $800 to $1,200+. Pricing depends on system size and additional services.",priceBreakdown:[{label:"Standard professional duct cleaning",range:"$350 to $700"},{label:"Large home with mold remediation",range:"$800 to $1,200+"}],aboutText:"Clean air ducts are essential for healthy indoor air quality and peak HVAC efficie
889ncy. In New Jersey's humid climate, dust, allergens, and even mold can accumulate in ductwork over time—especially in homes with pets, older systems, or recent construction. SnapEstimate.ai connects homeowners with certified NADCA-member duct cleaning professionals who use source-removal methods to thoroughly clean your entire system, not just the visible registers."}})}function _$(){return r.jsx(it,{serviceName:"Electrical",calcSlug:"electrical",pricingTeaser:{averageRange:"Average Electrical: $150 – $500",topItem:"A standard service call for minor repairs typically costs $150 to $300. Full panel replacement ranges from $2,000 to $4,500. Costs vary based on complexity, materials, and local codes."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/0456b928a_Change_handyman_services_202604011045.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FElectrical_dx0qo5",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Electrical Cost Calculator",averagePrice:"Average Electrical Repair Cost: $150 – $500",description:"A standard service call for minor repairs typically costs $150 to $300. Full panel replacement ranges from $2,000 to $4,500. Costs vary based on complexity, materials, and local codes.",priceBreakdown:[{label:"Service call for minor repairs",range:"$150 to $300"},{label:"Full 200-amp panel replacement",range:"$2,000 to $4,500"}],aboutText:"Whether you are powering up your 'forever home' or require an emergency response for an electrical outage, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the electrical management process from start to finish. By combining deep industry research powered by AI, a network of vetted electricians, and our signature electrical cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function S$(){return r.jsx(it,{serviceName:"Fencing",calcSlug:"fencing",pricingTeaser:{averageRange:"Average Fencing: $1,500 – $4,000",topItem:"Pressure-treated wood privacy fencing (150 linear feet) ranges from $2,500 to $4,500. Vinyl or aluminum ornamental fencing costs $5,000 to $12,000. Pricing depends on material and linear footage."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/402bf9ec6_Replace_pest_control_202604011042.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FFencing_y063wf",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Fencing Cost Calculator",averagePrice:"Average Fence Installation Cost: $1,500 – $4,000",description:"Pressure-treated wood privacy fencing (150 linear feet) ranges from $2,500 to $4,500. Vinyl or aluminum ornamental fencing costs $5,000 to $12,000. Pricing depends on material and linear footage.",priceBreakdown:[{label:"Pressure-treated wood privacy fencing (150 linear feet)",range:"$2,500 to $4,500"},{label:"Vinyl or aluminum ornamental fencing",range:"$5,000 to $12,000"}],aboutText:"Whether you are securing the privacy of your 'forever home' or require an emergency fence repair, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the fencing installation process from start to finish. By combining deep industry research powered by AI, a network of vetted fencing contractors, and our signature fencing cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function N$(){return r.jsx(it,{serviceName:"Garage Doors",calcSlug:"garage-doors",pricingTeaser:{averageRange:"Average Garage Door: $800 – $2,000",topItem:"Torsion spring repair typically costs $200 to $400. Single-car steel door installation ranges from $800 to $1,500. Costs depend on door type and opener systems."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/2a7c50cab_Remove_the_parts_202604011034.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FGarage_Door_cfenje",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Garage Door Cost Calculator",averagePrice:"Average Garage Door Cost: $800 – $2,000",description:"Torsion spring repair typically costs $200 to $400. Single-car steel door installation ranges from $800 to $1,500. Costs depend on door type and opener systems.",priceBreakdown:[{label:"Torsion spring repair",range:"$200 to $400"},{label:"Single-car steel garage door installation",range:"$800 to $1,500"}],aboutText:"Whether you are updating the entry to your 'forever home' or require an emergency repair for a stuck garage door, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the garage door service process from start to finish. By combining deep industry research powered by AI, a network of vetted technicians, and our signature garage door cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function j$(){return r.jsx(it,{serviceName:"Gutter Service",calcSlug:"gutter-service",pricingTeaser:{averageRange:"Average Gutter Service: $200 – $600",topItem:"Standard gutter cleaning averages $200 to $350. Full replacement with seamless aluminum gutters ranges from $1,500 to $3,500. Costs depend on home size, materials, and gutter guards."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/1b9f1e007_Replace_the_vacuum_202604011029.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FGutters_gyg4nn",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Gutter Service Cost Calculator",averagePrice:"Average Gutter Installation Cost: $200 – $600",description:"Standard gutter cleaning averages $200 to $350. Full replacement with seamless aluminum gutters ranges from $1,500 to $3,500. Costs depend on home size, materials, and gutter guards.",priceBreakdown:[{label:"Standard gutter cleaning",range:"$200 to $350"},{label:"Full seamless aluminum replacement",range:"$1,500 to $3,500"}],aboutText:"Whether you are protecting the foundation of your 'forever home' from water damage or require an emergency gutter repair, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the gutter management process from start to finish. By combining deep industry research powered by AI, a network of vetted gutter specialists, and our signature gutter cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function k$(){return r.jsx(it,{serviceName:"Handyman Service",calcSlug:"handyman-service",pricingTeaser:{averageRange:"Average Handyman: $150 – $600",topItem:"Professional handymen typically charge $75 to $125 per hour. Small repairs usually cost $150 to $600. Full-day rates and hourly rates depend on job complexity."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/d4fe68023_replace_mov
889ing_with_202604011011.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FHandyman_fuxev5",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Handyman Service Cost Calculator",averagePrice:"Average Handyman Cost: $150 – $600",description:"Professional handymen typically charge $75 to $125 per hour. Small repairs usually cost $150 to $600. Full-day rates and hourly rates depend on job complexity.",priceBreakdown:[{label:"Small repairs (leaky faucet, etc.)",range:"$150 to $600"},{label:"Full-day handyman service",range:"$800+"}],aboutText:"Whether you are ticking off the 'to-do' list in your 'forever home' or require an emergency repair for a minor household issue, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the home maintenance process from start to finish. By combining deep industry research powered by AI, a network of vetted handymen, and our signature handyman cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function C$(){return r.jsx(it,{serviceName:"Heating System Installation",calcSlug:"heating-system-installation",pricingTeaser:{averageRange:"Average Heating Install: $4,000 – $8,000",topItem:"Standard gas furnace replacement typically costs $4,000 to $7,000. High-efficiency electric heat pump systems range from $8,000 to $18,000. Costs depend on unit type, ductwork, and installation complexity."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/55723fac0_Change_the_color_202604011006.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FHeating_system_uek0kn",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Heating System Installation Cost Calculator",averagePrice:"Average Heating Installation Cost: $4,000 – $8,000",description:"Standard gas furnace replacement typically costs $4,000 to $7,000. High-efficiency electric heat pump systems range from $8,000 to $18,000. Costs depend on unit type, ductwork, and installation complexity.",priceBreakdown:[{label:"Standard gas furnace replacement",range:"$4,000 to $7,000"},{label:"High-efficiency electric heat pump system",range:"$8,000 to $18,000"}],aboutText:"Whether you are ensuring the warmth of your 'forever home' for winter or require an emergency heating system replacement, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the heating installation process from start to finish. By combining deep industry research powered by AI, a network of vetted HVAC contractors, and our signature heating cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function P$(){return r.jsx(it,{serviceName:"Home Inspection",calcSlug:"home-inspection",pricingTeaser:{averageRange:"Average Home Inspection: $300 – $500",topItem:"Standard pre-purchase home inspections typically cost $350 to $600. Add-on services like radon testing or sewer scopes cost $150 to $300 extra. Total cost depends on home size and inspection scope."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/c466ac95d_Replace_moving_with_202604010940.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FHome_inspection_kswxv8",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Home Inspection Cost Calculator",averagePrice:"Average Home Inspection Cost: $300 – $500",description:"Standard pre-purchase home inspections typically cost $350 to $600. Add-on services like radon testing or sewer scopes cost $150 to $300 extra. Total cost depends on home size and inspection scope.",priceBreakdown:[{label:"Standard pre-purchase home inspection",range:"$350 to $600"},{label:"Add-on services (radon, sewer, water testing)",range:"$150 to $300"}],aboutText:"Whether you are evaluating the integrity of your 'forever home' before a purchase or require an emergency structural assessment, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the inspection process from start to finish. By combining deep industry research powered by AI, a network of vetted inspectors, and our signature home inspection cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function T$(){return r.jsx(it,{serviceName:"Home Remodeling",calcSlug:"home-remodeling",pricingTeaser:{averageRange:"Average Home Remodeling: $15,000 – $50,000+",topItem:"Partial home remodels typically cost $15,000 to $30,000. Full-scale renovations with structural changes range from $50,000 to $150,000+. Costs depend on scope, materials, permits, and complexity."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/ba6495088_Replace_landscaping_with_202
889604010935.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Woman_using_carpet_202604061728_nvwyus",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Home Remodeling Cost Calculator",averagePrice:"Average Home Remodeling Cost: $15,000 – $50,000+",description:"Partial home remodels typically cost $15,000 to $30,000. Full-scale renovations with structural changes range from $50,000 to $150,000+. Costs depend on scope, materials, permits, and complexity.",priceBreakdown:[{label:"Partial home remodel",range:"$15,000 to $30,000"},{label:"Full-scale renovation with structural changes",range:"$50,000 to $150,000+"}],aboutText:"Whether you are reimagining your 'forever home' or require an emergency structural renovation, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the home renovation process from start to finish. By combining deep industry research powered by AI, a network of vetted general contractors, and our signature remodeling cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function E$(){return r.jsx(it,{serviceName:"Junk Removal",calcSlug:"junk-removal",pricingTeaser:{averageRange:"Average Junk Removal: $100 – $500",topItem:"A single-item pickup in 2026 typically costs $100 to $175. A full truckload generally ranges from $450 to $700."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/83f44d11c_Remove_the_trucks_202604010930.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Woman_taking_pictures_of_junk_202605311555_xrq093",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Junk Removal Cost Calculator",averagePrice:"Average Junk Removal Cost: $100 – $500",description:"A single-item pickup in 2026 typically costs $100 to $175. A full truckload generally ranges from $450 to $700.",priceBreakdown:[{label:"Disposal & Tipping Fees",range:"$50 to $200"},{label:"Fuel & Equipment Surcharge",range:"$30 to $80"},{label:"Labor, Curbside Pickup (Low)",range:"$100"},{label:"Labor, Full Garage/Attic Cleanout (Medium)",range:"$450"},{label:"Labor, Post-Construction/Heavy Debris (High)",range:"$950+"}],aboutText:"Whether you are decluttering your 'forever home' or require an emergency cleanout, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the debris management process from start to finish. By combining deep industry research powered by AI, a network of vetted disposal teams, and our signature junk removal cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function A$(){return r.jsx(it,{serviceName:"Kitchen Remodeling",calcSlug:"kitchen-remodeling",pricingTeaser:{averageRange:"Average Kitchen Remodel: $10,000 – $30,000",topItem:"Mid-range kitchen updates typically cost $15,000 to $30,000. Full-scale overhauls with premium finishes range from $45,000 to $80,000+. Costs depend on materials, layout changes, and design complexity."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/4ffecf9a1_Replace_landscaping_with_202604010926.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FKitchen_remodel_dkmdoi",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Kitchen Remodeling Cost Calculator",averagePrice:"Average Kitchen Remodel Cost: $10,000 – $30,000",description:"Mid-range kitchen updates typically cost $15,000 to $30,000. Full-scale overhauls with premium finishes range from $45,000 to $80,000+. Costs depend on materials, layout changes, and design complexity.",priceBreakdown:[{label:"Mid-range kitchen update",range:"$15,000 to $30,000"},{label:"Full-scale overhaul with premium finishes",range:"$45,000 to $80,000+"}],aboutText:"Whether you are upgrading the heart of your 'forever home' or require an emergency kitchen repair, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the kitchen design process from start to finish. By combining deep industry research powered by AI, a network of vetted kitchen specialists, and our signature kitchen cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function R$(){return r.jsx(it,{serviceName:"Landscaping",calcSlug:"landscaping",pricingTeaser:{averageRange:"Average Landscaping: $1,000 – $5,000",topItem:"Seasonal cleanup and garden beds range from $800 to $1,500. Full landscape design and installation ranges from $3,500 to $7,000. Prices depen
889d on yard size, plant selection, and hardscaping complexity."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/51300beb0_Change_Get_a_202604010923.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FLawn_Care_tgygxl",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Landscaping Cost Calculator",averagePrice:"Average Landscaping Cost: $1,000 – $5,000",description:"Seasonal cleanup and garden beds range from $800 to $1,500. Full landscape design and installation ranges from $3,500 to $7,000. Prices depend on yard size, plant selection, and hardscaping complexity.",priceBreakdown:[{label:"Seasonal cleanup and garden bed work",range:"$800 to $1,500"},{label:"Full landscape design and installation",range:"$3,500 to $7,000"}],aboutText:"Whether you are enhancing the curb appeal of your 'forever home' or require an emergency drainage solution, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the outdoor design process from start to finish. By combining deep industry research powered by AI, a network of vetted landscape architects, and our signature landscaping cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function L$(){return r.jsx(it,{serviceName:"Lawn Care",calcSlug:"lawn-care",pricingTeaser:{averageRange:"Average Lawn Care: $50 – $150 per visit",topItem:"Regular lawn maintenance typically costs $50 to $100 per visit. Full-season annual programs range from $600 to $1,500. Costs depend on lawn size and service frequency."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/27dd7eab4_Replace_roof_and_202604010912.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FLawn_Care_tgygxl",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Lawn Care Cost Calculator",averagePrice:"Average Lawn Care Cost: $50 – $150 per visit",description:"Regular lawn maintenance typically costs $50 to $100 per visit. Full-season annual programs range from $600 to $1,500. Costs depend on lawn size and service frequency.",priceBreakdown:[{label:"Regular lawn maintenance visit",range:"$50 to $100"},{label:"Full-season annual program",range:"$600 to $1,500"}],aboutText:"Whether you are maintaining the pristine look of your 'forever home' or require an emergency lawn restoration, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the lawn management process from start to finish. By combining deep industry research powered by AI, a network of vetted lawn specialists, and our signature lawn care cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function M$(){return r.jsx(it,{serviceName:"Moving Service",calcSlug:"moving-service",pricingTeaser:{averageRange:"Average Moving Cost: $500 – $2,500",topItem:"Local moves typically cost $600 to $1,800 depending on home size. Long-distance moves range from $3,000 to $8,000. Costs depend on distance, volume, and packing requirements."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/32ef26f6e_Replace_the_image_202604010908.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FMoving_raxfdg",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Moving Cost Calculator",averagePrice:"Average Moving Cost: $500 – $2,500",description:"Local moves typically cost $600 to $1,800 depending on home size. Long-distance moves range from $3,000 to $8,000. Costs depend on distance, volume, and packing requirements.",priceBreakdown:[{label:"Local move (studio to 3-bedroom)",range:"$600 to $1,800"},{label:"Long-distance move (larger home)",range:"$3,000 to $8,000"}],aboutText:"Whether you are transitioning into your 'forever home' or require an emergency relocation service, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the moving process from start to finish. By combining deep industry research powered by AI, a network of vetted moving companies, and our signature moving cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function I$(){return r.jsx(it,{serviceName:"New Window & Door",calcSlug:"new-window-and-door",pricingTeaser:{averageRange:"Average Window Cost: $600 – $1,200 per unit",topItem:"Standard energy-efficient vinyl windows typically cost $600 to $1,200 per unit. High-end architectural windows range from $1,500 to $3,000. Costs depend on window type and installation method."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/94eed2a98_Change_the_phone_202604010903.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FWindow_and_doors_rmiqd4",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"New Windows Cost Calculator",averagePrice:"Average New Window Cost: $600 – $1,200 per window",description:"Standard energy-efficient vinyl windows typically cost $600 to $1,200 per unit. High-end architectural windows range from $1,500 to $3,000. Costs depend on window type and installation method.",priceBreakdown:[{label:"Standard energy-efficient vinyl window",range:"$600 to $1,200 per unit"},{label:"High-end architectural windows",range:"$1,500 to $3,000"}
889],aboutText:"Whether you are improving the energy efficiency of your 'forever home' or require an emergency response for a broken window, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the window replacement process from start to finish. By combining deep industry research powered by AI, a network of vetted installation specialists, and our signature window cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function $$(){return r.jsx(it,{serviceName:"Painting",calcSlug:"painting",pricingTeaser:{averageRange:"Average Painting: $1,500 – $5,000",topItem:"Single-room interior painting typically costs $800 to $1,500. Full interior or exterior painting ranges from $2,500 to $5,000. Costs depend on room size, surface condition, and paint quality."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/969adbcec_Change_the_color_202604010855.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FPainting_fyncjw",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Painting Cost Calculator",averagePrice:"Average Painting Cost: $1,500 – $5,000",description:"Single-room interior painting typically costs $800 to $1,500. Full interior or exterior painting ranges from $2,500 to $5,000. Costs depend on room size, surface condition, and paint quality.",priceBreakdown:[{label:"Single room interior painting",range:"$800 to $1,500"},{label:"Full interior or exterior",range:"$2,500 to $5,000"}],aboutText:"Whether you are refreshing the aesthetic of your 'forever home' or require an emergency paint job, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the painting process from start to finish. By combining deep industry research powered by AI, a network of vetted painting contractors, and our signature painting cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function D$(){return r.jsx(it,{serviceName:"Pest Control",calcSlug:"pest-control",pricingTeaser:{averageRange:"Average Pest Control: $150 – $950",topItem:"One-time pest treatment typically costs $150 to $550 for a 2,000 sq. ft. home. Monthly maintenance plans average $40 to $80. Costs depend on pest type and treatment extent."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/e504042c7_Remove_the_image_202604010815.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=New_exterminator_video_fr7jo4",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Pest Control Cost Calculator",averagePrice:"Average Pest Treatment & Prevention Cost: $150 – $950",description:"One-time pest treatment typically costs $150 to $550 for a 2,000 sq. ft. home. Monthly maintenance plans average $40 to $80. Costs depend on pest type and treatment extent.",priceBreakdown:[{label:"One-time treatment (2,000 sq. ft. home)",range:"$150 to $550"},{label:"Monthly maintenance plan",range:"$40 to $80"}],aboutText:"Whether you are protecting your 'forever home' from structural damage or require an emergency response for an active infestation, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the pest management process from start to finish. By combining deep industry research powered by AI, a network of vetted contractors, and our signature exterminator cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}const O$=[{title:"Verified Expertise",description:"Every contractor matched to your project is manually and digitally screened for a minimum of five years in business and a verified 4.5-star average rating or higher."},{title:"Zero-Spam Policy",description:'Your contact information is encrypted and only shared with the specific, highly-rated professionals you choose to engage with. We never sell your data to third-party "lead farms."'},{title:"Real-Time Data Accuracy",description:"Our AI constantly updates local chemical prices, bait station hardware costs, and labor rates across your zip code region."},{title:"Your Privacy Matters",description:"We use industry-standard SSL encryption to protect your project details. Your personal data stays safe, secure, and under your control."}];function F$(){return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),r.jsx("section",{className:"w-full bg-white py-16 sm:py-24 flex-1",children:r.jsx("div",{className:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8",children:r.jsxs(Ot.div,{initial:{opacity:0,y:20}
889,animate:{opacity:1,y:0},transition:{duration:.6},children:[r.jsx("h1",{className:"text-3xl sm:text-4xl font-bold text-foreground mb-6",children:"Our Guarantee & Privacy Promise"}),r.jsx("p",{className:"text-muted-foreground text-lg leading-relaxed mb-10",children:"Your home is your biggest investment, and we take your family's safety seriously. Every connection made through SnapEstimate.ai is backed by our Guarantee:"}),r.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:O$.map((e,t)=>r.jsx(Ot.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:t*.1},className:"bg-[hsl(210,20%,96%)] rounded-lg p-6",children:r.jsxs("div",{className:"flex items-start gap-4",children:[r.jsx(Ci,{className:"w-6 h-6 text-[hsl(197,100%,50%)] flex-shrink-0 mt-0.5"}),r.jsxs("div",{children:[r.jsx("h3",{className:"text-lg font-bold text-foreground mb-2",children:e.title}),r.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed",children:e.description})]})]})},t))})]})})}),r.jsx(tr,{})]})}function B$(){return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),r.jsx("section",{className:"w-full bg-white py-16 sm:py-24 flex-1",children:r.jsx("div",{className:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8",children:r.jsxs(Ot.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6},children:[r.jsx("h1",{className:"text-3xl sm:text-4xl font-bold text-foreground mb-6",children:"Analyzing Treatment Labor and Contractor Reliability"}),r.jsxs("div",{className:"space-y-6 text-muted-foreground text-lg leading-relaxed",children:[r.jsx("p",{children:"When budgeting at SnapEstimate.ai, understand that labor and specialized diagnostic time typically account for 60-75% of your total investment. For a $1,500 termite treatment, approximately $1,100 goes toward the skilled labor of trenching, precise chemical injection, bait station calibration, and the structural warranty provided by the company to ensure your home remains pest-free."}),r.jsx("p",{children:"This breakdown demonstrates why choosing a reliable, experienced contractor is crucial. The expertise and precision of the technician directly impacts the longevity and effectiveness of your pest control solution, making contractor quality an investment in your home's long-term protection."})]})]})})}),r.jsx(tr,{})]})}const z$={contractorName:"Smiley Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",rating:4.8,reviewCount:342,tagline:"NJ's #1 Plumbing & Sewer Specialist",phone:"+18339907627",about:"Smiley Drain is New Jersey's leading plumbing and sewer specialist, serving homeowners and businesses with expert plumbing repairs, installations, and sewer line services. Our Elite Pro team combines 15+ years of expertise with same-day emergency service.",overview:[{iconName:"BadgeCheck",label:"Licensed & Insured"},{iconName:"Clock",label:"Same Day Service Available"},{iconName:"Users",label:"342 5-Star Reviews"},{iconName:"Briefcase",label:"15+ Years in Business"}],hours:[{day:"Monday–Friday",time:"6:00 AM – 9:00 PM"},{day:"Saturday",time:"7:00 AM – 5:00 PM"},{day:"Sunday",time:"Emergency Only"}],paymentMethods:["Cash","Check","Credit Card","Financing"],services:["Water Heater Installation","Plumbing","Sewer Rooter Service","Sewer Relining","Sewer Hydro Jetting","Sewer Descaling","Water Softener","Sewer Camera Inspection"],photos:["https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=800","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png"],reviews:[{avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",name:"Michael M.",date:"2 weeks ago",rating:5,text:"Professional, on-time, and fair pricing. Smiley Drain fixed my plumbing issue quickly. Highly recommend!",response:"Thank y
889ou for the kind review! We appreciate your business.",responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg"},{avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",name:"Sarah K.",date:"1 month ago",rating:5,text:"Emergency plumbing backup. They came immediately and solved it with professionalism!",response:null,responseAvatar:null}],credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #NJ-HIC-12345"},{iconName:"BadgeCheck",label:"General Liability Insurance",detail:"$2M coverage"},{iconName:"Award",label:"Workers Compensation",detail:"Active & Current"},{iconName:"ShieldCheck",label:"BBB Accredited",detail:"A+ Rating"}]};function W$(){return r.jsx(it,{serviceName:"Plumbing",calcSlug:"plumbing",pricingTeaser:{averageRange:"Average Plumbing Service: $150 – $5,000+",topItem:"Minor repairs like fixing a leaky faucet or running toilet typically cost $150 to $350. Larger jobs such as pipe replacement, water line work, or bathroom rough-ins range from $1,000 to $5,000+. Costs vary by scope, pipe material, and local labor rates."},bottomImage:"https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=800",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/3a9ce38d9_image.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Woman_taking_picture_of_plumbing_202605251653_zlj12l",pricingProps:{title:"Plumbing Cost Calculator",averagePrice:"Average Plumbing Service: $150 – $5,000+",description:"Minor repairs like fixing a leaky faucet or running toilet typically cost $150 to $350. Larger jobs such as pipe replacement, water line work, or bathroom rough-ins range from $1,000 to $5,000+. Costs vary by scope, pipe material, and local labor rates.",priceBreakdown:[{label:"Faucet or toilet repair / replacement",range:"$150 to $500"},{label:"Drain cleaning / snaking",range:"$150 to $400"},{label:"Water heater installation",range:"$800 to $2,500"},{label:"Pipe repair or partial replacement",range:"$500 to $2,500"},{label:"Full bathroom rough-in plumbing",range:"$1,500 to $5,000+"}],aboutText:"Whether you need a fast fix for a leaky pipe or a full plumbing system overhaul, SnapEstimate.ai connects you with vetted, licensed plumbers across New Jersey. Our AI-powered cost estimator gives homeowners transparent pricing before the first truck rolls up. No surprises, no upsells — just honest plumbing work from professionals who stand behind their craft."},children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-12",children:[r.jsx("h2",{className:"text-3xl font-bold text-foreground mb-8",children:"Elite Pro for Plumbing"}),r.jsx(Gs,{c:z$,serviceSlug:"Plumbing"})]})})}function U$(){return r.jsx(it,{serviceName:"Roofing",calcSlug:"roofing",highDemand:!0,pricingTeaser:{averageRange:"Average Roofing: $8,000 – $20,000",topItem:"A standard asphalt shingle roof typically costs $8,000 to $15,000. Premium metal or slate roofing ranges from $25,000 to $50,000+. Costs vary based on roof pitch, materials, and local labor rates."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fc62b6f36_Use_an_image_202604010840.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FRoofing_h7nl6a",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Roofing Cost Calculator",averagePrice:"Average Roofing Cost: $8,000 – $20,000",description:"A standard asphalt shingle roof typically costs $8,000 to $15,000. Premium metal or slate roofing ranges from $25,000 to $50,000+. Costs vary based on roof pitch, materials, and local labor rates.",priceBreakdown:[{label:"Asphalt shingle roof replacement",range:"$8,000 to $15,000"},{label:"Premium metal or slate roofing",range:"$25,000 to $50,000+"}],aboutText:"Whether you are securing the shelter of your 'forever home' or require an emergency response for a leaking roof, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the roofing installation process from start to finish. By combining deep industry research powered by AI, a network of vetted roofing contractors, and our signature roofing cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}const H$={contractorName:"Smiley Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",rating:4.8,reviewCount:342,tagline:"NJ'
889s #1 Plumbing & Sewer Specialist",phone:"+18339907627",about:"Smiley Drain is New Jersey's leading sewer specialist, providing expert camera inspection services for accurate diagnostics and property purchase assessments. Our Elite Pro team combines 15+ years of expertise with same-day emergency service.",overview:[{iconName:"BadgeCheck",label:"Licensed & Insured"},{iconName:"Clock",label:"Same Day Service Available"},{iconName:"Users",label:"342 5-Star Reviews"},{iconName:"Briefcase",label:"15+ Years in Business"}],hours:[{day:"Monday–Friday",time:"6:00 AM – 9:00 PM"},{day:"Saturday",time:"7:00 AM – 5:00 PM"},{day:"Sunday",time:"Emergency Only"}],paymentMethods:["Cash","Check","Credit Card","Financing"],services:["Water Heater Installation","Plumbing","Sewer Rooter Service","Sewer Relining","Sewer Hydro Jetting","Sewer Descaling","Water Softener","Sewer Camera Inspection"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/4efda2e85_Place_the_phone_202604010753.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png"],reviews:[{avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",name:"Michael M.",date:"2 weeks ago",rating:5,text:"Detailed camera inspection report. Very helpful for home purchase!",response:"Happy to help with your home inspection!",responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg"}],credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #NJ-HIC-12345"},{iconName:"BadgeCheck",label:"General Liability Insurance",detail:"$2M coverage"},{iconName:"Award",label:"Workers Compensation",detail:"Active & Current"},{iconName:"ShieldCheck",label:"BBB Accredited",detail:"A+ Rating"}]};function V$(){return S.useEffect(()=>{const e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=AW-18038674648",document.head.appendChild(e);const t=document.createElement("script");return t.innerHTML="
vendor: 118 bytes, line 889
889window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','
889AW-18038674648
vendor: 3 bytes, line 889
889');
889",document.head.appendChild(t),()=>{document.head.removeChild(e),document.head.removeChild(t)}},[]),r.jsx(it,{serviceName:"Sewer Camera Inspection",calcSlug:"sewer-camera-inspection",pricingTeaser:{averageRange:"Average Inspection: $300 – $800",topItem:"Standard sewer camera inspections typically cost $300 to $600. Inspections with detailed reporting and video range from $600 to $1,000. Costs depend on line length and complexity."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/4efda2e85_Place_the_phone_202604010753.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Sewer Camera Inspection Cost Calculator",averagePrice:"Average Sewer Inspection Cost: $300 – $800",description:"Standard sewer camera inspections typically cost $300 to $600. Inspections with detailed reporting and video range from $600 to $1,000. Costs depend on line length and complexity.",priceBreakdown:[{label:"Standard sewer camera inspection",range:"$300 to $600"},{label:"Inspection with detailed reporting and video",range:"$600 to $1,000"}],aboutText:"Whether you are diagnosing a sewer line issue in your 'forever home' or require an emergency inspection before purchasing a property, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the sewer inspection process from start to finish. By combining deep industry research powered by AI, a network of vetted plumbing specialists, and our signature inspection cost estimator, we guarantee a seamless, high-tech experience for your next project."},children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-12",children:[r.jsx("h2",{className:"text-3xl font-bold text-foreground mb-8",children:"Elite Pro for Sewer Camera Inspection"}),r.jsx(Gs,{c:H$,serviceSlug:"SewerCameraInspection"})]})})}const q$={contractorName:"Smiley Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",rating:4.8,reviewCount:342,tagline:"NJ's #1 Plumbing & Sewer Specialist",phone:"+18339907627",about:"Smiley Drain is New Jersey's leading sewer specialist, providing expert descaling services to remove mineral buildup and restore proper flow. Our Elite Pro team combines 15+ years of expertise with same-day emergency service.",overview:[{iconName:"BadgeCheck",label:"Licensed & Insured"},{iconName:"Clock",label:"Same Day Service Available"},{iconName:"Users",label:"342 5-Star Reviews"},{iconName:"Briefcase",label:"15+ Years in Business"}],hours:[{day:"Monday–Friday",time:"6:00 AM – 9:00 PM"},{day:"Saturday",time:"7:00 AM – 5:00 PM"},{day:"Sunday",time:"Emergency Only"}],paymentMethods:["Cash","Check","Credit Card","Financing"],services:["Water Heater Installation","Plumbing","Sewer Rooter Service","Sewer Relining","Sewer Hydro Jetting","Sewer Descaling","Water Softener","Sewer Camera Inspection"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/aed4c16de_Blur_the_background_202604010744.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png"],reviews:[{avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",name:"Michael M.",date:"2 weeks ago",rating:5,text:"Professional descaling service. Water flow restored perfectly!",response:"Thank you for your review!",responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg"}],credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #NJ-HIC-12345"},{iconName:"BadgeCheck",label:"General Liability Insurance",detail:"$2M coverage"}
889,{iconName:"Award",label:"Workers Compensation",detail:"Active & Current"},{iconName:"ShieldCheck",label:"BBB Accredited",detail:"A+ Rating"}]};function J$(){return S.useEffect(()=>{const e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=AW-18038674648",document.head.appendChild(e);const t=document.createElement("script");return t.innerHTML="
vendor: 118 bytes, line 889
889window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','
889AW-18038674648
vendor: 3 bytes, line 889
889');
889",document.head.appendChild(t),()=>{document.head.removeChild(e),document.head.removeChild(t)}},[]),r.jsx(it,{serviceName:"Sewer Descaling",calcSlug:"sewer-descaling",pricingTeaser:{averageRange:"Average Descaling: $400 – $1,200",topItem:"Standard sewer descaling typically costs $400 to $1,000. Full system treatments for larger properties range from $1,200 to $2,500. Costs depend on line length and mineral buildup extent."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/aed4c16de_Blur_the_background_202604010744.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Sewer Descaling Cost Calculator",averagePrice:"Average Sewer Descaling Cost: $400 – $1,200",description:"Standard sewer descaling typically costs $400 to $1,000. Full system treatments for larger properties range from $1,200 to $2,500. Costs depend on line length and mineral buildup extent.",priceBreakdown:[{label:"Standard residential descaling treatment",range:"$400 to $1,000"},{label:"Full system treatment (larger properties)",range:"$1,200 to $2,500"}],aboutText:"Whether you are maintaining the flow of your 'forever home' or require an emergency sewer descaling service, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the sewer maintenance process from start to finish. By combining deep industry research powered by AI, a network of vetted plumbing contractors, and our signature descaling cost estimator, we guarantee a seamless, high-tech experience for your next project."},children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-12",children:[r.jsx("h2",{className:"text-3xl font-bold text-foreground mb-8",children:"Elite Pro for Sewer Descaling"}),r.jsx(Gs,{c:q$,serviceSlug:"SewerDescaling"})]})})}const G$={contractorName:"Smiley Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",rating:4.8,reviewCount:342,tagline:"NJ's #1 Plumbing & Sewer Specialist",phone:"+18339907627",about:"Smiley Drain is New Jersey's leading sewer specialist, providing expert hydro jetting services for complete drain and sewer line cleaning. Our Elite Pro team combines 15+ years of expertise with same-day emergency service.",overview:[{iconName:"BadgeCheck",label:"Licensed & Insured"},{iconName:"Clock",label:"Same Day Service Available"},{iconName:"Users",label:"342 5-Star Reviews"},{iconName:"Briefcase",label:"15+ Years in Business"}],hours:[{day:"Monday–Friday",time:"6:00 AM – 9:00 PM"},{day:"Saturday",time:"7:00 AM – 5:00 PM"},{day:"Sunday",time:"Emergency Only"}],paymentMethods:["Cash","Check","Credit Card","Financing"],services:["Water Heater Installation","Plumbing","Sewer Rooter Service","Sewer Relining","Sewer Hydro Jetting","Sewer Descaling","Water Softener","Sewer Camera Inspection"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/977b847f6_Change_the_color_202604010749.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png"],reviews:[{avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",name:"Michael M.",date:"2 weeks ago",rating:5,text:"Powerful hydro jetting service. Cleared my main line completely!",response:"Thank you for your business!",responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg"}],credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #NJ-HIC-12345"},{iconName:"BadgeCheck",label:"General Liability Insurance",detail:"$2M coverage"}
889,{iconName:"Award",label:"Workers Compensation",detail:"Active & Current"},{iconName:"ShieldCheck",label:"BBB Accredited",detail:"A+ Rating"}]};function Z$(){return S.useEffect(()=>{const e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=AW-18038674648",document.head.appendChild(e);const t=document.createElement("script");return t.innerHTML="
vendor: 118 bytes, line 889
889window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','
889AW-18038674648
vendor: 3 bytes, line 889
889');
889",document.head.appendChild(t),()=>{document.head.removeChild(e),document.head.removeChild(t)}},[]),r.jsx(it,{serviceName:"Sewer Hydro Jetting",calcSlug:"sewer-hydro-jetting",pricingTeaser:{averageRange:"Average Hydro Jetting: $300 – $1,500",topItem:"Standard residential hydro jetting typically costs $400 to $800. Full-line cleaning ranges from $1,200 to $3,000. Costs depend on line length and blockage severity."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/977b847f6_Change_the_color_202604010749.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Sewer Hydro Jetting Cost Calculator",averagePrice:"Average Hydro Jetting Cost: $300 – $1,500",description:"Standard residential hydro jetting typically costs $400 to $800. Full-line cleaning ranges from $1,200 to $3,000. Costs depend on line length and blockage severity.",priceBreakdown:[{label:"Standard residential hydro jetting",range:"$400 to $800"},{label:"Full-line cleaning (larger properties/commercial)",range:"$1,200 to $3,000"}],aboutText:"Whether you are clearing a stubborn clog in your 'forever home' or require an emergency hydro jetting service, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the sewer cleaning process from start to finish. By combining deep industry research powered by AI, a network of vetted plumbing professionals, and our signature hydro jetting cost estimator, we guarantee a seamless, high-tech experience for your next project."},children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-12",children:[r.jsx("h2",{className:"text-3xl font-bold text-foreground mb-8",children:"Elite Pro for Sewer Hydro Jetting"}),r.jsx(Gs,{c:G$,serviceSlug:"SewerHydroJetting"})]})})}const K$={contractorName:"Smiley Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",rating:4.8,reviewCount:342,tagline:"NJ's #1 Plumbing & Sewer Specialist",phone:"+18339907627",about:"Smiley Drain is New Jersey's leading sewer specialist, providing expert trenchless sewer relining, pipe restoration, and advanced sewer diagnostics. Our Elite Pro team combines 15+ years of expertise with same-day emergency service.",overview:[{iconName:"BadgeCheck",label:"Licensed & Insured"},{iconName:"Clock",label:"Same Day Service Available"},{iconName:"Users",label:"342 5-Star Reviews"},{iconName:"Briefcase",label:"15+ Years in Business"}],hours:[{day:"Monday–Friday",time:"6:00 AM – 9:00 PM"},{day:"Saturday",time:"7:00 AM – 5:00 PM"},{day:"Sunday",time:"Emergency Only"}],paymentMethods:["Cash","Check","Credit Card","Financing"],services:["Water Heater Installation","Plumbing","Sewer Rooter Service","Sewer Relining","Sewer Hydro Jetting","Sewer Descaling","Water Softener","Sewer Camera Inspection"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/5161ca072_Use_a_real_202604010740.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png"],reviews:[{avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",name:"Michael M.",date:"2 weeks ago",rating:5,text:"Excellent trenchless sewer relining. No yard disruption and professional service!",response:"Thank you for choosing Smiley Drain!",responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg"}],credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #NJ-HIC-12345"},{iconName:"BadgeCheck",label:"General Liability Insurance",detail:"$2M coverage"}
889,{iconName:"Award",label:"Workers Compensation",detail:"Active & Current"},{iconName:"ShieldCheck",label:"BBB Accredited",detail:"A+ Rating"}]};function Y$(){return S.useEffect(()=>{const e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=AW-18038674648",document.head.appendChild(e);const t=document.createElement("script");return t.innerHTML="
vendor: 118 bytes, line 889
889window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','
889AW-18038674648
vendor: 3 bytes, line 889
889');
889",document.head.appendChild(t),()=>{document.head.removeChild(e),document.head.removeChild(t)}},[]),r.jsx(it,{serviceName:"Sewer Relining",calcSlug:"sewer-relining",pricingTeaser:{averageRange:"Average Sewer Relining: $3,000 – $8,000",topItem:"Trenchless sewer relining typically costs $125 to $200 per linear foot. Standard residential repairs average $4,000 to $7,500. Costs depend on line length and damage extent."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/5161ca072_Use_a_real_202604010740.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Sewer Relining Cost Calculator",averagePrice:"Average Sewer Relining Cost: $3,000 – $8,000",description:"Trenchless sewer relining typically costs $125 to $200 per linear foot. Standard residential repairs average $4,000 to $7,500. Costs depend on line length and damage extent.",priceBreakdown:[{label:"Trenchless relining (per linear foot)",range:"$125 to $200"},{label:"Standard residential repair",range:"$4,000 to $7,500"}],aboutText:"Whether you are preserving the infrastructure of your 'forever home' or require an emergency response for a main line backup, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the plumbing management process from start to finish. By combining deep industry research powered by AI, a network of vetted plumbing specialists, and our signature sewer repair cost estimator, we guarantee a seamless, high-tech experience for your next project."},children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-12",children:[r.jsx("h2",{className:"text-3xl font-bold text-foreground mb-8",children:"Elite Pro for Sewer Relining"}),r.jsx(Gs,{c:K$,serviceSlug:"SewerRelining"})]})})}const Q$={contractorName:"Smiley Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",rating:4.8,reviewCount:342,tagline:"NJ's #1 Plumbing & Sewer Specialist",phone:"+18339907627",about:"Smiley Drain is New Jersey's leading plumbing and sewer specialist, providing expert sewer rooter service, hydro jetting, and emergency sewer cleaning. Our Elite Pro team combines 15+ years of expertise with same-day emergency service.",overview:[{iconName:"BadgeCheck",label:"Licensed & Insured"},{iconName:"Clock",label:"Same Day Service Available"},{iconName:"Users",label:"342 5-Star Reviews"},{iconName:"Briefcase",label:"15+ Years in Business"}],hours:[{day:"Monday–Friday",time:"6:00 AM – 9:00 PM"},{day:"Saturday",time:"7:00 AM – 5:00 PM"},{day:"Sunday",time:"Emergency Only"}],paymentMethods:["Cash","Check","Credit Card","Financing"],services:["Water Heater Installation","Plumbing","Sewer Rooter Service","Sewer Relining","Sewer Hydro Jetting","Sewer Descaling","Water Softener","Sewer Camera Inspection"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/a6b92b28a_Make_the_background_202604010735.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png"],reviews:[{avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",name:"Michael M.",date:"2 weeks ago",rating:5,text:"Fast and professional sewer rooter service. They cleared the clog in record time!",response:"Thank you for the kind review!",responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg"}],credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #NJ-HIC-12345"},{iconName:"BadgeCheck",label:"General Liability Insurance",detail:"$2M coverage"}
889,{iconName:"Award",label:"Workers Compensation",detail:"Active & Current"},{iconName:"ShieldCheck",label:"BBB Accredited",detail:"A+ Rating"}]};function X$(){return r.jsx(it,{serviceName:"Sewer Rooter Service",calcSlug:"sewer-rooter-service",pricingTeaser:{averageRange:"Average Rooter Service: $300 – $1,000",topItem:"Minor root removal and clog service typically costs $300 to $600. Major system root clearing ranges from $800 to $2,000. Costs depend on blockage extent and line complexity."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/a6b92b28a_Make_the_background_202604010735.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Sewer Rooter Service Cost Calculator",averagePrice:"Average Rooter Service Cost: $300 – $1,000",description:"Minor root removal and clog service typically costs $300 to $600. Major system root clearing ranges from $800 to $2,000. Costs depend on blockage extent and line complexity.",priceBreakdown:[{label:"Minor root or clog removal",range:"$300 to $600"},{label:"Major system root clearing",range:"$800 to $2,000"}],aboutText:"Whether you are clearing tree roots from your 'forever home' or require an emergency rooter service for a backed-up sewer line, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the sewer maintenance process from start to finish. By combining deep industry research powered by AI, a network of vetted plumbing contractors, and our signature rooter cost estimator, we guarantee a seamless, high-tech experience for your next project."},children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-12",children:[r.jsx("h2",{className:"text-3xl font-bold text-foreground mb-8",children:"Elite Pro for Sewer Rooter Service"}),r.jsx(Gs,{c:Q$,serviceSlug:"SewerRooterService"})]})})}function e8(){return r.jsx(it,{serviceName:"Siding",calcSlug:"siding",pricingTeaser:{averageRange:"Average Siding: $5,000 – $15,000",topItem:"Vinyl siding installation typically ranges from $6,000 to $12,000. Premium fiber cement options cost $15,000 to $35,000. Pricing depends on material quality, square footage, and local installation rates."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/05fc6ae2b_Replace_tree_removal_202604010728.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSiding_nqtnvs",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Siding Cost Calculator",averagePrice:"Average Siding Cost: $5,000 – $15,000",description:"Vinyl siding installation typically ranges from $6,000 to $12,000. Premium fiber cement options cost $15,000 to $35,000. Pricing depends on material quality, square footage, and local installation rates.",priceBreakdown:[{label:"Vinyl siding installation",range:"$6,000 to $12,000"},{label:"Premium fiber cement siding",range:"$15,000 to $35,000"}],aboutText:"Whether you are protecting the exterior of your 'forever home' or require an emergency repair after storm damage, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the exterior renovation process from start to finish. By combining deep industry research powered by AI, a network of vetted siding contractors, and our signature siding cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function t8(){return r.jsx(it,{serviceName:"Tree Service",calcSlug:"tree-service",pricingTeaser:{averageRange:"Average Tree Service: $500 – $2,000",topItem:"Tree trimming and pruning typically range from $400 to $800. Medium-sized tree removal costs $600 to $1,200. Pricing depends on tree size, location, and access to equipment."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/ba3e7303a_Replace_the_logo_202604010716.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FTree_removal_n5cy8l",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Tree Removal & Care Cost Calculator",averagePrice:"Average Tree Service Cost: $500 – $2,000",description:"Tree trimming and pruning typically range from $400 to $800. Medium-sized tree removal costs $600 to $1,200. Pricing depends on tree size, location, and access to equipment.",priceBreakdown:[{label:"Tree trimming and pruning",range:"$400 to $800"},{label:"Medium-sized tree removal",range:"$600 to $1,200"}],aboutText:"Whether you are maintaining the safety of your 'forever home' or require an emergency response for a fallen tree, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the arboriculture process from start to finish. By combining deep industry research powered by AI, a network of vetted tree care specialists, and our signature tree service cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function n8(){S.useEffect(()=>{window.scrollTo(0,0)},[]);
889const e={title:"Water & Mold Cleanup Cost Breakdown",averagePrice:"$2,500 - $25,000+",description:"Water damage and mold cleanup requires swift professional response to prevent secondary damage. Costs range from $5,000 to $25,000+ depending on damage extent, materials affected, and mold remediation needs.",priceBreakdown:[{label:"Water extraction and dehumidification",range:"$2,500 to $8,000"},{label:"Complete restoration (water and fire damage)",range:"$5,000 to $25,000+"}],aboutText:"SnapEstimate.AI connects you with IICRC-certified restoration specialists who assess damage accurately and prevent costly complications like mold growth and structural failure. They also work directly with your insurance company to streamline the claims process and documentation."};return r.jsx(it,{serviceName:"Water & Mold Cleanup",calcSlug:"water-fire-restoration",pricingTeaser:{averageRange:"Average Water & Mold Cleanup: $2,500 – $25,000+",topItem:"Water damage and mold cleanup requires swift professional response to prevent secondary damage. Costs range from $5,000 to $25,000+ depending on damage extent, materials affected, and mold remediation needs."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/f48fb0add_Screenshot2026-04-01141524.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=0528_r3jqxr",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:e})}function r8(){S.useEffect(()=>{window.scrollTo(0,0)},[]);const e={title:"Pool Service Cost Breakdown",averagePrice:"$150 - $5,000+",description:"Pool service costs vary based on the type of work needed. Routine cleaning and maintenance keeps your pool safe and sparkling, while repairs and equipment upgrades can range significantly depending on complexity.",priceBreakdown:[{label:"Monthly pool cleaning & maintenance",range:"$150 to $400/month"},{label:"Pool equipment repair (pump, filter, heater)",range:"$500 to $2,500"},{label:"Pool resurfacing or replastering",range:"$3,000 to $10,000"},{label:"Pool opening or closing (seasonal)",range:"$200 to $600"},{label:"Leak detection and repair",range:"$500 to $3,500"}],aboutText:"SnapEstimate.AI connects you with certified pool technicians who handle everything from routine weekly cleanings to major equipment repairs and resurfacing. Our vetted pros ensure your pool stays safe, clean, and properly balanced all season long."};return r.jsx(it,{serviceName:"Pool Service",calcSlug:"pool-service",pricingTeaser:{averageRange:"Average Pool Service: $150 – $5,000+",topItem:"Pool service costs vary based on the type of work needed. Routine maintenance keeps your pool safe while repairs and upgrades can range significantly."},pricingProps:e,highDemand:!0})}const s8={contractorName:"Smiley Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",rating:4.8,reviewCount:342,tagline:"NJ's #1 Plumbing & Sewer Specialist",phone:"+18339907627",about:"Smiley Drain is New Jersey's leading plumbing and sewer specialist, serving homeowners and businesses with expert water heater installations, plumbing repairs, and sewer line services. Our Elite Pro team combines 15+ years of expertise with same-day emergency service.",overview:[{iconName:"BadgeCheck",label:"Licensed & Insured"},{iconName:"Clock",label:"Same Day Service Available"},{iconName:"Users",label:"342 5-Star Reviews"},{iconName:"Briefcase",label:"15+ Years in Business"}],hours:[{day:"Monday–Friday",time:"6:00 AM – 9:00 PM"},{day:"Saturday",time:"7:00 AM – 5:00 PM"},{day:"Sunday",time:"Emergency Only"}],paymentMethods:["Cash","Check","Credit Card","Financing"],services:["Water Heater Installation","Plumbing","Sewer Rooter Service","Sewer Relining","Sewer Hydro Jetting","Sewer Descaling","Water Softener","Sewer Camera Inspection"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8d3acdd80_Change_tree_removal_202604010725.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg"],reviews:[{avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",name:"Michael M.",date:"2 weeks ago",rating:5,text:"Professional, on-time, and fair pricing. Smiley Drain fixed my water heater in under an hour. Highly recommend!",response:"Thank y
889ou for the kind review! We appreciate your business and look forward to serving you again.",responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg"},{avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",name:"Sarah K.",date:"1 month ago",rating:5,text:"Emergency sewer backup at 9 PM on a Saturday. They came out, diagnosed the issue, and had us back to normal by midnight. Best service ever!",response:null,responseAvatar:null}],credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #NJ-HIC-12345"},{iconName:"BadgeCheck",label:"General Liability Insurance",detail:"$2M coverage"},{iconName:"Award",label:"Workers Compensation",detail:"Active & Current"},{iconName:"ShieldCheck",label:"BBB Accredited",detail:"A+ Rating"}]};function i8(){return S.useEffect(()=>{const e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=AW-18038674648",document.head.appendChild(e);const t=document.createElement("script");return t.innerHTML="
vendor: 118 bytes, line 889
889window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','
889AW-18038674648
vendor: 3 bytes, line 889
889');
889",document.head.appendChild(t),()=>{document.head.removeChild(e),document.head.removeChild(t)}},[]),r.jsx(it,{serviceName:"Water Heater Installation",calcSlug:"water-heater",highDemand:!0,pricingTeaser:{averageRange:"Average Water Heater: $1,000 – $2,500",topItem:"Standard 50-gallon tank replacement typically costs $1,200 to $1,800. Tankless water heater upgrades range from $2,500 to $4,500. Costs depend on unit type, fuel source, and installation needs."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/8d3acdd80_Change_tree_removal_202604010725.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FWater_heater_with_logo_at_end_uh7ptq",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Water Heater Replacement Cost Calculator",averagePrice:"Average Water Heater Cost: $1,000 – $2,500",description:"Standard 50-gallon tank replacement typically costs $1,200 to $1,800. Tankless water heater upgrades range from $2,500 to $4,500. Costs depend on unit type, fuel source, and installation needs.",priceBreakdown:[{label:"Standard 50-gallon tank replacement",range:"$1,200 to $1,800"},{label:"Tankless water heater upgrade",range:"$2,500 to $4,500"}],aboutText:"Whether you are ensuring the comfort of your 'forever home' or require an emergency replacement for a leaking tank, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the plumbing installation process from start to finish. By combining deep industry research powered by AI, a network of vetted plumbing contractors, and our signature water heater cost estimator, we guarantee a seamless, high-tech experience for your next project."},children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-12",children:[r.jsx("h2",{className:"text-3xl font-bold text-foreground mb-8",children:"Elite Pro for Water Heater Installation"}),r.jsx(Gs,{c:s8,serviceSlug:"WaterHeaterInstallation"})]})})}const o8={contractorName:"Smiley Drain",logoUrl:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",rating:4.8,reviewCount:342,tagline:"NJ's #1 Plumbing & Water Specialist",phone:"+18339907627",about:"Smiley Drain is New Jersey's leading water softening specialist, providing expert water softener installation and maintenance for hard water solutions. Our Elite Pro team combines 15+ years of expertise with same-day emergency service.",overview:[{iconName:"BadgeCheck",label:"Licensed & Insured"},{iconName:"Clock",label:"Same Day Service Available"},{iconName:"Users",label:"342 5-Star Reviews"},{iconName:"Briefcase",label:"15+ Years in Business"}],hours:[{day:"Monday–Friday",time:"6:00 AM – 9:00 PM"},{day:"Saturday",time:"7:00 AM – 5:00 PM"},{day:"Sunday",time:"Emergency Only"}],paymentMethods:["Cash","Check","Credit Card","Financing"],services:["Water Heater Installation","Plumbing","Sewer Rooter Service","Sewer Relining","Sewer Hydro Jetting","Sewer Descaling","Water Softener","Sewer Camera Inspection"],photos:["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/106b9ea98_Follow_the_same_202604011218.png","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png"],reviews:[{avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",name:"Michael M.",date:"2 weeks ago",rating:5,text:"Water softener installation was seamless. Water quality is now perfect!",response:"Glad we could help!",responseAvatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg"}],credentials:[{iconName:"ShieldCheck",label:"NJ Master Plumber License",detail:"License #NJ-HIC-12345"},{iconName:"BadgeCheck",label:"General Liability Insurance",detail:"$2M coverage"}
889,{iconName:"Award",label:"Workers Compensation",detail:"Active & Current"},{iconName:"ShieldCheck",label:"BBB Accredited",detail:"A+ Rating"}]};function a8(){return S.useEffect(()=>{const e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=AW-18038674648",document.head.appendChild(e);const t=document.createElement("script");return t.innerHTML="
vendor: 118 bytes, line 889
889window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','
889AW-18038674648
vendor: 3 bytes, line 889
889');
889",document.head.appendChild(t),()=>{document.head.removeChild(e),document.head.removeChild(t)}},[]),r.jsx(it,{serviceName:"Water Softener",calcSlug:"water-softener",pricingTeaser:{averageRange:"Average Water Softener: $1,500 – $3,500",topItem:"Professional water softening installation typically costs $1,500 to $3,500. Whole-house filtration or smart-monitoring systems range from $4,000 to $6,500+. Costs depend on unit capacity, plumbing complexity, and technology type."},bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/106b9ea98_Follow_the_same_202604011218.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FWater_softer_kvfxeu",videoThumbnail:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fae44d789_Screenshot2026-04-07141157.png",pricingProps:{title:"Water Softening System Cost Calculator",averagePrice:"Average Water Softener Cost: $1,500 – $3,500",description:"Professional water softening installation typically costs $1,500 to $3,500. Whole-house filtration or smart-monitoring systems range from $4,000 to $6,500+. Costs depend on unit capacity, plumbing complexity, and technology type.",priceBreakdown:[{label:"Professional water softening system installation",range:"$1,500 to $3,500"},{label:"Whole-house filtration or smart-monitoring systems",range:"$4,000 to $6,500+"}],aboutText:"Whether you are upgrading your 'forever home' to eliminate hard water scaling or require a solution for localized well water issues, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the water treatment process from start to finish. By combining deep industry research powered by AI, a network of vetted plumbing specialists, and our signature cost estimator, we guarantee a seamless, high-tech experience for your next project."},children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-12",children:[r.jsx("h2",{className:"text-3xl font-bold text-foreground mb-8",children:"Elite Pro for Water Softener"}),r.jsx(Gs,{c:o8,serviceSlug:"WaterSoftener"})]})})}const l8=[{icon:Ud,title:"1. Scope of the Guarantee",content:[{label:"Coverage",text:"The guarantee applies only to the quality of the service performed by a SnapEstimate.ai Elite Verified professional."},{label:"Service Match",text:"The service must have been booked or initiated through the SnapEstimate.ai platform or via a lead generated by our system."},{label:"Financial Limit",text:"SnapEstimate.ai will provide a satisfaction reimbursement of up to $500 per project, subject to the claims process."}],intro:"The Elite Guarantee is designed to protect homeowners against substandard workmanship."},{icon:Ci,title:"2. Eligibility Requirements",content:[{label:"The Badge",text:'The professional must have held an active "Elite Verified" status on our platform at the time of booking.'},{label:"Proof of Payment",text:"You must provide a valid receipt or invoice showing the project was paid in full."},{label:"Claim Window",text:"If your direct resolution attempt with the contractor fails, you must officially contact us and submit your claim within 24 hours of that failed attempt."},{label:"Resolution Attempt",text:"You must first attempt to resolve the issue directly with the service provider and allow them a reasonable opportunity to fix the work."}],intro:"To be eligible for a reimbursement claim, the following criteria must be met:"},{icon:fj,title:"3. What is NOT Covered",content:[{label:"Property Damage",text:"Claims involving physical damage to your home or belongings must be filed through the professional's general liability insurance."},{label:"Pricing Disputes",text:'We do not reimburse for disagreements regarding the final price, "hidden fees," or perceived overcharging.'},{label:"Responsiveness",text:'We do not provide compensation for delays, "no-shows," or poor communication.'},{label:"Materials Only",text:"We do not cover the failure of materials or products (e.g., a faulty water heater) that are covered by a manufacturer's warranty."},{label:"Cancellations",text:"Projects that were canceled or never started are not eligible for reimbursement."}],intro:"The SnapEstimate.ai Elite Guarantee is a workmanship protection program, not a comprehensive insurance policy. We do not cover:"},{icon:yj,title:"4. The Claims Process",content:[{label:"Document the Issue",text:"Take clear photos and write a brief description of why the work does not meet industry standards."},{label:"Submit a Request",text:"Contact the SnapEstimate.ai Support Team through our official Claims Portal."},{label:"Investigation",text:"Our experts will review the documentation, the pro's Expert Rating Score, and the service agreement."},{label:"Resolution",text:"If the claim is approved, SnapEstimate.ai will issue a reimbursement check or digital payment for the cost of the repair, up to the $500 limit."}],intro:"If you are unsatisfied with the workmanship of an Elite Verified pro, follow these steps:"},{icon:g1,title:"5. Finality of Decisions",content:[],intro:'SnapEstimate.ai reserves the sole right to determine whether a claim meets the criteria for "substandard workmanship" based on standard industry practices and the evidence provided. Our decision regarding reimbursement is final.'}];function c8(){const e=Hn(),t=()=>{window.history.length>1?window.history.back():e("/")};return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),r.jsx("div",{className:"w-full bg-[hsl(213,32%,10%)] text-white py-16 px-4",children:r.jsxs("div",{className:"max-w-4xl mx-auto text-center",children:[r.jsx("div",{className:"flex justify-center mb-4",children:r.jsx("div",{className:"w-16 h-16 rounded-full bg-[hsl(197,100%,50%)]/20 flex items-center justify-center",children:r.jsx(Ud,{className:"w-8 h-8 text-[hsl(197,100%,50%)]"})})}),r.jsx("h1",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"SnapEstimate.ai Elite Guarantee"}),r.jsx("p",{className:"text-lg text-white/70 max-w-2xl mx-auto",children:"Our financial commitment to ensuring your home project is handled with the precision and care you deserve."})]})}),r.jsx("div",{className:"w-full bg-white py-16 px-4",children:r.jsxs("div",{className:"max-w-4xl mx-auto 
889space-y-10",children:[r.jsx("div",{className:"overflow-x-auto",children:r.jsxs("table",{className:"w-full border-collapse border border-gray-200 rounded-lg shadow-sm",children:[r.jsx("thead",{children:r.jsxs("tr",{className:"bg-[hsl(213,32%,10%)] text-white",children:[r.jsx("th",{className:"border border-gray-200 px-4 py-3 text-left font-bold",children:"Estimated Project Value"}),r.jsx("th",{className:"border border-gray-200 px-4 py-3 text-left font-bold",children:"Maximum Reimbursement Guarantee"}),r.jsx("th",{className:"border border-gray-200 px-4 py-3 text-left font-bold",children:"Typical Eligible Services"})]})}),r.jsxs("tbody",{children:[r.jsxs("tr",{className:"border border-gray-200 hover:bg-[hsl(210,20%,98%)]",children:[r.jsx("td",{className:"border border-gray-200 px-4 py-3 font-semibold text-foreground",children:"Up to $1,500"}),r.jsx("td",{className:"border border-gray-200 px-4 py-3 text-foreground",children:"$500 Guarantee"}),r.jsx("td",{className:"border border-gray-200 px-4 py-3 text-foreground",children:"Handyman work, Appliance Repair, Minor Plumbing, Painting"})]}),r.jsxs("tr",{className:"border border-gray-200 hover:bg-[hsl(210,20%,98%)]",children:[r.jsx("td",{className:"border border-gray-200 px-4 py-3 font-semibold text-foreground",children:"$1,501 – $5,000"}),r.jsx("td",{className:"border border-gray-200 px-4 py-3 text-foreground",children:"$1,000 Guarantee"}),r.jsx("td",{className:"border border-gray-200 px-4 py-3 text-foreground",children:"Water Heater Installation, Tree Service, Electrical Panel Upgrades"})]}),r.jsxs("tr",{className:"border border-gray-200 hover:bg-[hsl(210,20%,98%)]",children:[r.jsx("td",{className:"border border-gray-200 px-4 py-3 font-semibold text-foreground",children:"$5,001+"}),r.jsx("td",{className:"border border-gray-200 px-4 py-3 text-foreground",children:"$2,500 Guarantee"}),r.jsx("td",{className:"border border-gray-200 px-4 py-3 text-foreground",children:"Roofing, Air Conditioning Installation, Full Driveways"})]})]})]})}),l8.map(n=>{const i=n.icon;return r.jsxs("div",{className:"bg-[hsl(210,20%,98%)] rounded-2xl p-8 shadow-sm border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r.jsx("div",{className:"w-10 h-10 rounded-lg bg-[hsl(197,100%,50%)]/10 flex items-center justify-center flex-shrink-0",children:r.jsx(i,{className:"w-5 h-5 text-[hsl(197,100%,50%)]"})}),r.jsx("h2",{className:"text-xl font-bold text-foreground",children:n.title})]}),r.jsx("blockquote",{className:"border-l-4 border-[hsl(197,100%,45%)] pl-4 mb-5",children:r.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed",children:n.intro})}),n.content.length>0&&r.jsx("ul",{className:"space-y-3",children:n.content.map(l=>r.jsxs("li",{className:"flex gap-2 text-sm text-muted-foreground leading-relaxed",children:[r.jsxs("span",{className:"font-bold text-foreground whitespace-nowrap",children:[l.label,":"]}),r.jsx("span",{children:l.text})]},l.label))})]},n.title)}),r.jsx("div",{className:"sticky bottom-0 flex justify-center py-8 px-4 border-t border-gray-200 mt-8 bg-white z-30",children:r.jsxs("button",{onClick:t,className:"flex items-center gap-2 px-6 py-2 bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold rounded-lg transition-colors",children:[r.jsx(mm,{className:"w-4 h-4"}),"Go Back"]})})]})}),r.jsx(tr,{})]})}function d8(){return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),r.jsxs("main",{className:"flex-1 max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 py-16",children:[r.jsx("h1",{className:"text-3xl font-bold text-foreground mb-8",children:"SMS Opt-In / Opt-Out Policy"}),r.jsxs("div",{className:"prose prose-sm max-w-none text-muted-foreground space-y-6 text-base leading-relaxed",children:[r.jsxs("section",{children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-3",children:"TCPA/SMS Privacy, Opt-In"}),r.jsx("p",{className:"mb-3",children:"By clicking Continue I agree to receive SMS messages from SnapEstimate.Ai for Communicating purposes. I understand I can opt-out at any time by replying STOP. Msg & data rates may apply."}),r.jsxs("p",{className:"mb-3",children:["I also agree to the"," ",r.jsx("a",{href:"/terms-of-service",className:"text-blue-600 underline",children:"Terms and Conditions"})," and"," ",r.jsx("a",{href:"/privacy-policy",className:"text-blue-600 underline",children:"Privacy Policy"}),"."]}),r.jsxs("p",{children:['By submitting your information and clicking "Continue" on our estimate form, you authorize SnapEstimate.AI or our chosen'," ",r.jsx("a",{href:"/terms-of-service",className:"text-blue-600 underline",children:"service providers"})," to use the phone number(s) entered."]})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-3",children:"Your Right to Opt Out"}),r.jsxs("p",{children:["You may opt out of future contact at any time. Your consent is ",r.jsx("strong",{children:"not"})," a requirement for any purchase. To opt out, reply STOP to any text message, or contact us directly at"," ",r.jsx("a",{href:"tel:+18339907627",className:"text-blue-600 underline",children:"(833) 990-SNAP (7627)"}),"."]})]}),r.jsxs("section",{className:"border-t border-gray-200 pt-8",children:[r.jsx("h2",{className:"text-2xl font-bold text-foreground mb-4",children:"Opt-Out Policy"}),r.jsx("p",{className:"mb-4",children:"We respect your communication preferences. You have the right to opt out of SMS text messages and phone communications from SnapEstimate.AI and our service provider partners at any time using any of the methods below."}),r.jsx("h3",{className:"text-lg font-bold text-foreground mb-2",children:"How to Opt Out of SMS / Text Messages"}),r.jsxs("ul",{className:"list-disc list-inside space-y-2 mb-6 pl-2",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Reply STOP"})," — Text the word ",r.jsx("strong",{children:"STOP"})," to any text message you receive from us or our partners. You will receive a one-time confirmation message and no further texts will be sent."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Reply UNSUBSCRIBE"})," — Texting ",r.jsx("strong",{children:"UNSUBSCRIBE"})," to any of our messages will also remove you from our list."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Call Us"})," — Contact our toll-free number at ",r.jsx("a",{href:"tel:+18339907627",className:"text-blue-600 underline",children:"(833) 990-SNAP (7627)"})," to be removed from SMS communications."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Email Us"})," — Send an opt-out request to ",r.jsx("a",{href:"mailto:[email protected]",className:"text-blue-600 underline",children:"[email protected]"}),' with the subject line "SMS Opt-Out."']})]}),r.jsx("h3",{className:"text-lg font-bold text-foreground mb-2",children:"How to Opt Out of Phone Calls"}),r.jsxs("ul",{className:"list-disc list-inside space-y-2 mb-6 pl-2",children:[r.jsx("li",{children:"Tell the representative you wish to be placed on our internal Do Not Call list at any time during a call."}),r.jsxs("li",{children:["Call ",r.jsx("a",{href:"tel:+18339907627",className:"text-blue-600 underline",children:"(833) 990-SNAP (7627)"})," and request removal from call lists."]}),r.jsxs("li",{children:["Email ",r.jsx("a",{href:"mailto:[email protected]",className:"text-blue-600 underline",children:"[email protected]"}),' with the subject line "Phone Opt-Out."']})]}),r.jsx("h3",{className:"text-lg font-bold text-foreground mb-2",children:"Processing Time"}),r.jsxs("p",{className:"mb-4",children:["Opt-out requests are processed within ",r.jsx("strong",{children:"10 business days"}),". Please note that opting out of SnapEstimate.AI communications does not automatically remove you from communications initiated by independent service providers who may have separately obtained your consent."]}),r.jsx("h3",{className:"text-lg font-bold text-foreground mb-2",children:"No Purchase Required"}),r.jsx("p",{children:"Your consent to receive marketing communications is never a condition of any purchase or service. Opting out will not affect your ability to use our platform or receive your estimate."})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-3",children:"Automated Communications"}
889),r.jsx("p",{children:'Some installers may use auto-dialers or send automated text messages. If they cannot contact you, these may result in charges to you. You consent to receiving these communications even if the phone number entered is on the "Do Not Call" register.'})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-3",children:"Data Collection & Use"}),r.jsxs("p",{children:["All information is collected and used in accordance with our"," ",r.jsx("a",{href:"/privacy-policy",className:"text-blue-600 underline",children:"Privacy Policy"})," and our"," ",r.jsx("a",{href:"/terms-of-service",className:"text-blue-600 underline",children:"Terms and Conditions"}),"."]})]}),r.jsxs("section",{children:[r.jsx("h2",{className:"text-xl font-bold text-foreground mb-3",children:"Call Recording"}),r.jsx("p",{children:"By submitting your information, you also consent to phone calls from the above-mentioned service providers being recorded by SnapEstimate.AI for training and quality assurance purposes."})]})]})]}),r.jsx(tr,{})]})}function u8(){const[e,t]=S.useState(!1),[n,i]=S.useState(!1),l=async()=>{await Me.auth.logout("/"),i(!0)};return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),r.jsxs("main",{className:"flex-1 max-w-lg mx-auto w-full px-4 py-12",children:[r.jsx("h1",{className:"text-2xl font-bold text-foreground mb-2",children:"Account Settings"}),r.jsx("p",{className:"text-muted-foreground mb-10",children:"Manage your account preferences."}),r.jsxs("div",{className:"border border-red-200 rounded-2xl p-6 bg-red-50",children:[r.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[r.jsx(Zh,{className:"w-5 h-5 text-red-500 flex-shrink-0"}),r.jsx("h2",{className:"text-lg font-semibold text-red-700",children:"Delete Account"})]}),r.jsx("p",{className:"text-sm text-red-600 mb-5 leading-relaxed",children:"Permanently delete your account and all associated data. This action cannot be undone."}),e?r.jsxs("div",{className:"space-y-3",children:[r.jsx("p",{className:"text-sm font-semibold text-red-700",children:"Are you sure? This cannot be undone."}),r.jsxs("div",{className:"flex gap-3",children:[r.jsx(qe,{onClick:l,className:"min-h-[44px] flex-1 bg-red-600 hover:bg-red-700 text-white",children:"Yes, Delete Account"}),r.jsx(qe,{onClick:()=>t(!1),variant:"outline",className:"min-h-[44px] flex-1",children:"Cancel"})]})]}):r.jsxs(qe,{onClick:()=>t(!0),variant:"outline",className:"min-h-[44px] border-red-400 text-red-600 hover:bg-red-100 hover:text-red-700 w-full",children:[r.jsx(e0,{className:"w-4 h-4 mr-2"}
889),"Delete My Account"]})]})]}),r.jsx(tr,{})]})}function h8(){const[e,t]=S.useState(""),[n,i]=S.useState(!1),l=()=>{const x=Math.floor(Math.random()*9)+1,w=Math.floor(Math.random()*9)+1;return{a:x,b:w,answer:x+w}},[d,h]=S.useState(()=>l()),[m,g]=S.useState(""),y=e.trim()&&n&&parseInt(m)===d.answer;return r.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[r.jsx(Lr,{}),r.jsx("main",{className:"flex-1 flex items-center justify-center px-4 py-16",children:r.jsxs("div",{className:"w-full max-w-xl bg-white rounded-3xl shadow-2xl px-8 pt-10 pb-10",children:[r.jsx("h1",{className:"text-2xl sm:text-3xl font-bold text-center text-foreground mb-2",children:"One last step!"}),r.jsx("p",{className:"text-2xl sm:text-3xl font-bold text-center text-[hsl(197,100%,50%)] mb-8",children:"Enter your phone number"}),r.jsxs("div",{className:"mb-5",children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Phone Number"}),r.jsx(ht,{type:"tel",placeholder:"(555) 123-4567",value:e,onChange:x=>t(x.target.value),className:"h-12 text-base border border-gray-300 rounded-lg px-4 w-full"})]}),r.jsxs("div",{className:"mb-5",children:[r.jsxs("label",{className:"block text-sm font-medium text-foreground mb-2",children:["Anti-Spam Check: What is ",d.a," + ",d.b,"?"]}),r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx(ht,{type:"number",placeholder:"Your answer",value:m,onChange:x=>g(x.target.value),className:"h-12 text-base border border-gray-300 rounded-lg px-4 w-40"}),r.jsx("button",{type:"button",onClick:()=>{h(l()),g("")},className:"text-xs text-[hsl(197,100%,40%)] underline",children:"New question"})]})]}),r.jsxs("p",{className:"text-xs text-gray-500 leading-relaxed mb-4",children:['By submitting your information and clicking "Continue" on our estimate form, you authorize SnapEstimate.AI or our chosen service providers to use the phone number(s) entered. By clicking "Continue" you also consent to phone calls from the above-mentioned service providers being recorded by SnapEstimate.AI for training and quality assurance purposes. You may opt out of future contact at any time and your consent is not a requirement for any purchase. I also agree to the'," ",r.jsx("a",{href:"/terms-of-service",className:"text-blue-600 underline",children:"Terms and Conditions"})," and"," ",r.jsx("a",{href:"/privacy-policy",className:"text-blue-600 underline",children:"Privacy Policy"}),"."]}),r.jsxs("label",{className:"flex items-start gap-3 cursor-pointer mb-8",children:[r.jsx("input",{type:"checkbox",checked:n,onChange:x=>i(x.target.checked),className:"mt-0.5 w-5 h-5 rounded border-gray-300 accent-[hsl(197,100%,50%)] flex-shrink-0 cursor-pointer"}),r.jsxs("span",{className:"text-xs text-gray-600 leading-relaxed",children:[r.jsx("strong",{children:"OPT-IN:"})," By clicking Continue I agree to receive SMS messages from SnapEstimate.Ai for Communicating purposes. I understand I can opt-out at any time by replying STOP. Msg & data rates may apply."]})]}),r.jsx("div",{className:"flex justify-end",children:r.jsxs(qe,{disabled:!y,className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold px-8 h-12 rounded-lg flex items-center gap-2 disabled:opacity-50",children:["Continue",r.jsx(_s,{className:"w-4 h-4"})]})})]})}),r.jsx(tr,{})]})}const Vf={new:"bg-blue-100 text-blue-700",contacted:"bg-yellow-100 text-yellow-700",sold:"bg-green-100 text-green-700",lost:"bg-red-100 text-red-700"},m8={emergency:"🚨 Emergency (1-4 hrs)",urgent:"⚡ Urgent (48 hrs)",ready2:"📅 Within 7 days"};function p8({lead:e,onUpdate:t,isAdmin:n,allUsers:i}){var j,P;const[l,d]=S.useState(!1),[h,m]=S.useState(e.soldAmount||""),[g,y]=S.useState(!1),x=async C=>{y(!0),await Me.entities.Lead.update(e.id,C),t(),y(!1)},w=async()=>{await x({soldAmount:parseFloat(h),status:"sold"})};return r.jsxs("div",{className:`bg-white rounded-2xl border shadow-sm overflow-hidden ${e.leadQuality==="good"?"border-green-300":e.leadQuality==="bad"?"border-red-200":"border-gray-200"}`,children:[r.jsxs("div",{className:"flex items-center justify-between px-5 py-4",children:[r.jsxs("div",{children:[r.jsxs("p",{className:"font-bold text-gray-900",children:[e.firstName," ",e.lastName]}),r.jsx("p",{className:"text-sm text-[hsl(197,100%,40%)] font-medium",children:e.service}),r.jsx("p",{className:"text-xs text-gray-400 mt-0.5",children:m8[e.timeline]||e.timeline})]}),r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx("span",{className:`text-xs font-semibold px-2.5 py-1 rounded-full ${Vf[e.status]||Vf.new}`,children:((j=e.status)==null?void 0:j.charAt(0).toUpperCase())+((P=e.status)==null?void 0:P.slice(1))||"New"}),r.jsx("button",{onClick:()=>d(!l),className:"p-1 text-gray-400 hover:text-gray-600",children:l?r.jsx(Da,{className:"w-5 h-5"}):r.jsx($o,{className:"w-5 h-5"})})]})]}),r.jsxs("div",{className:"flex items-center gap-3 px-5 pb-4",children:[r.jsxs("a",{href:`tel:${e.phone}`,className:"flex items-center gap-1.5 text-xs text-white bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] px-3 py-1.5 rounded-lg font-medium",children:[r.jsx(Er,{className:"w-3.5 h-3.5"})," ",e.phone]}
889),r.jsxs("a",{href:`mailto:${e.email}`,className:"flex items-center gap-1.5 text-xs text-gray-600 hover:text-gray-900 border border-gray-200 px-3 py-1.5 rounded-lg",children:[r.jsx(n5,{className:"w-3.5 h-3.5"})," Email"]})]}),l&&r.jsxs("div",{className:"border-t border-gray-100 px-5 py-4 space-y-4",children:[r.jsxs("div",{className:"flex items-start gap-2 text-sm text-gray-600",children:[r.jsx(Yg,{className:"w-4 h-4 mt-0.5 flex-shrink-0 text-gray-400"}),r.jsxs("span",{children:[e.street,", ",e.city,", ",e.state," ",e.zip]})]}),e.projectDescription&&r.jsxs("div",{children:[r.jsx("p",{className:"text-xs font-semibold text-gray-500 mb-1",children:"Project Details"}),r.jsx("p",{className:"text-sm text-gray-700 bg-gray-50 rounded-lg p-3 leading-relaxed",children:e.projectDescription})]}),r.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[r.jsx(Er,{className:"w-4 h-4 text-gray-400"}),r.jsxs("span",{className:"text-gray-600",children:["Call button tapped: ",r.jsxs("strong",{children:[e.callCount||0,"x"]})]})]}),r.jsxs("div",{children:[r.jsx("p",{className:"text-xs font-semibold text-gray-500 mb-2",children:"Lead Quality"}),r.jsxs("div",{className:"flex gap-2",children:[r.jsxs("button",{onClick:()=>x({leadQuality:"good"}),disabled:g,className:`flex items-center gap-1.5 px-4 py-2 rounded-lg text-sm font-medium transition-colors ${e.leadQuality==="good"?"bg-green-500 text-white":"bg-gray-100 text-gray-600 hover:bg-green-50 hover:text-green-600"}`,children:[r.jsx(Xg,{className:"w-4 h-4"})," Good Lead"]}),r.jsxs("button",{onClick:()=>x({leadQuality:"bad"}),disabled:g,className:`flex items-center gap-1.5 px-4 py-2 rounded-lg text-sm font-medium transition-colors ${e.leadQuality==="bad"?"bg-red-500 text-white":"bg-gray-100 text-gray-600 hover:bg-red-50 hover:text-red-600"}`,children:[r.jsx(G5,{className:"w-4 h-4"})," Bad Lead"]})]})]}),r.jsxs("div",{children:[r.jsx("p",{className:"text-xs font-semibold text-gray-500 mb-2",children:"Status"}),r.jsx("div",{className:"flex flex-wrap gap-2",children:["new","contacted","sold","lost"].map(C=>r.jsx("button",{onClick:()=>x({status:C}),disabled:g,className:`px-3 py-1.5 rounded-lg text-xs font-medium transition-colors ${e.status===C?`${Vf[C]} ring-2 ring-offset-1 ring-current`:"bg-gray-100 text-gray-600 hover:bg-gray-200"}`,children:C.charAt(0).toUpperCase()+C.slice(1)},C))})]}),r.jsxs("div",{children:[r.jsx("p",{className:"text-xs font-semibold text-gray-500 mb-2",children:"Sale Amount"}),r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsxs("div",{className:"relative flex-1 max-w-[160px]",children:[r.jsx(oc,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),r.jsx(ht,{type:"number",placeholder:"0.00",value:h,onChange:C=>m(C.target.value),className:"pl-8 h-9"})]}),r.jsx(qe,{onClick:w,disabled:g||!h,size:"sm",className:"bg-green-600 hover:bg-green-700 text-white",children:"Save"})]}),e.soldAmount>0&&r.jsxs("p",{className:"text-xs text-green-600 font-semibold mt-1",children:["Sold for $",e.soldAmount.toLocaleString()]})]}),e.photoUrls&&e.photoUrls.length>0&&r.jsxs("div",{children:[r.jsxs("p",{className:"text-xs font-semibold text-gray-500 mb-2",children:["Customer Photos (",e.photoUrls.length,")"]}),r.jsx("div",{className:"flex flex-wrap gap-2",children:e.photoUrls.map((C,k)=>r.jsx("a",{href:C,target:"_blank",rel:"noopener noreferrer",children:r.jsx("img",{src:C,alt:`Photo ${k+1}`,className:"w-20 h-20 object-cover rounded-lg border border-gray-200 hover:opacity-80 transition-opacity"})},k))})]}),r.jsxs("div",{children:[r.jsx("p",{className:"text-xs font-semibold text-gray-500 mb-2",children:"Notes"}),r.jsx("textarea",{defaultValue:e.notes||"",onBlur:C=>x({notes:C.target.value}),placeholder:"Add notes about this lead...",rows:2,className:"w-full text-sm border border-gray-200 rounded-lg px-3 py-2 resize-none focus:outline-none focus:border-[hsl(197,100%,50%)]"})]}),e.assignedContractorEmail&&r.jsxs("p",{className:"text-xs text-gray-400",children:["Assigned to: ",r.jsx("span",{className:"text-[hsl(197,100%,40%)] font-medium",children:e.assignedContractorEmail})]}),r.jsxs("p",{className:"text-xs text-gray-400",children:["Received: ",new Date(e.created_date).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})]})]})]})}function f8({leads:e,roiSummary:t}){const n=e.length,i=e.reduce((x,w)=>x+(w.callCount||0),0),l=e.filter(x=>x.leadQuality==="good").length,h=e.filter(x=>x.status==="sold").reduce((x,w)=>x+(w.soldAmount||0),0),m=(t==null?void 0:t.totalSpend)||0,g=m>0&&l>
8890?`$${Math.round(m/l).toLocaleString()}`:m>0&&l===0?"No good leads":"—",y=[{icon:gm,label:"Total Leads",value:n,color:"text-blue-600 bg-blue-50"},{icon:Er,label:"Call Taps",value:i,color:"text-purple-600 bg-purple-50"},{icon:Xg,label:"Good Leads",value:l,color:"text-green-600 bg-green-50"},{icon:oc,label:"Revenue Sold",value:`$${h.toLocaleString()}`,color:"text-emerald-600 bg-emerald-50",roi:t},{icon:V5,label:"Cost / Good Lead",value:g,color:"text-orange-600 bg-orange-50"}];return r.jsx("div",{className:"grid grid-cols-2 lg:grid-cols-5 gap-3 mb-6",children:y.map((x,w)=>r.jsxs("div",{className:"bg-white rounded-xl border border-gray-200 px-4 py-4",children:[r.jsxs("div",{className:"flex items-center justify-between mb-2",children:[r.jsx("div",{className:`w-8 h-8 rounded-lg flex items-center justify-center ${x.color}`,children:r.jsx(x.icon,{className:"w-4 h-4"})}),x.roi?r.jsxs("span",{className:`text-xs font-bold px-2 py-0.5 rounded-full ${x.roi.positive?"bg-green-100 text-green-700":"bg-red-100 text-red-600"}`,children:[x.roi.positive?"+":"",x.roi.value,"% ROI"]}):x.label==="Revenue Sold"?r.jsx("span",{className:"text-xs font-medium px-2 py-0.5 rounded-full bg-gray-100 text-gray-400",children:"— ROI"}):null]}),r.jsx("p",{className:"text-2xl font-bold text-gray-900",children:x.value}),r.jsx("p",{className:"text-xs text-gray-500",children:x.label})]},w))})}const Gw=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function g8({onROIChange:e}){const[t,n]=S.useState(!0),i=new Date().getMonth(),[l,d]=S.useState(i),[h,m]=S.useState(()=>Gw.map(()=>({managementFee:"",adSpend:"",revenue:""}))),g=(k,A,E)=>{m($=>$.map((I,M)=>M===k?{...I,[A]:E}:I))},y=h.reduce((k,A)=>k+(parseFloat(A.revenue)||0),0),x=h.reduce((k,A)=>k+(parseFloat(A.managementFee)||0)+(parseFloat(A.adSpend)||0),0),w=y-x,j=x>0?(w/x*100).toFixed(1):null,P=w>=0;S.useEffect(()=>{e(j!==null?{value:j,positive:P,totalSpend:x}:x>0?{value:null,positive:!0,totalSpend:x}:null)},[j,P]);const C=h.some(k=>k.managementFee||k.adSpend||k.revenue);return r.jsxs("div",{className:"bg-white rounded-xl border border-gray-200 mb-4 overflow-hidden",children:[r.jsxs("button",{onClick:()=>n(!t),className:"w-full flex items-center justify-between px-5 py-4 hover:bg-gray-50 transition-colors",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(E1,{className:"w-4 h-4 text-[hsl(197,100%,40%)]"}),r.jsx("span",{className:"font-semibold text-sm text-gray-800",children:"ROI Calculator — Yearly"}),j!==null&&r.jsxs("span",{className:`text-xs font-bold px-2 py-0.5 rounded-full ${P?"bg-green-100 text-green-700":"bg-red-100 text-red-700"}`,children:[P?"+":"",j,"% YTD ROI"]})]}),t?r.jsx(Da,{className:"w-4 h-4 text-gray-400"}):r.jsx($o,{className:"w-4 h-4 text-gray-400"})]}),t&&r.jsxs("div",{className:"border-t border-gray-100 px-4 py-5 space-y-4",children:[r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("button",{onClick:()=>d(Math.max(0,l-1)),disabled:l===0,className:"px-3 py-1.5 text-sm font-medium bg-gray-100 hover:bg-gray-200 disabled:opacity-50 disabled:cursor-not-allowed rounded-lg",children:"← Prev"}),r.jsxs("span",{className:"text-sm font-bold text-gray-700 min-w-[80px] text-center",children:[Gw[l]," ",l===i&&r.jsx("span",{className:"text-xs text-[hsl(197,100%,50%)]",children:"(current)"})]}),r.jsx("button",{onClick:()=>d(Math.min(11,l+1)),disabled:l===11,className:"px-3 py-1.5 text-sm font-medium bg-gray-100 hover:bg-gray-200 disabled:opacity-50 disabled:cursor-not-allowed rounded-lg",children:"Next →"})]}),r.jsxs("div",{className:"bg-gray-50 rounded-xl border border-gray-200 p-4 space-y-3",children:[r.jsxs("div",{children:[r.jsx("label",{className:"block text-xs font-semibold text-gray-500 mb-2",children:"Management Fee"}),r.jsxs("div",{className:"relative",children:[r.jsx("span",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-400",children:"$"}),r.jsx(ht,{type:"number",placeholder:"0.00",value:h[l].managementFee,onChange:k=>g(l,"managementFee",k.target.value),className:"pl-8 h-10"})]})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-xs font-semibold text-gray-500 mb-2",children:"Ad Spend"}),r.jsxs("div",{className:"relative",children:[r.jsx("span",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-400",children:"$"}),r.jsx(ht,{type:"number",placeholder:"0.00",value:h[l].adSpend,onChange:k=>
889g(l,"adSpend",k.target.value),className:"pl-8 h-10"})]})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-xs font-semibold text-gray-500 mb-2",children:"Revenue"}),r.jsxs("div",{className:"relative",children:[r.jsx("span",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-400",children:"$"}),r.jsx(ht,{type:"number",placeholder:"0.00",value:h[l].revenue,onChange:k=>g(l,"revenue",k.target.value),className:"pl-8 h-10"})]})]}),(()=>{const k=(parseFloat(h[l].managementFee)||0)+(parseFloat(h[l].adSpend)||0),E=(parseFloat(h[l].revenue)||0)-k,$=k>0?(E/k*100).toFixed(0):null;return k>0&&r.jsxs("div",{className:`mt-3 p-3 rounded-lg text-sm font-semibold ${E>=0?"bg-green-50 text-green-700":"bg-red-50 text-red-600"}`,children:["Month Net: ",E>=0?"+":"-","$",Math.abs(E).toLocaleString()," ",$!==null&&`(${$}%)`]})})()]}),C&&r.jsxs("div",{className:"border-t border-gray-200 pt-4",children:[r.jsx("p",{className:"text-xs font-bold text-gray-500 uppercase tracking-wide mb-3",children:"Year-to-Date Summary"}),r.jsxs("div",{className:"grid grid-cols-3 gap-3 mb-3",children:[r.jsxs("div",{className:"bg-gray-50 rounded-xl px-4 py-3 text-center",children:[r.jsx("p",{className:"text-xs text-gray-500 mb-1",children:"Total Spend"}),r.jsxs("p",{className:"text-base font-bold text-gray-800",children:["$",x.toLocaleString()]})]}),r.jsxs("div",{className:"bg-gray-50 rounded-xl px-4 py-3 text-center",children:[r.jsx("p",{className:"text-xs text-gray-500 mb-1",children:"Total Revenue"}),r.jsxs("p",{className:"text-base font-bold text-[hsl(197,100%,40%)]",children:["$",y.toLocaleString()]})]}),r.jsxs("div",{className:`rounded-xl px-4 py-3 text-center ${P?"bg-green-50":"bg-red-50"}`,children:[r.jsx("p",{className:"text-xs text-gray-500 mb-1",children:"Total ROI"}),r.jsx("p",{className:`text-base font-bold ${P?"text-green-700":"text-red-600"}`,children:j!==null?`${P?"+":""}${j}%`:"—"})]})]}),r.jsxs("div",{className:`rounded-xl px-4 py-3 flex items-center justify-between ${P?"bg-green-50 border border-green-200":"bg-red-50 border border-red-200"}`,children:[r.jsx("span",{className:"text-sm font-medium text-gray-700",children:"Net Profit / Loss (YTD)"}),r.jsxs("span",{className:`text-lg font-bold ${P?"text-green-700":"text-red-600"}`,children:[P?"+":"-","$",Math.abs(w).toLocaleString()]})]})]})]})]})}const Zw="snapai_unlocked",y8="SNAPAI26";function qh({children:e}){const t=Hn(),[n,i]=S.useState(!1),[l,d]=S.useState(""),[h,m]=S.useState(""),[g,y]=S.useState(!1);S.useEffect(()=>{sessionStorage.getItem(Zw)==="true"&&i(!0)},[]);const x=w=>{w.preventDefault(),l.trim().toUpperCase()===y8?(sessionStorage.setItem(Zw,"true"),i(!0),m("")):(m("Incorrect code. Please try again."),d(""))};return n?e:r.jsx("div",{className:"min-h-screen bg-[hsl(213,50%,8%)] flex items-center justify-center px-4",children:r.jsxs("div",{className:"bg-white rounded-2xl shadow-2xl p-8 max-w-sm w-full text-center",children:[r.jsxs("button",{onClick:()=>t(-1),className:"flex items-center gap-1 text-gray-400 hover:text-gray-600 text-sm mb-4",children:[r.jsx(mm,{className:"w-4 h-4"})," Back"]}),r.jsx("div",{className:"w-14 h-14 rounded-full bg-[hsl(197,100%,93%)] flex items-center justify-center mx-auto mb-4",children:r.jsx(S1,{className:"w-6 h-6 text-[hsl(197,100%,40%)]"})}),r.jsx("h2",{className:"text-xl font-black text-[hsl(213,50%,15%)] mb-1",children:"Internal Access Only"}),r.jsx("p",{className:"text-gray-500 text-sm mb-6",children:"Enter your access code to continue."}),r.jsxs("form",{onSubmit:x,className:"space-y-4",children:[r.jsxs("div",{className:"relative",children:[r.jsx("input",{type:g?"text":"password",value:l,onChange:w=>{d(w.target.value),m("")},placeholder:"Enter access code",className:"w-full border border-gray-200 rounded-xl px-4 py-3 text-center text-lg font-bold tracking-widest focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)] pr-10",autoFocus:!0}),r.jsx("button",{type:"button",onClick:()=>y(!g),className:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600",children:g?r.jsx(Tj,{className:"w-4 h-4"}):r.jsx(b1,{className:"w-4 h-4"})})]}),h&&r.jsx("p",{className:"text-red-500 text-sm font-medium",children:h}),r.jsx("button",{type:"submit",className:"w-full bg-[hsl(213,50%,15%)] hover:bg-[hsl(213,50%,10%)] text-white font-bold h-12 rounded-xl transition-colors",children:"Unlock"})]})]})})}const x8="https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/440cd71e2_Remove_modern_house_202603281158.png",v8=["all","new","contacted","sold","lost"],b8=["all","good","bad","new"];function Kw(){const{serviceSlug:e}=xm(),[t]=v_(),n=t.get("leadId"),[i,l]=S.useState(null),[d,h]=S.useState([]),[m,g]=S.useState([]),[y,x]=S.useState(!0),[w,j]=S.useState("all"),[P,C]=S.useState("all"),[k,A]=S.useState(null);S.useEffect(()=>{E()},[e,n]);const E=async()=>{x(!0);try{const F=await Me.auth.me();l(F),await $(F,n)}catch{l(null),await $(null)}x(!1)},$=async(F,z)=>{const V=await Me.entities.Lead.list("-created_date",200),W=F||i;if((W==null?void 0:W.role)==="admin"){const ne=e?V.filter(be=>be.serviceSlug===e):V;h(ne);const de=await Me.entities.User.list();g(de)}else if(W!=null&&W.email){const ne=V.filter(de=>de.assignedContractorEmail===W.email);h(ne)}else h([])},I=()=>$(i),M=d.filter(F=>{const z=w==="all"||F.status===w,V=P==="all"||F.leadQuality===P;return z&&V});return y?r.jsx("div",{className:"min-h-screen flex items-center justify-center",children:r.jsx("div",{className:"w-8 h-8 border-4 border-gray-200 border-t-[hsl(197,100%,50%)] rounded-full animate-spin"})}):r.jsx(qh,{children:r.jsxs("div",{className:"min-h-screen bg-gray-50",children:[r.jsx("div",{className:"bg-white border-b border-gray-200 sticky top-0 z-10",children:r.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-3 flex items-center justify-between",children:[r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("img",{src:x8,alt:"SnapEstimate.AI",className:"h-8 w-auto object-contain"}),r.jsxs("div",{children:[r.jsx("p",{className:"font-bold text-sm text-gray-800",children:"Contractor Portal"}),i&&r.jsxs("p",{className:"text-xs text-gray-400",children:[i.full_name||i.email," ",i.role==="admin"&&r.jsx("span",{className:"text-[hsl(197,100%,40%)] font-semibold",children:"(Admin)"})]})]})]}),r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx("button",{onClick:I,className:"p-2 text-gray-400 hover:text-gray-600 rounded-lg hover:bg-gray-100",children:r.jsx(Qg,{className:"w-4 h-4"})}),r.jsxs("button",{onClick:()=>Me.auth.logout("/"),className:"flex items-center gap-1.5 text-xs text-gray-500 hover:text-gray-700 border border-gray-200 px-3 py-1.5 rounded-lg",children:[r.jsx(N1,{className:"w-3.5 h-3.5"})," Sign Out"]})]})]})}),r.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-6",children:[r.jsx(f8,{leads:d,roiSummary:k}),r.jsx(g8,{onROIChange:A}),r.jsxs("div",{className:"bg-white rounded-xl border border-gray-200 px-4 py-3 mb-4 flex flex-wrap items-center gap-3",children:[r.jsx($j,{className:"w-4 h-4 text-gray-400 flex-shrink-0"}),r.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[r.jsx("span",{className:"text-xs text-gray-500 font-medium mr-1",children:"Status:"}),v8.map(F=>r.jsx("button",{onClick:()=>j(F),className:`text-xs px-2.5 py-1 rounded-full font-medium transition-colors ${w===F?"bg-[hsl(197,100%,50%)] text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"}`,children:F.charAt(0).toUpperCase()+F.slice(1)},F))]}),r.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[r.jsx("span",{className:"text-xs text-gray-500 font-medium mr-1",children:"Quality:"}),b8.map(F=>r.jsx("button",{onClick:()=>C(F),className:`text-xs px-2.5 py-1 rounded-full font-medium transition-colors ${P===F?"bg-[hsl(197,100%,50%)] text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"}`,children:F.charAt(0).toUpperCase()+F.slice(1)},F))]})]}),r.jsx("div",{className:"space-y-3",children:M.length===0?r.jsxs("div",{className:"text-center py-16 text-gray-400",children:[r.jsx("p",{className:"text-lg font-semibold",children:"No leads yet"}),r.jsx("p",{className:"text-sm mt-1",children:"Leads from your service page will appear here"})]}):M.map(F=>r.jsx(p8,{lead:F,onUpdate:I,isAdmin:(i==null?void 0:i.role)==="admin",allUsers:m},F.id))})]})]})})}const w8="https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/440cd71e2_Remove_modern_house_202603281158.png";function _8({email:e,leads:t}){const[n,i]=S.useState(!1),l=t.length,d=t.reduce((C,k)=>C+(k.callCount||0),0),h=t.filter(C=>C.leadQuality==="good").length,m=t.filter(C=>C.leadQuality==="bad").length,g=t.filter(C=>C.status==="sold"),y=g.reduce((C,k)=>C+(k.soldAmount||0),0),x=t.filter(C=>C.status==="new").length,w=t.filter(C=>C.status==="contacted").length,j=t.reduce((C,k)=>{const A=k.service||"Unknown";return C[A]||(C[A]=0),C[A]++,C},{}),P=Object.entries(j).sort((C,k)=>k[1]-C[1])[0];return r.jsxs("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden",children:[r.jsxs("div",{className:"grid grid-cols-6 gap-2 items-center px-4 py-4 cursor-pointer hover:bg-gray-50 transition-colors",onClick:()=>i(!n),children:[r.jsxs("div",{className:"col-span-2 min-w-0",children:[r.jsx("p",{className:"font-semibold text-sm text-gray-800 truncate",children:e}),P&&r.jsxs("p",{className:"text-xs text-gray-400 truncate",children:["Top: ",P[0]]})]}),r.jsxs("div",{className:"text-center",children:[r.jsx("p",{className:"text-lg font-bold text-gray-900",children:l}),r.jsx("p",{className:"text-xs text-gray-400",children:"Leads"})]}),r.jsxs("div",{className:"text-center",children:[r.jsx("p",{className:"text-lg font-bold text-purple-600",children:d}),r.jsx("p",{className:"text-xs text-gray-400",children:"Calls"})]}),r.jsxs("div",{className:"text-center",children:[r.jsx("p",{className:"text-lg font-bold text-green-600",children:h}),r.jsx("p",{className:"text-xs text-gray-400",children:"Good"})]}),r.jsxs("div",{className:"text-center flex items-center justify-end gap-1",children:[r.jsxs("div",{children:[r.jsx("p",{className:"text-lg font-bold text-emerald-600",children:y>
8890?`$${y.toLocaleString()}`:"—"}),r.jsx("p",{className:"text-xs text-gray-400",children:"Revenue"})]}),r.jsx("div",{className:"ml-2 text-gray-400",children:n?r.jsx(Da,{className:"w-4 h-4"}):r.jsx($o,{className:"w-4 h-4"})})]})]}),n&&r.jsxs("div",{className:"border-t border-gray-100 px-4 py-4 bg-gray-50 space-y-4",children:[r.jsxs("div",{children:[r.jsx("p",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide mb-2",children:"Lead Status Breakdown"}),r.jsxs("div",{className:"flex flex-wrap gap-2",children:[r.jsxs("span",{className:"px-3 py-1 rounded-full text-xs font-medium bg-blue-100 text-blue-700",children:["New: ",x]}),r.jsxs("span",{className:"px-3 py-1 rounded-full text-xs font-medium bg-yellow-100 text-yellow-700",children:["Contacted: ",w]}),r.jsxs("span",{className:"px-3 py-1 rounded-full text-xs font-medium bg-green-100 text-green-700",children:["Sold: ",g.length]}),r.jsxs("span",{className:"px-3 py-1 rounded-full text-xs font-medium bg-red-100 text-red-700",children:["Bad Leads: ",m]})]})]}),r.jsxs("div",{children:[r.jsx("p",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide mb-2",children:"Leads by Service"}),r.jsx("div",{className:"flex flex-wrap gap-2",children:Object.entries(j).sort((C,k)=>k[1]-C[1]).map(([C,k])=>r.jsxs("span",{className:"px-3 py-1 rounded-full text-xs font-medium bg-white border border-gray-200 text-gray-700",children:[C,": ",r.jsx("strong",{children:k})]},C))})]}),r.jsxs("div",{children:[r.jsx("p",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide mb-2",children:"Recent Leads"}),r.jsx("div",{className:"space-y-1",children:t.slice(0,5).map(C=>r.jsxs("div",{className:"flex items-center justify-between text-xs bg-white rounded-lg px-3 py-2 border border-gray-100",children:[r.jsxs("span",{className:"font-medium text-gray-700",children:[C.firstName," ",C.lastName]}),r.jsxs("span",{className:"text-gray-400",children:[C.city,", ",C.state]}),r.jsx("span",{className:`px-2 py-0.5 rounded-full font-medium ${C.status==="sold"?"bg-green-100 text-green-700":C.status==="contacted"?"bg-yellow-100 text-yellow-700":C.status==="lost"?"bg-red-100 text-red-700":"bg-blue-100 text-blue-700"}`,children:C.status})]},C.id))})]})]})]})}function S8(){const[e,t]=S.useState(null),[n,i]=S.useState([]),[l,d]=S.useState(!0),[h,m]=S.useState(null),[g,y]=S.useState("leads");S.useEffect(()=>{x()},[]);const x=async()=>{d(!0);try{const M=await Me.auth.me();if(t(M),(M==null?void 0:M.role)==="admin"){const F=await Me.entities.Lead.list("-created_date",500);i(F),m(new Date)}}catch{t(null)}d(!1)},w=async()=>{const M=await Me.entities.Lead.list("-created_date",500);i(M),m(new Date)};if(l)return r.jsx("div",{className:"min-h-screen flex items-center justify-center",children:r.jsx("div",{className:"w-8 h-8 border-4 border-gray-200 border-t-[hsl(197,100%,50%)] rounded-full animate-spin"})});if(!e||e.role!=="admin")return r.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gray-50",children:r.jsxs("div",{className:"text-center",children:[r.jsx("p",{className:"text-lg font-bold text-gray-800",children:"Access Restricted"}),r.jsx("p",{className:"text-sm text-gray-400 mt-1",children:"Admin only"}),r.jsx(Qt,{to:"/",className:"text-[hsl(197,100%,40%)] text-sm mt-4 inline-block",children:"← Go Home"})]})});const j=n.reduce((M,F)=>{const z=F.assignedContractorEmail||"Unassigned";return M[z]||(M[z]=[]),M[z].push(F),M},{}),P=Object.entries(j).sort((M,F)=>g==="leads"?F[1].length-M[1].length:g==="calls"?F[1].reduce((z,V)=>z+(V.callCount||0),0)-M[1].reduce((z,V)=>z+(V.callCount||0),0):g==="good"?F[1].filter(z=>z.leadQuality==="good").length-M[1].filter(z=>z.leadQuality==="good").length:g==="revenue"?F[1].filter(z=>z.status==="sold").reduce((z,V)=>z+(V.soldAmount||0),0)-M[1].filter(z=>z.status==="sold").reduce((z,V)=>z+(V.soldAmount||0),0):0),C=n.length,k=n.reduce((M,F)=>M+(F.callCount||0),0),A=n.filter(M=>M.leadQuality==="good").length,E=n.filter(M=>M.status==="sold").reduce((M,F)=>M+(F.soldAmount||0),0),$=Object.keys(j).length,I=[{key:"leads",label:"Total Leads"},{key:"calls",label:"Call Taps"},{key:"good",label:"Good Leads"},{key:"revenue",label:"Revenue"}];return r.jsxs("div",{className:"min-h-screen bg-gray-50",children:[r.jsx("div",{className:"bg-white border-b border-gray-200 sticky top-0 z-10",children:r.jsxs("div",{className:"max-w-5xl mx-auto px-4 py-3 flex items-center justify-between",children:[r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("img",{src:w8,alt:"SnapEstimate.AI",className:"h-8 w-auto object-contain"}),r.jsxs("div",{children:[r.jsxs("div",{className:"flex items-center gap-1.5",children:[r.jsx(Zj,{className:"w-3.5 h-3.5 text-[hsl(197,100%,40%)]"}),r.jsx("p",{className:"font-bold text-sm text-gray-800",children:"Admin Dashboard"})]}),h&&r.jsxs("p",{className:"text-xs text-gray-400",children:["Updated ",h.toLocaleTimeString()]})]})]}),r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(Qt,{to:"/contractor-portal",className:"text-xs text-gray-500 hover:text-gray-700 border border-gray-200 px-3 py-1.5 rounded-lg",children:"Contractor View"}),r.jsx("button",{onClick:w,className:"p-2 text-gray-400 hover:text-gray-600 rounded-lg hover:bg-gray-100",children:r.jsx(Qg,{className:"w-4 h-4"})}),r.jsxs("button",{onClick:()=>Me.auth.logout("/"),className:"flex items-center gap-1.5 text-xs text-gray-500 hover:text-gray-700 border border-gray-200 px-3 py-1.5 rounded-lg",children:[r.jsx(N1,{className:"w-3.5 h-3.5"})," Sign Out"]})]})]})}),r.jsxs("div",{className:"max-w-5xl mx-auto px-4 py-6 space-y-6",children:[r.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-5 ga
889p-3",children:[{icon:gm,label:"Contractors",value:$,color:"text-blue-600 bg-blue-50"},{icon:E1,label:"Total Leads",value:C,color:"text-indigo-600 bg-indigo-50"},{icon:Er,label:"Call Taps",value:k,color:"text-purple-600 bg-purple-50"},{icon:Xg,label:"Good Leads",value:A,color:"text-green-600 bg-green-50"},{icon:oc,label:"Total Revenue",value:E>0?`$${E.toLocaleString()}`:"$0",color:"text-emerald-600 bg-emerald-50"}].map((M,F)=>r.jsxs("div",{className:"bg-white rounded-xl border border-gray-200 px-4 py-4",children:[r.jsx("div",{className:`w-8 h-8 rounded-lg flex items-center justify-center mb-2 ${M.color}`,children:r.jsx(M.icon,{className:"w-4 h-4"})}),r.jsx("p",{className:"text-2xl font-bold text-gray-900",children:M.value}),r.jsx("p",{className:"text-xs text-gray-500",children:M.label})]},F))}),r.jsxs("div",{children:[r.jsxs("div",{className:"flex items-center justify-between mb-3",children:[r.jsx("h2",{className:"font-bold text-gray-800",children:"Contractor Leaderboard"}),r.jsxs("div",{className:"flex items-center gap-1.5",children:[r.jsx("span",{className:"text-xs text-gray-400",children:"Sort by:"}),I.map(M=>r.jsx("button",{onClick:()=>y(M.key),className:`text-xs px-2.5 py-1 rounded-full font-medium transition-colors ${g===M.key?"bg-[hsl(197,100%,50%)] text-white":"bg-white border border-gray-200 text-gray-600 hover:bg-gray-50"}`,children:M.label},M.key))]})]}),r.jsxs("div",{className:"grid grid-cols-6 gap-2 px-4 py-2 text-xs font-semibold text-gray-400 uppercase tracking-wide",children:[r.jsx("div",{className:"col-span-2",children:"Contractor"}),r.jsx("div",{className:"text-center",children:"Leads"}),r.jsx("div",{className:"text-center",children:"Calls"}),r.jsx("div",{className:"text-center",children:"Good"}),r.jsx("div",{className:"text-right pr-6",children:"Revenue"})]}),r.jsx("div",{className:"space-y-2",children:P.map(([M,F])=>r.jsx(_8,{email:M,leads:F},M))})]})]})]})}function N8(){return r.jsx(it,{serviceName:"Sewer Relining",calcSlug:"sewer-relining",bottomImage:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/5161ca072_Use_a_real_202604010740.png",videoSrc:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9",pricingProps:{title:"Sewer Relining Cost Calculator",averagePrice:"Average Sewer Relining Cost: $3,000 – $8,000",description:"In 2026, trenchless relining typically costs $125 to $200 per linear foot. A standard residential repair averages $4,000 to $7,500.",priceBreakdown:[{label:"CCTV Sewer Inspection Fee",range:"$250 to $500"},{label:"Epoxy Liner & Resin Materials",range:"$1,500 to $3,500"},{label:"Labor, Patch Repair (Low)",range:"$2,500"},{label:"Labor, Full Lateral Liner (Medium)",range:"$5,500"},{label:"Labor, Deep Main Connection (High)",range:"$12,000+"}],aboutText:"Whether you are preserving the infrastructure of your 'forever home' or require an emergency response for a main line backup, SnapEstimate.ai is built to handle every one of your needs. Our mission is to empower both homeowners and professionals with precision tools that streamline the plumbing management process from start to finish. By combining deep industry research powered by AI, a network of vetted plumbing specialists, and our signature sewer repair cost estimator, we guarantee a seamless, high-tech experience for your next project."}})}function j8(){const e=[{title:"Reputation Management",description:"You must maintain a minimum 4.5-star Google Review average. We only partner with pros who consistently deliver 5-star experiences."},{title:"Business Longevity",description:"A minimum of 5 years in active operation is required to demonstrate stability and seasoned expertise."},{title:"Security Clearance",description:"All principals and relevant staff must have passed a comprehensive criminal background check, and a Google guaranteed badge on business profile."},{title:"Trade Certification",description:"Valid, up-to-date Trade Licenses must be provided for all specialized services offered."},{title:"Insurance & Protection",description:"You must provide and maintain a Certificate of Insurance (COI) and active Workers' Compensation for all employees."}];return r.jsx("section",{id:"contractor-requirements",className:"py-12 bg-gray-50",children:r.jsx("div",{className:"max-w-3xl mx-auto px-4 sm:px-6",children:r.jsxs("div",{className:"bg-white rounded-xl shadow-lg p-8",children:[r.jsxs("div",{className:"mb-8",children:[r.jsx("h2",{className:"text-3xl font-bold text-gray-900 mb-2",children:"Contractor Partnership Standards"}),r.jsx("p",{className:"text-lg font-semibold text-[hsl(197,100%,50%)] mb-4",children:"Excellence is Our Foundation"}),r.jsx("p",{className:"text-gray-600 leading-relaxed mb-4",children:"At our platform, we don't just provide leads; we build a network of the industry's most elite professionals. Our mission is to connect high-value clients with contractors who have a proven track record of reliability, safety, and superior craftsmanship."}),r.jsx("p",{className:"text-gray-600 leading-relaxed mb-4",children:"To maintain the integrity of our platform and ensure the best outcomes for both our pros and our customers, we enforce a strict vetting process. We go above and beyond standard lead-gen sites because we believe a strong foundation of trust is the only way to build a sustainable business. If you take pride in your work and meet the rigorous professional standards below, we invite you to apply."})]}),r.jsxs("div",{className:"flex gap-3 bg-red-50 border border-red-200 rounded-lg p-4 mb-8",children:[r.jsx(g1,{className:"w-5 h-5 text-red-600 flex-shrink-0 mt-0.5"}),r.jsxs("p",{className:"text-sm text-red-700",children:[r.jsx("strong",{children:"Notice:"}
889)," These requirements are non-negotiable. If your business does not currently meet all the criteria listed below, please do not submit a partnership inquiry at this time."]})]}),r.jsxs("div",{className:"mb-6",children:[r.jsxs("h3",{className:"text-xl font-bold text-gray-900 mb-6 flex items-center gap-2",children:[r.jsx(Ci,{className:"w-6 h-6 text-[hsl(197,100%,50%)]"}),"Mandatory Compliance & Qualifications"]}),r.jsx("p",{className:"text-gray-600 text-sm mb-6",children:"To remain active on our platform, all partners must satisfy and maintain the following professional benchmarks:"}),r.jsx("div",{className:"space-y-4",children:e.map((t,n)=>r.jsxs("div",{className:"border-l-4 border-[hsl(197,100%,50%)] pl-4 py-2",children:[r.jsx("h4",{className:"font-semibold text-gray-900 mb-2",children:t.title}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:t.description})]},n))})]})]})})})}function k8(){return r.jsx("section",{className:"w-full bg-white py-12",children:r.jsx("div",{className:"max-w-3xl mx-auto px-4",children:r.jsx("div",{className:"w-full rounded-2xl overflow-hidden shadow-xl",children:r.jsxs("video",{controls:!0,playsInline:!0,className:"w-full",poster:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/dab25670f_Screenshot2026-05-22161649.png",children:[r.jsx("source",{src:"https://res.cloudinary.com/dxud7uopf/video/upload/Snap_Estimate_Ai_-_Demo_Video_For_Website_-_V3_yxxhmv.mp4",type:"video/mp4"}),r.jsx("source",{src:"https://res.cloudinary.com/dxud7uopf/video/upload/Snap_Estimate_Ai_-_Demo_Video_For_Website_-_V3_yxxhmv.webm",type:"video/webm"})]})})})})}function C8(){return r.jsx("nav",{className:"sticky top-0 z-50 bg-white border-b border-gray-200 shadow-sm",children:r.jsxs("div",{className:"max-w-7xl mx-auto px-4 flex items-center justify-between h-16",children:[r.jsx(Qt,{to:"/",className:"flex items-center",children:r.jsx("img",{src:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/f30af8dd2_Screenshot2026-05-04122351.png",alt:"SnapEstimate.AI",className:"h-14 w-72 object-contain object-left"})}),r.jsxs("div",{className:"hidden md:flex items-center gap-8 text-sm font-medium text-gray-600",children:[r.jsx("a",{href:"#how-it-works",className:"hover:text-[hsl(197,100%,40%)] transition-colors",children:"How It Works"}),r.jsx("a",{href:"#results",className:"hover:text-[hsl(197,100%,40%)] transition-colors",children:"Results"}),r.jsx("a",{href:"#faq",className:"hover:text-[hsl(197,100%,40%)] transition-colors",children:"FAQ"})]}),r.jsx("a",{href:"#get-started",children:r.jsx(qe,{className:"bg-[hsl(30,95%,53%)] hover:bg-[hsl(30,95%,45%)] text-white font-bold px-5 rounded-lg",children:"GET MORE LEADS"})})]})})}function P8(){return r.jsx("section",{className:"w-full bg-white py-16 md:py-24",children:r.jsx("div",{className:"max-w-3xl mx-auto px-4",children:r.jsxs("div",{children:[r.jsxs("h1",{className:"text-4xl md:text-5xl font-black text-[hsl(213,50%,15%)] leading-tight mb-6",children:["Fill Your Schedule With"," ",r.jsx("span",{className:"text-[hsl(197,100%,40%)] underline decoration-[hsl(197,100%,70%)]",children:"$2,000–$75,000"})," ","Home Service Projects"]}),r.jsx("ul",{className:"space-y-3 mb-8",children:["30–45% close rate on every estimate","$2K–$75K roofing, HVAC, plumbing & more","Scale beyond GMB and capture new markets with ease.","Win jobs without ever leaving your truck.","Zero-competition leads in your own private territory."].map((e,t)=>r.jsxs("li",{className:"flex items-center gap-3 text-gray-700 font-medium",children:[r.jsx(qs,{className:"w-5 h-5 text-[hsl(197,100%,50%)] flex-shrink-0"}),e]},t))}),r.jsxs("div",{className:"bg-[hsl(197,100%,95%)] border border-[hsl(197,100%,70%)] rounded-xl p-5 mb-8",children:[r.jsx("p",{className:"text-base font-black text-[hsl(213,50%,15%)] mb-2",children:"Our Guarantee: We Don't Just Deliver Results. We Multiply Them."}),r.jsxs("p",{className:"text-sm text-gray-600",children:["If you don't see a 3X ROI on your investment within 3 months, ",r.jsx("span",{className:"font-bold text-[hsl(30,95%,53%)]",children:"your billing pauses"}),". You don't pay us another dime until your growth target is met."]}
889)]}),r.jsx("a",{href:"#get-started",children:r.jsxs(qe,{className:"bg-[hsl(30,95%,53%)] hover:bg-[hsl(30,95%,45%)] text-white font-bold text-lg h-14 px-10 rounded-xl shadow-lg flex items-center gap-2",children:["GET MORE LEADS ",r.jsx(DN,{className:"w-5 h-5"})]})})]})})})}function T8(){const e=["https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/32411a4b0_Replace_the_image_behind_the_202605041330.jpg","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/4ac388985_Replace_the_image_on_the_202605041332.jpg","https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/2e7fad7c0_Replace_the_image_on_the_202605041335.jpg"],[t,n]=nn.useState(0);return r.jsxs("div",{className:"flex flex-col items-center gap-4",children:[r.jsx("div",{className:"relative w-full max-w-xs mx-auto",children:r.jsx("img",{src:e[t],alt:"Contractor Portal Screenshot",className:"w-full rounded-3xl shadow-2xl border border-gray-200"})}),r.jsx("div",{className:"flex gap-2",children:e.map((i,l)=>r.jsx("button",{onClick:()=>n(l),className:`w-2.5 h-2.5 rounded-full transition-colors ${l===t?"bg-[hsl(197,100%,50%)]":"bg-gray-300"}`},l))})]})}function E8(){const e=[{num:"1",label:"CAPTURE",title:"We Send You Homeowners Ready to Book",bullets:["Homeowners searching for home services call YOU directly","Leads go to you — not 4 other companies","Skip the window shoppers. Get direct-to-consumer leads with verified intent.","Zero-competition leads in your own private territory."],stat1:{val:"100%",label:"Exclusive Leads"},stat2:{val:"20–60",label:"Estimates Per Month"}},{num:"2",label:"CLOSE",title:"Close $2K–$75K Jobs at 30–45%",bullets:["Homeowners choose based on your quality, not cheapest price","Book roofing, HVAC, plumbing & remodeling projects consistently","Close 3x more estimates than with shared leads","Google review building on autopilot","Zero-competition leads in your own private territory."],stat1:{val:"30–45%",label:"Close Rate"},stat2:{val:"$2K–$75K",label:"Per Project"}},{num:"3",label:"SCALE",title:"See Every Dollar of ROI — Scale With Confidence",bullets:["Track every estimate, closed job, and dollar of ROI","Know exactly what each project costs to acquire","Dedicated strategist who knows the NJ home services market","Month-to-month — we earn your business every 30 days","Win jobs without ever leaving your truck.","Zero-competition leads in your own private territory."],stat1:{val:"$2.1M",label:"Client Revenue"},stat2:{val:"3.5x",label:"Revenue Growth"}}];return r.jsx("section",{id:"how-it-works",className:"w-full bg-gray-50 py-20",children:r.jsxs("div",{className:"max-w-7xl mx-auto px-4",children:[r.jsx("p",{className:"text-center text-[hsl(197,100%,40%)] font-bold text-sm uppercase tracking-widest mb-3",children:"HOW IT WORKS"}),r.jsx("h2",{className:"text-3xl md:text-4xl font-black text-center text-[hsl(213,50%,15%)] mb-4",children:"How We Lock Down Your Local Market & Send Estimates Straight to Your Truck"}),r.jsx("div",{className:"space-y-16",children:e.map((t,n)=>r.jsxs("div",{className:`grid md:grid-cols-2 gap-10 items-center ${n%2===1?"md:flex-row-reverse":""}`,children:[r.jsxs("div",{className:n%2===1?"md:order-2":"",children:[r.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r.jsx("div",{className:"w-10 h-10 rounded-full bg-[hsl(197,100%,50%)] text-white font-black text-lg flex items-center justify-center",children:t.num}),r.jsx("span",{className:"text-xs font-bold text-[hsl(197,100%,40%)] uppercase tracking-widest",children:t.label})]}),r.jsx("h3",{className:"text-2xl font-black text-[hsl(213,50%,15%)] mb-4",children:t.title}),r.jsx("ul",{className:"space-y-2.5 mb-6",children:t.bullets.map((i,l)=>r.jsxs("li",{className:"flex items-start gap-2.5 text-gray-600",children:[r.jsx(qs,{className:"w-4 h-4 text-[hsl(197,100%,50%)] flex-shrink-0 mt-0.5"}),i]},l))})]}),r.jsx("div",{className:`${n%2===1?"md:order-1":""}`,children:n===2?r.jsx(T8,{}):t.cards?r.jsx("div",{className:"space-y-3",children:t.cards.map((i,l)=>r.jsxs("div",{className:"bg-white rounded-2xl border border-gray-100 p-5 flex items-start gap-4 shadow-sm",children:[r.jsx("div",{className:"w-10 h-10 rounded-xl bg-[hsl(197,100%,93%)] flex items-center justify-center flex-shrink-0",children:r.jsx(i.icon,{className:"w-5 h-5 text-[hsl(197,100%,40%)]"})}),r.jsxs("div",{className:"flex-1",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[r.jsx("p",{className:"font-bold text-[hsl(213,50%,15%)] text-sm",children:i.title}),i.badge&&r.jsx("span",{className:`text-xs font-semibold px-2 py-0.5 rounded-full ${i.badgeColor}`,children:i.badge})]}),r.jsx("p",{className:"text-gray-500 text-sm leading-relaxed",children:i.desc})]})]},l))}):r.jsx("div",{className:"bg-white rounded-2xl shadow-lg p-8 border border-gray-100",children:r.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[r.jsxs("div",{className:"text-center",children:[r.jsx("p",{className:"text-3xl font-black text-[hsl(197,100%,40%)]",children:t.stat1.val}),r.jsx("p",{className:"text-sm text-gray-500 mt-1",children:t.stat1.label})]}),r.jsxs("div",{className:"text-center",children:[r.jsx("p",{className:"text-3xl font-black text-[hsl(213,50%,15%)]",children:t.stat2.val}),r.jsx("p",{className:"text-sm text-gray-500 mt-1",children:t.stat2.label})]})]})})})]},n))}),r.jsxs("div",{className:"text-center mt-12",children:[r.jsx("a",{href:"#get-started",children:r.jsx(qe,{className:"bg-[hsl(30,95%,53%)] hover:bg-[hsl(30,95%,45%)] text-white font-bold text-lg h-14 px-10 rounded-xl shadow-lg",children:"GET MORE LEADS"})}),r.jsx("p",{className:"text-sm text-gray-400 mt-2",children:"Free 15-min call • No obligation • See if we're a fit"})]})]})})}function A8({r:e}){const[t,n]=S.useState(!1),i=e.quote.length>200,l=i?e.quote.slice(0,200).trimEnd()+"…":e.quote;return r.jsxs("div",{className:"border border-gray-100 rounded-2xl p-6 shadow-sm hover:shadow-md transition-shadow",children:[r.jsxs("div",{className:"mb-4",children:[r.jsx("img",{src:e.avatar,className:"w-full h-24 object-contain bg-white mb-3"}),r.jsx("p",{className:"font-bold text-[hsl(213,50%,15%)] text-sm",children:e.company}),r.jsx("p",{className:"text-xs text-gray-500",children:e.location})]}),r.jsx("div",{className:"flex gap-1 mb-3",children:[1,2,3,4,5].map(d=>r.jsx(T1,{className:"w-4 h-4 fill-yellow-400 text-yellow-400"},d))}),r.jsxs("p",{className:"text-gray-600 text-sm italic leading-relaxed",children:['"',t?e.quote:l,'"']}),i&&r.jsx("button",{onClick:()=>n(!t),className:"mt-2 text-xs font-semibold text-[hsl(197,100%,40%)] hover:underline",children:t?"Read less":"Read more"})]})}function R8(){const e=[{company:"Smiley Plumbing & Drain",location:"New Jersey • Mike M. • 8-person team",since:"Client since 2023",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/990eb2d83_Screenshot2026-05-02095604.png",quote:`After years of frustration with agencies and PPC companies that promised growth but couldn't deliver, we finally found a strategy that works. Scaling into new counties always felt nearly impossible before, but this platform has allowed us to successfully expand into markets far beyond our local GMB reach.
890
891The biggest advantage is the collective spending power. Because of the scale this platform provides, our local competitors simply can't compete with our ad spend or presence. It secures a much higher volume of leads at a significantly better rate than we could ever achieve on our own.
892
893Unlike traditional agencies that mark up every lead, they charge a transparent management fee. This shift in structure is huge—your own spend is the only restraint, meaning the more you invest, the more you scale.`},{company:"Lesco Heating Cooling & Refrigeration",location:"New Jersey • Steve B. • 6-pers
893on team",since:"Client since 2024",avatar:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/e349397ca_LescoLogo1.png",quote:"Best marketing investment I've made. We went from chasing calls to turning them away. Hired 3 more crews and finally stopped working weekends."}];return r.jsx("section",{id:"results",className:"w-full bg-white py-20",children:r.jsxs("div",{className:"max-w-7xl mx-auto px-4",children:[r.jsx("p",{className:"text-center text-[hsl(197,100%,40%)] font-bold text-sm uppercase tracking-widest mb-3",children:"CLIENT RESULTS"}),r.jsx("h2",{className:"text-3xl md:text-4xl font-black text-center text-[hsl(213,50%,15%)] mb-4",children:"Why NJ Home Service Contractors Trust Our System"}),r.jsx("p",{className:"text-center text-gray-500 mb-12",children:"We consistently deliver high-quality leads and help grow home service businesses across New Jersey."}),r.jsx("div",{className:"grid md:grid-cols-2 gap-8 max-w-4xl mx-auto",children:e.map((t,n)=>r.jsx(A8,{r:t},n))}),r.jsxs("div",{className:"text-center mt-10",children:[r.jsx("a",{href:"#get-started",children:r.jsx(qe,{className:"bg-[hsl(30,95%,53%)] hover:bg-[hsl(30,95%,45%)] text-white font-bold text-lg h-14 px-10 rounded-xl shadow-lg",children:"GET MORE LEADS"})}),r.jsx("p",{className:"text-sm text-gray-400 mt-2",children:"Want results like these? Let's talk."})]})]})})}function L8(){return r.jsx("section",{className:"w-full bg-gray-50 py-20",children:r.jsxs("div",{className:"max-w-5xl mx-auto px-4",children:[r.jsx("h2",{className:"text-3xl md:text-4xl font-black text-center text-[hsl(213,50%,15%)] mb-12",children:"The Difference Between Shared Leads and Exclusive Leads"}),r.jsxs("div",{className:"grid md:grid-cols-2 gap-8",children:[r.jsxs("div",{className:"bg-white rounded-2xl border border-red-100 p-8",children:[r.jsx("h3",{className:"font-bold text-gray-700 mb-2",children:"Shared Leads & Generic Agencies"}),r.jsx("p",{className:"text-xs text-gray-400 mb-6",children:"Angi, HomeAdvisor, Thumbtack, and most marketing agencies"}),r.jsx("ul",{className:"space-y-3",children:["Leads sold to 3–5 competing companies","8–15% close rate — most leads go nowhere","Small jobs — $500–$2K price shoppers across every trade","Locked into 6–12 month contracts","No ROI tracking — you guess what's working"].map((e,t)=>r.jsxs("li",{className:"flex items-center gap-3 text-gray-500 text-sm",children:[r.jsx(Zs,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),e]},t))})]}),r.jsxs("div",{className:"bg-[hsl(213,50%,15%)] rounded-2xl p-8 text-white",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx("img",{src:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/fe872cf4b_thumbnail300x300.jpg",className:"h-7 w-7 rounded object-cover"}),r.jsx("span",{className:"font-bold text-[hsl(197,100%,60%)]",children:"THE SNAPESTIMATE.AI DIFFERENCE"})]}),r.jsx("p",{className:"text-xs text-gray-400 mb-6",children:"Built exclusively for home service contractors"}),r.jsx("ul",{className:"space-y-3",children:["100% exclusive — every lead goes only to you","30–45% close rate on $2K–$75K projects","Dedicated NJ home services strategist who knows your market","Month-to-month — cancel anytime, no penalties","Zero-competition leads in your own private territory."].map((e,t)=>r.jsxs("li",{className:"flex items-center gap-3 text-sm",children:[r.jsx(qs,{className:"w-4 h-4 text-[hsl(197,100%,50%)] flex-shrink-0"}),r.jsx("span",{dangerouslySetInnerHTML:{__html:e.replace(/100%|30–45%|Month-to-month|48 hours/g,"<strong>$&</strong>")}})]},t))})]})]}),r.jsx("div",{className:"text-center mt-10",children:r.jsx("a",{href:"#get-started",children:r.jsx(qe,{className:"bg-[hsl(30,95%,53%)] hover:bg-[hsl(30,95%,45%)] text-white font-bold text-lg h-14 px-10 rounded-xl shadow-lg",children:"GET MORE LEADS"})})})]})})}function M8({form:e,onScheduled:t,onManualConfirm:n}){S.useEffect(()=>{const l=h=>{h.data&&h.data.event&&h.data.event==="calendly.event_scheduled"&&t()};if(window.addEventListener("message",l),document.getElementById("calendly-script"))window.Calendly&&window.Calendly.initInlineWidgets();else{const h=document.createElement("script");h.id="calendly-script",h.src="https://assets.calendly.com/assets/external/widget.js",h.async=!0,document.body.appendChild(h)}return()=>{window.removeEventListener("message",l)}},[]);const i=`&name=${encodeURIComponent((e.firstName+" "+e.lastName).trim())}&email=${encodeURIComponent(e.email)}&a1=${encodeURIComponent(e.phone)}`;return r.jsxs("div",{className:"space-y-3",children:[r.jsx("p",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide",children:"Pick a Date & Time"}),r.jsx("p",{className:"text-xs text-gray-500",children:"Schedule your free 15-minute strategy call below."}),r.jsx("div",{className:"calendly-inline-widget","data-url":`https://calendly.com/snapestimate/30min?hide_event_type_details=1&hide_gdpr_banner=1${i}`,style:{minWidth:"100%",height:"630px"}}),r.jsxs("div",{className:"pt-2 border-t border-gray-100",children:[r.jsx("p",{className:"text-xs text-gray-400 mb-2 text-center",children:"Already scheduled your call?"}),r.jsx(qe,{type:"button",variant:"outline",onClick:n,className:"w-full h-10 rounded-xl text-sm",children:"✓ I've scheduled my call"})]})]})}function I8({showRequirements:e,setShowRequirements:t}){const[n,i]=S.useState(0),[l,d]=S.useState(""),[h,m]=S.useState(!1),[g,y]=S.useState(null),[x,w]=S.useState({firstName:"",lastName:"",phone:"",email:"",company:"",gmb:"",crews:"",revenue:"",budget:"",services:[]}),[j,P]=S.useState(!1),[C,k]=S.useState(!1),[A,E]=S.useState(!1),$=["Air Conditioner Installation","Appliance Repair","Bathroom Remodeling","Chimney Liner & Masonry","Cleaning Services","Decks & Porches","Driveway Service","Duct Cleaning","Electrical","Fencing","Garage Doors","Gutter Service","Handyman Service","Heating System Installation","Home Inspection","Home Remodeling","Junk Removal","Kitchen Remodeling","Landscaping","Lawn Care","Moving Service","Windows & Doors","Painting","Pest Control","Roofing","Sewer Camera Inspection","Sewer Descaling","Sewer Hydro Jetting","Sewer Relining","Sewer Rooter Service","Siding","Tree Service","Water Heater Installation","Water Softener","Basement Waterproofing","Carpet Cleaning","Water & Fire Restoration"],I=(V,W)=>w(ne=>({...ne,[V]:W})),[M,F]=S.useState(""),z=async()=>{var W,ne;if(l.length!==5||!/^\d+$/.test(l))return;m(!0);let V=l;try{const de=await fetch(`https://api.zippopotam.us/us/${l}`);de.ok&&(V=((ne=(W=(await de.json()).places)==null?void 0:W[0])==null?void 0:ne["place name"])||l)}catch{}m(!1),y(V),i(1)};return r.jsx("section",{id:"get-started",className:"w-full bg-white py-20",children:r.jsxs("div",{className:"max-w-6xl mx-auto px-4 grid md:grid-cols-2 gap-12 items-start",children:[r.jsxs("div",{children:[r.jsx("h2",{className:"text-3xl md:text-4xl font-black text-[hsl(213,50%,15%)] mb-4",children:"Start Getting Home Service Jobs"}),r.jsx("p",{className:"text-gray-500 mb-8",children:"See how many $2K+ projects are available in your market r
893ight now"}),r.jsx("div",{className:"space-y-5 mb-8",children:[{num:"1",text:"Within 24 hours — We analyze your market, competitors, search volume, and highest-value zip codes."},{num:"2",text:"On your strategy call (15 min) — We walk you through projected lead volume, close rates, and revenue impact for your specific market."},{num:"3",text:"Within 30 days of go-live — Exclusive estimate requests start flowing to your team. Month-to-month, cancel anytime."}].map(V=>r.jsxs("div",{className:"flex gap-4",children:[r.jsx("div",{className:"w-8 h-8 rounded-full bg-[hsl(197,100%,50%)] text-white font-bold text-sm flex items-center justify-center flex-shrink-0",children:V.num}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:r.jsx("strong",{dangerouslySetInnerHTML:{__html:V.text.replace(/^([^—]+—)/,'<span class="text-[hsl(213,50%,15%)]">$1</span>')}})})]},V.num))}),r.jsxs("div",{className:"bg-[hsl(197,100%,95%)] border border-[hsl(197,100%,70%)] rounded-xl p-4 mb-12",children:[r.jsx("p",{className:"text-sm font-bold text-[hsl(213,50%,15%)]",children:"90-Day ROI Guarantee:"}),r.jsxs("p",{className:"text-sm text-gray-600 mt-1",children:["If you don't see a 3X ROI on your investment within 3 months, ",r.jsx("span",{className:"font-bold text-[hsl(30,95%,53%)]",children:"your billing pauses"}),". You don't pay us another dime until your growth target is met."]})]})]}),r.jsxs("div",{className:"bg-white rounded-2xl border border-gray-200 shadow-xl p-8",children:[g&&r.jsxs("div",{className:"mb-4 bg-[hsl(120,50%,94%)] border border-[hsl(120,50%,70%)] rounded-xl px-4 py-3 flex items-start gap-2",children:[r.jsx("span",{className:"text-base",children:"✓"}),r.jsxs("div",{className:"text-sm text-[hsl(120,60%,28%)]",children:[r.jsxs("p",{className:"font-bold text-[hsl(120,60%,22%)] mb-1",children:[g," Territory Scan Complete"]}),r.jsxs("p",{children:[r.jsx("strong",{children:"Territory open."})," Complete below to lock in 100% exclusive leads now."]})]})]}),g&&n===0&&r.jsxs(qe,{type:"button",onClick:z,className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-bold h-12 rounded-xl mb-4",children:["Continue ",r.jsx(_s,{className:"w-4 h-4"})]}),j?r.jsxs("div",{className:"text-center py-8",children:[r.jsx("div",{className:"w-16 h-16 rounded-full bg-[hsl(197,100%,95%)] flex items-center justify-center mx-auto mb-4",children:r.jsx(qs,{className:"w-8 h-8 text-[hsl(197,100%,50%)]"})}),r.jsx("h3",{className:"text-2xl font-black text-[hsl(213,50%,15%)] mb-2",children:"You're booked!"}),r.jsx("p",{className:"text-gray-500",children:"Check your email for a calendar confirmation. We look forward to speaking with you!"})]}):r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"flex items-center justify-between mb-6",children:[r.jsx("h3",{className:"font-bold text-[hsl(213,50%,15%)]",children:"Get More Home Service Jobs"}),r.jsx("span",{className:"text-xs text-gray-400",children:"Only accepting 5 new clients/month"})]}),r.jsxs("form",{onSubmit:V=>V.preventDefault(),children:[n===0&&r.jsxs("div",{className:"space-y-4",children:[r.jsx("p",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-4",children:"📍 Check Territory Availability"}),r.jsx("p",{className:"text-xs text-gray-600 mb-4",children:"We only work with one contractor per territory. See if your market is open."}),r.jsxs("div",{className:"mb-4",children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-1 block",children:"Service Type *"}),r.jsxs("select",{value:M,onChange:V=>F(V.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)] bg-white text-gray-900",children:[r.jsx("option",{value:"",children:"Select a service..."}),$.map(V=>r.jsx("option",{value:V,children:V},V))]})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-1 block",children:"Zip Code *"}),r.jsxs("div",{className:"flex gap-2",children:[r.jsx("input",{type:"text",inputMode:"numeric",maxLength:5,value:l,onCh
893ange:V=>d(V.target.value.replace(/\D/g,"").slice(0,5)),onKeyDown:V=>V.key==="Enter"&&z(),placeholder:"Enter Zip Code",className:"flex-1 border border-gray-200 rounded-lg px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)] bg-white text-gray-900 placeholder-gray-400"}),r.jsx(qe,{type:"button",onClick:z,disabled:l.length!==5||h||!M,className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-bold px-4 h-10 rounded-lg disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap text-sm",children:h?"Checking…":"Check"})]})]})]}),n===1&&r.jsxs("div",{className:"space-y-4",children:[r.jsx("p",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-4",children:"Contact Info"}),r.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-1 block",children:"First Name *"}),r.jsx("input",{required:!0,value:x.firstName,onChange:V=>I("firstName",V.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-1 block",children:"Last Name *"}),r.jsx("input",{required:!0,value:x.lastName,onChange:V=>I("lastName",V.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-1 block",children:"Phone *"}),r.jsx("input",{required:!0,type:"tel",value:x.phone,onChange:V=>I("phone",V.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-1 block",children:"Email *"}),r.jsx("input",{required:!0,type:"email",value:x.email,onChange:V=>I("email",V.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-1 block",children:"Company Name *"}),r.jsx("input",{required:!0,value:x.company,onChange:V=>I("company",V.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-1 block",children:"Google My Business Profile Link *"}),r.jsx("input",{required:!0,type:"url",value:x.gmb,onChange:V=>I("gmb",V.target.value),placeholder:"https://maps.google.com/...",className:"w-full border border-gray-200 rounded-lg px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"}),r.jsx("p",{className:"text-xs text-gray-500 mt-1.5",children:"💡 We use this link to run a live local competitor map scan for your strategy call."})]}),r.jsxs("label",{className:"flex items-start gap-3 border border-gray-200 rounded-lg px-3 py-3 cursor-pointer hover:bg-gray-50 transition-colors",children:[r.jsx("input",{type:"checkbox",checked:A,onChange:V=>E(V.target.checked),className:"mt-1 accent-[hsl(197,100%,50%)]"}),r.jsxs("span",{className:"text-xs text-gray-600",children:["I have read and agree to the ",r.jsx("button",{type:"button",onClick:()=>t(!0),className:"text-[hsl(197,100%,50%)] hover:underline font-medium",children:"Contractor Requirements"})]})]}),r.jsxs(qe,{type:"button",onClick:()=>i(2),disabled:!A||!x.gmb,className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-bold h-12 rounded-xl disabled:opacity-50 disabled:cursor-not-allowed",children:["NEXT ",r.jsx(_s,{className:"w-4 h-4"})]})]}),n===2&&r.jsxs("div",{className:"space-y-4",children:[r.jsx("p",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-4",children:"Business Details"}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-2 block",children:"How many technicians do you currently have? *"}),["1–2","3–4","5–6","7+"].map(V=>r.jsxs("label",{className:`flex items-center gap-2 border rounded-lg px-3 py-2.5 mb-2 cursor-pointer text-sm transition-colors ${x.crews===V?"border-[hsl(197,100%,50%)] bg-[hsl(197,100%,97%)]":"border-gray-200"}`,children:[r.jsx("input",{type:"radio",name:"crews",value:V,checked:x.crews===V,onChange:()=>I("crews",V),className:"accent-[hsl(197,100%,50%)]"}),V," technicians"]},V))]}),r.jsxs("div",{className:"flex gap-3",children:[r.jsx(qe,{type:"button",variant:"outline",onClick:()=>i(1),className:"flex-1 h-12 rounded-xl",children:"Back to Territory"}),r.jsxs(qe,{type:"button",onClick:()=>i(3),disabled:!x.crews,className:"flex-1 bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-bold h-12 rounded-xl",children:["NEXT ",r.jsx(_s,{className:"w-4 h-4"})]})]})]}),n===3&&r.jsxs("div",{className:"space-y-4",children:[r.jsx("p",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-4",children:"Budget & Revenue"}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-2 block",children:"What is your current monthly revenue? *"}),["$10K – $40K / month","$41K – $70K / month","$71K – $130K / month","$130K+ / month"].map(V=>r.jsxs("label",{className:`flex items-center gap-2 border rounded-lg px-3 py-2.5 mb-2 cursor-pointer text-sm transition-colors ${x.revenue===V?"border-[hsl(197,100%,50%)] bg-[hsl(197,100%,97%)]":"border-gray-200"}`,children:[r.jsx("input",{type:"radio",name:"revenue",value:V,checked:x.revenue===V,onChange:()=>I("revenue",V),className:"accent-[hsl(197,100%,50%)]"}),V]},V))]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-medium text-gray-600 mb-2 block",children:"What is your monthly marketing budget? *"}),["$0 – $1,000 / month","$1,000 – $3,000 / month","$3,000 – $5,000 / month","$5,000+ / month"].map(V=>r.jsxs("label",{className:`flex items-center gap-2 border rounded-lg px-3 py-2.5 mb-2 cursor-pointer text-sm transition-colors ${x.budget===V?"border-[hsl(197,100%,50%)] bg-[hsl(197,100%,97%)]":"border-gray-200"}`,children:[r.jsx("input",{type:"radio",name:"budget",value:V,checked:x.budget===V,onChange:()=>I("budget",V),className:"accent-[hsl(197,100%,50%)]"}),V]},V))]}),r.jsxs("div",{className:"flex gap-3",children:[r.jsx(qe,{type:"button",variant:"outline",onClick:()=>i(2),className:"flex-1 h-12 rounded-xl",children:"Back"}),r.jsx(qe,{type:"button",onClick:async()=>{k(!0);try{await Me.integrations.Core.SendEmail({to:"[email protected]",subject:`New Contractor Lead: ${x.company||x.firstName} | ${M} | ZIP: ${l}`,body:`Name: ${x.firstName} ${x.lastName}
894Phone: ${x.phone}
895Email: ${x.email}
896Company: ${x.company}
897Google My Business: ${x.gmb||"Not provided"}
898Crews: ${x.crews}
899Monthly Revenue: ${x.revenue}
900Marketing Budget: ${x.budget}
901Service: ${M}
902Zip Code: ${l}`})}catch{}k(!1),typeof window.gtag<"u"&&window.gtag("event","conversion",{send_to:"AW-18038674648/0QFlCI_5y5kcENipwZlD",value:1,currency:"USD"}),i(4)},disabled:!x.revenue||!x.budget||C,className:"flex-1 bg-[hsl(30,95%,53%)] hover:bg-[hsl(30,95%,45%)] text-white font-bold h-12 rounded-xl disabled:opacity-50 disabled:cursor-not-allowed",children:C?"Sending...":"BOOK YOUR CALL"})]}),r.jsx("p",{className:"text-center text-xs text-gray-500 mt-3",children:"🔒 Backed by our 90-Day 3X ROI Billing Pause Guarantee."})]}),n===4&&r.jsx(M8,{form:x,onScheduled:async()=>{try{await Me.integrations.Core.SendEmail({to:"[email protected]",subject:`New Contractor Lead (BOOKED): ${x.company||x.firstName} | ${M} | ZIP: ${l}`,body:`CALENDLY BOOKING CONFIRMED
903
904Name: ${x.firstName} ${x.lastName}
905Phone: ${x.phone}
906Email: ${x.email}
907Company: ${x.company}
908Google My Business: ${x.gmb||"Not provided"}
909Crews: ${x.crews}
910Monthly Revenue: ${x.revenue}
911Marketing Budget: ${x.budget}
912Service: ${M}
913Zip Code: ${l}`})}catch(V){console.error("Email send failed:",V)}P(!0)},onManualConfirm:()=>P(!0)})]}),r.jsx("p",{className:"text-center text-xs text-gray-400 mt-4",children:"Book a 15-minute strategy call"})]})]})]})})}function $8(){const[e,t]=S.useState(null),n=[{q:"How is this different from Angi, HomeAdvisor, or other lead services?",a:"Three ways. First, every lead is 100% exclusive — it goes to you and nobody else. Angi and HomeAdvisor sell the same lead to 3–5 companies. Second, we only work with one plumbing company per market area, so you never compete with our other clients. Third, you get a dedicated growth partner, real-time ROI dashboard, and close-rate coaching — not just a list of names."},{q:"What kind of results should I expect in the first 30 days?",a:"Most clients see their first leads within 48 hours of launch. By day 14, you'll have a clear picture of lead quality and volume. By day 30, you'll have enough data to measure close rate and project ROI. Our average client breaks even by week 6."},{q:"What does it cost?",a:"Pricing depends on your market, service area, and lead volume goals. We'll walk through the numbers on your strategy call so you know exactly what to expect before committing. There are no setup fees and no long-term contracts."},{q:"What if I want to pause or cancel?",a:"Cancel anytime with 30 days notice. No penalties, no guilt trips. We operate month-to-month because we believe in earning your business with results, not locking you in with contracts."},{q:"What size companies do you work with?",a:"We work with home service businesses of all sizes — from owner-operators just getting started to multi-crew operations looking to dominate their market. Our programs are tailored to where you are right now and built to grow with you. Whether you're trying to get your first consistent flow of customers or ready to expand into new service areas, we build a strategy that fits your business — not a one-size-fits-all package."}];return r.jsx("section",{id:"faq",className:"w-full bg-gray-50 py-20",children:r.jsxs("div",{className:"max-w-3xl mx-auto px-4",children:[r.jsx("h2",{className:"text-3xl font-black text-center text-[hsl(213,50%,15%)] mb-12",children:"Questions We Get From Companies Like Yours"}),r.jsx("div",{className:"space-y-3",children:n.map((i,l)=>r.jsxs("div",{className:"bg-white rounded-xl border border-gray-100 overflow-hidden",children:[r.jsxs("button",{onClick:()=>t(e===l?null:l),className:"w-full text-left px-6 py-5 font-semibold text-[hsl(213,50%,15%)] flex items-center justify-between gap-4 text-sm",children:[i.q,r.jsx(_s,{className:`w-4 h-4 flex-shrink-0 transition-transform text-[hsl(197,100%,50%)] ${e===l?"rotate-90":""}`})]}),e===l&&r.jsx("div",{className:"px-6 pb-5 text-gray-600 text-sm leading-relaxed",children:i.a})]},l))})]})})}function D8(){const[e,t]=S.useState(!1),[n,i]=S.useState(null);return r.jsxs("div",{className:"min-h-screen bg-white",children:[r.jsx(C8,{}),r.jsx(P8,{}),r.jsx(E8,{}),r.jsx(k8,{}),r.jsx(L8,{}),r.jsx(I8,{showRequirements:e,setShowRequirements:t}),e&&r.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4",children:r.jsxs("div",{className:"bg-white rounded-xl shadow-2xl max-w-2xl w-full max-h-[90vh] overflow-y-auto",children:[r.jsxs("div",{className:"sticky top-0 bg-white border-b border-gray-200 p-6 flex items-center justify-between",children:[r.jsx("h2",{className:"text-2xl font-bold text-gray-900",children:"Contractor Partnership Standards"}),r.jsx("button",{onClick:()=>t(!1),className:"text-gray-400 hover:text-gray-600",children:r.jsx(Zs,{className:"w-6 h-6"})})]}),r.jsx("div",{className:"p-6",children:r.jsx(j8,{})}),r.jsx("div",{className:"sticky bottom-0 bg-gray-50 border-t border-gray-200 p-6",children:r.jsx(qe,{onClick:()=>t(!1),className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-bold h-12 rounded-xl",children:"Close and Continue"})})]})}),r.jsx(R8,{}),r.jsx($8,{}),r.jsx(tr,{})]})}const O8="https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/f30af8dd2_Screenshot2026-05-04122351.png",F8=[{name:"Smiley Drain Plumbing",category:"Plumbing"},{name:"Lesco Heating & Cooling",category:"HVAC"},{name:"NJ Kitchens & Baths",category:"Remodeling"},{name:"Garden State Roofing",category:"Roofing"},{name:"Premier Electric NJ",category:"Electrical"},{name:"GreenLawn Services",category:"Lawn Care"},{name:"TrueClean Solutions",category:"Cleaning"},{name:"Jersey Pest Pro",category:"Pest Control"},{name:"Montclair HVAC",category:"HVAC"},{name:"Summit Sewer Solutions",category:"Plumbing"},{name:"Bergen Handyman",category:"Handyman"},{name:"Essex Tree Service",category:"Tree Service"},{name:"Morris County Roofing",category:"Roofing"},{name:"Tri-State Painting",category:"Painting"}],B8=["Jobber","Housecall Pro","ServiceTitan","HubSpot","Google Calendar","Stripe","Kickserv","JobTread","Zapier","QuickBooks","Mindbody","ConnectWise","Workiz","ServiceM8","Vagaro","Booksy"],z8=[{icon:Er,title:"AI Phone Answering",desc:"Your AI receptionist answers every call 24/7 — qualifying leads, collecting details, and routing emergencie
913s. No missed calls, ever.",badge:null},{icon:Jh,title:"Appointment Booking",desc:"The AI checks real-time availability, books appointments directly on your calendar, and sends confirmations — all during the call.",badge:null},{icon:y1,title:"Payment Collection",desc:"Collect deposits, service fees, and invoice payments during calls. The AI sends a secure Stripe checkout link via SMS — money in your account instantly.",badge:null},{icon:HN,title:"SMS & Email Notifications",desc:"Instant alerts for new bookings, payments, and call summaries. Your team stays informed without checking the dashboard.",badge:null},{icon:w1,title:"Website Chat Widget",desc:"Add an AI chat bubble to your website with one line of code. It runs on the same agent as your phone line — booking appointments 24/7.",badge:null},{icon:Sj,title:"CRM & Field Service Integrations",desc:"Syncs with Jobber, Housecall Pro, ServiceTitan, JobTread, Kickserv, and 30+ other tools your business already uses.",badge:null},{icon:Si,title:"AI Knowledge Base",desc:"Teach your AI about your services, pricing, and policies. It answers customer questions accurately using your business rules.",badge:null},{icon:gm,title:"Team & Technician Management",desc:"Assign calls and appointments to the right team members. Track availability, specialties, and schedules in one place.",badge:null},{icon:a5,title:"Follow-Up & Reminders",desc:"Automated appointment reminders, post-call follow-ups, and no-show outreach keep your schedule full and customers engaged.",badge:null},{icon:$5,title:"Mobile Dashboard",desc:"Full access from your phone — view calls, manage appointments, check payments, and adjust settings from anywhere.",badge:null},{icon:rj,title:"Invoicing & Estimates",desc:"Send branded estimates and invoices with hosted pay links. Stripe checkout, automatic reminders, and full payment history.",badge:"Coming Soon"},{icon:Hd,title:"Dispatch Board",desc:"Drag-and-drop dispatch view of every job and technician. The AI assists with smart routing and gap-filling.",badge:"Coming Soon"}],W8=[{name:"Free",monthly:0,yearly:0,desc:"Try SnapEstimate.AI with no commitment",callsLabel:"10 calls free per month",features:["AI Phone Agent","10 calls included","24/7 AI availability","Basic analytics","Email support","Calendar integration"],cta:"Start Free Trial",note:"Max 10 calls per month. After that, upgrade to continue.",highlight:!1,badge:null},{name:"Starter",monthly:99,yearly:82,desc:"Perfect for small businesses just getting started",callsLabel:"50 calls included per month",features:["AI Phone Agent","Note Taker Agent","50 calls included","24/7 AI availability","Basic analytics","Email support","Calendar integration"],cta:"Start Free Trial",note:"Extra Calls: $0.35 base + $0.01/sec. Example: 2-min call = $1.55",highlight:!1,badge:null},{name:"Professional",monthly:200,yearly:167,desc:"Best for growing businesses with consistent call volume",callsLabel:"200 calls included per month",features:["Everything in Starter","200 calls included","No per-booking fees","Priority support","Advanced analytics","Team management","Custom hold music","Call recording"],cta:"Start Free Trial",note:"Extra Calls: $0.15 base + $0.01/sec. Example: 2-min call = $1.35",highlight:!0,badge:"Most Popular"},{name:"Enterprise",monthly:500,yearly:417,desc:"For high-volume businesses that need maximum capacity",callsLabel:"750 calls included per month",features:["Everything in Professional","750 calls included","Dedicated account manager","Custom AI training","API access","White-label options","SLA guarantee"],cta:"Start Free Trial",note:"Extra Calls: $0.15 base + $0.01/sec. Example: 2-min call = $1.35",highlight:!1,badge:"Best Value"}],U8=[{q:"What's the difference between plans?",a:"Free gives you 10 calls/month at no cost — after 10 calls you'll need to subscribe to continue. Starter includes 50 calls for $99/month. Professional includes 200 calls for $200/month. Enterprise includes 750 calls for $500/month. Extra calls on paid plans vary by tier."},{q:"Can I upgrade or downgrade?",a:"Yes! You can change your plan anytime from your dashboard. Upgrades take effect immediately, and downgrades apply at the end of your billing period."},{q:"What happens if I exceed my call limit?",a:"On the Free plan, you're limited to 10 calls per month — after that, you'll need a paid plan. On paid plans, extra calls are billed per-call based on your tier. We'll notify you when you're approaching your limit."},{q:"Is there a free trial?",a:"Yes! All plans include a 14-day free trial with full access to features. No credit card required to start."},{q:"Does it work with my existing tools?",a:"Yes — SnapEstimate.AI integrates with Jobber, Housecall Pro, ServiceTitan, Google Calendar, Stripe, HubSpot, and 30+ other tools your business already uses."}];function Yw({items:e,speed:t=40,reverse:n=!1}){const i=[...e,...e];return r.jsx("div",{className:"overflow-hidden py-2",children:r.jsx("div",{className:"flex gap-3",style:{width:"max-content",animation:`${n?"marqueeReverse":"marquee"} ${t}s linear infinite`},children:i.map((l,d)=>r.jsxs("div",{className:"flex items-center gap-2 bg-white/10 border border-white/10 rounded-full px-4 py-2 whitespace-nowrap",children:[r.jsx("span",{className:"text-sm font-semibold text-white",children:l.name||l}),l.category&&r.jsx("span",{className:"text-xs text-gray-400",children:l.category})]},d))})})}function H8(){const[e,t]=S.useState(""),[n,i]=S.useState(""),[l,d]=S.useState(!1),[h,m]=S.useState(!1),[g,y]=S.useState(!1),[x,w]=S.useState(!1),j=async()=>
913{if(!(!e||!h)){y(!0);try{await Me.integrations.Core.SendEmail({to:"[email protected]",subject:`New AI Phone Agent Demo Request | ${e}`,body:`Phone: ${e}
914Website: ${l?"No website":n||"Not provided"}
915Agreed to SMS: ${h}`})}catch{}y(!1),w(!0)}};return x?r.jsxs("div",{className:"text-center py-8",children:[r.jsx("div",{className:"w-14 h-14 rounded-full bg-green-100 flex items-center justify-center mx-auto mb-3",children:r.jsx(qs,{className:"w-7 h-7 text-green-500"})}),r.jsx("h3",{className:"font-bold text-gray-800 text-lg mb-1",children:"Demo call requested!"}),r.jsxs("p",{className:"text-gray-500 text-sm",children:["We'll call you at ",e," shortly to demo your personalized AI agent."]})]}):r.jsxs("div",{children:[r.jsx("h3",{className:"font-bold text-gray-800 text-lg mb-1",children:"Get a personalized demo call"}),r.jsx("p",{className:"text-gray-500 text-sm mb-5",children:"See how your AI agent sounds — in seconds"}),r.jsxs("div",{className:"flex border border-gray-200 rounded-xl overflow-hidden mb-3",children:[r.jsxs("div",{className:"flex items-center gap-2 px-3 bg-gray-50 border-r border-gray-200",children:[r.jsx("span",{children:"🇺🇸"}),r.jsx("span",{className:"text-sm text-gray-600",children:"+1"})]}),r.jsx("input",{type:"tel",value:e,onChange:P=>t(P.target.value),placeholder:"(555) 123-4567",className:"flex-1 px-3 py-3 text-sm focus:outline-none bg-white text-gray-900 placeholder-gray-400"})]}),r.jsxs("label",{className:"flex items-start gap-2 mb-3 cursor-pointer",children:[r.jsx("input",{type:"checkbox",checked:h,onChange:P=>m(P.target.checked),className:"mt-0.5 accent-[hsl(197,100%,50%)]"}),r.jsxs("span",{className:"text-xs text-gray-500 leading-relaxed",children:["I agree to receive SMS messages from SnapEstimate.AI. Message frequency varies. Msg & data rates may apply. Reply STOP to cancel, HELP for info."," ",r.jsx(Qt,{to:"/privacy-policy",className:"underline hover:text-gray-700",children:"Privacy Policy"})," &"," ",r.jsx(Qt,{to:"/terms-of-service",className:"underline hover:text-gray-700",children:"Terms"}),"."]})]}),!l&&r.jsxs("div",{className:"flex border border-gray-200 rounded-xl overflow-hidden mb-2",children:[r.jsx("div",{className:"flex items-center px-3 bg-gray-50 border-r border-gray-200",children:r.jsx(w1,{className:"w-4 h-4 text-gray-400"})}),r.jsx("input",{type:"url",value:n,onChange:P=>i(P.target.value),placeholder:"yourwebsite.com",className:"flex-1 px-3 py-3 text-sm focus:outline-none bg-white text-gray-900 placeholder-gray-400"})]}),r.jsxs("label",{className:"flex items-center gap-2 mb-5 cursor-pointer",children:[r.jsx("input",{type:"checkbox",checked:l,onChange:P=>d(P.target.checked),className:"accent-[hsl(197,100%,50%)]"}),r.jsx("span",{className:"text-xs text-gray-500",children:"I don't have a website"})]}),r.jsx(qe,{onClick:j,disabled:!e||!h||g,className:"w-full bg-[hsl(213,50%,15%)] hover:bg-[hsl(213,50%,10%)] text-white font-bold h-12 rounded-xl disabled:opacity-50",children:g?"Sending...":"Get My Demo Call →"})]})}function V8(){const[e,t]=S.useState(!1);return r.jsx("section",{id:"pricing",className:"w-full bg-white py-20",children:r.jsxs("div",{className:"max-w-6xl mx-auto px-4",children:[r.jsx("div",{className:"flex justify-center mb-6",children:r.jsx("span",{className:"bg-green-50 border border-green-200 text-green-700 text-xs font-semibold px-3 py-1.5 rounded-full",children:"● 14-day free trial on all plans"})}),r.jsx("h2",{className:"text-4xl font-black text-center text-[hsl(213,50%,15%)] mb-3",children:"Simple, transparent pricing"}),r.jsx("p",{className:"text-center text-gray-500 mb-8",children:"Choose the plan that fits your business. Start free, upgrade when you're ready."}),r.jsx("div",{className:"flex justify-center mb-10",children:r.jsxs("div",{className:"flex bg-gray-100 rounded-full p-1",children:[r.jsx("button",{onClick:()=>t(!1),className:`px-5 py-2 rounded-full text-sm font-medium transition-colors ${e?"text-gray-500":"bg-white shadow text-gray-900"}`,children:"Monthly"}),r.jsxs("button",{onClick:()=>t(!0),className:`px-5 py-2 rounded-full text-sm font-medium transition-colors flex items-center gap-2 ${e?"bg-white shadow text-gray-900":"text-gray-500"}`,children:["Yearly ",r.jsx("span",{className:"bg-green-100 text-green-700 text-xs px-2 py-0.5 rounded-full font-semibold",children:"2 months free"})]})]})}
915),r.jsx("div",{className:"grid md:grid-cols-4 gap-5",children:W8.map(n=>r.jsxs("div",{className:`relative rounded-2xl border-2 p-6 flex flex-col ${n.highlight?"border-[hsl(197,100%,50%)] shadow-xl":"border-gray-200"}`,children:[n.badge&&r.jsxs("div",{className:`absolute -top-3.5 left-1/2 -translate-x-1/2 px-3 py-1 rounded-full text-xs font-bold whitespace-nowrap ${n.highlight?"bg-[hsl(213,50%,15%)] text-white":"bg-amber-100 text-amber-700"}`,children:["☆ ",n.badge]}),r.jsx("h3",{className:"font-bold text-gray-800 text-xl mb-1",children:n.name}),r.jsxs("div",{className:"mb-2",children:[r.jsxs("span",{className:"text-4xl font-black text-gray-900",children:["$",e?n.yearly:n.monthly]}),r.jsx("span",{className:"text-gray-500 text-base",children:"/month"})]}),r.jsx("p",{className:"text-gray-500 text-sm mb-4",children:n.desc}),r.jsx("div",{className:`rounded-lg px-3 py-2 text-sm font-semibold text-center mb-5 ${n.highlight?"bg-[hsl(197,100%,90%)] text-[hsl(197,100%,35%)]":"bg-gray-100 text-gray-600"}`,children:n.callsLabel}),r.jsx("ul",{className:"space-y-2.5 mb-5 flex-1",children:n.features.map((i,l)=>r.jsxs("li",{className:"flex items-start gap-2 text-sm text-gray-600",children:[r.jsx(qs,{className:"w-4 h-4 text-green-500 flex-shrink-0 mt-0.5"}),i]},l))}),n.note&&r.jsx("p",{className:"text-sm text-gray-400 mb-4 text-center leading-relaxed",children:n.note}),r.jsx(qe,{className:`w-full h-10 rounded-xl font-semibold text-sm ${n.highlight?"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-black":"bg-gray-100 hover:bg-gray-200 text-gray-800"}`,children:n.cta}),n.monthly===0&&r.jsx("p",{className:"text-xs text-center text-gray-400 mt-2",children:"No credit card required"})]},n.name))})]})})}function q8(){const[e,t]=S.useState(null);return r.jsx("section",{id:"faq",className:"w-full bg-gray-50 py-20",children:r.jsxs("div",{className:"max-w-3xl mx-auto px-4",children:[r.jsx("h2",{className:"text-3xl font-black text-center text-[hsl(213,50%,15%)] mb-10",children:"Frequently asked questions"}),r.jsx("div",{className:"space-y-3",children:U8.map((n,i)=>r.jsxs("div",{className:"bg-white rounded-xl border border-gray-100 overflow-hidden",children:[r.jsxs("button",{onClick:()=>t(e===i?null:i),className:"w-full text-left px-6 py-5 font-semibold text-gray-800 flex items-center justify-between gap-4 text-base",children:[n.q,e===i?r.jsx(Da,{className:"w-5 h-5 flex-shrink-0 text-gray-400"}):r.jsx($o,{className:"w-5 h-5 flex-shrink-0 text-gray-400"})]}),e===i&&r.jsx("div",{className:"px-6 pb-5 text-gray-600 text-sm leading-relaxed",children:n.a})]},i))})]})})}function J8(){return r.jsxs("div",{className:"min-h-screen bg-white",children:[r.jsx("style",{children:`
916        @keyframes marquee { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }
917        @keyframes marqueeReverse { 0% { transform: translateX(-50%); } 100% { transform: translateX(0); } }
918      `}),r.jsx("nav",{className:"sticky top-0 z-50 bg-[hsl(213,50%,10%)] border-b border-white/10",children:r.jsxs("div",{className:"max-w-7xl mx-auto px-4 flex items-center justify-between h-16",children:[r.jsx(Qt,{to:"/",children:r.jsx("img",{src:O8,alt:"SnapEstimate.AI",className:"h-14 w-72 object-contain object-left"})}),r.jsxs("div",{className:"hidden md:flex items-center gap-8 text-sm text-gray-300",children:[r.jsx("a",{href:"#features",className:"hover:text-white transition-colors",children:"Features"}),r.jsx("a",{href:"#pricing",className:"hover:text-white transition-colors",children:"Pricing"}),r.jsx("a",{href:"#faq",className:"hover:text-white transition-colors",children:"FAQ"})]}),r.jsx("a",{href:"#demo",children:r.jsx(qe,{className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-black font-bold px-5 rounded-lg",children:"Try Demo Call!"})})]})}),r.jsxs("section",{className:"relative w-full overflow-hidden bg-[hsl(213,50%,10%)] min-h-[600px]",children:[r.jsxs("div",{className:"absolute inset-0",children:[r.jsx("img",{src:"https://images.unsplash.com/photo-1527689368864-3a821dbccc34?w=1400&q=80",alt:"",className:"w-full h-full object-cover opacity-20"}),r.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-[hsl(213,50%,8%)] via-[hsl(213,50%,8%)]/80 to-transparent"})]}),r.jsxs("div",{className:"relative max-w-7xl mx-auto px-4 py-16 grid md:grid-cols-2 gap-12 items-center",children:[r.jsxs("div",{children:[r.jsxs("div",{className:"inline-flex items-center gap-2 bg-white/10 border border-white/20 rounded-full px-4 py-2 mb-6",children:[r.jsx("span",{className:"text-xs font-semibold text-white",children:"Fully integrates with"}),r.jsx("span",{className:"text-xs font-bold text-[hsl(197,100%,60%)]",children:"Jobber • Housecall Pro • ServiceTitan"})]}),r.jsx("h1",{className:"text-3xl sm:text-4xl md:text-5xl font-black text-white leading-tight mb-5",children:"Your Office Staff Has Better Things to Do"}),r.jsx("p",{className:"text-gray-300 text-base sm:text-lg mb-8 leading-relaxed",children:"SnapEstimate.AI is the AI voice agent that answers every call, books appointments, and captures leads for any home service business — 24/7, even after hours."}),r.jsxs("div",{className:"flex flex-wrap gap-3 mb-8",children:[r.jsx("a",{href:"#demo",children:r.jsx(qe,{className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-black font-bold h-12 px-6 rounded-xl",children:"Try Demo Call!"})}),r.jsx("a",{href:"https://calendar.app.google/yhSKeLMxSaU8RiyQ7",target:"_blank",rel:"noopener noreferrer",children:r.jsx(qe,{variant:"outline",className:"border-white/30 text-white bg-transparent hover:bg-white/10 h-12 px-6 rounded-xl",children:"Book 15min walkthrough →"})})]}),r.jsx("div",{className:"grid grid-cols-3 gap-3",children:[{icon:Er,title:"AI Call Answering",sub:"No missed calls, ever"},{icon:Jh,title:"Automated Booking",sub:"AI books on the call"},{icon:Si,title:"Smart Call Transfer",sub:"Seamless escalation"}].map((e,t)=>r.jsxs("div",{className:"bg-white/10 border border-white/15 rounded-xl p-3 sm:p-4",children:[r.jsx(e.icon,{className:"w-5 h-5 text-[hsl(197,100%,60%)] mb-2"}),r.jsx("p",{className:"text-white text-sm font-semibold leading-tight",children:e.title}),r.jsx("p",{className:"text-gray-300 text-xs mt-1 leading-snug",children:e.sub})]},t))})]}),r.jsx("div",{id:"demo",className:"bg-white rounded-2xl shadow-2xl p-7 max-w-md ml-auto w-full",children:r.jsx(H8,{})})]})]}),r.jsxs("section",{className:"w-full bg-[hsl(213,50%,8%)] py-10",children:[r.jsx("p",{className:"text-center text-[hsl(197,100%,50%)] font-bold text-xs uppercase tracking-widest mb-1",children:"TRUSTED BY GROWING BUSINESSES"}),r.jsx("p",{className:"text-center text-gray-400 text-sm mb-6",children:"Real companies. Real results. Powered by SnapEstimate.AI."}),r.jsx(Yw,{items:F8,speed:35})]}),r.jsxs("section",{className:"w-full bg-[hsl(213,50%,10%)] py-8",children:[r.jsx("p",{className:"text-center text-gray-400 text-xs uppercase tracking-widest mb-5",children:"INTEGRATES WITH YOUR FAVORITE TOOLS"}),r.jsx(Yw,{items:B8.map(e=>({name:e})),speed:25,reverse:!0})]}),r.jsx("section",{className:"w-full bg-white py-20",children:r.jsxs("div",{className:"max-w-5xl mx-auto px-4",children:[r.jsx("p",{className:"text-center text-[hsl(197,100%,40%)] font-bold text-xs uppercase tracking-widest mb-3",children:"WHY CHOOSE AI CALL ANSWERING"}),r.jsx("h2",{className:"text-3xl md:text-4xl font-black text-center text-[hsl(213,50%,15%)] mb-3",children:"Why Businesses Choose AI Answering Over Traditional Services"}),r.jsx("p",{className:"text-center text-gray-500 mb-12 max-w-2xl mx-auto",children:"Better than Ruby, AnswerConnect, or any traditional answering service — at a fraction of the cost. No missed calls, no missed revenue."}),r.jsx("div",{className:"grid sm:grid-cols-2 gap-6",children:[{title:"24/7 AI answering — never miss a call",desc:"After hours, weekends, holidays — your AI receptionist answers every call automatically so you and your team stay focused on running the business."},{title:"AI that captures leads and books appointments",desc:"Your AI agent qualifies leads and books appointments on every call. Marketing spend goes further when ready-to-book customers never fall through the cracks."},{title:"Missed call automation — no more voicemail chasing",desc:"No more stopping mid-task to answer calls. Your AI receptionist handles call answering, lead capture, and automated booking for your business."},{title:"Replaces your traditional answering service",desc:"A smarter alternative to Ruby, AnswerConnect, and CallRail. SnapEstimate.AI is set up for your business and tuned over time — without another system to manage."}].map((e,t)=>r.jsxs("div",{className:"flex gap-4 p-5 rounded-2xl border border-gray-100 bg-gray-50",children:[r.jsx("div",{className:"w-9 h-9 rounded-full bg-[hsl(197,100%,90%)] flex items-center justify-center flex-shrink-0 mt-0.5",children:r.jsx(qs,{className:"w-5 h-5 text-[hsl(197,100%,40%)]"})}),r.jsxs("div",{children:[r.jsx("p",{className:"font-bold text-[hsl(213,50%,15%)] mb-2 text-base",children:e.title}),r.jsx("p",{className:"text-gray-500 text-sm leading-relaxed",children:e.desc})]})]},t))})]})}),r.jsx("section",{id:"features",className:"w-full bg-gray-50 py-20",children:r.jsxs("div",{className:"max-w-6xl mx-auto px-4",children:[r.jsx("p",{className:"text-center text-[hsl(197,100%,40%)] font-bold text-xs uppercase tracking-widest mb-3",children:"EVERYTHING YOU NEED"}),r.jsx("h2",{className:"text-3xl font-black text-center text-[hsl(213,50%,15%)] mb-3",children:"One Platform. Every Customer Touchpoint."}),r.jsx("p",{className:"text-center text-gray-500 mb-12 max-w-2xl mx-auto",children:"From the first ring to the final invoice, SnapEstimate.AI handles every step of the customer journey so your team can focus on the work."}),r.jsx("div",{className:"grid sm:grid-cols-2 md:grid-cols-3 gap-4",children:z8.map((e,t)=>r.jsxs("div",{className:"bg-white rounded-2xl border border-gray-100 p-5 relative",children:[e.badge&&r.jsx("span",{className:"absolute top-4 right-4 bg-amber-100 text-amber-700 text-xs font-semibold px-2 py-0.5 rounded-full",children:e.badge}),r.jsx("div",{className:"w-10 h-10 rounded-xl bg-[hsl(197,100%,93%)] flex items-center justify-center mb-3",children:r.jsx(e.icon,{className:"w-5 h-5 text-[hsl(197,100%,40%)]"})}),r.jsx("p",{className:"font-bold text-[hsl(213,50%,15%)] text-base mb-2",children:e.title}),r.jsx("p",{className:"text-gray-500 text-sm leading-relaxed",children:e.desc})]},t))}),r.jsx("div",{className:"text-center mt-10",children:r.jsx("a",{href:"#demo",children:r.jsx(qe,{className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-black font-bold h-12 px-8 rounded-xl",children:"See All Features in Action"})})})]})}),r.jsx(V8,{}),r.jsx(q8,{}),r.jsx("section",{className:"w-full bg-[hsl(213,50%,10%)] py-16",children:r.jsxs("div",{className:"max-w-2xl mx-auto px-4 text-center",children:[r.jsx("h2",{className:"text-3xl font-black text-white mb-3",children:"Ready to transform your business?"}),r.jsx("p",{className:"text-gray-400 mb-8",children:"Join home service businesses across New Jersey already using AI agents to handle calls, book appointments, and grow revenue."}),r.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 justify-center",children:[r.jsx("a",{href:"#demo",children:r.jsx(qe,{className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-black font-bold h-12 px-8 rounded-xl",children:"Start Free Trial"})}),r.jsx(Qt,{to:"/grow",children:r.jsx(qe,{variant:"outline",className:"border-white/30 text-white bg-transparent hover:bg-white/10 h-12 px-8 rounded-xl",children:"Explore More →"})})]})]})}),r.jsx(tr,{})]})}const G8="https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/440cd71e2_Remove_modern_house_202603281158.png",Jg={starter:{label:"Starter",color:"bg-gray-100 text-gray-700",minutes:0,price:299},pro:{label:"Pro",color:"bg-blue-100 text-blue-700",minutes:300,price:599},elite:{label:"Elite",color:"bg-purple-100 text-purple-700",minutes:99999,price:999}},Z8={contractorEmail:"",businessName:"",twilioPhoneNumber:"",vapiAgentId:"",emergencyForwardNumber:"",businessHours:"Mon-Fri 7am-7pm, Sat 8am-2pm",serviceArea:"",services:[],agentInstructions:"",plan:"pro",monthlyMinutesIncluded:300,minutesUsedThisMonth:0,totalCallsThisMonth:0,billingCycleStart:new Date().toISOString().split("T")[0],isActive:!0,monthlyFee:599,notes:""},K8=["Roofing","Plumbing","HVAC","Electrical","Painting","Landscaping","Tree Service","Junk Removal","Sewer Service","Water Heater","Pest Control","Cleaning","Handyman","Bathroom Remodeling","Kitchen Remodeling","Fencing","Driveway","Garage Doors","Gutter Service","Moving Service"];function Y8({initial:e,onSave:t,onCancel:n}){const[i,l]=S.useState(e||Z8),[d,h]=S.useState(!1),m=(x,w)=>l(j=>({...j,[x]:w}
918)),g=x=>{var w;return m("services",(w=i.services)!=null&&w.includes(x)?i.services.filter(j=>j!==x):[...i.services||[],x])},y=async()=>{h(!0),await t(i),h(!1)};return r.jsxs("div",{className:"bg-white border border-gray-200 rounded-2xl p-6 space-y-5",children:[r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-1",children:"Business Name *"}),r.jsx("input",{value:i.businessName,onChange:x=>m("businessName",x.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400",placeholder:"Smiley Plumbing & Drain"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-1",children:"Contractor Email *"}),r.jsx("input",{value:i.contractorEmail,onChange:x=>m("contractorEmail",x.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400",placeholder:"[email protected]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-1",children:"Twilio Phone Number"}),r.jsx("input",{value:i.twilioPhoneNumber,onChange:x=>m("twilioPhoneNumber",x.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400",placeholder:"+17321234567"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-1",children:"Emergency Forward Number"}),r.jsx("input",{value:i.emergencyForwardNumber,onChange:x=>m("emergencyForwardNumber",x.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400",placeholder:"+17329876543"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-1",children:"Vapi Agent ID"}),r.jsx("input",{value:i.vapiAgentId,onChange:x=>m("vapiAgentId",x.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400",placeholder:"vapi-agent-abc123"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-1",children:"Business Hours"}),r.jsx("input",{value:i.businessHours,onChange:x=>m("businessHours",x.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-1",children:"Service Area"}),r.jsx("input",{value:i.serviceArea,onChange:x=>m("serviceArea",x.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400",placeholder:"07001, 07002, Middlesex County NJ"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-1",children:"Monthly Fee ($)"}),r.jsx("input",{type:"number",value:i.monthlyFee,onChange:x=>m("monthlyFee",Number(x.target.value)),className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400"})]})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-2",children:"Plan"}),r.jsx("div",{className:"flex gap-3",children:Object.entries(Jg).map(([x,w])=>r.jsxs("label",{className:`flex items-center gap-2 border rounded-lg px-4 py-2 cursor-pointer text-sm transition-colors ${i.plan===x?"border-blue-500 bg-blue-50":"border-gray-200"}`,children:[r.jsx("input",{type:"radio",name:"plan",value:x,checked:i.plan===x,onChange:()=>{m("plan",x),m("monthlyMinutesIncluded",w.minutes),m("monthlyFee",w.price)},className:"accent-blue-500"}),w.label," — $",w.price,"/mo"]},x))})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-2",children:"Services Offered"}),r.jsx("div",{className:"flex flex-wrap gap-2",children:K8.map(x=>{var w;return r.jsx("button",{type:"button",onClick:()=>g(x),className:`text-xs px-3 py-1.5 rounded-full border font-medium transition-colors ${(w=i.services)!=null&&w.includes(x)?"bg-blue-500 text-white border-blue-500":"bg-white text-gray-600 border-gray-200 hover:bg-gray-50"}`,children:x},x)})})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-1",children:"AI Agent Instructions"}),r.jsx("textarea",{value:i.agentInstructions,onChange:x=>m("agentInstructions",x.target.value),rows:5,className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400 font-mono",placeholder:"You are the AI receptionist for {businessName}. Answer calls professionally, qualify leads by asking about the issue, urgency, and address. Book appointments during business hours. For emergencie
918s, forward to {emergencyNumber}. Always capture: name, phone, address, problem description."})]}),r.jsxs("div",{children:[r.jsx("label",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide block mb-1",children:"Internal Notes"}),r.jsx("input",{value:i.notes,onChange:x=>m("notes",x.target.value),className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400",placeholder:"Admin notes..."})]}),r.jsxs("label",{className:"flex items-center gap-3 cursor-pointer",children:[r.jsx("div",{onClick:()=>m("isActive",!i.isActive),className:`w-10 h-6 rounded-full transition-colors ${i.isActive?"bg-green-500":"bg-gray-300"} relative`,children:r.jsx("div",{className:`w-4 h-4 bg-white rounded-full absolute top-1 transition-all ${i.isActive?"left-5":"left-1"}`})}),r.jsx("span",{className:"text-sm font-medium text-gray-700",children:i.isActive?"Active":"Inactive"})]}),r.jsxs("div",{className:"flex gap-3 pt-2",children:[r.jsxs(qe,{onClick:y,disabled:d||!i.businessName||!i.contractorEmail,className:"bg-blue-600 hover:bg-blue-700 text-white font-bold px-6 h-10 rounded-xl",children:[r.jsx(S5,{className:"w-4 h-4 mr-1"})," ",d?"Saving...":"Save Agent"]}),r.jsxs(qe,{variant:"outline",onClick:n,className:"h-10 rounded-xl",children:[r.jsx(Zs,{className:"w-4 h-4 mr-1"})," Cancel"]})]})]})}function Q8({agent:e,onEdit:t,onDelete:n}){var m;const[i,l]=S.useState(!1),d=Jg[e.plan]||Jg.pro,h=e.monthlyMinutesIncluded>0&&e.monthlyMinutesIncluded<99999?Math.min(100,Math.round((e.minutesUsedThisMonth||0)/e.monthlyMinutesIncluded*100)):null;return r.jsxs("div",{className:"bg-white rounded-2xl border border-gray-200 overflow-hidden",children:[r.jsxs("div",{className:"px-5 py-4 flex items-center gap-4 cursor-pointer",onClick:()=>l(!i),children:[r.jsx("div",{className:`w-3 h-3 rounded-full flex-shrink-0 ${e.isActive?"bg-green-500":"bg-gray-300"}`}),r.jsxs("div",{className:"flex-1 min-w-0",children:[r.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[r.jsx("p",{className:"font-bold text-gray-800 text-sm",children:e.businessName}),r.jsx("span",{className:`text-xs px-2 py-0.5 rounded-full font-medium ${d.color}`,children:d.label}),e.vapiAgentId&&r.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-cyan-100 text-cyan-700 font-medium",children:"Vapi Connected"})]}),r.jsx("p",{className:"text-xs text-gray-400 truncate",children:e.contractorEmail})]}),r.jsxs("div",{className:"hidden sm:flex items-center gap-6 text-center flex-shrink-0",children:[r.jsxs("div",{children:[r.jsx("p",{className:"text-sm font-bold text-gray-800",children:e.totalCallsThisMonth||0}),r.jsx("p",{className:"text-xs text-gray-400",children:"Calls"})]}),r.jsxs("div",{children:[r.jsxs("p",{className:"text-sm font-bold text-gray-800",children:[e.minutesUsedThisMonth||0," min"]}),r.jsx("p",{className:"text-xs text-gray-400",children:"Used"})]}),r.jsxs("div",{children:[r.jsxs("p",{className:"text-sm font-bold text-emerald-600",children:["$",e.monthlyFee||0,"/mo"]}),r.jsx("p",{className:"text-xs text-gray-400",children:"Fee"})]})]}),r.jsx("div",{className:"text-gray-400 ml-2",children:i?r.jsx(Da,{className:"w-4 h-4"}):r.jsx($o,{className:"w-4 h-4"})})]}),i&&r.jsxs("div",{className:"border-t border-gray-100 px-5 py-4 bg-gray-50 space-y-4",children:[h!==null&&r.jsxs("div",{children:[r.jsxs("div",{className:"flex justify-between text-xs text-gray-500 mb-1",children:[r.jsx("span",{children:"Minutes Used"}),r.jsxs("span",{children:[e.minutesUsedThisMonth||0," / ",e.monthlyMinutesIncluded," min (",h,"%)"]})]}),r.jsx("div",{className:"w-full h-2 bg-gray-200 rounded-full overflow-hidden",children:r.jsx("div",{className:`h-2 rounded-full transition-all ${h>85?"bg-red-500":h>60?"bg-yellow-500":"bg-green-500"}`,style:{width:`${h}%`}})})]}),r.jsxs("div",{className:"grid sm:grid-cols-2 gap-3 text-sm",children:[e.twilioPhoneNumber&&r.jsxs("div",{className:"flex items-center gap-2 text-gray-600",children:[r.jsx(Er,{className:"w-4 h-4 text-blue-400"}),r.jsx("span",{children:e.twilioPhoneNumber})]}),e.emergencyForwardNumber&&r.jsxs("div",{className:"flex items-center gap-2 text-gray-600",children:[r.jsx(Er,{className:"w-4 h-4 text-red-400"}),r.jsxs("span",{children:["Emergency: ",e.emergencyForwardNumber]})]}),e.businessHours&&r.jsxs("div",{className:"flex items-center gap-2 text-gray-600",children:[r.jsx(fm,{className:"w-4 h-4 text-gray-400"}),r.jsx("span",{children:e.businessHours})]}),e.vapiAgentId&&r.jsxs("div",{className:"flex items-center gap-2 text-gray-600",children:[r.jsx(Si,{className:"w-4 h-4 text-cyan-400"}),r.jsx("span",{className:"font-mono text-xs",children:e.vapiAgentId})]})]}),((m=e.services)==null?void 0:m.length)>0&&r.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.services.map(g=>r.jsx("span",{className:"text-xs px-2.5 py-1 rounded-full bg-white border border-gray-200 text-gray-600",children:g},g))}),e.serviceArea&&r.jsxs("p",{className:"text-xs text-gray-500",children:[r.jsx("span",{className:"font-semibold",children:"Service Area:"})," ",e.serviceArea]}),e.agentInstructions&&r.jsxs("div",{className:"bg-white border border-gray-200 rounded-lg px-3 py-2",children:[r.jsx("p",{className:"text-xs font-semibold text-gray-500 mb-1",children:"Agent Instructions"}),r.jsx("p",{className:"text-xs text-gray-600 font-mono leading-relaxed line-clamp-3",children:e.agentInstructions})]}),e.notes&&r.jsx("p",{className:"text-xs text-gray-400 italic",children:e.notes}),r.jsxs("div",{className:"flex gap-2 pt-1",children:[r.jsxs(qe,{size:"sm",variant:"outline",onClick:()=>t(e),className:"h-8 text-xs rounded-lg",children:[r.jsx(m5,{className:"w-3 h-3 mr-1"})," Edit"]}),r.jsxs(qe,{size:"sm",variant:"outline",onClick:()=>n(e),className:"h-8 text-xs rounded-lg text-red-500 border-red-200 hover:bg-red-50",children:[r.jsx(e0,{className:"w-3 h-3 mr-1"})," Delete"]})]})]})]})}function X8(){const[e,t]=S.useState(null),[n,i]=S.useState([]),[l,d]=S.useState(!0),[h,m]=S.useState(!1),[g,y]=S.useState(null);S.useEffect(()=>{x()},[]);const x=async()=>{d(!0);const $=await Me.auth.me();if(t($),($==null?void 0:$.role)==="admin"){const I=await Me.entities.ContractorAgent.list("-created_date",100);i(I)}d(!1)},w=async $=>{g?await Me.entities.ContractorAgent.update(g.id,$):await Me.entities.ContractorAgent.create($),m(!1),y(null);const I=await Me.entities.ContractorAgent.list("-created_date",100);i(I)},j=$=>{y($),m(!0),window.scrollTo({top:0,behavior:"smooth"})},P=async $=>{window.confirm(`Delete agent for ${$.businessName}?`)&&(await Me.entities.ContractorAgent.delete($.id),i(I=>I.filter(M=>M.id!==$.id)))},C=()=>{m(!1),y(null)};if(l)return r.jsx(qh,{children:r.jsx("div",{className:"min-h-screen flex items-center justify-center",children:r.jsx("div",{className:"w-8 h-8 border-4 border-gray-200 border-t-blue-500 rounded-full animate-spin"})})});if(!e||e.role!=="admin")return r.jsx(qh,{children:r.jsx("div",{className:"min-h-screen flex items-center justify-center",children:r.jsx("p",{className:"text-gray-500",children:"Admin only."})})});const k=n.reduce(($,I)=>$+(I.monthlyFee||0),0),A=n.reduce(($,I)=>$+(I.minutesUsedThisMonth||0),0),E=n.filter($=>$.isActive).length;return r.jsx(qh,{children:r.jsxs("div",{className:"min-h-screen bg-gray-50",children:[r.jsx("div",{className:"bg-white border-b border-gray-200 sticky top-0 z-10",children:r.jsxs("div",{className:"max-w-5xl mx-auto px-4 py-3 flex items-center justify-between",children:[r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("img",{src:G8,alt:"SnapEstimate.AI",className:"h-8 w-auto object-contain"}),r.jsxs("div",{children:[r.jsxs("div",{className:"flex items-center gap-1.5",children:[r.jsx(Si,{className:"w-3.5 h-3.5 text-blue-500"}),r.jsx("p",{className:"font-bold text-sm text-gray-800",children:"AI Agent Manager"})]}),r.jsxs("p",{className:"text-xs text-gray-400",children:[E," active agents"]})]})]}),r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(Qt,{to:"/admin-dashboard",className:"text-xs text-gray-500 border border-gray-200 px-3 py-1.5 rounded-lg hover:bg-gray-50",children:"← Dashboard"}),r.jsxs(qe,{onClick:()=>{y(null),m(!0)},className:"bg-blue-600 hover:bg-blue-700 text-white font-bold text-xs h-8 px-4 roun
918ded-lg",children:[r.jsx(x5,{className:"w-3.5 h-3.5 mr-1"})," New Agent"]})]})]})}),r.jsxs("div",{className:"max-w-5xl mx-auto px-4 py-6 space-y-6",children:[r.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[r.jsxs("div",{className:"bg-white rounded-xl border border-gray-200 px-4 py-4",children:[r.jsx("div",{className:"w-8 h-8 rounded-lg bg-blue-50 flex items-center justify-center mb-2",children:r.jsx(Si,{className:"w-4 h-4 text-blue-500"})}),r.jsx("p",{className:"text-2xl font-bold text-gray-900",children:E}),r.jsx("p",{className:"text-xs text-gray-500",children:"Active Agents"})]}),r.jsxs("div",{className:"bg-white rounded-xl border border-gray-200 px-4 py-4",children:[r.jsx("div",{className:"w-8 h-8 rounded-lg bg-emerald-50 flex items-center justify-center mb-2",children:r.jsx(oc,{className:"w-4 h-4 text-emerald-500"})}),r.jsxs("p",{className:"text-2xl font-bold text-gray-900",children:["$",k.toLocaleString()]}),r.jsx("p",{className:"text-xs text-gray-500",children:"Monthly Revenue"})]}),r.jsxs("div",{className:"bg-white rounded-xl border border-gray-200 px-4 py-4",children:[r.jsx("div",{className:"w-8 h-8 rounded-lg bg-purple-50 flex items-center justify-center mb-2",children:r.jsx(fm,{className:"w-4 h-4 text-purple-500"})}),r.jsx("p",{className:"text-2xl font-bold text-gray-900",children:A}),r.jsx("p",{className:"text-xs text-gray-500",children:"Total Call Minutes"})]})]}),h&&r.jsxs("div",{children:[r.jsx("h2",{className:"font-bold text-gray-800 mb-3",children:g?`Edit — ${g.businessName}`:"New Contractor Agent"}),r.jsx(Y8,{initial:g,onSave:w,onCancel:C})]}),r.jsxs("div",{children:[r.jsxs("h2",{className:"font-bold text-gray-800 mb-3",children:["All Contractor Agents (",n.length,")"]}),n.length===0?r.jsxs("div",{className:"text-center py-16 text-gray-400 bg-white rounded-2xl border border-gray-200",children:[r.jsx(Si,{className:"w-10 h-10 mx-auto mb-3 opacity-30"}),r.jsx("p",{className:"font-semibold",children:"No agents yet"}),r.jsx("p",{className:"text-sm mt-1",children:'Click "New Agent" to create your first contractor AI agent'})]}):r.jsx("div",{className:"space-y-3",children:n.map($=>r.jsx(Q8,{agent:$,onEdit:j,onDelete:P},$.id))})]})]})]})})}const Qw={"Air Conditioner Installation":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FHVAC_with_logo_hnuk8x","Appliance Repair":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Appliance_s84xwy","Basement Waterproofing":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FBasment_waterproofing_xwe4c7","Bathroom Remodeling":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FBathroom_remodel_g4w5o3","Carpet Cleaning":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FCarpet_Cleaning_gguwnp","Chimney Liner & Masonry":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FChimney_bskprw",Cleaning:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FHouse_cleaning_dlw41g","Custom Closets":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Woman_in_front_of_closet_202605251706_1_syxdtf","Custom Garage":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Woman_taking_picture_inside_garage_202605251703_wayfrp","Decks & Porches":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FCustom_decks_cfzbw0","Driveway Service":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FDriveway_zvinpd","Duct Cleaning":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Duct_cleaning_3_gt8ig2",Electrical:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FElectrical_dx0qo5",Fencing:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FFencing_y063wf","Garage Doors":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FGarage_Door_cfenje","Gutter Service":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FGutters_gyg4nn","Handyman Service":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FHandyman_fuxev5","Heating System Installation":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FHeating_system_uek0kn","Home Inspection":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FHome_inspection_kswxv8","Home Remodeling":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Woman_using_carpet_202604061728_nvwyus","Junk Removal"
918:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Woman_taking_pictures_of_junk_202605311555_xrq093","Kitchen Remodeling":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FKitchen_remodel_dkmdoi",Landscaping:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FLawn_Care_tgygxl","Lawn Care":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FLawn_Care_tgygxl","Moving Service":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FMoving_raxfdg","New Window & Door":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FWindow_and_doors_rmiqd4",Painting:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FPainting_fyncjw","Pest Control":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=New_exterminator_video_fr7jo4",Plumbing:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Woman_taking_picture_of_plumbing_202605251653_zlj12l",Roofing:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FRoofing_h7nl6a","Sewer Camera Inspection":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9","Sewer Descaling":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9","Sewer Hydro Jetting":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9","Sewer Relining":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9","Sewer Rooter Service":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSewer_rooter_service_emfhl9",Siding:"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FSiding_nqtnvs","Tree Service":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FTree_removal_n5cy8l","Water & Mold Cleanup":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=0528_r3jqxr","Water Heater Installation":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FWater_heater_with_logo_at_end_uh7ptq","Water Softener":"https://player.cloudinary.com/embed/?cloud_name=dxud7uopf&public_id=Sales%20video%20one%2FWater_softer_kvfxeu"},eD={"Air Conditioner Installation":{priceRange:"$5,300 – $12,500",highDemand:!0,equipment:"16-18 SEER2 Condensing unit, evaporator coil, and smart thermostat.",pricingInsights:"High NJ electricity rates (approx. 19¢/kWh) make high-efficiency units essential for a 5-year ROI.",costDrivers:"Attic vs. basement placement and the need for new refrigerant line sets.",redFlags:`Contractors who don't perform a "Manual J" load calculation to size the unit correctly.`,njTip:"A proper Manual J calculation is essential—oversized units waste money, undersized units don't cool effectively.",step6Tiers:[{tier:"Premium",range:"$10,000+",scope:"High-SEER2 multi-zone systems or full ductwork replacement."},{tier:"Standard",range:"$5,500 – $8,500",scope:"Standard central air unit swap-out using existing ducts."},{tier:"Entry",range:"$3,500 – $5,000",scope:"Smaller 1.5 - 2 ton units or major system repairs."}]},"Appliance Repair":{priceRange:"$150 – $600",equipment:"OEM replacement parts (sensors, heating elements, or motors).",pricingInsights:"NJ service call fees typically range from $100 to $175, usually applied toward the repair.",costDrivers:'Sealed system repairs (refrigeration) or high-end "Smart" motherboard replacements.',redFlags:"Technicians who don't offer at least a 90-day warranty on parts and labor.",njTip:"Always get a written warranty on parts and labor—90 days minimum is standard.",step6Tiers:[{tier:"Premium",range:"$600 – $900+",scope:"Control board replacements or sealed system/compressor work."},{tier:"Standard",range:"$350 – $550",scope:"Common mechanical fixes (pumps, belts, or sensors)."},{tier:"Entry",range:"$150 – $250",scope:"Diagnostic visit fee plus minor calibration."}]},"Bathroom Remodeling":{priceRange:"$15,000 – $45,000",equipment:"Waterproofing systems (Schluter), vanities, and high-efficiency toilets.",pricingInsights:"NJ labor for a full gut is premium; moving plumbing stacks in older homes is a major expense.",costDrivers:"Transitioning from a tub to a walk-in shower and custom tile patterns.",redFlags:"Skipping the mandatory 24-hour shower pan flood test.",njTip:"The 24-hour shower pan test is non-negotiable in NJ—it prevents costly water damage.",step6Tiers:[{tier:"Premium",range:"$40,000+",scope:"Master suite expansion, high-end tile, and custom glass."},{tier:"Standard",range:"$18,000 – $28,000",scope:'Full "gut" renovation of a standard 5x8 bathroom.'},{tier:"Entry",range:"$8,000 – $12,000",scope:'"Refresh" including new vanity, toilet, and floor overlay.'}]},"Chimney Liner & Masonry":{priceRange:"$2,000 – $5,000",equipment:"UL-listed stainless steel liners and high-heat mortar.",pricingInsights:"Essential for NJ fire code compliance when upgrading to a high-efficiency furnace.",costDrivers:'Height of the chimney and the amount of "tu
918ckpointing" (mortar repair) needed.',redFlags:"Using aluminum liners for wood-burning appliances; only stainless steel is safe.",njTip:"Always use UL-listed stainless steel liners—aluminum is not safe for wood-burning appliances.",step6Tiers:[{tier:"Premium",range:"$8,000+",scope:"Partial chimney rebuild or high-end stone facing."},{tier:"Standard",range:"$3,500 – $5,500",scope:"Stainless steel liner installation and tuck-pointing."},{tier:"Entry",range:"$1,200 – $2,200",scope:"Chimney cap replacement and minor crown repair."}]},Cleaning:{priceRange:"$150 – $800",equipment:"HEPA-filter vacuums and hospital-grade disinfectants.",pricingInsights:"NJ rates often factor in high travel/toll costs for crews.",costDrivers:'Square footage and "move-out" vs. standard maintenance depth.',redFlags:"Companies without worker's compensation insurance.",njTip:"Always verify worker's compensation insurance before hiring.",step6Tiers:[{tier:"Premium",range:"$650+",scope:"Post-construction deep clean or full estate move-out."},{tier:"Standard",range:"$300 – $450",scope:"Full deep clean for a 3-bedroom home."},{tier:"Entry",range:"$150 – $250",scope:"Recurring bi-weekly maintenance cleaning."}]},"Decks & Porches":{priceRange:"$4,000 – $35,000",equipment:"Pressure-treated lumber or composite (Trex/Azek) and concrete footings.",pricingInsights:'NJ frost lines require deep footings (36"+) to prevent "heaving" in winter.',costDrivers:"Composite material costs and the addition of lighting or built-in seating.",redFlags:"Building without a permit; NJ towns are notorious for forcing homeowners to tear down unpermitted decks.",njTip:"Always get a permit—unpermitted decks can be forced to be torn down.",step6Tiers:[{tier:"Premium",range:"$35,000+",scope:"Multi-level composite (Azek/Trex) with integrated lighting."},{tier:"Standard",range:"$15,000 – $25,000",scope:"Pressure-treated wood deck (approx. 16x20)."},{tier:"Entry",range:"$6,000 – $10,000",scope:"Platform deck or major railing and stair replacement."}]},"Driveway Service":{priceRange:"$4,000 – $8,000",highDemand:!0,equipment:"Hot-mix asphalt or decorative pavers.",pricingInsights:"NJ's freeze-thaw cycle requires a 6-inch stone base for asphalt to last more than 3 years.",costDrivers:'Excavation of "clay soil" common in NJ and the thickness of the asphalt pour.',redFlags:'Contractors offering "leftover" asphalt from another job; it will be too cold to bond correctly.',njTip:"A proper 6-inch stone base is essential in NJ—without it, your asphalt will fail in 2-3 years.",step6Tiers:[{tier:"Premium",range:"$15,000+",scope:"Concrete pavers or heated driveway systems."},{tier:"Standard",range:"$6,000 – $10,000",scope:'Full asphalt "rip and replace" with new sub-base.'},{tier:"Entry",range:"$1,500 – $3,000",scope:"Asphalt resurfacing (top coat) or extensive patching."}]},"Duct Cleaning":{priceRange:"$350 – $1,000+",equipment:"Truck-mounted HEPA-filtered vacuum systems and rotary brush agitation equipment.",pricingInsights:"NJ pricing is driven by the number of supply and return vents, not just square footage.",costDrivers:"Number of vents and air handlers, presence of mold or heavy debris.",redFlags:'Extremely low prices ($49–$99 "whole house" deals) are almost always bait-and-switch scams.',njTip:"Always hire NADCA-certified contractors. Ducts should be inspected every 3–5 years.",step6Tiers:[{tier:"Premium",range:"$800 – $1,200+",scope:"Large homes with multiple HVAC zones, mold sanitizing, and dryer vent cleaning."},{tier:"Standard",range:"$400 – $700",scope:"Full source-removal cleaning for a 3–4 bedroom home with up to 20 vents."},{tier:"Entry",range:"$250 – $380",scope:"Smaller homes or condos with a single air handler and up to 10 vents."}]},Electrical:{priceRange:"$150 – $4,500",equipment:"Copper wiring, AFCI/GFCI breakers, and 200-amp panels.",pricingInsights:"NJ code is strict; any panel upgrade requires a specialized electrical sub-code permit.",costDrivers:"Fishing wires through finished walls vs. open construction.",redFlags:'"Handymen" doing electrical work. NJ requires a licensed Master Electrician for most tasks.',njTip:"Only hire licensed Master Electricians for electrical work—never trust handymen for this.",step6Tiers:[{tier:"Premium",range:"$4,500+",scope:"Full 200-amp panel upgrade and whole-house surge protection."},{tier:"Standard",range:"$1,500 – $2,800",scope:"Dedicated circuits for EVs or kitchen appliance upgrades."},{tier:"Entry",range:"$250 – $650",scope:"Basic outlet, switch, or light fixture replacements."}]},Fencing:{priceRange:"$2,500 – $12,000",equipment:"Vinyl, Aluminum, or Cedar panels.",pricingInsights:"NJ property line disputes are common; always get a fresh survey before installation.",costDrivers:"Digging in rocky NJ soil and the total linear footage.",redFlags:"Setting posts in soil without concrete or failing to check for underground utility lines (Call 811).",njTip:"Always call 811 before digging and get a fresh survey to avoid property disputes.",step6Tiers:[{tier:"Premium",range:"$12,000+",scope:"Ornamental aluminum or premium horizontal cedar privacy fencing."},{tier:"Standard",range:"$5,500 – $8,500",scope:"White vinyl privacy fencing or standard wood picket."},{tier:"Entry",range:"$2,500 – $4,500",scope:"Chain link fencing or repair/replacement of existing sections."}]},"Garage Doors":{priceRange:"$800 – $2,500",equipment:"Insulated steel doors and torsion spring systems.",pricingInsights:'High-R-value (insulated) doors are a "must" in NJ to protect attached garages from winter cold.',costDrivers:'Custom glass inserts and high-horsepower "Smart" openers.',redFlags:"Re-using old tracks with a new door; tracks warp over time and cause safety sensor failures.",njTip:"Always replace old tracks with a new door—warped tracks cause safety failures.",step6Tiers:[{tier:"Premium",range:"$5,000+",scope:"Custom wood or carriage-house doors with high-end insulation."},{tier:"Standard",range:"$2,200 – $3,500",scope:"Standard double-car steel door with professional installation."},{tier:"Entry",range:"$1,100 – $1,800",scope:"Basic single-layer steel door or major spring/motor replacement."}]},"Gutter Service":{priceRange:"$200 – $4,000",equipment:"Seamless aluminum gutters and micro-mesh guards.",pricingInsights:"NJ's heavy fall foliage makes high-quality gutter guards a high-ROI investment.",costDrivers:"Total linear feet and the height (stories) of the home.",redFlags:"Gutters pitched incorrectly; water must move toward the downspout, not sit in the middle.",njTip:"Proper pitch is essential—gutters should slope slightly toward downspouts to prevent pooling.",step6Tiers:[{tier:"Premium",range:"$4,500+",scope:"Seamless copper gutters or high-end permanent leaf filtration systems."},{tier:"Standard",range:"$1,800 – $3,000",scope:"New 6-inch seamless aluminum gutters and downspouts."},{tier:"Entry",range:"$250 – $600",scope:"Comprehensive cleaning, pitch adjustment, and minor leak repairs."}]},"Handyman Service":{priceRange:"$150 – $1,500",equipment:"General trade tools and hardware consumables.",pricingInsights:'Most NJ pros have a 2-hour minimum "show up" fee ($150–$250).',costDrivers:"The number of different trades involved.",redFlags:"Handymen taking on structural, electrical, or major plumbing work without proper licensing.",njTip:"Handymen are great for small projects but not for electrical, structural, or major plumbing work.",step6Tiers:[{tier:"Premium",range:"$1,500+",scope:"Full-d
918ay rate for complex multi-room repairs."},{tier:"Standard",range:"$400 – $750",scope:"Half-day of service (approx. 4 hours)."},{tier:"Entry",range:"$100 – $250",scope:"Single-task service call."}]},"Heating System Installation":{priceRange:"$4,000 – $18,000",equipment:"Gas furnaces, Boilers, or Electric Heat Pumps.",pricingInsights:"NJ is aggressively moving toward heat pumps with state-funded rebates (up to $2k).",costDrivers:"Converting from oil to gas and the efficiency (AFUE) rating.",redFlags:"Installing a new unit on an old, leaky chimney without a new liner.",njTip:"NJ heat pump rebates can reach $2k—check current incentives before choosing your system.",step6Tiers:[{tier:"Premium",range:"$12,000+",scope:"High-efficiency boiler systems or multi-stage gas furnaces."},{tier:"Standard",range:"$6,000 – $9,000",scope:"Standard 80-90% AFUE gas furnace replacement."},{tier:"Entry",range:"$4,000 – $5,500",scope:"Basic electric furnace or major heat exchanger repairs."}]},"Home Inspection":{priceRange:"$350 – $900",equipment:"Thermal cameras, moisture meters, and drones.",pricingInsights:"NJ inspections almost always require a separate Radon test ($150).",costDrivers:'Size of the home and specialized "Sewer Scopes."',redFlags:"Inspectors who don't crawl into the attic or crawlspace.",njTip:"Always include a radon test and sewer scope in your inspection—they're standard in NJ.",step6Tiers:[{tier:"Premium",range:"$1,200+",scope:"Full inspection plus specialized testing (Radon, Mold, Sewer, Termite)."},{tier:"Standard",range:"$650 – $850",scope:"Standard pre-purchase inspection for a single-family home."},{tier:"Entry",range:"$450 – $600",scope:"Inspection for smaller condos or townhomes."}]},"Home Remodeling":{priceRange:"$50,000 – $400,000+",equipment:"Structural beams, flooring, and dry-walling.",pricingInsights:'NJ permitting for "whole-home" projects can take 2–4 months.',costDrivers:"Removing load-bearing walls and architect fees.",redFlags:'No "Schedule of Values" in the contract.',njTip:`Always insist on a detailed "Schedule of Values" so you know exactly what you're paying for.`,step6Tiers:[{tier:"Premium",range:"$150,000+",scope:"Whole-house gut renovation including structural changes."},{tier:"Standard",range:"$60,000 – $100,000",scope:"Multi-room renovation with mid-range materials."},{tier:"Entry",range:"$15,000+",scope:'Cosmetic "refresh" of a single large room.'}]},"Junk Removal":{priceRange:"$100 – $950",equipment:"Dump trucks and lifting equipment.",pricingInsights:'NJ landfill "tipping fees" are weight-based and among the highest in the US.',costDrivers:'Volume (truckloads) and the presence of "hazardous" items.',redFlags:'"Fly-by-night" haulers who illegally dump; you are legally responsible if your junk is found.',njTip:"Always use licensed haulers—you're legally responsible if your junk is illegally dumped.",step6Tiers:[{tier:"Premium",range:"$1,200+",scope:"Multi-load estate cleanouts or heavy construction debris removal."},{tier:"Standard",range:"$500 – $800",scope:"Full 14-foot truckload of mixed household items."},{tier:"Entry",range:"$150 – $300",scope:"Single large item or a quarter-truck load."}]},"Kitchen Remodeling":{priceRange:"$30,000 – $90,000",equipment:"Cabinets, Quartz/Granite counters, and appliances.",pricingInsights:'NJ "permitting" for gas and plumbing is intensive for kitchen remodels.',costDrivers:"Custom vs. semi-custom cabinetry and moving the kitchen island.",redFlags:"Countertops installed on un-leveled cabinets, causing future stone cracking.",njTip:"Cabinets must be perfectly level before countertops are installed—no shortcuts.",step6Tiers:[{tier:"Premium",range:"$75,000+",scope:"Custom cabinetry, pro-grade appliances, and quartz/exotic stone tops."},{tier:"Standard",range:"$35,000 – $55,000",scope:"Full replacement with semi-custom cabinets and new layout."},{tier:"Entry",range:"$15,000 – $25,000",scope:"Cabinet refacing, new countertops, and backsplash installation."}]},Landscaping:{priceRange:"$1,500 – $25,000",equipment:"Excavators, sod, and nursery-grade plants.",pricingInsights:`NJ's heavy clay soil often requires "French Drains" for proper yard health.`,costDrivers:"Hardscaping (patios/walls) and mature tree plantings.",redFlags:"Planting invasive species (like certain bamboos) which are restricted in some NJ towns.",njTip:"Never plant invasive species like certain bamboos—they're restricted in many NJ towns.",step6Tiers:[{tier:"Premium",range:"$20,000+",scope:"Full landscape design, hardscaping, and high-end privacy plantings."},{tier:"Standard",range:"$3,000 – $7,000",scope:"New garden bed installations, sodding, and shrub planting."},{tier:"Entry",range:"$500 – $1,500",scope:"Seasonal mulching, basic garden cleanup, and hedge trimming."}]},"Lawn Care":{priceRange:"$50 – $1,800 (Annual)",equipment:"Commercial mowers, aerators, and fertilizers.",pricingInsights:'NJ "Spring Cleanups" are a standard regi
918onal service to remove winter debris.',costDrivers:'Total acreage and "Grub Control" treatments.',redFlags:"Mowing too short during a NJ July heatwave, which kills the root system.",njTip:"Never mow too short in summer heat—it stresses the grass and kills the roots.",step6Tiers:[{tier:"Premium",range:"$150 – $250+",scope:"Per-visit mowing for large estate properties (1+ acre)."},{tier:"Standard",range:"$50 – $110",scope:"Per-visit mowing for standard suburban lots."},{tier:"Entry",range:"$35 – $45",scope:"Per-visit mowing for small townhome or urban lots."}]},"Moving Service":{priceRange:"$600 – $8,000",equipment:"Moving trucks, lift-gates, and protective wrap.",pricingInsights:'NJ "Intrastate" moves are regulated; movers must have a NJ Warehouseman/Mover license.',costDrivers:"Number of bedrooms and the distance/tolls.",redFlags:'Quotes given over the phone without a "visual" walk-through.',njTip:"Always get an in-person or video walkthrough before accepting a moving quote.",step6Tiers:[{tier:"Premium",range:"$6,000+",scope:"Full-service packing and moving for a large 4+ bedroom home."},{tier:"Standard",range:"$2,500 – $4,500",scope:"Standard move for a 2–3 bedroom home."},{tier:"Entry",range:"$800 – $1,500",scope:"Small apartment or studio move."}]},"New Window & Door":{priceRange:"$700 – $1,500 (Per Unit)",equipment:"Vinyl, Wood, or Fiberglass frames and Argon-gas panes.",pricingInsights:`NJ's climate requires "North-Central" Energy Star ratings to actually lower utility bills.`,costDrivers:'Full-frame replacement vs. "Insert" replacement.',redFlags:"Gaps between the frame and the house that are only filled with caulk instead of expanding foam.",njTip:"Expanding foam is essential for proper insulation—caulk alone is not enough.",step6Tiers:[{tier:"Premium",range:"$25,000+",scope:"Whole-house window replacement with high-efficiency units."},{tier:"Standard",range:"$1,200 – $1,800",scope:"Per-unit cost for pro-grade vinyl or fiberglass replacement windows."},{tier:"Entry",range:"$600 – $900",scope:'Basic "pocket" window inserts or standard interior door replacements.'}]},Painting:{priceRange:"$1,000 – $9,000",equipment:"Low-VOC paints (Benjamin Moore/Sherwin Williams) and industrial sprayers.",pricingInsights:'NJ labor focuses on "Prep Time"; sanding and patching usually take 60% of the total time.',costDrivers:'Ceiling height and the amount of intricate "crown molding" or trim.',redFlags:"Painters who don't move furniture or cover floors with drop cloths.",njTip:"Quality prep work takes 60% of the time—never rush this phase.",step6Tiers:[{tier:"Premium",range:"$15,000+",scope:"Full exterior painting or high-end interior decorative finishes."},{tier:"Standard",range:"$4,000 – $7,000",scope:"Interior painting for 3–4 rooms including ceiling and trim."},{tier:"Entry",range:"$500 – $900",scope:"Single room painting or minor exterior touch-up work."}]},"Pest Control":{priceRange:"$150 – $950",equipment:"Specialized baits, foggers, and perimeter barriers.",pricingInsights:'NJ is a "Termite Belt"; annual inspections are highly recommended for wood-frame homes.',costDrivers:'Active infestation treatment vs. preventative "Quarterly" plans.',redFlags:"Technicians who don't identify the entry point of the pests.",njTip:"NJ is termite country—annual inspections are a must for wood-frame homes.",step6Tiers:[{tier:"Premium",range:"$3,000+",scope:"Intensive termite remediation or active bed bug heat treatments."},{tier:"Standard",range:"$600 – $900",scope:"Annual preventative maintenance plan (quarterly visits)."},{tier:"Entry",range:"$150 – $300",scope:"One-time targeted treatment for a specific issue."}]},Plumbing:{priceRange:"$200 – $2,000",equipment:"PEX tubing, copper fittings, and high-efficiency fixtures.",pricingInsights:"NJ requires licensed Master Plumbers for most residential work.",costDrivers:"Accessing pipes in finished walls vs. open construction.",redFlags:"Plumbers who skip required permits for new pipe installations.",njTip:"Always verify your plumber holds a NJ Master Plumber license before hiring.",step6Tiers:[{tier:"Premium",range:"$5,000+",scope:"Full repipe of the home or major drain line replacement."},{tier:"Standard",range:"$800 – $2,000",scope:"Fixture replacements, minor leaks, and drain line repairs."},{tier:"Entry",range:"$200 – $600",scope:"Basic faucet/toilet repair or minor leak diagnostics."}]},"Pool Service":{priceRange:"$500 – $3,000",equipment:"Pool pumps, filters, and chemical treatment systems.",pricingInsights:"NJ pool openings and closings are seasonal services with high demand in spring/fall.",costDrivers:"Pool size, condition, and chemical balancing needs.",redFlags:"Service technicians who don't test water chemistry on every visit.",njTip:"Proper water chemistry prevents costly equipment damage—always test first.",step6Tiers:[{tier:"Premium",range:"$3,000+",scope:"Full season maintenance contract with weekly visits and equipment monitoring."},{tier:"Standard",range:"$1,000 – $2,000",scope:"Opening/closing plus mid-season chemical balancing."},{tier:"Entry",range:"$500 – $800",scope:"Single opening or closing service."}]},Roofing:{priceRange:"$12,000 – $30,000",highDemand:!0,equipment:"Architectural shingles, Drip edge, and synthetic underlayment.",pricingInsights:"NJ building code restricts homeowners to a maximum of 2 layers of shingles.",costDrivers:"Roof pitch (steepness) and chimney flashing complexity.",redFlags:'Skipping the "Ice and Water" shield at the eaves (mandatory in NJ).',njTip:"NJ code requires the Ice & Water shield—never skip it, and keep records for resale.",step6Tiers:[{tier:"Premium",range:"$25,000+",scope:"High-end materials like slate, clay tile, or premium metal systems."},{tier:"Standard",range:"$10,000 – $18,000",scope:"Full tear-off and replacement with architectural shingles."},{tier:"Entry",range:"$6,000 – $9,000",scope:"Basic 3-tab shingle replacement or significant repairs."}]},"Sewer Camera Inspection":{priceRange:"$200 – $500",equipment:"Fiber-
918optic cameras with locator beacons.",pricingInsights:"Often required in NJ before home sales to verify the integrity of the line to the street.",costDrivers:'Length of the run and accessibility of the "Cleanout."',redFlags:"Inspectors who don't give you a USB/Digital copy of the video.",njTip:"Always get a digital copy of your sewer camera inspection for your records and resale.",step6Tiers:[{tier:"Premium",range:"$600+",scope:"Full scope with digital recording and underground utility locating."},{tier:"Standard",range:"$350 – $500",scope:"Standard diagnostic scope of the main sewer line to the street."},{tier:"Entry",range:"$150 – $300",scope:"Simple visual scope for a localized drain blockage."}]},"Sewer Descaling":{priceRange:"$350 – $800",equipment:"High-speed rotating chains and flexible shafts.",pricingInsights:"Essential for NJ's old cast iron pipes to restore flow without replacing the whole line.",costDrivers:'The amount of "tuberculation" (rust buildup) inside the pipe.',redFlags:'Descaling a pipe that is already "paper thin," which can cause it to collapse.',njTip:"Camera inspect your sewer line first—never descale a pipe without knowing its condition.",step6Tiers:[{tier:"Premium",range:"$2,500+",scope:"Extensive descaling of old cast iron pipes throughout the entire line."},{tier:"Standard",range:"$1,200 – $1,800",scope:"Standard descaling to restore flow and prepare for relining."},{tier:"Entry",range:"$800 – $1,100",scope:"Targeted descaling of a specific problematic section."}]},"Sewer Hydro Jetting":{priceRange:"$350 – $800",equipment:"4,000 PSI water jetters with specialized nozzles.",pricingInsights:"The only effective way to clear NJ tree roots and grease blockages permanently.",costDrivers:'Diameter of the pipe and the number of "turns" in the line.',redFlags:"Using high pressure on very old, cracked clay pipes without a prior camera inspection.",njTip:"Always camera-inspect before hydro jetting—it's the only way to know if your pipes can handle it.",step6Tiers:[{tier:"Premium",range:"$1,500+",scope:"High-pressure commercial-grade jetting for complex blockages."},{tier:"Standard",range:"$750 – $1,100",scope:"Standard main line hydro jetting for roots, grease, and debris."},{tier:"Entry",range:"$450 – $650",scope:"Targeted jetting for a secondary line or minor maintenance."}]},"Sewer Relining":{priceRange:"$6,000 – $15,000",equipment:"Epoxy resin liners (trenchless technology).",pricingInsights:'Saves NJ homeowners thousands in "re-paving" costs for driveways.',costDrivers:'Pipe diameter and the number of "lateral" connections.',redFlags:'Not measuring the "cure time" properly, leading to a wavy or failed liner.',njTip:"Trenchless relining saves NJ homeowners thousands on driveway re-paving—worth the investment.",step6Tiers:[{tier:"Premium",range:"$15,000+",scope:"Full trenchless pipe bursting or CIPP (Cured-In-Place Pipe)."},{tier:"Standard",range:"$7,000 – $10,000",scope:"Mid-range relining or partial line replacement."},{tier:"Entry",range:"$4,000 – $6,000",scope:"Sectional point repair for a specific break or root intrusion."}]},"Sewer Rooter Service":{priceRange:"$150 – $450",equipment:"Mechanical snakes with cutting blades.",pricingInsights:'A standard "emergency" service for NJ backups; usually a temporary fix.',costDrivers:"After-hours/Weekend emergency rates.",redFlags:`Companies that don't offer a 30-day "no-clog" guarantee.`,njTip:"Rooter service is temporary—follow up with hydro jetting or relining to prevent future clogs.",step6Tiers:[{tier:"Premium",range:"$900+",scope:"Emergency after-hours service or removal of severe structural roots."},{tier:"Standard",range:"$450 – $700",scope:"Mechanical snaking/rooter service to restore flow in main line."},{tier:"Entry",range:"$250 – $400",scope:"Basic snaking for secondary drain line."}]},Siding:{priceRange:"$12,000 – $45,000",equipment:"Vinyl, Hardie Plank, or Fiber Cement.",pricingInsights:'Coastal NJ siding requires high-wind "clipping" systems.',costDrivers:"Removal of old cedar shakes or asbestos siding.",redFlags:'No "House Wrap" (Tyvek) installed under the new siding.',njTip:"House wrap is essential in NJ to prevent water infiltration—never skip it.",step6Tiers:[{tier:"Premium",range:"$45,000+",scope:"Fiber cement (James Hardie) or engineered wood on a large home."},{tier:"Standard",range:"$18,000 – $30,000",scope:"Full vinyl siding replacement including trim, soffit, and fascia."},{tier:"Entry",range:"$6,000 – $12,000",scope:"Partial siding replacement or major storm damage repair."}]},"Tree Service":{priceRange:"$800 – $5,000",equipment:"Cranes, wood chippers, and stump grinders.",pricingInsights:'NJ "Tree Removal Permits" vary by town; some require an Arborist report.',costDrivers:"Proximity to power lines and the size (diameter) of the trunk.",redFlags:'"Topping" a tree (cutt
918ing the top off), which is considered malpractice by ISA arborists.',njTip:'Always hire certified ISA arborists—avoid "topping" which damages tree health.',step6Tiers:[{tier:"Premium",range:"$5,000+",scope:'Large tree (24"+ diameter) removal near power lines or structures.'},{tier:"Standard",range:"$1,500 – $3,500",scope:'Standard tree removal (12–24" diameter) including stump grinding.'},{tier:"Entry",range:"$400 – $900",scope:"Small tree removal, stump grinding only, or crown trimming."}]},"Basement Waterproofing":{priceRange:"$4,500 – $12,000",equipment:"Jackhammers, industrial-grade sump pumps, French drains, and vapor barriers.",pricingInsights:"NJ's high water table often makes battery backup systems non-negotiable for insurance purposes.",costDrivers:"Linear footage of the perimeter and the method of excavation.",redFlags:'Contractors who promise a "lifetime guarantee" without explaining the mechanical maintenance required.',njTip:"Always check if your municipality requires a plumbing permit for sump pump discharge.",step6Tiers:[{tier:"Premium",range:"$15,000 – $30,000+",scope:"Full exterior excavation, foundation membrane application."},{tier:"Standard",range:"$4,500 – $12,000",scope:"Full interior French drain system with sump pump and battery backup."},{tier:"Entry",range:"$800 – $2,500",scope:"Minor crack injections, localized water diversion, or basic sump pump replacement."}]},"Water Heater Installation":{priceRange:"$1,500 – $4,500",highDemand:!0,equipment:"Tank-style or Tankless (Gas/Electric) units.",pricingInsights:'NJ energy rebates are massive for "Hybrid Heat Pump" water heaters (up to $1,000).',costDrivers:"Converting from tank to tankless (requires gas line upgrades).",redFlags:'Skipping the "Expansion Tank," which is required by NJ plumbing code.',njTip:"Hybrid Heat Pump water heaters qualify for a federal tax credit AND NJ utility rebates that can total over $1,000.",step6Tiers:[{tier:"Premium",range:"$4,500+",scope:"Tankless on-demand gas or Hybrid Heat Pump water heater installation."},{tier:"Standard",range:"$1,800 – $3,200",scope:"Standard 50-gallon gas water heater replacement with expansion tank."},{tier:"Entry",range:"$900 – $1,500",scope:"Basic 40-gallon electric tank replacement."}]},"Water Softener":{priceRange:"$1,500 – $3,500",equipment:"Resin tanks, brine tanks, control valves, and bypass piping.",pricingInsights:'NJ "Hard Water" varies by county; northern counties often require higher grain capacity units.',costDrivers:"Grain capacity (tank size) and the complexity of the existing plumbing integration.",redFlags:'Contractors who perform a "water test" and use high-pressure sales tactics.',njTip:"If you are on a private well in NJ, ensure your softener is calibrated to your latest state-mandated water test results.",step6Tiers:[{tier:"Premium",range:"$4,000 – $6,500+",scope:"Whole-house multi-stage filtration combos with smart-monitoring."},{tier:"Standard",range:"$1,500 – $3,500",scope:"Standard ion-exchange salt-based softener integrated into existing plumbing loops."},{tier:"Entry",range:"$800 – $1,400",scope:"Basic single-tank units or point-of-use systems."}]},"Carpet Cleaning":{priceRange:"$150 – $600+",equipment:"Truck-mounted or portable HEPA-filtered hot water extraction systems.",pricingInsights:"NJ pricing is driven by square footage and the level of soiling.",costDrivers:"Room count, carpet condition, presence of pet odors, and specialized stain treatments.",redFlags:"Companies offering extremely low per-room rates without on-site inspections.",njTip:"Professional carpet cleaning extends the life of your carpet—recommended every 12-18 months.",step6Tiers:[{tier:"Premium",range:"$600+",scope:"Large homes or deep cleaning with premium stain treatments."},{tier:"Standard",range:"$300 – $450",scope:"Full carpet cleaning for a 3–4 bedroom home."},{tier:"Entry",range:"$150 – $250",scope:"Spot cleaning or small room cleaning."}]},"Water & Fire Restoration":{priceRange:"$2,500 – $25,000+",equipment:"Industrial dehumidifiers, air movers, moisture meters, HEPA vacuums.",pricingInsights:"NJ restoration is urgent work—faster response prevents mold growth.",costDrivers:"Scope of damage, affected materials, mold remediation needs.",redFlags:"Contractors who pressure you without thorough inspection or demand cash-only.",njTip:"NJ restoration contractors should be IICRC-certified. Verify certification directly with IICRC.",step6Tiers:[{tier:"Premium",range:"$15,000+",scope:"Large-scale damage, structural repairs, and comprehensive mold remediation."},{tier:"Standard",range:"$5,000 – $12,000",scope:"Water extraction, dehumidification, and cleanup for multi-room damage."},{tier:"Entry",range:"$2,500 – $5,000",scope:"Localized water damage or minor fire cleanup."}]},"Custom Closets":{priceRange:"$1,500 – $6,000",equipment:"Custom panels, shelving, and hardware systems.",pricingInsights:"NJ labor for custom installs typically adds 30–40% to material costs.",costDrivers:"Closet size, material grade, and number of accessories.",redFlags:"Installer
918s who don't account for plumb walls—closets require leveled mounting.",njTip:"Always use a professional installer for custom systems—DIY installs void most warranties.",step6Tiers:[{tier:"Premium",range:"$6,000+",scope:"Walk-in closet with custom wood cabinetry and built-in lighting."},{tier:"Standard",range:"$2,500 – $4,500",scope:"Reach-in closet with full organization system."},{tier:"Entry",range:"$800 – $1,500",scope:"Basic wire shelving upgrade or small closet refresh."}]},"Custom Garage":{priceRange:"$5,000 – $20,000",equipment:"Epoxy flooring systems, cabinetry, and overhead storage.",pricingInsights:"NJ garage conversions may require permits depending on the municipality.",costDrivers:"Flooring type, cabinetry grade, and electrical additions.",redFlags:"Contractors who skip permits for electrical work in the garage.",njTip:"Check with your local municipality before starting—many NJ towns require permits for garage upgrades.",step6Tiers:[{tier:"Premium",range:"$20,000+",scope:"Full garage conversion with custom cabinetry, epoxy floors, and EV charging."},{tier:"Standard",range:"$8,000 – $15,000",scope:"Overhead storage, wall cabinets, and epoxy floor coating."},{tier:"Entry",range:"$2,500 – $5,000",scope:"Basic shelving, floor mat, and lighting upgrade."}]}},tD=e=>[{label:"Timeline"},{label:`${e?e.replace(" Installation",""):"Service"} Details`},{label:"See Your Online Estimate & Homeowner's Guide"}],Xw=()=>{const e=Math.floor(Math.random()*9)+1,t=Math.floor(Math.random()*9)+1;return{a:e,b:t,answer:e+t}};function nD(){const e=new URLSearchParams(window.location.search),t=e.get("service")||"",n=e.get("zip")||"",i=zl.find(fe=>fe.slug.toLowerCase()===t.toLowerCase())||null,l=(i==null?void 0:i.serviceName)||t||"",d=eD[l]||null,[h,m]=S.useState(!n),[g,y]=S.useState(""),[x,w]=S.useState(!1),[j,P]=S.useState(""),[C,k]=S.useState(1),[A,E]=S.useState(""),[$,I]=S.useState(""),[M,F]=S.useState([]),[z,V]=S.useState([]),[W,ne]=S.useState(""),[de,be]=S.useState(""),[Re,Je]=S.useState(""),[Ie,mt]=S.useState(""),[Se,je]=S.useState(""),[X,ue]=S.useState(""),[q,O]=S.useState(n),[te,ye]=S.useState(""),[ge,pe]=S.useState(()=>Xw()),[re,$e]=S.useState(""),[He,De]=S.useState(!1),[Et,It]=S.useState(!1),[kt,dn]=S.useState(!1),[un,Bt]=S.useState(""),[Be,At]=S.useState(""),[zt,xn]=S.useState(!1),[Rt,Vn]=S.useState(!1),[En,Ks]=S.useState(!1),[Bo,fr]=S.useState(0),[nr,Mr]=S.useState(!1),[on,js]=S.useState("your area"),qn=S.useRef(null),Jn=S.useRef(null);S.useEffect(()=>{if(h){const fe=setTimeout(()=>{var Oe;return(Oe=Jn.current)==null?void 0:Oe.focus()},350);return()=>clearTimeout(fe)}},[h]),S.useEffect(()=>{if(zt&&C===5){const fe=setTimeout(ss,400);return()=>clearTimeout(fe)}},[zt,C]);const Ys=S.useRef(""),gr=S.useRef(null);S.useEffect(()=>{if(!nr){fr(27);return}const fe=(d==null?void 0:d.highDemand)||!1,Oe=Kd(l,fe),at=Math.max(Math.round(Oe*(1.2+Math.random()*.15)),30);let bt=27;const Jt=(at-bt)/60,Gn=setInterval(()=>{bt+=Jt,bt>=at?(fr(at),clearInterval(Gn)):fr(Math.floor(bt))},80);return()=>clearInterval(Gn)},[l,nr]),S.useEffect(()=>{n&&Me.functions.invoke("getUserState",{zip:n}).then(fe=>{var Oe,at;(Oe=fe.data)!=null&&Oe.city&&fe.data.city!=="your area"&&(js(fe.data.city),je(fe.data.city)),(at=fe.data)!=null&&at.state&&ue(fe.data.state),O(n)}).catch(()=>{})},[]);const ns=async fe=>{var at,bt;const Oe=g;if(Oe.length!==5){P("Please enter a valid 5-digit ZIP code.");return}w(!0),P("");try{const Jt=await Me.functions.invoke("getUserState",{zip:Oe}),Gn=(at=Jt.data)!=null&&at.city&&Jt.data.city!=="your area"?Jt.data.city:"",is=((bt=Jt.data)==null?void 0:bt.state)||"";if(!Gn&&!is){P("ZIP code not found. Please try again."),w(!1);return}Gn&&js(Gn),je(Gn),ue(is),O(Oe),m(!1),Mr(!0)}catch{P("Could not look up ZIP. Please try again.")}finally{w(!1)}},Ir=fe=>{const at=Array.from(fe.target.files).map(bt=>({file:bt,url:URL.createObjectURL(bt)}));F(bt=>[...bt,...at].slice(0,10))},ks=fe=>{const at=Array.from(fe.target.files).map(bt=>({file:bt,url:URL.createObjectURL(bt),name:bt.name}));V(bt=>[...bt,...at].slice(0,3))},rr=async()=>{dn(!0),Bt("");try{const fe=await Me.functions.invoke("sendVerificationSMS",{phoneNumber:te});Ys.current=fe.data.code,gr.current=fe.data.sentAt,It(!0)}catch{Bt("Failed to send code. Please try again.")}finally{dn(!1)}},rs=fe=>{const at=gr.current,bt=Ys.current;if(!bt){Bt("Code not received yet. Please resend.");return}if(at&&Date.now()-at>6e5){Bt("Code expired. Please request a new one.");return}if(fe!==bt){Bt("Incorrect code. Please try again."),At("");return}Bt(""),xn(!0)},ss=async()=>
918{if(C===4){if(parseInt(re)!==ge.answer){De(!0);return}rr(),k(5);return}if(C<5){k(C+1);return}if(C===5){let fe=[];M.length>0&&(fe=await Promise.all(M.map(async at=>{const{file_url:bt}=await Me.integrations.Core.UploadFile({file:at.file});return bt})));let Oe="";try{const at=await Me.entities.ContractorAssignment.filter({serviceSlug:(i==null?void 0:i.slug)||"",isActive:!0});at&&at.length>0&&(Oe=at[0].contractorEmail)}catch{}Me.entities.Lead.create({firstName:W,lastName:de,email:Re,phone:te,street:Ie,city:Se,state:X,zip:q,service:l,serviceSlug:(i==null?void 0:i.slug)||"",timeline:A,projectDescription:$,contractorId:`contractor_${(i==null?void 0:i.slug)||""}`,assignedContractorEmail:Oe||void 0,photoUrls:fe.length>0?fe:void 0,callCount:0,leadQuality:"new",status:"new"}),Ks(!0),Vn(!0),setTimeout(()=>Ks(!1),800)}},$r=()=>{if(Rt)return[0,1,2];const fe=[];return C>2&&fe.push(0),C>3&&fe.push(1),fe},vn=tD(l),An=$r(),Ri=()=>C===1?!A:C===2?!$.trim():C===3?!W.trim()||!de.trim()||!Re.trim()||!Ie.trim()||!Se.trim()||!X.trim()||!q.trim():C===4?!te.trim()||parseInt(re)!==ge.answer:C===5?!zt:!1;return r.jsxs("div",{className:"min-h-screen bg-gray-50 flex items-start justify-center py-10 px-4",children:[h&&r.jsx("div",{className:"fixed inset-0 z-50 bg-black/50 flex justify-center px-4",style:{alignItems:"flex-end",paddingBottom:"40px"},children:r.jsxs(Ot.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},transition:{duration:.2},className:"bg-white rounded-2xl shadow-2xl p-8 w-full max-w-xs flex flex-col gap-4",children:[r.jsxs("h2",{className:"text-lg font-bold text-gray-900 leading-snug",children:["Get instant estimate for your ",l," — just enter your zip code first."]}),r.jsx("input",{ref:Jn,type:"text",inputMode:"numeric",maxLength:5,placeholder:"e.g. 07054",value:g,onChange:fe=>{const Oe=fe.target.value.replace(/\D/g,"").slice(0,5);y(Oe),P("")},onKeyDown:fe=>{fe.key==="Enter"&&g.length===5&&ns()},className:"border border-gray-300 rounded-lg px-4 py-3 text-lg font-semibold tracking-widest focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)] text-center transition-colors"}),j&&r.jsx("p",{className:"text-red-500 text-sm text-center",children:j}),x?r.jsx("div",{className:"flex justify-center py-1",children:r.jsx("span",{className:"w-6 h-6 border-2 border-[hsl(197,100%,50%)] border-t-transparent rounded-full animate-spin"})}):r.jsx("button",{onClick:()=>ns(),disabled:g.length!==5,className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] disabled:opacity-50 text-white font-bold py-3 text-base rounded-xl transition-colors",children:"Continue"})]})}),En&&r.jsxs("div",{className:"fixed inset-0 z-50 bg-white/80 backdrop-blur-sm flex flex-col items-center justify-center gap-3",children:[r.jsx("div",{className:"w-10 h-10 border-4 border-[hsl(197,100%,70%)] border-t-[hsl(197,100%,50%)] rounded-full animate-spin"}),r.jsx("p",{className:"text-sm font-medium text-[hsl(197,100%,40%)]",children:"Preparing your estimate…"})]}),r.jsxs("div",{className:"w-full max-w-2xl",children:[r.jsx("div",{className:"bg-white rounded-2xl shadow-xl overflow-hidden",children:r.jsxs(Ot.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.3},children:[r.jsxs("div",{className:"px-4 sm:px-6 pt-8 pb-4",children:[r.jsx("div",{className:"flex justify-center mb-6",children:r.jsx("img",{src:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/f30af8dd2_Screenshot2026-05-04122351.png",alt:"SnapEstimate.AI",className:"h-16 object-contain"})}),r.jsxs("div",{className:"mb-8 px-2",children:[r.jsx("div",{className:"flex items-center justify-between",children:vn.map((fe,Oe)=>{const at=An.includes(Oe);return r.jsxs(nn.Fragment,{children:[r.jsx("div",{className:`w-10 h-10 rounded-full flex items-center justify-center border-2 transition-colors flex-shrink-0 ${at?"bg-[hsl(197,100%,50%)] border-[hsl(197,100%,50%)]":"bg-gray-200 border-gray-300"}`,children:at?r.jsx(Ci,{className:"w-5 h-5 text-white"}):r.jsx("span",{className:"text-sm font-semibold text-gray-400",children:Oe+1})}),Oe<vn.length-1&&r.jsx("div",{className:`flex-1 h-0.5 mx-2 transition-colors ${An.includes(Oe)&&An.includes(Oe+1)?"bg-[hsl(197,100%,50%)]":"bg-gray-200"}`})]},fe.label)})}),r.jsx("div",{className:"flex items-start justify-between mt-2",children:vn.map((fe,Oe)=>r.jsx("div",{className:"flex flex-col items-center",style:{width:"40px"},children:r.jsx("span",{className:`text-xs text-center leading-tight ${An.includes(Oe)?"text-[hsl(197,100%,40%)] font-semibold":"text-gray-400"}`,style:{width:"64px",marginLeft:"-12px"},children:fe.label})},fe.label))})]}),C===1&&r.jsxs(r.Fragment,{children:[r.jsxs("h2",{className:"text-xl sm:text-2xl font-bold text-center text-foreground mb-4",children:["Get your ",l||"service"," Quote In 60 seconds"]}),r.jsxs("div",{className:"border border-gray-200 rounded-xl overflow-hidden",children:[r.jsx("div",{className:"border-b border-gray-200 px-5 py-3 bg-gray-50",children:r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("img",{src:"https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/54228184e_Make_the_circle_and_the_202604281507.jpg",alt:"Expert",className:"w-12 h-12 rounded-full object-cover flex-shrink-0"}),r.jsxs("button",{onClick:()=>window.location.href="tel:+18339907627",className:"flex-1 bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white px-4 py-2 rounded-lg flex items-center justify-center gap-2 text-sm font-semibold",children:[r.jsx(Er,{className:"w-4 h-4"}),"LIVE DISPATCH: Speak to a ",l||"service"," Specialist instantly",r.jsxs("span",{className:"flex items-center gap-1.5 ml-auto",children:[r.jsxs("span",{className:"relative flex items-center justify-center",children:[r.jsx("span",{className:"absolute inline-flex h-5 w-5 rounded-full bg-yellow-300 opacity-80 animate-ping"}),r.jsx("span",{className:"relative inline-flex h-3.5 w-3.5 rounded-full bg-yellow-400 border-2 border-white shadow-[0_0_8px_3px_rgba(250,204,21,0.9)]"})]}),r.jsx("span",{className:"text-white font-semibold text-sm",children:"Online Now"})]})]})]})}),r.jsxs("label",{className:"flex items-center gap-4 px-5 py-4 cursor-pointer hover:bg-gray-50 transition-colors border-b border-gray-200",children:[r.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex-shrink-0 flex items-center justify-center transition-colors ${A==="emergency"?"border-[hsl(197,100%,50%)]":"border-gray-300"}`,children:A==="emergency"&&r.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-[hsl(197,100%,50%)]"})}),r.jsxs("div",{className:"flex-1",children:[r.jsxs("p",{className:"font-semibold text-foreground text-sm",children:["Emergency — need a ",l||"pro"," right away"]}),r.jsx("p",{className:"text-[hsl(197,100%,40%)] text-xs",children:"Within 1 to 4 hours"})]}),r.jsx("input",{type:"radio",name:"timeline",value:"emergency",checked:A==="emergency",onChange:()=>E("emergency"),className:"hidden"})]}),r.jsxs("label",{className:"flex items-center gap-4 px-5 py-4 cursor-pointer hover:bg-gray-50 transition-colors border-b border-gray-200",children:[r.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex-shrink-0 flex items-center justify-center transition-colors ${A==="urgent"?"border-[hsl(197,100%,50%)]":"border-gray-300"}`,children:A==="urgent"&&r.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-[hsl(197,100%,50%)]"})}),r.jsxs("div",{className:"flex-1",children:[r.jsxs("p",{className:"font-semibold text-foreground text-sm",children:["Urgent — need a ",l||"pro"," today"]}),r.jsx("p",{className:"text-[hsl(197,100%,40%)] text-xs",children:"Within 48 hours"})]}),r.jsx("input",{type:"radio",name:"timeline",value:"urgent",checked:A==="urgent",onChange:()=>E("urgent"),className:"hidden"})]}),r.jsxs("label",{className:"flex items-center gap-4 px-5 py-4 cursor-pointer hover:bg-gray-50 transition-colors",children:[r.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex-shrink-0 flex items-center justify-center transition-colors ${A==="ready2"?"border-[hsl(197,100%,50%)]":"border-gray-300"}`,children:A==="ready2"&&r.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-[hsl(197,100%,50%)]"})}),r.jsxs("div",{className:"flex-1",children:[r.jsx("p",{className:"font-semibold text-foreground text-sm",children:"Ready to buy, but not in a hurry"}),r.jsx("p",{className:"text-[hsl(197,100%,40%)] text-xs",children:"Within 7 days"})]}),r.jsx("input",{type:"radio",name:"timeline",value:"ready2",checked:A==="ready2",onCh
918ange:()=>E("ready2"),className:"hidden"})]})]})]}),C===2&&r.jsxs(r.Fragment,{children:[r.jsxs("h2",{className:"text-xl sm:text-2xl font-bold text-center text-foreground mb-4",children:["Get your ",l||"service"," Quote In 60 seconds"]}),Qw[l]&&(()=>{try{const fe=new URL(Qw[l]),Oe=fe.searchParams.get("cloud_name"),at=fe.searchParams.get("public_id"),bt=`https://res.cloudinary.com/${Oe}/video/upload/f_auto:video/v1/${encodeURI(at)}`;return r.jsx("div",{className:"w-full rounded-xl overflow-hidden mb-5 bg-black",style:{aspectRatio:"16/9"},children:r.jsx("video",{src:bt,controls:!0,playsInline:!0,className:"w-full h-full"})})}catch{return null}})(),r.jsxs("h2",{className:"text-2xl font-bold text-center text-foreground mb-6",children:["Explain your ",r.jsx("strong",{children:l})," needs:"]}),r.jsx("textarea",{placeholder:`In your own words — tell us about your ${l||"service"} needs.`,value:$,onChange:fe=>I(fe.target.value),rows:5,className:"w-full border border-gray-300 rounded-lg px-4 py-3 text-base text-foreground resize-none focus:outline-none focus:border-[hsl(197,100%,50%)] transition-colors mb-5"}),r.jsxs("div",{className:"grid grid-cols-3 gap-3 mb-4 w-full",children:[r.jsxs("label",{className:`border-2 border-dashed border-gray-300 hover:border-[hsl(197,100%,50%)] rounded-xl p-4 flex flex-col items-center justify-center cursor-pointer transition-colors min-w-0 ${M.length>=10?"opacity-40 pointer-events-none":""}`,children:[r.jsx("input",{type:"file",accept:"image/*",capture:"environment",className:"hidden",onChange:Ir,disabled:M.length>=10}),r.jsx(pm,{className:"w-6 h-6 text-gray-400 mb-1 flex-shrink-0"}),r.jsx("p",{className:"text-xs text-gray-500 font-medium text-center",children:"Take Photo"}),r.jsx("p",{className:"text-xs text-[hsl(197,100%,50%)] text-center",children:"(optional)"})]}),r.jsxs("label",{className:`border-2 border-dashed border-gray-300 hover:border-[hsl(197,100%,50%)] rounded-xl p-4 flex flex-col items-center justify-center cursor-pointer transition-colors min-w-0 ${M.length>=10?"opacity-40 pointer-events-none":""}`,children:[r.jsx("input",{ref:qn,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:Ir,disabled:M.length>=10}),r.jsx(ik,{className:"w-6 h-6 text-gray-400 mb-1 flex-shrink-0"}),r.jsx("p",{className:"text-xs text-gray-500 font-medium text-center",children:"Upload Photos"}),r.jsx("p",{className:"text-xs text-[hsl(197,100%,50%)] text-center",children:"(optional)"})]}),r.jsxs("label",{className:`border-2 border-dashed border-gray-300 hover:border-[hsl(197,100%,50%)] rounded-xl p-4 flex flex-col items-center justify-center cursor-pointer transition-colors min-w-0 ${z.length>=3?"opacity-40 pointer-events-none":""}`,children:[r.jsx("input",{type:"file",accept:"video/*",multiple:!0,className:"hidden",onChange:ks,disabled:z.length>=3}),r.jsx(nv,{className:"w-6 h-6 text-gray-400 mb-1 flex-shrink-0"}),r.jsx("p",{className:"text-xs text-gray-500 font-medium text-center",children:"Upload Video"}),r.jsx("p",{className:"text-xs text-[hsl(197,100%,50%)] text-center",children:"(optional)"})]})]}),M.length>0&&r.jsx("div",{className:"flex flex-wrap gap-3 mb-3",children:M.map((fe,Oe)=>r.jsxs("div",{className:"relative w-20 h-20 rounded-lg overflow-hidden border border-gray-200",children:[r.jsx("img",{src:fe.url,alt:"",className:"w-full h-full object-cover"}),r.jsx("button",{onClick:()=>F(at=>at.filter((bt,Jt)=>Jt!==Oe)),className:"absolute top-0.5 right-0.5 w-5 h-5 bg-red-500 text-white rounded-full flex items-center justify-center text-xs font-bold leading-none",children:"×"})]},Oe))}),z.length>0&&r.jsx("div",{className:"flex flex-wrap gap-3",children:z.map((fe,Oe)=>r.jsxs("div",{className:"relative flex items-center gap-2 bg-gray-100 rounded-lg px-3 py-2 border border-gray-200",children:[r.jsx(nv,{className:"w-4 h-4 text-gray-500 flex-shrink-0"}),r.jsx("span",{className:"text-xs text-gray-600 truncate max-w-[120px]",children:fe.name}),r.jsx("button",{onClick:()=>V(at=>at.filter((bt,Jt)=>Jt!==Oe)),className:"w-5 h-5 bg-red-500 text-white rounded-full flex items-center justify-center text-xs font-bold leading-none flex-shrink-0",children:"×"})]},Oe))})]}),C===3&&r.jsxs(r.Fragment,{children:[r.jsxs("h2",{className:"text-2xl font-bold text-center text-foreground mb-6",children:["Get your instant ",l?l.toLowerCase():"service"," quote"]}),r.jsxs("div",{className:"grid grid-cols-2 gap-4 mb-4",children:[r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"First Name"}),r.jsx(ht,{type:"text",placeholder:"John",value:W,onChange:fe=>ne(fe.target.value),className:"h-12 text-base"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Last Name"}),r.jsx(ht,{type:"text",placeholder:"Doe",value:de,onChange:fe=>be(fe.target.value),className:"h-12 text-base"})]})]}),r.jsxs("div",{className:"mb-4",children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Email Address"}),r.jsx(ht,{type:"email",placeholder:"[email protected]",value:Re,onChange:fe=>Je(fe.target.value),className:"h-12 text-base"})]}),r.jsxs("div",{className:"mb-4",children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Street Address"}),r.jsx(ht,{type:"text",placeholder:"123 Main St",value:Ie,onChange:fe=>mt(fe.target.value),className:"h-12 text-base"})]}),r.jsxs("div",{className:"grid grid-cols-3 gap-3 mb-4",children:[r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"City"}),r.jsx(ht,{type:"text",placeholder:"New York",value:Se,onChange:fe=>je(fe.target.value),className:"h-12 text-base"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"State"}),r.jsx(ht,{type:"text",placeholder:"NJ",value:X,onChange:fe=>ue(fe.target.value),className:"h-12 text-base"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Zip Code"}),r.jsx(ht,{type:"text",placeholder:"07054",value:q,onChange:fe=>O(fe.target.value),className:"h-12 text-base"})]})]})]}),C===4&&r.jsxs(r.Fragment,{children:[r.jsx("h2",{className:"text-2xl font-bold text-center text-foreground mb-2",children:"One last step!"}),r.jsx("p",{className:"text-2xl font-bold text-center text-[hsl(197,100%,50%)] mb-6",children:"Enter your phone number"}),r.jsxs("div",{className:"mb-5",children:[r.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"Phone Number"}),r.jsx(ht,{type:"tel",placeholder:"(555) 123-4567",value:te,onChange:fe=>ye(fe.target.value),className:"h-12 text-base"})]}),r.jsxs("div",{className:"mb-5",children:[r.jsxs("label",{className:"block text-sm font-medium text-foreground mb-2",children:["Anti-Spam Check: What is ",ge.a," + ",ge.b,"?"]}),r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx(ht,{type:"number",placeholder:"Your answer",value:re,onChange:fe=>{$e(fe.target.value),De(parseInt(fe.target.value)!==ge.answer&&fe.target.value!=="")},className:`h-12 text-base w-40 border-2 transition-colors ${He?"border-red-500 bg-red-50":"border-gray-300"}`}),He&&r.jsx("span",{className:"text-red-500 text-sm font-medium",children:"Wrong answer, try again"}),r.jsx("button",{type:"button",onClick:()=>{pe(Xw()),$e(""),De(!1)},className:"text-xs text-[hsl(197,100%,40%)] underline",children:"New question"})]})]})]}),C===5&&!Rt&&r.jsx(r.Fragment,{children:kt?r.jsxs("div",{className:"flex flex-col items-center gap-3 py-8",children:[r.jsx("div",{className:"w-8 h-8 border-4 border-[hsl(197,100%,70%)] border-t-[hsl(197,100%,50%)] rounded-full animate-spin"}),r.jsxs("p",{className:"text-gray-500 text-sm",children:["Sending code to ",te,"…"]})]}):r.jsxs(r.Fragment,{children:[r.jsx("h2",{className:"text-2xl font-bold text-center text-foreground mb-2",children:"Enter the code we sent to your phone"}),r.jsx("p",{className:"text-center text-gray-500 mb-6",children:"To see your Homeowner's Guide & Online Estimate"}),un&&r.jsx("p",{className:"text-red-500 text-center mb-4",children:un}),r.jsx("div",{className:"flex justify-center mb-6",children:r.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",maxLength:4,value:
918Be,placeholder:"0000",autoComplete:"one-time-code",onChange:fe=>{const Oe=fe.target.value.replace(/\D/g,"").slice(0,4);At(Oe),Bt(""),Oe.length===4&&rs(Oe)},className:`w-48 h-16 text-center text-3xl font-bold tracking-[0.5em] border-2 rounded-xl focus:outline-none transition-colors ${zt?"border-green-400 bg-green-50 text-green-600":"border-gray-300 focus:border-[hsl(197,100%,50%)]"}`})}),r.jsxs("p",{className:"text-center text-xs text-gray-400",children:["Didn't get a code?"," ",r.jsx("button",{onClick:rr,className:"text-[hsl(197,100%,40%)] underline",children:"Resend"})]})]})}),Rt&&d&&r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"flex justify-center mb-4",children:r.jsx("div",{className:"w-16 h-16 rounded-full bg-green-100 flex items-center justify-center",children:r.jsx(Ci,{className:"w-9 h-9 text-green-500"})})}),r.jsx("h2",{className:"text-2xl font-bold text-center text-foreground mb-2",children:"Your estimate is ready!"}),r.jsxs("p",{className:"text-center text-gray-500 text-sm mb-6",children:[l," — Preliminary Estimate"]}),r.jsxs("div",{className:"bg-[hsl(197,100%,96%)] border border-[hsl(197,100%,80%)] rounded-xl px-6 py-4 mb-6 flex items-center gap-3",children:[r.jsx(oc,{className:"w-6 h-6 text-[hsl(197,100%,40%)] flex-shrink-0"}),r.jsxs("span",{className:"text-[hsl(197,100%,30%)] font-bold text-lg",children:[on!=="your area"?`${on} Area`:"Local"," Price Range: ",d.priceRange]})]}),r.jsxs("section",{className:"mb-6",children:[r.jsxs("h3",{className:"text-lg font-bold text-foreground mb-2 flex items-center gap-2",children:[r.jsx(wa,{className:"w-5 h-5 text-[hsl(197,100%,50%)]"}),"Equipment"]}),r.jsx("p",{className:"text-muted-foreground leading-relaxed",children:d.equipment})]}),r.jsxs("section",{className:"mb-6",children:[r.jsxs("h3",{className:"text-lg font-bold text-foreground mb-2 flex items-center gap-2",children:[r.jsx("span",{className:"w-8 h-8 rounded-full bg-[hsl(197,100%,50%)] text-white flex items-center justify-center text-sm font-bold flex-shrink-0",children:"1"}),on!=="your area"?`${on} Area`:"Local"," Pricing Insights"]}),r.jsx("p",{className:"text-muted-foreground leading-relaxed",children:d.pricingInsights})]}),r.jsxs("section",{className:"mb-6",children:[r.jsxs("h3",{className:"text-lg font-bold text-foreground mb-2 flex items-center gap-2",children:[r.jsx("span",{className:"w-8 h-8 rounded-full bg-[hsl(197,100%,50%)] text-white flex items-center justify-center text-sm font-bold flex-shrink-0",children:"2"}),"Key Cost Drivers"]}),r.jsx("p",{className:"text-muted-foreground leading-relaxed",children:d.costDrivers})]}),r.jsxs("section",{className:"mb-6",children:[r.jsxs("h3",{className:"text-lg font-bold text-foreground mb-4 flex items-center gap-2",children:[r.jsx(Zh,{className:"w-5 h-5 text-orange-500"}),"Red Flag Warnings for Consumers"]}
918),r.jsx("p",{className:"text-muted-foreground mb-4 leading-relaxed",children:'When collecting estimates in New Jersey, watch for these "deal-breakers" that often signal a problematic contractor:'}),r.jsxs("div",{className:"space-y-4",children:[r.jsxs("div",{className:"border-l-4 border-red-400 pl-4 bg-red-50 rounded-r-xl py-3 pr-4",children:[r.jsx("p",{className:"font-bold text-gray-800 mb-1",children:'The "Cash-Only" Discount'}),r.jsx("p",{className:"text-gray-700 text-sm leading-relaxed",children:"If a contractor offers a significantly lower price for cash, they are likely skipping insurance or required New Jersey permits. This leaves you liable for any accidents."})]}),r.jsxs("div",{className:"border-l-4 border-red-400 pl-4 bg-red-50 rounded-r-xl py-3 pr-4",children:[r.jsx("p",{className:"font-bold text-gray-800 mb-1",children:"Missing HIC Registration"}),r.jsx("p",{className:"text-gray-700 text-sm leading-relaxed",children:"In New Jersey, all home improvement contractors must be registered with the Division of Consumer Affairs. Verify their registration before hiring."})]}),r.jsxs("div",{className:"border-l-4 border-red-400 pl-4 bg-red-50 rounded-r-xl py-3 pr-4",children:[r.jsx("p",{className:"font-bold text-gray-800 mb-1",children:"High Upfront Deposits"}),r.jsx("p",{className:"text-gray-700 text-sm leading-relaxed",children:"Beware of any contractor asking for more than 33% upfront. Standard practice is 10–25% to secure the date, with remaining payments tied to specific milestones."})]}),r.jsxs("div",{className:"border-l-4 border-red-400 pl-4 bg-red-50 rounded-r-xl py-3 pr-4",children:[r.jsx("p",{className:"font-bold text-gray-800 mb-1",children:"Pressure to Skip Permits"}),r.jsx("p",{className:"text-gray-700 text-sm leading-relaxed",children:`If a contractor says "we don't need a permit for this," they are trying to avoid municipal inspections. Call your local building department to confirm. You risk fines up to $5,000 if permits are required but not obtained.`})]}),r.jsxs("div",{className:"border-l-4 border-red-400 pl-4 bg-red-50 rounded-r-xl py-3 pr-4",children:[r.jsx("p",{className:"font-bold text-gray-800 mb-1",children:'Vague "Lump Sum" Bids'}),r.jsx("p",{className:"text-gray-700 text-sm leading-relaxed",children:"A professional estimate should be itemized. A single total price with no breakdown of materials vs. labor makes it impossible to compare with other quotes."})]})]})]}),d.njTip&&r.jsxs("section",{className:"mb-6",children:[r.jsxs("h3",{className:"text-lg font-bold text-foreground mb-2 flex items-center gap-2",children:[r.jsx(Hd,{className:"w-5 h-5 text-[hsl(197,100%,50%)]"}),"Local ",on!=="your area"?`${on}`:""," Tip"]}),r.jsx("div",{className:"bg-green-50 border border-green-200 rounded-xl p-4",children:r.jsx("p",{className:"text-gray-700 leading-relaxed",children:d.njTip})})]}),r.jsxs("section",{className:"mt-8 pt-6 border-t border-gray-200 mb-6",children:[r.jsxs("h2",{className:"text-2xl font-bold text-foreground mb-4",children:["How to Choose a ",l," Contractor"]}),r.jsxs("div",{className:"mb-6",children:[r.jsx("h3",{className:"text-lg font-bold text-foreground mb-3",children:"1. Verify Their Registration & Licenses"}),r.jsx("p",{className:"text-muted-foreground mb-3 leading-relaxed",children:"Almost all home improvement contractors must be registered with the state."}),r.jsxs("ul",{className:"space-y-2 ml-4",children:[r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"HIC Registration:"})," Ask for their Home Improvement Contractor (HIC) registration number and verify it with your state's Division of Consumer Affairs."]}),r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"Trade-Specific Licenses:"})," For specialized work, ensure they have the correct master license (Plumber, Electrician, HVACR, etc.)."]})]})]}),r.jsxs("div",{className:"mb-6",children:[r.jsx("h3",{className:"text-lg font-bold text-foreground mb-3",children:"2. Check for Proper Insurance"}),r.jsx("p",{className:"text-muted-foreground mb-3 leading-relaxed",children:"Ask for a Certificate of Insurance (COI). A reputable contractor should carry:"}),r.jsxs("ul",{className:"space-y-2 ml-4",children:[r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"General Liability:"})," Protects your home from damage during the project."]}),r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"Workers' Compensation:"})," Required by law to protect you from liability."]})]})]}),r.jsxs("div",{className:"mb-6",children:[r.jsx("h3",{className:"text-lg font-bold text-foreground mb-3",children:'3. The "Rule of Three" Estimates'}),r.jsx("p",{className:"text-muted-foreground mb-3 leading-relaxed",children:"Get at least three written estimates to compare:"}),r.jsxs("ul",{className:"space-y-2 ml-4",children:[r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"Scope of Work:"})," Ensure every contractor is bidding on the exact same materials and tasks."]}),r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:'The "Low Ball" Warning:'})," If one bid is significantly lower, they may be using inferior materials or skipping permits."]})]})]}),r.jsxs("div",{className:"mb-6",children:[r.jsx("h3",{className:"text-lg font-bold text-foreground mb-3",children:"4. Know Your Contract Rights"}),r.jsx("p",{className:"text-muted-foreground mb-3 leading-relaxed",children:"Any contract over $500 must be in 
918writing and include:"}),r.jsxs("ul",{className:"space-y-2 ml-4",children:[r.jsx("li",{className:"text-muted-foreground leading-relaxed",children:"• The contractor's legal name, address, and registration number."}),r.jsx("li",{className:"text-muted-foreground leading-relaxed",children:"• Specific start and end dates."}),r.jsx("li",{className:"text-muted-foreground leading-relaxed",children:"• A detailed description of all work and materials."}),r.jsx("li",{className:"text-muted-foreground leading-relaxed",children:"• A clear statement of warranties or guarantees."}),r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"Right to Cancel:"})," You typically have three business days to cancel after signing."]})]})]}),r.jsxs("div",{className:"mb-6",children:[r.jsx("h3",{className:"text-lg font-bold text-foreground mb-3",children:"5. Manage the Money Safely"}),r.jsxs("ul",{className:"space-y-2 ml-4",children:[r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"Deposit Limits:"})," A standard deposit is 15–30% of the total. Never pay more than 33% upfront."]}),r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"Milestone Payments:"})," Tie payments to specific completed stages."]}),r.jsxs("li",{className:"text-muted-foreground leading-relaxed",children:[r.jsx("strong",{children:"The Final Check:"}),' Never pay until the final inspection is passed and you have a "Certificate of Approval."']})]})]})]})]}),!Rt&&r.jsxs("div",{className:"flex items-center justify-between mt-4",children:[C>1?r.jsxs("button",{onClick:()=>k(C-1),className:"flex items-center gap-1 text-sm text-gray-500 hover:text-gray-700 transition-colors min-h-[44px] px-1",children:[r.jsx(mm,{className:"w-4 h-4"}),"Back"]}):r.jsx("div",{}),r.jsxs("div",{className:"flex flex-col items-end gap-1.5",children:[r.jsxs(qe,{onClick:ss,disabled:Ri(),className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold px-4 h-10 w-24 rounded-xl flex items-center justify-center gap-1 disabled:opacity-50",children:[C===4?"Continue":"Next",r.jsx(_s,{className:"w-4 h-4"})]}),C===4&&r.jsxs("p",{className:"text-xs text-gray-500 text-right leading-relaxed max-w-[220px]",children:["By clicking Continue you agree to ",r.jsx("a",{href:"https://www.snapestimate.ai/terms-of-service",target:"_blank",rel:"noreferrer",className:"text-blue-600 underline",children:"Terms"})," and ",r.jsx("a",{href:"https://www.snapestimate.ai/privacy-policy",target:"_blank",rel:"noreferrer",className:"text-blue-600 underline",children:"Privacy Policy"})]})]})]}),r.jsx("p",{className:"text-center text-xs text-gray-300 mt-2 mb-1",children:"Powered by SnapEstimate.AI"})]}),r.jsx(sD,{})]},C)}),r.jsxs("div",{id:"provider-scroll-target",className:"fixed bottom-6 right-6 flex flex-col gap-3 z-40",children:[r.jsx("button",{onClick:()=>window.location.href=`/contractor-profile/${i==null?void 0:i.slug}`,className:"bg-[#22c55e] hover:bg-[#16a34a] text-white font-bold py-2 px-4 rounded-lg shadow-lg flex items-center justify-center gap-2 transition-colors text-sm whitespace-nowrap",children:r.jsx("span",{children:"Explore Elite Providers"})}),r.jsx("button",{onClick:()=>window.location.href="/home",className:"bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-bold py-2 px-4 rounded-lg shadow-lg flex items-center justify-center gap-2 transition-colors text-sm whitespace-nowrap",children:r.jsx("span",{children:"One Pro for Every Project"})})]})]})]})}const ld=[{stars:"5",title:"Absolute game-changer for home projects!",name:"Jennifer Caldwell",body:"I have done multiple projects through this platform now and could not be happier. Every contractor they sent out was professional, on time, and did incredible work."},{stars:"4.5",title:"4.5 out of 5 Stars",name:"Michael Marvon",company:"Smiley Drain",body:"This platform is amazing, works pretty well. The only reason I did not give it a 5 star is because it took two months for it to ramp up. So far, things are looking good on month 3, hoping to change my review to 5 stars, we are getting close. So far as of now I am getting 5X my investment I could say I am happy and I definitely recommend this platform, it is almost catching up to my PPC ROI."},{stars:"5",title:"The only way I will hire contractors from now on.",name:"Sarah Okonkwo",body:"We have had nothing but great success using this platform. It completely takes the guesswork out of hiring because you already know every contractor is strictly vetted and approved."}];function rD(){const[e,t]=nn.useState(0),n=ld[e];return r.jsxs("div",{className:"mt-2 max-w-xl w-full text-left",children:[r.jsxs("div",{children:[r.jsxs("p",{className:"text-xs font-bold text-yellow-400 mb-1",children:[n.stars," ",n.title]}),r.jsx("p",{className:"text-xs text-gray-300 leading-snug italic mb-1",children:n.body}),r.jsxs("p",{className:"text-xs text-gray-400 mt-1",children:["— ",n.name," ",n.company&&r.jsxs("span",{className:"text-gray-500",children:["• ",n.company]}),"  ",r.jsx("span",{className:"text-green-400 font-semibold",children:"✓ Verified"})]})]}),r.jsxs("div",{className:"flex items-center gap-3 mt-3",children:[r.jsx("button",{onClick:()=>t((e-1+ld.length)%ld.length),className:"text-gray-400 hover:text-white text-base",children:"‹"}),r.jsx("div",{className:"flex gap-1.5",children:ld.map((i,l)=>r.jsx("button",{onClick:()=>t(l),className:`w-1.5 h-1.5 rounded-full ${l===e?"bg-yellow-400":"bg-gray-600"}`},l))}),r.jsx("button",{onClick:()=>t((e+1)%ld.length),className:"text-gray-400 hover:text-white text-base",children:"›"})]})]})}function sD(){const[e,t]=S.useState(!1),[n,i]=S.useState({name:"",email:"",message:""}),[l,d]=S.useState(!1),h=async m=>{m.preventDefault(),d(!0);try{await Me.integrations.Core.SendEmail({to:"[email protected]",subject:`Contact Form Submission from ${n.name}`,body:`Name: ${n.name}
919Email: ${n.email}
920
921Message:
922${n.message}`}),i({name:"",email:"",message:""}),t(!1),alert("Message sent successfully!")}catch{alert("Failed to send message. Please try again.")}finally{d(!1)}};return r.jsxs("footer",{className:"w-full bg-[hsl(213,32%,10%)] text-white px-6 sm:px-8 py-4",children:[r.jsxs("div",{children:[r.jsxs("div",{className:"flex flex-col sm:flex-row items-start justify-between gap-3",children:[r.jsxs("div",{className:"flex flex-col items-start gap-3 text-xs text-gray-400",children:[r.jsxs("div",{className:"flex flex-wrap gap-4",children:[r.jsx(Qt,{to:"/privacy-policy",className:"hover:text-white transition-colors",children:"Privacy Policy"}),r.jsx(Qt,{to:"/terms-of-service",className:"hover:text-white transition-colors",children:"Terms of Service"}),r.jsx(Qt,{to:"/elite-guarantee",className:"hover:text-white transition-colors",children:"Elite Guarantee"}),r.jsx(Qt,{to:"/contact",className:"hover:text-white transition-colors",children:"Contact"}),r.jsx(Qt,{to:"/sms-opt-in",className:"hover:text-white transition-colors",children:"SMS Opt-In / Opt-Out Policy"})]}),r.jsx(rD,{})]}),r.jsxs("div",{className:"flex flex-col items-start gap-1 text-xs text-gray-400 shrink-0",children:[r.jsx("p",{children:"© 2026 SnapEstimate.AI LLC."}),r.jsx("p",{children:"8 Campus Drive, Suite 105"}),r.jsx("p",{children:"Parsippany-Troy Hills, NJ 07054"}),r.jsx("button",{onClick:()=>t(!0),className:"hover:text-white transition-colors underline mt-1",children:"Contact Us"}),r.jsx("a",{href:"tel:+18339907627",className:"hover:text-white transition-colors",children:"(833) 990-SNAP (7627)"})]})]}),r.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-3 mt-4 pt-4 border-t border-white/10",children:[r.jsxs("div",{className:"flex flex-col items-center gap-1",children:[r.jsx("a",{href:"https://apps.apple.com",target:"_blank",rel:"noopener noreferrer",children:r.jsx("img",{src:"https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg",alt:"Download on the App Store",className:"h-10 w-auto"})}),r.jsx("p",{className:"text-xs text-white/60",children:"Coming Soon"})]}),r.jsx("a",{href:"https://play.google.com",target:"_blank",rel:"noopener noreferrer",children:r.jsx("img",{src:"https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png",alt:"Get it on Google Play",className:"h-14 w-auto"})})]})]}),e&&r.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4",children:r.jsxs("div",{className:"bg-white rounded-lg shadow-lg max-w-md w-full p-6",children:[r.jsxs("div",{className:"flex items-center justify-between mb-4",children:[r.jsx("h2",{className:"text-lg font-bold text-gray-800",children:"Contact Us"}),r.jsx("button",{onClick:()=>t(!1),className:"text-gray-400 hover:text-gray-600",children:r.jsx(Zs,{className:"w-5 h-5"})})]}),r.jsxs("form",{onSubmit:h,className:"space-y-4",children:[r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Name"}),r.jsx("input",{type:"text",required:!0,value:n.name,onChange:m=>i({...n,name:m.target.value}),className:"w-full px-3 py-2 border border-gray-300 rounded-md text-gray-900 focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Email"}),r.jsx("input",{type:"email",required:!0,value:n.email,onChange:m=>i({...n,email:m.target.value}),className:"w-full px-3 py-2 border border-gray-300 rounded-md text-gray-900 focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Message"}),r.jsx("textarea",{required:!0,rows:"4",value:n.message,onChange:m=>i({...n,message:m.target.value}),className:"w-full px-3 py-2 border border-gray-300 rounded-md text-gray-900 focus:outline-none focus:ring-2 focus:ring-[hsl(197,100%,50%)]"})]}),r.jsx("button",{type:"submit",disabled:l,className:"w-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] text-white font-semibold py-2 rounded-md transition-colors disabled:opacity-50",children:l?"Sending...":"Send Message"})]})]})})]})}const iD="https://media.base44.com/images/public/69c6c2e37ddb6d40cc99594e/31cab7086_Screenshot2026-03-28092205.png";function oD(){const[e,t]=S.useState(null),[n,i]=S.useState([]),[l,d]=S.useState(""),[h,m]=S.useState(!1),[g,y]=S.useState(!0),x=S.useRef(null);S.useEffect(()=>{w()},[]),S.useEffect(()=>{var k;(k=x.current)==null||k.scrollIntoView({behavior:"smooth"})},[n]);const w=async()=>{try{const k=await Me.agents.createConversation({agent_name:"lead_qualifier",metadata:{name:"Lead Qualification Chat"}});t(k),i(k.messages||[]),Me.agents.subscribeToConversation(k.id,A=>{i([...A.messages])}),await Me.agents.addMessage(k,{role:"user",content:"Hi, I need help with a home improvement project."})}catch(k){console.error(k)}finally{y(!1)}},j=async()=>
922{if(!l.trim()||!e||h)return;const k=l.trim();d(""),m(!0);try{await Me.agents.addMessage(e,{role:"user",content:k})}finally{m(!1)}},P=k=>{k.key==="Enter"&&!k.shiftKey&&(k.preventDefault(),j())},C=n.filter(k=>k.role==="user"||k.role==="assistant");return r.jsxs("div",{className:"min-h-screen bg-gray-50 flex flex-col",children:[r.jsxs("div",{className:"bg-white border-b border-gray-200 px-4 py-3 flex items-center gap-3 sticky top-0 z-10",children:[r.jsx(Qt,{to:"/",children:r.jsx("img",{src:iD,alt:"SnapEstimate.AI",className:"h-8 w-auto object-contain"})}),r.jsxs("div",{className:"flex-1",children:[r.jsx("p",{className:"text-sm font-semibold text-foreground",children:"Project Assistant"}),r.jsx("p",{className:"text-xs text-green-500 font-medium",children:"● Online"})]}),r.jsx("div",{className:"w-9 h-9 rounded-full bg-[hsl(197,100%,50%)] flex items-center justify-center",children:r.jsx(Si,{className:"w-5 h-5 text-white"})})]}),r.jsxs("div",{className:"flex-1 overflow-y-auto px-4 py-6 space-y-4 max-w-2xl w-full mx-auto",children:[g?r.jsx("div",{className:"flex items-center justify-center h-40",children:r.jsx(Qj,{className:"w-6 h-6 animate-spin text-[hsl(197,100%,50%)]"})}):r.jsx(Yd,{initial:!1,children:C.map((k,A)=>{const E=k.role==="user";return r.jsxs(Ot.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.25},className:`flex gap-2 ${E?"justify-end":"justify-start"}`,children:[!E&&r.jsx("div",{className:"w-8 h-8 rounded-full bg-[hsl(197,100%,50%)] flex items-center justify-center flex-shrink-0 mt-1",children:r.jsx(Si,{className:"w-4 h-4 text-white"})}),r.jsx("div",{className:`max-w-[80%] rounded-2xl px-4 py-3 text-sm leading-relaxed ${E?"bg-[hsl(197,100%,50%)] text-white rounded-br-sm":"bg-white border border-gray-200 text-foreground rounded-bl-sm shadow-sm"}`,children:k.content}),E&&r.jsx("div",{className:"w-8 h-8 rounded-full bg-gray-200 flex items-center justify-center flex-shrink-0 mt-1",children:r.jsx(ak,{className:"w-4 h-4 text-gray-500"})})]},A)})}),h&&r.jsxs(Ot.div,{initial:{opacity:0}
922,animate:{opacity:1},className:"flex gap-2 justify-start",children:[r.jsx("div",{className:"w-8 h-8 rounded-full bg-[hsl(197,100%,50%)] flex items-center justify-center flex-shrink-0",children:r.jsx(Si,{className:"w-4 h-4 text-white"})}),r.jsx("div",{className:"bg-white border border-gray-200 rounded-2xl rounded-bl-sm px-4 py-3 shadow-sm",children:r.jsxs("div",{className:"flex gap-1",children:[r.jsx("div",{className:"w-2 h-2 bg-gray-400 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),r.jsx("div",{className:"w-2 h-2 bg-gray-400 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),r.jsx("div",{className:"w-2 h-2 bg-gray-400 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),r.jsx("div",{ref:x})]}),r.jsxs("div",{className:"bg-white border-t border-gray-200 px-4 py-3 sticky bottom-0",children:[r.jsxs("div",{className:"max-w-2xl mx-auto flex gap-2",children:[r.jsx(ht,{value:l,onChange:k=>d(k.target.value),onKeyDown:P,placeholder:"Type your message...",className:"flex-1 h-11 rounded-full px-5 border-gray-300",disabled:g||h}),r.jsx(qe,{onClick:j,disabled:!l.trim()||g||h,className:"w-11 h-11 rounded-full bg-[hsl(197,100%,50%)] hover:bg-[hsl(197,100%,43%)] flex items-center justify-center p-0",children:r.jsx(P5,{className:"w-4 h-4 text-white"})})]}),r.jsx("p",{className:"text-center text-xs text-gray-400 mt-2",children:"Powered by SnapEstimate.AI · Your info is kept private"})]})]})}function aD(){const{pathname:e}=Ei();return S.useEffect(()=>{window.scrollTo(0,0)},[e]),null}function lD(){const{user:e,isLoadingAuth:t}=d2(),[n,i]=nn.useState(null),[l,d]=nn.useState(!1);return nn.useEffect(()=>{!e||e.role==="admin"||(d(!0),Me.entities.ContractorAssignment.filter({contractorEmail:e.email,isActive:!0}).then(h=>{h&&h.length>0?i(`/contractor-portal/${h[0].serviceSlug}`):i("/contractor-portal")}).catch(()=>i("/contractor-portal")).finally(()=>d(!1)))},[e]),t||l?r.jsx("div",{className:"fixed inset-0 flex items-center justify-center bg-background",children:r.jsx("div",{className:"w-8 h-8 border-4 border-slate-200 border-t-slate-800 rounded-full animate-spin"})}):n?r.jsx(ut,{to:n,replace:!0}):r.jsx(E4,{})}const cD=()=>{const{isLoadingAuth:e,isLoadingPublicSettings:t,authError:n,navigateToLogin:i,user:l}=d2();if(S.useEffect(()=>{document.documentElement.classList.remove("dark")},[]),t||e)return r.jsx("div",{className:"w-full h-screen flex items-center justify-center bg-background",children:r.jsx("div",{className:"w-8 h-8 border-4 border-slate-200 border-t-slate-800 rounded-full animate-spin"})});if(n){if(n.type==="user_not_registered")return r.jsx(ZE,{});if(n.type==="auth_required")return i(),null}return r.jsxs(r.Fragment,{children:[r.jsx(aD,{}),r.jsxs(W6,{children:[r.jsx(ie,{path:"/",element:r.jsx(lD,{})}),r.jsx(ie,{path:"/home",element:r.jsx(E4,{})}),r.jsx(ie,{path:"/contractors",element:r.jsx(qI,{})}),r.jsx(ie,{path:"/AirConditionerInstallation",element:r.jsx(u$,{})}),r.jsx(ie,{path:"/ApplianceRepair",element:r.jsx(h$,{})}),r.jsx(ie,{path:"/BasementWaterproofing",element:r.jsx(m$,{})}),r.jsx(ie,{path:"/BathroomRemodeling",element:r.jsx(p$,{})}),r.jsx(ie,{path:"/CarpetCleaning",element:r.jsx(f$,{})}),r.jsx(ie,{path:"/ChimneyLinerMasonry",element:r.jsx(Jw,{})}),r.jsx(ie,{path:"/ChimneyLinerAndMasonry",element:r.jsx(Jw,{})}),r.jsx(ie,{path:"/Cleaning",element:r.jsx(g$,{})}),r.jsx(ie,{path:"/CustomClosets",element:r.jsx(y$,{})}),r.jsx(ie,{path:"/CustomGarage",element:r.jsx(x$,{})}),r.jsx(ie,{path:"/DecksAndPorches",element:r.jsx(v$,{})}),r.jsx(ie,{path:"/DrivewayService",element:r.jsx(b$,{})}),r.jsx(ie,{path:"/DuctCleaning",element:r.jsx(w$,{})}),r.jsx(ie,{path:"/estimate/duct-cleaning",element:r.jsx(ut,{to:"/DuctCleaning",replace:!0})}),r.jsx(ie,{path:"/Electrical",element:r.jsx(_$,{})}),r.jsx(ie,{path:"/Fencing",element:r.jsx(S$,{})}),r.jsx(ie,{path:"/GarageDoors",element:r.jsx(N$,{})}),r.jsx(ie,{path:"/GutterService",element:r.jsx(j$,{})}),r.jsx(ie,{path:"/HandymanService",element:r.jsx(k$,{})}),r.jsx(ie,{path:"/HeatingSystemInstallation",element:r.jsx(C$,{})}),r.jsx(ie,{path:"/HomeInspection",element:r.jsx(P$,{})}),r.jsx(ie,{path:"/HomeRemodeling",element:r.jsx(T$,{})}),r.jsx(ie,{path:"/JunkRemoval",element:r.jsx(E$,{})}),r.jsx(ie,{path:"/KitchenRemodeling",element:r.jsx(A$,{})}),r.jsx(ie,{path:"/Landscaping",element:r.jsx(R$,{})}),r.jsx(ie,{path:"/LawnCare",element:r.jsx(L$,{})}),r.jsx(ie,{path:"/MovingService",element:r.jsx(M$,{})}),r.jsx(ie,{path:"/NewWindowAndDoor",element:r.jsx(I$,{})}),r.jsx(ie,{path:"/Painting",element:r.jsx($$,{})}),r.jsx(ie,{path:"/PestControl",element:r.jsx(D$,{})}),r.jsx(ie,{path:"/PestControlGuarantee",element:r.jsx(F$,{})}
922),r.jsx(ie,{path:"/PestControlLabor",element:r.jsx(B$,{})}),r.jsx(ie,{path:"/Plumbing",element:r.jsx(W$,{})}),r.jsx(ie,{path:"/Roofing",element:r.jsx(U$,{})}),r.jsx(ie,{path:"/SewerCameraInspection",element:r.jsx(V$,{})}),r.jsx(ie,{path:"/SewerDescaling",element:r.jsx(J$,{})}),r.jsx(ie,{path:"/SewerHydroJetting",element:r.jsx(Z$,{})}),r.jsx(ie,{path:"/SewerRelining",element:r.jsx(Y$,{})}),r.jsx(ie,{path:"/SewerRooterService",element:r.jsx(X$,{})}),r.jsx(ie,{path:"/Siding",element:r.jsx(e8,{})}),r.jsx(ie,{path:"/TreeService",element:r.jsx(t8,{})}),r.jsx(ie,{path:"/WaterFireRestoration",element:r.jsx(n8,{})}),r.jsx(ie,{path:"/PoolService",element:r.jsx(r8,{})}),r.jsx(ie,{path:"/WaterHeaterInstallation",element:r.jsx(i8,{})}),r.jsx(ie,{path:"/WaterSoftener",element:r.jsx(a8,{})}),r.jsx(ie,{path:"/services/:serviceName",element:r.jsx(KI,{})}),r.jsx(ie,{path:"/calculate",element:r.jsx(qg,{})}),r.jsx(ie,{path:"/calculate/:serviceSlug",element:r.jsx(qg,{})}),r.jsx(ie,{path:"/estimate/air-conditioner-installation",element:r.jsx(ut,{to:"/AirConditionerInstallation",replace:!0})}),r.jsx(ie,{path:"/estimate/appliance-repair",element:r.jsx(ut,{to:"/ApplianceRepair",replace:!0})}),r.jsx(ie,{path:"/estimate/bathroom-remodeling",element:r.jsx(ut,{to:"/BathroomRemodeling",replace:!0})}),r.jsx(ie,{path:"/estimate/chimney-liner-masonry",element:r.jsx(ut,{to:"/ChimneyLinerMasonry",replace:!0})}),r.jsx(ie,{path:"/estimate/cleaning",element:r.jsx(ut,{to:"/Cleaning",replace:!0})}),r.jsx(ie,{path:"/estimate/decks-and-porches",element:r.jsx(ut,{to:"/DecksAndPorches",replace:!0})}),r.jsx(ie,{path:"/estimate/driveway-service",element:r.jsx(ut,{to:"/DrivewayService",replace:!0})}),r.jsx(ie,{path:"/estimate/electrical",element:r.jsx(ut,{to:"/Electrical",replace:!0})}),r.jsx(ie,{path:"/estimate/fencing",element:r.jsx(ut,{to:"/Fencing",replace:!0})}),r.jsx(ie,{path:"/estimate/garage-doors",element:r.jsx(ut,{to:"/GarageDoors",replace:!0})}),r.jsx(ie,{path:"/estimate/gutter-service",element:r.jsx(ut,{to:"/GutterService",replace:!0})}),r.jsx(ie,{path:"/estimate/handyman-service",element:r.jsx(ut,{to:"/HandymanService",replace:!0})}),r.jsx(ie,{path:"/estimate/heating-system-installation",element:r.jsx(ut,{to:"/HeatingSystemInstallation",replace:!0})}),r.jsx(ie,{path:"/estimate/home-inspection",element:r.jsx(ut,{to:"/HomeInspection",replace:!0})}),r.jsx(ie,{path:"/estimate/home-remodeling",element:r.jsx(ut,{to:"/HomeRemodeling",replace:!0})}),r.jsx(ie,{path:"/estimate/junk-removal",element:r.jsx(ut,{to:"/JunkRemoval",replace:!0})}),r.jsx(ie,{path:"/estimate/kitchen-remodeling",element:r.jsx(ut,{to:"/KitchenRemodeling",replace:!0})}),r.jsx(ie,{path:"/estimate/landscaping",element:r.jsx(ut,{to:"/Landscaping",replace:!0})}),r.jsx(ie,{path:"/estimate/lawn-care",element:r.jsx(ut,{to:"/LawnCare",replace:!0})}),r.jsx(ie,{path:"/estimate/moving-service",element:r.jsx(ut,{to:"/MovingService",replace:!0})}),r.jsx(ie,{path:"/estimate/new-window-and-door",element:r.jsx(ut,{to:"/NewWindowAndDoor",replace:!0})}),r.jsx(ie,{path:"/estimate/painting",element:r.jsx(ut,{to:"/Painting",replace:!0})}),r.jsx(ie,{path:"/estimate/pest-control",element:r.jsx(ut,{to:"/PestControl",replace:!0})}),r.jsx(ie,{path:"/estimate/roofing",element:r.jsx(ut,{to:"/Roofing",replace:!0})}),r.jsx(ie,{path:"/estimate/sewer-camera-inspection",element:r.jsx(ut,{to:"/SewerCameraInspection",replace:!0})}),r.jsx(ie,{path:"/estimate/sewer-descaling",element:r.jsx(ut,{to:"/SewerDescaling",replace:!0})}),r.jsx(ie,{path:"/estimate/sewer-hydro-jetting",element:r.jsx(ut,{to:"/SewerHydroJetting",replace:!0})}),r.jsx(ie,{path:"/estimate/sewer-relining",element:r.jsx(ut,{to:"/SewerRelining",replace:!0})}),r.jsx(ie,{path:"/estimate/sewer-rooter-service",element:r.jsx(ut,{to:"/SewerRooterService",replace:!0})}),r.jsx(ie,{path:"/estimate/siding",element:r.jsx(ut,{to:"/Siding",replace:!0})}),r.jsx(ie,{path:"/estimate/tree-service",element:r.jsx(ut,{to:"/TreeService",replace:!0})}),r.jsx(ie,{path:"/estimate/water-heater",element:r.jsx(ut,{to:"/WaterHeaterInstallation",replace:!0})}),r.jsx(ie,{path:"/estimate/basement-waterproofing",element:r.jsx(ut,{to:"/BasementWaterproofing",replace:!0})}),r.jsx(ie,{path:"/estimate/carpet-cleaning",element:r.jsx(ut,{to:"/CarpetCleaning",replace:!0})}),r.jsx(ie,{path:"/estimate/water-softener",element:r.jsx(ut,{to:"/WaterSoftener",replace:!0})}),r.jsx(ie,{path:"/estimate/water-fire-restoration",element:r.jsx(ut,{to:"/WaterFireRestoration",replace:!0})}),r.jsx(ie,{path:"/contact",element:r.jsx(JI,{})}),r.jsx(ie,{path:"/privacy-policy",element:r.jsx(GI,{})}),r.jsx(ie,{path:"/terms-of-service",element:r.jsx(ZI,{})}),r.jsx(ie,{path:"/elite-guarantee",element:r.jsx(c8,{})}),r.jsx(ie,{path:"/sms-opt-in",element:r.jsx(d8,{})}),r.jsx(ie,{path:"/settings",element:r.jsx(u8,{})}),r.jsx(ie,{path:"/twilio",element:r.jsx(h8,{})}),r.jsx(ie,{path:"/contractor-profile",element:r.jsx(Vg,{})}),r.jsx(ie,{path:"/contractor-profile/:serviceSlug",element:r.jsx(Vg,{})}),r.jsx(ie,{path:"/contractor-portal",element:r.jsx(Kw,{})}),r.jsx(ie,{path:"/contractor-portal/:serviceSlug",element:r.jsx(Kw,{})}),r.jsx(ie,{path:"/admin-dashboard",element:r.jsx(S8,{})}),r.jsx(ie,{path:"/smiley",element:r.jsx(N8,{})}),r.jsx(ie,{path:"/grow",element:r.jsx(D8,{})}),r.jsx(ie,{path:"/embed",element:r.jsx(nD,{})}),r.jsx(ie,{path:"/lead-qualifier",element:r.jsx(oD,{})}),r.jsx(ie,{path:"/ai-phone-agent",element:r.jsx(J8,{})}),r.jsx(ie,{path:"/agent-manager",element:r.jsx(X8,{})}),r.jsx(ie,{path:"*",element:r.jsx(JE,{})})]})]})};function dD(){return r.jsx(GE,{children:r.jsxs($C,{client:ZC,children:[r.jsx(K6,{children:r.jsx(cD,{})}),r.jsx(dC,{})]})})}jN.createRoot(document.getElementById("root")).render(r.jsx(dD,{}));

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.