@thg-agentic/hyper-personalisation-web 3.28.1 → 3.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # @thg-agentic/hyper-personalisation-web
2
2
 
3
3
  The browser SDK for THG Hyper-Personalisation, a customer data platform. It implements the event
4
- specification (spec 1.21, stamped on every event as `context.spec.version`) for any storefront: it
4
+ specification (spec 1.22, stamped on every event as `context.spec.version`) for any storefront: it
5
5
  sends events in the Segment wire format, applies consent strictly whichever CMP the site uses, reads
6
6
  the GA4 `dataLayer` the site already pushes to, and has no runtime dependencies.
7
7
 
@@ -546,8 +546,12 @@ MP4.
546
546
  Shift-Tab cycle through its controls without leaving it; Esc closes it.
547
547
 
548
548
 
549
- **Questions.** A choice (`one`, `many`) shows as buttons, a list of radio buttons or checkboxes, or
550
- a dropdown, as its question block's `display` says (a multiple choice is never a dropdown). A
549
+ **Questions.** A choice (`one`, `many`) shows as buttons, a list of radio buttons or checkboxes, a
550
+ dropdown, or picture cards, as its question block's `display` says (a multiple choice is never a
551
+ dropdown, and the console offers picture cards for a single choice only). Picture cards show each
552
+ option's picture from the block's `pictures` above its label, the whole card a radio button, two a
553
+ row in a narrow form and up to four in a wide one; they come with the date and number fields'
554
+ chunk, loaded when a step shows them (3.29 or later). A
551
555
  `date` question is a birthday's day and month selects and, when asked, a year field, in the order
552
556
  and month names of the form's `locale` (the page's `lang` when the form has none); or the browser's
553
557
  own date field for any other date. A `number` question is a text field with a numeric keyboard and
@@ -606,12 +610,16 @@ URL's tags: the console's Preview on site link adds them. Click ids
606
610
  | `settings` | Development and tests: these forms instead of the settings'. |
607
611
 
608
612
  `hp.onsite.debug()` returns each form's state and reasons (`armed`, `not eligible: per_session cap`,
609
- `held out`, `shown`, …).
613
+ `held out`, `shown`, …), and since 3.29 a `code`, which stays the same across releases while the
614
+ reasons may be reworded: `armed`, `waiting-for-open`, `deciding`, `shown`, `closed`, `held-out`,
615
+ `invalid`, `not-eligible`, `overlay-gap`, `awaiting-consent`, `another-showing`, `allowance-spent`,
616
+ `lower-priority`, `no-element`, `empty-basket`, `suppressed`, or one of `nothing`'s codes below. Match
617
+ on it, not on the reasons. `code` is always present, so a trace built by hand needs one.
610
618
 
611
619
  | `hp.onsite` | |
612
620
  |---|---|
613
621
  | `open(name)`, `show(name)` | Show a form now, past its trigger; resolves with whether it showed. `name` is a form's slot, else one of a form's `aliases` (the settings' names for it: `footer_signup` for the site's own sign-up button), matched exactly; a slot wins over an alias. A `manual` form, or one opened by an alias, shows each time (see above); any other keeps to its caps. From there it is that form, by its slot, in every event. |
614
- | `on(name, fn)` | `shown`, `submitted`, `apply`, `closed` or `held`, with `{ slot, arm, format }`; `submitted` and `apply` add `coupon` (`{ code, prize }` or `null`), `closed` adds `reason`. `held` is a held-out visitor whose trigger fired (a form the site opened says so by `open` resolving `false` instead), so a site replacing its own popup with HP's shows its own there and the holdout compares the two. A form with prizes says `submitted` once, when its claim settles: with the code, or `null` if the claim failed. Returns a function that stops listening. A throwing listener is logged, never breaks the form. |
622
+ | `on(name, fn)` | `shown`, `submitted`, `apply`, `closed`, `held` or `nothing`, with `{ slot, arm, format }` (`nothing`: `{ slot, format, code }`); `submitted` and `apply` add `coupon` (`{ code, prize }` or `null`), `closed` adds `reason`. `held` is a held-out visitor whose trigger fired (a form the site opened says so by `open` resolving `false` instead), so a site replacing its own popup with HP's shows its own there and the holdout compares the two. `nothing` (since 3.29) is a covering form (any but `inline`) whose own trigger fired and for which HP will show nothing on this page view; the site shows its own there too. `code` says why: `decision-failed` (a network error, any status but 200, a 200 without a list of decisions, or no answer within 3 s), `no-creative`, `no-code` (a reminder with no code to remind of), `renderer-failed` or `products-failed` (the chunk did not load within 3 s), or `error` (the form failed while it was being opened). It comes at most 3.05 s after the trigger: the 50 ms in which forms that fire together compete, then one 3 s deadline they share; an answer after it is never shown, so the site needs no timer of its own. It is not said when another covering form that fired with it shows, or the visitor is held out (`held` is said instead); for a form the site opened (`open` resolves `false`); on a suppressed page (`suppress`: the site is keeping its own screen clear); when its caps, the gap between popups, the consent banner or a form already on screen keep it away; or for an empty basket, which is tried again when the basket changes. Of the forms that fire together, only the highest HP has nothing for says it: the slot whose place the site takes. Like a holdout, it spends the page view's allowance, so no other HP popup, sheet, bar or teaser follows it on that page view (a later trigger is `allowance-spent`; a form the shopper asks for, `manual` or by an alias, still opens). A form with prizes says `submitted` once, when its claim settles: with the code, or `null` if the claim failed. Returns a function that stops listening. A throwing listener is logged, never breaks the form. |
615
623
  | `ready()` | Resolves once the page knows whether onsite forms run on it: each form's state, as `debug()`, once the runtime has started, or `[]` once none will (not opted in, no live form, the runtime failed to load). A site keeping its own popup where HP has none for the visitor reads it. |
616
624
  | `suppress(reason)`, `unsuppress(reason?)` | Take any form off the screen quietly (not a dismissal) and keep forms away while any reason holds; `unsuppress()` lifts all. |
617
625
 
