1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Index-C4fgFbgp.js","assets/react-vendor-BDHNqS4B.js","assets/amplify-DYDcjoow.js","assets/Footer-CtylQEAH.js","assets/textarea-D7qsgB_p.js","assets/reportService-tEzofQZ6.js","assets/phone-B2rvvDkK.js","assets/type-CVgQCqWZ.js","assets/Header-BkbupWq-.js","assets/chevron-right-CpkQxGj-.js","assets/check-DS0-tR9o.js","assets/tag-D40gy_Nl.js","assets/query-7-WHkg5t.js","assets/skeleton-CDto_fTL.js","assets/flame-HVLv3H1b.js","assets/message-circle-B5m25ymx.js","assets/use-mobile-DOD0qs8p.js","assets/search-BSw3vufk.js","assets/usePriceReviewProducts-BeYKlbKA.js","assets/priceReviewApi-BFijUeFQ.js","assets/priceReviewPricing-BlvAWvXm.js","assets/ProductReviewRatingBadge-CyxkMrfM.js","assets/star-Dim9pf51.js","assets/store-DWI30bPC.js","assets/RestaurantImage-CN6NkWJn.js","assets/hongKongDistricts--r8_jlh4.js","assets/useRestaurants-DQ6cKGMa.js","assets/restaurantApi-J7TAaZ7f.js","assets/placeSearchConfig-BfT0dFXT.js","assets/distance-Bwcv1qLg.js","assets/calendar-KPQ2FJpt.js","assets/ClinicImage-CFSfW4FY.js","assets/clock-CRHi7pcr.js","assets/useClinics-BT6VP7AE.js","assets/serviceOfferings-40B0fv7X.js","assets/useSalons-CNBS-O3v.js","assets/useLodging-CMVGJT1Q.js","assets/eventApi-BIdg6rsX.js","assets/featuredActivities-HPTlYqPU.js","assets/festival-hero-banner-Bp0l-DUp.js","assets/useSEO-CoArDrdl.js","assets/Landing-CfOmy2Wf.js","assets/DirectAnswerBox-Bx52E2kD.js","assets/card-U4xgiZnN.js","assets/FAQSection-CoCzp6cx.js","assets/accordion-DxrqSPr2.js","assets/index-BZFL-brE.js","assets/usePetwellFaq-B_oM2g83.js","assets/heart-DRwCktcb.js","assets/arrow-up-right-Dc-ZTPFk.js","assets/About-CPALLb6L.js","assets/MediaLogoMarquee-DdHYs0C0.js","assets/ContactUsForm-DKn4JEAp.js","assets/checkbox-BkyFxaQM.js","assets/index-CFf87M6S.js","assets/types-CW8l682q.js","assets/ChristmasEventDetail-Cnl4qtwY.js","assets/NearbyRestaurants-Dk648Dmq.js","assets/RestaurantVerificationBadge-BvUGD2EG.js","assets/PetWellVerifiedBadge-DpC4-twT.js","assets/triangle-alert-1QSShUG6.js","assets/PremiumPartnerBadge-Vc4azdA6.js","assets/useNearbyRestaurants-DlbceyfQ.js","assets/chevron-up-Cb9C18fB.js","assets/badge-BYBBu8xB.js","assets/christmasEventData-CwZjPWpq.js","assets/share-2-CCPUIaWa.js","assets/external-link-BIpC4MGv.js","assets/ChristmasEvents-BHXWfm3C.js","assets/sparkles-BcmYxR0H.js","assets/Terms-Uet-mjcX.js","assets/Forum-qaUEpz2E.js","assets/popover-D22i846k.js","assets/image-BPGTiTmb.js","assets/useSearchQueryFromUrl-jHjzcbFS.js","assets/select-fZgDq8v8.js","assets/image-plus--WXlfpIC.js","assets/lock-CHPI1fFl.js","assets/chevron-left-Jw0Ezjn9.js","assets/plus-D0NAkfqS.js","assets/OwnerZone-BAOIr8ec.js","assets/blogData-yU9PE434.js","assets/blog-dog-trainer-licence-CLr68YZE.js","assets/blog-rainy-day-pets.jpg.asset-j2szsPEZ.js","assets/AppDownloadCTA-DAEixTy3.js","assets/BlogPost-DLd3O4g_.js","assets/FehdPetFriendlyDirectory-r9MKUtlq.js","assets/info-DIDAIaTg.js","assets/collapsible-XeBmzMPY.js","assets/mallParkingDetails-CAW0sDTT.js","assets/tram-front-BJQeNsZr.js","assets/paw-print-BtMm-KXX.js","assets/utensils-DXFnnphK.js","assets/midAutumnFestival2026-GVaMxjdF.js","assets/BlogAdSense-Dqmm3xft.js","assets/navigation-B9fVXvyH.js","assets/Clinics-CdZ5tld1.js","assets/useNearbyPlaceSearch-x_utv8ac.js","assets/DiscoverPlaceTabs-DPoC_wAS.js","assets/shield-check-we62WOC3.js","assets/sliders-horizontal-zztTPW4P.js","assets/ListInfiniteLoader-DVfWx7v3.js","assets/PlaceListCard-Bh6ohuV5.js","assets/availableHours-DsyGI15X.js","assets/ClinicDetail-BQs6r4l0.js","assets/PlaceDetailLayout-BNsti9P1.js","assets/BusinessReviewReply-DaaGODlp.js","assets/ReviewAuthorLink-IWaLqPnT.js","assets/userReviewApi-BPRYI5-q.js","assets/circle-check-DgLC__8_.js","assets/minus-xARKY3S7.js","assets/badge-check-CHAeghjg.js","assets/placeMaps-BMm8HyB6.js","assets/calendar-check-D9qQBLib.js","assets/NGOs-VvXc9Xw_.js","assets/useNGOs-CzWKW3M_.js","assets/users-DCdt65nH.js","assets/NGODetail-Dlz-EV7z.js","assets/PetTag-DKtKG5u8.js","assets/petApi-Co8Qo3h-.js","assets/ActivateTag-ytT0CDCB.js","assets/CheckTag-D5YoM0g5.js","assets/Download-8j9gf1JA.js","assets/DeleteAccount-DKVPodVd.js","assets/client-DdjVEhXX.js","assets/AdminForms-j5kduD0D.js","assets/MailGoogleForm-C
1Z71o7g9.js","assets/WhatsAppPetwellEng-LyxVrqk9.js","assets/WhatsAppPetwellChin-JU-YYZj6.js","assets/PetMatchmaker-B17f8swA.js","assets/dog-_P0n7k9m.js","assets/cat-DaUUuSL6.js","assets/ChristmasDogMbti-K2_cFKKM.js","assets/Restaurants-CCSpby6B.js","assets/RestaurantListInfiniteLoader-C6rlaODV.js","assets/coffee-DvdZrCo4.js","assets/door-open-DBssRldx.js","assets/RestaurantDetail-C3zGzeN0.js","assets/droplets-K-7uD6Hm.js","assets/camera-DiII9OQn.js","assets/RestaurantsByArea-DFQTWAH3.js","assets/Salons-DIqJzQqB.js","assets/SalonDetail-BNubpZ5h.js","assets/Lodging-D336hlDX.js","assets/LodgingDetail-B0iTx2uS.js","assets/Malls-DkfGqr2J.js","assets/useMalls-DzLp84e2.js","assets/MallDetail-mz2aiLZS.js","assets/link-2-BDESSCXG.js","assets/scale-B2l5za8q.js","assets/HomeVisits-BcNfXazu.js","assets/useHomeVisitProviders-BVHuzPdz.js","assets/HomeVisitDetail-Bj_YnBly.js","assets/PetActivities-D_Lj32Dm.js","assets/EventDetail-e8k_kFy_.js","assets/grid-3x3-AJB6zdOl.js","assets/PetwellMember-t9S4WEOu.js","assets/Nametag-Be1xBgyF.js","assets/smartphone-DDWx8wJ5.js","assets/VendorApplication-CRDuC8Ns.js","assets/radio-group-8WfHeakx.js","assets/vendor-event-cover-uGxUaVCe.js","assets/VendorApplicationThankYou-BpBZym3s.js","assets/MidAutumnFestivalRegistration-DISRv6al.js","assets/proxy-B801D4Tp.js","assets/midAutumnMetaPixel-CU7nfzNg.js","assets/MidAutumnFestivalPayment-B2DglGtG.js","assets/upload-B1g5jdtK.js","assets/MidAutumnFestivalConfirmed-DmCsid80.js","assets/SignUpLogin-DxESOCD-.js","assets/Register-BJuukmXR.js","assets/ForgotPassword-DkXRUTWn.js","assets/VerificationCode-bJASZq7f.js","assets/AuthCallback-CrJ_fqAW.js","assets/TestBooking-CS7MUhum.js","assets/NotFound-DTZI5L68.js","assets/BlogDogTrainerLicence-Dk6U-mqT.js","assets/Review-CZFB9g2T.js","assets/WishlistHeartButton-XMsXQ-jB.js","assets/CompareBar-D-l8D0iQ.js","assets/ReviewPriceDisplay-DfIoLGNY.js","assets/zap-CowlN_Ex.js","assets/ReviewProduct-D7E0kHyR.js","assets/trash-2-e__PZJrZ.js","assets/ReviewBrand-C_r99H9P.js","assets/Wishlist-DXDrxZcj.js","assets/Compare-CVOrncBD.js","assets/OtherServices-DYwm6Mn6.js","assets/AfcdPdfRedirect-nZ6Q1rlj.js","assets/RainyDayMalls-B9bStGvH.js","assets/NutritionScore-D5eItglQ.js","assets/nutritionTheme-ByeotiTj.js","assets/NutritionProduct-b9wBvcz6.js","assets/UserProfile-Duavc4Eg.js","assets/UserReviewList-BdFHL_bd.js","assets/MyReviews-BclwVe3U.js","assets/AccountHomeShell-BmqDkQJS.js","assets/AccountProfile-CAuVI5P3.js","assets/ContactUsWidget-DVNx2pEF.js","assets/HomePromoPopups-CvK0ytwZ.js"])))=>i.map(i=>d[i]); 2import{r as u,j as l,R as A,a as qr,v as zr,b as Kr,u as Is,c as Ds,o as Ws,s as Ls,f as Os,d as Fs,e as _s,h as Ms,l as js,g as Gr,B as Hs,i as $s,k as E,N as Te,m as Bs}from"./react-vendor-BDHNqS4B.js";import{Q as Vs,a as Us}from"./query-7-WHkg5t.js";import{b as qs,c as vt,f as Yr,d as zs,s as no,e as Wn,h as Qr,i as Ks,j as Gs,k as Ys,l as Qs,H as Xs,m as Qe,n as Xr,_ as Js,r as To,o as Zs,p as Ln,q as el,t as tl,u as ol,D as nl}from"./amplify-DYDcjoow.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function o(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=o(r);fetch(r.href,i)}})();const rl="modulepreload",il=function(e){return"/"+e},On={},R=function(t,o,n){let r=Promise.resolve();if(o&&o.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),s=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));r=Promise.allSettled(o.map(d=>{if(d=il(d),d in On)return;On[d]=!0;const c=d.endsWith(".css"),p=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${p}`))return;
2const m=document.createElement("link");if(m.rel=c?"stylesheet":rl,c||(m.as="script"),m.crossOrigin="",m.href=d,s&&m.setAttribute("nonce",s),document.head.appendChild(m),c)return new Promise((g,h)=>{m.addEventListener("load",g),m.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${d}`)))})}))}function i(a){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=a,window.dispatchEvent(s),!s.defaultPrevented)throw a}return r.then(a=>{for(const s of a||[])s.status==="rejected"&&i(s.reason);return t().catch(i)})},al=1,sl=3e3;let Ao=0;function ll(){return Ao=(Ao+1)%Number.MAX_SAFE_INTEGER,Ao.toString()}const Eo=new Map,Fn=e=>{if(Eo.has(e))return;const t=setTimeout(()=>{Eo.delete(e),Nt({type:"REMOVE_TOAST",toastId:e})},sl);Eo.set(e,t)},cl=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,al)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(o=>o.id===t.toast.id?{...o,...t.toast}:o)};case"DISMISS_TOAST":{const{toastId:o}=t;return o?Fn(o):e.toasts.forEach(n=>{Fn(n.id)}),{...e,toasts:e.toasts.map(n=>n.id===o||o===void 0?{...n,open:!1}:n)}}case"REMOVE_TOAST":return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(o=>o.id!==t.toastId)}}},Xt=[];let Jt={toasts:[]};function Nt(e){Jt=cl(Jt,e),Xt.forEach(t=>{t(Jt)})}function dl({...e}){const t=ll(),o=r=>Nt({type:"UPDATE_TOAST",toast:{...r,id:t}}),n=()=>Nt({type:"DISMISS_TOAST",toastId:t});return Nt({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:r=>{r||n()}}}),{id:t,dismiss:n,update:o}}function ul(){const[e,t]=u.useState(Jt);return u.useEffect(()=>(Xt.push(t),()=>{const o=Xt.indexOf(t);o>-1&&Xt.splice(o,1)}),[e]),{...e,toast:dl,dismiss:o=>Nt({type:"DISMISS_TOAST",toastId:o})}}function oe(e,t,{checkForDefaultPrevented:o=!0}={}){return function(r){if(e==null||e(r),o===!1||!r.defaultPrevented)return t==null?void 0:t(r)}}function _n(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Jr(...e){return t=>{let o=!1;const n=e.map(r=>{const i=_n(r,t);return!o&&typeof i=="function"&&(o=!0),i});if(o)return()=>{for(let r=0;r<n.length;r++){const i=n[r];typeof i=="function"?i():_n(e[r],null)}}}}function ue(...e){return u.useCallback(Jr(...e),e)}function pl(e,t){const o=u.createContext(t),n=i=>{const{children:a,...s}=i,d=u.useMemo(()=>s,Object.values(s));return l.jsx(o.Provider,{value:d,children:a})};n.displayName=e+"Provider";function r(i){const a=u.useContext(o);if(a)return a;if(t!==void 0)return t;throw new Error(`\`${i}\` must be used within \`${e}\``)}return[n,r]}function Ft(e,t=[]){let o=[];function n(i,a){const s=u.createContext(a),d=o.length;o=[...o,a];const c=m=>{var w;const{scope:g,children:h,...y}=m,f=((w=g==null?void 0:g[e])==null?void 0:w[d])||s,v=u.useMemo(()=>y,Object.values(y));return l.jsx(f.Provider,{value:v,children:h})};c.displayName=i+"Provider";function p(m,g){var f;const h=((f=g==null?void 0:g[e])==null?void 0:f[d])||s,y=u.useContext(h);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[c,p]}const r=()=>{const i=o.map(a=>u.createContext(a));return function(s){const d=(s==null?void 0:s[e])||i;return u.useMemo(()=>({[`__scope${e}`]:{...s,[e]:d}}),[s,d])}};return r.scopeName=e,[n,hl(r,...t)]}function hl(...e){const t=e[0];if(e.length===1)return t;const o=()=>{const n=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(i){const a=n.reduce((s,{useScope:d,scopeName:c})=>{const m=d(i)[`__scope${c}`];return{...s,...m}},{});return u.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return o.scopeName=t.scopeName,o}function It(e){const t=fl(e),o=u.forwardRef((n,r)=>{const{children:i,...a}=n,s=u.Children.toArray(i),d=s.find(yl);if(d){const c=d.props.children,p=s.map(m=>m===d?u.Children.count(c)>1?u.Children.only(null):u.isValidElement(c)?c.props.children:null:m);return l.jsx(t,{...a,ref:r,children:u.isValidElement(c)?u.cloneElement(c,void 0,p):null})}return l.jsx(t,{...a,ref:r,children:i})});return o.displayName=`${e}.Slot`,o}var ml=It("Slot");function fl(e){const t=u.forwardRef((o,n)=>{const{children:r,...i}=o;if(u.isValidElement(r)){const a=wl(r),s=vl(i,r.props);return r.type!==u.Fragment&&(s.ref=n?Jr(n,a):a),u.cloneElement(r,s)}return u.Children.count(r)>1?u.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Zr=Symbol("radix.slottable");function gl(e){const t=({children:o})=>l.jsx(l.Fragment,{children:o});return t.displayName=`${e}.Slottable`,t.__radixId=Zr,t}function yl(e){return u.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Zr}function vl(e,t){const o={...t};for(const n in t){const r=e[n],i=t[n];/^on[A-Z]/.test(n)?r&&i?o[n]=(...s)=>{const d=i(...s);return r(...s),d}:r&&(o[n]=r):n==="style"?o[n]={...r,...i}
vendor: 9,308 bytes, line 2
2:n==="className"&&(o[n]=[r,i].filter(Boolean).join(" "))}return{...e,...o}}function wl(e){var n,r;let t=(n=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:n.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}function bl(e){const t=e+"CollectionProvider",[o,n]=Ft(t),[r,i]=o(t,{collectionRef:{current:null},itemMap:new Map}),a=f=>{const{scope:v,children:w}=f,x=A.useRef(null),b=A.useRef(new Map).current;return l.jsx(r,{scope:v,itemMap:b,collectionRef:x,children:w})};a.displayName=t;const s=e+"CollectionSlot",d=It(s),c=A.forwardRef((f,v)=>{const{scope:w,children:x}=f,b=i(s,w),T=ue(v,b.collectionRef);return l.jsx(d,{ref:T,children:x})});c.displayName=s;const p=e+"CollectionItemSlot",m="data-radix-collection-item",g=It(p),h=A.forwardRef((f,v)=>{const{scope:w,children:x,...b}=f,T=A.useRef(null),k=ue(v,T),S=i(p,w);return A.useEffect(()=>(S.itemMap.set(T,{ref:T,...b}),()=>void S.itemMap.delete(T))),l.jsx(g,{[m]:"",ref:k,children:x})});h.displayName=p;function y(f){const v=i(e+"CollectionConsumer",f);return A.useCallback(()=>{const x=v.collectionRef.current;if(!x)return[];const b=Array.from(x.querySelectorAll(`[${m}]`));return Array.from(v.itemMap.values()).sort((S,C)=>b.indexOf(S.ref.current)-b.indexOf(C.ref.current))},[v.collectionRef,v.itemMap])}return[{Provider:a,Slot:c,ItemSlot:h},y,n]}var Pl=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],ae=Pl.reduce((e,t)=>{const o=It(`Primitive.${t}`),n=u.forwardRef((r,i)=>{const{asChild:a,...s}=r,d=a?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(d,{...s,ref:i})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function ei(e,t){e&&qr.flushSync(()=>e.dispatchEvent(t))}function We(e){const t=u.useRef(e);return u.useEffect(()=>{t.current=e}),u.useMemo(()=>(...o)=>{var n;return(n=t.current)==null?void 0:n.call(t,...o)},[])}function xl(e,t=globalThis==null?void 0:globalThis.document){const o=We(e);u.useEffect(()=>{const n=r=>{r.key==="Escape"&&o(r)};return t.addEventListener("keydown",n,{capture:!0}),()=>t.removeEventListener("keydown",n,{capture:!0})},[o,t])}var Sl="DismissableLayer",Vo="dismissableLayer.update",Tl="dismissableLayer.pointerDownOutside",Al="dismissableLayer.focusOutside",Mn,ti=u.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),uo=u.forwardRef((e,t)=>{const{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:n,onPointerDownOutside:r,onFocusOutside:i,onInteractOutside:a,onDismiss:s,...d}=e,c=u.useContext(ti),[p,m]=u.useState(null),g=(p==null?void 0:p.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,h]=u.useState({}),y=ue(t,C=>m(C)),f=Array.from(c.layers),[v]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),w=f.indexOf(v),x=p?f.indexOf(p):-1,b=c.layersWithOutsidePointerEventsDisabled.size>0,T=x>=w,k=kl(C=>{const L=C.target,O=[...c.branches].some(F=>F.contains(L));!T||O||(r==null||r(C),a==null||a(C),C.defaultPrevented||s==null||s())},g),S=Cl(C=>{const L=C.target;[...c.branches].some(F=>F.contains(L))||(i==null||i(C),a==null||a(C),C.defaultPrevented||s==null||s())},g);return xl(C=>{x===c.layers.size-1&&(n==null||n(C),!C.defaultPrevented&&s&&(C.preventDefault(),s()))},g),u.useEffect(()=>{if(p)return o&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(Mn=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(p)),c.layers.add(p),jn(),()=>{o&&c.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=Mn)}},[p,g,o,c]),u.useEffect(()=>()=>{p&&(c.layers.delete(p),c.layersWithOutsidePointerEventsDisabled.delete(p),jn())},[p,c]),u.useEffect(()=>{const C=()=>h({});return document.addEventListener(Vo,C),()=>document.removeEventListener(Vo,C)},[]),l.jsx(ae.div,{...d,ref:y,style:{pointerEvents:b?T?"auto":"none":void 0,...e.style},onFocusCapture:oe(e.onFocusCapture,S.onFocusCapture),onBlurCapture:oe(e.onBlurCapture,S.onBlurCapture),onPointerDownCapture:oe(e.onPointerDownCapture,k.onPointerDownCapture)})});uo.displayName=Sl;var El="DismissableLayerBranch",oi=u.forwardRef((e,t)=>{const o=u.useContext(ti),n=u.useRef(null),r=ue(t,n);return u.useEffect(()=>{const i=n.current;if(i)return o.branches.add(i),()=>{o.branches.delete(i)}},[o.branches]),l.jsx(ae.div,{...e,ref:r})});oi.displayName=El;function kl(e,t=globalThis==null?void 0:globalThis.document){const o=We(e),n=u.useRef(!1),r=u.useRef(()=>{});return u.useEffect(()=>{const i=s=>{if(s.target&&!n.current){let d=function(){ni(Tl,o,c,{discrete:!0})};const c={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=d,t.addEventListener("click",r.current,{once:!0})):d()}else t.removeEventListener("click",r.current);n.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",i),t.removeEventListener("click",r.current)}},[t,o]),{onPointerDownCapture:()=>n.current=!0}}function Cl(e,t=globalThis==null?void 0:globalThis.document){const o=We(e),n=u.useRef(!1);return u.useEffect(()=>{const r=i=>{i.target&&!n.current&&ni(Al,o,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,o]),{onFocusCapture:()=>n.current=!0,onBlurCapture:()=>n.current=!1}}function jn(){const e=new CustomEvent(Vo);document.dispatchEvent(e)}function ni(e,t,o,{discrete:n}){const r=o.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:o});t&&r.addEventListener(e,t,{once:!0}),n?ei(r,i):r.dispatchEvent(i)}var Nl=uo,Rl=oi,je=globalThis!=null&&globalThis.document?u.useLayoutEffect:()=>{},Il="Portal",ln=u.forwardRef((e,t)=>{var s;const{container:o,...n}=e,[r,i]=u.useState(!1);je(()=>i(!0),[]);const a=o||r&&((s=globalThis==null?void 0:globalThis.document)==null?void 0:s.body);return a?zr.createPortal(l.jsx(ae.div,{...n,ref:t}),a):null});ln.displayName=Il;function Dl(e,t){return u.useReducer((o,n)=>t[o][n]??o,e)}var wt=e=>{const{present:t,children:o}=e,n=Wl(t),r=typeof o=="function"?o({present:n.isPresent}):u.Children.only(o),i=ue(n.ref,Ll(r));return typeof o=="function"||n.isPresent?u.cloneElement(r,{ref:i}):null};wt.displayName="Presence";function Wl(e){const[t,o]=u.useState(),n=u.useRef(null),r=u.useRef(e),i=u.useRef("none"),a=e?"mounted":"unmounted",[s,d]=Dl(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return u.useEffect(()=>{const c=Ht(n.current);i.current=s==="mounted"?c:"none"},[s]),je(()=>{const c=n.current,p=r.current;if(p!==e){const g=i.current,h=Ht(c);e?d("MOUNT"):h==="none"||(c==null?void 0:c.display)==="none"?d("UNMOUNT"):d(p&&g!==h?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,d]),je(()=>{if(t){let c;const p=t.ownerDocument.defaultView??window,m=h=>{const f=Ht(n.current).includes(h.animationName);if(h.target===t&&f&&(d("ANIMATION_END"),!r.current)){const v=t.style.animationFillMode;t.style.animationFillMode="forwards",c=p.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=v)})}},g=h=>{h.target===t&&(i.current=Ht(n.current))};return t.addEventListener("animationstart",g),t.addEventListener("animationcancel",m),t.addEventListener("animationend",m),()=>{p.clearTimeout(c),t.removeEventListener("animationstart",g),t.removeEventListener("animationcancel",m),t.removeEventListener("animationend",m)}}else d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:u.useCallback(c=>{n.current=c?getComputedStyle(c):null,o(c)},[])}}function Ht(e){return(e==null?void 0:e.animationName)||"none"}function Ll(e){var n,r;let t=(n=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:n.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}var Ol=Kr[" useInsertionEffect ".trim().toString()]||je;function ri({prop:e,defaultProp:t,onChange:o=()=>{},caller:n}){const[r,i,a]=Fl({defaultProp:t,onChange:o}),s=e!==void 0,d=s?e:r;{const p=u.useRef(e!==void 0);u.useEffect(()=>{const m=p.current;m!==s&&console.warn(`${n} is changing from ${m?"controlled":"uncontrolled"} to ${s?"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.`),p.current=s},[s,n])}const c=u.useCallback(p=>{var m;if(s){const g=_l(p)?p(e):p;g!==e&&((m=a.current)==null||m.call(a,g))}else i(p)},[s,e,i,a]);return[d,c]}function Fl({defaultProp:e,onChange:t}){const[o,n]=u.useState(e),r=u.useRef(o),i=u.useRef(t);return Ol(()=>{i.current=t},[t]),u.useEffect(()=>{var a;r.current!==o&&((a=i.current)==null||a.call(i,o),r.current=o)},[o,r]),[o,n,i]}function _l(e){return typeof e=="function"}var Ml=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),jl="VisuallyHidden",po=u.forwardRef((e,t)=>
2l.jsx(ae.span,{...e,ref:t,style:{...Ml,...e.style}}));po.displayName=jl;var Hl=po,cn="ToastProvider",[dn,$l,Bl]=bl("Toast"),[ii,Xv]=Ft("Toast",[Bl]),[Vl,ho]=ii(cn),ai=e=>{const{__scopeToast:t,label:o="Notification",duration:n=5e3,swipeDirection:r="right",swipeThreshold:i=50,children:a}=e,[s,d]=u.useState(null),[c,p]=u.useState(0),m=u.useRef(!1),g=u.useRef(!1);return o.trim()||console.error(`Invalid prop \`label\` supplied to \`${cn}\`. Expected non-empty \`string\`.`),l.jsx(dn.Provider,{scope:t,children:l.jsx(Vl,{scope:t,label:o,duration:n,swipeDirection:r,swipeThreshold:i,toastCount:c,viewport:s,onViewportChange:d,onToastAdd:u.useCallback(()=>p(h=>h+1),[]),onToastRemove:u.useCallback(()=>p(h=>h-1),[]),isFocusedToastEscapeKeyDownRef:m,isClosePausedRef:g,children:a})})};ai.displayName=cn;var si="ToastViewport",Ul=["F8"],Uo="toast.viewportPause",qo="toast.viewportResume",li=u.forwardRef((e,t)=>{const{__scopeToast:o,hotkey:n=Ul,label:r="Notifications ({hotkey})",...i}=e,a=ho(si,o),s=$l(o),d=u.useRef(null),c=u.useRef(null),p=u.useRef(null),m=u.useRef(null),g=ue(t,m,a.onViewportChange),h=n.join("+").replace(/Key/g,"").replace(/Digit/g,""),y=a.toastCount>0;u.useEffect(()=>{const v=w=>{var b;n.length!==0&&n.every(T=>w[T]||w.code===T)&&((b=m.current)==null||b.focus())};return document.addEventListener("keydown",v),()=>document.removeEventListener("keydown",v)},[n]),u.useEffect(()=>{const v=d.current,w=m.current;if(y&&v&&w){const x=()=>{if(!a.isClosePausedRef.current){const S=new CustomEvent(Uo);w.dispatchEvent(S),a.isClosePausedRef.current=!0}},b=()=>{if(a.isClosePausedRef.current){const S=new CustomEvent(qo);w.dispatchEvent(S),a.isClosePausedRef.current=!1}},T=S=>{!v.contains(S.relatedTarget)&&b()},k=()=>{v.contains(document.activeElement)||b()};return v.addEventListener("focusin",x),v.addEventListener("focusout",T),v.addEventListener("pointermove",x),v.addEventListener("pointerleave",k),window.addEventListener("blur",x),window.addEventListener("focus",b),()=>{v.removeEventListener("focusin",x),v.removeEventListener("focusout",T),v.removeEventListener("pointermove",x),v.removeEventListener("pointerleave",k),window.removeEventListener("blur",x),window.removeEventListener("focus",b)}}},[y,a.isClosePausedRef]);const f=u.useCallback(({tabbingDirection:v})=>{const x=s().map(b=>{const T=b.ref.current,k=[T,...nc(T)];return v==="forwards"?k:k.reverse()});return(v==="forwards"?x.reverse():x).flat()},[s]);return u.useEffect(()=>{const v=m.current;if(v){const w=x=>{var k,S,C;const b=x.altKey||x.ctrlKey||x.metaKey;if(x.key==="Tab"&&!b){const L=document.activeElement,O=x.shiftKey;if(x.target===v&&O){(k=c.current)==null||k.focus();return}const W=f({tabbingDirection:O?"backwards":"forwards"}),z=W.findIndex(N=>N===L);ko(W.slice(z+1))?x.preventDefault():O?(S=c.current)==null||S.focus():(C=p.current)==null||C.focus()}};return v.addEventListener("keydown",w),()=>v.removeEventListener("keydown",w)}},[s,f]),l.jsxs(Rl,{ref:d,role:"region","aria-label":r.replace("{hotkey}",h),tabIndex:-1,style:{pointerEvents:y?void 0:"none"},children:[y&&l.jsx(zo,{ref:c,onFocusFromOutsideViewport:()=>{const v=f({tabbingDirection:"forwards"});ko(v)}}),l.jsx(dn.Slot,{scope:o,children:l.jsx(ae.ol,{tabIndex:-1,...i,ref:g})}),y&&l.jsx(zo,{ref:p,onFocusFromOutsideViewport:()=>{const v=f({tabbingDirection:"backwards"});ko(v)}})]})});li.displayName=si;var ci="ToastFocusProxy",zo=u.forwardRef((e,t)=>{const{__scopeToast:o,onFocusFromOutsideViewport:n,...r}=e,i=ho(ci,o);return l.jsx(po,{"aria-hidden":!0,tabIndex:0,...r,ref:t,style:{position:"fixed"},onFocus:a=>{var c;const s=a.relatedTarget;!((c=i.viewport)!=null&&c.contains(s))&&n()}})});zo.displayName=ci;var _t="Toast",ql="toast.swipeStart",zl="toast.swipeMove",Kl="toast.swipeCancel",Gl="toast.swipeEnd",di=u.forwardRef((e,t)=>{const{forceMount:o,open:n,defaultOpen:r,onOpenChange:i,...a}=e,[s,d]=ri({prop:n,defaultProp:r??!0,onChange:i,caller:_t});return l.jsx(wt,{present:o||s,children:l.jsx(Xl,{open:s,...a,ref:t,onClose:()=>d(!1),onPause:We(e.onPause),onResume:We(e.onResume),onSwipeStart:oe(e.onSwipeStart,c=>{c.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:oe(e.onSwipeMove,c=>{const{x:p,y:m}=c.detail.delta;c.currentTarget.setAttribute("data-swipe","move"),c.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${p}px`),c.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${m}px`)}),onSwipeCancel:oe(e.onSwipeCancel,c=>{c.currentTarget.setAttribute("data-swipe","cancel"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),c.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),c.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:oe(e.onSwipeEnd,c=>{const{x:p,y:m}=c.detail.delta;c.currentTarget.setAttribute("data-swipe","end"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),c.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${p}px`),c.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${m}px`),d(!1)})})})});di.displayName=_t;var[Yl,Ql]=ii(_t,{onClose(){}}),Xl=u.forwardRef((e,t)=>
2{const{__scopeToast:o,type:n="foreground",duration:r,open:i,onClose:a,onEscapeKeyDown:s,onPause:d,onResume:c,onSwipeStart:p,onSwipeMove:m,onSwipeCancel:g,onSwipeEnd:h,...y}=e,f=ho(_t,o),[v,w]=u.useState(null),x=ue(t,N=>w(N)),b=u.useRef(null),T=u.useRef(null),k=r||f.duration,S=u.useRef(0),C=u.useRef(k),L=u.useRef(0),{onToastAdd:O,onToastRemove:F}=f,q=We(()=>{var Q;(v==null?void 0:v.contains(document.activeElement))&&((Q=f.viewport)==null||Q.focus()),a()}),W=u.useCallback(N=>{!N||N===1/0||(window.clearTimeout(L.current),S.current=new Date().getTime(),L.current=window.setTimeout(q,N))},[q]);u.useEffect(()=>{const N=f.viewport;if(N){const Q=()=>{W(C.current),c==null||c()},V=()=>{const U=new Date().getTime()-S.current;C.current=C.current-U,window.clearTimeout(L.current),d==null||d()};return N.addEventListener(Uo,V),N.addEventListener(qo,Q),()=>{N.removeEventListener(Uo,V),N.removeEventListener(qo,Q)}}},[f.viewport,k,d,c,W]),u.useEffect(()=>{i&&!f.isClosePausedRef.current&&W(k)},[i,k,f.isClosePausedRef,W]),u.useEffect(()=>(O(),()=>F()),[O,F]);const z=u.useMemo(()=>v?yi(v):null,[v]);return f.viewport?l.jsxs(l.Fragment,{children:[z&&l.jsx(Jl,{__scopeToast:o,role:"status","aria-live":n==="foreground"?"assertive":"polite","aria-atomic":!0,children:z}),l.jsx(Yl,{scope:o,onClose:q,children:qr.createPortal(l.jsx(dn.ItemSlot,{scope:o,children:l.jsx(Nl,{asChild:!0,onEscapeKeyDown:oe(s,()=>{f.isFocusedToastEscapeKeyDownRef.current||q(),f.isFocusedToastEscapeKeyDownRef.current=!1}),children:l.jsx(ae.li,{role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":i?"open":"closed","data-swipe-direction":f.swipeDirection,...y,ref:x,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:oe(e.onKeyDown,N=>{N.key==="Escape"&&(s==null||s(N.nativeEvent),N.nativeEvent.defaultPrevented||(f.isFocusedToastEscapeKeyDownRef.current=!0,q()))}),onPointerDown:oe(e.onPointerDown,N=>{N.button===0&&(b.current={x:N.clientX,y:N.clientY})}),onPointerMove:oe(e.onPointerMove,N=>{if(!b.current)return;const Q=N.clientX-b.current.x,V=N.clientY-b.current.y,U=!!T.current,Y=["left","right"].includes(f.swipeDirection),I=["left","up"].includes(f.swipeDirection)?Math.min:Math.max,J=Y?I(0,Q):0,j=Y?0:I(0,V),_=N.pointerType==="touch"?10:2,D={x:J,y:j},K={originalEvent:N,delta:D};U?(T.current=D,$t(zl,m,K,{discrete:!1})):Hn(D,f.swipeDirection,_)?(T.current=D,$t(ql,p,K,{discrete:!1}),N.target.setPointerCapture(N.pointerId)):(Math.abs(Q)>_||Math.abs(V)>_)&&(b.current=null)}),onPointerUp:oe(e.onPointerUp,N=>{const Q=T.current,V=N.target;if(V.hasPointerCapture(N.pointerId)&&V.releasePointerCapture(N.pointerId),T.current=null,b.current=null,Q){const U=N.currentTarget,Y={originalEvent:N,delta:Q};Hn(Q,f.swipeDirection,f.swipeThreshold)?$t(Gl,h,Y,{discrete:!0}):$t(Kl,g,Y,{discrete:!0}),U.addEventListener("click",I=>I.preventDefault(),{once:!0})}})})})}),f.viewport)})]}):null}),Jl=e=>{const{__scopeToast:t,children:o,...n}=e,r=ho(_t,t),[i,a]=u.useState(!1),[s,d]=u.useState(!1);return tc(()=>a(!0)),u.useEffect(()=>{const c=window.setTimeout(()=>d(!0),1e3);return()=>window.clearTimeout(c)},[]),s?null:l.jsx(ln,{asChild:!0,children:l.jsx(po,{...n,children:i&&l.jsxs(l.Fragment,{children:[r.label," ",o]})})})},Zl="ToastTitle",ui=u.forwardRef((e,t)=>{const{__scopeToast:o,...n}=e;return l.jsx(ae.div,{...n,ref:t})});ui.displayName=Zl;var ec="ToastDescription",pi=u.forwardRef((e,t)=>{const{__scopeToast:o,...n}=e;return l.jsx(ae.div,{...n,ref:t})});pi.displayName=ec;var hi="ToastAction",mi=u.forwardRef((e,t)=>{const{altText:o,...n}=e;return o.trim()?l.jsx(gi,{altText:o,asChild:!0,children:l.jsx(un,{...n,ref:t})}):(console.error(`Invalid prop \`altText\` supplied to \`${hi}\`. Expected non-empty \`string\`.`),null)});mi.displayName=hi;var fi="ToastClose",un=u.forwardRef((e,t)=>{const{__scopeToast:o,...n}=e,r=Ql(fi,o);return l.jsx(gi,{asChild:!0,children:l.jsx(ae.button,{type:"button",...n,ref:t,onClick:oe(e.onClick,r.onClose)})})});un.displayName=fi;var gi=u.forwardRef((e,t)=>{const{__scopeToast:o,altText:n,...r}=e;return l.jsx(ae.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":n||void 0,...r,ref:t})});function yi(e){const t=[];
vendor: 5,819 bytes, lines 2-52
2return Array.from(e.childNodes).forEach(n=>{if(n.nodeType===n.TEXT_NODE&&n.textContent&&t.push(n.textContent),oc(n)){const r=n.ariaHidden||n.hidden||n.style.display==="none",i=n.dataset.radixToastAnnounceExclude==="";if(!r)if(i){const a=n.dataset.radixToastAnnounceAlt;a&&t.push(a)}else t.push(...yi(n))}}),t}function $t(e,t,o,{discrete:n}){const r=o.originalEvent.currentTarget,i=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:o});t&&r.addEventListener(e,t,{once:!0}),n?ei(r,i):r.dispatchEvent(i)}var Hn=(e,t,o=0)=>{const n=Math.abs(e.x),r=Math.abs(e.y),i=n>r;return t==="left"||t==="right"?i&&n>o:!i&&r>o};function tc(e=()=>{}){const t=We(e);je(()=>{let o=0,n=0;return o=window.requestAnimationFrame(()=>n=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(o),window.cancelAnimationFrame(n)}},[t])}function oc(e){return e.nodeType===e.ELEMENT_NODE}function nc(e){const t=[],o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const r=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||r?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)t.push(o.currentNode);return t}function ko(e){const t=document.activeElement;return e.some(o=>o===t?!0:(o.focus(),document.activeElement!==t))}var rc=ai,vi=li,wi=di,bi=ui,Pi=pi,xi=mi,Si=un;function Ti(e){var t,o,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(o=Ti(e[t]))&&(n&&(n+=" "),n+=o)}else for(o in e)e[o]&&(n&&(n+=" "),n+=o);return n}function Ai(){for(var e,t,o=0,n="",r=arguments.length;o<r;o++)(e=arguments[o])&&(t=Ti(e))&&(n&&(n+=" "),n+=t);return n}const $n=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Bn=Ai,pn=(e,t)=>o=>{var n;if((t==null?void 0:t.variants)==null)return Bn(e,o==null?void 0:o.class,o==null?void 0:o.className);const{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(c=>{const p=o==null?void 0:o[c],m=i==null?void 0:i[c];if(p===null)return null;const g=$n(p)||$n(m);return r[c][g]}),s=o&&Object.entries(o).reduce((c,p)=>{let[m,g]=p;return g===void 0||(c[m]=g),c},{}),d=t==null||(n=t.compoundVariants)===null||n===void 0?void 0:n.reduce((c,p)=>{let{class:m,className:g,...h}=p;return Object.entries(h).every(y=>{let[f,v]=y;return Array.isArray(v)?v.includes({...i,...s}[f]):{...i,...s}[f]===v})?[...c,m,g]:c},[]);return Bn(e,a,d,o==null?void 0:o.class,o==null?void 0:o.className)};/** 3 * @license lucide-react v0.462.0 - ISC 4 * 5 * This source code is licensed under the ISC license. 6 * See the LICENSE file in the root directory of this source tree. 7 */const ic=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ei=(...e)=>e.filter((t,o,n)=>!!t&&t.trim()!==""&&n.indexOf(t)===o).join(" ").trim();/** 8 * @license lucide-react v0.462.0 - ISC 9 * 10 * This source code is licensed under the ISC license. 11 * See the LICENSE file in the root directory of this source tree. 12 */var ac={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"};/** 13 * @license lucide-react v0.462.0 - ISC 14 * 15 * This source code is licensed under the ISC license. 16 * See the LICENSE file in the root directory of this source tree. 17 */const sc=u.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:o=2,absoluteStrokeWidth:n,className:r="",children:i,iconNode:a,...s},d)=>u.createElement("svg",{ref:d,...ac,width:t,height:t,stroke:e,strokeWidth:n?Number(o)*24/Number(t):o,className:Ei("lucide",r),...s},[...a.map(([c,p])=>u.createElement(c,p)),...Array.isArray(i)?i:[i]]));/** 18 * @license lucide-react v0.462.0 - ISC 19 * 20 * This source code is licensed under the ISC license. 21 * See the LICENSE file in the root directory of this source tree. 22 */const bt=(e,t)=>{const o=u.forwardRef(({className:n,...r},i)=>u.createElement(sc,{ref:i,iconNode:t,className:Ei(`lucide-${ic(e)}`,n),...r}));return o.displayName=`${e}`,o};/** 23 * @license lucide-react v0.462.0 - ISC 24 * 25 * This source code is licensed under the ISC license. 26 * See the LICENSE file in the root directory of this source tree. 27 */const lc=bt("Apple",[["path",{d:"M12 20.94c1.5 0 2.75 1.06 4 1.06 3 0 6-8 6-12.22A4.91 4.91 0 0 0 17 5c-2.22 0-4 1.44-5 2-1-.56-2.78-2-5-2a4.9 4.9 0 0 0-5 4.78C2 14 5 22 8 22c1.25 0 2.5-1.06 4-1.06Z",key:"3s7exb"}],["path",{d:"M10 2c1 .5 2 2 2 5",key:"fcco2y"}]]);/** 28 * @license lucide-react v0.462.0 - ISC 29 * 30 * This source code is licensed under the ISC license. 31 * See the LICENSE file in the root directory of this source tree. 32 */const Bt=bt("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/** 33 * @license lucide-react v0.462.0 - ISC 34 * 35 * This source code is licensed under the ISC license. 36 * See the LICENSE file in the root directory of this source tree. 37 */const tt=bt("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** 38 * @license lucide-react v0.462.0 - ISC 39 * 40 * This source code is licensed under the ISC license. 41 * See the LICENSE file in the root directory of this source tree. 42 */const Vt=bt("Mail",[["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"}]]);/** 43 * @license lucide-react v0.462.0 - ISC 44 * 45 * This source code is licensed under the ISC license. 46 * See the LICENSE file in the root directory of this source tree. 47 */const cc=bt("User",[["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"}]]);/** 48 * @license lucide-react v0.462.0 - ISC 49 * 50 * This source code is licensed under the ISC license. 51 * See the LICENSE file in the root directory of this source tree. 52 */const ki=bt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}
vendor: 9,078 bytes, line 52
52],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),hn="-",dc=e=>{const t=pc(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:n}=e;return{getClassGroupId:a=>{const s=a.split(hn);return s[0]===""&&s.length!==1&&s.shift(),Ci(s,t)||uc(a)},getConflictingClassGroupIds:(a,s)=>{const d=o[a]||[];return s&&n[a]?[...d,...n[a]]:d}}},Ci=(e,t)=>{var a;if(e.length===0)return t.classGroupId;const o=e[0],n=t.nextPart.get(o),r=n?Ci(e.slice(1),n):void 0;if(r)return r;if(t.validators.length===0)return;const i=e.join(hn);return(a=t.validators.find(({validator:s})=>s(i)))==null?void 0:a.classGroupId},Vn=/^\[(.+)\]$/,uc=e=>{if(Vn.test(e)){const t=Vn.exec(e)[1],o=t==null?void 0:t.substring(0,t.indexOf(":"));if(o)return"arbitrary.."+o}},pc=e=>{const{theme:t,prefix:o}=e,n={nextPart:new Map,validators:[]};return mc(Object.entries(e.classGroups),o).forEach(([i,a])=>{Ko(a,n,i,t)}),n},Ko=(e,t,o,n)=>{e.forEach(r=>{if(typeof r=="string"){const i=r===""?t:Un(t,r);i.classGroupId=o;return}if(typeof r=="function"){if(hc(r)){Ko(r(n),t,o,n);return}t.validators.push({validator:r,classGroupId:o});return}Object.entries(r).forEach(([i,a])=>{Ko(a,Un(t,i),o,n)})})},Un=(e,t)=>{let o=e;return t.split(hn).forEach(n=>{o.nextPart.has(n)||o.nextPart.set(n,{nextPart:new Map,validators:[]}),o=o.nextPart.get(n)}),o},hc=e=>e.isThemeGetter,mc=(e,t)=>t?e.map(([o,n])=>{const r=n.map(i=>typeof i=="string"?t+i:typeof i=="object"?Object.fromEntries(Object.entries(i).map(([a,s])=>[t+a,s])):i);return[o,r]}):e,fc=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,o=new Map,n=new Map;const r=(i,a)=>{o.set(i,a),t++,t>e&&(t=0,n=o,o=new Map)};return{get(i){let a=o.get(i);if(a!==void 0)return a;if((a=n.get(i))!==void 0)return r(i,a),a},set(i,a){o.has(i)?o.set(i,a):r(i,a)}}},Ni="!",gc=e=>{const{separator:t,experimentalParseClassName:o}=e,n=t.length===1,r=t[0],i=t.length,a=s=>{const d=[];let c=0,p=0,m;for(let v=0;v<s.length;v++){let w=s[v];if(c===0){if(w===r&&(n||s.slice(v,v+i)===t)){d.push(s.slice(p,v)),p=v+i;continue}if(w==="/"){m=v;continue}}w==="["?c++:w==="]"&&c--}const g=d.length===0?s:s.substring(p),h=g.startsWith(Ni),y=h?g.substring(1):g,f=m&&m>p?m-p:void 0;return{modifiers:d,hasImportantModifier:h,baseClassName:y,maybePostfixModifierPosition:f}};return o?s=>o({className:s,parseClassName:a}):a},yc=e=>{if(e.length<=1)return e;const t=[];let o=[];return e.forEach(n=>{n[0]==="["?(t.push(...o.sort(),n),o=[]):o.push(n)}),t.push(...o.sort()),t},vc=e=>({cache:fc(e.cacheSize),parseClassName:gc(e),...dc(e)}),wc=/\s+/,bc=(e,t)=>{const{parseClassName:o,getClassGroupId:n,getConflictingClassGroupIds:r}=t,i=[],a=e.trim().split(wc);let s="";for(let d=a.length-1;d>=0;d-=1){const c=a[d],{modifiers:p,hasImportantModifier:m,baseClassName:g,maybePostfixModifierPosition:h}=o(c);let y=!!h,f=n(y?g.substring(0,h):g);if(!f){if(!y){s=c+(s.length>0?" "+s:s);continue}if(f=n(g),!f){s=c+(s.length>0?" "+s:s);continue}y=!1}const v=yc(p).join(":"),w=m?v+Ni:v,x=w+f;if(i.includes(x))continue;i.push(x);const b=r(f,y);for(let T=0;T<b.length;++T){const k=b[T];i.push(w+k)}s=c+(s.length>0?" "+s:s)}return s};function Pc(){let e=0,t,o,n="";for(;e<arguments.length;)(t=arguments[e++])&&(o=Ri(t))&&(n&&(n+=" "),n+=o);return n}const Ri=e=>{if(typeof e=="string")return e;let t,o="";for(let n=0;n<e.length;n++)e[n]&&(t=Ri(e[n]))&&(o&&(o+=" "),o+=t);return o};function xc(e,...t){let o,n,r,i=a;function a(d){const c=t.reduce((p,m)=>m(p),e());return o=vc(c),n=o.cache.get,r=o.cache.set,i=s,s(d)}function s(d){const c=n(d);if(c)return c;const p=bc(d,o);return r(d,p),p}return function(){return i(Pc.apply(null,arguments))}}const ee=e=>{const t=o=>o[e]||[];return t.isThemeGetter=!0,t},Ii=/^\[(?:([a-z-]+):)?(.+)\]$/i,Sc=/^\d+\/\d+$/,Tc=new Set(["px","full","screen"]),Ac=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ec=/\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$/,kc=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Cc=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Nc=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Me=e=>mt(e)||Tc.has(e)||Sc.test(e),Ke=e=>Pt(e,"length",_c),mt=e=>!!e&&!Number.isNaN(Number(e)),Co=e=>Pt(e,"number",mt),St=e=>!!e&&Number.isInteger(Number(e)),Rc=e=>e.endsWith("%")&&mt(e.slice(0,-1)),B=e=>Ii.test(e),Ge=e=>Ac.test(e),Ic=new Set(["length","size","percentage"]),Dc=e=>Pt(e,Ic,Di),Wc=e=>Pt(e,"position",Di),Lc=new Set(["image","url"]),Oc=e=>Pt(e,Lc,jc),Fc=e=>Pt(e,"",Mc),Tt=()=>!0,Pt=(e,t,o)=>{const n=Ii.exec(e);return n?n[1]?typeof t=="string"?n[1]===t:t.has(n[1]):o(n[2]):!1},_c=e=>Ec.test(e)&&!kc.test(e),Di=()=>!1,Mc=e=>Cc.test(e),jc=e=>Nc.test(e),Hc=()=>{const e=ee("colors"),t=ee("spacing"),o=ee("blur"),n=ee("brightness"),r=ee("borderColor"),i=ee("borderRadius"),a=ee("borderSpacing"),s=ee("borderWidth"),d=ee("contrast"),c=ee("grayscale"),p=ee("hueRotate"),m=ee("invert"),g=ee("gap"),h=ee("gradientColorStops"),y=ee("gradientColorStopPositions"),f=ee("inset"),v=ee("margin"),w=ee("opacity"),x=ee("padding"),b=ee("saturate"),T=ee("scale"),k=ee("sepia"),S=ee("skew"),C=ee("space"),L=ee("translate"),O=()=>["auto","contain","none"],F=()=>["auto","hidden","clip","visible","scroll"],q=()=>["auto",B,t],W=()=>[B,t],z=()=>["",Me,Ke],N=()=>["auto",mt,B],Q=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],V=()=>["solid","dashed","dotted","double","none"],U=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Y=()=>["start","end","center","between","around","evenly","stretch"],I=()=>["","0",B],J=()=>["auto","avoid","all","avoid-page","page","left","right","column"],j=()=>[mt,B];return{cacheSize:500,separator:":",theme:{colors:[Tt],spacing:[Me,Ke],blur:["none","",Ge,B],brightness:j(),borderColor:[e],borderRadius:["none","","full",Ge,B],borderSpacing:W(),borderWidth:z(),contrast:j(),grayscale:I(),hueRotate:j(),invert:I(),gap:W(),gradientColorStops:[e],gradientColorStopPositions:[Rc,Ke],inset:q(),margin:q(),opacity:j(),padding:W(),saturate:j(),scale:j(),sepia:I(),skew:j(),space:W(),translate:W()},classGroups:{aspect:[{aspect:["auto","square","video",B]}],container:["container"],columns:[{columns:[Ge]}],"break-after":[{"break-after":J()}],"break-before":[{"break-before":J()}],"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"],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:[...Q(),B]}],overflow:[{overflow:F()}],"overflow-x":[{"overflow-x":F()}],"overflow-y":[{"overflow-y":F()}],overscroll:[{overscroll:O()}],"overscroll-x":[{"overscroll-x":O()}],"overscroll-y":[{"overscroll-y":O()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[f]}],"inset-x":[{"inset-x":[f]}],"inset-y":[{"inset-y":[f]}],start:[{start:[f]}],end:[{end:[f]}],top:[{top:[f]}],right:[{right:[f]}],bottom:[{bottom:[f]}],left:[{left:[f]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",St,B]}],basis:[{basis:q()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",B]}],grow:[{grow:I()}],shrink:[{shrink:I()}],order:[{order:["first","last","none",St,B]}],"grid-cols":[{"grid-cols":[Tt]}],"col-start-end":[{col:["auto",{span:["full",St,B]},B]}],"col-start":[{"col-start":N()}],"col-end":[{"col-end":N()}],"grid-rows":[{"grid-rows":[Tt]}],"row-start-end":[{row:["auto",{span:[St,B]},B]}],"row-start":[{"row-start":N()}],"row-end":[{"row-end":N()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",B]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",B]}],gap:[{gap:[g]}],"gap-x":[{"gap-x":[g]}],"gap-y":[{"gap-y":[g]}],"justify-content":[{justify:["normal",...Y()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...Y(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...Y(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[x]}],px:[{px:[x]}],py:[{py:[x]}],ps:[{ps:[x]}
vendor: 8,317 bytes, line 52
52],pe:[{pe:[x]}],pt:[{pt:[x]}],pr:[{pr:[x]}],pb:[{pb:[x]}],pl:[{pl:[x]}],m:[{m:[v]}],mx:[{mx:[v]}],my:[{my:[v]}],ms:[{ms:[v]}],me:[{me:[v]}],mt:[{mt:[v]}],mr:[{mr:[v]}],mb:[{mb:[v]}],ml:[{ml:[v]}],"space-x":[{"space-x":[C]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[C]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",B,t]}],"min-w":[{"min-w":[B,t,"min","max","fit"]}],"max-w":[{"max-w":[B,t,"none","full","min","max","fit","prose",{screen:[Ge]},Ge]}],h:[{h:[B,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[B,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[B,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[B,t,"auto","min","max","fit"]}],"font-size":[{text:["base",Ge,Ke]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Co]}],"font-family":[{font:[Tt]}],"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:["tighter","tight","normal","wide","wider","widest",B]}],"line-clamp":[{"line-clamp":["none",mt,Co]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Me,B]}],"list-image":[{"list-image":["none",B]}],"list-style-type":[{list:["none","disc","decimal",B]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[w]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[w]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...V(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Me,Ke]}],"underline-offset":[{"underline-offset":["auto",Me,B]}],"text-decoration-color":[{decoration:[e]}],"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",B]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",B]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[w]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Q(),Wc]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Dc]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Oc]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[y]}],"gradient-via-pos":[{via:[y]}],"gradient-to-pos":[{to:[y]}],"gradient-from":[{from:[h]}],"gradient-via":[{via:[h]}],"gradient-to":[{to:[h]}],rounded:[{rounded:[i]}],"rounded-s":[{"rounded-s":[i]}],"rounded-e":[{"rounded-e":[i]}],"rounded-t":[{"rounded-t":[i]}],"rounded-r":[{"rounded-r":[i]}],"rounded-b":[{"rounded-b":[i]}],"rounded-l":[{"rounded-l":[i]}],"rounded-ss":[{"rounded-ss":[i]}],"rounded-se":[{"rounded-se":[i]}],"rounded-ee":[{"rounded-ee":[i]}],"rounded-es":[{"rounded-es":[i]}],"rounded-tl":[{"rounded-tl":[i]}],"rounded-tr":[{"rounded-tr":[i]}],"rounded-br":[{"rounded-br":[i]}],"rounded-bl":[{"rounded-bl":[i]}],"border-w":[{border:[s]}],"border-w-x":[{"border-x":[s]}],"border-w-y":[{"border-y":[s]}],"border-w-s":[{"border-s":[s]}],"border-w-e":[{"border-e":[s]}],"border-w-t":[{"border-t":[s]}],"border-w-r":[{"border-r":[s]}],"border-w-b":[{"border-b":[s]}],"border-w-l":[{"border-l":[s]}],"border-opacity":[{"border-opacity":[w]}],"border-style":[{border:[...V(),"hidden"]}],"divide-x":[{"divide-x":[s]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[s]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[w]}],"divide-style":[{divide:V()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-s":[{"border-s":[r]}],"border-color-e":[{"border-e":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...V()]}],"outline-offset":[{"outline-offset":[Me,B]}],"outline-w":[{outline:[Me,Ke]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:z()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[w]}],"ring-offset-w":[{"ring-offset":[Me,Ke]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Ge,Fc]}],"shadow-color":[{shadow:[Tt]}],opacity:[{opacity:[w]}],"mix-blend":[{"mix-blend":[...U(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":U()}],filter:[{filter:["","none"]}],blur:[{blur:[o]}],brightness:[{brightness:[n]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",Ge,B]}],grayscale:[{grayscale:[c]}],"hue-rotate":[{"hue-rotate":[p]}],invert:[{invert:[m]}],saturate:[{saturate:[b]}],sepia:[{sepia:[k]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[o]}],"backdrop-brightness":[{"backdrop-brightness":[n]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[c]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[p]}],"backdrop-invert":[{"backdrop-invert":[m]}],"backdrop-opacity":[{"backdrop-opacity":[w]}],"backdrop-saturate":[{"backdrop-saturate":[b]}],"backdrop-sepia":[{"backdrop-sepia":[k]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[a]}],"border-spacing-x":[{"border-spacing-x":[a]}],"border-spacing-y":[{"border-spacing-y":[a]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",B]}],duration:[{duration:j()}],ease:[{ease:["linear","in","out","in-out",B]}],delay:[{delay:j()}],animate:[{animate:["none","spin","ping","pulse","bounce",B]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[T]}],"scale-x":[{"scale-x":[T]}],"scale-y":[{"scale-y":[T]}],rotate:[{rotate:[St,B]}],"translate-x":[{"translate-x":[L]}],"translate-y":[{"translate-y":[L]}],"skew-x":[{"skew-x":[S]}],"skew-y":[{"skew-y":[S]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",B]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],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",B]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],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-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-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"]}
52],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",B]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[Me,Ke,Co]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","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","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","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-s","border-w-e","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-s","border-color-e","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"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","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-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"]}}},$c=xc(Hc);function ce(...e){return $c(Ai(e))}const Bc=rc,Wi=u.forwardRef(({className:e,...t},o)=>l.jsx(vi,{ref:o,className:ce("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),...t}));Wi.displayName=vi.displayName;const Vc=pn("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"}}),Li=u.forwardRef(({className:e,variant:t,...o},n)=>l.jsx(wi,{ref:n,className:ce(Vc({variant:t}),e),...o}));Li.displayName=wi.displayName;const Uc=u.forwardRef(({className:e,...t},o)=>l.jsx(xi,{ref:o,className:ce("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 group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",e),...t}));Uc.displayName=xi.displayName;const Oi=u.forwardRef(({className:e,...t},o)=>l.jsx(Si,{ref:o,className:ce("absolute right-2 top-2 rounded-md p-1 text-foreground
52/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:l.jsx(ki,{className:"h-4 w-4"})}));Oi.displayName=Si.displayName;const Fi=u.forwardRef(({className:e,...t},o)=>l.jsx(bi,{ref:o,className:ce("text-sm font-semibold",e),...t}));Fi.displayName=bi.displayName;const _i=u.forwardRef(({className:e,...t},o)=>l.jsx(Pi,{ref:o,className:ce("text-sm opacity-90",e),...t}));_i.displayName=Pi.displayName;function qc(){const{toasts:e}=ul();return l.jsxs(Bc,{duration:3e3,children:[e.map(function({id:t,title:o,description:n,action:r,...i}){return l.jsxs(Li,{...i,children:[l.jsxs("div",{className:"grid gap-1",children:[o&&l.jsx(Fi,{children:o}),n&&l.jsx(_i,{children:n})]}),r,l.jsx(Oi,{})]},t)}),l.jsx(Wi,{})]})}var qn=["light","dark"],zc="(prefers-color-scheme: dark)",Kc=u.createContext(void 0),Gc={setTheme:e=>{},themes:[]},Yc=()=>{var e;return(e=u.useContext(Kc))!=null?e:Gc};u.memo(({forcedTheme:e,storageKey:t,attribute:o,enableSystem:n,enableColorScheme:r,defaultTheme:i,value:a,attrs:s,nonce:d})=>{let c=i==="system",p=o==="class"?`var d=document.documentElement,c=d.classList;${`c.remove(${s.map(y=>`'${y}'`).join(",")})`};`:`var d=document.documentElement,n='${o}',s='setAttribute';`,m=r?qn.includes(i)&&i?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${i}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",g=(y,f=!1,v=!0)=>{let w=a?a[y]:y,x=f?y+"|| ''":`'${w}'`,b="";return r&&v&&!f&&qn.includes(y)&&(b+=`d.style.colorScheme = '${y}';`),o==="class"?f||w?b+=`c.add(${x})`:b+="null":w&&(b+=`d[s](n,${x})`),b},h=e?`!function(){${p}${g(e)}}()`:n?`!function(){try{${p}var e=localStorage.getItem('${t}');if('system'===e||(!e&&${c})){var t='${zc}',m=window.matchMedia(t);if(m.media!==t||m.matches){${g("dark")}}else{${g("light")}}}else if(e){${a?`var x=${JSON.stringify(a)};`:""}${g(a?"x[e]":"e",!0)}}${c?"":"else{"+g(i,!1,!1)+"}"}${m}}catch(e){}}()`:`!function(){try{${p}var e=localStorage.getItem('${t}');if(e){${a?`var x=${JSON.stringify(a)};`:""}${g(a?"x[e]":"e",!0)}}else{${g(i,!1,!1)};}${m}}catch(t){}}();`;return u.createElement("script",{nonce:d,dangerouslySetInnerHTML:{__html:h}})});var Qc=e=>{switch(e){case"success":return Zc;case"info":return td;case"warning":return ed;case"error":return od;default:return null}},Xc=Array(12).fill(0),Jc=({visible:e,className:t})=>A.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},A.createElement("div",{className:"sonner-spinner"},Xc.map((o,n)=>A.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${n}`})))),Zc=A.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},A.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),ed=A.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},A.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),td=A.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},A.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),od=A.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},A.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),nd=A.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},A.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),A.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),rd=()=>{let[e,t]=A.useState(document.hidden);return A.useEffect(()=>{let o=()=>{t(document.hidden)};return document.addEventListener("visibilitychange",o),()=>window.removeEventListener("visibilitychange",o)},[]),e},Go=1,id=class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>
52{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{var t;let{message:o,...n}=e,r=typeof(e==null?void 0:e.id)=="number"||((t=e.id)==null?void 0:t.length)>0?e.id:Go++,i=this.toasts.find(s=>s.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(s=>s.id===r?(this.publish({...s,...e,id:r,title:o}),{...s,...e,id:r,dismissible:a,title:o}):s):this.addToast({title:o,...n,dismissible:a,id:r}),r},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(t=>{this.subscribers.forEach(o=>o({id:t.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:"error"}),this.success=(e,t)=>this.create({...t,type:"success",message:e}),this.info=(e,t)=>this.create({...t,type:"info",message:e}),this.warning=(e,t)=>this.create({...t,type:"warning",message:e}),this.loading=(e,t)=>
52this.create({...t,type:"loading",message:e}),this.promise=(e,t)=>{if(!t)return;let o;t.loading!==void 0&&(o=this.create({...t,promise:e,type:"loading",message:t.loading,description:typeof t.description!="function"?t.description:void 0}));let n=e instanceof Promise?e:e(),r=o!==void 0,i,a=n.then(async d=>{if(i=["resolve",d],A.isValidElement(d))r=!1,this.create({id:o,type:"default",message:d});else if(sd(d)&&!d.ok){r=!1;let c=typeof t.error=="function"?await t.error(`HTTP error! status: ${d.status}`):t.error,p=typeof t.description=="function"?await t.description(`HTTP error! status: ${d.status}`):t.description;this.create({id:o,type:"error",message:c,description:p})}else if(t.success!==void 0){r=!1;let c=typeof t.success=="function"?await t.success(d):t.success,p=typeof t.description=="function"?await t.description(d):t.description;this.create({id:o,type:"success",message:c,description:p})}}).catch(async d=>{if(i=["reject",d],t.error!==void 0){r=!1;let c=typeof t.error=="function"?await t.error(d):t.error,p=typeof t.description=="function"?await t.description(d):t.description;this.create({id:o,type:"error",message:c,description:p})}}).finally(()=>{var d;r&&(this.dismiss(o),o=void 0),(d=t.finally)==null||d.call(t)}),s=()=>new Promise((d,c)=>a.then(()=>i[0]==="reject"?c(i[1]):d(i[1])).catch(c));return typeof o!="string"&&typeof o!="number"?{unwrap:s}:Object.assign(o,{unwrap:s})},this.custom=(e,t)=>{let o=(t==null?void 0:t.id)||Go++;return this.create({jsx:e(o),id:o,...t}),o},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},he=new id,ad=(e,t)=>{let o=(t==null?void 0:t.id)||Go++;return he.addToast({title:e,...t,id:o}),o},sd=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",ld=ad,cd=()=>he.toasts,dd=()=>he.getActiveToasts(),Jv=Object.assign(ld,{success:he.success,info:he.info,warning:he.warning,error:he.error,custom:he.custom,message:he.message,promise:he.promise,dismiss:he.dismiss,loading:he.loading},{getHistory:cd,getToasts:dd});function ud(e,{insertAt:t}={}){if(typeof document>"u")return;let o=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t==="top"&&o.firstChild?o.insertBefore(n,o.firstChild):o.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}ud(`:where(html[dir="ltr"]),:where([data-sonner-toaster][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%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][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%)}:where([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:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([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);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([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 #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([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)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([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;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
52left: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);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-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
52:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([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}:where([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}:where([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, 0px)) translate(var(--swipe-amount-x, 0px));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{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{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{0%{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-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--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-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-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-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, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
52--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-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-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],[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],[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],[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],[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:nth-child(1){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)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{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%)} 53`);function Ut(e){return e.label!==void 0}var pd=3,hd="32px",md="16px",zn=4e3,fd=356,gd=14,yd=20,vd=200;function Ae(...e){return e.filter(Boolean).join(" ")}function wd(e){let[t,o]=e.split("-"),n=[];return t&&n.push(t),o&&n.push(o),n}var bd=e=>{var t,o,n,r,i,a,s,d,c,p,m;let{invert:g,toast:h,unstyled:y,interacting:f,setHeights:v,visibleToasts:w,heights:x,index:b,toasts:T,expanded:k,removeToast:S,defaultRichColors:C,closeButton:L,style:O,cancelButtonStyle:F,actionButtonStyle:q,className:W="",descriptionClassName:z="",duration:N,position:Q,gap:V,loadingIcon:U,expandByDefault:Y,classNames:I,icons:J,closeButtonAriaLabel:j="Close toast",pauseWhenPageIsHidden:_}=e,[D,K]=A.useState(null),[re,de]=A.useState(null),[X,He]=A.useState(!1),[Ne,Oe]=A.useState(!1),[ve,fe]=A.useState(!1),[we,$e]=A.useState(!1),[rt,Xe]=A.useState(!1),[Je,Ze]=A.useState(0),[Fe,xt]=A.useState(0),ge=A.useRef(h.duration||N||zn),be=A.useRef(null),_e=A.useRef(null),Po=b===0,xo=b+1<=w,pe=h.type,P=h.dismissible!==!1,$=h.className||"",G=h.descriptionClassName||"",ie=A.useMemo(()=>x.findIndex(H=>H.toastId===h.id)||0,[x,h.id]),it=A.useMemo(()=>{var H;return(H=h.closeButton)!=null?H:L},[h.closeButton,L]),Be=A.useMemo(()=>h.duration||N||zn,[h.duration,N]),ye=A.useRef(0),Ve=A.useRef(0),jt=A.useRef(0),at=A.useRef(null),[ks,Cs]=Q.split("-"),In=A.useMemo(()=>x.reduce((H,Z,te)=>te>=ie?H:H+Z.height,0),[x,ie]),Dn=rd(),Ns=h.invert||g,So=pe==="loading";Ve.current=A.useMemo(()=>ie*V+In,[ie,In]),A.useEffect(()=>{ge.current=Be},[Be]),A.useEffect(()=>{He(!0)},[]),A.useEffect(()=>{let H=_e.current;if(H){let Z=H.getBoundingClientRect().height;return xt(Z),v(te=>[{toastId:h.id,height:Z,position:h.position},...te]),()=>v(te=>te.filter(Pe=>Pe.toastId!==h.id))}},[v,h.id]),A.useLayoutEffect(()=>{if(!X)return;let H=_e.current,Z=H.style.height;H.style.height="auto";let te=H.getBoundingClientRect().height;H.style.height=Z,xt(te),v(Pe=>Pe.find(xe=>xe.toastId===h.id)?Pe.map(xe=>xe.toastId===h.id?{...xe,height:te}:xe):[{toastId:h.id,height:te,position:h.position},...Pe])},[X,h.title,h.description,v,h.id]);let Ue=A.useCallback(()=>{Oe(!0),Ze(Ve.current),v(H=>H.filter(Z=>Z.toastId!==h.id)),setTimeout(()=>{S(h)},vd)},[h,S,v,Ve]);A.useEffect(()=>{if(h.promise&&pe==="loading"||h.duration===1/0||h.type==="loading")return;let H;return k||f||_&&Dn?(()=>{if(jt.current<ye.current){let Z=new Date().getTime()-ye.current;ge.current=ge.current-Z}
53jt.current=new Date().getTime()})():ge.current!==1/0&&(ye.current=new Date().getTime(),H=setTimeout(()=>{var Z;(Z=h.onAutoClose)==null||Z.call(h,h),Ue()},ge.current)),()=>clearTimeout(H)},[k,f,h,pe,_,Dn,Ue]),A.useEffect(()=>{h.delete&&Ue()},[Ue,h.delete]);function Rs(){var H,Z,te;return J!=null&&J.loading?A.createElement("div",{className:Ae(I==null?void 0:I.loader,(H=h==null?void 0:h.classNames)==null?void 0:H.loader,"sonner-loader"),"data-visible":pe==="loading"},J.loading):U?A.createElement("div",{className:Ae(I==null?void 0:I.loader,(Z=h==null?void 0:h.classNames)==null?void 0:Z.loader,"sonner-loader"),"data-visible":pe==="loading"},U):A.createElement(Jc,{className:Ae(I==null?void 0:I.loader,(te=h==null?void 0:h.classNames)==null?void 0:te.loader),visible:pe==="loading"})}return A.createElement("li",{tabIndex:0,ref:_e,className:Ae(W,$,I==null?void 0:I.toast,(t=h==null?void 0:h.classNames)==null?void 0:t.toast,I==null?void 0:I.default,I==null?void 0:I[pe],(o=h==null?void 0:h.classNames)==null?void 0:o[pe]),"data-sonner-toast":"","data-rich-colors":(n=h.richColors)!=null?n:C,"data-styled":!(h.jsx||h.unstyled||y),"data-mounted":X,"data-promise":!!h.promise,"data-swiped":rt,"data-removed":Ne,"data-visible":xo,"data-y-position":ks,"data-x-position":Cs,"data-index":b,"data-front":Po,"data-swiping":ve,"data-dismissible":P,"data-type":pe,"data-invert":Ns,"data-swipe-out":we,"data-swipe-direction":re,"data-expanded":!!(k||Y&&X),style:{"--index":b,"--toasts-before":b,"--z-index":T.length-b,"--offset":`${Ne?Je:Ve.current}px`,"--initial-height":Y?"auto":`${Fe}px`,...O,...h.style},onDragEnd:()=>{fe(!1),K(null),at.current=null},onPointerDown:H=>{So||!P||(be.current=new Date,Ze(Ve.current),H.target.setPointerCapture(H.pointerId),H.target.tagName!=="BUTTON"&&(fe(!0),at.current={x:H.clientX,y:H.clientY}))},onPointerUp:()=>{var H,Z,te,Pe;if(we||!P)return;at.current=null;let xe=Number(((H=_e.current)==null?void 0:H.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),qe=Number(((Z=_e.current)==null?void 0:Z.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),et=new Date().getTime()-((te=be.current)==null?void 0:te.getTime()),Se=D==="x"?xe:qe,ze=Math.abs(Se)/et;if(Math.abs(Se)>=yd||ze>.11){Ze(Ve.current),(Pe=h.onDismiss)==null||Pe.call(h,h),de(D==="x"?xe>0?"right":"left":qe>0?"down":"up"),Ue(),$e(!0),Xe(!1);return}fe(!1),K(null)},onPointerMove:H=>{var Z,te,Pe,xe;if(!at.current||!P||((Z=window.getSelection())==null?void 0:Z.toString().length)>0)return;let qe=H.clientY-at.current.y,et=H.clientX-at.current.x,Se=(te=e.swipeDirections)!=null?te:wd(Q);!D&&(Math.abs(et)>1||Math.abs(qe)>1)&&K(Math.abs(et)>Math.abs(qe)?"x":"y");let ze={x:0,y:0};D==="y"?(Se.includes("top")||Se.includes("bottom"))&&(Se.includes("top")&&qe<0||Se.includes("bottom")&&qe>0)&&(ze.y=qe):D==="x"&&(Se.includes("left")||Se.includes("right"))&&(Se.includes("left")&&et<0||Se.includes("right")&&et>0)&&(ze.x=et),(Math.abs(ze.x)>0||Math.abs(ze.y)>0)&&Xe(!0),(Pe=_e.current)==null||Pe.style.setProperty("--swipe-amount-x",`${ze.x}px`),(xe=_e.current)==null||xe.style.setProperty("--swipe-amount-y",`${ze.y}px`)}},it&&!h.jsx?A.createElement("button",{"aria-label":j,"data-disabled":So,"data-close-button":!0,onClick:So||!P?()=>{}:()=>{var H;Ue(),(H=h.onDismiss)==null||H.call(h,h)},className:Ae(I==null?void 0:I.closeButton,(r=h==null?void 0:h.classNames)==null?void 0:r.closeButton)},(i=J==null?void 0:J.close)!=null?i:nd):null,h.jsx||u.isValidElement(h.title)?h.jsx?h.jsx:typeof h.title=="function"?h.title():h.title:A.createElement(A.Fragment,null,pe||h.icon||h.promise?A.createElement("div",{"data-icon":"",className:Ae(I==null?void 0:I.icon,(a=h==null?void 0:h.classNames)==null?void 0:a.icon)},h.promise||h.type==="loading"&&!h.icon?h.icon||Rs():null,h.type!=="loading"?h.icon||(J==null?void 0:J[pe])||Qc(pe):null):null,A.createElement("div",{"data-content":"",className:Ae(I==null?void 0:I.content,(s=h==null?void 0:h.classNames)==null?void 0:s.content)},A.createElement("div",{"data-title":"",className:Ae(I==null?void 0:I.title,(d=h==null?void 0:h.classNames)==null?void 0:d.title)},typeof h.title=="function"?h.title():h.title),h.description?A.createElement("div",{"data-description":"",className:Ae(z,G,I==null?void 0:I.description,(c=h==null?void 0:h.classNames)==null?void 0:c.description)},typeof h.description=="function"?h.description():h.description):null),u.isValidElement(h.cancel)?h.cancel:h.cancel&&Ut(h.cancel)?A.createElement("button",{"data-button":!0,"data-cancel":!0,style:h.cancelButtonStyle||F,onClick:H=>{var Z,te;Ut(h.cancel)&&P&&((te=(Z=h.cancel).onClick)==null||te.call(Z,H),Ue())},className:Ae(I==null?void 0:I.cancelButton,(p=h==null?void 0:h.classNames)==null?void 0:p.cancelButton)},h.cancel.label):null,u.isValidElement(h.action)?h.action:h.action&&Ut(h.action)?A.createElement("button",{"data-button":!0,"data-action":!0,style:h.actionButtonStyle||q,onClick:H=>{var Z,te;Ut(h.action)&&((te=(Z=h.action).onClick)==null||te.call(Z,H),!H.defaultPrevented&&Ue())},className:Ae(I==null?void 0:I.actionButton,(m=h==null?void 0:h.classNames)==null?void 0:m.actionButton)},h.action.label):null))};function Kn(){if(typeof window>"u"||typeof document>"u")return"ltr";let e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function Pd(e,t){let o={};return[e,t].forEach((n,r)=>{let i=r===1,a=i?"--mobile-offset":"--offset",s=i?md:hd;function d(c){["top","right","bottom","left"].forEach(p=>{o[`${a}-${p}`]=typeof c=="number"?`${c}px`:c})}typeof n=="number"||typeof n=="string"?d(n):typeof n=="object"?["top","right","bottom","left"].forEach(c=>{n[c]===void 0?o[`${a}-${c}`]=s:o[`${a}-${c}`]=typeof n[c]=="number"?`${n[c]}px`:n[c]}):d(s)}),o}var xd=u.forwardRef(function(e,t){let{invert:o,position:n="bottom-right",hotkey:r=["altKey","KeyT"],expand:i,closeButton:a,className:s,offset:d,mobileOffset:c,theme:p="light",richColors:m,duration:g,style:h,visibleToasts:y=pd,toastOptions:f,dir:v=Kn(),gap:w=gd,loadingIcon:x,icons:b,containerAriaLabel:T="Notifications",pauseWhenPageIsHidden:k}=e,[S,C]=A.useState([]),L=A.useMemo(()=>Array.from(new Set([n].concat(S.filter(_=>_.position).map(_=>_.position)))),[S,n]),[O,F]=A.useState([]),[q,W]=A.useState(!1),[z,N]=A.useState(!1),[Q,V]=A.useState(p!=="system"?p:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dar
53k":"light"),U=A.useRef(null),Y=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),I=A.useRef(null),J=A.useRef(!1),j=A.useCallback(_=>{C(D=>{var K;return(K=D.find(re=>re.id===_.id))!=null&&K.delete||he.dismiss(_.id),D.filter(({id:re})=>re!==_.id)})},[]);return A.useEffect(()=>he.subscribe(_=>{if(_.dismiss){C(D=>D.map(K=>K.id===_.id?{...K,delete:!0}:K));return}setTimeout(()=>{zr.flushSync(()=>{C(D=>{let K=D.findIndex(re=>re.id===_.id);return K!==-1?[...D.slice(0,K),{...D[K],..._},...D.slice(K+1)]:[_,...D]})})})}),[]),A.useEffect(()=>{if(p!=="system"){V(p);return}if(p==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?V("dark"):V("light")),typeof window>"u")return;let _=window.matchMedia("(prefers-color-scheme: dark)");try{_.addEventListener("change",({matches:D})=>{V(D?"dark":"light")})}catch{_.addListener(({matches:K})=>{try{V(K?"dark":"light")}catch(re){console.error(re)}})}},[p]),A.useEffect(()=>{S.length<=1&&W(!1)},[S]),A.useEffect(()=>{let _=D=>{var K,re;r.every(de=>D[de]||D.code===de)&&(W(!0),(K=U.current)==null||K.focus()),D.code==="Escape"&&(document.activeElement===U.current||(re=U.current)!=null&&re.contains(document.activeElement))&&W(!1)};return document.addEventListener("keydown",_),()=>document.removeEventListener("keydown",_)},[r]),A.useEffect(()=>{if(U.current)return()=>{I.current&&(I.current.focus({preventScroll:!0}),I.current=null,J.current=!1)}},[U.current]),A.createElement("section",{ref:t,"aria-label":`${T} ${Y}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},L.map((_,D)=>{var K;let[re,de]=_.split("-");return S.length?A.createElement("ol",{key:_,dir:v==="auto"?Kn():v,tabIndex:-1,ref:U,className:s,"data-sonner-toaster":!0,"data-theme":Q,"data-y-position":re,"data-lifted":q&&S.length>1&&!i,"data-x-position":de,style:{"--front-toast-height":`${((K=O[0])==null?void 0:K.height)||0}px`,"--width":`${fd}px`,"--gap":`${w}px`,...h,...Pd(d,c)},onBlur:X=>{J.current&&!X.currentTarget.contains(X.relatedTarget)&&(J.current=!1,I.current&&(I.current.focus({preventScroll:!0}),I.current=null))},onFocus:X=>{X.target instanceof HTMLElement&&X.target.dataset.dismissible==="false"||J.current||(J.current=!0,I.current=X.relatedTarget)},onMouseEnter:()=>W(!0),onMouseMove:()=>W(!0),onMouseLeave:()=>{z||W(!1)},onDragEnd:()=>W(!1),onPointerDown:X=>{X.target instanceof HTMLElement&&X.target.dataset.dismissible==="false"||N(!0)},onPointerUp:()=>N(!1)},S.filter(X=>!X.position&&D===0||X.position===_).map((X,He)=>{var Ne,Oe;return A.createElement(bd,{key:X.id,icons:b,index:He,toast:X,defaultRichColors:m,duration:(Ne=f==null?void 0:f.duration)!=null?Ne:g,className:f==null?void 0:f.className,descriptionClassName:f==null?void 0:f.descriptionClassName,invert:o,visibleToasts:y,closeButton:(Oe=f==null?void 0:f.closeButton)!=null?Oe:a,interacting:z,position:_,style:f==null?void 0:f.style,unstyled:f==null?void 0:f.unstyled,classNames:f==null?void 0:f.classNames,cancelButtonStyle:f==null?void 0:f.cancelButtonStyle,actionButtonStyle:f==null?void 0:f.actionButtonStyle,removeToast:j,toasts:S.filter(ve=>ve.position==X.position),heights:O.filter(ve=>ve.position==X.position),setHeights:F,expandByDefault:i,gap:w,loadingIcon:x,expanded:q,pauseWhenPageIsHidden:k,swipeDirections:e.swipeDirections})})):null}))});const Sd=({...e})=>{const{theme:t="system"}=Yc();return l.jsx(xd,{theme:t,className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e})};var Td=Kr[" useId ".trim().toString()]||(()=>{}),Ad=0;function No(e){const[t,o]=u.useState(Td());return je(()=>{o(n=>n??String(Ad++))},[e]),t?`radix-${t}`:""}var Ed="Arrow",Mi=u.forwardRef((e,t)=>{const{children:o,width:n=10,height:r=5,...i}=e;return l.jsx(ae.svg,{...i,ref:t,width:n,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?o:l.jsx("polygon",{points:"0,0 30,0 15,10"})})});Mi.displayName=Ed;var kd=Mi;
vendor: 4,824 bytes, line 53
53function Cd(e){const[t,o]=u.useState(void 0);return je(()=>{if(e){o({width:e.offsetWidth,height:e.offsetHeight});const n=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const i=r[0];let a,s;if("borderBoxSize"in i){const d=i.borderBoxSize,c=Array.isArray(d)?d[0]:d;a=c.inlineSize,s=c.blockSize}else a=e.offsetWidth,s=e.offsetHeight;o({width:a,height:s})});return n.observe(e,{box:"border-box"}),()=>n.unobserve(e)}else o(void 0)},[e]),t}var mn="Popper",[ji,Hi]=Ft(mn),[Nd,$i]=ji(mn),Bi=e=>{const{__scopePopper:t,children:o}=e,[n,r]=u.useState(null);return l.jsx(Nd,{scope:t,anchor:n,onAnchorChange:r,children:o})};Bi.displayName=mn;var Vi="PopperAnchor",Ui=u.forwardRef((e,t)=>{const{__scopePopper:o,virtualRef:n,...r}=e,i=$i(Vi,o),a=u.useRef(null),s=ue(t,a);return u.useEffect(()=>{i.onAnchorChange((n==null?void 0:n.current)||a.current)}),n?null:l.jsx(ae.div,{...r,ref:s})});Ui.displayName=Vi;var fn="PopperContent",[Rd,Id]=ji(fn),qi=u.forwardRef((e,t)=>{var X,He,Ne,Oe,ve,fe;const{__scopePopper:o,side:n="bottom",sideOffset:r=0,align:i="center",alignOffset:a=0,arrowPadding:s=0,avoidCollisions:d=!0,collisionBoundary:c=[],collisionPadding:p=0,sticky:m="partial",hideWhenDetached:g=!1,updatePositionStrategy:h="optimized",onPlaced:y,...f}=e,v=$i(fn,o),[w,x]=u.useState(null),b=ue(t,we=>x(we)),[T,k]=u.useState(null),S=Cd(T),C=(S==null?void 0:S.width)??0,L=(S==null?void 0:S.height)??0,O=n+(i!=="center"?"-"+i:""),F=typeof p=="number"?p:{top:0,right:0,bottom:0,left:0,...p},q=Array.isArray(c)?c:[c],W=q.length>0,z={padding:F,boundary:q.filter(Wd),altBoundary:W},{refs:N,floatingStyles:Q,placement:V,isPositioned:U,middlewareData:Y}=Is({strategy:"fixed",placement:O,whileElementsMounted:(...we)=>Ds(...we,{animationFrame:h==="always"}),elements:{reference:v.anchor},middleware:[Ws({mainAxis:r+L,alignmentAxis:a}),d&&Ls({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?js():void 0,...z}),d&&Os({...z}),Fs({...z,apply:({elements:we,rects:$e,availableWidth:rt,availableHeight:Xe})=>{const{width:Je,height:Ze}=$e.reference,Fe=we.floating.style;Fe.setProperty("--radix-popper-available-width",`${rt}px`),Fe.setProperty("--radix-popper-available-height",`${Xe}px`),Fe.setProperty("--radix-popper-anchor-width",`${Je}px`),Fe.setProperty("--radix-popper-anchor-height",`${Ze}px`)}}),T&&_s({element:T,padding:s}),Ld({arrowWidth:C,arrowHeight:L}),g&&Ms({strategy:"referenceHidden",...z})]}),[I,J]=Gi(V),j=We(y);je(()=>{U&&(j==null||j())},[U,j]);const _=(X=Y.arrow)==null?void 0:X.x,D=(He=Y.arrow)==null?void 0:He.y,K=((Ne=Y.arrow)==null?void 0:Ne.centerOffset)!==0,[re,de]=u.useState();return je(()=>{w&&de(window.getComputedStyle(w).zIndex)},[w]),l.jsx("div",{ref:N.setFloating,"data-radix-popper-content-wrapper":"",style:{...Q,transform:U?Q.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:re,"--radix-popper-transform-origin":[(Oe=Y.transformOrigin)==null?void 0:Oe.x,(ve=Y.transformOrigin)==null?void 0:ve.y].join(" "),...((fe=Y.hide)==null?void 0:fe.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:l.jsx(Rd,{scope:o,placedSide:I,onArrowChange:k,arrowX:_,arrowY:D,shouldHideArrow:K,children:l.jsx(ae.div,{"data-side":I,"data-align":J,...f,ref:b,style:{...f.style,animation:U?void 0:"none"}})})})});qi.displayName=fn;var zi="PopperArrow",Dd={top:"bottom",right:"left",bottom:"top",left:"right"},Ki=u.forwardRef(function(t,o){const{__scopePopper:n,...r}=t,i=Id(zi,n),a=Dd[i.placedSide];return l.jsx("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:l.jsx(kd,{...r,ref:o,style:{...r.style,display:"block"}})})});Ki.displayName=zi;function Wd(e){return e!==null}var Ld=e=>({name:"transformOrigin",options:e,fn(t){var v,w,x;const{placement:o,rects:n,middlewareData:r}=t,a=((v=r.arrow)==null?void 0:v.centerOffset)!==0,s=a?0:e.arrowWidth,d=a?0:e.arrowHeight,[c,p]=Gi(o),m={start:"0%",center:"50%",end:"100%"}[p],g=(((w=r.arrow)==null?void 0:w.x)??0)+s/2,h=(((x=r.arrow)==null?void 0:x.y)??0)+d/2;let y="",f="";return c==="bottom"?(y=a?m:`${g}px`,f=`${-d}px`):c==="top"?(y=a?m:`${g}px`,f=`${n.floating.height+d}px`):c==="right"?(y=`${-d}px`,f=a?m:`${h}px`):c==="left"&&(y=`${n.floating.width+d}px`,f=a?m:`${h}px`),{data:{x:y,y:f}}}});function Gi(e){const[t,o="center"]=e.split("-");return[t,o]}var Zv=Bi,Od=Ui,Fd=qi,_d=Ki,[mo,ew]=Ft("Tooltip",[Hi]),gn=Hi(),Yi="TooltipProvider",Md=700,Gn="tooltip.open",[jd,Qi]=mo(Yi),Xi=e=>{const{__scopeTooltip:t,delayDuration:o=Md,skipDelayDuration:n=300,disableHoverableContent:r=!1,
vendor: 4,160 bytes, line 53
53children:i}=e,a=u.useRef(!0),s=u.useRef(!1),d=u.useRef(0);return u.useEffect(()=>{const c=d.current;return()=>window.clearTimeout(c)},[]),l.jsx(jd,{scope:t,isOpenDelayedRef:a,delayDuration:o,onOpen:u.useCallback(()=>{window.clearTimeout(d.current),a.current=!1},[]),onClose:u.useCallback(()=>{window.clearTimeout(d.current),d.current=window.setTimeout(()=>a.current=!0,n)},[n]),isPointerInTransitRef:s,onPointerInTransitChange:u.useCallback(c=>{s.current=c},[]),disableHoverableContent:r,children:i})};Xi.displayName=Yi;var Ji="Tooltip",[tw,fo]=mo(Ji),Yo="TooltipTrigger",Hd=u.forwardRef((e,t)=>{const{__scopeTooltip:o,...n}=e,r=fo(Yo,o),i=Qi(Yo,o),a=gn(o),s=u.useRef(null),d=ue(t,s,r.onTriggerChange),c=u.useRef(!1),p=u.useRef(!1),m=u.useCallback(()=>c.current=!1,[]);return u.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),l.jsx(Od,{asChild:!0,...a,children:l.jsx(ae.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...n,ref:d,onPointerMove:oe(e.onPointerMove,g=>{g.pointerType!=="touch"&&!p.current&&!i.isPointerInTransitRef.current&&(r.onTriggerEnter(),p.current=!0)}),onPointerLeave:oe(e.onPointerLeave,()=>{r.onTriggerLeave(),p.current=!1}),onPointerDown:oe(e.onPointerDown,()=>{r.open&&r.onClose(),c.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:oe(e.onFocus,()=>{c.current||r.onOpen()}),onBlur:oe(e.onBlur,r.onClose),onClick:oe(e.onClick,r.onClose)})})});Hd.displayName=Yo;var $d="TooltipPortal",[ow,Bd]=mo($d,{forceMount:void 0}),yt="TooltipContent",Zi=u.forwardRef((e,t)=>{const o=Bd(yt,e.__scopeTooltip),{forceMount:n=o.forceMount,side:r="top",...i}=e,a=fo(yt,e.__scopeTooltip);return l.jsx(wt,{present:n||a.open,children:a.disableHoverableContent?l.jsx(ea,{side:r,...i,ref:t}):l.jsx(Vd,{side:r,...i,ref:t})})}),Vd=u.forwardRef((e,t)=>{const o=fo(yt,e.__scopeTooltip),n=Qi(yt,e.__scopeTooltip),r=u.useRef(null),i=ue(t,r),[a,s]=u.useState(null),{trigger:d,onClose:c}=o,p=r.current,{onPointerInTransitChange:m}=n,g=u.useCallback(()=>{s(null),m(!1)},[m]),h=u.useCallback((y,f)=>{const v=y.currentTarget,w={x:y.clientX,y:y.clientY},x=Gd(w,v.getBoundingClientRect()),b=Yd(w,x),T=Qd(f.getBoundingClientRect()),k=Jd([...b,...T]);s(k),m(!0)},[m]);return u.useEffect(()=>()=>g(),[g]),u.useEffect(()=>{if(d&&p){const y=v=>h(v,p),f=v=>h(v,d);return d.addEventListener("pointerleave",y),p.addEventListener("pointerleave",f),()=>{d.removeEventListener("pointerleave",y),p.removeEventListener("pointerleave",f)}}},[d,p,h,g]),u.useEffect(()=>{if(a){const y=f=>{const v=f.target,w={x:f.clientX,y:f.clientY},x=(d==null?void 0:d.contains(v))||(p==null?void 0:p.contains(v)),b=!Xd(w,a);x?g():b&&(g(),c())};return document.addEventListener("pointermove",y),()=>document.removeEventListener("pointermove",y)}},[d,p,a,c,g]),l.jsx(ea,{...e,ref:i})}),[Ud,qd]=mo(Ji,{isInside:!1}),zd=gl("TooltipContent"),ea=u.forwardRef((e,t)=>{const{__scopeTooltip:o,children:n,"aria-label":r,onEscapeKeyDown:i,onPointerDownOutside:a,...s}=e,d=fo(yt,o),c=gn(o),{onClose:p}=d;return u.useEffect(()=>(document.addEventListener(Gn,p),()=>document.removeEventListener(Gn,p)),[p]),u.useEffect(()=>{if(d.trigger){const m=g=>{const h=g.target;h!=null&&h.contains(d.trigger)&&p()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[d.trigger,p]),l.jsx(uo,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:m=>m.preventDefault(),onDismiss:p,children:l.jsxs(Fd,{"data-state":d.stateAttribute,...c,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[l.jsx(zd,{children:n}),l.jsx(Ud,{scope:o,isInside:!0,children:l.jsx(Hl,{id:d.contentId,role:"tooltip",children:r||n})})]})})});Zi.displayName=yt;var ta="TooltipArrow",Kd=u.forwardRef((e,t)=>
53{const{__scopeTooltip:o,...n}=e,r=gn(o);return qd(ta,o).isInside?null:l.jsx(_d,{...r,...n,ref:t})});Kd.displayName=ta;function Gd(e,t){const o=Math.abs(t.top-e.y),n=Math.abs(t.bottom-e.y),r=Math.abs(t.right-e.x),i=Math.abs(t.left-e.x);switch(Math.min(o,n,r,i)){case i:return"left";case r:return"right";case o:return"top";case n:return"bottom";default:throw new Error("unreachable")}}function Yd(e,t,o=5){const n=[];switch(t){case"top":n.push({x:e.x-o,y:e.y+o},{x:e.x+o,y:e.y+o});break;case"bottom":n.push({x:e.x-o,y:e.y-o},{x:e.x+o,y:e.y-o});break;case"left":n.push({x:e.x+o,y:e.y-o},{x:e.x+o,y:e.y+o});break;case"right":n.push({x:e.x-o,y:e.y-o},{x:e.x-o,y:e.y+o});break}return n}function Qd(e){const{top:t,right:o,bottom:n,left:r}=e;return[{x:r,y:t},{x:o,y:t},{x:o,y:n},{x:r,y:n}]}function Xd(e,t){const{x:o,y:n}=e;let r=!1;for(let i=0,a=t.length-1;i<t.length;a=i++){const s=t[i],d=t[a],c=s.x,p=s.y,m=d.x,g=d.y;p>n!=g>n&&o<(m-c)*(n-p)/(g-p)+c&&(r=!r)}return r}function Jd(e){const t=e.slice();return t.sort((o,n)=>o.x<n.x?-1:o.x>n.x?1:o.y<n.y?-1:o.y>n.y?1:0),Zd(t)}function Zd(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const i=t[t.length-1],a=t[t.length-2];if((i.x-a.x)*(r.y-a.y)>=(i.y-a.y)*(r.x-a.x))t.pop();else break}t.push(r)}t.pop();const o=[];for(let n=e.length-1;n>=0;n--){const r=e[n];for(;o.length>=2;){const i=o[o.length-1],a=o[o.length-2];if((i.x-a.x)*(r.y-a.y)>=(i.y-a.y)*(r.x-a.x))o.pop();else break}o.push(r)}return o.pop(),t.length===1&&o.length===1&&t[0].x===o[0].x&&t[0].y===o[0].y?t:t.concat(o)}var eu=Xi,oa=Zi;const tu=eu,ou=u.forwardRef(({className:e,sideOffset:t=4,...o},n)=>l.jsx(oa,{ref:n,sideOffset:t,className:ce("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...o}));ou.displayName=oa.displayName;const nu=()=>{const{pathname:e}=Gr();return u.useEffect(()=>{window.scrollTo(0,0)},[e]),null},ru=["googlebot","googlebot-image","bingbot","duckduckbot","slurp","baiduspider","yandexbot","oai-searchbot","chatgpt-user","perplexitybot","perplexity-user","claude-searchbot","claude-user"],iu=["facebookexternalhit","twitterbot","linkedinbot","whatsapp"],au=["gptbot","ccbot","anthropic-ai","claudebot","claude-web","google-extended","bytespider","amazonbot","applebot-extended","cohere-ai","meta-externalagent","diffbot","ahrefsbot","semrushbot","dotbot","mj12bot","blexbot","dataforseobot","petalbot","scrapy","python-requests","curl","wget"],na=e=>(e||"").toLowerCase(),su=e=>{const t=na(e);return[...ru,...iu].some(o=>t.includes(o))},lu=e=>{const t=na(e);return!t||su(t)?!1:au.some(o=>t.includes(o))},ra=()=>{if(typeof navigator>"u")return{isBlocked:!1,userAgent:""};const e=navigator.userAgent||"";return{isBlocked:lu(e),userAgent:e}},cu=()=>(u.useEffect(()=>{console.log("%cPetWell HK - automated scraping, republication, or bulk extraction is prohibited.","color:#FF6B35;font-size:14px;font-weight:bold;"),ra().isBlocked&&console.warn("This crawler is not permitted to access PetWell public data APIs.")},[]),null),du="293361725081750",Yn="https://connect.facebook.net/en_US/fbevents.js",uu="meta-pixel-inline";let Ro=!1,Qn=!1,Io=!1;const At=new Set,pu="petwell.metaPixel.once.";function hu(){return du}function mu(){return typeof document<"u"&&!!document.getElementById(uu)}function fu(){var n;if(typeof window>"u"||Ro||typeof window.fbq=="function"){Ro=!0;return}const e=function(...r){e.callMethod?e.callMethod(...r):e.queue.push(r)};if(e.queue=[],e.loaded=!0,e.version="2.0",e.push=e,window.fbq=e,window._fbq||(window._fbq=e),Ro=!0,typeof document>"u"||document.querySelector(`script[src="${Yn}"]`))return;const t=document.createElement("script");t.async=!0,t.src=Yn;const o=document.getElementsByTagName("script")[0];(n=o==null?void 0:o.parentNode)==null||n.insertBefore(t,o)}function yn(e=hu()){var t;typeof window>"u"||(fu(),!Qn&&((t=window.fbq)==null||t.call(window,"init",e),Qn=!0))}function gu(){var e;if(yn(),mu()&&!Io){Io=!0;return}Io=!0,(e=window.fbq)==null||e.call(window,"track","PageView")}function yu(e,t,o){var r,i,a;yn();const n=t?vu(t):void 0;if(o!=null&&o.eventID){(r=window.fbq)==null||r.call(window,"track",e,n??{},{eventID:o.eventID});return}if(n){(i=window.fbq)==null||i.call(window,"track",e,n);return}(a=window.fbq)==null||a.call(window,"track",e)}function nw(e,t,o,n){if(!e||At.has(e))return!1;if(typeof sessionStorage<"u")try{const r=`${pu}${e}`;if(sessionStorage.getItem(r))return At.add(e),!1;At.add(e),sessionStorage.setItem(r,"1")}catch{At.add(e)}else At.add(e);return yu(t,o,n),!0}function vu(e){const t={};for(const[o,n]of Object.entries(e))n!==void 0&&(t[o]=n);return t}function wu(){const{pathname:e}=Gr();u.useEffect(()=>{yn(),gu()},[e])}const bu=qs();async function Pu(){try{return await vt(),!0}catch{return!1}}async function Le(e,t,o){try{const n=e.trim().replace(/\s+/g," "),r=/^\s*mutation\s+/i.test(n);let i=!1;if(r&&(o==null?void 0:o.authMode)!=="apiKey"&&(i=await Pu()),r&&!i&&(o==null?void 0:o.authMode)!=="apiKey")throw new Error("Authentication required for mutations. Please log in.");let a;o!=null&&o.authMode?a=o.authMode:r&&i?a="userPool":a="apiKey";
53const s=ra();if(a==="apiKey"&&s.isBlocked)throw new Error("Automated access is not allowed for this public API.");const d=await bu.graphql({query:e,variables:t||{},authMode:a});if(d&&"errors"in d&&d.errors&&d.errors.length>0){if((d.data?Object.values(d.data):[]).some(g=>g!=null))return console.warn("GraphQL query returned errors but has partial data:",{errorCount:d.errors.length,errors:d.errors.map(g=>({message:g.message,path:g.path}))}),d.data;const m=d.errors.map(g=>g.message||JSON.stringify(g)).join(", ");throw new Error(`GraphQL errors: ${m}`)}return d&&"data"in d?d.data||{}:d}catch(n){throw console.error("GraphQL query error:",n),xu(n)}}function xu(e){var o,n,r;let t="Unknown error";if((o=e==null?void 0:e.message)!=null&&o.includes("ERR_NAME_NOT_RESOLVED")||(n=e==null?void 0:e.message)!=null&&n.includes("Failed to fetch")||(r=e==null?void 0:e.message)!=null&&r.includes("network error"))t=`Network error: Cannot resolve AppSync endpoint. Please check: 541. Your internet connection 552. If the AppSync API exists in AWS Console 563. DNS settings or firewall blocking the connection 57Original error: ${(e==null?void 0:e.message)||"ERR_NAME_NOT_RESOLVED"}`;else if(e.errors&&Array.isArray(e.errors))t=e.errors.map(i=>i.message||JSON.stringify(i)).join(", ");else if(e.message)t=e.message;else if(typeof e=="string")t=e;else try{t=JSON.stringify(e)}catch{t=String(e)}return t.includes("GraphQL errors")?e:new Error(`GraphQL request failed: ${t}`)}const Su="https://api.petwellhk.com";function Tu(e){return String(e).trim().replace(/\/$/,"")}function Au(e){return/localhost|127\.0\.0\.1|10\.0\.2\.2/i.test(e)}function Eu(){const e=Tu("https://api.petwellhk.com");return e&&!Au(e)?e:Su}async function ku(){return Eu()}async function me(e,{method:t="GET",body:o,auth:n=!1}={}){var s,d;const r={Accept:"application/json"};if(o!==void 0&&(r["Content-Type"]="application/json"),n)try{const p=(d=(s=(await Yr()).tokens)==null?void 0:s.idToken)==null?void 0:d.toString();if(p)r.Authorization=`Bearer ${p}`;else if(n===!0)throw new Error("Authentication required. Please log in.")}catch(c){if(n===!0)throw c}const i=await fetch(`${await ku()}${e}`,{method:t,headers:r,body:o!==void 0?JSON.stringify(o):void 0}),a=await i.json().catch(()=>({}));if(!i.ok)throw new Error(a.error||`Forum API ${i.status}`);return a}async function Mt(e){var r,i;const t=new URLSearchParams;(r=e==null?void 0:e.postIds)!=null&&r.length&&t.set("postIds",e.postIds.slice(0,100).join(",")),(i=e==null?void 0:e.replyIds)!=null&&i.length&&t.set("replyIds",e.replyIds.slice(0,100).join(","));const o=t.toString(),n=await me(`/api/forum/me/votes${o?`?${o}`:""}`,{auth:!0});return{postVotes:n.postVotes||n.votes||{},replyVotes:n.replyVotes||{}}}const rw="ask-vet",iw="vet-queue",aw="my-vet",Xn="vet-team",ia="PetWell ç¸é«/è·å£«åé",aa="PetWell Vet/Nurse Team";function Jn(e){var o,n;if(!e)return!1;if(e.isVetTeamReply||e.authorId===Xn||((o=e.author)==null?void 0:o.id)===Xn)return!0;const t=((n=e.author)==null?void 0:n.displayName)||"";return t===ia||t===aa||t==="PetWell ç¸é«åé"||t==="PetWell Vet Team"}function Cu(e){return e!=null&&e.startsWith("zh")?ia:aa}function sw(e,t){const o=t==null?void 0:t.startsWith("zh");switch(e){case"PENDING":return o?"çåç¸é«/è·å£«åé":"Waiting for the vet/nurse team";case"ANSWERED":return o?"ç¸é«/è·å£«åéå·²åè¦":"Vet/nurse team replied";case"FOLLOW_UP":return o?"è·é²ä¸":"Follow-up";default:return o?"åç¸é«/è·å£«":"Ask a vet/nurse"}}function se(e){const t=Object.prototype.toString.call(e);return e instanceof Date||typeof e=="object"&&t==="[object Date]"?new e.constructor(+e):typeof e=="number"||t==="[object Number]"||typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function Nu(e,t){return e instanceof Date?new e.constructor(t):new Date(t)}const lw=6048e5,cw=864e5,qt=43200,Zn=1440;let Ru={};function Iu(){return Ru}function er(e){const t=se(e),o=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return o.setUTCFullYear(t.getFullYear()),+e-+o}function Zt(e,t){const o=se(e),n=se(t),r=o.getTime()-n.getTime();return r<0?-1:r>0?1:r}function Du(e){return Nu(e,Date.now())}function Wu(e,t){const o=se(e),n=se(t),r=o.getFullYear()-n.getFullYear(),i=o.getMonth()-n.getMonth();return r*12+i}function Lu(e){return t=>{const n=(e?Math[e]:Math.trunc)(t);return n===0?0:n}}function Ou(e,t){return+se(e)-+se(t)}function Fu(e){const t=se(e);return t.setHours(23,59,59,999),t}function _u(e){const t=se(e),o=t.getMonth();return t.setFullYear(t.getFullYear(),o+1,0),t.setHours(23,59,59,999),t}function Mu(e){const t=se(e);return+Fu(t)==+_u(t)}function ju(e,t){const o=se(e),n=se(t),r=Zt(o,n),i=Math.abs(Wu(o,n));let a;if(i<1)a=0;else{o.getMonth()===1&&o.getDate()>27&&o.setDate(30),o.setMonth(o.getMonth()-r*i);let s=Zt(o,n)===-r;Mu(se(e))&&i===1&&Zt(e,n)===1&&(s=!1),a=r*(i-Number(s))}return a===0?0:a}function Hu(e,t,o){const n=Ou(e,t)/1e3;
vendor: 7,425 bytes, line 57
57return Lu(o==null?void 0:o.roundingMethod)(n)}const $u={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Bu=(e,t,o)=>{let n;const r=$u[e];return typeof r=="string"?n=r:t===1?n=r.one:n=r.other.replace("{{count}}",t.toString()),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?"in "+n:n+" ago":n};function ft(e){return(t={})=>{const o=t.width?String(t.width):e.defaultWidth;return e.formats[o]||e.formats[e.defaultWidth]}}const Vu={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Uu={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},qu={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},zu={date:ft({formats:Vu,defaultWidth:"full"}),time:ft({formats:Uu,defaultWidth:"full"}),dateTime:ft({formats:qu,defaultWidth:"full"})},Ku={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Gu=(e,t,o,n)=>Ku[e];function Re(e){return(t,o)=>{const n=o!=null&&o.context?String(o.context):"standalone";let r;if(n==="formatting"&&e.formattingValues){const a=e.defaultFormattingWidth||e.defaultWidth,s=o!=null&&o.width?String(o.width):a;r=e.formattingValues[s]||e.formattingValues[a]}else{const a=e.defaultWidth,s=o!=null&&o.width?String(o.width):e.defaultWidth;r=e.values[s]||e.values[a]}const i=e.argumentCallback?e.argumentCallback(t):t;return r[i]}}const Yu={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Qu={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Xu={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Ju={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},Zu={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},ep={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},tp=(e,t)=>{const o=Number(e),n=o%100;if(n>20||n<10)switch(n%10){case 1:return o+"st";case 2:return o+"nd";case 3:return o+"rd"}return o+"th"},op={ordinalNumber:tp,era:Re({values:Yu,defaultWidth:"wide"}),quarter:Re({values:Qu,defaultWidth:"wide",argumentCallback:e=>e-1}),month:Re({values:Xu,defaultWidth:"wide"}),day:Re({values:Ju,defaultWidth:"wide"}),dayPeriod:Re({values:Zu,defaultWidth:"wide",formattingValues:ep,defaultFormattingWidth:"wide"})};function Ie(e){return(t,o={})=>{const n=o.width,r=n&&e.matchPatterns[n]||e.matchPatterns[e.defaultMatchWidth],i=t.match(r);if(!i)return null;const a=i[0],s=n&&e.parsePatterns[n]||e.parsePatterns[e.defaultParseWidth],d=Array.isArray(s)?rp(s,m=>m.test(a)):np(s,m=>m.test(a));let c;c=e.valueCallback?e.valueCallback(d):d,c=o.valueCallback?o.valueCallback(c):c;const p=t.slice(a.length);return{value:c,rest:p}}}function np(e,t){for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&t(e[o]))return o}function rp(e,t){for(let o=0;o<e.length;o++)if(t(e[o]))return o}function sa(e){return(t,o={})=>{const n=t.match(e.matchPattern);if(!n)return null;const r=n[0],i=t.match(e.parsePattern);if(!i)return null;let a=e.valueCallback?e.valueCallback(i[0]):i[0];a=o.valueCallback?o.valueCallback(a):a;const s=t.slice(r.length);return{value:a,rest:s}}}const ip=/^(\d+)(th|st|nd|rd)?/i,ap=/\d+/i,sp={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},lp={any:[/^b/i,/^(a|c)/i]},cp={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},dp={any:[/1/i,/2/i,/3/i,/4/i]},up={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},pp={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},hp={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},mp={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},fp={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},gp={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},yp={ordinalNumber:sa({matchPattern:ip,parsePattern:ap,valueCallback:e=>parseInt(e,10)}),era:Ie({matchPatterns:sp,defaultMatchWidth:"wide",parsePatterns:lp,defaultParseWidth:"any"}),quarter:Ie({matchPatterns:cp,defaultMatchWidth:"wide",parsePatterns:dp,defaultParseWidth:"any",valueCallback:e=>e+1}),month:Ie({matchPatterns:up,defaultMatchWidth:"wide",parsePatterns:pp,defaultParseWidth:"any"}),day:Ie({matchPatterns:hp,defaultMatchWidth:"wide",parsePatterns:mp,defaultParseWidth:"any"}),dayPeriod:Ie({matchPatterns:fp,defaultMatchWidth:"any",parsePatterns:gp,defaultParseWidth:"any"})},Qo={code:"en-US",formatDistance:Bu,formatLong:zu,formatRelative:Gu,localize:op,match:yp,options:{weekStartsOn:0,firstWeekContainsDate:1}};function vp(e,t,o){const n=Iu(),r=(o==null?void 0:o.locale)??n.locale??Qo,i=2520,a=Zt(e,t);if(isNaN(a))throw new RangeError("Invalid time value");const s=Object.assign({},o,{addSuffix:o==null?void 0:o.addSuffix,comparison:a});let d,c;a>0?(d=se(t),c=se(e)):(d=se(e),c=se(t));
57const p=Hu(c,d),m=(er(c)-er(d))/1e3,g=Math.round((p-m)/60);let h;if(g<2)return o!=null&&o.includeSeconds?p<5?r.formatDistance("lessThanXSeconds",5,s):p<10?r.formatDistance("lessThanXSeconds",10,s):p<20?r.formatDistance("lessThanXSeconds",20,s):p<40?r.formatDistance("halfAMinute",0,s):p<60?r.formatDistance("lessThanXMinutes",1,s):r.formatDistance("xMinutes",1,s):g===0?r.formatDistance("lessThanXMinutes",1,s):r.formatDistance("xMinutes",g,s);if(g<45)return r.formatDistance("xMinutes",g,s);if(g<90)return r.formatDistance("aboutXHours",1,s);if(g<Zn){const y=Math.round(g/60);return r.formatDistance("aboutXHours",y,s)}else{if(g<i)return r.formatDistance("xDays",1,s);if(g<qt){const y=Math.round(g/Zn);return r.formatDistance("xDays",y,s)}else if(g<qt*2)return h=Math.round(g/qt),r.formatDistance("aboutXMonths",h,s)}if(h=ju(c,d),h<12){const y=Math.round(g/qt);return r.formatDistance("xMonths",y,s)}else{const y=h%12,f=Math.trunc(h/12);return y<3?r.formatDistance("aboutXYears",f,s):y<9?r.formatDistance("overXYears",f,s):r.formatDistance("almostXYears",f+1,s)}}function tr(e,t){return vp(e,Du(e),t)}const wp={lessThanXSeconds:{one:"å°æ¼ 1 ç§",other:"å°æ¼ {{count}} ç§"},xSeconds:{one:"1 ç§",other:"{{count}} ç§"},halfAMinute:"ååé",lessThanXMinutes:{one:"å°æ¼ 1 åé",other:"å°æ¼ {{count}} åé"},xMinutes:{one:"1 åé",other:"{{count}} åé"},xHours:{one:"1 å°æ",other:"{{count}} å°æ"},aboutXHours:{one:"å¤§ç´ 1 å°æ",other:"å¤§ç´ {{count}} å°æ"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"å¤§ç´ 1 åææ",other:"å¤§ç´ {{count}} åææ"},xWeeks:{one:"1 åææ",other:"{{count}} åææ"},aboutXMonths:{one:"å¤§ç´ 1 åæ",other:"å¤§ç´ {{count}} åæ"},xMonths:{one:"1 åæ",other:"{{count}} åæ"},aboutXYears:{one:"å¤§ç´ 1 å¹´",other:"å¤§ç´ {{count}} å¹´"},xYears:{one:"1 å¹´",other:"{{count}} å¹´"},overXYears:{one:"è¶
é 1 å¹´",other:"è¶
é {{count}} å¹´"},almostXYears:{one:"å°è¿ 1 å¹´",other:"å°è¿ {{count}} å¹´"}},bp=(e,t,o)=>{let n;const r=wp[e];return typeof r=="string"?n=r:t===1?n=r.one:n=r.other.replace("{{count}}",String(t)),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?n+"å
§":n+"å":n},Pp={full:"y'å¹´'M'æ'd'æ¥' EEEE",long:"y'å¹´'M'æ'd'æ¥'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},xp={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},Sp={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},Tp={date:ft({formats:Pp,defaultWidth:"full"}),time:ft({formats:xp,defaultWidth:"full"}),dateTime:ft({formats:Sp,defaultWidth:"full"})},Ap={lastWeek:"'ä¸å'eeee p",yesterday:"'æ¨å¤©' p",today:"'ä»å¤©' p",tomorrow:"'æå¤©' p",nextWeek:"'ä¸å'eeee p",other:"P"},Ep=(e,t,o,n)=>Ap[e],kp={narrow:["å","å
Œ
"],abbreviated:["å","å
Œ
"],wide:["å
Œ
å","å
Œ
"]},Cp={narrow:["1","2","3","4"],abbreviated:["第ä¸å»","第äºå»","第ä¸å»","第åå»"],wide:["第ä¸å»é","第äºå»é","第ä¸å»é","第åå»é"]},Np={narrow:["ä¸","äº","ä¸","å","äº","å
","ä¸","å
«","ä¹","å","åä¸","åäº"],abbreviated:["1æ","2æ","3æ","4æ","5æ","6æ","7æ","8æ","9æ","10æ","11æ","12æ"],wide:["䏿","äºæ","䏿","åæ","äºæ","å
æ","䏿","å
«æ","乿","åæ","å䏿","åäºæ"]},Rp={narrow:["æ¥","ä¸","äº","ä¸","å","äº","å
"],short:["æ¥","ä¸","äº","ä¸","å","äº","å
"],abbreviated:["鱿¥","é±ä¸","é±äº","é±ä¸","é±å","é±äº","é±å
"],wide:["æææ¥","ææä¸","ææäº","ææä¸","ææå","ææäº","ææå
"]},Ip={narrow:{am:"ä¸",pm:"ä¸",midnight:"忍",noon:"å",morning:"æ©",afternoon:"ä¸å",evening:"æ",night:"å¤"},abbreviated:{am:"ä¸å",pm:"ä¸å",midnight:"忍",noon:"ä¸å",morning:"æ©æ¨",afternoon:"ä¸å",evening:"æä¸",night:"å¤é"},wide:{am:"ä¸å",pm:"ä¸å",midnight:"忍",noon:"ä¸å",morning:"æ©æ¨",afternoon:"ä¸å",evening:"æä¸",night:"å¤é"}},Dp={narrow:{am:"ä¸",pm:"ä¸",midnight:"忍",noon:"å",morning:"æ©",afternoon:"ä¸å",evening:"æ",night:"å¤"},abbreviated:{am:"ä¸å",pm:"ä¸å",midnight:"忍",noon:"ä¸å",morning:"æ©æ¨",afternoon:"ä¸å",evening:"æä¸",night:"å¤é"},wide:{am:"ä¸å",pm:"ä¸å",midnight:"忍",noon:"ä¸å",morning:"æ©æ¨",afternoon:"ä¸å",evening:"æä¸",night:"å¤é"}},Wp=(e,t)=>{const o=Number(e);switch(t==null?void 0:t.unit){case"date":return o+"æ¥";case"hour":return o+"æ";case"minute":return o+"å";case"second":return o+"ç§";default:return"第 "+o}},Lp={ordinalNumber:Wp,era:Re({values:kp,defaultWidth:"wide"}),quarter:Re({values:Cp,defaultWidth:"wide",argumentCallback:e=>e-1}),month:Re({values:Np,defaultWidth:"wide"}),day:Re({values:Rp,defaultWidth:"wide"}),dayPeriod:Re({values:Ip,defaultWidth:"wide",formattingValues:Dp,defaultFormattingWidth:"wide"})}
vendor: 8,079 bytes, line 57
57,Op=/^(第\s*)?\d+(æ¥|æ|å|ç§)?/i,Fp=/\d+/i,_p={narrow:/^(å)/i,abbreviated:/^(å)/i,wide:/^(å
Œ
å|å
Œ
)/i},Mp={any:[/^(å)/i,/^(å
Œ
)/i]},jp={narrow:/^[1234]/i,abbreviated:/^第[ä¸äºä¸å]å»/i,wide:/^第[ä¸äºä¸å]å»é/i},Hp={any:[/(1|ä¸)/i,/(2|äº)/i,/(3|ä¸)/i,/(4|å)/i]},$p={narrow:/^(ä¸|äº|ä¸|å|äº|å
|ä¸|å
«|ä¹|å[äºä¸])/i,abbreviated:/^(ä¸|äº|ä¸|å|äº|å
|ä¸|å
«|ä¹|å[äºä¸]|\d|1[12])æ/i,wide:/^(ä¸|äº|ä¸|å|äº|å
|ä¸|å
«|ä¹|å[äºä¸])æ/i},Bp={narrow:[/^ä¸/i,/^äº/i,/^ä¸/i,/^å/i,/^äº/i,/^å
/i,/^ä¸/i,/^å
«/i,/^ä¹/i,/^å(?!(ä¸|äº))/i,/^åä¸/i,/^åäº/i],any:[/^ä¸|1/i,/^äº|2/i,/^ä¸|3/i,/^å|4/i,/^äº|5/i,/^å
|6/i,/^ä¸|7/i,/^å
«|8/i,/^ä¹|9/i,/^å(?!(ä¸|äº))|10/i,/^åä¸|11/i,/^åäº|12/i]},Vp={narrow:/^[ä¸äºä¸åäºå
æ¥]/i,short:/^[ä¸äºä¸åäºå
æ¥]/i,abbreviated:/^é±[ä¸äºä¸åäºå
æ¥]/i,wide:/^ææ[ä¸äºä¸åäºå
æ¥]/i},Up={any:[/æ¥/i,/ä¸/i,/äº/i,/ä¸/i,/å/i,/äº/i,/å
/i]},qp={any:/^(ä¸å?|ä¸å?|åå¤|[䏿£]å|æ©ä¸?|ä¸å|æä¸?|忍)/i},zp={any:{am:/^ä¸å?/i,pm:/^ä¸å?/i,midnight:/^åå¤/i,noon:/^[䏿£]å/i,morning:/^æ©ä¸/i,afternoon:/^ä¸å/i,evening:/^æä¸?/i,night:/^忍/i}},Kp={ordinalNumber:sa({matchPattern:Op,parsePattern:Fp,valueCallback:e=>parseInt(e,10)}),era:Ie({matchPatterns:_p,defaultMatchWidth:"wide",parsePatterns:Mp,defaultParseWidth:"any"}),quarter:Ie({matchPatterns:jp,defaultMatchWidth:"wide",parsePatterns:Hp,defaultParseWidth:"any",valueCallback:e=>e+1}),month:Ie({matchPatterns:$p,defaultMatchWidth:"wide",parsePatterns:Bp,defaultParseWidth:"any"}),day:Ie({matchPatterns:Vp,defaultMatchWidth:"wide",parsePatterns:Up,defaultParseWidth:"any"}),dayPeriod:Ie({matchPatterns:qp,defaultMatchWidth:"any",parsePatterns:zp,defaultParseWidth:"any"})},or={code:"zh-TW",formatDistance:bp,formatLong:Tp,formatRelative:Ep,localize:Lp,match:Kp,options:{weekStartsOn:1,firstWeekContainsDate:4}},M=e=>typeof e=="string",Et=()=>{let e,t;const o=new Promise((n,r)=>{e=n,t=r});return o.resolve=e,o.reject=t,o},nr=e=>e==null?"":""+e,Gp=(e,t,o)=>{e.forEach(n=>{t[n]&&(o[n]=t[n])})},Yp=/###/g,rr=e=>e&&e.indexOf("###")>-1?e.replace(Yp,"."):e,ir=e=>!e||M(e),Rt=(e,t,o)=>{const n=M(t)?t.split("."):t;let r=0;for(;r<n.length-1;){if(ir(e))return{};const i=rr(n[r]);!e[i]&&o&&(e[i]=new o),Object.prototype.hasOwnProperty.call(e,i)?e=e[i]:e={},++r}return ir(e)?{}:{obj:e,k:rr(n[r])}},ar=(e,t,o)=>{const{obj:n,k:r}=Rt(e,t,Object);if(n!==void 0||t.length===1){n[r]=o;return}let i=t[t.length-1],a=t.slice(0,t.length-1),s=Rt(e,a,Object);for(;s.obj===void 0&&a.length;)i=`${a[a.length-1]}.${i}`,a=a.slice(0,a.length-1),s=Rt(e,a,Object),s!=null&&s.obj&&typeof s.obj[`${s.k}.${i}`]<"u"&&(s.obj=void 0);s.obj[`${s.k}.${i}`]=o},Qp=(e,t,o,n)=>{const{obj:r,k:i}=Rt(e,t,Object);r[i]=r[i]||[],r[i].push(o)},ro=(e,t)=>{const{obj:o,k:n}=Rt(e,t);if(o&&Object.prototype.hasOwnProperty.call(o,n))return o[n]},Xp=(e,t,o)=>{const n=ro(e,o);return n!==void 0?n:ro(t,o)},la=(e,t,o)=>{for(const n in t)n!=="__proto__"&&n!=="constructor"&&(n in e?M(e[n])||e[n]instanceof String||M(t[n])||t[n]instanceof String?o&&(e[n]=t[n]):la(e[n],t[n],o):e[n]=t[n]);return e},st=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var Jp={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const Zp=e=>M(e)?e.replace(/[&<>"'\/]/g,t=>Jp[t]):e;class eh{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const o=this.regExpMap.get(t);if(o!==void 0)return o;const n=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,n),this.regExpQueue.push(t),n}}const th=[" ",",","?","!",";"],oh=new eh(20),nh=(e,t,o)=>{t=t||"",o=o||"";const n=th.filter(a=>t.indexOf(a)<0&&o.indexOf(a)<0);if(n.length===0)return!0;const r=oh.getRegExp(`(${n.map(a=>a==="?"?"\\?":a).join("|")})`);let i=!r.test(e);if(!i){const a=e.indexOf(o);a>0&&!r.test(e.substring(0,a))&&(i=!0)}return i},Xo=(e,t,o=".")=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;const n=t.split(o);let r=e;for(let i=0;i<n.length;){if(!r||typeof r!="object")return;let a,s="";for(let d=i;d<n.length;++d)if(d!==i&&(s+=o),s+=n[d],a=r[s],a!==void 0){if(["string","number","boolean"].indexOf(typeof a)>-1&&d<n.length-1)continue;i+=d-i+1;break}r=a}return r},Dt=e=>e==null?void 0:e.replace("_","-"),rh={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){var o,n;(n=(o=console==null?void 0:console[e])==null?void 0:o.apply)==null||n.call(o,console,t)}};class io{constructor(t,o={}){this.init(t,o)}init(t,o={}){this.prefix=o.prefix||"i18next:",this.logger=t||rh,this.options=o,this.debug=o.debug}log(...t){return this.forward(t,"log","",!0)}warn(...t){return this.forward(t,"warn","",!0)}error(...t){return this.forward(t,"error","")}deprecate(...t){return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(t,o,n,r){return r&&!this.debug?null:(M(t[0])&&(t[0]=`${n}${this.prefix} ${t[0]}`),this.logger[o](t))}create(t){return new io(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t=t||this.options,t.prefix=t.prefix||this.prefix,new io(this.logger,t)}}var De=new io;class go{constructor(){this.observers={}}on(t,o){return t.split(" ").forEach(n=>{this.observers[n]||(this.observers[n]=new Map);const r=this.observers[n].get(o)||0;this.observers[n].set(o,r+1)}),this}off(t,o){if(this.observers[t]){if(!o){delete this.observers[t];return}this.observers[t].delete(o)}}emit(t,...o){this.observers[t]&&Array.from(this.observers[t].entries()).forEach(([r,i])=>{for(let a=0;a<i;a++)r(...o)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([r,i])=>{for(let a=0;a<i;a++)r.apply(r,[t,...o])})}}class sr extends go{constructor(t,o={ns:["translation"],defaultNS:"translation"}){super(),this.data=t||{},this.options=o,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const o=this.options.ns.indexOf(t);o>-1&&this.options.ns.splice(o,1)}getResource(t,o,n,r={}){var c,p;const i=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,a=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let s;t.indexOf(".")>-1?s=t.split("."):(s=[t,o],n&&(Array.isArray(n)?s.push(...n):M(n)&&i?s.push(...n.split(i)):s.push(n)));const d=ro(this.data,s);return!d&&!o&&!n&&t.indexOf(".")>-1&&(t=s[0],o=s[1],n=s.slice(2).join(".")),d||!a||!M(n)?d:Xo((p=(c=this.data)==null?void 0:c[t])==null?void 0:p[o],n,i)}addResource(t,o,n,r,i={silent:!1}){const a=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator;let s=[t,o];n&&(s=s.concat(a?n.split(a):n)),t.indexOf(".")>-1&&(s=t.split("."),r=o,o=s[1]),this.addNamespaces(o),ar(this.data,s,r),i.silent||this.emit("added",t,o,n,r)}addResources(t,o,n,r={silent:!1}){for(const i in n)(M(n[i])||Array.isArray(n[i]))&&this.addResource(t,o,i,n[i],{silent:!0});r.silent||this.emit("added",t,o,n)}addResourceBundle(t,o,n,r,i,a={silent:!1,skipCopy:!1}){let s=[t,o];t.indexOf(".")>-1&&(s=t.split("."),r=n,n=o,o=s[1]),this.addNamespaces(o);let d=ro(this.data,s)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?la(d,n,i):d={...d,...n},ar(this.data,s,d),a.silent||this.emit("added",t,o,n)}removeResourceBundle(t,o){this.hasResourceBundle(t,o)&&delete this.data[t][o],this.removeNamespaces(o),this.emit("removed",t,o)}hasResourceBundle(t,o){return this.getResource(t,o)!==void 0}getResourceBundle(t,o){return o||(o=this.options.defaultNS),this.getResource(t,o)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const o=this.getDataByLanguage(t);return!!(o&&Object.keys(o)||[]).find(r=>o[r]&&Object.keys(o[r]).length>0)}toJSON(){return this.data}}var ca={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,o,n,r){return e.forEach(i=>
vendor: 4,334 bytes, line 57
57{var a;t=((a=this.processors[i])==null?void 0:a.process(t,o,n,r))??t}),t}};const da=Symbol("i18next/PATH_KEY");function ih(){const e=[],t=Object.create(null);let o;return t.get=(n,r)=>{var i;return(i=o==null?void 0:o.revoke)==null||i.call(o),r===da?e:(e.push(r),o=Proxy.revocable(n,t),o.proxy)},Proxy.revocable(Object.create(null),t).proxy}function Jo(e,t){const{[da]:o}=e(ih());return o.join((t==null?void 0:t.keySeparator)??".")}const lr={},cr=e=>!M(e)&&typeof e!="boolean"&&typeof e!="number";class ao extends go{constructor(t,o={}){super(),Gp(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=o,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=De.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t,o={interpolation:{}}){const n={...o};if(t==null)return!1;const r=this.resolve(t,n);return(r==null?void 0:r.res)!==void 0}extractFromKey(t,o){let n=o.nsSeparator!==void 0?o.nsSeparator:this.options.nsSeparator;n===void 0&&(n=":");const r=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator;let i=o.ns||this.options.defaultNS||[];const a=n&&t.indexOf(n)>-1,s=!this.options.userDefinedKeySeparator&&!o.keySeparator&&!this.options.userDefinedNsSeparator&&!o.nsSeparator&&!nh(t,n,r);if(a&&!s){const d=t.match(this.interpolator.nestingRegexp);if(d&&d.length>0)return{key:t,namespaces:M(i)?[i]:i};const c=t.split(n);(n!==r||n===r&&this.options.ns.indexOf(c[0])>-1)&&(i=c.shift()),t=c.join(r)}return{key:t,namespaces:M(i)?[i]:i}}translate(t,o,n){let r=typeof o=="object"?{...o}:o;if(typeof r!="object"&&this.options.overloadTranslationOptionHandler&&(r=this.options.overloadTranslationOptionHandler(arguments)),typeof r=="object"&&(r={...r}),r||(r={}),t==null)return"";typeof t=="function"&&(t=Jo(t,{...this.options,...r})),Array.isArray(t)||(t=[String(t)]);const i=r.returnDetails!==void 0?r.returnDetails:this.options.returnDetails,a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,{key:s,namespaces:d}=this.extractFromKey(t[t.length-1],r),c=d[d.length-1];let p=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;p===void 0&&(p=":");const m=r.lng||this.language,g=r.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((m==null?void 0:m.toLowerCase())==="cimode")return g?i?{res:`${c}${p}${s}`,usedKey:s,exactUsedKey:s,usedLng:m,usedNS:c,usedParams:this.getUsedParamsDetails(r)}:`${c}${p}${s}`:i?{res:s,usedKey:s,exactUsedKey:s,usedLng:m,usedNS:c,usedParams:this.getUsedParamsDetails(r)}:s;const h=this.resolve(t,r);let y=h==null?void 0:h.res;const f=(h==null?void 0:h.usedKey)||s,v=(h==null?void 0:h.exactUsedKey)||s,w=["[object Number]","[object Function]","[object RegExp]"],x=r.joinArrays!==void 0?r.joinArrays:this.options.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject,T=r.count!==void 0&&!M(r.count),k=ao.hasDefaultValue(r),S=T?this.pluralResolver.getSuffix(m,r.count,r):"",C=r.ordinal&&T?this.pluralResolver.getSuffix(m,r.count,{ordinal:!1}):"",L=T&&!r.ordinal&&r.count===0,O=L&&r[`defaultValue${this.options.pluralSeparator}zero`]||r[`defaultValue${S}`]||r[`defaultValue${C}`]||r.defaultValue;let F=y;b&&!y&&k&&(F=O);const q=cr(F),W=Object.prototype.toString.apply(F);if(b&&F&&q&&w.indexOf(W)<0&&!(M(x)&&Array.isArray(F))){if(!r.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const z=this.options.returnedObjectHandler?this.options.returnedObjectHandler(f,F,{...r,ns:d}):`key '${s} (${this.language})' returned an object instead of string.`;return i?(h.res=z,h.usedParams=this.getUsedParamsDetails(r),h):z}if(a){const z=Array.isArray(F),N=z?[]:{},Q=z?v:f;for(const V in F)if(Object.prototype.hasOwnProperty.call(F,V)){const U=`${Q}${a}${V}`;k&&!y?N[V]=this.translate(U,{...r,defaultValue:cr(O)?O[V]:void 0,joinArrays:!1,ns:d}):N[V]=this.translate(U,{...r,joinArrays:!1,ns:d}),N[V]===U&&(N[V]=F[V])}y=N}}else if(b&&M(x)&&Array.isArray(y))y=y.join(x),y&&(y=this.extendTranslation(y,t,r,n));else{let z=!1,N=!1;!this.isValidLookup(y)&&k&&(z=!0,y=O),this.isValidLookup(y)||(N=!0,y=s);const V=(r.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&N?void 0:y,U=k&&O!==y&&this.options.updateMissing;
vendor: 33,766 bytes, line 57
57if(N||z||U){if(this.logger.log(U?"updateKey":"missingKey",m,c,s,U?O:y),a){const j=this.resolve(s,{...r,keySeparator:!1});j&&j.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let Y=[];const I=this.languageUtils.getFallbackCodes(this.options.fallbackLng,r.lng||this.language);if(this.options.saveMissingTo==="fallback"&&I&&I[0])for(let j=0;j<I.length;j++)Y.push(I[j]);else this.options.saveMissingTo==="all"?Y=this.languageUtils.toResolveHierarchy(r.lng||this.language):Y.push(r.lng||this.language);const J=(j,_,D)=>{var re;const K=k&&D!==y?D:V;this.options.missingKeyHandler?this.options.missingKeyHandler(j,c,_,K,U,r):(re=this.backendConnector)!=null&&re.saveMissing&&this.backendConnector.saveMissing(j,c,_,K,U,r),this.emit("missingKey",j,c,_,y)};this.options.saveMissing&&(this.options.saveMissingPlurals&&T?Y.forEach(j=>{const _=this.pluralResolver.getSuffixes(j,r);L&&r[`defaultValue${this.options.pluralSeparator}zero`]&&_.indexOf(`${this.options.pluralSeparator}zero`)<0&&_.push(`${this.options.pluralSeparator}zero`),_.forEach(D=>{J([j],s+D,r[`defaultValue${D}`]||O)})}):J(Y,s,O))}y=this.extendTranslation(y,t,r,h,n),N&&y===s&&this.options.appendNamespaceToMissingKey&&(y=`${c}${p}${s}`),(N||z)&&this.options.parseMissingKeyHandler&&(y=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${c}${p}${s}`:s,z?y:void 0,r))}return i?(h.res=y,h.usedParams=this.getUsedParamsDetails(r),h):y}extendTranslation(t,o,n,r,i){var d,c;if((d=this.i18nFormat)!=null&&d.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});const p=M(t)&&(((c=n==null?void 0:n.interpolation)==null?void 0:c.skipOnVariables)!==void 0?n.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let m;if(p){const h=t.match(this.interpolator.nestingRegexp);m=h&&h.length}let g=n.replace&&!M(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(g={...this.options.interpolation.defaultVariables,...g}),t=this.interpolator.interpolate(t,g,n.lng||this.language||r.usedLng,n),p){const h=t.match(this.interpolator.nestingRegexp),y=h&&h.length;m<y&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(t=this.interpolator.nest(t,(...h)=>(i==null?void 0:i[0])===h[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${h[0]} in key: ${o[0]}`),null):this.translate(...h,o),n)),n.interpolation&&this.interpolator.reset()}const a=n.postProcess||this.options.postProcess,s=M(a)?[a]:a;return t!=null&&(s!=null&&s.length)&&n.applyPostProcessor!==!1&&(t=ca.handle(s,t,o,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),t}resolve(t,o={}){let n,r,i,a,s;return M(t)&&(t=[t]),t.forEach(d=>{if(this.isValidLookup(n))return;const c=this.extractFromKey(d,o),p=c.key;r=p;let m=c.namespaces;this.options.fallbackNS&&(m=m.concat(this.options.fallbackNS));const g=o.count!==void 0&&!M(o.count),h=g&&!o.ordinal&&o.count===0,y=o.context!==void 0&&(M(o.context)||typeof o.context=="number")&&o.context!=="",f=o.lngs?o.lngs:this.languageUtils.toResolveHierarchy(o.lng||this.language,o.fallbackLng);m.forEach(v=>{var w,x;this.isValidLookup(n)||(s=v,!lr[`${f[0]}-${v}`]&&((w=this.utils)!=null&&w.hasLoadedNamespace)&&!((x=this.utils)!=null&&x.hasLoadedNamespace(s))&&(lr[`${f[0]}-${v}`]=!0,this.logger.warn(`key "${r}" for languages "${f.join(", ")}" won't get resolved as namespace "${s}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach(b=>{var S;if(this.isValidLookup(n))return;a=b;const T=[p];if((S=this.i18nFormat)!=null&&S.addLookupKeys)this.i18nFormat.addLookupKeys(T,p,b,v,o);else{let C;g&&(C=this.pluralResolver.getSuffix(b,o.count,o));const L=`${this.options.pluralSeparator}zero`,O=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(g&&(o.ordinal&&C.indexOf(O)===0&&T.push(p+C.replace(O,this.options.pluralSeparator)),T.push(p+C),h&&T.push(p+L)),y){const F=`${p}${this.options.contextSeparator||"_"}${o.context}`;T.push(F),g&&(o.ordinal&&C.indexOf(O)===0&&T.push(F+C.replace(O,this.options.pluralSeparator)),T.push(F+C),h&&T.push(F+L))}}let k;for(;k=T.pop();)this.isValidLookup(n)||(i=k,n=this.getResource(b,v,k,o))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:s}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,o,n,r={}){var i;return(i=this.i18nFormat)!=null&&i.getResource?this.i18nFormat.getResource(t,o,n,r):this.resourceStore.getResource(t,o,n,r)}getUsedParamsDetails(t={}){const o=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],n=t.replace&&!M(t.replace);let r=n?t.replace:t;if(n&&typeof t.count<"u"&&(r.count=t.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(const i of o)delete r[i]}return r}static hasDefaultValue(t){const o="defaultValue";for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&o===n.substring(0,o.length)&&t[n]!==void 0)return!0;return!1}}class dr{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=De.create("languageUtils")}getScriptPartFromCode(t){if(t=Dt(t),!t||t.indexOf("-")<0)return null;const o=t.split("-");return o.length===2||(o.pop(),o[o.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(o.join("-"))}getLanguagePartFromCode(t){if(t=Dt(t),!t||t.indexOf("-")<0)return t;const o=t.split("-");return this.formatLanguageCode(o[0])}formatLanguageCode(t){if(M(t)&&t.indexOf("-")>-1){let o;try{o=Intl.getCanonicalLocales(t)[0]}catch{}return o&&this.options.lowerCaseLng&&(o=o.toLowerCase()),o||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let o;return t.forEach(n=>{if(o)return;const r=this.formatLanguageCode(n);(!this.options.supportedLngs||this.isSupportedCode(r))&&(o=r)}),!o&&this.options.supportedLngs&&t.forEach(n=>{if(o)return;const r=this.getScriptPartFromCode(n);if(this.isSupportedCode(r))return o=r;const i=this.getLanguagePartFromCode(n);if(this.isSupportedCode(i))return o=i;o=this.options.supportedLngs.find(a=>{if(a===i)return a;if(!(a.indexOf("-")<0&&i.indexOf("-")<0)&&(a.indexOf("-")>0&&i.indexOf("-")<0&&a.substring(0,a.indexOf("-"))===i||a.indexOf(i)===0&&i.length>1))return a})}),o||(o=this.getFallbackCodes(this.options.fallbackLng)[0]),o}getFallbackCodes(t,o){if(!t)return[];if(typeof t=="function"&&(t=t(o)),M(t)&&(t=[t]),Array.isArray(t))return t;if(!o)return t.default||[];let n=t[o];return n||(n=t[this.getScriptPartFromCode(o)]),n||(n=t[this.formatLanguageCode(o)]),n||(n=t[this.getLanguagePartFromCode(o)]),n||(n=t.default),n||[]}toResolveHierarchy(t,o){const n=this.getFallbackCodes((o===!1?[]:o)||this.options.fallbackLng||[],t),r=[],i=a=>{a&&(this.isSupportedCode(a)?r.push(a):this.logger.warn(`rejecting language code not found in supportedLngs: ${a}`))};return M(t)&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&i(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&i(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&i(this.getLanguagePartFromCode(t))):M(t)&&i(this.formatLanguageCode(t)),n.forEach(a=>{r.indexOf(a)<0&&i(this.formatLanguageCode(a))}),r}}const ur={zero:0,one:1,two:2,few:3,many:4,other:5},pr={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class ah{constructor(t,o={}){this.languageUtils=t,this.options=o,this.logger=De.create("pluralResolver"),this.pluralRulesCache={}}addRule(t,o){this.rules[t]=o}clearCache(){this.pluralRulesCache={}}getRule(t,o={}){const n=Dt(t==="dev"?"en":t),r=o.ordinal?"ordinal":"cardinal",i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),pr;if(!t.match(/-|_/))return pr;const d=this.languageUtils.getLanguagePartFromCode(t);a=this.getRule(d,o)}return this.pluralRulesCache[i]=a,a}needsPlural(t,o={}){let n=this.getRule(t,o);return n||(n=this.getRule("dev",o)),(n==null?void 0:n.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(t,o,n={}){return this.getSuffixes(t,n).map(r=>`${o}${r}`)}getSuffixes(t,o={}){let n=this.getRule(t,o);return n||(n=this.getRule("dev",o)),n?n.resolvedOptions().pluralCategories.sort((r,i)=>ur[r]-ur[i]).map(r=>`${this.options.prepend}${o.ordinal?`ordinal${this.options.prepend}`:""}${r}`):[]}getSuffix(t,o,n={}){const r=this.getRule(t,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${r.select(o)}`:(this.logger.warn(`no plural rule found for: ${t}`),this.getSuffix("dev",o,n))}}const hr=(e,t,o,n=".",r=!0)=>{let i=Xp(e,t,o);return!i&&r&&M(o)&&(i=Xo(e,o,n),i===void 0&&(i=Xo(t,o,n))),i},Do=e=>e.replace(/\$/g,"$$$$");class sh{constructor(t={}){var o;this.logger=De.create("interpolator"),this.options=t,this.format=((o=t==null?void 0:t.interpolation)==null?void 0:o.format)||(n=>n),this.init(t)}init(t={}){t.interpolation||(t.interpolation={escapeValue:!0});const{escape:o,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:s,suffixEscaped:d,formatSeparator:c,unescapeSuffix:p,unescapePrefix:m,nestingPrefix:g,nestingPrefixEscaped:h,nestingSuffix:y,nestingSuffixEscaped:f,nestingOptionsSeparator:v,maxReplaces:w,alwaysFormat:x}=t.interpolation;this.escape=o!==void 0?o:Zp,this.escapeValue=n!==void 0?n:!0,this.useRawValueToEscape=r!==void 0?r:!1,this.prefix=i?st(i):a||"{{",this.suffix=s?st(s):d||"}}",this.formatSeparator=c||",",this.unescapePrefix=p?"":m||"-",this.unescapeSuffix=this.unescapePrefix?"":p||"",this.nestingPrefix=g?st(g):h||st("$t("),this.nestingSuffix=y?st(y):f||st(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=w||1e3,this.alwaysFormat=x!==void 0?x:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(o,n)=>(o==null?void 0:o.source)===n?(o.lastIndex=0,o):new RegExp(n,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(t,o,n,r){var h;let i,a,s;const d=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=y=>{if(y.indexOf(this.formatSeparator)<0){const x=hr(o,d,y,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(x,void 0,n,{...r,...o,interpolationkey:y}):x}const f=y.split(this.formatSeparator),v=f.shift().trim(),w=f.join(this.formatSeparator).trim();return this.format(hr(o,d,v,this.options.keySeparator,this.options.ignoreJSONStructure),w,n,{...r,...o,interpolationkey:v})};this.resetRegExp();const p=(r==null?void 0:r.missingInterpolationHandler)||this.options.missingInterpolationHandler,m=((h=r==null?void 0:r.interpolation)==null?void 0:h.skipOnVariables)!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:y=>Do(y)},{regex:this.regexp,safeValue:y=>this.escapeValue?Do(this.escape(y)):Do(y)}].forEach(y=>{for(s=0;i=y.regex.exec(t);){const f=i[1].trim();if(a=c(f),a===void 0)if(typeof p=="function"){const w=p(t,i,r);a=M(w)?w:""}else if(r&&Object.prototype.hasOwnProperty.call(r,f))a="";else if(m){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${f} for interpolating ${t}`),a="";else!M(a)&&!this.useRawValueToEscape&&(a=nr(a));const v=y.safeValue(a);if(t=t.replace(i[0],v),m?(y.regex.lastIndex+=a.length,y.regex.lastIndex-=i[0].length):y.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),t}nest(t,o,n={}){let r,i,a;const s=(d,c)=>{const p=this.nestingOptionsSeparator;if(d.indexOf(p)<0)return d;const m=d.split(new RegExp(`${p}[ ]*{`));let g=`{${m[1]}`;d=m[0],g=this.interpolate(g,a);const h=g.match(/'/g),y=g.match(/"/g);(((h==null?void 0:h.length)??0)%2===0&&!y||y.length%2!==0)&&(g=g.replace(/'/g,'"'));try{a=JSON.parse(g),c&&(a={...c,...a})}catch(f){return this.logger.warn(`failed parsing options string in nesting for key ${d}`,f),`${d}${p}${g}`}return a.defaultValue&&a.defaultValue.indexOf(this.prefix)>-1&&delete a.defaultValue,d};for(;r=this.nestingRegexp.exec(t);){let d=[];a={...n},a=a.replace&&!M(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;const c=/{.*}/.test(r[1])?r[1].lastIndexOf("}")+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(d=r[1].slice(c).split(this.formatSeparator).map(p=>p.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=o(s.call(this,r[1].trim(),a),a),i&&r[0]===t&&!M(i))return i;M(i)||(i=nr(i)),i||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${t}`),i=""),d.length&&(i=d.reduce((p,m)=>this.format(p,m,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),t=t.replace(r[0],i),this.regexp.lastIndex=0}return t}}const lh=e=>{let t=e.toLowerCase().trim();const o={};if(e.indexOf("(")>-1){const n=e.split("(");t=n[0].toLowerCase().trim();const r=n[1].substring(0,n[1].length-1);t==="currency"&&r.indexOf(":")<0?o.currency||(o.currency=r.trim()):t==="relativetime"&&r.indexOf(":")<0?o.range||(o.range=r.trim()):r.split(";").forEach(a=>{if(a){const[s,...d]=a.split(":"),c=d.join(":").trim().replace(/^'+|'+$/g,""),p=s.trim();o[p]||(o[p]=c),c==="false"&&(o[p]=!1),c==="true"&&(o[p]=!0),isNaN(c)||(o[p]=parseInt(c,10))}})}return{formatName:t,formatOptions:o}},mr=e=>{const t={};return(o,n,r)=>{let i=r;r&&r.interpolationkey&&r.formatParams&&r.formatParams[r.interpolationkey]&&r[r.interpolationkey]&&(i={...i,[r.interpolationkey]:void 0});const a=n+JSON.stringify(i);let s=t[a];return s||(s=e(Dt(n),r),t[a]=s),s(o)}},ch=e=>(t,o,n)=>e(Dt(o),n)(t);class dh{constructor(t={}){this.logger=De.create("formatter"),this.options=t,this.init(t)}init(t,o={interpolation:{}}){this.formatSeparator=o.interpolation.formatSeparator||",";const n=o.cacheInBuiltFormats?mr:ch;this.formats={number:n((r,i)=>{const a=new Intl.NumberFormat(r,{...i});return s=>a.format(s)}),currency:n((r,i)=>{const a=new Intl.NumberFormat(r,{...i,style:"currency"});return s=>a.format(s)}),datetime:n((r,i)=>{const a=new Intl.DateTimeFormat(r,{...i});return s=>a.format(s)}),relativetime:n((r,i)=>{const a=new Intl.RelativeTimeFormat(r,{...i});return s=>a.format(s,i.range||"day")}),list:n((r,i)=>{const a=new Intl.ListFormat(r,{...i});return s=>a.format(s)})}}add(t,o){this.formats[t.toLowerCase().trim()]=o}addCached(t,o){this.formats[t.toLowerCase().trim()]=mr(o)}format(t,o,n,r={}){const i=o.split(this.formatSeparator);if(i.length>1&&i[0].indexOf("(")>1&&i[0].indexOf(")")<0&&i.find(s=>s.indexOf(")")>-1)){const s=i.findIndex(d=>d.indexOf(")")>-1);i[0]=[i[0],...i.splice(1,s)].join(this.formatSeparator)}return i.reduce((s,d)=>{var m;const{formatName:c,formatOptions:p}=lh(d);if(this.formats[c]){let g=s;try{const h=((m=r==null?void 0:r.formatParams)==null?void 0:m[r.interpolationkey])||{},y=h.locale||h.lng||r.locale||r.lng||n;g=this.formats[c](s,y,{...p,...r,...h})}catch(h){this.logger.warn(h)}return g}else this.logger.warn(`there was no format function for ${c}`);return s},t)}}const uh=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};class ph extends go{constructor(t,o,n,r={}){var i,a;super(),this.backend=t,this.store=o,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=De.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],(a=(i=this.backend)==null?void 0:i.init)==null||a.call(i,n,r.backend,r)}queueLoad(t,o,n,r){const i={},a={},s={},d={};return t.forEach(c=>{let p=!0;o.forEach(m=>{const g=`${c}|${m}`;!n.reload&&this.store.hasResourceBundle(c,m)?this.state[g]=2:this.state[g]<0||(this.state[g]===1?a[g]===void 0&&(a[g]=!0):(this.state[g]=1,p=!1,a[g]===void 0&&(a[g]=!0),i[g]===void 0&&(i[g]=!0),d[m]===void 0&&(d[m]=!0)))}),p||(s[c]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(d)}}loaded(t,o,n){const r=t.split("|"),i=r[0],a=r[1];o&&this.emit("failedLoading",i,a,o),!o&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[t]=o?-1:2,o&&n&&(this.state[t]=0);const s={};this.queue.forEach(d=>{Qp(d.loaded,[i],a),uh(d,t),o&&d.errors.push(o),d.pendingCount===0&&!d.done&&(Object.keys(d.loaded).forEach(c=>{s[c]||(s[c]={});const p=d.loaded[c];p.length&&p.forEach(m=>{s[c][m]===void 0&&(s[c][m]=!0)})}),d.done=!0,d.errors.length?d.callback(d.errors):d.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(d=>!d.done)}read(t,o,n,r=0,i=this.retryTimeout,a){if(!t.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:o,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;const s=(c,p)=>{if(this.readingCalls--,this.waitingReads.length>0){const m=this.waitingReads.shift();this.read(m.lng,m.ns,m.fcName,m.tried,m.wait,m.callback)}if(c&&p&&r<this.maxRetries){setTimeout(()=>{this.read.call(this,t,o,n,r+1,i*2,a)},i);return}a(c,p)},d=this.backend[n].bind(this.backend);if(d.length===2){try{const c=d(t,o);c&&typeof c.then=="function"?c.then(p=>s(null,p)).catch(s):s(null,c)}catch(c){s(c)}return}return d(t,o,s)}prepareLoading(t,o,n={},r){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();M(t)&&(t=this.languageUtils.toResolveHierarchy(t)),M(o)&&(o=[o]);const i=this.queueLoad(t,o,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(a=>{this.loadOne(a)})}load(t,o,n){this.prepareLoading(t,o,{},n)}reload(t,o,n){this.prepareLoading(t,o,{reload:!0},n)}loadOne(t,o=""){const n=t.split("|"),r=n[0],i=n[1];this.read(r,i,"read",void 0,void 0,(a,s)=>{a&&this.logger.warn(`${o}loading namespace ${i} for language ${r} failed`,a),!a&&s&&this.logger.log(`${o}loaded namespace ${i} for language ${r}`,s),this.loaded(t,a,s)})}saveMissing(t,o,n,r,i,a={},s=()=>{}){var d,c,p,m,g;if((c=(d=this.services)==null?void 0:d.utils)!=null&&c.hasLoadedNamespace&&!((m=(p=this.services)==null?void 0:p.utils)!=null&&m.hasLoadedNamespace(o))){this.logger.warn(`did not save key "${n}" as the namespace "${o}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(n==null||n==="")){if((g=this.backend)!=null&&g.create){const h={...a,isUpdate:i},y=this.backend.create.bind(this.backend);if(y.length<6)try{let f;y.length===5?f=y(t,o,n,r,h):f=y(t,o,n,r),f&&typeof f.then=="function"?f.then(v=>s(null,v)).catch(s):s(null,f)}catch(f){s(f)}else y(t,o,n,r,s,h)}!t||!t[0]||this.store.addResource(t[0],o,n,r)}}}const fr=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),M(e[1])&&(t.defaultValue=e[1]),M(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const o=e[3]||e[2];Object.keys(o).forEach(n=>{t[n]=o[n]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),gr=e=>{var t,o;return M(e.ns)&&(e.ns=[e.ns]),M(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),M(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),((o=(t=e.supportedLngs)==null?void 0:t.indexOf)==null?void 0:o.call(t,"cimode"))<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),typeof e.initImmediate=="boolean"&&(e.initAsync=e.initImmediate),e},zt=()=>{},hh=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(o=>{typeof e[o]=="function"&&(e[o]=e[o].bind(e))})};class Wt extends go{constructor(t={},o){if(super(),this.options=gr(t),this.services={},this.logger=De,this.modules={external:[]},hh(this),o&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,o),this;setTimeout(()=>{this.init(t,o)},0)}}init(t={},o){this.isInitializing=!0,typeof t=="function"&&(o=t,t={}),t.defaultNS==null&&t.ns&&(M(t.ns)?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));const n=fr();this.options={...n,...this.options,...gr(t)},this.options.interpolation={...n.interpolation,...this.options.interpolation},t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator);const r=c=>c?typeof c=="function"?new c:c:null;if(!this.options.isClone){this.modules.logger?De.init(r(this.modules.logger),this.options):De.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:c=dh;const p=new dr(this.options);this.store=new sr(this.options.resources,this.options);const m=this.services;m.logger=De,m.resourceStore=this.store,m.languageUtils=p,m.pluralResolver=new ah(p,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==n.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),c&&(!this.options.interpolation.format||this.options.interpolation.format===n.interpolation.format)&&(m.formatter=r(c),m.formatter.init&&m.formatter.init(m,this.options),this.options.interpolation.format=m.formatter.format.bind(m.formatter)),m.interpolator=new sh(this.options),m.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},m.backendConnector=new ph(r(this.modules.backend),m.resourceStore,m,this.options),m.backendConnector.on("*",(h,...y)=>{this.emit(h,...y)}),this.modules.languageDetector&&(m.languageDetector=r(this.modules.languageDetector),m.languageDetector.init&&m.languageDetector.init(m,this.options.detection,this.options)),this.modules.i18nFormat&&(m.i18nFormat=r(this.modules.i18nFormat),m.i18nFormat.init&&m.i18nFormat.init(this)),this.translator=new ao(this.services,this.options),this.translator.on("*",(h,...y)=>{this.emit(h,...y)}),this.modules.external.forEach(h=>{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,o||(o=zt),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&c[0]!=="dev"&&(this.options.lng=c[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(c=>{this[c]=(...p)=>this.store[c](...p)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(c=>{this[c]=(...p)=>(this.store[c](...p),this)});const s=Et(),d=()=>{const c=(p,m)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),s.resolve(m),o(p,m)};if(this.languages&&!this.isInitialized)return c(null,this.t.bind(this));this.changeLanguage(this.options.lng,c)};return this.options.resources||!this.options.initAsync?d():setTimeout(d,0),s}loadResources(t,o=zt){var i,a;let n=o;const r=M(t)?t:this.language;if(typeof t=="function"&&(n=t),!this.options.resources||this.options.partialBundledLanguages){if((r==null?void 0:r.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return n();const s=[],d=c=>{if(!c||c==="cimode")return;this.services.languageUtils.toResolveHierarchy(c).forEach(m=>{m!=="cimode"&&s.indexOf(m)<0&&s.push(m)})};r?d(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(p=>d(p)),(a=(i=this.options.preload)==null?void 0:i.forEach)==null||a.call(i,c=>d(c)),this.services.backendConnector.load(s,this.options.ns,c=>{!c&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(c)})}else n(null)}reloadResources(t,o,n){const r=Et();return typeof t=="function"&&(n=t,t=void 0),typeof o=="function"&&(n=o,o=void 0),t||(t=this.languages),o||(o=this.options.ns),n||(n=zt),this.services.backendConnector.reload(t,o,i=>{r.resolve(),n(i)}),r}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&ca.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1)){for(let o=0;o<this.languages.length;o++){const n=this.languages[o];if(!(["cimode","dev"].indexOf(n)>-1)&&this.store.hasLanguageSomeTranslations(n)){this.resolvedLanguage=n;break}}!this.resolvedLanguage&&this.languages.indexOf(t)<0&&this.store.hasLanguageSomeTranslations(t)&&(this.resolvedLanguage=t,this.languages.unshift(t))}}changeLanguage(t,o){this.isLanguageChangingTo=t;const n=Et();this.emit("languageChanging",t);const r=s=>{this.language=s,this.languages=this.services.languageUtils.toResolveHierarchy(s),this.resolvedLanguage=void 0,this.setResolvedLanguage(s)},i=(s,d)=>{d?this.isLanguageChangingTo===t&&(r(d),this.translator.changeLanguage(d),this.isLanguageChangingTo=void 0,this.emit("languageChanged",d),this.logger.log("languageChanged",d)):this.isLanguageChangingTo=void 0,n.resolve((...c)=>this.t(...c)),o&&o(s,(...c)=>this.t(...c))},a=s=>{var p,m;!t&&!s&&this.services.languageDetector&&(s=[]);const d=M(s)?s:s&&s[0],c=this.store.hasLanguageSomeTranslations(d)?d:this.services.languageUtils.getBestMatchFromCodes(M(s)?[s]:s);c&&(this.language||r(c),this.translator.language||this.translator.changeLanguage(c),(m=(p=this.services.languageDetector)==null?void 0:p.cacheUserLanguage)==null||m.call(p,c)),this.loadResources(c,g=>{i(g,c)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(t),n}getFixedT(t,o,n){const r=(i,a,...s)=>{let d;typeof a!="object"?d=this.options.overloadTranslationOptionHandler([i,a].concat(s)):d={...a},d.lng=d.lng||r.lng,d.lngs=d.lngs||r.lngs,d.ns=d.ns||r.ns,d.keyPrefix!==""&&(d.keyPrefix=d.keyPrefix||n||r.keyPrefix);const c=this.options.keySeparator||".";let p;return d.keyPrefix&&Array.isArray(i)?p=i.map(m=>(typeof m=="function"&&(m=Jo(m,{...this.options,...a})),`${d.keyPrefix}${c}${m}`)):(typeof i=="function"&&(i=Jo(i,{...this.options,...a})),p=d.keyPrefix?`${d.keyPrefix}${c}${i}`:i),this.t(p,d)};return M(t)?r.lng=t:r.lngs=t,r.ns=o,r.keyPrefix=n,r}t(...t){var o;return(o=this.translator)==null?void 0:o.translate(...t)}exists(...t){var o;return(o=this.translator)==null?void 0:o.exists(...t)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t,o={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const n=o.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()==="cimode")return!0;const a=(s,d)=>{const c=this.services.backendConnector.state[`${s}|${d}`];return c===-1||c===0||c===2};if(o.precheck){const s=o.precheck(this,a);if(s!==void 0)return s}return!!(this.hasResourceBundle(n,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,t)&&(!r||a(i,t)))}loadNamespaces(t,o){const n=Et();return this.options.ns?(M(t)&&(t=[t]),t.forEach(r=>{this.options.ns.indexOf(r)<0&&this.options.ns.push(r)}),this.loadResources(r=>{n.resolve(),o&&o(r)}),n):(o&&o(),Promise.resolve())}loadLanguages(t,o){const n=Et();M(t)&&(t=[t]);const r=this.options.preload||[],i=t.filter(a=>r.indexOf(a)<0&&this.services.languageUtils.isSupportedCode(a));return i.length?(this.options.preload=r.concat(i),this.loadResources(a=>{n.resolve(),o&&o(a)}),n):(o&&o(),Promise.resolve())}dir(t){var r,i;if(t||(t=this.resolvedLanguage||(((r=this.languages)==null?void 0:r.length)>0?this.languages[0]:this.language)),!t)return"rtl";try{const a=new Intl.Locale(t);if(a&&a.getTextInfo){const s=a.getTextInfo();if(s&&s.direction)return s.direction}}catch{}const o=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],n=((i=this.services)==null?void 0:i.languageUtils)||new dr(fr());return t.toLowerCase().indexOf("-latn")>1?"ltr":o.indexOf(n.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(t={},o){return new Wt(t,o)}cloneInstance(t={},o=zt){const n=t.forkResourceStore;n&&delete t.forkResourceStore;const r={...this.options,...t,isClone:!0},i=new Wt(r);if((t.debug!==void 0||t.prefix!==void 0)&&(i.logger=i.logger.clone(t)),["store","services","language"].forEach(s=>{i[s]=this[s]}),i.services={...this.services},i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},n){const s=Object.keys(this.store.data).reduce((d,c)=>(d[c]={...this.store.data[c]},d[c]=Object.keys(d[c]).reduce((p,m)=>(p[m]={...d[c][m]},p),d[c]),d),{});i.store=new sr(s,r),i.services.resourceStore=i.store}return i.translator=new ao(i.services,r),i.translator.on("*",(s,...d)=>{i.emit(s,...d)}),i.init(r,o),i.translator.options=r,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const ne=Wt.createInstance();ne.createInstance=Wt.createInstance;ne.createInstance;ne.dir;ne.init;ne.loadResources;ne.reloadResources;ne.use;ne.changeLanguage;ne.getFixedT;ne.t;ne.exists;ne.setDefaultNamespace;ne.hasLoadedNamespace;ne.loadNamespaces;ne.loadLanguages;const mh=(e,t,o,n)=>{var i,a,s,d;const r=[o,{code:t,...n||{}}];if((a=(i=e==null?void 0:e.services)==null?void 0:i.logger)!=null&&a.forward)return e.services.logger.forward(r,"warn","react-i18next::",!0);ot(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),(d=(s=e==null?void 0:e.services)==null?void 0:s.logger)!=null&&d.warn?e.services.logger.warn(...r):console!=null&&console.warn&&console.warn(...r)},yr={},Zo=(e,t,o,n)=>{ot(o)&&yr[o]||(ot(o)&&(yr[o]=new Date),mh(e,t,o,n))},ua=(e,t)=>()=>{if(e.isInitialized)t();else{const o=()=>{setTimeout(()=>{e.off("initialized",o)},0),t()};e.on("initialized",o)}},en=(e,t,o)=>{e.loadNamespaces(t,ua(e,o))},vr=(e,t,o,n)=>{if(ot(o)&&(o=[o]),e.options.preload&&e.options.preload.indexOf(t)>-1)return en(e,o,n);o.forEach(r=>{e.options.ns.indexOf(r)<0&&e.options.ns.push(r)}),e.loadLanguages(t,ua(e,n))},fh=(e,t,o={})=>
57!t.languages||!t.languages.length?(Zo(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:o.lng,precheck:(n,r)=>{if(o.bindI18n&&o.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}),ot=e=>typeof e=="string",gh=e=>typeof e=="object"&&e!==null,yh=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,vh={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"â¦","…":"â¦","/":"/","/":"/"},wh=e=>vh[e],bh=e=>e.replace(yh,wh);let tn={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:bh};const Ph=(e={})=>{tn={...tn,...e}},xh=()=>tn;let pa;const Sh=e=>{pa=e},Th=()=>pa,Ah={type:"3rdParty",init(e){Ph(e.options.react),Sh(e)}},Eh=u.createContext();class kh{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(o=>{this.usedNamespaces[o]||(this.usedNamespaces[o]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const Ch=(e,t)=>{const o=u.useRef();return u.useEffect(()=>{o.current=e},[e,t]),o.current},ha=(e,t,o,n)=>e.getFixedT(t,o,n),Nh=(e,t,o,n)=>u.useCallback(ha(e,t,o,n),[e,t,o,n]),Rh=(e,t={})=>{var T,k,S,C;const{i18n:o}=t,{i18n:n,defaultNS:r}=u.useContext(Eh)||{},i=o||n||Th();if(i&&!i.reportNamespaces&&(i.reportNamespaces=new kh),!i){Zo(i,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const L=(F,q)=>ot(q)?q:gh(q)&&ot(q.defaultValue)?q.defaultValue:Array.isArray(F)?F[F.length-1]:F,O=[L,{},!1];return O.t=L,O.i18n={},O.ready=!1,O}(T=i.options.react)!=null&&T.wait&&Zo(i,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const a={...xh(),...i.options.react,...t},{useSuspense:s,keyPrefix:d}=a;let c=r||((k=i.options)==null?void 0:k.defaultNS);c=ot(c)?[c]:c||["translation"],(C=(S=i.reportNamespaces).addUsedNamespaces)==null||C.call(S,c);const p=(i.isInitialized||i.initializedStoreOnce)&&c.every(L=>fh(L,i,a)),m=Nh(i,t.lng||null,a.nsMode==="fallback"?c:c[0],d),g=()=>m,h=()=>ha(i,t.lng||null,a.nsMode==="fallback"?c:c[0],d),[y,f]=u.useState(g);let v=c.join();t.lng&&(v=`${t.lng}${v}`);const w=Ch(v),x=u.useRef(!0);u.useEffect(()=>{const{bindI18n:L,bindI18nStore:O}=a;x.current=!0,!p&&!s&&(t.lng?vr(i,t.lng,c,()=>{x.current&&f(h)}):en(i,c,()=>{x.current&&f(h)})),p&&w&&w!==v&&x.current&&f(h);const F=()=>{x.current&&f(h)};return L&&(i==null||i.on(L,F)),O&&(i==null||i.store.on(O,F)),()=>{x.current=!1,i&&L&&(L==null||L.split(" ").forEach(q=>i.off(q,F))),O&&i&&O.split(" ").forEach(q=>i.store.off(q,F))}},[i,v]),u.useEffect(()=>{x.current&&p&&f(g)},[i,d,p]);const b=[y,i,p];if(b.t=y,b.i18n=i,b.ready=p,p||!p&&!s)return b;throw new Promise(L=>{t.lng?vr(i,t.lng,c,()=>L()):en(i,c,()=>L())})},{slice:Ih,forEach:Dh}=[];function Wh(e){return Dh.call(Ih.call(arguments,1),t=>{if(t)for(const o in t)e[o]===void 0&&(e[o]=t[o])}),e}
57function Lh(e){return typeof e!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(o=>o.test(e))}const wr=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Oh=function(e,t){const n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},r=encodeURIComponent(t);let i=`${e}=${r}`;if(n.maxAge>0){const a=n.maxAge-0;if(Number.isNaN(a))throw new Error("maxAge should be a Number");i+=`; Max-Age=${Math.floor(a)}`}if(n.domain){if(!wr.test(n.domain))throw new TypeError("option domain is invalid");i+=`; Domain=${n.domain}`}if(n.path){if(!wr.test(n.path))throw new TypeError("option path is invalid");i+=`; Path=${n.path}`}if(n.expires){if(typeof n.expires.toUTCString!="function")throw new TypeError("option expires is invalid");i+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(i+="; HttpOnly"),n.secure&&(i+="; Secure"),n.sameSite)switch(typeof n.sameSite=="string"?n.sameSite.toLowerCase():n.sameSite){case!0:i+="; SameSite=Strict";break;case"lax":i+="; SameSite=Lax";break;case"strict":i+="; SameSite=Strict";break;case"none":i+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return n.partitioned&&(i+="; Partitioned"),i},br={create(e,t,o,n){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};o&&(r.expires=new Date,r.expires.setTime(r.expires.getTime()+o*60*1e3)),n&&(r.domain=n),document.cookie=Oh(e,t,r)},read(e){const t=`${e}=`,o=document.cookie.split(";");for(let n=0;n<o.length;n++){let r=o[n];for(;r.charAt(0)===" ";)r=r.substring(1,r.length);if(r.indexOf(t)===0)return r.substring(t.length,r.length)}return null},remove(e,t){this.create(e,"",-1,t)}};var Fh={name:"cookie",lookup(e){let{lookupCookie:t}=e;if(t&&typeof document<"u")return br.read(t)||void 0},cacheUserLanguage(e,t){let{lookupCookie:o,cookieMinutes:n,cookieDomain:r,cookieOptions:i}=t;o&&typeof document<"u"&&br.create(o,e,n,r,i)}},_h={name:"querystring",lookup(e){var n;let{lookupQuerystring:t}=e,o;if(typeof window<"u"){let{search:r}=window.location;!window.location.search&&((n=window.location.hash)==null?void 0:n.indexOf("?"))>-1&&(r=window.location.hash.substring(window.location.hash.indexOf("?")));const a=r.substring(1).split("&");for(let s=0;s<a.length;s++){const d=a[s].indexOf("=");d>0&&a[s].substring(0,d)===t&&(o=a[s].substring(d+1))}}return o}},Mh={name:"hash",lookup(e){var r;let{lookupHash:t,lookupFromHashIndex:o}=e,n;if(typeof window<"u"){const{hash:i}=window.location;if(i&&i.length>2){const a=i.substring(1);if(t){const s=a.split("&");for(let d=0;d<s.length;d++){const c=s[d].indexOf("=");c>0&&s[d].substring(0,c)===t&&(n=s[d].substring(c+1))}}if(n)return n;if(!n&&o>-1){const s=i.match(/\/([a-zA-Z-]*)/g);return Array.isArray(s)?(r=s[typeof o=="number"?o:0])==null?void 0:r.replace("/",""):void 0}}}return n}};let lt=null;const Pr=()=>{if(lt!==null)return lt;try{if(lt=typeof window<"u"&&window.localStorage!==null,!lt)return!1;const e="i18next.translate.boo";window.localStorage.setItem(e,"foo"),window.localStorage.removeItem(e)}catch{lt=!1}return lt};var jh={name:"localStorage",lookup(e){let{lookupLocalStorage:t}=e;if(t&&Pr())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:o}=t;o&&Pr()&&window.localStorage.setItem(o,e)}};let ct=null;const xr=()=>{if(ct!==null)return ct;try{if(ct=typeof window<"u"&&window.sessionStorage!==null,!ct)return!1;const e="i18next.translate.boo";window.sessionStorage.setItem(e,"foo"),window.sessionStorage.removeItem(e)}catch{ct=!1}return ct};var Hh={name:"sessionStorage",lookup(e){let{lookupSessionStorage:t}=e;if(t&&xr())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:o}=t;o&&xr()&&window.sessionStorage.setItem(o,e)}},$h={name:"navigator",lookup(e){const t=[];if(typeof navigator<"u"){const{languages:o,userLanguage:n,language:r}=navigator;if(o)for(let i=0;i<o.length;i++)t.push(o[i]);
vendor: 4,972 bytes, line 57
57n&&t.push(n),r&&t.push(r)}return t.length>0?t:void 0}},Bh={name:"htmlTag",lookup(e){let{htmlTag:t}=e,o;const n=t||(typeof document<"u"?document.documentElement:null);return n&&typeof n.getAttribute=="function"&&(o=n.getAttribute("lang")),o}},Vh={name:"path",lookup(e){var r;let{lookupFromPathIndex:t}=e;if(typeof window>"u")return;const o=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(o)?(r=o[typeof t=="number"?t:0])==null?void 0:r.replace("/",""):void 0}},Uh={name:"subdomain",lookup(e){var r,i;let{lookupFromSubdomainIndex:t}=e;const o=typeof t=="number"?t+1:1,n=typeof window<"u"&&((i=(r=window.location)==null?void 0:r.hostname)==null?void 0:i.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i));if(n)return n[o]}};let ma=!1;try{document.cookie,ma=!0}catch{}const fa=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];ma||fa.splice(1,1);const qh=()=>({order:fa,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:e=>e});class ga{constructor(t){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(t,o)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=t,this.options=Wh(o,this.options||{},qh()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=r=>r.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=n,this.addDetector(Fh),this.addDetector(_h),this.addDetector(jh),this.addDetector(Hh),this.addDetector($h),this.addDetector(Bh),this.addDetector(Vh),this.addDetector(Uh),this.addDetector(Mh)}addDetector(t){return this.detectors[t.name]=t,this}detect(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,o=[];return t.forEach(n=>{if(this.detectors[n]){let r=this.detectors[n].lookup(this.options);r&&typeof r=="string"&&(r=[r]),r&&(o=o.concat(r))}}),o=o.filter(n=>n!=null&&!Lh(n)).map(n=>this.options.convertDetectedLanguage(n)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?o:o.length>0?o[0]:null}cacheUserLanguage(t){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;o&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(t)>-1||o.forEach(n=>{this.detectors[n]&&this.detectors[n].cacheUserLanguage(t,this.options)}))}}ga.type="languageDetector";const zh={home:"主é ",openMenu:"éåé¸å®",logoAlt:"PetWell 馿¸¯å¯µç©å¥åº· App æ¨èª - ç¸é«è¨ºæè©å¹è寵ç©å¥åº·ç®¡çå¹³å°",petFriendly:"寵ç©åå",clinics:"診æè©å¹",salons:"寵ç©ç¾å®¹",lodging:"寵ç©å¯é¤",malls:"寵ç©åååå ´",homeVisits:"寵ç©ä¸éæå",restaurants:"寵ç©ååé¤å»³",restaurantsByDistrict:"æ18åæµé¤å»³",ngos:"åç©çµç¹",about:"éæ¼æå",forum:"è¨è«å",blog:"è³è¨",ownerZone:"主人å°å",tests:"è¶£å³æ¸¬è©¦",petMatchmaker:"寵ç©é
å°æ¸¬è©¦",petActivities:"æ´»å",testBooking:"檢測æå",nutritionScore:"ç³§é£è©å",otherServices:"åæ¶åä½",review:"ç¨åæ ¼å¹",download:"ä¸è¼ App",partnershipMenu:{merchant:"åæ¶åä½",merchantHint:"åªé«æ¨å»£èå¹³å°åç»",events:"æ´»åçå",eventsHint:"寵ç©å¸éèåå¹´è¯"},petFriendlyMenu:{goOut:"帶æ¯å©åºè¡",care:"æµé«ç",services:"ç¾å®¹åå¯é¤",restaurants:"é¤å»³",malls:"åå ´",clinics:"診æ",homeVisits:"ä¸éæå",salons:"ç¾å®¹",lodging:"å¯é¤"}},Kh={searchNearby:"æå°éè¿",nearby:"éè¿",sortedByDistance:"ç±è¿å°é ",locationDenied:"æªè½åå¾ä½ å
ä½ç½®ãè«å
許å®ä½ï¼åæ³ãæå°éè¿ãã",locationBlockedTitle:"æªè½éåå®ä½",locationBlockedBody:"ä¹åæçµåå®ä½ï¼æä»¥è¦åºç覽å¨è¨å®éè¿ã",locationBlockedStep1:"æ³ç¶²ååå·¦éå
éé ",locationBlockedStep2:"å°ãä½ç½®ãæ¹æãå
許ã",locationBlockedStep3:"è¿åæ³ãåè©¦ä¸æ¬¡ã",locationBlockedIos:"è«å» iPhoneãè¨å®ãâ Safari æ Chrome â ä½ç½®ï¼å
許å¢åç¶²ç«ï¼ç¶å¾è¿åæ³ãåè©¦ä¸æ¬¡ãã",locationTimeoutTitle:"æµåå°ä½ç½®",locationTimeoutBody:"è«ç¢ºèªå®ä½å·²éï¼åè©¦ä¸æ¬¡ã",locationUnavailableTitle:"æµåå°ä½ç½®",locationUnavailable:"å¢åçè¦½å¨æªè½æä¾ä½ç½®ã",locationRetry:"åè©¦ä¸æ¬¡",locationDismiss:"æ«æå使",distanceM:"{{m}} ç±³",distanceKm:"{{km}} å
¬é"},Gh={cta:"é ç´è¨åº§",ctaShort:"è¨åº§",title:"é ç´è¨åº§",subtitle:"{{restaurantName}} · éåºå¾å¾
é¤å»³ç¢ºèª",when:"æ¥æèæé",moreDates:"å
¶ä»æ¥æ",contact:"è¯çµ¡è³æ",customerName:"å§å",customerNamePlaceholder:"ä¾
57å¦ï¼é³å¤§æ",customerPhone:"é»è©±",customerPhonePlaceholder:"ä¾å¦ï¼9123 4567",customerEmail:"é»éµ",customerEmailPlaceholder:"[email protected]",reservationAt:"é ç´æ¥æåæé",reservationDate:"æ¥æ",reservationDatePlaceholder:"é¸ææ¥æ",reservationTime:"æé",partySize:"人æ¸",petCount:"寵ç©",maxPetsHint:"æå¤ {{count}} é»",fewer:"æ¸å°",more:"å¢å ",petSummary:"寵ç©è³æï¼é¸å¡«ï¼",petSummaryPlaceholder:"ä¾å¦ï¼1 é»å°åç¬ãéæ¶å¤ä½",specialRequest:"ç¹å¥è¦æ±ï¼é¸å¡«ï¼",specialRequestPlaceholder:"座ä½å好ãæ
¶ç¥å®æç",addExtras:"å å
¥é»éµæå註",editExtras:"編輯é»éµæå註",termsTitle:"è¨åº§æ¢æ¬¾",termsAccept:"æåæè¨åº§æ¢æ¬¾",viewTerms:"æ¥çæ¢æ¬¾",hideTerms:"æ¶èµ·æ¢æ¬¾",depositNotice:"帶 {{count}} 黿以ä¸å¯µç©æï¼é¤å»³å¯è½è¦æ±è¨éã",noAvailableDates:"æ«ææ²æå¯é ç´æ¥æã",noAvailableTimes:"éå¤©æ²æå¯é ç´ææ®µã",pickDateFirst:"è«å
é¸ææ¥æã",notice:"æäº¤å¾å¾
確èªï¼é¤å»³å¯è½æè¯çµ¡ä½ ã",submit:"éåºè¨åº§",submitting:"éåºä¸â¦",cancel:"åæ¶",close:"éé",successTitle:"å·²éåº",successDesc:"å·²æ¶å°ä½ å°ã{{restaurantName}}ãçè¨åº§è¦æ±ï¼é¤å»³ç¢ºèªå¾æéç¥ä½ ã",errorDesc:"æ«ææªè½éåºï¼è«ç¨å¾å試ã",validation:{required:"è«å¡«å¯«æ¤æ¬ã",email:"è«è¼¸å
¥ææé»éµã",future:"è«é¸æå¯æ¥åçè¼å¾æéã",unavailableDate:"æ¤æ¥æä¸æ¥åè¨åº§ã",unavailableTime:"æ¤ææ®µä¸æ¥åè¨åº§ã",maxPets:"æå¤å¯å¸¶ {{count}} é»å¯µç©ã",partySize:"è«è³å°é¸æ 1 人ã",petCount:"å¯µç©æ¸éä¸å¯å°æ¼ 0ã",terms:"è«å
åæè¨åº§æ¢æ¬¾ã"}},Yh={title:"è¶£å³å¯µç©æ¸¬è©¦",subtitle:"ç¼æéæ¼ä½ åä½ å¯µç©å
æè¶£æ¸¬è©¦ï¼",petMatchmakerDesc:"æµåºéç¨®å¯µç©æå±ä½ å
æ§æ ¼åçæ´»æ¹å¼ã",startTest:"éå§æ¸¬è©¦"},Qh={title:"å
¨æ¸¯é¦å",titleHighlight:"寵ç©å¥åº·App",titleEnd:"",subtitle:"æè©³ç¡ç¸é«ï¼å¯µç©ç¾å®¹è³è¨ ç¡å¨ä¸App",cta:"ç«å³ä¸è¼"},Xh={eyebrow:"馿¸¯é¦åä¸ç«å¼å¯µç©å¥åº·å¹³å°",summary:"寵ç©é¦æ¸¯é¦é¸å¹³å° â ç¸é«è¨ºæè©å¹ã寵ç©ååé¤å»³ã寵ç©ç¾å®¹å¯é¤ãå¯µç©æ´»åèè«å£",explorePlatform:"æ¢ç´¢å¹³å°",stats:{clinicsValue:"200+",clinicsLabel:"ç¸é«è¨ºæ",restaurantsValue:"1500+",restaurantsLabel:"ååé¤å»³",freeValue:"100%",freeLabel:"å®å
¨å
è²»"},features:{eyebrow:"æ ¸å¿è½å",title:"çºæ¯å©ä¸»äººèè¨",subtitle:"æ´åè©å¹ãè³è¨èå¥åº·ç´éï¼è®ç
§é¡§æ¯å©æ´éæãæ´ç°¡å®ã",saveTime:{title:"ç¯çè³æèå°æé",description:"PetWell å·²åä½µææè©å¹*ï¼ä¸å平尿µææéè³è¨ã"},advocacy:{title:"æ¨ååç©æ¬ç",description:"å享好èå£çç¶æ·ï¼å
±ååµå»ºäººå¯µå
±èç社æã"},records:{title:"æ°¸ä¹
å²å寵ç©å¥åº·ç´é",description:"詳ç¡ä¿ç寵ç©ä¸ççç´éï¼è½é«çé½å驿¼è³æã"},free:{title:"å®å
¨å
è²»",description:"æå叿ææåç©é½å¾å°åªè³ªçæåã"}},platform:{eyebrow:"ç¢åçæ
",title:"ä¸ç«å¼å¯µç©çæ´»æå",subtitle:"å¾é«çå°æ¥å¸¸ï¼PetWell è¦è馿¸¯å¯µç©ä¸»äººçæ¯åéè¦æ±ºçã",clinics:{title:"ç¸é«è¨ºæ",description:"å
¨æ¸¯ç實è©å¹ãæ¶è²»åèè 24 å°ææ¥ç篩é¸ã",cta:"ç覽診æ"},restaurants:{title:"ååé¤å»³",description:"ç¶åéè´é»ç¢ºèªç寵ç©ååé¤å»³ï¼å使¸¯ä¹æ°çã",cta:"ç覽é¤å»³"},activities:{title:"å¯µç©æ´»å",description:"å¸éãæ´¾å°ãåå¹´è¯ â çºæ¯å©å®æå¨æ«å¥½ç¯ç®ã",cta:"ç覽活å"}},testimonials:{eyebrow:"ç¨æ¶è©å¹",title:"馿¸¯ä¸»äººå
ç實å享",minnie:{text:"ä¹åç親ç¸é«é½ä¿ä¸ç´é½ä¾è³´æåä»ç´¹ï¼æä»¥é½è¦å»å¥½é çï¼ç¾å æåPetWell大家å¤ååå°æ¹å享就å¯ä»¥æè¿éè¿èªå·±å
ç¸é«å¦ï¼",author:"Minnie Leung"},elaine:{text:"é¤ååç©åå¤å¹´ï¼æææ¥é½æåè¦ä½¢åå²éå¡åææååè¨å¾ä½¢åå
¥éæ¥è¨ºï¼ç¾å ä¿å°å¯ä»¥å¥½è©³ç´°åç´éæ¯æ¬¡ç¸é«è¬éå幫寵ç©ååå©ï¼ä¹å¾è½é«çé½åé©è¬æ¼éã",author:"Elaine Yeung"},matthew:{text:"æé»çä¸åé½å¥½é©å»ç¾å®¹é¢ï¼å çºä½¢ç´°åææ¬¡æ¯å²å§å§æï¼ä½ä¸é寵ç©ç¾å®¹å¸«å¤ªå¤ï¼é½åç¥é忧广¯é«ï¼ç¾å ä¿ PetWellå¯ä»¥ä¸æ¬¡éæ¯è¼åçå°æå¿«å¯ç´æéï¼å¹¾æ¹ä¾¿ï¼",author:"Matthew Chan"}},appPreviewAlt:"PetWell寵ç©å¥åº·Appææ©çé¢å±ç¤º - ç¸é«è¨ºææå°ã寵ç©å¥åº·ç´éãæ£æ¥è¿½è¹¤åè½"},Jh={hero:{eyebrow:"馿¸¯å¯µç©ä¸ç«å¼å¹³å°",title:"è®å¯µç©çæ´»æ´ç°¡å®",subtitle:"æ ¼å¹ã診æãç¾å®¹ãå¯é¤ãååé¤å»³ãæ´»ååè«å£ â ä¸åæå°ææ",subtitleMobile:"æ ¼å¹ã診æãé¤å»³ãæ´»å â 䏿峿µ"},tabs:{all:"å
¨é¨",review:"ç¨åæ ¼å¹"},search:{categoryLabel:"æå°åé¡",placeholder:"æå°ç¢åã診æãç¾å®¹ãé¤å»³ãæ´»åâ¦",placeholderMobile:"æå°ç¢åã診æãé¤å»³â¦",placeholders:{review:"æå°åçãç¢åå稱â¦",activities:"æå°æ´»åå稱ãå°é»â¦"},submit:"æå°"},quickNav:{label:"å¿«éå
¥å£",review:"ç¨åæ ¼å¹"}
57,promos:{title:"ç²¾é¸åªæ ",cta:"ç«å³æ¥ç",member:{title:"PetWell æå¡å°äº«",subtitle:"æå¡äº« 9 æåªæ "},activities:{title:"2026 寵ç©å¥½å»è",subtitle:"鱿«æ´»å忶夿¨ä»"},review:{title:"寵ç©ç¨åæ ¼å¹",subtitle:"æ¯è¼å
¨æ¸¯å¯µç©åºå¹é¢"}},suggestions:{title:"æ¢ç´¢ PetWell",explore:"åå¾",clinicsSub:"ç實è©å¹åæ¶è²»åè",salonsSub:"å
¨æ¸¯ç¾å®¹åºè³è¨",lodgingSub:"å¯é¤å ´ææ¨ä»",restaurantsSub:"ç¶ç¢ºèªå
ååé¤å»³",districtsLink:"æ18念坵ç©ååé¤å»³",activities:"馿¸¯å¯µç©å¥½å»è",activitiesSub:"æ´»åãå¸é忶夿¨ä»",ownerZoneSub:"ç
§è·ç¥èå實ç¨è²¼å£«"},featured:{title:"ç²¾é¸æ¨ä»",subtitle:"çºæ¯å©ä¸»äººç²¾å¿æé¸å
ç±éåé¡",review:{title:"寵ç©ç¨åæ ¼å¹",subtitle:"æ¯è¼å
¨æ¸¯å¯µç©åºç實å¹é¢ï¼æ
³å°ç¡"}},sectors:{viewAll:"çå
¨é¨",verified:"已確èª",review:{title:"仿¥ææµ · 寵ç©ç¨åæ ¼å¹",subtitle:"æ¯è¼å
¨æ¸¯åºèå ±å¹ï¼æµå°ææµè²·"},restaurants:{title:"寵ç©ååé¤å»³",subtitle:"åéè´é»ç¢ºèªï¼å¸¶æ¯å©é£é£¯æ´å®å¿"},events:{title:"å¯µç©æ´»åå好å»è",subtitle:"鱿«å¸éãæ´¾å°åæ¶å¤æ¨ä»"},clinics:{title:"ç¸é«è¨ºæè©å¹",subtitle:"çå¯¦ç¨æ¶è©ååæ¶è²»åè"},salons:{title:"寵ç©ç¾å®¹"},lodging:{title:"寵ç©å¯é¤"},homeVisits:{title:"寵ç©ä¸éæå",subtitle:"ä¸é診çãç«èåæ¥çæ¯æ´"}},cards:{stores:"{{count}} éåºè",savePercent:"æ
³{{pct}}%",newListing:"æ°ç»å ´",freeEntry:"å
è²»å
¥å ´",priceFrom:"HK$ {{price}} èµ·",rank:"第 {{rank}} å"},forum:{title:"è«å£ç±é",subtitle:"ä¸»äººç¤¾ç¾¤ææ°è¨è«",viewAll:"çæ´å¤",hot:"ç±é",replies:"{{count}} ååè¦"}},Zh={pageTitle:"馿¸¯ç¸é«è¨ºææå°åè©å¹",subtitle:"ç¼ææé©åä½ å¯µç©çç¸é«è¨ºæ - ä¹é¾ã馿¸¯å³¶ãæ°çå
¨è¦è",description:"å
¨æ¸¯è¶
é200éç¸é«è¨ºæè³è¨ãçå¯¦ç¨æ¶è©å¹ã峿é ç´",searchPlaceholder:"æå°è¨ºæå稱æå°å...",filterByRegion:"æå°å篩é¸",regions:{all:"å
¨é¨å°å",kowloon:"ä¹é¾",hongKong:"馿¸¯å³¶",newTerritories:"æ°ç",others:"å
¶ä»"},loading:"è¼å
¥ä¸...",error:"è¼å
¥è¨ºæè³ææç¼çé¯èª¤",errorSubtitle:"è«ç¨å¾å試æè¯çµ¡å®¢æ",noResults:"æ«ææªææ¤å°åç診æè³æ",services:"æå",reviews:"åç¨æ¶è©è«",ctaTitle:"éè¦æå°æ´å¤è¨ºæï¼",ctaDescription:"ä¸è¼ PetWell App æ¥çå
¨æ¸¯è¶
é 200 éç¸é«è¨ºæï¼äº«åæ´å¤é²éæå°åè½",ctaButton:"ç«å³ä¸è¼ App",filter24Hour:"åªé¡¯ç¤º 24 å°æè¨ºæ",filtersLabel:"篩é¸",clearFilters:"æ¸
é¤ç¯©é¸",resultsCount:"{{count}} é診æ",loadMore:"è¼å
¥æ´å¤",noResultsHint:"試ä¸èª¿æ´æå°ééµåæç¯©é¸æ¢ä»¶ã",trustBadge:"çå¯¦ç¨æ¶è©å¹",backToList:"è¿å診æå表",address:"å°å",phone:"é»è©±",website:"ç¶²ç«",openingHours:"çæ¥æé",closed:"伿¯",gallery:"ç¸ç",detail:{notFound:"è¨ºææªæ¾å°",servicesOverview:"æåéé»ä¸è¦½",servicesOverviewSubtitle:"åºç¼åå
äºè§£è¨ºææä¾å
ä¸»è¦æå",callNow:"è´é»è¨ºæ",getDirections:"å°èªåå¾",email:"é»éµ",todayHours:"仿¥çæ¥",viewFullHours:"æ¥ç宿´çæ¥æé",hideFullHours:"æ¶èµ·çæ¥æé",reviewsTitle:"ç¨å®¶è©è«",reviewsSubtitle:"å
¶ä»æ¯å©å®¶é·å
就診é«é©",planVisit:"實ç¨è³è¨",noHoursToday:"仿¥ä¼æ¯ææªæä¾çæ¥æé",suggestEdit:"建è°ä¿®æ¹",suggestEditPrompt:"診æè³ææèª¤ï¼",reviewsEmpty:"æ«ç¡è©è«",businessReply:"åºå®¶åè¦",reviewsMoreTitle:"æ³çæ´å¤è©è«ï¼",reviewsMoreDescription:"ä¸è¼ PetWell App çæ¬å
¨é¨è©è«",businessReplyFrom:"ä¾èªã{{placeName}}ãçåè¦",businessReplyOfficial:"åºå®¶å®æ¹",registeredVetsTitle:"註åç¸é«",registeredVetsSubtitle:"é
å°å° {{count}} ä½ææææå·æ¥èææ¸çç¸é«",registeredVetsSource:"è³æä¾æºï¼",registeredVetsSourceName:"馿¸¯ç¸é«ç®¡çå±è¨»åç¸é«åå®"}},em={pageTitle:"寵ç©ç¾å®¹",subtitle:"ç¼æé¦æ¸¯å¯µç©ç¾å®¹åº - ä¹é¾ãæ¸¯å³¶ãæ°çå
¨è¦è",description:"寵ç©ç¾å®¹åºæå°ãç¨æ¶è©å¹ãæåé
ç®èæ¶è²»åè",searchPlaceholder:"æå°ç¾å®¹åºå稱æå°å...",filterByRegion:"æå°å篩é¸",regions:{all:"å
¨é¨å°å",kowloon:"ä¹é¾",hongKong:"馿¸¯å³¶",newTerritories:"æ°ç",others:"å
¶ä»"},loading:"è¼å
¥ä¸...",error:"è¼å
¥å¯µç©ç¾å®¹è³ææç¼çé¯èª¤",errorSubtitle:"è«ç¨å¾å試æè¯çµ¡å®¢æ",noResults:"æ«ææªææ¤å°åç寵ç©ç¾å®¹åºè³æ",services:"æå",reviews:"åç¨æ¶è©è«",ctaTitle:"éè¦æå°æ´å¤å¯µç©ç¾å®¹åºï¼",ctaDescription:"ä¸è¼ PetWell App æ¥çæ´å¤å¯µç©ç¾å®¹åºï¼äº«åæ´å¤é²éæå°åè½",ctaButton:"ç«å³ä¸è¼ App",filter24Hour:"åªé¡¯ç¤º 24 å°æ",filtersLabel:"篩é¸",clearFilters:"æ¸
é¤ç¯©é¸",resultsCount:"{{count}} éç¾å®¹åº",loadMore:"è¼å
¥æ´å¤",noResultsHint:"試ä¸èª¿æ´æå°ééµåæç¯©é¸æ¢ä»¶ã",trustBadge:"çå¯¦ç¨æ¶è©å¹",backToList:"è¿å寵ç©ç¾å®¹å表",address:"å°å",phone:"é»è©±",website:"ç¶²ç«",openingHours:"çæ¥æé",closed:"伿¯",gallery:"ç¸ç",detail
57:{notFound:"寵ç©ç¾å®¹åºæªæ¾å°",servicesOverview:"æåéé»ä¸è¦½",servicesOverviewSubtitle:"åºç¼åå
äºè§£ç¾å®¹åºæä¾å
ä¸»è¦æå",callNow:"è´é»ç¾å®¹åº",getDirections:"å°èªåå¾",email:"é»éµ",todayHours:"仿¥çæ¥",viewFullHours:"æ¥ç宿´çæ¥æé",hideFullHours:"æ¶èµ·çæ¥æé",reviewsTitle:"ç¨å®¶è©è«",reviewsSubtitle:"å
¶ä»æ¯å©å®¶é·å
ç¾å®¹é«é©",planVisit:"實ç¨è³è¨",noHoursToday:"仿¥ä¼æ¯ææªæä¾çæ¥æé",suggestEdit:"建è°ä¿®æ¹",suggestEditPrompt:"ç¾å®¹åºè³ææèª¤ï¼",reviewsEmpty:"æ«ç¡è©è«",businessReply:"åºå®¶åè¦",reviewsMoreTitle:"æ³çæ´å¤è©è«ï¼",reviewsMoreDescription:"ä¸è¼ PetWell App çæ¬å
¨é¨è©è«",businessReplyFrom:"ä¾èªã{{placeName}}ãçåè¦",businessReplyOfficial:"åºå®¶å®æ¹"}},tm={pageTitle:"寵ç©å¯é¤",subtitle:"ç¼æé¦æ¸¯å¯µç©å¯é¤ã寵ç©é
åº - ä¹é¾ãæ¸¯å³¶ãæ°çå
¨è¦è",description:"寵ç©å¯é¤å ´ææå°ãç¨æ¶è©å¹ãè¨æ½èæ¶è²»åè",searchPlaceholder:"æå°å¯é¤å ´æå稱æå°å...",filterByRegion:"æå°å篩é¸",regions:{all:"å
¨é¨å°å",kowloon:"ä¹é¾",hongKong:"馿¸¯å³¶",newTerritories:"æ°ç",others:"å
¶ä»"},loading:"è¼å
¥ä¸...",error:"è¼å
¥å¯µç©å¯é¤è³ææç¼çé¯èª¤",errorSubtitle:"è«ç¨å¾å試æè¯çµ¡å®¢æ",noResults:"æ«ææªææ¤å°åç寵ç©å¯é¤å ´æè³æ",services:"æå",reviews:"åç¨æ¶è©è«",ctaTitle:"éè¦æå°æ´å¤å¯µç©å¯é¤å ´æï¼",ctaDescription:"ä¸è¼ PetWell App æ¥çæ´å¤å¯µç©å¯é¤ã寵ç©é
åºï¼äº«åæ´å¤é²éæå°åè½",ctaButton:"ç«å³ä¸è¼ App",filter24Hour:"åªé¡¯ç¤º 24 å°æ",filtersLabel:"篩é¸",clearFilters:"æ¸
é¤ç¯©é¸",resultsCount:"{{count}} éå¯é¤å ´æ",loadMore:"è¼å
¥æ´å¤",noResultsHint:"試ä¸èª¿æ´æå°ééµåæç¯©é¸æ¢ä»¶ã",trustBadge:"çå¯¦ç¨æ¶è©å¹",backToList:"è¿å寵ç©å¯é¤å表",address:"å°å",phone:"é»è©±",website:"ç¶²ç«",openingHours:"çæ¥æé",closed:"伿¯",gallery:"ç¸ç",detail:{notFound:"寵ç©å¯é¤å ´ææªæ¾å°",servicesOverview:"è¨æ½éé»ä¸è¦½",servicesOverviewSubtitle:"åºç¼åå
äºè§£å¯é¤å ´ææä¾å
ä¸»è¦æååè¨æ½",callNow:"è´é»å¯é¤å ´æ",getDirections:"å°èªåå¾",email:"é»éµ",todayHours:"仿¥çæ¥",viewFullHours:"æ¥ç宿´çæ¥æé",hideFullHours:"æ¶èµ·çæ¥æé",reviewsTitle:"ç¨å®¶è©è«",reviewsSubtitle:"å
¶ä»æ¯å©å®¶é·å
å¯é¤é«é©",planVisit:"實ç¨è³è¨",noHoursToday:"仿¥ä¼æ¯ææªæä¾çæ¥æé",suggestEdit:"建è°ä¿®æ¹",suggestEditPrompt:"å¯é¤å ´æè³ææèª¤ï¼",reviewsEmpty:"æ«ç¡è©è«",businessReply:"åºå®¶åè¦",reviewsMoreTitle:"æ³çæ´å¤è©è«ï¼",reviewsMoreDescription:"ä¸è¼ PetWell App çæ¬å
¨é¨è©è«",businessReplyFrom:"ä¾èªã{{placeName}}ãçåè¦",businessReplyOfficial:"åºå®¶å®æ¹"}},om={pageTitle:"馿¸¯å¯µç©ååé¤å»³æå",subtitle:"1000+éç實寵主ä¸é½å¯«è©å¹ï¼å¹«ä½ 篩走ä¸ä¼ä½",description:"æè©³ç¡è³æ ï½PetWell ç±ç實寵主ä¸é½å¯«è©å¹ï¼å¹«ä½ 篩走ä¸ä¼ä½ï¼æµå°çã»å¯µç©ååå
馿¸¯é¤å»³ã",seoTitle:"馿¸¯å¯µç©ååé¤å»³2026ï½é£ç°ç½²ç²æ¹ï¼ç實寵主è©å¹ï½PetWell",seoDescription:"2026å¹´7æ9æ¥èµ·é£ç°ç½²ç´989â1000éçé»ååé£èçæãPetWell 妿è´é»ç¢ºèªå
çã»å¯µç©ååé¤å»³ï¼æ18åã室å
§å
¥åº§ãå³å ´å
¥åº§ç¯©é¸ï¼å¸¶çé£é£¯å使ä¸ä¼ã",seoKeywords:"寵ç©ååé¤å»³,馿¸¯å¯µç©ååé¤å»³,2026寵ç©ååé¤å»³,é£ç°ç½²å¯µç©ååé¤å»³,çé»ååé£è,çé»å
¥é£è,帶çé£é£¯,帶çé¤å»³,ççååé¤å»³,寵ç©ååcafe,å¯å
¥å®¤å
§é¤å»³,å³å ´å
¥åº§,pet friendly restaurant hong kong",seoStructuredDataName:"馿¸¯å¯µç©ååé¤å»³æ¨è¦åå®",enAliasPageTitle:"Pet-Friendly Restaurants in Hong Kong",enAliasSubtitle:"Team-verified restaurants where pets are welcome",enAliasDescription:"Browse Hong Kong pet-friendly restaurants verified by PetWell, with indoor access and walk-in filters.",enAliasSeoTitle:"Pet-Friendly Restaurants Hong Kong 2026 | Verified Dog-Friendly Dining | PetWell",enAliasSeoDescription:"Find verified pet-friendly restaurants in Hong Kong. Filter by district, indoor access, and walk-in policy â beyond the FEHD lottery list.",searchIntent:"PetWell ç±ç實寵主ä¸é½å¯«è©å¹ï¼å¹«ä
57½ 篩走ä¸ä¼ä½ï¼æµå°çã»å¯µç©ååå
馿¸¯é¤å»³ã",directQuestion:"馿¸¯æéå²é¤å»³çä¿å¯ä»¥æ¾å¿å¸¶å¯µç©å»ï¼",directAnswer:"2026å¹´7æ9æ¥èµ·ï¼é£ç°ç½²ç´989â1000éçé»ååé£èå¯åæ³å¸¶çå
¥å
§ãPetWell åé²ä¸æ¥ï¼åéè´é»ç¢ºèªå¯åå¯ä»¥å
¥å®¤å
§ãè¦åè¦é ç´ï¼åå ç實寵主è©å¹åç¸çï¼çä½ åºç¼åç¥ééé¤å»³ä¿åªçã»å¯µç©ååã",faqTitle:"寵ç©ååé¤å»³å¸¸è¦åé¡",faq:{q1:"馿¸¯é度æå¯µç©ååé¤å»³ï¼",a1:"港島ãä¹é¾ãæ°ç齿坵ç©ååé¤å»³ãä½ å¯ä»¥æ18åæå°å篩é¸ï¼å¿«éæµå°éè¿å¯å¸¶æ¯å©ç¨é¤å
restaurantã",q2:"帶çå» restaurant é£é£¯è¦æ³¨æå©ï¼",a2:"建è°å
ç¢ºèªæ¯å¦å¯å¸¶å¯µç©å
¥å
§ãæ¯å¦éè¦é ç´ãæ¯å¦åªé室å¤ãå°åºæè¨å¾ç¹«å¥½ç帶åä¿æç¦®åã",q3:"黿¨£å¤æ·ä¸éé¤å»³æ¯å¦çæ£å¯µç©ååï¼",a3:"å¯åè PetWell èªèæ¨è¨ãç¨å®¶è©åãå¯µç©æ¿çæ¨ç±¤ï¼å®¤å
§ï¼å®¤å¤ãå³å ´å
¥åº§ï¼é ç´ï¼åç實è©è«å
§å®¹ã",q4:"å¯åå¯ä»¥å³å ´å»ï¼å®ä¸å®è¦é ç´ï¼",a4:"è¦ä¹é¤å»³æ¿çãä½ å¯ä»¥ç¨ãå¯å³å ´å
¥åº§ã篩é¸ï¼æè
æ¥ç該é¤å»³æ¨ç¤ºå
å
¥åº§æ¹å¼ã",q5:"é£ç°ç½²å¯µç©ååé¤å»³åå®å PetWell èªèæå©åå¥ï¼",a5:"é£ç°ç½²åå®ä¿ç²æ¹ã容許çé»é²å
¥ãå
é£èçç
§çµæï¼PetWell èªèåä¿åéè´é»ç¢ºèªå¯µç©æ¿çï¼å®¤å
§ï¼å®¤å¤ãé ç´ï¼walk-in çï¼ï¼å
©è
å¯ä»¥äºç¸åèã",q6:"帶çå»é£ç°ç½²ç²æ¹é¤å»³è¦éµå®å©è¦ç©ï¼",a6:"ä¸è¬è¦æ±å
æ¬ï¼çé»é 繫ç½ç¹©ãä¸å¯ä¸æ±ãä¸å¯æ¥è§¸é¤å
·ãä¸å¯é²å
¥å»æ¿æé£ç©è£½é åçã詳æ
è«åèé£ç°ç½²å
¬ä½ã",q7:"è²åªå¯åå¯ä»¥å
¥å¯µç©ååé¤å»³ï¼",a7:"è¦ä¹é¤å»³æ¿çãPetWell æ¨ç¤ºä¸»è¦éå°çé»ï¼å»ºè°åºç¼åè´é»é¤å»³ç¢ºèªæ¯å¦æ¡è¿è²åªã",q8:"éå寵ç©ååé¤å»³æå¤ï¼",a8:"港島ï¼å°¤å
¶ä¸ç°ãç£ä»ãæ±åï¼åä¹é¾ï¼æ²¹å°æºãè§å¡ï¼é¸æè¼å¤ãä½ å¯ä»¥æ18åé 颿¥çååå·²èªèé¤å»³æ¸éã",q9:"2026å¹´7æ9æ¥èµ·çé»å
¥é£èæå©æ¹è®ï¼",a9:"é£ç°ç½²ã容許çé»é²å
¥é£ç©æ¥èæãè¨åå·²æ¼2026å¹´7æ9æ¥çæï¼ç´989â1000éç²æ¹çé»ååé£èå¯åæ³å¸¶çãçç
§åçæ¼çã»å¯µç©ååï¼æå²æ·¨ä¿å®¤å¤ãæå²è¦é ç´ï¼è¨å亦ä¸å
æ¬è²ãPetWell æè´é»ç¢ºèªå®¤å
§ï¼walk-in æ¿çã"},howTo:{name:"黿¨£æå¯µç©ååé¤å»³",description:"ç¨ PetWell å¿«éæå°é©åä½ åæ¯å©å
馿¸¯å¯µç©ååé¤å»³ã",step1Name:"æå°å",step1Text:"æ18åææ¸¯å³¶ï¼ä¹é¾ï¼æ°ç篩é¸ï¼æè
æå°é¤å»³å稱åå°åã",step2Name:"çå¯µç©æ¿ç",step2Text:"çæå¯å
¥å®¤å
§ãå¯å³å ´å
¥åº§çæ¨ç±¤ï¼å PetWell èªèçæ
ã",step3Name:"æ¯è¼è©ååçæ¥æé",step3Text:"æ¥çç¨å®¶è©åã仿¥çæ¥æéï¼ååæå Puppuccino çé¡å¤è³è¨ã",step4Name:"åºç¼åå確èª",step4Text:"建è°åºç¼åè´é»é¤å»³ç¢ºèªææ°å¯µç©æ¿çï¼å°¤å
¶ç¹å¿ææ®µæå¤§åçé»ã"},hubSeo:{title:"å
¨æ¸¯å¯ä¸å¯µç©ååé¤å»³è©å¹ç¶²ââç±å¯µä¸»å¯«ä¿¾å¯µä¸»",body:"è家好å¤é¤å»³é½è©±èªå·± pet-friendlyï¼ä½çä¿å»å°å
ç¼ç¾ï¼æ·¨ä¿é室å¤ãè¦ææ©é ç´ãçç仲è¦åæ¨è»å
¥å
§â¯â¯åæ³å
¶ä»å¯µä¸»ä¸ä¼ï¼å¹«æä¸åçä½ä½ å
ç實è©å¹å¦ï¼ä½ å¯ä»¥å¿åçè¨ãå享實å°ç¸çï¼è¬ç話é½åé©ãæ¯ä¸åè©å¹é½å¹«ç·ä¸ä¸å帶æ¯å©åºè¡å
å®¶é·ï¼ä¸é½ä»¤é¦æ¸¯çæ£è®å¾å¯µç©ååã",fehdTitle:"2026 é£ç°ç½²çé»å
¥é£èï¼çç
§åå® vs çã»å¯µç©åå",fehdBody:"é£ç°ç½²è¨åå·²æ¼2026å¹´7æ9æ¥çæï¼ç´989â1000éçé»ååé£èå¯åæ³å¸¶çå
¥å
§ã宿¹åå®åªä»£è¡¨çç
§ï¼å代表å¡å·¥çä¿æ¡è¿æ¯å©ãå¯å
¥å®¤å
§ãæè
æ¥åå³å ´å
¥åº§ãPetWell èªèé¤å»³æè´é»ç¢ºèªå¯µç©æ¿çï¼åç¨å¯µä¸»è©å¹åç¸çè£å®ãå»å°å
ç¥ãå
é¨åã帶çå»é£ç°ç½²ç²æ¹é£èæï¼ä¸è¬è¦å®ç½ç¹©ä¸è¶
é1.5ç±³ãä¸å¯ä¸æ±ãä¸å¯æ¥è§¸é¤å
·ãæäººå
¨ç¨çç®¡ãæ³å°ç
§å®æ¹åå®ï¼å¯éãé£ç°ç½²è¨±å¯é¤å»³ã篩é¸ï¼æçæåæ´åå
ç²æ¹é£èåå®ã"},communityReviewsTitle:"é»è§£è¦çè©å¹ï¼",communityReviewsBody:"PetWell 忢ä¿åå®ï¼èä¿é¦æ¸¯å¯µä¸»å
å
±äº«å°åãä½ å
ä¸åè©è«ââ好å®å好ââ齿幫ä¸ä¸ä½å®¶é·é¿éä¸ä¼é¤å»³ï¼æè
ç¼æå°é±ä¸å¥½å»èãå¯ä»¥å¿åãå¯ä»¥è²¼ç¸ãå¯ä»¥è¬ç話ï¼å
¨é¨å
è²»ã",districtPage:{indexTitle:"馿¸¯18å寵ç©ååé¤å»³",indexSubtitle:"æå®æ¹18念已èªè寵ç©ååé¤å»³ï¼è¦è港島ãä¹é¾ãæ°çåé¢å³¶ã",indexSeoTitle:"馿¸¯18å寵ç©ååé¤å»³2026 | æåæµå¸¶çé£é£¯ã»çé»ååé£è | PetWell",indexSeoDescription:"æé¦æ¸¯18念坵ç©ååé¤å»³åçé»ååé£èãPetWell æä¾æ¯åå·²èªèé¤å»³ï¼å¦å¯å°ç
§2026é£ç°ç½²ç²æ¹åå®ã",indexSeoKeywords:"18å寵ç©ååé¤å»³,馿¸¯å¯µç©ååé¤å»³,æåæµé¤å»³,帶çé£é£¯,çé»ååé£è",pageTitle:"{{district}}寵ç©ååé¤å»³",subtitle:"æµ{{district}}ï¼{{region}}ï¼å·²èªèå¯å¸¶å¯µç©ç¨é¤å
restaurant",seoTitle:"{{district}}寵ç©ååé¤å»³2026 | 帶çé£é£¯å¥½å»è | PetWell",seoDescription:"{{district}}æ {{count}} é PetWell èªè寵ç©ååé¤å»³ãæå®¤å
§å
¥åº§ãå³å ´å
¥åº§ç¯©é¸ï¼åæå¯åèé£ç°ç½²{{district}}çé»ååé£èåå®ã",seoKeywords:"{{district}}寵ç©ååé¤å»³,{{district}}帶çé¤å»³,{{district}}帶çé£é£¯,{{region}}
57寵ç©ååé¤å»³,çé»ååé£è",searchIntent:"æ³æµ{{district}}å¯ä»¥å¸¶å¯µç©å
restaurantï¼ä»¥ä¸ä¿ PetWell èªèåå®ã",directQuestion:"{{district}}é度æå¯µç©ååé¤å»³ï¼",directAnswer:"{{district}}ç®åæ {{count}} é PetWell èªèé¤å»³ï¼å
¶ä¸ {{indoorCount}} éå¯å
¥å®¤å
§ã{{walkInCount}} éå¯å³å ´å
¥åº§ã",faqTitle:"{{district}}寵ç©ååé¤å»³å¸¸è¦åé¡",faq:{q1:"{{district}}æå¹¾å¤é寵ç©ååé¤å»³ï¼",a1:"PetWell ç®åæ¶é {{count}} é{{district}}å·²èªè寵ç©ååé¤å»³ã妿¸éè¼å°ï¼å¯åèé å
§é£ç°ç½²ç²æ¹åå®ã",q2:"{{district}}ééé¤å»³å¯ä»¥å¸¶çå
¥å®¤å
§ï¼",a2:"ä½ å¯ä»¥ç¨ãå¯å
¥å®¤å
§ã篩é¸{{district}}é¤å»³ï¼ææ¥çæ¯éé¤å»³å
å¯µç©æ¿çæ¨ç±¤ã"},indexFaq:{q1:"黿¨£æ18念坵ç©ååé¤å»³ï¼",a1:"æä½ æå¨ææ³å»ç18åï¼å³å¯æ¥ç該å PetWell èªèé¤å»³åé£ç°ç½²ç²æ¹é£èåèã",q2:"18åé é¢å主å表æå©åå¥ï¼",a2:"18åé é¢é è¨åªé¡¯ç¤ºè©²åé¤å»³ï¼SEO å FAQ å
§å®¹éå°è©²åæå°åªåï¼æ¹ä¾¿ä½ å¿«éæµå°éè¿é¸æã"},statsTitle:"{{district}}æå¹¾å¤é寵ç©ååé¤å»³ï¼",statsBody:"{{district}}ç®åæ {{count}} é PetWell èªèé¤å»³ï¼{{indoorCount}} éå¯å
¥å®¤å
§ã{{walkInCount}} éå¯å³å ´å
¥åº§ï¼ã",fehdCompare:"PetWell çã»å¯µç©ååé¤å»³ç¶åéè´é»ç¢ºèªæ¿çï¼é£ç°ç½²åå®ä¿ç²æ¹ã容許çé»é²å
¥ãé£èï¼
57å
©è
å¯ä»¥äºç¸åèã",hubLink:"æ¥çå
¨æ¸¯å¯µç©ååé¤å»³",fehdLink:"é£ç°ç½² 1,000 éç²æ¹åå®",allDistricts:"18å宿´å表",districtNavTitle:"æ18念坵ç©ååé¤å»³",districtNavDescription:"æé¸é¦æ¸¯18åï¼æ¥çååå·²èªè寵ç©ååé¤å»³ã",noResults:"{{district}}æ«ææªæç¬¦åæ¢ä»¶å
PetWell èªèé¤å»³",noResultsHint:"ä½ å¯ä»¥åè䏿¹é£ç°ç½²ç²æ¹åå®ï¼æç覽é°è¿18åã",listAriaLabel:"{{district}}寵ç©ååé¤å»³å表"},regionPage:{pageTitle:"{{region}}寵ç©ååé¤å»³",subtitle:"æµ{{region}}å·²èªèå¯å¸¶å¯µç©ç¨é¤å
restaurant",seoTitle:"{{region}}寵ç©ååé¤å»³2026 | 帶çé£é£¯å¥½å»è | PetWell",seoDescription:"{{region}}æ {{count}} é PetWell èªè寵ç©ååé¤å»³ãæå®¤å
§å
¥åº§ãå³å ´å
¥åº§ç¯©é¸ï¼è¦è{{region}}ååçé»ååé£èã",seoKeywords:"{{region}}寵ç©ååé¤å»³,{{region}}帶çé¤å»³,{{region}}帶çé£é£¯,çé»ååé£è"},searchPlaceholder:"æå°é¤å»³å稱æå°å...",filterByRegion:"æå°å篩é¸",filterWalkIn:"å¯å³å ´å
¥åº§",filterFehdLicensed:"é£ç°ç½²è¨±å¯é¤å»³",filtersLabel:"é¤å»³ç¯©é¸",heroEyebrow:"å·²èªèç¨é¤æå",verifiedPanelTitle:"æ¯éé¤å»³é½ç¶ PetWell èªè",verifiedPanelDescription:"æåæå
æ ¸å¯¦å¯µç©æ¿çï¼å
è³ææ¶éåºå¢åº¦ â åºç¼åå°±ç¥éå¯åå¯ä»¥å¸¶æ¯å©å
¥å
§ã",resultsCount:"{{count}} éå·²èªèé¤å»³",showingCount:"顯示 {{shown}} / {{total}} é",loadMore:"è¼å
¥æ´å¤",clearFilters:"æ¸
é¤ç¯©é¸",regions:{all:"å
¨é¨å°å",kowloon:"ä¹é¾",hongKong:"馿¸¯å³¶",newTerritories:"æ°ç",others:"å
¶ä»"},loading:"è¼å
¥ä¸...",error:"è¼å
¥é¤å»³è³ææç¼çé¯èª¤",errorSubtitle:"è«ç¨å¾å試æè¯çµ¡å®¢æ",noResults:"æ«ææªæç¬¦åæ¢ä»¶å
寵ç©ååé¤å»³",noResultsHint:"試ä¸èª¿æ´æå°ééµåæç¯©é¸æ¢ä»¶ã",searchingMore:"æ£å¨æå°æ´å¤ç¬¦å篩é¸å
é¤å»³â¦",backToList:"è¿åé¤å»³å表",petPolicy:"å¯µç©æ¿ç",contactInfo:"è¯çµ¡è³è¨",address:"å°å",phone:"é»è©±",website:"ç¶²ç«",openingHours:"çæ¥æé",closed:"伿¯",gallery:"ç¸ç",ctaTitle:"å»å®é¤å»³ï¼å¹«æçä½ä½ å
è©å¹ï¼",ctaDescription:"å
¨æ¸¯å¯ä¸å¯µç©ååé¤å»³è©å¹ç¶²ï¼çä¸ä¸ä½å¯µä¸»å使ä¸ä¼ãå¯ä»¥å¿åçè¨ãå享實å°ç¸çï¼è¬ç話é½åé©ã",ctaButton:"ç«å³ä¸è¼ App",detail:{notFound:"é¤å»³æªæ¾å°",decisionTitle:"帶æ¯å©å»é£é£¯ · éé»ä¸è¦½",decisionSubtitle:"åºç¼åå
確èªå¯µç©æ¿çï¼é¿å
ç½è·ä¸è¶",callNow:"è´é»é¤å»³",getDirections:"å°èªåå¾",visitWebsite:"å®ç¶²",todayHours:"仿¥çæ¥",viewFullHours:"æ¥ç宿´çæ¥æé",hideFullHours:"æ¶èµ·çæ¥æé",reviewsTitle:"ç¨å®¶è©è«",reviewsSubtitle:"å
¶ä»æ¯å©å®¶é·å
ç¨é¤é«é©",planVisit:"實ç¨è³è¨",noHoursToday:"仿¥ä¼æ¯ææªæä¾çæ¥æé",nearbyTitle:"ååå
¶ä»å¯µç©ååé¤å»³",nearbySubtitle:"è·é¢ {{district}} 3 å
¬éå
§å
å
¶ä»å·²èªèé¤å»³",nearbySubtitleDefault:"æ¹å {{radius}} å
¬éå
§å
å
¶ä»å·²èªèé¤å»³",nearbyCount:"{{count}} é",nearbyEmpty:"éè¿æ«ææªæå
¶ä»å·²èªè寵ç©ååé¤å»³",nearbyShowMore:"é¡¯ç¤ºå¤ {{count}} é",nearbyShowLess:"æ¶èµ·",nearbyDistanceM:"{{m}} ç±³",nearbyDistanceKm:"{{km}} å
¬é",reviewsEmpty:"æ«ç¡è©è«",businessReply:"åºå®¶åè¦",suggestEdit:"建è°ä¿®æ¹",suggestEditPrompt:"é¤å»³è³ææèª¤ï¼",sections:{overview:"é¤å»³è³æ",petPolicy:"å¯µç©æ¿ç",reviews:"è©è«",info:"ä½ç½®åè¯çµ¡"},faq:{q1:"{{name}}å¯åå¯ä»¥å¸¶çï¼",a1:"{{name}}ä¿ PetWell èªè寵ç©ååé¤å»³ï¼ç®åæ¨ç¤ºçº{{policy}}ã",q2:"å» {{name}} éè¦é ç´åï¼",a2:"è«æ¥çé¤å»³é é¢å
å
¥åº§æ¿çæ¨ç±¤ï¼å¯å³å ´å
¥åº§ï¼éè¦é ç´ï¼ï¼åºç¼å建è°è´é»ç¢ºèªã",q3:"帶çå» {{name}} æå©è¦ç©ï¼",a3:"ä¸è¬è¦æ±ç¹«å¥½ç½ç¹©ãä¿æç¦®åï¼ä¸¦éµå®é¤å»³æç¤ºãå¦å±¬é£ç°ç½²ç²æ¹é£èï¼é éµå®ä¸ä¸æ±ã䏿¥è§¸é¤å
·çè¦å®ã"},businessReplyFrom:"ä¾èªã{{placeName}}ãçåè¦",businessReplyOfficial:"åºå®¶å®æ¹"}},nm={seoTitle:"寵ç©éæåç
åæª¢æ¸¬é ç´ | PetWell",seoDescription:"é ç´å°æ¥å¯µç©è¨ºæ·æª¢æ¸¬ï¼å
æ¬ IgE éæç¯©æ¥å PCR ç
åæª¢æ¸¬ï¼æä¾è¨åºç¸éå ±åä¾ç¸é«è·é²ã",seoKeywords:"pet test booking,å¯µç©æª¢æ¸¬,allergen test,pcr test,petwell payment",structuredDataName:"PetWell å¯µç©æª¢æ¸¬é ç´",structuredDataSpecialty:"ç¸é«é«å¸",badge:"ç¸é«è¨ºæ·æª¢æ¸¬",title:"å¯µç©æª¢æ¸¬æåé ç´",subtitle:"鏿尿¥è¨ºæ·æåï¼éå°éæèª¿æ¥æç
åç¯©æ¥æäº¤é ç´è³æï¼ç±è¨ºæè·é²ã",testPriceNotice:"é ç´å¹æ ¼ï¼æ¯é
HKD {{price}}",buyerInfoTitle:"é ç´äººè³æ",buyerInfoDesc:"ç¨æ¼é ç´ç¢ºèªå診æè·é²ã",checkoutModalTitle:"宿é ç´è³æ",checkoutModalDesc:"ä½ æ£å¨é ç´ {{productName}}ãå¯å
ç»å
¥ç¹¼çºï¼æç´æ¥å¡«å¯«ä¸æ¹åäººè³æã",authChoiceTitle:"å·²æ PetWell 帳æ¶ï¼",authChoiceDesc:"ä½ å¯ä»¥å
ç»å
¥ç¹¼çºï¼æç´æ¥å¨ä¸æ¹å¡«å¯«åäººè³æä¸¦ä½¿ç¨æ¤é»éµç¹¼çºã",loginToContinue:"ç»å
¥å¾ç¹¼çº",heroPrimaryCta:"é ç´ IgE è´æåæ¸¬è©¦",heroSecondaryCta:"é ç´ PCR ç
å篩æ¥",heroKeywords:{igeAllergy:"IgE éææ¸¬è©¦",pcrPathogen:"PCR ç
å篩æ¥",rastClass:"RAST 0-3 çç´",serumSample:"è¡æ¸
樣æ¬",veterinaryDiagnostics:"ç¸é«è¨ºæ·"},keywords:{ige:"IgE",rast:"RAST 0-3",auMl:"AU/mL",serum:"è¡æ¸
",enzymeImmunoblot:"Enzyme immunoblot",pcr:"PCR",respiratory:"å¼å¸é",gastrointestinal:"è
¸èé",zoonotic:"人çå
±éç
å",pcrTargets:"100+ é
ç®"},labCardLabel:"ç¸é«è¨ºæ·æª¢æ¸¬æå",labCardTitle:"寵ç©éæ + ç
åæª¢æ¸¬",labCardDesc:"çºç¸é«å¤æ·èè¨ï¼éåçµæãé
åè¨åºæ
æ³è§£è®ï¼ä¸¦æä¾æ¸
æ°å ±åäºä¸»äººå診æè·é²ã",stats:{allergens:"è´æåé
ç®",pcrTargets:"PCR 篩æ¥",sample:"è¡æ¸
樣æ¬",rast:"RAST çç´"},valueProps:{quantitativeTitle:"éåæª¢æ¸¬",quantitativeDesc:"ç¹ç°æ§ IgE 以 AU/mL åç¾ï¼ä¸¦å°æ RAST 0-3 çç´ï¼æ¹ä¾¿çè§£ææç¨åº¦ã",clinicalTitle:"è¨åºç¸é",clinicalDesc:"é©ç¨æ¼ç®èãå¼å¸éãè
¸èä¸é©æçä¼¼éæï¼ææåæ¡çé²ä¸æ¥è©ä¼°ã",reportTitle:"å°æ¥å ±å",reportDesc:"å ±åå
嫿¨£æ¬ç·¨èãæ¨£æ¬é¡å¥ãæª¢æ¸¬æ¹æ³ãçµæçç´åè§£è®å註ã",workflowTitle:"ç°¡å®é ç´æµç¨",workflowDesc:"é¸ææª¢æ¸¬ã填寫é ç´è³æãç¶²ä¸ä»æ¬¾ï¼è¨ºæï¼å驿å³å¯è·é²ã"},productSectionBadge:"檢測é¸é
",productSectionTitle:"ææ¯å©çç鏿å驿ª¢æ¸¬",productSectionDesc:"å
©é
ç¸é«è¨ºæ·æª¢æ¸¬ï¼åå¥éå°éæèª¿æ¥åç
å篩æ¥ã",productMeta:{bestFor:"é©å",method:"æ¹æ³",sample:"樣æ¬",turnaround:"å ±åéé»"},methodology:{badge:"é«å¸æ¹æ³",title:"CANINE PRO éæå ±åå¦ä½è§£è®",desc1:"CANINE PRO éæå ±åä»¥è¡æ¸
æ¨£æ¬æª¢æ¸¬ç¹ç°æ§ IgE æé«ï¼ä½¿ç¨éå enzyme immunoblot assayãåæå¼·åº¦æç¶å
叿æåè»ä»¶åæï¼æç®ææ¯é
è´æåç IgE æ¿åº¦ã",desc2:"çµæä»¥ AU/mL 顯示ï¼ä¸¦å°æ RAST 0 è³ 3 ç´ï¼æªæç¼ç¾ãä¸çãå´éãæ¥µå´éãé
ç®æ¶µè塵èåé»´èãæ¤ç©åè±ç²ãé£ç©ãæè²åå
¶ä»è´æåã"},workflow:{step1Title:"é¸ææª¢æ¸¬æå",step1Desc:"æè¨åºçæ
®é¸æ IgE éææ¸¬è©¦æ PCR ç
å篩æ¥ã",step2Title:"填寫é ç´è³æ",step2Desc:"æä¾ä¸»äººè¯çµ¡ã寵ç©å稱ã診æãå註åé ç´æéã",step3Title:"å®æç¶²ä¸ä»æ¬¾",step3Desc:"å®æç¶²ä¸ä»æ¬¾ä¸¦æäº¤é ç´ï¼æ¹ä¾¿è¨ºæå¾çºè·é²ã",step4Title:"診æï¼å驿è·é²",step4Desc:"é ç´è¨éæäº¤äºçéåéä½å¾çºå®æãå ±ååå
57é©å調ã"},medicalDisclaimer:"æ¬æåç¨æ¼è¼å©ç¸é«è©ä¼°ï¼çµææé
åè¨åºççåå°æ¥æè¦è§£è®ï¼ä¸è½å®ç¨ä½çºè¨ºæ·ææ²»çæ¹æ¡ã",faq:{q1:"éææ¸¬è©¦æª¢æ¸¬ç麼ï¼",a1:"測試æä»¥è¡æ¸
檢測ç¹ç°æ§ IgE æé«ï¼çµæä»¥ AU/mL å RAST 0-3 çç´åç¾ã",q2:"ç麼寵ç©é©ååæª¢æ¸¬ï¼",a2:"妿çä¼¼éæãåè¦ç®èåé¡ãå¼å¸éæè
¸èççï¼ç¶ç¸é«è©ä¼°å¾å¯èæ
®æª¢æ¸¬ã",q3:"PCR åéææ¸¬è©¦ä¸æ¨£åï¼",a3:"ä¸ä¸æ¨£ãPCR 主è¦ç¯©æ¥ç
ååºå ç©è³ªï¼è IgE éææ¸¬è©¦è©ä¼°èº«é«å°è´æåçå
ç«åæã"},form:{firstName:"åå",firstNamePlaceholder:"ä¾å¦ï¼Wing",lastName:"å§æ°",lastNamePlaceholder:"ä¾å¦ï¼Chan",email:"é»éµ",emailPlaceholder:"[email protected]",phone:"é»è©±",phonePlaceholder:"+852 9123 4567",petName:"寵ç©å稱",petNamePlaceholder:"ä¾å¦ï¼Cocoa",bookingClinic:"診æ",bookingClinicPlaceholder:"è«é¸æè¨ºæ",bookingTimeContactPrompt:"仿¬¾å¾ï¼æé¸è¨ºææç´æ¥è¯çµ¡ä½ 確èªé ç´æéãæ¡æ¨£å®æåå¾çºè©³æ
ã",bookingTimeContactRecord:"診æå°ç´æ¥è¯çµ¡å®¢äººå®æé ç´",notes:"å註",notesPlaceholder:"å¯é¸å¡«"},clinicInfo:{phone:"é»è©±",address:"å°å",hours:"çæ¥æé"},clinics:{fairview:{name:"é¦ç»£åç©è¨ºæ Fairview Veterinary Clinic",phone:"24718980",address:"æ°çå
æé¦¬ç°æ201è 201 Ma Tin Tsuen, Yuen Long, NT",hours:"10:00 - 13:00, 15:00 - 19:00"},ivet:{name:"iPet Animal Clinic",phone:"2561 1116",address:"太ååºéè¡46èå°ä¸",hours:"颿æä¸ãåãäºãå
忥 11:00 - 20:00"},parkIsland:{name:"çéºç£ç¸é«è¨ºæ Pets Central (Park Island)",phone:"67383280",address:"馿¸¯é¦¬ç£çéºè·¯8è G/F, 322 Ma Wan Main Street Village North, Ma Wan, NT",hours:"æ²æåºå®æè¨ºæéï¼è¨ºæææå奿
æ³å®æä¸¦ç´æ¥è¯çµ¡ä½ ã"}},products:{allergen:{name:"Feline/Canine PRO 125 - Allergen IgE Allergy Test",shortName:"PRO 125 IgE",description:"䏿¬¡æ¸¬è©¦æ¶µè 125 é
è¨åºç¸éè´æåï¼é©åæ·çç®èãå¼å¸æè
¸èéæçæ¯å©ã",h1:"ç°å¢åèè²è´æå檢測",h2:"è±ç²åæ¤ç©è´æå檢測",h3:"é£ç© + æè²çè´æåè¦è",bestFor:"éæèª¿æ¥",method:"éå enzyme immunoblot assay",sample:"è¡æ¸
樣æ¬",turnaround:"IgE AU/mL + RAST çç´"},pcr:{name:"Feline/Canine 100+ PCR Test",shortName:"100+ PCR",description:"è¶
å¿«é PCRï¼è¦èå¼å¸éãè
¸èéè人çå
±éç
å篩æ¥ï¼é©åé²éå¥åº·æª¢æ¸¬ã",h1:"å¼å¸éèè
¸èéç¶å篩æ¥",h2:"人çå
±éç
åé
ç®",h3:"è²ç¬å¸¸è¦ç
åå¤é
檢測",bestFor:"ç
å篩æ¥",method:"PCR æ´å¢æª¢æ¸¬",sample:"è¨ºææ¡éæ¨£æ¬",turnaround:"å¼å¸éï¼è
¸èéç
å panel"}},priceLabel:"測試å¹",offer:{label:"æå¡å°å±¬",title:"æ©é³¥é ç´åªæ ",off:"OFF",originalPrice:"åå¹",todayPrice:"仿¥å¹",savings:"仿¬¡é ç´å³æ
³ {{currency}} {{amount}}ã"},comingSoon:{badge:"å³å°éæ¾",title:"PCR 檢測é ç´å³å°éæ¾",desc:"æåæ£å¨ç¢ºèªä¸ä¸è¼ªè¨ºææª¢æ¸¬ææ®µãå¾
æåææ®µç¢ºèªå¾ï¼å°æéæ¾é ç´å仿¬¾ã",button:"å³å°éæ¾"},buyNow:"ç«å³ä»æ¬¾é ç´",processing:"æºå仿¬¾ä¸...",footnote:"é ç´å¹æ ¼ï¼{{currency}} {{price}}ã",todoNotice:"é ç´è¨éæä¿åä½è¨ºæåçéè·é²ã",toast:{loginRequiredTitle:"è«å
ç»å
¥",loginRequiredDesc:"建ç«ä»æ¬¾é£çµéè¦å
ç»å
¥ PetWell 帳æ¶ã",missingFieldsTitle:"è«å¡«å¯«å¿
å¡«è³æ",missingFieldsDesc:"è«å¡«å¯«ååãå§æ°ãé»éµãé»è©±ã寵ç©å稱å診æã",paymentFailedTitle:"建ç«ä»æ¬¾å¤±æ",paymentFailedDesc:"è«ç¨å¾å試ã"}},rm={verifiedTrue:"寵ç©ååï¼å·²é©èï¼",petWellVerified:"寵ç©ååèªè",fehdLicensed:"馿¸¯é£ç°ç½²è¨±å¯",premiumPartner:"Premium åä½åæ¶",listingAlertTitle:"注æ",listingAlertChip:"é寵ç©åå",notPetFriendly:"é寵ç©åå",petEntryPolicy:{walkInOnly:"å¯å³å ´å
¥åº§",reservationRequired:"éè¦é ç´",both:"å¯å³å ´æé ç´"},petAccessArea:{indoorAllowed:"å¯å
¥å®¤å
§",outdoorOnly:"åªé室å¤"},import:{title:"é¤å»³è³è¨",subtitle:"é¤å»³é¡åãå¹ä½ãè¨æ½åè©ååè",types:"é¤å»³é¡å",cuisines:"èå¼",dishStyles:"èå¼é¢¨æ ¼",priceRange:"人åå¹ä½",amenitiesTitle:"寵ç©ååè¨æ½",amenities:{waterBowl:"飲水ç¢",dogMenu:"ççé¤å®",petTreats:"寵ç©å°é£",groomingServices:"ç¾å®¹æå",petStore:"寵ç©ç¨å",sanitationKits:"æ¸
æ½ç¨å",photoArea:"æå¡ä½",petFirstAidKit:"å¯µç©æ¥æç®±",employeePetTraining:"å¡å·¥å¯µç©å¹è¨",nutritionLabelsProvi
57ded:"ç餿¨ç±¤"}}},im={pageTitle:"馿¸¯åç©ä¿è·çµç¹",subtitle:"æ¯æåç©ç¦å© - ææ¬¾ã義工ãçºåç©ç¼è²",description:"ç¼ææ¬å°åç©ä¿è·çµç¹ï¼å
±åçºæéè¦çåç©åºä¸åå",searchPlaceholder:"æå°çµç¹å稱æç°¡ä»...",filterByRegion:"æå°å篩é¸",regions:{all:"å
¨é¨å°å",kowloon:"ä¹é¾",hongKong:"馿¸¯å³¶",newTerritories:"æ°ç"},noResults:"æ«ææªæç¸éçµç¹è³æ",established:"æç«æ¼",activeCampaigns:"åç±æ¬¾é
ç®",volunteerEvents:"å義工活å",backToList:"è¿åçµç¹å表",notFound:"æ¾ä¸å°æ¤çµç¹",address:"å°å",phone:"é»è©±",email:"é»éµ",website:"ç¶²ç«",mission:"æåç使å½",services:"æåæä¾çæå",donationCampaigns:"ç±æ¬¾é
ç®",donationDescription:"æ¯ææåçç±æ¬¾é
ç®ï¼çºæéè¦çåç©åºä¸åå",progress:"é²åº¦",donors:"ä½ææ¬¾è
",endDate:"æªæ¢æ¥æ",donate:"ç«å³ææ¬¾",volunteerDescription:"å å
¥æåï¼è¦ªèº«åèåç©ç¦å©å·¥ä½",requirements:"è¦æ±",spotsLeft:"ååé¡",fullBooked:"已滿é¡",enroll:"å ±ååå "},am={quickLinks:"å¿«éé£çµ",legal:"æ³å¾è³è¨",explore:"帶æ¯å©åºè¡",care:"ç
§é¡§æ¯å©",community:"社群",company:"PetWell",follow:"追蹤æå",terms:"ä½¿ç¨æ¢æ¬¾åç§é±æ¿ç",privacy:"ç§é±æ¿ç",copyright:"© 2026 PetWell HK Limited. All rights reserved",tagline:"馿¸¯é¦åä¸ç«å¼å¯µç©å¥åº·ç®¡çå¹³å°",suggestPlace:"å»ºè°æ°å¢å°é»",feedback:"æè¦åå ±"},sm={suggestTitle:"å»ºè°æ°å¢å°é»",suggestDesc:"話俾æåç¥æªæ¶éå
寵ç©ååå°é»ã",suggestTab:"å»ºè°æ°å¢",suggestCategory:"å°é»é¡å",suggestName:"å°é»å稱",suggestNamePlaceholder:"輸å
¥å°é»å稱â¦",suggestAddressOptional:"å°åï¼å¯é¸ï¼",suggestAddressPlaceholder:"è¡éãå°åæå°æ¨â¦",suggestNotesOptional:"è£å
說æï¼å¯é¸ï¼",suggestNotesPlaceholder:"ä¾å¦å¯µç©æ¿çãçæ¥æéãç¶²ç«çâ¦",suggestSubmit:"æäº¤å»ºè°",suggestEmptyCta:"æµåå°ï¼å»ºè°æ°å¢ä¸åå°é»",successTitle:"å·²æäº¤",successDesc:"å¤è¬ä½ ï¼æåæç¡å¿«è·é²ã",suggestSuccessDesc:"å¤è¬ä½ ï¼æåå·²æ¶å°ä½ å
建è°ï¼æè·é²å¯©æ ¸ã"},lm={learnMore:"äºè§£æ´å¤",downloadApp:"ç«å³ä¸è¼ PetWell",rating:"è©å",outOf5:"/5",loading:"è¼å
¥ä¸...",cancel:"åæ¶"},cm={open247:"24å°æçæ¥",mon:"ææä¸",tue:"ææäº",wed:"ææä¸",thu:"ææå",fri:"ææäº",sat:"ææå
",sun:"æææ¥",noInfo:"æ«ç¡è³æ"},dm={title:"寵ç©ä¸»äººè¨è«å",subtitle:"å享ç¶é© · äºç¸å¹«å© · å
±å»ºäººå¯µå
±è社æ",loading:"è¼å
¥ä¸...",error:"ç¡æ³è¼å
¥è¨è«åå
§å®¹ï¼è«ç¨å¾å試",noContent:"æ«ææ²æè¨è«å
§å®¹",retry:"éæ°è¼å
¥",backToForum:"è¿åè¨è«å",replies:"çè¨",noReplies:"æ«ææ²æçè¨",postNotFound:"æ¾ä¸å°å¸æ",invalidPostId:"ç¡æç叿ID",searchPlaceholder:"æå°å¸æ...",filterCategory:"åé¡",filterTag:"æ¨ç±¤",allCategories:"å
¨é¨åé¡",allTags:"å
¨é¨æ¨ç±¤",sortRecent:"ææ°",sortPopular:"ç±é",sortReplies:"æå¤åè¦",tableTitle:"æ¨é¡",tableAuthor:"ä½è
",tableDate:"æ¥æ",tableViews:"ç覽/åè¦",tableLastReply:"æå¾åè¦",showingResults:"顯示 {{count}} åçµæ",pagination:{previous:"ä¸ä¸é ",next:"ä¸ä¸é "},time:{hoursAgo:"å°æå",daysAgo:"天å"},forumListCta:{title:"æ³æ¥çæ´å¤è¨è«ï¼",description:"ä¸è¼ PetWell Appï¼ç覽æ´å¤å¸æãç¼è¡¨æè¦ãèå
¶ä»å¯µç©ä¸»äººäº¤æµäºåï¼",button:"ç«å³ä¸è¼ PetWell"},postDetailCta:{title:"æ³ç¼è¡¨æ¨çæè¦ï¼",description:"ä¸è¼ PetWell Appï¼å å
¥è¨è«ãç¼è¡¨çè¨ï¼èå
¶ä»å¯µç©ä¸»äººå享ç¶é©å建è°ï¼",button:"ç«å³ä¸è¼ PetWell"},createPost:{button:"ç¼ä½å¸æ",title:"ç¼ä½æ°å¸æ",description:"å享æ¨çæ³æ³ãæåºåé¡ï¼æè社群å±éè¨è«",loginRequired:"éè¦ç»å
¥",loginRequiredDesc:"è«å
ç»å
¥ä»¥ç¼ä½å¸æ",titleLabel:"æ¨é¡",titlePlaceholder:"輸å
¥å¸ææ¨é¡",contentLabel:"å
§å®¹",contentPlaceholder:"卿¤è¼¸å
¥æ¨ç叿å
§å®¹...",tagsLabel:"æ¨ç±¤",tagsPlaceholder:"ä¾å¦ï¼è¨ºæã走失寵ç©ã建è°",tagsHint:"ç¨éèåéæ¨ç±¤ï¼æå¤10åæ¨ç±¤ï¼",categoryLabel:"åé¡",categoryPlaceholder:"鏿åé¡",locationLabel:"å°é»",locationPlaceholder:"ä¾
57å¦ï¼é¦æ¸¯å³¶ãä¹é¾",characters:"åå
",creating:"ç¼ä½ä¸...",submit:"ç¼ä½å¸æ",error:"ç¼ä½å¸æå¤±æï¼è«ç¨å¾å試ã",anonymousLabel:"å¿åç¼ä½",anonymousHint:"æ¨ç身份å°è¢«é±è",editor:{bold:"ç²é«",underline:"åºç·",strikethrough:"åªé¤ç·",fontSize:"åé«å¤§å°",small:"å° (12px)",medium:"ä¸ (24px)",large:"大 (36px)",textColor:"æåé¡è²",insertLink:"æå
¥é£çµ",urlLabel:"ç¶²å",urlPlaceholder:"https://example.com",linkTextLabel:"é£çµæå (é¸å¡«)",linkTextPlaceholder:"黿é裡",alignLeft:"é å·¦å°é½",alignCenter:"ç½®ä¸å°é½",alignRight:"é å³å°é½"}},askVet:{cta:"åç¸é«/è·å£«",feed:"åç¸é«/è·å£«",queue:"å¾
åè¦",myQuestions:"æçæå",composeTitle:"åç¸é«/è·å£«",composeSubtitle:"寫ä½åé¡å°±å¾ãæ¥çè«å³å»è¨ºæã",contentPlaceholder:"æ¯å©é»åï¼å種ãå¹´ç´ãççãå¹¾æéå§ãæç¸æ´å¥½ã",addPhoto:"å ç¸ç",questionRequired:"è«å
å¯«ä½ å
åé¡ã",visibilityLabel:"éåçå°",public:"å
¬é",private:"ç§äºº",publicHint:"å
¶ä»äººçå°ï¼æ¹ä¾¿ä¹å¾åèã",privateHint:"åªæä½ ååéçå°ã",disclaimer:"ææç½å¢åä¿é¢è¨ºãèæ¹ææ¥çæåã",disclaimerRequired:"è«å
åæå
è²¬è²æã",submit:"éåº",teamReplyHint:"å°ä»¥ PetWell ç¸é«/è·å£«åé身份åè¦",bannerTitle:"åç¸é«/è·å£«",bannerBody:"ç± PetWell ç¸é«/è·å£«åéåè¦ãä¸è¬åé¡é常 24 å°æå
§çï¼å¯ä»¥å
¬éæç§äººåã"},sortBy:"æåº",sortHot:"çºä½ æ¨è¦",untitled:"ç¡æ¨é¡",desktop:{navLabel:"è¨è«åå°è¦½",discoverLabel:"æå°èç±é",home:"é¦é ",post:"ç¼ä½",topics:"話é¡",buzzing:"æ£ç±é",replyPlaceholder:"寫ä¸ä½ ççè¨",reply:"çè¨",photo:"ç¸ç",clearReplyTo:"åæ¶åè¦"},advancedSearch:"é²éæå°",hideAdvancedSearch:"é±è",showAdvancedSearch:"é²éæå°",dateFrom:"éå§æ¥æ",dateTo:"çµææ¥æ",selectedTags:"已鏿¨ç±¤",clearFilters:"æ¸
é¤ç¯©é¸",pages:"é ",anonymousUser:"å¿åç¨æ¶",genericUser:"ç¨æ¶",anonymous:"å¿å",pinned:"ç½®é ",loadingMore:"è¼å
¥æ´å¤...",selectPost:"鏿左å´ç叿以æ¥çå
§å®¹",categories:{DOG:"çç",CAT:"è²è²",SMALL_ANIMAL:"å°åç©",LIFE_SHARING:"çæ´»å享",EVENTS:"æ´»å",ADOPTION:"é é¤",HEALTH:"å¥åº·",GROOMING:"ç¾å®¹",DIET:"飲é£",TRAINING:"è¨ç·´",BEHAVIOR:"è¡çºåé¡",PRODUCT_REVIEW:"ç¨åè©å¹",TRADING:"交æ",TRAVEL:"æ
é",LODGING:"ä½å®¿",LOST_FOUND:"走失åå°",EMERGENCY:"ç·æ¥æ±å©"}},um={title:"åªé¤å¸³æ¶",warning:"æ¤æä½ç¡æ³æ¤é·ãåªé¤å¸³æ¶å¾ï¼æ¨çææè³æå°è¢«æ°¸ä¹
ç§»é¤ã",whatHappens:"åªé¤å¸³æ¶å¾æç¼çä»éº¼ï¼",consequence1:"æ¨çåäººè³æå帳æ¶è³è¨å°è¢«æ°¸ä¹
åªé¤",consequence2:"æ¨çææå¯µç©å¥åº·è¨éå°è¢«ç§»é¤",consequence3:"æ¨å°ç¡æ³åä½¿ç¨æ¤é»éµå°å註å",consequence4:"æ¤æä½ç¡æ³å¾©å",confirmTitle:"確èªåªé¤",emailLabel:"確èªé»éµå°å",emailPlaceholder:"è«è¼¸å
¥æ¨çé»éµå°å",emailHint:"è«è¼¸å
¥æ¨è¨»åå¸³æ¶æä½¿ç¨çé»éµå°å",typeDelete:"è«è¼¸å
¥ãåªé¤ã以確èª",deletePlaceholder:"åªé¤",understand:"ææç½æ¤æä½ç¡æ³æ¤é·ï¼ä¸¦ç¢ºèªè¦åªé¤æç帳æ¶",cancel:"åæ¶",deleteButton:"åªé¤å¸³æ¶",finalWarning:"æå¾ç¢ºèª",finalWarningMessage:"æ¨ç¢ºå®è¦æ°¸ä¹
åªé¤æ¨ç帳æ¶åï¼æ¤æä½ç¡æ³æ¤é·ã",confirmDelete:"確èªåªé¤",deleting:"åªé¤ä¸...",success:"帳æ¶å·²åªé¤",successMessage:"æ¨ç帳æ¶å·²æååªé¤ã",error:"é¯èª¤",errorMessage:"åªé¤å¸³æ¶æç¼çé¯èª¤ï¼è«ç¨å¾å試æè¯çµ¡å®¢æã",confirmError:"è«è¼¸å
¥ãåªé¤ã以確èª",checkboxError:"è«ç¢ºèªæ¨å·²äºè§£æ¤æä½ç徿",emailMismatch:"é»éµå°åä¸ç¬¦ï¼è«è¼¸å
¥æ¨è¨»åæä½¿ç¨çé»éµå°å"},pm={needsActivation:"æ¤æ¨ç±¤éè¦åå",activationDescription:"è¦æ¥ç寵ç©è³æå主人è¯çµ¡æ¹å¼ï¼è«ä¸è¼ PetWell App 並å忤æ¨ç±¤ã",downloadPetWell:"ç«å³ä¸è¼ PetWell",alreadyActivated:"å·²ååï¼è«ç»å
¥ App æ¥ç",foundLostPet:"æ¨ç¼ç¾äºèµ°å¤±ç寵ç©ï¼",thankYouMessage:"æè¬æ¨å¹«å©éé»å¯µç©ã以䏿¯ä¸»äººçè¯çµ¡è³æï¼è«åå¿«è¯çµ¡ä»åã",age:"年齡",yearsOld:"æ²",species:"å種",speciesValues:{dog:"çç",dogs:"çç",cat:"è²åª",cats:"è²åª"},breed:"種é¡",weight:"é«é",birthday:"çæ¥",microchipId:"æ¶çç·¨è",contactOwner:"è¯çµ¡ä¸»äºº",callOwnerNow:"ç«å³è´é»ä¸»äºº",phoneNotAvailable:"é»è©±è碼ä¸å¯ç¨",footer:"ç± PetWell æä¾ · å®è·æ¯ä¸é»å¯µç©",notActivated:{title:"寵ç©å°æªåå",description:"æ¤å¯µç©åçå°æªååãç«å³ååï¼å¹«å©ä¿è·æ¨çæ¯å©å
æ¼èµ°å¤±ã",cta:"ç«å³åå"}},hm={externalUserFrom:"å¤é¨ç¨æ¶ä¾æºï¼{{source}}",fromGoogle:"Google è©è«"},mm={alreadyActivated:{title:"寵ç©å·²ç¶åå",description:"æ¤å¯µç©åçå·²ç¶ååãæ¨å¯ä»¥æ¥ç寵ç©çè³æã",cta:"æ¥ç寵ç©è³æ"}},fm={seo:{title:"ä¸è¼ PetWell App | 馿¸¯å¯µç©å¥åº·ç®¡ç",description:"å
è²»ä¸è¼ PetWellã馿¸¯ç¸é«è¨ºæè©å¹ã寵ç©ååé¤å»³ãå¥åº·ç´éè广 ¼æéï¼iOS è Android åé©ç¨ã",keywords:"PetWell App,ä¸è¼å¯µç©App,馿¸¯å¯µç©å¥åº·,ç¸é«è¨ºæApp,寵ç©ååé¤å»³App"},eyebrow:"å
è²» · iOS è Android",title:"馿¸¯å¯µç©çæ´»",titleHighlight:"æ¾é²å£è¢ã",subtitle:"å
è²»ä¸è¼ï¼iPhone å Android é½ç¨å¾ã",aboutCta:"æ³äºè§£æ´å¤ï¼åå¾éæ¼æå",subtitle1:"å
¨æ¸¯é¦å寵ç©å¥åº·ç®¡çå¹³å°",subt
57itle2:"ä¸ç«å¼ç
§é¡§æ¨çæ¯å©å¥åº·",primaryIos:"å¨ App Store ä¸è¼",primaryAndroid:"å¨ Google Play ä¸è¼",openStore:"éåæç¨ååº",scanLabel:"ææ©ææä¸è¼",scanHint:"ç¨ç¸æ©å°æº QR Codeï¼æéåå°æç App Store æ Google Playã",storesLabel:"é¸æä½ çååº",recommended:"建è°",appStoreAlt:"å¨ App Store ä¸è¼ PetWell",playStoreAlt:"å¨ Google Play ä¸è¼ PetWell",previewAlt:"PetWell App ä»é¢ï¼è¨ºææå°ãç¨åæ ¼å¹è寵ç©ååé¤å»³",whyEyebrow:"ç¨ App æ´å¥½",whyTitle:"ç¶²ç«è½çï¼App æ´è·å¾è²¼",reasons:{alerts:{title:"广 ¼èæ¥çæé",description:"æ¸å¹ã追蹤æ¸
å®å 24 å°æè¨ºæè³è¨ï¼ç¬¬ä¸æéåºææ©æ¶å°ã"},records:{title:"å¥åº·ç´éé¨èº«",description:"éå¡ãæ¥è¨ºãç¨è¥ç´éæ°¸ä¹
ä¿åï¼è½é«çé½åä½¿ç¿»ç®±åæ«ã"},places:{title:"å
¨æ¸¯å ´æä¸æå³å°",description:"200+ 診æã1500+ ååé¤å»³ï¼å°åãé»è©±ãè©å¹ä¸æ¬¡éã"},free:{title:"å®å
¨å
è²»",description:"ä¸è¼ãæ¥è©å¹ãè¨å¥åº·ç´éé½å使çé¢ã"}},ctaTitle:"éæå°å±¬åªæ ",ctaDescription:"ä¸è¼ App å¾ï¼å¯é ç´å
è²»é åé²èµ°å¤±æºè½åçã",feature1:"峿å®ä½è¿½è¹¤åè½",feature2:"ä¸éµè¯çµ¡ä¸»äºº",feature3:"çµèº«ä¿åºæå",ctaButton:"å
è²»é åé²èµ°å¤±åç",disclaimer:"æ¸éæéï¼éå®å³æ¢ã",faqTitle:"ä¸è¼å¸¸è¦åé¡",faq:{platforms:{question:"æ¯æ´é岿æ©ï¼",answer:"iPhone ç¶ App StoreãAndroid ç¶ Google Play å
è²»ä¸è¼ãæå°ãPetWell HKãå³å¯ã"},needApp:{question:"ä¸å®è¦ä¸è¼å
ç¨å°ï¼",answer:"ç¶²ç«é½å¯ä»¥æå°é¤å»³å診æãApp é©åéè¦æ¨ææéãå¥åº·ç´éåé¨èº«æ¥æ¥çå
主人ã"},desktop:{question:"é»è
¦é»æ¨£ä¸è¼ï¼",answer:"ç¨ææ©æææ¬é QR Codeï¼æåºææ©æé App Store / Google Play æå° PetWell HKã"}}},gm={status:{startingSoon:"å³å°éå§",upcoming:"å³å°èè¡",ongoing:"é²è¡ä¸",completed:"å·²çµæ",cancelled:"已忶"},featured:"ç²¾é¸æ´»å",featuredBadge:"ç²¾é¸",filters:{allStatuses:"å
¨é¨çæ
"},categories:{ADOPTION:"é 餿´»å",MARKET:"寵ç©å¸é",EXPO:"寵ç©å±è¦½",WORKSHOP:"å·¥ä½å / 課ç¨",CHARITY:"æ
åæ´»å",MEETUP:"寵ç©èæ",PET_FRIENDLY:"寵ç©ååæ´»å",OTHER:"å
¶ä»æ´»å"},detail:{invalidId:"æ´»å ID ç¡æ",notFound:"æ¾ä¸å°æ´»å",loadFailed:"è¼å
¥æ´»å失æ",backToEvents:"è¿åæ´»åå表",defaultSeoDescription:"馿¸¯å¯µç©æ´»åè³è¨",unknownOrganizer:"主辦å®ä½æªæä¾",officialInfo:"宿¹è³è¨",date:"æ¥æ",location:"å°é»",organizer:"主辦å®ä½",price:"广 ¼",notProvided:"æªæä¾",free:"å
è²»",aboutEvent:"æ´»åç°¡ä»",remark:"å註",allFields:"æ´»åè³æ",category:"åé¡",statusLabel:"çæ
",organizerEmail:"主辦å®ä½é»éµ",dateTime:"éå§æé",deadline:"æªæ¢ / çµææé",openTime:"éæ¾æé",closeTime:"çµææé",address:"å°å",district:"å°å",capacity:"åé¡",attendees:"å·²å ±å",paymentRequired:"éè¦ä»æ¬¾",redirection:"å¤é¨é£çµ",redirectedUrl:"宿¹ / å ±åé£çµ",photoCount:"ç¸çæ¸é",createdAt:"å»ºç«æé",updatedAt:"æ´æ°æé",unlimited:"ç¡éå¶",yes:"æ¯",no:"å¦",photos:"æ´»åç¸ç",endDate:"çµææé",hours:"éæ¾ææ®µ",where:"ä½ç½®",availability:"åé¡çæ
",spotsLeft:"å°é¤ {{count}} ååé¡",openOfficialLink:"åå¾å®æ¹ / å ±åé ",noOfficialLink:"æªæä¾å®æ¹é£çµ",quickInfo:"å¿«éè³è¨",hasOfficialLink:"å·²æä¾å®æ¹é£çµ",hasI18n:"æä¾ä¸è±æå
§å®¹"}},ym={title:"管çè¡¨æ ¼",redirecting:"æ£å¨è·³è½å° Google è¡¨æ ¼..."},vm={ariaLabel:"é²èµ°å¤±æºè½åçæ¨å»£",badge:"å
è²»",title:"é²èµ°å¤±æºè½åç",subtitle:"好似å
«ééä¸åå³è®ï¼å婿¯å©æ´å¿«åå®¶",progressLabel:"ç»è¨é²åº¦",cta:"ç«å³ç»è¨"},wm={eyebrow:"ééå
è²»",title:"å
è²»æ PETWELLé²èµ°å¤±åç",tagline:"好似å
«éé · ä¸åå³showä½ å¯µç©å°å±¬ç¶²ç«",time:"åªé1 åéå°±ææ",urgency:"å顿éï¼å
å°å
å¾ã",cta:"ç«å³å
è²»é å",imageAlt:"PetWell é²èµ°å¤±åç Paws Port 宣å³å"},bm={title:"æ¯å©æ²æµ¸å¼å°ç£ä¸ç§ç¥",description:"2026å¹´9æ25â27æ¥æ¼è§å¡æµ·æ¿± AquaBeatï¼å
è²»å
¥å ´ï¼æ¡è¿å¸¶æ¯å©ã左峿»åçæ´»å詳æ
ã",page1Alt:"æ¯å©æ²æµ¸å¼å°ç£ä¸ç§ç¥å®£å³æµ·å ±",page2Alt:"æ¯å©æ²æµ¸å¼å°ç£ä¸ç§ç¥æ´»å詳æ
"},Pm={allProducts:"ææåå",cart:"è³¼ç©è»",backToList:"è¿åååå表",productNotFound:"æ¾ä¸å°åå",productNotFoundDesc:"æ¤ååå¯è½ä¸å卿已䏿¶",customizable:"å¯å®¢è£½å",selectOption:"é¸æè¦æ ¼ï¼",uploadPhoto:"ä¸å³å¯µç©ç
§çï¼",chooseFile:"é¸ææªæ¡",noFileChosen:"å°æªé¸ææªæ¡",uploadedPreview:"å·²ä¸å³ç寵ç©ç
§çé 覽ï¼",selected:"已鏿ï¼",dimensions:"尺寸ï¼",dimensionsLabel:"尺寸",material:"æè³ªï¼",selectOptionForPrice:"(è«é¸æè¦æ ¼æ¥ç广 ¼)",quantity:"æ¸é",quantityLabel:"æ¸éï¼",addToCart:"å å
¥è³¼ç©è»",buyNow:"ç«å³è³¼è²·",productDetails:"åå詳æ
",shippingPayment:"é貨å仿¬¾æ¹å¼",shippingInfo:"馿¸¯å
è²»éè²¨ï¼æ»¿HK$300ï¼",paymentMethods:"仿¬¾æ¹å¼ï¼PayMe / éè¡è½å¸³ / FPS",processingTime:"èçæéï¼3-5åå·¥ä½å¤©",selectOptionError:"è«é¸æè¦æ ¼",selectOptionErrorDesc:"è«å
鏿ç¢åè¦æ ¼å¾åå å
¥è³¼ç©è»",uploadPhotoError:"è«ä¸å³ç
§ç",uploadPhotoErrorDesc:"æ¤ç¢åéè¦ä¸å³å¯µç©ç
§ç",addedToCart:"å·²å å
¥è³¼ç©è»",addedToCartDesc:"å·²æåå å
¥è³¼ç©è»",priceViewHint:"è«é¸ææ¬¾å¼ä»¥æ¥ç總å¹",items:"ä»¶",specs:{redPocketPa
57per:"200g åèé
çç´",petBackpackMaterial:"æ¯çµ¨",rectangle:"é·æ¹å½¢",diamond:"è±å½¢",rectangleSpecs:"10.5 à 29.7 cm · 128g å
ç²ç´",diamondSpecs:"21 à 21 cm · 128g å
ç²ç´"},shippingInfoDetails:{freeShippingThreshold:"滿 HK$200 å
é",sfExpress:"é è± +$30",regularMail:"å¹³éµ +$15",paymentMethods:"仿¬¾ï¼FPS / éè¡è½å¸³ / PayMe / æ¯ä»å¯¶",emailNotification:"è¨å®ç¢ºèªå¾ä»¥é»éµéç¥ä»æ¬¾è©³æ
",shippingDeadline:"ææååæ¼ 2 æ 12 æ¥åå¯åº",imageDisclaimer:"åçåªä¾åèï¼ä¸å以實ç©çºæº",inquiry:"æ¥è©¢ï¼",whatsapp:"WhatsApp"},priceViewDetails:"广 ¼è«æ¥ç詳æ
",categories:{accessory:"é
ä»¶",decoration:"è£é£¾",toy:"ç©å
·",gift:"禮å"},discountBanner:{title:"PetWell æå¡å°äº« 10% ææ£ï¼",description:"ä½¿ç¨ PetWell App 註åç¨æ¶çé»éµå°åçµå¸³ï¼å³å¯èªå享å 10% ææ£åªæ ",cta:"ç«å³ä¸è¼ App"}},xm={title:"填寫è¨å®è³æ",name:"å§å",namePlaceholder:"è«è¼¸å
¥æ¨çå§å",email:"é»åéµä»¶",emailPlaceholder:"[email protected]",phone:"ææ©è碼",phonePlaceholder:"12345678",phoneHint:"è«è¼¸å
¥8使¸åçææ©è碼",shippingAddress:"é貨å°å",shippingAddressPlaceholder:"è«è¼¸å
¥å®æ´çé貨å°å",remark:"å註ï¼é¸å¡«ï¼",remarkPlaceholder:"å¦æç¹æ®è¦æ±æå註ï¼è«å¨æ¤å¡«å¯«",submit:"åå¾ä»æ¬¾",backToCart:"è¿åè³¼ç©è»",emptyCart:"è³¼ç©è»æ¯ç©ºç",emptyCartDesc:"è«å
鏿ååå¾åçµå¸³",browseProducts:"ç覽åå",orderSummary:"è¨å®æè¦",total:"總è¨",deliveryOption:"é
éæ¹å¼",sfExpress:"é è± (SF Express)",regularMail:"å¹³éµ (Regular Mail)",freeShipping:"å
è²»",freeShippingThreshold:"滿 HK$200 å
éè²»",shippingFee:"éè²»",contactInfoReminder:"éè¦æç¤º",contactInfoReminderDesc:"çºç¢ºä¿æåè½é å©èæ¨è¯çµ¡ï¼è«åå¿
æºç¢ºå¡«å¯«é»éµåé»è©±çè¯çµ¡è³æã",nameError:"è«è¼¸å
¥å§å",emailError:"è«è¼¸å
¥é»åéµä»¶",emailInvalid:"è«è¼¸å
¥ææçé»åéµä»¶å°å",phoneError:"è«è¼¸å
¥ææ©è碼",phoneInvalid:"è«è¼¸å
¥ææçææ©è碼ï¼8使¸åï¼",shippingAddressError:"è«è¼¸å
¥é貨å°å",validationError:"è«æª¢æ¥è¼¸å
¥",validationErrorDesc:"è«å¡«å¯«ææå¿
å¡«æ¬ä½",subtotal:"å°è¨",discount:"ææ£",memberDiscount:"æå¡ææ£ {{percent}}%",discountApplied:"å·²æç¨ {{percent}}% æå¡ææ£ï¼",discountInfo:"ä½¿ç¨ PetWell ç¨æ¶çé»éµå°åå¯äº« 10% ææ£ã",downloadAppLink:"ç«å³ä¸è¼ PetWell App"},Sm={title:"ä¸å³ä»æ¬¾èæ",backToCheckout:"è¿åçµå¸³",paymentMethod:"仿¬¾æ¹å¼",paymentMethodDesc:"è«å®æä»æ¬¾å¾ï¼ä¸å³ä»æ¬¾æªåä½çºèæãæåæå¨ç¢ºèªä»æ¬¾å¾èçæ¨çè¨å®ã",paymentInfo:"仿¬¾è³è¨ï¼",paymentInfoDetails:"éè¡è½å¸³ / è½æ¸å¿« / å
¶ä»ä»æ¬¾æ¹å¼",paymentInfoNote:"ï¼ä»æ¬¾è©³æ
å°å¨æäº¤è¨å®å¾ééé»éµç¼éï¼",paymentProof:"仿¬¾èææªå",uploadPaymentProof:"黿ä¸å³ä»æ¬¾æªå",uploadPaymentProofHint:"æ¯æ´ JPGãPNG æ ¼å¼ï¼æªæ¡å¤§å°ä¸è¶
é 5MB",paymentProofPreview:"仿¬¾èæé 覽",submitOrder:"æäº¤è¨å®",processing:"èçä¸...",orderSummary:"è¨å®æè¦",name:"å§å",email:"é»åéµä»¶",phone:"ææ©è碼",shippingAddress:"é貨å°å",deliveryMethod:"é
éæ¹å¼",sfExpress:"é è± (SF Express)",regularMail:"å¹³éµ (Regular Mail)",shippingFee:"éè²»",freeShipping:"å
è²»",remark:"å註",total:"總è¨",uploadPaymentProofError:"è«ä¸å³ä»æ¬¾èæ",uploadPaymentProofErrorDesc:"è«ä¸å³ä»æ¬¾æªåå¾åæäº¤è¨å®",fileTooLarge:"æªæ¡å¤ªå¤§",fileTooLargeDesc:"è«ä¸å³å°æ¼ 5MB çåç",invali
57dFileType:"æªæ¡æ ¼å¼é¯èª¤",invalidFileTypeDesc:"è«ä¸å³åçæªæ¡",invalidFileTypeDetailed:"䏿¯æ´çæªæ¡æ ¼å¼ï¼{{fileType}}ãè«ä¸å³ JPGãPNGãWEBP æ HEIC æ ¼å¼çåçæªæ¡ã",supportedFormats:"æ¯æ´çæ ¼å¼ï¼JPGãPNGãWEBPãHEIC",unknownFormat:"æªç¥æ ¼å¼",orderSuccess:"è¨å®æäº¤æåï¼",orderSuccessDesc:"æåå·²æ¶å°æ¨çè¨å®ï¼å°ç¡å¿«èçã",orderError:"æäº¤å¤±æ",orderErrorDesc:"è¨å®æäº¤æç¼çé¯èª¤ï¼è«ç¨å¾å試æè¯çµ¡æåã",cannotContinue:"ç¡æ³ç¹¼çº",cannotContinueDesc:"è«å
宿è¨å®è³æå¡«å¯«",petPhotoUpload:{title:"ä¸å³å¯µç©ç
§ç",description:"æ¨è³¼è²·çååå
å«å¯å®¢è£½åç¢åï¼è«ä¸å³å¯µç©ç
§ç以宿è¨å®ã",uploadNow:"ç«å³ä¸å³",uploadLater:"ç¨å¾ä¸å³",uploadLaterDesc:"å¦é¸æãç¨å¾ä¸è¼ãï¼æåæé鿍æä¾çè¯çµ¡æ¹å¼èæ¨è¯ç¹«ï¼ä¸¦éè«æ¨ä¸è¼å¯µç©ç
§çã",uploadNowDesc:"è«çºæ¯åå¯å®¢è£½åç¢åä¸å³å¯µç©ç
§ç",noCustomizableProducts:"æ¨çè¨å®ä¸æ²æå¯å®¢è£½åç¢åï¼ç¡éä¸å³å¯µç©ç
§çã",missingPhotos:"è«çºä»¥ä¸ç¢åä¸å³ç
§ç: {{products}}",changeMind:"æ´æ¹é¸æ",edit:"編輯",reset:"éç½®",resetSuccess:"å·²éç½®",resetSuccessDesc:"已移é¤ç
§çï¼è«éæ°ä¸å³",uploadPhoto:"ä¸å³ç
§ç",changePhoto:"æ´æç
§ç"},productImageEditor:{title:"編輯ç¢åè¨è¨",uploadPhoto:"ä¸å³ç
§ç",processing:"èçä¸",processingDesc:"AI æ£å¨èçï¼éè¦ä¸äºæéï¼è«èå¿çåï¼è«å¿é¢éé é¢",processingText:"èçä¸ï¼è«ç¨å...",waitReminder:"â±ï¸ AI èçéæï¼è«èå¿çåï¼è«å¿é¢éé é¢",addDecoration:"æ·»å è³å¹´è£é£¾",confirm:"確èª",confirmDesign:"確èªè¨è¨",cancel:"åæ¶",uploadHint:"ð¤ AI èªå嵿¸¬å¯µç©é é¨ï¼å¯æå調æ´ä½ç½®å大å°",photoGuidance:"ð· è«ä¸å³æ¸
æ°ç寵ç©ç
§çï¼ä»¥ä¾¿ AI æºç¢ºåµæ¸¬ã妿åé¡ï¼æ¡è¿",whatsappUs:"WhatsApp è¯çµ¡æå",aiMode:"",front:"æ£é¢",back:"èé¢",emptyState:"ä¸å³å¯µç©ç
§çéå§è¨è¨",instructions:{click:"",resize:"",rotate:"",scale:"",multiple:""},controls:{rotateLeft:"åå·¦æè½",rotateRight:"å峿è½",zoomIn:"æ¾å¤§",zoomOut:"縮å°",delete:"åªé¤"},viewControls:{locked:"éå®",unlocked:"ææ³",lockTitle:"è§£éææ³ç§»å",unlockTitle:"é宿æ³ç§»å",altDragTip:"Alt+ææ³ç§»å"},longProcessing:{title:"èçæéè¼é·",description:"ä¸å³çç
§çå¯è½è¼å¤§ï¼éè¦æ´å¤æéèçï¼è«èå¿çå..."},error:{title:"é¯èª¤",generic:"AI 嵿¸¬å¤±æï¼è«ç¨å¾å試",timeout:"AI èçè¶
æï¼è«å試ä¸å³è¼å°çåçæç¨å¾å試",memory:"AI èçè¨æ¶é«ä¸è¶³ï¼è«å試ä¸å³è¼å°çåçæç¨å¾å試",server:"AI æåæ«æç¡æ³ä½¿ç¨ï¼è«å試ä¸å³è¼å°çåçæç¨å¾å試",network:"網路é£ç·é¯èª¤ï¼è«æª¢æ¥æ¨ç網路é£ç·å¾å試"}},uploadPayment:{title:"è¨å®è©³æ
åä¸å³",description:"æ¥çæ¨çè¨å®è©³æ
並ä¸å³ä»æ¬¾èææå®¢è£½ååååçã",loading:"è¼å
¥è¨å®è³æä¸...",orderNotFound:"è¨å®ä¸åå¨",orderNotFoundDesc:"æ¾ä¸å°æ¤è¨å®ï¼è«ç¢ºèªè¨å®ç·¨èæ¯å¦æ£ç¢ºã",alreadyUploaded:"仿¬¾èæå·²ä¸å³",alreadyUploadedTitle:"仿¬¾èæå·²ä¸å³",alreadyUploadedDesc:"æ¤è¨å®ç仿¬¾èæå·²ç¶ä¸å³ãå¦ééæ°ä¸å³ï¼è«è¯çµ¡æåã",contactWhatsApp:"è¯çµ¡ WhatsApp {{number}}",backToProducts:"è¿åååé é¢",orderId:"è¨å®ç·¨è",customerName:"客æ¶å§å",customerEmail:"客æ¶é»éµ",customerPhone:"客æ¶é»è©±",shippingAddress:"ééå°å",deliveryOption:"ééæ¹å¼",shippingFee:"éè²»",totalPrice:"總éé¡",orderDate:"è¨å®æ¥æ",orderItems:"è¨å®åå",noItems:"æ¾ä¸å°ç¸éåå",customProduct:"客製ååå",uploadCustomProduct:"ä¸å³å®¢è£½ååååç",customProductUploaded:"å·²ä¸å³å®¢è£½ååååç",uploadCustomProductDesc:"çºæ¤ååä¸å³æ¨ç客製ååçãæ¨å¯ä»¥ä½¿ç¨ AI é é¨åµæ¸¬ææåä¸å³ã",noCustomImage:"å°æªä¸å³å®¢è£½ååç",uploading:"ä¸å³ä¸...",submit:"æäº¤ä»æ¬¾èæ",uploadCustomImage:"ä¸å³å®¢è£½ååç",updateCustomImage:"æ´æ°å®¢è£
57½ååç",customImageSuccess:"客製ååçä¸å³æåï¼",customImageSuccessDesc:"æ¨ç客製ååååçå·²æåä¸å³ã",customImageError:"ä¸å³å¤±æ",customImageErrorDesc:"ä¸å³å®¢è£½ååçæç¼çé¯èª¤ï¼è«ç¨å¾å試ã",success:"仿¬¾èæä¸å³æåï¼",successDesc:"æ¨ç仿¬¾èæå·²æåä¸å³ï¼æåå°ç¡å¿«èçæ¨çè¨å®ã",error:"ä¸å³å¤±æ",errorDesc:"ä¸å³ä»æ¬¾èææç¼çé¯èª¤ï¼è«ç¨å¾å試æè¯çµ¡æåã",orderDetails:"è¨å®è©³æ
",contactInfo:"è¯çµ¡è³æ",needHelp:"éè¦åå©ï¼",contactUsDesc:"å¦å°è¨å®æä»»ä½åé¡ï¼è«éé WhatsApp è¯çµ¡æåã"}},Tm={emptyCart:"è³¼ç©è»æ¯ç©ºç",emptyCartDesc:"å¿«å»é¸è³¼æ¨åæ¡çååå§ï¼",browseProducts:"ç覽åå",orderConfirmation:"è¨å®ç¢ºèª",orderConfirmationDesc:"è«ç¢ºèªæ¨çè¨å®å
§å®¹ï¼ç¢ºèªç¡èª¤å¾åå¾çµå¸³",orderItems:"è¨å®åå",itemsCount:"é
åå",spec:"è¦æ ¼ï¼",customImageUploaded:"å·²ä¸å³å®¢è£½åç
§ç",removed:"已移é¤",removedDesc:"ååå·²å¾è³¼ç©è»ç§»é¤",clearCart:"æ¸
空購ç©è»",cleared:"å·²æ¸
空",clearedDesc:"è³¼ç©è»å·²æ¸
空",orderSummary:"è¨å®æè¦",totalItems:"åå總æ¸",itemsUnit:"ä»¶",total:"總è¨",proceedToCheckout:"åå¾çµå¸³",continueShopping:"ç¹¼çºè³¼ç©",shippingInfo:"⢠滿 HK$200 å
éè²»<br />⢠é è±éé +HK$30 ï½ å¹³éµ +HK$15",freeShippingPrompt:"åè²· HK${{amount}} å³å¯äº«å
éè²»ï¼",freeShippingQualified:"æ¨å·²ç¬¦åå
éè²»è³æ ¼ï¼"},Am={title:"çµæ¥µå¯µç©é
å°ï¼æ¯å©ãç¾½æ¯å®é±çï¼",intro:"é¤å±å¯µç©åä¿æ·¨ä¿ç樣åç°¡å®ï¼è¦çä¸ä½¢åå
çæ´»æ¨¡å¼å±åå±ä½ ãç±å¥½ç²¾åæºçå
éä»ï¼å°ééå°è·³åè·³å»å
å
ä»ï¼å³å»åçä¸éç¨®å¯µç©æå±ä½ ï¼çåå¢5æ¢åé¡å°±ç¥å¦ï¼",question:"åé¡",of:"å
±",restart:"åç©å¤æ¬¡",outcomes:{dog:{title:"ä½ å±é¤çï¼",description:"ä½ å¥½activeï¼åæå¥½å¤æå¿ï¼ä½ æ³è¦åå¥½ææªéªä½ åºè¡ãä¸è¦å°ä½ 就好è奮忡è¿ä½ ï¼ä»²æèå
¥ä½ å
æ¥å¸¸çæ´»ãä½ å仿å°å°åæè
污ç³ã"},cat:{title:"ä½ å±é¤è²ï¼",description:"ä½ æ³è¦åå親å¯åç¨ç«å
ä¼´ä¾¶ãä½ é¾æå²åä½¿ææ¥ç
§ä½ãå¯ä»¥èå
¥ä½ ç¾æçæ´»å
寵ç©ãä½ é¾æééå°å
夿ï¼åååºæ¢³å度æç¬ ç¬ åheaã"},bird:{title:"ä½ å±é¤éä»ï¼",description:"ä½ å¥½è°æã好socialï¼åå¯è½æå²èå¥ä¸åï¼ä½ å仿åï¼å
¶å¯¦ä½ å¯è½ä»²é¾æè½ä½¢å屿æè
è¬å¢ï¼ï¼ä½ æ³è¦é»éç®åäºåæ§å¼·å
寵ç©ãä½ å仿å·ä¸å²ç¨®ååç¾½æ¯ã"},rabbit:{title:"ä½ å±é¤å
ä»ï¼",description:"ä½ æ³é¤å²æ¯çä»å®ésoftå²ï¼ä½åæ¯åé¼ æ´å äºåå
åç©ãä½ æç©ºéçä½¢å跳跳ä¸ï¼åå仿å·å¥½å²é»ç·ãä½ é¾ææº«æãæsocialãé£ç´ å
æåä»ã"},reptile:{title:"ä½ å±é¤ç¬è²é¡æè
éï¼",description:"ä½ é¾æä½å£åãç¨åçå
寵ç©ãä½ å¯è½æææçï¼åæè
ä½ å°±ä¿é¾æééåå
å±ä¼ãä½ enjoyæçåé缸æè
飼é¤ç®±ï¼æ¬£è³å²åä½¿ææ¥æ¸å
寵ç©ã"}},questions:{q1:{question:"è¬ä¸è²æµªå
ãä½ é åé å°åï¼",a:"æå仿çå æè
好å¤è²ï¼å±ä¼éæå¥½æ¶ãï¼",b:"æé¾æéå²ï¼å¶ç¾åµåµè²æè
å¼åè²é½okã",c:"æé¾æå¥½ç±é¬§ãå¹å£å¨ãçè³å¤§è²å²é½å¾ââ幾好ç©ï¼",d:"æå¯§é¡éå²ï¼æå¤è½å°ä½¢åè¼è¼å°å¬å¢é£ã",e:"ææ³å®å
¨ç¡è²ï¼ä¸å²è²é½å好æã"},q2:{question:"ä½ æå¹¾å¤ç©ºéç寵ç©ï¼",a:"ææå¾è±åæè
å¯ä»¥å¸¶ä½¢å»å
¬åï¼å¥½å¤ä½ã",b:"æéå±/apartmentå°±ä¿ä½¢åå
å°ç¤ï¼å¨åè¡å¾ã",c:"ææä½æºåå¤§ç± ï¼å¤ 空éçä½¢åå®å
¨åé£ã",d:"ææåæå®å
忬使è
ä¸éæ¿çä½¢åè·³ã",e:"ææåç©©é£å
æ±æè
æ¶æºé缸/飼é¤ç®±ï¼ä½å°æ¹åç®å¤ã"},q3:{question:"ä½ æ¥åæ¥åå°å©ã污ç³å¢ãï¼",a:"污ç³è
³å°ãç©æ¯ã壿°´ã",b:"è²ç çååéå䏿çå²å¢ä¿¬ã",c:"種åãæ®¼ãç¾½æ¯å¨åé£ã",d:"ä¹¾è...æå ä¹¾èãååæ¥æ¥æ¸
ç便çã",e:"ä¸åæææ¸
䏿¬¡éèæè
ææ°´/墿ã"},q4:{question:"ä½ æ³é»å寵ç©ç©ï¼",a:"æè·¤ãè·æ¥ãç©å°å¥½ç²åã",b:"çé»è¦ææ¸ä¸ä½¢ï¼æè
ç¨laser pointerç©ä¸ã",c:"æä½¢åæå·§ã广ä»ãæè
çä½¢ä¼åºèé ã",d:"åä½éªä½¢ãçé¶é£ä½¢é£ã",e:"ééå°çä½ä½¢æ¸¸æ°´æè
è¡ï¼å使æã"},q5:{question:"å¦æä½ åºåè¡8åéï¼å¯µç©æåç·ä¹ï¼",a:"åºéå£çæï¼æè
æµäººéä½¢ï¼ã",b:"åºé½å
åºä¸ç覺ï¼å®å
¨ç¡æè¬ã",c:"åºç± 度ç©ç©å
·ï¼å¯è½è½ç
57·æéä½å
æ¶é³æ©ã",d:"åºå
窩æè
åæ¬åº¦çï¼æå ä¹¾èéªä½ã",e:"游水æè
åºç±çåºä¸æ¬ã"}}},Em={learnMore:"æ´½è«åªé«åä½",hero:{badge:"忥åä½ Â· æ¸æé©
å",title:"觸é馿¸¯å¯µç©ä¸»äºº",subtitle:"馿¸¯é¦å AI 賦è½å¯µç©å¥åº·ç§æå¹³å° â 以çå¯¦æ¸æé©
ååªé«æ¨å»£èåæ¶åä½ï¼æ¾ç²ä¸»æµåªé«å ±å°ï¼App Store çæ´»é¡ Top 9ã",trust:{media:"ViuTV · Now TV · AM730 · Yahoo å ±å°",appStore:"App Store Top 9",platform:"AI · æ¸æé©è"},eventsCta:"å徿´»åç¶²ç«",kolCaption:"KOL å使¡ä¾",kolVisualLabel:"KOL åä½å¯µç©å
§å®¹ç¤ºä¾",showcaseHint:"ç§»åæ»é¼ æ¢ç´¢æå · ç§»ä¸åçæ¥çè³£é»"},sections:{marketing:{eyebrow:"宣峿¨å»£",title:"夿¸ éåªé«æ¨å»£",subtitle:"ç±å®æ¹æ¸ éå° KOL åä½ï¼æ¯é
æååæå¯éåçè§¸åæ¸æã"},platform:{eyebrow:"å¹³å°åç»",title:"å¨ PetWell 䏿¶ä½ çæå",subtitle:"æ´»åãé¤å»³ãåºè广 ¼ â ç¶æ ¸å¯¦å¾ç¼ä½ï¼ç´æ¥è§¸éå
¨æ¸¯å¯µç©ä¸»äººã"}},audiences:{intro:{title:"æåæä¾çæå",subtitle:"é¸æä½ çå使¹åï¼äºè§£é©åçæåå
§å®¹"},viewMore:"æ¥çæ´å¤",enterprise:{eyebrow:"åç · 大忴»å",title:"åªé«æ¨å»£",subtitle:"ç¶²ç«ãAppãInstagramãKOL åä½åæ´»åçåã",cardTagline:"夿¸ éæå
ãKOL èæ´»åçåï¼æ¾å¤§åçè²é",imageAlt:"PetWell å¯µç©æ´»åç¾å ´",cta:"æ´½è«åªé«åä½"},smallBusiness:{eyebrow:"å°ååæ¶",title:"å¹³å°åç»",subtitle:"åç»æ´»åãé¤å»³æåºè广 ¼ï¼å
費觸éå
¨æ¸¯å¯µç©ä¸»äººã",cardTagline:"å
è²»åç»ãèªè¡æ´æ°ï¼ç´æ¥è§¸éå
¨æ¸¯å¯µä¸»",imageAlt:"åæ¶æ¼ PetWell æ´»åç¾å ´æ¥è§¸å¯µç©ä¸»äºº",cta:"æ´½è«åªé«åä½"}},gallery:{eyebrow:"å使¡ä¾",title:"è¿ææ´»åè KOL åä½",subtitle:"åå ´å¿«éãåçè¯ä¹ãKOL 試ç¨èæ´»åç¾å ´ â ç實åä½ç´éã",imageCount:"{{count}} å¼µåä½ç´ æ",viewHint:"æ»é¼ ç§»ä¸å¯æ«å · 黿åçæ¾å¤§ç覽",openImage:"æ¥ç第 {{index}} å¼µå使¡ä¾",lightboxTitle:"å使¡ä¾ {{current}} / {{total}}",prev:"ä¸ä¸å¼µ",next:"ä¸ä¸å¼µ"},channels:{websiteAds:{title:"ç¶²ç«å»£å",summary:"æ¼ PetWell ç¶²ç«å SEO åå®¢ææ¾æ©«å¹
æå°é¡å
§å®¹ï¼è§¸åæå°å¯µç©è³è¨çç¨æ¶ã",imageAlt:"PetWell ç¶²ç«å¹³å°ä»é¢",kpis:{a:{value:"3,000",label:"æ¥åç覽"},b:{value:"14,700+",label:"宿¥é«å³°"},c:{value:"SEO",label:"å客èªç¶æµé"}}}
57,appAds:{title:"App 廣å",summary:"æ©«å¹
廣åãæ¨æéç¥åæ´»åå°åï¼ç´éå·²èªè寵主ã",imageAlt:"PetWell App æ´»åé é¢",kpis:{a:{value:"7,500+",label:"èªèç¨æ¶"},b:{value:"Top 9",label:"çæ´»é¡ App æå"},c:{value:"Push",label:"ç²¾æºæ¨æ"}}},igAds:{title:"Instagram æ¨å»£",summary:"ç± PetWell åé製ä½åç¼ä½ PostãStoryãReelï¼æ¥è§¸å¯µç©ç¤¾ç¾¤ã",imageAlt:"PetWell Instagram Reels å
§å®¹",kpis:{a:{value:"4,000+",label:"IG 追蹤"},b:{value:"10%+",label:"å¹³åäºåç"},c:{value:"å
¨æ ¼å¼",label:"Post / Story / Reel"}}},edm:{title:"é»éµç´é· EDM",summary:"åå·²é©èé»éµç¨æ¶ç¼éæ´»åéè«ï¼ä¸ä¾è³´ç¤¾äº¤åªé«ç®æ³ã",imageAlt:"PetWell 社群å
§å®¹ç¯ä¾",kpis:{a:{value:"3,000+",label:"é©èé»éµ"},b:{value:"100%",label:"寵ç©ç¸éç¨æ¶"},c:{value:"å¿
é",label:"ç´éæ¶ä»¶ç®±"}}},kol:{title:"KOL å使¨å»£",summary:"é£çµ 80+ 馿¸¯å¯µç© KOL â ç±ç¢å試ç¨å°æ´»åæå¡ï¼ä»¥ç實寵ç©å¸³èçºåç帶ä¾å£ç¢èæå
ã",imageAlt:"PetWell åçåä½ç¦®å",kpis:{a:{value:"80+",label:"KOL 夥伴"},b:{value:"~60K",label:"Reels è§ç"},c:{value:"ç²¾æº",label:"寵ç©å¸³èåç¾"}}},eventPlanning:{title:"æ´»åçååç¾å ´æå",summary:"å¸éãå¿«éãåå ´æ´»å â ç±å®£å³å°ç¾å ´æå½±ãè¨æ½é¡§åä¸ç«å¼æ¯æ´ã",imageAlt:"å¯µç©æ´»åç¾å ´",kpis:{a:{value:"å
¨æ¸ é",label:"ç·ä¸ç·ä¸åæ¥"},b:{value:"ç¾å ´",label:"æå½±åéå½±"},c:{value:"AI",label:"çç製ä½"}}},listEvent:{title:"åç»æ´»å",summary:"æ´»å䏿¶è³ PetWell æ´»åå°åï¼æ¯æ´ App å
§å ±ååæå¡åªæ ã",imageAlt:"PetWell App æ´»åå表",kpis:{a:{value:"App",label:"å
§å»ºå ±å"},b:{value:"å
¨æ¸¯",label:"æ´»åæå
"},c:{value:"æå¡",label:"å°å±¬ææ£"}}},listRestaurant:{title:"å å
¥é¤å»³",summary:"寵ç©ååé¤å»³ç¶åéé»è©±ç¢ºèªå¾åç»ï¼å¸å¼å¸¶çç¨é¤å®¢äººã",imageAlt:"寵ç©ååé¤å»³æ¨å»£å
§å®¹",kpis:{a:{value:"1,500+",label:"å¹³å°é¤å»³"},b:{value:"18å",label:"è¦èå
¨æ¸¯"},c:{value:"æ ¸å¯¦",label:"åé確èª"}}},updatePrices:{title:"æ´æ°åºè广 ¼",summary:"èªèåå®¶å¯é¨æèªå©æ´æ°ç¢å广 ¼åç¹å¹ã",imageAlt:"",kpis:{a:{value:"峿",label:"广 ¼æ´æ°"},b:{value:"Push",label:"ç¹å¹éç¥"},c:{value:"å
è²»",label:"åå®¶ç»è¨"}}},openAccount:{title:"éè¨å家帳æ¶",summary:"ç³è«æçºèªè夥伴ï¼ç®¡çåºèè³æä¸¦ç²å¾ãå·²èªèãæ¨è¨ã",imageAlt:"",kpis:{a:{value:"èªè",label:"ä¿¡ä»»æ¨è¨"},b:{value:"èªå©",label:"å¾å°ç®¡ç"},c:{value:"æå
",label:"平尿¨è¦"}}}},results:{eyebrow:"平尿¸æ",title:"å¹³å°æææ¸æ",subtitle:"ä¾èªæåçæ¥å¸¸çéã",groups:{reach:{title:"å¹³å°è§¸å",subtitle:"夿¸ éè¦è馿¸¯å¯µç©ä¸»äºº"},engagement:{title:"äºåæ¸æ",subtitle:"社群å
§å®¹çç實äºå表ç¾"},scale:{title:"åä½è¦æ¨¡",subtitle:"夥伴網絡èå使·±åº¦"}},appUsers:{value:"7,500+",label:"èªè App ç¨æ¶"},igFollowers:{value:"4,000+",label:"IG 追蹤è
"},dailyViews:{value:"3,000",label:"ç¶²ç«æ¥åç覽"},kolPartners:{value:"80+",label:"KOL åä½å¤¥ä¼´"},peakViews:{value:"14,700+",label:"宿¥é«å³°ç覽"},igEngagement:{value:"10%+",label:"IG å¹³åäºåç"},reelsViews:{value:"60K+",label:"Reels è§ç"},restaurants:{value:"1,500+",label:"å¹³å°é¤å»³"},appStoreTop:{value:"Top 9",label:"çæ´»é¡ä¸è¼æå"}},trust:{eyebrow:"åªé«å ±å°",subtitle:"æ¾ç² ViuTVãNow TVãAM730ãYahooãæå³¶æ¥å ±ç主æµåªé«å ±å°"},partnership:{highlight:{title:"æçº PetWell èªèåä½å¤¥ä¼´",desc:"é©å寵ç©åºãåçæé·æåä½åå®¶ â èªè¡ç®¡ç广 ¼ï¼ç²å¾å¹³å°ä¿¡ä»»èæ¸ã",item1:"èªå©æ´æ°ç¢å广 ¼åç¹å¹",item2:"ç²å¾ãå·²èªèãæ¨è¨",item3:"ç¹å¹æ¨éå·²è¿½è¹¤ç¨æ¶",cta:"æ´½è«åªé«åä½",asideLabel:"é©åä½ åï¼",asideTitle:"å¦æä½ æ¯å¯µç©åºæåç",asideDesc:"å
è²»ç»è¨ï¼èªè¡æ´æ°å¹æ ¼ï¼ç´æ¥è§¸éå
¨æ¸¯å¯µç©ä¸»äººã黿䏿¹æéæ¥ç詳æ
åç³è«ã"}},seo:{title:"å
¶ä»æå | PetWell 廣ååä½èå¹³å°å¤¥ä¼´è¨å",description:"PetWell æä¾åæ¥å使åï¼ç¶²ç«å App 廣åãInstagram æ¨å»£ãæ´»åçåï¼ä»¥ååç»æ´»åãå å
¥é¤å»³ãæ´æ°å¹æ ¼èéè¨å家帳æ¶ã
57",keywords:"PetWell廣å,寵ç©App廣å,馿¸¯å¯µç©æ´»åçå,PetWellåä½,åå®¶åä½,寵ç©ååé¤å»³åç»",structuredName:"PetWell å
¶ä»æå"}},km={sendMessage:"ç¼éè¨æ¯",submitting:"æäº¤ä¸...",faqTitle:"éæ¼ PetWell 常è¦åé¡",directAnswer:{question:"馿¸¯æå©å¯µç©Appæ¨è¦ï¼",answer:"PetWellä¿é¦æ¸¯é¦åä¸ç«å¼å¯µç©å¥åº·ç®¡çAppï¼å
è²»æä¾ç¸é«è¨ºæè©å¹æ¯è¼ã寵ç©ååé¤å»³æ¨è¦ãå¯µç©æ´»åè³è¨ãç¨æ¶å¯ä»¥ç覽å
¨æ¸¯200+éç¸é«è¨ºæå
ç實è©å¹ï¼æµå°æé©åæ¯å©å
æåã"},media:{eyebrow:"åªé«å ±å°",ariaLabel:"æ¾å ±å° PetWell çåªé«åæ©æ§"},mission:{eyebrow:"æåçæ
äº",title:"é»è§£æ PetWell",paragraph1:"å¨é¤å¯µç©æéï¼PetWell ç¼ç¾ç¾æé¦æ¸¯åç©çå
滿ä¸å種é¡çåé¡ï¼å
¶æçºå´éçä¾¿æ¯ â ä½éæåº¦ãèå¯µç©æ¯æåç家人ï¼å¥½æåï¼æåæè²¬ä»»çºç åæä¾æå¥½çæåã",paragraph2:"坿¯ç¾æä¸»äººä¸¦æ²æå¹³å°å¹«å©é䏿¶éç¸é«/ç¾å®¹/è¡çºç¯æ£ççè©å¹ï¼è®å¯µç©ççå½å®å
¨è½å¨ç¬¬ä¸æ¹ï¼å°±å¦è³å䏿¨£ï¼ä¸ä¸ç§ï¼æå¯µççå½ä¾¿æ·éãæå叿éé PetWellï¼ä¸å®è®å¯µç©ä¸»äººä¸åæå°ç¡å©åè¿·è«ï¼ä¸¦ä¸ç°¡åç
§é¡§å¯µç©çæµç¨ï¼å¾è使寵ç©ä¸»äººè½å¤ æ´è¼é¬å°ç
§é¡§ä»åç寵ç©ãæåç¸ä¿¡ï¼æä½ åçæ¯æï¼PetWellå°è½å¤ çºå¯µç©è¡æ¥å¸¶ä¾ç©æ¥µçå½±é¿åæ¹è®ï¼è®æ´å¤çæ¯å°å©å主人è½å¤ å
±åäº«åæ´ç¾å¥½ççæ´»ã"},contact:{title:"è¯çµ¡æå",description:"å¦è³ææèª¤æéè¦æ´æ°ï¼è«æ¼ä¸é¢ç´æ¥å°æ¨çå顿æè¦çä¸ï¼å®æå¾è«æäº¤è¡¨æ ¼ï¼æåæç¡å¿«åè¦ä½ ã"},faq:{q1:"PetWell Appä¿å©åï¼æå©åè½ï¼",a1:"PetWellä¿é¦æ¸¯é¦åä¸ç«å¼å¯µç©å¥åº·ç®¡çAppï¼æä¾ç¸é«è¨ºæè©å¹æ¯è¼ã寵ç©ååé¤å»³æ¨è¦ãå¯µç©æ´»åè³è¨ãå¥åº·ç´é管ççåè½ãå®å
¨å
è²»ä¸è¼ä½¿ç¨ã",q2:"黿¨£æµå°å¥½å
ç¸é«è¨ºæï¼",a2:"åºPetWell Appå
¥é¢ï¼ä½ å¯ä»¥ç覽å
¨æ¸¯200+éç¸é«è¨ºæå
çå¯¦ç¨æ¶è©å¹ãæ¶è²»åèãæåé
ç®ï¼ä»²å¯ä»¥ç¯©é¸24å°ææ¥çç¸é«ï¼å¹«ä½ æµå°æé©åæ¯å©å
ç¸é«ã",q3:"馿¸¯é度æå¯µç©ååé¤å»³ï¼",a3:"PetWellæ¶é1500+éç¶èªèå
寵ç©ååé¤å»³ï¼å使¸¯å³¶ãä¹é¾ãæ°çååãæ¯éé½ç¶PetWellåéè´é»ç¢ºèªå¯ä»¥å¸¶å¯µç©å
¥å
§ï¼ä»²æå室å
§/室å¤ãWalk-in/é ç´çè³è¨ã",q4:"æå©å¯µç©æ´»åé©å帶çå»ï¼",a4:"PetWellå®ææ´æ°é¦æ¸¯ååå
å¯µç©æ´»åè³è¨ï¼å
æ¬å¯µç©å¸éãå¯µç©æ´¾å°ãççåå¹´è¯ã寵ç©åååå ´æ´»åçãä½ å¯ä»¥åºAppå
¥é¢æ¥çææ°æ´»åï¼å¹«æ¯å©å®æå¨æ«å¥½ç¯ç®ï¼"},form:{firstName:"åå *",firstNamePlaceholder:"è«è¼¸å
¥åå",firstNameRequired:"è«è¼¸å
¥åå",lastName:"å§æ° *",lastNamePlaceholder:"è«è¼¸å
¥å§æ°",lastNameRequired:"è«è¼¸å
¥å§æ°",email:"é»éµ *",emailPlaceholder:"[email protected]",emailInvalid:"è«è¼¸å
¥ææçé»éµå°å",phone:"è¯çµ¡é»è©± *",phonePlaceholder:"è«è¼¸å
¥è¯çµ¡é»è©±",phoneRequired:"è«è¼¸å
¥è¯çµ¡é»è©±",message:"è©è«/è¨æ¯ *",messagePlaceholder:"è«è¼¸å
¥æ¨çè¨æ¯",messageRequired:"è«è¼¸å
¥è¨æ¯",privacyLabel:"æç¢ºèªæå·²ç¥æææå PetWell HK æäº¤çåäººè³æå°ææ ¹æ PetWell HK é±ç§è²ææè¿°è¬ä½¿ç¨ã*",privacyRequired:"è«ç¢ºèªæ¨å·²ç¥æç§é±è²æ",successTitle:"è¨æ¯å·²æåæäº¤",successDescription:"æåæç¡å¿«åè¦æ¨çæ¥è©¢ã",errorTitle:"æäº¤å¤±æ",errorDescription:"è«ç¨å¾å試æç´æ¥è¯çµ¡æåã"},seo:{title:"éæ¼PetWell | 馿¸¯å¯µç©å¥åº·ç®¡çApp | è¯çµ¡æå",description:"PetWellä¿é¦æ¸¯é¦åä¸ç«å¼å¯µç©å¥åº·ç®¡çAppãæåå
使å½ä¿æé«å¯µç©è¡æ¥éæåº¦ï¼å¹«å©ä¸»äººæ´å¥½ç
§é¡§æ¯å©ãæ¡è¿è¯çµ¡æåã",keywords:"PetWell,馿¸¯å¯µç©App,寵ç©å¥åº·ç®¡ç,寵ç©è¡æ¥éæåº¦,éæ¼PetWell,è¯çµ¡PetWell",structuredName:"éæ¼ PetWell",structuredDescription:"馿¸¯é¦åä¸ç«å¼å¯µç©å¥åº·ç®¡çApp",orgDescription:"æé«å¯µç©è¡æ¥éæåº¦ï¼å¹«å©ä¸»äººæ´å¥½ç
§é¡§æ¯å©"}},Cm={label:"è¯çµ¡æå",close:"éé"},Nm={seo:{title:"PetWell HK | 馿¸¯å¯µç©å¥åº·App | ç¸é«è¨ºæã寵ç©ååé¤å»³ã寵ç©è«å£",description:"PetWell 馿¸¯é¦åä¸ç«å¼å¯µç©å¥åº·Appãå
¨æ¸¯ç¸é«è¨ºæè©å¹ã寵ç©ååé¤å»³ã寵ç©ç¾å®¹èå¯é¤ãå¯µç©æ´»ååè«å£ãå
è²»ä¸è¼ã",keywords:"PetWell,寵ç©é¦æ¸¯,寵ç©å¥åº·App,ç¸é«è¨ºæè©å¹,寵ç©ååé¤å»³,çé»ååé£è,帶çé£é£¯,寵ç©ç¾å®¹,寵ç©å¯é¤,寵ç©è«å£,å¯µç©æ´»å",structuredName:"PetWell HK - 寵ç©é¦æ¸¯é¦é¸å¹³å°",structuredDescription:"PetWell HK 馿¸¯é¦åä¸ç«å¼å¯µç©å¥åº·Appãç¸é«è¨ºæè©å¹ã寵ç©ååé¤å»³ã寵ç©ç¾å®¹å¯é¤ãå¯µç©æ´»ååè«å£ã"}},Rm={back:"è¿å",email:"é»éµ",emailPlaceholder:"[email protected]",emailInvalid:"è«è¼¸å
¥ææçé»åéµä»¶å°å",submit:"æäº¤",changeEmail:"æ´æ¹é»éµ",verifyEmail:"é©èé»éµ",verificationCode:"é©è碼",noRecieveCode:"æ²ææ¶å°é©è碼ï¼",wait:"çå¾
",getNewCode:"ç§å¾å¯éæ°ç¼é",resendCode:"éæ°ç¼éé©è碼",fillConfirmationCode:"è«è¼¸å
¥é©è碼",unknownError:"ç¼çæªç¥é¯èª¤",failedToResendCode:"éæ°ç¼éé©è碼失æ",login:"ç»å
¥",logout:"ç»åº",welcomeBack:"æ¡è¿ä½¿ç¨ PetWell",enterYourEmailToContinue:"輸å
¥é»éµä»¥ç»å
¥æå»ºç«å¸³æ¶",orContinueWith:"æä½¿ç¨ä»¥ä¸æ¹å¼ç»å
¥",continueWithGoogle:"ä½¿ç¨ Google ç¹¼çº",continueWithApple:"ä½¿ç¨ Apple ç¹¼çº",redirectingToProvider:"æ£å¨è·³è½...",getCode:"使ç¨é»éµç¹¼çº",otpSentTo:"æåå·²å°é©è碼ç¼éè³",otpExplanation:"å·²ä½¿ç¨ Google æ Apple 註åï¼è«ä½¿ç¨åæ¬çç»å
57
¥æ¹å¼ã",verifyAndLogin:"é©è並ç»å
¥",verifying:"é©èä¸...",finishingSocialLogin:"æ£å¨å®æç»å
¥",socialLoginFailed:"社交ç»å
¥å¤±æï¼è«åè©¦ä¸æ¬¡ã",returnHome:"è¿åé¦é ",completeProfile:"宿右æ¶è³æ",completeProfileDesc:"è«å¡«å¯«ä»¥ä¸è³æä»¥å®æå»ºç«å¸³æ¶",profileFormHint:"è«å¡«å¯«çå¯¦è³æã馿¸¯é»è©±æåºå®å ä¸ +852ï¼èé«éæä»¥ kg è¨éã",firstName:"åå",firstNamePlaceholder:"ä¾å¦ï¼å°æ",firstNameRequired:"è«è¼¸å
¥åå",lastName:"å§æ°",lastNamePlaceholder:"ä¾å¦ï¼é³",lastNameRequired:"è«è¼¸å
¥å§æ°",phone:"é»è©±è碼",phonePlaceholder:"12345678",phoneHint:"è«è¼¸å
¥ 8 ä½é¦æ¸¯é»è©±è碼ï¼ç³»çµ±æèªåå ä¸ +852ã",phoneInvalid:"è«è¼¸å
¥ææç 8 ä½é¦æ¸¯é»è©±è碼",weight:"é«é",weightPlaceholder:"ä¾å¦ï¼60",weightHint:"è«è¼¸å
¥ä»¥å
¬æ¤ï¼kgï¼çºå®ä½çé«éã",weightInvalid:"è«è¼¸å
¥ææç kg é«é",password:"建ç«å¯ç¢¼",loginPassword:"å¯ç¢¼",passwordPlaceholder:"è«è¼¸å
¥å¯ç¢¼",passwordRequired:"è«è¼¸å
¥å¯ç¢¼",passwordHint:"æå° 8 ååå
ï¼ä¸¦å
å«è±æåæ¯åæ¸åã",passwordInvalid:"å¯ç¢¼å¿
é æå° 8 ååå
ï¼ä¸¦åæå
å«è±æåæ¯åæ¸å",invalidCredentials:"é»éµæå¯ç¢¼é¯èª¤ï¼è«éæ°è¼¸å
¥ã",enterPasswordToContinue:"æ¤é»éµå·²è¨»åï¼è«è¼¸å
¥å¯ç¢¼ç»å
¥",forgotPassword:"å¿è¨å¯ç¢¼ï¼",confirmPassword:"確èªå¯ç¢¼",confirmPasswordPlaceholder:"è«å次輸å
¥å¯ç¢¼",passwordsDoNotMatch:"å
©æ¬¡è¼¸å
¥çå¯ç¢¼ä¸ä¸è´",creatingAccount:"建ç«å¸³æ¶ä¸...",completeSignup:"建ç«å¸³æ¶",continueBtn:"ç¹¼çº",skipBtn:"ç¨å¾å說",tooManyRequests:"è«æ±éå¤ãè«ç¨åå¹¾åéã",accountLocked:"å¸³æ¶æ«æè¢«éå®",accountTemporarilyLocked:"å¸³æ¶æ«æè¢«éå®ãè«ç¨å¾å試ã",failedToLogin:"ç»å
¥å¤±æ",setNewPassword:"è¨å®æ°å¯ç¢¼",newPasswordRequiredDesc:"æ¤å¸³æ¶éè¦è¨å®æ°å¯ç¢¼æè½å®æç»å
¥ã",savingPassword:"å²åä¸..."},Im={signInMethodHint:"è«ä½¿ç¨æ¨è¨»åæçç»å
¥æ¹å¼ãé»éµ/å¯ç¢¼è Google å¨é£çµåè¦çºä¸å帳æ¶ã",socialOnlyGoogle:"æ¤å¸³æ¶ä½¿ç¨ Google ç»å
¥ï¼è«é»æãä½¿ç¨ Google ç¹¼çºãã",socialOnlyApple:"æ¤å¸³æ¶ä½¿ç¨ Apple ç»å
¥ï¼è«é»æãä½¿ç¨ Apple ç¹¼çºãã",socialOnlyBoth:"æ¤å¸³æ¶ä½¿ç¨ Google æ Apple ç»å
¥ï¼è«ä½¿ç¨æ¨ç社交ç»å
¥æ¹å¼ã",socialOnlyGeneric:"æ¤å¸³æ¶æªè¨å®é»éµå¯ç¢¼ç»å
¥ï¼è«ä½¿ç¨åæ¬çç»å
¥æ¹å¼ã",useExistingLogin:"æ¤é»éµå·²æå¸³æ¶ï¼è«ç»å
¥èééæ°è¨»åã",finishSetupFailed:"å·²ç»å
¥ï¼ä½æªè½å®æè¨å®ï¼è«åè©¦ä¸æ¬¡ã",linkAccountTitle:"é£çµå¸³æ¶",linkAccountDescription:"æ¤é»éµå·²æé»éµ/å¯ç¢¼å¸³æ¶ãè«è¼¸å
¥å¯ç¢¼ä»¥é£çµæ¨ç社交ç»å
¥ã",linkAccountPassword:"帳æ¶å¯ç¢¼",linkAccountSubmit:"é£çµå¸³æ¶",linkAccountSuccess:"帳æ¶å·²é£çµãè«åæ¬¡ä½¿ç¨ Google ç»å
¥ï¼å³å¯çå°åæå¯µç©èè³æã",linkAccountInvalidPassword:"å¯ç¢¼ä¸æ£ç¢ºï¼è«åè©¦ä¸æ¬¡ã",linkAccountTempPasswordRequired:"æ¤å¸³æ¶éå
宿é»éµç»å
¥ãè«å
ç¨é»éµç»å
¥ä¸¦è¨å®æ°¸ä¹
å¯ç¢¼ï¼ç¶å¾å試 Googleã",linkAccountTempPasswordHint:"ççï¼éµå¯ç»å
¥ç¨æ¶ï¼è«å
宿é»éµç»å
¥ä¸¦æ´æ¹è¨æå¯ç¢¼ï¼åé£çµ Googleã",linkAccountAuthFlowError:"伺æå¨æ«æç¡æ³é£çµå¸³æ¶ãè«æ¼æ´æ°å¾åè©¦ï¼æè¯çµ¡æ¯æ´ã",linkAccountServerError:"æ«æç¡æ³é£çµå¸³æ¶ï¼è«ç¨å¾å試ã",linkAccountMergeError:"ç¡æ³é£çµæ¤ Google ç»å
¥ï¼è«åè©¦ä¸æ¬¡ï¼æè¯çµ¡æ¯æ´ã",linkAccountNativeMissing:"æ¾ä¸å°æ¤é»éµçå¯ç¢¼å¸³æ¶ãè«å
ç¨é»éµç»å
¥ï¼æè¯çµ¡æ¯æ´ã",setPasswordTitle:"è¨å®å¯ç¢¼",setPasswordDescription:"è¨å®å¯ç¢¼å¾ï¼æ¨ä¹å¯ä»¥ä½¿ç¨é»éµåå¯ç¢¼ç»å
¥ã",setPasswordSubmit:"å²åå¯ç¢¼",setPasswordSuccess:"å¯ç¢¼å·²å²åï¼æ¨ç¾å¨å¯ä»¥ä½¿ç¨é»éµåå¯ç¢¼ç»å
¥ã",federatedOnlyGoogle:"æ¤å¸³æ¶ä½¿ç¨ Google ç»å
¥ï¼ç¡æ³éè¨å¯ç¢¼ â è«ä½¿ç¨ Google ç»å
¥ã",federatedOnlyApple:"æ¤å¸³æ¶ä½¿ç¨ Apple ç»å
¥ï¼ç¡æ³éè¨å¯ç¢¼ â è«ä½¿ç¨ Apple ç»å
¥ã",federatedOnlyBoth:"æ¤å¸³æ¶ä½¿ç¨ Google æ Apple ç»å
¥ï¼è«ä½¿ç¨ç¤¾äº¤ç»å
¥æ¹å¼ã"},Dm={hero:{badge:"ééå
è²»ç»è¨",title:"å
è²»æ PETWELL",titleHighlight:"é²èµ°å¤±åç",line1:"æºè½é²èµ°å¤±åç",tapBadge:"好似å
«éé · ä¸åå³è®",line2:"ææ©è¼è§¸å³å¯æ¥ç寵ç©ç·æ¥è³æ",summaryPrimary:"å顿éï¼å
å°å
å¾ãç´ 2 åé宿ç»è¨ï¼å³å¯çºæ¯å©å»ºç«é²èµ°å¤±åçã",summarySecondary:"ç¡éå
é»ï¼ææ©ä¸åå³å¯å¹«å©å¥½å¿äººå¿«éè¯çµ¡ä¸»äººï¼æé«èµ°å¤±å¾å°åæ©æã",searchIntent:"鲿£æ¼æªç¶ââå¨èµ°å¤±æå¤ç¼çåï¼çºæ¯å©ææ©å»ºç«é²èµ°å¤±åçï¼å¤ä¸åå®å¿ã"},benefits:{one:{title:"é²èµ°å¤±ä¿é",desc:"好å¿äººä¸æå³å¯è¯çµ¡ä¸»äºº"},two:{title:"ä¸åå³è®",desc:"好似å
«ééæå¡åç°¡å®ï¼ææ©è¼è§¸å³è®"},three:{title:"å
è²»ç»è¨",desc:"ééåé¡ï¼éå®å³æ¢"}},socialProof:{eyebrow:"ç實ç¨å®¶å享",title:"å·²æé忝å©å®¶é·æå°åç",subtitle:"ä¾èª Instagram çå¯¦éæ¶è²¨è使ç¨å享 â è¦è PetWell é²èµ°å¤±åçå¦ä½å¹«å©æ¯å©å¤ä¸åå®å¿ã",ariaLabel:"寵主æ¶è²¨å享ç¸ç輪æ"},seo:{title:"é²èµ°å¤±ççå
è²»ç»è¨ï¼é¦æ¸¯ï¼| NFC é²èµ°å¤±çç | PetWell HK",de
57scription:"æ³æµé²èµ°å¤±ççï¼ç«å³ç»è¨ PetWell å
è²» NFC é²èµ°å¤±ççï¼å¯µç©åçï¼ææ©ä¸åå³å¯è®åè¯çµ¡è³æï¼å¹«å©èµ°å¤±æ¯å©æ´å¿«è¿å°ä¸»äººèº«éã",keywords:"é²èµ°å¤±çç,é²èµ°å¤±çç馿¸¯,NFCé²èµ°å¤±çç,寵ç©é²èµ°å¤±åç,ççé²èµ°å¤±ç,é²èµ°å¤±è²ç,馿¸¯å¯µç©åç,å
費寵ç©åçç»è¨,PetWell åç",structuredDataName:"PetWell é²èµ°å¤±ççå
è²»ç»è¨",intentTitle:"é²èµ°å¤±ççä¿å©ï¼é»è§£è¦ç¨ NFCï¼",intentDesc:"é²èµ°å¤±ççä¿çºèµ°å¤±æ
æ³èè¨è¨ç寵ç©èå¥çãPetWell NFC é²èµ°å¤±ççå¯è®æ¾ç²è
ç¨ææ©è¼è§¸å³è®ï¼å¿«éè¯çµ¡ä¸»äººã",intentPoint1:"ææ©ä¸åå³è®ï¼ä¸éå®è£ Appã",intentPoint2:"å¯é¡¯ç¤ºå¯µç©åºæ¬è³æåç·æ¥è¯çµ¡æ¹å¼ã",intentPoint3:"é©åççèè²è²ï¼ä½çºæ¥å¸¸å¤åºé²èµ°å¤±ä¿éã",faqTitle:"é²èµ°å¤±çç常è¦åé¡",faq:{q1:"å¦ä½åºé¦æ¸¯ç»è¨é²èµ°å¤±ççï¼",a1:"填寫æ¤é è¡¨æ ¼ï¼æäº¤ä¸»äººå寵ç©è³æä¸¦ä¸å³æ¸
æ°å¯µç©ç
§çï¼å®æå¾å³å¯å»ºç«æ¯å©çé²èµ°å¤±ççï¼NFC åçï¼è³æã",q2:"æå·²ç¶æ PetWell 帳æ¶ï¼ä»²éè¦åºç¶²é ç»è¨åï¼",a2:"å¯ä»¥ãå³ä½¿å·²æ PetWell å¸³æ¶æå·²å®è£ Appï¼ä»é卿¤é å¡«å¯«è¡¨æ ¼å®æåçç»è¨ã",q3:"ç»è¨é²èµ°å¤±åçéè¦å©è³æï¼",a3:"å¿
å¡«è³æå
æ¬å§åãé»éµãé»è©±ã寵ç©å稱å寵ç©ç
§çï¼åç¨®ãæ¶çè碼ãçæ¥ãé«éçºé¸å¡«ã",q4:"é²èµ°å¤±ççåä¸è¬ççæå©åå¥ï¼",a4:"ä¸è¬çç夿¸åªå»æåï¼NFC é²èµ°å¤±ççå¯ééææ©è¼è§¸è®åæ´å¤è³æï¼æåå°åæçã",q5:"é²èµ°å¤±ççæ¯å¦åªé©ç¨æ¼ççï¼",a5:"åä¿ï¼è²è²åå
¶ä»å¯µç©é½å¯ä»¥ä½¿ç¨ãä½ å¯æå¯µç©å¯¦éè³æå¡«å¯«ç»è¨ã"},howTo:{name:"å¦ä½ç»è¨ PetWell å
è²»é²èµ°å¤±åç",description:"å¹¾åéå®æç¶²ä¸å¯µç©åçç»è¨ã",step1Name:"鏿右æ¶çæ
",step1Text:"é¸æä½ æ¯å¦å·²æ PetWell 帳æ¶ï¼ä¸è«åªä¸é
ï¼é½è«ç¹¼çºå¡«å¯«ä¸æ¹è¡¨æ ¼ã",step2Name:"填寫主人å寵ç©è³æ",step2Text:"輸å
¥å¿
å¡«è¯çµ¡è³æè寵ç©è³æï¼ä¸¦ä¸å³æ¸
æ°å¯µç©ç
§çã",step3Name:"æäº¤è¡¨æ ¼å®æç»è¨",step3Text:"æäº¤å¾å³å¯å®æç¶²ä¸ç»è¨ï¼åçæ¯æ´ NFC ææ©è¼è§¸è®åã"}},form:{title:"åçç»è¨è³æ",subtitle:"è«å¡«å¯«è³æè£½ä½å¯µç©åçãæ¨ç¤º * çºå¿
å¡«æ¬ä½ã",firstNameLabel:"åå *",firstNamePlaceholder:"ä¾å¦ï¼å°æ",lastNameLabel:"å§æ° *",lastNamePlaceholder:"ä¾å¦ï¼é³",emailLabel:"é»éµ *",phoneLabel:"é»è©±è碼 *",phonePlaceholder:"WhatsApp è¯çµ¡é»è©±",petNameLabel:"寵ç©åå *",petNamePlaceholder:"ä¾å¦ï¼Mochi",microchipLabel:"æ¶çè碼ï¼é¸å¡«ï¼",microchipPlaceholder:"é¸å¡«",sfAddressLabel:"SF æ¶ä»¶å°å *",sfAddressPlaceholder:"ä¾å¦ï¼SF æºè½æ«ç·¨è / é è±ç«å°å",deliveryMethodLabel:"é åæ¹å¼",deliveryMethodValue:"éµå¯",deliveryMethodHint:"ææåçå以éµå¯æ¹å¼å¯åºã",specialRequirementLabel:"ç¹å¥è¦æ±ï¼é¸å¡«ï¼",specialRequirementPlaceholder:"é¸å¡«ï¼ä¾å¦ï¼å°åè£å
ãå註",groupShippingPhoneLabel:"å¦éåä½µå¯éï¼è«å¡«å°æ¹ç»è¨é»è©±ï¼é¸å¡«ï¼",groupShippingPhonePlaceholder:"é¸å¡«ï¼è«è¼¸å
¥å°æ¹ç»è¨åçæä½¿ç¨çé»è©±è碼",petBirthdayLabel:"寵ç©çæ¥ï¼é¸å¡«ï¼",petWeightLabel:"寵ç©é«é (kg)ï¼é¸å¡«ï¼",petWeightPlaceholder:"ä¾å¦ï¼5.5",disclaimer:"æäº¤å³ä»£è¡¨ä½ åæ PetWell 使ç¨ä»¥ä¸è³æå»ºç«å¸³æ¶ãå¯µç©æªæ¡åèçé²èµ°å¤±åçç»è¨ã",submitting:"æäº¤ä¸...",submit:"ç«å³å
è²»ç»è¨"},accountPrompt:{step:"01",title:"ä½ æ¯å¦å·²ç¶æ PetWell 帳æ¶ï¼",hint:"ä¸è«æ¯å¦å·²æå¸³æ¶æ Appï¼è«å¨æ¤å¡«å¯«ä»¥ä¸è¡¨æ ¼å®æåçç»è¨ã",hasAccount:"æ¯ï¼æå·²æå¸³æ¶",noAccount:"å¦ï¼ææªæå¸³æ¶",cardTitle:"è«å° PetWell App å
§ç»è¨",cardDesc:"ä½ å·²ç¶æå¸³æ¶ï¼å»ºè°ä¸è¼ App ä¸¦æ¼ App å
§å®æåçç»è¨ï¼æµç¨æ´å¿«ãè³æåæ¥æ´å®æ´ã",downloadCta:"ä¸è¼ App 並åå¾ç»è¨"},photo:{label:"寵ç©ç
§ç *",previewAlt:"寵ç©ç
§çé 覽",replaceHint:"é»ææææ¾æ°åçä»¥æ´æ",uploadPrompt:"黿ä¸å³æææ¾å¯µç©ç
§ç",uploadHint:"æ¯æ´ JPGãPNGãWebP",supportText:"æ¯æ´ JPGãPNGãWebPï¼æå¤§ 5MBãåçæå®å
¨ä¸å³å° PetWell å²å系統ã",remove:"ç§»é¤"},success:{title:"ç»è¨æåï¼",desc:"æåå·²æ¶å°ä½ çè³æãæ¤åçæ¯æ´ææ©ä¸åå³è®ï¼ä¸è¬ææ©è¼è§¸å³å¯æ¥ç寵ç©è³æã",newAccountDesc:"è«ä¸è¼ PetWell Appãç»å
¥è³ææé¨åçä¸ä½µå¯åºãæ¶å°å¾ä»¥é»éµç»å
¥ï¼é¦æ¬¡ç»å
¥å¾åçæèªååç¨ã",existingAccountDesc:"ä½ å·²æ PetWell 帳æ¶ï¼è«ä½¿ç¨ä½ 忬çå¯ç¢¼ç»å
¥ Appã馿¬¡ç»å
¥å¾ï¼åçæèªååç¨ã",downloadCta:"ä¸è¼ App",submitAnother:"æäº¤å¦ä¸é»å¯µç©"},toast:{alreadyRegisteredTitle:"ä½ å·²ç¶ç»è¨é",successTitle:"ç»è¨æå",successDescNewAccount:"ç»å
¥è³ææé¨åçå¯åºãæ¶å°å¾ä¸è¼ App 並以é»éµç»å
¥ï¼é¦æ¬¡ç»å
¥å¾åçæåç¨ã",successDescExistingAccount:"ä½ å·²æ PetWell 帳æ¶ï¼è«ä»¥åæå¯ç¢¼ç»å
¥ Appã",successDesc:"æåå·²æ¶å°ä½ çç»è¨ãåçæ¯æ´ææ©ä¸åå³è®ï¼è¼è§¸å³å¯æ¥çè³æã",errorTitle:"æäº¤å¤±æ",errorDesc:"è«ç¨å¾å試æè¯çµ¡æåã"}
57,validation:{requiredTitle:"è«å¡«å¯«ææå¿ å¡«è³æ",requiredDesc:"è«å¡«å¯«ææå¿ å¡«æ¬ä½ã",invalidEmailTitle:"è«è¼¸å ¥ææé»éµ",invalidEmailDesc:"è«è¼¸å ¥ææé»éµå°åã",photoRequiredTitle:"è«ä¸å³å¯µç©ç §ç",photoRequiredDesc:"寵ç©ç §ççºåçç»è¨å¿ å¡«è³æã",invalidPhotoTitle:"åçæ ¼å¼ä¸æ£ç¢º",invalidPhotoDesc:"è«ä¸å³åçæªæ¡ã",photoTooLargeTitle:"åç太大",photoTooLargeDesc:"è«ä¸å³ 5MB æä»¥ä¸çåçã",notConfiguredTitle:"è¡¨æ ¼å°æªå®æè¨å®",notConfiguredDesc:"ç¼ºå° nametag Lambda URL æ API tokenã"}},Wm={title:"ä½¿ç¨æ¢æ¬¾èç´°ååç§é±æ¿ç",lastUpdated:"æå¾æ´æ°ï¼2026å¹´4æ25æ¥",sections:{1:{title:"åææåçæ³å¾æ¢æ¬¾",content:`PetWell HK Limitedï¼ãPetWellãããæ¬å ¬å¸ãããæåãæãæåçãï¼ï¼ä¸å®¶å¨é¦æ¸¯è¨»åçå ¬å¸ã 58 59éäºæ³å¾æ¢æ¬¾ï¼ãæ³å¾æ¢æ¬¾ãï¼è¦ç®¡æ¨åååä½¿ç¨ PetWell æä¾çæç¨ç¨å¼ãç¶²ç«ãå §å®¹ãç¢ååæåï¼ä»¥ä¸çµ±ç¨±çºãæåãï¼ã 60 61éäºæ³å¾æ¢æ¬¾æ¯æ¨ï¼ä½çºå人æä»£è¡¨å¯¦é«ï¼ãæ¨ãããæ¨çãï¼è PetWell HK Limited ä¹éå ·ææ³å¾ç´æåçåç´ãéäºæ¢æ¬¾å ·é«èªªæäºæ¨å¨ä½¿ç¨ååèæåæçéå¶ãåæ³æ¬å©å義åã 62 63ãæ¨ãåãæ¨çãæä»»ä½ä»¥ä»»ä½æ¹å¼ååãä½¿ç¨æåèæåç人士ã妿æ¨ä»£è¡¨ä¼æ¥åèæåæå»ºç«å¸³æ¶ï¼å³ç¢ºèªæ¨ç²ææ¬ä½¿è©²ä¼æ¥åéäºæ¢æ¬¾ç´æãå æ¤ï¼æ¨åæéäºæ³å¾æ¢æ¬¾å°è¢«è¦çºæ¨æä»£è¡¨ç伿¥çåæï¼å¨æ¤æ æ³ä¸ãæ¨ãåãæ¨çãå°é©ç¨æ¼è©²ä¼æ¥ã 64 65ééåååä½¿ç¨æåï¼æ¨ç¢ºèªå·²é±è®ãç解並åæåéäºæ³å¾æ¢æ¬¾ç´æï¼å¾è卿¨è PetWell HK Limited ä¹é建ç«åç´éä¿ã妿æ¨ä¸åæéäºæ³å¾æ¢æ¬¾ï¼åæç¢ºç¦æ¢æ¨ä½¿ç¨æåï¼ä¸¦å¿ é ç«å³åæ¢ä½¿ç¨ãéäºæ¢æ¬¾å代任ä½å åèæ¨éæçåè°æå®æãPetWell HK Limited ä¿ç鍿以任ä½çç±çµæ¢éäºæ¢æ¬¾æä»»ä½æåï¼æä¸è¬åæ¢æä¾ææçµååæåæå ¶ä»»ä½é¨åçæ¬å©ã 66 67è£å æ¢æ¬¾å¯è½é©ç¨æ¼æäºæåï¼ä¾å¦ç¹å®æ´»åæä¿é·çæ¿çï¼éäºå°å¨é©ç¨æå䏿«é²ãéäºè£å æ¢æ¬¾æ¯æ³å¾æ¢æ¬¾çè£å ï¼ä¸¦æè¦çºé©ç¨æåæ³å¾æ¢æ¬¾çä¸é¨åã妿è¡çªï¼è£å æ¢æ¬¾å°åªå æ¼éäºæ³å¾æ¢æ¬¾ã 68 69æ¨ç¢ºèª PetWell ä½çºä¸åæ¸ç¢¼å¹³å°ï¼ä¿é²å¯µç©ä¸»äººï¼ãæå使ç¨è ãï¼è寵ç©ç¸éæåæä¾è ï¼ãæåæä¾è ãï¼ä¹é交æåå享è³è¨ï¼å æ¬ä¾èªç¬¬ä¸æ¹çå §å®¹ãééåè PetWellââéé使ç¨ã註åæèå¹³å°ä¸å±ç¤ºãæ¨å»£åéä½çæåäºåââæ¨ç¢ºèªï¼ 70 71æ¨ç¬¦åæåæä¾è ææ½å¨æå使ç¨è çè³æ ¼ã 72æ¨ææä½¿èªå·±åéäºä½¿ç¨æ¢æ¬¾ç´æçå¿ è¦æ³å¾æ¬éã 73æ¨åæèçéé PetWell ä½¿ç¨æåæéçéè交æã 74æ¨æ¿è«¾éµå®éäºæ³å¾æ¢æ¬¾åæ¤èå¼ç¨çä»»ä½ç¸éæä»¶ä¸æ¦è¿°çå ¨é¢æ¢æ¬¾åç´°åã 75 76妿æ¨ä¸åæéäºæ¢æ¬¾çä»»ä½é¨åï¼æ¨å¿ é é¿å åæå®å並ç«å³åæ¢ææä½¿ç¨ååå PetWellãéè¦çæ¯è¦æ³¨æï¼PetWell å°æåå¹³å°ä¿æçç¨æ¶ä¹éçäºåæäº¤ææå¯è½å¼èµ·çæå¤±ãæå®³æé¯å¤±æ©æä¸æ¿æä»»ä½è²¬ä»»ã 77 78PetWell HK Limited å¯è½æä¸æä¿®è¨éäºæ³å¾æ¢æ¬¾ãä¿®è¨å°å¨ https://petwellhk.wpcomstaging.com/terms-and-conditions/ ç¶²åä¸ç¼ä½æ´æ°çæ³å¾æ¢æ¬¾æå¨é©ç¨æåä¸ç¼ä½ä¿®è¨çæ¿çæè£å æ¢æ¬¾å¾çæã䏿ç¼ä½çè£å æ¢æ¬¾åç´°åææä»¶ç¹æ¤æç¢ºç´å ¥æ¬æ¢æ¬¾ãæåä¿çå ¨æ¬é æ æ±ºå®é¨æä»¥ä»»ä½çç±å°éäºæ³å¾æ¢æ¬¾é²è¡æ´æ¹æä¿®æ¹çæ¬å©ãæ¨æè²¬ä»»å®ææª¢é±éäºæ³å¾æ¢æ¬¾ä»¥äºè§£æ´æ°ãå¨ç¼ä½æ¤é¡ä¿®è¨å¾æ¨ç¹¼çºååæä½¿ç¨æåå³è¡¨ç¤ºæ¨åæåä¿®è¨å¾çæ³å¾æ¢æ¬¾ç´æã妿æ¨ä¸åæéµå®éäºæä»»ä½æªä¾çæ³å¾æ¢æ¬¾ï¼è«å¿ä½¿ç¨æååæåã`},2:{title:"ç§é±æ¿ç",content:`æ¬ç¯è§£éæå卿å䏿¶éåªäºåäººè³æä»¥åæåå¦ä½ä½¿ç¨éäºè³æãééä½¿ç¨æ¬å¹³å°ï¼æ¨åææåæä»¥ä¸èªªææ¶éåä½¿ç¨æ¨çè³è¨ãæ¬ç§é±æ¿çé¨åå·²ç´å ¥ä¸¦æ§æéäºæ³å¾æ¢æ¬¾çä¸é¨åã 79 80æåæ¶éçè³è¨ 81ç¶æ¨ä½¿ç¨æ¬å¹³å°æèæåäºåæï¼æåææ¶é以ä¸é¡å¥çåäººè³æï¼ 82 83身份èè¯çµ¡æ¹å¼ï¼å§åãé»éµå°åãé»è©±è碼ãéµå¯æå¸³å®å°åã 84帳æ¶èèªèï¼ç¨æ¶å稱ãåäººæªæ¡è©³æ ãéæ¹å¯ç¢¼ãå®å ¨åç»å ¥æ´»åã 85è£ç½®èä½¿ç¨æ æ³ï¼IP ä½åãè£ç½®èå¥ç¢¼ã使¥ç³»çµ±ãç覽å¨/æç¨ç¨å¼çæ¬ãCookie/SDK IDãç覽çé é¢/ç«é¢ã黿ãæéæ³è¨ãå´©æ½°æ¥èªå診æ·è³è¨ã
86éè¨èå §å®¹ï¼æ¨ç¼é給æåçè¨æ¯ãQ&A/FAQ æäº¤ãæ¯æ´è«æ±ãè©è«ãè«å£å¸æï¼ä»¥åæ¨ä¸å³çä»»ä½ç §ç/æªæ¡ã 87å¯µç©æªæ¡èå¥åº·è³è¨ï¼å¯µç©å稱ãç©ç¨®/åç¨®ãæ§å¥ã年齡ãé«éãç æ·ãç«èæ¥ç¨®ãèæ¹ãåé©çµæãé ç´ç´éãè·ççè¨ï¼ä»¥åæ¨é¸æå²åçç¸éåªé«ã 88交æï¼è³¼è²·ãè¨é±ãé è¨è©³æ å仿¬¾å æ¸æãä¿¡ç¨å¡è©³æ ç±æåç仿¬¾ä¾æåèçï¼æåä¸å²å宿´çä¿¡ç¨å¡è碼ã 89è¡é·åå¥½ï¼æ¨ç鏿å å ¥/éåºé¸æä»¥åèæåéè¨çäºåã 90ç¬¬ä¸æ¹æ´åï¼å¦ææ¨é£æ¥å®åï¼ï¼ä¾èªé£æ¥æåçæéæ¸æï¼ä¾å¦ Apple Health/Google Fit çæ´»å/æ¥æ¸/è·é¢ï¼ç¤¾äº¤ç»å ¥çåºæ¬åäººæªæ¡ï¼ï¼å 卿¨å è¨±çæ æ³ä¸åå¾ã 91ä½ç½®æ¸æï¼ç¶æ¨æç¢ºæäºæåæ¬éæï¼æ¶é大ç´ä½ç½®ï¼ä¾å¦éé IP ä½åï¼å精確ä½ç½®ï¼ä¾å¦éé GPSãWi-Fi æèçï¼ã 92 93ä½ç½®æ¸æåèæ¯ä½ç½®æ¿ç 94PetWell HK Limited è´åæ¼ä¿è·æ¨çç§é±ï¼ä¸¦å°æåå¦ä½ä½¿ç¨æ¨çä½ç½®æ¸æä¿æéæã 951. æ¶éä½ç½®æ¸æï¼æåçæç¨ç¨å¼å 卿¨ééè£ç½®è¨å®æç¢ºæäºæåæ¬éæï¼æææ¶é並å忍çä½ç½®æ¸æï¼å æ¬å¤§ç´ä½ç½®ï¼ä¾å¦éé IP ä½åï¼å精確ä½ç½®ï¼ä¾å¦éé GPSãWi-Fi æèçï¼ã 962. 使ç¨ä½ç½®æ¸æï¼æåä½¿ç¨æ¨çä½ç½®æ¸æä¾æä¾æç¨ç¨å¼çæ ¸å¿åè½ï¼å ¶ä¸å æ¬å°æ¾éè¿çç¸é«è¨ºæã寵ç©ç¾å®¹åºå寵ç©ååé¤å»³ï¼æ ¹ææ¨ç®åçä½ç½®æä¾ç·æ¥å 24 å°æè¨ºææå°æåï¼ä»¥ååç¨ PetFit/æ£æ¥è¿½è¹¤åè½ä¾è¨éæ¨å¯µç©çæ£æ¥è·¯ç·ãè·é¢åæéã 973. èæ¯ä½ç½®ååï¼å¦ææ¨ä½¿ç¨ PetFit/æ£æ¥è¿½è¹¤åè½ï¼æåçæç¨ç¨å¼éè¦å¨èæ¯å忍çä½ç½®ãéæå³èå³ä½¿æç¨ç¨å¼å·²ééææªä½¿ç¨ï¼ä¹ææ¶éä½ç½®æ¸æï¼ç¢ºä¿æºç¢ºä¸éæ·å°è¿½è¹¤æ¨å¯µç©çæ£æ¥ãå¨åç¨æ¤åè½ä¹åï¼æåå°è¦æ±æç¢ºçèæ¯ä½ç½®å忬éã 984. å享ä½ç½®æ¸æï¼æå䏿尿¨çä½ç½®æ¸æåºå®çµ¦ç¬¬ä¸æ¹ãæ¨çä½ç½®æ¸æå èåä¿¡ä»»çæå便åå享ï¼å´æ ¼ç¨æ¼é使ç¨ç¨å¼çåè½ï¼ä¾å¦å°å渲ææåï¼ã 995. æ¨çæ§å¶æ¬ï¼æ¨å°èªå·±çä½ç½®æ¸æææå®å ¨æ§å¶æ¬ãæ¨å¯ä»¥é¨æééè£ç½®ç使¥ç³»çµ±è¨å®åç¨æåç¨ç²¾ç¢ºä½ç½®åååèæ¯ä½ç½®ååãåç¨ä½ç½®ååå¯è½æéå¶æ¨ä½¿ç¨æç¨ç¨å¼çæäºåè½ï¼ä¾å¦éè¿è¨ºææå°åæ£æ¥è¿½è¹¤ã 100 101å ç«¥ç§é± 102æåçæåä¸éå°ä¸ç¡æå¸å¼ 13 æ²ä»¥ä¸çå ç«¥ãæåä¸ææ æå 13 æ²ä»¥ä¸çå 童索åå人è³è¨æåä»åç¼éå人è³è¨è«æ±ã妿æåç¼ç¾æå卿ªç¶ç¶æ¯åæçæ æ³ä¸æ¶éäº 13 æ²ä»¥ä¸å ç«¥çå人è³è¨ï¼æåå°æ¡åæªæ½å¾æåç伺æå¨ä¸åªé¤è©²è³è¨ã 103 104æåå¦ä½ä½¿ç¨æ¨çè³è¨ 105æåä½¿ç¨æ¨çè³è¨ä¾ï¼ 106 107æä¾ãéä½åæ¹åæååå¹³å°åè½ï¼ 108建ç«å管ç帳æ¶ãèçé è¨å仿¬¾ï¼ä¸¦æä¾å®¢æ¶æ¯æ´ï¼ 109å人åå §å®¹ãæ¸¬éæè½åé²è¡åæï¼ 110ç¶æå®å ¨ãä¿å®å宿´æ§ï¼å æ¬é 鲿¬ºè©åé¤é¯ï¼ï¼ 111ç¼éæåéè¨ï¼ä¾å¦ç¢ºèªãæ´æ°ï¼ï¼å¨éè¦æå¾µå¾æ¨åæç¼éè¡é·è³è¨ï¼ 112éµå®æ³å¾ç¾©ååå·è¡æåçåè°ã 113 114å享æ¨çè³è¨ 115æåå 卿便åéè¦ææ³å¾è¦æ±æå享è³è¨ï¼å æ¬èï¼ 116 117æå便åï¼ä¾å¦ä¸»æ©ãåæãå®¢æ¶æ¯æ´ã仿¬¾ï¼ï¼ 118ç¶æ¨è¦æ±æä½¿ç¨å ¶æåæç診æåç¸é«å°æ¥äººå¡ï¼ 119ç¶æ¨é¸æç¼ä½å ¶ä»äººå¯è¦çè©è«æå §å®¹æçå ¶ä»ç¨æ¶ï¼ 120妿æ¶åæ¨èç¬¬ä¸æ¹ä¾æåçæè¨´ãçè°æè¡çªï¼ä¸å享æ¯è§£æ±ºåé¡æå¿ éçï¼åèç´¢è³ èçè æä¿éªå ¬å¸åäº«ï¼ 121卿³å¾è¦æ±æçºä¿è·æ¬å©åå®å ¨æï¼èç¶å±ææ³å¾é¡§ååäº«ï¼ 122å¨é©ç¶çä¿éæªæ½ä¸ï¼é²è¡ä¼æ¥äº¤æï¼ä¾å¦åä½µãæ¶è³¼ãèè³ï¼ã 123 124æå䏿åºå®æ¨çåäººè³æãæåå¯è½æåäº«ç¡æ³åçè奿¨èº«ä»½çå¯ç¸½æå»èå¥åè³è¨ã 125 126ä¿çãå®å ¨ååéè½ç§» 127æåå å¨ä¸è¿°ç®çéè¦ææ³å¾è¦æ±çæ æ³ä¸ä¿çåäººè³æãæå使ç¨é©ç¶çæè¡åçµç¹æªæ½ä¾ä¿è·æ¨çæ¸æï¼ä½æ²æä»»ä½æ¹æ³æ¯ 100% å®å ¨çãæ¨çè³è¨å¯è½æå¨æ¨æå¨åå®¶/å°å以å¤çåå®¶/å°åé²è¡èçï¼ç¶æåå¨åééè½ç§»æ¸ææï¼æåæä½¿ç¨é©ç¶çä¿éæªæ½ã 128 129æ¨çé¸æèæ¬å© 130æ¨å¯ä»¥å¨å¸³æ¶ä¸æ´æ°æäºè©³æ ï¼ä¸¦å¨è£ç½®è¨å®ä¸ç®¡çæ¬éï¼å æ¬ç²¾ç¢ºä½ç½®ï¼ãæ ¹æé©ç¨æ³å¾ï¼æ¨å¯ä»¥è¦æ±ååãæ´æ£ãåªé¤ãéå¶ãåå°èçæè½ç§»æ¨çåäººè³æï¼ä¸¦ä¸æ¨å¯ä»¥é¨æé¸æéåºè¡é·ãè¦è¡ä½¿æ¨çæ¬å©ææåºåé¡ï¼è«éé [email protected] è¯çµ¡æåã`},3:{title:"æåå §å®¹",content:`PETWELL æåçæ§è³ª 131 132PetWell æä¾å ¨é¢çå¥ä»¶ï¼å æ¬æ¡é¢ç¶²çµ¡æç¨ç¨å¼ãæµåæç¨ç¨å¼ï¼ä»¥åå ¶ä»ç¸éå·¥å ·ãæ¯æ´åæåãéäºè³æºè®æå使ç¨è åæåæä¾è è½å¤ å°æ¾ãæºé並èå½¼æ¤äºåãPetWell çæåå æ¬æåæä¾è é å°å¹³å°ãæè¦åé¥éæ¶ãæå使ç¨è ç寵ç©å¥åº·æä»¶ç³»çµ±ï¼ä»¥åå ¶ä»æåã 133 134PETWELL ä¸ç´æ¥æä¾å¯µç©è·çæå 135
136PetWell ä½çºä¸åä¸ç«çå¹³å°ï¼é£æ¥æåæä¾è åæå使ç¨è ãéç¶ PetWell ä¿é²éäºé£æ¥ï¼ä½å®ä¸ç´æ¥æä¾å¯µç©è·çæåï¼ä¹ä¸åèæåç實é交æãæåä¸å±ç¨ãæ¨è¦æèªå¯ä»»ä½æåæä¾è ææå使ç¨è ï¼ä¹ä¸å°ä»åæä¾ç寵ç©è·çæåï¼å¦ç¾å®¹ãå¯é¤ææåæä¾è æä¾çå ¶ä»æåï¼çè³ªç´ ï¼ææ¨èæå使ç¨è çäºååéä¿ä½åºä»»ä½é³è¿°æä¿èã 137 138PetWell ä¸çæåæä¾è ç¨ç«éä½ï¼æ¢ä¸æ¯ PetWell çå¡å·¥ä¹ä¸æ¯æ¿å åãä»åææ¬æ±ºå®å¦ä½åå®¢æ¶æä¾æåãéç¶æåå¨å¹³å°ä¸æä¾éæ¼æåæä¾è çå®å ¨å寵ç©è·çæåï¼ä»¥åæå使ç¨è 鏿æä¾è çæç¤ºï¼ä½ PetWell å°ä»»ä½æåæä¾è ææå使ç¨è çè¡¨ç¾æè¡çºï¼ç¡è«æ¯å¨ç·éæ¯é¢ç·ï¼æ¦ä¸è² 責ã 139 140æåæå°æåæä¾è çåäººæªæ¡é²è¡åæ¥å¯©æ¥ï¼ä¸¦åå©é²è¡åºæ¬ç身份é©èãç¶èï¼é¤éæç¢ºè²æï¼å¦åæå䏿é²è¡å¾¹åºçèæ¯èª¿æ¥ãPetWell ä¸ä¿è任使åæä¾è åæå使ç¨è çæºç¢ºæ§ãè³ªç´ æé©åæ§ï¼å»ºè°æå使ç¨è èªè¡é²è¡ç¡è·èª¿æ¥ãæå使ç¨è å¨èå¹³å°ä¸çå ¶ä»ç¨æ¶äºåä¹åï¼æè¬¹æ è¡äºä¸¦éç¨ç¨ç«å¤æ·ãæå使ç¨è åæåæä¾è åé èªè¡è² 責ä½åºæç¬¦åå ¶å©çåå ¶å¯µç©å©ççæ±ºå®ãå»ºè°æ¨å¨èæåæä¾è äºåãæä¾å¯µç©è·çæåæè PetWell å¹³å°ä¸çå ¶ä»ç¨æ¶äºåä¹åï¼è¬¹æ è¡äºä¸¦éç¨ç¨ç«å¤æ·ãä¾å¦ï¼æ¯ä½ç¨æ¶é½æè²¬ä»»ç¢ºä¿å ¶å¯µç©çé«çï¼å¦é²è·³è¤åçè±ï¼æ¯ææ°çãPetWell å°ç¨æ¶å¨æ¤é¡æ²»çä¸çä»»ä½ç忽æ¦ä¸è² 責ã 141 142ç¨æ¶çæçå §å®¹ãè©è«åå¤é¨ä¾æºçå §å®¹ 143 144ç¨æ¶çæçå §å®¹åè©è« 145 146PetWell çºæå使ç¨è æä¾ä¸åå¹³å°ï¼è®ä»åç¼ä½éæ¼å¾æåæä¾è ç²å¾çæåçè©è«åå享ç¶é©ãéäºè©è«åä»»ä½å ¶ä»ç¨æ¶çæçå §å®¹ä¸è¡¨éçæè¦å 代表åå¥ç¨æ¶çè§é»ï¼ä¸¦ä¸åæ PetWell HK Limited çè§é»ãPetWell ä¸èªå¯æä¿èä»»ä½ç¨æ¶ç¼ä½çå §å®¹çæºç¢ºæ§ã宿´æ§ãçå¯¦æ§æå¯é æ§ãä½çºå¹³å°ä¾æåï¼PetWell å°ç¨æ¶æä¾çä»»ä½è²æãé³è¿°æå §å®¹æ¦ä¸è² è²¬ãæ¯ä½ç¨æ¶å°å ¶å §å®¹åç¼ä½å §å®¹çå¾æè² å ¨é¨è²¬ä»»ï¼ä¸¦ææèå°å ¶ç¼ä½æ¯å ¬éçèéæ©å¯çãæå使ç¨è éå¿ é å°±å ¶å §å®¹å¼èµ·çä»»ä½ç´¢è³ ï¼ä»¥åå PetWell æå·æ³é¨é調æ¥èæ¡åçä»»ä½è¡åï¼å° PetWell é²è¡è³ åã 147 148PetWell æä¾ä¸åå¹³å°ï¼è®æå使ç¨è å¯ä»¥ååæéå種寵ç©è·çæåï¼å æ¬ç¸é«è¨ºæï¼ç詳細è³è¨ï¼ä¾å¦å°åãé»è©±è碼åçæ¥æéãéç¶æåé¼åµæå使ç¨è æ ¹æä»åçç¶é©ç¼ä½è©è«ï¼ä½ PetWell ä¸ææ ¸å¯¦ç¨æ¶å°è¨ªéäºæåçæºç¢ºæ§ãæåçºæå使ç¨è æä¾ä¸åå享å人ç¶é©ç空éï¼ä½éè¦çæ¯è¦æ³¨æï¼PetWell ä¸è½ä¿èææè©è«é½æ¯åºæ¼å¯¦éå°è¨ªãæå使ç¨è å¨é±è®è©è«åæ ¹æç¼ä½çç¶é©ä½åºæ±ºå®æï¼æè¡ä½¿é æ æ¬ä¸¦èæ ®éä¸é»ã 149 150æ¨ç¢ºèªä¸¦åææ¨å°éµå®ä»¥ä¸æåï¼ãè©è«æåãï¼ 151 152PetWell è´åæ¼å¹è²ä¸åå æ»¿æ´»åçç¶²ä¸ç¤¾ç¾¤ï¼è®å¯µç©ä¸»äººå¯ä»¥å享åååæé寵ç©è·çæåçå¯é è³è¨ãçºç¢ºä¿æåçå¹³å°ä¿æå¯¦ç¨ä¸æ²æåæ¥åè¦ã仿¨è¨è«æä¸ç¸éçå §å®¹ï¼æåé¼åµæå使ç¨è å¨æäº¤è©è«æéµå®ä»¥ä¸æåï¼ 153 154è©è«å¿ é æ¯ç實åå人çï¼åºæ¼ç¬¬ä¸æç¶é©ãå¦ææ¨æ¯æåæä¾è çææè ãå¡å·¥æä»£çäººï¼æè æ¯ç´æ¥ç«¶çå°æï¼è«å¿æäº¤è©è«ã 155è©è«ä¸æåæåæä¾è æå ¶ä»£ç人æä¾çè£åææ¿åµå½±é¿ã 156æ¯æ¬¡æåé«é©åªå 許ç¼è¡¨ä¸ç¯è©è«ï¼ä¸å 許å°å䏿åéè¤æäº¤ã 157é¿å æäº¤å å«ä¾®è¾±ãèª¹è¬ææéå §å®¹çè©è«ã 158è«å¿é²è¡èª¹è¬æäººèº«æ»æã 159ç¢ºä¿æ¨çè©è«æ¯ååµçï¼æªç¶è¨±å¯ç¦æ¢è¤è£½ææè¥²ä»äººçå §å®¹ã 160é¿å ç¼ä½éè¤çå §å®¹æä½¿ç¨å¤åå¸³æ¶æäº¤é¡ä¼¼çè©è«ã 161è©è«æåºæ¼ç¬¬ä¸æç¶é©ï¼è䏿¯éè½é說æäºæè³è¨ã 162ç¢ºä¿æ¨çè©è«æ¯ç實çï¼æ¢ä¸å ·èª¹è¬æ§ä¹ä¸å ·èª¤å°æ§ï¼é¿å æ¯«ç¡æ ¹æçææ§ãçæ¸¬ææè¥²å §å®¹ã 163è«å¿å å«åæ¥è¨æ¯ãä¿é·é£çµæä¸ç¶èªè¨ã 164è©è«æéä¸å¨æ¨èªå·±ç寵ç©è·çç¶é©ï¼æä¾ææ¥åæåç詳細æè¿°ã 165å¦ææ¨æå´éçæè¨´ï¼è«æä¾ç §ççèæä¾æ¯ææ¨ç說æ³ã 166è©è«ä¸æç´æ¥åæå ¶ä»è©è«æå å å«ç §çã 167æä¾çè©åæèæ¨çè©è«å §å®¹ä¸è´ã 168è«å¿å 嫿åæä¾è æå¡å·¥çææåäººè³æã 169æäº¤æ¨çè©è«ï¼å³è¡¨ç¤ºæ¨æäº PetWell éç¨å®¶è¨±å¯ï¼ä»¥ä½¿ç¨æ¨çå §å®¹ä¾æ¨å»£å¹³å°ã 170確ä¿éµå®ææé©ç¨æ³å¾ï¼å æ¬èç§é±åå §å®¹åæ³æ§ç¸éçæ³å¾ã 171 172éè¦æ³¨æäºé ï¼ 173 174妿æ¨çè©è«èä¿é·æ´»åï¼ä¾å¦å è²»ç¾å®¹ï¼ç¸éï¼åå¿ é æ¸ æ¥æ«é²ãæªè½é樣åå¯è½æéåãååèªªææ¢ä¾ãææ¨ææåæä¾è æå¨å¸æ³ç®¡è½åé©ç¨çé¡ä¼¼æ³è¦ã 175å¦ææ¨æäº¤å å«å´éææ§çè©è«ï¼æ¨å¿ é å¨ç¼ä½åæ ¸å¯¦å §å®¹æ¯ç實çï¼ä¸¦åæå°æä½çè²ææ¿ææ³å¾è²¬ä»»ãå¨å¸¶æå´éææ§çè©è«ä¸ä
175½åºå¤±å¯¦é³è¿°å¯è½æå°è´æ ¹æãèª¹è¬æ¢ä¾ãåå ¶ä»é©ç¨æ³å¾æ¿ææ³å¾å¾æã 176 177PetWell ä¿çæçµãéæ°å®ç½®æåªé¤ä»»ä½ä¸éµå®éäºæåçè©è«çæ¬å©ï¼ç±æåå ¨æ¬é æ æ±ºå®ï¼æä¸å¦è¡éç¥ãPetWell é²ä¸æ¥ä¿çæ¬å©ï¼ä½ç¡ç¾©åï¼ç£æ§ã編輯æåªé¤å å«è¢«è¦çºéæ³ãå ·åç¯æ§ãèª¹è¬æ§ã淫褻æä»¥å ¶ä»æ¹å¼ä»¤äººåææéåä»»ä½ä¸æ¹ç¥èç¢æ¬ææ¬æ¢æ¬¾çå §å®¹çç¨æ¶çæå §å®¹æå¸³æ¶ãå¦éèå ±ä¸ç¶ä½¿ç¨è©è«ï¼æ¨å¯ä»¥ééé»éµ [email protected] è¯çµ¡ PetWellã 178 179æ¤å表並é詳ç¡ç¡éºï¼å æä¾è¢«ç¦æ¢è¡çºçä¾åãPetWell ä¿çé¨æçµæ¢æ¨åå帳æ¶å卿åæåä¸ç¼ä½å §å®¹è½åçæ¬å©ï¼ç¡è«æ¯å¦ç¼åºéç¥ï¼ä¹ç¡è«åºæ¼ä½ç¨®åå ææ²æåå ï¼ç¹å¥æ¯å¦ææ¨çè¡çºè¢«èªçºæ¯ä¸ç¶æå ·ç ´å£æ§çãæ¤å¤ï¼PetWell å¯è½æå ¨æ¬é æ æ±ºå®éå¶æ¨ç¼éçµ¦å ¶ä»ç¨æ¶çè¨æ¯æ¸éã妿卿åçæåä¸é²è¡éæ³æ´»åï¼PetWell å¯è½æè®å·æ³é¨éä»å ¥ï¼ä¸¦å°å¨å¿ è¦æèªçºé©ç¶æèç¶å±åä½ãéç¶æå䏿¿è«¾å¯©æ¥ç¨æ¶ç¼ä½çææå §å®¹ï¼ä½æåä¿ç鍿åªé¤ã編輯ãç§»åææçµä»»ä½å §å®¹çæ¬å©ï¼æä¸å¦è¡éç¥ã 180 181ä¾èªå¤é¨å¹³å°çå §å®¹ 182 183PetWell å¯è½æé¡¯ç¤ºä¾èªå¤é¨å¹³å°æç¶²ç«çå §å®¹ï¼å æ¬è©è«ãPetWell 䏿æéäºå¤é¨ä¾æºçå §å®¹ï¼ä¹ä¸å°å ¶çæ¬æææ¬æåºä»»ä½è¦æ±ãPetWell ä¸è² 責åå¾ä½¿ç¨ä»»ä½å¤é¨ä¾æºå §å®¹çæ¬å©ï¼ä¹ä¸ä¿èæ¤é¡å §å®¹çæºç¢ºæ§ãåæ³æ§ææ¯å¦ç¬¦åçæ¬æ³ãæåä¾è³´æåçç¨æ¶åå¤é¨å §å®¹ä¾æå忳尿ä¾å §å®¹ï¼ä¸¦é¼åµç¨æ¶å¨å¾æåçå¹³å°ä½¿ç¨ä»»ä½å §å®¹ä¹åæ ¸å¯¦å ¶ç實æ§åæææ¬ã妿 PetWell æ¶å°ææççæ¬ä¾µæ¬éç¥ï¼æåæ¿è«¾æ¡åé©ç¶è¡åï¼å æ¬ç¡å¿«å¾æåçå¹³å°åªé¤ä¾µæ¬å §å®¹ä»¥éµå®çæ¬æ³ãç¨æ¶å¨ä¾è³´ä¾èªå¤é¨å¹³å°çå §å®¹ä¹åæè¬¹æ è¡äºä¸¦é²è¡ç¡è·èª¿æ¥ãPetWell å°ç¨æ¶ä¾è³´æ¤é¡å §å®¹èå¼èµ·çä»»ä½é¯èª¤è³è¨ãçæ¬ä¾µæ¬æå ¶ä»å顿¦ä¸è² 責ã 184 185ç¥èç¢æ¬åçæ¬ 186 187æåæä¾è å¨ PetWell ä¸åµå»ºåç¼ä½çå §å®¹ãæ¨èªåå ¶ä»è¦è¦ºåªé«ä»çºåèªçæ¬ææäººçç¥èç¢æ¬ãæåæä¾è åæä¸ç¼ä½å §å®¹ï¼é¤éä»åææçæ¬æå·²ç²å¾é©ç¶ç許å¯ï¼ææ¶µèå¨åç使ç¨ç¯åå §ãPetWell å°ç¨æ¶ç¼ä½çå §å®¹æå¤é¨ä¾æºçå §å®¹é æçä»»ä½çæ¬ä¾µæ¬æ¦ä¸è² 責ï¼ä½å¦æå §å®¹éå任使³å¾æ¨æºææ¬å©ï¼å°åªé¤æ¤é¡å §å®¹ã 188 189ééå¨ PetWell ä¸ç¼ä½å §å®¹ï¼æåæä¾è åæå è¨±å ¶å¨å¹³å°ä¸é¡¯ç¤ºï¼ä¸¦ç¨æ¼èæ¨å»£å¹³å°åå ¶æåç¸éçç¨éï¼èç¡éä»»ä½è£åãPetWell ä¿çæ¬å©ï¼ä½ç¡ç¾©åï¼ç£æ§ã編輯æåªé¤å å«è¢«è¦çºéæ³ãå ·åç¯æ§ãèª¹è¬æ§ã淫褻æä»¥å ¶ä»æ¹å¼ä»¤äººåææéåä»»ä½ä¸æ¹ç¥èç¢æ¬ææ¬æ¢æ¬¾çå §å®¹ç帳æ¶ã 190 191ç¬¬ä¸æ¹æååå §å®¹ 192 193PetWell å¯è½æè PetWell ç¡æ³æ§å¶çç¬¬ä¸æ¹æååå §å®¹ä¸èµ·ä½¿ç¨ãæ¨ç¢ºèªä¸åçæ³å¾æ¢æ¬¾åç§é±æ¿çå¯è½é©ç¨æ¼æ¨ä½¿ç¨æ¤é¡ç¬¬ä¸æ¹æååå §å®¹ãPetWell ä¸èªå¯ä¸ä¸å°ä»»ä½ç¬¬ä¸æ¹ä¾æåæä¾çç¢åææåè² è²¬ææ¿æè²¬ä»»ã 194 195æææ¬ 196 197æååå ¶ä¸çæææ¬å©æ¯ä¸å°ç¹¼çºæ¯ PetWell HK Limited æå ¶è¨±å¯äººç財ç¢ãæ¬æ¢æ¬¾ä¸çä»»ä½å §å®¹åä¸æäºæ¨ä»»ä½èæåç¸éçæ¬å©ï¼æä½¿ç¨æåè PetWell çå ¬å¸åç¨±ãæ¨èªãç¢ååæåå稱ã忍ææåæ¨è¨çè½åã 198 199寵ç©å¥åº·æä»¶ç³»çµ± 200 201PetWell æä¾ä¸åå®å ¨çæ¸ç¢¼æªæ¡åº«ââ寵ç©å¥åº·æä»¶ç³»çµ±ï¼è®æåçå¹³å°ç¨æ¶è½å¤ ææå°ååãå²åå管çä»å寵ç©çå¥åº·è¨éåå ¶ä»éè¦æä»¶ã該系統æ¨å¨ä¿é²è¼é¬ååå管ç寵ç©å¥åº·æ¸æï¼è®æåçå¹³å°ç¨æ¶å¨ç²å¾é©ç¶åæçæ æ³ä¸ï¼èæåæä¾è ä¸èµ·å 強寵ç©å¥åº·çè·çå管çã 202 203å²åå¨å¯µç©å¥åº·æä»¶ç³»çµ±ä¸çè³è¨å¯è½å æ¬ä½ä¸éæ¼ç¸é«è¨éãç«èæ¥ç¨®è¨éåç æ·ãæ¶éçè³è¨å°éç¨æ¼å å¼· PetWell æä¾çæåï¼æ¨å¨æ¹åæå使ç¨è åå ¶ææ¬æåæä¾è å°å¯µç©å¥åº·çæ´é«ç®¡çåè·çãééä½¿ç¨æ¤ç³»çµ±ä¸å³å¯µç©å¥åº·æä»¶ï¼å³è¡¨ç¤ºæ¨åææç §æåçæ³å¾æ¢æ¬¾åç§é±æ¿ç䏿¦è¿°çæ¹å¼å²åå使ç¨éäºæ¸æãPetWell è´åæ¼ä»¥è¡æ¥æ¨æºçå®å ¨æªæ½åå
203è°ä¿è·æ¨å¯µç©çå¥åº·è³è¨ã 204 205æå使ç¨è æè²¬ä»»ç¢ºä¿ä»åè¼¸å ¥ç³»çµ±ç寵ç©å¥åº·è³è¨çæºç¢ºæ§å宿´æ§ãæä¾çæææ¸æå¿ é æ¯ææ°çåæ£ç¢ºçï¼éä¸é»è³ééè¦ãPetWell å°æå使ç¨è æä¾çè³è¨ä¸çä»»ä½é¯èª¤ï¼æå ¶ä»æå使ç¨è ææåæä¾è å°éäºè³è¨çä»»ä½ä¾è³´æ¦ä¸è² 責ã 206 207ææä¸å³çæ¸æä»çºæå使ç¨è æåæ³ææè çç¥èç¢æ¬ãPetWell ä¸å°ä¸å³å°å¯µç©å¥åº·æä»¶ç³»çµ±çä»»ä½å §å®¹æåºæææ¬è¦æ±ãéæ¼æ¸æä½¿ç¨ï¼é¤éæä¾æè¦æ±çæåææ³å¾è¦æ±ï¼å¦å PetWell 䏿ååå²åå¨é²ç«¯ç¡¬ç¢ä¸ç詳細å¥åº·è³è¨ã鿼坵ç©çåºæ¬è³è¨ï¼å¦å稱ãå種ãé«éåæ§æ ï¼å¯è½æèæåæä¾è æä»»ä½ç¬¬ä¸æ¹å享ï¼ä»¥ä¿é²æåçæä¾ãé種è³è¨åäº«å´æ ¼åºæ¼æå使ç¨è æ§å¶çè¨å®ï¼ä»åå¯ä»¥é¸æèèªç±å·¥ä½è å享åªäºé¡å¤è³è¨ï¼å¦ææï¼ã 208 209PetWell ç¢ºä¿æå使ç¨è ä¿æå°å ¶å §å®¹çæ§å¶æ¬ãæ¨å¯ä»¥ç®¡ç誰å¯ä»¥æ¥çæèæ¨çæ¸æäºåï¼ä¸¦éé系統è¨å®æ°¸ä¹ ç§»é¤æåªé¤æ¸æãæå使ç¨è 決å®å ¶æªæ¡çç§é±ç´å¥ï¼é è¨çºç§äººãé¤é卿åçç§é±æ¿çä¸æç¢ºæè¿°ææ³å¾è¦æ±ï¼å¦å PetWell 䏿åå ¶ä»äººæ«é²æ¨çæªæ¡ææ¸æã`},4:{title:"æå¡è³æ ¼åæååå",content:`ç¨æ¶å¸³æ¶ 210 211è¦åå PetWell ç大é¨ååè½ï¼æ¨å¿ é 註åä¸¦ç¶æä¸åæ´»èºçåäººç¨æ¶æå帳æ¶ï¼ã帳æ¶ãï¼ãæ¨å¿ é 年滿 18 æ²æéå°æ¨æå¨å¸æ³ç®¡è½åçæ³å®æå¹´å¹´é½¡ï¼ä»¥è¼é«è çºæºï¼ï¼æè½å»ºç«å¸³æ¶ã註åéè¦æ¨æä¾å人è³è¨ï¼ä¾å¦æ¨çå§åãææé»è©±è碼åé»éµå°åãå¨è¨»åéç¨ä¸ï¼æ¨å¯ä»¥é¸ææä¾ä¸é
211è¦çé¡å¤è©³æ ï¼ä½éæå©æ¼åäººåæ¨å¨ PetWell ä¸çé«é©ãæ¨å°é鿍ç帳æ¶é²è¡çæææ´»åè² å ¨é¨è²¬ä»»ï¼ä¸¦å¿ é ä¿ææ¨ç PetWell å¯ç¢¼åä»»ä½ç¬¬ä¸æ¹ç¶²ç«å¯ç¢¼çæ©å¯æ§åå®å ¨æ§ãæ¨æè²¬ä»»ç¢ºä¿éäºå¯ç¢¼é¨æåå°ä¿è·ï¼ä»¥é²æ¢æªç¶ææ¬ä½¿ç¨æ¨ç帳æ¶ãæ¨æè²¬ä»»ä¿æå¸³æ¶è³è¨çæºç¢ºæ§å宿´æ§ã妿æ¨ç帳æ¶åºç¾ä»»ä½å®å ¨æ¼æ´ææªç¶ææ¬çååï¼æ¨å¿ é ç«å³éç¥ PetWellãæ¤å¤ï¼æç¢ºç¦æ¢æ¨å¨æªç¶ä»äººæç¢ºè¨±å¯çæ æ³ä¸ååä»äººç帳æ¶ãå´ç¦å¨å¹³å°ä¸åå å ¶ä»ç¨æ¶æä»¥èåèå£ä½¿ç¨æåãæ¨ç¢ºèª PetWell å°æ¨å æªç¶ææ¬ä½¿ç¨æ¨ç帳æ¶èéåç任使失æ¦ä¸è² 責ãç¶èï¼æ¨å¯è½éè¦å°å é種æªç¶ææ¬çæ´»åèå°è´ PetWell æå ¶ä»äººéåçä»»ä½æå¤±è² è²¬ã 212 213ä¿é·ä»£ç¢¼ 214 215PetWell å¯ä»¥å ¨æ¬é æ æ±ºå®åµå»ºä¿é·ä»£ç¢¼ï¼éäºä»£ç¢¼å¯ä»¥å æçºå¸³æ¶é¤é¡ï¼æèæåæåç¸éçå ¶ä»åè½æå¥½èï¼ä¸¦å PetWell çºæ¯åä¿é·ä»£ç¢¼å»ºç«çä»»ä½éå æ¢æ¬¾ï¼ãä¿é·ä»£ç¢¼ãï¼ç´æãæ¨åæä¿é·ä»£ç¢¼ï¼ 216 217å¿ é ç¨æ¼æå®çåç¾åç®çï¼ä¸¦ä»¥åæ³çæ¹å¼ä½¿ç¨ã 218é¤é PetWell æç¢ºå 許ï¼å¦åä¸å¾è¤è£½ãåºå®ãè½è®æåå ¬ç¾æä¾ã 219PetWell å¯ä»¥é¨æä»¥ä»»ä½çç±åç¨ï¼ä¸ä¸æ¿æä»»ä½è²¬ä»»ã 220å¿ é æ ¹æ PetWell çºè©²ä¿é·ä»£ç¢¼è¨å®çå ·é«æ¢æ¬¾ä½¿ç¨ã 221ä¸å¯å æç¾éã 222å¯è½æå¨æ¨ä½¿ç¨ä¹åéæã妿 PetWell ç¢ºå®æèªçºä¿é·ä»£ç¢¼çä½¿ç¨æå ææ¯é¯èª¤çãæ¬ºè©çãéæ³çï¼æéåäºé©ç¨çä¿é·ä»£ç¢¼æ¢æ¬¾æéäºæ³å¾æ¢æ¬¾ï¼PetWell ä¿çæ£çææ£é¤éé使ç¨ä¿é·ä»£ç¢¼ç²å¾çé¤é¡æå ¶ä»åè½æå¥½èçæ¬å©ã 223 224網絡åååè¨å 225 226æ¨æè²¬ä»»ç²åä½¿ç¨æå平尿éçæ¸æç¶²çµ¡å忬éã妿æ¨å¾æ¯æ´ç¡ç·ç¶²çµ¡çè¨åååæä½¿ç¨æåçæåï¼æ¨çæµåç¶²çµ¡ä¾æåå¯è½ææ¶åæ¸æåè¨æ¯è²»ç¨ï¼æ¨éèªè¡æ¿æéäºè²»ç¨ãæ¨éæè²¬ä»»ç²ååæ´æ°åååä½¿ç¨æåæååå ¶ä»»ä½æ´æ°æéçå ¼å®¹ç¡¬ä»¶æè¨åãPetWell ä¸ä¿èæåæå ¶ä»»ä½é¨åå°å¨ä»»ä½ç¹å®ç¡¬ä»¶æè¨åä¸éä½ãæ¤å¤ï¼æåçæåå¯è½æåå°äºè¯ç¶²åé»åéè¨ä½¿ç¨ä¸åºæçæ éåå»¶é²çå½±é¿ã`},5:{title:"å¸³æ¶ææäººè¡çº",content:`ç¦æ¢ä¸å³å §å®¹ 227 228æ¨ä¸å¾å¨å¹³å°ä¸çä»»ä½å°æ¹ä¸å³ãç¼ä½ãå³è¼¸æåç¼ä»»ä½å §å®¹ââå æ¬æåãååãå½±çãè²é³ãæ¸æãè³è¨æè»ä»¶ââç¡è«æ¯å°æ¨çåäººæªæ¡ãæåå表ãæåè«æ±ï¼éæ¯ä½çºèå¹³å°ãæåãæåæä¾è ææå使ç¨è ç¸éç任使è¦åé¥çä¸é¨åã 229 230ç¦æ¢æ¨ç¼ä½æªæ²ä¾æºçå §å®¹ï¼å æ¬åå å ¶ä»å人æå¯¦é«ï¼æç¼ä½éæ¼æåæä¾è çä»»ä½èåæä¸æºç¢ºçå³è¨è³è¨ã 231 232è«å¿ç¼ä½æåµå»ºé£çµå°éåéäºæ³å¾æ¢æ¬¾çå¤é¨ç¶²ç«ã 233 234æ¨ä¸å¾åè任使¨å¨ä»¥ä»»ä½æ¹å¼å·å®³æåå 18 æ²ä»¥ä¸ä»»ä½å人ï¼ãæªæå¹´äººãï¼çæ´»åï¼æå¨æªç¶é©ç¶åæçæ æ³ä¸åæªæå¹´äººç´¢åå人è³è¨ã 235 236æ¨æé¿å ä¾µç¯ç§é±çæ´»åï¼ä¾å¦å¨æªç¶ä»äººç¥æ åèªé¡åæçæ æ³ä¸ï¼æªç¶ææ¬æ¶éãå²åæåç¼å人è³è¨ï¼å æ¬å§åãé»éµå°åãé»è©±è碼åå®¶åºå°åã 237 238æ¨ä¸å¾åç¼å å«å¯è½æå®³ PetWell æä»»ä½ç¬¬ä¸æ¹å©ççèåæå¤±å¯¦é³è¿°çå §å®¹ã 239 240æ¨ä¸å¾ç¼ä½è²æ ã騷æ¾ã仿¨ãéæ³ãæ·«è¤»ã誹è¬ãä¸å·ãå¨è ãæ§è¦ï¼æå¨ç¨®æãæåææ°æä¸ä»¤äººåæçå §å®¹ãå´ç¦é¼åµå¯è½æ§æåäºç¯ç½ªãå°è´æ°äºè²¬ä»»æä»¥å ¶ä»æ¹å¼éåä»»ä½é©ç¨æ³å¾çè¡çºçå §å®¹ã 241 242æ¨ä¸å¾ç¼ä½ä»»ä½å®£æç¨®æä¸»ç¾©ã仿¨æå°ä»»ä½å人æç¾¤é«é æèº«é«å·å®³çå §å®¹ãé¿å ç¼ä½ä»»ä½å å«è£¸é«ãé度æ´åæå ¶ä»å¯è½è¢«èªçºæ¯ä¸ç¶æå ·åç¯æ§å §å®¹çææã 243 244ç¦æ¢æ¨ä¸å³åçæ¬æåæ¥æ©å¯ä¿è·çå §å®¹ï¼é¤éæ¨ææéäºæ¬å©æå·²ç²å¾åæ³æ¬å©ææäººç許å¯ï¼å¨æåçæåä¸ä½¿ç¨åå享æ¤å §å®¹ã 245 246æ¨ä¸å¾ä¸å³ãç¼ä½æåç¼ä¾µç¯ä»äººçæ¬æå°ææ¬å©çå §å®¹ï¼ä¾å¦æªç¶ææ¬è¤è£½åçæ¬ä¿è·çä½åï¼å æ¬ä½ä¸éæ¼ççé»è ¦ç¨å¼ã鳿¨æªæ¡åèè¡åãé¿å ç¼ä½æå©æ¼è¦é¿è£½é å鲿·è²è£ç½®æå ¶ä»ä¿è·æªæ½çè³è¨æé£çµãç¦æ¢æ¨ç¼ä½åºæ¼å¹´é½¡ãæ§å¥ãæ®ç¾ã種æãæ§ååæå®æèå¨è ãè·è¹¤ã誹è¬ã欺è©ãè²¶ä½ã迫害ææåå人æç¾¤é«çå §å®¹ãè«å¿ç¼ä½ç ½åæé¼åµä»äººä½åºå¯è½å°è´å°å人æç¾¤é«é æå·å®³ææ§è¦çè¡çºçå §å®¹ã 247 248æ¨ä¸å¾åèæ¨å¨æå®³æç ´å£å ¶ä»ç¨æ¶é»è ¦ç³»çµ±çæ´»åï¼æå 許ä»äººéæ³ååè»ä»¶æç¹éç¶²ç«æä¼ºæå¨ä¸çå®å ¨æªæ½ãéå æ¬ä»»ä½å½¢å¼çåå¾éµä»¶ãç¦æ¢åå æä½¿ç¨ PetWell å¡å·¥ã代ç人ãç¶çãæåæä¾è ãå ¶ä»ç¨æ¶æä»»ä½å ¶ä»äººç身份ãç¦æ¢å®£å³æææ¬èæåæåç¡éæè¢« PetWell èªçºä¸ç¶çæ¥åï¼ç± PetWell å ¨æ¬é æ æ±ºå®ï¼ã 249 250䏿ç¼ä½è¢«è¦çºãåå¾éµä»¶ãããé£éä¿¡ããã層å£å¼æ¨é·ãææªç¶è«æ±ç忥廣åçå §å®¹ãé¿å ç¼ä½æªç¶æç¢ºæ¹åçæåçæªç¶ææ¬åæ¥è¨æ¯æå»£åï¼ä¾å¦é¾æ°é¨å±ãææ£å¡ãç¶²ä¸æ¯è³½çã 251 252æ¨ä¸å¾åç¼æä¸å³å¯è½æå®³ PetWell æ PetWell ç¨æ¶è²¡ç¢åå©ççç æ¯æä»»ä½æè¡ã 253 254é¤éæåçæ³å¾æ¢æ¬¾æç¢ºå 許ï¼å¦åç¦æ¢ç¼ä½æå忥æåæç¶²ç«çé£çµãå §å®¹å¿ é èæåçæååç¨æ¶ç¸éãé¿å ç¼ä½éæ¬å°æä¸ç¸éçææãè«å¿éæ°ç¼ä½ä»¥åå·²æäº¤çµ¦ PetWell çå §å®¹ãå´ç¦å¨æªç¶ PetWell æç¢ºæ¸é¢åæçæ æ³ä¸ä½¿ç¨ä»»ä½èªååå·¥å ·æè»ä»¶æäº¤å §å®¹ã 255 256éè¨ç¦ä»¤ 257 258è«å¿ç¼éæ¶åè¶ éæåæ¨å¹çåå®¶æåé坿¬¾çè¨æ¯ï¼ç¹å¥æ¯å¦æ
258å®åå å«éæ¬¾è«æ±ã 259 260é¿å ç¼ééæ¼æåæåæå¤é¨ç¶²ç«æªæä¾çæåçæªç¶è«æ±ç廣åæä¿é·ã 261 262é¿å å享å人è¯çµ¡è³è¨ï¼ä¾å¦é»è©±è碼ã社交åªé«å¸³èãé»éµå°åçã 263 264è«å¿é¼åµæåå©ä½¿ç¨å ¶ä»æåæå¹³å°é²è¡æåæå以å¤çè¨æ¯å³éææ¥åææ¬ã 265 266ç¦æ¢è¡çº 267 268æå使ç¨è è¢«ç¦æ¢åè以ä¸ä»»ä½è¡çºï¼æ¿è«¾æåä½ç¡æä»æ¬¾ï¼è¨»åãåå广 ¼ãä½¿ç¨æææ¬æåä½ç¡æå®æäº¤æï¼åæè³¼è²·æåä½ä¸ç¬¦åæåæä¾è è²æçæ¢æ¬¾ï¼ææåç ´å£åè¡¨ï¼ææ¿«ç¨ PetWell æä¾çä»»ä½èä½¿ç¨æè³¼è²·æåç¸éçåè½ãéäºè¡çºéåäºæåæ¢æ¬¾ï¼å¯è½æå°è´å¸³æ¶æ¬éåå°éå¶ã 269 270ç«¶æ¥ç¦æ¢æ¢æ¬¾ 271 272å¨ééæåæåèæåæä¾è æå¾ä¸æ¬¡æ¥è§¸å¾ç 12 åæå §ï¼æå使ç¨è åæéµå®ä»¥ä¸æ¢ä»¶ï¼ 273 274æå使ç¨è ä¸å¾ç´æ¥æéæ¥åééæåæåéå°ç任使åæä¾è ææå使ç¨è ææ¬ææ¥åé¡ä¼¼æåï¼ä¹ä¸å¾å¨æåæåå®ç¾©çå䏿åååå §æä¾é¡ä¼¼æåã 275æå使ç¨è ç¦æ¢çºä»»ä½å人æå°æ¥ç®çèç¨æè©¦åèç¨ééæåæåä»ç´¹ç任使åæä¾è æå ¶ä»æå使ç¨è ã 276æå使ç¨è å¿ é é¿å çºå¨ä»åä½¿ç¨æåæåæéä»ç´¹çµ¦ä»åç任使åæä¾è æå ¶ä»æå使ç¨è æä¾æåï¼æåä»åææ¬æåï¼ç¡è«æåçæ§è³ªå¦ä½ã 277æå使ç¨è ä¸å¾ç´æ¥æéæ¥èªªææå½±é¿å ¶ä»æå使ç¨è ææåæä¾è çµæ¢ææ¸å°ä»åå°æåæåç使ç¨ã 278æå使ç¨è å¿ é é¿å èªä½¿æé¼åµä»»ä½æåæä¾è æå ¶ä»æå使ç¨è å¨ç«¶çæåä¸æä¾æä½¿ç¨é¡ä¼¼æåã 279æå使ç¨è ä¸å¾å¹²æ¾ãç ´å£æè©¦åç ´å£æåæåèå ¶æåæä¾è ææå使ç¨è ä¹éä»»ä½å·²å»ºç«çéä¿ãåç´æå®æã 280æå使ç¨è ä¸å 許åå©ãé¼åµæä¿é²ä»»ä½æåæä¾è æå ¶ä»æå使ç¨è éåéäºæ¢æ¬¾ã 281 282䏿§è¦ 283 284æåçæåéµå®ææç¦æ¢å¨å°±æ¥ç¼ä½ä¸æ§è¦çè¯é¦ãå·åå°æ¹æ³å¾ãéå æ¬ä½ä¸éæ¼åºæ¼ç¨®æãèè²ãå®æãæ§å¥ãåç±ãå¹´é½¡ãæ®ç¾æä»»ä½å ¶ä»åæ³å¾ä¿è·çéå±¤çæ§è¦ãæå䏿¥åä»»ä½å 嫿§è¦æ§å好æéå¶çå §å®¹ãæåä¿çæ¬å©ï¼å¨ä¸äºå éç¥çæ æ³ä¸ï¼åªé¤æå確å®éåéäºåæ§è¦æ³å¾çä»»ä½å §å®¹ã 285 286éæ¼ä½¿ç¨æåçç¦ä»¤ 287 288æ¨è¢«ç¦æ¢å°å §å®¹æé ç®ä¸å³å°æåæåä¸ä¸åé©çé¡å¥æååï¼å¨ä»»ä½ååæå §å®¹å表ä¸é¡¯ç¤ºå人è¯çµ¡æç¤¾äº¤åªé«è©³æ ï¼éåæ³å¾ãç¬¬ä¸æ¹æ¬å©ãæåçå¸³æ¶æ¿çï¼ææ³å¾æ¢æ¬¾ä¸æ¦è¿°ç任使¢æ¬¾ï¼æçµçºæå仿¬¾ï¼é¤éæåæä¾è æä¾çæè¿°å¨éæåè°å¾ç¼çé大è®åï¼å¦æå卿顝çæçé¯èª¤ï¼æè å¦æç¡æ³æ ¸å¯¦æåæä¾è çèº«ä»½ï¼æªè½å±¥è¡å·²ä»æ¬¾çæåï¼é¤éæå使ç¨è å¤§å¹ åé¢åå®çæ¢æ¬¾ãæçµä»æ¬¾ãç¼çé大æçé¯èª¤ï¼æè ç¡æ³é©èæå使ç¨è çèº«ä»½ï¼æç¸±æå广 ¼æå¹²æ¾å ¶ä»ç¨æ¶çç¼ä½ï¼è¦é¿æç¯¡æ¹æåçæ¶è²»çµæ§ãè¨è²»éç¨ææä»è²»ç¨ï¼ç¼ä½èåã䏿ºç¢ºã誤å°ãèª¹è¬æä¸å·çå §å®¹ï¼å æ¬éæ¼ä»»ä½æå使ç¨è çå人詳æ ï¼å¯è½ç ´å£æåæè¦å饿è©åç³»çµ±å®æ´æ§çè¡çºï¼ä¾å¦æ¿«ç¨æè¦åé¥è³è¨æå°å ¶æç¨æ¼æåæåçé æèæ¯ä¹å¤ã 289 290妿æå使ç¨è éåäºèå ¶ç¼ä½ç¸éçä»»ä½è¦åï¼PetWell å¯å ¨æ¬é æ æ±ºå®æ¡åè¡åï¼å æ¬åæ¶ç¼ä½ãéå¶æå使ç¨è çå¸³æ¶æ¬éãæ«å帳æ¶ï¼æé使å使ç¨è ééæè¦åé¥ç²å¾ççæ ãééåæéäºæ¢æ¬¾ï¼æ¨æ¿è«¾ç¶è·æåæåä¸å §å®¹åäºåç宿´æ§ãPetWell å´æ ¼å·è¡éäºæåï¼ä¸¦ä¿çå¨èªçºå¿ è¦æä¿®æ¹ãæçµæåªé¤å §å®¹æå¸³æ¶çæ¬å©ã`},6:{title:"æäº¤å §å®¹ç使ç¨åæ¬å©",content:`ç¨æ¶å §å®¹ç鿩坿§ 291 292ééæäº¤ãè¨ç®¡ãå享åç¼ä½ç¨æ¶å §å®¹ï¼å¯è½å æ¬å½±çãåäººæªæ¡ãåªæ ãè«æ±ãæè¦åé¥åå ¶ä»å½¢å¼çéè¨ï¼ä¾ä½¿ç¨æåçæåï¼æ¨ç¢ºèªæ¨æäº¤çä»»ä½å §å®¹å¯è½å¯ä¾å ¶ä»è¨»åç¨æ¶ååï¼ä¸¦ä¸æåä¸ä¿è任使¤é¡å §å®¹çæ©å¯æ§ï¼ç¡è«å ¶æ¯å¦å·²ç¼ä½ã 293 294ééæäº¤å §å®¹ï¼æ¨åæå¨éå°æåéæ©å¯çåºç¤ä¸æä¾å®ãæ¨æäºæåèªç±ä½¿ç¨ãåç¼åå ¬éå±ç¤ºæ¤å §å®¹çæ¬éï¼ä½¿æåè½å¤ ææå°æä¾åå¢å¼·æåçæåãæ¤å §å®¹å¯è½æè¢«è¨ç½®çºå¯æå°ï¼ä¸¦å¯ä¾ææææ¬ååæåæåçç¨æ¶ä½¿ç¨ã 295 296 297ç¨æ¶å §å®¹è²¬ä»» 298 299æ¨å°æ¨æäº¤çå §å®¹ä»¥å卿åæåä¸ç¼ä½æåºçå®çå¾æè² å ¨é¨è²¬ä»»ãééæäº¤å §å®¹ï¼æ¨ç¢ºèªä¸¦ä¿èï¼ 300
301æ¨æææå·²ç²å¾å¿ è¦ç許å¯ãæ¬å©ãåæåæ¬éä¾ä½¿ç¨æ¤é¡å §å®¹ï¼ä¸¦ææ¬æå以æååéäºæ³å¾æ¢æ¬¾é æçæ¹å¼ä½¿ç¨å®ã 302æ¨å·²ç²å¾æäº¤å §å®¹ä¸æ¯åå¯èå¥åäººçæ¸é¢åæãå è²¬è²æå許å¯ï¼ä»¥ä½¿ç¨ä»åçå§åæèåï¼å¾èè½å¤ 以æååéäºæ³å¾æ¢æ¬¾é æçæ¹å¼å å«å使ç¨ä»åã 303æ¨å°æ¯ä»å æ¨å¨æå䏿ééæåç¼ä½çå §å®¹èæ¬ ä»»ä½äººçä»»ä½çç¨ ãè²»ç¨æå ¶ä»æ¬¾é ã 304 305å §å®¹æ¬å©å許å¯åè° 306 307æ¨ä¿çæ¨æäº¤çµ¦ PetWell çä»»ä½å §å®¹çæææ¬ãééæäº¤å §å®¹ï¼æ¨æäº PetWell ä¸é æ°¸ä¹ çãå ¨çæ§çãéç¨å®¶çãå çç¨ ç許å¯ï¼è©²è¨±å¯å¯è½ææ¬åè½è®ãæ¤è¨±å¯å 許æåå¨è PetWell çæååå ¶æ¥åæ´»åï¼å æ¬è·¨å種åªé«æ¨å»£åéæ°åç¼é¨åæå ¨é¨æååå ¶è¡çä½åï¼ç¸éçæ æ³ä¸ï¼ä½¿ç¨ãè¤è£½ãåç¼ãéæ°æ ¼å¼åãç¿»è¯ãåµå»ºè¡çä½åãå±ç¤ºåå·è¡æ¨çå §å®¹ãæ¤å¤ï¼æåæåçæ¯åç¨æ¶é½æç²å¾ä¸é éç¨å®¶è¨±å¯ï¼ééæåçæåå忍çå §å®¹ï¼ä¸¦å¨æåæåçåè½åéäºæ³å¾æ¢æ¬¾å è¨±çæ æ³ä¸ï¼ä½¿ç¨ãè¤è£½ãåç¼ãåµå»ºè¡çä½åãå±ç¤ºåå·è¡æ¨çå §å®¹ãç¶æ¨å¾æåçæåä¸åªé¤æ¨çå §å®¹æï¼æ¤è¨±å¯å³åçµæ¢ã 308 309æ¨ç¢ºèªæåæåç管çå¯è½æ¶åï¼ 310 311ééå種網絡å³è¼¸ã 312ä¿®æ¹æ¨çå §å®¹ä»¥ç¬¦å飿¥ç¶²çµ¡æè¨åçæè¡è¦æ±ã 313 314PetWell å¯è½æå¨ç¶²èªãç®éãé»éµåå ¶ä»ä¿é·ææä¸ä½¿ç¨æ¨çå §å®¹ãæ¨å¯ä»¥é¨æåªé¤æ¨çå §å®¹ãè¦åªé¤å §å®¹ï¼è«ééé»éµéç¥æåï¼é¤éå®å·²ä½çºæåæåçä¸é¨åèç¬¬ä¸æ¹å享ï¼å¦åæåå°åªé¤å®ã妿æ¨ä¸è¦æ±åªé¤è½ç¼çå §å®¹ï¼å°è¢«è¦çºåææåä¿çå®ã 315 316å §å®¹è²¬ä»»ååªé¤æ¬å© 317 318PetWell ä¸èªå¯ä»»ä½ç¨æ¶çæçå §å®¹æå ¶ä¸è¡¨éç任使è¦ãå»ºè°æå»ºè°ï¼ä¸¦æç¢ºå¦èªèæ¤é¡å §å®¹ç¸éçææè²¬ä»»ãPetWell ä¸å è¨±å¨æåçæåä¸é²è¡ä¾µç¯çæ¬æç¥èç¢æ¬çæ´»åï¼ä¸¦å°æ ¹ææåæ¢å®ç䏿¶ç¨åºåªé¤ä»»ä½è¢«èå ±ä¸¦æ ¸å¯¦çºä¾µæ¬çæ¸ææå §å®¹ãPetWell ä¿çæ¬å©ï¼å¨ä¸äºå éç¥çæ æ³ä¸åªé¤ä»»ä½æ¸ææå §å®¹ï¼ä¸¦å¯è½çµæ¢ä»»ä½è¢«ç¢ºå®çºéè¤ä¾µæ¬è çç¨æ¶çå忬éââéè¤ä¾µæ¬è å®ç¾©çºè¢«éç¥ä¾µæ¬æ´»åè¶ éå ©æ¬¡æè¢«åªé¤å §å®¹è¶ éå ©æ¬¡çç¨æ¶ãæ¤å¤ï¼PetWell ä¿çå ¨æ¬é æ æ±ºå®æäº¤çµ¦æåçææå §å®¹æ¯å¦åé©çæ¬å©ï¼å æ¬ä½ä¸éæ¼åªé¤å ·åç¯æ§ãä¸é æä»¥å ¶ä»æ¹å¼ä»¤äººåææéåæåæ¢æ¬¾çææã 319 320ä½¿ç¨æåçæåæï¼æ¨å¯è½æéå°ä¾èªä¸å便ºçå §å®¹ï¼éäºå §å®¹ä¸å PetWell æ§å¶ãæ¨å¯è½æç¼ç¾æäºå §å®¹å ·åç¯æ§ãæå®³ã䏿ºç¢ºæå ·æ¬ºé¨æ§ãééä½¿ç¨æåçæåï¼æ¨æ¾æ£å° PetWell éæ¼æ¤é¡å §å®¹ç任使³å¾æè¡¡å¹³æ³æ¬å©æè£ææªæ½ï¼ä¸¦åæå°±æ¨ä½¿ç¨çç¸éææç´¢è³ å° PetWell åå ¶éå±¬å ¬å¸é²è¡è³ åä¸¦ä½¿å ¶å åæå®³ã 321 322æ¨å°æ¨ééæåçæåç¼ä½ãå±ç¤ºæå³è¼¸çå §å®¹è² å ¨é¨è²¬ä»»ãPetWell å¯ä»¥å ¨æ¬é æ æ±ºå®ä¸ä¸æ¿æä»»ä½è²¬ä»»ï¼å¯©æ¥ååªé¤ä»»ä½é忬åè°æå¯è½æå®³æéæ³çå §å®¹ã 323 324建è°åæ¹é²ãæ¨ç¼é給 PetWell éæ¼ä¿®æ¹æå¢å¼·æåæåçä»»ä½å»ºè°ãè©è«æéè¨é½è¢«è¦çºéæ©å¯åéå°æçãPetWell å¯ä»¥èªç±å°å°æ¤é¡å»ºè°ä¸å å«ç任使³æ³ãæ¦å¿µãå°ææè¡ææè¡ç¨æ¼ä»»ä½ç®çï¼å æ¬ä½ä¸éæ¼éç¼åçé·å 嫿¤é¡è³è¨çç¢ååæåï¼èç¡é忍æä¾ä»»ä½è£åææ¸å±¬ãæ¨ç¢ºèª PetWell æ²æç¾©åæ¡ç¨ãå±ç¤ºãè¤è£½æåç¼ä»»ä½æ¤é¡æ³æ³ï¼æ¨ä¹ä¸è½è¦æ±æ¡åæ¤é¡è¡åã`},7:{title:"å¿ éçç¬¬ä¸æ¹é©èæå",content:`PetWell è´åæ¼çºæå使ç¨è åæåæä¾è ç¶æä¸åå®å ¨çç°å¢ãä½çºæ¤æ¿è«¾çä¸é¨åï¼æåå©ç¨å種å®å ¨æªæ½ï¼å æ¬èæ¯èª¿æ¥åå°ç §åå®¶æ¸æåº«ç身份é©èã妿æ¨å° PetWell é²è¡éäºæç´¢æå°ä¸èæï¼è«é¿å 註åçºæåæä¾è ã 325 326ééå¨ PetWell ä¸è¨»åï¼æ¨åæä½¿ç¨æ¨æä¾çè³è¨é²è¡èæ¯èª¿æ¥ãPetWell å¯è½æå¯©æ¥å¾ç¬¬ä¸æ¹é©èæåç²å¾ççµæ
326ï¼ä¸¦æ ¹æéäºç¼ç¾æ¡åé©ç¶çè¡åãæ¨ææ¬ PetWell æ ¸å¯¦æ¨æä¾ç詳æ çæºç¢ºæ§ï¼ä¸¦åæå°±éäºèª¿æ¥å¯è½å¼èµ·ç任使失æè²¬ä»»å° PetWell é²è¡è³ åã 327 328æå使ç¨è èªè¡è©ä¼°æåæä¾è é常éè¦ãè«æ³¨ææåèæ¯èª¿æ¥ç以ä¸éå¶ï¼ 329 330é¤éå¨éäºæ³å¾æ¢æ¬¾ä¸æç¢ºè²æï¼å¦å PetWell 䏿èªåå°ææç¨æ¶é²è¡èæ¯èª¿æ¥ã 331䏦鿿é¡åçè¨éé½å¯ä»¥è¢«ç¬¬ä¸æ¹èæ¯èª¿æ¥æ©æ§ååï¼æäºè¨éå¯è½ä¸æ¯ææ°çã 332å°å¹´è¨éã被é§åçæ¡ä»¶ãå¤åå®ç½ªå交ééè¦ï¼é¤é卿äºå¸æ³ç®¡è½å被æ¸é¡çºåäºç¯ç½ªï¼çè³è¨é常ä¸å å«å¨èæ¯èª¿æ¥å ±åä¸ã 333 334PetWell ä¿çæ ¹æç¬¬ä¸æ¹é©èæåçç¼ç¾çµæ¢æå¡è³æ ¼çæ¬å©ãè«è¨ä½ï¼æ¨æè²¬ä»»ç¢ºä¿å¾æåæåä¸ä½¿ç¨çä»»ä½è³è¨é½æ¯æºç¢ºåå¯é çã 335 336PetWell è´åæ¼çºæåæä¾è åæå使ç¨è ç¶æä¸åå®å ¨çç°å¢ãçºäºæ¯æé䏿¿è«¾ï¼æåæä¾ä¸ç³»åå¯é¸çé©èå·¥å ·ï¼å æ¬å§ååå°åé©èã社æå®å ¨è碼é©èã身份èãè·ç §åç¯ç½ªèæ¯èª¿æ¥ï¼ç¹å¥æ¯éå°æåæä¾è ãæåä½¿ç¨ Airwallex ä¾ä¿é²éäºé©èï¼ä½çºæå仿¬¾è§£æ±ºæ¹æ¡çä¸é¨åã 337 338æåæä¾è åæå使ç¨è å¯ä»¥é¸æä½¿ç¨æåæåæä¾çç¬¬ä¸æ¹é©èæåä¾é©èå種詳æ ï¼å¦å§åãå°åãåæ°èº«ä»½èè碼ãç¯ç½ªèæ¯åå°æ¥å·ç §æèãééä½¿ç¨æåçæåï¼æ¨ç¢ºèªæ¨ææ¨å®¶åºä¸çä»»ä½äººé½æ²ææ²å ¥æ¶åæ´åãèå¾ ã忽è¦ã欺è©ãçç«æä»»ä½å°ä»äººæ§æå¨è çç¯ç½ªçæ³å¾è¡åãæ¨åæ PetWell æ ¸å¯¦éäºè²æï¼ä¸¦çè§£ PetWell å¯ä»¥æ ¹æå ¶é æ æ¬æ ¹æç¼ç¾æ¡åé©ç¶çè¡åã 339 340使ç¨éé PetWell æä¾çç¬¬ä¸æ¹é©èæåå®å ¨ç±æ¨èªè¡æ±ºå®ãæ¨ç¢ºèªæä¾éäºæåæ¯çºäºæ¹ä¾¿ï¼PetWell 䏿§å¶æèªå¯é©èæåæå ¶æä¾çè³è¨çæºç¢ºæ§æå¯é æ§ãPetWell å¯è½æå¯©æ¥ä¾èªéäºç¬¬ä¸æ¹æåçæ¸æï¼ä¸¦å¯è½æ ¹æéäºè³è¨çµæ¢æ¨ç帳æ¶ã 341 342æ¨å¯ä»¥é¸æå¨æ¨ç PetWell åäººæªæ¡ä¸å ¬éç¬¬ä¸æ¹é©èæåççµæã妿æ¨é¸æå享éäºè³è¨ï¼è«æ³¨æå®å¯è½æå½±é¿å ¶ä»äººèç¨æ¨æåçæ±ºå®ãæ¨éåæå°±å ¬éæ¤é¡è©³æ å¯è½å¼èµ·çä»»ä½æå®³å° PetWell é²è¡è³ åä¸¦ä½¿å ¶å åæå®³ã`},8:{title:"éå é©èé¸é ",content:`PetWell è´åæ¼çºæåæä¾è åæå使ç¨è ç¶æä¸åå®å ¨çç°å¢ãçºäºæ¯æé䏿¿è«¾ï¼æåæä¾ä¸ç³»åå¯é¸çé©èå·¥å ·ï¼å æ¬å§ååå°åé©èã社æå®å ¨è碼é©èã身份èãè·ç §åç¯ç½ªèæ¯èª¿æ¥ã 343 344ç¹å¥æ¯éå°æåæä¾è ãæåä½¿ç¨ Airwallex ä¾ä¿é²éäºé©èï¼ä½çºæå仿¬¾è§£æ±ºæ¹æ¡çä¸é¨åã 345 346æåæä¾è åæå使ç¨è å¯ä»¥é¸æä½¿ç¨æåæåæä¾çç¬¬ä¸æ¹é©èæåä¾é©èå種詳æ ï¼å¦å§åãå°åãåæ°èº«ä»½èè碼ãç¯ç½ªèæ¯åå°æ¥å·ç §æèãééä½¿ç¨æåçæåï¼æ¨ç¢ºèªæ¨ææ¨å®¶åºä¸çä»»ä½äººé½æ²ææ²å ¥æ¶åæ´åãèå¾ ã忽è¦ã欺è©ãçç«æä»»ä½å°ä»äººæ§æå¨è çç¯ç½ªçæ³å¾è¡åãæ¨åæ PetWell æ ¸å¯¦éäºè²æï¼ä¸¦çè§£ PetWell å¯ä»¥æ ¹æå ¶é æ æ¬æ ¹æç¼ç¾æ¡åé©ç¶çè¡åã 347 348使ç¨éé PetWell æä¾çç¬¬ä¸æ¹é©èæåå®å ¨ç±æ¨èªè¡æ±ºå®ãæ¨ç¢ºèªæä¾éäºæåæ¯çºäºæ¹ä¾¿ï¼PetWell 䏿§å¶æèªå¯é©èæåæå ¶æä¾çè³è¨çæºç¢ºæ§æå¯é æ§ãPetWell å¯è½æå¯©æ¥ä¾èªéäºç¬¬ä¸æ¹æåçæ¸æï¼ä¸¦å¯è½æ ¹æéäºè³è¨çµæ¢æ¨ç帳æ¶ãæ¨å¯ä»¥é¸æå¨æ¨ç PetWell åäººæªæ¡ä¸å ¬éç¬¬ä¸æ¹é©èæåççµæã妿æ¨é¸æå享éäºè³è¨ï¼è«æ³¨æå®å¯è½æå½±é¿å ¶ä»äººèç¨æ¨æåçæ±ºå®ãæ¨éåæå°±å ¬éæ¤é¡è©³æ å¯è½å¼èµ·çä»»ä½æå®³å° PetWell é²è¡è³ åä¸¦ä½¿å ¶å åæå®³ã 349 350PetWell éç¥æ¨ï¼å¨æ¨ä½¿ç¨ç¬¬ä¸æ¹é©èæåæï¼æåå¯è½æå¾æ¶è²»è å ±åæ©æ§ç²åæ¶è²»è å ±åãéäºæ¶è²»è å ±åå¯è½å å«éæ¼æ¨çåæ ¼ãè²è½ãå人ç¹å¾µåçæ´»æ¹å¼ç詳細è³è¨ï¼éå¯è½å æ¬æ¶è²»è ä¿¡ç¨ãç¯ç½ªè¨éãå·¥äººè³ åãé§é§è¨éãå°±æ¥æ·å²ãæå½¹ãæ°äºè¨éåæè²èæ¯ã 351 352ééé¸æä½¿ç¨ãååæééæåçæåå享ä¾èªç¬¬ä¸æ¹é©èæåçè³è¨ï¼æ¨ç¢ºèªæ¨å°éµå®ææç¸éçæ¶è²»è å ±åæ³å¾ã妿æ¨é¸æé鿬æåæå¨å¤é¨èå ¶ä»æ¹å享éäºè³è¨ï¼æ¨åæå¨æ³å¾ç¯åå §è¡äºï¼ä¸¦æ¿è«¾å°±æ¤é¡è¡çºå¼èµ·ç任使失ã責任ãæå®³æè²»ç¨ï¼ç¡è«åå çºä½ï¼å° PetWell é²è¡è³ å並å é¤å ¶è²¬ä»»ãPetWell æç¢ºå¦èªå°ä½¿ç¨ç¬¬ä¸æ¹é©èæåæä¾çè³è¨å¯è½å°è´çæå¤±æ¿æä»»ä½è²¬ä»»ã`}
352,9:{title:"éµå®å ¬å¹³ä¿¡ç¨å ±åæ³",content:`PetWell éç¥æ¨ï¼å¨æ¨ä½¿ç¨ç¬¬ä¸æ¹é©èæåæï¼æåå¯è½æå¾æ¶è²»è å ±åæ©æ§ç²åæ¶è²»è å ±åãéäºæ¶è²»è å ±åå¯è½å å«éæ¼æ¨çåæ ¼ãè²è½ãå人ç¹å¾µåçæ´»æ¹å¼ç詳細è³è¨ï¼éå¯è½å æ¬æ¶è²»è ä¿¡ç¨ãç¯ç½ªè¨éãå·¥äººè³ åãé§é§è¨éãå°±æ¥æ·å²ãæå½¹ãæ°äºè¨éåæè²èæ¯ã 353 354ééé¸æä½¿ç¨ãååæééæåçæåå享ä¾èªç¬¬ä¸æ¹é©èæåçè³è¨ï¼æ¨ç¢ºèªæ¨å°éµå®ææç¸éçæ¶è²»è å ±åæ³å¾ã妿æ¨é¸æé鿬æåæå¨å¤é¨èå ¶ä»æ¹å享éäºè³è¨ï¼æ¨åæå¨æ³å¾ç¯åå §è¡äºï¼ä¸¦æ¿è«¾å°±æ¤é¡è¡çºå¼èµ·ç任使失ã責任ãæå®³æè²»ç¨ï¼ç¡è«åå çºä½ï¼å° PetWell é²è¡è³ å並å é¤å ¶è²¬ä»»ãPetWell æç¢ºå¦èªå°ä½¿ç¨ç¬¬ä¸æ¹é©èæåæä¾çè³è¨å¯è½å°è´çæå¤±æ¿æä»»ä½è²¬ä»»ã 355 356PetWell 已實æ½èçæ¶å«å實éçæ¬å忍侵æ¬çç¨åºãå¦ææ¨æ·çæ¨çç¥èç¢æ¬è¢«è¤è£½ä¸¦ä»¥æ§æä¾µæ¬çæ¹å¼å¨æåçæå䏿ä¾ï¼è«å [email protected] æä¾ä»¥ä¸è©³æ ï¼ 357 358æ¨è²ç¨±è¢«ä¾µæ¬çç¥èç¢æ¬å表ã妿æ¨çç´¢è³ æ¶åæåç¶²ç«ä¸çå¤åä½åï¼è«æä¾åå½±é¿ä½åç代表æ§å表ã 359æ¨è²ç¨±ä¾µæ¬çææå¨æåæåä¸çæºç¢ºä½ç½®æè¿°ï¼è¶³ä»¥è® PetWell æ¾å°è©²ææã 360ä¸ä»½è²æï¼è¡¨ææ¨çèª å°ç¸ä¿¡æçè°çä½¿ç¨æªç¶ç¥èç¢æ¬ææè ãå ¶ä»£çäººææ³å¾ææ¬ã 361è¶³å¤ çè³è¨è®æåè½å¤ è¯çµ¡æ¨ï¼å æ¬æ¨çå°åãé»è©±è碼ï¼ä»¥åï¼å¦ææï¼é»éµå°åã 362ç²ææ¬ä»£è¡¨æ¶å«è¢«ä¾µæ¬çå°ææ¬å©ææè è¡äºç人ç坦髿é»åç°½åã 363ä¸ä»½æ ¹æå½èèç½°è¦å®ä½åºçè²æï¼è¡¨æéç¥ä¸æä¾çè³è¨æ¯æºç¢ºçï¼ä¸¦ä¸æ¨æ¯ç¥èç¢æ¬ææè æç²ææ¬ä»£è¡¨å ¶æ¬å©æ¶å«è¢«ä¾µæ¬çç¥èç¢æ¬ææè è¡äºã 364 365æ¤éç¥è¢«ç¨±çºãéç¥ãã 366 367è«æ³¨æï¼çºäºä½¿éç¥ææï¼æ¨å¿ é éµå®æææ¦è¿°çè¦æ±ãPetWell æ¿è«¾æ ¹æçæ¬æ³è¦å®å¾æåçæåä¸åªé¤ä»»ä½ä¾µæ¬å §å®¹ãç¶èï¼æ¨æè²¬ä»»ç¢ºä¿æ¨çéç¥ç¬¦åæææ³å¾æ¨æºã 368 369è«æ³¨æï¼æ ¹æçæ¬æ³ï¼ä»»ä½æ æå°çæ¬ä¾µæ¬ä½åºèåè²æç人å¯è½æé¢è¨æ³å¾è²¬ä»»ãåªæç¥èç¢æ¬æ¬å©ææäººææè³æ ¼éé PetWell æ¢å®çèå ±ç¨åºèå ±ä¾µæ¬ææã妿æ¨ä¸æ¯æ¬å©ææäººï¼æ¨æè©²å»ºè°ææè 妿ä»åå¸æè¿½ç©¶æ¤äºï¼è«è¯çµ¡æåã`},10:{title:"èççæ¬ä¾µæ¬ç´¢è³ çç¨åº",content:`PetWell 已實æ½èçæ¶å«å實éçæ¬å忍侵æ¬çç¨åºãå¦ææ¨æ·çæ¨çç¥èç¢æ¬è¢«è¤è£½ä¸¦ä»¥æ§æä¾µæ¬çæ¹å¼å¨æåçæå䏿ä¾ï¼è«å [email protected] æä¾ä»¥ä¸è©³æ ï¼ 370 371æ¨è²ç¨±è¢«ä¾µæ¬çç¥èç¢æ¬å表ã妿æ¨çç´¢è³ æ¶åæåç¶²ç«ä¸çå¤åä½åï¼è«æä¾åå½±é¿ä½åç代表æ§å表ã 372æ¨è²ç¨±ä¾µæ¬çææå¨æåæåä¸çæºç¢ºä½ç½®æè¿°ï¼è¶³ä»¥è® PetWell æ¾å°è©²ææã 373ä¸ä»½è²æï¼è¡¨ææ¨çèª å°ç¸ä¿¡æçè°çä½¿ç¨æªç¶ç¥èç¢æ¬ææè ãå ¶ä»£çäººææ³å¾ææ¬ã 374è¶³å¤ çè³è¨è®æåè½å¤ è¯çµ¡æ¨ï¼å æ¬æ¨çå°åãé»è©±è碼ï¼ä»¥åï¼å¦ææï¼é»éµå°åã 375ç²ææ¬ä»£è¡¨æ¶å«è¢«ä¾µæ¬çå°ææ¬å©ææè è¡äºç人ç坦髿é»åç°½åã 376ä¸ä»½æ ¹æå½èèç½°è¦å®ä½åºçè²æï¼è¡¨æéç¥ä¸æä¾çè³è¨æ¯æºç¢ºçï¼ä¸¦ä¸æ¨æ¯ç¥èç¢æ¬ææè æç²ææ¬ä»£è¡¨å ¶æ¬å©æ¶å«è¢«ä¾µæ¬çç¥èç¢æ¬ææè è¡äºã 377 378æ¤éç¥è¢«ç¨±çºãéç¥ãã 379 380è«æ³¨æï¼çºäºä½¿éç¥ææï¼æ¨å¿ é éµå®æææ¦è¿°çè¦æ±ãPetWell æ¿è«¾æ ¹æçæ¬æ³è¦å®å¾æåçæåä¸åªé¤ä»»ä½ä¾µæ¬å §å®¹ãç¶èï¼æ¨æè²¬ä»»ç¢ºä¿æ¨çéç¥ç¬¦åæææ³å¾æ¨æºã 381 382è«æ³¨æï¼æ ¹æçæ¬æ³ï¼ä»»ä½æ æå°çæ¬ä¾µæ¬ä½åºèåè²æç人å¯è½æé¢è¨æ³å¾è²¬ä»»ãåªæç¥èç¢æ¬æ¬å©ææäººææè³æ ¼éé PetWell æ¢å®çèå ±ç¨åºèå ±ä¾µæ¬ææã妿æ¨ä¸æ¯æ¬å©ææäººï¼æ¨æè©²å»ºè°ææè 妿ä»åå¸æè¿½ç©¶æ¤äºï¼è«è¯çµ¡æåã 383 384æåçè®æ´ 385 386PetWell ä¿çé¨ææ«æææ°¸ä¹ ä¿®æ¹æä¸æ¢æåï¼æå ¶ä»»ä½é¨åï¼çæ¬å©ãPetWell å¯ä»¥å ¨æ¬é æ æ±ºå®å¨æææ²æéç¥çæ æ³ä¸é樣åãæ¨åæ PetWell 䏿尿¨æä»»ä½ç¬¬ä¸æ¹å æåçä»»ä½è®æ´ãæ«åæçµæ¢èæ¿æè²¬ä
386»»ã 387 388æåçµæ¢æ¿ç 389 390PetBacker ä¿ç鍿åä¸æä¿®æ¹æä¸æ¢å¹³å°ï¼æå ¶ä»»ä½é¨åï¼çæ¬å©ï¼ç¡è«æ¯æ«æéæ¯æ°¸ä¹ ï¼ç¡è«æ¯å¦æéç¥ï¼ä¸¦ç±å ¶å ¨æ¬é æ æ±ºå®ãæ¨åæ PetBacker 䏿尿¨æä»»ä½ç¬¬ä¸æ¹å PetBacker æåçä»»ä½ä¿®æ¹ãæ«åæä¸æ¢èæ¿æè²¬ä»»ã 391PetWell ä¿çå ¶å ¨æ¬é æ æ±ºå®çæ¬å©ï¼å¨ä¸äºå éç¥çæ æ³ä¸çµæ¢ææ«åæ¨å°æåæåçååãåç¨æ¨ç帳æ¶ãå°éæ¨çé»éµæ IP ä½åï¼æä»¥å ¶ä»æ¹å¼éå¶æ¨å°æåæåçååãPetWell å¯ä»¥åºæ¼èªçºåé©çä»»ä½åå æ¡åæ¤è¡åï¼å æ¬ä½ä¸éæ¼éåæåçæ³å¾æ¢æ¬¾ã帳æ¶ä¸æ´»èºï¼æä»»ä½è¢«èªçºä¾µç¯æåæåéä½æä½¿ç¨çè¡çºãæ¤å¤ï¼å¦æ PetWell èªçºæ¨æäº¤çä»»ä½å §å®¹éåäºæåçæ¿çï¼å¯è½æå°å ¶åªé¤ãéç¨®çµæ¢ææ«åå¯è½å¨ä»»ä½æåç¼çï¼æä¸å¦è¡éç¥ï¼ä»¥ç¢ºä¿æåæåç宿´æ§åæ£å¸¸éä½ã 392 393 394æ¨ææ¬é¨æåæ¢ä½¿ç¨æåçæåãè¦åæ¶æ¨ç帳æ¶ï¼åªéè½å°æ¨å¸³æ¶è¨å®ä¸ãåäººæªæ¡ > 幫å©ä¸å¿ãä¸çãåç¨å¸³æ¶ãé¸é ãéå¯ä»¥å¨æææ²æç¹å®åå çæ æ³ä¸å®æã 395卿¨ç帳æ¶çµæ¢å¾ï¼æ¨ç«å³å¤±å»å°æåçææå忬é以å任使ªä»çæ¬¾é ææ¬å©ï¼å æ¬ä½ä¸éæ¼æ¨è¦ææ£ãçéæçåµãçµæ¢æ¯ç±æ¼æ¨æªè½éµå®æ³å¾æ¢æ¬¾ãç¶æç©æ¥µåèæå¦¥åç®¡çæ¨ç帳æ¶ã妿æ¨ç帳æ¶è¢«çµæ¢ï¼æ¨å°å¤±å»å°ææå¸³æ¶æ¸æçå忬éï¼å管æ®çæ¸æå¯è½ä¿ç卿åç系統ä¸ã 396 397妿æ¨ç帳æ¶è¢«çµæ¢ï¼æ¨å¿ é ç«å³åªé¤æ¨ææçæææ¸æå¯æ¬ã忍åä»»ä½èæåæåç¸éçå §å®¹ãæåå°æ¨å忬éçµæ¢å¾ç任使失ææå®³æ¦ä¸è² 責ï¼ä¸¦ä¿çå°å¾æ¨ä½¿ç¨æå䏿¶éçæ¸æç¨æ¼å §é¨ç®ççæ¬å©ãæäºæåéæ¼æ¨æ¸æçææè¨±å¯å°ç¹¼çºææä»¥ç¨æ¼éäºç®çã 398 399妿æ¨å¨è¨»åæéæä¾äºä¸åææçé»éµå°åï¼æ¨å°æ¶å°é»éµéç¥ï¼é¤éæ¨ç使ç¨ä¹å已被æåçµæ¢æåæ¶ï¼é使å¾é²ä¸æ¥çéç¥è®å¾ä¸å¿ è¦ã 400 401å³ä½¿å¨æ¨çå¸³æ¶ææåè¢«çµæ¢å¾ï¼æåæ³å¾æ¢æ¬¾çæäºé¨åå°ç¹¼çºé©ç¨ãæ¨ééè¦å°±å æ¨çæåçµæ¢èå¼èµ·çä»»ä½ç´¢è³ æè¦æ±ï¼å æ¬æ³å¾è²»ç¨åææ¬ï¼ï¼å°æåå ¬å¸åå ¶éå±¬å ¬å¸é²è¡è³ åä¸¦ä½¿å ¶å åæå®³ã`},11:{title:"æåçä¿®æ¹åçµæ¢",content:`æåçè®æ´ 402 403PetWell ä¿çé¨ææ«æææ°¸ä¹ ä¿®æ¹æä¸æ¢æåï¼æå ¶ä»»ä½é¨åï¼çæ¬å©ãPetWell å¯ä»¥å ¨æ¬é æ æ±ºå®å¨æææ²æéç¥çæ æ³ä¸é樣åãæ¨åæ PetWell 䏿尿¨æä»»ä½ç¬¬ä¸æ¹å æåçä»»ä½è®æ´ãæ«åæçµæ¢èæ¿æè²¬ä»»ã 404 405æåçµæ¢æ¿ç 406 407PetBacker ä¿ç鍿åä¸æä¿®æ¹æä¸æ¢å¹³å°ï¼æå ¶ä»»ä½é¨åï¼çæ¬å©ï¼ç¡è«æ¯æ«æéæ¯æ°¸ä¹ ï¼ç¡è«æ¯å¦æéç¥ï¼ä¸¦ç±å ¶å ¨æ¬é æ æ±ºå®ãæ¨åæ PetBacker 䏿尿¨æä»»ä½ç¬¬ä¸æ¹å PetBacker æåçä»»ä½ä¿®æ¹ãæ«åæä¸æ¢èæ¿æè²¬ä»»ã 408PetWell ä¿çå ¶å ¨æ¬é æ æ±ºå®çæ¬å©ï¼å¨ä¸äºå éç¥çæ æ³ä¸çµæ¢ææ«åæ¨å°æåæåçååãåç¨æ¨ç帳æ¶ãå°éæ¨çé»éµæ IP ä½åï¼æä»¥å ¶ä»æ¹å¼éå¶æ¨å°æåæåçååãPetWell å¯ä»¥åºæ¼èªçºåé©çä»»ä½åå æ¡åæ¤è¡åï¼å æ¬ä½ä¸éæ¼éåæåçæ³å¾æ¢æ¬¾ã帳æ¶ä¸æ´»èºï¼æä»»ä½è¢«èªçºä¾µç¯æåæåéä½æä½¿ç¨çè¡çºãæ¤å¤ï¼å¦æ PetWell èªçºæ¨æäº¤çä»»ä½å §å®¹éåäºæåçæ¿çï¼å¯è½æå°å ¶åªé¤ãéç¨®çµæ¢ææ«åå¯è½å¨ä»»ä½æåç¼çï¼æä¸å¦è¡éç¥ï¼ä»¥ç¢ºä¿æåæåç宿´æ§åæ£å¸¸éä½ã 409 410 411æ¨ææ¬é¨æåæ¢ä½¿ç¨æåçæåãè¦åæ¶æ¨ç帳æ¶ï¼åªéè½å°æ¨å¸³æ¶è¨å®ä¸ãåäººæªæ¡ > 幫å©ä¸å¿ãä¸çãåç¨å¸³æ¶ãé¸é ãéå¯ä»¥å¨æææ²æç¹å®åå çæ æ³ä¸å®æã 412卿¨ç帳æ¶çµæ¢å¾ï¼æ¨ç«å³å¤±å»å°æåçææå忬é以å任使ªä»çæ¬¾é ææ¬å©ï¼å æ¬ä½ä¸éæ¼æ¨è¦ææ£ãçéæçåµãçµæ¢æ¯ç±æ¼æ¨æªè½éµå®æ³å¾æ¢æ¬¾ãç¶æç©æ¥µåèæå¦¥åç®¡çæ¨ç帳æ¶ã
412妿æ¨ç帳æ¶è¢«çµæ¢ï¼æ¨å°å¤±å»å°ææå¸³æ¶æ¸æçå忬éï¼å管æ®çæ¸æå¯è½ä¿ç卿åç系統ä¸ã 413 414妿æ¨ç帳æ¶è¢«çµæ¢ï¼æ¨å¿ é ç«å³åªé¤æ¨ææçæææ¸æå¯æ¬ã忍åä»»ä½èæåæåç¸éçå §å®¹ãæåå°æ¨å忬éçµæ¢å¾ç任使失ææå®³æ¦ä¸è² 責ï¼ä¸¦ä¿çå°å¾æ¨ä½¿ç¨æå䏿¶éçæ¸æç¨æ¼å §é¨ç®ççæ¬å©ãæäºæåéæ¼æ¨æ¸æçææè¨±å¯å°ç¹¼çºææä»¥ç¨æ¼éäºç®çã 415 416妿æ¨å¨è¨»åæéæä¾äºä¸åææçé»éµå°åï¼æ¨å°æ¶å°é»éµéç¥ï¼é¤éæ¨ç使ç¨ä¹å已被æåçµæ¢æåæ¶ï¼é使å¾é²ä¸æ¥çéç¥è®å¾ä¸å¿ è¦ã 417 418å³ä½¿å¨æ¨çå¸³æ¶ææåè¢«çµæ¢å¾ï¼æåæ³å¾æ¢æ¬¾çæäºé¨åå°ç¹¼çºé©ç¨ãæ¨ééè¦å°±å æ¨çæåçµæ¢èå¼èµ·çä»»ä½ç´¢è³ æè¦æ±ï¼å æ¬æ³å¾è²»ç¨åææ¬ï¼ï¼å°æåå ¬å¸åå ¶éå±¬å ¬å¸é²è¡è³ åä¸¦ä½¿å ¶å åæå®³ã`},12:{title:"ç¥èç¢æ¬æææ¬",content:`PetWell ä¿çæåæåä¸å §å®¹çæææ¬å©ï¼ç¨æ¶ä¸å³çå §å®¹é¤å¤ãéå æ¬ä½ä¸éæ¼æåãè»ä»¶ãè ³æ¬ãåå½¢ãç §çãè²é³ã鳿¨ãå½±çåäºååè½ï¼ãå §å®¹ãï¼ï¼ä»¥å忍ãæåæ¨è¨åæ¨èªï¼ãæ¨è¨ãï¼ãéäºåç¶å°ååéçæ¬åç¥èç¢æ¬æ³ä¿è·ãæåæåä¸å±¬æ¼å ¶ä»æ¹çæ¨è¨åå稱ä»çºå ¶åèªææè ç財ç¢ã 419 420æåæå䏿ä¾çå §å®¹å 便¨åèåå人使ç¨ãæªç¶åæ³ææè æç¢ºäºå æ¸é¢åæï¼ä¸å¾å°å ¶ç¨æ¼ãè¤è£½ãé製ãåç¼ãå³è¼¸ã廣æãå±ç¤ºãåºå®ãææ¬æä»¥å ¶ä»æ¹å¼ç¨æ¼ä»»ä½å ¶ä»ç®çãPetWell ä¿çæææªæç¢ºæäºç¨æ¶çæ¬å©ãæªç¶é©ç¶è¨±å¯ï¼ç¦æ¢æ¨ä½¿ç¨ãè¤è£½æåç¼ä»»ä½å §å®¹ï¼ç¹å¥æ¯ç¨æ¼åæ¥ç®çã妿æ¨ä¸è¼æåå°ä»»ä½å §å®¹ä¾å人使ç¨ï¼æ¨å¿ é ä¿çææçæ¬åå°æè²æãæ¤å¤ï¼æ¨å¿ é å°éæåçå®å ¨åè½ï¼ä¸¦é¿å 任使è¦é¿æåç¨å®å ¨æªæ½çè¡çºï¼æå 許æåå©ä»»ä½æªç¶ææ¬ä½¿ç¨æè¤è£½å §å®¹çè¡çºï¼æå¼·å¶éå¶ä½¿ç¨æåçæååå ¶ä¸å §å®¹çè¡çºã 421 422PetWell ä¿çå ¶æ¸æååæ¨çæææ¬å©ï¼åå種ç¥èç¢æ¬æ³ä¿è·ãæåæäºæ¨æéçã坿¤é·çãä¸å¯è½è®çãä¸å¯è½ææ¬ç許å¯ï¼å ä¾å人å¨åèæåæåæä½¿ç¨ PetWell æ¸æï¼ä¸å æ
422¬ä»»ä½è»ä»¶æºä»£ç¢¼ï¼ãæ¨ä¸å¾è¤è£½ãä¿®æ¹ãç¼ä½ãå³è¼¸ãåç¼ãå·è¡ãå±ç¤ºæåºå® PetWell æææç±å ¶ä»ç¨æ¶æè¨±å¯äººæä¾ç任使¸æã 423 424éç¶ PetWell å¯è½å è¨±ä½¿ç¨æäºåè½ï¼å¦å¯åµå ¥ææ¾å¨ï¼å°æææ´åå°æ¨çå人ãéåæ¥ç¶²ç«ä¸ï¼ä½ä¸å¾å æ¬ç´æ¥æ¨å»£æé£çµå°æåæä¾è çå人æ¥åæ¸ éææä¾é¡ä¼¼æåçå¤é¨å¹³å°ãä»»ä½ä½¿ç¨ PetWell å¯åµå ¥ææ¾å¨çè¡çºé½å¿ é å å«è¿åæåæåçé£çµï¼ä»¥ç¢ºèªå §å®¹ç便ºãæåä¿ç鍿忢任使ååè½çæ¬å©ï¼æä¸å¦è¡éç¥ã`},13:{title:"廣ååä¿é·",content:"PetWell æä¾çæåå¯è½é¨åééå»£åæ¶å ¥æä¾è³éãå æ¤ï¼PetWell å¯è½æå±ç¤ºå»£ååä¿é·ãæåä¸å»£åçå½¢å¼ãé »çåç¯åå¯è½æç¼çè®åã廣åçåå¨ä¸¦ä¸æå³è PetWell èªå¯æå»£åçç¢åææåãæ¨ç¢ºèª PetWell å°æ¨å èæåä¸ç廣åäºåæå ¶åå¨èéåç任使失ææå®³æ¦ä¸è² 責ã"},14:{title:"å¤é¨é£çµãè¡¨æ ¼åè¯çµ¡è碼",content:`æåå¯è½å 嫿åç¬¬ä¸æ¹ç¶²ç«åè³æºçé£çµï¼ä¾å¦ç¤¾äº¤åªé«å¹³å°åå¤é¨ç¶²ç«ï¼å æ¬ç¸é«è¨ºæç¶²é ãæ¨å¯ä»¥é¸æä½¿ç¨æ¨å¨éäºç¬¬ä¸æ¹ç¶²ç«ç帳æ¶ç»å ¥æåï¼èå®åäºåï¼é²è¡äº¤æï¼ä¸¦èª¿æ´æ¨çç§é±è¨å®ä»¥èéäºç¶²ç«çè¯çµ¡äººå享æ¨å¨æåä¸çæ´»åãPetWell 䏿§å¶éäºç¬¬ä¸æ¹ç¶²ç«åè³æºï¼å æ¤å°å ¶å¯ç¨æ§ä¸æ¿æè²¬ä»»ãPetWell ä¸èªå¯ä¸ä¸å°æ¤é¡ç¶²ç«æè³æºä¸æå¯å¾å ¶ç²å¾çä»»ä½å §å®¹ã廣åãç¢åææåè² è²¬ã 425 426æåä»»ä½ç¬¬ä¸æ¹ç¶²ç«çé£çµä¸¦ä¸æ§æå°éäºç¶²ç«æééå®åæä¾çä»»ä½ç¢åææåçèªå¯ãPetWell å°å ä½¿ç¨æä¾è³´éééäºç¶²ç«æè³æºç²å¾çä»»ä½ç¬¬ä¸æ¹å §å®¹ãååææåèé æç任使害ææå¤±æ¦ä¸è² 責ãç¬¬ä¸æ¹ç¶²ç«å¯è½å¨è PetWell ä¸åçç§é±æ¿çãæ¢æ¬¾åç´°åååæ¥æ £ä¾ä¸éä½ãææï¼æ¨å¯è½çèµ·ä¾ä»å¨è PetWell äºåï¼ä½å¯¦é䏿¨å¯è½å·²è¢«éå®åå°ç¬¬ä¸æ¹ç¶²ç«ãå¨éç¨®æ æ³ä¸ï¼é©ç¨ç¬¬ä¸æ¹çæ¢æ¬¾åç´°ååç§é±æ¿çã 427 428æ¨èééæåæ¾å°çä»»ä½ç¬¬ä¸æ¹çäºåå交æå 卿¨åç¬¬ä¸æ¹ä¹éé²è¡ãPetWell ä¸åèéäºäºåæäº¤æã妿æ¨å°ç¬¬ä¸æ¹æä¾çæææä»»ä½æè¨´ãçæ ®æåé¡ï¼æ¨æè©²ç´æ¥è¯çµ¡ç¬¬ä¸æ¹ã 429 430ç¡ç¬¬ä¸æ¹åç人 431 432æ¨åæï¼é¤ééäºæ³å¾æ¢æ¬¾ä¸å¦ææç¢ºè¦å®ï¼å¦åéäºæ³å¾æ¢æ¬¾æ²æç¬¬ä¸æ¹åç人ã`},15:{title:"å è²¬è²æ",content:`æ¨ç¢ºèªä¸¦åææ¨ä½¿ç¨æåç風éªç±æ¨èªè¡æ¿æãPetWell åå ¶é«ç´è·å¡ãè£äºãå¡å·¥ãéå±¬å ¬å¸å代ç人å¦èªææä»»ä½å½¢å¼çä¿èï¼ç¡è«æ¯æç¤ºéæ¯æç¤ºãéå æ¬èééæåæä¾çä»»ä½è³è¨ãæ¸ææææçè³ªç´ ãé©ç¨æ§ãç實æ§ãæºç¢ºæ§æå®æ´æ§ç¸éçä»»ä½ä¿èãæååæä¾çæææ¸æãææåå §å®¹åæãç¾çãããå¯ç¨ãåã忍£ãçåºç¤æä¾çµ¦æ¨ï¼ä¸ä½ä»»ä½é©é·æ§ãç¹å®ç¨éçé©ç¨æ§æä¸ä¾µç¯ç¬¬ä¸æ¹æ¬å©çä¿èã 433 434PetWell ä¸ä¿èæ²æé¯èª¤ã䏿ºç¢ºï¼æå²åå人å財åè³è¨ç伺æå¨çå®å ¨æ§ãPetWell ä¹ä¸å°ç¬¬ä¸æ¹ééæåå³è¼¸çä»»ä½é¯èª¤ãç æ¯æå ¶ä»æå®³çµä»¶è² 責ãæåä¸èªå¯ææ¿æç¬¬ä¸æ¹ééæåæä»»ä½è¶ é£çµç¶²ç«å»£åçä»»ä½ç¢åææåç責任ã 435 436æ¨èå ¶ä»æå使ç¨è ææåæä¾è çäºåå交æå®å ¨ç±æ¨æ¿æé¢¨éªãPetWell ä¸å°æåæä¾è æç¨æ¶é²è¡èæ¯èª¿æ¥ãæåä»¥åºæ¼è²è½ç系統éä½ï¼é¼åµæ¨å¨ä½åºæ±ºå®æèæ ®å ¶ä»ç¨æ¶çæè¦åé¥åç¬¬ä¸æ¹æ¨è¦ã 437 438æææåå卿²æ PetWell ä¿èçæ æ³ä¸æä¾ãæåç¹å¥å¦èªä»»ä½éæ¼æææ¬ãé©é·æ§ãç¹å®ç¨éçé©ç¨æ§åä¸ä¾µæ¬çæç¤ºä¿èãæäºå¸æ³ç®¡è½åä¸å 許å é¤æç¤ºä¿èï¼å æ¤ä¸è¿°å è²¬è²æå¯è½ä¸é©ç¨æ¼æ¨ãæ¨éå¯è½ææå 叿³ç®¡è½åèç°çå ¶ä»åæ³æ¬å©ã`},16:{title:"責任éå¶",content:`PetWell åå ¶éå±¬å ¬å¸ï¼å æ¬é«ç´è·å¡ãè£äºãå¡å·¥ã代ç人ã繼任è ååè®äººï¼å°å æ¨ä½¿ç¨æåçæåææå䏿ä¾çä»»ä½å §å®¹èå¼èµ·çä»»ä½ç´æ¥ã鿥ãé帶ãç¹æ®ãæ²ç½°æ§æå¾ææ§æå®³æ¦ä¸è² 責ãéå æ¬å 以ä¸åå å¼èµ·çæå®³ï¼(i) ååæä½¿ç¨æåï¼ç¡è«æ¯ééæå鿝ç¨ç«å½¢ææååè°ï¼(ii) ä»»ä½å §å®¹çé¯èª¤æä¸æºç¢ºï¼(iii) æªç¶ææ¬ååå®å ¨ä¼ºæå¨æå ¶ä¸å²åçå人å財åè³è¨ï¼(iv) ä»»ä½ç¬¬ä¸æ¹ééæåå³è¼¸çä»»ä½é¯èª¤ãç æ¯æé¡ä¼¼åé¡ï¼(v) å³è¼¸å°æå¾æåå³è¼¸ç䏿·æåæ¢ï¼(vi) ä»»ä½å §å®¹çé¯èª¤æéºæ¼ï¼(vii) ååæåæéæä¹å¾çä»»ä½çè°ï¼æç¨æ¶ä¹éç¼ççä»»ä½å ¶ä»çè°ï¼(viii) ä»»ä½ç¬¬ä¸æ¹çä»»ä½å ·åç¯æ§ãéæ³æèª¹è¬æ§è¡çºï¼æ (ix) ä»»ä½ä½¿ç¨ééæåç¼ä½ãé»éµãå³è¼¸æä»¥å ¶ä»æ¹å¼æä¾çå §å®¹ãå³ä½¿ PetWell 已被åç¥ç¼çæ¤é¡æå®³çå¯è½æ§ï¼ä¸¦ä¸åç®¡ä»»ä½æéè£ææªæ½æªè½éå°å ¶åºæ¬ç®çï¼éäºéå¶ä»ç¶é©ç¨ã 439 440æ¤å¤ï¼PetWell å æåå¼èµ·æèä¹ç¸éçç¸½è²¬ä»»ä¸æè¶ éæ¨æ¯ä»çµ¦ PetWell çè²»ç¨ç¸½é¡ãæ¨ç¢ºèª PetWell å°ç¨æ¶çæçå §å®¹æä»»ä½ç¬¬ä¸æ¹è¡çºä¸æ¿æè²¬ä
440»»ï¼ä¸¦ä¸ç±æ¤é æçå·å®³ææå®³é¢¨éªå®å ¨ç±æ¨æ¿æã 441 442æåå¯è½å 嫿åé PetWell ææææ§å¶çç¬¬ä¸æ¹ç¶²ç«çé£çµãPetWell å°ä»»ä½ç¬¬ä¸æ¹ç¶²ç«çå §å®¹ãæ¿çææ £ä¾æ²ææ§å¶æ¬ï¼ä¹ä¸æ¿æä»»ä½è²¬ä»»ãå æ¤ï¼æ¨å é¤ PetWell å æ¨ä½¿ç¨ä»»ä½ç¬¬ä¸æ¹ç¶²ç«èå¼èµ·çä»»ä½è²¬ä»»ã 443 444æåå°å ä½¿ç¨æåçæåèå¼èµ·ç任使害æ¦ä¸è² 責ï¼å æ¬ä½ä¸éæ¼ç´æ¥ãé帶æå¾ææ§æå®³ï¼å³ä½¿å·²è¢«åç¥æ¤é¡å¯è½æ§ãé延伸å°å æªç¶ææ¬ååææ´æ¹æ¨çå³è¼¸ææ¸æä»¥åä»»ä½ç¬¬ä¸æ¹å¨æåä¸çè¡çºæè²æèå°è´çæå®³ãæ¯åæ¨å¨éå¶è²¬ä»»çæ¢æ¬¾å¨ç¢ºå®æåèæ¨ç°½è¨éäºæ³å¾æ¢æ¬¾çæé¡æé½æ¯å¿ ä¸å¯å°çï¼ä¸¦ä¸å³ä½¿æéè£ææªæ½æªè½éå°å ¶åºæ¬ç®ç乿強å¶å·è¡ãç¡è«å¦ä½ï¼å¨ä»»ä½æ æ³ä¸ï¼å¦æå° PetWell æ½å ä»»ä½æå®³è³ åï¼ä¸æ¬¡å ´åä»»ä½æå®³è³ åçæé«è£åå°ä¸è¶ éä¸è¬æ¸¯å ï¼HKD$10000ï¼ã`},17:{title:"ä¸å¯æå",content:"PetWell ææ¨é½ä¸æå°å åçæ§å¶ä¹å¤ä¸æ²æä»»ä½ä¸æ¹é靿ç忽çåå é æçä»»ä½å»¶é²æå±¥è¡å¤±æï¼ä»æ¬¾ç¾©åé¤å¤ï¼è² 責ãéäºåå å¯è½å æ¬ä½ä¸éæ¼ç«ç½ã洪水åå°éçèªç¶ç½å®³ãåè³ç³¾ç´ãå ¬ç¨äºæ¥æ éãåé»ã天ç½ãæ°çï¼ç¡è«æ¯å¦å®£æ°ï¼ãç£ç®¡æ©æ§çè¡åï¼ææåç¡æ³æ§å¶çå ¶ä»é大äºä»¶ã"},18:{title:"å 責åè³ å",content:`æ¨åæå°±å æ¨ä½¿ç¨ååèæåçæåèå¼èµ·çä»»ä½è²¬ä»»ãç´¢è³ ãè²»ç¨ãæå®³åææ¬ï¼å æ¬æ³å¾è²»ç¨ï¼ï¼çº PetWellï¼å æ¬å ¶é«ç´è·å¡ãè£äºãå¡å·¥ã代ç人ãéå±¬å ¬å¸åæå便åï¼è¾¯è·ãé²è¡è³ åä¸¦ä½¿å ¶å åæå®³ãéå æ¬ä»»ä½éåæåçæ³å¾æ¢æ¬¾åç§é±æ¿çãä¾µç¯ä»»ä½ç¬¬ä¸æ¹æ¬å©ï¼å¦ç¥èç¢æ¬æç§é±æ¬ï¼ï¼æç±æ¨æäº¤çå §å®¹é æçä»»ä½æå®³ãæ¤è¾¯è·åè³ å義åå°å¨éäºæ¢æ¬¾åæ¨ä½¿ç¨æåæåçµæ¢å¾ç¹¼çºææã 445 446妿æ¨èå ¶ä»ç¨æ¶ç¼ççè°ï¼æ¨å é¤ PetWell åå ¶ç¸é人å¡èæ¤é¡çè°ææ¨ä½¿ç¨æåæåç¸éçææç¨®é¡çç´¢è³ ãè¦æ±åæå®³ï¼å·²ç¥ææªç¥ï¼ã 447 448æ¨ç¢ºèªä»»ä½èå ¶ä»ç¨æ¶çä½çºæä¸ä½çºç¸éçæ³å¾è¡åå°éæ¼éå°éäºç¹å®å人çç´¢è³ ãæ¨åæä¸è¿½ç©¶ PetWell ç責任æå°æ±å ¶æ³å¾è£æãPetWell å æ¼æ¿æå æ¨èå ¶ä»ç¨æ¶äºåæç±æ¼æ¨å¨æåæåå §çæ´»åèå¼èµ·çææç´¢è³ ãæå®³åè¦æ±ã 449 450æ¨ä¸å¾è½è®æææ´¾æ¨å¨éäºæ¢æ¬¾ä¸çæ¬å©å許å¯ï¼ä½ PetWell å¯ä»¥ä¸åéå¶å°ææ´¾å®åã`},19:{title:"éç¥",content:"æ¨ç¢ºèª PetWell å¯è½æééé»éµãSMSãéµå¯æå¨æåçæåä¸ç¼ä½ï¼ç¼ééç¥åæ´æ°ï¼å æ¬å°æ³å¾æ¢æ¬¾çæ´æ¹ã鿝çºäºç¢ºä¿æ¨é¨æäºè§£æéæ¨ä½¿ç¨ PetWell ç任使´æ¹æéè¦è³è¨ã"},20:{title:"ä¸è¬è³è¨",content:`æ³å¾æ¢æ¬¾ï¼çµåç§é±æ¿çå PetWell ç¼ä½çä»»ä½å ¶ä»æ³å¾éç¥ææ¿çï¼æ§ææ¨è PetWell ä¹ééæ¼æåç宿´åè°ã妿éäºæ³å¾æ¢æ¬¾çä»»ä½è¦å®è¢«å ·æé©ç¶ç®¡è½æ¬çæ³é¢è¦çºç¡æï¼æ¤é¡ç¡æä¸æå½±é¿å ¶é¤è¦å®çæææ§ï¼å ¶é¤è¦å®å°ä¿æå®å ¨æåã 451 452PetWell æªè½å·è¡æ³å¾æ¢æ¬¾ç任使¬å©æè¦å®ä¸æè¢«è¦çºæ¾æ£æ¤é¡æ¬å©æè¦å®ãæ¾æ£ä»»ä½è¦å®ä¸¦ä¸æ§æå°ä»»ä½å ¶ä»è¦å®çæ¾æ£ï¼ä¹ä¸æ¯æçºçæ¾æ£ï¼PetWell å·è¡æ¤é¡æ¬å©åè¦å®çæ¬å©ä¿æå®å ¨æåã 453 454èæåç¸éç訴è¨å¿ é å¨è¨´è¨å ç±ç¢çå¾ä¸å¹´å §éå§ï¼å¦åï¼å®åå°è¢«æ°¸ä¹ ç¦æ¢ï¼å¾è黿¢æ¤å¾æèµ·æ¤é¡è¨´è¨ãéäºæ³å¾æ¢æ¬¾ä¸ä½¿ç¨çæ¨é¡å çºæ¹ä¾¿èµ·è¦ï¼ä¸å ·ä»»ä½æ³å¾æåç´æç¾©ã`}}},Lm={mallParking:"åå ´åè»å ´",nearbyParking:"éè¿è»ä½",evCharging:"EV å é»",carParkName:"è»å ´å稱",walk:"æ¥è¡",heightLimit:"éé«"},Om={pageTitle:"ã2026 ææ°ã馿¸¯å¯µç©åååå ´ï½æè©³ç¡æ¿çååå ´å表",subtitle:"2026 å¹´ææ°æ´æ°ï¼ä¹é¾ãæ¸¯å³¶ãæ°ç寵ç©åååå ´ä¸è¦½ï¼å¸¶çå ¥åå ´æ¿çãç½ç¹©ï¼æ¨è»è¦å®ãæå®æ¥è¡åãéæ¾æéå交éæç¤º",description:"å ¨æ¸¯æè©³ç¡å¯µç©åååå ´è³æåº«ï¼æ¶µèåååå ´å¯µç©æ¿çãè½å°è¦å®ãéæ¾æéãæ³è»è³è¨èç實ç¨å®¶æç¤º",searchPlaceholder:"æå°åå ´å稱æå°å...",filterByRegion:"æå°å篩é¸",regions:{all:"å ¨é¨å°å",kowloon:"ä¹é¾",hongKong:"馿¸¯å³¶",newTerritories:"æ°ç",others:"å ¶ä»"},loading:"è¼å ¥ä¸...",error:"è¼å ¥åå ´è³ææç¼çé¯èª¤",errorSubtitle:"è«ç¨å¾å試æè¯çµ¡å®¢æ",noResults:"æ«ææªææ¤å°åç寵ç©åååå ´è³æ",noResultsHint:"試ä¸èª¿æ´æå°ééµåæç¯©é¸æ¢ä»¶ã",ctaTitle:"æ³æµæ´å¤å¯µç©ååå»èï¼",ctaDescription:"ä¸è¼ PetWell App çé¤å»³ã診æãç¾å®¹å¯é¤åæ´å¤å¯µç©ååå°é»",filterPetsYes:"æ¡è¿å¯µç©",filterLeashWalk:"å¯ç½ç¹©æ¥è¡",filtersLabel:"篩é¸",clearFilters:"æ¸ é¤ç¯©é¸",resultsCount:"{{count}} éåå ´",trustBadge:"2026 ææ°æ¿çè³è¨",backToList:"è¿ååå ´å表",address:"å°å",phone:"é»è©±",website:"ç¶²ç«",openingHours:"çæ¥æé",closed:"伿¯",gallery:"ç¸ç",mtrAccess:"港éµäº¤é",detail:{notFound:"åå ´æªæ¾å°",policyTitle:"å¯µç©æ¿ç",callNow:"è´é»åå ´",getDirections:"å°èªåå¾",visitWebsite:"宿¹ç¶²ç«",dining:"åå ´é¤é£²",diningWebsite:"åå ´é¤é£²é ",diningVenues:"寵ç©ååé¤å»³",browseRestaurants:"ç覽寵ç©ååé¤å»³",parking:"æ³è»",parkingWebsite:"æ³è»è³è¨é ",parkingDetails:"æ³è»",weekdayRate:"å¹³æ¥",weekendRate:"鱿«",heightLimit:"è»é«éå¶",todayHours:"仿¥çæ¥",viewFullHours:"æ¥ç宿´çæ¥æé",hideFullHours:"æ¶èµ·çæ¥æé",planVisit:"實ç¨è³è¨",visitGuideTitle:"帶寵å°è¨ª",rulesTitle:"åºéåè¦ç¥",tagStroller
454:"å¯åæ¨è»",tagStrollerNo:"ç¡æ¨è»åç¨",tagWalkZones:"æå®æ¥è¡å",tagPetToilet:"寵ç©å»æ",tagPetToiletNo:"ç¡å¯µç©å»æ",tagPetPark:"寵ç©å
¬å",tagPetParkAt:"寵ç©å
¬å · {{place}}",tagParking:"è¨ææ³è»",tagDiningYes:"æå¯µç©é¤å»³",tagDiningNo:"æ«ç¡å¯µç©é¤å»³",policySubtitle:"å
çéé»è¦åï¼å註åªè£å
ç´°ç¯",facilitiesTitle:"è¨æ½ä¸è¦½",walkZonesTitle:"å¯ä»¥å»é度",restrictedTitle:"éå¶åå",floors:"æ¨å±¤",floorGround:"å°ä¸",floorN:"{{n}}æ¨",strollerTitle:"å¯µç©æ¨è»åç¨",membership:"æå¡",membershipRequired:"éè¦",membershipWithName:"æå¡ï¼{{name}}",depositAmount:"æé HK${{amount}}",depositLabel:"æé",notesTitle:"å註",notePrefix:"å註ï¼",venueWithFloor:"{{name}} · {{floor}}",venueCount:"{{count}} é",zoneCount:"{{count}} å",gettingThere:"é»å»",showMore:"æ¥çæ´å¤",showLess:"æ¶èµ·",amenityPark:"寵ç©å
¬å",amenityDining:"é£è",amenityStroller:"æ¨è»",amenityToilet:"寵ç©å»æ",amenityParking:"æ³è»",perHour:"/å°æ",ratePerHour:"æ¯å°æ HK${{amount}}",rateAmount:"HK${{amount}}",heightLimitValue:"è»é«éå¶ï¼{{meters}} ç±³",ruleLeash:"éç½ç¹©",ruleCarrier:"鿍è»ï¼æ±ä½ï¼å
¥è¢",ruleNoCarrier:"å
Œ
±ç©ºéç¡éæ¨è»",ruleMuzzle:"大çå»ºè°æ´å£ç½©",ruleMaxWeight:"ä¸é {{kg}} å
¬æ¤",zoneType:{OUTDOOR:"æ¶å¤",INDOOR:"室å
§",MIXED:"室å
§å¤"}}},Fm={pageTitle:"馿¸¯å¯µç©ä¸éæå",subtitle:"æå°åï¼æµæåä½ å±ä¼å
æå",description:"å°æ¯ä¸éç¸é«ãè·å£«ãç¾å®¹åç¸éæåãå
çè¦èç¯ååæ¶è²»ï¼åç´æ¥è¯çµ¡ã",searchPlaceholder:"å°åãå¯µç©æå稱",filterByRegion:"æå°å篩é¸",regions:{all:"å
¨é¨å°å",kowloon:"ä¹é¾",hongKong:"馿¸¯å³¶",newTerritories:"æ°ç",others:"å
¶ä»"},loading:"è¼å
¥ä¸...",error:"è¼å
¥ä¸éæåè³ææç¼çé¯èª¤",errorSubtitle:"è«ç¨å¾å試æè¯çµ¡å®¢æ",noResults:"æ«ææªæç¬¦åæ¢ä»¶çä¸éæå",noResultsHint:"è©¦ä¸æ¹å°åï¼ææå°å¯µç©ç¨®é¡ï¼æåå稱ã",ctaTitle:"æ³æµæ´å¤å¯µç©æåï¼",ctaDescription:"ä¸è¼ PetWell App ç診æãç¾å®¹ãå¯é¤åæ´å¤å¯µç©ååå°é»",filter24Hour:"24å°æ",filtersLabel:"篩é¸",clearFilters:"æ¸
é¤ç¯©é¸",resultsCount:"{{count}} éä¸éæå",trustBadge:"å
çè¦èç¯ååæ¶è²»",moreServices:"仲æ {{count}} é
",backToList:"è¿åä¸éæåå表",address:"å°å",phone:"é»è©±",website:"ç¶²ç«",openingHours:"æåæé",closed:"伿¯",detail:{notFound:"æ¾ä¸å°æ¤ä¸éæå",homeVisitConfirmed:"ç¢ºèªæä¾ä¸é",coverage:"æåç¯å",travelFee:"交éï¼è·¯ç¨è²»",about:"éæ¼",services:"æåé
ç®",pricing:"æ¶è²»åè",referenceDisclaimer:"æåå
§å®¹åæ¶è²»ä»¥æåå宿¹çºæºï¼æ¤èåªä¾åèã",pricingEmpty:"æ«æªå
¬éæ¶è²»ï¼å»ºè°ç¨ WhatsApp æé»è©±æ¥è©¢ææ°å ±å¹ã",pricingService:"é
ç®",pricingAmount:"æ¶è²»",pricingNotes:"å註",includesTravel:"å·²å«è·¯ç¨",species:"æå寵ç©",contact:"è¯çµ¡æ¹å¼",whatsapp:"WhatsApp",call:"è´é»",bookOnline:"ç¶²ä¸é ç´",report:"è³ææèª¤ï¼åå ±",reviews:"{{count}} åè©å¹",viewFullHours:"æ¥ç宿´æé",hideFullHours:"æ¶èµ·æé"}},_m={myReviews:"æçè©è«",mySubtitle:"ä½ å¸¶æ¯å©å»éã寫ä¸ä¾çå°æ¹ã",myEmpty:"ä½ å°æªæ°å¯«ä»»ä½è©è«ã",myEmptyTitle:"鿲坫éè©è«",myEmptyBody:"帶æ¯å©å»éçé¤å»³ã診æï¼å¯«ä¸ä¾å¯ä»¥å¹«å
¶ä»å®¶é·ã",emptyCtaRestaurants:"æµé¤å»³",emptyCtaClinics:"æµè¨ºæ",searchPlaceholder:"æå°å ´ææç¢åå稱",mySeoDescription:"æ¥çä½ å¨ PetWell 寫éçææè©è«ã",publicEmpty:"æ¤ç¨æ¶å°æªå
¬éä»»ä½è©è«ã",publicSeoDescription:"æ¥çæ¤ PetWell æå¡çå
¬éå ´æåç¢åè©è«ã
454",publicSubtitle:"PetWell æå¡çå
¬éè©è« â ä»åè寵ç©ä¸é½è©¦éçå ´æèç¢åã",memberBadge:"PetWell æå¡",reviewsCount:"{{count}} åè©è«",reviewsCount_one:"{{count}} åè©è«",avgRating:"å¹³å {{rating}} å",filterAll:"å
¨é¨",filterLabel:"篩é¸è©è«",viewPlace:"æ¥çå ´æ",loading:"è¼å
¥è©è«ä¸â¦",loadFailed:"æ«æç¡æ³è¼å
¥æ¤ç¨æ¶è³æï¼è«ç¨å¾å試ã",empty:"æ«ææªæè©è«ã",emptyFiltered:"æ¤å顿«ææªæè©è«ã",anonymousBadge:"å¿å",anonymousUser:"PetWell ç¨æ¶",externalUser:"å¤é¨ç¨æ¶",unknownUser:"æªç¥ç¨æ¶",loginRequiredTitle:"ç»å
¥å¾æ¥çä½ çè©è«",loginRequiredBody:"ç»å
¥å¾å³å¯çå°ä½ 寫éçå ´æèç¢åè©è«ã",types:{clinic:"診æ",salon:"ç¾å®¹é¢",lodging:"ä½å®¿",restaurant:"é¤å»³",product:"ç¢å"}},Mm={title:"åäººæªæ¡",subtitle:"ä½ åæ¯å©åº PetWell çå®¶ã",seoDescription:"æ¥çåç·¨è¼¯ä½ ç PetWell åäººæªæ¡ã",breadcrumb:"åäººæªæ¡",sections:"帳æ¶åé ",loginRequiredTitle:"ç»å
¥å¾åå°ä½ çæªæ¡",loginRequiredBody:"ç»å
¥å¾å³å¯çå°ä½ çè³æãæ¯å©ï¼ä»¥åä½ å¯«éçè©è«ã",loading:"è¼å
¥åäººæªæ¡ä¸â¦",loadFailed:"æ«æç¡æ³è¼å
¥åäººæªæ¡ï¼è«ç¨å¾å試ã",personalInfo:"åäººè³æ",edit:"ç·¨è¼¯æªæ¡",editProfile:"ç·¨è¼¯æªæ¡",editProfileDesc:"æ´æ°ä½ çå§åãé»è©±ãå°ååé åã",firstName:"åå",lastName:"å§æ°",email:"é»éµ",phone:"é»è©±",address:"å°å",emailReadOnly:"é»éµç¡æ³å¨æ¤æ´æ¹ã",phoneHint:"8 ä½é¦æ¸¯æµåé»è©±è碼",notSet:"æªè¨å®",save:"å²å",saving:"å²åä¸â¦",cancel:"åæ¶",changePhoto:"æ´æç
§ç",saveSuccess:"åäººè³æå·²æ´æ°",saveFailed:"ç¡æ³å²ååäººè³æï¼è«åè©¦ä¸æ¬¡ã",firstNameRequired:"è«è¼¸å
¥ååã",lastNameRequired:"è«è¼¸å
¥å§æ°ã",phoneInvalid:"è«è¼¸å
¥ææç 8 ä½é¦æ¸¯é»è©±è碼ã",myPets:"æçæ¯å©",petCount:"{{count}}/{{max}}",sharedBadge:"å
±äº«",sharingBadge:"å享ä¸",noPets:"éæ²ææ¯å©æªæ¡",noPetsHint:"å¨ App çºç å»ºç«æªæ¡ï¼å¥åº·ç´éåéå¡é½æè·ä½ä½ ã",manageInApp:"å¨ App 管ç",managePetInApp:"å¨ App 管ç {{name}}",addPet:"æ°å¢æ¯å©",appHint:"æ°å¢æç·¨è¼¯æ¯å©è«ä½¿ç¨ PetWell Appã",downloadGateTitle:"è«å¨ PetWell App ç®¡çæ¯å©",downloadGateBody:"æ°å¢ã編輯ãå享寵ç©åé»åéå¡åªå¯å¨ PetWell App 宿ã",reviewsTeaser:"ä½ å¯«éçè©è«",reviewsTeaserCta:"æ¥çå
¨é¨",reviewsTeaserEmpty:"寫第ä¸åè©è«ï¼å¹«å
¶ä»æ¯å©å®¶é·ã",ageYears:"{{count}} æ²",ageMonths:"{{count}} åæ",activity:"åæ
",account:"帳è",deleteAccount:"åªé¤å¸³æ¶",weightKg:"{{weight}} kg"},jm={nav:zh,placeListing:Kh,restaurantReservation:Gh,tests:Yh,hero:Qh,home:Xh,homePortal:Jh,clinics:Zh,salons:em,lodging:tm,restaurants:om,testBooking:nm,restaurant:rm,ngos:im,footer:am,report:sm,common:lm,hours:cm,forum:dm,deleteAccount:um,petTag:pm,reviews:hm,activateTag:mm,download:fm,event:gm,adminForms:ym,nameTagBanner:vm,nametagDailyPopup:wm,midAutumnDailyPopup:bm,cnyProducts:Pm,checkout:xm,payment:Sm,cart:Tm,petMatchmaker:Am,otherServices:Em,about:km,contactWidget:Cm,landing:Nm,auth:Rm,authLinking:Im,nametagPage:Dm,terms:Wm,malls:Lm,mallPlaces:Om,homeVisitPlaces:Fm,userReviews:_m,accountProfile:Mm},Hm={home:"Home",openMenu:"Open menu",logoAlt:"PetWell Hong Kong pet health app logo - veterinary reviews and pet health management platform",petFriendly:"Pet-friendly",clinics:"Clinics",salons:"Pet Grooming",lodging:"Pet Lodging",malls:"Pet-friendly Malls",homeVisits:"Home Visits",restaurants:"Restaurants",restaurantsByDistrict:"By district (18)",ngos:"Animal NGOs",about:"About Us",forum:"Pet Forum",blog:"Pet Info",ownerZone:"Owner Zone",tests:"Fun Tests",petMatchmaker:"Pet Matchmaker",petActivities:"Pet Activities",testBooking:"Testing Services",nutritionScore:"Food Score",otherServices:"Merchant Partnership",review:"Price reviews",download:"Download the app",partnershipMenu:{merchant:"Media & merchants",merchantHint:"Ads, KOL and listings",events:"Events",eventsHint:"Pet markets and festivals"},petFriendlyMenu:{goOut:"Go out together",care:"Get care",services:"Grooming & stay",restaurants:"Restaurants",malls:"Malls",clinics:"Clinics",homeVisits:"Home visits",salons:"Grooming",lodging:"Lodging"}},$m={searchNearby:"Search nearby",nearby:"Nearby",sortedByDistance:"Closest first",locationDenied:"Couldn't get your location. Allow location access, then tap Search nearby again.",locationBlockedTitle:"Location is off",locationBlockedBody:"You blocked location before, so allow it in browser settings.",locationBlockedStep1:"Tap the lock icon in the address bar",locationBlockedStep2:"Set Location to Allow",locationBlockedStep3:"Come back and tap Try again",locationBlockedIos:"Go to iPhone Settings â Safari or Chrome â Location, allow this site, then tap Try again.",locationTimeoutTitle:"Can't find your location",locationTimeoutBody:"Make sure Location is on, then try again.",locationUnavailableTitle:"Can't find your location",locationUnavailable:"This browser can't provide a location.",locationRetry:"Try again",locationDismiss:"Not now",distanceM:"{{m}} m",distanceKm:"{{km}} km"},Bm={cta:"Reserve a table",ctaShort:"Reserve",title:"Reserve a table",subt
454itle:"{{restaurantName}} · Pending confirmation after you send",when:"Date & time",moreDates:"More dates",contact:"Your details",customerName:"Name",customerNamePlaceholder:"e.g. Chan Tai Man",customerPhone:"Phone",customerPhonePlaceholder:"e.g. 9123 4567",customerEmail:"Email",customerEmailPlaceholder:"[email protected]",reservationAt:"Reservation date and time",reservationDate:"Date",reservationDatePlaceholder:"Choose a date",reservationTime:"Time",partySize:"Guests",petCount:"Pets",maxPetsHint:"Up to {{count}}",fewer:"Fewer",more:"More",petSummary:"Pet details (optional)",petSummaryPlaceholder:"e.g. 1 small dog, outdoor seat",specialRequest:"Special request (optional)",specialRequestPlaceholder:"Seating preference, celebration, etc.",addExtras:"Add email or notes",editExtras:"Edit email or notes",termsTitle:"Booking terms",termsAccept:"I agree to the booking terms",viewTerms:"View terms",hideTerms:"Hide terms",depositNotice:"A deposit may be required for {{count}}+ pets.",noAvailableDates:"No dates available right now.",noAvailableTimes:"No times on this date.",pickDateFirst:"Choose a date first.",notice:"Pending confirmation â the restaurant may contact you.",submit:"Send request",submitting:"Sendingâ¦",cancel:"Cancel",close:"Close",successTitle:"Request sent",successDesc:"Your request for {{restaurantName}} is pending confirmation.",errorDesc:"Couldn't send your request. Please try again.",validation:{required:"Please fill this in.",email:"Enter a valid email.",future:"Choose a time that meets the notice period.",unavailableDate:"This date isn't available.",unavailableTime:"This time isn't available.",maxPets:"Up to {{count}} pets for this slot.",partySize:"Select at least 1 guest.",petCount:"Pet count can't be negative.",terms:"Please agree to the booking terms."}},Vm={title:"Fun Pet Tests",subtitle:"Discover fun and insightful tests about you and your pets!",petMatchmakerDesc:"Find out which pet matches your personality and lifestyle perfectly.",startTest:"Start Test"},Um={title:"Hong Kong's First",titleHighlight:"Pet Health App",titleEnd:"",subtitle:"Complete veterinary and pet grooming information in one app",cta:"Download Now"},qm={eyebrow:"Hong Kong's first all-in-one pet health platform",summary:"Hong Kong's go-to platform â clinic reviews, pet-friendly restaurants, grooming, lodging, activities and forum",explorePlatform:"Explore platform",stats:{clinicsValue:"200+",clinicsLabel:"Vet clinics",restaurantsValue:"1500+",restaurantsLabel:"Pet-friendly spots",freeValue:"100%",freeLabel:"Free to use"},features:{eyebrow:"Core capabilities",title:"Built for pet parents",subtitle:"Reviews, discovery, and health records â making pet care clearer and simpler.",saveTime:{title:"Save research time",description:"PetWell consolidates reviews* so you find what you need in one place."},advocacy:{title:"Advocate for animals",description:"Share good and bad experiences to build a more pet-inclusive city."},records:{title:"Lifetime health records",description:"Keep a detailed history of your pet's care â nothing gets lost when you switch vets."},free:{title:"Completely free",description:"We believe every animal deserves access to quality services."}},platform:{eyebrow:"Product ecosystem",title:"Everything in one platform",subtitle:"From medical decisions to everyday outings â PetWell covers what Hong Kong pet owners need.",clinics:{title:"Vet clinics",description:"Real reviews, fee references, and 24-hour emergency filtering.",cta:"Browse clinics"},restaurants:{title:"Pet-friendly dining",description:"Team-verified restaurants across Hong Kong Island, Kowloon, and NT.",cta:"Browse restaurants"},activities:{title:"Pet activities",description:"Markets, parties, carnivals â plan great weekends for your pet.",cta:"Browse activities"}},testimonials:{eyebrow:"User stories",title:"What Hong Kong pet owners say",minnie:{text:"I used to rely on friends for vet recommendations and travel far for appointments. With PetWell, everyone can share reviews â I can finally pick a clinic near me!",author:"Minnie Leung"},elaine:{text:"After years of pet ownership, I'd often lose vaccination cards or forget emergency visits. Now I can record every vet visit in detail â switching vets without missing anything.",author:"Elaine Yeung"},matthew:{text:"My dog hates groomers after a bad experience as a puppy. With so many mobile groomers, it's hard to compare value â PetWell lets me compare options and see the earliest booking slots at once!",author:"Matthew Chan"}},appPreviewAlt:"PetWell pet health app on mobile â vet clinic search, health records, and walk tracking"},zm={hero:{eyebrow:"Hong Kong pet platform",title:"Making pet life simpler",subtitle:"Price compare, clinics, grooming, boarding, restaurants, events & forum â one search",subtitleMobile:"Compare prices, clinics, restaurants & more â one search"},tabs:{all:"All",review:"Price compare"},search:{categoryLabel:"Search category",placeholder:"Search products, clinics, salons, restaurants, eventsâ¦",placeholderMobile:"Search products, clinicsâ¦",placeholders:{review:"Search brand or product nameâ¦",activities:"Search event name or locationâ¦"},submit:"Search"},quickNav:{label:"Quick access",review:"Price compare"},promos:{title:"Featured offers",cta:"View now",member:{title:"PetWell Member perks",subtitle:"Members enjoy 10% off"},activities:{title:"2026 pet hotspots",subtitle:"Weekend activities & outings"}
454,review:{title:"Pet product price compare",subtitle:"Compare prices across Hong Kong"}},suggestions:{title:"Explore PetWell",explore:"Go",clinicsSub:"Real reviews & fee references",salonsSub:"Grooming salons across HK",lodgingSub:"Boarding & pet hotels",restaurantsSub:"Team-verified pet-friendly dining",districtsLink:"Browse by 18 districts",activities:"Hong Kong pet hotspots",activitiesSub:"Events, markets & outdoor picks",ownerZoneSub:"Care guides & practical tips"},featured:{title:"Featured picks",subtitle:"Popular categories curated for pet owners",review:{title:"Pet product price compare",subtitle:"Compare real prices across Hong Kong stores"}},sectors:{viewAll:"View all",verified:"Verified",review:{title:"Best deals · Pet price compare",subtitle:"Compare store prices and find the best buy"},restaurants:{title:"Pet-friendly restaurants",subtitle:"Team-verified â dine with your pet confidently"},events:{title:"Pet events & outings",subtitle:"Weekend markets, parties & outdoor picks"},clinics:{title:"Vet clinic reviews",subtitle:"Real user ratings & fee references"},salons:{title:"Pet grooming"},lodging:{title:"Pet boarding"},homeVisits:{title:"Home visit services",subtitle:"In-home consults, vaccines & urgent care"}},cards:{stores:"{{count}} stores",savePercent:"Save {{pct}}%",newListing:"New",freeEntry:"Free entry",priceFrom:"From HK$ {{price}}",rank:"Rank #{{rank}}"},forum:{title:"Trending in forum",subtitle:"Latest discussions from the community",viewAll:"View more",hot:"Hot",replies:"{{count}} replies"}},Km={pageTitle:"Hong Kong Veterinary Clinic Search & Reviews",subtitle:"Discover the Best Veterinary Clinics for Your Pet - Kowloon, Hong Kong Island & New Territories",description:"Over 200 veterinary clinics across Hong Kong with real user reviews and instant booking",searchPlaceholder:"Search clinic name or address...",filterByRegion:"Filter by Region",regions:{all:"All Regions",kowloon:"Kowloon",hongKong:"Hong Kong Island",newTerritories:"New Territories",others:"Others"},loading:"Loading...",error:"Error loading clinic data",errorSubtitle:"Please try again later or contact support",noResults:"No clinics found in this region",services:"Services",reviews:"user reviews",ctaTitle:"Need to Find More Clinics?",ctaDescription:"Download PetWell App to browse over 200 veterinary clinics in Hong Kong with advanced search features",ctaButton:"Download App Now",filter24Hour:"Show 24-hour clinics only",filtersLabel:"Filters",clearFilters:"Clear filters",resultsCount:"{{count}} clinics",loadMore:"Load more",noResultsHint:"Try adjusting your search or filters to see more results.",trustBadge:"Real user reviews",backToList:"Back to Clinics",address:"Address",phone:"Phone",website:"Website",openingHours:"Opening Hours",closed:"Closed",gallery:"Photos",detail:{notFound:"Clinic not found",servicesOverview:"Services at a glance",servicesOverviewSubtitle:"Key services offered at this clinic",callNow:"Call clinic",getDirections:"Get directions",email:"Email",todayHours:"Open today",viewFullHours:"View full opening hours",hideFullHours:"Hide opening hours",reviewsTitle:"Reviews",reviewsSubtitle:"What other pet owners say",planVisit:"Visit details",noHoursToday:"Closed today or hours unavailable",suggestEdit:"Suggest edit",suggestEditPrompt:"Info outdated?",reviewsEmpty:"No reviews yet",businessReply:"Reply from this place",reviewsMoreTitle:"Want more reviews?",reviewsMoreDescription:"Download PetWell to read all reviews",businessReplyFrom:"Reply from {{placeName}}",businessReplyOfficial:"Official",registeredVetsTitle:"Registered veterinary surgeons",registeredVetsSubtitle:"{{count}} surgeons with a valid practising certificate matched to this clinic",registeredVetsSource:"Source:",registeredVetsSourceName:"Veterinary Surgeons Board of Hong Kong register"}},Gm={pageTitle:"Pet Grooming",subtitle:"Discover pet grooming salons in Hong Kong - Kowloon, Hong Kong Island & New Territories",description:"Pet salon search, user reviews, services and pricing reference",searchPlaceholder:"Search salon name or address...",filterByRegion:"Filter by Region",regions:{all:"All Regions",kowloon:"Kowloon",hongKong:"Hong Kong Island",newTerritories:"New Territories",others:"Others"},loading:"Loading...",error:"Error loading pet grooming data",errorSubtitle:"Please try again later or contact support",noResults:"No pet grooming salons found in this region",services:"Services",reviews:"user reviews",ctaTitle:"Need to Find More Pet Grooming Salons?",ctaDescription:"Download PetWell App to browse more pet salons with advanced search",ctaButton:"Download App Now",filter24Hour:"24-hour only",filtersLabel:"Filters",clearFilters:"Clear filters",resultsCount:"{{count}} salons",loadMore:"Load more",noResultsHint:"Try adjusting your search or filters to
454see more results.",trustBadge:"Real user reviews",backToList:"Back to Salons",address:"Address",phone:"Phone",website:"Website",openingHours:"Opening Hours",closed:"Closed",gallery:"Photos",detail:{notFound:"Salon not found",servicesOverview:"Services at a glance",servicesOverviewSubtitle:"Key grooming services available here",callNow:"Call salon",getDirections:"Get directions",email:"Email",todayHours:"Open today",viewFullHours:"View full opening hours",hideFullHours:"Hide opening hours",reviewsTitle:"Reviews",reviewsSubtitle:"What other pet owners say",planVisit:"Visit details",noHoursToday:"Closed today or hours unavailable",suggestEdit:"Suggest edit",suggestEditPrompt:"Info outdated?",reviewsEmpty:"No reviews yet",businessReply:"Reply from this place",reviewsMoreTitle:"Want more reviews?",reviewsMoreDescription:"Download PetWell to read all reviews",businessReplyFrom:"Reply from {{placeName}}",businessReplyOfficial:"Official"}},Ym={pageTitle:"Pet Lodging",subtitle:"Discover pet lodging and pet hotels in Hong Kong - Kowloon, Hong Kong Island & New Territories",description:"Pet lodging search, user reviews, facilities and pricing reference",searchPlaceholder:"Search lodging name or address...",filterByRegion:"Filter by Region",regions:{all:"All Regions",kowloon:"Kowloon",hongKong:"Hong Kong Island",newTerritories:"New Territories",others:"Others"},loading:"Loading...",error:"Error loading pet lodging data",errorSubtitle:"Please try again later or contact support",noResults:"No pet lodging found in this region",services:"Services",reviews:"user reviews",ctaTitle:"Need to Find More Pet Lodging?",ctaDescription:"Download PetWell App to browse more pet lodging and pet hotels with advanced search",ctaButton:"Download App Now",filter24Hour:"24-hour only",filtersLabel:"Filters",clearFilters:"Clear filters",resultsCount:"{{count}} lodging options",loadMore:"Load more",noResultsHint:"Try adjusting your search or filters to see more results.",trustBadge:"Real user reviews",backToList:"Back to Lodging",address:"Address",phone:"Phone",website:"Website",openingHours:"Opening Hours",closed:"Closed",gallery:"Photos",detail:{notFound:"Lodging not found",servicesOverview:"Facilities at a glance",servicesOverviewSubtitle:"Key services and facilities available",callNow:"Call lodging",getDirections:"Get directions",email:"Email",todayHours:"Open today",viewFullHours:"View full opening hours",hideFullHours:"Hide opening hours",reviewsTitle:"Reviews",reviewsSubtitle:"What other pet owners say",planVisit:"Visit details",noHoursToday:"Closed today or hours unavailable",suggestEdit:"Suggest edit",suggestEditPrompt:"Info outdated?",reviewsEmpty:"No reviews yet",businessReply:"Reply from this place",reviewsMoreTitle:"Want more reviews?",reviewsMoreDescription:"Download PetWell to read all reviews",businessReplyFrom:"Reply from {{placeName}}",businessReplyOfficial:"Official"}},Qm={pageTitle:"Hong Kong Pet-Friendly Restaurant Guide",subtitle:"1,000+ real pet owner reviews to help you avoid the pitfalls",description:"The most comprehensive guide | PetWell is written by real Hong Kong pet owners to help you avoid traps and find truly pet-friendly restaurants.",seoTitle:"Hong Kong Pet-Friendly Restaurants 2026 | FEHD List + Owner Reviews | PetWell",seoDescription:"From 9 July 2026, about 989â1,000 FEHD-licensed dog-friendly restaurants may admit dogs. PetWell also phone-verifies indoor access and walk-in policy, plus real owner reviews.",seoKeywords:"pet friendly restaurant hong kong,dog friendly restaurant hong kong 2026,FEHD pet friendly restaurants,dog friendly dining hong kong,where to eat with dog hong kong,indoor pet friendly cafe hk,walk in dog restaurant,帶çé¤å»³,馿¸¯å¯µç©ååé¤å»³,çé»ååé£è",seoStructuredDataName:"Hong Kong Pet-Friendly Restaurant Directory",enAliasPageTitle:"Pet-Friendly Restaurants in Hong Kong",enAliasSubtitle:"Team-verified restaurants where pets are welcome",enAliasDescription:"Browse Hong Kong pet-friendly restaurants verified by PetWell, with indoor access and walk-in filters.",enAliasSeoTitle:"Pet-Friendly Restaurants Hong Kong 2026 | Verified Dog-Friendly Dining | PetWell",enAliasSeoDescription:"Find verified pet-friendly restaurants in Hong Kong. Filter by district, indoor access, and walk-in policy â beyond the FEHD lottery list.",searchIntent:"PetWell is written by real Hong Kong pet owners to help you avoid traps and find truly pet-friendly restaurants.",directQuestion:"Which Hong Kong restaurants are actually safe to visit with your pet?",directAnswer:"From 9 July 2026, about 989â1,000 FEHD-licensed venues may legally admit dogs. PetWell goes further: we phone-verify indoor vs outdoor access and walk-in vs reservation, then add owner reviews and photos so you know if a place is truly pet-friendly before you go.",faqTitle:"Pet-Friendly Restaurant FAQ",faq:{q1:"Where can I find pet-friendly restaurants in Hong Kong?",a1:"You can find them across Hong Kong Island, Kowloon, and the New Territories, and filter by district to find nearby options.",q2:"What should I check before bringing my dog to a restaurant?",a2:"Check whether pets are allowed indoors, whether reservations are required, and if walk-ins are accepted before visiting.",q3:"How can I tell if a restaurant is truly pet-friendly?",a3:"Look for verification badges, policy tags, ratings, and real user feedback on pet access and dining experience.",q4:"Can I walk in, or do I need a reservation?",a4:"It depends on the venue policy. Use the walk-in filter or check each restaurant's entry policy label.",q5:"What's the difference between the FEHD list and PetWell verified restaurants?",a5:"The FEHD list shows licence-approved premises allowing dogs. PetWell verification means our team called to confirm pet policies including indoor access and walk-in rules.",q6:"What rules apply at FEHD-approved restaurants?",a6:"Typical rules include leashing, no dogs on tables, no contact with utensils, and no access to kitchen areas. See FEHD for full details.",q7:"Can I bring my cat to pet-friendly restaurants?",a7:"Policies vary. PetWell listings focus on dog-friendly venues â call ahead to confirm if cats are welcome.",q8:"Which areas have the most pet-friendly restaurants?",a8:"Hong Kong Island (Central, Wan Chai, Eastern) and Kowloon (Yau Tsim Mong, Kwun Tong) tend to have more options. Browse our 18-district pages for counts.",q9:"What changed on 9 July 2026 for dogs in restaurants?",a9:"FEHD's sc
454heme allowing dogs on licensed food premises took effect on 9 July 2026, covering about 989â1,000 venues. A licence is not the same as being truly pet-friendly: some are outdoor-only, some require reservations, and cats are not covered. PetWell confirms indoor and walk-in policy by phone."},howTo:{name:"How to choose a pet-friendly restaurant",description:"Use PetWell to quickly find a Hong Kong restaurant that welcomes your pet.",step1Name:"Pick an area",step1Text:"Filter by 18 districts or Hong Kong Island / Kowloon / New Territories, or search by name and address.",step2Name:"Check pet policies",step2Text:"Look for indoor access, walk-in, and PetWell verification badges.",step3Name:"Compare ratings and hours",step3Text:"Review user ratings, today's opening hours, and extras like Puppuccino.",step4Name:"Confirm before you go",step4Text:"Call ahead to confirm the latest policy, especially during peak hours or for large dogs."},hubSeo:{title:"Hong Kong's only pet-friendly restaurant review site â by owners, for owners",body:"Plenty of restaurants say they're pet-friendly, but the reality is often different: outdoor seating only, advance booking required, or dogs kept in strollers indoors. Don't let another owner get caught out â share your real experience here. You can post anonymously, upload photos, and speak your mind. Every review helps the next family bringing a pet out, and makes Hong Kong genuinely more pet-friendly.",fehdTitle:"2026 FEHD dog-in-restaurant scheme: licence vs truly pet-friendly",fehdBody:"FEHD's scheme took effect on 9 July 2026. About 989â1,000 licensed dog-friendly restaurants may legally admit dogs. A licence only means dogs are allowed â not that staff welcome pets indoors or accept walk-ins. PetWell verifies those policies by phone and adds owner reviews. Typical FEHD rules: leash no longer than 1.5m, no dogs on tables, no contact with utensils, and adult supervision. Use the FEHD-licensed filter or our searchable approved list to cross-check."},communityReviewsTitle:"Why leave a review?",communityReviewsBody:"PetWell isn't just a directory â it's a shared map built by Hong Kong pet owners. One honest comment, good or bad, helps the next family avoid a bad experience or discover a hidden gem. Post anonymously, add photos, tell the truth. All free.",districtPage:{indexTitle:"Pet-friendly restaurants by Hong Kong's 18 districts",indexSubtitle:"Find verified pet-friendly restaurants in every official district across HK Island, Kowloon, NT, and Islands.",indexSeoTitle:"Hong Kong 18 Districts Pet-Friendly Restaurants 2026 | PetWell",indexSeoDescription:"Browse pet-friendly restaurants and FEHD dog-friendly dining by Hong Kong's 18 districts. PetWell verified listings plus the 2026 licensed list.",indexSeoKeywords:"pet friendly restaurant by district hong kong,18 districts dog friendly dining,FEHD dog restaurant",pageTitle:"Pet-friendly restaurants in {{district}}",subtitle:"Verified pet-friendly dining in {{district}} ({{region}})",seoTitle:"{{district}} Pet-Friendly Restaurants 2026 | Dog-Friendly Dining | PetWell",seoDescription:"{{district}} has {{count}} PetWell verified pet-friendly restaurants. Filter by indoor access and walk-in, plus FEHD-licensed dog-friendly venues in the area.",seoKeywords:"{{district}} pet friendly restaurant,{{district}} dog friendly restaurant,{{district}} eat with dog,{{region}} pet dining",searchIntent:"Looking for pet-friendly restaurants in {{district}}? Here are PetWell verified options.",directQuestion:"Where are pet-friendly restaurants in {{district}}?",directAnswer:"{{district}} currently has {{count}} PetWell verified restaurants â {{indoorCount}} allow indoor access and {{walkInCount}} accept walk-ins.",faqTitle:"{{district}} pet-friendly restaurant FAQ",faq:{q1:"How many pet-friendly restaurants are in {{district}}?",a1:"PetWell lists {{count}} verified pet-friendly restaurants in {{district}}. If the count is low, see the FEHD directory on this page.",q2:"Which {{district}} restaurants allow indoor pet access?",a2:"Use the indoor access filter or check each listing's pet policy tags."},indexFaq:{q1:"How do I search by Hong Kong's 18 districts?",a1:"Pick your district to see PetWell verified restaurants and FEHD reference listings for that area.",q2:"How is this different from the main restaurant list?",a2:"District pages pre-filter to one area with localized SEO and FAQ content for faster discovery."},statsTitle:"How many pet-friendly restaurants in {{district}}?",statsBody:"{{district}} has {{count}} PetWell verified restaurants ({{indoorCount}} indoor, {{walkInCount}}
454 walk-in).",fehdCompare:"PetWell verified restaurants are phone-confirmed for pet policies. The FEHD list shows licence-approved dog-access premises â use both for reference.",hubLink:"All Hong Kong pet-friendly restaurants",fehdLink:"FEHD 1,000 approved list",allDistricts:"All 18 districts",districtNavTitle:"Browse by Hong Kong's 18 districts",districtNavDescription:"Select a district to see verified pet-friendly restaurants in that area.",noResults:"No PetWell verified restaurants match in {{district}} yet",noResultsHint:"Try the FEHD directory below or browse nearby districts.",listAriaLabel:"Pet-friendly restaurants in {{district}}"},regionPage:{pageTitle:"Pet-friendly restaurants in {{region}}",subtitle:"Verified pet-friendly dining across {{region}}",seoTitle:"{{region}} Pet-Friendly Restaurants 2026 | Dog-Friendly Dining | PetWell",seoDescription:"{{region}} has {{count}} PetWell verified pet-friendly restaurants. Filter by indoor access and walk-in across FEHD-licensed venues in the region.",seoKeywords:"{{region}} pet friendly restaurant,{{region}} dog friendly dining,{{region}} eat with dog"},searchPlaceholder:"Search restaurant name or address...",filterByRegion:"Filter by Region",filterWalkIn:"Walk-in allowed",filterFehdLicensed:"FEHD licensed",filtersLabel:"Restaurant filters",heroEyebrow:"Verified dining guide",verifiedPanelTitle:"Every listing is PetWell verified",verifiedPanelDescription:"We confirm pet policies before a restaurant appears here â so you know what's allowed before you go.",resultsCount:"{{count}} verified restaurants",showingCount:"Showing {{shown}} of {{total}}",loadMore:"Load more",clearFilters:"Clear filters",regions:{all:"All Regions",kowloon:"Kowloon",hongKong:"Hong Kong Island",newTerritories:"New Territories",others:"Others"},loading:"Loading...",error:"Error loading restaurant data",errorSubtitle:"Please try again later or contact support",noResults:"No pet-friendly restaurants found",noResultsHint:"Try adjusting your search or filters to see more results.",searchingMore:"Searching more restaurants that match your filtersâ¦",backToList:"Back to Restaurants",petPolicy:"Pet Policy",contactInfo:"Contact Information",address:"Address",phone:"Phone",website:"Website",openingHours:"Opening Hours",closed:"Closed",gallery:"Photos",ctaTitle:"Just visited a restaurant? Leave a review!",ctaDescription:"Hong Kong's only pet-friendly restaurant review site. Help the next owner avoid a bad experience â post anonymously, add photos, tell the truth.",ctaButton:"Download App Now",detail:{notFound:"Restaurant not found",decisionTitle:"Dining with your pet · essentials",decisionSubtitle:"Confirm pet policy before you go",callNow:"Call",getDirections:"Directions",visitWebsite:"Website",todayHours:"Open today",viewFullHours:"View full opening hours",hideFullHours:"Hide opening hours",reviewsTitle:"Reviews",reviewsSubtitle:"What other pet owners say",planVisit:"Visit details",noHoursToday:"Closed today or hours unavailable",nearbyTitle:"Other pet-friendly restaurants nearby",nearbySubtitle:"More verified restaurants within 3 km of {{district}}",nearbySubtitleDefault:"Other verified restaurants within {{radius}} km",nearbyCount:"{{count}} places",nearbyEmpty:"No other verified pet-friendly restaurants found nearby",nearbyShowMore:"Show {{count}} more",nearbyShowLess:"Show less",nearbyDistanceM:"{{m}} m",nearbyDistanceKm:"{{km}} km",reviewsEmpty:"No reviews yet",businessReply:"Reply from this place",suggestEdit:"Suggest edit",suggestEditPrompt:"Info outdated?",sections:{overview:"About",petPolicy:"Pet policy",reviews:"Reviews",info:"Location & contact"},faq:{q1:"Can I bring my dog to {{name}}?",a1:"{{name}} is a PetWell verified pet-friendly restaurant, currently listed as {{policy}}.",q2:"Do I need a reservation for {{name}}?",a2:"Check the entry policy tag (walk-in / reservation required) and call ahead to confirm.",q3:"What rules apply when bringing a dog to {{name}}?",a3:"Keep your dog leashed and follow venue rules. At FEHD-approved premises, dogs must not go on tables or contact utensils."},businessReplyFrom:"Reply from {{placeName}}",businessReplyOfficial:"Official"}},Xm={seoTitle:"Pet Allergy and Pathogen Test Booking | PetWell",seoDescription:"Book professional pet diagnostic testing for allergy IgE screening and PCR pathogen detection, with clinically relevant reporting for veterinary follow-up.",seoKeywords:"pet test booking,allergen test,pcr test,pet diagnostics,petwell payment",structuredDataName:"PetWell Pet Testing Booking",structuredDataSpecialty:"Veterinary medicine",badge:"Veterinary diagnostics",title:"Pet Diagnostic Test Booking",subt
454itle:"Choose a professional diagnostic service for allergy investigation or pathogen screening, then submit your booking details for clinic follow-up.",testPriceNotice:"Booking price: HKD {{price}} per service",buyerInfoTitle:"Buyer Information",buyerInfoDesc:"Used for booking confirmation and clinic follow-up.",checkoutModalTitle:"Complete Your Booking",checkoutModalDesc:"You are booking {{productName}}. Log in to continue, or fill in your personal info below.",authChoiceTitle:"Already have a PetWell account?",authChoiceDesc:"You can log in to continue, or fill in your personal info below to proceed with this email.",loginToContinue:"Login to continue",heroPrimaryCta:"Book Allergen IgE Test",heroSecondaryCta:"Book PCR Screening",heroKeywords:{igeAllergy:"IgE allergy test",pcrPathogen:"PCR pathogen screening",rastClass:"RAST class 0-3",serumSample:"Serum sample",veterinaryDiagnostics:"Veterinary diagnostics"},keywords:{ige:"IgE",rast:"RAST 0-3",auMl:"AU/mL",serum:"Serum",enzymeImmunoblot:"Enzyme immunoblot",pcr:"PCR",respiratory:"Respiratory",gastrointestinal:"Gastrointestinal",zoonotic:"Zoonotic pathogens",pcrTargets:"100+ targets"},labCardLabel:"Veterinary diagnostic service",labCardTitle:"Pet allergy + pathogen testing",labCardDesc:"Built for veterinary-led decisions: quantitative results, clinical correlation, and clear reporting for owners and clinics.",stats:{allergens:"Allergen panel",pcrTargets:"PCR screening",sample:"Serum sample",rast:"RAST class"},valueProps:{quantitativeTitle:"Quantitative detection",quantitativeDesc:"Allergen-specific IgE values are reported in AU/mL and mapped to RAST classes for clearer interpretation.",clinicalTitle:"Clinical relevance",clinicalDesc:"Designed for allergy, respiratory, and gastrointestinal workups when symptoms need deeper investigation.",reportTitle:"Professional report",reportDesc:"Structured report fields include sample ID, specimen type, test method, result class, and interpretation notes.",workflowTitle:"Simple booking flow",workflowDesc:"Choose the test, submit booking details, pay online, and let the clinic/lab proceed with fulfilment."},productSectionBadge:"Diagnostic options",productSectionTitle:"Choose the right test for your pet's symptoms",productSectionDesc:"Two focused veterinary diagnostic services for allergy investigation and pathogen screening.",productMeta:{bestFor:"Best for",method:"Method",sample:"Sample",turnaround:"Report focus"},methodology:{badge:"Medical method",title:"How the CANINE PRO allergy report is interpreted",desc1:"The CANINE PRO allergy report detects specific IgE antibodies from serum using a quantitative enzyme immunoblot assay. Reaction intensity is scanned optically and converted into allergen-specific IgE titers.",desc2:"Results are expressed in AU/mL and attributed to RAST class 0 to 3: not found, moderate, serious, and severe. The report covers mites and mould, plants and pollens, food allergens, insects, and miscellaneous allergens."},workflow:{step1Title:"Select a diagnostic service",step1Desc:"Choose IgE allergy testing or PCR pathogen screening based on the clinical concern.",step2Title:"Enter booking details",step2Desc:"Provide owner contact, pet name, clinic, notes, and preferred booking time.",step3Title:"Complete payment online",step3Desc:"Complete payment online and submit the booking for clinic follow-up.",step4Title:"Clinic/lab fulfilment",step4Desc:"The booking record is sent to operations for follow-up, reporting, and lab coordination."},medicalDisclaimer:"This service supports veterinary assessment and should be interpreted together with clinical signs and professional advice. It is not a standalone diagnosis or treatment plan.",faq:{q1:"What does the allergy test measure?",a1:"It measures allergen-specific IgE antibody levels from serum and reports them as AU/mL with RAST class 0 to 3.",q2:"Which pets may benefit from testing?",a2:"Pets with suspected allergy, recurring skin irritation, respiratory signs, gastrointestinal signs, or unexplained sensitivity may be candidates after veterinary assessment.",q3:"Is PCR the same as an allergy test?",a3:"No. PCR screening looks for pathogen genetic material, while IgE allergy testing evaluates immune response to allergens."},form:{firstName:"First Name",firstNamePlaceholder:"e.g. Wing",lastName:"Last Name",lastNamePlaceholder:"e.g. Chan",email:"Email",emailPlaceholder:"[email protected]",phone:"Phone",phonePlaceholder:"+852 9123 4567",petName:"Pet Name",petNamePlaceholder:"e.g. Cocoa",bookingClinic:"Clinic",bookingClinicPlaceholder:"Select a clinic",bookingTimeContactPrompt:"After payment, the selected clinic will contact you directly to confirm the appointment time, sample arrangement, and any follow-up details.",bookingTimeContactRecord:"Clinic will contact customer directly",notes:"Notes",notesPlaceholder:"Optional notes"},clinicInfo:{phone:"Phone",address:"Address",hours:"Opening hours"},clinics:{fairview:{name:"é¦ç»£åç©è¨ºæ Fairview Veterinary Clinic",phone:"24718980",address:"æ°çå
æé¦¬ç°æ201è 201 Ma Tin Tsuen, Yuen Long, NT",hours:"10:00 - 13:00, 15:00 - 19:00"}
454,ivet:{name:"iPet Animal Clinic",phone:"2561 1116",address:"太ååºéè¡46èå°ä¸",hours:"Wed, Thu, Fri, Sat and Sun 11:00 - 20:00"},parkIsland:{name:"çéºç£ç¸é«è¨ºæ Pets Central (Park Island)",phone:"67383280",address:"馿¸¯é¦¬ç£çéºè·¯8è G/F, 322 Ma Wan Main Street Village North, Ma Wan, NT",hours:"No fixed office hours. The clinic will tailor the arrangement and contact you directly."}},products:{allergen:{name:"Feline/Canine PRO 125 - Allergen IgE Allergy Test",shortName:"PRO 125 IgE",description:"One complete panel covering 125 clinically relevant allergens for pets with potential skin, respiratory, or GI allergy concerns.",h1:"Environmental and mite allergen coverage",h2:"Pollens and plant allergen coverage",h3:"Food + insect and miscellaneous allergen coverage",bestFor:"Allergy investigation",method:"Quantitative enzyme immunoblot assay",sample:"Serum specimen",turnaround:"IgE AU/mL + RAST class"},pcr:{name:"Feline/Canine 100+ PCR Test",shortName:"100+ PCR",description:"Ultra-fast PCR panel for respiratory, gastrointestinal, and zoonotic pathogen screening in cats and dogs.",h1:"Respiratory and gastrointestinal panel",h2:"Zoonotic pathogen screening items",h3:"Broad feline and canine pathogen coverage",bestFor:"Pathogen screening",method:"PCR amplification",sample:"Clinic-collected specimen",turnaround:"Respiratory/GI pathogen panel"}},priceLabel:"Test Price",offer:{label:"Member exclusive",title:"Early booking discount",off:"OFF",originalPrice:"Original price",todayPrice:"Today",savings:"You save {{currency}} {{amount}} with this booking."},comingSoon:{badge:"Coming soon",title:"PCR booking opens soon",desc:"We are preparing clinic availability for this PCR panel. Booking and payment will be available once the next service window is confirmed.",button:"Coming Soon"},buyNow:"Pay and Book Now",processing:"Preparing checkout...",footnote:"Booking price: {{currency}} {{price}}.",todoNotice:"Booking records are saved for clinic and operations follow-up.",toast:{loginRequiredTitle:"Login required",loginRequiredDesc:"Please log in to create a payment link.",missingFieldsTitle:"Required fields missing",missingFieldsDesc:"Please fill first name, last name, email, phone, pet name, and clinic.",paymentFailedTitle:"Failed to create payment link",paymentFailedDesc:"Please try again later."}},Jm={verifiedTrue:"Pet-friendly verified",petWellVerified:"PetWell Verified",fehdLicensed:"FEHD Licensed",premiumPartner:"Premium Partner",listingAlertTitle:"Notice",listingAlertChip:"Not pet-friendly",notPetFriendly:"Not pet-friendly",petEntryPolicy:{walkInOnly:"Walk-in only",reservationRequired:"Reservation required",both:"Walk-in or reservation"},petAccessArea:{indoorAllowed:"Indoor allowed",outdoorOnly:"Outdoor only"},import:{title:"Restaurant insights",subtitle:"Type, price range, amenities and ratings",types:"Venue type",cuisines:"Cuisine",dishStyles:"Dish style",priceRange:"Price range",amenitiesTitle:"Pet-friendly amenities",amenities:{waterBowl:"Water bowl",dogMenu:"Dog menu",petTreats:"Pet treats",groomingServices:"Grooming",petStore:"Pet store",sanitationKits:"Sanitation kits",photoArea:"Photo spot",petFirstAidKit:"Pet first aid",employeePetTraining:"Staff pet training",nutritionLabelsProvided:"Nutrition labels"}}},Zm={pageTitle:"Animal Welfare Organizations in Hong Kong",subtitle:"Support Animal Welfare - Donate, Volunteer, Make a Difference",description:"Discover local animal NGOs working to protect and care for animals in need",searchPlaceholder:"Search organization name or description...",filterByRegion:"Filter by Region",regions:{all:"All Regions",kowloon:"Kowloon",hongKong:"Hong Kong Island",newTerritories:"New Territories"},noResults:"No organizations found",established:"Established",activeCampaigns:"active campaigns",volunteerEvents:"volunteer events",backToList:"Back to Organizations",notFound:"Organization not found",address:"Address",phone:"Phone",email:"Email",website:"Website",mission:"Our Mission",services:"Services We Provide",donationCampaigns:"Donation Campaigns",donationDescription:"Support our campaigns to make a difference for animals in need",progress:"Progress",donors:"donors",endDate:"End Date",donate:"Donate Now",volunteerDescription:"Join us and make a hands-on difference in animal welfare",requirements:"Requirements",spotsLeft:"spots left",fullBooked:"Full",enroll:"Enroll"},ef={quickLinks:"Quick Links",legal:"Legal",explore:"Go out together",care:"Get care",community:"Community",company:"PetWell",follow:"Follow us",terms:"Terms & Privacy Policy",privacy:"Privacy Policy",copyright:"© 2026 PetWell HK Limited. All rights reserved",tagline:"Hong Kong's first all-in-one pet health management platform",suggestPlace:"Suggest a place",feedback:"Feedback"},tf={suggestTitle:"Suggest a new place",suggestDesc:"Tell us about a pet-friendly place we don't have yet.",suggestTab:"Suggest place",suggestCategory:"Place type",suggestName:"Place name",suggestNamePlaceholder:"Enter place nameâ¦",suggestAddressOptional:"Address (optional)",suggestAddressPlaceholder:"Street, district, or landmarkâ¦",suggestNotesOptional:"Notes (optional)",suggestNotesPlaceholder:"Anything helpful â pet policy, hours, websiteâ¦",suggestSubmit:"Submit suggestion",suggestEmptyCta:"Can't find it? Suggest a new place",successTitle:"Submitted",successDesc:"Thanks. We will follow up soon.",suggestSuccessDesc:"Thank y
454ou. We've received your suggestion and will review it."},of={learnMore:"Learn More",downloadApp:"Download PetWell Now",rating:"Rating",outOf5:"/5",loading:"Loading...",cancel:"Cancel"},nf={open247:"Open 24/7",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday",sun:"Sunday",noInfo:"No information available"},rf={title:"Pet Owners Forum",subtitle:"Share Experiences · Help Each Other · Build a Pet-Friendly Community",loading:"Loading...",error:"Unable to load forum content. Please try again later",noContent:"No discussions yet",retry:"Retry",backToForum:"Back to Forum",replies:"Replies",noReplies:"No replies yet",postNotFound:"Post not found",invalidPostId:"Invalid post ID",searchPlaceholder:"Search posts...",filterCategory:"Category",filterTag:"Tag",allCategories:"All Categories",allTags:"All Tags",sortRecent:"Recent",sortPopular:"Popular",sortReplies:"Most Replies",tableTitle:"Title",tableAuthor:"Author",tableDate:"Date",tableViews:"Views/Replies",tableLastReply:"Last Reply",showingResults:"Showing {{count}} results",pagination:{previous:"Previous",next:"Next"},time:{hoursAgo:"hours ago",daysAgo:"days ago"},forumListCta:{title:"Want to See More Discussions?",description:"Download PetWell App to browse more posts, share your opinions, and interact with other pet owners!",button:"Download PetWell Now"},postDetailCta:{title:"Want to Share Your Opinion?",description:"Download PetWell App to join discussions, leave comments, and share experiences and advice with other pet owners!",button:"Download PetWell Now"},createPost:{button:"Create Post",title:"Create New Post",description:"Share your thoughts, ask questions, or start a discussion with the community",loginRequired:"Login Required",loginRequiredDesc:"Please log in to create a post",titleLabel:"Title",titlePlaceholder:"Enter post title",contentLabel:"Content",contentPlaceholder:"Write your post content here...",tagsLabel:"Tags",tagsPlaceholder:"e.g., clinic, lost pet, advice",tagsHint:"Separate tags with commas (max 10 tags)",categoryLabel:"Category",categoryPlaceholder:"Select category",locationLabel:"Location",locationPlaceholder:"e.g., Hong Kong Island, Kowloon",characters:"characters",creating:"Creating...",submit:"Create Post",error:"Failed to create post. Please try again.",anonymousLabel:"Post Anonymously",anonymousHint:"Your identity will be hidden",editor:{bold:"Bold",underline:"Underline",strikethrough:"Strikethrough",fontSize:"Font Size",small:"Small (12px)",medium:"Medium (24px)",large:"Large (36px)",textColor:"Text Color",insertLink:"Insert Link",urlLabel:"URL",urlPlaceholder:"https://example.com",linkTextLabel:"Link Text (optional)",linkTextPlaceholder:"Click here",alignLeft:"Align Left",alignCenter:"Align Center",alignRight:"Align Right"}},askVet:{cta:"Ask a vet/nurse",feed:"Ask a vet/nurse",queue:"Needs reply",myQuestions:"My questions",composeTitle:"Ask a vet/nurse",composeSubtitle:"Just write the question. Go to a clinic in an emergency.",contentPlaceholder:"Whatâs going on? Species, age, symptoms, and when it started. Photos help.",addPhoto:"Add photos",questionRequired:"Please write your question first.",visibilityLabel:"Who can see this",public:"Public",private:"Private",publicHint:"Others can read this later.",privateHint:"Only you and the team can see this.",disclaimer:"I understand this is not a diagnosis, prescription, or emergency care.",disclaimerRequired:"Please accept the disclaimer first.",submit:"Send",teamReplyHint:"You will reply as the PetWell vet/nurse team",bannerTitle:"Ask a vet/nurse",bannerBody:"Answered by the PetWell vet/nurse team, usually within 24 hours. Ask in public or privately."},sortBy:"Sort By",sortHot:"For you",untitled:"Untitled",desktop:{navLabel:"Forum navigation",discoverLabel:"Search and trending",home:"Home",post:"Post",topics:"Topics",buzzing:"What's happening",replyPlaceholder:"Post your reply",reply:"Reply",photo:"Photo",clearReplyTo:"Cancel reply"},advancedSearch:"Advanced Search",hideAdvancedSearch:"Hide",showAdvancedSearch:"Advanced Search",dateFrom:"Start Date",dateTo:"End Date",selectedTags:"Selected Tags",clearFilters:"Clear Filters",pages:"pages",anonymousUser:"Anonymous User",genericUser:"User",anonymous:"Anonymous",pinned:"Pinned",loadingMore:"Loading more...",selectPost:"Select a post from the left to view content",categories:{DOG:"Dogs",CAT:"Cats",SMALL_ANIMAL:"Small Animals",LIFE_SHARING:"Life Sharing",EVENTS:"Events",ADOPTION:"Adoption",HEALTH:"Health",GROOMING:"Grooming",DIET:"Diet",TRAINING:"Training",BEHAVIOR:"Behavior Issues",PRODUCT_REVIEW:"Product Reviews",TRADING:"Trading",TRAVEL:"Travel",LODGING:"Lodging",LOST_FOUND:"Lost & Found",EMERGENCY:"Emergency"}},af={title:"Delete Account",warning:"This action cannot be undone. Once you delete your account, all your data will be permanently removed.",whatHappens:"What happens when you delete your account?",consequence1:"Your personal information and account details will be permanently deleted",consequence2:"All your pet health records will be removed",consequence3:"You will not be able to register with this email address again",consequence4:"This action cannot be reversed",confirmTitle:"Confirm Deletion",emailLabel:"Confirm Email Address",emailPlaceholder:"Enter your email address",emailHint:"Please enter the email address you used to register your account",typeDelete:"Type 'DELET
454E' to confirm",deletePlaceholder:"DELETE",understand:"I understand this action is irreversible and confirm I want to delete my account",cancel:"Cancel",deleteButton:"Delete Account",finalWarning:"Final Confirmation",finalWarningMessage:"Are you absolutely sure you want to permanently delete your account? This action cannot be undone.",confirmDelete:"Confirm Delete",deleting:"Deleting...",success:"Account Deleted",successMessage:"Your account has been successfully deleted.",error:"Error",errorMessage:"An error occurred while deleting your account. Please try again later or contact support.",confirmError:"Please type 'DELETE' to confirm",checkboxError:"Please confirm you understand the consequences",emailMismatch:"Email address does not match. Please enter the email you used to register"},sf={needsActivation:"This tag needs to be activated",activationDescription:"To view pet information and owner contact details, please download the PetWell App and activate this tag.",downloadPetWell:"Download PetWell Now",alreadyActivated:"Already activated? Please log in to the App to view",foundLostPet:"You found a lost pet!",thankYouMessage:"Thank you for helping this pet. Below is the owner's contact information, please contact them as soon as possible.",age:"Age",yearsOld:"years old",species:"Species",speciesValues:{dog:"Dog",dogs:"Dogs",cat:"Cat",cats:"Cats"},breed:"Breed",weight:"Weight",birthday:"Birthday",microchipId:"Microchip ID",contactOwner:"Contact Owner",callOwnerNow:"Call Owner Now",phoneNotAvailable:"Phone number not available",footer:"Powered by PetWell · Protecting every pet",notActivated:{title:"Pet is Not Activated",description:"This pet tag hasn't been activated yet. Activate it now to help protect your pet from getting lost.",cta:"Activate Now"}},lf={externalUserFrom:"External User from {{source}}",fromGoogle:"Google review"},cf={alreadyActivated:{title:"Pet is Already Activated",description:"This pet tag has already been activated. You can view the pet's information.",cta:"View Pet Info"}},df={seo:{title:"Download PetWell App | Hong Kong Pet Health",description:"Free download of PetWell â Hong Kong vet clinic reviews, pet-friendly restaurants, health records and price alerts. Available on iOS and Android.",keywords:"PetWell App, download pet app, Hong Kong pet health, vet clinic app, pet-friendly restaurants app"},eyebrow:"Free · iOS and Android",title:"Hong Kong pet life",titleHighlight:"in your pocket.",subtitle:"Free on iPhone and Android.",aboutCta:"Want to know more? About us",subtitle1:"Hong Kong's First Pet Health Management Platform",subtitle2:"All-in-One Care for Your Furry Friend",primaryIos:"Download on the App Store",primaryAndroid:"Get it on Google Play",openStore:"Open the app store",scanLabel:"Scan to download",scanHint:"Point your camera at the QR code to open the matching store.",storesLabel:"Choose your store",recommended:"Recommended",appStoreAlt:"Download PetWell on the App Store",playStoreAlt:"Get PetWell on Google Play",previewAlt:"PetWell app screens: clinic search, price comparison, and pet-friendly restaurants",whyEyebrow:"Why the app",whyTitle:"The web is for browsing. The app is for keeping up.",reasons:{alerts:{title:"Price and emergency alerts",description:"Deals, wishlists, and 24-hour clinic info reach your phone first."},records:{title:"Health records with you",description:"Vaccines, ER visits, and medications stay on file when you switch vets."},places:{title:"Hong Kong, searchable",description:"200+ clinics and 1,500+ pet-friendly restaurants â maps, phone, reviews."},free:{title:"Completely free",description:"Download, reviews, and health records cost nothing."}},ctaTitle:"Limited-time offer",ctaDescription:"After you install the app, reserve a free anti-lost smart pet tag.",feature1:"Real-time GPS tracking",feature2:"One-tap owner contact",feature3:"Lifetime warranty service",ctaButton:"Claim a free smart pet tag",disclaimer:"Limited quantity, while supplies last.",faqTitle:"Download questions",faq:{platforms:{question:"Which phones are supported?",answer:"iPhone via the App Store and Android via Google Play. Search âPetWell HKâ â itâs free."},needApp:{question:"Do I have to download the app?",answer:"The website is enough for browsing restaurants and clinics. The app is for alerts, health records, and checking emergency clinics on the go."},desktop:{question:"How do I download from a computer?",answer:"Scan the QR code on this page with your phone, or open the App Store / Google Play and search PetWell HK."}}},uf={status:{startingSoon:"Starting Soon",upcoming:"Upcoming",ongoing:"Ongoing",completed:"Finished",cancelled:"Cancelled"},featured:"Featured activity",featuredBadge:"Featured",filters:{allStatuses:"All Statuses"},categories:{ADOPTION:"Adoption",MARKET:"Pet Market",EXPO:"Pet Expo",WORKSHOP:"Workshop / Class",CHARITY:"Charity",MEETUP:"Pet Meetup",PET_FRIENDLY:"Pet-fr
454iendly Event",OTHER:"Other Event"},detail:{invalidId:"Invalid event ID",notFound:"Event not found",loadFailed:"Failed to load event",backToEvents:"Back to events",defaultSeoDescription:"Hong Kong pet event information",unknownOrganizer:"Organizer not provided",officialInfo:"Official info",date:"Date",location:"Location",organizer:"Organizer",price:"Price",notProvided:"Not provided",free:"Free",aboutEvent:"About This Event",remark:"Remark",allFields:"Event Data",category:"Category",statusLabel:"Status",organizerEmail:"Organizer email",dateTime:"Start time",deadline:"Deadline / end time",openTime:"Open time",closeTime:"Close time",address:"Address",district:"District",capacity:"Capacity",attendees:"Attendees",paymentRequired:"Payment required",redirection:"External link",redirectedUrl:"Official / registration link",photoCount:"Photo count",createdAt:"Created at",updatedAt:"Updated at",unlimited:"Unlimited",yes:"Yes",no:"No",photos:"Event Photos",endDate:"End time",hours:"Opening hours",where:"Where",availability:"Availability",spotsLeft:"{{count}} spots left",openOfficialLink:"Open official / registration page",noOfficialLink:"No official link provided",quickInfo:"Quick Info",hasOfficialLink:"Official link available",hasI18n:"Chinese and English content available"}},pf={title:"Admin Forms",redirecting:"Redirecting to Google Form..."},hf={ariaLabel:"Anti-lost smart tag promotion",badge:"Free",title:"Smart Anti-Lost Tag",subtitle:"NFC tap-to-read â help reunite lost pets faster",progressLabel:"Registration",cta:"Register"},mf={eyebrow:"Limited free offer",title:"Get a free PetWell anti-lost name tag",tagline:"Like Octopus â one tap shows your petâs private page",time:"Done in about 1 minute",urgency:"Limited spots â first come, first served.",cta:"Claim for free",imageAlt:"PetWell Paws Port anti-lost name tag promo"},ff={title:"Furkid Immersive Taiwan Mid-Autumn Festival",description:"25â27 Sep 2026 at AquaBeat, Kwun Tong Promenade. Free entry, pets welcome. Swipe for event details.",page1Alt:"Furkid Immersive Taiwan Mid-Autumn Festival poster",page2Alt:"Furkid Immersive Taiwan Mid-Autumn Festival activity details"},gf={allProducts:"All Products",cart:"Cart",backToList:"Back to Products",productNotFound:"Product Not Found",productNotFoundDesc:"This product may not exist or has been removed",customizable:"Customizable",selectOption:"Select Option:",uploadPhoto:"Upload Pet Photo:",chooseFile:"Choose File",noFileChosen:"No file chosen",uploadedPreview:"Uploaded pet photo preview:",selected:"Selected:",dimensions:"Dimensions:",dimensionsLabel:"Dimensions",material:"Material:",selectOptionForPrice:"(Select option to see price)",quantity:"Quantity",quantityLabel:"Quantity:",addToCart:"Add to Cart",buyNow:"Buy Now",productDetails:"Product Details",shippingPayment:"Shipping & Payment",shippingInfo:"Free shipping in HK (orders over HK$300)",paymentMethods:"Payment: PayMe / Bank Transfer / FPS",processingTime:"Processing time: 3-5 business days",selectOptionError:"Please select an option",selectOptionErrorDesc:"Please select a product option before adding to cart",uploadPhotoError:"Please upload a photo",uploadPhotoErrorDesc:"This product requires a pet photo",addedToCart:"Added to Cart",addedToCartDesc:"has been added to your cart",priceViewHint:"Please select style to view total price",items:"items",specs:{redPocketPaper:"200g Matte Coated Pa
454per",petBackpackMaterial:"Plush",rectangle:"Rectangle",diamond:"Diamond",rectangleSpecs:"10.5 à 29.7 cm · 128g Glossy Paper",diamondSpecs:"21 à 21 cm · 128g Glossy Paper"},shippingInfoDetails:{freeShippingThreshold:"Free shipping for orders over HK$200",sfExpress:"SF Express +$30",regularMail:"Regular Mail +$15",paymentMethods:"Payment: FPS / Bank Transfer / PayMe / Alipay",emailNotification:"Payment details will be sent via email after order confirmation",shippingDeadline:"All products will be shipped before February 12",imageDisclaimer:"Images are for reference only, actual products may vary",inquiry:"Inquiry:",whatsapp:"WhatsApp"},priceViewDetails:"Please check details for price",categories:{accessory:"Accessory",decoration:"Decoration",toy:"Toy",gift:"Gift"},discountBanner:{title:"PetWell Members Get 10% Off!",description:"Use your registered PetWell App email at checkout to automatically receive 10% discount",cta:"Download App Now"}},yf={title:"Fill Order Information",name:"Name",namePlaceholder:"Enter your name",email:"Email",emailPlaceholder:"[email protected]",phone:"Phone Number",phonePlaceholder:"12345678",phoneHint:"Please enter an 8-digit phone number",shippingAddress:"Shipping Address",shippingAddressPlaceholder:"Enter your complete shipping address",remark:"Remark (Optional)",remarkPlaceholder:"If you have special requirements or remarks, please enter them here",submit:"Proceed to Payment",backToCart:"Back to Cart",emptyCart:"Cart is Empty",emptyCartDesc:"Please select products before checkout",browseProducts:"Browse Products",orderSummary:"Order Summary",total:"Total",deliveryOption:"Delivery Option",sfExpress:"SF Express",regularMail:"Regular Mail",freeShipping:"Free",freeShippingThreshold:"Free shipping for orders over HK$200",shippingFee:"Shipping Fee",contactInfoReminder:"Important Notice",contactInfoReminderDesc:"Please ensure the contact information you provide is accurate so we can reach you. If you choose to upload pet photos later, we will contact you via the email or phone number you provided.",nameError:"Please enter your name",emailError:"Please enter your email",emailInvalid:"Please enter a valid email address",phoneError:"Please enter your phone number",phoneInvalid:"Please enter a valid phone number (8 digits)",shippingAddressError:"Please enter shipping address",validationError:"Please check your input",validationErrorDesc:"Please fill in all required fields",subtotal:"Subtotal",discount:"Discount",memberDiscount:"Member Discount {{percent}}%",discountApplied:"{{percent}}% member discount applied!",discountInfo:"PetWell users get 10% off! Use your registered email address.",downloadAppLink:"Download PetWell App now"},vf={title:"Upload Payment Proof",backToCheckout:"Back to Checkout",paymentMethod:"Payment Method",paymentMethodDesc:"Please complete payment and upload a screenshot as proof. We will process your order after confirming payment.",paymentInfo:"Payment Information:",paymentInfoDetails:"Bank Transfer / FPS / Other Payment Methods",paymentInfoNote:"(Payment details will be sent via email after order submission)",paymentProof:"Payment Proof Screenshot",uploadPaymentProof:"Click to upload payment screenshot",uploadPaymentProofHint:"Supports JPG, PNG formats, file size not exceeding 5MB",paymentProofPreview:"Payment Proof Preview",submitOrder:"Submit Order",processing:"Processing...",orderSummary:"Order Summary",name:"Name",email:"Email",phone:"Phone Number",shippingAddress:"Shipping Address",deliveryMethod:"Delivery Method",sfExpress:"SF Express",regularMail:"Regular Mail",shippingFee:"Shipping Fee",freeShipping:"Free",remark:"Remark",total:"Total",uploadPaymentProofError:"Please upload payment proof",uploadPaymentProofErrorDesc:"Please upload payment screenshot before submitting order",fileTooLarge:"File Too Large",fileTooLargeDesc:"Please upload an image smaller than 5MB",invalidFileType:"Invalid File Type",invalidFileTypeDesc:"Please upload an image file",invalidFileTypeDetailed:"Unsupported file format: {{fileType}}. Please upload an image file in JPG, PNG, WEBP, or HEIC format.",supportedFormats:"Supported formats: JPG, PNG, WEBP, HEIC",unknownFormat:"Unknown Format",orderSuccess:"Order Submitted Successfully!",orderSuccessDesc:"We have received your order and will process it as soon as possible.",orderError:"Submission Failed",orderErrorDesc:"An error occurred while submitting the order. Please try again later or contact us.",cannotContinue:"Cannot Continue",cannotContinueDesc:"Please complete order information first",petPhotoUpload:{title:"Upload Pet Photos",description:"Your order
454contains customizable products. Please upload pet photos to complete your order.",uploadNow:"Upload Now",uploadLater:"Upload Later",uploadLaterDesc:"If you choose to upload later, we will contact you via the contact information you provided to request pet photo upload.",uploadNowDesc:"Please upload pet photos for each customizable product",noCustomizableProducts:"Your order does not contain customizable products. No pet photo upload is required.",missingPhotos:"Please upload photos for the following products: {{products}}",changeMind:"Change Selection",edit:"Edit",reset:"Reset",resetSuccess:"Reset",resetSuccessDesc:"Photo removed, please upload again",uploadPhoto:"Upload Photo",changePhoto:"Change Photo"},productImageEditor:{title:"Edit Product Design",uploadPhoto:"Upload Photo",processing:"Processing",processingDesc:"AI processing takes time, please be patient and don't leave the page",processingText:"Processing, please wait...",waitReminder:"â±ï¸ AI processing takes time, please be patient and don't leave the page",addDecoration:"Add Festive Decoration",confirm:"Confirm",confirmDesign:"Confirm Design",cancel:"Cancel",uploadHint:"ð¤ AI auto-detects pet head, drag to adjust position and size",photoGuidance:"ð· Please upload a clear pet photo for accurate AI detection. For any issues,",whatsappUs:"WhatsApp us",aiMode:"",front:"Front",back:"Back",emptyState:"Upload pet photos to start designing",instructions:{click:"",resize:"",rotate:"",scale:"",multiple:""},controls:{rotateLeft:"Rotate Left",rotateRight:"Rotate Right",zoomIn:"Zoom In",zoomOut:"Zoom Out",delete:"Delete"},viewControls:{locked:"Locked",unlocked:"Drag",lockTitle:"Unlock drag to move",unlockTitle:"Lock drag to move",altDragTip:"Alt+Drag to move"},longProcessing:{title:"Processing Taking Longer",description:"The uploaded photo may be large and requires more time to process, please be patient..."},error:{title:"Error",generic:"AI detection failed, please try again later",timeout:"AI processing timeout, please try uploading a smaller image or try again later",memory:"AI processing out of memory, please try uploading a smaller image or try again later",server:"AI service temporarily unavailable, please try uploading a smaller image or try again later",network:"Network connection error, please check your internet connection and try again"}},uploadPayment:{title:"Order Details & Upload",description:"View your order details and upload payment proof or custom product images.",loading:"Loading order information...",orderNotFound:"Order Not Found",orderNotFoundDesc:"This order could not be found. Please verify the order ID is correct.",alreadyUploaded:"Payment Proof Already Uploaded",alreadyUploadedTitle:"Payment Proof Already Uploaded",alreadyUploadedDesc:"Payment proof for this order has already been uploaded. If you need to upload again, please contact us.",contactWhatsApp:"Contact WhatsApp {{number}}",backToProducts:"Back to Products",orderId:"Order ID",customerName:"Customer Name",customerEmail:"Customer Email",customerPhone:"Customer Phone",shippingAddress:"Shipping Address",deliveryOption:"Delivery Option",shippingFee:"Shipping Fee",totalPrice:"Total Price",orderDate:"Order Date",orderItems:"Order Items",noItems:"No items found",customProduct:"Custom Product",uploadCustomProduct:"Upload Custom Product Image",customProductUploaded:"Custom Product Image Uploaded",uploadCustomProductDesc:"Upload your custom product image for this item. You can use AI head detection or upload manually.",noCustomImage:"No custom image uploaded yet",uploading:"Uploading...",submit:"Submit Payment Proof",uploadCustomImage:"Upload Custom Image",updateCustomImage:"Update Custom Image",customImageSuccess:"Custom Image Uploaded Successfully!",customImageSuccessDesc:"Your custom product image has been uploaded successfully.",customImageError:"Upload Failed",customImageErrorDesc:"An error occurred while uploading custom image. Please try again later.",success:"Payment Proof Uploaded Successfully!",successDesc:"Your payment proof has been uploaded successfully. We will process your order as soon as possible.",error:"Upload Failed",errorDesc:"An error occurred while uploading payment proof. Please try again later or contact us.",orderDetails:"Order Details",contactInfo:"Contact Information",needHelp:"Need Help?",contactUsDesc:"If you have any questions about your order, please contact us via WhatsApp."}},wf={emptyCart:"Cart is Empty",emptyCartDesc:"Go shop for your favorite products!",browseProducts:"Browse Products",orderConfirmation:"Order Confirmation",orderConfirmationDesc:"Please confirm your order details, then proceed to checkout",orderItems:"Order Items",itemsCount:"items",spec:"Spec:",customImageUploaded:"Custom Image Uploaded",removed:"Removed",removedDesc:"Item has been removed from cart",clearCart:"Clear Cart",cleared:"Cleared",clearedDesc:"Cart has been cleared",orderSummary:"Order Summary",totalItems:"Total Items",itemsUnit:"items",total:"Total",proceedToCheckout:"Proceed to Checkout",continueShopping:"Continue Shopping",shippingInfo:"⢠Free shipping for orders over HK$200<br />⢠SF Express +HK$30 ï½ Regular Mail +HK$15",freeShippingPrompt:"Spend HK${{amount}} more to get free shipping!",freeShippingQualified:"You qualify for free shipping!"},bf={title:"The Ultimate Pet Matchmaker: Fur, Feathers, or Scales?",intro:"Finding the right pet isn't just about what's cuteâit's about matching their lifestyle to yours. From the chirpy energy of a bird to the quiet hops of a rabbit, let's find out who your soul-pet actually is. Answer these 5 questions!",question:"Question",of:"of",restart:"Take Quiz Again",outcomes:{dog:{title:"You should get a Dog!",description:"You have an active lifestyle and plenty of love to give. You want a partner in crime who will go outside with you, greet you enthusiastically, and participate in y
454our daily routine. You don't mind a little noise or mud."},cat:{title:"You should get a Cat!",description:"You want a companion who is affectionate but independent. You appreciate a pet that fits into your current routine without needing constant supervision. You like quiet evenings and warm snuggles on the sofa."},bird:{title:"You should get a Bird!",description:"You are smart, social, and maybe a little quirky! You don't mind noise (in fact, you might like the singing or talking) and you want a pet that is highly intelligent and interactive. You are okay with cleaning up seeds and feathers."},rabbit:{title:"You should get a Rabbit!",description:"You want something softer and quieter than a dog, but more interactive than a hamster. You have space for them to hop around safely and you don't mind pet-proofing your cords. You love the idea of a gentle, social vegetarian friend."},reptile:{title:"You should get a Reptile or Fish!",description:"You prefer a low-pressure pet that is fascinating to observe. You might have allergies, or you simply prefer a quiet home. You enjoy curating a habitat (tank or terrarium) and appreciate the aesthetic of a pet that doesn't demand constant physical affection."}},questions:{q1:{question:"Let's talk about noise. What is your tolerance level?",a:"I don't mind barking or active noise; a quiet house feels empty!",b:"I like it mostly quiet, just some occasional meows or purring.",c:"I love chatter, whistling, or even some loud squawkingâit's festive!",d:"I prefer almost total silence, maybe just some gentle chewing sounds.",e:"I want zero noise from my pet."},q2:{question:"How much space can you dedicate to a pet?",a:"I have a yard or access to parks and plenty of floor space.",b:"My apartment/house is their kingdom; they can roam everywhere.",c:"I have space for a large vertical cage and room for them to fly safely.",d:'I have a designated "pen" area or a room where they can hop freely.',e:"I have a sturdy table or shelf for a tank/enclosure, but limited floor space."},q3:{question:'What kind of "mess" are you willing to deal with?',a:"Muddy paws, shed hair, and slobber.",b:"Dealing with a litter box and occasional scratched furniture.",c:"Seeds, hulls, and feathers scattered around a cage.",d:"Hay... lots of hay. And cleaning a litter tray daily.",e:"Cleaning algae or changing bedding/water once a week."},q4:{question:"How do you want to interact with your pet?",a:"Wrestling, running, and high-energy play.",b:"Petting them while I watch TV, or playing with a laser pointer.",c:"Teaching them tricks, whistling tunes, or having them sit on my shoulder.",d:"Sitting on the floor with them and letting them nudge me for treats.",e:"Watching them explore their tank; looking but not touching."},q5:{question:"If you leave the house for 8 hours, what is your pet doing?",a:"Waiting by the door (or maybe needing a dog walker).",b:"Sleeping in a sunbeam, completely unbothered.",c:"Playing with toys in their cage, possibly listening to the radio I left on.",d:"Sleeping in their hutch or safe pen area with plenty of hay.",e:"Just swimming or basking under their heat lamp."}}},Pf={learnMore:"Discuss media partnership",hero:{badge:"Business · Data-driven",title:"Reach Hong Kong pet owners",subtitle:"Hong Kong's first AI-powered pet health tech platform â media promotion and merchant partnerships backed by verified data. Featured in major press; App Store Lifestyle Top 9.",trust:{media:"ViuTV · Now TV · AM730 · Yahoo",appStore:"App Store Top 9",platform:"AI-powered · Data verified"},eventsCta:"Visit events site",kolCaption:"KOL campaign examples",kolVisualLabel:"Sample KOL pet collaboration content",showcaseHint:"Move your mouse to explore · hover a card for service highlights"},sections:{marketing:{eyebrow:"Promotion",title:"Multi-channel media services",subtitle:"From owned channels to KOL partnerships â every service comes with measurable reach."},platform:{eyebrow:"Platform listing",title:"Publish on PetWell",subtitle:"Events, restaurants, shop prices â verified and live to pet owners across Hong Kong."}}
454,audiences:{intro:{title:"What we offer",subtitle:"Choose your path and explore the services that fit"},viewMore:"View services",enterprise:{eyebrow:"Brands · Large events",title:"Media promotion",subtitle:"Website, app, Instagram, KOL partnerships, and event planning.",cardTagline:"Multi-channel reach, KOL collabs, and event planning at scale",imageAlt:"PetWell pet event on-site",cta:"Discuss media partnership"},smallBusiness:{eyebrow:"Small business",title:"Platform listings",subtitle:"List events, restaurants, or shop prices â reach pet owners across Hong Kong.",cardTagline:"Free listings, self-service updates, direct reach to pet owners",imageAlt:"Merchant engaging pet owners at a PetWell event",cta:"Discuss media partnership"}},gallery:{eyebrow:"Case studies",title:"Recent events & KOL work",subtitle:"Mall pop-ups, brand collabs, KOL trials, and on-site events â real campaign footage.",imageCount:"{{count}} campaign assets",viewHint:"Hover to pause · click any image to enlarge",openImage:"View campaign image {{index}}",lightboxTitle:"Case study {{current}} of {{total}}",prev:"Previous",next:"Next"},channels:{websiteAds:{title:"Website advertising",summary:"Banner or featured content on PetWell's website and SEO blog â reaching users searching for pet info.",imageAlt:"PetWell website platform",kpis:{a:{value:"3,000",label:"Daily page views"},b:{value:"14,700+",label:"Peak single day"},c:{value:"SEO",label:"Organic blog traffic"}}},appAds:{title:"In-app advertising",summary:"Banners, push notifications, and activity sections â reaching verified pet owners directly.",imageAlt:"PetWell app activities screen",kpis:{a:{value:"7,500+",label:"Verified users"},b:{value:"Top 9",label:"Lifestyle app rank"},c:{value:"Push",label:"Targeted alerts"}}},igAds:{title:"Instagram promotion",summary:"Posts, Stories, and Reels produced and published by the PetWell team.",imageAlt:"PetWell Instagram Reels content",kpis:{a:{value:"4,000+",label:"IG followers"},b:{value:"10%+",label:"Avg. engagement"},c:{value:"All formats",label:"Post / Story / Reel"}}},edm:{title:"Email (EDM)",summary:"Send event invites to verified email users â not dependent on social algorithms.",imageAlt:"PetWell community content example",kpis:{a:{value:"3,000+",label:"Verified emails"},b:{value:"100%",label:"Pet-related users"},c:{value:"Direct",label:"Inbox delivery"}}},kol:{title:"KOL partnerships",summary:"80+ Hong Kong pet KOLs â from product trials to event check-ins, real pet accounts drive word-of-mouth and reach.",imageAlt:"PetWell brand collaboration gift set",kpis:{a:{value:"80+",label:"KOL partners"},b:{value:"~60K",label:"Reels views"},c:{value:"Targeted",label:"Pet account audience"}}},eventPlanning:{title:"Event planning & on-site",summary:"Markets, pop-ups, mall activations â from promotion to on-site photo/video and consulting.",imageAlt:"Pet event scene",kpis:{a:{value:"Omni",label:"Online + offline"},b:{value:"On-site",label:"Photo & video"},c:{value:"AI",label:"Short-form video"}}},listEvent:{title:"List your event",summary:"Publish on PetWell's activities section with in-app registration and member perks.",imageAlt:"PetWell app event listing",kpis:{a:{value:"In-app",label:"Registration"},b:{value:"HK-wide",label:"Event exposure"},c:{value:"Members",label:"Exclusive deals"}}},listRestaurant:{title:"Add your restaurant",summary:"Pet-friendly restaurants verified by phone before publishing â attracting diners with pets.",imageAlt:"Pet-friendly restaurant promotion",kpis:{a:{value:"1,500+",label:"Listed restaurants"},b:{value:"18",label:"HK districts"},c:{value:"Verified",label:"Team confirmed"}}},updatePrices:{title:"Update shop prices",summary:"Verified merchants can self-update product prices and promotions anytime.",imageAlt:"",kpis:{a:{value:"Live",label:"Price updates"},b:{value:"Push",label:"Sale alerts"},c:{value:"Free",label:"Merchant signup"}}},openAccount:{title:"Open merchant account",summary:"Apply as a verified partner â manage your shop and earn the verified badge.",imageAlt:"",kpis:{a:{value:"Verified",label:"Trust badge"}
454,b:{value:"Self-serve",label:"Dashboard"},c:{value:"Exposure",label:"Platform listing"}}}},results:{eyebrow:"Platform data",title:"Platform performance",subtitle:"Real operational data â not estimates.",groups:{reach:{title:"Platform reach",subtitle:"Multi-channel coverage across Hong Kong pet owners"},engagement:{title:"Engagement",subtitle:"How our community interacts with content"},scale:{title:"Partnership scale",subtitle:"Network depth and collaboration volume"}},appUsers:{value:"7,500+",label:"Verified app users"},igFollowers:{value:"4,000+",label:"IG followers"},dailyViews:{value:"3,000",label:"Daily site views"},kolPartners:{value:"80+",label:"KOL partners"},peakViews:{value:"14,700+",label:"Peak daily views"},igEngagement:{value:"10%+",label:"Avg. IG engagement"},reelsViews:{value:"60K+",label:"Reels views"},restaurants:{value:"1,500+",label:"Listed restaurants"},appStoreTop:{value:"Top 9",label:"Lifestyle downloads"}},trust:{eyebrow:"In the press",subtitle:"Featured by ViuTV, Now TV, AM730, Yahoo, Sing Tao, and more"},partnership:{highlight:{title:"Become a PetWell verified partner",desc:"For pet shops, brands, or long-term merchants â manage your own prices with platform trust.",item1:"Self-service price and promotion updates",item2:"Verified badge on your listing",item3:"Push alerts to tracking users",cta:"Discuss media partnership",asideLabel:"Is this for you?",asideTitle:"If you're a pet shop or brand",asideDesc:"Free to register, update prices yourself, and reach pet owners across Hong Kong. Tap below for details and application."}},seo:{title:"Other Services | PetWell Advertising & Partnership Programme",description:"PetWell offers business services: website and app ads, Instagram promotion, event planning, plus event listings, restaurant onboarding, price updates, and merchant accounts.",keywords:"PetWell advertising,pet app ads Hong Kong,pet event planning,PetWell partnership,merchant programme,pet-friendly restaurant listing",structuredName:"PetWell Other Services"}},xf={sendMessage:"Send Message",submitting:"Submitting...",faqTitle:"PetWell FAQ",directAnswer:{question:"What pet app do you recommend in Hong Kong?",answer:"PetWell is Hong Kong's first all-in-one pet health management app, offering free clinic reviews, pet-friendly restaurant recommendations, and pet activity listings. Browse 200+ vet clinics with real user reviews to find the best care for your pet."},media:{eyebrow:"In the press",ariaLabel:"Media and organisations that have featured PetWell"},mission:{eyebrow:"Our story",title:"Why PetWell exists",paragraph1:"While caring for pets, PetWell saw serious problems in Hong Kong's pet industry â above all, a lack of transparency. Our pets are family, and we have a responsibility to give them the best care.",paragraph2:"Until now, pet owners had no central platform to collect reviews for vets, groomers, behaviourists, and more â leav
454ing their pets' wellbeing to chance. Through PetWell, we want owners to feel less helpless, simplify pet care, and bring positive change to the industry so more pets and owners can enjoy better lives together."},contact:{title:"Contact us",description:"If any information is incorrect or needs updating, leave your question or feedback below and we'll get back to you as soon as possible."},faq:{q1:"What is the PetWell app and what does it do?",a1:"PetWell is Hong Kong's first all-in-one pet health management app â clinic reviews, pet-friendly restaurants, activity listings, and health records. Completely free to download and use.",q2:"How do I find a good vet clinic?",a2:"In the PetWell app, browse 200+ vet clinics with real user reviews, fee references, and services. Filter for 24-hour emergency vets to find the best fit for your pet.",q3:"Where are pet-friendly restaurants in Hong Kong?",a3:"PetWell lists 1500+ verified pet-friendly restaurants across Hong Kong Island, Kowloon, and the New Territories. Each is phone-verified by our team, with indoor/outdoor and walk-in/booking details.",q4:"What pet activities are good for dogs?",a4:"PetWell regularly updates pet events across Hong Kong â markets, parties, dog carnivals, and pet-friendly mall activities. Check the app for the latest and plan great weekends for your pet!"},form:{firstName:"First name *",firstNamePlaceholder:"Enter first name",firstNameRequired:"Please enter your first name",lastName:"Last name *",lastNamePlaceholder:"Enter last name",lastNameRequired:"Please enter your last name",email:"Email *",emailPlaceholder:"[email protected]",emailInvalid:"Please enter a valid email address",phone:"Contact number *",phonePlaceholder:"Enter contact number",phoneRequired:"Please enter your contact number",message:"Comment or message *",messagePlaceholder:"Enter your message",messageRequired:"Please enter your message",privacyLabel:"I confirm that personal data I submit to PetWell HK will be used in accordance with the PetWell HK Privacy Statement. *",privacyRequired:"Please confirm you have read the privacy statement",successTitle:"Message sent",successDescription:"We'll reply to your enquiry as soon as possible.",errorTitle:"Submission failed",errorDescription:"Please try again later or contact us directly."},seo:{title:"About PetWell | Hong Kong Pet Health App | Contact Us",description:"PetWell is Hong Kong's first all-in-one pet health management app. Our mission is to improve transparency in the pet industry and help owners care for their pets. Contact us.",keywords:"PetWell,Hong Kong pet app,pet health management,pet industry transparency,about PetWell,contact PetWell",structuredName:"About PetWell",structuredDescription:"Hong Kong's first all-in-one pet health management app",orgDescription:"Improving pet industry transparency and helping owners care for their pets"}},Sf={label:"Contact Us",close:"Close"},Tf={seo:{title:"PetWell HK | Hong Kong Pet Health App | Clinics, Restaurants, Forum",description:"PetWell â Hong Kong's first all-in-one pet health app. Vet clinic reviews, pet-friendly restaurants, grooming, lodging, activities and forum. Free download.",keywords:"PetWell,Hong Kong pets,pet health app,vet clinic reviews,pet-friendly restaurants,pet grooming,pet lodging,pet forum,pet activities",structuredName:"PetWell HK - Hong Kong's go-to pet platform",structuredDescription:"PetWell HK â Hong Kong's first all-in-one pet health app. Vet reviews, pet-friendly restaurants, grooming, lodging, activities and forum."}},Af={back:"Back",email:"Email",emailPlaceholder:"[email protected]",emailInvalid:"Please enter a valid email address",submit:"Submit",changeEmail:"Change",verifyEmail:"Verify Email",verificationCode:"Verification Code",noRecieveCode:"Didn't receive code?",wait:"Wait",getNewCode:"seconds to resend",resendCode:"Resend Code",fillConfirmationCode:"Please enter the verification code",unknownError:"An unknown error occurred",failedToResendCode:"Failed to resend code",login:"Login",logout:"Logout",welcomeBack:"Welcome to PetWell",enterYourEmailToContinue:"Enter your email to sign in or create an account",orContinueWith:"Or continue with",continueWithGoogle:"Continue with Google",continueWithApple:"Continue with Apple",redirectingToProvider:"Redirecting...",getCode:"Continue with Email",otpSentTo:"We sent a verification code to",otpExplanation:"Already use Google or Apple? Sign in with the same method you registered with.",verifyAndLogin:"Verify & Login",verifying:"Verifying...",finishingSocialLogin:"Finishing your sign-in",socialLoginFailed:"Social login failed. Please try again.",returnHome:"Return Home",completeProfile:"Complete Your Profile",completeProfileDesc:"Tell us a little about you so we can finish creating your account",profileFormHint:"Please use your real details. Hong Kong phone numbers use a fixed +852 prefix, and weight is recorded in kg.",firstName:"First Name",firstNamePlaceholder:"e.g. Chris",firstNameRequired:"Please enter your first name",lastName:"Last Name",lastNamePlaceholder:"e.g. Wong",lastNameRequired:"Please enter your last name",phone:"Phone Number",phonePlaceholder:"12345678",phoneHint:"Enter your 8-digit Hong Kong phone number. We will add +852 automatically.",phoneInvalid:"Please enter a valid 8-digit Hong Kong phone number",weight:"Weight",weightPlaceholder:"e.g. 60",weightHint:"Please enter your weight in kilograms (kg).",weightInvalid:"Please enter a valid weight in kg",password:"Create Password",loginPassword:"Password",passwordPlaceholder:"Enter your password",passwordRequired:"Please enter your password",passwordHint:"At least 8 characters, including letters and numbers.",passwordInvalid:"Password must be at least 8 characters and include both letters and numbers",
454invalidCredentials:"Incorrect email or password. Please try again.",enterPasswordToContinue:"This email is already registered. Enter your password to continue",forgotPassword:"Forgot password?",confirmPassword:"Confirm Password",confirmPasswordPlaceholder:"Re-enter your password",passwordsDoNotMatch:"Passwords do not match",creatingAccount:"Creating Account...",completeSignup:"Create Account",continueBtn:"Continue",skipBtn:"Skip for now",tooManyRequests:"Too many requests. Please wait a few minutes.",accountLocked:"Account temporarily locked",accountTemporarilyLocked:"Account temporarily locked. Please try again later.",failedToLogin:"Failed to login",setNewPassword:"Set a new password",newPasswordRequiredDesc:"This account needs a new password before you can sign in.",savingPassword:"Saving..."},Ef={signInMethodHint:"Use the same sign-in method you registered with. Email/password and Google are separate until linked.",socialOnlyGoogle:"This account uses Google sign-in. Please tap Continue with Google.",socialOnlyApple:"This account uses Apple sign-in. Please tap Continue with Apple.",socialOnlyBoth:"This account uses Google or Apple sign-in. Please use your social sign-in method.",socialOnlyGeneric:"This account does not use email and password. Please use your original sign-in method.",useExistingLogin:"An account already exists for this email. Please sign in instead of creating a new account.",finishSetupFailed:"Signed in, but we couldn't finish setup. Please try again.",linkAccountTitle:"Link your account",linkAccountDescription:"An email/password account already exists for this address. Enter your password to link your social sign-in.",linkAccountPassword:"Account password",linkAccountSubmit:"Link account",linkAccountSuccess:"Account linked. Continue with Google again to open your existing pets and profile.",linkAccountInvalidPassword:"Incorrect password. Please try again.",linkAccountTempPasswordRequired:"This account still needs an email login first. Sign in with email, set your permanent password, then try Google again.",linkAccountTempPasswordHint:"Nametag / mailed login users: finish email sign-in and change the temporary password before linking Google.",linkAccountAuthFlowError:"Account linking is temporarily unavailable on the server. Please try again after the next update, or contact support.",linkAccountServerError:"Could not link accounts right now. Please try again in a moment.",linkAccountMergeError:"Could not link this Google login. Please try again, or contact support.",linkAccountNativeMissing:"No email/password account was found for this address. Sign in with email first, or contact support.",setPasswordTitle:"Set a password",setPasswordDescription:"Add a password so you can also sign in with email.",setPasswordSubmit:"Save password",setPasswordSuccess:"Password saved. You can now sign in with email and password.",federatedOnlyGoogle:"This account uses Google sign-in. Password reset is not available â please continue with Google.",federatedOnlyApple:"This account uses Apple sign-in. Password reset is not available â please continue with Apple.",federatedOnlyBoth:"This account uses Google or Apple sign-in. Please use your social sign-in method."},kf={hero:{badge:"Limited Free Giveaway",title:"Get Your Free PETWELL",titleHighlight:"Anti-Lost Pet Tag",line1:"Smart anti-lost pet tag",tapBadge:"Like Octopus · tap to read",line2:"Tap with a phone to view key pet details",summaryPrimary:"Limited quota, first come first served. Complete registration in around 2 minutes to set up your pet's anti-lost tag.",summarySecondary:"No charging needed. A simple phone touch helps good samaritans quickly access info and contact the owner.",searchIntent:"Prepare before it happens â set up your pet's anti-lost tag early for extra peace of mind."},benefits:{one:{title:"Anti-Lost Protection",desc:"Quick scan to help people contact the owner"},two:{title:"Tap to Read",desc:"As simple as tapping Octopus â phone touch to read"},three:{title:"Free Registration",desc:"Limited quantity available"}},socialProof:{eyebrow:"Real pet parents",title:"Thousands of owners already received their tags",subtitle:"Actual delivery and unboxing moments from Instagram â see how PetWell anti-lost tags give pets an extra layer of safety.",ariaLabel:"Scrolling gallery of pet owners receiving name tags"},seo:{title:"Anti-Lost Dog Tag Hong Kong | é²èµ°å¤±çç Free Registration | PetWell HK",de
454scription:"Looking for é²èµ°å¤±çç? Register a free PetWell NFC anti-lost dog tag / pet tag in Hong Kong. A simple phone touch can show contact details and help lost pets reunite faster.",keywords:"é²èµ°å¤±çç,anti-lost dog tag hong kong,NFC anti-lost dog tag,pet anti-lost tag hong kong,free pet tag registration,phone touch pet tag,petwell nametag",structuredDataName:"PetWell Anti-Lost Dog Tag Registration",intentTitle:"What is an anti-lost dog tag?",intentDesc:"An anti-lost dog tag helps lost pets reunite faster. PetWell's NFC anti-lost dog tag lets finders tap with a phone to access key details and contact the owner quickly.",intentPoint1:"Phone tap to read. No extra app required.",intentPoint2:"Shows key pet details and emergency contact info.",intentPoint3:"Works for dogs and cats as daily anti-lost protection.",faqTitle:"Anti-Lost Dog Tag FAQ",faq:{q1:"How do I register for an anti-lost dog tag in Hong Kong?",a1:"Fill in this PetWell registration form with owner and pet details, upload a clear pet photo, and submit to set up your NFC anti-lost dog tag profile.",q2:"Can existing PetWell users register here?",a2:"Yes. Even if you already have a PetWell account or the app installed, you still need to complete this form to register for your tag.",q3:"What information is required for pet tag registration?",a3:"Required fields include name, email, phone number, pet name, and a pet photo. Optional fields include breed, microchip number, birthday, and weight.",q4:"How is an NFC anti-lost dog tag different from a normal dog tag?",a4:"A normal dog tag usually only shows engraved text. An NFC anti-lost dog tag can provide richer info through phone tap, helping faster owner contact.",q5:"Is this only for dogs?",a5:"No. Cats and other pets can also use this anti-lost tag registration flow."},howTo:{name:"How to register a free PetWell anti-lost pet tag",description:"Complete online pet tag registration in a few minutes.",step1Name:"Choose account status",step1Text:"Select whether you already have a PetWell account. Either way, continue with the form below.",step2Name:"Fill in owner and pet details",step2Text:"Provide required contact and pet information, then upload a clear pet photo.",step3Name:"Submit to complete registration",step3Text:"Submit the form to complete online setup. The nametag supports NFC phone touch for fast access."}},form:{title:"Nametag Registration Details",subtitle:"Please complete the form to make your pet tag. Fields marked with * are required.",firstNameLabel:"First Name *",firstNamePlaceholder:"e.g. Ming",lastNameLabel:"Last Name *",lastNamePlaceholder:"e.g. Chan",emailLabel:"Email *",phoneLabel:"Phone Number *",phonePlaceholder:"WhatsApp contact number",petNameLabel:"Pet Name *",petNamePlaceholder:"e.g. Mochi",microchipLabel:"Microchip Number (optional)",microchipPlaceholder:"Optional",sfAddressLabel:"SF Delivery Address *",sfAddressPlaceholder:"e.g. SF locker code / SF store address",deliveryMethodLabel:"Delivery Method",deliveryMethodValue:"By Mail",deliveryMethodHint:"All nametags are delivered by mail.",specialRequirementLabel:"Special Requirement (optional)",specialRequirementPlaceholder:"Optional, e.g. address notes",groupShippingPhoneLabel:"If you would like to send this along with someone else's name tag, please specify the phone number they used when registering it (optional)",groupShippingPhonePlaceholder:"Optional: phone number used in their nametag registration",petBirthdayLabel:"Pet Birthday (optional)",petWeightLabel:"Pet Weight (kg) (optional)",petWeightPlaceholder:"e.g. 5.5",disclaimer:"By submitting, you agree that PetWell can use this data to create account and pet profile records and process anti-lost tag registration.",submitting:"Submitting...",submit:"Register For Free Now"},accountPrompt:{step:"01",title:"Do you already have a PetWell account?",hint:"Whether or not you already have an account or the app, please complete the form below to register for your tag.",hasAccount:"Yes, I have one",noAccount:"No, I don't have one",cardTitle:"Please register in the PetWell App",cardDesc:"You already have an account. For faster processing and better data sync, please download the app and complete tag registration there.",downloadCta:"Download App & Register"},photo:{label:"Pet Photo *",previewAlt:"Pet photo preview",replaceHint:"Click or drag a new image to replace",uploadPrompt:"Click to upload or drag and drop pet photo",uploadHint:"Supports JPG, PNG, WebP",supportText:"Supports JPG, PNG, WebP up to 5MB. Photos are uploaded to PetWell secure storage.",remove:"Remove"},success:{title:"Registration Submitted!",desc:"We have received your details. This nametag supports NFC phone touch for quick pet info access.",newAccountDesc:"Download the PetWell app. Login details will be sent with your nametag. Sign in with your email after you receive it â your tag activates on first login.",existingAccountDesc:"You already have a PetWell account â sign in with your existing password. Your tag activates after your first login.",downloadCta:"Download App",submitAnother:"Submit Another Pet"}
454,toast:{alreadyRegisteredTitle:"You are already registered",successTitle:"Registration successful",successDescNewAccount:"Login details will be sent with your nametag. Download the app and sign in with your email after you receive it â your tag activates on first login.",successDescExistingAccount:"You already have a PetWell account â sign in with your existing password.",successDesc:"Your registration is received. This nametag supports NFC and phone touch reading.",errorTitle:"Submission failed",errorDesc:"Please try again later or contact us."},validation:{requiredTitle:"Please complete required fields",requiredDesc:"Please fill in all required fields.",invalidEmailTitle:"Please enter a valid email",invalidEmailDesc:"Please enter a valid email address.",photoRequiredTitle:"Please upload pet photo",photoRequiredDesc:"Pet photo is required for nametag registration.",invalidPhotoTitle:"Invalid image file",invalidPhotoDesc:"Please upload an image file.",photoTooLargeTitle:"Image too large",photoTooLargeDesc:"Please upload an image under 5MB.",notConfiguredTitle:"Form is not fully configured",notConfiguredDesc:"Missing nametag Lambda URL or API token."}},Cf={title:"TERMS AND CONDITIONS & PRIVACY POLICY",lastUpdated:"Last Updated: April 25, 2026",sections:{1:{title:"AGREEMENT TO OUR LEGAL TERMS",content:`PetWell HK Limited ("PetWell", "Company", "we", "us", "our"), a company registered in Hong Kong. 455 456These Legal Terms (the "Legal Terms") govern your access to and use of applications, websites, content, products and services provided by PetWell (hereafter collectively referred to as the "Services"). 457 458These Legal Terms are legally binding contracts between you, either as an individual or on behalf of an entity ("you", "your"), and PetWell HK Limited. These Terms specify your limitations, legal rights, and obligations concerning your use and participation in the Services. 459 460The terms "you" and "your" refer to any person who accesses, uses, or participates in the Services in any manner. If you engage with the Services or establish an account representing a business, you confirm that you are authorized to bind that business to these terms. Consequently, your agreement to these Legal Terms will be considered an agreement by the business you represent, and references to "you" and "your" in this context will apply to that business. 461 462By accessing and using the Services, you acknowledge that you have read, understood, and agreed to be bound by these Legal Terms, thereby establishing a contractual relationship between you and PetWell HK Limited. If you do not agree to these Legal Terms, you are expressly prohibited from using the Services and must discontinue use immediately. These Terms supersede any prior agreements or arrangements with you. PetWell HK Limited reserves the right to terminate these Terms or any Services with respect to you, or generally cease offering or deny access to the Services or any portion thereof, at any time for any reason. 463 464Supplemental terms may apply to certain Services, such as policies for specific events, activities, or promotions, and these will be disclosed in connection with the applicable Services. These supplemental terms are in addition to, and shall be considered part of, the Legal Terms for the purposes of the applicable Services. In the event of a conflict, supplemental terms shall prevail over these Legal Terms with respect to the applicable Services. 465 466You acknowledge that PetWell serves as a digital platform facilitating the exchange and sharing of information between pet owners ("Service Users") and providers of pet-related services ("Service Providers"), including content sourced from third parties. By engaging with PetWellâthrough use, registration, or interaction with the services showcased, promoted, and operational on the platformâyou affirm that: 467 468You qualify as either a Service Providers or a prospective Service User. 469You hold the necessary legal authority to bind yourself to these Terms of Use. 470You consent to the processing of financial transactions required for utilizing services via PetWell. 471You commit to adhere to the comprehensive terms and conditions outlined in these Legal Terms and any related documents referenced herein. 472 473Should you disagree with any part of these terms, you must refrain from agreeing to them and immediately cease all use and access of PetWell. It is important to note that PetWell disclaims any liability for losses, damages, or missed opportunities that may arise from interactions or transactions between users facilitated by our platform. 474 475PetWell HK Limited may amend these Legal Terms from time to time. Amendments will be effective upon posting of the updated Legal Terms at the domain of https://petwellhk.wpcomstaging.com/terms-and-conditions/ or the amended policies or supplemental terms on the applicable Service. Supplemental terms and conditions or documents that may be posted from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Legal Terms at any time and for any reason. It is y
475our responsibility to periodically review these Legal Terms to stay informed of updates. Your continued access or use of the Services after such revisions are posted signifies your agreement to be bound by the revised Legal Terms. If you do not agree to abide by these or any future Legal Terms, please do not use or access the Services.`},2:{title:"PRIVACY POLICY",content:`This section explains what personal data we collect and how we use it in connection with the Services. By using the Platform, you agree to the collection and use of your information as described below. This Privacy Policy section is incorporated into and forms part of these Legal Terms. 476 477Information we collect 478We collect the following categories of personal data when you use the Platform or interact with us: 479 480Identity & contact: name, email address, phone number, postal or billing address. 481Account & authentication: username, profile details, hashed passwords, security and login activity. 482Device & usage: IP address, device identifiers, operating system, browser/app version, cookie/SDK IDs, pages/screens viewed, taps/clicks, time stamps, crash logs, and diagnostics. 483Communications & content: messages you send to us, Q&A/FAQ submissions, support requests, reviews, forum posts, and any photos/files you upload. 484Pet profile & health information: pet name, species/breed, sex, age, weight, medical history, vaccinations, prescriptions, lab results, appointment history, care notes, and related media you choose to store. 485Transactions: purchases, subscriptions, booking details, and payment metadata. Card details are processed by our payment provider; we do not store full card numbers. 486Marketing preferences: your opt-in/opt-out choices and interaction with our communications. 487Third-party integrations (if you connect them): limited data from connected services (e.g., activity/steps/distance from Apple Health/Google Fit; basic profile from social sign-in), obtained only with your permission. 488Location Data: approximate location (e.g., via IP address) and precise location (e.g., via GPS, Wi-Fi, or Bluetooth) when you grant us explicit permission. 489 490LOCATION DATA AND BACKGROUND LOCATION POLICY 491PetWell HK Limited is committed to protecting your privacy and being transparent about how we use your location data. 4921. Collection of Location Data: Our app collects and accesses your location data, including approximate location (e.g., via IP address) and precise location (e.g., via GPS, Wi-Fi, or Bluetooth), only when you grant us explicit permission through your device settings. 4932. Use of Location Data: We use your location data to provide core functionalities of the app, which include finding nearby vet clinics, pet salons, and pet-friendly restaurants, providing emergency and 24/7 clinic lookup services based on your current location, and enabling the PetFit/walk tracking feature to record your pet's walking routes, distance, and duration. 4943. Background Location Access: If you use the PetFit/walk tracking feature, our app requires access to your location in the background. This means that location data is collected even when the app is closed or not in use, ensuring that your pet's walks are accurately tracked without interruption. We will request explicit permission for background location access before enabling this feature. 4954. Sharing of Location Data: We do not sell your location data to third parties. Your location data is only shared with trusted service providers strictly for the purpose of operating the app's features (e.g., map rendering services). 4965. Your Control: You have full control over your location data. You can enable or disable precise location access and background location access at any time through your device's operating system settings. Disabling location access may limit your ability to use certain features of the app, such as nearby clinic lookup and walk tracking. 497 498CHILDREN'S PRIVACY 499Our Services do not target and are not intended to attract children under the age of 13. We do not knowingly solicit personal information from children under the age of 13 or send them requests for personal information. If we become aware that we have collected personal information from a child under 13 without verification of parental consent, we will take steps to remove that information from our servers. 500 501How we use your information 502We use your information to: 503 504provide, operate, and improve the Services and Platform features; 505create and manage accounts, process bookings and payments, and deliver customer support; 506personalise content, measure performance, and perform analytics; 507maintain safety, security, and integrity (including fraud prevention and debugging); 508send service communications (e.g., confirmations, updates); send marketing with your consent where required; 509comply with legal obligations and enforce our agreements. 510 511Sharing your information 512We share information only as needed to provide the Services or as required by law, including with: 513 514Service providers (e.g., hosting, analytics, customer support, payments); 515Clinics and veterinary professionals when you request or engage their services; 516Other users where you choose to post reviews or content visible to others; 517A claims processor or insurer if there is a complaint, dispute, or conflict involving you and a third-party provider and sharing is necessary to resolve the issue; 518Authorities or legal advisers where required by law or to protect rights and safety; 519Corporate transactions (e.g., merger, acquisition, financing) subject to appropriate safeguards. 520 521We do not sell your personal data. We may share aggregated or de-identified information that cannot reasonably identify you. 522 523Retention, security, and international transfers 524We keep personal data only as long as necessary for the purposes above or as required by law. We use appropriate technical and organisational measures to protect your data, but no method is 100% secure. Your information may be processed in countries outside your own; where we transfer data internationally, we use appropriate safeguards. 525 526Your choices & rights 527You can update certain details in your account and manage permissions (including precise location) in your device settings. Subject to applicable law, you may request access, correction, deleti
527on, restriction, objection to processing, or portability of your personal data, and you may opt out of marketing at any time. To exercise your rights or ask questions, contact us at [email protected].`},3:{title:"THE SERVICES",content:`NATURE OF THE PETWELL SERVICE 528 529PetWell offers a comprehensive suite comprising a desktop web application, mobile applications, and other related tools, support, and services. These resources enable Service Users and Service Providers to find, communicate with, and interact with each other. Included in the PetWell services are Service Providers matchmaking platform, feedback portal, Service Users' pet health documentation system, and other services. 530 531PETWELL DOES NOT PROVIDE DIRECT PET CARE SERVICES 532 533PetWell serves as a neutral platform connecting Service Providers and Service Users. While PetWell facilitates these connections, it does not directly offer pet care services and is not involved in the actual transaction of services. We do not employ, recommend, or endorse any Service Providers or Service Users, nor do we make any representations or warranties regarding the quality of the pet care services they provide, such as grooming, sitting, or other services provided by Service Providers, or regarding your interactions and relationships with Service Users. 534 535Service Providers on PetWell operate independently and are neither employees nor contractors of PetWell. They have the discretion to determine how they provide services to their clients. Although we offer guidelines on our platform about safety and pet care for Service Providers and tips for Service Users on selecting providers, PetWell is not responsible for the performance or conduct of any Service Providers or Service Users, whether online or offline. 536 537We perform an initial review of Service Providers profiles and facilitate basic identity verifications. However, except as explicitly stated, we do not conduct thorough background checks. PetWell does not guarantee the accuracy, quality or suitability of any Service Providers and Service Users are advised to conduct their own due diligence. Service Users should exercise caution and use their independent judgment before engaging with other users on the platform. Both Service Users and Service Providers are solely responsible for making decisions that best serve their interests and those of their pets. You are advised to exercise caution and apply your independent judgment before engaging with a Service Provider, offering Pet Care Services, or interacting with other users on the PetWell platform. For instance, it is each user's responsibility to ensure their pet's medical treatments, such as flea and tick prevention, are up to date. PetWell will not be held liable for any lapses in such treatments by users 538 539USER-GENERATED CONTENT, REVIEWS, AND EXTERNALLY SOURCED CONTENT 540 541User-Generated Content and Reviews 542 543PetWell provides a platform for Service Users to post reviews and share experiences regarding the services received from Service Providers. The opinions expressed in these reviews and any other user-generated content are solely those of the individual users and do not reflect the views of PetWell HK Limited. PetWell does not endorse or guarantee the accuracy, completeness, truthfulness, or reliability of any user-posted content. As a platform provider, PetWell is not liable for any statements, representations, or content provided by users. Each user is solely responsible for their content and the consequences of posting it, and should be aware that their postings are public and not confidential. Service Users must also indemnify PetWell from any claims arising from their content, as well as from any actions taken as a result of investigations by PetWell or law enforcement. 544 545PetWell offers a platform where Service Users can access detailed information about various pet care services, including vet clinics, such as addresses, phone numbers, and operating hours. While Service Users are encouraged to post reviews based on their experiences, PetWell does not verify the accuracy of user visits to these services. We provide a space for Service Users to share their personal experiences, but it is important to note that PetWell cannot guarantee that all reviews are based on actual visits. Service Users should exercise discretion and consider this when reading reviews and making decisions based on posted experiences. 546 547You acknowledge and agree that you shall comply with the following guidelines (the "Review Guidelines") 548 549PetWell is committed to fostering a vibrant online community where pet owners can share and access reliable information about pet care services. To ensure our platform remains useful and free from commercial bias, hate speech, or irrelevant content, Service Users are encouraged to adhere to the following guidelines when submitting reviews: 550 551Reviews must be authentic and personal, based on firsthand experiences. Do not submit reviews if you are the owner, employee, or an agent of the service provider, or a direct competitor. 552Reviews should not be influenced by compensation or incentives offered by a Service Providers or their agents. 553Only one review per service experience is allowed; repetitive submissions for the same service are not permitted. 554Avoid submitting reviews that contain insults, defamation, or provocative content. 555Do not engage in libel or personal attacks. 556Ensure your review is original; copying or plagiarizing content from others without permission is prohibited. 557Avoid posting duplicate content or using multiple accounts to submit similar reviews. 558Reviews should be based on first-hand experiences, not hearsay or second-hand information. 559Ensure that your reviews are truthful and neither defamatory nor misleading; avoid baseless allegations, speculations or plagiarized content. 560Do not include commercial messages, promotional links, or inappropriate language. 561Reviews should focus on your own pet care experience, providing a detailed description of the service received. 562If you have a serious complaint, provide evidence such as photos to support your claim. 563Reviews should not respond directly to other reviews or contain only photos.
564Ratings provided should be consistent with the content of your review. 565Do not include sensitive personal details of service providers or staff. 566By submitting your reviews, you are granting PetWell a non-exclusive license to use your content for promoting the platform. 567Ensure compliance with all applicable laws, including those related to privacy and content legality. 568 569Important Notes: 570 571If your review is associated with a promotional event, such as a free grooming session, this must be clearly disclosed. Failure to do so may violate the Trade Descriptions Ordinance or similar regulations applicable in your or the service provider's jurisdiction. 572If you submit a review containing serious allegations, you must verify that the content is truthful and agree to accept legal responsibility for the claims made prior to publication. Misrepresentation in reviews with serious allegations can lead to legal consequences under the Defamation Ordinance and other applicable laws. 573 574PetWell reserves the right to reject, relocate, or remove any reviews that fail to adhere to these guidelines, at our discretion, without prior notice. PetWell further reserves the right, but is not obligated, to monitor, edit, or remove user-generated content or accounts that contain content deemed unlawful, offensive, defamatory, obscene, or otherwise objectionable or that violates any party's intellectual property or these Terms. For reporting inappropriate use of review, you may contact PetWell via email at [email protected]. 575 576This list is not exhaustive and merely provides examples of prohibited actions. PetWell reserves the right to terminate your access to your account, and your ability to post to our services, at any time, with or without notice, and for any reason or no reason, particularly if your actions are deemed inappropriate or disruptive. Additionally, PetWell may limit the number of messages you can send to other users, at our sole discretion. PetWell may involve law enforcement if illegal activities are conducted on our services and will cooperate with authorities as necessary or when deemed appropriate. While we do not undertake to review all content posted by users, we reserve the right to remove, edit, move, or refuse any content at any time, without notice. 577 578Content Sourced from External Platforms 579 580PetWell may display content, including reviews, sourced from external platforms or websites. PetWell does not own this externally sourced content and makes no claim to its copyright ownership. PetWell is not responsible for obtaining the rights to use any externally sourced content and does not guarantee the accuracy, legality, or compliance of such content with copyright laws. We rely on our users and external content providers to provide content lawfully and encourage users to verify the authenticity and ownership of any content they utilize from our platform. If PetWell receives a valid notification of copyright infringement, we are committed to taking appropriate action, including removing the infringing content from our platform as quickly as possible to comply with copyright laws. Users should exercise caution and perform due diligence before relying on content sourced from external platforms. PetWell will not be liable for any misinformation, copyright infringement, or other issues that arise from user reliance on such content. 581 582Intellectual Property and Copyright 583 584Content, logos, and other visual media created and posted by Service Providers on PetWell remain the intellectual property of the respective copyright holders. Service Providers agree not to post content unless they hold the copyright or have obtained proper licensing or are covered under fair use. PetWell is not liable for any copyright infringement resulting from user-posted content or externally sourced content but will remove such content if it violates any legal standards or rights. 585 586By posting content on PetWell, Service Providers agree to allow it to be displayed on the platform and used in connection with the promotion of the platform and its services, without any compensation. PetWell reserves the right, but not the obligation, to monitor, edit, or remove content or accounts containing content that is deemed unlawful, offensive, defamatory, obscene, or otherwise objectionable or which violates any party's intellectual property or these Terms. 587 588Third Party Services and Content 589 590PetWell may be used in connection with third-party services and content that PetWell does not control. You acknowledge that different legal terms and privacy policies may apply to your use of such third-party services and content. PetWell does not endorse and is not responsible or liable for the products or services provided by any third-party providers. 591 592Ownership 593 594The Services and all rights therein are and shall remain the property of PetWell HK Limited or its licensors. Nothing in these Terms grants you any rights in or related to the Services or the ability to use or reference PetWell's company names, logos, product and service names, trademarks, or service marks. 595 596Pet Health Documentation System 597 598PetWell offers a secure digital archive, the Pet Health Documentation System, enabling our platform users to efficie
598ntly upload, store, and manage their pets' health records and other essential documentation. This system is designed to facilitate easy access and management of pet health data, allowing our platform users and, with proper consent, Service Providers to enhance the care and management of pet health. 599 600Information stored within the Pet Health Documentation System may include, but is not limited to, veterinary records, vaccination records, and medical histories. The collected information is used exclusively to enhance the services provided by PetWell, aimed at improving the overall management and care of pet health by service users and their authorized service providers. By utilizing this system to upload pet health documents, you agree to the storage and use of this data as outlined in our Legal Terms and Privacy Policy. PetWell is committed to safeguarding your pet's health information with industry-standard security measures and protocols. 601 602Service Users are responsible for ensuring the accuracy and completeness of the pet health information they input into the system. It is crucial that all data provided is current and correct. PetWell is not liable for any errors in the information provided by Service Users or for any reliance placed on this information by other Service Users or Service Providers. 603 604All data uploaded remains the intellectual property of the Service Users or rightful owner. PetWell does not claim ownership of any content uploaded to the Pet Health Documentation System. Regarding data usage, PetWell does not access the detailed health information stored in the drive unless necessary to provide requested services or as mandated by law. Basic information about the pets, such as name, breed, weight, and temperament, may be shared with Service Providers or any third party to facilitate service provision. This sharing of information is based strictly on the settings controlled by the Service Users, who can choose what additional information, if any, is shared with freelancers. 605 606PetWell ensures that Service Users maintain control over their content. You can manage who views or interacts with your data and remove or delete the data permanently through the system's settings. Service Users decide the privacy level of their files, which are private by default. PetWell will not disclose your files or data to others except as explicitly described in our Privacy Policy or as required by law.`},4:{title:"MEMBERSHIP AND ACCESS TO SERVICE",content:`User Accounts 607 608To access most features of PetWell, you must register for and maintain an active personal user services account ("Account"). You must be at least 18 years of age or the age of legal majority in your jurisdiction, whichever is higher, to create an Account. Registration requires you to provide personal information such as your name, mobile phone number and email address. During the registration process, you have the option to supply extra details that are not required but can help personalize your experience on PetWell. You are solely responsible for all activities conducted through your Account and must maintain the confidentiality and security of your PetWell password and any Third-Party Site Password. It is your responsibility to ensure these passwords are safeguarded at all times to prevent unauthorized use of your account. You are responsible for maintaining the accuracy and completeness of your Account information. If there are any security breaches or unauthorized access to your Account you must promptly inform PetWell. Additionally, you are prohibited from accessing another person's Account without their explicit permission. Misrepresenting yourself as another user of the Platform or using the Services under false pretenses is strictly forbidden. You acknowledge that PetWell is not liable for any losses you incur from unauthorized use of your Account. However, you may be held accountable for any losses incurred by PetWell or others due to such unauthorized activities. 609 610Promotional Codes 611 612PetWell may, at its sole discretion, create promotional codes that can be redeemed for account credit, or other features or benef
612its related to our services, subject to any additional terms PetWell establishes for each promotional code ("Promo Codes"). You agree that Promo Codes: 613 614Must be used for the designated audience and purpose, and in a lawful manner. 615Cannot be duplicated, sold, transferred, or made available to the general public unless explicitly permitted by PetWell. 616May be disabled by PetWell at any time for any reason without liability. 617Must be used according to the specific terms that PetWell sets for such Promo Code. 618Are not redeemable for cash. 619May expire before you use them. PetWell reserves the right to withhold or deduct credits or other features or benefits obtained through the use of Promo Codes in the event that PetWell determines or believes that the use or redemption of the Promo Code was in error, fraudulent, illegal, or in violation of the applicable Promo Code terms or these Legal Terms. 620 621Network Access and Devices 622 623You are responsible for obtaining the data network access necessary to use our platform. Data and messaging rates and fees from your mobile network provider may apply if you access or use our services from a wireless-enabled device, and you are responsible for such charges. You are also responsible for acquiring and updating compatible hardware or devices necessary to access and use our services and any updates thereto. PetWell does not guarantee that the services, or any portion thereof, will function on any particular hardware or devices. Additionally, our services may be subject to malfunctions and delays inherent in the use of the Internet and electronic communications.`},5:{title:"ACCOUNT HOLDER CONDUCT",content:`Prohibitions on content upload 624 625You must not upload, post, transmit, or distribute any content â including text, images, videos, sound, data, information, or software â anywhere on the platform, whether to your profile, service listings, service requests, or as part of any feedback related to the platform, services, service providers, or service users. 626 627You are prohibited from posting content that misrepresents the source, including impersonating another individual or entity, or posting any false or inaccurate biographical information about Service Providers. 628 629Do not post or create links to external sites that violate these Legal Terms. 630 631You must not engage in any activity intended to harm or exploit any individual under the age of 18 ("Minors") in any way or solicit personal information from Minors without appropriate consent. 632 633You should avoid activities that invade privacy, such as unauthorized collection, storage, or distribution of personal information including names, email addresses, phone numbers, and home addresses without their knowledge and willing consent. 634 635You must not distribute content containing falsehoods or misrepresentations that could damage PetWell or any third party. 636 637You are refrained from posting content that is pornographic, harassing, hateful, illegal, obscene, defamatory, libelous, slanderous, threatening, discriminatory, or racially, culturally, or ethnically offensive. Content that encourages behavior that could constitute a criminal offense, result in civil liability, or otherwise violate any applicable laws is strictly prohibited. 638 639You must not post any content that promotes racism, hatred, or physical harm against any individual or group. Avoid posting any content that includes nudity, undue violence, or other matter that could be deemed inappropriate or offensive. 640 641You are forbidden from uploading content that is copyrighted or protected by trade secrets unless you own these rights or have obtained permission from the legitimate rights holder to use and share this content on our service. 642 643You must not upload, post, or distribute content that infringes on the copyright or proprietary rights of others, such as unauthorized copies of copyrighted works, including but not limited to, pirated computer programs, music files, and artwork. Avoid posting information or links that facilitate the circumvention of manufacturers' copy-protection devices or other protective measures. You are prohibited from posting content that threatens, stalks, defames, defrauds, degrades, victimizes, or intimidates an individual or group on the basis of age, gender, disability, ethnicity, sexual orientation, race, or religion. Do not post content that incites or encourages others to commit acts that could result in harm or discrimination against individuals or groups. 644 645You must not engage in activities intended to harm or disrupt another user's computer system or allow others to illegally access software or bypass security on websites or servers. This includes any form of spamming. It is prohibited to impersonate or use the identity of a PetWell employee, agent, manager, service provider, another user, or any other person. Advertising or soliciting business not related to or deemed inappropriate for our services by PetWell is forbidden (at the sole discretion of PetWell). 646 647Content considered as "junk mail", "spam", "chain letters", "pyramid schemes", or unsolicited commercial advertisement should not be posted. Avoid posting unauthorized commercial messages or advertisements for services not explicitly approved, such as ponzi schemes, discount cards, online contests, etc. 648 649You must not distribute or upload viruses or any technology that may damage PetWell or the property and interests of PetWell users. 650 651Posting links to commercial services or websites is prohibited unless explicitly permitted under our Legal Terms. Content must be relevant to our services and users. Avoid posting non-local or irrelevant material. Do not repost content that has been previously submitted to PetWell. The use of any automated tools or software to submit c
651ontent without PetWell's express written consent is strictly prohibited. 652 653Prohibitions on communication 654 655Do not send messages that involve national or international money transfers exceeding the service's listed price, especially if they include requests for refunds. 656 657Refrain from sending unsolicited advertisements or promotions for services not available through our services or from external websites. 658 659Avoid sharing personal contact information, such as phone numbers, social media handles, email addresses, etc. . 660 661Do not encourage or facilitate the use of other services or platforms for messaging or business solicitation external to our services. 662 663Prohibited actions 664 665Service users are prohibited from engaging in any of the following behaviors: committing to a service without intent to pay; registering for, negotiating a price for, using, or soliciting a service without plans to complete the transaction; agreeing to purchase a service without meeting the service provider's stated terms, or doing so with the intent to disrupt the listing; or misusing any features provided by PetWell related to the use or purchase of services. These actions violate the terms of service and may lead to restrictions on account privileges. 666 667Non-compete clause 668 669For a period of 12 months following the last engagement with a Service Providers via our services, Service Users agree to adhere to the following conditions: 670 671Service Users shall not directly or indirectly solicit or accept similar services from any Service Providers or Service Users encountered through our services, nor shall they engage in providing similar services within the same service area as defined by our services. 672Service Users are prohibited from hiring or attempting to hire any Service Providers or other Service Users introduced via our services for any personal or professional purpose. 673Service Users must refrain from performing services for, or soliciting services from, any Service Providers or other Service Users introduced to them during their use of our services, regardless of the nature of the service. 674Service Users shall not, directly or indirectly, persuade or influence other Service Users or Service Providers to terminate or reduce their use of our services. 675Service Users must avoid inducing or encouraging any Service Providers or other Service Users to provide or utilize similar services on competing services. 676Service Users must not interfere with, disrupt, or attempt to disrupt any established relationship, contract, or arrangement between our services and its Service Providers or Service Users. 677Service Users are not permitted to assist, encourage, or facilitate any Service Providers or other Service Users in violating these terms. 678 679No Discrimination 680 681Our services adhere to all federal, state, and local laws prohibiting discrimination in employment postings. This includes, but is not limited to, discrimination based on race, color, religion, sex, national origin, age, disability, or any other legally protected class. We do not accept any content that includes discriminatory preferences or limitations. We reserve the right to remove, without prior notice, any content that we determine violates these anti-discrimination laws. 682 683Prohibitions regarding the use of services 684 685You are prohibited from uploading content or items to unsuitable categories or areas within our services; Displaying personal contact or social media details in any images or content listings; Breaching laws, third-party rights, our account policies, or any terms outlined in the Legal Terms; Withholding payment for services unless the description provided by the Service Providers materially changes after an agreement is reached, if there is an evident typographical error, or if the service provider's identity cannot be verified; Failing to fulfill services that have been paid for, unless the Service Users substantially deviates from the agreed-upon terms, refuses to pay, a significant typographical error occurs, or the service user's identity cannot be authenticated;
685 Manipulating service prices or interfering with other users' posts; circumventing or tampering with our fee structure, the billing process, or fees due; Posting false, inaccurate, misleading, defamatory, or libelous content, including personal details about any service user; Actions that could undermine the integrity of our feedback or ratings systems, such as misusing feedback information or applying it outside the intended context of our services. 686 687If a Service Users violates any of the rules associated with their postings, PetWell, at its sole discretion, may take actions including cancelling the posting, limiting the Service User's account privileges, suspending the account, or decreasing the Service User's status earned through feedback. By agreeing to these terms, you commit to upholding the integrity of content and interactions within our services. PetWell enforces these guidelines strictly and reserves the right to modify, refuse, or remove content or accounts as deemed necessary.`},6:{title:"USAGE AND RIGHTS OF SUBMITTED CONTENT",content:`Non-Confidentiality of User Content 688 689By engaging our service by submission, hosting, sharing, and publishing of user content, which may include videos, profiles, offers, requests, feedback, and other forms of communication, you acknowledge that any content you submit may be accessible to other registered users and that we do not guarantee confidentiality for any such content, regardless of whether it is published. 690 691By submitting content, you agree to provide it on a non-proprietary and non-confidential basis. You grant us the permission to use, distribute, and publicly display this content freely, enabling us to effectively offer and enhance our services. This content may be made searchable and available to all users who have access to our services. 692 693 694User Content Responsibilities 695 696You are solely responsible for the content you submit and the consequences of posting or publishing it on our service. By submitting content, you affirm and warrant that: 697 698You possess or have obtained the necessary licenses, rights, consents, and permissions to use such content and to authorize us to use it in the ways contemplated by the service and these Legal Terms. 699You have obtained the written consent, release, and permission of every identifiable individual in the submitted content to use their name or likeness, enabling their inclusion and use in the ways contemplated by the service and these Legal Terms. 700You will cover any royalties, fees, or other monies owed to any person due to the content you post on or through the service. 701 702Content Rights and Licensing Agreement 703 704You maintain ownership of any content you submit to PetWell. By submitting content, you grant PetWell a perpetual, worldwide, non-exclusive, royalty-free license that is sublicenseable and transferable. This license allows us to use, reproduce, distribute, reformat, translate, create derivative works from, display, and perform your content in connection with PetWell's services and its business activities, including promoting and redistributing part or all of the services, and derivative works thereof, across various media. Furthermore, each user of our services receives a non-exclusive license to access your content through our services, and to use, reproduce, distribute, create derivative works from, display, and perform your content as enabled by the functionality of our services and under these Legal Terms. This license ends when you delete your content from our services. 705 706You acknowledge that the management of our services may involve: 707 708Transmissions over various networks. 709Modifications to your content to conform to technical requirements of connecting networks or devices. 710 711Your content may be used by PetWell in blogs, directories, emails, and other promotional materials. You can remove your content at any time. To remove content, notify us by email, and we will delete it unless it has been shared with third parties as part of our service. If you do not request the removal of reposted content, it will be considered as consent for us to keep it posted. 712 713Content Responsibility and Removal Rights 714 715PetWell does not endorse any user-generated content or any opinion, recommendation, or advice expressed therein, and explicitly disclaims all liability associated with such content. PetWell does not allow activities that infringe on copyright or intellectual property rights within our services, and will remove any data or content that is reported and verified as infringing according to our established takedown procedures. PetWell reserves the right to remove any data or content without prior notice and may terminate access to any user identified as a repeat infringerâdefined as a user who has been notified of infringing activity more than twice or has had content removed more than twice. Furthermore, PetWell retains the full discretion to determine the appropriateness of all content submitted to the services, including but not limited to the removal of offensive, indecent, or otherwise objectionable material or material in violation of our terms. 716 717When using our services, you may encounter content from diverse sources, which PetWell does not control. You might find some content offensive, harmful, inaccurate, or deceptive. By using our services, you waive any legal or equitable rights or remedies you have or may have against PetWell concerning such content and agree to indemnify and hold harmless PetWell and its affiliates against all claims related to your use. 718 719You are solely responsible for the content that you publish, display, or transmit through our services. PetWell may, at its sole discretion and without liability, review and delete any content that breaches this agreement or is potentially harmful or illegal. 720 721Suggestions and Improvements. Any suggestions, comments, or communications you send to PetWell regarding modifications or enhancements to our services are considered non-confidential and n
721on-proprietary. PetWell is free to utilize any ideas, concepts, know-how, or techniques contained in such suggestions for any purpose, including but not limited to the development and marketing of products and services incorporating such information without any compensation or attribution to you. You acknowledge that PetWell is under no obligation to employ, display, reproduce, or distribute any such ideas and you cannot demand such actions.`},7:{title:"REQUIRED THIRD-PARTY VERIFICATION SERVICES",content:`PetWell is committed to maintaining a safe environment for both Service Users and Service Providers. As part of this commitment, we utilize various safety measures, including background checks and identification verifications against national databases. If you are not comfortable with PetWell conducting these searches, please refrain from registering as a Service Provider. 722 723By registering on PetWell, you consent to undergo background checks using the information you provide. PetWell may review the results obtained from third-party verification services and take appropriate actions based on these findings. You authorize PetWell to verify the accuracy of your provided details and agree to indemnify PetWell against any losses or liabilities that may arise from these checks. 724 725It is important for Service Users to conduct their own evaluations of Service Providers. Please note the following limitations of our background checks: 726 727PetWell does not automatically conduct background checks on all Users unless explicitly stated in these Legal Terms. 728Not all types of records are accessible to third-party background checking agencies, and some records may not be current. 729Information such as juvenile records, dismissed cases, foreign convictions, and traffic violations (unless categorized as criminal offenses in certain jurisdictions) are generally not included in background check reports. 730 731PetWell reserves the right to terminate a membership based on the findings from third-party verification services. Remember, it is your responsibility to ensure that any information used from our services is accurate and reliable. 732 733PetWell is committed to maintaining a safe environment for both Service Providers and Service Users. To support this commitment, we offer a range of optional verification tools, including name and address verification, social security number verification, IC, passport, and criminal background checks, particularly for Service Providers. We utilize Airwallex to facilitate these verifications as part of our payment solution. 734 735Service Providers and Service Users have the option to verify various details such as name, address, national ID number, criminal background, and professional license credentials using third-party verification services available through our service. By engaging with our service, you affirm that neither you nor anyone in your household has been involved in legal actions concerning violence, abuse, neglect, fraud, larceny, or any crime that poses a threat to others. You consent to PetWell verifying these declarations and understand that PetWell may take appropriate actions based on the findings at its discretion. 736 737Utilizing third-party verification services provided through PetWell is entirely at your discretion. You acknowledge that these services are provided for convenience and that PetWell does not control or endorse the accuracy or reliability of the verification service or the information it offers. PetWell may review data from these third-party services and may terminate your account based on this information. 738 739It's your choice to make the results from third-party verification services public on your PetWell profile. Should you choose to share this information, be aware that it might influence others' decisions to engage your services. You also agree to indemnify and hold PetWell harmless from any damages that may arise from making such details public.`},8:{title:"ADDITIONAL VERIFICATION OPTIONS",content:`PetWell is committed to maintaining a safe environment for both Service Providers and Service Users. To support this commitment, we offer a range of optional verification tools, including name and address verification, social security number verification, IC, passport, and criminal background checks. 740 741particularly for Service Providers. We utilize Airwallex to facilitate these verifications as part of our payment solution. 742 743Service Providers and Service Users have the option to verify various details such as name, address, national ID number,
743criminal background, and professional license credentials using third-party verification services available through our service. By engaging with our service, you affirm that neither you nor anyone in your household has been involved in legal actions concerning violence, abuse, neglect, fraud, larceny, or any crime that poses a threat to others. You consent to PetWell verifying these declarations and understand that PetWell may take appropriate actions based on the findings at its discretion. 744 745Utilizing third-party verification services provided through PetWell is entirely at your discretion. You acknowledge that these services are provided for convenience and that PetWell does not control or endorse the accuracy or reliability of the verification service or the information it offers. PetWell may review data from these third-party services and may terminate your account based on this information. It's your choice to make the results from third-party verification services public on your PetWell profile. Should you choose to share this information, be aware that it might influence others' decisions to engage your services. You also agree to indemnify and hold PetWell harmless from any damages that may arise from making such details public. 746 747PetWell informs you that in connection with your use of a third-party verification service, we may acquire a consumer report from a consumer reporting agency. These consumer reports may include detailed information about your character, reputation, personal characteristics, and lifestyle, which could encompass consumer credit, criminal history, workers' compensation, driving records, employment history, military service, civil records, and educational background. 748 749By choosing to use, access, or share information from a third-party verification service through our service, you affirm that you will adhere to all relevant consumer reporting laws. Should you opt to share this information with other parties, either via this service or externally, you agree to act within legal boundaries and commit to indemnifying and absolving PetWell of any losses, liabilities, damages, or costs arising from such actions, regardless of cause. PetWell explicitly disclaims any liability for losses that may result from using information provided by third-party verification services.`},9:{title:"COMPLIANCE WITH THE FAIR CREDIT REPORTING ACT",content:`PetWell informs you that in connection with your use of a third-party verification service, we may acquire a consumer report from a consumer reporting agency. These consumer reports may include detailed information about your character, reputation, personal characteristics, and lifestyle, which could encompass consumer credit, criminal history, workers' compensation, driving records, employment history, military service, civil records, and educational background. 750 751By choosing to use, access, or share information from a third-party verification service through our service, you affirm that you will adhere to all relevant consumer reporting laws. Should you opt to share this information with other parties, either via this service or externally, you agree to act within legal boundaries and commit to indemnifying and absolving PetWell of any losses, liabilities, damages, or costs arising from such actions, regardless of cause. PetWell explicitly disclaims any liability for losses that may result from using information provided by third-party verification services. 752 753PetWell has implemented procedures for addressing alleged and actual copyright and trademark infringements. If you suspect that your intellectual property has been copied and made available on our services in a manner that constitutes infringement, please provide the following details to [email protected] : 754 755A list of the intellectual property that you claim has been infringed upon. If your claim involves multiple works on our website, please provide a representative list of the affected works. 756A precise description of where the material you claim is infringing is located on our service, sufficient for PetWell to locate the material. 757A statement indicating that you believe in good faith that the disputed use has not been authorized by the intellectual property owner, its agent, or the law.
758Adequate information for us to be able to contact you, including your address, telephone number, and, if available, an email address. 759A physical or electronic signature of the person authorized to act on behalf of the owner of the exclusive right that is allegedly infringed. 760A declaration under penalty of perjury that the information provided in the notification is accurate and that you are the intellectual property owner or authorized to act on behalf of the intellectual property owner whose right is allegedly infringed. 761 762This notification is referred to as the "Notice." 763 764Please note that for the Notice to be valid, you must comply with all the outlined requirements. PetWell commits to removing any infringing content from our services in accordance with copyright law provisions. However, you are responsible for ensuring that your Notice meets all legal standards. 765 766Be aware that under copyright law, any person who knowingly makes false claims concerning copyright infringement may face legal liabilities. Only the intellectual property rights holder is eligible to report infringing materials through PetWell's established reporting procedures. If you are not the rights holder, you should advise the owner to contact us if they wish to pursue this matter.`},10:{title:"PROCEDURE FOR ADDRESSING COPYRIGHT INFRINGEMENT CLAIMS",content:`PetWell has implemented procedures for addressing alleged and actual copyright and trademark infringements. If you suspect that your intellectual property has been copied and made available on our services in a manner that constitutes infringement, please provide the following details to [email protected] : 767 768A list of the intellectual property that you claim has been infringed upon. If your claim involves multiple works on our website, please provide a representative list of the affected works. 769A precise description of where the material you claim is infringing is located on our service, sufficient for PetWell to locate the material. 770A statement indicating that you believe in good faith that the disputed use has not been authorized by the intellectual property owner, its agent, or the law. 771Adequate information for us to be able to contact you, including your address, telephone number, and, if available, an email address. 772A physical or electronic signature of the person authorized to act on behalf of the owner of the exclusive right that is allegedly infringed. 773A declaration under penalty of perjury that the information provided in the notification is accurate and that you are the intellectual property owner or authorized to act on behalf of the intellectual property owner whose right is allegedly infringed. 774 775This notification is referred to as the "Notice." 776 777Please note that for the Notice to be valid, you must comply with all the outlined requirements. PetWell commits to removing any infringing content from our services in accordance with copyright law provisions. However, you are responsible for ensuring that your Notice meets all legal standards. 778 779Be aware that under copyright law, any person who knowingly makes false claims concerning copyright infringement may face legal liabilities. Only the intellectual property rights holder is eligible to report infringing materials through PetWell's established reporting procedures. If you are not the rights holder, you should advise the owner to contact us if they wish to pursue this matter. 780 781Changes to the Service 782 783PetWell reserves the right to modify or discontinue the Service (or any part of it) temporarily or permanently at any time. PetWell may do so with or without notice, at its sole discretion. You agree that PetWell will not be liable to you or any third party for any changes, suspension, or termination of the Service. 784 785Service Termination Policy 786 787PetBacker reserves the right at any time and from time to time to modify or discontinue, temporarily or permanently, the Platform (or any part thereof) with or without notice and in its sole discretion. You agree that PetBacker shall not be liable to you or to any third party for any modification, suspension or discontinuance of PetBacker services. 788PetWell reserves the right, at its sole discretion, to terminate or suspend your access to our services, deactivate your account, block your email or IP address, or otherwise restrict your access to our services without notice. This action can be taken for any reason deemed appropriate by PetWell, including but not limited to violations of our Legal Terms, account inactivity, or any behavior believed to infringe on the operation or use of our services. Additionally, PetWell may remove any content you have submitted if it is considered a violation of our policies. This termination or suspension can occur at any moment and without prior notice to ensure the integrity and proper functioning of our services. 789 790 791You have the right to discontinue using our services at any time. To cancel your account, simply go to the "Deactivate Account" option located under "Profile > Help Center" in your account settings. This can be done with or without specific reason. 792Upon termination of your account, you immediately lose all access to the services and any outstanding payments or entitlements, including but not limited to referral discounts, bonuses, or rewards. Termination results from your failure to comply with the Legal Terms, maintain active participation, or properly manage your account. Should your account be terminated, you will lose access to all account data, though residual data may remain in our systems. 793
794If your account is terminated, you must promptly delete all copies of data, trademarks, and any content related to our services that you possess. We are not liable for any loss or damage following your access termination and retain the right to use the data collected from your use of the services for internal purposes. All licenses granted to us regarding your data will remain in effect for these purposes. 795 796You will receive notification via email if you provided a valid one during registration unless your use was previously terminated or canceled by us, making further notice unnecessary. 797 798Certain sections of our Legal Terms will continue to apply even after your account or services are terminated. You are also required to indemnify and hold harmless our company and its affiliates from any claims or demands, including legal fees and costs, arising out of the termination of your services.`},11:{title:"MODIFICATIONS AND TERMINATION OF SERVICES",content:`Changes to the Service 799 800PetWell reserves the right to modify or discontinue the Service (or any part of it) temporarily or permanently at any time. PetWell may do so with or without notice, at its sole discretion. You agree that PetWell will not be liable to you or any third party for any changes, suspension, or termination of the Service. 801 802Service Termination Policy 803 804PetBacker reserves the right at any time and from time to time to modify or discontinue, temporarily or permanently, the Platform (or any part thereof) with or without notice and in its sole discretion. You agree that PetBacker shall not be liable to you or to any third party for any modification, suspension or discontinuance of PetBacker services. 805PetWell reserves the right, at its sole discretion, to terminate or suspend your access to our services, deactivate your account, block your email or IP address, or otherwise restrict your access to our services without notice. This action can be taken for any reason deemed appropriate by PetWell, including but not limited to violations of our Legal Terms, account inactivity, or any behavior believed to infringe on the operation or use of our services. Additionally, PetWell may remove any content you have submitted if it is considered a violation of our policies. This termination or suspension can occur at any moment and without prior notice to ensure the integrity and proper functioning of our services. 806 807 808You have the right to discontinue using our services at any time. To cancel your account, simply go to the "Deactivate Account" option located under "Profile > Help Center" in your account settings. This can be done with or without specific reason. 809Upon termination of your account, you immediately lose all access to the services and any outstanding payments or entitlements, including but not limited to referral discounts, bonuses, or rewards. Termination results from your failure to comply with the Legal Terms, maintain active participation, or properly manage your account. Should your account be terminated, you will lose access to all account data, though residual data may remain in our systems. 810 811If your account is terminated, you must promptly delete all copies of data, trademarks, and any content related to our services that you possess. We are not liable for any loss or damage following your access termination and retain the right to use the data collected from your use of the services for internal purposes. All licenses granted to us regarding your data will remain in effect for these purposes. 812 813You will receive notification via email if you provided a valid one during registration unless your use was previously terminated or canceled by us, making further notice unnecessary. 814 815Certain sections of our Legal Terms will continue to apply even after your account or services are terminated. You are also required to indemnify and hold harmless our company and its affiliates from any claims or demands, including legal fees and costs, arising out of the termination of your services.`},12:{title:"INTELLECTUAL PROPERTY OWNERSHIP",content:`PetWell retains all rights to the content on our services, except for content uploaded by users. This includes, but is not limited to, texts, software, scripts, graphics, photos, sounds, music, videos, and interactive features ("Content"), as well as trademarks, service marks, and logos ("Marks"). These are protected under local and international copyright and intellectual property laws. Marks and names on our services that belong to other parties remain the property of their respective owners. 816 817The Content provided on our services is for your information and personal use only. It may not be used, copied, reproduced, distributed, transmitted, broadcast, displayed, sold, licensed, or otherwise exploited for any other purposes without the explicit prior written consent of the rightful owners. PetWell reserves all rights not specifically granted to the users. You are prohibited from using, copying, or distributing any of the Content, especially for commercial purposes, without the appropriate permissions. If you download or print any Content for personal use, you must maintain all copyright and proprietary notices. Additionally, you are required to respect the security features of the service and refrain from any actions that would circumvent or disable security measures, or that would allow or assist any unauthorized use or copying of Content, or that would enforce limitations on the use of our services and the Content within. 818 819PetWell retains all rights to its data and trademarks, protected by various intellectual property laws. We grant you a limited, revocable, non-transferable, and non-sublicensable license to use PetWell data (excluding any software source code) solely for personal use in engaging with our services. You must not copy, modify, publish, transmit, distribute, perform, display, or sell any data owned by PetWell or provided by other users or licensors. 820 821While PetWell may allow the use of certain features like an embeddable player for incorporating materials into your personal, non-commercial websites, it must not include direct promotions or links to service providers' personal business channels or external platforms offering similar services. Any use of PetWell's embeddable player must include a link back to our service, acknowledging the source of the content. We reserve the right to discontinue any service feature at any time without notice.`},13:{title:"ADVERTISEMENTS AND PROMOTIONS",content:"The services provided by PetWell may be partially funded through advertising revenue. Consequently, PetWell may display advertisements and promotions. The form, frequency, and scope of advertising on the service are subject to change. The presence of advertisements does not imply PetWell's endorsement of the advertised products or services. You acknowledge that PetWell is not liable for any loss or damage incurred by you arising from your interactions with or presence of advertisements on the service."},14:{title:"EXTERNAL LINKS, FORMS, AND CONTACT NUMBERS",content:`The Service may include links to third-party websites and resources, such as social media platforms and external websites, including vet clinic webpages. You may have the option to log into the Service using your accounts from these third-party sites, interact with them, conduct transactions, and adjust your privacy settings to share your activities on the Service with your contacts from these sites. PetWell does not control these third-party sites and resources, and therefore, is not responsible for their availability. PetWell does not endorse and is not liable for any content, advertising, products, or services on or available from such sites or resources. 822 823Links to any third-party site are not endorsements of those sites or any products or services offered through them. PetWell is not liable for any harm or losses caused by the use or reliance on any third-party content, goods, or services available through these websites or resources. The third-party sites may operate under different privacy policies, terms and conditions, and business practices than PetWell. Sometimes, it may appear that you are still interacting with PetWell when, in fact, you may have been redirected to a third-party site. In such cases, the third-party's terms and conditions and privacy policies apply. 824 825Your interactions and transactions with any third party found through the Service are solely between you and the third party. PetWell is not involved in these interactions or transactions. If you have any complaints, concerns, or questions about materials provided by third parties, you should contact the third party directly. 826 827No third party beneficiaries 828 829You agree that, unless explicitly stated otherwise in these Legal Terms, there are no third-party beneficiaries to these Legal Terms.`},15:{title:"WARRANTY DISCLAIMER",content:`You acknowledge and agree that your use of the service is at your own risk. PetWell, along with its officers, directors, employees, affiliates, and agents, disclaims all warranties of any kind, whether express or implied. This includes any warranties relating to the quality, suitability, truth, accuracy, or completeness of any information, data, or materials provided through the service. The service and all data, materials, and content provided are available to you on an "as is," "as available," and "where-is" basis without any warranties of merchantability, fitness for a particular purpose, or non-infringement of third-party rights. 830 831PetWell does not guarantee the absence of errors, inaccuracies, or the security of the servers where personal and financial information is stored. PetWell is also not responsible for any bugs, viruses, or other harmful components transmitted through the service by third parties. We do not endorse or assume responsibility for any product or service advertised by third parties through the service or any hyperlinked website. 832 833Your interactions and dealings with other service users or service providers are solely at your risk. PetWell does not conduct background checks on service providers or users. The service operates on a reputation-based system, encouraging you to consider other users' feedback and third-party referrals when making decisions. 834 835All services are provided without warranty from PetWell. We specifically disclaim any implied warranties of title, merchantability, fitness for a particular purpose, and n
835on-infringement. Some jurisdictions do not allow the disclaimer of implied warranties, so the foregoing disclaimer may not apply to you. You may also have other legal rights that vary by jurisdiction.`},16:{title:"LIABILITY LIMITATIONS",content:`PetWell and its affiliates, including officers, directors, employees, agents, successors, and assigns, shall not be liable for any direct, indirect, incidental, special, punitive, or consequential damages arising from your use of our services or any content provided on the service. This includes damages arising from (i) access to or use of the service, regardless of whether a service agreement was formed through the service or independently; (ii) errors or inaccuracies in any content; (iii) unauthorized access to secure servers or personal and financial information stored therein; (iv) any bugs, viruses, or similar issues transmitted through the service by any third party; (v) interruption or cessation of transmission to or from the service; (vi) errors or omissions in any content; (vii) any disputes during or after the negotiation of a service, or any other disputes arising between users; (viii) any offensive, illegal, or defamatory conduct of any third party; or (ix) any use of content posted, emailed, transmitted, or otherwise made available through the service. The
835se limitations apply even if PetWell is advised of the possibility of such damages and notwithstanding any failure of essential purpose of any limited remedy. 836 837Furthermore, PetWell's aggregate liability arising from or relating to the service shall not exceed the total amount of fees you have paid to PetWell. You acknowledge that PetWell is not liable for user-generated content or any third-party conduct and that the risk of harm or damage from the foregoing rests entirely with you. 838 839The service may contain links to third-party websites not owned or controlled by PetWell. PetWell has no control over, and assumes no responsibility for the content, policies, or practices of any third-party websites. You therefore relieve PetWell from any liability arising from your use of any third-party website. 840 841We are not liable for any damages arising from the use of our services, including but not limited to direct, incidental, or consequential damages, even if advised of such possibilities. This extends to damages resulting from unauthorized access to or alteration of your transmissions or data and the conduct or statements of any third party on the service. Each clause intended to limit liability is essential in determining our willingness to enter into these Legal Terms with you and shall be enforced even if limited remedies fail in their essential purpose. No matter what, in any event that any damages are imposed against PetWell, the maximum compensation for any damages in one occasion will not exceed ten thousand Hong Kong dollars (HKD$10000).`},17:{title:"FORCE MAJEURE",content:"Neither PetWell nor you will be held liable for any delays or failures in performance, except for payment obligations, that stem from causes beyond reasonable control and without the fault or negligence of either party. These causes may include, but are not limited to, natural disasters like fires, floods, and earthquakes, labor disputes, utility failures, blackouts, acts of God, war (whether declared or undeclared), actions by regulatory authorities, or other major events beyond our control."},18:{title:"RELEASE AND INDEMNIFICATION",content:`You agree to defend, indemnify, and hold harmless PetWell, including its officers, directors, employees, agents, affiliates, and service providers, from any liabilities, claims, expenses, damages, and costs, including legal fees, arising from your use of and participation in our services. This includes any violations of our Legal Terms and Privacy Policy, infringement of any third-party rights such as intellectual property or privacy rights, or any damage caused by content you have submitted. This obligation to defend and indemnify will survive the termination of these terms and your use of our services. 842 843If you encounter disputes with other users, you release PetWell and its associates from all claims, demands, and damages of every kind, known or unknown, related to such disputes or your use of our services. 844 845You acknowledge that any legal actions related to other users' actions or omissions will be limited to claims against those specific individuals. You agree not to hold PetWell liable or seek legal remedies from it. PetWell is released from all claims, damages, and demands arising from your interactions with other users or as a result of your activities within our services. 846 847You may not transfer or assign your rights and licenses under these terms, but PetWell may assign them without restriction.`},19:{title:"NOTICE",content:"You acknowledge that PetWell may send notifications and updates, including changes to the Legal Terms, via email, SMS, postal mail, or by posting them on our services. This is to ensure you are always well-informed about any changes or important information regarding your use of PetWell."},20:{title:"GENERAL INFORMATION",content:`The Legal Terms, combined with the Privacy Policy and any additional legal notices or policies published by PetWell, constitute the complete agreement between you and PetWell regarding the service. Should any provision of these Legal Terms be deemed invalid by a court with appropriate jurisdiction, such invalidity will not affect the validity of the remaining provisions, which will remain in full effect. 848 849A failure by PetWell to enforce any rights or provisions of the Legal Terms should not be deemed a waiver of such rights or provisions. No waiver of any provision is a waiver of any other provision, nor is it a continuing waiver, and PetWell's right to enforce such rights and provisions remains in full force. 850 851Actions related to the service must commence within one year after the cause of action accrues; otherwise, they are permanently barred, precluding the initiation of such actions thereafter. Headings used in these Legal Terms are for convenience only and hold no legal or contractual significance.`}}},Nf={mallParking:"Mall Parking",nearbyParking:"Nearby Parking",evCharging:"EV Charging",carParkName:"Car Park Name",walk:"Walk",heightLimit:"Height Limit"},Rf={pageTitle:"[2026 Latest] Pet-friendly Malls in Hong Kong",subt
851itle:"2026 updated guide to Hong Kong pet-friendly shopping malls across Kowloon, Hong Kong Island, and the New Territories",description:"The most detailed directory of pet-friendly malls in Hong Kong, covering pet policies, leash/carrier rules, hours, parking, and transport tips",searchPlaceholder:"Search mall name or address...",filterByRegion:"Filter by region",regions:{all:"All regions",kowloon:"Kowloon",hongKong:"Hong Kong Island",newTerritories:"New Territories",others:"Others"},loading:"Loading...",error:"Failed to load malls",errorSubtitle:"Please try again later or contact support",noResults:"No pet-friendly malls found for this area",noResultsHint:"Try adjusting your search or filters.",ctaTitle:"Looking for more pet-friendly spots?",ctaDescription:"Download the PetWell app for restaurants, clinics, grooming, lodging, and more",filterPetsYes:"Pets welcome",filterLeashWalk:"Leash walk OK",filtersLabel:"Filters",clearFilters:"Clear filters",resultsCount:"{{count}} malls",trustBadge:"2026 latest policy info",backToList:"Back to malls",address:"Address",phone:"Phone",website:"Website",openingHours:"Opening hours",closed:"Closed",gallery:"Photos",mtrAccess:"MTR access",detail:{notFound:"Mall not found",policyTitle:"Pet policy",callNow:"Call mall",getDirections:"Get directions",visitWebsite:"Official website",dining:"Dining",diningWebsite:"Mall dining page",diningVenues:"Pet-friendly dining",browseRestaurants:"Browse restaurants",parking:"Parking",parkingWebsite:"Parking page",parkingDetails:"Parking",weekdayRate:"Weekday",weekendRate:"Weekend",heightLimit:"Height limit",todayHours:"Today",viewFullHours:"View full hours",hideFullHours:"Hide hours",planVisit:"Plan your visit",visitGuideTitle:"Visit with pets",rulesTitle:"Before you go",tagStroller:"Stroller loan",tagStrollerNo:"No stroller loan",tagWalkZones:"Walk zones",tagPetToilet:"Pet toilet",tagPetToiletNo:"No pet toilet",tagPetPark:"Pet park",tagPetParkAt:"Pet park · {{place}}",tagParking:"Parking",tagDiningYes:"Pet-friendly dining",tagDiningNo:"No pet dining yet",policySubtitle:"Key rules first; notes only when useful",facilitiesTitle:"At a glance",walkZonesTitle:"Where you can go",restrictedTitle:"Restricted areas",floors:"Floors",floorGround:"G/F",floorN:"{{n}}/F",strollerTitle:"Pet stroller loan",membership:"Membership",membershipRequired:"Required",membershipWithName:"Membership: {{name}}",depositAmount:"Deposit HK${{amount}}",depositLabel:"Deposit",notesTitle:"Notes",notePrefix:"Note: ",venueWithFloor:"{{name}} · {{floor}}",venueCount:"{{count}} spots",zoneCount:"{{count}} zones",gettingThere:"Getting there",showMore:"Show more",showLess:"Show less",amenityPark:"Pet park",amenityDining:"Dining",amenityStroller:"Stroller",amenityToilet:"Pet toilet",amenityParking:"Parking",perHour:"/hr",ratePerHour:"HK${{amount}}/hr",rateAmount:"HK${{amount}}",heightLimitValue:"Height limit: {{meters}} m",ruleLeash:"Leash required",ruleCarrier:"Carrier / held / stroller required",ruleNoCarrier:"No carrier needed in common areas",ruleMuzzle:"Muzzle suggested for large dogs",ruleMaxWeight:"Max {{kg}} kg",zoneType:{OUTDOOR:"Outdoor",INDOOR:"Indoor",MIXED:"Indoor & outdoor"}}},If={pageTitle:"Pet Home Visit Services in Hong Kong",subtitle:"Pick an area to see who can come to you",description:"Compare home-visit vets, nurses, groomers and related services. Check coverage and prices, then contact directly.",searchPlaceholder:"Area, pet or name",filterByRegion:"Filter by region",regions:{all:"All regions",kowloon:"Kowloon",hongKong:"Hong Kong Island",newTerritories:"New Territories",others:"Others"},loading:"Loading...",error:"Failed to load home visit providers",errorSubtitle:"Please try again later or contact support",noResults:"No home visit providers match these filters",noResultsHint:"Try another area, or search for a pet type or service.",ctaTitle:"Looking for more pet services?",ctaDescription:"Download the PetWell app for clinics, grooming, lodging and more",filter24Hour:"24 hours",filtersLabel:"Filters",clearFilters:"Clear filters",resultsCount:"{{count}} providers",trustBadge:"Coverage and prices first",moreServices:"{{count}} more services",backToList:"Back to home visits",address:"Address",phone:"Phone",website:"Website",openingHours:"Hours",closed:"Closed",detail
851:{notFound:"Home visit provider not found",homeVisitConfirmed:"Home visit confirmed",coverage:"Service coverage",travelFee:"Travel fee",about:"About",services:"Services",pricing:"Pricing",referenceDisclaimer:"For reference only. Confirm services and prices with the provider.",pricingEmpty:"Pricing is not listed yet â WhatsApp or call for the latest quote.",pricingService:"Service",pricingAmount:"Price",pricingNotes:"Notes",includesTravel:"Travel included",species:"Pets served",contact:"Contact",whatsapp:"WhatsApp",call:"Call",bookOnline:"Book online",report:"Report incorrect info",reviews:"{{count}} reviews",viewFullHours:"View full hours",hideFullHours:"Hide hours"}},Df={myReviews:"My Reviews",mySubtitle:"Places you have been with your pet, written down.",myEmpty:"You have not written any reviews yet.",myEmptyTitle:"No reviews yet",myEmptyBody:"Write about a restaurant or clinic you visited with your pet â it helps other owners.",emptyCtaRestaurants:"Find restaurants",emptyCtaClinics:"Find clinics",searchPlaceholder:"Search a place or product",mySeoDescription:"View all reviews you have written on PetWell.",publicEmpty:"This user has not shared any reviews yet.",publicSeoDescription:"View public place and product reviews from this PetWell member.",publicSubtitle:"Public reviews from a PetWell member â places and products they have tried with their pets.",memberBadge:"PetWell member",reviewsCount:"{{count}} reviews",reviewsCount_one:"{{count}} review",avgRating:"{{rating}} avg",filterAll:"All",filterLabel:"Filter reviews",viewPlace:"View place",loading:"Loading reviewsâ¦",loadFailed:"Could not load this profile right now. Please try again later.",empty:"No reviews yet.",emptyFiltered:"No reviews in this category yet.",anonymousBadge:"Anonymous",anonymousUser:"PetWell user",externalUser:"External user",unknownUser:"Unknown user",loginRequiredTitle:"Sign in to view your reviews",loginRequiredBody:"Log in to your PetWell account to see the reviews you have written.",types:{clinic:"Clinic",salon:"Salon",lodging:"Lodging",restaurant:"Restaurant",product:"Product"}},Wf={title:"Profile",subtitle:"You and your pets on PetWell.",seoDescription:"View and edit your PetWell profile.",breadcrumb:"Profile",sections:"Account sections",loginRequiredTitle:"Sign in to open your profile",loginRequiredBody:"Log in to see your details, your pets, and the reviews you have written.",loading:"Loading profileâ¦",loadFailed:"Could not load your profile right now. Please try again later.",personalInfo:"Personal info",edit:"Edit profile",editProfile:"Edit profile",editProfileDesc:"Update your name, phone, address, and photo.",firstName:"First name",lastName:"Last name",email:"Email",phone:"Phone",address:"Address",emailReadOnly:"Email cannot be changed here.",phoneHint:"8-digit Hong Kong mobile number",notSet:"Not set",save:"Save",saving:"Savingâ¦",cancel:"Cancel",changePhoto:"Change photo",saveSuccess:"Profile updated",saveFailed:"Could not save your profile. Please try again.",firstNameRequired:"Please enter your first name.",lastNameRequired:"Please enter your last name.",phoneInvalid:"Please enter a valid 8-digit Hong Kong phone number.",myPets:"My pets",petCount:"{{count}}/{{max}}",sharedBadge:"Shared",sharingBadge:"Sharing",noPets:"No pets on this profile yet",noPetsHint:"Create their profile in the app so health records stay with you.",manageInApp:"Manage in the app",managePetInApp:"Manage {{name}} in the app",addPet:"Add a pet",appHint:"Add or edit pets in the PetWell app.",downloadGateTitle:"Manage pets in the PetWell app",downloadGateBody:"Adding, editing, sharing, and vaccine records are available in the PetWell app.",reviewsTeaser:"Your reviews",reviewsTeaserCta:"See all",reviewsTeaserEmpty:"Write your first review to help other pet owners.",ageYears:"{{count}} years old",ageMonths:"{{count}} months old",activity:"Activity",account:"Account",deleteAccount:"Delete account",weightKg:"{{weight}} kg"},Lf={nav:Hm,placeListing:$m,restaurantReservation:Bm,tests:Vm,hero:Um,home:qm,homePortal:zm,clinics:Km,salons:Gm,lodging:Ym,restaurants:Qm,testBooking:Xm,restaurant:Jm,ngos:Zm,footer:ef,report:tf,common:of,hours:nf,forum:rf,deleteAccount:af,petTag:sf,reviews:lf,activateTag:cf,download:df,event:uf,adminForms:pf,nameTagBanner:hf,nametagDailyPopup:mf,midAutumnDailyPopup:ff,cnyProducts:gf,checkout:yf,payment:vf,cart:wf,petMatchmaker:bf,otherServices:Pf,about:xf,contactWidget:Sf,landing:Tf,auth:Af,authLinking:Ef,
851nametagPage:kf,terms:Cf,malls:Nf,mallPlaces:Rf,homeVisitPlaces:If,userReviews:Df,accountProfile:Wf};ne.use(ga).use(Ah).init({resources:{zh:{translation:jm},en:{translation:Lf}},lng:"zh",fallbackLng:"zh",detection:{order:["localStorage"],caches:["localStorage"]},debug:!1,interpolation:{escapeValue:!1}});var Vr;const ya=typeof window<"u"&&((Vr=window.location)!=null&&Vr.origin)?window.location.origin:"http://localhost:5173",Of=`${ya}/auth/callback/`,Ff=`${ya}/`,va={aws_project_region:"ap-southeast-1",aws_appsync_graphqlEndpoint:"https://zzqlfjlslncu7kjjqkdedp7uwu.appsync-api.ap-southeast-1.amazonaws.com/graphql",aws_appsync_region:"ap-southeast-1",aws_appsync_authenticationType:"API_KEY",aws_appsync_apiKey:"da2-pq3dyfbcuncunjstmawmtz3req",aws_cognito_region:"ap-southeast-1",aws_cognito_identity_pool_id:"ap-southeast-1:827a8b5e-155c-448e-a2e6-c9e75e98789d",aws_user_pools_id:"ap-southeast-1_vC1Zugxkg",aws_user_pools_web_client_id:"mm6ek73uv5ikh82iidgm0fv0j",oauth:{domain:"petwell-auth-prod.auth.ap-southeast-1.amazoncognito.com",scope:["email","openid","profile"],redirectSignIn:Of,redirectSignOut:Ff,responseType:"code"},aws_cognito_username_attributes:["EMAIL","PHONE_NUMBER"],aws_cognito_social_providers:["GOOGLE","APPLE"],aws_cognito_signup_attributes:["EMAIL"],aws_cognito_mfa_configuration:"OFF",aws_cognito_mfa_types:["SMS"],aws_cognito_password_protection_settings:{passwordPolicyMinLength:8,passwordPolicyCharacters:[]},aws_cognito_verification_mechanisms:["EMAIL"],aws_user_files_s3_bucket:"petwellclientstoragee8eec-prod",aws_user_files_s3_bucket_region:"ap-southeast-1"},_f=va.aws_user_files_s3_bucket,Mf=va.aws_user_files_s3_bucket_region,jf="forum-images/",wa=e=>{const t=e.replace(/^\/+/,"").replace(/^public\//,"");return`https://${_f}.s3.${Mf}.amazonaws.com/public/${t}`},Hf=e=>wa(e),ba=e=>{const t=decodeURIComponent(e);if(t.includes("/public/"))return t.slice(t.indexOf("/public/")+8);const n=["/forum-images/","/posts/","/reply-images/"];for(const r of n)if(t.includes(r))return t.slice(t.indexOf(r)+1);return null},$f=e=>{const t=e.trim().replace(/&/g,"&");if(!t)return"";if(!t.startsWith("http"))return t;try{const o=new URL(t),n=ba(o.pathname);return n!=null&&n.startsWith(jf)?Hf(n):t}catch{return t}},dw=async e=>{const t=e.trim().replace(/&/g,"&");if(!t)return"";let o=null;if(t.startsWith("http"))try{const n=new URL(t);o=ba(n.pathname)}catch{o=null}else o=t.replace(/^\/+/,"").replace(/^public\//,"");if(!o)return t;try{const{url:n}=await zs({key:o,options:{accessLevel:"guest"}});return n.toString()}catch{return wa(o)}},Lt=e=>e==null?"":String(e).replace(/\uFFFC/g,"").replace(/\uFFFD/g,"").replace(/[\u200B-\u200D\uFEFF]/g,""),Pa=/^(javascript|data|vbscript):/i,xa=/^[a-z][a-z0-9+.-]*:/i,dt=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">"),Sr=e=>{const t=$f(e).trim().replace(/&/g,"&");if(!t||Pa.test(t))return"";if(!xa.test(t))return t;try{const o=new URL(t);return o.protocol==="http:"||o.protocol==="https:"?o.toString():""}catch{return""}},Tr=e=>{const t=e.trim().replace(/&/g,"&");if(!t||Pa.test(t))return"";const o=xa.test(t)?t:`https://${t}`;try{const n=new URL(o);return n.protocol!=="http:"&&n.protocol!=="https:"?"":n.toString()}catch{return""}},uw=e=>{if(!e)return"";let t=Lt(e);return t=t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),t=t.replace(/\n/g,"<br>"),t=t.replace(/\[img=([^\]]+)\](.*?)\[\/img\]/gi,(o,n,r)=>{const i=Sr(n);if(!i)return"";const a=dt(i),s=dt(r.trim());return`<img src="${a}" alt="${s}" data-image-url="${a}" class="forum-image max-w-full h-auto rounded-lg my-2 cursor-pointer transition-transform hover:scale-[1.02]" style="max-width: 600px; max-height: 400px; width: auto; height: auto; object-fit: contain; display: inline-block; margin: 0.5rem 0; vertical-align: middle;" loading="lazy" />`}),t=t.replace(/\[img\](.*?)\[\/img\]/gi,(o,n)=>{const r=Sr(n);if(!r)return"";const i=dt(r);return`<img src="${i}" alt="" data-image-url="${i}" class="forum-image max-w-full h-auto rounded-lg my-2 cursor-pointer transition-transform hover:scale-[1.02]" style="max-width: 600px; max-height: 400px; width: auto; height: auto; object-fit: contain; display: inline-block; margin: 0.5rem 0; vertical-align: middle;" loading="lazy" />`}),t=t.replace(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,(o,n,r)=>{const i=Tr(n);return i?`<a href="${dt(i)}" target="_blank" rel="noopener noreferrer" class="text-[#FF902A] hover:underline">${r}</a>`:r}),t=t.replace(/\[url\](.*?)\[\/url\]/gi,(o,n)=>{const r=Tr(n);if(!r)return n;const i=dt(n.trim().replace(/&/g,"&"))||r;return`<a href="${dt(r)}" target="_blank" rel="noopener noreferrer" class="text-[#FF902A] hover:underline">${i}</a>`}),t=t.replace(/\[left\](.*?)\[\/left\]/gi,'<div style="text-align: left; display: block;">$1</div>'),t=t.replace(/\[center\](.*?)\[\/center\]/gi,'<div style="text-align: center; display: block;">$1</div>'),t=t.replace(/\[right\](.*?)\[\/right\]/gi,'<div style="text-align: right; display: block;">$1</div>'),t=t.replace(/\[align=left\](.*?)\[\/align\]/gi,'<div style="text-align: left;">$1</div>'),t=t.replace(/\[align=center\](.*?)\[\/align\]/gi,'<div style="text-align: center;">$1</div>'),t=t.replace(/\[align=right\](.*?)\[\/align\]/gi,'<div style="text-align: right;">$1</div>'),t=t.replace(/\[small\](.*?)\[\/small\]/gi,'<span style="font-size: 12px;">$1</span>'),t=t.replace(/\[medium\](.*?)\[\/medium\]/gi,'<span style="font-size: 24px;">$1</span>'),t=t.replace(/\[large\](.*?)\[\/large\]/gi,'<span style="font-size: 36px;">$1</span>'),t=t.replace(/\[size=(\d+)\](.*?)\[\/size\]/gi,'<span style="font-size: $1px;">$2</span>'),t=t.replace(/\[color=([^\]]+)\](.*?)\[\/color\]/gi,(o,n,r)=>{const i=String(n).trim();return`<span style="color: ${/^(#[0-9a-fA-F]{3,8}|[a-zA-Z]+|rgb\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}\s*\)|rgba\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*(?:0|1|0?\.\d+)\s*\))$/.test(i)?i:"inherit"};">${r}</span>`}),t=t.replace(/\[b\](.*?)\[\/b\]/gi,"<strong>$1</strong>"),t=t.replace(/\[u\](.*?)\[\/u\]/gi,"<u>$1</u>"),t=t.replace(/\[s\](.*?)\[\/s\]/gi,"<s>$1</s>"),t}
851,pw=e=>e?Lt(e).replace(/\[img=([^\]]+)\](.*?)\[\/img\]/gi,"$2").replace(/\[img\](.*?)\[\/img\]/gi,"").replace(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2").replace(/\[url\](.*?)\[\/url\]/gi,"$1").replace(/\[left\](.*?)\[\/left\]/gi,"$1").replace(/\[center\](.*?)\[\/center\]/gi,"$1").replace(/\[right\](.*?)\[\/right\]/gi,"$1").replace(/\[align=[^\]]+\](.*?)\[\/align\]/gi,"$1").replace(/\[small\](.*?)\[\/small\]/gi,"$1").replace(/\[medium\](.*?)\[\/medium\]/gi,"$1").replace(/\[large\](.*?)\[\/large\]/gi,"$1").replace(/\[size=\d+\](.*?)\[\/size\]/gi,"$1").replace(/\[color=[^\]]+\](.*?)\[\/color\]/gi,"$1").replace(/\[b\](.*?)\[\/b\]/gi,"$1").replace(/\[u\](.*?)\[\/u\]/gi,"$1").replace(/\[s\](.*?)\[\/s\]/gi,"$1"):"",Sa=` 852 query ClientsByEmail($email: ID!, $limit: Int) { 853 clientsByEmail(email: $email, limit: $limit) { 854 items { 855 id 856 email 857 phone 858 firstName 859 lastName 860 displayName 861 } 862 } 863 } 864`,Ta=` 865 query GetClientByEmail($email: ID!, $limit: Int) { 866 listClients(filter: { email: { eq: $email } }, limit: $limit) { 867 items { 868 id 869 email 870 phone 871 firstName 872 lastName 873 displayName 874 } 875 } 876 } 877`,Bf=` 878 query ListClientsPage($limit: Int, $nextToken: String) { 879 listClients(limit: $limit, nextToken: $nextToken) { 880 items { 881 id 882 email 883 phone 884 firstName 885 lastName 886 displayName 887 } 888 nextToken 889 } 890 } 891`,Vf=` 892 mutation CreateClient($input: CreateClientInput!) { 893 createClient(input: $input) { 894 id 895 email 896 phone 897 firstName 898 lastName 899 displayName 900 } 901 } 902`,Aa=` 903 mutation UpdateClient($input: UpdateClientInput!) { 904 updateClient(input: $input) { 905 id 906 email 907 phone 908 firstName 909 lastName 910 displayName 911 } 912 } 913`,so=new Map,vn=5*60*1e3,wn=e=>{const t=e==null?void 0:e.trim();return t||void 0},bn=e=>{if(!e)return;const t=e.replace(/\D/g,"");return t?`+852${t}`:void 0},Pn=e=>{if(!(typeof e!="number"||Number.isNaN(e)||e<=0))return Math.round(e*10)/10},on=e=>{const t=new Map;for(const o of e)o!=null&&o.id&&!t.has(o.id)&&t.set(o.id,o);return Array.from(t.values())},Uf=async e=>{var o,n;const t=[];try{const r=await Le(Sa,{email:e,limit:50},{authMode:"userPool"});t.push(...((o=r.clientsByEmail)==null?void 0:o.items)||[])}catch{}try{const r=await Le(Ta,{email:e,limit:50},{authMode:"userPool"});t.push(...((n=r.listClients)==null?void 0:n.items)||[])}catch{}return on(t)},xn=async e=>{var d,c;const t=e.trim();if(!t)return[];const o=Array.from(new Set([t,t.toLowerCase()])),n=o.map(p=>p.trim().toLowerCase()),r=[];for(const p of o){const m=await Uf(p);r.push(...m)}let i=on(r);if(i.length>0)return i;let a,s=0;do{const p=await Le(Bf,{limit:100,nextToken:a},{authMode:"userPool"}),g=(((d=p.listClients)==null?void 0:d.items)||[]).filter(h=>{var f;const y=(f=h==null?void 0:h.email)==null?void 0:f.trim().toLowerCase();return!!(y&&n.includes(y))});i=on([...i,...g]),a=((c=p.listClients)==null?void 0:c.nextToken)||void 0,s+=1}while(a&&s<10);return i},Wo=async e=>{var n,r;const t=i=>{const a=(i||[]).filter(Boolean);return a.find(s=>Sn(s))||a[0]};try{const i=await Le(Sa,{email:e,limit:20},{authMode:"userPool"}),a=t((n=i.clientsByEmail)==null?void 0:n.items);if(a)return a}catch{}const o=await Le(Ta,{email:e,limit:20},{authMode:"userPool"});return t((r=o.listClients)==null?void 0:r.items)},Ea=async e=>{const t=await xn(e);return t.find(o=>Sn(o))||t[0]},nn=async e=>{const t=await xn(e);return t.length===0?!1:t.some(o=>Sn(o))},Sn=e=>{var r,i,a;if(!e)return!1;const t=!!((r=e.firstName)!=null&&r.trim()),o=!!((i=e.lastName)!=null&&i.trim()),n=!!((a=e.phone)!=null&&a.trim());return t&&o&&n},rn=async(e,t,o)=>{var f,v;const n=e.trim().toLowerCase(),r=t==null?void 0:t.trim().toLowerCase(),i=(f=o==null?void 0:o.firstName)==null?void 0:f.trim(),a=(v=o==null?void 0:o.lastName)==null?void 0:v.trim(),s=wn((o==null?void 0:o.displayName)||[i,a].filter(Boolean).join(" ")),d=bn(o==null?void 0:o.phone),c=Pn(o==null?void 0:o.weightKg);if(r&&n!==r)throw new Error(`Security violation: Cannot create Client with email ${e}. You are authenticated as ${t}.`);const p=await vt(),m=p.userId||p.username;if(!m)throw new Error("Cannot create Client without an authenticated Cognito user id.");const g={id:m,email:n,firstName:(i||s||"User").trim(),lastName:a||""};s&&(g.displayName=s),d&&(g.phone=d),c!==void 0&&(g.weight=c);const y=(await Le(Vf,{input:g},{authMode:"userPool"})).createClient;if(!(y!=null&&y.id))throw new Error(`Client creation returned no id for email: ${e}`);return so.set(n,{clientId:y.id,expiresAt:Date.now()+vn}),y.id},ka=async(e,t,o)=>{var n,r;try{const i=e.trim().toLowerCase(),a=t==null?void 0:t.trim().toLowerCase(),s=(n=o==null?void 0:o.firstName)==null?void 0:n.trim(),d=(r=o==null?void 0:o.lastName)==null?void 0:r.trim(),c=wn((o==null?void 0:o.displayName)||[s,d].filter(
913Boolean).join(" ")),p=bn(o==null?void 0:o.phone),m=Pn(o==null?void 0:o.weightKg),g=!!(s||d||c||p||m!==void 0);if(a&&i!==a)throw new Error(`Security violation: Cannot create Client with email ${e}. You are authenticated as ${t}. You can only create posts with your own email.`);const h=so.get(i);if(!g&&h&&h.expiresAt>Date.now())return h.clientId;let y=await Wo(i);const f=!!y;if(!y)try{if(y={id:await rn(i,a,o),email:i,firstName:s||c||"User",lastName:d||""},!y&&(await new Promise(w=>setTimeout(w,500)),y=await Wo(i),!y))throw new Error(`Client creation returned null for email: ${e}. This might be due to authentication permissions. Please ensure you are logged in.`);if(!y.id)throw new Error(`Client creation returned a Client without an id for email: ${e}`)}catch(v){if(console.error("Error creating Client:",v),y=await Wo(i),!y){const w=v.message||v.toString();let x=`Failed to create or find Client for email: ${e}.`;throw w.includes("Unauthorized")||w.includes("email")?x+=" You must be logged in to create a forum post. Please ensure you are authenticated with the correct email address.":x+=` ${w}`,new Error(x)}}if(!y||!y.id)throw new Error(`Client record is missing required 'id' field for email: ${e}`);if(f&&g){const v={id:y.id};s&&y.firstName!==s&&(v.firstName=s),d&&y.lastName!==d&&(v.lastName=d),c&&y.displayName!==c&&(v.displayName=c),p&&y.phone!==p&&(v.phone=p),m!==void 0&&y.weight!==m&&(v.weight=m),Object.keys(v).length>1&&(y=(await Le(Aa,{input:v},{authMode:"userPool"})).updateClient||y)}return so.set(i,{clientId:y.id,expiresAt:Date.now()+vn}),y.id}catch(i){throw console.error("Error getting or creating Client:",i),i}},Ca=async(e,t,o)=>{var g,h;const n=e.trim().toLowerCase(),r=t==null?void 0:t.trim().toLowerCase(),i=(g=o==null?void 0:o.firstName)==null?void 0:g.trim(),a=(h=o==null?void 0:o.lastName)==null?void 0:h.trim(),s=wn((o==null?void 0:o.displayName)||[i,a].filter(Boolean).join(" ")),d=bn(o==null?void 0:o.phone),c=Pn(o==null?void 0:o.weightKg);if(r&&n!==r)throw new Error(`Security violation: Cannot update Client with email ${e}. You are authenticated as ${t}.`);const p=await xn(n);if(p.length===0)throw new Error(`Client profile not found for ${n}. Please contact support instead of creating a duplicate profile.`);let m=p[0].id;for(const y of p){const f={id:y.id};i&&y.firstName!==i&&(f.firstName=i),a&&y.lastName!==a&&(f.lastName=a),s&&y.displayName!==s&&(f.displayName=s),d&&y.phone!==d&&(f.phone=d),c!==void 0&&y.weight!==c&&(f.weight=c),Object.keys(f).length>1&&await Le(Aa,{input:f},{authMode:"userPool"})}return so.set(n,{clientId:m,expiresAt:Date.now()+vn}),m},Na=[{value:"DOG",label:"çç"},{value:"CAT",label:"è²è²"},{value:"SMALL_ANIMAL",label:"å°åç©"},{value:"LIFE_SHARING",label:"çæ´»å享"},{value:"EVENTS",label:"æ´»å"},{value:"ADOPTION",label:"é é¤"},{value:"HEALTH",label:"å¥åº·"},{value:"GROOMING",label:"ç¾å®¹"},{value:"DIET",label:"飲é£"},{value:"TRAINING",label:"è¨ç·´"},{value:"BEHAVIOR",label:"è¡çºåé¡"},{value:"PRODUCT_REVIEW",label:"ç¨åè©å¹"},{value:"TRADING",label:"交æ"},{value:"TRAVEL",label:"æ é"},{value:"LODGING",label:"ä½å®¿"},{value:"LOST_FOUND",label:"走失åå°"},{value:"EMERGENCY",label:"ç·æ¥æ±å©"}],qf=(e,t)=>{const o=t||ne.language||"zh",n=`forum.categories.${e}`,r=ne.t(n,{lng:o});if(r&&r!==n)return r;const i=Na.find(a=>a.value===e);return(i==null?void 0:i.label)||e},zf=` 914 query GetClient($id: ID!) { 915 getClient(id: $id) { 916 id 917 firstName 918 lastName 919 displayName 920 } 921 } 922`,Kf=` 923 query ListTags($filter: ModelForumTagFilterInput, $limit: Int) { 924 listForumTags(filter: $filter, limit: $limit) { 925 items { 926 id 927 name 928 createdAt 929 updatedAt 930 } 931 } 932 } 933`;const Ar=new Map,Gf=10*60*1e3,Ra=async e=>{try{const t=Ar.get(e);if(t&&t.expiresAt>Date.now())return t.data;const o=await Le(zf,{id:e});return o.getClient&&Ar.set(e,{data:o.getClient,expiresAt:Date.now()+Gf}),o.getClient}catch(t){return console.error(`Error fetching Client ${e}:`,t),null}},Ia=(e,t)=>{const o=`${e}-${t}`;let n=0;for(let i=0;i<o.length;
933i++){const a=o.charCodeAt(i);n=(n<<5)-n+a,n=n&n}return Math.abs(n).toString(16).padStart(4,"0").slice(-4).toUpperCase()},lo=(e,t,o=0,n,r,i)=>{const a=Date.now();let s=0;if(s+=t*.5,s-=o*.25,i){const d=new Date(i).getTime(),c=(a-d)/(1e3*60*60);let p=1;c<=24?p=1:c<=168?p=.5+.5*(1-(c-24)/144):p=Math.max(.2,.5*Math.exp(-(c-168)/720)),s+=e*2*p}else s+=e*2;return Math.max(0,s)},hw=e=>{const t=e||ne.language||"zh";return Na.map(o=>({value:o.value,label:qf(o.value,t)}))},mw=async(e,t=100)=>{var o;try{if(!(e&&e.trim()))return((o=(await Le(Kf,{limit:t})).listForumTags)==null?void 0:o.items)||[]}catch(n){throw console.error("Error fetching forum tags:",n),n}},Yf=async e=>{var i;const t=Math.min(Math.max((e==null?void 0:e.limit)||50,1),100);if((i=e==null?void 0:e.searchQuery)!=null&&i.trim()){const a=new URLSearchParams({q:e.searchQuery.trim(),limit:String(t)}),s=await me(`/api/forum/search?${a.toString()}`);return Er(s.items||[],e)}const o=(e==null?void 0:e.sortBy)==="hot"||(e==null?void 0:e.sortBy)==="popular"?e.sortBy:"recent",n=new URLSearchParams({sort:o,limit:String(t)});e!=null&&e.asksVet?n.set("asksVet","1"):e!=null&&e.category&&n.set("category",e.category);const r=await me(`/api/forum/posts?${n.toString()}`);return Er(r.items||[],e)},Qf=e=>({...e,isHot:e.isHot??!1}),Er=(e,t)=>{let o=e.filter(n=>!!n).map(Qf).filter(n=>!n.isDeleted);return t!=null&&t.tags&&t.tags.length>0&&(o=o.filter(n=>n.tags&&n.tags.some(r=>t.tags.some(i=>r.toLowerCase().includes(i.toLowerCase()))))),(t!=null&&t.dateFrom||t!=null&&t.dateTo)&&(o=o.filter(n=>{const r=n.createdAt?new Date(n.createdAt).getTime():0;return!(t.dateFrom&&r<new Date(t.dateFrom).getTime()||t.dateTo&&r>new Date(t.dateTo).getTime())})),o.sort((n,r)=>{if(n.isPinned&&!r.isPinned)return-1;if(!n.isPinned&&r.isPinned)return 1;if((t==null?void 0:t.sortBy)==="hot"){const i=n.hotScore??lo(n.replies,n.likes,n.dislikes||0,void 0,n.createdAt,n.lastReplyAt),a=r.hotScore??lo(r.replies,r.likes,r.dislikes||0,void 0,r.createdAt,r.lastReplyAt);if(a!==i)return a-i;const s=n.lastReplyAt||n.createdAt,d=r.lastReplyAt||r.createdAt;return s&&d?new Date(d).getTime()-new Date(s).getTime():0}else{if((t==null?void 0:t.sortBy)==="popular")return r.likes!==n.likes?r.likes-n.likes:r.replies!==n.replies?r.replies-n.replies:r.views-n.views;if((t==null?void 0:t.sortBy)==="replies")return r.replies!==n.replies?r.replies-n.replies:r.lastReplyAt&&n.lastReplyAt?new Date(r.lastReplyAt).getTime()-new Date(n.lastReplyAt).getTime():0;{const i=n.lastReplyAt||n.createdAt,a=r.lastReplyAt||r.createdAt;return i&&a?new Date(a).getTime()-new Date(i).getTime():0}}}),o},fw=async(e=10)=>{try{const t=await Yf({sortBy:"hot",limit:e*3}),n=Date.now()-7*24*60*60*1e3;return t.filter(i=>{if(i.isDeleted||i.replies===0)return!1;const a=i.lastReplyAt&&new Date(i.lastReplyAt).getTime()>n,s=i.replies>=5||i.likes>=10;return a||s}).sort((i,a)=>{const s=i.hotScore??lo(i.replies,i.likes,i.dislikes||0,void 0,i.createdAt,i.lastReplyAt);return(a.hotScore??lo(a.replies,a.likes,a.dislikes||0,void 0,a.createdAt,a.lastReplyAt))-s}).slice(0,e)}catch(t){throw console.error("Error fetching hot topics:",t),t}},gw=(e,t,o,n)=>{const r=n||ne.language||"zh";if(Jn(e)||Jn({author:t,authorId:o}))return Cu(r);if(e!=null&&e.isAnonymous){const a=("anonHash"in e?e.anonHash:void 0)||(e.id&&o?Ia(e.id,o):"0000");return`${ne.t("forum.anonymousUser",{lng:r})} #${a}`}if(e!=null&&e.authorName&&e.authorName.trim())return e.authorName.trim();if(t!=null&&t.displayName){const i=t.displayName.trim();if(i&&!i.includes("@"))return i}if(t){const{firstName:i,lastName:a}=t,s=(i||"").trim(),d=(a||"").trim();if(s.includes("@")||d.includes("@"))console.error(`â Rejecting email-like value in firstName/lastName: firstName="${s}", lastName="${d}", authorId="${o||"unknown"}"`);else if(s||d){if(s&&d)return`${s} ${d}`.trim();if(s)return s;if(d)return d}}return o&&!t&&console.warn(`â ï¸ No author data for authorId: ${o}. Client data should be fetched before display.`),o?ne.t("forum.genericUser",{lng:r}):ne.t("forum.anonymous",{lng:r})},Da=async e=>{const o=(await me(`/api/forum/posts/${encodeURIComponent(e)}`,{auth:"optional"})).post;if(!o||o.isDeleted)throw new Error("Post not found or has been deleted");return o.isHot=o.isHot??!1,o.isAnonymous?(!o.anonHash&&o.id&&o.authorId&&(o.anonHash=Ia(o.id,o.authorId)),o.authorId="",o.author=void 0,o):(o.author&&(o.author={firstName:o.author.firstName||"",lastName:o.author.lastName||"",displayName:o.author.displayName}),o)},yw=async(e,t=100)=>{const n=((await me(`/api/forum/posts/${encodeURIComponent(e)}/replies?limit=${Math.min(Math.max(t,1),500)}`,{auth:"optional"})).items||[]).filter(r=>!!r).filter(r=>!r.isDeleted).map(r=>({...r,author:r.author?{firstName:r.author.firstName||"",lastName:r.author.lastName||"",displayName:r.author.displayName}:void 0}));return n.sort((r,i)=>!r.createdAt&&!i.createdAt?0:r.createdAt?i.createdAt?new Date(r.createdAt).getTime()-new Date(i.createdAt).getTime():-1:1),n},vw=async()=>me("/api/forum/me",{auth:!0}),ww=async e=>{const o=new URLSearchParams().toString();return me(`/api/forum/vet/queue${o?`?${o}`:""}`,{auth:!0})},bw=async()=>me("/api/forum/me/vet-questions",{auth:!0}),Pw=(e,t="zh")=>{if(!e)return null;try{let o=e;o=e.replace(/(\.\d{3})\d+/,"$1");const n=new Date(o);if(isNaN(n.getTime())){const i=new Date(e);if(isNaN(i.getTime()))throw new Error("Invalid date");return tr(i,{addSuffix:!0,locale:t==="en"?Qo:or})}return tr(n,{addSuffix:!0,locale:t==="en"?Qo:or})}catch(o){return console.error("Error parsing timestamp:",e,o),null}},xw=async e=>{var n,r;if(!e.title||!e.content||!e.authorId)throw new Error("Title, content, and authorId are required");if(e.title.length<1||e.title.length>200)throw new Error("Title must be between 1 and 200 characters");if(e.content.length<1||e.content.length>1e4)throw new Error("Content must be between 1 and 10000 characters");if(e.tags&&e.tags.length>10)throw new Error("Maximum 10 tags allowed");let t=e.authorName;if(!e.isAnonymous&&!t&&e.authorId)try{const i=await Ra(e.authorId);if(i){const a=((n=i.firstName)==null?void 0:n.trim())||"",s=((r=i.lastName)==null?void 0:r.trim())||"";a&&s?t=`${a} ${s}`.trim():a?t=a:s&&(t=s)}}catch(i){console.warn("Could not fetch Client for authorName:",i)}const o=await me("/api/forum/posts",{method:"POST",auth:!0,body:{title:Lt(e.title).trim(),content:Lt(e.content).trim(),category:e.category||"DOG",tags:e.tags,attachments:e.attachments,location:e.location,isAnonymous:e.isAnonymous??!1,authorName:e.isAnonymous?void 0:t,asksVet:e.asksVet,visibility:e.visibility,acceptedVetDisclaimer:e.acceptedVetDisclaimer}});if(o.blocked||o.pendingReview)return{pendingReview:!0,filteredContentId:o.filteredContentId,moderationStatus:o.status,riskScore:o.riskScore,riskReasons:o.riskReasons,matchedTerms:o.matchedTerms};if(!o.post)throw new Error("Failed to create post");return o.post},Sw=async(e,t)=>{try{const{postVotes:o}=await Mt({postIds:[e]});return o[e]===1}catch(o){return console.error("Error checking if user liked post:",o),!1}},Tw=async(e,t,o,n,r)=>
933{const{postVotes:i}=await Mt({postIds:[e]}),a=i[e]!==1;await me(`/api/forum/posts/${encodeURIComponent(e)}/vote`,{method:"POST",auth:!0,body:{value:a?1:0}});const s=await Da(e);return{liked:a,newLikesCount:s.likes??0,newDislikesCount:s.dislikes??0}},Aw=async(e,t,o,n,r)=>{const{postVotes:i}=await Mt({postIds:[e]}),a=i[e]!==-1;await me(`/api/forum/posts/${encodeURIComponent(e)}/vote`,{method:"POST",auth:!0,body:{value:a?-1:0}});const s=await Da(e);return{disliked:a,newLikesCount:s.likes??0,newDislikesCount:s.dislikes??0}},Ew=async(e,t,o,n)=>{var s,d;const{replyVotes:r}=await Mt({replyIds:[e]}),i=r[e]!==1,a=await me(`/api/forum/replies/${encodeURIComponent(e)}/vote`,{method:"POST",auth:!0,body:{value:i?1:0}});return{liked:i,newLikesCount:((s=a.reply)==null?void 0:s.likes)??0,newDislikesCount:((d=a.reply)==null?void 0:d.dislikes)??0}},kw=async(e,t)=>{if(!e.content||e.content.trim()==="")throw new Error("Reply content is required");if(!e.postId)throw new Error("Post ID is required");if(!e.authorId)throw new Error("Author ID is required");if(await ka(t,t)!==e.authorId)throw new Error("Author ID must match authenticated user");const n=await me(`/api/forum/posts/${encodeURIComponent(e.postId)}/replies`,{method:"POST",auth:!0,body:{content:Lt(e.content).trim(),parentReplyId:e.parentReplyId||void 0,attachments:e.attachments}});if(n.blocked||n.pendingReview)return{pendingReview:!0,filteredContentId:n.filteredContentId,moderationStatus:n.status,riskScore:n.riskScore,riskReasons:n.riskReasons,matchedTerms:n.matchedTerms};const r=n.reply;if(!r)throw new Error("Failed to create reply");try{const i=await Ra(e.authorId);i&&(r.author={firstName:i.firstName,lastName:i.lastName})}catch(i){console.warn("Error fetching reply author:",i)}return r},Cw=async(e,t)=>{const o={likedPostIds:new Set,dislikedPostIds:new Set,likedReplyIds:new Set,dislikedReplyIds:new Set};try{const n=(t==null?void 0:t.postIds)||[],r=(t==null?void 0:t.replyIds)||[];if(!n.length&&!r.length)return o;const{postVotes:i,replyVotes:a}=await Mt({postIds:n,replyIds:r});for(const[s,d]of Object.entries(i))d===1&&o.likedPostIds.add(s),d===-1&&o.dislikedPostIds.add(s);for(const[s,d]of Object.entries(a))d===1&&o.likedReplyIds.add(s),d===-1&&o.dislikedReplyIds.add(s);return o}catch(n){return console.error("Error getting user interactions:",n),o}};var Ur;const Wa=typeof window<"u"&&((Ur=window.location)!=null&&Ur.origin)?window.location.origin:"http://localhost:5173",yo="petwell-auth-prod.auth.ap-southeast-1.amazoncognito.com",Xf="ap-southeast-1_vC1Zugxkg",vo="mm6ek73uv5ikh82iidgm0fv0j",Jf="ap-southeast-1:827a8b5e-155c-448e-a2e6-c9e75e98789d",La=["email","openid","profile"],Tn=`${Wa}/auth/callback/`,Oa=`${Wa}/`,Zf={Auth:{Cognito:{userPoolId:Xf,userPoolClientId:vo,identityPoolId:Jf,allowGuestAccess:!0,loginWith:{email:!0,oauth:{domain:yo,scopes:[...La],redirectSignIn:[Tn],redirectSignOut:[Oa],responseType:"code",providers:["Google","Apple"]}}}},API:{GraphQL:{endpoint:"https://zzqlfjlslncu7kjjqkdedp7uwu.appsync-api.ap-southeast-1.amazonaws.com/graphql",region:"ap-southeast-1",defaultAuthMode:"apiKey",apiKey:"da2-pq3dyfbcuncunjstmawmtz3req"}},Storage:{S3:{bucket:"petwellclientstoragee8eec-prod",region:"ap-southeast-1"}}},eg=e=>new Promise(t=>setTimeout(t,e)),An="petwell.oauth.state",En="petwell.oauth.verifier",kt=async(e,t=1)=>{var r,i,a,s,d;let o=null;const n={...e,options:{...e==null?void 0:e.options,authFlowType:((r=e==null?void 0:e.options)==null?void 0:r.authFlowType)==="USER_PASSWORD_AUTH"?"USER_SRP_AUTH":(i=e==null?void 0:e.options)==null?void 0:i.authFlowType}};for(let c=0;c<=t;c++)try{return await Gs(n)}catch(p){if(o=p,(((a=p.message)==null?void 0:a.includes("already signed in"))||((s=p.message)==null?void 0:s.includes("already authenticated"))||((d=p.message)==null?void 0:d.includes("User is already signed in"))||p.name==="UserAlreadySignedInException"||p.name==="UserAlreadyAuthenticatedException")&&c<t){try{await no({global:!0})}catch{try{await no()}catch{try{throw await vt(),p}catch{}}}await eg(500);continue}throw p}throw o},Fa=e=>{var r,i,a,s;const t=(r=e.name)==null?void 0:r.trim(),o=((i=e.given_name)==null?void 0:i.trim())||((a=t==null?void 0:t.split(" ")[0])==null?void 0:a.trim()),n=((s=e.family_name)==null?void 0:s.trim())||"";
933return{firstName:o,lastName:n,displayName:t||[o,n].filter(Boolean).join(" ")||void 0}},tg=e=>{var t,o;return{userId:e.userId,username:e.username,email:(t=e.username)!=null&&t.includes("@")?e.username.trim().toLowerCase():"",rawEmail:(o=e.username)!=null&&o.includes("@")?e.username.trim():"",isAdmin:!1}},_a=async()=>{var s;const e=await Qr.authTokenStore.loadTokens();if(!(e!=null&&e.accessToken))return null;const t=((s=e.idToken)==null?void 0:s.payload)??{},o=e.accessToken.payload??{},n=String(t.email||o.username||e.username||"").trim().toLowerCase(),r=String(t.name||t["cognito:username"]||o.username||e.username||n||"User").trim(),i=String(t.sub||o.sub||e.username||"").trim(),a={email:n||void 0,name:typeof t.name=="string"?t.name:void 0,given_name:typeof t.given_name=="string"?t.given_name:void 0,family_name:typeof t.family_name=="string"?t.family_name:void 0};return{userInfo:{userId:i,username:r,email:n,rawEmail:String(t.email||o.username||e.username||n||"").trim(),isAdmin:!1},attributes:a}},an=async(e,t)=>{try{if(!await Ea(e))return;await Ca(e,e,Fa(t))}catch(o){console.warn("Unable to ensure client profile for authenticated user:",o)}},og=async e=>!await nn(e),ng=({provider:e,state:t,codeChallenge:o})=>{const n=new URLSearchParams({redirect_uri:Tn,response_type:"code",client_id:vo,identity_provider:e,scope:La.join(" "),state:t,code_challenge:o,code_challenge_method:"S256"});return e==="Google"&&n.set("prompt","select_account consent"),`https://${yo}/oauth2/authorize?${n.toString()}`},rg=()=>{const e=new URLSearchParams({client_id:vo,logout_uri:Oa});return`https://${yo}/logout?${e.toString()}`},Ma=async e=>{const t=Ys(128),o=Qs(),n=t.value,r=t.toCodeChallenge();window.sessionStorage.setItem(An,o),window.sessionStorage.setItem(En,n),window.location.assign(ng({provider:e,state:o,codeChallenge:r}))},eo=()=>{typeof window>"u"||(window.sessionStorage.removeItem(An),window.sessionStorage.removeItem(En))},ja=async()=>{try{console.log("Signing out user"),await no(),eo(),console.log("User signed out successfully"),typeof window<"u"&&window.location.assign(rg())}catch(e){throw console.error("Error signing out user:",e),e}},ig=async()=>{await Ma("Google")},ag=async()=>{await Ma("SignInWithApple")},Ot=async()=>{var e,t;try{const o=await vt();try{const n=await Ks(),r=!1,i=(n.email||o.username||"").trim(),a=i.toLowerCase(),s=Fa(n);a&&await an(a,n);const d={userId:o.userId,username:s.displayName||o.username,email:a,rawEmail:i,isAdmin:r};return console.log("Current user info:",d),d}catch(n){if((e=n.message)!=null&&e.includes("revoked")||(t=n.message)!=null&&t.includes("expired")){console.warn("Token revoked or expired, signing out user");try{await ja()}catch(i){console.error("Error signing out:",i)}throw new Error("Session expired. Please log in again.")}const r=await _a();return r?(r.userInfo.email&&await an(r.userInfo.email,r.attributes),console.warn("Falling back to token-derived user info because attributes could not be loaded:",n),r.userInfo):(console.warn("Falling back to basic user info because attributes could not be loaded:",n),tg(o))}}catch(o){throw o.name==="UserUnAuthenticatedException"?new Error("User not authenticated"):(console.error("Error getting current user info:",o),o)}},Nw=async(e,t)=>{const o=typeof window<"u"?window.sessionStorage.getItem(An):null,n=typeof window<"u"?window.sessionStorage.getItem(En):null;if(!o||!n)throw new Error("Social login session expired. Please try again.");if(t!==o)throw eo(),new Error("Social login state mismatch. Please try again.");const r=new URLSearchParams({grant_type:"authorization_code",client_id:vo,code:e,redirect_uri:Tn,code_verifier:n}),i=await fetch(`https://${yo}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:r});if(!i.ok)throw eo(),new Error("Failed to exchange social login code for tokens.");const a=await i.json(),s=Wn(a.access_token),d=a.id_token?Wn(a.id_token):void 0,c=(s.payload.iat||0)*1e3,p=new Date().getTime(),m=c>0?c-p:0,g=String((d==null?void 0:d.payload["cognito:username"])||s.payload.username||(d==null?void 0:d.payload.email)||s.payload.sub||"");await Qr.tokenOrchestrator.setTokens({tokens:{accessToken:s,idToken:d,refreshToken:a.refresh_token,clockDrift:m,username:g}}),eo();const h=await _a(),y=(h==null?void 0:h.userInfo)??await Ot();h!=null&&h.userInfo.email&&await an(h.userInfo.email,h.attributes);const f=y.email?await og(y.email):!1;return{userInfo:y,requiresProfileCompletion:f}},Ha=u.createContext(void 0),sg=({children:e})=>
933{const[t,o]=u.useState(null),[n,r]=u.useState(!1),[i,a]=u.useState(null);return u.useEffect(()=>{const s=async()=>{var c;try{const p=await vt();console.log("[AuthContext] getCurrentUser success",p),o(!0);const m=await Ot();console.log("[AuthContext] resolved user info",m);const g=(m==null?void 0:m.rawEmail)||(m==null?void 0:m.email);let h=!1;if(g)try{h=!await nn(g)}catch(y){console.warn("[AuthContext] profile completeness check failed, keep user signed in",y)}o(!0),r(h),a(m)}catch(p){console.log("[AuthContext] syncAuthState failed",p),(c=p.message)!=null&&c.includes("Session expired")||p.name==="NotAuthorizedException"?(o(!1),r(!1),a(null),console.log("Session expired, user needs to log in again")):(o(!1),r(!1),a(null))}};return s(),Xs.listen("auth",({payload:c})=>{const p=c==null?void 0:c.event;if(console.log("[AuthContext] Hub auth event",p,c),p==="signedIn"||p==="tokenRefresh"){s();return}(p==="signedOut"||p==="tokenRefresh_failure"||p==="signInWithRedirect_failure")&&(o(!1),r(!1),a(null))})},[]),u.useEffect(()=>{(async()=>{var d;if(t===!0&&!i)try{const c=await Ot(),p=(c==null?void 0:c.rawEmail)||(c==null?void 0:c.email);let m=!0;if(p)try{m=await nn(p)}catch(g){console.warn("[AuthContext] refresh profile completeness check failed, keep session",g)}a(c),r(!m)}catch(c){console.error("Error refreshing user info:",c),((d=c.message)!=null&&d.includes("Session expired")||c.name==="NotAuthorizedException")&&(o(!1),r(!1),a(null))}})()},[t,i]),l.jsx(Ha.Provider,{value:{isAuthenticated:t,setIsAuthenticated:o,requiresProfileCompletion:n,setRequiresProfileCompletion:r,userInfo:i,setUserInfo:a},children:e})},lg=()=>{const e=u.useContext(Ha);if(e===void 0)throw new Error("useAuth must be used within an AuthProvider");return e},$a=u.createContext(void 0),cg=({children:e})=>{const[t,o]=u.useState(!1),[n,r]=u.useState("LANDING"),[i,a]=u.useState(""),s=u.useRef(null),d=(y="LANDING",f="")=>{r(y),a(f),o(!0)},c=()=>{o(!1)},p=y=>{r(y)},m=y=>{a(y)},g=u.useCallback(y=>{s.current=y},[]),h=u.useCallback(()=>{if(s.current){const y=s.current;s.current=null,y()}},[]);return l.jsx($a.Provider,{value:{isOpen:t,currentView:n,email:i,openPanel:d,closePanel:c,setView:p,setEmail:m,onAuthSuccess:g,triggerAuthSuccess:h},children:e})},dg=()=>{const e=u.useContext($a);if(e===void 0)throw new Error("useAuthPanel must be used within an AuthPanelProvider");return e},Ba=u.createContext(void 0),kr="petwell:wishlist:v1",ug=({children:e})=>{const[t,o]=u.useState([]);u.useEffect(()=>{try{const c=localStorage.getItem(kr);c&&o(JSON.parse(c))}catch{}},[]);const n=c=>{o(c);try{localStorage.setItem(kr,JSON.stringify(c))}catch{}},r=u.useCallback(c=>t.some(p=>p.productId===c),[t]),i=u.useCallback((c,p)=>{t.some(m=>m.productId===c)||n([...t,{productId:c,addedAt:new Date().toISOString(),priceAtAdd:p}])},[t]),a=u.useCallback(c=>{n(t.filter(p=>p.productId!==c))},[t]),s=u.useCallback((c,p)=>t.some(m=>m.productId===c)?(n(t.filter(m=>m.productId!==c)),!1):(n([...t,{productId:c,addedAt:new Date().toISOString(),priceAtAdd:p}]),!0),[t]),d=u.useCallback(()=>n([]),[]);return l.jsx(Ba.Provider,{value:{items:t,isInWishlist:r,add:i,remove:a,toggle:s,clear:d},children:e})},Rw=()=>{const e=u.useContext(Ba);if(!e)throw new Error("useWishlist must be used within WishlistProvider");return e},Lo=4,Cr="petwell:compare:v1",Va=u.createContext(void 0),pg=({children:e})=>{const[t,o]=u.useState([]);u.useEffect(()=>{try{const d=localStorage.getItem(Cr);d&&o(JSON.parse(d))}catch{}},[]);const n=d=>{o(d);try{localStorage.setItem(Cr,JSON.stringify(d))}catch{}},r=u.useCallback(d=>t.includes(d),[t]),i=u.useCallback(d=>t.includes(d)?(n(t.filter(c=>c!==d)),{ok:!0}):t.length>=Lo?{ok:!1,reason:`æå¤åªå¯åææ¯è¼ ${Lo} ä»¶ç¢å`}:(n([...t,d]),{ok:!0}),[t]),a=u.useCallback(d=>{n(t.filter(c=>c!==d))},[t]),s=u.useCallback(()=>n([]),[]);return l.jsx(Va.Provider,{value:{ids:t,isSelected:r,toggle:i,remove:a,clear:s,max:Lo},children:e})},Iw=()=>{const e=u.useContext(Va);if(!e)throw new Error("useCompare must be used within CompareProvider");return e},hg=pn("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 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 hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),le=u.forwardRef(({className:e,variant:t,size:o,asChild:n=!1,...r},i)=>{const a=n?ml:"button";return l.jsx(a,{className:ce(hg({variant:t,size:o,className:e})),ref:i,...r})});le.displayName="Button";const Ee=u.forwardRef(({className:e,type:t,...o},n)=>l.jsx("input",{type:t,className:ce("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background 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-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:n,...o}));
vendor: 4,197 bytes, line 933
933Ee.displayName="Input";var mg="Label",Ua=u.forwardRef((e,t)=>l.jsx(ae.label,{...e,ref:t,onMouseDown:o=>{var r;o.target.closest("button, input, select, textarea")||((r=e.onMouseDown)==null||r.call(e,o),!o.defaultPrevented&&o.detail>1&&o.preventDefault())}}));Ua.displayName=mg;var qa=Ua;const fg=pn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),ke=u.forwardRef(({className:e,...t},o)=>l.jsx(qa,{ref:o,className:ce(fg(),e),...t}));ke.displayName=qa.displayName;var Oo="focusScope.autoFocusOnMount",Fo="focusScope.autoFocusOnUnmount",Nr={bubbles:!1,cancelable:!0},gg="FocusScope",za=u.forwardRef((e,t)=>{const{loop:o=!1,trapped:n=!1,onMountAutoFocus:r,onUnmountAutoFocus:i,...a}=e,[s,d]=u.useState(null),c=We(r),p=We(i),m=u.useRef(null),g=ue(t,f=>d(f)),h=u.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;u.useEffect(()=>{if(n){let f=function(b){if(h.paused||!s)return;const T=b.target;s.contains(T)?m.current=T:Ye(m.current,{select:!0})},v=function(b){if(h.paused||!s)return;const T=b.relatedTarget;T!==null&&(s.contains(T)||Ye(m.current,{select:!0}))},w=function(b){if(document.activeElement===document.body)for(const k of b)k.removedNodes.length>0&&Ye(s)};document.addEventListener("focusin",f),document.addEventListener("focusout",v);const x=new MutationObserver(w);return s&&x.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",f),document.removeEventListener("focusout",v),x.disconnect()}}},[n,s,h.paused]),u.useEffect(()=>{if(s){Ir.add(h);const f=document.activeElement;if(!s.contains(f)){const w=new CustomEvent(Oo,Nr);s.addEventListener(Oo,c),s.dispatchEvent(w),w.defaultPrevented||(yg(xg(Ka(s)),{select:!0}),document.activeElement===f&&Ye(s))}return()=>{s.removeEventListener(Oo,c),setTimeout(()=>{const w=new CustomEvent(Fo,Nr);s.addEventListener(Fo,p),s.dispatchEvent(w),w.defaultPrevented||Ye(f??document.body,{select:!0}),s.removeEventListener(Fo,p),Ir.remove(h)},0)}}},[s,c,p,h]);const y=u.useCallback(f=>{if(!o&&!n||h.paused)return;const v=f.key==="Tab"&&!f.altKey&&!f.ctrlKey&&!f.metaKey,w=document.activeElement;if(v&&w){const x=f.currentTarget,[b,T]=vg(x);b&&T?!f.shiftKey&&w===T?(f.preventDefault(),o&&Ye(b,{select:!0})):f.shiftKey&&w===b&&(f.preventDefault(),o&&Ye(T,{select:!0})):w===x&&f.preventDefault()}},[o,n,h.paused]);return l.jsx(ae.div,{tabIndex:-1,...a,ref:g,onKeyDown:y})});za.displayName=gg;function yg(e,{select:t=!1}={}){const o=document.activeElement;for(const n of e)if(Ye(n,{select:t}),document.activeElement!==o)return}function vg(e){const t=Ka(e),o=Rr(t,e),n=Rr(t.reverse(),e);return[o,n]}function Ka(e){const t=[],o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const r=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||r?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)t.push(o.currentNode);return t}function Rr(e,t){for(const o of e)if(!wg(o,{upTo:t}))return o}function wg(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 bg(e){return e instanceof HTMLInputElement&&"select"in e}function Ye(e,{select:t=!1}={}){if(e&&e.focus){const o=document.activeElement;e.focus({preventScroll:!0}),e!==o&&bg(e)&&t&&e.select()}}var Ir=Pg();function Pg(){let e=[];return{add(t){const o=e[0];t!==o&&(o==null||o.pause()),e=Dr(e,t),e.unshift(t)},remove(t){var o;e=Dr(e,t),(o=e[0])==null||o.resume()}}}function Dr(e,t){const o=[...e],n=o.indexOf(t);return n!==-1&&o.splice(n,1),o}function xg(e){return e.filter(t=>t.tagName!=="A")}var _o=0;function Sg(){u.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??Wr()),document.body.insertAdjacentElement("beforeend",e[1]??Wr()),_o++,()=>{_o===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),_o--}},[])}function Wr(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.
vendor: 4,904 bytes, lines 933-948
933style.position="fixed",e.style.pointerEvents="none",e}var to="right-scroll-bar-position",oo="width-before-scroll-bar",Tg="with-scroll-bars-hidden",Ag="--removed-body-scroll-bar-size";function Mo(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function Eg(e,t){var o=u.useState(function(){return{value:e,callback:t,facade:{get current(){return o.value},set current(n){var r=o.value;r!==n&&(o.value=n,o.callback(n,r))}}}})[0];return o.callback=t,o.facade}var kg=typeof window<"u"?u.useLayoutEffect:u.useEffect,Lr=new WeakMap;function Cg(e,t){var o=Eg(null,function(n){return e.forEach(function(r){return Mo(r,n)})});return kg(function(){var n=Lr.get(o);if(n){var r=new Set(n),i=new Set(e),a=o.current;r.forEach(function(s){i.has(s)||Mo(s,null)}),i.forEach(function(s){r.has(s)||Mo(s,a)})}Lr.set(o,e)},[e]),o}function Ng(e){return e}function Rg(e,t){t===void 0&&(t=Ng);var o=[],n=!1,r={read:function(){if(n)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return o.length?o[o.length-1]:e},useMedium:function(i){var a=t(i,n);return o.push(a),function(){o=o.filter(function(s){return s!==a})}},assignSyncMedium:function(i){for(n=!0;o.length;){var a=o;o=[],a.forEach(i)}o={push:function(s){return i(s)},filter:function(){return o}}},assignMedium:function(i){n=!0;var a=[];if(o.length){var s=o;o=[],s.forEach(i),a=o}var d=function(){var p=a;a=[],p.forEach(i)},c=function(){return Promise.resolve().then(d)};c(),o={push:function(p){a.push(p),c()},filter:function(p){return a=a.filter(p),o}}}};return r}function Ig(e){e===void 0&&(e={});var t=Rg(null);return t.options=Qe({async:!0,ssr:!1},e),t}var Ga=function(e){var t=e.sideCar,o=Xr(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var n=t.read();if(!n)throw new Error("Sidecar medium not found");return u.createElement(n,Qe({},o))};Ga.isSideCarExport=!0;function Dg(e,t){return e.useMedium(t),Ga}var Ya=Ig(),jo=function(){},wo=u.forwardRef(function(e,t){var o=u.useRef(null),n=u.useState({onScrollCapture:jo,onWheelCapture:jo,onTouchMoveCapture:jo}),r=n[0],i=n[1],a=e.forwardProps,s=e.children,d=e.className,c=e.removeScrollBar,p=e.enabled,m=e.shards,g=e.sideCar,h=e.noRelative,y=e.noIsolation,f=e.inert,v=e.allowPinchZoom,w=e.as,x=w===void 0?"div":w,b=e.gapMode,T=Xr(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),k=g,S=Cg([o,t]),C=Qe(Qe({},T),r);return u.createElement(u.Fragment,null,p&&u.createElement(k,{sideCar:Ya,removeScrollBar:c,shards:m,noRelative:h,noIsolation:y,inert:f,setCallbacks:i,allowPinchZoom:!!v,lockRef:o,gapMode:b}),a?u.cloneElement(u.Children.only(s),Qe(Qe({},C),{ref:S})):u.createElement(x,Qe({},C,{className:d,ref:S}),s))});wo.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};wo.classNames={fullWidth:oo,zeroRight:to};var Wg=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Lg(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=Wg();return t&&e.setAttribute("nonce",t),e}function Og(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function Fg(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var _g=function(){var e=0,t=null;return{add:function(o){e==0&&(t=Lg())&&(Og(t,o),Fg(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},Mg=function(){var e=_g();return function(t,o){u.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&o])}},Qa=function(){var e=Mg(),t=function(o){var n=o.styles,r=o.dynamic;return e(n,r),null};return t},jg={left:0,top:0,right:0,gap:0},Ho=function(e){return parseInt(e||"",10)||0},Hg=function(e){var t=window.getComputedStyle(document.body),o=t[e==="padding"?"paddingLeft":"marginLeft"],n=t[e==="padding"?"paddingTop":"marginTop"],r=t[e==="padding"?"paddingRight":"marginRight"];return[Ho(o),Ho(n),Ho(r)]},$g=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return jg;var t=Hg(e),o=document.documentElement.clientWidth,n=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,n-o+t[2]-t[0])}},Bg=Qa(),gt="data-scroll-locked",Vg=function(e,t,o,n){var r=e.left,i=e.top,a=e.right,s=e.gap;return o===void 0&&(o="margin"),` 934 .`.concat(Tg,` { 935 overflow: hidden `).concat(n,`; 936 padding-right: `).concat(s,"px ").concat(n,`; 937 } 938 body[`).concat(gt,`] { 939 overflow: hidden `).concat(n,`; 940 overscroll-behavior: contain; 941 `).concat([t&&"position: relative ".concat(n,";"),o==="margin"&&` 942 padding-left: `.concat(r,`px; 943 padding-top: `).concat(i,`px; 944 padding-right: `).concat(a,`px; 945 margin-left:0; 946 margin-top:0; 947 margin-right: `).concat(s,"px ").concat(n,`; 948 `),o==="padding"&&"padding-right: ".concat(s,"px ").concat(n,";
948")].filter(Boolean).join(""),` 949 } 950 951 .`).concat(to,` { 952 right: `).concat(s,"px ").concat(n,`; 953 } 954 955 .`).concat(oo,` { 956 margin-right: `).concat(s,"px ").concat(n,`; 957 } 958 959 .`).concat(to," .").concat(to,` { 960 right: 0 `).concat(n,`; 961 } 962 963 .`).concat(oo," .").concat(oo,` { 964 margin-right: 0 `).concat(n,`; 965 } 966 967 body[`).concat(gt,`] { 968 `).concat(Ag,": ").concat(s,`px; 969 } 970`)},Or=function(){var e=parseInt(document.body.getAttribute(gt)||"0",10);return isFinite(e)?e:0},Ug=function(){u.useEffect(function(){return document.body.setAttribute(gt,(Or()+1).toString()),function(){var e=Or()-1;e<=0?document.body.removeAttribute(gt):document.body.setAttribute(gt,e.toString())}},[])},qg=function(e){var t=e.noRelative,o=e.noImportant,n=e.gapMode,r=n===void 0?"margin":n;Ug();var i=u.useMemo(function(){return $g(r)},[r]);return u.createElement(Bg,{styles:Vg(i,!t,r,o?"":"!important")})},sn=!1;if(typeof window<"u")try{var Kt=Object.defineProperty({},"passive",{get:function(){return sn=!0,!0}});window.addEventListener("test",Kt,Kt),window.removeEventListener("test",Kt,Kt)}catch{sn=!1}var ut=sn?{passive:!1}:!1,zg=function(e){return e.tagName==="TEXTAREA"},Xa=function(e,t){if(!(e instanceof Element))return!1;var o=window.getComputedStyle(e);return o[t]!=="hidden"&&!(o.overflowY===o.overflowX&&!zg(e)&&o[t]==="visible")},Kg=function(e){return Xa(e,"overflowY")},Gg=function(e){return Xa(e,"overflowX")},Fr=function(e,t){var o=t.ownerDocument,n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=Ja(e,n);if(r){var i=Za(e,n),a=i[1],s=i[2];if(a>s)return!0}n=n.parentNode}while(n&&n!==o.body);return!1},Yg=function(e){var t=e.scrollTop,o=e.scrollHeight,n=e.clientHeight;return[t,o,n]},Qg=function(e){var t=e.scrollLeft,o=e.scrollWidth,n=e.clientWidth;return[t,o,n]},Ja=function(e,t){return e==="v"?Kg(t):Gg(t)},Za=function(e,t){return e==="v"?Yg(t):Qg(t)},Xg=function(e,t){return e==="h"&&t==="rtl"?-1:1},Jg=function(e,t,o,n,r){var i=Xg(e,window.getComputedStyle(t).direction),a=i*n,s=o.target,d=t.contains(s),c=!1,p=a>0,m=0,g=0;do{if(!s)break;var h=Za(e,s),y=h[0],f=h[1],v=h[2],w=f-v-i*y;(y||w)&&Ja(e,s)&&(m+=w,g+=y);var x=s.parentNode;s=x&&x.nodeType===Node.DOCUMENT_FRAGMENT_NODE?x.host:x}while(!d&&s!==document.body||d&&(t.contains(s)||t===s));return(p&&(Math.abs(m)<1||!r)||!p&&(Math.abs(g)<1||!r))&&(c=!0),c},Gt=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},_r=function(e){return[e.deltaX,e.deltaY]},Mr=function(e){return e&&"current"in e?e.current:e},Zg=function(e,t){return e[0]===t[0]&&e[1]===t[1]},ey=function(e){return` 971 .block-interactivity-`.concat(e,` {pointer-events: none;} 972 .allow-interactivity-`).concat(e,` {pointer-events: all;} 973`)},ty=0,pt=[];function oy(e){var t=u.useRef([]),o=u.useRef([0,0]),n=u.useRef(),r=u.useState(ty++)[0],i=u.useState(Qa)[0],a=u.useRef(e);u.useEffect(function(){a.current=e},[e]),u.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(r));var f=Js([e.lockRef.current],(e.shards||[]).map(Mr),!0).filter(Boolean);return f.forEach(function(v){return v.classList.add("allow-interactivity-".concat(r))}),function(){document.body.classList.remove("block-interactivity-".concat(r)),f.forEach(function(v){return v.classList.remove("allow-interactivity-".concat(r))})}}},[e.inert,e.lockRef.current,e.shards]);var s=u.useCallback(function(f,v){if("touches"in f&&f.touches.length===2||f.type==="wheel"&&f.ctrlKey)return!a.current.allowPinchZoom;var w=Gt(f),x=o.current,b="deltaX"in f?f.deltaX:x[0]-w[0],T="deltaY"in f?f.deltaY:x[1]-w[1],k,S=f.target,C=Math.abs(b)>Math.abs(T)?"h":"v";if("touches"in f&&C==="h"&&S.type==="range")return!1;var L=Fr(C,S);if(!L)return!0;if(L?k=C:(k=C==="v"?"h":"v",L=Fr(C,S)),!L)return!1;if(!n.current&&"changedTouches"in f&&(b||T)&&(n.current=k),!k)return!0;var O=n.current||k;return Jg(O,v,f,O==="h"?b:T,!0)},[]),d=u.useCallback(function(f){var v=f;if(!(!pt.length||pt[pt.length-1]!==i)){var w="deltaY"in v?_r(v):Gt(v),x=t.current.filter(function(k){return k.name===v.type&&(k.target===v.target||v.target===k.shadowParent)&&Zg(k.delta,w)})[0];if(x&&x.should){v.cancelable&&v.preventDefault();return}
vendor: 4,333 bytes, line 973
973if(!x){var b=(a.current.shards||[]).map(Mr).filter(Boolean).filter(function(k){return k.contains(v.target)}),T=b.length>0?s(v,b[0]):!a.current.noIsolation;T&&v.cancelable&&v.preventDefault()}}},[]),c=u.useCallback(function(f,v,w,x){var b={name:f,delta:v,target:w,should:x,shadowParent:ny(w)};t.current.push(b),setTimeout(function(){t.current=t.current.filter(function(T){return T!==b})},1)},[]),p=u.useCallback(function(f){o.current=Gt(f),n.current=void 0},[]),m=u.useCallback(function(f){c(f.type,_r(f),f.target,s(f,e.lockRef.current))},[]),g=u.useCallback(function(f){c(f.type,Gt(f),f.target,s(f,e.lockRef.current))},[]);u.useEffect(function(){return pt.push(i),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:g}),document.addEventListener("wheel",d,ut),document.addEventListener("touchmove",d,ut),document.addEventListener("touchstart",p,ut),function(){pt=pt.filter(function(f){return f!==i}),document.removeEventListener("wheel",d,ut),document.removeEventListener("touchmove",d,ut),document.removeEventListener("touchstart",p,ut)}},[]);var h=e.removeScrollBar,y=e.inert;return u.createElement(u.Fragment,null,y?u.createElement(i,{styles:ey(r)}):null,h?u.createElement(qg,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function ny(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const ry=Dg(Ya,oy);var es=u.forwardRef(function(e,t){return u.createElement(wo,Qe({},e,{ref:t,sideCar:ry}))});es.classNames=wo.classNames;var iy=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},ht=new WeakMap,Yt=new WeakMap,Qt={},$o=0,ts=function(e){return e&&(e.host||ts(e.parentNode))},ay=function(e,t){return t.map(function(o){if(e.contains(o))return o;var n=ts(o);return n&&e.contains(n)?n:(console.error("aria-hidden",o,"in not contained inside",e,". Doing nothing"),null)}).filter(function(o){return!!o})},sy=function(e,t,o,n){var r=ay(t,Array.isArray(e)?e:[e]);Qt[o]||(Qt[o]=new WeakMap);var i=Qt[o],a=[],s=new Set,d=new Set(r),c=function(m){!m||s.has(m)||(s.add(m),c(m.parentNode))};r.forEach(c);var p=function(m){!m||d.has(m)||Array.prototype.forEach.call(m.children,function(g){if(s.has(g))p(g);else try{var h=g.getAttribute(n),y=h!==null&&h!=="false",f=(ht.get(g)||0)+1,v=(i.get(g)||0)+1;ht.set(g,f),i.set(g,v),a.push(g),f===1&&y&&Yt.set(g,!0),v===1&&g.setAttribute(o,"true"),y||g.setAttribute(n,"true")}catch(w){console.error("aria-hidden: cannot operate on ",g,w)}})};return p(t),s.clear(),$o++,function(){a.forEach(function(m){var g=ht.get(m)-1,h=i.get(m)-1;ht.set(m,g),i.set(m,h),g||(Yt.has(m)||m.removeAttribute(n),Yt.delete(m)),h||m.removeAttribute(o)}),$o--,$o||(ht=new WeakMap,ht=new WeakMap,Yt=new WeakMap,Qt={})}},ly=function(e,t,o){o===void 0&&(o="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),r=iy(e);return r?(n.push.apply(n,Array.from(r.querySelectorAll("[aria-live]"))),sy(n,r,o,"aria-hidden")):function(){return null}},bo="Dialog",[os,Dw]=Ft(bo),[cy,Ce]=os(bo),ns=e=>{const{__scopeDialog:t,children:o,open:n,defaultOpen:r,onOpenChange:i,modal:a=!0}=e,s=u.useRef(null),d=u.useRef(null),[c,p]=ri({prop:n,defaultProp:r??!1,onChange:i,caller:bo});return l.jsx(cy,{scope:t,triggerRef:s,contentRef:d,contentId:No(),titleId:No(),descriptionId:No(),open:c,onOpenChange:p,onOpenToggle:u.useCallback(()=>p(m=>!m),[p]),modal:a,children:o})};ns.displayName=bo;var rs="DialogTrigger",is=u.forwardRef((e,t)=>{const{__scopeDialog:o,...n}=e,r=Ce(rs,o),i=ue(t,r.triggerRef);return l.jsx(ae.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":Nn(r.open),...n,ref:i,onClick:oe(e.onClick,r.onOpenToggle)})});is.displayName=rs;var kn="DialogPortal",[dy,as]=os(kn,{forceMount:void 0}),ss=e=>{const{__scopeDialog:t,forceMount:o,children:n,container:r}=e,i=Ce(kn,t);return l.jsx(dy,{scope:t,forceMount:o,children:u.Children.map(n,a=>l.jsx(wt,{present:o||i.open,children:l.jsx(ln,{asChild:!0,container:r,children:a})}))})};ss.displayName=kn;var co="DialogOverlay",ls=u.forwardRef((e,t)=>{const o=as(co,e.__scopeDialog),{forceMount:n=o.forceMount,...r}=e,i=Ce(co,e.__scopeDialog);return i.modal?l.jsx(wt,{present:n||i.open,children:l.jsx(py,{...r,ref:t})}):null});ls.displayName=co;var uy=It("DialogOverlay.RemoveScroll"),py=u.forwardRef((e,t)=>
vendor: 4,634 bytes, lines 973-977
973{const{__scopeDialog:o,...n}=e,r=Ce(co,o);return l.jsx(es,{as:uy,allowPinchZoom:!0,shards:[r.contentRef],children:l.jsx(ae.div,{"data-state":Nn(r.open),...n,ref:t,style:{pointerEvents:"auto",...n.style}})})}),nt="DialogContent",cs=u.forwardRef((e,t)=>{const o=as(nt,e.__scopeDialog),{forceMount:n=o.forceMount,...r}=e,i=Ce(nt,e.__scopeDialog);return l.jsx(wt,{present:n||i.open,children:i.modal?l.jsx(hy,{...r,ref:t}):l.jsx(my,{...r,ref:t})})});cs.displayName=nt;var hy=u.forwardRef((e,t)=>{const o=Ce(nt,e.__scopeDialog),n=u.useRef(null),r=ue(t,o.contentRef,n);return u.useEffect(()=>{const i=n.current;if(i)return ly(i)},[]),l.jsx(ds,{...e,ref:r,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:oe(e.onCloseAutoFocus,i=>{var a;i.preventDefault(),(a=o.triggerRef.current)==null||a.focus()}),onPointerDownOutside:oe(e.onPointerDownOutside,i=>{const a=i.detail.originalEvent,s=a.button===0&&a.ctrlKey===!0;(a.button===2||s)&&i.preventDefault()}),onFocusOutside:oe(e.onFocusOutside,i=>i.preventDefault())})}),my=u.forwardRef((e,t)=>{const o=Ce(nt,e.__scopeDialog),n=u.useRef(!1),r=u.useRef(!1);return l.jsx(ds,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var a,s;(a=e.onCloseAutoFocus)==null||a.call(e,i),i.defaultPrevented||(n.current||(s=o.triggerRef.current)==null||s.focus(),i.preventDefault()),n.current=!1,r.current=!1},onInteractOutside:i=>{var d,c;(d=e.onInteractOutside)==null||d.call(e,i),i.defaultPrevented||(n.current=!0,i.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const a=i.target;((c=o.triggerRef.current)==null?void 0:c.contains(a))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&r.current&&i.preventDefault()}})}),ds=u.forwardRef((e,t)=>{const{__scopeDialog:o,trapFocus:n,onOpenAutoFocus:r,onCloseAutoFocus:i,...a}=e,s=Ce(nt,o),d=u.useRef(null),c=ue(t,d);return Sg(),l.jsxs(l.Fragment,{children:[l.jsx(za,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:r,onUnmountAutoFocus:i,children:l.jsx(uo,{role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":Nn(s.open),...a,ref:c,onDismiss:()=>s.onOpenChange(!1)})}),l.jsxs(l.Fragment,{children:[l.jsx(fy,{titleId:s.titleId}),l.jsx(yy,{contentRef:d,descriptionId:s.descriptionId})]})]})}),Cn="DialogTitle",us=u.forwardRef((e,t)=>{const{__scopeDialog:o,...n}=e,r=Ce(Cn,o);return l.jsx(ae.h2,{id:r.titleId,...n,ref:t})});us.displayName=Cn;var ps="DialogDescription",hs=u.forwardRef((e,t)=>{const{__scopeDialog:o,...n}=e,r=Ce(ps,o);return l.jsx(ae.p,{id:r.descriptionId,...n,ref:t})});hs.displayName=ps;var ms="DialogClose",fs=u.forwardRef((e,t)=>{const{__scopeDialog:o,...n}=e,r=Ce(ms,o);return l.jsx(ae.button,{type:"button",...n,ref:t,onClick:oe(e.onClick,()=>r.onOpenChange(!1))})});fs.displayName=ms;function Nn(e){return e?"open":"closed"}var gs="DialogTitleWarning",[Ww,ys]=pl(gs,{contentName:nt,titleName:Cn,docsSlug:"dialog"}),fy=({titleId:e})=>{const t=ys(gs),o=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. 974 975If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. 976 977For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return u.useEffect(()=>{e&&(document.getElementById(e)||console.error(o))},[o,e]),null},gy="DialogDescriptionWarning",yy=({contentRef:e,descriptionId:t})=>{const n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${ys(gy).contentName}}.`;return u.useEffect(()=>{var i;const r=(i=e.current)==null?void 0:i.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},vy=ns,Lw=is,wy=ss,vs=ls,ws=cs,bs=us,Ps=hs,by=fs;const Py=vy,xy=wy,xs=u.forwardRef(({className:e,...t},o)=>l.jsx(vs,{ref:o,className:ce("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}));xs.displayName=vs.displayName;const Ss=u.forwardRef(({className:e,children:t,...o},n)=>l.jsxs(xy,{children:[l.jsx(xs,{}),l.jsxs(ws,{ref:n,className:ce("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rou
977nded-lg",e),...o,children:[t,l.jsxs(by,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[l.jsx(ki,{className:"h-4 w-4"}),l.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Ss.displayName=ws.displayName;const Ts=({className:e,...t})=>l.jsx("div",{className:ce("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Ts.displayName="DialogHeader";const Sy=({className:e,...t})=>l.jsx("div",{className:ce("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});Sy.displayName="DialogFooter";const As=u.forwardRef(({className:e,...t},o)=>l.jsx(bs,{ref:o,className:ce("text-lg font-semibold leading-none tracking-tight",e),...t}));As.displayName=bs.displayName;const Es=u.forwardRef(({className:e,...t},o)=>l.jsx(Ps,{ref:o,className:ce("text-sm text-muted-foreground",e),...t}));Es.displayName=Ps.displayName;const Ty="https://k4vkypglgsndbrrvq4cgtl7ame0bntdu.lambda-url.ap-southeast-1.on.aws/";async function Ay(){var o,n;const e=await Yr(),t=(n=(o=e==null?void 0:e.tokens)==null?void 0:o.idToken)==null?void 0:n.toString();if(!t)throw new Error("Not authenticated");return t}async function Rn(e,t=!1){const o={"Content-Type":"application/json"};t&&(o.Authorization=`Bearer ${await Ay()}`);const r=await(await fetch(Ty,{method:"POST",headers:o,body:JSON.stringify(e)})).json();if(r.error)throw new Error(r.error);return r}async function Ct(e){return Rn({action:"check_auth_methods",email:e.trim().toLowerCase()})}async function Ow({email:e,password:t,provider:o="Google"}){return Rn({action:"link_provider",email:e.trim().toLowerCase(),password:t,provider:o},!0)}async function Fw(e){return Rn({action:"set_password",newPassword:e},!0)}async function _w(e,t={}){const o=await Ct(e);if(!o.exists)return{summary:o,canSetPassword:!1,needsAccountLink:!1,linkProvider:null};const n=String(t.currentSub||"").trim(),r=String(o.nativeSub||"").trim(),i=Array.isArray(o.federatedSubs)?o.federatedSubs:[],a=!!(n&&r&&n!==r&&(i.includes(n)||o.needsLinking)),s=!!(r&&n&&n!==r&&(a||o.needsLinking||o.canResetPassword)),d=!s&&!!(o.federatedOnly||o.socialProviders.length>0&&!o.canResetPassword);let c=null;return s&&(o.socialProviders.includes("Google")?c="Google":o.socialProviders.includes("SignInWithApple")?c="SignInWithApple":c="Google"),{summary:o,canSetPassword:d,needsAccountLink:s,linkProvider:c}}function Ey(e,t){return e.socialProviders.includes("Google")&&e.socialProviders.includes("SignInWithApple")?t("authLinking.federatedOnlyBoth"):e.socialProviders.includes("Apple")||e.socialProviders.includes("SignInWithApple")?t("authLinking.federatedOnlyApple"):e.socialProviders.includes("Google")?t("authLinking.federatedOnlyGoogle"):t("authLinking.socialOnlyGeneric")}function Bo(e,t){return e.socialProviders.includes("Google")&&e.socialProviders.includes("SignInWithApple")?t("authLinking.socialOnlyBoth"):e.socialProviders.includes("Apple")||e.socialProviders.includes("SignInWithApple")?t("authLinking.socialOnlyApple"):e.socialProviders.includes("Google")?t("authLinking.socialOnlyGoogle"):t("authLinking.socialOnlyGeneric")}function jr(e){return!!(e.federatedOnly||e.socialProviders.length>0&&!e.canResetPassword)}const ky="/assets/logo-ByOm-oSd.png",Cy=()=>{const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";let t="";for(let o=0;o<16;o++)t+=e.charAt(Math.floor(Math.random()*e.length));return"Aa1!"+t},Hr={firstName:"",lastName:"",phone:"",password:"",confirmPassword:""},Ny="petwell.social.redirect",Ry=()=>l.jsxs("svg",{viewBox:"0 0 24 24",className:"h-4 w-4","aria-hidden":"true",children:[l.jsx("path",{fill:"#4285F4",d:"M21.64 12.2c0-.64-.06-1.25-.16-1.84H12v3.48h5.41a4.63 4.63 0 0 1-2.01 3.04v2.52h3.24c1.89-1.74 3-4.3 3-7.2Z"}),l.jsx("path",{fill:"#34A853",d:"M12 22c2.7 0 4.96-.9 6.61-2.44l-3.24-2.52c-.9.6-2.04.96-3.37.96-2.59 0-4.77-1.75-5.56-4.1H3.09v2.58A9.99 9.99 0 0 0 12 22Z"}),l.jsx("path",{fill:"#FBBC05",d:"M6.44 13.9A5.98 5.98 0 0 1 6.13
97712c0-.66.11-1.3.31-1.9V7.52H3.09A9.99 9.99 0 0 0 2 12c0 1.61.39 3.13 1.09 4.48l3.35-2.58Z"}),l.jsx("path",{fill:"#EA4335",d:"M12 5.98c1.47 0 2.78.5 3.82 1.48l2.86-2.86C16.95 2.98 14.69 2 12 2A9.99 9.99 0 0 0 3.09 7.52l3.35 2.58c.79-2.35 2.97-4.12 5.56-4.12Z"})]}),Iy=()=>{const{t:e}=Rh(),{isAuthenticated:t,requiresProfileCompletion:o,setIsAuthenticated:n,setRequiresProfileCompletion:r,setUserInfo:i,userInfo:a}=lg(),{isOpen:s,currentView:d,email:c,closePanel:p,openPanel:m,setView:g,setEmail:h,triggerAuthSuccess:y}=dg(),f=d,v=f==="PROFILE"&&o,[w,x]=u.useState(c),[b,T]=u.useState(!1),[k,S]=u.useState(null),[C,L]=u.useState(null),[O,F]=u.useState(!1),[q,W]=u.useState(60),[z,N]=u.useState(""),[Q,V]=u.useState(""),[U,Y]=u.useState(""),[I,J]=u.useState(""),[j,_]=u.useState(null),[D,K]=u.useState(Hr),[re,de]=u.useState(!1),X=u.useRef("");u.useEffect(()=>{s&&x(c)},[s,c]);const He=P=>{x(P),h(P),S(null)};u.useEffect(()=>{s&&(S(null),N(""),V(""),Y(""),J(""),L(null),F(!1),W(60),_(null),K(Hr),de(!1),X.current="")},[s]),u.useEffect(()=>{t&&o&&(a!=null&&a.email)&&!s&&m("PROFILE",a.email)},[t,s,m,o,a==null?void 0:a.email]),u.useEffect(()=>{if(O){const P=setInterval(()=>{q<=0?(W(60),F(!1)):W($=>$-1)},1e3);return()=>clearInterval(P)}},[O,q]);const Ne=P=>P.toLowerCase().match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|.(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/),Oe=P=>/^\d{8}$/.test(P),ve=P=>P.length>=8&&/[A-Za-z]/.test(P)&&/\d/.test(P),fe=(P,$)=>{K(G=>({...G,[P]:$})),S(null)},we=async P=>{S(null),L(P);try{if(typeof window<"u"){const $=`${window.location.pathname}${window.location.search}${window.location.hash}`;window.sessionStorage.setItem(Ny,$||"/")}if(P==="google"){await ig();return}await ag()}catch($){console.error("Social login error:",$),S(($==null?void 0:$.message)||e("auth.socialLoginFailed")),L(null)}},$e=()=>{const P=D.firstName.trim(),$=D.lastName.trim();return{firstName:P,lastName:$,phone:D.phone.replace(/\D/g,""),displayName:`${P} ${$}`.trim()}},rt=async()=>{if(!Q){S(e("auth.passwordRequired"));return}T(!0),S(null);try{const{isSignedIn:P,nextStep:$}=await kt({username:w,password:Q,options:{authFlowType:"USER_PASSWORD_AUTH"}});if(P){await be();return}if(($==null?void 0:$.signInStep)==="CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED"){Y(""),J(""),g("NEW_PASSWORD"),T(!1);return}S(e("auth.unknownError")),T(!1)}catch(P){if(console.error("Existing user login error:",P),P.name==="UserNotConfirmedException"){_("NEW"),de(!0);try{await To({username:w})}catch{}F(!0),W(60),g("OTP");return}if(P.name==="NotAuthorizedException"){S(e("auth.invalidCredentials")),T(!1);return}S(P.message||e("auth.unknownError")),T(!1)}},Xe=async()=>{try{await no()}catch{}},Je=async()=>{if(!U){S(e("auth.passwordRequired"));return}if(!ve(U)){S(e("auth.passwordInvalid"));return}if(U!==I){S(e("auth.passwordsDoNotMatch"));return}T(!0),S(null);try{const{isSignedIn:P}=await Zs({challengeResponse:U});if(P){await be();return}S(e("auth.unknownError")),T(!1)}catch(P){console.error("Confirm new password error:",P),S(P.message||e("auth.unknownError")),T(!1)}},Ze=async()=>{T(!0),S(null);try{const P=await Ct(w);if(P.exists&&P.federatedOnly){S(Ey(P,e));return}_("EXISTING"),await Ln({username:w}),F(!0),W(60),N(""),g("OTP")}catch(P){console.error("Forgot password error:",P),S(P.message||e("auth.unknownError"))}finally{T(!1)}},Fe=async()=>{if(S(null),T(!0),!w||!Ne(w)){S(e("auth.emailInvalid")),T(!1);return}try{try{if(await vt()){const G=await Ot();n(!0),i(G),y(),p(),T(!1);return}}catch{}let P=!1;try{await kt({username:w,password:"X7p!wqLz2#__dummy__",options:{authFlowType:"USER_PASSWORD_AUTH"}}),P=!1}catch($){if($.name==="UserNotFoundException")try{const G=await Ct(w);if(!G.exists)P=!0;else if(jr(G)){S(Bo(G,e)),g("LANDING");return}else P=!1}catch(G){console.warn("checkAuthMethods failed during email probe:",G),S(e("auth.unknownError")),g("LANDING");return}else if($.name==="NotAuthorizedException")P=!1;else if($.name==="UserNotConfirmedException"){try{const G=await Ct(w);if(G.exists&&jr(G)){S(Bo(G,e)),g("LANDING");return}}catch(G){console.warn("checkAuthMethods failed for unconfirmed user:",G)}_("NEW"),de(!0);try{await To({username:w})}catch{}F(!0),W(60),g("PROFILE");return}else throw $}if(P){_("NEW"),de(!1),g("PROFILE");return}else{_("EXISTING"),V(""),g("PASSWORD");return}}catch(P){console.error("Email submit error:",P),S(P.message||e("auth.unknownError"))}finally{T(!1)}},xt=async()=>{var P,$;if(z.length===0){S(e("auth.fillConfirmationCode"));return}T(!0),S(null);try{if(j==="NEW"){const{isSignUpComplete:G}=await el({username:w,confirmationCode:z});if(G){const{isSignedIn:ie}=await kt({username:w,password:X.current,options:{authFlowType:"USER_PASSWORD_AUTH"}});if(ie){await be($e());return}}}else{const G=Cy();await tl({username:w,confirmationCode:z,newPassword:G});const{isSignedIn:ie}=await kt({username:w,password:G,options:{authFlowType:"USER_PASSWORD_AUTH"}});if(ie){await be();return}}T(!1)}catch(G){if(console.error("OTP verification error:",G),(P=G.message)!=null&&P.includes("Current status is CONFIRMED")&&j==="NEW")try{const{isSignedIn:ie}=await kt({username:w,password:X.current,options:{authFlowType:"USER_PASSWORD_AUTH"}});if(ie){await be($e());return}}catch{}if(($=G.message)!=null&&$.includes("already signed in")||G.name==="UserAlreadySignedInException"){if(j==="NEW"){await be($e());return}await be();return}T(!1),S(G.message||e("auth.unknownError"))}},ge=async()=>{const P=D.firstName.trim(),$=D.lastName.trim(),G=D.phone.replace(/\D/g,""),ie=D.password,it=D.confirmPassword;if(!P){S(e("auth.firstNameRequired"));return}if(!$){S(e("auth.lastNameRequired"));return}if(!Oe(G)){S(e("auth.phoneInvalid"));return}if(j==="NEW"){if(!ve(ie)){S(e("auth.passwordInvalid"));return}if(ie!==it){S(e("auth.passwordsDoNotMatch"));return}}T(!0),S(null);try{const Be={firstName:P,lastName:$,phone:G,displayName:`${P} ${$}`.trim()};if(j==="NEW"){try{const ye=await Ct(w),Ve=ye.socialProviders.length>0;if(ye.exists&&(ye.federatedOnly||Ve)){const jt=ye.federatedOnly||!ye.canResetPassword?Bo(ye,e):e("authLinking.useExistingLogin");S(jt),de(!1),g("LANDING"),T(!1);return}}catch(ye){console.warn("checkAuthMethods failed before signUp:",ye)}X.current=ie,re||(await ol({username:w,password:ie,options:{userAttributes:{email:w}}}),de(!0)),F(!0),W(60),g("OTP"),T(!1);return}await be(Be)}catch(Be){console.error("Error completing profile:",Be),S(Be instanceof Error?Be.message:e("auth.unknownError")),T(!1)}},be=async P=>{try{if(j==="NEW")await ka(w,w,P);else if(P&&o)if(await Ea(w))try{await Ca(w,w,P)}catch(ie){const it=(ie==null?void 0:ie.message)||"";if(!it.includes("Not Authorized")&&!it.includes("Unauthorized"))throw ie;await rn(w,w,P)}else await rn(w,w,P);const $=await Ot();i($)}catch($){console.error("Error completing login:",$),S(($==null?void 0:$.message)||e("auth.unknownError")),T(!1);return}n(!0),r(!1),y(),p(),T(!1)},_e=async()=>{try{j==="NEW"?await To({username:w}):await Ln({username:w}),F(!0),W(60),S(null)}catch(P){S(P.message||e("auth.failedToResendCode"))}},Po=async()=>{try{await ja()}catch(P){console.error("Forced profile completion logout error:",P)}finally{n(!1),r(!1),i(null),S(null),p()}},xo=()=>{switch(f){case"LANDING":return e("auth.welcomeBack");case"PASSWORD":return e("auth.login");case"OTP":return e("auth.verifyEmail");case"PROFILE":return e("auth.completeProfile");case"NEW_PASSWORD":return e("auth.setNewPassword");default:return f}},pe=()=>{switch(f){case"LANDING":return e("auth.enterYourEmailToContinue");case"PASSWORD":return e("auth.enterPasswordToContinue");case"OTP":return`${e("auth.otpSentTo")} ${w}`;case"PROFILE":return e("auth.completeProfileDesc");case"NEW_PASSWORD":return e("auth.newPasswordRequiredDesc");default:return f}};return l.jsx(Py,{open:s,onOpenChange:P=>{if(!P){if(v){Po();return}f==="NEW_PASSWORD"&&Xe(),p()}},children:l.jsxs(Ss,{className:"sm:max-w-md",onEscapeKeyDown:P=>{v&&P.preventDefault()},onInteractOutside:P=>{v&&P.preventDefault()},children:[l.jsxs(Ts,{children:[l.jsx("div",{className:"flex justify-center mb-4",children:l.jsx("img",{src:ky,alt:"PetWell Logo",className:"h-10 w-auto"})}),l.jsx(As,{className:"text-2xl text-center",children:xo()}),l.jsx(Es,{className:"text-base text-center",children:pe()})]}),l.jsxs("div",{className:"space-y-4",children:[k&&l.jsx("div",{className:"bg-destructive/10 text-destructive text-sm p-3 rounded-md border border-destructive/20",children:k}),f==="LANDING"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ke,{htmlFor:"email",children:e("auth.email")}),l.jsx(Ee,{id:"email",type:"email",value:w,onChange:P=>He(P.target.value),placeholder:e("auth.emailPlaceholder"),disabled:b,onKeyDown:P=>{P.key==="Enter"&&!b&&Fe()}})]}),l.jsx(le,{onClick:Fe,disabled:b||C!==null,className:"w-full bg-[#FF902A] hover:bg-[#FF7A1A] text-white",size:"lg",children:b?l.jsxs(l.Fragment,{children:[l.jsx(tt,{className:"h-4 w-4 mr-2 animate-spin"}),e("auth.submit")]}):l.jsxs(l.Fragment,{children:[l.jsx(Vt,{className:"h-4 w-4 mr-2"}),e("auth.getCode")]})}),l.jsxs("div",{className:"relative py-1",children:[l.jsx("div",{className:"absolute inset-0 flex items-center",children:l.jsx("span",{className:"w-full border-t border-border"})}),l.jsx("div",{className:"relative flex justify-center text-xs uppercase tracking-wide text-muted-foreground",children:l.jsx("span",{className:"bg-background px-2",children:e("auth.orContinueWith")})})]}),l.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[l.jsx(le,{type:"button",variant:"outline",size:"lg",disabled:b||C!==null,onClick:()=>we("google"),className:"w-full",children:C==="google"?l.jsxs(l.Fragment,{children:[l.jsx(tt,{className:"mr-2 h-4 w-4 animate-spin"}),e("auth.redirectingToProvider")]}):l.jsxs(l.Fragment,{children:[l.jsx(Ry,{}),l.jsx("span",{className:"ml-2",children:e("auth.continueWithGoogle")})]})}),l.jsx(le,{type:"button",variant:"outline",size:"lg",disabled:b||C!==null,onClick:()=>we("apple"),className:"w-full",children:C==="apple"?l.jsxs(l.Fragment,{children:[l.jsx(tt,{className:"mr-2 h-4 w-4 animate-spin"}),e("auth.redirectingToProvider")]}):l.jsxs(l.Fragment,{children:[l.jsx(lc,{className:"h-4 w-4"}),l.jsx("span",{className:"ml-2",children:e("auth.continueWithApple")})]})})]}),l.jsx("div",{className:"text-xs text-muted-foreground text-center pt-2 border-t",children:e("auth.otpExplanation")}),l.jsx("p",{className:"text-xs text-muted-foreground text-center",children:e("authLinking.signInMethodHint")})]}),f==="PASSWORD"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-md bg-muted/50 border",children:[l.jsx(Vt,{className:"h-4 w-4 text-muted-foreground shrink-0"}),l.jsx("span",{className:"text-sm text-muted-foreground truncate",children:w}),l.jsx(le,{variant:"link",className:"p-0 h-auto text-xs text-[#FF902A] shrink-0",onClick:()=>{g("LANDING"),V(""),S(null)},children:e("auth.changeEmail")})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ke,{htmlFor:"password-login",children:e("auth.loginPassword")}),l.jsx(Ee,{id:"password-login",type:"password",value:Q,onChange:P=>{V(P.target.value),S(null)},placeholder:e("auth.passwordPlaceholder"),disabled:b,autoFocus:!0,autoComplete:"current-password",onKeyDown:P=>{P.key==="Enter"&&!b&&rt()}})]}),l.jsx(le,{onClick:rt,disabled:b||!Q,className:"w-full bg-[#FF902A] hover:bg-[#FF7A1A] text-white",size:"lg",children:b?l.jsxs(l.Fragment,{children:[l.jsx(tt,{className:"h-4 w-4 mr-2 animate-spin"}),e("auth.verifying")]}):e("auth.login")}),l.jsx("div",{className:"text-center",children:l.jsx(le,{variant:"link",className:"p-0 h-auto text-sm text-[#FF902A] font-semibold",onClick:Ze,disabled:b,children:e("auth.forgotPassword")})}),l.jsx("p",{className:"text-xs text-muted-foreground text-center",children:e("authLinking.signInMethodHint")}),l.jsx("div",{className:"text-center",children:l.jsxs(le,{variant:"link",className:"text-sm",onClick:()=>{g("LANDING"),V(""),S(null)},disabled:b,children:[l.jsx(Bt,{className:"h-4 w-4 mr-1"}),e("auth.back")]})})]}),f==="NEW_PASSWORD"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-md bg-muted/50 border",children:[l.jsx(Vt,{className:"h-4 w-4 text-muted-foreground shrink-0"}),l.jsx("span",{className:"text-sm text-muted-foreground truncate",children:w})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ke,{htmlFor:"new-password",children:e("auth.password")}),l.jsx(Ee,{id:"new-password",type:"password",value:U,onChange:P=>{Y(P.target.value),S(null)},placeholder:e("auth.passwordPlaceholder"),disabled:b,autoFocus:!0,autoComplete:"new-password",onKeyDown:P=>{P.key==="Enter"&&!b&&Je()}}),l.jsx("div",{className:"text-xs text-muted-foreground",children:e("auth.passwordHint")})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ke,{htmlFor:"confirm-new-password",children:e("auth.confirmPassword")}),l.jsx(Ee,{id:"confirm-new-password",type:"password",value:I,onChange:P=>{J(P.target.value),S(null)},placeholder:e("auth.confirmPasswordPlaceholder"),disabled:b,autoComplete:"new-password",onKeyDown:P=>{P.key==="Enter"&&!b&&Je()}})]}),l.jsx(le,{onClick:Je,disabled:b||!U||!I,className:"w-full bg-[#FF902A] hover:bg-[#FF7A1A] text-white",size:"lg",children:b?l.jsxs(l.Fragment,{children:[l.jsx(tt,{className:"h-4 w-4 mr-2 animate-spin"}),e("auth.savingPassword")]}):e("auth.setNewPassword")}),l.jsx("div",{className:"text-center",children:l.jsxs(le,{variant:"link",className:"text-sm",onClick:()=>{Xe(),g("PASSWORD"),Y(""),J(""),S(null)},disabled:b,children:[l.jsx(Bt,{className:"h-4 w-4 mr-1"}),e("auth.back")]})})]}),f==="OTP"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-md bg-muted/50 border",children:[l.jsx(Vt,{className:"h-4 w-4 text-muted-foreground shrink-0"}),l.jsx("span",{className:"text-sm text-muted-foreground truncate",children:w}),l.jsx(le,{variant:"link",className:"p-0 h-auto text-xs text-[#FF902A] shrink-0",onClick:()=>{g("LANDING"),N(""),S(null)},children:e("auth.changeEmail")})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ke,{htmlFor:"otp-code",children:e("auth.verificationCode")}),l.jsx(Ee,{id:"otp-code",type:"text",inputMode:"numeric",value:z,onChange:P=>{N(P.target.value.replace(/\D/g,"").slice(0,6)),S(null)},placeholder:"000000",className:"text-center text-2xl tracking-[0.5em] font-mono",autoF
977ocus:!0,onKeyDown:P=>{P.key==="Enter"&&xt()}})]}),l.jsxs("div",{className:"text-center text-sm text-muted-foreground",children:[e("auth.noRecieveCode")," ",O?l.jsxs("span",{className:"text-foreground font-medium",children:[e("auth.wait")," ",q," ",e("auth.getNewCode")]}):l.jsx(le,{variant:"link",className:"p-0 h-auto text-[#FF902A] font-semibold",onClick:_e,children:e("auth.resendCode")})]}),l.jsx(le,{onClick:xt,disabled:b||z.length<6,className:"w-full bg-[#FF902A] hover:bg-[#FF7A1A] text-white",size:"lg",children:b?l.jsxs(l.Fragment,{children:[l.jsx(tt,{className:"h-4 w-4 mr-2 animate-spin"}),e("auth.verifying")]}):e("auth.verifyAndLogin")}),l.jsx("div",{className:"text-center",children:l.jsxs(le,{variant:"link",className:"text-sm",onClick:()=>{g("LANDING"),N(""),S(null)},children:[l.jsx(Bt,{className:"h-4 w-4 mr-1"}),e("auth.back")]})})]}),f==="PROFILE"&&l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"rounded-xl border bg-muted/30 p-4",children:l.jsx("div",{className:"text-sm font-medium text-foreground",children:w})}),l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ke,{htmlFor:"firstName",children:e("auth.firstName")}),l.jsx(Ee,{id:"firstName",type:"text",value:D.firstName,onChange:P=>fe("firstName",P.target.value),placeholder:e("auth.firstNamePlaceholder"),disabled:b,autoFocus:!0,maxLength:40,onKeyDown:P=>{P.key==="Enter"&&!b&&ge()}})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ke,{htmlFor:"lastName",children:e("auth.lastName")}),l.jsx(Ee,{id:"lastName",type:"text",value:D.lastName,onChange:P=>fe("lastName",P.target.value),placeholder:e("auth.lastNamePlaceholder"),disabled:b,maxLength:40,onKeyDown:P=>{P.key==="Enter"&&!b&&ge()}})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ke,{htmlFor:"phone",children:e("auth.phone")}),l.jsxs("div",{className:"flex items-center rounded-md border border-input bg-background focus-within:ring-2 focus-within:ring-ring/20",children:[l.jsx("div",{className:"border-r px-3 py-2 text-sm font-medium text-muted-foreground",children:"+852"}),l.jsx(Ee,{id:"phone",type:"tel",inputMode:"numeric",value:D.phone,onChange:P=>fe("phone",P.target.value.replace(/\D/g,"").slice(0,8)),placeholder:e("auth.phonePlaceholder"),disabled:b,className:"border-0 focus-visible:ring-0 focus-visible:ring-offset-0",onKeyDown:P=>{P.key==="Enter"&&!b&&ge()}})]}),l.jsx("div",{className:"text-xs text-muted-foreground",children:e("auth.phoneHint")})]}),j==="NEW"&&l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ke,{htmlFor:"password",children:e("auth.password")}),l.jsx(Ee,{id:"password",type:"password",value:D.password,onChange:P=>fe("password",P.target.value),placeholder:e("auth.passwordPlaceholder"),disabled:b,autoComplete:"new-password",onKeyDown:P=>{P.key==="Enter"&&!b&&ge()}}),l.jsx("div",{className:"text-xs text-muted-foreground",children:e("auth.passwordHint")})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ke,{htmlFor:"confirmPassword",children:e("auth.confirmPassword")}),l.jsx(Ee,{id:"confirmPassword",type:"password",value:D.confirmPassword,onChange:P=>fe("confirmPassword",P.target.value),placeholder:e("auth.confirmPasswordPlaceholder"),disabled:b,autoComplete:"new-password",onKeyDown:P=>{P.key==="Enter"&&!b&&ge()}})]})]}),l.jsx(le,{onClick:ge,disabled:b||!D.firstName.trim()||!D.lastName.trim()||!D.phone.trim()||j==="NEW"&&(!D.password||!D.confirmPassword),className:"w-full bg-[#FF902A] hover:bg-[#FF7A1A] text-white",size:"lg",children:b?l.jsxs(l.Fragment,{children:[l.jsx(tt,{className:"h-4 w-4 mr-2 animate-spin"}),e("auth.creatingAccount")]}):l.jsxs(l.Fragment,{children:[l.jsx(cc,{className:"h-4 w-4 mr-2"}),e("auth.completeSignup")]})}),l.jsx("div",{className:"text-center",children:!v&&l.jsxs(le,{variant:"link",className:"text-sm",onClick:()=>{g("LANDING"),S(null)},disabled:b,children:[l.jsx(Bt,{className:"h-4 w-4 mr-1"}),e("auth.back")]})})]})]})]})})},Dy=u.lazy(()=>R(()=>import("./Index-C4fgFbgp.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]))),Wy=u.lazy(()=>R(()=>import("./Landing-CfOmy2Wf.js"),__vite__mapDeps([41,1,2,42,43,44,45,46,8,9,10,11,12,47,32,48,49,3,4,5,6,7,40]))),Ly=u.lazy(()=>R(()=>import("./About-CPALLb6L.js"),__vite__mapDeps([50,1,2,42,43,44,45,46,8,9,10,11,12,47,32,48,49,3,4,5,6,7,51,52,53,54,55,40]))),Oy=u.lazy(()=>R(()=>import("./ChristmasEventDetail-Cnl4qtwY.js"),__vite__mapDeps([56,1,2,8,9,10,11,12,3,4,5,6,7,57,13,24,25,58,59,60,27,28,61,22,62,63,43,64,65,66,30,32,67]))),Fy=u.lazy(()=>R(()=>import("./ChristmasEvents-BHXWfm3C.js"),__vite__mapDeps([68,1,2,43,64,8,9,10,11,12,3,4,5,6,7,
97765,69,30]))),$r=u.lazy(()=>R(()=>import("./Terms-Uet-mjcX.js"),__vite__mapDeps([70,1,2,8,9,10,11,12,3,4,5,6,7,40]))),_y=u.lazy(()=>R(()=>import("./Forum-qaUEpz2E.js"),__vite__mapDeps([71,1,2,8,9,10,11,12,13,4,72,7,73,40,74,75,54,63,53,76,77,14,15,48,66,17,78,79,60]))),My=u.lazy(()=>R(()=>import("./OwnerZone-BAOIr8ec.js"),__vite__mapDeps([80,1,2,8,9,10,11,12,3,4,5,6,7,81,39,82,83,40,74,84,17]))),Br=u.lazy(()=>R(()=>import("./BlogPost-DLd3O4g_.js"),__vite__mapDeps([85,1,2,8,9,10,11,12,3,4,5,6,7,44,45,46,86,64,75,54,63,87,17,43,88,89,57,13,24,25,58,59,60,27,28,61,22,62,90,91,67,92,93,81,39,82,83,40,94,30,69,95,32]))),jy=u.lazy(()=>R(()=>import("./Clinics-CdZ5tld1.js"),__vite__mapDeps([96,1,2,97,8,9,10,11,12,3,4,5,6,7,44,45,46,42,43,77,98,84,99,17,100,29,101,102,64,31,25,13,59,61,32,22,15,33,28,34,74,40,103]))),Hy=u.lazy(()=>R(()=>import("./ClinicDetail-BQs6r4l0.js"),__vite__mapDeps([104,1,2,8,9,10,11,12,3,4,5,6,7,33,25,28,34,40,105,43,64,88,46,103,106,107,54,108,19,22,76,78,53,72,75,63,109,110,79,23,111,84,59,61,69,112,32,113,95,31,13]))),$y=u.lazy(()=>R(()=>import("./NGOs-VvXc9Xw_.js"),__vite__mapDeps([114,1,2,8,9,10,11,12,3,4,5,6,7,43,115,16,40,17,48,116]))),By=u.lazy(()=>R(()=>import("./NGODetail-Dlz-EV7z.js"),__vite__mapDeps([117,1,2,8,9,10,11,12,3,4,5,6,7,43,64,115,40,109,48,116,30,32]))),Vy=u.lazy(()=>R(()=>import("./PetTag-DKtKG5u8.js"),__vite__mapDeps([118,1,2,12,43,119,48,30,6]))),Uy=u.lazy(()=>R(()=>import("./ActivateTag-ytT0CDCB.js"),__vite__mapDeps([120,1,2,12,119,11,91,77]))),qy=u.lazy(()=>R(()=>import("./CheckTag-D5YoM0g5.js"),__vite__mapDeps([121,1,2,12,119]))),zy=u.lazy(()=>R(()=>import("./Download-8j9gf1JA.js"),__vite__mapDeps([122,1,2,8,9,10,11,12,3,4,5,6,7,84,40]))),Ky=u.lazy(()=>R(()=>import("./DeleteAccount-DKVPodVd.js"),__vite__mapDeps([123,1,2,8,9,10,11,12,3,4,5,6,7,53,54,124,60]))),Gy=u.lazy(()=>R(()=>import("./AdminForms-j5kduD0D.js"),__vite__mapDeps([125,1,2,12]))),Yy=u.lazy(()=>R(()=>import("./MailGoogleForm-CZ71o7g9.js"),__vite__mapDeps([126,1,2,12]))),Qy=u.lazy(()=>R(()=>import("./WhatsAppPetwellEng-LyxVrqk9.js"),__vite__mapDeps([127,1,2,40,12]))),Xy=u.lazy(()=>R(()=>import("./WhatsAppPetwellChin-JU-YYZj6.js"),__vite__mapDeps([128,1,2,40,12]))),Jy=u.lazy(()=>R(()=>import("./PetMatchmaker-B17f8swA.js"),__vite__mapDeps([129,1,2,43,130,131,8,9,10,11,12,3,4,5,6,7,40]))),Zy=u.lazy(()=>R(()=>import("./ChristmasDogMbti-K2_cFKKM.js"),__vite__mapDeps([132,1,2,8,9,10,11,12,3,4,5,6,7,43,124,64,65,22,30,32,130,69,40]))),ev=u.lazy(()=>R(()=>import("./Restaurants-CCSpby6B.js"),__vite__mapDeps([133,1,2,97,8,9,10,11,12,3,4,5,6,7,44,45,46,42,43,77,98,84,99,17,100,29,134,64,24,25,58,59,60,27,28,61,26,135,136,113,22,32,74,40,103]))),tv=u.lazy(()=>R(()=>import("./RestaurantDetail-C3zGzeN0.js"),__vite__mapDeps([137,1,2,8,9,10,11,12,3,4,5,6,7,88,46,26,27,25,28,29,103,40,106,107,54,108,19,22,76,78,53,72,75,63,109,110,79,23,111,84,24,57,13,58,59,60,61,62,43,64,69,91,138,139,48,32,95,112,136,113,135]))),ov=u.lazy(()=>R(()=>import("./RestaurantsByArea-DFQTWAH3.js"),__vite__mapDeps([140,1,2,8,9,10,11,12,3,4,5,6,7,97,44,45,46,42,43,77,98,84,99,17,100,29,86,64,75,54,63,87,134,24,25,58,59,60,27,28,61,26,135,136,113,22,32,74,40,103]))),nv=u.lazy(()=>R(()=>import("./Salons-DIqJzQqB.js"),__vite__mapDeps([141,1,2,97,8,9,10,11,12,3,4,5,6,7,44,45,46,42,43,77,98,84,99,17,100,29,101,102,64,31,25,13,59,61,32,22,15,35,28,34,74,40,103]))),rv=u.lazy(()=>R(()=>import("./SalonDetail-BNubpZ5h.js"),__vite__mapDeps([142,1,2,8,9,10,11,12,3,4,5,6,7,35,25,28,34,40,105,43,64,88,46,103,106,107,54,108,19,22,76,78,53,72,75,63,109,110,79,23,111,84,59,61,69,112,32,113,95,13]))),iv=u.lazy(()=>R(()=>import("./Lodging-D336hlDX.js"),__vite__mapDeps([143,1,2,97,8,9,10,11,12,3,4,5,6,7,44,45,46,42,43,77,98,84,99,17,100,29,101,102,64,31,25,13,59,61,32,22,15,36,28,34,74,40,103]))),av=u.lazy(()=>R(()=>import("./LodgingDetail-B0iTx2uS.js"),__vite__mapDeps([144,1,2,8,9,10,11,12,3,4,5,6,7,36,25,28,34,40,105,43,64,88,46,103,106,107,54,108,19,22,76,78,53,72,75,63,109,110,79,23,111,84,59,61,69,112,32,113,95,13]))),sv=u.lazy(()=>R(()=>import("./Malls-DkfGqr2J.js"),__vite__mapDeps([145,1,2,97,8,9,10,11,12,3,4,5,6,7,44,45,46,42,43,77,98,84,99,17,100,29,102,64,31,25,13,59,61,32,22,15,146,103,74,40]))),lv=u.lazy(()=>R(()=>import("./MallDetail-mz2aiLZS.js"),__vite__mapDeps([147,1,2,8,9,10,11,12,3,4,5,6,7,88,46,146,29,25,103,40,13,78,148,60,149,135,90,62,27,28,95,59,84,112,32,130]))),cv=u.lazy(()=>R(()=>import("./HomeVisits-BcNfXazu.js"),__vite__mapDeps([150,1,2,97,8,9,10,11,12,3,4,5,6,7,44,45,46,42,43,77,98,84,99,17,100,29,31,25,13,32,22,151,103,74,40]))),dv=u.lazy(()=>R(()=>import("./HomeVisitDetail-Bj_YnBly.js"),__vite__mapDeps([152,1,2,8,9,10,11,12,3,4,5,6,7,
97764,88,46,151,29,25,103,40,31,13,84,98,32,15]))),uv=u.lazy(()=>R(()=>import("./PetActivities-D_Lj32Dm.js"),__vite__mapDeps([153,1,2,43,75,8,9,10,11,12,54,63,3,4,5,6,7,42,37,40,13,39,38,17,100,30,69]))),pv=u.lazy(()=>R(()=>import("./EventDetail-e8k_kFy_.js"),__vite__mapDeps([154,1,2,3,4,5,6,7,8,9,10,11,12,64,43,40,37,109,67,30,73,66,48,155,32,116,78]))),hv=u.lazy(()=>R(()=>import("./PetwellMember-t9S4WEOu.js"),__vite__mapDeps([156,1,2,8,9,10,11,12,3,4,5,6,7,43,40]))),mv=u.lazy(()=>R(()=>import("./Nametag-Be1xBgyF.js"),__vite__mapDeps([157,1,2,11,69,99,158,109,10,8,9,12,3,4,5,6,7,43,45,46,75,54,63,40,76]))),fv=u.lazy(()=>R(()=>import("./VendorApplication-CRDuC8Ns.js"),__vite__mapDeps([159,1,2,8,9,10,11,12,3,4,5,6,7,53,54,160,45,46,40,161,78,99,32,55]))),gv=u.lazy(()=>R(()=>import("./VendorApplicationThankYou-BpBZym3s.js"),__vite__mapDeps([162,1,2,8,9,10,11,12,3,4,5,6,7,43,40,161,109,15]))),yv=u.lazy(()=>R(()=>import("./MidAutumnFestivalRegistration-DISRv6al.js"),__vite__mapDeps([163,1,2,8,9,10,11,12,53,54,160,40,75,63,93,164,165,15,55]))),vv=u.lazy(()=>R(()=>import("./MidAutumnFestivalPayment-B2DglGtG.js"),__vite__mapDeps([166,1,2,8,9,10,11,12,3,4,5,6,7,40,93,165,15,167]))),wv=u.lazy(()=>R(()=>import("./MidAutumnFestivalConfirmed-DmCsid80.js"),__vite__mapDeps([168,1,2,8,9,10,11,12,3,4,5,6,7,40,93,165,109,15]))),bv=u.lazy(()=>R(()=>import("./SignUpLogin-DxESOCD-.js"),__vite__mapDeps([169,1,2,12]))),Pv=u.lazy(()=>R(()=>import("./Register-BJuukmXR.js"),__vite__mapDeps([170,1,2,12]))),xv=u.lazy(()=>R(()=>import("./ForgotPassword-DkXRUTWn.js"),__vite__mapDeps([171,1,2,12]))),Sv=u.lazy(()=>R(()=>import("./VerificationCode-bJASZq7f.js"),__vite__mapDeps([172,1,2,12]))),Tv=u.lazy(()=>R(()=>import("./AuthCallback-CrJ_fqAW.js"),__vite__mapDeps([173,1,2,12]))),Av=u.lazy(()=>R(()=>import("./TestBooking-CS7MUhum.js"),__vite__mapDeps([174,1,2,8,9,10,11,12,3,4,5,6,7,64,43,75,54,63,40,99,32,109]))),Ev=u.lazy(()=>R(()=>import("./NotFound-DTZI5L68.js"),__vite__mapDeps([175,1,2,40]))),kv=u.lazy(()=>R(()=>import("./BlogDogTrainerLicence-Dk6U-mqT.js"),__vite__mapDeps([176,1,2,8,9,10,11,12,3,4,5,6,7,40,45,46,82,94,109,15,148]))),Cv=u.lazy(()=>R(()=>import("./Review-CZFB9g2T.js"),__vite__mapDeps([177,1,2,8,9,10,11,12,3,4,5,6,7,178,48,179,18,19,149,53,54,75,63,40,180,20,21,22,17,14,23,32,99,181,111,155,69,78,92]))),Nv=u.lazy(()=>R(()=>import("./ReviewProduct-D7E0kHyR.js"),__vite__mapDeps([182,1,2,8,9,10,11,12,3,4,5,6,7,160,54,180,20,178,48,40,18,19,107,108,22,183,32,23,67,66,149,99,69,111,30]))),Rv=u.lazy(()=>R(()=>import("./ReviewBrand-C_r99H9P.js"),__vite__mapDeps([184,1,2,8,9,10,11,12,3,4,5,6,7,179,18,19,149,178,48,53,54,75,63,40,180,20,21,22,99,67,23,181,32,155,69]))),Iv=u.lazy(()=>R(()=>import("./Wishlist-DXDrxZcj.js"),__vite__mapDeps([185,1,2,8,9,10,11,12,3,4,5,6,7,158,64,43,40,18,19,48,183,149,67]))),Dv=u.lazy(()=>R(()=>import("./Compare-CVOrncBD.js"),__vite__mapDeps([186,1,2,8,9,10,11,12,3,4,5,6,7,40,18,19,180,20,21,22,149,23,181,99,67,69]))),Wv=u.lazy(()=>R(()=>import("./OtherServices-DYwm6Mn6.js"),__vite__mapDeps([187,1,2,8,9,10,11,12,3,4,5,6,7,51,45,46,164,78,49,40]))),Lv=u.lazy(()=>R(()=>import("./AfcdPdfRedirect-nZ6Q1rlj.js"),__vite__mapDeps([188,1,2,12]))),Ov=u.lazy(()=>R(()=>import("./RainyDayMalls-B9bStGvH.js"),__vite__mapDeps([189,1,2,8,9,10,11,12,3,4,5,6,7,43,64,88,46,89,57,13,24,25,58,59,60,27,28,61,22,62,63,40,94,103,83,69,17,90,32,181,87,67,92]))),Fv=u.lazy(()=>R(()=>import("./NutritionScore-D5eItglQ.js"),__vite__mapDeps([190,1,2,8,9,10,11,12,3,4,5,6,7,13,40,84,124,191,139,167,99,69,109,60,110,17,100,131,130]))),_v=u.lazy(()=>R(()=>import("./NutritionProduct-b9wBvcz6.js"),__vite__mapDeps([192,1,2,8,9,10,11,12,3,4,5,6,7,64,13,40,191,87,14,138,69,60,99,15]))),Mv=u.lazy(()=>R(()=>import("./UserProfile-Duavc4Eg.js"),__vite__mapDeps([193,1,2,12,8,9,10,11,3,4,5,6,7,194,108,19,22,40]))),jv=u.lazy(()=>R(()=>import("./MyReviews-BclwVe3U.js"),__vite__mapDeps([195,1,2,196,8,9,10,11,12,3,4,5,6,7,108,19,139,194,22,40,17]))),Hv=u.lazy(()=>R(()=>import("./AccountProfile-CAuVI5P3.js"),__vite__mapDeps([197,1,2,196,8,9,10,11,12,3,4,5,6,7,108,19,139,84,194,22,40,79]))),$v=u.lazy(()=>R(()=>import("./ContactUsWidget-DVNx2pEF.js"),__vite__mapDeps([198,1,2,52,4,53,54,10,5,55,15,12]))),Bv=u.lazy(()=>R(()=>import("./HomePromoPopups-CvK0ytwZ.js"),__vite__mapDeps([199,1,2,93,78,9,12]))),Vv=new Vs;function Uv(){return l.jsx("div",{className:"flex min-h-[50vh] items-center justify-center",children:l.jsx("div",{className:"h-7 w-7 animate-spin rounded-full border-2 border-primary border-t-transparent"})})}function qv(){return wu(),null}function zv(){const[e,t]=u.useState(!1);return u.useEffect(()=>{const o=window;if(o.requestIdleCallback){const r=o.requestIdleCallback(()=>t(!0),{timeout:2500});return()=>{var i;return(i=o.cancelIdleCallback)==null?void 0:i.call(o,r)}}const n=window.setTimeout(()=>t(!0),1);return()=>window.clearTimeout(n)},[]),e?l.jsxs(u.Suspense,{fallback:null,children:[l.jsx($v,{}),l.jsx(Bv,{})]}):null}const Kv=()=>l.jsx(Us,{client:Vv,children:l.jsx(tu,{children:l.jsx(sg,{children:l.jsx(cg,{children:l.jsx(ug,{children:l.jsxs(pg,{children:[l.jsx(qc,{}),l.jsx(Sd,{}),l.jsxs(Hs,{children:[l.jsx(nu,{}),l.jsx(qv,{}),l.jsx(cu,{}),l.jsx(Iy,{}),l.jsx(zv,{}),l.jsx(u.Suspense,{fallback:l.jsx(Uv,{}),children:l.jsxs($s,{children:[l.jsx(E,{path:"/",element:l.jsx(Dy,{})}),l.jsx(E,{path:"/landing",element:l.jsx(Wy,{})}),l.jsx(E,{path:"/about",element:l.jsx(Ly,{})}),l.jsx(E,{path:"/other-services",element:l.jsx(Wv,{})}),l.jsx(E,{path:"/terms",element:l.jsx($r,{})}),l.jsx(E,{path:"/privacy",element:l.jsx($r,{})}),l.jsx(E,{path:"/clinics",element:l.jsx(jy,{})}),l.jsx(E,{path:"/clinics/:clinicId",element:l.jsx(Hy,{})}),l.jsx(E,{path:"/restaurants",element:l.jsx(ev,{})}),l.jsx(E,{path:"/restaurant",element:l.jsx(Te,{to:"/restaurants",replace:!0})}),l.jsx(E,{path:"/pet-friendly-restaurants-hk",element:l.jsx(Te,{to:"/restaurants",replace:!0})}),l.jsx(E,{path:"/pet-friendly-restaurants/:areaSlug",element:l.jsx(ov,{})}),l.jsx(E,{path:"/chong-wu-you-shan-can-ting",element:l.jsx(Te,{to:"/restaurants",replace:!0})}),l.jsx(E,{path:"/dai-gou-shi-fan-hong-kong",element:l.jsx(Te,{to:"/restaurants",replace:!0})}),l.jsx(E,{path:"/restaurants/:restaurantId",element:l.jsx(tv,{})}),l.jsx(E,{path:"/salons",element:l.jsx(nv,{})}),l.jsx(E,{path:"/salons/:salonId",element:l.jsx(rv,{})}),l.jsx(E,{path:"/lodging",element:l.jsx(iv,{})}),l.jsx(E,{path:"/lodging/:lodgingId",element:l.jsx(av,{})}),l.jsx(E,{path:"/malls",element:l.jsx(sv,{})}),l.jsx(E,{path:"/malls/:mallId",element:l.jsx(lv,{})}),l.jsx(E,{path:"/home-visits",element:l.jsx(cv,{})}),l.jsx(E,{path:"/home-visits/:providerId",element:l.jsx(dv,{})}),l.jsx(E,{path:"/ngos",element:l.jsx($y,{})}),l.jsx(E,{path:"/ngos/:ngoId",element:l.jsx(By,{})}),l.jsxs(E,{path:"/forum",element:l.jsx(_y,{}),children:[l.jsx(E,{index:!0,element:null}),l.jsx(E,{path:":postId",element:null})]}),l.jsx(E,{path:"/owner-zone",element:l.jsx(My,{})}),l.jsx(E,{path:"/download",element:l.jsx(zy,{})}),l.jsx(E,{path:"/delete-account",element:l.jsx(Ky,{})}),l.jsx(E,{path:"/admin-forms-secret",element:l.jsx(Gy,{})}),l.jsx(E,{path:"/mailgoogleform",element:l.jsx(Yy,{})}),l.jsx(E,{path:"/whatsapp-petwell-eng",element:l.jsx(Qy,{})}),l.jsx(E,{path:"/whatsapp-petwell-chin",element:l.jsx(Xy,{})}),l.jsx(E,{path:"/pet-matchmaker",element:l.jsx(Jy,{})}),l.jsx(E,{path:"/christmas-dog-mbti-2025",element:l.jsx(Zy,{})}),l.jsx(E,{path:"/christmas-events-2025",element:l.jsx(Fy,{})}),l.jsx(E,{path:"/pet-activities",element:l.jsx(uv,{})}),l.jsx(E,{path:"/event/:id",element:l.jsx(pv,{})}),l.jsx(E,{path:"/christmas-event/:eventId",element:l.jsx(Oy,{})}),l.jsx(E,{path:"/petwell-member",element:l.jsx(hv,{})}),l.jsx(E,{path:"/anti-lost-dog-tag-hk",element:l.jsx(mv,{})}),l.jsx(E,{path:"/nametag",element:l.jsx(Te,{to:"/anti-lost-dog-tag-hk",replace:!0})}),l.jsx(E,{path:"/namtag",element:l.jsx(Te,{to:"/anti-lost-dog-tag-hk",replace:!0})}),l.jsx(E,{path:"/fang-zou-shi-gou-pai",element:l.jsx(Te,{to:"/anti-lost-dog-tag-hk",replace:!0})}),l.jsx(E,{path:"/é²èµ°å¤±çç",element:l.jsx(Te,{to:"/anti-lost-dog-tag-hk",replace:!0})}),l.jsx(E,{path:"/vendor-application",element:l.jsx(fv,{})}),l.jsx(E,{path:"/vendor-application/thank-you",element:l.jsx(gv,{})}),l.jsx(E,{path:"/mid-autumn-taiwan-festival",element:l.jsx(yv,{})}),l.jsx(E,{path:"/mid-autumn-taiwan-festival/pay",element:l.jsx(vv,{})}),l.jsx(E,{path:"/mid-autumn-taiwan-festival/confirmed",element:l.jsx(wv,{})}),l.jsx(E,{path:"/signup-login",element:l.jsx(bv,{})}),l.jsx(E,{path:"/register",element:l.jsx(Pv,{})}),l.jsx(E,{path:"/forgot-password",element:l.jsx(xv,{})}),l.jsx(E,{path:"/verification-code",element:l.jsx(Sv,{})}),l.jsx(E,{path:"/auth/*",element:l.jsx(Tv,{})}),l.jsx(E,{path:"/test-booking",element:l.jsx(Av,{})}),l.jsx(E,{path:"/review",element:l.jsx(Cv,{})}),l.jsx(E,{path:"/review/brand/:brand",element:l.jsx(Rv,{})}),l.jsx(E,{path:"/review/:id",element:l.jsx(Nv,{})}),l.jsx(E,{path:"/wishlist",element:l.jsx(Iv,{})}),l.jsx(E,{path:"/compare",element:l.jsx(Dv,{})}),l.jsx(E,{path:"/account",element:l.jsx(Hv,{})}),l.jsx(E,{path:"/account/reviews",element:l.jsx(jv,{})}),l.jsx(E,{path:"/users/:userId",element:l.jsx(Mv,{})}),l.jsx(E,{path:"/merchant",element:l.jsx(Te,{to:"/other-services",replace:!0})}),l.jsx(E,{path:"/blog/hong-kong-dog-trainer-licence-guide",element:l.jsx(kv,{})}),l.jsx(E,{path:"/blog/pet-friendly-shopping-malls-hk-2025",element:l.jsx(Te,{to:"/rainy-day-pet-friendly-indoor-hong-kong",replace:!0})}),l.jsx(E,{path:"/rainy-day-pet-friendly-indoor-hong-kong",element:l.jsx(Ov,{})}),l.jsx(E,{path:"/nutrition",element:l.jsx(Fv,{})}),l.jsx(E,{path:"/nutrition/:id",element:l.jsx(_v,{})}),l.jsx(E,{path:"/food-score",element:l.jsx(Te,{to:"/nutrition",replace:!0})}),l.jsx(E,{path:"/blog/:slug",element:l.jsx(Br,{})}),l.jsx(E,{path:"/afcd-pet-food-safety-pdf",element:l.jsx(Lv,{})}),l.jsx(E,{path:"/:slug",element:l.jsx(Br,{})}),l.jsx(E,{path:"/check/:id",element:l.jsx(qy,{})}),l.jsx(E,{path:"/pet/:tagId",element:l.jsx(Vy,{})}),l.jsx(E,{path:"/activate/:tagId",element:l.jsx(Uy,{})}),l.jsx(E,{path:"*",element:l.jsx(Ev,{})})]})})]})]})})})})})});nl.configure(Zf);Bs(document.getElementById("root")).render(l.jsx(Kv,{}));export{ae as $,Bt as A,le as B,Da as C,Py as D,yw as E,Cw as F,Tw as G,Aw as H,Ee as I,kw as J,Ew as K,ke as L,rw as M,aw as N,dw as O,ww as P,bw as Q,Yf as R,mw as S,Sw as T,Jv as U,iw as V,cc as W,ki as X,Ft as Y,ri as Z,No as _,pw as a,Rw as a$,oe as a0,wt as a1,Vt as a2,ky as a3,Le as a4,Dw as a5,Lw as a6,vs as a7,ue as a8,Ww as a9,je as aA,wa as aB,ja as aC,ku as aD,ml as aE,Cd as aF,Ml as aG,se as aH,Nu as aI,Iu as aJ,er as aK,cw as aL,lw as aM,Qo as aN,me as aO,_u as aP,Wu as aQ,R as aR,yu as aS,nw as aT,Fw as aU,Ow as aV,ag as aW,ig as aX,Nw as aY,_w as aZ,Iw as a_,ws as aa,bs as ab,Ps as ac,by as ad,vy as ae,wy as af,gl as ag,hg as ah,xn as ai,bl as aj,We as ak,Hi as al,Od as am,ly as an,Sg as ao,za as ap,uo as aq,Fd as ar,_d as as,Jr as at,es as au,ei as av,ln as aw,It as ax,Zv as ay,pn as az,ce as b,dl as b0,bt as c,ul as d,lg as e,fw as f,Pw as g,dg as h,hw as i,Ss as j,Ts as k,As as l,Es as m,tt as n,Sy as o,ka as p,Hf as q,xw as r,Lt as s,$f as t,Rh as u,sw as v,uw as w,gw as x,qf as y,vw as z};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.