"use strict";(()=>{var re=Object.defineProperty;var se=(i,e,t)=>e in i?re(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var l=(i,e,t)=>se(i,typeof e!="symbol"?e+"":e,t);function ae(i){let e="__DOUBLE_ASTERISK_TOKEN__",t="__SINGLE_ASTERISK_TOKEN__",r=i.replace(/\*\*/g,e).replace(/\*/g,t).replace(/[.+?^${}()|[\]\\]/g,"\\$&");r=r.replace(new RegExp(`/${e}/`,"g"),"/(?:.+/)?"),r=r.replace(new RegExp(e,"g"),".*"),r=r.replace(/\//g,"\\/");let o=r.replace(new RegExp(t,"g"),"[^/]+");return new RegExp("^"+o+"$")}function k(i,e){for(let t of e)try{if(ae(t).test(i))return t}catch(n){console.error(`Invalid pattern: ${t}`,n)}return null}function U(i,e){let t=null;return(...n)=>{t&&clearTimeout(t),t=setTimeout(()=>i(...n),e)}}function N(i){try{let e=window.location.hostname,t=new URL(i).hostname;return t!==e&&t!==""}catch{return!1}}function S(i,e){if(!i)return e;try{let t=JSON.parse(i);return Array.isArray(e)&&!Array.isArray(t)?e:t}catch(t){return console.error("Error parsing JSON:",t),e}}function H(i){let e=i.getAttribute("src");if(!e)return console.error("Script src attribute is missing"),null;let t=e.split("/script.js")[0];if(!t)return console.error("Please provide a valid analytics host"),null;let n=i.getAttribute("data-site-id")||i.getAttribute("site-id");if(!n||isNaN(Number(n)))return console.error("Please provide a valid site ID using the data-site-id attribute"),null;let r=i.getAttribute("data-debounce")?Math.max(0,parseInt(i.getAttribute("data-debounce"))):500,o=S(i.getAttribute("data-skip-patterns"),[]),c=S(i.getAttribute("data-mask-patterns"),[]);return{analyticsHost:t,siteId:n,debounceDuration:r,autoTrackPageview:i.getAttribute("data-auto-track-pageview")!=="false",autoTrackSpa:i.getAttribute("data-track-spa")!=="false",trackQuerystring:i.getAttribute("data-track-query")!=="false",trackOutbound:i.getAttribute("data-track-outbound")!=="false",enableWebVitals:i.getAttribute("data-web-vitals")==="true",skipPatterns:o,maskPatterns:c}}var v=class{constructor(e){l(this,"config");l(this,"customUserId",null);this.config=e,this.loadUserId()}loadUserId(){try{let e=localStorage.getItem("spaces-user-id");e&&(this.customUserId=e)}catch{}}createBasePayload(){let e=new URL(window.location.href),t=e.pathname;if(e.hash&&e.hash.startsWith("#/")&&(t=e.hash.substring(1)),k(t,this.config.skipPatterns))return null;let n=k(t,this.config.maskPatterns);n&&(t=n);let r=this.getDeviceInfo(),o={site_id:this.config.siteId,hostname:e.hostname,pathname:t,querystring:this.config.trackQuerystring?e.search:"",screenWidth:window.innerWidth,screenHeight:window.innerHeight,language:navigator.language,page_title:document.title,referrer:document.referrer,...r};return this.customUserId&&(o.user_id=this.customUserId),o}async sendTrackingData(e){try{await fetch(`${this.config.analyticsHost}/track`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),mode:"cors",keepalive:!0})}catch(t){console.error("Failed to send tracking data:",t)}}track(e,t="",n={}){if(e==="custom_event"&&(!t||typeof t!="string")){console.error("Event name is required and must be a string for custom events");return}let r=this.createBasePayload();if(!r)return;let o={...r,type:e,event_name:t,properties:e==="custom_event"||e==="outbound"?JSON.stringify(n):void 0};this.sendTrackingData(o)}trackPageview(){this.track("pageview")}trackEvent(e,t={}){this.track("custom_event",e,t)}trackOutbound(e,t="",n="_self"){this.track("outbound","",{url:e,text:t,target:n})}trackWebVitals(e){let t=this.createBasePayload();if(!t)return;let n={...t,type:"performance",event_name:"web-vitals",...e};this.sendTrackingData(n)}identify(e){if(typeof e!="string"||e.trim()===""){console.error("User ID must be a non-empty string");return}this.customUserId=e.trim();try{localStorage.setItem("spaces-user-id",this.customUserId)}catch{console.warn("Could not persist user ID to localStorage")}}clearUserId(){this.customUserId=null;try{localStorage.removeItem("spaces-user-id")}catch{}}getUserId(){return this.customUserId}getDeviceInfo(){let e=navigator.userAgent,t={};if(e.includes("Chrome")&&!e.includes("Edg")){t.browser="Chrome";let s=e.match(/Chrome\/(\d+)/);s&&(t.browser_version=s[1])}else if(e.includes("Firefox")){t.browser="Firefox";let s=e.match(/Firefox\/(\d+)/);s&&(t.browser_version=s[1])}else if(e.includes("Safari")&&!e.includes("Chrome")){t.browser="Safari";let s=e.match(/Version\/(\d+)/);s&&(t.browser_version=s[1])}else if(e.includes("Edg")){t.browser="Edge";let s=e.match(/Edg\/(\d+)/);s&&(t.browser_version=s[1])}else if(e.includes("Opera")||e.includes("OPR")){t.browser="Opera";let s=e.match(/(?:Opera|OPR)\/(\d+)/);s&&(t.browser_version=s[1])}if(e.includes("Windows NT")){t.operating_system="Windows";let s=e.match(/Windows NT ([\d.]+)/);if(s){let a=s[1];a==="10.0"?t.operating_system_version="10":a==="6.3"?t.operating_system_version="8.1":a==="6.2"?t.operating_system_version="8":a==="6.1"?t.operating_system_version="7":t.operating_system_version=a}}else if(e.includes("Mac OS X")){t.operating_system="macOS";let s=e.match(/Mac OS X ([\d_]+)/);s&&(t.operating_system_version=s[1].replace(/_/g,"."))}else if(e.includes("Linux"))t.operating_system="Linux";else if(e.includes("Android")){t.operating_system="Android";let s=e.match(/Android ([\d.]+)/);s&&(t.operating_system_version=s[1])}else if(e.includes("iPhone")||e.includes("iPad")){t.operating_system="iOS";let s=e.match(/OS ([\d_]+)/);s&&(t.operating_system_version=s[1].replace(/_/g,"."))}let n=window.innerWidth,r=window.innerHeight,o=Math.max(n,r),c=Math.min(n,r);return o>1024?t.device_type="Desktop":o>768&&c>1024?t.device_type="Tablet":t.device_type="Mobile",e.includes("Mobile")||e.includes("Android")||e.includes("iPhone")?t.device_type="Mobile":(e.includes("iPad")||e.includes("Tablet"))&&(t.device_type="Tablet"),t}};var G=-1,m=i=>{addEventListener("pageshow",e=>{e.persisted&&(G=e.timeStamp,i(e))},!0)},u=(i,e,t,n)=>{let r,o;return c=>{e.value>=0&&(c||n)&&(o=e.value-(r??0),(o||r===void 0)&&(r=e.value,e.delta=o,e.rating=((s,a)=>s>a[1]?"poor":s>a[0]?"needs-improvement":"good")(e.value,t),i(e)))}},O=i=>{requestAnimationFrame(()=>requestAnimationFrame(()=>i()))},M=()=>{let i=performance.getEntriesByType("navigation")[0];if(i&&i.responseStart>0&&i.responseStartM()?.activationStart??0,h=(i,e=-1)=>{let t=M(),n="navigate";return G>=0?n="back-forward-cache":t&&(document.prerendering||g()>0?n="prerender":document.wasDiscarded?n="restore":t.type&&(n=t.type.replace(/_/g,"-"))),{name:i,value:e,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:n}},P=new WeakMap;function x(i,e){return P.get(i)||P.set(i,new e),P.get(i)}var C=class{constructor(){l(this,"t");l(this,"i",0);l(this,"o",[])}h(e){if(e.hadRecentInput)return;let t=this.o[0],n=this.o.at(-1);this.i&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}},f=(i,e,t={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(i)){let n=new PerformanceObserver(r=>{Promise.resolve().then(()=>{e(r.getEntries())})});return n.observe({type:i,buffered:!0,...t}),n}}catch{}},R=i=>{let e=!1;return()=>{e||(i(),e=!0)}},p=-1,F=()=>document.visibilityState!=="hidden"||document.prerendering?1/0:0,y=i=>{document.visibilityState==="hidden"&&p>-1&&(p=i.type==="visibilitychange"?i.timeStamp:0,oe())},V=()=>{addEventListener("visibilitychange",y,!0),addEventListener("prerenderingchange",y,!0)},oe=()=>{removeEventListener("visibilitychange",y,!0),removeEventListener("prerenderingchange",y,!0)},Q=()=>{if(p<0){let i=g();p=(document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter(t=>t.name==="hidden"&&t.startTime>i)[0]?.startTime)??F(),V(),m(()=>{setTimeout(()=>{p=F(),V()})})}return{get firstHiddenTime(){return p}}},T=i=>{document.prerendering?addEventListener("prerenderingchange",()=>i(),!0):i()},B=[1800,3e3],W=(i,e={})=>{T(()=>{let t=Q(),n,r=h("FCP"),o=f("paint",c=>{for(let s of c)s.name==="first-contentful-paint"&&(o.disconnect(),s.startTime{r=h("FCP"),n=u(i,r,B,e.reportAllChanges),O(()=>{r.value=performance.now()-c.timeStamp,n(!0)})}))})},$=[.1,.25],X=(i,e={})=>{W(R(()=>{let t,n=h("CLS",0),r=x(e,C),o=s=>{for(let a of s)r.h(a);r.i>n.value&&(n.value=r.i,n.entries=r.o,t())},c=f("layout-shift",o);c&&(t=u(i,n,$,e.reportAllChanges),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&(o(c.takeRecords()),t(!0))}),m(()=>{r.i=0,n=h("CLS",0),t=u(i,n,$,e.reportAllChanges),O(()=>t())}),setTimeout(t))}))},Y=0,E=1/0,b=0,ce=i=>{for(let e of i)e.interactionId&&(E=Math.min(E,e.interactionId),b=Math.max(b,e.interactionId),Y=b?(b-E)/7+1:0)},I,J=()=>I?Y:performance.interactionCount??0,le=()=>{"interactionCount"in performance||I||(I=f("event",ce,{type:"event",buffered:!0,durationThreshold:0}))},K=0,L=class{constructor(){l(this,"u",[]);l(this,"l",new Map);l(this,"m");l(this,"v")}p(){K=J(),this.u.length=0,this.l.clear()}P(){let e=Math.min(this.u.length-1,Math.floor((J()-K)/50));return this.u[e]}h(e){if(this.m?.(e),!e.interactionId&&e.entryType!=="first-input")return;let t=this.u.at(-1),n=this.l.get(e.interactionId);if(n||this.u.length<10||e.duration>t.T){if(n?e.duration>n.T?(n.entries=[e],n.T=e.duration):e.duration===n.T&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],T:e.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort((r,o)=>o.T-r.T),this.u.length>10){let r=this.u.splice(10);for(let o of r)this.l.delete(o.id)}this.v?.(n)}}},Z=i=>{let e=globalThis.requestIdleCallback||setTimeout;document.visibilityState==="hidden"?i():(i=R(i),document.addEventListener("visibilitychange",i,{once:!0}),e(()=>{i(),document.removeEventListener("visibilitychange",i)}))},q=[200,500],ee=(i,e={})=>{globalThis.PerformanceEventTiming&&"interactionId"in PerformanceEventTiming.prototype&&T(()=>{le();let t,n=h("INP"),r=x(e,L),o=s=>{Z(()=>{for(let d of s)r.h(d);let a=r.P();a&&a.T!==n.value&&(n.value=a.T,n.entries=a.entries,t())})},c=f("event",o,{durationThreshold:e.durationThreshold??40});t=u(i,n,q,e.reportAllChanges),c&&(c.observe({type:"first-input",buffered:!0}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&(o(c.takeRecords()),t(!0))}),m(()=>{r.p(),n=h("INP"),t=u(i,n,q,e.reportAllChanges)}))})},A=class{constructor(){l(this,"m")}h(e){this.m?.(e)}},z=[2500,4e3],te=(i,e={})=>{T(()=>{let t=Q(),n,r=h("LCP"),o=x(e,A),c=a=>{e.reportAllChanges||(a=a.slice(-1));for(let d of a)o.h(d),d.startTime{c(s.takeRecords()),s.disconnect(),n(!0)});for(let d of["keydown","click","visibilitychange"])addEventListener(d,()=>Z(a),{capture:!0,once:!0});m(d=>{r=h("LCP"),n=u(i,r,z,e.reportAllChanges),O(()=>{r.value=performance.now()-d.timeStamp,n(!0)})})}})},j=[800,1800],D=i=>{document.prerendering?T(()=>D(i)):document.readyState!=="complete"?addEventListener("load",()=>D(i),!0):setTimeout(i)},ie=(i,e={})=>{let t=h("TTFB"),n=u(i,t,j,e.reportAllChanges);D(()=>{let r=M();r&&(t.value=Math.max(r.responseStart-g(),0),t.entries=[r],n(!0),m(()=>{t=h("TTFB",0),n=u(i,t,j,e.reportAllChanges),n(!0)}))})};var w=class{constructor(e){l(this,"data",{lcp:null,cls:null,inp:null,fcp:null,ttfb:null});l(this,"sent",!1);l(this,"timeout",null);l(this,"onReadyCallback",null);this.onReadyCallback=e}initialize(){try{te(this.collectMetric.bind(this)),X(this.collectMetric.bind(this)),ee(this.collectMetric.bind(this)),W(this.collectMetric.bind(this)),ie(this.collectMetric.bind(this)),this.timeout=setTimeout(()=>{this.sent||this.sendData()},2e4),window.addEventListener("beforeunload",()=>{this.sent||this.sendData()})}catch(e){console.warn("Error initializing web vitals tracking:",e)}}collectMetric(e){if(this.sent)return;let t=e.name.toLowerCase();this.data[t]=e.value,Object.values(this.data).every(r=>r!==null)&&this.sendData()}sendData(){this.sent||(this.sent=!0,this.timeout&&(clearTimeout(this.timeout),this.timeout=null),this.onReadyCallback&&this.onReadyCallback(this.data))}getData(){return{...this.data}}};(function(){let i=document.currentScript;if(!i){console.error("Could not find current script tag");return}if(window.__SPACES_OPTOUT__||localStorage.getItem("disable-spaces")!==null){window.spaces={pageview:()=>{},event:()=>{},trackOutbound:()=>{},identify:()=>{},clearUserId:()=>{},getUserId:()=>null};return}let e=H(i);if(!e)return;let t=new v(e);e.enableWebVitals&&new w(s=>{t.trackWebVitals(s)}).initialize();let n=()=>t.trackPageview(),r=e.debounceDuration>0?U(n,e.debounceDuration):n;function o(){if(document.addEventListener("click",function(c){let s=c.target;for(;s&&s!==document.documentElement;){if(s.hasAttribute("data-spaces-event")){let a=s.getAttribute("data-spaces-event");if(a){let d={};for(let _ of s.attributes)if(_.name.startsWith("data-spaces-prop-")){let ne=_.name.replace("data-spaces-prop-","");d[ne]=_.value}t.trackEvent(a,d)}break}s=s.parentElement}if(e.trackOutbound){let a=c.target.closest("a");a?.href&&N(a.href)&&t.trackOutbound(a.href,a.innerText||a.textContent||"",a.target||"_self")}}),e.autoTrackSpa){let c=history.pushState,s=history.replaceState;history.pushState=function(...a){c.apply(this,a),r()},history.replaceState=function(...a){s.apply(this,a),r()},window.addEventListener("popstate",r),window.addEventListener("hashchange",r)}}window.spaces={pageview:()=>t.trackPageview(),event:(c,s={})=>t.trackEvent(c,s),trackOutbound:(c,s="",a="_self")=>t.trackOutbound(c,s,a),identify:c=>t.identify(c),clearUserId:()=>t.clearUserId(),getUserId:()=>t.getUserId()},o(),e.autoTrackPageview&&t.trackPageview()})();})();