package/dist/hp.min.js CHANGED
@@ -1,3 +1,3 @@
1
- (()=>{var yn=e=>{throw TypeError(e)};var lo=(e,t,n)=>t.has(e)||yn("Cannot "+n);var wn=(e,t,n)=>t.has(e)?yn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);var L=(e,t,n)=>(lo(e,t,"access private method"),n);var Ee=[];for(let e=2;Ee.length<64;e++)Ee.every(t=>e%t!==0)&&Ee.push(e);var Sn=e=>(e-Math.floor(e))*2**32>>>0,fo=Ee.slice(0,8).map(e=>Sn(Math.sqrt(e))),po=Ee.map(e=>Sn(Math.cbrt(e))),Q=(e,t)=>e>>>t|e<<32-t;function _n(e){let t=new TextEncoder().encode(String(e)),n=new Uint32Array((t.length+8>>6)*16+16);t.forEach((s,i)=>{n[i>>2]|=s<<24-i%4*8}),n[t.length>>2]|=128<<24-t.length%4*8,n[n.length-2]=Math.floor(t.length/2**29),n[n.length-1]=t.length*8;let r=Uint32Array.from(fo),o=new Uint32Array(64);for(let s=0;s<n.length;s+=16){for(let w=0;w<64;w++){if(w<16){o[w]=n[s+w];continue}let k=o[w-15],b=o[w-2],x=Q(k,7)^Q(k,18)^k>>>3,h=Q(b,17)^Q(b,19)^b>>>10;o[w]=o[w-16]+x+o[w-7]+h}let[i,u,c,l,f,p,m,A]=r;for(let w=0;w<64;w++){let k=Q(f,6)^Q(f,11)^Q(f,25),b=A+k+(f&p^~f&m)+po[w]+o[w]|0,h=(Q(i,2)^Q(i,13)^Q(i,22))+(i&u^i&c^u&c)|0;[A,m,p,f,l,c,u,i]=[m,p,f,l+b|0,c,u,i,b+h|0]}[i,u,c,l,f,p,m,A].forEach((w,k)=>{r[k]+=w})}return Array.from(r,s=>s.toString(16).padStart(8,"0")).join("")}var It=(e,t)=>e<<t|e>>>32-t;function bn(e){let t=new Uint32Array((e.length+8>>6)*16+16);e.forEach((s,i)=>{t[i>>2]|=s<<24-i%4*8}),t[e.length>>2]|=128<<24-e.length%4*8,t[t.length-2]=Math.floor(e.length/2**29),t[t.length-1]=e.length*8;let n=Uint32Array.of(1732584193,4023233417,2562383102,271733878,3285377520),r=new Uint32Array(80);for(let s=0;s<t.length;s+=16){for(let p=0;p<80;p++)r[p]=p<16?t[s+p]:It(r[p-3]^r[p-8]^r[p-14]^r[p-16],1);let[i,u,c,l,f]=n;for(let p=0;p<80;p++){let m,A;p<20?(m=u&c|~u&l,A=1518500249):p<40?(m=u^c^l,A=1859775393):p<60?(m=u&c|u&l|c&l,A=2400959708):(m=u^c^l,A=3395469782);let w=It(i,5)+m+f+A+r[p]|0;[f,l,c,u,i]=[l,c,It(u,30),i,w]}[i,u,c,l,f].forEach((p,m)=>{n[m]+=p})}let o=new Uint8Array(20);return n.forEach((s,i)=>{o[i*4]=s>>>24,o[i*4+1]=s>>>16,o[i*4+2]=s>>>8,o[i*4+3]=s}),o}var mo="e28e8ada-5b76-4209-bba9-79b823a0af75",ho=e=>Array.from(e,t=>t.toString(16).padStart(2,"0")).join("");function In(e,t){let n=Uint8Array.from(e.replace(/-/g,"").match(/../g),u=>Number.parseInt(u,16)),r=new TextEncoder().encode(t),o=new Uint8Array(16+r.length);o.set(n),o.set(r,16);let s=bn(o).slice(0,16);s[6]=s[6]&15|80,s[8]=s[8]&63|128;let i=ho(s);return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}var ue=(e,t)=>typeof e=="string"&&e!==""&&e.length<=t?e:null;function Fe(e,t){return ue(e,64)??ue(t,256)}function kn({sessionId:e,slot:t,arm:n}={}){let r=ue(e,256);return!r||!ue(t,256)||!ue(n,256)?null:In(mo,`${r}:${t}:${n}`)}var go="4b1f2c7e-9a3d-4e58-b6c1-2d7f0a9e8c53";function xn({sessionId:e,surface:t}={}){let n=ue(e,256);return!n||!ue(t,64)?null:In(go,`${n}:${t}`)}var yo=Array.from({length:11},(e,t)=>t/10);function wo(e,t){if(!e.isIntersecting)return!1;let{intersectionRect:n,boundingClientRect:r,rootBounds:o}=e;if(!n||!r)return!0;let s=n.width*n.height,i=r.width*r.height,u=o?Math.min(i,o.width*o.height):i;return u>0&&s/u>=t}function re(e){let{selector:t,onViewable:n,visibleRatio:r=.5,dwellMs:o=1e3,root:s=document}=e,i=new Map,u=new WeakSet,c=new Set,l=h=>{i.has(h)||i.set(h,setTimeout(()=>{i.delete(h),n(h)&&(p?.unobserve(h),c.delete(h))},o))},f=h=>{clearTimeout(i.get(h)),i.delete(h)},p=typeof IntersectionObserver>"u"?null:new IntersectionObserver(h=>{for(let E of h){let S=E.target;if(!wo(E,r)){c.delete(S),f(S);continue}c.add(S),m()&&l(S)}},{threshold:yo}),m=()=>typeof document>"u"||document.visibilityState!=="hidden",A=()=>{if(m())for(let h of c)l(h);else for(let h of c)f(h)};document.addEventListener("visibilitychange",A);let w=()=>{for(let h of s.querySelectorAll(t))u.has(h)||(u.add(h),p?.observe(h))},k=typeof MutationObserver>"u"?null:new MutationObserver(()=>w()),b=()=>{w(),k?.observe(s===document?document.body:s,{childList:!0,subtree:!0})},x=s===document&&!document.body;return x?document.addEventListener("DOMContentLoaded",b,{once:!0}):b(),()=>{x&&document.removeEventListener("DOMContentLoaded",b),document.removeEventListener("visibilitychange",A),p?.disconnect(),k?.disconnect();for(let h of i.values())clearTimeout(h);i.clear(),c.clear()}}function kt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-exposure]",visibleRatio:r=.5,dwellMs:o=1e3,root:s=document}=t;return re({selector:n,root:s,visibleRatio:r,dwellMs:o,onViewable(i){let u=i.dataset?.hpExposure?.trim();return u&&e.surfaceViewed({surface:u}),!0}})}var An=e=>{try{return new URL(e,document.baseURI).toString()}catch{return e}};function xt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-list]",tileSelector:r="[data-hp-product]",visibleRatio:o=.5,dwellMs:s=1e3,root:i=document}=t,u=new Set,c=w=>w.closest?.(n)??null,l=w=>{let k=w.dataset.hpList?.trim();return k?{list_id:k,category:w.dataset.hpListCategory?.trim()||null}:null},f=w=>Array.from(w.querySelectorAll(r)).filter(k=>c(k)===w),p=(w,k)=>{try{let b=JSON.parse(w.dataset.hpProduct??"");return!b||typeof b!="object"||!b.product_id?null:{...b,position:b.position??k+1,...b.url?{url:An(b.url)}:{},...b.image_url?{image_url:An(b.image_url)}:{}}}catch{return null}},m=re({selector:`${n} ${r}`,root:i,visibleRatio:o,dwellMs:s,onViewable(w){let k=c(w);if(!k||k.dataset.hpListView==="manual")return!0;let b=l(k);if(!b||u.has(b.list_id))return!0;let x=new Set,h=f(k).map(p).filter(E=>!E||x.has(E.product_id)?!1:(x.add(E.product_id),!0));return h.length===0||(u.add(b.list_id),e.productListViewed({...b,products:h})),!0}}),A=w=>{let b=w.target?.closest?.("a[href]")?.closest(r);if(!b)return;let x=c(b),h=p(b,x?f(x).indexOf(b):0);h&&e.productClicked({list_id:x?l(x)?.list_id??null:null,products:[h]})};return document.addEventListener("click",A,!0),()=>{document.removeEventListener("click",A,!0),m()}}function D(e,...t){let n=e.dataset??{};for(let r of t){let o=n[r];if(typeof o=="string"&&o.trim()!=="")return o.trim()}return null}function qe(e,...t){let n=D(e,...t);if(n===null)return null;let r=Number(n);return Number.isFinite(r)?Math.trunc(r):null}function So(e,t){let n=D(e,"hpPromotion");return n?{promotion_id:n,name:D(e,"hpPromotionName"),creative:D(e,"hpPromotionCreative"),position:D(e,"hpPromotionSlot")??String(t+1)}:null}function At(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-promotion]",resolve:r=So,visibleRatio:o=.5,dwellMs:s=1e3,root:i=document}=t,u=new Set,c=p=>{let m=Array.from(i.querySelectorAll(n)),A=m.indexOf(p);try{return r(p,A<0?m.length:A)}catch{return null}},l=re({selector:n,root:i,visibleRatio:o,dwellMs:s,onViewable(p){let m=c(p);return!m||u.has(m.promotion_id)?!1:(u.add(m.promotion_id),e.promotionViewed(m),!0)}}),f=p=>{let m=p.target;if(!m||typeof m.closest!="function")return;let A=m.closest(n),w=m.closest("a[href]");if(!A||!w||!A.contains(w)&&!w.contains(A))return;let k=c(A);k&&e.promotionClicked({...k,href:w.getAttribute("href")})};return document.addEventListener("click",f,!0),()=>{document.removeEventListener("click",f,!0),l()}}function _o(e){let t=D(e,"hpRecoRequest"),n=D(e,"hpRecoPlacement"),r=D(e,"hpRecoStrategy");if(!t||!n||!r)return null;let o=D(e,"hpRecoHoldout");return{recommendation_request_id:t,placement:n,strategy:r,recipe:D(e,"hpRecoRecipe"),algorithm_version:D(e,"hpRecoAlgorithmVersion"),experiment:D(e,"hpRecoExperiment"),variant:D(e,"hpRecoVariant"),holdout:o===null?null:o==="true",assignment_bucket:qe(e,"hpRecoBucket"),assignment_unit_kind:D(e,"hpRecoUnitKind"),candidate_set_fingerprint:D(e,"hpRecoFingerprint"),candidate_set_size:qe(e,"hpRecoCandidates"),ranked_by:D(e,"hpRecoRankedBy"),served_at:D(e,"hpRecoServedAt")}}function bo(e,t){let n=D(e,"hpRecoProduct");if(!n)return null;let r=D(e,"hpRecoPrice");return{product_id:n,sku:D(e,"hpRecoSku"),name:D(e,"hpRecoName"),brand:D(e,"hpRecoBrand"),price:r===null||Number.isNaN(Number(r))?null:Number(r),position:qe(e,"hpRecoPosition")??t+1}}function vt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-reco-request]",tileSelector:r="[data-hp-reco-product]",resolveRail:o=_o,resolveTile:s=bo,visibleRatio:i=.5,dwellMs:u=1e3,root:c=document}=t,l=new Set,f=new Map,p=new Map,m=(h,...E)=>{try{return h(...E)}catch{return null}},A=h=>typeof h.closest=="function"?h.closest(n):null,w=h=>Array.from(h.querySelectorAll(r)),k=(h,E)=>{if(p.delete(E.recommendation_request_id),l.has(E.recommendation_request_id))return;let S=w(h).map((y,O)=>m(s,y,O)).filter(y=>y?.product_id);if(S.length===0)return;l.add(E.recommendation_request_id);let g=[...f.get(E.recommendation_request_id)?.values()??[]].sort((y,O)=>y.position-O.position);e.recommendationsViewed({...E,products:S,viewable:g})},b=re({selector:`${n} ${r}`,root:c,visibleRatio:i,dwellMs:u,onViewable(h){let E=A(h);if(!E)return!0;let S=m(o,E);if(!S)return!0;let g=S.recommendation_request_id,y=m(s,h,w(E).indexOf(h));if(y?.product_id){f.has(g)||f.set(g,new Map);let O=f.get(g);O.has(y.position)||O.set(y.position,{position:y.position,product_id:y.product_id,viewable_at:new Date().toISOString()})}return!l.has(g)&&!p.has(g)&&p.set(g,setTimeout(()=>k(E,S),0)),!0}}),x=h=>{let E=h.target;if(!E||typeof E.closest!="function")return;let S=E.closest(r);if(!S)return;let g=E.closest("[data-hp-reco-interaction]"),y=E.closest("a[href]"),O=y&&(S.contains(y)||y.contains(S));if(!(g&&S.contains(g))&&!O)return;let N=A(S);if(!N)return;let U=m(o,N);if(!U)return;let G=m(s,S,w(N).indexOf(S));if(!G?.product_id)return;let q=U.recommendation_request_id;l.has(q)||(clearTimeout(p.get(q)),k(N,U)),e.productClicked({recommendation_request_id:U.recommendation_request_id,interaction:D(g??S,"hpRecoInteraction")??"navigate",products:[G]})};return document.addEventListener("click",x,!0),()=>{document.removeEventListener("click",x,!0);for(let h of p.values())clearTimeout(h);p.clear(),b()}}var _e=new Set(["home","list","product","search","basket","checkout","order_confirmation","login","register","account","info","blog","other"]),Io=new Set(["products"]),vn=e=>e==null;function Et(e,t=new WeakSet){if(e instanceof Date)return e.toJSON();if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);let n=Array.isArray(e)?e.map(r=>Et(r,t)):Object.fromEntries(Object.entries(e).filter(([,r])=>!vn(r)).map(([r,o])=>[r,Et(o,t)]));return t.delete(e),n}function Ct(e){if(!e)return e;let t=Et(e);for(let n of Io)n in e&&vn(e[n])&&(t[n]=e[n]);return t}function En(){try{let e=performance.getEntriesByType("navigation")[0];return e?["navigate","reload","back_forward","prerender"].includes(e.type)?e.type:"navigate":null}catch{return null}}var ko=new Set(["","unknown","undefined","null","none","nil","nan","anonymous","guest","0","-1"]);function F(e){if(e==null)return null;let t=String(e).trim();return ko.has(t.toLowerCase())?null:t}var Ce=e=>typeof e=="string"&&e!==""?e:null;function oe(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Cn="1.21";function j(e){if(typeof document>"u")return null;try{let t=document.cookie.split(";").map(n=>n.trim()).find(n=>n.startsWith(`${e}=`));return t&&decodeURIComponent(t.slice(e.length+1))||null}catch{return null}}var xo={gclid:"gclid",fbclid:"fbclid",ttclid:"ttclid"},Ao=/[a-z0-9._%+-]+@[a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z]{2,}/i,vo=/\d(?:[ -]?\d){12,}/,Eo=new Set(["gclid","fbclid","ttclid","msclkid"]);function On(e,t=""){if(typeof e!="string"||e==="")return!1;let n=[e];try{let o=decodeURIComponent(e.replace(/\+/g," "));o!==e&&n.push(o)}catch{}let r=!Eo.has(String(t).toLowerCase());return n.some(o=>Ao.test(o)||r&&vo.test(o))}function Ot(e){if(!e)return null;let t=new URLSearchParams(e),n={},r={utm_source:"source",utm_medium:"medium",utm_campaign:"name",utm_term:"term",utm_content:"content"};for(let[o,s]of[...Object.entries(r),...Object.entries(xo)]){let i=t.get(o);i&&!On(i,o)&&(n[s]=i)}return Object.keys(n).length?n:null}var Co=["email","e-mail","password","pass","pwd","token","auth","code","uid","customer_id","postcode","zip","phone","applyCode"],Po=["email","password","passwd","pwd","token","secret","auth","session","phone","postcode","zip","address","birth","card","cvv","iban","ssn","customerid","userid"],Oo=["tel","uid","dob"],Lo=["utm_source","utm_medium","utm_campaign","utm_term","utm_content","gclid","fbclid","ttclid","msclkid"],To=new Set(Co.map(e=>e.toLowerCase()));function No(e){let t=String(e).toLowerCase();if(To.has(t))return!0;let n=t.replace(/[-_.]/g,"");return Po.some(o=>n.includes(o))?!0:String(e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).some(o=>Oo.includes(o))}function Pt(e){return(e??[]).map(t=>{try{return new RegExp(`^${t}$`,"i")}catch{return{test:n=>n.toLowerCase()===String(t).toLowerCase()}}})}function Ln(e,t={}){if(!e)return null;try{let n=new URLSearchParams(e),r=t.queryParamAllowlist?Pt([...t.queryParamAllowlist,...Lo]):null,o=Pt(t.queryParamBlocklist),s=Pt(t.sensitiveParamAllowlist);for(let u of new Set(n.keys()))(No(u)&&!s.some(l=>l.test(u))||n.getAll(u).some(l=>On(l,u))||(r?!r.some(l=>l.test(u)):o.some(l=>l.test(u))))&&n.delete(u);let i=n.toString();return i?`?${i}`:""}catch{return""}}function Tn(e,t,n={}){if(!e)return null;try{let r=new URL(e);return t&&r.origin===t?r.origin+r.pathname+(Ln(r.search,n)??""):r.origin+r.pathname}catch{return null}}function Lt(e,t={}){if(typeof e!="string"||typeof location>"u")return null;try{let n=new URL(e,location.href);return n.protocol!=="https:"&&n.protocol!=="http:"?null:Tn(n.href,location.origin,t)}catch{return null}}function Tt(e){if(typeof e!="string")return null;let t=e.trim().toUpperCase();return/^[A-Z]{3}$/.test(t)?t:null}function Pn(e){if(typeof e!="string")return null;let t=e.trim().toUpperCase();return/^[A-Z]{2}$/.test(t)?t:null}function Nt(e){if(typeof e!="string")return null;let t=e.trim().replace(/_/g,"-");if(!/^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/.test(t))return null;try{return Intl.getCanonicalLocales(t)[0]}catch{return null}}function M(e,t){if(typeof e=="function")try{let n=e();if(n!=null)return n}catch{}return t}function Ro(e){return{...e.propertyId==null?{}:{property_id:String(e.propertyId)},channel:e.channel??null,market:e.market??null,environment:e.environment??null}}function Mo(e){let t=typeof window<"u"?window.location:null,n=t?Ln(t.search,e):null;return{url:t?t.origin+t.pathname+(n??""):e.pageUrl??null,path:t?t.pathname:e.pagePath??null,search:n??null,referrer:typeof document<"u"?Tn(document.referrer,t?.origin,e):null,title:typeof document<"u"&&document.title||null,type:e.pageType??null}}var Pe;function Do(){if(Pe!==void 0)return Pe;try{Pe=globalThis.Temporal?.Now?.timeZoneId?.()||Intl.DateTimeFormat().resolvedOptions().timeZone||null}catch{Pe=null}return Pe}function Nn(e,t={}){let n=typeof window<"u"?window.location:null,r={library:{name:e.libraryName,version:e.libraryVersion},spec:{version:Cn},source:Ro(e),session_id:M(e.getSessionId,null),identity_trust:F(M(e.getAnonymousId,null))?"device":"none",page:Mo(e),campaign:n?Ot(n.search):null,device:{user_agent:typeof navigator<"u"?navigator.userAgent:null,type:null,viewport_width:typeof window<"u"?window.innerWidth:null,viewport_height:typeof window<"u"?window.innerHeight:null},currency:Tt(M(e.getCurrency,e.currency)),locale:Nt(M(e.getLocale,e.locale)),timezone:Do(),country:Pn(e.country),ship_to_country:Pn(M(e.getShipToCountry,e.shipToCountry)),ip:null,bot:null,consent:e.getConsent?.()??null,experiments:M(e.getExperiments,null),audiences:M(e.getAudiences,null),decisions:M(e.getDecisions,null),recommendations:M(e.getRecommendations,null),extensions:M(e.getExtensions,null)};return Rn(r,t)}function Rn(e,t){if(!t)return e;let n={...e};for(let[r,o]of Object.entries(t))o&&typeof o=="object"&&!Array.isArray(o)&&e[r]&&typeof e[r]=="object"&&!Array.isArray(e[r])?n[r]=Rn(e[r],o):o!==void 0&&(n[r]=o);return n}var fe=Object.freeze({consent:"thg_hp_consent",retry:"thg_hp_retry",sessionSignals:"thg_hp_session_signals",identified:"thg_hp_identified",previousPage:"thg_hp_prev_page",decisions:"thg_hp_decisions",settings:"thg_hp_settings",held:"thg_hp_held",carried:"thg_hp_carried",recommendationContext:"thg_hp_recommendation_context",anonymousId:"thg_hp_anonymous_id",session:"thg_hp_session",preview:"thg_hp_preview",debug:"thg_hp_debug",onsite:"thg_hp_onsite",visitCampaign:"thg_hp_visit_campaign"}),Uo={retry:"cdp.retry",sessionSignals:"cdp_session_signals",identified:"cdp_identified",previousPage:"cdp_prev_page_message_id"},Rt={...fe},Mn=!1;function Ke(e){let t={...fe};for(let[n,r]of Object.entries(e??{})){if(!(n in fe))throw new Error(`storageNames: unknown kind "${n}"`);if(typeof r!="string"||!/^[\w.-]+$/.test(r))throw new Error(`storageNames.${n} must be a non-empty cookie-safe name`);t[n]=r}Rt=t}function P(e){return Rt[e]}var Vo="_",Dn=e=>e==null||e===""?Vo:String(e);function $(e,t,n){let r=`${e}:${Dn(t)}`;return n==null||n===""?r:`${r}:${n}`}function Un(e,t){return`${e}:${Dn(t)}:`}function Ge(){if(!Mn){Mn=!0;for(let e of[()=>localStorage,()=>sessionStorage]){let t;try{if(t=e(),!t)continue;for(let n of Object.keys(t))for(let[r,o]of Object.entries(Uo)){if(n!==o&&!n.startsWith(`${o}:`))continue;let s=Rt[r]+n.slice(o.length);t.getItem(s)===null&&t.setItem(s,t.getItem(n)),t.removeItem(n)}}catch{}}}}var Dt=1800*1e3,ze=()=>{try{return typeof sessionStorage>"u"?null:sessionStorage}catch{return null}},Mt=()=>{try{return typeof localStorage>"u"?null:localStorage}catch{return null}};function Vn(e,t=()=>Date.now()){return{read(){try{let n=ze()?.getItem(e),r=n?JSON.parse(n):null;return!r||t()-r.savedAt>Dt?(r&&ze()?.removeItem(e),{items:[],anonymousId:null}):{items:Array.isArray(r.items)?r.items:[],anonymousId:typeof r.anonymousId=="string"?r.anonymousId:null}}catch{return{items:[],anonymousId:null}}},write(n,r=null){try{n.length===0?ze()?.removeItem(e):ze()?.setItem(e,JSON.stringify({savedAt:t(),items:n,anonymousId:r}))}catch{}}}}var $o=400*24*60*60;function se(e,t,n,r){if(typeof document>"u")return!1;try{let o=typeof location<"u"&&location.protocol==="https:"?"; Secure":"",s=r?`; Domain=${r}`:"",i=n===null?"":`; Max-Age=${n}`;return document.cookie=`${e}=${encodeURIComponent(t)}; Path=/${i}; SameSite=Lax`+s+o,!0}catch{return!1}}function Bo({name:e,domain:t=null,legacyKey:n,read:r,mint:o,mayStore:s,carried:i=null}){let u=null;try{u=Mt()?.getItem(n)||null}catch{u=null}let c=r(e)??u??i,l=!1,f=()=>{if(!(l||c===null||!s())&&(l=se(e,c,$o,t),!(!l||u===null)))try{Mt()?.removeItem(n),u=null}catch{}};return{get(){return c??(c=o()),f(),c},peek:()=>c,persist:f,forget(){se(e,"",0,t),c=null,l=!1;try{Mt()?.removeItem(n)}catch{}u=null}}}function $n(e,{carried:t=null,mayStore:n,orOwn:r=!1}){let o=e.anonymousIdSource,s=()=>Bo({name:P("anonymousId"),domain:e.consentCookieDomain??null,legacyKey:$(P("anonymousId"),e.propertyId),read:j,mint:oe,mayStore:n,carried:t});if(o?.source==="hp_cookie"){let c=s();return e.getAnonymousId=()=>c.get(),c}if(o?.source==="site_cookie"&&o.cookie){let c=o.cookie;e.getAnonymousId=()=>j(c)}if(!r)return null;let i=e.getAnonymousId,u=s();return e.getAnonymousId=()=>F(M(i,null))??u.get(),u}var jo=200;function Bn(e,t,n=()=>Date.now()){let r=()=>$(P("carried"),e),o=!1;function s(){try{let i=JSON.parse(sessionStorage.getItem(r())??"null");return!i||!(n()-i.savedAt<=Dt)?[]:Array.isArray(i.calls)?i.calls:[]}catch{return[]}}return{take(){let i=s();try{sessionStorage.removeItem(r())}catch{}return i},save(i){try{return o||!t()?!1:(sessionStorage.setItem(r(),JSON.stringify({savedAt:n(),calls:[...s(),...i].slice(-jo)})),!0)}catch{return!1}},close(){o=!0}}}var ma=fe.consent,We=Object.freeze({visitor:"visitor",host:"host"}),Hn=()=>({basis:We.host}),Ho="hp-consent",pe=["analytics","marketing","personalisation","ad_user_data","ad_personalization"],Fn={analytics:"a",marketing:"m",personalisation:"p",ad_user_data:"aud",ad_personalization:"adp"},ne=()=>typeof window<"u",qn=()=>ne()&&typeof window.cookieStore?.addEventListener=="function",Fo=e=>e===!0?!0:e===!1?!1:null;function be(e){if(!e||typeof e!="object")return null;let t={};for(let n of pe)t[n]=Fo(e[n]);return t}function Ut(e,t){return!e||!t?e===t:pe.every(n=>e[n]===t[n])}function Vt(e){if(!e)return"";let t=[];for(let n of pe){let r=e[n];(r===!0||r===!1)&&t.push(`${Fn[n]}=${r?1:0}`)}return t.join("&")}function $t(e){return{[Ho]:Vt(be(e))}}function Oe(e){let t=be({});if(e==null)return t;let n=String(e).trim();if(n.length>=2&&n.startsWith('"')&&n.endsWith('"')&&(n=n.slice(1,-1)),n.includes("%"))try{n=decodeURIComponent(n.replace(/\+/g," "))}catch{return t}let r=Object.fromEntries(Object.entries(Fn).map(([s,i])=>[i,s])),o=new Set;for(let s of n.split("&")){let i=s.indexOf("=");if(i<=0)continue;let u=r[s.slice(0,i).trim()],c={1:!0,0:!1}[s.slice(i+1).trim()]??null;!u||c===null||o.has(u)||(t[u]===null?t[u]=c:t[u]!==c&&(t[u]=null,o.add(u)))}return t}function Bt(e,t){if(!t)return e;let n=r=>{if(!r)return r;let o={...r};for(let s of pe)s!=="analytics"&&t[s]!==!0&&(o[s]=null);return o};return{name:e.name,basis:e.basis,read:()=>n(e.read()),subscribe:r=>e.subscribe(o=>r(n(o))),get observesChanges(){return e.observesChanges}}}function jt(e,t={}){return{...e,ad_user_data:t.ad_user_data??e.marketing,ad_personalization:t.ad_personalization??e.marketing}}function Je(e,t){let n=!0;return{notify:()=>{if(n)try{let o=e();o&&t(o)}catch{}},stop:()=>n=!1}}var qo={analytics:["analytics","measure_content_performance","audience_measurement"],marketing:["marketing","targeting","advertising","select_personalized_ads","create_ads_profile"],personalisation:["personalisation","personalization","select_personalized_content","create_content_profile"]};function Ko(e,t){if(!t?.length)return null;let n=!1;for(let[r,o]of Object.entries(e)){let s=String(o?.id??r).toLowerCase();if(t.some(u=>{let c=String(u).toLowerCase();return s===c||s.startsWith(`${c}-`)})&&(n=!0,o?.enabled===!0))return!0}return n?!1:null}function Kn(e={}){let t={...qo,...e.purposes};function n(){let r=ne()?window.Didomi:void 0;if(!r?.getCurrentUserStatus||r.shouldUserStatusBeCollected?.()!==!1||r.isUserStatusPartial?.()===!0)return null;let o=r.getCurrentUserStatus()?.purposes;if(!o||typeof o!="object")return null;let s=i=>Ko(o,t[i]);return jt({analytics:s("analytics"),marketing:s("marketing"),personalisation:s("personalisation")},{ad_user_data:s("ad_user_data"),ad_personalization:s("ad_personalization")})}return{name:"didomi",read:n,observesChanges:!0,subscribe(r){if(!ne())return()=>{};let o=Je(n,r),s={event:"consent.changed",listener:o.notify};return window.didomiEventListeners=window.didomiEventListeners||[],window.didomiEventListeners.push(s),window.didomiOnReady=window.didomiOnReady||[],window.didomiOnReady.push(i=>{o.notify(),(i??window.Didomi)?.on?.("consent.changed",o.notify)}),window.Didomi?.on?.("consent.changed",o.notify),o.stop}}}function jn(e){let t={};if(!e)return t;for(let n of String(e).split("&")){let r=n.indexOf("=");if(r<=0)continue;let o=n.slice(r+1).replace(/\+/g," ");try{o=decodeURIComponent(o)}catch{}t[n.slice(0,r)]=o}return t}function Gn(e={}){let t={analytics:"C0002",personalisation:"C0003",marketing:"C0004",...e.groups},n=e.impliedConsent===!0;function r(){let i=jn(j("OptanonConsent"));if(i.groups){let l={};for(let f of i.groups.split(",")){let[p,m]=f.split(":");p?.trim()&&(l[p.trim()]=m==="1"?!0:m==="0"?!1:null)}return f=>l[f]??!1}let u=ne()?window.OnetrustActiveGroups:void 0;if(typeof u!="string"||!u.length)return null;let c=new Set(u.split(",").map(l=>l.trim()).filter(Boolean));return l=>c.has(l)}function o(){if(j("OptanonAlertBoxClosed"))return!0;try{if(ne()&&window.OneTrust?.IsAlertBoxClosed?.()===!0)return!0}catch{}return n&&ne()&&(!!window.OneTrust||typeof window.OnetrustActiveGroups=="string")}function s(){if(!o())return null;let i=r();if(!i)return null;let u=p=>t[p]?i(t[p]):null,c=jt({analytics:u("analytics"),marketing:u("marketing"),personalisation:u("personalisation")},{ad_user_data:u("ad_user_data"),ad_personalization:u("ad_personalization")}),l=jn(j("OptanonConsent"));return(typeof navigator<"u"&&navigator.globalPrivacyControl===!0||l.isGpcEnabled==="1")&&(c.marketing=!1,c.ad_user_data=!1,c.ad_personalization=!1),c}return{name:"onetrust",read:s,observesChanges:!0,subscribe(i){if(!ne())return()=>{};let u=Je(s,i),c=!1,l=()=>{c||!window.OneTrust?.OnConsentChanged||(c=!0,window.OneTrust.OnConsentChanged(u.notify))};window.addEventListener("OneTrustGroupsUpdated",u.notify);let f=window.OptanonWrapper;return window.OptanonWrapper=function(...m){try{typeof f=="function"&&f.apply(this,m)}finally{l(),u.notify()}},l(),()=>{u.stop(),window.removeEventListener("OneTrustGroupsUpdated",u.notify)}}}}function Go(e){let t=String(e).split(",").map(n=>n.trim()).filter(Boolean);return t.length?new Set(t):null}function zn(e){let{name:t,categories:n,parse:r=Go,refusedValue:o,source:s="native",changeEvent:i="thg_hp_consent_change"}=e??{};if(typeof t!="string"||t==="")throw new Error("cookieConsent: `name` (the cookie your banner writes) is required");if(!n||typeof n.analytics!="string")throw new Error("cookieConsent: `categories.analytics` (the category id that grants analytics) is required");function u(){let c=j(t);if(c==null)return null;let l;if(o!==void 0&&c===o)l=new Set;else try{l=r(c)}catch{l=null}if(!(l instanceof Set))return null;let f=p=>n[p]?l.has(n[p]):null;return jt({analytics:f("analytics"),marketing:f("marketing"),personalisation:f("personalisation")},{ad_user_data:f("ad_user_data"),ad_personalization:f("ad_personalization")})}return{name:s,read:u,get observesChanges(){return qn()},subscribe(c){if(!ne())return()=>{};let l=Je(u,c),f=p=>{[...p.changed??[],...p.deleted??[]].some(A=>A?.name===t)&&l.notify()};return window.addEventListener(i,l.notify),window.cookieStore?.addEventListener?.("change",f),()=>{l.stop(),window.removeEventListener(i,l.notify),window.cookieStore?.removeEventListener?.("change",f)}}}}function Wn(e={}){let t=e.name??P("consent"),n=()=>{let r=j(t);if(r==null)return null;let o=Oe(r);return o.analytics==null?null:o};return{name:"forwarded",read:n,get observesChanges(){return qn()},subscribe(r){if(!ne())return()=>{};let o=Je(n,r),s=i=>{[...i.changed??[],...i.deleted??[]].some(c=>c?.name===t)&&o.notify()};return window.cookieStore?.addEventListener?.("change",s),()=>{o.stop(),window.cookieStore?.removeEventListener?.("change",s)}}}}function Jn(e){let t=be(e);return{name:"static",basis:We.host,read:()=>t?{...t}:null,observesChanges:!0,subscribe:()=>()=>{}}}function Yn(e){if(e==null)return null;let t=String(e).split("/").map(n=>n.trim()).filter(Boolean).join("/");return t===""?null:t}function zo(e){let t=e.item_category;if(t!=null&&String(t).includes("/"))return Yn(t);let n=[t,e.item_category2,e.item_category3,e.item_category4,e.item_category5].map(r=>r==null?"":String(r).trim()).filter(Boolean);return Yn(n.join("/"))}var Wo=e=>{if(e==null||typeof e=="object")return null;let t=String(e).trim();return t===""?null:t};function Jo(...e){for(let t of e){if(typeof t=="number"&&Number.isFinite(t))return String(t);if(typeof t=="string"&&t.trim()!=="")return t.trim()}return null}var Ye=e=>Jo(e.item_group_id,e.item_id);function Yo(e,t=Ye){if(!e)return null;let n=u=>u==null||u===""||Number.isNaN(Number(u))?null:Number(u),r=u=>{let c=n(u);return c==null?null:Math.round(c*1e6)/1e6},o=u=>{let c=r(u);return c!=null&&c>=0?c:null},s=u=>{let c=n(u);return Number.isInteger(c)&&c>=0?c:null},i=Wo;return{product_id:i(t(e)),sku:i(e.item_id),name:i(e.item_name),brand:i(e.item_brand),variant:i(e.item_variant)??i(e.variant),category:zo(e),price:r(e.price),discount:o(e.discount),quantity:s(e.quantity),coupon:i(e.coupon),position:s(e.index)!=null?s(e.index)+1:null,url:i(e.url)??i(e.item_url)??null,image_url:i(e.image_url)??i(e.image_link)??null,displayed_sku:i(e.displayed_sku)??i(e.displayed_variant_sku)}}function Ht(e,t=Ye){return(e??[]).map(n=>Yo(n,t)).filter(n=>n?.product_id)}var Xo=1e3,Zo={shipping:2,payment:3},Qo=new Set(["password","google","apple","facebook","magic_link","sso","passkey","other"]),H=e=>{if(e==null||typeof e=="object")return null;let t=String(e).trim();return t===""?null:t},es=e=>{if(e==null||e===""||typeof e=="object")return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null},Xe=e=>e!==null&&typeof e=="object";function ts(e){return Array.isArray(e.items)?e.items.filter(Xe):null}function Xn(e){let t=H(e)?.toLowerCase().replace(/[\s-]+/g,"_");return t?Qo.has(t)?t:t==="email"||t==="email_password"?"password":"other":null}function ns({ecommerce:e,items:t}){let n=s=>({promotion_id:H(s.promotion_id),name:H(s.promotion_name),creative:H(s.creative_name),position:H(s.creative_slot)}),r=new Set,o=[];for(let s of[n(e),...t.map(n)])!s.promotion_id||r.has(s.promotion_id)||(r.add(s.promotion_id),o.push(s));return o}var Zn=({ecommerce:e,items:t})=>H(e.item_list_id)??H(e.item_list_name)??H(t[0]?.item_list_id)??H(t[0]?.item_list_name),me=(e,t)=>t.products?.length?{event:e,properties:t}:null,rs=new Set(["product","products","item","items"]);function os({ecommerce:e}){let t=H(e.item_id),n=H(e.content_type)?.toLowerCase();return!t||n&&!rs.has(n)?null:{event:"Product Shared",properties:{share_via:H(e.method),products:[{product_id:t}]}}}function ss(e){let t=o=>me("Product List Viewed",{list_id:Zn(o),products:o.products}),n=o=>{let s=H(o.ecommerce.search_term);return s?{event:"Products Searched",properties:{query:s,...o.products.length?{products:o.products}:{}}}:null},r=o=>s=>s.promotions.map(i=>({event:o,properties:i}));return{view_item:o=>me("Product Viewed",{currency:o.currency,value:o.value,products:o.products.slice(0,1)}),view_item_list:t,view_search_results:o=>n(o)??t(o),search:n,select_item:o=>me("Product Clicked",{list_id:Zn(o),products:o.products.slice(0,1)}),add_to_cart:o=>me("Product Added",{cart_id:H(o.ecommerce.cart_id),products:o.products}),remove_from_cart:o=>me("Product Removed",{cart_id:H(o.ecommerce.cart_id),products:o.products}),view_cart:o=>({event:"Cart Viewed",properties:{cart_id:H(o.ecommerce.cart_id),value:o.value,currency:o.currency,coupon:H(o.ecommerce.coupon),...o.itemsListed?{products:o.products}:{}}}),begin_checkout:o=>me("Checkout Started",{value:o.value,currency:o.currency,coupon:H(o.ecommerce.coupon),products:o.products}),add_shipping_info:o=>({event:"Checkout Step Completed",properties:{step:e.shipping,step_name:"shipping",shipping_method:H(o.ecommerce.shipping_tier)}}),add_payment_info:o=>({event:"Payment Info Entered",properties:{step:e.payment,step_name:"payment",payment_method:H(o.ecommerce.payment_type)}}),view_promotion:r("Promotion Viewed"),select_promotion:r("Promotion Clicked"),add_to_wishlist:o=>me("Product Added to Wishlist",{products:o.products}),share:os,login:o=>({event:"Signed In",properties:{method:Xn(o.ecommerce.method)}}),sign_up:o=>({event:"Signed Up",properties:{method:Xn(o.ecommerce.method)}})}}var is=e=>e.event;function as(e,t){if(!Xe(e))return null;if(typeof e.length=="number"&&e[0]==="event"&&typeof e[1]=="string"){let r=Xe(e[2])?e[2]:{};return{name:e[1],entry:r,ecommerce:r}}let n=H(t(e));return n?{name:n,entry:e,ecommerce:Xe(e.ecommerce)?e.ecommerce:e}:null}function Ft(e){return Array.isArray(e)?`[${e.map(Ft).join(",")}]`:e&&typeof e=="object"?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Ft(e[t])}`).join(",")}}`:JSON.stringify(e??null)}function Qn(e,t={}){if(!e||typeof e.track!="function")throw new Error("connectDataLayer: analytics must have a track(event, properties, options) method");let n=t.dataLayer??(typeof window<"u"?window.dataLayer=window.dataLayer||[]:null);if(!Array.isArray(n))return()=>{};let r=ss({...Zo,...t.steps}),o=t.map??{},s=t.eventName??is,i=t.productId??Ye,u=new Set(["purchase","refund",...t.ignore??[]]),c=t.dedupeMs??Xo,l=new Map,f=!0;function p(S,g,y){if(c<=0)return!1;let O=`${S}|${y??""}|${Ft(g)}`,N=Date.now();for(let[U,G]of l)N-G>c&&l.delete(U);return l.has(O)?!0:(l.set(O,N),!1)}let m=null,A=new Set;function w(S,g){if(S!=="Product Viewed")return!1;let y=typeof location>"u"?"":location.pathname;y!==m&&(m=y,A.clear());let O=g.products?.[0]?.product_id;return O?A.has(O)?!0:(A.add(O),!1):!1}function k({event:S,properties:g={}},y){if(!S||p(S,g,y)||w(S,g))return;let O=y?{context:{currency:y}}:void 0;if(S==="Signed Out"&&typeof e.signedOut=="function"){e.signedOut(O);return}e.track(S,g,O)}function b(S){let g=t.transform?t.transform(S):S,y=as(g,s);if(!y||u.has(y.name))return;let O=Object.hasOwn(o,y.name),N=O?o[y.name]:r[y.name];if(typeof N!="function")return;let U=ts(y.ecommerce),G=U??[],q={...y,items:G,itemsListed:U!==null,products:Ht(G,i),currency:Tt(y.ecommerce.currency),value:es(y.ecommerce.value)};q.promotions=ns(q);let ee=O?N(g,{...q,toProducts:J=>Ht(J,i)}):N(q);for(let J of[ee].flat())J&&k(J,q.currency)}function x(S){if(f)try{b(S)}catch(g){try{t.onError?.(g,S)}catch{}}}for(let S of n.slice())x(S);let h=n.push;function E(...S){let g=h.apply(this,S);for(let y of S)x(y);return g}return n.push=E,()=>{f=!1,n.push===E&&(n.push=h)}}var cs="hp_debug",us=256;function ls(){try{return new URLSearchParams(location.search).get(cs)}catch{return null}}function er(e,t){if(typeof location>"u")return!1;try{let n=ls();if(n!==null){let o=n.trim();o===""||o.length>us?sessionStorage.removeItem(t):sessionStorage.setItem(t,o)}let r=sessionStorage.getItem(t);return!!(e&&r&&_n(r)===e)}catch{return!1}}var Ie=class extends Error{},ds={inHoldout:()=>!0,personalisationGroup:()=>"excluded",servingHeaders:()=>({}),recommendationContext:()=>({}),flush:()=>Promise.resolve(),reset:()=>{}};function qt(e,t){let n=ds[e]??(()=>null),r=o=>(console.warn(`[hp] ${String(e)} failed; nothing was sent`,o),n());return function(...s){try{let i=t.apply(this,s);return typeof i?.then=="function"?Promise.resolve(i).catch(r):i}catch(i){if(i instanceof Ie)throw i;return r(i)}}}function tr(e){for(let t of Reflect.ownKeys(e)){let{value:n}=Object.getOwnPropertyDescriptor(e,t)??{};typeof n=="function"&&(e[t]=qt(t,n))}return e}var Le=Symbol("hp.identityOption");var fs=4320*60*60,ps=100,ms=1e3,hs=2e3,nr=500,Ze=e=>(e?.unref?.(),e);function gs(e,t){if(t?.analytics===!0&&e.analytics===!1)return"withdrawn";let n=pe.map(r=>e[r]).filter(r=>r!==null);return n.length&&n.every(Boolean)?"accept_all":n.length&&n.every(r=>!r)?"reject_all":"custom"}function ys(e,t,n=P("consent")){if(!(typeof document>"u"))try{let r=typeof location<"u"&&location.protocol==="https:"?"; Secure":"",o=t?`; Domain=${t}`:"";document.cookie=`${n}=${Vt(e)}; Path=/; Max-Age=${fs}; SameSite=Lax`+o+r}catch{}}function ws(e){let t=Oe(j(e));return pe.some(n=>t[n]!==null)?t:null}function rr(e){let{adapter:t,timeoutMs:n=5e3,cookieDomain:r=null,cookieName:o=P("consent"),release:s,announce:i}=e,u=e.discard??(()=>{}),c="pending",l=null,f=null,p=null,m=null,A=!1,w=null,k=[],b=R=>{c=R,e.onStatus?.(R)};function x(){try{return be(t.read())}catch{return null}}function h(){f&&clearInterval(f),p&&clearTimeout(p),f=null,p=null}let E=()=>typeof window<"u"&&typeof document<"u",S=()=>{try{return typeof t.subscribe=="function"&&t.observesChanges===!0}catch{return!1}};function g(){m&&clearInterval(m),m=null}function y(){A||m||l===null||S()||E()&&document.visibilityState==="hidden"||(m=Ze(setInterval(()=>q(x()),hs)))}let O=()=>c==="pending"||c==="unknown",N=e.store??null,U=()=>{let R=k.splice(0);N?.write([]);for(let K of R)s(K)},G=()=>{let R=k.splice(0);N?.write([]);for(let K of R)u(K)};function q(R){let K=be(R);if(!K||K.analytics===null)return;let Z=l===null,Y=Z?ws(o):l;if(!Z&&Ut(Y,K))return;h(),l=K,y(),ys(K,r,o);let ve=!Ut(Y,K);if(K.analytics){b("granted"),U(),ve&&i({action:gs(K,Y),state:K,previous:Y,withdrawal:!1});return}G(),Y?.analytics===!0&&i({action:"withdrawn",state:K,previous:Y,withdrawal:!0}),b("denied")}function ee(){p=null,c==="pending"&&(b("unknown"),f&&clearInterval(f),f=Ze(setInterval(()=>q(x()),ms)))}function J(R){if(O()){if(N){N.write(k);return}R?.type!=="visibilitychange"&&!R?.persisted&&G()}}let Se=R=>{document.visibilityState==="hidden"?(g(),J(R)):y()},je=R=>{g(),J(R)},ce=R=>{R?.persisted&&l!==null&&q(x()),y()};return{get status(){return c},get state(){return l?{...l}:null},stamp(){return l?{...l,source:t.name??null,basis:t.basis??We.visitor}:null},admits(){return c==="granted"},hold(R){return!O()||k.length>=nr?(u(R),!1):(k.push(R),!0)},onHidden:J,start(){A=!1;try{w=t.subscribe?.(R=>q(R))??null}catch(R){e.debug&&console.warn("[hp] consent adapter subscribe failed",R)}E()&&(window.addEventListener("pagehide",je),window.addEventListener("pageshow",ce),document.addEventListener("visibilitychange",Se)),N&&k.length===0&&k.push(...N.read().slice(-nr)),q(x()),!l&&(f=Ze(setInterval(()=>q(x()),ps)),p=Ze(setTimeout(ee,n)))},stop(){A=!0,h(),g(),typeof w=="function"&&w(),E()&&(window.removeEventListener("pagehide",je),window.removeEventListener("pageshow",ce),document.removeEventListener("visibilitychange",Se))}}}var Ss=["recommendation","search_rank","banner","offer","layout","copy","price","other"],Qe=e=>typeof e=="string"&&e!=="";function or(e){return(Array.isArray(e?.decisions)?e.decisions:[]).filter(t=>Qe(t?.slot)&&Qe(t.decision_id)&&t.holdout!==!0).map(({decision_id:t,slot:n,arm:r,kind:o})=>({decision_id:t,slot:n,...Qe(r)&&{arm:r},...Ss.includes(o)&&{kind:o}}))}function sr({key:e,mayStore:t}){let n,r=()=>{if(n)return n;try{let s=JSON.parse(sessionStorage.getItem(e));n=Array.isArray(s)?s.filter(i=>Qe(i?.slot)):[]}catch{n=[]}return n},o=()=>{try{n?.length&&t()&&sessionStorage.setItem(e,JSON.stringify(n))}catch{}};return{persist:o,current:()=>r().length?n.map(s=>({...s})):null,remember(s){if(!s.length)return;let i=new Set(s.map(u=>u.slot));n=[...r().filter(u=>!i.has(u.slot)),...s],o()},forget(){n=[];try{sessionStorage.removeItem(e)}catch{}}}}function _s(e){let t=2166136261,n=String(e);for(let r=0;r<n.length;r+=1)t^=n.charCodeAt(r),t=t+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24))>>>0;return t^=t>>>16,t=Math.imul(t,2246822507)>>>0,t^=t>>>13,t=Math.imul(t,3266489909)>>>0,t^=t>>>16,t>>>0}function et(e,t,n=1e4){return _s(`${t}\0${e}`)%n}function Kt(e){let t=o=>Math.min(Math.max(Number(o)||0,0),1),n=t(e.share),r=1-n;return{holdout_share:n,personalised_share:e.ramp==null?r:Math.min(t(e.ramp),r)}}function Gt(e,t){if(!e||typeof e.salt!="string")return{holdout:!1,bucket:null,group:"personalised"};let n=e.ramp!=null;if(t==null||t==="")return{holdout:!1,bucket:null,group:n?"excluded":"personalised"};let{holdout_share:r,personalised_share:o}=Kt(e),s=et(t,e.salt),i=c=>Math.round(c*1e4),u=r>0&&s<i(r)?"holdout":!n||s<i(r+o)?"personalised":"excluded";return{holdout:u==="holdout",bucket:s,group:u}}function ir(e,t){return typeof e!="string"||e===""||t==null||t===""?null:et(t,`bandit-vs-default:${e}`)<1e4/2?"default":"bandit"}var bs="hp_preview",Is=256;function ar(e,t=null){if(typeof location>"u")return j(e);let n=null;try{n=new URLSearchParams(location.search).get(bs)}catch{n=null}if(n===null)return j(e);let r=n.trim();return r===""||r.length>Is?(se(e,"",0,t),null):(se(e,r,null,t),r)}var ks=40,xs=128,As=5,vs=60,ur=e=>typeof e=="string"&&e!==""&&e.length<=xs&&!e.includes(","),cr=e=>Array.isArray(e)?e.filter(ur).slice(0,ks):[],Es=e=>Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.replaceAll(","," ").trim()).filter(t=>t!=="").slice(0,As):[],Cs=e=>Object.entries(e&&typeof e=="object"?e:{}).filter(([t,n])=>ur(t)&&Number.isFinite(n)&&n>=1).sort(([,t],[,n])=>n-t).slice(0,vs).map(([t,n])=>`${t}:${Math.floor(n)}`);function zt(e){let t={},n={viewed:cr(e?.recentProducts),basket:cr(e?.basketProducts),q:Es(e?.recentSearches),impressed:Cs(e?.impressions)};for(let[r,o]of Object.entries(n))o.length>0&&(t[r]=o.join(","));return t}var Ps=1800*1e3;function lr(e,t=Date.now()){try{localStorage.setItem(P("recommendationContext"),JSON.stringify({context:e,until:t+Ps}))}catch{}}function dr(){try{localStorage.removeItem(P("recommendationContext"))}catch{}}var Os="hp_sample",fr=1e4;function pr(e,t){return!(typeof t=="number"&&t<1)||e==null||e===""?!0:et(e,Os,fr)<Math.round(t*fr)}function ke(e){return e.trim().toLowerCase().replace(/\s*\/\s*/g,"/").replace(/^\/+|\/+$/g,"")}var Ls=2,Ts=12;function Te(e,t=Ls){return e.split("/").slice(0,t).join("/")}function Wt(e,t){if(typeof t!="string"||!t.trim())return null;let n=Te(ke(t));return n?(e.unshift(n),e.length=Math.min(e.length,Ts),n):null}var he=()=>P("sessionSignals"),xe=null,Jt=()=>xe??he();function mr(){try{return xe?localStorage:sessionStorage}catch{return}}function hr(e,t){let n=t==null?null:String(t),r=e?$(he(),n,e):null;if(r===xe)return;let o=xe===null?Ns():null;if(xe=r,!!xe)try{let s=Jt(),i=Un(he(),n);for(let u of Object.keys(localStorage))u.startsWith(i)&&u!==s&&localStorage.removeItem(u);o&&!localStorage.getItem(s)&&(localStorage.setItem(s,JSON.stringify(o)),sessionStorage.removeItem(he()))}catch{}}function Ns(){try{let e=sessionStorage.getItem(he());if(!e)return null;let t=JSON.parse(e);return t&&(t.productViews>0||t.listViews>0||t.basketValue!=null||t.recentProducts?.length||t.recentBrowse?.length||t.campaign)?t:null}catch{return null}}function tt(){return{productViews:0,listViews:0,cartAdds:0,searches:0,recentProducts:[],recentCategories:[],recentBrowse:[],basketProducts:[],basketValue:null,recentSearches:[],impressions:{},browsingCategory:null,recentBrowseCategories:[],browsingListing:null,listViewsByCategory:{},campaign:null,startedAt:0}}function Yt(){let e=mr();if(!e)return tt();try{let t=e.getItem(Jt());return t?{...tt(),...JSON.parse(t)}:{...tt(),startedAt:Date.now()}}catch{return{...tt(),startedAt:Date.now()}}}function Ne(e){let t=mr();if(t)try{t.setItem(Jt(),JSON.stringify(e))}catch{}}function Re(){return Yt()}function gr(){for(let e of[()=>sessionStorage,()=>localStorage])try{let t=e();t.removeItem(he());for(let n of Object.keys(t))n.startsWith(`${he()}:`)&&t.removeItem(n)}catch{}}var Xt=20,yr=200,Rs=new Set(["Product Viewed","Product Clicked","Product Added","Product Added to Wishlist"]),Ms=new Set(["Product Viewed","Product Added"]),wr=50;function nt(e,t){let n=Wt(e.recentBrowse,t);return n?(e.recentBrowseCategories=[e.browsingListing?.category??null,...e.recentBrowseCategories].slice(0,e.recentBrowse.length),n):null}function Ds(e,t){let n=e.listViewsByCategory;n[t]=(n[t]??0)+1;let r=Object.keys(n);if(r.length>wr){let o={};for(let s of r.sort((i,u)=>n[u]-n[i]).slice(0,wr))o[s]=n[s];e.listViewsByCategory=o}}var Sr=e=>[...new Set(e.map(t=>t?.product_id).filter(t=>typeof t=="string"&&t))].slice(0,Xt);function _r(e,t,n){let r=Yt();r.startedAt||(r.startedAt=Date.now());let o=n!==void 0&&JSON.stringify(n??null)!==JSON.stringify(r.campaign??null);o&&(r.campaign=n??null);let s=Array.isArray(t?.products)?t.products:[];switch(e){case"Product Viewed":r.productViews+=1,nt(r,r.browsingCategory);break;case"Product List Viewed":{let c=t?.list_id,l=t?.category;if(!(typeof c=="string"&&c.includes("/")&&!c.startsWith("cdp-")))break;let p=typeof l=="string"&&Te(ke(l))||null,m=p?Te(ke(c)):"";if(!m){r.browsingCategory=null,r.browsingListing=null;break}r.browsingListing={key:m,category:p},nt(r,m),r.browsingCategory=m,Ds(r,p),r.listViews+=1}break;case"Product List Filtered":{let c=t?.change,l=typeof t?.list_id=="string"?t.list_id:"",f=typeof c?.value=="string"?c.value:"",p=r.browsingListing;if(f&&c?.action!=="removed"&&p&&Te(ke(l))===p.key){let m=nt(r,`${l}/${f}`);m&&(r.browsingCategory=m)}break}case"Product Added":{r.cartAdds+=1,nt(r,r.browsingCategory);for(let c of s){let l=c.product_id;typeof l!="string"||!l||(r.basketProducts=[l,...r.basketProducts.filter(f=>f!==l)].slice(0,Xt))}break}case"Product Removed":{for(let c of s){let l=c.product_id;typeof l=="string"&&l&&(r.basketProducts=r.basketProducts.filter(f=>f!==l))}break}case"Products Searched":{r.searches+=1;let c=t?.query;if(typeof c=="string"&&c.trim()){let l=c.trim().toLowerCase().slice(0,64);r.recentSearches=[l,...r.recentSearches.filter(f=>f!==l)].slice(0,5)}break}case"Product Clicked":case"Product Added to Wishlist":break;case"Cart Viewed":return s.length>0&&(r.basketProducts=Sr(s)),Ne(r),r;case"Cart Updated":{Array.isArray(t?.products)&&(r.basketProducts=Sr(s));let c=t?.value;return r.basketValue=typeof c=="number"&&Number.isFinite(c)&&c>=0?c:null,Ne(r),r}default:return o&&Ne(r),r}let i=Rs.has(e);if(i)for(let c of s)typeof c.product_id=="string"&&c.product_id&&delete r.impressions[c.product_id];else{for(let l of s){let f=l.product_id;typeof f!="string"||!f||(r.impressions[f]=(r.impressions[f]??0)+1)}let c=Object.keys(r.impressions);if(c.length>yr){let l={};for(let f of c.sort((p,m)=>r.impressions[m]-r.impressions[p]).slice(0,yr))l[f]=r.impressions[f];r.impressions=l}}let u=new Set;for(let c of s){let l=c.product_id;if(i&&typeof l=="string"&&l&&(r.recentProducts=[l,...r.recentProducts.filter(f=>f!==l)].slice(0,Xt)),Ms.has(e)&&typeof c.category=="string"&&c.category){let f=ke(c.category);f&&!u.has(f)&&(u.add(f),Wt(r.recentCategories,f))}}return Ne(r),r}var rt=1800*1e3;function br({name:e,domain:t=null,mayStore:n,now:r=()=>Date.now(),mint:o=oe}){let s=null,i=0,u=()=>{s!==null&&n()&&se(e,s,rt/1e3,t)};return{get(){let c=r(),l=j(e);return l?s=l:(s===null||c-i>=rt)&&(s=o()),i=c,u(),s},persist:u,forget(){se(e,"",0,t),s=null}}}var W=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Ir=e=>Array.isArray(e)&&e.every(t=>typeof t=="string"),kr=Object.freeze({enabled:!1}),Qt=Object.freeze({enabled:!0,queryParamAllowlist:Object.freeze([])});function xr(e,t){let n=e?.track;return W(n)?(Object.hasOwn(n,t)?n[t]:n.__default)?.enabled!==!1:!0}function Us(e,t){return`${ie(e)}/v1/projects/${encodeURIComponent(t)}/settings`}var Vs="https://hp.thgingenuity.com";function ie(e){return e==null||e===""?Vs:vr(e)}function Ar(e,t){return e!=null&&e!==""?ie(e):t?.startsWith("https://")?t:ie(void 0)}function vr(e){if(typeof e!="string")return null;let t=e.trim().replace(/\/+$/,"");return/^https?:\/\/[^/\s]+$/i.test(t)?t:/^[a-z0-9.-]+(:\d+)?$/i.test(t)?`https://${t}`:null}function $s(e){if(!W(e))return null;let t=Object.fromEntries(Object.entries(e).filter(([,n])=>typeof n=="boolean"));return Object.keys(t).length?t:null}var Zt=e=>typeof e=="number"&&e>=0&&e<=1,Bs=/^[0-9a-f]{64}$/;function js(e){return W(e)?{enabled:e.enabled===!0,tokenSha256:typeof e.tokenSha256=="string"&&Bs.test(e.tokenSha256)?e.tokenSha256:null}:{enabled:!1,tokenSha256:null}}function Hs(e){if(!W(e))return null;let t=Object.fromEntries(Object.entries(e).filter(([,n])=>W(n)&&Zt(n.share)&&(n.ramp==null||Zt(n.ramp))&&typeof n.salt=="string"&&n.salt!=="").map(([n,r])=>[n,{share:r.share,ramp:r.ramp??null,salt:r.salt,...Ir(r.readoutSlots)&&r.readoutSlots.length>0&&{readoutSlots:r.readoutSlots}}]));return Object.keys(t).length?t:null}var Fs=/^[A-Za-z0-9!#$%&'*+.^_`|~-]{1,128}$/;function qs(e){return W(e)?e.source==="hp_cookie"?{source:"hp_cookie"}:e.source!=="site_cookie"?null:e.cookie==null?{source:"site_cookie",cookie:null}:typeof e.cookie=="string"&&Fs.test(e.cookie)?{source:"site_cookie",cookie:e.cookie}:null:null}function Ks(e){let t=Array.isArray(e?.forms)?e.forms.filter(W):[];return t.length===0?null:{forms:t,capture:W(e.capture)?e.capture:null,...Number.isInteger(e.overlay_gap_minutes)?{overlay_gap_minutes:e.overlay_gap_minutes}:{}}}function Gs(e){let t=W(e)?e.hp:null;return W(t)&&typeof t.enabled=="boolean"}function en(e){let t=W(e)?e.hp:null;if(!W(t)||t.enabled!==!0)return kr;let n=Ks(t.onsite);return{enabled:!0,propertyId:typeof t.propertyId=="string"&&t.propertyId!==""?t.propertyId:null,environment:typeof t.environment=="string"?t.environment:null,consentPurposes:$s(t.consent?.purposes),queryParamAllowlist:Ir(t.queryParamAllowlist)?t.queryParamAllowlist:null,anonymousId:qs(t.anonymousId),apiHost:vr(t.apiHost),holdouts:Hs(t.holdouts),sampleRate:Zt(t.sampleRate)?t.sampleRate:1,debug:js(t.debug),...n&&{onsite:n},plan:W(e.plan)&&W(e.plan.track)?{track:e.plan.track}:null}}var zs=3e3;async function Er(e,t,n=globalThis.fetch,r=zs){try{let o=await n(Us(e,t),{credentials:"omit",headers:{accept:"application/json"},signal:AbortSignal.timeout?.(r)});if(o.status>=400&&o.status<500&&o.status!==408&&o.status!==429)return kr;if(!o.ok)return null;let s=await o.json();return Gs(s)?en(s):null}catch{return null}}var ot=e=>$(P("settings"),e);function Cr(e){try{let t=localStorage.getItem(ot(e));if(!t)return null;let n=JSON.parse(t);return n?.enabled===!0?n:null}catch{return null}}function Pr(e,t){try{t?.enabled===!0?localStorage.setItem(ot(e),JSON.stringify(t)):localStorage.removeItem(ot(e))}catch{}}function tn(e){try{localStorage.removeItem(ot(e))}catch{}}var Ws={flushAt:20,flushIntervalMs:1e4,maxQueue:500,maxRetryAgeMs:1440*60*1e3,maxRetries:5,maxPersistedBatches:20,maxPersistedBytes:1024*1024,storageKey:fe.retry,beaconSafeBytes:56*1024,maxBatchEvents:100,maxBatchBytes:500*1024},st=()=>Date.now(),Or=3e4,cn=55*1024;function Js(e,t=st()){if(typeof e!="string")return 0;let n=e.trim();if(/^\d+$/.test(n))return Number(n)*1e3;if(n==="")return 0;let r=Date.parse(n);return Number.isNaN(r)?0:Math.max(0,r-t)}var ae=e=>typeof TextEncoder<"u"?new TextEncoder().encode(e).length:Buffer.byteLength(e),nn=()=>typeof window<"u"&&typeof document<"u";function Ys(){try{return!nn()||!window.localStorage?null:(window.localStorage.getItem("thg_hp_probe"),window.localStorage)}catch{return null}}var I,rn,on,it,sn,an,Lr,Me,De,Ue,Tr,at,Nr,ct,ut=class{constructor(t){wn(this,I);this.o={...Ws,...t},this.queue=[],this.timer=null,this.storage=Ys(),this.inflight=null,this.sending=new Set,this.epoch=0,this.sinceRefusal=new Set,this.wakers=new Set,this.replayAllowed=!this.o.deferReplay,this.draining=null,this.failing=!1,this.answered=!1,nn()&&(window.addEventListener("pagehide",()=>this.flush({beacon:!0})),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&this.flush()}),L(this,I,ct).call(this))}markFailing(){this.answered||(this.failing=!0)}replayPersisted(){return this.replayAllowed=!0,L(this,I,ct).call(this)}clearPersisted(){if(this.replayAllowed=!1,!!this.storage)try{let t=L(this,I,Ue).call(this).filter(n=>this.sinceRefusal.has(n?.id));t.length?this.storage.setItem(this.o.storageKey,JSON.stringify(t)):this.storage.removeItem(this.o.storageKey)}catch{}}discardQueued(){this.queue=[],this.epoch+=1,this.sinceRefusal.clear(),L(this,I,on).call(this);for(let t of this.wakers)t()}enqueue(t){let n;try{n=JSON.parse(JSON.stringify(t))}catch(r){this.o.onError?.(`event ${t?.messageId??""} cannot be serialised; dropped`,r);return}this.queue.push(n),this.queue.length>this.o.maxQueue&&this.queue.splice(0,this.queue.length-this.o.maxQueue),this.queue.length>=this.o.flushAt?this.flush():L(this,I,rn).call(this)}flush(t={}){if(L(this,I,on).call(this),this.queue.length===0)return Promise.resolve();if(t.beacon&&nn()&&typeof navigator<"u"&&navigator.sendBeacon)return L(this,I,Lr).call(this),Promise.resolve();if(this.inflight)return this.inflight;let n=L(this,I,an).call(this,this.queue,this.o.maxBatchEvents,this.o.maxBatchBytes).map(o=>{let s=L(this,I,at).call(this,o);return s&&(this.sending.add(s),this.sinceRefusal.add(s)),{batch:o,id:s}});this.queue=[];let r=this.epoch;return this.inflight=(async()=>{for(let{batch:o,id:s}of n){if(r!==this.epoch){L(this,I,De).call(this,s);continue}await L(this,I,Me).call(this,o,0,s,r)}})().finally(()=>{this.inflight=null,this.queue.length>=this.o.flushAt?this.flush():this.queue.length&&L(this,I,rn).call(this)}),this.inflight}};I=new WeakSet,rn=function(){this.timer||(this.timer=setTimeout(()=>this.flush(),this.o.flushIntervalMs),this.timer?.unref?.())},on=function(){this.timer&&(clearTimeout(this.timer),this.timer=null)},it=function(t){return JSON.stringify({batch:t,writeKey:this.o.writeKey,sentAt:new Date().toISOString()})},sn=function(){return`${this.o.apiHost.replace(/\/$/,"")}/v1/batch`},an=function(t,n,r){let o=ae(L(this,I,it).call(this,[])),s=[],i=[],u=o;for(let c of t){let l=ae(JSON.stringify(c))+1;i.length&&(i.length>=n||u+l>r)&&(s.push(i),i=[],u=o),i.push(c),u+=l}return i.length&&s.push(i),s},Lr=function(){let t=this.queue;this.queue=[];let n=L(this,I,sn).call(this);for(let r of L(this,I,an).call(this,t,this.o.maxBatchEvents,this.o.beaconSafeBytes)){let o=L(this,I,it).call(this,r);if(ae(o)<=this.o.beaconSafeBytes){let s=!1;try{s=navigator.sendBeacon(n,new Blob([o],{type:"text/plain"}))}catch{s=!1}if(s){let i=this.failing?L(this,I,at).call(this,r):null;i&&this.sending.add(i);continue}}L(this,I,Me).call(this,r,0,L(this,I,at).call(this,r))}},Me=async function(t,n,r=null,o=this.epoch){r&&this.sending.add(r);let s=L(this,I,it).call(this,t),i=0;try{let u=await fetch(L(this,I,sn).call(this),{method:"POST",headers:{"Content-Type":"text/plain"},body:s,keepalive:ae(s)<=this.o.beaconSafeBytes});if(u.ok)return this.failing=!1,this.answered=!0,L(this,I,De).call(this,r),L(this,I,ct).call(this),!0;let c=u.status===408||u.status===429||u.status>=500;if(c&&(i=Js(u.headers?.get?.("retry-after"))),!c)return L(this,I,De).call(this,r),this.o.onError?.(`CDP ingest rejected batch (${u.status}); dropping ${t.length} events`),!0;throw new Error(`retryable ${u.status}`)}catch(u){if(this.failing=!0,n>=this.o.maxRetries){r&&this.sending.delete(r);let l=r?"kept for the next page":"dropped";return this.o.onError?.(`CDP ingest unreachable after ${n} attempts; ${l}: ${t.length} events`,u),!1}let c=Math.max(Math.min(1e3*2**n,Or)*(.5+Math.random()),Math.min(i,Or));return o===this.epoch&&await new Promise(l=>{let f=()=>{clearTimeout(p),this.wakers.delete(f),l()},p=setTimeout(f,c);this.wakers.add(f)}),o!==this.epoch?(L(this,I,De).call(this,r),!1):L(this,I,Me).call(this,t,n+1,r,o)}},De=function(t){t&&(this.sending.delete(t),this.sinceRefusal.delete(t),L(this,I,Nr).call(this,t))},Ue=function(){let t=JSON.parse(this.storage.getItem(this.o.storageKey)||"[]");return Array.isArray(t)?t:[]},Tr=function(t,n){let r=i=>ae(JSON.stringify(i))+1,o=[...t,n].slice(-this.o.maxPersistedBatches),s=o.reduce((i,u)=>i+r(u),2);for(;o.length>1&&s>this.o.maxPersistedBytes;)s-=r(o[0]),o=o.slice(1);for(;o.length;)try{return this.storage.setItem(this.o.storageKey,JSON.stringify(o)),!0}catch{o=o.slice(1)}return!1},at=function(t){if(!this.storage||this.o.mayPersist&&!this.o.mayPersist())return null;try{let n={at:st(),id:`${st()}-${Math.random().toString(36).slice(2)}`,batch:t};return ae(JSON.stringify(n))+3>this.o.maxPersistedBytes?null:L(this,I,Tr).call(this,L(this,I,Ue).call(this),n)?n.id:null}catch{return null}},Nr=function(t){if(!(!t||!this.storage))try{let n=L(this,I,Ue).call(this).filter(r=>r.id!==t);n.length?this.storage.setItem(this.o.storageKey,JSON.stringify(n)):this.storage.removeItem(this.o.storageKey)}catch{}},ct=function(){if(!this.storage||!this.replayAllowed)return this.draining??Promise.resolve();if(this.draining)return this.draining;let t;try{let r=L(this,I,Ue).call(this);t=r.filter(o=>Array.isArray(o?.batch)&&st()-o.at<this.o.maxRetryAgeMs).map(o=>o.id?o:{...o,id:`${o.at}-${Math.random().toString(36).slice(2)}`}),(t.length!==r.length||t.some((o,s)=>o!==r[s]))&&(t.length?this.storage.setItem(this.o.storageKey,JSON.stringify(t)):this.storage.removeItem(this.o.storageKey))}catch{return Promise.resolve()}let n=t.filter(r=>!this.sending.has(r.id));return n.length?(this.draining=(async()=>{for(let r of n)if(!this.replayAllowed||!await L(this,I,Me).call(this,r.batch,0,r.id))return})().finally(()=>{this.draining=null}),this.draining):Promise.resolve()};var Rr="3.28.1",Mr="@thg-agentic/hyper-personalisation-web";var Xs=100,Zs=["source","medium","campaign","content","term"];function Ur(e){if(!e||typeof e!="object")return null;let t={};for(let n of Zs){let r=e[n==="campaign"?"name":n];typeof r=="string"&&r&&(t[n]=r.slice(0,Xs))}return Object.keys(t).length?t:null}var Vr=e=>$(P("visitCampaign"),e==null?null:String(e)),Ae=new Map;function $r(e){if(Ae.has(e))return Ae.get(e);try{let t=JSON.parse(localStorage.getItem(e));return t&&typeof t=="object"?t:null}catch{return null}}function Dr(e,t){try{t?localStorage.setItem(e,JSON.stringify(t)):localStorage.removeItem(e),Ae.delete(e)}catch{t?Ae.set(e,t):Ae.delete(e)}}function Br(e,t,n){return typeof e?.tags=="object"&&e.tags!==null&&Number.isFinite(e.at)&&n-e.at<rt&&!(t&&e.sid&&e.sid!==t)?e:null}function lt(e,{sessionId:t=null,now:n=Date.now()}={}){return Br($r(Vr(e)),t,n)?.tags??null}function jr(e,t,{sessionId:n=null,keepSession:r=!1,now:o=Date.now()}={}){let s=Vr(e),i=$r(s),u=Br(i,n,o),c=u?.tags??t??null;return c?Dr(s,{tags:c,at:o,sid:(r?n:null)??u?.sid??null}):i&&Dr(s,null),c}function un(){Ae.clear();try{let e=`${P("visitCampaign")}:`;for(let t of Object.keys(localStorage))t.startsWith(e)&&localStorage.removeItem(t)}catch{}}var Qs=new Set(["audiences","decisions","recommendations"]);var ei=Symbol.for("@thg-agentic/hyper-personalisation-web.replay"),ti=Symbol.for("@thg-agentic/hyper-personalisation-web.unreachable"),ni=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite-access");function ri(e){let t={...e??{}},n=Array.isArray(t.products)?t.products:null;if(t.item_count==null&&n){let r=n.map(o=>o?.quantity);r.every(Number.isInteger)&&(t.item_count=r.reduce((o,s)=>o+s,0))}return t}var oi="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";function si(e){if(/^[0-9a-fA-F]{64}$/.test(e))return e.toLowerCase();if(!/^[A-Za-z0-9+/_-]{43}=?$/.test(e))return null;try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/").padEnd(44,"="));return t.length!==32?null:Array.from(t,n=>n.charCodeAt(0).toString(16).padStart(2,"0")).join("")}catch{return null}}function ft(e){if(typeof e!="string")return null;let t=si(e.trim());return t===oi?null:t}var Hr=Object.freeze({email_sha256:"sha256",phone_sha256:"sha256",accepts_marketing:"boolean",gender:"string",created_at:"date-time"}),ii=/^\d{4}-\d{2}-\d{2}T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d+)?(Z|[+-]([01]\d|2[0-3]):[0-5]\d)$/i;function ai(e){if(typeof e!="string"||!ii.test(e))return!1;let[t,n,r]=e.slice(0,10).split("-").map(Number),o=new Date(Date.UTC(t,n-1,r));return o.getUTCMonth()===n-1&&o.getUTCDate()===r&&!Number.isNaN(Date.parse(e))}function ci(e,t){return t===null?null:e==="sha256"?ft(t)??void 0:e==="date-time"?t instanceof Date?Number.isNaN(t.getTime())?void 0:t.toISOString():ai(t)?t:void 0:typeof t===e?t:void 0}function ui(e,t){let n={},r=[];for(let[o,s]of Object.entries(e)){let i=Object.hasOwn(Hr,o)?Hr[o]:null,u=i?ci(i,s):void 0;u===void 0?r.push(o):n[o]=u}return t&&r.length&&console.warn(`[hp] identify: not sent, not spec traits: ${r.join(", ")}`),n}var Fr=!1,qr=!1;function li(){qr||(qr=!0,console.warn("[hp] no consent adapter: events are sent under the host's lawful basis (basis 'host'). Pass `consent` to send only once the visitor allows analytics."))}function di(e){!e||Fr||(Fr=!0,console.warn("[hp] mintAnonymousId is ignored since 3.6: where device ids come from is set per source in the console (the site\u2019s own cookie, or Hyper-Personalisation\u2019s)."))}function fi(e){try{return ae(JSON.stringify(e))}catch{return 0}}function dt(e){return e&&typeof e.context=="object"&&e.context!==null?e.context:e}function pi(e,t){if(e==null||String(e)===t)return;let n=[["localStorage","retry",(r,o)=>[...Array.isArray(r)?r:[],...Array.isArray(o)?o:[]]],["sessionStorage","held",(r,o)=>o?{...o,items:[...r.items??[],...o.items??[]]}:r]];for(let[r,o,s]of n)try{let i=globalThis[r],u=$(P(o),e),c=i?.getItem(u);if(!c)continue;let l=$(P(o),t),f=i.getItem(l);i.setItem(l,JSON.stringify(s(JSON.parse(c),f?JSON.parse(f):null))),i.removeItem(u)}catch{}}function Kr(e){let t=ie(e?.apiHost);if(!t)throw new Error("createAnalytics: apiHost, when given, must be a host or an http(s) origin");if(e?.propertyId!==null&&!e?.propertyId)throw new Error("createAnalytics: propertyId is required (null: the ingest stamps the key\u2019s)");let n={libraryName:Mr,libraryVersion:Rr,writeKey:"web",queryParamBlocklist:[],debug:!1,validate:null,consentTimeoutMs:5e3,...e,apiHost:t};Ke(n.storageNames),Ge();let r=!!n.consent;r||li();let o=null;n.getConsent=()=>o?o.stamp():Hn();let s=()=>!r||o?.status==="granted";pi(n.propertyId,n.writeKey);let i=r&&n.holdAcrossPages?Vn($(P("held"),n.writeKey)):null,u=i?.read()??{items:[],anonymousId:null};n.mintAnonymousId!==void 0&&di(n.debug);let c=$n(n,{carried:u.anonymousId,mayStore:s,orOwn:!0}),l=br({name:P("session"),domain:n.consentCookieDomain??null,mayStore:s}),f=n.getSessionId;n.getSessionId=()=>F(M(f,null))??l.get();let p=ar(P("preview"),n.consentCookieDomain??null),m=()=>F(M(f,null))??j(P("session")),A=Ur(typeof location>"u"?null:Ot(location.search)),w=(a=null)=>{p||jr(n.propertyId,a,{sessionId:m(),keepSession:s()})},k=(a,d)=>n.debug&&console.warn("[hp]",a,d??""),b=n.transport??new ut({apiHost:n.apiHost,writeKey:n.writeKey,storageKey:$(P("retry"),n.writeKey),mayPersist:r?()=>o?.status==="granted":void 0,deferReplay:r,onError:k}),x=$(P("previousPage"),n.propertyId),h=null,E=()=>{if(h)return h;try{return sessionStorage.getItem(x)||null}catch{return null}};typeof window<"u"&&window.addEventListener("pageshow",a=>{a.persisted&&(h=null)});let S=a=>{if(h=a||null,!(r&&o.status!=="granted"))try{sessionStorage.setItem(x,a)}catch{}},g=sr({key:$(P("decisions"),n.propertyId),mayStore:s});n.getDecisions??(n.getDecisions=g.current);let y=F(M(n.getUserId,null)),O=null,N=null,U=y?Ce(n.identityToken):null,G=null,q=null,ee=null,J=new Set,Se=new Set;function je(a){if(a.type==="page"&&(ee=null),a.type==="track"&&a.event==="Product Viewed"){let _=a.properties?.products?.[0]?.product_id;ee=typeof _=="string"&&_?_:ee}if(a.type!=="track"||a.event!=="Cart Updated")return;let d=a.properties?.value;q=typeof d=="number"&&Number.isFinite(d)&&d>=0?d:null;for(let _ of J)try{_()}catch(C){console.warn("[hp] a basket listener failed",C)}}function ce(a,d,_=!1){je(a),w();try{return R(a,d,_)}catch(C){if(C instanceof Ie)throw C;return console.warn("[hp] the event was not sent",C),null}}function R(a,d,_){let C=G;G=null;let V=a.type==="track"?a.event:a.type;if(!_&&!xr(n.plan,V))return null;let T={messageId:C?.messageId??oe(),timestamp:C?.timestamp??new Date().toISOString(),anonymousId:F(M(n.getAnonymousId,null)),userId:y??null,...a,context:Nn(n,dt(d))};if(T.properties&&(T.properties=Ct(T.properties)),typeof T.properties?.href=="string"&&(T.properties.href=Lt(T.properties.href,n)),!_&&!pr(T.anonymousId,n.sampleRate))return n.debug&&console.debug("[hp] not sent: outside the sample",T),null;if(n.beforeSend){let te;try{te=n.beforeSend(T)}catch(uo){return console.warn("[hp] beforeSend failed; the event was not sent",uo),null}if(!te)return null;let{type:z,event:gn,messageId:ao,timestamp:co}=T;T={...te,type:z,messageId:ao,timestamp:co,...gn?{event:gn}:{}}}if(n.validate){let te=n.validate(T,{producer:"web"});if(!te.valid){let z=`[hp] invalid ${T.event??T.type}:
1
+ (()=>{var Sn=e=>{throw TypeError(e)};var lo=(e,t,n)=>t.has(e)||Sn("Cannot "+n);var _n=(e,t,n)=>t.has(e)?Sn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);var L=(e,t,n)=>(lo(e,t,"access private method"),n);var Ee=[];for(let e=2;Ee.length<64;e++)Ee.every(t=>e%t!==0)&&Ee.push(e);var bn=e=>(e-Math.floor(e))*2**32>>>0,fo=Ee.slice(0,8).map(e=>bn(Math.sqrt(e))),po=Ee.map(e=>bn(Math.cbrt(e))),Q=(e,t)=>e>>>t|e<<32-t;function In(e){let t=new TextEncoder().encode(String(e)),n=new Uint32Array((t.length+8>>6)*16+16);t.forEach((s,i)=>{n[i>>2]|=s<<24-i%4*8}),n[t.length>>2]|=128<<24-t.length%4*8,n[n.length-2]=Math.floor(t.length/2**29),n[n.length-1]=t.length*8;let r=Uint32Array.from(fo),o=new Uint32Array(64);for(let s=0;s<n.length;s+=16){for(let w=0;w<64;w++){if(w<16){o[w]=n[s+w];continue}let k=o[w-15],b=o[w-2],x=Q(k,7)^Q(k,18)^k>>>3,h=Q(b,17)^Q(b,19)^b>>>10;o[w]=o[w-16]+x+o[w-7]+h}let[i,u,c,l,f,p,m,A]=r;for(let w=0;w<64;w++){let k=Q(f,6)^Q(f,11)^Q(f,25),b=A+k+(f&p^~f&m)+po[w]+o[w]|0,h=(Q(i,2)^Q(i,13)^Q(i,22))+(i&u^i&c^u&c)|0;[A,m,p,f,l,c,u,i]=[m,p,f,l+b|0,c,u,i,b+h|0]}[i,u,c,l,f,p,m,A].forEach((w,k)=>{r[k]+=w})}return Array.from(r,s=>s.toString(16).padStart(8,"0")).join("")}var It=(e,t)=>e<<t|e>>>32-t;function kn(e){let t=new Uint32Array((e.length+8>>6)*16+16);e.forEach((s,i)=>{t[i>>2]|=s<<24-i%4*8}),t[e.length>>2]|=128<<24-e.length%4*8,t[t.length-2]=Math.floor(e.length/2**29),t[t.length-1]=e.length*8;let n=Uint32Array.of(1732584193,4023233417,2562383102,271733878,3285377520),r=new Uint32Array(80);for(let s=0;s<t.length;s+=16){for(let p=0;p<80;p++)r[p]=p<16?t[s+p]:It(r[p-3]^r[p-8]^r[p-14]^r[p-16],1);let[i,u,c,l,f]=n;for(let p=0;p<80;p++){let m,A;p<20?(m=u&c|~u&l,A=1518500249):p<40?(m=u^c^l,A=1859775393):p<60?(m=u&c|u&l|c&l,A=2400959708):(m=u^c^l,A=3395469782);let w=It(i,5)+m+f+A+r[p]|0;[f,l,c,u,i]=[l,c,It(u,30),i,w]}[i,u,c,l,f].forEach((p,m)=>{n[m]+=p})}let o=new Uint8Array(20);return n.forEach((s,i)=>{o[i*4]=s>>>24,o[i*4+1]=s>>>16,o[i*4+2]=s>>>8,o[i*4+3]=s}),o}var mo="e28e8ada-5b76-4209-bba9-79b823a0af75",ho=e=>Array.from(e,t=>t.toString(16).padStart(2,"0")).join("");function xn(e,t){let n=Uint8Array.from(e.replace(/-/g,"").match(/../g),u=>Number.parseInt(u,16)),r=new TextEncoder().encode(t),o=new Uint8Array(16+r.length);o.set(n),o.set(r,16);let s=kn(o).slice(0,16);s[6]=s[6]&15|80,s[8]=s[8]&63|128;let i=ho(s);return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}var ue=(e,t)=>typeof e=="string"&&e!==""&&e.length<=t?e:null;function Fe(e,t){return ue(e,64)??ue(t,256)}function An({sessionId:e,slot:t,arm:n}={}){let r=ue(e,256);return!r||!ue(t,256)||!ue(n,256)?null:xn(mo,`${r}:${t}:${n}`)}var go="4b1f2c7e-9a3d-4e58-b6c1-2d7f0a9e8c53";function vn({sessionId:e,surface:t}={}){let n=ue(e,256);return!n||!ue(t,64)?null:xn(go,`${n}:${t}`)}var yo=Array.from({length:11},(e,t)=>t/10);function wo(e,t){if(!e.isIntersecting)return!1;let{intersectionRect:n,boundingClientRect:r,rootBounds:o}=e;if(!n||!r)return!0;let s=n.width*n.height,i=r.width*r.height,u=o?Math.min(i,o.width*o.height):i;return u>0&&s/u>=t}function re(e){let{selector:t,onViewable:n,visibleRatio:r=.5,dwellMs:o=1e3,root:s=document}=e,i=new Map,u=new WeakSet,c=new Set,l=h=>{i.has(h)||i.set(h,setTimeout(()=>{i.delete(h),n(h)&&(p?.unobserve(h),c.delete(h))},o))},f=h=>{clearTimeout(i.get(h)),i.delete(h)},p=typeof IntersectionObserver>"u"?null:new IntersectionObserver(h=>{for(let E of h){let S=E.target;if(!wo(E,r)){c.delete(S),f(S);continue}c.add(S),m()&&l(S)}},{threshold:yo}),m=()=>typeof document>"u"||document.visibilityState!=="hidden",A=()=>{if(m())for(let h of c)l(h);else for(let h of c)f(h)};document.addEventListener("visibilitychange",A);let w=()=>{for(let h of s.querySelectorAll(t))u.has(h)||(u.add(h),p?.observe(h))},k=typeof MutationObserver>"u"?null:new MutationObserver(()=>w()),b=()=>{w(),k?.observe(s===document?document.body:s,{childList:!0,subtree:!0})},x=s===document&&!document.body;return x?document.addEventListener("DOMContentLoaded",b,{once:!0}):b(),()=>{x&&document.removeEventListener("DOMContentLoaded",b),document.removeEventListener("visibilitychange",A),p?.disconnect(),k?.disconnect();for(let h of i.values())clearTimeout(h);i.clear(),c.clear()}}function kt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-exposure]",visibleRatio:r=.5,dwellMs:o=1e3,root:s=document}=t;return re({selector:n,root:s,visibleRatio:r,dwellMs:o,onViewable(i){let u=i.dataset?.hpExposure?.trim();return u&&e.surfaceViewed({surface:u}),!0}})}var En=e=>{try{return new URL(e,document.baseURI).toString()}catch{return e}};function xt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-list]",tileSelector:r="[data-hp-product]",visibleRatio:o=.5,dwellMs:s=1e3,root:i=document}=t,u=new Set,c=w=>w.closest?.(n)??null,l=w=>{let k=w.dataset.hpList?.trim();return k?{list_id:k,category:w.dataset.hpListCategory?.trim()||null}:null},f=w=>Array.from(w.querySelectorAll(r)).filter(k=>c(k)===w),p=(w,k)=>{try{let b=JSON.parse(w.dataset.hpProduct??"");return!b||typeof b!="object"||!b.product_id?null:{...b,position:b.position??k+1,...b.url?{url:En(b.url)}:{},...b.image_url?{image_url:En(b.image_url)}:{}}}catch{return null}},m=re({selector:`${n} ${r}`,root:i,visibleRatio:o,dwellMs:s,onViewable(w){let k=c(w);if(!k||k.dataset.hpListView==="manual")return!0;let b=l(k);if(!b||u.has(b.list_id))return!0;let x=new Set,h=f(k).map(p).filter(E=>!E||x.has(E.product_id)?!1:(x.add(E.product_id),!0));return h.length===0||(u.add(b.list_id),e.productListViewed({...b,products:h})),!0}}),A=w=>{let b=w.target?.closest?.("a[href]")?.closest(r);if(!b)return;let x=c(b),h=p(b,x?f(x).indexOf(b):0);h&&e.productClicked({list_id:x?l(x)?.list_id??null:null,products:[h]})};return document.addEventListener("click",A,!0),()=>{document.removeEventListener("click",A,!0),m()}}function D(e,...t){let n=e.dataset??{};for(let r of t){let o=n[r];if(typeof o=="string"&&o.trim()!=="")return o.trim()}return null}function qe(e,...t){let n=D(e,...t);if(n===null)return null;let r=Number(n);return Number.isFinite(r)?Math.trunc(r):null}function So(e,t){let n=D(e,"hpPromotion");return n?{promotion_id:n,name:D(e,"hpPromotionName"),creative:D(e,"hpPromotionCreative"),position:D(e,"hpPromotionSlot")??String(t+1)}:null}function At(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-promotion]",resolve:r=So,visibleRatio:o=.5,dwellMs:s=1e3,root:i=document}=t,u=new Set,c=p=>{let m=Array.from(i.querySelectorAll(n)),A=m.indexOf(p);try{return r(p,A<0?m.length:A)}catch{return null}},l=re({selector:n,root:i,visibleRatio:o,dwellMs:s,onViewable(p){let m=c(p);return!m||u.has(m.promotion_id)?!1:(u.add(m.promotion_id),e.promotionViewed(m),!0)}}),f=p=>{let m=p.target;if(!m||typeof m.closest!="function")return;let A=m.closest(n),w=m.closest("a[href]");if(!A||!w||!A.contains(w)&&!w.contains(A))return;let k=c(A);k&&e.promotionClicked({...k,href:w.getAttribute("href")})};return document.addEventListener("click",f,!0),()=>{document.removeEventListener("click",f,!0),l()}}function _o(e){let t=D(e,"hpRecoRequest"),n=D(e,"hpRecoPlacement"),r=D(e,"hpRecoStrategy");if(!t||!n||!r)return null;let o=D(e,"hpRecoHoldout");return{recommendation_request_id:t,placement:n,strategy:r,recipe:D(e,"hpRecoRecipe"),algorithm_version:D(e,"hpRecoAlgorithmVersion"),experiment:D(e,"hpRecoExperiment"),variant:D(e,"hpRecoVariant"),holdout:o===null?null:o==="true",assignment_bucket:qe(e,"hpRecoBucket"),assignment_unit_kind:D(e,"hpRecoUnitKind"),candidate_set_fingerprint:D(e,"hpRecoFingerprint"),candidate_set_size:qe(e,"hpRecoCandidates"),ranked_by:D(e,"hpRecoRankedBy"),served_at:D(e,"hpRecoServedAt")}}function bo(e,t){let n=D(e,"hpRecoProduct");if(!n)return null;let r=D(e,"hpRecoPrice");return{product_id:n,sku:D(e,"hpRecoSku"),name:D(e,"hpRecoName"),brand:D(e,"hpRecoBrand"),price:r===null||Number.isNaN(Number(r))?null:Number(r),position:qe(e,"hpRecoPosition")??t+1}}function vt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-reco-request]",tileSelector:r="[data-hp-reco-product]",resolveRail:o=_o,resolveTile:s=bo,visibleRatio:i=.5,dwellMs:u=1e3,root:c=document}=t,l=new Set,f=new Map,p=new Map,m=(h,...E)=>{try{return h(...E)}catch{return null}},A=h=>typeof h.closest=="function"?h.closest(n):null,w=h=>Array.from(h.querySelectorAll(r)),k=(h,E)=>{if(p.delete(E.recommendation_request_id),l.has(E.recommendation_request_id))return;let S=w(h).map((y,O)=>m(s,y,O)).filter(y=>y?.product_id);if(S.length===0)return;l.add(E.recommendation_request_id);let g=[...f.get(E.recommendation_request_id)?.values()??[]].sort((y,O)=>y.position-O.position);e.recommendationsViewed({...E,products:S,viewable:g})},b=re({selector:`${n} ${r}`,root:c,visibleRatio:i,dwellMs:u,onViewable(h){let E=A(h);if(!E)return!0;let S=m(o,E);if(!S)return!0;let g=S.recommendation_request_id,y=m(s,h,w(E).indexOf(h));if(y?.product_id){f.has(g)||f.set(g,new Map);let O=f.get(g);O.has(y.position)||O.set(y.position,{position:y.position,product_id:y.product_id,viewable_at:new Date().toISOString()})}return!l.has(g)&&!p.has(g)&&p.set(g,setTimeout(()=>k(E,S),0)),!0}}),x=h=>{let E=h.target;if(!E||typeof E.closest!="function")return;let S=E.closest(r);if(!S)return;let g=E.closest("[data-hp-reco-interaction]"),y=E.closest("a[href]"),O=y&&(S.contains(y)||y.contains(S));if(!(g&&S.contains(g))&&!O)return;let N=A(S);if(!N)return;let U=m(o,N);if(!U)return;let G=m(s,S,w(N).indexOf(S));if(!G?.product_id)return;let q=U.recommendation_request_id;l.has(q)||(clearTimeout(p.get(q)),k(N,U)),e.productClicked({recommendation_request_id:U.recommendation_request_id,interaction:D(g??S,"hpRecoInteraction")??"navigate",products:[G]})};return document.addEventListener("click",x,!0),()=>{document.removeEventListener("click",x,!0);for(let h of p.values())clearTimeout(h);p.clear(),b()}}var _e=new Set(["home","list","product","search","basket","checkout","order_confirmation","login","register","account","info","blog","other"]),Io=new Set(["products"]),Cn=e=>e==null;function Et(e,t=new WeakSet){if(e instanceof Date)return e.toJSON();if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);let n=Array.isArray(e)?e.map(r=>Et(r,t)):Object.fromEntries(Object.entries(e).filter(([,r])=>!Cn(r)).map(([r,o])=>[r,Et(o,t)]));return t.delete(e),n}function Ct(e){if(!e)return e;let t=Et(e);for(let n of Io)n in e&&Cn(e[n])&&(t[n]=e[n]);return t}function Pn(){try{let e=performance.getEntriesByType("navigation")[0];return e?["navigate","reload","back_forward","prerender"].includes(e.type)?e.type:"navigate":null}catch{return null}}var ko=new Set(["","unknown","undefined","null","none","nil","nan","anonymous","guest","0","-1"]);function F(e){if(e==null)return null;let t=String(e).trim();return ko.has(t.toLowerCase())?null:t}var Ce=e=>typeof e=="string"&&e!==""?e:null;function oe(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var On="1.22";function j(e){if(typeof document>"u")return null;try{let t=document.cookie.split(";").map(n=>n.trim()).find(n=>n.startsWith(`${e}=`));return t&&decodeURIComponent(t.slice(e.length+1))||null}catch{return null}}var xo={gclid:"gclid",fbclid:"fbclid",ttclid:"ttclid"},Ao=/[a-z0-9._%+-]+@[a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z]{2,}/i,vo=/\d(?:[ -]?\d){12,}/,Eo=new Set(["gclid","fbclid","ttclid","msclkid"]);function Tn(e,t=""){if(typeof e!="string"||e==="")return!1;let n=[e];try{let o=decodeURIComponent(e.replace(/\+/g," "));o!==e&&n.push(o)}catch{}let r=!Eo.has(String(t).toLowerCase());return n.some(o=>Ao.test(o)||r&&vo.test(o))}function Ot(e){if(!e)return null;let t=new URLSearchParams(e),n={},r={utm_source:"source",utm_medium:"medium",utm_campaign:"name",utm_term:"term",utm_content:"content"};for(let[o,s]of[...Object.entries(r),...Object.entries(xo)]){let i=t.get(o);i&&!Tn(i,o)&&(n[s]=i)}return Object.keys(n).length?n:null}var Co=["email","e-mail","password","pass","pwd","token","auth","code","uid","customer_id","postcode","zip","phone","applyCode"],Po=["email","password","passwd","pwd","token","secret","auth","session","phone","postcode","zip","address","birth","card","cvv","iban","ssn","customerid","userid"],Oo=["tel","uid","dob"],Lo=["utm_source","utm_medium","utm_campaign","utm_term","utm_content","gclid","fbclid","ttclid","msclkid"],To=new Set(Co.map(e=>e.toLowerCase()));function No(e){let t=String(e).toLowerCase();if(To.has(t))return!0;let n=t.replace(/[-_.]/g,"");return Po.some(o=>n.includes(o))?!0:String(e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).some(o=>Oo.includes(o))}function Pt(e){return(e??[]).map(t=>{try{return new RegExp(`^${t}$`,"i")}catch{return{test:n=>n.toLowerCase()===String(t).toLowerCase()}}})}function Nn(e,t={}){if(!e)return null;try{let n=new URLSearchParams(e),r=t.queryParamAllowlist?Pt([...t.queryParamAllowlist,...Lo]):null,o=Pt(t.queryParamBlocklist),s=Pt(t.sensitiveParamAllowlist);for(let u of new Set(n.keys()))(No(u)&&!s.some(l=>l.test(u))||n.getAll(u).some(l=>Tn(l,u))||(r?!r.some(l=>l.test(u)):o.some(l=>l.test(u))))&&n.delete(u);let i=n.toString();return i?`?${i}`:""}catch{return""}}function Rn(e,t,n={}){if(!e)return null;try{let r=new URL(e);return t&&r.origin===t?r.origin+r.pathname+(Nn(r.search,n)??""):r.origin+r.pathname}catch{return null}}function Lt(e,t={}){if(typeof e!="string"||typeof location>"u")return null;try{let n=new URL(e,location.href);return n.protocol!=="https:"&&n.protocol!=="http:"?null:Rn(n.href,location.origin,t)}catch{return null}}function Tt(e){if(typeof e!="string")return null;let t=e.trim().toUpperCase();return/^[A-Z]{3}$/.test(t)?t:null}function Ln(e){if(typeof e!="string")return null;let t=e.trim().toUpperCase();return/^[A-Z]{2}$/.test(t)?t:null}function Nt(e){if(typeof e!="string")return null;let t=e.trim().replace(/_/g,"-");if(!/^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/.test(t))return null;try{return Intl.getCanonicalLocales(t)[0]}catch{return null}}function M(e,t){if(typeof e=="function")try{let n=e();if(n!=null)return n}catch{}return t}function Ro(e){return{...e.propertyId==null?{}:{property_id:String(e.propertyId)},channel:e.channel??null,market:e.market??null,environment:e.environment??null}}function Mo(e){let t=typeof window<"u"?window.location:null,n=t?Nn(t.search,e):null;return{url:t?t.origin+t.pathname+(n??""):e.pageUrl??null,path:t?t.pathname:e.pagePath??null,search:n??null,referrer:typeof document<"u"?Rn(document.referrer,t?.origin,e):null,title:typeof document<"u"&&document.title||null,type:e.pageType??null}}var Pe;function Do(){if(Pe!==void 0)return Pe;try{Pe=globalThis.Temporal?.Now?.timeZoneId?.()||Intl.DateTimeFormat().resolvedOptions().timeZone||null}catch{Pe=null}return Pe}function Mn(e,t={}){let n=typeof window<"u"?window.location:null,r={library:{name:e.libraryName,version:e.libraryVersion},spec:{version:On},source:Ro(e),session_id:M(e.getSessionId,null),identity_trust:F(M(e.getAnonymousId,null))?"device":"none",page:Mo(e),campaign:n?Ot(n.search):null,device:{user_agent:typeof navigator<"u"?navigator.userAgent:null,type:null,viewport_width:typeof window<"u"?window.innerWidth:null,viewport_height:typeof window<"u"?window.innerHeight:null},currency:Tt(M(e.getCurrency,e.currency)),locale:Nt(M(e.getLocale,e.locale)),timezone:Do(),country:Ln(e.country),ship_to_country:Ln(M(e.getShipToCountry,e.shipToCountry)),ip:null,bot:null,consent:e.getConsent?.()??null,experiments:M(e.getExperiments,null),audiences:M(e.getAudiences,null),decisions:M(e.getDecisions,null),recommendations:M(e.getRecommendations,null),extensions:M(e.getExtensions,null)};return Dn(r,t)}function Dn(e,t){if(!t)return e;let n={...e};for(let[r,o]of Object.entries(t))o&&typeof o=="object"&&!Array.isArray(o)&&e[r]&&typeof e[r]=="object"&&!Array.isArray(e[r])?n[r]=Dn(e[r],o):o!==void 0&&(n[r]=o);return n}var fe=Object.freeze({consent:"thg_hp_consent",retry:"thg_hp_retry",sessionSignals:"thg_hp_session_signals",identified:"thg_hp_identified",previousPage:"thg_hp_prev_page",decisions:"thg_hp_decisions",settings:"thg_hp_settings",held:"thg_hp_held",carried:"thg_hp_carried",recommendationContext:"thg_hp_recommendation_context",anonymousId:"thg_hp_anonymous_id",session:"thg_hp_session",preview:"thg_hp_preview",debug:"thg_hp_debug",onsite:"thg_hp_onsite",visitCampaign:"thg_hp_visit_campaign"}),Uo={retry:"cdp.retry",sessionSignals:"cdp_session_signals",identified:"cdp_identified",previousPage:"cdp_prev_page_message_id"},Rt={...fe},Un=!1;function Ke(e){let t={...fe};for(let[n,r]of Object.entries(e??{})){if(!(n in fe))throw new Error(`storageNames: unknown kind "${n}"`);if(typeof r!="string"||!/^[\w.-]+$/.test(r))throw new Error(`storageNames.${n} must be a non-empty cookie-safe name`);t[n]=r}Rt=t}function P(e){return Rt[e]}var Vo="_",Vn=e=>e==null||e===""?Vo:String(e);function $(e,t,n){let r=`${e}:${Vn(t)}`;return n==null||n===""?r:`${r}:${n}`}function $n(e,t){return`${e}:${Vn(t)}:`}function Ge(){if(!Un){Un=!0;for(let e of[()=>localStorage,()=>sessionStorage]){let t;try{if(t=e(),!t)continue;for(let n of Object.keys(t))for(let[r,o]of Object.entries(Uo)){if(n!==o&&!n.startsWith(`${o}:`))continue;let s=Rt[r]+n.slice(o.length);t.getItem(s)===null&&t.setItem(s,t.getItem(n)),t.removeItem(n)}}catch{}}}}var Dt=1800*1e3,ze=()=>{try{return typeof sessionStorage>"u"?null:sessionStorage}catch{return null}},Mt=()=>{try{return typeof localStorage>"u"?null:localStorage}catch{return null}};function Bn(e,t=()=>Date.now()){return{read(){try{let n=ze()?.getItem(e),r=n?JSON.parse(n):null;return!r||t()-r.savedAt>Dt?(r&&ze()?.removeItem(e),{items:[],anonymousId:null}):{items:Array.isArray(r.items)?r.items:[],anonymousId:typeof r.anonymousId=="string"?r.anonymousId:null}}catch{return{items:[],anonymousId:null}}},write(n,r=null){try{n.length===0?ze()?.removeItem(e):ze()?.setItem(e,JSON.stringify({savedAt:t(),items:n,anonymousId:r}))}catch{}}}}var $o=400*24*60*60;function se(e,t,n,r){if(typeof document>"u")return!1;try{let o=typeof location<"u"&&location.protocol==="https:"?"; Secure":"",s=r?`; Domain=${r}`:"",i=n===null?"":`; Max-Age=${n}`;return document.cookie=`${e}=${encodeURIComponent(t)}; Path=/${i}; SameSite=Lax`+s+o,!0}catch{return!1}}function Bo({name:e,domain:t=null,legacyKey:n,read:r,mint:o,mayStore:s,carried:i=null}){let u=null;try{u=Mt()?.getItem(n)||null}catch{u=null}let c=r(e)??u??i,l=!1,f=()=>{if(!(l||c===null||!s())&&(l=se(e,c,$o,t),!(!l||u===null)))try{Mt()?.removeItem(n),u=null}catch{}};return{get(){return c??(c=o()),f(),c},peek:()=>c,persist:f,forget(){se(e,"",0,t),c=null,l=!1;try{Mt()?.removeItem(n)}catch{}u=null}}}function jn(e,{carried:t=null,mayStore:n,orOwn:r=!1}){let o=e.anonymousIdSource,s=()=>Bo({name:P("anonymousId"),domain:e.consentCookieDomain??null,legacyKey:$(P("anonymousId"),e.propertyId),read:j,mint:oe,mayStore:n,carried:t});if(o?.source==="hp_cookie"){let c=s();return e.getAnonymousId=()=>c.get(),c}if(o?.source==="site_cookie"&&o.cookie){let c=o.cookie;e.getAnonymousId=()=>j(c)}if(!r)return null;let i=e.getAnonymousId,u=s();return e.getAnonymousId=()=>F(M(i,null))??u.get(),u}var jo=200;function Hn(e,t,n=()=>Date.now()){let r=()=>$(P("carried"),e),o=!1;function s(){try{let i=JSON.parse(sessionStorage.getItem(r())??"null");return!i||!(n()-i.savedAt<=Dt)?[]:Array.isArray(i.calls)?i.calls:[]}catch{return[]}}return{take(){let i=s();try{sessionStorage.removeItem(r())}catch{}return i},save(i){try{return o||!t()?!1:(sessionStorage.setItem(r(),JSON.stringify({savedAt:n(),calls:[...s(),...i].slice(-jo)})),!0)}catch{return!1}},close(){o=!0}}}var ma=fe.consent,We=Object.freeze({visitor:"visitor",host:"host"}),qn=()=>({basis:We.host}),Ho="hp-consent",pe=["analytics","marketing","personalisation","ad_user_data","ad_personalization"],Kn={analytics:"a",marketing:"m",personalisation:"p",ad_user_data:"aud",ad_personalization:"adp"},ne=()=>typeof window<"u",Gn=()=>ne()&&typeof window.cookieStore?.addEventListener=="function",Fo=e=>e===!0?!0:e===!1?!1:null;function be(e){if(!e||typeof e!="object")return null;let t={};for(let n of pe)t[n]=Fo(e[n]);return t}function Ut(e,t){return!e||!t?e===t:pe.every(n=>e[n]===t[n])}function Vt(e){if(!e)return"";let t=[];for(let n of pe){let r=e[n];(r===!0||r===!1)&&t.push(`${Kn[n]}=${r?1:0}`)}return t.join("&")}function $t(e){return{[Ho]:Vt(be(e))}}function Oe(e){let t=be({});if(e==null)return t;let n=String(e).trim();if(n.length>=2&&n.startsWith('"')&&n.endsWith('"')&&(n=n.slice(1,-1)),n.includes("%"))try{n=decodeURIComponent(n.replace(/\+/g," "))}catch{return t}let r=Object.fromEntries(Object.entries(Kn).map(([s,i])=>[i,s])),o=new Set;for(let s of n.split("&")){let i=s.indexOf("=");if(i<=0)continue;let u=r[s.slice(0,i).trim()],c={1:!0,0:!1}[s.slice(i+1).trim()]??null;!u||c===null||o.has(u)||(t[u]===null?t[u]=c:t[u]!==c&&(t[u]=null,o.add(u)))}return t}function Bt(e,t){if(!t)return e;let n=r=>{if(!r)return r;let o={...r};for(let s of pe)s!=="analytics"&&t[s]!==!0&&(o[s]=null);return o};return{name:e.name,basis:e.basis,read:()=>n(e.read()),subscribe:r=>e.subscribe(o=>r(n(o))),get observesChanges(){return e.observesChanges}}}function jt(e,t={}){return{...e,ad_user_data:t.ad_user_data??e.marketing,ad_personalization:t.ad_personalization??e.marketing}}function Je(e,t){let n=!0;return{notify:()=>{if(n)try{let o=e();o&&t(o)}catch{}},stop:()=>n=!1}}var qo={analytics:["analytics","measure_content_performance","audience_measurement"],marketing:["marketing","targeting","advertising","select_personalized_ads","create_ads_profile"],personalisation:["personalisation","personalization","select_personalized_content","create_content_profile"]};function Ko(e,t){if(!t?.length)return null;let n=!1;for(let[r,o]of Object.entries(e)){let s=String(o?.id??r).toLowerCase();if(t.some(u=>{let c=String(u).toLowerCase();return s===c||s.startsWith(`${c}-`)})&&(n=!0,o?.enabled===!0))return!0}return n?!1:null}function zn(e={}){let t={...qo,...e.purposes};function n(){let r=ne()?window.Didomi:void 0;if(!r?.getCurrentUserStatus||r.shouldUserStatusBeCollected?.()!==!1||r.isUserStatusPartial?.()===!0)return null;let o=r.getCurrentUserStatus()?.purposes;if(!o||typeof o!="object")return null;let s=i=>Ko(o,t[i]);return jt({analytics:s("analytics"),marketing:s("marketing"),personalisation:s("personalisation")},{ad_user_data:s("ad_user_data"),ad_personalization:s("ad_personalization")})}return{name:"didomi",read:n,observesChanges:!0,subscribe(r){if(!ne())return()=>{};let o=Je(n,r),s={event:"consent.changed",listener:o.notify};return window.didomiEventListeners=window.didomiEventListeners||[],window.didomiEventListeners.push(s),window.didomiOnReady=window.didomiOnReady||[],window.didomiOnReady.push(i=>{o.notify(),(i??window.Didomi)?.on?.("consent.changed",o.notify)}),window.Didomi?.on?.("consent.changed",o.notify),o.stop}}}function Fn(e){let t={};if(!e)return t;for(let n of String(e).split("&")){let r=n.indexOf("=");if(r<=0)continue;let o=n.slice(r+1).replace(/\+/g," ");try{o=decodeURIComponent(o)}catch{}t[n.slice(0,r)]=o}return t}function Wn(e={}){let t={analytics:"C0002",personalisation:"C0003",marketing:"C0004",...e.groups},n=e.impliedConsent===!0;function r(){let i=Fn(j("OptanonConsent"));if(i.groups){let l={};for(let f of i.groups.split(",")){let[p,m]=f.split(":");p?.trim()&&(l[p.trim()]=m==="1"?!0:m==="0"?!1:null)}return f=>l[f]??!1}let u=ne()?window.OnetrustActiveGroups:void 0;if(typeof u!="string"||!u.length)return null;let c=new Set(u.split(",").map(l=>l.trim()).filter(Boolean));return l=>c.has(l)}function o(){if(j("OptanonAlertBoxClosed"))return!0;try{if(ne()&&window.OneTrust?.IsAlertBoxClosed?.()===!0)return!0}catch{}return n&&ne()&&(!!window.OneTrust||typeof window.OnetrustActiveGroups=="string")}function s(){if(!o())return null;let i=r();if(!i)return null;let u=p=>t[p]?i(t[p]):null,c=jt({analytics:u("analytics"),marketing:u("marketing"),personalisation:u("personalisation")},{ad_user_data:u("ad_user_data"),ad_personalization:u("ad_personalization")}),l=Fn(j("OptanonConsent"));return(typeof navigator<"u"&&navigator.globalPrivacyControl===!0||l.isGpcEnabled==="1")&&(c.marketing=!1,c.ad_user_data=!1,c.ad_personalization=!1),c}return{name:"onetrust",read:s,observesChanges:!0,subscribe(i){if(!ne())return()=>{};let u=Je(s,i),c=!1,l=()=>{c||!window.OneTrust?.OnConsentChanged||(c=!0,window.OneTrust.OnConsentChanged(u.notify))};window.addEventListener("OneTrustGroupsUpdated",u.notify);let f=window.OptanonWrapper;return window.OptanonWrapper=function(...m){try{typeof f=="function"&&f.apply(this,m)}finally{l(),u.notify()}},l(),()=>{u.stop(),window.removeEventListener("OneTrustGroupsUpdated",u.notify)}}}}function Go(e){let t=String(e).split(",").map(n=>n.trim()).filter(Boolean);return t.length?new Set(t):null}function Jn(e){let{name:t,categories:n,parse:r=Go,refusedValue:o,source:s="native",changeEvent:i="thg_hp_consent_change"}=e??{};if(typeof t!="string"||t==="")throw new Error("cookieConsent: `name` (the cookie your banner writes) is required");if(!n||typeof n.analytics!="string")throw new Error("cookieConsent: `categories.analytics` (the category id that grants analytics) is required");function u(){let c=j(t);if(c==null)return null;let l;if(o!==void 0&&c===o)l=new Set;else try{l=r(c)}catch{l=null}if(!(l instanceof Set))return null;let f=p=>n[p]?l.has(n[p]):null;return jt({analytics:f("analytics"),marketing:f("marketing"),personalisation:f("personalisation")},{ad_user_data:f("ad_user_data"),ad_personalization:f("ad_personalization")})}return{name:s,read:u,get observesChanges(){return Gn()},subscribe(c){if(!ne())return()=>{};let l=Je(u,c),f=p=>{[...p.changed??[],...p.deleted??[]].some(A=>A?.name===t)&&l.notify()};return window.addEventListener(i,l.notify),window.cookieStore?.addEventListener?.("change",f),()=>{l.stop(),window.removeEventListener(i,l.notify),window.cookieStore?.removeEventListener?.("change",f)}}}}function Yn(e={}){let t=e.name??P("consent"),n=()=>{let r=j(t);if(r==null)return null;let o=Oe(r);return o.analytics==null?null:o};return{name:"forwarded",read:n,get observesChanges(){return Gn()},subscribe(r){if(!ne())return()=>{};let o=Je(n,r),s=i=>{[...i.changed??[],...i.deleted??[]].some(c=>c?.name===t)&&o.notify()};return window.cookieStore?.addEventListener?.("change",s),()=>{o.stop(),window.cookieStore?.removeEventListener?.("change",s)}}}}function Xn(e){let t=be(e);return{name:"static",basis:We.host,read:()=>t?{...t}:null,observesChanges:!0,subscribe:()=>()=>{}}}function Zn(e){if(e==null)return null;let t=String(e).split("/").map(n=>n.trim()).filter(Boolean).join("/");return t===""?null:t}function zo(e){let t=e.item_category;if(t!=null&&String(t).includes("/"))return Zn(t);let n=[t,e.item_category2,e.item_category3,e.item_category4,e.item_category5].map(r=>r==null?"":String(r).trim()).filter(Boolean);return Zn(n.join("/"))}var Wo=e=>{if(e==null||typeof e=="object")return null;let t=String(e).trim();return t===""?null:t};function Jo(...e){for(let t of e){if(typeof t=="number"&&Number.isFinite(t))return String(t);if(typeof t=="string"&&t.trim()!=="")return t.trim()}return null}var Ye=e=>Jo(e.item_group_id,e.item_id);function Yo(e,t=Ye){if(!e)return null;let n=u=>u==null||u===""||Number.isNaN(Number(u))?null:Number(u),r=u=>{let c=n(u);return c==null?null:Math.round(c*1e6)/1e6},o=u=>{let c=r(u);return c!=null&&c>=0?c:null},s=u=>{let c=n(u);return Number.isInteger(c)&&c>=0?c:null},i=Wo;return{product_id:i(t(e)),sku:i(e.item_id),name:i(e.item_name),brand:i(e.item_brand),variant:i(e.item_variant)??i(e.variant),category:zo(e),price:r(e.price),discount:o(e.discount),quantity:s(e.quantity),coupon:i(e.coupon),position:s(e.index)!=null?s(e.index)+1:null,url:i(e.url)??i(e.item_url)??null,image_url:i(e.image_url)??i(e.image_link)??null,displayed_sku:i(e.displayed_sku)??i(e.displayed_variant_sku)}}function Ht(e,t=Ye){return(e??[]).map(n=>Yo(n,t)).filter(n=>n?.product_id)}var Xo=1e3,Zo={shipping:2,payment:3},Qo=new Set(["password","google","apple","facebook","magic_link","sso","passkey","other"]),H=e=>{if(e==null||typeof e=="object")return null;let t=String(e).trim();return t===""?null:t},es=e=>{if(e==null||e===""||typeof e=="object")return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null},Xe=e=>e!==null&&typeof e=="object";function ts(e){return Array.isArray(e.items)?e.items.filter(Xe):null}function Qn(e){let t=H(e)?.toLowerCase().replace(/[\s-]+/g,"_");return t?Qo.has(t)?t:t==="email"||t==="email_password"?"password":"other":null}function ns({ecommerce:e,items:t}){let n=s=>({promotion_id:H(s.promotion_id),name:H(s.promotion_name),creative:H(s.creative_name),position:H(s.creative_slot)}),r=new Set,o=[];for(let s of[n(e),...t.map(n)])!s.promotion_id||r.has(s.promotion_id)||(r.add(s.promotion_id),o.push(s));return o}var er=({ecommerce:e,items:t})=>H(e.item_list_id)??H(e.item_list_name)??H(t[0]?.item_list_id)??H(t[0]?.item_list_name),me=(e,t)=>t.products?.length?{event:e,properties:t}:null,rs=new Set(["product","products","item","items"]);function os({ecommerce:e}){let t=H(e.item_id),n=H(e.content_type)?.toLowerCase();return!t||n&&!rs.has(n)?null:{event:"Product Shared",properties:{share_via:H(e.method),products:[{product_id:t}]}}}function ss(e){let t=o=>me("Product List Viewed",{list_id:er(o),products:o.products}),n=o=>{let s=H(o.ecommerce.search_term);return s?{event:"Products Searched",properties:{query:s,...o.products.length?{products:o.products}:{}}}:null},r=o=>s=>s.promotions.map(i=>({event:o,properties:i}));return{view_item:o=>me("Product Viewed",{currency:o.currency,value:o.value,products:o.products.slice(0,1)}),view_item_list:t,view_search_results:o=>n(o)??t(o),search:n,select_item:o=>me("Product Clicked",{list_id:er(o),products:o.products.slice(0,1)}),add_to_cart:o=>me("Product Added",{cart_id:H(o.ecommerce.cart_id),products:o.products}),remove_from_cart:o=>me("Product Removed",{cart_id:H(o.ecommerce.cart_id),products:o.products}),view_cart:o=>({event:"Cart Viewed",properties:{cart_id:H(o.ecommerce.cart_id),value:o.value,currency:o.currency,coupon:H(o.ecommerce.coupon),...o.itemsListed?{products:o.products}:{}}}),begin_checkout:o=>me("Checkout Started",{value:o.value,currency:o.currency,coupon:H(o.ecommerce.coupon),products:o.products}),add_shipping_info:o=>({event:"Checkout Step Completed",properties:{step:e.shipping,step_name:"shipping",shipping_method:H(o.ecommerce.shipping_tier)}}),add_payment_info:o=>({event:"Payment Info Entered",properties:{step:e.payment,step_name:"payment",payment_method:H(o.ecommerce.payment_type)}}),view_promotion:r("Promotion Viewed"),select_promotion:r("Promotion Clicked"),add_to_wishlist:o=>me("Product Added to Wishlist",{products:o.products}),share:os,login:o=>({event:"Signed In",properties:{method:Qn(o.ecommerce.method)}}),sign_up:o=>({event:"Signed Up",properties:{method:Qn(o.ecommerce.method)}})}}var is=e=>e.event;function as(e,t){if(!Xe(e))return null;if(typeof e.length=="number"&&e[0]==="event"&&typeof e[1]=="string"){let r=Xe(e[2])?e[2]:{};return{name:e[1],entry:r,ecommerce:r}}let n=H(t(e));return n?{name:n,entry:e,ecommerce:Xe(e.ecommerce)?e.ecommerce:e}:null}function Ft(e){return Array.isArray(e)?`[${e.map(Ft).join(",")}]`:e&&typeof e=="object"?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Ft(e[t])}`).join(",")}}`:JSON.stringify(e??null)}function tr(e,t={}){if(!e||typeof e.track!="function")throw new Error("connectDataLayer: analytics must have a track(event, properties, options) method");let n=t.dataLayer??(typeof window<"u"?window.dataLayer=window.dataLayer||[]:null);if(!Array.isArray(n))return()=>{};let r=ss({...Zo,...t.steps}),o=t.map??{},s=t.eventName??is,i=t.productId??Ye,u=new Set(["purchase","refund",...t.ignore??[]]),c=t.dedupeMs??Xo,l=new Map,f=!0;function p(S,g,y){if(c<=0)return!1;let O=`${S}|${y??""}|${Ft(g)}`,N=Date.now();for(let[U,G]of l)N-G>c&&l.delete(U);return l.has(O)?!0:(l.set(O,N),!1)}let m=null,A=new Set;function w(S,g){if(S!=="Product Viewed")return!1;let y=typeof location>"u"?"":location.pathname;y!==m&&(m=y,A.clear());let O=g.products?.[0]?.product_id;return O?A.has(O)?!0:(A.add(O),!1):!1}function k({event:S,properties:g={}},y){if(!S||p(S,g,y)||w(S,g))return;let O=y?{context:{currency:y}}:void 0;if(S==="Signed Out"&&typeof e.signedOut=="function"){e.signedOut(O);return}e.track(S,g,O)}function b(S){let g=t.transform?t.transform(S):S,y=as(g,s);if(!y||u.has(y.name))return;let O=Object.hasOwn(o,y.name),N=O?o[y.name]:r[y.name];if(typeof N!="function")return;let U=ts(y.ecommerce),G=U??[],q={...y,items:G,itemsListed:U!==null,products:Ht(G,i),currency:Tt(y.ecommerce.currency),value:es(y.ecommerce.value)};q.promotions=ns(q);let ee=O?N(g,{...q,toProducts:J=>Ht(J,i)}):N(q);for(let J of[ee].flat())J&&k(J,q.currency)}function x(S){if(f)try{b(S)}catch(g){try{t.onError?.(g,S)}catch{}}}for(let S of n.slice())x(S);let h=n.push;function E(...S){let g=h.apply(this,S);for(let y of S)x(y);return g}return n.push=E,()=>{f=!1,n.push===E&&(n.push=h)}}var cs="hp_debug",us=256;function ls(){try{return new URLSearchParams(location.search).get(cs)}catch{return null}}function nr(e,t){if(typeof location>"u")return!1;try{let n=ls();if(n!==null){let o=n.trim();o===""||o.length>us?sessionStorage.removeItem(t):sessionStorage.setItem(t,o)}let r=sessionStorage.getItem(t);return!!(e&&r&&In(r)===e)}catch{return!1}}var Ie=class extends Error{},ds={inHoldout:()=>!0,personalisationGroup:()=>"excluded",servingHeaders:()=>({}),recommendationContext:()=>({}),flush:()=>Promise.resolve(),reset:()=>{}};function qt(e,t){let n=ds[e]??(()=>null),r=o=>(console.warn(`[hp] ${String(e)} failed; nothing was sent`,o),n());return function(...s){try{let i=t.apply(this,s);return typeof i?.then=="function"?Promise.resolve(i).catch(r):i}catch(i){if(i instanceof Ie)throw i;return r(i)}}}function rr(e){for(let t of Reflect.ownKeys(e)){let{value:n}=Object.getOwnPropertyDescriptor(e,t)??{};typeof n=="function"&&(e[t]=qt(t,n))}return e}var Le=Symbol("hp.identityOption");var fs=4320*60*60,ps=100,ms=1e3,hs=2e3,or=500,Ze=e=>(e?.unref?.(),e);function gs(e,t){if(t?.analytics===!0&&e.analytics===!1)return"withdrawn";let n=pe.map(r=>e[r]).filter(r=>r!==null);return n.length&&n.every(Boolean)?"accept_all":n.length&&n.every(r=>!r)?"reject_all":"custom"}function ys(e,t,n=P("consent")){if(!(typeof document>"u"))try{let r=typeof location<"u"&&location.protocol==="https:"?"; Secure":"",o=t?`; Domain=${t}`:"";document.cookie=`${n}=${Vt(e)}; Path=/; Max-Age=${fs}; SameSite=Lax`+o+r}catch{}}function ws(e){let t=Oe(j(e));return pe.some(n=>t[n]!==null)?t:null}function sr(e){let{adapter:t,timeoutMs:n=5e3,cookieDomain:r=null,cookieName:o=P("consent"),release:s,announce:i}=e,u=e.discard??(()=>{}),c="pending",l=null,f=null,p=null,m=null,A=!1,w=null,k=[],b=R=>{c=R,e.onStatus?.(R)};function x(){try{return be(t.read())}catch{return null}}function h(){f&&clearInterval(f),p&&clearTimeout(p),f=null,p=null}let E=()=>typeof window<"u"&&typeof document<"u",S=()=>{try{return typeof t.subscribe=="function"&&t.observesChanges===!0}catch{return!1}};function g(){m&&clearInterval(m),m=null}function y(){A||m||l===null||S()||E()&&document.visibilityState==="hidden"||(m=Ze(setInterval(()=>q(x()),hs)))}let O=()=>c==="pending"||c==="unknown",N=e.store??null,U=()=>{let R=k.splice(0);N?.write([]);for(let K of R)s(K)},G=()=>{let R=k.splice(0);N?.write([]);for(let K of R)u(K)};function q(R){let K=be(R);if(!K||K.analytics===null)return;let Z=l===null,Y=Z?ws(o):l;if(!Z&&Ut(Y,K))return;h(),l=K,y(),ys(K,r,o);let ve=!Ut(Y,K);if(K.analytics){b("granted"),U(),ve&&i({action:gs(K,Y),state:K,previous:Y,withdrawal:!1});return}G(),Y?.analytics===!0&&i({action:"withdrawn",state:K,previous:Y,withdrawal:!0}),b("denied")}function ee(){p=null,c==="pending"&&(b("unknown"),f&&clearInterval(f),f=Ze(setInterval(()=>q(x()),ms)))}function J(R){if(O()){if(N){N.write(k);return}R?.type!=="visibilitychange"&&!R?.persisted&&G()}}let Se=R=>{document.visibilityState==="hidden"?(g(),J(R)):y()},je=R=>{g(),J(R)},ce=R=>{R?.persisted&&l!==null&&q(x()),y()};return{get status(){return c},get state(){return l?{...l}:null},stamp(){return l?{...l,source:t.name??null,basis:t.basis??We.visitor}:null},admits(){return c==="granted"},hold(R){return!O()||k.length>=or?(u(R),!1):(k.push(R),!0)},onHidden:J,start(){A=!1;try{w=t.subscribe?.(R=>q(R))??null}catch(R){e.debug&&console.warn("[hp] consent adapter subscribe failed",R)}E()&&(window.addEventListener("pagehide",je),window.addEventListener("pageshow",ce),document.addEventListener("visibilitychange",Se)),N&&k.length===0&&k.push(...N.read().slice(-or)),q(x()),!l&&(f=Ze(setInterval(()=>q(x()),ps)),p=Ze(setTimeout(ee,n)))},stop(){A=!0,h(),g(),typeof w=="function"&&w(),E()&&(window.removeEventListener("pagehide",je),window.removeEventListener("pageshow",ce),document.removeEventListener("visibilitychange",Se))}}}var Ss=["recommendation","search_rank","banner","offer","layout","copy","price","other"],Qe=e=>typeof e=="string"&&e!=="";function ir(e){return(Array.isArray(e?.decisions)?e.decisions:[]).filter(t=>Qe(t?.slot)&&Qe(t.decision_id)&&t.holdout!==!0).map(({decision_id:t,slot:n,arm:r,kind:o})=>({decision_id:t,slot:n,...Qe(r)&&{arm:r},...Ss.includes(o)&&{kind:o}}))}function ar({key:e,mayStore:t}){let n,r=()=>{if(n)return n;try{let s=JSON.parse(sessionStorage.getItem(e));n=Array.isArray(s)?s.filter(i=>Qe(i?.slot)):[]}catch{n=[]}return n},o=()=>{try{n?.length&&t()&&sessionStorage.setItem(e,JSON.stringify(n))}catch{}};return{persist:o,current:()=>r().length?n.map(s=>({...s})):null,remember(s){if(!s.length)return;let i=new Set(s.map(u=>u.slot));n=[...r().filter(u=>!i.has(u.slot)),...s],o()},forget(){n=[];try{sessionStorage.removeItem(e)}catch{}}}}function _s(e){let t=2166136261,n=String(e);for(let r=0;r<n.length;r+=1)t^=n.charCodeAt(r),t=t+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24))>>>0;return t^=t>>>16,t=Math.imul(t,2246822507)>>>0,t^=t>>>13,t=Math.imul(t,3266489909)>>>0,t^=t>>>16,t>>>0}function et(e,t,n=1e4){return _s(`${t}\0${e}`)%n}function Kt(e){let t=o=>Math.min(Math.max(Number(o)||0,0),1),n=t(e.share),r=1-n;return{holdout_share:n,personalised_share:e.ramp==null?r:Math.min(t(e.ramp),r)}}function Gt(e,t){if(!e||typeof e.salt!="string")return{holdout:!1,bucket:null,group:"personalised"};let n=e.ramp!=null;if(t==null||t==="")return{holdout:!1,bucket:null,group:n?"excluded":"personalised"};let{holdout_share:r,personalised_share:o}=Kt(e),s=et(t,e.salt),i=c=>Math.round(c*1e4),u=r>0&&s<i(r)?"holdout":!n||s<i(r+o)?"personalised":"excluded";return{holdout:u==="holdout",bucket:s,group:u}}function cr(e,t){return typeof e!="string"||e===""||t==null||t===""?null:et(t,`bandit-vs-default:${e}`)<1e4/2?"default":"bandit"}var bs="hp_preview",Is=256;function ur(e,t=null){if(typeof location>"u")return j(e);let n=null;try{n=new URLSearchParams(location.search).get(bs)}catch{n=null}if(n===null)return j(e);let r=n.trim();return r===""||r.length>Is?(se(e,"",0,t),null):(se(e,r,null,t),r)}var ks=40,xs=128,As=5,vs=60,dr=e=>typeof e=="string"&&e!==""&&e.length<=xs&&!e.includes(","),lr=e=>Array.isArray(e)?e.filter(dr).slice(0,ks):[],Es=e=>Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.replaceAll(","," ").trim()).filter(t=>t!=="").slice(0,As):[],Cs=e=>Object.entries(e&&typeof e=="object"?e:{}).filter(([t,n])=>dr(t)&&Number.isFinite(n)&&n>=1).sort(([,t],[,n])=>n-t).slice(0,vs).map(([t,n])=>`${t}:${Math.floor(n)}`);function zt(e){let t={},n={viewed:lr(e?.recentProducts),basket:lr(e?.basketProducts),q:Es(e?.recentSearches),impressed:Cs(e?.impressions)};for(let[r,o]of Object.entries(n))o.length>0&&(t[r]=o.join(","));return t}var Ps=1800*1e3;function fr(e,t=Date.now()){try{localStorage.setItem(P("recommendationContext"),JSON.stringify({context:e,until:t+Ps}))}catch{}}function pr(){try{localStorage.removeItem(P("recommendationContext"))}catch{}}var Os="hp_sample",mr=1e4;function hr(e,t){return!(typeof t=="number"&&t<1)||e==null||e===""?!0:et(e,Os,mr)<Math.round(t*mr)}function ke(e){return e.trim().toLowerCase().replace(/\s*\/\s*/g,"/").replace(/^\/+|\/+$/g,"")}var Ls=2,Ts=12;function Te(e,t=Ls){return e.split("/").slice(0,t).join("/")}function Wt(e,t){if(typeof t!="string"||!t.trim())return null;let n=Te(ke(t));return n?(e.unshift(n),e.length=Math.min(e.length,Ts),n):null}var he=()=>P("sessionSignals"),xe=null,Jt=()=>xe??he();function gr(){try{return xe?localStorage:sessionStorage}catch{return}}function yr(e,t){let n=t==null?null:String(t),r=e?$(he(),n,e):null;if(r===xe)return;let o=xe===null?Ns():null;if(xe=r,!!xe)try{let s=Jt(),i=$n(he(),n);for(let u of Object.keys(localStorage))u.startsWith(i)&&u!==s&&localStorage.removeItem(u);o&&!localStorage.getItem(s)&&(localStorage.setItem(s,JSON.stringify(o)),sessionStorage.removeItem(he()))}catch{}}function Ns(){try{let e=sessionStorage.getItem(he());if(!e)return null;let t=JSON.parse(e);return t&&(t.productViews>0||t.listViews>0||t.basketValue!=null||t.recentProducts?.length||t.recentBrowse?.length||t.campaign)?t:null}catch{return null}}function tt(){return{productViews:0,listViews:0,cartAdds:0,searches:0,recentProducts:[],recentCategories:[],recentBrowse:[],basketProducts:[],basketValue:null,recentSearches:[],impressions:{},browsingCategory:null,recentBrowseCategories:[],browsingListing:null,listViewsByCategory:{},campaign:null,startedAt:0}}function Yt(){let e=gr();if(!e)return tt();try{let t=e.getItem(Jt());return t?{...tt(),...JSON.parse(t)}:{...tt(),startedAt:Date.now()}}catch{return{...tt(),startedAt:Date.now()}}}function Ne(e){let t=gr();if(t)try{t.setItem(Jt(),JSON.stringify(e))}catch{}}function Re(){return Yt()}function wr(){for(let e of[()=>sessionStorage,()=>localStorage])try{let t=e();t.removeItem(he());for(let n of Object.keys(t))n.startsWith(`${he()}:`)&&t.removeItem(n)}catch{}}var Xt=20,Sr=200,Rs=new Set(["Product Viewed","Product Clicked","Product Added","Product Added to Wishlist"]),Ms=new Set(["Product Viewed","Product Added"]),_r=50;function nt(e,t){let n=Wt(e.recentBrowse,t);return n?(e.recentBrowseCategories=[e.browsingListing?.category??null,...e.recentBrowseCategories].slice(0,e.recentBrowse.length),n):null}function Ds(e,t){let n=e.listViewsByCategory;n[t]=(n[t]??0)+1;let r=Object.keys(n);if(r.length>_r){let o={};for(let s of r.sort((i,u)=>n[u]-n[i]).slice(0,_r))o[s]=n[s];e.listViewsByCategory=o}}var br=e=>[...new Set(e.map(t=>t?.product_id).filter(t=>typeof t=="string"&&t))].slice(0,Xt);function Ir(e,t,n){let r=Yt();r.startedAt||(r.startedAt=Date.now());let o=n!==void 0&&JSON.stringify(n??null)!==JSON.stringify(r.campaign??null);o&&(r.campaign=n??null);let s=Array.isArray(t?.products)?t.products:[];switch(e){case"Product Viewed":r.productViews+=1,nt(r,r.browsingCategory);break;case"Product List Viewed":{let c=t?.list_id,l=t?.category;if(!(typeof c=="string"&&c.includes("/")&&!c.startsWith("cdp-")))break;let p=typeof l=="string"&&Te(ke(l))||null,m=p?Te(ke(c)):"";if(!m){r.browsingCategory=null,r.browsingListing=null;break}r.browsingListing={key:m,category:p},nt(r,m),r.browsingCategory=m,Ds(r,p),r.listViews+=1}break;case"Product List Filtered":{let c=t?.change,l=typeof t?.list_id=="string"?t.list_id:"",f=typeof c?.value=="string"?c.value:"",p=r.browsingListing;if(f&&c?.action!=="removed"&&p&&Te(ke(l))===p.key){let m=nt(r,`${l}/${f}`);m&&(r.browsingCategory=m)}break}case"Product Added":{r.cartAdds+=1,nt(r,r.browsingCategory);for(let c of s){let l=c.product_id;typeof l!="string"||!l||(r.basketProducts=[l,...r.basketProducts.filter(f=>f!==l)].slice(0,Xt))}break}case"Product Removed":{for(let c of s){let l=c.product_id;typeof l=="string"&&l&&(r.basketProducts=r.basketProducts.filter(f=>f!==l))}break}case"Products Searched":{r.searches+=1;let c=t?.query;if(typeof c=="string"&&c.trim()){let l=c.trim().toLowerCase().slice(0,64);r.recentSearches=[l,...r.recentSearches.filter(f=>f!==l)].slice(0,5)}break}case"Product Clicked":case"Product Added to Wishlist":break;case"Cart Viewed":return s.length>0&&(r.basketProducts=br(s)),Ne(r),r;case"Cart Updated":{Array.isArray(t?.products)&&(r.basketProducts=br(s));let c=t?.value;return r.basketValue=typeof c=="number"&&Number.isFinite(c)&&c>=0?c:null,Ne(r),r}default:return o&&Ne(r),r}let i=Rs.has(e);if(i)for(let c of s)typeof c.product_id=="string"&&c.product_id&&delete r.impressions[c.product_id];else{for(let l of s){let f=l.product_id;typeof f!="string"||!f||(r.impressions[f]=(r.impressions[f]??0)+1)}let c=Object.keys(r.impressions);if(c.length>Sr){let l={};for(let f of c.sort((p,m)=>r.impressions[m]-r.impressions[p]).slice(0,Sr))l[f]=r.impressions[f];r.impressions=l}}let u=new Set;for(let c of s){let l=c.product_id;if(i&&typeof l=="string"&&l&&(r.recentProducts=[l,...r.recentProducts.filter(f=>f!==l)].slice(0,Xt)),Ms.has(e)&&typeof c.category=="string"&&c.category){let f=ke(c.category);f&&!u.has(f)&&(u.add(f),Wt(r.recentCategories,f))}}return Ne(r),r}var rt=1800*1e3;function kr({name:e,domain:t=null,mayStore:n,now:r=()=>Date.now(),mint:o=oe}){let s=null,i=0,u=()=>{s!==null&&n()&&se(e,s,rt/1e3,t)};return{get(){let c=r(),l=j(e);return l?s=l:(s===null||c-i>=rt)&&(s=o()),i=c,u(),s},persist:u,forget(){se(e,"",0,t),s=null}}}var W=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),xr=e=>Array.isArray(e)&&e.every(t=>typeof t=="string"),Ar=Object.freeze({enabled:!1}),Qt=Object.freeze({enabled:!0,queryParamAllowlist:Object.freeze([])});function vr(e,t){let n=e?.track;return W(n)?(Object.hasOwn(n,t)?n[t]:n.__default)?.enabled!==!1:!0}function Us(e,t){return`${ie(e)}/v1/projects/${encodeURIComponent(t)}/settings`}var Vs="https://hp.thgingenuity.com";function ie(e){return e==null||e===""?Vs:Cr(e)}function Er(e,t){return e!=null&&e!==""?ie(e):t?.startsWith("https://")?t:ie(void 0)}function Cr(e){if(typeof e!="string")return null;let t=e.trim().replace(/\/+$/,"");return/^https?:\/\/[^/\s]+$/i.test(t)?t:/^[a-z0-9.-]+(:\d+)?$/i.test(t)?`https://${t}`:null}function $s(e){if(!W(e))return null;let t=Object.fromEntries(Object.entries(e).filter(([,n])=>typeof n=="boolean"));return Object.keys(t).length?t:null}var Zt=e=>typeof e=="number"&&e>=0&&e<=1,Bs=/^[0-9a-f]{64}$/;function js(e){return W(e)?{enabled:e.enabled===!0,tokenSha256:typeof e.tokenSha256=="string"&&Bs.test(e.tokenSha256)?e.tokenSha256:null}:{enabled:!1,tokenSha256:null}}function Hs(e){if(!W(e))return null;let t=Object.fromEntries(Object.entries(e).filter(([,n])=>W(n)&&Zt(n.share)&&(n.ramp==null||Zt(n.ramp))&&typeof n.salt=="string"&&n.salt!=="").map(([n,r])=>[n,{share:r.share,ramp:r.ramp??null,salt:r.salt,...xr(r.readoutSlots)&&r.readoutSlots.length>0&&{readoutSlots:r.readoutSlots}}]));return Object.keys(t).length?t:null}var Fs=/^[A-Za-z0-9!#$%&'*+.^_`|~-]{1,128}$/;function qs(e){return W(e)?e.source==="hp_cookie"?{source:"hp_cookie"}:e.source!=="site_cookie"?null:e.cookie==null?{source:"site_cookie",cookie:null}:typeof e.cookie=="string"&&Fs.test(e.cookie)?{source:"site_cookie",cookie:e.cookie}:null:null}function Ks(e){let t=Array.isArray(e?.forms)?e.forms.filter(W):[];return t.length===0?null:{forms:t,capture:W(e.capture)?e.capture:null,...Number.isInteger(e.overlay_gap_minutes)?{overlay_gap_minutes:e.overlay_gap_minutes}:{}}}function Gs(e){let t=W(e)?e.hp:null;return W(t)&&typeof t.enabled=="boolean"}function en(e){let t=W(e)?e.hp:null;if(!W(t)||t.enabled!==!0)return Ar;let n=Ks(t.onsite);return{enabled:!0,propertyId:typeof t.propertyId=="string"&&t.propertyId!==""?t.propertyId:null,environment:typeof t.environment=="string"?t.environment:null,consentPurposes:$s(t.consent?.purposes),queryParamAllowlist:xr(t.queryParamAllowlist)?t.queryParamAllowlist:null,anonymousId:qs(t.anonymousId),apiHost:Cr(t.apiHost),holdouts:Hs(t.holdouts),sampleRate:Zt(t.sampleRate)?t.sampleRate:1,debug:js(t.debug),...n&&{onsite:n},plan:W(e.plan)&&W(e.plan.track)?{track:e.plan.track}:null}}var zs=3e3;async function Pr(e,t,n=globalThis.fetch,r=zs){try{let o=await n(Us(e,t),{credentials:"omit",headers:{accept:"application/json"},signal:AbortSignal.timeout?.(r)});if(o.status>=400&&o.status<500&&o.status!==408&&o.status!==429)return Ar;if(!o.ok)return null;let s=await o.json();return Gs(s)?en(s):null}catch{return null}}var ot=e=>$(P("settings"),e);function Or(e){try{let t=localStorage.getItem(ot(e));if(!t)return null;let n=JSON.parse(t);return n?.enabled===!0?n:null}catch{return null}}function Lr(e,t){try{t?.enabled===!0?localStorage.setItem(ot(e),JSON.stringify(t)):localStorage.removeItem(ot(e))}catch{}}function tn(e){try{localStorage.removeItem(ot(e))}catch{}}var Ws={flushAt:20,flushIntervalMs:1e4,maxQueue:500,maxRetryAgeMs:1440*60*1e3,maxRetries:5,maxPersistedBatches:20,maxPersistedBytes:1024*1024,storageKey:fe.retry,beaconSafeBytes:56*1024,maxBatchEvents:100,maxBatchBytes:500*1024},st=()=>Date.now(),Tr=3e4,cn=55*1024;function Js(e,t=st()){if(typeof e!="string")return 0;let n=e.trim();if(/^\d+$/.test(n))return Number(n)*1e3;if(n==="")return 0;let r=Date.parse(n);return Number.isNaN(r)?0:Math.max(0,r-t)}var ae=e=>typeof TextEncoder<"u"?new TextEncoder().encode(e).length:Buffer.byteLength(e),nn=()=>typeof window<"u"&&typeof document<"u";function Ys(){try{return!nn()||!window.localStorage?null:(window.localStorage.getItem("thg_hp_probe"),window.localStorage)}catch{return null}}var I,rn,on,it,sn,an,Nr,Me,De,Ue,Rr,at,Mr,ct,ut=class{constructor(t){_n(this,I);this.o={...Ws,...t},this.queue=[],this.timer=null,this.storage=Ys(),this.inflight=null,this.sending=new Set,this.epoch=0,this.sinceRefusal=new Set,this.wakers=new Set,this.replayAllowed=!this.o.deferReplay,this.draining=null,this.failing=!1,this.answered=!1,nn()&&(window.addEventListener("pagehide",()=>this.flush({beacon:!0})),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&this.flush()}),L(this,I,ct).call(this))}markFailing(){this.answered||(this.failing=!0)}replayPersisted(){return this.replayAllowed=!0,L(this,I,ct).call(this)}clearPersisted(){if(this.replayAllowed=!1,!!this.storage)try{let t=L(this,I,Ue).call(this).filter(n=>this.sinceRefusal.has(n?.id));t.length?this.storage.setItem(this.o.storageKey,JSON.stringify(t)):this.storage.removeItem(this.o.storageKey)}catch{}}discardQueued(){this.queue=[],this.epoch+=1,this.sinceRefusal.clear(),L(this,I,on).call(this);for(let t of this.wakers)t()}enqueue(t){let n;try{n=JSON.parse(JSON.stringify(t))}catch(r){this.o.onError?.(`event ${t?.messageId??""} cannot be serialised; dropped`,r);return}this.queue.push(n),this.queue.length>this.o.maxQueue&&this.queue.splice(0,this.queue.length-this.o.maxQueue),this.queue.length>=this.o.flushAt?this.flush():L(this,I,rn).call(this)}flush(t={}){if(L(this,I,on).call(this),this.queue.length===0)return Promise.resolve();if(t.beacon&&nn()&&typeof navigator<"u"&&navigator.sendBeacon)return L(this,I,Nr).call(this),Promise.resolve();if(this.inflight)return this.inflight;let n=L(this,I,an).call(this,this.queue,this.o.maxBatchEvents,this.o.maxBatchBytes).map(o=>{let s=L(this,I,at).call(this,o);return s&&(this.sending.add(s),this.sinceRefusal.add(s)),{batch:o,id:s}});this.queue=[];let r=this.epoch;return this.inflight=(async()=>{for(let{batch:o,id:s}of n){if(r!==this.epoch){L(this,I,De).call(this,s);continue}await L(this,I,Me).call(this,o,0,s,r)}})().finally(()=>{this.inflight=null,this.queue.length>=this.o.flushAt?this.flush():this.queue.length&&L(this,I,rn).call(this)}),this.inflight}};I=new WeakSet,rn=function(){this.timer||(this.timer=setTimeout(()=>this.flush(),this.o.flushIntervalMs),this.timer?.unref?.())},on=function(){this.timer&&(clearTimeout(this.timer),this.timer=null)},it=function(t){return JSON.stringify({batch:t,writeKey:this.o.writeKey,sentAt:new Date().toISOString()})},sn=function(){return`${this.o.apiHost.replace(/\/$/,"")}/v1/batch`},an=function(t,n,r){let o=ae(L(this,I,it).call(this,[])),s=[],i=[],u=o;for(let c of t){let l=ae(JSON.stringify(c))+1;i.length&&(i.length>=n||u+l>r)&&(s.push(i),i=[],u=o),i.push(c),u+=l}return i.length&&s.push(i),s},Nr=function(){let t=this.queue;this.queue=[];let n=L(this,I,sn).call(this);for(let r of L(this,I,an).call(this,t,this.o.maxBatchEvents,this.o.beaconSafeBytes)){let o=L(this,I,it).call(this,r);if(ae(o)<=this.o.beaconSafeBytes){let s=!1;try{s=navigator.sendBeacon(n,new Blob([o],{type:"text/plain"}))}catch{s=!1}if(s){let i=this.failing?L(this,I,at).call(this,r):null;i&&this.sending.add(i);continue}}L(this,I,Me).call(this,r,0,L(this,I,at).call(this,r))}},Me=async function(t,n,r=null,o=this.epoch){r&&this.sending.add(r);let s=L(this,I,it).call(this,t),i=0;try{let u=await fetch(L(this,I,sn).call(this),{method:"POST",headers:{"Content-Type":"text/plain"},body:s,keepalive:ae(s)<=this.o.beaconSafeBytes});if(u.ok)return this.failing=!1,this.answered=!0,L(this,I,De).call(this,r),L(this,I,ct).call(this),!0;let c=u.status===408||u.status===429||u.status>=500;if(c&&(i=Js(u.headers?.get?.("retry-after"))),!c)return L(this,I,De).call(this,r),this.o.onError?.(`CDP ingest rejected batch (${u.status}); dropping ${t.length} events`),!0;throw new Error(`retryable ${u.status}`)}catch(u){if(this.failing=!0,n>=this.o.maxRetries){r&&this.sending.delete(r);let l=r?"kept for the next page":"dropped";return this.o.onError?.(`CDP ingest unreachable after ${n} attempts; ${l}: ${t.length} events`,u),!1}let c=Math.max(Math.min(1e3*2**n,Tr)*(.5+Math.random()),Math.min(i,Tr));return o===this.epoch&&await new Promise(l=>{let f=()=>{clearTimeout(p),this.wakers.delete(f),l()},p=setTimeout(f,c);this.wakers.add(f)}),o!==this.epoch?(L(this,I,De).call(this,r),!1):L(this,I,Me).call(this,t,n+1,r,o)}},De=function(t){t&&(this.sending.delete(t),this.sinceRefusal.delete(t),L(this,I,Mr).call(this,t))},Ue=function(){let t=JSON.parse(this.storage.getItem(this.o.storageKey)||"[]");return Array.isArray(t)?t:[]},Rr=function(t,n){let r=i=>ae(JSON.stringify(i))+1,o=[...t,n].slice(-this.o.maxPersistedBatches),s=o.reduce((i,u)=>i+r(u),2);for(;o.length>1&&s>this.o.maxPersistedBytes;)s-=r(o[0]),o=o.slice(1);for(;o.length;)try{return this.storage.setItem(this.o.storageKey,JSON.stringify(o)),!0}catch{o=o.slice(1)}return!1},at=function(t){if(!this.storage||this.o.mayPersist&&!this.o.mayPersist())return null;try{let n={at:st(),id:`${st()}-${Math.random().toString(36).slice(2)}`,batch:t};return ae(JSON.stringify(n))+3>this.o.maxPersistedBytes?null:L(this,I,Rr).call(this,L(this,I,Ue).call(this),n)?n.id:null}catch{return null}},Mr=function(t){if(!(!t||!this.storage))try{let n=L(this,I,Ue).call(this).filter(r=>r.id!==t);n.length?this.storage.setItem(this.o.storageKey,JSON.stringify(n)):this.storage.removeItem(this.o.storageKey)}catch{}},ct=function(){if(!this.storage||!this.replayAllowed)return this.draining??Promise.resolve();if(this.draining)return this.draining;let t;try{let r=L(this,I,Ue).call(this);t=r.filter(o=>Array.isArray(o?.batch)&&st()-o.at<this.o.maxRetryAgeMs).map(o=>o.id?o:{...o,id:`${o.at}-${Math.random().toString(36).slice(2)}`}),(t.length!==r.length||t.some((o,s)=>o!==r[s]))&&(t.length?this.storage.setItem(this.o.storageKey,JSON.stringify(t)):this.storage.removeItem(this.o.storageKey))}catch{return Promise.resolve()}let n=t.filter(r=>!this.sending.has(r.id));return n.length?(this.draining=(async()=>{for(let r of n)if(!this.replayAllowed||!await L(this,I,Me).call(this,r.batch,0,r.id))return})().finally(()=>{this.draining=null}),this.draining):Promise.resolve()};var un="3.30.0",ln="@thg-agentic/hyper-personalisation-web";var Xs=100,Zs=["source","medium","campaign","content","term"];function Ur(e){if(!e||typeof e!="object")return null;let t={};for(let n of Zs){let r=e[n==="campaign"?"name":n];typeof r=="string"&&r&&(t[n]=r.slice(0,Xs))}return Object.keys(t).length?t:null}var Vr=e=>$(P("visitCampaign"),e==null?null:String(e)),Ae=new Map;function $r(e){if(Ae.has(e))return Ae.get(e);try{let t=JSON.parse(localStorage.getItem(e));return t&&typeof t=="object"?t:null}catch{return null}}function Dr(e,t){try{t?localStorage.setItem(e,JSON.stringify(t)):localStorage.removeItem(e),Ae.delete(e)}catch{t?Ae.set(e,t):Ae.delete(e)}}function Br(e,t,n){return typeof e?.tags=="object"&&e.tags!==null&&Number.isFinite(e.at)&&n-e.at<rt&&!(t&&e.sid&&e.sid!==t)?e:null}function lt(e,{sessionId:t=null,now:n=Date.now()}={}){return Br($r(Vr(e)),t,n)?.tags??null}function jr(e,t,{sessionId:n=null,keepSession:r=!1,now:o=Date.now()}={}){let s=Vr(e),i=$r(s),u=Br(i,n,o),c=u?.tags??t??null;return c?Dr(s,{tags:c,at:o,sid:(r?n:null)??u?.sid??null}):i&&Dr(s,null),c}function dn(){Ae.clear();try{let e=`${P("visitCampaign")}:`;for(let t of Object.keys(localStorage))t.startsWith(e)&&localStorage.removeItem(t)}catch{}}var Qs=new Set(["audiences","decisions","recommendations"]);var ei=Symbol.for("@thg-agentic/hyper-personalisation-web.replay"),ti=Symbol.for("@thg-agentic/hyper-personalisation-web.unreachable"),ni=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite-access");function ri(e){let t={...e??{}},n=Array.isArray(t.products)?t.products:null;if(t.item_count==null&&n){let r=n.map(o=>o?.quantity);r.every(Number.isInteger)&&(t.item_count=r.reduce((o,s)=>o+s,0))}return t}var oi="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";function si(e){if(/^[0-9a-fA-F]{64}$/.test(e))return e.toLowerCase();if(!/^[A-Za-z0-9+/_-]{43}=?$/.test(e))return null;try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/").padEnd(44,"="));return t.length!==32?null:Array.from(t,n=>n.charCodeAt(0).toString(16).padStart(2,"0")).join("")}catch{return null}}function ft(e){if(typeof e!="string")return null;let t=si(e.trim());return t===oi?null:t}var Hr=Object.freeze({email_sha256:"sha256",phone_sha256:"sha256",accepts_marketing:"boolean",gender:"string",created_at:"date-time"}),ii=/^\d{4}-\d{2}-\d{2}T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d+)?(Z|[+-]([01]\d|2[0-3]):[0-5]\d)$/i;function ai(e){if(typeof e!="string"||!ii.test(e))return!1;let[t,n,r]=e.slice(0,10).split("-").map(Number),o=new Date(Date.UTC(t,n-1,r));return o.getUTCMonth()===n-1&&o.getUTCDate()===r&&!Number.isNaN(Date.parse(e))}function ci(e,t){return t===null?null:e==="sha256"?ft(t)??void 0:e==="date-time"?t instanceof Date?Number.isNaN(t.getTime())?void 0:t.toISOString():ai(t)?t:void 0:typeof t===e?t:void 0}function ui(e,t){let n={},r=[];for(let[o,s]of Object.entries(e)){let i=Object.hasOwn(Hr,o)?Hr[o]:null,u=i?ci(i,s):void 0;u===void 0?r.push(o):n[o]=u}return t&&r.length&&console.warn(`[hp] identify: not sent, not spec traits: ${r.join(", ")}`),n}var Fr=!1,qr=!1;function li(){qr||(qr=!0,console.warn("[hp] no consent adapter: events are sent under the host's lawful basis (basis 'host'). Pass `consent` to send only once the visitor allows analytics."))}function di(e){!e||Fr||(Fr=!0,console.warn("[hp] mintAnonymousId is ignored since 3.6: where device ids come from is set per source in the console (the site\u2019s own cookie, or Hyper-Personalisation\u2019s)."))}function fi(e){try{return ae(JSON.stringify(e))}catch{return 0}}function dt(e){return e&&typeof e.context=="object"&&e.context!==null?e.context:e}function pi(e,t){if(e==null||String(e)===t)return;let n=[["localStorage","retry",(r,o)=>[...Array.isArray(r)?r:[],...Array.isArray(o)?o:[]]],["sessionStorage","held",(r,o)=>o?{...o,items:[...r.items??[],...o.items??[]]}:r]];for(let[r,o,s]of n)try{let i=globalThis[r],u=$(P(o),e),c=i?.getItem(u);if(!c)continue;let l=$(P(o),t),f=i.getItem(l);i.setItem(l,JSON.stringify(s(JSON.parse(c),f?JSON.parse(f):null))),i.removeItem(u)}catch{}}function Kr(e){let t=ie(e?.apiHost);if(!t)throw new Error("createAnalytics: apiHost, when given, must be a host or an http(s) origin");if(e?.propertyId!==null&&!e?.propertyId)throw new Error("createAnalytics: propertyId is required (null: the ingest stamps the key\u2019s)");let n={libraryName:ln,libraryVersion:un,writeKey:"web",queryParamBlocklist:[],debug:!1,validate:null,consentTimeoutMs:5e3,...e,apiHost:t};Ke(n.storageNames),Ge();let r=!!n.consent;r||li();let o=null;n.getConsent=()=>o?o.stamp():qn();let s=()=>!r||o?.status==="granted";pi(n.propertyId,n.writeKey);let i=r&&n.holdAcrossPages?Bn($(P("held"),n.writeKey)):null,u=i?.read()??{items:[],anonymousId:null};n.mintAnonymousId!==void 0&&di(n.debug);let c=jn(n,{carried:u.anonymousId,mayStore:s,orOwn:!0}),l=kr({name:P("session"),domain:n.consentCookieDomain??null,mayStore:s}),f=n.getSessionId;n.getSessionId=()=>F(M(f,null))??l.get();let p=ur(P("preview"),n.consentCookieDomain??null),m=()=>F(M(f,null))??j(P("session")),A=Ur(typeof location>"u"?null:Ot(location.search)),w=(a=null)=>{p||jr(n.propertyId,a,{sessionId:m(),keepSession:s()})},k=(a,d)=>n.debug&&console.warn("[hp]",a,d??""),b=n.transport??new ut({apiHost:n.apiHost,writeKey:n.writeKey,storageKey:$(P("retry"),n.writeKey),mayPersist:r?()=>o?.status==="granted":void 0,deferReplay:r,onError:k}),x=$(P("previousPage"),n.propertyId),h=null,E=()=>{if(h)return h;try{return sessionStorage.getItem(x)||null}catch{return null}};typeof window<"u"&&window.addEventListener("pageshow",a=>{a.persisted&&(h=null)});let S=a=>{if(h=a||null,!(r&&o.status!=="granted"))try{sessionStorage.setItem(x,a)}catch{}},g=ar({key:$(P("decisions"),n.propertyId),mayStore:s});n.getDecisions??(n.getDecisions=g.current);let y=F(M(n.getUserId,null)),O=null,N=null,U=y?Ce(n.identityToken):null,G=null,q=null,ee=null,J=new Set,Se=new Set;function je(a){if(a.type==="page"&&(ee=null),a.type==="track"&&a.event==="Product Viewed"){let _=a.properties?.products?.[0]?.product_id;ee=typeof _=="string"&&_?_:ee}if(a.type!=="track"||a.event!=="Cart Updated")return;let d=a.properties?.value;q=typeof d=="number"&&Number.isFinite(d)&&d>=0?d:null;for(let _ of J)try{_()}catch(C){console.warn("[hp] a basket listener failed",C)}}function ce(a,d,_=!1){je(a),w();try{return R(a,d,_)}catch(C){if(C instanceof Ie)throw C;return console.warn("[hp] the event was not sent",C),null}}function R(a,d,_){let C=G;G=null;let V=a.type==="track"?a.event:a.type;if(!_&&!vr(n.plan,V))return null;let T={messageId:C?.messageId??oe(),timestamp:C?.timestamp??new Date().toISOString(),anonymousId:F(M(n.getAnonymousId,null)),userId:y??null,...a,context:Mn(n,dt(d))};if(T.properties&&(T.properties=Ct(T.properties)),typeof T.properties?.href=="string"&&(T.properties.href=Lt(T.properties.href,n)),!_&&!hr(T.anonymousId,n.sampleRate))return n.debug&&console.debug("[hp] not sent: outside the sample",T),null;if(n.beforeSend){let te;try{te=n.beforeSend(T)}catch(uo){return console.warn("[hp] beforeSend failed; the event was not sent",uo),null}if(!te)return null;let{type:z,event:wn,messageId:ao,timestamp:co}=T;T={...te,type:z,messageId:ao,timestamp:co,...wn?{event:wn}:{}}}if(n.validate){let te=n.validate(T,{producer:"web"});if(!te.valid){let z=`[hp] invalid ${T.event??T.type}:
2
2
  ${te.errors.join(`
3
- `)}`;if(n.throwOnInvalid)throw new Ie(z);console.error(z)}}n.debug&&console.debug("[hp]",T.event??T.type,T);let bt=fi(T);return bt>cn?(k(`${T.event??T.type} not sent: ${bt} bytes, over the ${cn}-byte limit for one event`),null):(oo(T,_),T)}function K(a){if((a.type==="track"||a.type==="page")&&ro(a),n.onEvent)try{n.onEvent(a)}catch(d){console.warn("[hp] onEvent observer failed",d)}}let Z=()=>r&&o?.state?.personalisation===!0,Y=()=>hr(M(n.getSessionId,null),n.propertyId),ve=!1;function ro(a){try{if(Z()){Y();let d=_r(a.event,a.properties,lt(n.propertyId,{sessionId:m()}));a.type==="track"&&lr(zt(d)),ve=!0}else He()}catch(d){n.debug&&console.warn("[hp] the visit was not recorded",d)}}function He(a=!1){dr(),(a||ve)&&gr(),ve=!1}function St(){l.forget(),g.forget(),_t.clear(),c?.forget(),He(!0),un()}function oo(a,d){!r||d||o.admits()?(K(a),b.enqueue(a)):o.hold(a)}let v=(a,d,_)=>ce({type:"track",event:a,properties:d??{}},_),_t=new Set,so=(a,d,_)=>a==="audiences"?{audiences:d?null:_.audiences??[]}:a==="decisions"?{decisions:(_.decisions??[]).map(C=>({slot:C.slot,decision_id:C.decision_id??null,arm:C.arm??null,...C.variant&&{variant:C.variant}}))}:{recommendation_request_id:_.recommendation_request_id??null};w(A),r&&(o=rr({adapter:n.consent,timeoutMs:n.consentTimeoutMs,cookieDomain:n.consentCookieDomain,debug:n.debug,store:i&&{read:()=>u.items,write:a=>i.write(a,c?.peek()??null)},release(a){a.context&&(a.context.consent=o.stamp()),K(a),b.enqueue(a)},onStatus(a){if(a==="granted"&&(c?.persist(),l.persist(),h&&S(h),g.persist(),b.replayPersisted?.()),a==="denied"){b.clearPersisted?.(),c?.forget(),l.forget();try{sessionStorage.removeItem(x)}catch{}g.forget(),He(!0)}try{n.onConsentStatus?.(a)}catch(d){console.warn("[hp] onConsentStatus observer failed",d)}if(a==="granted"||a==="denied")for(let d of Se)try{d()}catch(_){console.warn("[hp] a consent listener failed",_)}},announce({action:a,state:d,previous:_,withdrawal:C}){d?.personalisation!==!0&&He(_?.personalisation===!0),C&&(b.discardQueued?.(),un()),ce({type:"track",event:"Consent Updated",properties:{action:a,state:d}},void 0,C),C&&b.flush()}}),o.start(),w());let fn=()=>n.holdout?Kt(n.holdout):null,pn=()=>Gt(n.holdout,F(M(n.getAnonymousId,null))).group;function io(a,d){if(!Array.isArray(a?.decisions))return a;let _=n.holdout?.readoutSlots??[],C=F(M(n.getAnonymousId,null));return{...a,decisions:a.decisions.map(V=>{let T=V?.variant==="bandit"||V?.variant==="default"?V.variant:!d&&V?.holdout!==!0&&_.includes(V?.slot)?ir(V.slot,C):null;return T?T==="default"?{...V,variant:T,decision_id:null}:{...V,variant:T}:V})}}function mn(a,d){if(p)return null;let _=a?.exposure,C=_?.holdout===!0,V=io(a,C);return g.remember(or(V)),!_?.token||_t.has(_.token)?null:(_t.add(_.token),v("Personalisation Exposed",{exposure_token:_.token,surface:_.surface,holdout:C,holdout_share:_.holdout_share??fn()?.holdout_share??null,personalised_share:_.personalised_share??fn()?.personalised_share??null,...so(_.surface,C,V)},d))}function hn(a){return y&&St(),y=null,O=null,N=null,U=null,a}return tr({track:(a,d,_)=>a==="Signed Out"?hn(v(a,d,_)):v(a,d,_),page(a,d){a??(a={});let _=n.pageType??null;a.type&&(_e.has(a.type)?(_=a.type,n.pageType=a.type):n.debug&&console.warn(`[hp] ignoring unknown page.type "${a.type}". Allowed: ${[..._e].join(", ")}`));let C=ce({type:"page",properties:{name:a.name??null,navigation_trigger:a.navigation_trigger??En(),previous_message_id:E()}},{page:{type:_},...dt(d)??{}});return C&&S(C.messageId),C},identify(a,d,_){let{userId:C,...V}=a&&typeof a=="object"?a:{},T=Ce(dt(d)?.identity_token);if(C!==void 0){let z=F(C);U=z?z===y?T??U:T:null,_===Le?N=z:O&&z&&z!==O?St():n.debug&&N&&z&&z!==N&&console.warn("[hp] identify names another userId than the identity option; using the new one"),y=z,z&&_!==Le&&(O=z)}else T&&y&&(U=T);let{identity_token:bt,...te}=dt(d)??{};return ce({type:"identify",traits:ui(V,n.debug)},U?{...te,identity_token:U}:te)},reset(){y&&St(),y=null,O=null,N=null,U=null,S("")},productViewed:(a,d)=>v("Product Viewed",a,d),productListViewed:(a,d)=>v("Product List Viewed",a,d),recommendationsViewed:(a,d)=>v("Recommendations Viewed",a,d),personalisationExposed:(a,d)=>v("Personalisation Exposed",a,d),recordExposure:mn,surfaceViewed({surface:a}={},d){if(!Qs.has(a)||!n.holdout||a!=="decisions"&&!Z())return null;let _=F(M(n.getAnonymousId,null)),C=Gt(n.holdout,_).group;if(C==="excluded")return null;let V=xn({sessionId:Fe(M(n.getSessionId,null),_),surface:a});return V?mn({exposure:{token:V,surface:a,holdout:C==="holdout"}},d):null},inHoldout:()=>pn()!=="personalised",personalisationGroup:pn,productClicked:(a,d)=>v("Product Clicked",a,d),productListFiltered:(a,d)=>v("Product List Filtered",a,d),productsSearched:(a,d)=>v("Products Searched",a,d),searchSuggestionsViewed:(a,d)=>v("Search Suggestions Viewed",a,d),productAdded:(a,d)=>v("Product Added",a,d),productRemoved:(a,d)=>v("Product Removed",a,d),cartUpdated:(a,d)=>v("Cart Updated",ri(a),d),identityLinked:(a,d)=>v("Identity Linked",a,d),slotEngaged:(a,d)=>p?null:v("Slot Engaged",a,d),productVariantSelected:(a,d)=>v("Product Variant Selected",a,d),cartViewed:(a,d)=>v("Cart Viewed",a,d),productAddedToWishlist:(a,d)=>v("Product Added to Wishlist",a,d),productRemovedFromWishlist:(a,d)=>v("Product Removed from Wishlist",a,d),wishlistProductAddedToCart:(a,d)=>v("Wishlist Product Added to Cart",a,d),productShared:(a,d)=>v("Product Shared",a,d),cartShared:(a,d)=>v("Cart Shared",a,d),couponEntered:(a,d)=>v("Coupon Entered",a,d),couponApplied:(a,d)=>v("Coupon Applied",a,d),couponDenied:(a,d)=>v("Coupon Denied",a,d),couponRemoved:(a,d)=>v("Coupon Removed",a,d),checkoutStarted:(a,d)=>v("Checkout Started",a,d),promotionViewed:(a,d)=>v("Promotion Viewed",a,d),promotionClicked:(a,d)=>v("Promotion Clicked",a,d),checkoutStepViewed:(a,d)=>v("Checkout Step Viewed",a,d),checkoutStepCompleted:(a,d)=>v("Checkout Step Completed",a,d),paymentInfoEntered:(a,d)=>v("Payment Info Entered",a,d),checkoutFailed:(a,d)=>v("Checkout Failed",a,d),signedIn:(a,d)=>v("Signed In",a,d),signedUp:(a,d)=>v("Signed Up",a,d),signedOut:a=>hn(v("Signed Out",{},a)),newsletterSubscribed:(a,d)=>v("Newsletter Subscribed",a,d),newsletterUnsubscribed:(a,d)=>v("Newsletter Unsubscribed",a,d),preferencesStated:(a,d)=>v("Preferences Stated",a,d),backInStockSubscribed:(a,d)=>v("Back In Stock Subscribed",a,d),productReviewed:(a,d)=>v("Product Reviewed",a,d),consentUpdated:(a,d)=>v("Consent Updated",a,d),flush:a=>b.flush(a),recommendationContext(){if(!Z())return{};try{return Y(),zt(Re())}catch{return{}}},get consent(){return o?o.state:null},servingHeaders:()=>$t(o?.state??null),get lastPageMessageId(){return E()},get anonymousId(){return F(M(n.getAnonymousId,null))},[ni](){return{writeKey:n.writeKey,storageKey:$(P("onsite"),n.propertyId),gatewayHost:n.apiHost,servingHost:n.servingHost??n.apiHost,settings:n.onsite??null,debug:n.debug===!0,preview:p,anonymousId:()=>F(M(n.getAnonymousId,null)),sessionId:()=>F(M(n.getSessionId,null)),identityToken:()=>Z()?U:null,analytics:s,personalisation:Z,consent:()=>n.getConsent(),headers:()=>$t(o?.state??null),pageUrl:()=>typeof location>"u"?null:Lt(location.href,n),locale:()=>Nt(M(n.getLocale,n.locale)),campaign:()=>p?A:lt(n.propertyId,{sessionId:m()}),basketValue:()=>{let a=Re().basketValue;return q??(Number.isFinite(a)?a:null)},sessionSignals:()=>Z()?(Y(),{...Re(),campaign:lt(n.propertyId,{sessionId:m()})}):null,visitContext:()=>{let a=Z();a&&Y();let d=a?Re():null,_=C=>Array.isArray(C)?C.filter(V=>typeof V=="string"&&V.length<=128).slice(0,20):[];return{...n.pageType?{page_type:n.pageType}:{},...ee?{product_id:ee}:{},...d?{basket:_(d.basketProducts),viewed:_(d.recentProducts)}:{}}},onBasket:a=>(J.add(a),()=>J.delete(a)),consentAnswered:()=>!o||o.status==="granted"||o.status==="denied",onConsentAnswered:a=>(Se.add(a),()=>Se.delete(a))}},[ti](){b.markFailing?.()},[ei](a,d,_){if(typeof this[a]=="function"){G=typeof _?.messageId=="string"&&typeof _?.timestamp=="string"?{messageId:_.messageId,timestamp:_.timestamp}:null;try{this[a](...Array.isArray(d)?d:[])}finally{G=null}}}})}var Ve=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite"),X=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.pending"),$e=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.listeners"),pt=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.suppressed"),mi=["shown","submitted","apply","closed","held"],Gr=10,ge=()=>typeof window>"u"?null:window;function Be(){try{for(let{resolve:e}of ge()?.[X]?.splice(0)??[])e(!1)}catch{}}var ye=Object.freeze({open(e){try{let t=ge();if(!t||typeof e!="string")return Promise.resolve(!1);if(t[Ve])return t[Ve].open(e);if(t[X]??(t[X]=[]),t[X].length<Gr)return new Promise(n=>t[X].push({slot:e,resolve:n}))}catch{}return Promise.resolve(!1)},show(e){return ye.open(e)},on(e,t){var n;try{let r=ge();return!r||!mi.includes(e)||typeof t!="function"?()=>{}:(r[$e]??(r[$e]={}),((n=r[$e])[e]??(n[e]=new Set)).add(t),()=>r[$e][e].delete(t))}catch{return()=>{}}},suppress(e="page"){try{let t=ge();if(!t)return;(t[pt]??(t[pt]=new Set)).add(String(e)),t[Ve]?.suppress()}catch{}},unsuppress(e){try{let t=ge()?.[pt];e===void 0?t?.clear():t?.delete(String(e))}catch{}},ready(){try{let e=ge();if(!e)return Promise.resolve([]);if(e[Ve])return Promise.resolve(ye.debug());if(e[X]??(e[X]=[]),e[X].length<Gr)return new Promise(t=>e[X].push({slot:null,resolve:()=>t(ye.debug())}))}catch{}return Promise.resolve([])},debug(){try{return ge()?.[Ve]?.debug()??[]}catch{return[]}}});function zr(e){let t=typeof document>"u"?null:document.currentScript?.src;return t?new URL(e,t).href:null}var mt=new Map;function Wr(e,t){return window[t]?Promise.resolve(window[t]):e?(mt.has(t)||mt.set(t,new Promise((n,r)=>{let o=document.createElement("script");o.src=e,o.async=!0,o.onload=()=>window[t]?n(window[t]):r(new Error(`${e} did not register`)),o.onerror=()=>r(new Error(`${e} did not load`)),document.head.append(o)}).finally(()=>mt.delete(t))),mt.get(t)):Promise.reject(new Error("the CDN script\u2019s own URL is unknown"))}var hi=zr("onsite.min.js"),ln=()=>Wr(hi,Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.module"));var dn=Symbol.for("@thg-agentic/hyper-personalisation-web.bootstrap"),gi=Symbol.for("@thg-agentic/hyper-personalisation-web.drain"),yi=Symbol.for("@thg-agentic/hyper-personalisation-web.carry"),Jr=Symbol.for("@thg-agentic/hyper-personalisation-web.replay"),wi=Symbol.for("@thg-agentic/hyper-personalisation-web.unreachable"),Si=Symbol.for("@thg-agentic/hyper-personalisation-web.assignment"),_i=Symbol.for("@thg-agentic/hyper-personalisation-web.recommendation-context"),yt=e=>e?()=>j(e):()=>null,Zr={didomi:e=>Kn({purposes:e.purposes}),onetrust:e=>Gn({groups:e.groups,impliedConsent:e.impliedConsent}),cookie:e=>zn({name:e.name,categories:e.categories,refusedValue:e.refusedValue,source:e.source,changeEvent:e.changeEvent}),forwarded:e=>Wn({name:e.name}),static:e=>{if(!e.state||typeof e.state!="object")throw new Error('consent.state is required for provider "static"');return Jn(e.state)}},Yr=Object.keys(Zr),we=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ht=e=>typeof e=="string"&&e!=="",bi=e=>Array.isArray(e)&&e.every(t=>typeof t=="string"),Qr=e=>we(e)&&typeof e.read=="function";function Ii(e,t={}){let n=[];if(!we(e))return["config must be { writeKey, apiHost? }"];ht(e.writeKey)||n.push("writeKey is required"),ie(e.apiHost)||n.push("apiHost, when given, must be a host or an http(s) origin"),t.propertyId!==void 0&&!ht(t.propertyId)&&n.push("propertyId must be a string");let{consent:r}=t;if(!Qr(r)&&!(we(r)&&Yr.includes(r.provider))&&n.push(`consent must be a consent adapter or { provider: ${Yr.join(" | ")} }`),t.autocapture!==void 0&&t.autocapture!==!1&&!we(t.autocapture)&&n.push("autocapture must be false or { promotions, productLists, recommendations }"),t.onsite!==void 0&&typeof t.onsite!="boolean"&&!we(t.onsite)&&n.push("onsite must be true, false or the onsite options"),t.beforeSend!==void 0&&typeof t.beforeSend!="function"&&n.push("beforeSend must be a function"),t.identityCookies!==void 0)if(!we(t.identityCookies))n.push("identityCookies must be an object");else for(let o of["anonymousId","sessionId"]){let s=t.identityCookies[o];s!==void 0&&!ht(s)&&n.push(`identityCookies.${o} must be a cookie name`)}for(let o of["getCurrency","getShipToCountry","getLocale"])t[o]!==void 0&&typeof t[o]!="function"&&n.push(`${o} must be a function`);return t.dataLayer!==void 0&&(we(t.dataLayer)?(t.dataLayer.name!==void 0&&!ht(t.dataLayer.name)&&n.push("dataLayer.name must be a string"),t.dataLayer.ignore!==void 0&&!bi(t.dataLayer.ignore)&&n.push("dataLayer.ignore must be an array of strings")):n.push("dataLayer must be an object")),n}function ki(e,t,n){if(Qr(e))return Bt(e,t.consentPurposes);let{provider:r,...o}=e,s=n?.consent?.[r]??Zr[r];return Bt(s(o),t.consentPurposes)}var wt=(e,t,n)=>`${e??""}|${t??""}${n?"|v":""}`,xi=(e,t,n,r)=>e===wt(t,n,!0)||!r&&e===wt(t,n,!1),Ai=e=>{if(e.context?.identity_token===void 0)return e;let{identity_token:t,...n}=e.context;return{...e,context:n}},eo=e=>{try{return sessionStorage.getItem(e)}catch{return null}};function vi(e,t){let n=F(t?.userId),r=ft(t?.emailSha256);if(!n&&!r)return null;let o=eo($(P("identified"),e));return xi(o,n,r,n!==null&&Ce(t?.token)!==null)?null:{...n?{userId:n}:{},...r?{email_sha256:r}:{}}}async function Ei({writeKey:e,apiHost:t},n){if(n.settings!==void 0)return{settings:en(n.settings),revalidated:null};let r=Er(t,e),o=Cr(e);if(o)return{settings:o,revalidated:r,fetched:r};let s=await r;return s?{settings:s,revalidated:r,fetched:r}:{settings:Qt,revalidated:null,fetched:r}}function to(e,t){let n=t??{},r=typeof window<"u"?window:null;if(r?.[dn])return r[dn];let o=Bn(e?.writeKey,()=>{let{analytics:i}=Oe(j(P("consent")));return i===!0||i===null&&n.holdAcrossPages===!0}),s=Li(e,n,o);if(r){let i=n.extend?.getSessionId??yt(n.identityCookies?.sessionId),u=yt(n.identityCookies?.anonymousId);r[Si]=({slot:c,arm:l}={})=>kn({sessionId:Fe(i(),u()),slot:c,arm:l}),r[dn]=s,r[yi]=o,r[gi]?.(s)}return s}function Ci(){let e=globalThis.performance?.now?.();return new Date(Date.now()-(Number.isFinite(e)?e:0)).toISOString()}function Xr(e,t){if(t===!1)return()=>{};let n={promotions:!0,productLists:!0,recommendations:!0,exposures:!0,...t},r=s=>s&&typeof s=="object"?s:{},o=[];try{n.promotions&&o.push(At(e,r(n.promotions))),n.productLists&&o.push(xt(e,r(n.productLists))),n.recommendations&&o.push(vt(e,r(n.recommendations))),n.exposures&&o.push(kt(e,r(n.exposures)))}catch(s){console.warn("[hp] autocapture not started:",s?.message??s)}return()=>{for(let s of o)s()}}var Pi=1e3;function Oi(e,t,n,r){if(!t)return Be();let o=n.onsite?ln():null;o?.catch(()=>{}),(r?Promise.race([r.then(i=>i??n),new Promise(i=>setTimeout(()=>i(n),Pi))]):Promise.resolve(n)).then(i=>{let u=i.enabled?i.onsite:null;if(!u)return Be();let c=t===!0?{}:t;return(o??ln()).then(l=>l.startOnsite(e,{...c,settings:c.settings??u}))}).catch(i=>{Be(),console.warn("[hp] onsite not started:",i?.message??i)})}function gt(e){return e.close(),Be(),null}async function Li(e,t,n){try{let r=Ii(e,t);if(r.length)return console.warn(`[hp] not started, the configuration is invalid: ${r.join("; ")}`),gt(n);Ke(t.storageNames),Ge();let{writeKey:o}=e,[{settings:s,revalidated:i,fetched:u},c]=await Promise.all([Ei(e,t),Promise.resolve(t.identity).catch(()=>null)]),l=i?s:null,f=!1,p=()=>f&&l&&Pr(o,l);if(i?.then(g=>{g&&(l=g,g.enabled?p():tn(o))}),!s.enabled)return t.debug&&console.info("[hp] off: the settings for this write key do not enable it"),gt(n);let m=t.propertyId??s.propertyId??null;if(!m&&s!==Qt)return console.warn("[hp] not started: this write key covers several properties, so propertyId is required"),gt(n);let{preset:A}=t,w=vi(m,c),k=t.debug===!0||s.debug?.enabled===!0||er(s.debug?.tokenSha256??null,P("debug")),b=F(c?.userId),x=Kr({apiHost:Ar(e.apiHost,s.apiHost),servingHost:ie(e.apiHost),onsite:s.onsite??null,writeKey:o,propertyId:m,pageType:_e.has(t.pageType)?t.pageType:void 0,environment:s.environment,queryParamAllowlist:s.queryParamAllowlist??void 0,plan:s.plan,sampleRate:s.sampleRate??1,holdout:s.holdouts?.[m],getCurrency:t.getCurrency,getShipToCountry:t.getShipToCountry,getLocale:t.getLocale,consent:ki(t.consent,s,A),consentCookieDomain:t.consentCookieDomain,storageNames:t.storageNames,holdAcrossPages:t.holdAcrossPages===!0,mintAnonymousId:t.mintAnonymousId,debug:k,anonymousIdSource:s.anonymousId??void 0,getAnonymousId:yt(t.identityCookies?.anonymousId),getSessionId:t.identityCookies?.sessionId?yt(t.identityCookies.sessionId):void 0,getUserId:()=>b,identityToken:c?.token,beforeSend:t.beforeSend,...t.extend,onConsentStatus(g){if(g==="granted"&&(f=!0,p()),g==="denied"){tn(o);try{sessionStorage.removeItem($(P("identified"),m))}catch{}}t.extend?.onConsentStatus?.(g)},onEvent(g){if(g.type==="identify"){let y=$(P("identified"),m),O=F(g.userId),N=ft(g.traits?.email_sha256),U=!!g.context?.identity_token||eo(y)===wt(O,N,!0);try{sessionStorage.setItem(y,wt(O,N,U))}catch{}}t.extend?.onEvent?.(Ai(g))}});typeof window<"u"&&(window[_i]=()=>x.recommendationContext()),u?.then(g=>g===null&&x[wi]());for(let[g,y,O]of n.take())try{x[Jr](g,y,O)}catch(N){console.warn(`[hp] carried ${g} failed`,N)}x[Jr]("page",[t.pageType?{type:t.pageType}:{}],{messageId:oe(),timestamp:Ci()});let h=Xr(x,t.autocapture),E=x.page;x.page=qt("page",(...g)=>{let y=E(...g);return h(),h=Xr(x,t.autocapture),y});let S=typeof window<"u"?window:null;if(S?.addEventListener?.("pageshow",g=>{g.persisted&&x.page({navigation_trigger:"back_forward"})}),t.dataLayer&&S){let g=t.dataLayer.name??"dataLayer";S[g]=S[g]||[],Qn(x,{...A,dataLayer:S[g],ignore:[...A?.ignore??[],...t.dataLayer.ignore??[]],onError:y=>k&&console.warn("[hp] dataLayer mapping failed",y)})}return w&&x.identify(w,void 0,Le),x.onsite=ye,Oi(x,t.onsite,s,i),x}catch(r){return console.warn("[hp] not started:",r?.message??r),gt(n)}}function no(e){e.initialized=!0,to(e._config,e._options).then(t=>{let n=e.splice(0);if(!t){for(let r of e.methods??[])e[r]=()=>e;return}e.client=t;for(let[r,o]of Object.entries(t))typeof o=="function"&&(e[r]=o);for(let[r,...o]of n)try{t[r]?.(...o)}catch(s){console.warn(`[hp] queued ${r} failed`,s)}})}var B=window.hp=window.hp||[];B.servingHeaders??(B.servingHeaders=()=>({}));B.inHoldout??(B.inHoldout=()=>!0);B.personalisationGroup??(B.personalisationGroup=()=>"excluded");B.recommendationContext??(B.recommendationContext=()=>({}));B.onsite??(B.onsite=ye);B.initialized||(B._config?no(B):B.load=(e,t)=>{B._config=e,B._options=t??{},no(B)});})();
3
+ `)}`;if(n.throwOnInvalid)throw new Ie(z);console.error(z)}}n.debug&&console.debug("[hp]",T.event??T.type,T);let bt=fi(T);return bt>cn?(k(`${T.event??T.type} not sent: ${bt} bytes, over the ${cn}-byte limit for one event`),null):(oo(T,_),T)}function K(a){if((a.type==="track"||a.type==="page")&&ro(a),n.onEvent)try{n.onEvent(a)}catch(d){console.warn("[hp] onEvent observer failed",d)}}let Z=()=>r&&o?.state?.personalisation===!0,Y=()=>yr(M(n.getSessionId,null),n.propertyId),ve=!1;function ro(a){try{if(Z()){Y();let d=Ir(a.event,a.properties,lt(n.propertyId,{sessionId:m()}));a.type==="track"&&fr(zt(d)),ve=!0}else He()}catch(d){n.debug&&console.warn("[hp] the visit was not recorded",d)}}function He(a=!1){pr(),(a||ve)&&wr(),ve=!1}function St(){l.forget(),g.forget(),_t.clear(),c?.forget(),He(!0),dn()}function oo(a,d){!r||d||o.admits()?(K(a),b.enqueue(a)):o.hold(a)}let v=(a,d,_)=>ce({type:"track",event:a,properties:d??{}},_),_t=new Set,so=(a,d,_)=>a==="audiences"?{audiences:d?null:_.audiences??[]}:a==="decisions"?{decisions:(_.decisions??[]).map(C=>({slot:C.slot,decision_id:C.decision_id??null,arm:C.arm??null,...C.variant&&{variant:C.variant}}))}:{recommendation_request_id:_.recommendation_request_id??null};w(A),r&&(o=sr({adapter:n.consent,timeoutMs:n.consentTimeoutMs,cookieDomain:n.consentCookieDomain,debug:n.debug,store:i&&{read:()=>u.items,write:a=>i.write(a,c?.peek()??null)},release(a){a.context&&(a.context.consent=o.stamp()),K(a),b.enqueue(a)},onStatus(a){if(a==="granted"&&(c?.persist(),l.persist(),h&&S(h),g.persist(),b.replayPersisted?.()),a==="denied"){b.clearPersisted?.(),c?.forget(),l.forget();try{sessionStorage.removeItem(x)}catch{}g.forget(),He(!0)}try{n.onConsentStatus?.(a)}catch(d){console.warn("[hp] onConsentStatus observer failed",d)}if(a==="granted"||a==="denied")for(let d of Se)try{d()}catch(_){console.warn("[hp] a consent listener failed",_)}},announce({action:a,state:d,previous:_,withdrawal:C}){d?.personalisation!==!0&&He(_?.personalisation===!0),C&&(b.discardQueued?.(),dn()),ce({type:"track",event:"Consent Updated",properties:{action:a,state:d}},void 0,C),C&&b.flush()}}),o.start(),w());let mn=()=>n.holdout?Kt(n.holdout):null,hn=()=>Gt(n.holdout,F(M(n.getAnonymousId,null))).group;function io(a,d){if(!Array.isArray(a?.decisions))return a;let _=n.holdout?.readoutSlots??[],C=F(M(n.getAnonymousId,null));return{...a,decisions:a.decisions.map(V=>{let T=V?.variant==="bandit"||V?.variant==="default"?V.variant:!d&&V?.holdout!==!0&&_.includes(V?.slot)?cr(V.slot,C):null;return T?T==="default"?{...V,variant:T,decision_id:null}:{...V,variant:T}:V})}}function gn(a,d){if(p)return null;let _=a?.exposure,C=_?.holdout===!0,V=io(a,C);return g.remember(ir(V)),!_?.token||_t.has(_.token)?null:(_t.add(_.token),v("Personalisation Exposed",{exposure_token:_.token,surface:_.surface,holdout:C,holdout_share:_.holdout_share??mn()?.holdout_share??null,personalised_share:_.personalised_share??mn()?.personalised_share??null,...so(_.surface,C,V)},d))}function yn(a){return y&&St(),y=null,O=null,N=null,U=null,a}return rr({track:(a,d,_)=>a==="Signed Out"?yn(v(a,d,_)):v(a,d,_),page(a,d){a??(a={});let _=n.pageType??null;a.type&&(_e.has(a.type)?(_=a.type,n.pageType=a.type):n.debug&&console.warn(`[hp] ignoring unknown page.type "${a.type}". Allowed: ${[..._e].join(", ")}`));let C=ce({type:"page",properties:{name:a.name??null,navigation_trigger:a.navigation_trigger??Pn(),previous_message_id:E()}},{page:{type:_},...dt(d)??{}});return C&&S(C.messageId),C},identify(a,d,_){let{userId:C,...V}=a&&typeof a=="object"?a:{},T=Ce(dt(d)?.identity_token);if(C!==void 0){let z=F(C);U=z?z===y?T??U:T:null,_===Le?N=z:O&&z&&z!==O?St():n.debug&&N&&z&&z!==N&&console.warn("[hp] identify names another userId than the identity option; using the new one"),y=z,z&&_!==Le&&(O=z)}else T&&y&&(U=T);let{identity_token:bt,...te}=dt(d)??{};return ce({type:"identify",traits:ui(V,n.debug)},U?{...te,identity_token:U}:te)},reset(){y&&St(),y=null,O=null,N=null,U=null,S("")},productViewed:(a,d)=>v("Product Viewed",a,d),productListViewed:(a,d)=>v("Product List Viewed",a,d),recommendationsViewed:(a,d)=>v("Recommendations Viewed",a,d),personalisationExposed:(a,d)=>v("Personalisation Exposed",a,d),recordExposure:gn,surfaceViewed({surface:a}={},d){if(!Qs.has(a)||!n.holdout||a!=="decisions"&&!Z())return null;let _=F(M(n.getAnonymousId,null)),C=Gt(n.holdout,_).group;if(C==="excluded")return null;let V=vn({sessionId:Fe(M(n.getSessionId,null),_),surface:a});return V?gn({exposure:{token:V,surface:a,holdout:C==="holdout"}},d):null},inHoldout:()=>hn()!=="personalised",personalisationGroup:hn,productClicked:(a,d)=>v("Product Clicked",a,d),productListFiltered:(a,d)=>v("Product List Filtered",a,d),productsSearched:(a,d)=>v("Products Searched",a,d),searchSuggestionsViewed:(a,d)=>v("Search Suggestions Viewed",a,d),productAdded:(a,d)=>v("Product Added",a,d),productRemoved:(a,d)=>v("Product Removed",a,d),cartUpdated:(a,d)=>v("Cart Updated",ri(a),d),identityLinked:(a,d)=>v("Identity Linked",a,d),slotEngaged:(a,d)=>p?null:v("Slot Engaged",a,d),productVariantSelected:(a,d)=>v("Product Variant Selected",a,d),cartViewed:(a,d)=>v("Cart Viewed",a,d),productAddedToWishlist:(a,d)=>v("Product Added to Wishlist",a,d),productRemovedFromWishlist:(a,d)=>v("Product Removed from Wishlist",a,d),wishlistProductAddedToCart:(a,d)=>v("Wishlist Product Added to Cart",a,d),productShared:(a,d)=>v("Product Shared",a,d),cartShared:(a,d)=>v("Cart Shared",a,d),couponEntered:(a,d)=>v("Coupon Entered",a,d),couponApplied:(a,d)=>v("Coupon Applied",a,d),couponDenied:(a,d)=>v("Coupon Denied",a,d),couponRemoved:(a,d)=>v("Coupon Removed",a,d),checkoutStarted:(a,d)=>v("Checkout Started",a,d),promotionViewed:(a,d)=>v("Promotion Viewed",a,d),promotionClicked:(a,d)=>v("Promotion Clicked",a,d),checkoutStepViewed:(a,d)=>v("Checkout Step Viewed",a,d),checkoutStepCompleted:(a,d)=>v("Checkout Step Completed",a,d),paymentInfoEntered:(a,d)=>v("Payment Info Entered",a,d),checkoutFailed:(a,d)=>v("Checkout Failed",a,d),signedIn:(a,d)=>v("Signed In",a,d),signedUp:(a,d)=>v("Signed Up",a,d),signedOut:a=>yn(v("Signed Out",{},a)),newsletterSubscribed:(a,d)=>v("Newsletter Subscribed",a,d),newsletterUnsubscribed:(a,d)=>v("Newsletter Unsubscribed",a,d),preferencesStated:(a,d)=>v("Preferences Stated",a,d),backInStockSubscribed:(a,d)=>v("Back In Stock Subscribed",a,d),productReviewed:(a,d)=>v("Product Reviewed",a,d),consentUpdated:(a,d)=>v("Consent Updated",a,d),flush:a=>b.flush(a),recommendationContext(){if(!Z())return{};try{return Y(),zt(Re())}catch{return{}}},get consent(){return o?o.state:null},servingHeaders:()=>$t(o?.state??null),get lastPageMessageId(){return E()},get anonymousId(){return F(M(n.getAnonymousId,null))},[ni](){return{writeKey:n.writeKey,library:{name:ln,version:un},storageKey:$(P("onsite"),n.propertyId),gatewayHost:n.apiHost,servingHost:n.servingHost??n.apiHost,settings:n.onsite??null,debug:n.debug===!0,preview:p,anonymousId:()=>F(M(n.getAnonymousId,null)),sessionId:()=>F(M(n.getSessionId,null)),identityToken:()=>Z()?U:null,analytics:s,personalisation:Z,consent:()=>n.getConsent(),headers:()=>$t(o?.state??null),pageUrl:()=>typeof location>"u"?null:Lt(location.href,n),locale:()=>Nt(M(n.getLocale,n.locale)),campaign:()=>p?A:lt(n.propertyId,{sessionId:m()}),basketValue:()=>{let a=Re().basketValue;return q??(Number.isFinite(a)?a:null)},sessionSignals:()=>Z()?(Y(),{...Re(),campaign:lt(n.propertyId,{sessionId:m()})}):null,visitContext:()=>{let a=Z();a&&Y();let d=a?Re():null,_=C=>Array.isArray(C)?C.filter(V=>typeof V=="string"&&V.length<=128).slice(0,20):[];return{...n.pageType?{page_type:n.pageType}:{},...ee?{product_id:ee}:{},...d?{basket:_(d.basketProducts),viewed:_(d.recentProducts)}:{}}},onBasket:a=>(J.add(a),()=>J.delete(a)),consentAnswered:()=>!o||o.status==="granted"||o.status==="denied",onConsentAnswered:a=>(Se.add(a),()=>Se.delete(a))}},[ti](){b.markFailing?.()},[ei](a,d,_){if(typeof this[a]=="function"){G=typeof _?.messageId=="string"&&typeof _?.timestamp=="string"?{messageId:_.messageId,timestamp:_.timestamp}:null;try{this[a](...Array.isArray(d)?d:[])}finally{G=null}}}})}var Ve=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite"),X=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.pending"),$e=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.listeners"),pt=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.suppressed"),mi=["shown","submitted","apply","closed","held","nothing"],Gr=10,ge=()=>typeof window>"u"?null:window;function Be(){try{for(let{resolve:e}of ge()?.[X]?.splice(0)??[])e(!1)}catch{}}var ye=Object.freeze({open(e){try{let t=ge();if(!t||typeof e!="string")return Promise.resolve(!1);if(t[Ve])return t[Ve].open(e);if(t[X]??(t[X]=[]),t[X].length<Gr)return new Promise(n=>t[X].push({slot:e,resolve:n}))}catch{}return Promise.resolve(!1)},show(e){return ye.open(e)},on(e,t){var n;try{let r=ge();return!r||!mi.includes(e)||typeof t!="function"?()=>{}:(r[$e]??(r[$e]={}),((n=r[$e])[e]??(n[e]=new Set)).add(t),()=>r[$e][e].delete(t))}catch{return()=>{}}},suppress(e="page"){try{let t=ge();if(!t)return;(t[pt]??(t[pt]=new Set)).add(String(e)),t[Ve]?.suppress()}catch{}},unsuppress(e){try{let t=ge()?.[pt];e===void 0?t?.clear():t?.delete(String(e))}catch{}},ready(){try{let e=ge();if(!e)return Promise.resolve([]);if(e[Ve])return Promise.resolve(ye.debug());if(e[X]??(e[X]=[]),e[X].length<Gr)return new Promise(t=>e[X].push({slot:null,resolve:()=>t(ye.debug())}))}catch{}return Promise.resolve([])},debug(){try{return ge()?.[Ve]?.debug()??[]}catch{return[]}}});function zr(e){let t=typeof document>"u"?null:document.currentScript?.src;return t?new URL(e,t).href:null}var mt=new Map;function Wr(e,t){return window[t]?Promise.resolve(window[t]):e?(mt.has(t)||mt.set(t,new Promise((n,r)=>{let o=document.createElement("script");o.src=e,o.async=!0,o.onload=()=>window[t]?n(window[t]):r(new Error(`${e} did not register`)),o.onerror=()=>r(new Error(`${e} did not load`)),document.head.append(o)}).finally(()=>mt.delete(t))),mt.get(t)):Promise.reject(new Error("the CDN script\u2019s own URL is unknown"))}var hi=zr("onsite.min.js"),fn=()=>Wr(hi,Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.module"));var pn=Symbol.for("@thg-agentic/hyper-personalisation-web.bootstrap"),gi=Symbol.for("@thg-agentic/hyper-personalisation-web.drain"),yi=Symbol.for("@thg-agentic/hyper-personalisation-web.carry"),Jr=Symbol.for("@thg-agentic/hyper-personalisation-web.replay"),wi=Symbol.for("@thg-agentic/hyper-personalisation-web.unreachable"),Si=Symbol.for("@thg-agentic/hyper-personalisation-web.assignment"),_i=Symbol.for("@thg-agentic/hyper-personalisation-web.recommendation-context"),yt=e=>e?()=>j(e):()=>null,Zr={didomi:e=>zn({purposes:e.purposes}),onetrust:e=>Wn({groups:e.groups,impliedConsent:e.impliedConsent}),cookie:e=>Jn({name:e.name,categories:e.categories,refusedValue:e.refusedValue,source:e.source,changeEvent:e.changeEvent}),forwarded:e=>Yn({name:e.name}),static:e=>{if(!e.state||typeof e.state!="object")throw new Error('consent.state is required for provider "static"');return Xn(e.state)}},Yr=Object.keys(Zr),we=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ht=e=>typeof e=="string"&&e!=="",bi=e=>Array.isArray(e)&&e.every(t=>typeof t=="string"),Qr=e=>we(e)&&typeof e.read=="function";function Ii(e,t={}){let n=[];if(!we(e))return["config must be { writeKey, apiHost? }"];ht(e.writeKey)||n.push("writeKey is required"),ie(e.apiHost)||n.push("apiHost, when given, must be a host or an http(s) origin"),t.propertyId!==void 0&&!ht(t.propertyId)&&n.push("propertyId must be a string");let{consent:r}=t;if(!Qr(r)&&!(we(r)&&Yr.includes(r.provider))&&n.push(`consent must be a consent adapter or { provider: ${Yr.join(" | ")} }`),t.autocapture!==void 0&&t.autocapture!==!1&&!we(t.autocapture)&&n.push("autocapture must be false or { promotions, productLists, recommendations }"),t.onsite!==void 0&&typeof t.onsite!="boolean"&&!we(t.onsite)&&n.push("onsite must be true, false or the onsite options"),t.beforeSend!==void 0&&typeof t.beforeSend!="function"&&n.push("beforeSend must be a function"),t.identityCookies!==void 0)if(!we(t.identityCookies))n.push("identityCookies must be an object");else for(let o of["anonymousId","sessionId"]){let s=t.identityCookies[o];s!==void 0&&!ht(s)&&n.push(`identityCookies.${o} must be a cookie name`)}for(let o of["getCurrency","getShipToCountry","getLocale"])t[o]!==void 0&&typeof t[o]!="function"&&n.push(`${o} must be a function`);return t.dataLayer!==void 0&&(we(t.dataLayer)?(t.dataLayer.name!==void 0&&!ht(t.dataLayer.name)&&n.push("dataLayer.name must be a string"),t.dataLayer.ignore!==void 0&&!bi(t.dataLayer.ignore)&&n.push("dataLayer.ignore must be an array of strings")):n.push("dataLayer must be an object")),n}function ki(e,t,n){if(Qr(e))return Bt(e,t.consentPurposes);let{provider:r,...o}=e,s=n?.consent?.[r]??Zr[r];return Bt(s(o),t.consentPurposes)}var wt=(e,t,n)=>`${e??""}|${t??""}${n?"|v":""}`,xi=(e,t,n,r)=>e===wt(t,n,!0)||!r&&e===wt(t,n,!1),Ai=e=>{if(e.context?.identity_token===void 0)return e;let{identity_token:t,...n}=e.context;return{...e,context:n}},eo=e=>{try{return sessionStorage.getItem(e)}catch{return null}};function vi(e,t){let n=F(t?.userId),r=ft(t?.emailSha256);if(!n&&!r)return null;let o=eo($(P("identified"),e));return xi(o,n,r,n!==null&&Ce(t?.token)!==null)?null:{...n?{userId:n}:{},...r?{email_sha256:r}:{}}}async function Ei({writeKey:e,apiHost:t},n){if(n.settings!==void 0)return{settings:en(n.settings),revalidated:null};let r=Pr(t,e),o=Or(e);if(o)return{settings:o,revalidated:r,fetched:r};let s=await r;return s?{settings:s,revalidated:r,fetched:r}:{settings:Qt,revalidated:null,fetched:r}}function to(e,t){let n=t??{},r=typeof window<"u"?window:null;if(r?.[pn])return r[pn];let o=Hn(e?.writeKey,()=>{let{analytics:i}=Oe(j(P("consent")));return i===!0||i===null&&n.holdAcrossPages===!0}),s=Li(e,n,o);if(r){let i=n.extend?.getSessionId??yt(n.identityCookies?.sessionId),u=yt(n.identityCookies?.anonymousId);r[Si]=({slot:c,arm:l}={})=>An({sessionId:Fe(i(),u()),slot:c,arm:l}),r[pn]=s,r[yi]=o,r[gi]?.(s)}return s}function Ci(){let e=globalThis.performance?.now?.();return new Date(Date.now()-(Number.isFinite(e)?e:0)).toISOString()}function Xr(e,t){if(t===!1)return()=>{};let n={promotions:!0,productLists:!0,recommendations:!0,exposures:!0,...t},r=s=>s&&typeof s=="object"?s:{},o=[];try{n.promotions&&o.push(At(e,r(n.promotions))),n.productLists&&o.push(xt(e,r(n.productLists))),n.recommendations&&o.push(vt(e,r(n.recommendations))),n.exposures&&o.push(kt(e,r(n.exposures)))}catch(s){console.warn("[hp] autocapture not started:",s?.message??s)}return()=>{for(let s of o)s()}}var Pi=1e3;function Oi(e,t,n,r){if(!t)return Be();let o=n.onsite?fn():null;o?.catch(()=>{}),(r?Promise.race([r.then(i=>i??n),new Promise(i=>setTimeout(()=>i(n),Pi))]):Promise.resolve(n)).then(i=>{let u=i.enabled?i.onsite:null;if(!u)return Be();let c=t===!0?{}:t;return(o??fn()).then(l=>l.startOnsite(e,{...c,settings:c.settings??u}))}).catch(i=>{Be(),console.warn("[hp] onsite not started:",i?.message??i)})}function gt(e){return e.close(),Be(),null}async function Li(e,t,n){try{let r=Ii(e,t);if(r.length)return console.warn(`[hp] not started, the configuration is invalid: ${r.join("; ")}`),gt(n);Ke(t.storageNames),Ge();let{writeKey:o}=e,[{settings:s,revalidated:i,fetched:u},c]=await Promise.all([Ei(e,t),Promise.resolve(t.identity).catch(()=>null)]),l=i?s:null,f=!1,p=()=>f&&l&&Lr(o,l);if(i?.then(g=>{g&&(l=g,g.enabled?p():tn(o))}),!s.enabled)return t.debug&&console.info("[hp] off: the settings for this write key do not enable it"),gt(n);let m=t.propertyId??s.propertyId??null;if(!m&&s!==Qt)return console.warn("[hp] not started: this write key covers several properties, so propertyId is required"),gt(n);let{preset:A}=t,w=vi(m,c),k=t.debug===!0||s.debug?.enabled===!0||nr(s.debug?.tokenSha256??null,P("debug")),b=F(c?.userId),x=Kr({apiHost:Er(e.apiHost,s.apiHost),servingHost:ie(e.apiHost),onsite:s.onsite??null,writeKey:o,propertyId:m,pageType:_e.has(t.pageType)?t.pageType:void 0,environment:s.environment,queryParamAllowlist:s.queryParamAllowlist??void 0,plan:s.plan,sampleRate:s.sampleRate??1,holdout:s.holdouts?.[m],getCurrency:t.getCurrency,getShipToCountry:t.getShipToCountry,getLocale:t.getLocale,consent:ki(t.consent,s,A),consentCookieDomain:t.consentCookieDomain,storageNames:t.storageNames,holdAcrossPages:t.holdAcrossPages===!0,mintAnonymousId:t.mintAnonymousId,debug:k,anonymousIdSource:s.anonymousId??void 0,getAnonymousId:yt(t.identityCookies?.anonymousId),getSessionId:t.identityCookies?.sessionId?yt(t.identityCookies.sessionId):void 0,getUserId:()=>b,identityToken:c?.token,beforeSend:t.beforeSend,...t.extend,onConsentStatus(g){if(g==="granted"&&(f=!0,p()),g==="denied"){tn(o);try{sessionStorage.removeItem($(P("identified"),m))}catch{}}t.extend?.onConsentStatus?.(g)},onEvent(g){if(g.type==="identify"){let y=$(P("identified"),m),O=F(g.userId),N=ft(g.traits?.email_sha256),U=!!g.context?.identity_token||eo(y)===wt(O,N,!0);try{sessionStorage.setItem(y,wt(O,N,U))}catch{}}t.extend?.onEvent?.(Ai(g))}});typeof window<"u"&&(window[_i]=()=>x.recommendationContext()),u?.then(g=>g===null&&x[wi]());for(let[g,y,O]of n.take())try{x[Jr](g,y,O)}catch(N){console.warn(`[hp] carried ${g} failed`,N)}x[Jr]("page",[t.pageType?{type:t.pageType}:{}],{messageId:oe(),timestamp:Ci()});let h=Xr(x,t.autocapture),E=x.page;x.page=qt("page",(...g)=>{let y=E(...g);return h(),h=Xr(x,t.autocapture),y});let S=typeof window<"u"?window:null;if(S?.addEventListener?.("pageshow",g=>{g.persisted&&x.page({navigation_trigger:"back_forward"})}),t.dataLayer&&S){let g=t.dataLayer.name??"dataLayer";S[g]=S[g]||[],tr(x,{...A,dataLayer:S[g],ignore:[...A?.ignore??[],...t.dataLayer.ignore??[]],onError:y=>k&&console.warn("[hp] dataLayer mapping failed",y)})}return w&&x.identify(w,void 0,Le),x.onsite=ye,Oi(x,t.onsite,s,i),x}catch(r){return console.warn("[hp] not started:",r?.message??r),gt(n)}}function no(e){e.initialized=!0,to(e._config,e._options).then(t=>{let n=e.splice(0);if(!t){for(let r of e.methods??[])e[r]=()=>e;return}e.client=t;for(let[r,o]of Object.entries(t))typeof o=="function"&&(e[r]=o);for(let[r,...o]of n)try{t[r]?.(...o)}catch(s){console.warn(`[hp] queued ${r} failed`,s)}})}var B=window.hp=window.hp||[];B.servingHeaders??(B.servingHeaders=()=>({}));B.inHoldout??(B.inHoldout=()=>!0);B.personalisationGroup??(B.personalisationGroup=()=>"excluded");B.recommendationContext??(B.recommendationContext=()=>({}));B.onsite??(B.onsite=ye);B.initialized||(B._config?no(B):B.load=(e,t)=>{B._config=e,B._options=t??{},no(B)});})();
@@ -1 +1,15 @@
1
- (()=>{function b(r,e,t,i,o){let n=r("select","i");n.setAttribute("aria-label",e);for(let[a,s]of[["",t],...i]){let l=r("option","",s);l.value=a,l.selected=a===o,n.append(l)}return n}var D=r=>String(r).padStart(2,"0"),T=120,I=/^-?\d{1,10}(?:\.(\d{1,10}))?$/,N=1e9;function O(r){try{let e=new Intl.DateTimeFormat(r,{month:"long",timeZone:"UTC"});return{name:t=>e.format(Date.UTC(2016,t-1,1)),monthFirst:new Intl.DateTimeFormat(r,{month:"numeric",day:"numeric"}).formatToParts(0).find(t=>t.type!=="literal")?.type==="month"}}catch{return{name:String,monthFirst:!1}}}var _=(r,e,t,i,o,n)=>{let a=b(r,t,t,Array.from({length:i},(s,l)=>[D(l+1),o(l+1)]),n);return a.name=e,a};function g(r,e,t,i,o){let n=r("input","i");return n.name=e,n.inputMode=i,n.setAttribute("aria-label",t),n.value=o??"",n}function $(r,e,t,i,o){let n=e.format??{},a=t("div",n.kind==="birthday"?"ph bd":"ph");if(e.type==="number")a.append(g(t,"hp_v",e.label,n.decimals?"decimal":"numeric",i)),n.unit&&a.append(t("span","u",n.unit));else if(n.kind==="birthday"){let[,s,l,f]=/^(\d{4}|-)-(\d\d)-(\d\d)$/.exec(i??"")??[],u=O(o||void 0),p=_(t,"hp_d","Day",31,String,f),m=_(t,"hp_m","Month",12,u.name,l);if(a.append(...u.monthFirst?[m,p]:[p,m]),n.year!=="none"){let d=g(t,"hp_y","Year","numeric",s==="-"?"":s);d.placeholder=n.year==="required"?"Year":"Year (optional)",d.autocomplete="bday-year",d.maxLength=4,a.append(d)}}else{let s=g(t,"hp_v",e.label,"none",i);s.type="date",s.min="1900-01-01",s.max="2100-12-31",a.append(s)}r.append(a)}function v(r,e){try{return new Intl.NumberFormat(e||void 0).format(r)}catch{return String(r)}}var A=(r,e,t)=>{let i=new Date(Date.UTC(r,e-1,t));return i.getUTCMonth()===e-1&&i.getUTCDate()===t};function F(r){let e=r.replace(/\s/g,""),t=e.lastIndexOf(","),i=e.lastIndexOf(".");return t>=0&&i>=0?t>i?e.replace(/\./g,"").replace(",","."):e.replace(/,/g,""):/^-?\d{1,3}(?:,\d{3})+$/.test(e)?e.replace(/,/g,""):e.replace(",",".")}function S(r,e,t=Date.now(),i=void 0){let o=e.format??{},n=c=>r.querySelector(`[name=${c}]`);if(e.type==="number"){let c=n("hp_v"),y=F(c.value);if(!y)return{value:null};let h=Number(y),x=I.exec(y);return x&&(x[1]?.replace(/0+$/,"").length??0)<=(o.decimals?2:0)&&Math.abs(h)<=N&&!(h<o.min||h>o.max)?{value:String(h===0?0:h)}:{error:`Enter a ${o.decimals?"":"whole "}number${o.min!=null&&o.max!=null?` from ${v(o.min,i)} to ${v(o.max,i)}`:""}.`,input:c}}let a=c=>({error:"Enter a real date.",input:c});if(o.kind!=="birthday"){let c=n("hp_v");return c.value?c.value>=c.min&&c.value<=c.max?{value:c.value}:a(c):{value:null}}let[s,l,f]=["hp_d","hp_m","hp_y"].map(n),u=f?.value.trim()??"";if(!s.value&&!l.value&&!u)return{value:null};if(!s.value||!l.value)return a(s.value?l:s);if(!u)return o.year==="required"||!A(2016,+l.value,+s.value)?a(f??s):{value:`--${l.value}-${s.value}`};let p=`${u}-${l.value}-${s.value}`,m=new Date(t).toISOString().slice(0,10),d=new Date(t+864e5).toISOString().slice(0,10),E=`${+m.slice(0,4)-T}${m.slice(4)}`;return/^\d{4}$/.test(u)&&A(+u,+l.value,+s.value)&&p<=d&&p>=E?{value:p}:a(f)}window[Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.answers")]={answerFields:$,answerOf:S};})();
1
+ (()=>{function _(t,e,n){let r=t.lastChild,s="ends_at"in e,i=s?Date.parse(e.ends_at):Date.now()+Math.max(0,Number(e.minutes)||0)*6e4,c=()=>{let a=Math.max(0,i-Date.now())||0,u=Math.floor(a/864e5);r.textContent=`${u?`${u}d `:""}${new Date(a).toISOString().slice(a<36e5?14:11,19)}`,t.hidden=!a&&s&&!n,a||clearInterval(o)},o=setInterval(c,1e3);return c(),()=>clearInterval(o)}var y=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);function w(t,e,n,r,s){let i=t("select","i");i.setAttribute("aria-label",e);for(let[c,o]of[["",n],...r]){let a=t("option","",o);a.value=c,a.selected=c===s,i.append(a)}return i}var $=t=>(t.options??[]).filter(e=>y(e)&&typeof e.value=="string");function S(t,e,n,r,s){let i=t("input");return i.type=s,i.name=`q_${e.key}`,i.value=n.value,i.checked=r.includes(n.value),i}var A=t=>{let e=t.options.length;return e<=4?e:e%4?3:4};var M=t=>String(t).padStart(2,"0"),R=120,U=/^-?\d{1,10}(?:\.(\d{1,10}))?$/,z=1e9;function L(t){try{let e=new Intl.DateTimeFormat(t,{month:"long",timeZone:"UTC"});return{name:n=>e.format(Date.UTC(2016,n-1,1)),monthFirst:new Intl.DateTimeFormat(t,{month:"numeric",day:"numeric"}).formatToParts(0).find(n=>n.type!=="literal")?.type==="month"}}catch{return{name:String,monthFirst:!1}}}var q=(t,e,n,r,s,i)=>{let c=w(t,n,n,Array.from({length:r},(o,a)=>[M(a+1),s(a+1)]),i);return c.name=e,c};function v(t,e,n,r,s){let i=t("input","i");return i.name=e,i.inputMode=r,i.setAttribute("aria-label",n),i.value=s??"",i}function C(t,e,n,r,s){let i=e.format??{},c=n("div",i.kind==="birthday"?"ph bd":"ph");if(e.type==="number")c.append(v(n,"hp_v",e.label,i.decimals?"decimal":"numeric",r)),i.unit&&c.append(n("span","u",i.unit));else if(i.kind==="birthday"){let[,o,a,u]=/^(\d{4}|-)-(\d\d)-(\d\d)$/.exec(r??"")??[],p=L(s||void 0),d=q(n,"hp_d","Day",31,String,u),m=q(n,"hp_m","Month",12,p.name,a);if(c.append(...p.monthFirst?[m,d]:[d,m]),i.year!=="none"){let f=v(n,"hp_y","Year","numeric",o==="-"?"":o);f.placeholder=i.year==="required"?"Year":"Year (optional)",f.autocomplete="bday-year",f.maxLength=4,c.append(f)}}else{let o=v(n,"hp_v",e.label,"none",r);o.type="date",o.min="1900-01-01",o.max="2100-12-31",c.append(o)}t.append(c)}function I(t,e){try{return new Intl.NumberFormat(e||void 0).format(t)}catch{return String(t)}}var D=(t,e,n)=>{let r=new Date(Date.UTC(t,e-1,n));return r.getUTCMonth()===e-1&&r.getUTCDate()===n};function P(t){let e=t.replace(/\s/g,""),n=e.lastIndexOf(","),r=e.lastIndexOf(".");return n>=0&&r>=0?n>r?e.replace(/\./g,"").replace(",","."):e.replace(/,/g,""):/^-?\d{1,3}(?:,\d{3})+$/.test(e)?e.replace(/,/g,""):e.replace(",",".")}function N(t,e,n=Date.now(),r=void 0){let s=e.format??{},i=l=>t.querySelector(`[name=${l}]`);if(e.type==="number"){let l=i("hp_v"),x=P(l.value);if(!x)return{value:null};let h=Number(x),b=U.exec(x);return b&&(b[1]?.replace(/0+$/,"").length??0)<=(s.decimals?2:0)&&Math.abs(h)<=z&&!(h<s.min||h>s.max)?{value:String(h===0?0:h)}:{error:`Enter a ${s.decimals?"":"whole "}number${s.min!=null&&s.max!=null?` from ${I(s.min,r)} to ${I(s.max,r)}`:""}.`,input:l}}let c=l=>({error:"Enter a real date.",input:l});if(s.kind!=="birthday"){let l=i("hp_v");return l.value?l.value>=l.min&&l.value<=l.max?{value:l.value}:c(l):{value:null}}let[o,a,u]=["hp_d","hp_m","hp_y"].map(i),p=u?.value.trim()??"";if(!o.value&&!a.value&&!p)return{value:null};if(!o.value||!a.value)return c(o.value?a:o);if(!p)return s.year==="required"||!D(2016,+a.value,+o.value)?c(u??o):{value:`--${a.value}-${o.value}`};let d=`${p}-${a.value}-${o.value}`,m=new Date(n).toISOString().slice(0,10),f=new Date(n+864e5).toISOString().slice(0,10),g=`${+m.slice(0,4)-R}${m.slice(4)}`;return/^\d{4}$/.test(p)&&D(+p,+a.value,+o.value)&&d<=f&&d>=g?{value:d}:c(u)}var k=`.cd{display:contents}
2
+ .cd>.x-md{color:var(--mu)}
3
+ .tm{font-size:40px;line-height:1;font-weight:800;letter-spacing:.02em;font-variant-numeric:tabular-nums;text-align:center}
4
+ .qw{container-type:inline-size;width:100%}
5
+ .qc{display:grid;width:100%;grid-template-columns:1fr 1fr;gap:12px}
6
+ @container (min-width:520px){.qc{grid-template-columns:repeat(var(--n),1fr)}}
7
+ .qk{position:relative;display:flex;flex-direction:column;gap:8px}
8
+ .qk input{appearance:none;position:absolute;inset:0;z-index:1;margin:0;border-radius:var(--ir);cursor:pointer}
9
+ .qf{position:relative;aspect-ratio:4/5;overflow:hidden;border-radius:var(--ir);background:color-mix(in srgb,var(--t) 7%,var(--b));box-shadow:0 1px 3px rgb(0 0 0/.12)}
10
+ .qi{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s}
11
+ .qk:hover .qi{transform:scale(1.05)}
12
+ .qk :checked~.qf{box-shadow:0 0 0 2px var(--b),0 0 0 4px var(--a)}
13
+ .qk :checked~.qf::after{content:"\u2713";position:absolute;top:8px;right:8px;display:grid;place-content:center;width:26px;height:26px;border-radius:50%;background:var(--a);color:var(--ot);font:700 15px/1 sans-serif}
14
+ .ql{font-size:15px;font-weight:600;line-height:1.3;text-align:center}
15
+ @media (prefers-reduced-motion:reduce){.qi{transition:none}}`,E=new WeakSet;function O(t,e){if(E.has(t))return;E.add(t);let n=e("style");n.textContent=k,t.append(n)}function T(t,e,n,r){O(t.getRootNode(),r),e.label&&t.append(r("p","x-md",e.label));let s=r("p","tm");return s.setAttribute("role","timer"),t.append(s),_(t,e,n)}function F(t,e,n,r,s,i,c){let{pictures:o}=n,a=$(e);O(c,r);let u=r("div","qc");u.style.setProperty("--n",String(A(e)));let p=r("div","qw");p.append(u);for(let d of a){let m=r("span","qf"),f=y(o)?o[d.value]:null,g=y(f)&&i(f);g&&m.append(g);let l=r("label","qk");l.append(S(r,e,d,s,"radio"),m,r("span","ql",d.label??d.value)),u.append(l)}t.append(p)}window[Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.answers")]={answerCards:F,answerFields:C,answerOf:N,countdown:T};})();
@@ -1,4 +1,4 @@
1
- (()=>{var F=Array.from({length:11},(r,n)=>n/10);function P(r,n){if(!r.isIntersecting)return!1;let{intersectionRect:o,boundingClientRect:i,rootBounds:s}=r;if(!o||!i)return!0;let f=o.width*o.height,a=i.width*i.height,l=s?Math.min(a,s.width*s.height):a;return l>0&&f/l>=n}function I(r){let{selector:n,onViewable:o,visibleRatio:i=.5,dwellMs:s=1e3,root:f=document}=r,a=new Map,l=new WeakSet,u=new Set,x=e=>{a.has(e)||a.set(e,setTimeout(()=>{a.delete(e),o(e)&&(m?.unobserve(e),u.delete(e))},s))},y=e=>{clearTimeout(a.get(e)),a.delete(e)},m=typeof IntersectionObserver>"u"?null:new IntersectionObserver(e=>{for(let t of e){let d=t.target;if(!P(t,i)){u.delete(d),y(d);continue}u.add(d),g()&&x(d)}},{threshold:F}),g=()=>typeof document>"u"||document.visibilityState!=="hidden",w=()=>{if(g())for(let e of u)x(e);else for(let e of u)y(e)};document.addEventListener("visibilitychange",w);let h=()=>{for(let e of f.querySelectorAll(n))l.has(e)||(l.add(e),m?.observe(e))},v=typeof MutationObserver>"u"?null:new MutationObserver(()=>h()),b=()=>{h(),v?.observe(f===document?document.body:f,{childList:!0,subtree:!0})},A=f===document&&!document.body;return A?document.addEventListener("DOMContentLoaded",b,{once:!0}):b(),()=>{A&&document.removeEventListener("DOMContentLoaded",b),document.removeEventListener("visibilitychange",w),m?.disconnect(),v?.disconnect();for(let e of a.values())clearTimeout(e);a.clear(),u.clear()}}function T(r){if(typeof r!="string")return null;try{let n=new URL(r);return n.protocol==="https:"?n.href:null}catch{return null}}var R=`.pr ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
1
+ (()=>{var M=Array.from({length:11},(n,e)=>e/10);function F(n,e){if(!n.isIntersecting)return!1;let{intersectionRect:s,boundingClientRect:r,rootBounds:c}=n;if(!s||!r)return!0;let f=s.width*s.height,a=r.width*r.height,u=c?Math.min(a,c.width*c.height):a;return u>0&&f/u>=e}function R(n){let{selector:e,onViewable:s,visibleRatio:r=.5,dwellMs:c=1e3,root:f=document}=n,a=new Map,u=new WeakSet,l=new Set,p=i=>{a.has(i)||a.set(i,setTimeout(()=>{a.delete(i),s(i)&&(h?.unobserve(i),l.delete(i))},c))},d=i=>{clearTimeout(a.get(i)),a.delete(i)},h=typeof IntersectionObserver>"u"?null:new IntersectionObserver(i=>{for(let E of i){let o=E.target;if(!F(E,r)){l.delete(o),d(o);continue}l.add(o),b()&&p(o)}},{threshold:M}),b=()=>typeof document>"u"||document.visibilityState!=="hidden",x=()=>{if(b())for(let i of l)p(i);else for(let i of l)d(i)};document.addEventListener("visibilitychange",x);let y=()=>{for(let i of f.querySelectorAll(e))u.has(i)||(u.add(i),h?.observe(i))},_=typeof MutationObserver>"u"?null:new MutationObserver(()=>y()),v=()=>{y(),_?.observe(f===document?document.body:f,{childList:!0,subtree:!0})},w=f===document&&!document.body;return w?document.addEventListener("DOMContentLoaded",v,{once:!0}):v(),()=>{w&&document.removeEventListener("DOMContentLoaded",v),document.removeEventListener("visibilitychange",x),h?.disconnect(),_?.disconnect();for(let i of a.values())clearTimeout(i);a.clear(),l.clear()}}function T(n){if(typeof n!="string")return null;try{let e=new URL(n);return e.protocol==="https:"?e.href:null}catch{return null}}var O=n=>n!==null&&typeof n=="object"&&!Array.isArray(n);var P=`.pr ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
2
2
  .pr-c ul{grid-auto-flow:column;grid-auto-columns:minmax(132px,42%);overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding-bottom:6px;overscroll-behavior-x:contain}
3
3
  .pr-c li{scroll-snap-align:start}
4
4
  .pr-g ul{grid-template-columns:repeat(auto-fill,minmax(132px,1fr))}
@@ -12,5 +12,11 @@
12
12
  .pn{font-size:14px;line-height:1.3;min-height:2.6em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
13
13
  .pp{font-size:14px;font-weight:700}
14
14
  .pp s{font-weight:400;color:var(--mu)}
15
- .pb{margin-top:auto;padding:8px 12px;font-size:14px}
16
- @media (prefers-reduced-motion:reduce){.pr-c ul{scroll-behavior:auto}}`,V=["left","center","right"],D=r=>r!==null&&typeof r=="object"&&!Array.isArray(r);function H(r,n){try{let o=new Intl.NumberFormat(r||void 0,{style:"currency",currency:n});return i=>o.format(i)}catch{return o=>o.toFixed(2)}}function O(r,n,o){let{el:i}=o,s=D(n.served)?n.served:{},f=Number.isInteger(n.limit)?Math.min(Math.max(n.limit,1),12):4,a=(Array.isArray(s.products)?s.products:[]).filter(e=>D(e)&&typeof e.product_id=="string"&&T(e.url)).slice(0,f);if(a.length===0)return;let l=D(n.show)?n.show:{},u=n.layout==="grid";r.classList.add(u?"pr-g":"pr-c"),V.includes(n.align)&&r.classList.add(`a-${n.align}`),u||(r.setAttribute("role","region"),r.setAttribute("aria-label","Products"));let x=i("style");x.textContent=R;let y=i("ul");y.setAttribute("role","list");let m=(e,t)=>({product_id:e.product_id,...typeof e.name=="string"?{name:e.name}:{},...Number.isFinite(e.price)?{price:e.price}:{},position:t}),g=typeof s.recommendation_request_id=="string"&&!o.preview?o.client:null,w=new Map,h=s.recommendation_request_id,v=o.seen??new Set,b=null,A=()=>{clearTimeout(b),!(!g||v.has(h))&&(v.add(h),g.recommendationsViewed({recommendation_request_id:h,placement:s.placement||o.placement,strategy:s.strategy||s.recipe||n.source,recipe:s.recipe??null,algorithm_version:s.algorithm_version??null,products:a.map((e,t)=>m(e,t+1)),viewable:[...w.values()].sort((e,t)=>e.position-t.position)}))};for(let[e,t]of a.entries()){let d=e+1,L=i("li","pc");L.dataset.hpProduct=t.product_id,L.dataset.hpPosition=String(d);let p=i("a","pa"),E=typeof t.name=="string"?t.name:"",S=T(t.image);if(S){let c=i("img","pi");c.alt=l.name===!1?E:"",c.loading="lazy",c.decoding="async",c.src=S;let _=i("span","pf");_.append(c),p.append(_)}else p.append(i("span","pf e"));if(l.name!==!1&&p.append(i("span","pn",E)),l.price!==!1&&Number.isFinite(t.price)){let c=H(o.lang,t.currency),_=i("span","pp");if(_.append(i("span","",c(t.price))),Number.isFinite(t.compare_at_price)&&t.compare_at_price>t.price){let M=i("s","",c(t.compare_at_price));M.setAttribute("aria-label",`was ${c(t.compare_at_price)}`),_.append(" ",M)}p.append(_)}l.name===!1&&!S&&p.setAttribute("aria-label",E||t.product_id),typeof n.button=="string"&&n.button&&p.append(i("span","btn pb",n.button)),p.href=T(t.url),p.rel="noopener",p.addEventListener("click",c=>{if(o.preview)return c.preventDefault();A(),g?.productClicked({recommendation_request_id:s.recommendation_request_id,interaction:"navigate",products:[m(t,d)]}),o.engaged("click",void 0,{position:d,products:[m(t,d)]})}),L.append(p),y.append(L)}if(r.append(x,y),!(!g||v.has(h)))return I({selector:"[data-hp-product]",root:o.root,onViewable(e){let t=Number(e.dataset.hpPosition);return w.has(t)||w.set(t,{position:t,product_id:e.dataset.hpProduct,viewable_at:new Date().toISOString()}),b??(b=setTimeout(A,0)),!0}})}window[Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.products")]={mountProducts:O};})();
15
+ .btn.bs{min-height:40px;padding:8px 12px;font-size:14px}
16
+ .pb{margin-top:auto;white-space:nowrap}
17
+ .pr-c{position:relative}
18
+ .ar{position:absolute;z-index:1;top:calc(var(--ph,132px)/2 - 20px);left:-6px;width:40px;height:40px;padding:0 0 3px;border:1px solid var(--ln);border-radius:50%;background:var(--b);color:var(--t);box-shadow:0 2px 8px rgb(0 0 0/.15);font:24px/1 sans-serif;cursor:pointer}
19
+ .ar+.ar{left:auto;right:-6px}
20
+ .ar[aria-disabled=true]{opacity:.35;cursor:default}
21
+ .mob .ar,.pr-f .ar{display:none}
22
+ @media (prefers-reduced-motion:reduce){.pr-c ul{scroll-behavior:auto}}`,C=["left","center","right"];function z(n,e){try{let s=new Intl.NumberFormat(n||void 0,{style:"currency",currency:e});return r=>s.format(r)}catch{return s=>s.toFixed(2)}}function $(n,e,s){let{el:r}=s,c=O(e.served)?e.served:{},f=Number.isInteger(e.limit)?Math.min(Math.max(e.limit,1),12):4,a=(Array.isArray(c.products)?c.products:[]).filter(o=>O(o)&&typeof o.product_id=="string"&&T(o.url)).slice(0,f);if(a.length===0)return;let u=O(e.show)?e.show:{},l=e.layout==="grid";n.classList.add(l?"pr-g":"pr-c"),C.includes(e.align)&&n.classList.add(`a-${e.align}`),l||(n.setAttribute("role","region"),n.setAttribute("aria-label","Products"));let p=r("style");p.textContent=P;let d=r("ul");d.setAttribute("role","list");let h=(o,t)=>({product_id:o.product_id,...typeof o.name=="string"?{name:o.name}:{},...Number.isFinite(o.price)?{price:o.price}:{},position:t}),b=typeof c.recommendation_request_id=="string"&&!s.preview?s.client:null,x=new Map,y=c.recommendation_request_id,_=s.seen??new Set,v=null,w=()=>{clearTimeout(v),!(!b||_.has(y))&&(_.add(y),b.recommendationsViewed({recommendation_request_id:y,placement:c.placement||s.placement,strategy:c.strategy||c.recipe||e.source,recipe:c.recipe??null,algorithm_version:c.algorithm_version??null,products:a.map((o,t)=>h(o,t+1)),viewable:[...x.values()].sort((o,t)=>o.position-t.position)}))};for(let[o,t]of a.entries()){let L=o+1,S=r("li","pc");S.dataset.hpProduct=t.product_id,S.dataset.hpPosition=String(L);let g=r("a","pa"),D=typeof t.name=="string"?t.name:"",I=T(t.image);if(I){let m=r("img","pi");m.alt=u.name===!1?D:"",m.loading="lazy",m.decoding="async",m.src=I;let A=r("span","pf");A.append(m),g.append(A)}else g.append(r("span","pf e"));if(u.name!==!1&&g.append(r("span","pn",D)),u.price!==!1&&Number.isFinite(t.price)){let m=z(s.lang,t.currency),A=r("span","pp");if(A.append(r("span","",m(t.price))),Number.isFinite(t.compare_at_price)&&t.compare_at_price>t.price){let N=r("s","",m(t.compare_at_price));N.setAttribute("aria-label",`was ${m(t.compare_at_price)}`),A.append(" ",N)}g.append(A)}u.name===!1&&!I&&g.setAttribute("aria-label",D||t.product_id),typeof e.button=="string"&&e.button&&g.append(r("span","btn bs pb",e.button)),g.href=T(t.url),g.rel="noopener",g.addEventListener("click",m=>{if(s.preview)return m.preventDefault();w(),b?.productClicked({recommendation_request_id:c.recommendation_request_id,interaction:"navigate",products:[h(t,L)]}),s.engaged("click",void 0,{position:L,products:[h(t,L)]})}),S.append(g),d.append(S)}n.append(p,d);let i=l?null:q(n,d,r),E=b&&!_.has(y)&&R({selector:"[data-hp-product]",root:s.root,onViewable(o){let t=Number(o.dataset.hpPosition);return x.has(t)||x.set(t,{position:t,product_id:o.dataset.hpProduct,viewable_at:new Date().toISOString()}),v??(v=setTimeout(w,0)),!0}});return()=>{i?.disconnect(),E&&E()}}function q(n,e,s){let r=["Previous","Next"].map((u,l)=>{let p=s("button","ar",l?"\u203A":"\u2039");return p.type="button",p.setAttribute("aria-label",`${u} products`),p.addEventListener("click",()=>e.scrollBy({left:(l?1:-1)*e.clientWidth})),e.before(p),p}),c="",f=()=>{let u=e.scrollWidth-e.clientWidth,l=e.scrollLeft,p=e.firstElementChild?.offsetWidth??0,d=[u<2,l<2,l>u-2,p];`${d}`!==c&&(c=`${d}`,n.classList.toggle("pr-f",d[0]),n.style.setProperty("--ph",`${p}px`),r[0].setAttribute("aria-disabled",String(d[1])),r[1].setAttribute("aria-disabled",String(d[2])))};e.addEventListener("scroll",f,{passive:!0}),f();let a=globalThis.ResizeObserver&&new ResizeObserver(f);return a?.observe(e),a}window[Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.products")]={mountProducts:$};})();