PageSourceSearch

https://goli.com/account/login?return_url=%2Faccount

html goli.com collected 2026-10-02 15:17:00 UTC 293,428 bytes, 2,451 lines download raw bytes

1
2
3
4
5
6
7
8
9
10<!DOCTYPE html>
11<html lang="en" dir="ltr">
12<head>
13<!-- Start of Shoplift scripts -->
14<!-- 2026-05-15T20:38:29.1998098Z -->
15<style>.shoplift-hide { opacity: 0 !important; }</style>
16<style id="sl-preview-bar-hide">#preview-bar-iframe, #PBarNextFrameWrapper { display: none !important; }</style>
17<script type="text/javascript">(function(rootPath, template, themeRole, themeId, isThemePreview){ /* Generated on 2026-10-02T14:45:08.8247120Z */(function(){"use strict";var te=document.createElement("style");te.textContent=`#shoplift-preview-control{position:fixed;max-width:332px;height:56px;background-color:#141414;z-index:9999;bottom:20px;display:flex;border-radius:8px;box-shadow:13px 22px 7px #0000,9px 14px 7px #00000003,5px 8px 6px #0000000d,2px 4px 4px #00000017,1px 1px 2px #0000001a,0 0 #0000001a;align-items:center;margin:0 auto;left:16px;right:16px;opacity:0;transform:translateY(20px);visibility:hidden;transition:opacity .4s ease-in-out,transform .4s ease-in-out,visibility 0s .4s}#shoplift-preview-control.visible{opacity:1;transform:translateY(0);visibility:visible;transition:opacity .4s ease-in-out,transform .4s ease-in-out,visibility 0s 0s}#shoplift-preview-control *{font-family:Inter,sans-serif;color:#fff;box-sizing:border-box;font-size:16px}#shoplift-preview-variant-title{font-weight:400;line-height:140%;font-size:16px;text-align:start;letter-spacing:-.16px;flex-grow:1;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}#shoplift-preview-variant-selector{position:relative;display:block;padding:6px 0;height:100%;min-width:0;flex:1 1 auto}#shoplift-preview-variant-menu-trigger{border:none;cursor:pointer;width:100%;background-color:transparent;padding:0 16px;border-left:1px solid #333;border-right:1px solid #333;height:100%;display:flex;align-items:center;justify-content:start;gap:8px}#shoplift-preview-variant-selector .menu-variant-label{width:24px;height:24px;border-radius:50%;padding:6px;display:flex;justify-content:center;align-items:center;font-size:12px;font-style:normal;font-weight:600;line-height:100%;letter-spacing:-.12px;flex-shrink:0}#shoplift-preview-variant-selector .preview-variant-menu{position:absolute;bottom:110%;transform:translate3d(0,20px,0);visibility:hidden;pointer-events:none;opacity:0;cursor:pointer;background-color:#141414;border:1px solid #141414;border-radius:6px;width:100%;max-height:156px;overflow-y:auto;box-shadow:0 8px 16px #0003;z-index:1;transition:opacity .3s ease-in-out,transform .3s ease-in-out,visibility 0s .3s}#shoplift-preview-variant-selector .preview-variant-menu.preview-variant-menu__visible{visibility:visible;pointer-events:auto;opacity:100;transform:translateZ(0);transition:opacity .3s ease-in-out,transform .3s ease-in-out,visibility 0s 0s}@media screen and (max-width:400px){#shoplift-preview-variant-selector .preview-variant-menu{position:fixed;left:0;right:0;width:auto;bottom:110%}}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item{padding:12px 16px;display:flex;overflow:hidden}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item .menu-variant-label{margin-right:6px}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item span{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap;white-space:nowrap;color:#f6f6f6;font-size:14px;font-style:normal;font-weight:500}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:hover{background-color:#545454}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:last-of-type{border-bottom-left-radius:6px;border-bottom-right-radius:6px}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:first-of-type{border-top-left-radius:6px;border-top-right-radius:6px}#shoplift-preview-control div:has(#shoplift-exit-preview-button){padding:0 16px}#shoplift-exit-preview-button{padding:6px 8px;font-weight:500;line-height:75%;border-radius:4px;background-color:transparent;border:none;text-decoration:none}#shoplift-exit-preview-button:hover{cursor:pointer;background-color:#333}#shoplift-preview-subscription-warning{position:relative;display:flex;align-items:center;gap:6px;padding:6px 10px;margin:0 4px;border-left:1px solid #333;cursor:help;outline:none}#shoplift-preview-subscription-warning__icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background-color:#f59e0b;color:#141414!important;font-weight:700;font-size:12px!important;line-height:1;flex-shrink:0}#shoplift-preview-subscription-warning__label{font-size:13px!important;font-weight:500;color:#fbbf24!important;text-wrap:nowrap;white-space:nowrap}#shoplift-preview-subscription-warning__tooltip{position:absolute;bottom:calc(100% + 8px);right:0;max-width:320px;width:max-content;padding:10px 12px;border-radius:6px;background-color:#1f1f1f;color:#fff!important;font-size:12px!important;line-height:1.4!important;box-shadow:0 8px 16px #0000004d;z-index:10000;opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .2s ease-in-out,transform .2s ease-in-out,visibility 0s .2s;pointer-events:none}#shoplift-preview-subscription-warning__tooltip.shoplift-preview-subscription-warning__tooltip--visible{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .2s ease-in-out,transform .2s ease-in-out,visibility 0s 0s}#shoplift-preview-subscription-warning:focus-visible{box-shadow:inset 0 0 0 2px #f59e0b;border-radius:4px}#shoplift-preview-control:has(#shoplift-preview-subscription-warning){max-width:480px}/*$vite$:1*/`,document.head.appendChild(te);var fe=" daum[ /]| deusu/|(?:^|[^g])news(?!sapphire)|(?<! channel/|google/)google(?!(?:wv|app|/google| pixel))|(?<! cu)bots?(?:\\b|_)|(?<!cam)scan|(?<!lib)http|24x
177|;\\s\\w+;$|@[a-z][\\w-]+\\.|\\(\\)|\\.com\\b|\\b\\w+/1\\.0;|\\bbw/|\\bdlc\\b|\\bort/|\\bperl\\b|\\btime/|\\||^[<\\(;]|^[\\w \\.\\-\\(?:\\):%]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[\\w\\-]+/[\\w]+$|^[^ ]{50,}$|^\\d+\\b|^\\w*search\\b|^\\w+/[\\w\\(\\)]*$|^\\w+/\\d\\.\\d\\s\\([\\w@]+\\)$|^active|^ad muncher|^amaya|^apache/|^avsdevicesdk/|^azure|^biglotron|^blackbox exporter|^bot|^clamav[ /]|^claude-code/|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^email|^exodusmovement|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^igetter/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\d\\.\\d\\s[\\w\\.-]+$|^mozilla/\\d\\.\\d\\s\\((?:compatible;)?(?:\\s?[\\w\\d-.]+\\/\\d+\\.\\d+)?\\)$|^navermailapp|^netsurf|^offline|^openai/|^owler|^php|^postman|^ps_daily/|^python|^rank|^read|^reed|^remove\\.bg/|^rest|^rss|^snapchat|^sora |^space bison|^stape/|^svn|^swcd |^taringa|^thumbor/|^track|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|abuse|advisor|agent\\b|analyzer|archive|ask jeeves/teoma|attracta|audit|bluecoat drtr|browsex|burpcollaborator|capture|catch|check\\b|checker|chrome-lighthouse|chromeframe|classifier|cloudflare|collapsify\\b|convertify|cookiehubverify/|crawl|cursor/|cypress/|dareboost|datanyze|dejaclick|detect|discovery|dmbrowser|download|exaleadcloudview|feed|firephp|foregenix|functionize|grab|hardenize\\b|headless|hotjar|httrack|hubspot marketing grader|ibisbrowser|infrawatch|insight|inspect|iplabel|java(?!;)|library|linkcheck|linktiger|mail\\.ru/|manager|manus-user/|marketgoo/|measure|monitor\\b|neustar wpm|node\\b|nutch|offbyone|openvas|optimize|pageburst|pagespeed|parser|phantomjs|pingdom|playwright|powermarks|preview|productfinder|prospectingstudio|proxy|ptst[ /]\\d|radar|readable/|retriever|rexx;|rigor|rss\\b|scrape|securityheaders|selenium|server|silktide|sindup/|sogou|sparkler/|speedcurve|spider|splash|statuscake|supercleaner|synapse|synthetic|testlocally|tools|torrent|transcoder|url|validator|virtuoso|wappalyzer|watchtowr|webglance|webkit2png|whatcms/|xtate/",ge=/bot|crawl|http|lighthouse|scan|search|spider/i,z;function me(){if(z instanceof RegExp)return z;try{z=new RegExp(fe,"i")}catch{z=ge}return z}var ye=a=>typeof a=="string"&&a!=="";function ve(a){return ye(a)&&me().test(a)}var we=ve;class X{timestamp;constructor(){this.timestamp=new Date}}class be extends X{type;testId;hypothesisId;constructor(e,t,i){super(),this.type=3,this.testId=e,this.hypothesisId=t,this.timestamp=i}}class Se extends X{type;path;constructor(e){super(),this.type=4,this.path=e}}class Ce extends X{type;cart;constructor(e){super(),this.type=5,this.cart=e}}class ie extends Error{isBot;constructor(){super(),this.isBot=!0}}function Te(a,e,t){for(const i of e.selectors){const s=a.querySelectorAll(i.cssSelector);for(let r=0;r<s.length;r++)t(e.testId,e.hypothesisId)}re(a,e,(i,s,r,o,n)=>n(s,r),t)}function U(a,e,t){for(const i of e.selectors)ne(a,e.testId,e.hypothesisId,i,t??(()=>{}));re(a,e,ne,t??(()=>{}))}function se(a){return a.urlPatterns.reduce((e,t)=>{switch(t.operator){case"contains":return e+`.*${t}.*`;case"endsWith":return e+`.*${t}`;case"startsWith":return e+`${t}.*`}},"")}function re(a,e,t,i){new MutationObserver(()=>{for(const r of e.selectors)t(a,e.testId,e.hypothesisId,r,i)}).observe(a.documentElement,{childList:!0,subtree:!0})}function ne(a,e,t,i,s){const r=a.querySelectorAll(i.cssSelector);for(let o=0;o<r.length;o++){let n=r.item(o);if(n instanceof HTMLElement&&n.dataset.shoplift!==""){n.dataset.shoplift="";for(const l of i.actions.sort(Re))n=Ie(a,i.cssSelector,n,l)}}return r.length>0&&s?(s(e,t),!0):!1}function Ie(a,e,t,i){switch(i.type){case"innerHtml":t.innerHTML=i.value;break;case"attribute":Pe(t,i.scope,i.value);break;case"css":Ae(a,e,i.value);break;case"js":ke(a,t,i);break;case"copy":return Ee(t);case"remove":xe(t);break;case"move":_e(t,parseInt(i.value));break}return t}function Pe(a,e,t){a.setAttribute(e,t)}function Ae(a,e,t){const i=a.createElement("style");i.innerHTML=`${e} { ${t} }`,a.getElementsByTagName("head")[0]?.appendChild(i)}function ke(a,e,t){Function("document","element",`"use strict"; ${t.value}`)(a,e)}function Ee(a){const e=a.cloneNode(!0);if(!a.parentNode)throw"Can't copy node outside of DOM";return a.parentNode.insertBefore(e,a.nextSibling),e}function xe(a){a.remove()}function _e(a,e){if(e===0)return;const t=Array.prototype.slice.call(a.parentElement.children).indexOf(a),i=Math.min(Math.max(t+e,0),a.parentElement.children.length-1);a.parentElement.children.item(i).insertAdjacentElement(e>0?"afterend":"beforebegin",a)}function Re(a,e){return oe(a)-oe(e)}function oe(a){return a.type==="copy"||a.type==="remove"?0:1}
17const M={Template:0,UrlRedirect:2,Script:3,Price:5},De="data:image/svg+xml,%3csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.96001%207.90004C9.86501%207.90004%209.77001%207.86504%209.69501%207.79004L6.43501%204.53004C6.19501%204.29004%205.80501%204.29004%205.56501%204.53004L2.30501%207.79004C2.16001%207.93504%201.92001%207.93504%201.77501%207.79004C1.63001%207.64504%201.63001%207.40504%201.77501%207.26004L5.03501%204.00004C5.56501%203.47004%206.43001%203.47004%206.96501%204.00004L10.225%207.26004C10.37%207.40504%2010.37%207.64504%2010.225%207.79004C10.15%207.86004%2010.055%207.90004%209.96001%207.90004Z'%20fill='white'/%3e%3c/svg%3e",Oe="data:image/svg+xml,%3csvg%20width='14'%20height='24'%20viewBox='0%200%2014%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.3976%2014.5255C12.2833%2013.8788%2012.0498%2013.3024%2011.6952%2012.7961C11.3416%2012.2898%2010.9209%2011.8353%2010.4353%2011.4317C9.94868%2011.0291%209.43546%2010.6488%208.89565%2010.292C8.48487%2010.049%208.09577%209.78565%207.72637%209.50402C7.35697%209.2224%207.08016%208.89503%206.89694%208.51987C6.71273%208.14471%206.67826%207.69533%206.79055%207.1697C6.86345%206.83216%206.97476%206.54647%207.12351%206.31162C7.27324%206.07778%207.47124%205.89986%207.7175%205.77684C7.96377%205.65483%208.21989%205.59383%208.48389%205.59383C8.88087%205.59383%209.17639%205.7016%209.3734%205.91714C9.56943%206.13268%209.68271%206.42345%209.71424%206.78946C9.74576%207.15547%209.72015%207.55401%209.63839%207.98509C9.55663%208.41617%209.43645%208.84724%209.27687%209.27934L13.5127%208.80149C13.9638%207.52656%2014.1017%206.42447%2013.9264%205.49725C13.751%204.56901%2013.2664%203.85122%2012.4724%203.34491C12.239%203.19648%2011.9779%203.07041%2011.6893%202.96569L12.0026%201.50979L9.86397%200L7.3875%201.50979L7.11169%202.78878C6.65166%202.8874%206.21724%203.01957%205.8114%203.19038C4.85292%203.594%204.06684%204.15115%203.45117%204.86385C2.83452%205.57655%202.42571%206.40108%202.22378%207.33847C2.06616%208.06947%202.04942%208.70796%202.17551%209.25087C2.30061%209.7948%202.52028%2010.2828%202.8355%2010.7139C3.14974%2011.145%203.51816%2011.5344%203.93977%2011.881C4.36039%2012.2288%204.782%2012.5521%205.20164%2012.851C5.68334%2013.1702%206.13844%2013.5169%206.56497%2013.8921C6.99052%2014.2672%207.31954%2014.7125%207.55004%2015.228C7.78055%2015.7445%207.81502%2016.3769%207.65347%2017.1262C7.56482%2017.5389%207.43676%2017.8765%207.27028%2018.1388C7.10381%2018.4011%206.89596%2018.5983%206.64772%2018.7295C6.3985%2018.8606%206.12071%2018.9267%205.8114%2018.9267C5.21641%2018.9267%204.79776%2018.6034%204.62833%2018.1632C4.4589%2017.7229%204.47367%2017.2583%204.60075%2016.5639C4.72782%2015.8705%205.05092%2015.1395%205.37107%2014.3699H1.17665C1.17665%2014.3699%200.207341%2016.1115%200.0310135%2017.6762C-0.0655232%2018.5302%200.0635208%2019.2653%200.41519%2019.8844C0.76686%2020.5036%201.33032%2020.9814%202.10655%2021.319C2.39222%2021.443%202.7104%2021.5447%203.05813%2021.623L2.54589%2024H7.17473L7.7047%2021.5386C8.08493%2021.442%208.43857%2021.3231%208.76562%2021.1787C9.73985%2020.7476%2010.52%2020.1427%2011.1071%2019.3649C11.6932%2018.5871%2012.0873%2017.7291%2012.2892%2016.7917C12.4744%2015.9295%2012.5099%2015.1741%2012.3966%2014.5275L12.3976%2014.5255Z'%20fill='white'/%3e%3c/svg%3e";async function Ve(a){let e=a.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4;)e+="=";const t=atob(e),i=Uint8Array.from(t,o=>
17o.charCodeAt(0)),s=new Blob([i]).stream().pipeThrough(new DecompressionStream("gzip")),r=await new Response(s).text();return JSON.parse(r)}function F(a,e){return typeof e=="string"&&/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+(?:Z|[+-]\d+)/.test(e)?new Date(e):e}function ee(a,e){return e}function q(a,e=!1,t=!1,i=","){const s=a/100;if(t){const o=Math.round(s).toLocaleString("en-US");return i!==","?o.replace(/,/g,i):o}else{const r=e?",":".",o=s.toFixed(2).split("."),n=parseInt(o[0],10),l=o[1]??"00",c=n.toLocaleString("en-US");return i!==","?`${c.replace(/,/g,i)}${r}${l}`:e?`${c.replace(/,/g,".")}${r}${l}`:`${c}${r}${l}`}}function H(a,e,t,i){const s=e.replace("{{amount}}",q(a,!1,!1)).replace("{{amount_no_decimals}}",q(a,!1,!0)).replace("{{amount_with_comma_separator}}",q(a,!0,!1)).replace("{{amount_no_decimals_with_comma_separator}}",q(a,!0,!0)).replace("{{amount_with_space_separator}}",q(a,!1,!1," ")).replace("{{amount_no_decimals_with_space_separator}}",q(a,!1,!0," ")).replace("{{amount_with_apostrophe_separator}}",q(a,!1,!1,"'")).replace("{{amount_no_decimals_with_apostrophe_separator}}",q(a,!1,!0,"'")).replace("{{amount_with_period_and_space_separator}}",q(a,!1,!1,". ")).replace("{{amount_no_decimals_with_period_and_space_separator}}",q(a,!1,!0,". "));return i?`${s} ${t}`:s}function ae(a){return a.replace(/[^\d.,\s-]/g,"").trim()}function j(a){const e=new Map;for(const[t,i,s]of a.variants)e.set(t,{priceInCents:i,compareAtPriceInCents:s});return e}function Le(a,e,t,i){const{priceInCents:s,compareAtPriceInCents:r}=t,{moneyFormat:o,currency:n,currencyCodeEnabled:l}=i;if(a.getAttribute("data-sl-attribute-p")===e)a.innerHTML=H(s,o,n,l);else if(a.getAttribute("data-sl-attribute-cap")===e)r<=0||r<=s?a.remove():a.innerHTML=H(r,o,n,l);else if(a.getAttribute("data-sl-attribute-discount")===e&&!(r<=0||r<=s)){const d=Math.round((r-s)/r*100),u=ae(H(r-s,o,n,!1)),h=a.getAttribute("data-sl-format")||"percent";h==="percent"?a.textContent=`-${d}%`:h==="amount"?a.textContent=`-${u}`:h==="both"&&(a.textContent=`-${d}% (-${u})`)}}function $e(a){const e=[],t={id:"url-pattern",operator:"contains",value:"/"};for(const[i,s,r]of a.variants){e.push({id:`p-${i}`,cssSelector:`[data-sl-attribute-p="${i}"]`,urlPatterns:[t],actions:[{id:`p-action-${i}`,type:"innerHtml",scope:"price",value:H(s,a.moneyFormat,a.currency,a.currencyCodeEnabled)}]});const o=r<=0||r<=s;if(e.push({id:`cap-${i}`,cssSelector:`[data-sl-attribute-cap="${i}"]`,urlPatterns:[t],actions:[{id:`cap-action-${i}`,type:o?"remove":"innerHtml",scope:"compare-at-price",value:o?"":H(r,a.moneyFormat,a.currency,a.currencyCodeEnabled)}]}),!o&&r>s){const n=Math.round((r-s)/r*100),l=ae(H(r-s,a.moneyFormat,a.currency,!1));e.push({id:`d-${i}`,cssSelector:`[data-sl-attribute-discount="${i}"]`,urlPatterns:[t],actions:[{id:`d-action-${i}`,type:"js",scope:null,value:`var format = element.getAttribute('data-sl-format') || 'percent';                    if (format === 'percent') {                      element.textContent = '-${n}%';                    } else if (format === 'amount') {                      element.textContent = '-${l}';                    } else if (format === 'both') {                      element.textContent = '-${n}% (-${l})';                    }`}]})}}return e}const Me=a=>{let e=5381;for(let t=0;t<a.length;t++)e=(e*33^a.charCodeAt(t))>>>0;return e.toString(36)},qe=()=>Math.random().toString(36).slice(2,10)+Date.now().toString(36).slice(-4),He=a=>btoa(JSON.stringify(a)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),K=a=>a.replace(/#slr-[a-z0-9]+$/,""),tt="modulepreload",it=function(a){return"/"+a},st={},Ne=function(e,t,i){let s=Promise.resolve();function r(o){const n=new Event("vite:preloadError",{cancelable:!0});if(n.payload=o,window.dispatchEvent(n),!n.defaultPrevented)throw o}return s.then(o=>{for(const n of o||[])n.status==="rejected"&&r(n.reason);return e().catch(r)})};function le(a,e,t){const i=t?a.plans.filter(c=>!c.variantId||c.variantId===t):a.plans,s=[],r=[];for(const c of i)c.direction==="decrease"?(s.push(c.existingShopifyPlanId),r.push(c.createdShopifyPlanId)):(s.push(c.createdShopifyPlanId),r.push(c.existingShopifyPlanId));const o=e?s:r,n=e?r:s;if(t)for(const c of a.plans)for(const d of[c.existingShopifyPlanId,c.createdShopifyPlanId])d&&!o.includes(d)&&!n.includes(d)&&n.push(d);const l={};for(let c=0;c<n.length;c++){const d=n[c],u=o[c];d&&u&&(l[d]=u)}return{showPlanIds:o,hidePlanIds:n,swapMap:l}}function ce(a,e,t){const i=e?a.plans.find(r=>r.variantId===e):void 0;if(i)return i.direction;if(t){const r=a.plans.find(o=>o.productId===t);if(r)return r.direction}return a.plans.find(r=>!r.variantId)?.direction??null}function J(a,e){const t=e?a.plans.filter(r=>!r.productId||r.productId===e):a.plans,i={};for(const r of t)i[r.existingShopifyPlanId]=r.existingDiscountAmount,i[r.createdShopifyPlanId]=r.existingDiscountAmount;
17const s=Math.max(...Object.values(i),0);return{discountMap:i,maxDiscount:s}}function W(a){const e=document.querySelector('form[action*="/cart/add"] input[name="product-id"]')?.value;if(e)return e;if(a){for(const r of Array.from(document.querySelectorAll("[data-sl-attribute-p]"))){const o=r.getAttribute("data-sl-attribute-p");if(!o)continue;const n=a.variants.find(l=>l[0]===o);if(n?.[3])return n[3]}const s=document.querySelector('form[action*="/cart/add"] input[name="id"]')?.value;if(s){const r=a.variants.find(o=>o[0]===s);if(r?.[3])return r[3]}}const t=window,i=t.ShopifyAnalytics?.meta?.product?.id??t.meta?.product?.id;return i!=null?String(i):null}function D(a,e){return a.widget.selectors[e]??[]}function N(a,e){return a.replace(/[\d.]+%/,`${e}%`)}function $(a,e){const t=document.createTreeWalker(a,NodeFilter.SHOW_TEXT);let i=t.nextNode();for(;i;){if(i.nodeValue!==null){const s=e(i.nodeValue);if(s!==i.nodeValue){i.nodeValue=s;return}}i=t.nextNode()}}function de(a,e){return a===null?!1:a==="decrease"?!e:e}async function Ue(a){if(a.subscriptionSwapDone)return;const e=a.getActiveAssignment();if(!e)return;const t=a.getHypothesis(e.hypothesisId);if(!t?.subscriptionData)return;a.subscriptionSwapDone=!0;const i=t.subscriptionData,s=t.isControl,r=[...new Set(i.plans.map(d=>d.direction))].join(",");a.log(`[SUB-SWAP] ${s?"A":"B"} side, directions=${r}`);const o=i.plans.some(d=>d.variantId);let n=!1,l=!1;function c(){if(!l){l=!0;try{const d=o?document.querySelector("select[name='id'], input[name='id']")?.value:void 0,{showPlanIds:u,hidePlanIds:h,swapMap:p}=le(i,s,d);a.swapMap=p;const b=D(i,"widgetParent"),E=D(i,"subscriptionPlans"),S=D(i,"subscriptionInput");if(!b.length||!E.length||!S.length)return;const C=document.querySelector(b[0].selector);if(!C?.shadowRoot)return;const _=C.shadowRoot.querySelector(E[0].selector);if(!_?.shadowRoot)return;const T=S[0].selector;let m=null;if(i.widget.widgetType==="buttons"||i.widget.widgetType==="radio"){const y=Array.from(_.shadowRoot.querySelectorAll(T));if(!y.length)return;for(const v of y){const g=v.closest("label");g&&(u.includes(v.value)?g.style.display="":h.includes(v.value)&&(g.style.display="none"))}const w=y.some(v=>u.includes(v.value)&&v.checked),I=y.some(v=>h.includes(v.value)&&v.checked);if((w||I)&&(n=!1),!w&&!n){n=!0;for(const v of y)if(u.includes(v.value)){v.closest("label")?.click(),v.dispatchEvent(new Event("change",{bubbles:!0}));break}}const f=y.find(v=>v.checked);m=f&&u.includes(f.value)?f.value:u[0]??null}else if(i.widget.widgetType==="dropdown"){const y=_.shadowRoot.querySelector("select");if(!y)return;for(const w of Array.from(y.options))h.includes(w.value)&&(w.style.display="none",w.disabled=!0);if(h.includes(y.value)){const w=Array.from(y.options).find(I=>u.includes(I.value));w&&(y.value=w.value,y.dispatchEvent(new Event("change",{bubbles:!0})))}m=u.includes(y.value)?y.value:u[0]??null}if(m){const y=Array.from(document.querySelectorAll('input[name="selling_plan"]'));for(const w of y)w.value!==m&&(w.value=m)}}finally{l=!1}}}if(a.subscriptionHideWrongPlans=c,a.swapMap=le(i,s).swapMap,c(),o){const d=document.querySelector("select[name='id'], input[name='id']");d&&d.addEventListener("change",c)}}function B(a){const e=D(a,"widgetParent");return e.length?document.querySelector(e[0].selector)?.shadowRoot??null:null}function Y(a,e){const t=D(a,"subscriptionPlans");return t.length?e.querySelector(t[0].selector)?.shadowRoot??null:null}function Z(a,e){const t=new URLSearchParams(window.location.search).get("variant");if(t)return t;{const i=document.querySelector('form[action*="/cart/add"] input[name="id"]')?.value;if(i)return i}return a.size>0?[...a.keys()][0]:void 0}function G(a,e){return H(a,e.moneyFormat,e.currency,e.currencyCodeEnabled)}function Fe({originalFetch:a,swapMap:e,slptValue:t,getSelectedPlanId:i,log:s}){if(window.fetch.__shoplift_intercepted)return s("[SUB-INTERCEPT] already installed — skipping"),()=>{};function r(n){if(i){const l=i();if(l)return e[l]??l}return e[n]??n}const o=function(n,l){if((typeof n=="string"?n:n instanceof URL?n.href:n.url).includes("/cart/add")&&l?.body)try{if(l.body instanceof FormData){const d=l.body.get("selling_plan");d?l.body.set("selling_plan",r(String(d))):(!d||d==="")&&t&&l.body.set("properties[_slpt]",t)}
17else if(typeof l.body=="string"){const d=JSON.parse(l.body);if(d.items)for(const u of d.items){const h=String(u.selling_plan??"");h?u.selling_plan=r(h):!u.selling_plan&&t&&(u.properties||(u.properties={}),u.properties._slpt=t)}else if(d.id){const u=String(d.selling_plan??"");u?d.selling_plan=r(u):!d.selling_plan&&t&&(d.properties||(d.properties={}),d.properties._slpt=t)}l.body=JSON.stringify(d)}}catch(d){s("[SUB-INTERCEPT] body parse failed; cart-add proceeds with un-swapped plan",d)}return a.call(window,n,l)};return o.__shoplift_intercepted=!0,window.fetch=o,function(){window.fetch===o&&(window.fetch=a)}}function Be({log:a}){if(window.fetch.__shoplift_intercepted)return a("[SUB-PREVIEW-BLOCK] already installed — skipping"),()=>{};const e=window.fetch,t=function(i,s){const r=typeof i=="string"?i:i instanceof URL?i.href:i.url;return r.includes("/cart/add")?(a("[SUB-PREVIEW-BLOCK] cart-add blocked in preview mode",{url:r}),Promise.resolve(new Response(JSON.stringify({id:0,properties:{},quantity:0,variant_id:0,key:"preview",title:"Preview — cart-add blocked",price:0,original_price:0,line_price:0,original_line_price:0,total_discount:0,discounts:[],preview:!0}),{status:200,headers:{"Content-Type":"application/json"}}))):e.call(window,i,s)};return t.__shoplift_intercepted=!0,window.fetch=t,function(){window.fetch===t&&(window.fetch=e)}}function pe({data:a,runUpdates:e,debounceMs:t=150}){let i=null;function s(){i&&clearTimeout(i),e(),i=setTimeout(e,t)}let r=null;const o=[],n={childList:!0,subtree:!0,characterData:!0,attributes:!0};function l(h){for(const p of o)p.disconnect();o.length=0;for(const p of Array.from(h.querySelectorAll("*")))if(p.shadowRoot){const b=new MutationObserver(s);b.observe(p.shadowRoot,n),o.push(b)}}function c(){const h=B(a);return h?(r&&r.disconnect(),l(h),r=new MutationObserver(p=>{p.some(b=>b.type==="childList"&&b.addedNodes.length>0)&&l(h),s()}),r.observe(h,n),!0):!1}const d=document.body||document.documentElement,u=new MutationObserver(()=>{c()&&s()});return u.observe(d,{childList:!0,subtree:!0}),c()&&s(),e(),function(){i&&(clearTimeout(i),i=null),u.disconnect(),r&&(r.disconnect(),r=null);for(const p of o)p.disconnect();o.length=0}}async function ze(a){if(a.subscriptionPriceDone)return;const e=a.getActiveAssignment(),t=e?a.getHypothesis(e.hypothesisId):void 0,i=t?.subscriptionData?null:a.findActiveSubscriptionTestControl(),s=t?.subscriptionData?t:i?.hypothesis;if(!s?.subscriptionData)return;const r=t?.subscriptionData?e.testId:i.testId;a.subscriptionPriceDone=!0;const o=s.subscriptionData,n=s.isControl,l=s.priceData,c=o.widget.widgetType;let d=W(l),u=J(o,d),h=u.discountMap,p=u.maxDiscount;function b(){const g=W(l);g!==d&&(d=g,u=J(o,d),h=u.discountMap,p=u.maxDiscount,a.log(`[SUB-PRICE] scope refreshed side=${n?"A":"B"}, currentProductId=${d??"n/a"}, maxDiscount=${p}`))}a.log(`[SUB-PRICE] side=${n?"A":"B"}, currentProductId=${d??"n/a"}, maxDiscount=${p}`),a.updatePriceTestHiddenInputs(r,n?"control":"variant",!1);function E(){if(!l)return null;const g=j(l),P=Z(g),A=ce(o,P,d);if(!de(A,n))return null;const k=P?g.get(P):void 0;return k?{formattedVariantPrice:G(k.priceInCents,l),formattedDiscounted:G(k.priceInCents*(1-p/100),l)}:null}Fe({originalFetch:a.fetch,swapMap:a.swapMap??{},slptValue:a.slptValue??void 0,log:a.log,getSelectedPlanId:()=>{const g=B(o);if(!g)return null;const P=Y(o,g);if(!P)return null;const A=D(o,"subscriptionInput"),k=A.length?A[0].selector:'input[name="rc_plan"]';return P.querySelector(`${k}:checked`)?.value??null}});function S(g){const P=D(o,"subscriptionDiscount");for(const A of P)if(A.selector.includes("badge")||A.selector.includes("__badge")){const k=g.querySelector(A.selector);k?.textContent&&!k.textContent.includes(`${p}%`)&&$(k,x=>N(x,p))}}function C(g){const P=E();if(!P)return;const A=D(o,"subscriptionCompareAt");for(const k of A){const x=g.querySelector(k.selector)||g.querySelector(`[part~="${k.selector}"]`);x?.textContent&&!x.textContent.includes(P.formattedVariantPrice)&&$(x,R=>/\d/.test(R)?P.formattedVariantPrice:R)}}function _(g,P){const A=D(o,"subscriptionCompareAt"),k=P===0?"none":"";for(const x of A){const R=g.querySelector(x.selector)||g.querySelector(`[part~="${x.selector}"]`);R&&(k==="none"?R.style.display!=="none"&&(R.style.display="none"):R.style.display==="none"&&(R.style.display=""))}}function T(g){const P=D(o,"subscriptionInput"),A=P.length?P[0].selector:'input[name="rc_plan"]',k=D(o,"subscriptionPlanDiscount"),x=k.length?k[0].selector:".rc-plans-button__discount";for(const R of Array.from(g.querySelectorAll("label"))){const V=R.querySelector(A),O=R.querySelector(x);if(V&&O){const L=h[V.value];if(L!==void 0){if(L===0)O.style.display!=="none"&&(O.style.display="none");else if(O.style.display==="none"&&(O.style.display=""),O.textContent){const Q=O.textContent.match(/[\d.]+%/)?.[0];Q&&Q!==`${L}%`&&$(O,et=>N(et,L))}}}}}function m(g){const P=g.querySelector("select");if(P)for(const A of Array.from(P.options)){const k=h[A.value];if(k!==void 0&&A.textContent){const x=A.textContent.match(/[\d.]+%/)?.[0];x&&x!==`${k}%`&&(A.textContent=N(A.textContent,k))}}}function y(g,P){const k=D(o,"subscriptionDiscount").filter(x=>x.selector.includes("benefit")||x.selector==="rc-benefits");for(const x of k){const R=g.querySelector(x.selector);if(R?.shadowRoot){for(const V of Array.from(R.shadowRoot.querySelectorAll("li")))if(V.textContent?.includes("Save")){const O=V;if(P===0)O.style.display!=="none"&&(O.style.display="none");else{O.style.display==="none"&&(O.style.display="");const L=V.textContent.match(/[\d.]+%/)?.[0];L&&L!==`${P}%`&&$(V,Q=>N(Q,P))}}}}}let w=!1;function I(){if(!w){w=!0;try{if(b(),d!==null&&Object.keys(h).length===0)return;const g=B(o);if(!g)return;S(g),l&&C(g);const P=Y(o,g);let A=p;if(P){const k=D(o,"subscriptionInput"),x=k.length?k[0].selector:'input[name="rc_plan"]',R=P.querySelector(`${x}:checked`);if(R){const V=h[R.value];V!==void 0&&(A=V)}c==="buttons"||c==="radio"?T(P):m(P)}_(g,A),y(g,A)}finally{w=!1}}}function f(){const g=E();if(!g)return;const P=B(o);if(!P)return;const A=D(o,"onetimeToggle"),k=A.length?A[0].selector:'input[value="onetime"]';if(!P.querySelector(k)?.checked)return;const R=D(o,"subscriptionPrice");for(const V of R){const O=P.querySelector(V.selector)||P.querySelector(`[part~="${V.selector}"]`);O?.textContent&&!O.textContent.includes(g.formattedDiscounted)&&$(O,L=>/\d/.test(L)?g.formattedDiscounted:L)}}function v(){a.subscriptionHideWrongPlans&&a.subscriptionHideWrongPlans(),I(),a.subscriptionUpdateOneTime&&a.subscriptionUpdateOneTime(),f()}pe({data:o,runUpdates:v})}async function We(a){if(a.subscriptionOneTimeDone)return;const e=a.getActiveAssignment(),t=e?a.getHypothesis(e.hypothesisId):void 0,i=!!(t?.subscriptionData&&t.priceData),s=i?null:a.findActiveSubscriptionTestControl(),r=i?t:s?.hy
17pothesis;if(!r?.subscriptionData||!r.priceData)return;const o=i?e.testId:s.testId;a.subscriptionOneTimeDone=!0;const n=r.subscriptionData,l=r.priceData,c=j(l),d=r.isControl,u=d?"control":"variant";a.slptValue=`${o}:${u}:f`,a.updatePriceTestHiddenInputs(o,u,!1);function h(){const p=B(n);if(!p)return;const b=Z(c);if(!b)return;const E=W(l),S=ce(n,b,E);if(!de(S,d))return;const C=c.get(b);if(!C)return;const _=H(C.priceInCents,l.moneyFormat,l.currency,l.currencyCodeEnabled),T=D(n,"onetimePrice");if(!T.length)return;const m=D(n,"onetimeContainer"),y=m.length?m[0].selector:'[part~="rc-purchase-option__onetime"]',I=p.querySelector(y)??p;for(const f of T){let v=null;try{v=I.querySelector(f.selector)}catch{v=null}v??=I.querySelector(`[part~="${f.selector}"]`),v&&v.textContent&&!v.textContent.includes(_)&&$(v,g=>/\d/.test(g)?_:g)}}a.subscriptionUpdateOneTime=h,h()}async function Ge(a,e){const{subscriptionPreviewRender:t}=await Ne(async()=>{const{subscriptionPreviewRender:i}=await Promise.resolve().then(()=>Xe);return{subscriptionPreviewRender:i}},void 0);return t(a.subscriptionData,a.priceData,a.isControl,e)}function je(a,e){const t=a.widget.selectors.widgetParent??[],i=a.widget.selectors.subscriptionPlans??[],s=a.widget.selectors.subscriptionInput??[];if(!t.length||!i.length||!s.length){e("[SUB-GLOBAL-HIDE] Missing required selectors — skipping");return}const r=t[0].selector,o=i[0].selector,n=s[0].selector;let l=!1,c=null,d=!1;function u(){if(!d){d=!0;try{h()}finally{d=!1}}}function h(){const C=document.querySelector(r);if(!C?.shadowRoot)return;const _=C.shadowRoot.querySelector(o);if(!_?.shadowRoot)return;_.shadowRoot!==c&&(c=_.shadowRoot,l=!1);let T=0;if(a.widget.widgetType==="buttons"||a.widget.widgetType==="radio"){const m=Array.from(_.shadowRoot.querySelectorAll(n));for(const f of m)if(a.planIds.includes(f.value)){f.disabled||(f.disabled=!0);const v=f.closest("label");v&&v.style.display!=="none"&&(v.style.display="none",T++)}const y=m.filter(f=>!a.planIds.includes(f.value));if(!y.some(f=>f.checked)&&!l&&y.length>0){l=!0;const f=y[0];f.closest("label")?.click(),f.dispatchEvent(new Event("change",{bubbles:!0})),e(`[SUB-GLOBAL-HIDE] Preselected first visible plan input=${f.value}`)}const I=y.find(f=>f.checked)??y[0];if(I){const f=Array.from(document.querySelectorAll('input[name="selling_plan"]'));for(const v of f)v.value!==I.value&&(v.value=I.value,e(`[SUB-GLOBAL-HIDE] Mirrored plan id ${I.value} to form selling_plan input`))}}else if(a.widget.widgetType==="dropdown"){const m=_.shadowRoot.querySelector("select");if(!m)return;for(const I of Array.from(m.options))a.planIds.includes(I.value)&&(I.style.display!=="none"&&(I.style.display="none"),I.disabled||(I.disabled=!0),T++);const y=Array.from(m.options).filter(I=>!a.planIds.includes(I.value)),w=y.some(I=>I.value===m.value);y.length>0&&!w&&!l&&(l=!0,m.value=y[0].value,m.dispatchEvent(new Event("change",{bubbles:!0})),e(`[SUB-GLOBAL-HIDE] Preselected first visible option=${y[0].value}`))}T>0&&e(`[SUB-GLOBAL-HIDE] Hidden ${T} B-side plan buttons`)}const p={childList:!0,subtree:!0,characterData:!0};let b=null;function E(C){b?.disconnect(),b=new MutationObserver(()=>u()),b.observe(C,p)}function S(){const C=document.querySelector(r);if(!C?.shadowRoot)return!1;u(),new MutationObserver(()=>{u();const m=C.shadowRoot.querySelector(o);m?.shadowRoot&&E(m.shadowRoot)}).observe(C.shadowRoot,p);const T=C.shadowRoot.querySelector(o);return T?.shadowRoot&&E(T.shadowRoot),!0}if(!S()){e("[SUB-GLOBAL-HIDE] Widget not in DOM yet — waiting via MutationObserver");const C=new MutationObserver(()=>{S()&&C.disconnect()});C.observe(document.body??document.documentElement,{childList:!0,subtree:!0})}}const ue="Limited preview",Ke="Add-to-cart and checkout prices won't reflect this test until it launches — test selling plans are not created in your subscription app until after a test is launched.",Je=5e3;function Ye(){const a=document.createElement("div");a.id="shoplift-preview-subscription-warning";const e=document.createElement("span");e.id="shoplift-preview-subscription-warning__icon",e.setAttribute("aria-hidden","true"),e.textContent="!";const t=document.createElement("span");t.id="shoplift-preview-subscription-warning__label",t.textContent=ue;const i=document.createElement("div");i.id="shoplift-preview-subscription-warning__tooltip",i.setAttribute("role","tooltip"),i.textContent=Ke,a.appendChild(e),a.appendChild(t),a.appendChild(i),a.setAttribute("tabindex","0"),a.setAttribute("aria-describedby",i.id),a.setAttribute("aria-label",ue);let s=null;function r(){s!==null&&(clearTimeout(s),s=null)}function o(){i.classList.add("shoplift-preview-subscription-warning__tooltip--visible")}function n(){i.classList.remove("shoplift-preview-subscription-warning__tooltip--visible")}function l(){o(),r(),s=setTimeout(()=>{n(),s=null},Je)}function c(){r(),o()}function d(){s===null&&n()}a.addEventListener("mouseenter",c),a.addEventListener("mouseleave",d),a.addEventListener("focus",c),a.addEventListener("blur",d);function u(p){try{const b=p.target;if(!(b instanceof Element))return;(b.closest('form[action*="/cart/add"] button[type="submit"], form[action*="/cart/add"] input[type="submit"]')!==null||b.closest('[name="add"], button[name="add"], [data-add-to-cart], button[data-add-to-cart]')!==null)&&l()}catch{}}
17document.addEventListener("click",u,!0);function h(){r(),document.removeEventListener("click",u,!0),a.removeEventListener("mouseenter",c),a.removeEventListener("mouseleave",d),a.removeEventListener("focus",c),a.removeEventListener("blur",d),a.remove()}return{root:a,tooltip:i,cleanup:h}}let he=!1;class Ze{DATA_SL_ATTRIBUTE_P="data-sl-attribute-p";DATA_SL_TEST_ID="data-sl-test-id";VIEWPORT_TRACK_THRESHOLD=.5;temporarySessionKey="Shoplift_Session";essentialSessionKey="Shoplift_Essential";analyticsSessionKey="Shoplift_Analytics";priceSelectorsSessionKey="Shoplift_PriceSelectors_v2";shop;host;eventHost;disableReferrerOverride;legacySessionKey;cssHideClass;testConfigs;inactiveTestConfigs;hiddenSubscriptionPlans;testsFilteredByAudience;sendPageView;shopliftDebug;gaConfig;telemetryEnabled;getCountryTimeout;geoViaShopify;resolvedRegion=null;state;subscriptionPreviewWarningCleanup=null;shopifyAnalyticsId;cookie=document.cookie;isSyncing=!1;isSyncingGA=!1;fetch;localStorageSet;localStorageGet;sessionStorageSet=window.sessionStorage.setItem.bind(window.sessionStorage);sessionStorageGet=window.sessionStorage.getItem.bind(window.sessionStorage);urlParams=new URLSearchParams(window.location.search);device;logHistory;activeViewportObservers=new Map;clientIdRetryCount=0;constructor(e,t,i,s,r,o,n,l,c,d,u,h,p,b=!1){this.shop=e,this.host=t,this.eventHost=i,this.disableReferrerOverride=l,this.logHistory=[],this.legacySessionKey=`SHOPLIFT_SESSION_${this.shop}`,this.cssHideClass=s?"shoplift-hide":"",this.testConfigs=u.map(S=>({...S,startAt:new Date(S.startAt),statusHistory:S.statusHistory.map(C=>({...C,createdAt:new Date(C.createdAt)}))})),this.inactiveTestConfigs=h,this.hiddenSubscriptionPlans=p,this.sendPageView=!!r,this.shopliftDebug=o===!0,this.telemetryEnabled=c===!0,this.geoViaShopify=b===!0,this.gaConfig=n!=={"sendEvents":false,"mode":"gtag"}?n:{sendEvents:!1},this.fetch=window.fetch.bind(window),this.localStorageSet=window.localStorage.setItem.bind(window.localStorage),this.localStorageGet=window.localStorage.getItem.bind(window.localStorage);const E=this.getDeviceType();this.device=E!=="tablet"?E:"mobile",this.state=this.loadState(),this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.testsFilteredByAudience=u.filter(S=>
17S.status=="active"),this.getCountryTimeout=d===1000?1e3:d,window.__slReadCookie=S=>{const C=this.getCookie(S);if(C===null)return null;try{return decodeURIComponent(C)}catch{return C}},this.log("State Loaded",JSON.stringify(this.state))}deriveCategoryFromExistingTests(){if(!this.state.temporary.testCategory&&this.state.essential.visitorTests.length>0){const e=this.state.essential.visitorTests.some(t=>{if(!t.hypothesisId)return!1;const i=this.getHypothesis(t.hypothesisId);return i&&["theme","basicScript","price"].includes(i.type)});this.state.temporary.testCategory=e?"global":"conditional",this.persistTemporaryState(),this.log("Derived test category from existing visitorTests: %s",this.state.temporary.testCategory)}}async init(){try{if(this.log("Shoplift script initializing"),window.Shopify&&window.Shopify.designMode){this.log("Skipping script for design mode");return}if(window.location.href.includes("slScreenshot=true")){this.log("Skipping script for screenshot");return}if(window.location.hostname.endsWith(".edgemesh.com")){this.log("Skipping script for preview");return}if(window.location.href.includes("isShopliftMerchant")){const o=this.urlParams.get("isShopliftMerchant")==="true";this.log("Setting merchant session to %s",o),this.state.temporary.isMerchant=o,this.persistTemporaryState()}if(this.state.temporary.isMerchant){this.log("Setting up preview for merchant"),typeof window.shoplift!="object"&&this.setShopliftStub(),this.state.temporary.previewConfig||this.hidePage(),await this.initPreview(),document.querySelector("#sl-preview-bar-hide")?.remove();return}if(this.state.temporary.previewConfig=void 0,we(navigator.userAgent))return;const e=Date.now(),t=!this.state.temporary.lastSeen||e-this.state.temporary.lastSeen>1800*1e3;(!this.state.temporary.entryPage||t)&&(this.state.temporary.entryPage=K(window.location.href)),this.state.temporary.lastSeen=e,this.persistTemporaryState(),window.__slEntryPage=this.state.temporary.entryPage??"";const i=this.state.essential.visitorTests.filter(o=>o.hypothesisId&&+o.createdAt>Date.now()-6e4);if(i.length===0)this.sendDiagnosticTelemetry("page-landed",null);else for(const o of i)this.sendDiagnosticTelemetry("page-landed",o.testId,{hypothesisId:o.hypothesisId,isControl:o.assignedTo==="control",testType:o.testType??"unknown"});if(navigator.userAgent.includes("Chrome/118")){this.log("Random: %o",[Math.random(),Math.random(),Math.random()]);const o=await this.makeRequest({url:`${this.eventHost}/api/v0/events/ip`,method:"get"}).then(n=>n?.json());this.log(`IP: ${o}`),this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify(this.debugState(),ee)}).catch()}if(this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.monitorConsentChange(),this.checkForThemePreview())return;if(!this.disableReferrerOverride&&this.state.temporary.originalReferrer!=null){this.log(`Overriding referrer from '${document.referrer}' to '${this.state.temporary.originalReferrer}'`);const o=this.state.temporary.originalReferrer;delete this.state.temporary.originalReferrer,this.persistTemporaryState(),Object.defineProperty(document,"referrer",{get:()=>o,enumerable:!0,configurable:!0})}if(await this.refreshVisitor(this.shopifyAnalyticsId),await this.handleVisitorTest()){this.log("Redirecting for visitor test");return}this.setShoplift(),this.showPage(),this.ensureCartAttributesForExistingPriceTests(!1);const r=this.state.essential.visitorTests.some(o=>(o.hypothesisId?this.getHypothesis(o.hypothesisId):void 0)?.subscriptionData!=null)||Object.values(this.state.temporary.testReservations??{}).some(o=>this.getHypothesis(o.hypothesisId)?.subscriptionData!=null);this.hiddenSubscriptionPlans&&!r&&(this.log(`[SUB-GLOBAL] Visitor not in subscription test — hiding ${this.hiddenSubscriptionPlans.planIds.length} B-side plans`),je(this.hiddenSubscriptionPlans,o=>this.log(o))),await this.subscriptionSwap(),await this.subscriptionOneTimePrice(),await this.subscriptionPriceChange(),await this.finalize(),console.log("SHOPLIFT SCRIPT INITIALIZED!")}catch(e){if(e instanceof ie)return;throw e}finally{typeof window.shoplift!="object"&&this.setShopliftStub()}}getVariantColor(e){switch(e){case"a":return{text:"#141414",bg:"#E2E2E2"};case"b":return{text:"rgba(255, 255, 255, 1)",bg:"rgba(37, 99, 235, 1)"}}}getDefaultVariantTitle(e){return e.title?e.title:e.type==="price"?e.isControl?"Original prices":"Variant prices":e.isControl?"Original":"Untitled variant "+e.label.toUpperCase()}
17async initPreview(){const e=this.urlParams.get("previewConfig");if(e){this.state.temporary.previewConfig=void 0,this.log("Setting up the preview"),this.log("Found preview config, writing to temporary state");const t=await Ve(e);if(this.state.temporary.previewConfig=t,this.state.temporary.previewConfig.testTypeCategory===M.Price){this.hidePage(!0);const s=this.state.temporary.previewConfig;let r=`${this.host}/api/dom-selectors/${s.storeId}/${s.testId}/${s.isDraft||!1}`;s.shopifyProductId&&(r+=`?productId=${s.shopifyProductId}`);const o=await this.makeJsonRequest({method:"get",url:r}).catch(n=>(this.log("Error getting domSelectors",n),null));if(s.variants.forEach(n=>n.domSelectors=o[n.id]?.domSelectors),s.isDraft){const n=`${this.host}/api/dom-selectors/${s.storeId}/${s.testId}/subscription-preview`,l=await this.makeJsonRequest({method:"get",url:n}).catch(c=>(this.log("No subscription preview data for draft (test may not have a subscription widget)",c),null));l?.subscriptionData&&s.variants.forEach(c=>{c.subscriptionData=l.subscriptionData,c.priceData=l.priceData})}}this.persistTemporaryState();const i=new URL(window.location.toString());i.searchParams.delete("previewConfig"),this.queueRedirect(i)}else if(this.state.temporary.previewConfig){this.showPage();const t=this.state.temporary.previewConfig;if(t.testTypeCategory===M.Template&&this.handleTemplatePreview(t)&&this.initPreviewControls(t),t.testTypeCategory===M.UrlRedirect&&this.handleUrlPreview(t)&&this.initPreviewControls(t),t.testTypeCategory===M.Script&&this.handleScriptPreview(t)&&this.initPreviewControls(t),t.testTypeCategory===M.Price){const i=await this.handlePricePreview(t);t.isDraft?await this.handleSubscriptionPricePreview(t):await this.handleSubscriptionLivePreview(t),i&&this.initPreviewControls(t)}}}initPreviewControls(e){document.addEventListener("DOMContentLoaded",()=>{const t=e.variants.find(b=>b.id===e.currentVariant),i=t?.label||"a",s=e.variants,r=document.createElement("div");r.id="shoplift-preview-control";const o=document.createElement("div"),n=document.createElement("img");n.src=Oe,n.height=24,n.width=14,o.style.padding="0 16px",o.style.lineHeight="100%",o.appendChild(n),r.appendChild(o);const l=document.createElement("div");l.id="shoplift-preview-variant-selector";const c=document.createElement("button");c.id="shoplift-preview-variant-menu-trigger";const d=document.createElement("div");d.className="menu-variant-label",d.style.backgroundColor=this.getVariantColor(i).bg,d.style.color=this.getVariantColor(i).text,d.innerText=i.toUpperCase(),c.appendChild(d);const u=document.createElement("span");if(u.id="shoplift-preview-variant-title",u.innerText=t?this.getDefaultVariantTitle(t):"Untitled variant "+i.toUpperCase(),c.appendChild(u),s.length>1){const b=document.createElement("img");b.src=De,b.width=12,b.height=12,b.style.height="12px",b.style.width="12px",c.appendChild(b);const E=document.createElement("div");E.className="preview-variant-menu";for(const S of e.variants.filter(C=>C.id!==e.currentVariant)){const C=document.createElement("div");C.className="preview-variant-menu--item";const _=document.createElement("div");_.className="menu-variant-label",_.style.backgroundColor=this.getVariantColor(S.label).bg,_.style.color=this.getVariantColor(S.label).text,_.style.flexShrink="0",_.innerText=S.label.toUpperCase(),C.appendChild(_);const T=document.createElement("span");T.innerText=this.getDefaultVariantTitle(S),C.appendChild(T),C.addEventListener("click",()=>{this.pickVariant(S.id)}),E.appendChild(C)}l.appendChild(E),c.addEventListener("click",()=>{E.className!=="preview-variant-menu preview-variant-menu__visible"?E.classList.add("preview-variant-menu__visible"):E.classList.remove("preview-variant-menu__visible")}),document.addEventListener("click",S=>{S.target instanceof Element&&!c.contains(S.target)&&E.className==="preview-variant-menu preview-variant-menu__visible"&&E.classList.remove("preview-variant-menu__visible")})}else c.style.pointerEvents="none",d.style.margin="0";if(l.appendChild(c),r.appendChild(l),e.hasSubscription){this.subscriptionPreviewWarningCleanup?.();const b=Ye();r.appendChild(b.root),this.subscriptionPreviewWarningCleanup=b.cleanup}const h=document.createElement("div"),p=document.createElement("button");p.id="shoplift-exit-preview-button",p.innerText="Exit",h.appendChild(p),p.addEventListener("click",()=>{this.exitPreview()}),r.appendChild(h),document.body.appendChild(r),requestAnimationFrame(()=>{r.classList.add("visible")})}),this.ensureCartAttributesForExistingPriceTests(!0)}pickVariant(e){if(this.state.temporary.previewConfig){const t=this.state.temporary.previewConfig,i=new URL(window.location.toString());if(t.testTypeCategory===M.UrlRedirect){const s=t.variants.find(r=>r.id===t.currentVariant)?.redirectUrl;if(i.pathname===s){const r=t.variants.find(o=>o.id===e)?.redirectUrl;r&&(i.pathname=r)}}if(t.testTypeCategory===M.Template){const s=t.variants.find(r=>r.id===t.currentVariant)?.pathName;if(s&&i.pathname===s){const r=t.variants.find(o=>o.id===e)?.pathName;r&&r!==s&&(i.pathname=r)}}t.currentVariant=e,this.persistTemporaryState(),this.queueRedirect(i)}}exitPreview(){const e=new URL(window.location.toString());if(this.state.temporary.previewConfig?.testTypeCategory===M.Template&&e.searchParams.delete("view"),this.state.temporary.previewConfig?.testTypeCategory===M.Script&&e.searchParams.delete("slVariant"),this.state.temporary.previewConfig?.testTypeCategory===M.UrlRedirect){const i=this.state.temporary.previewConfig.variants.filter(r=>!r.isControl&&r.redirectUrl!==null).map(r=>r.redirectUrl),s=this.state.temporary.previewConfig.variants.find(r=>r.label==="a")?.redirectUrl;i.includes(e.pathname)&&s&&(e.pathname=s)}this.state.temporary.isMerchant=!1,e.searchParams.delete("isShopliftMerchant"),this.state.temporary.previewConfig=void 0,this.persistTemporaryState(),this.subscriptionPreviewWarningCleanup?.(),this.subscriptionPreviewWarningCleanup=null,this.hidePage(),this.queueRedirect(e)}handleTemplatePreview(e){const t=e.currentVariant,i=e.variants.find(l=>l.id===t);if(!i)return!1;const s=e.variants.find(l=>l.isControl);if(!s)return!1;this.log("Setting up template preview for type",s.type);
17const r=new URL(window.location.toString()),o=r.searchParams.get("view"),n=i.type===s.type;return!n&&!i.isControl&&template.suffix===s.affix&&this.typeFromTemplate()===s.type&&i.pathName!==null?(this.log("Hit control template type, redirecting to the variant url"),this.hidePage(),r.pathname=i.pathName,this.queueRedirect(r),!0):(!i.isControl&&this.typeFromTemplate()==i.type&&template.suffix===s.affix&&n&&o!==(i.affix||"__DEFAULT__")&&(this.log("Template type and affix match control, updating the view param"),r.searchParams.delete("view"),this.log("Setting the new viewParam to",i.affix||"__DEFAULT__"),this.hidePage(),r.searchParams.set("view",i.affix||"__DEFAULT__"),this.queueRedirect(r)),o!==null&&o!==(i.affix||"__DEFAULT__")&&(r.searchParams.delete("view"),this.hidePage(),this.queueRedirect(r)),!0)}handleUrlPreview(e){const t=e.currentVariant,i=e.variants.find(o=>o.id===t),s=e.variants.find(o=>o.isControl)?.redirectUrl;if(!i)return!1;this.log("Setting up URL redirect preview");const r=new URL(window.location.toString());return r.pathname===s&&!i.isControl&&i.redirectUrl!==null&&(this.log("Url matches control, redirecting"),this.hidePage(),r.pathname=i.redirectUrl,this.queueRedirect(r)),!0}handleScriptPreview(e){const t=e.currentVariant,i=e.variants.find(o=>o.id===t);if(!i)return!1;this.log("Setting up script preview");const s=new URL(window.location.toString());return s.searchParams.get("slVariant")!==i.id&&(this.log("current id doesn't match the variant, redirecting"),s.searchParams.delete("slVariant"),this.log("Setting the new slVariantParam"),this.hidePage(),s.searchParams.set("slVariant",i.id),this.queueRedirect(s)),!0}async handlePricePreview(e){const t=e.currentVariant,i=e.variants.find(s=>s.id===t);return i?(this.log("Setting up price preview"),i.domSelectors&&i.domSelectors.length>0&&(U(document,{testId:e.testId,hypothesisId:i.id,selectors:i.domSelectors}),this.ensureCartAttributesForExistingPriceTests(!0)),!0):!1}async handleSubscriptionPricePreview(e){const t=e.variants.find(i=>i.id===e.currentVariant);t?.subscriptionData&&(this.log("Setting up subscription price preview"),await Ge({id:t.id,isControl:t.isControl,subscriptionData:t.subscriptionData,priceData:t.priceData},(i,...s)=>this.log(i,...s)))}async handleSubscriptionLivePreview(e){this.testConfigs.find(s=>s.id===e.testId)?.hypotheses.find(s=>s.id===e.currentVariant)?.subscriptionData&&(this.log("Setting up subscription live preview"),this.subscriptionSwapDone=!1,this.subscriptionOneTimeDone=!1,this.subscriptionPriceDone=!1,await this.subscriptionSwap(),await this.subscriptionOneTimePrice(),await this.subscriptionPriceChange())}async finalize(){const e=await this.getCartState();e!==null&&this.queueCartUpdate(e),this.pruneStateAndSave(),await this.syncAllEvents()}setShoplift(){this.log("Setting up public API");const t=this.urlParams.get("slVariant")==="true",i=t?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:async s=>{if(this.log("Script checking variant for hypothesis '%s'",s),t)return this.log("Forcing variant for hypothesis '%s'",s),!0;if(i!==null)return this.log("Forcing hypothesis '%s'",i),s===i;const r=this.testConfigs.find(n=>n.hypotheses.some(l=>l.id===s));if(!r)return this.log("No test found for hypothesis '%s'",s),!1;const o=this.state.essential.visitorTests.find(n=>n.testId===r.id);return o?(this.log("Active visitor test found",s),o.hypothesisId===s):(await this.manuallySplitVisitor(r),this.testConfigs.some(n=>n.hypotheses.some(l=>l.id===s&&this.state.essential.visitorTests.some(c=>c.hypothesisId===l.id))))},setAnalyticsConsent:async s=>{await this.onConsentChange(s,!0)},getVisitorData:()=>({visitor:this.state.analytics.visitor,visitorTests:this.state.essential.visitorTests.filter(s=>!s.isInvalid).map(s=>{const{shouldSendToGa:r,savedAt:o,...n}=s;return n})})}}setShopliftStub(){this.log("Setting up stubbed public API");const t=this.urlParams.get("slVariant")==="true",i=t?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:s=>Promise.resolve(t||s===i),setAnalyticsConsent:()=>Promise.resolve(),getVisitorData:()=>({visitor:null,visitorTests:[]})}}async manuallySplitVisitor(e){this.log("Starting manual split for test '%s'",e.id),await this.handleVisitorTest([e]);const t=this.getReservationForTest(e.id);t&&!t.isRealized&&t.entryCriteriaKey&&(this.log("Realizing manual API reservation for test '%s'",e.id),this.realizeReservationForCriteria(t.entryCriteriaKey)),this.saveState(),this.syncAllEvents()}async handleVisitorTest(e){await this.filterTestsByAudience(this.testConfigs,this.state.analytics.visitor??this.buildBaseVisitor(),this.state.essential.visitorTests),this.pruneStaleVisitorTests(),this.deriveC
17ategoryFromExistingTests(),this.clearStaleReservations();let t=e?e.filter(i=>this.testsFilteredByAudience.some(s=>s.id===i.id)):[...this.testsForUrl(this.testsFilteredByAudience),...this.domTestsForUrl(this.testsFilteredByAudience)];try{if(t.length===0)return this.log("No tests found"),!1;this.log("Checking for existing visitor test on page");const i=this.getCurrentVisitorHypothesis(t);if(i){this.log("Found current visitor test");const l=this.considerRedirect(i);return l&&(this.log("Redirecting for current visitor test"),this.redirect(i)),l}const s=this.getReservationForCurrentPage();if(s){this.log("Found matching reservation for current page: %s",s.testId);const l=this.getHypothesis(s.hypothesisId);if(l){l.type!=="price"&&this.realizeReservationForCriteria(s.entryCriteriaKey);const c=this.considerRedirect(l);return c&&this.redirect(l),c}}this.log("No active test relation for test page");const r=this.testsForUrl(this.inactiveTestConfigs.filter(l=>this.testIsPaused(l)&&l.hypotheses.some(c=>this.state.essential.visitorTests.some(d=>d.hypothesisId===c.id)))).map(l=>l.id);if(r.length>0)return this.log("Visitor has paused tests for test page, skipping test assignment: %o",r),!1;if(!this.state.temporary.testCategory){const l=this.testsFilteredByAudience.filter(d=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(d))),c=this.testsFilteredByAudience.filter(d=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(d)));if(this.log("Category dice roll - global tests: %o, conditional tests: %o",l.map(d=>({id:d.id,title:d.title,criteria:this.getEntryCriteriaKey(d)})),c.map(d=>({id:d.id,title:d.title,criteria:this.getEntryCriteriaKey(d)}))),l.length>0&&c.length>0){const d=l.length,u=c.length,h=d+u,p=Math.random()*h;this.state.temporary.testCategory=p<d?"global":"conditional",this.log("Category dice roll: rolled %.2f of %d (global weight: %d, conditional weight: %d), selected '%s'",p,h,d,u,this.state.temporary.testCategory)}else l.length>0?(this.state.temporary.testCategory="global",this.log("Only global tests available, setting category to global")):(this.state.temporary.testCategory="conditional",this.log("Only conditional tests available, setting category to conditional"));this.persistTemporaryState()}const o=this.state.temporary.testCategory;if(this.log("Visitor test category: %s",o),o==="global"){const l=this.testsFilteredByAudience.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)));for(const c of l)this.markTestAsBlocked(c,"category:global");t=t.filter(c=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}else{const l=this.testsFilteredByAudience.filter(c=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)));for(const c of l)this.markTestAsBlocked(c,"category:conditional");t=t.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}if(t.length===0)return this.log("No tests remaining after category filter"),!1;this.createReservations(t);const n=this.getReservationForCurrentPage();if(n&&!n.isRealized){const l=this.getHypothesis(n.hypothesisId);if(l){l.type!=="price"&&this.realizeReservationForCriteria(n.entryCriteriaKey);const c=this.considerRedirect(l);return c&&(this.log("Redirecting for new test"),this.redirect(l)),c}}return!1}finally{this.includeInDomTests(),this.saveState()}}includeInDomTests(){this.applyControlForAudienceFilteredPriceTests();const e=this.getDomTestsForCurrentUrl(),t=this.getVisitorDomHypothesis(e);for(const i of e){this.log("Evaluating dom test '%s'",i.id);const s=i.hypotheses.some(p=>p.type==="price");if(this.state.essential.visitorTests.find(p=>p.testId===i.id&&p.isInvalid&&!p.hypothesisId)){if(this.log("Visitor is blocked from test '%s', applying control prices if price test",i.id),s){const p=i.hypotheses.find(b=>b.isControl);p?.priceData&&(this.applyPriceTestWithMapLookup(i.id,p,[p],()=>{this.log("Control prices applied for blocked visitor, no metrics tracked")}),this.updatePriceTestHiddenInputs(i.id,"control",!1))}continue}const o=this.getReservationForTest(i.id);let n=null,l=!1;const c=t.find(p=>i.hypotheses.some(b=>p.id===b.id));if(o)n=this.getHypothesis(o.hypothesisId)??null,this.log("Using reserved hypothesis '%s' for test '%s'",o.hypothesisId,i.id);else if(c)n=c,this.log("Using existing hypothesis assignment for test '%s'",i.id);else if(s){const p=this.visitorActiveTestTypeWithReservations();p?(l=!0,this.log("Visitor already in test type '%s', treating as non-test for price test '%s'",p,i.id)):n=this.pickHypothesis(i)}else n=this.pickHypothesis(i);if(l&&s){const p=i.hypotheses.find(b=>b.isControl);p?.priceData&&(this.log("Applying control prices for non-test visitor on price test '%s' (Map-based)",i.id),this.applyPriceTestWithMapLookup(i.id,p,[p],()=>{this.log("Control prices applied for non-test visitor, no metrics tracked")}
17),this.updatePriceTestHiddenInputs(i.id,"control",!1));continue}if(!n){this.log("Failed to pick hypothesis for test");continue}this.sendDiagnosticTelemetry("assignment",i.id,{hypothesisId:n.id,isControl:n.isControl,testType:n.type});const d=i.bayesianRevision??4,u=n.type==="price",h=d>=5;if(u&&h){if(this.log(`Price test with Map-based lookup (v${d}): ${i.id}`),!n.priceData){this.log("No price data for hypothesis '%s', skipping",n.id);continue}const p=n.isControl?"control":"variant";this.log(`Setting up Map-based price test for ${p} (test: ${i.id})`),this.applyPriceTestWithMapLookup(i.id,n,i.hypotheses,b=>{const E=this.getReservationForTest(b);E&&!E.isRealized&&E.entryCriteriaKey?this.realizeReservationForCriteria(E.entryCriteriaKey):this.queueAddVisitorToTest(b,n),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()});continue}if(u&&!h){this.log(`Price test without viewport tracking (v${d}): ${i.id}`);const p=this.getDomSelectorsForHypothesis(n);if(p.length===0)continue;U(document,{testId:i.id,hypothesisId:n.id,selectors:p},b=>{this.queueAddVisitorToTest(b,n),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()});continue}if(!n.domSelectors||n.domSelectors.length===0){this.log("No selectors found, skipping hypothesis");continue}U(document,{testId:i.id,hypothesisId:n.id,selectors:n.domSelectors},p=>{this.queueAddVisitorToTest(p,n),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()})}}considerRedirect(e){if(this.log("Considering redirect for hypothesis '%s'",e.id),e.isControl)return this.log("Skipping redirect for control"),!1;if(e.type==="basicScript"||e.type==="manualScript")return this.log("Skipping redirect for script test"),!1;const t=this.state.essential.visitorTests.find(o=>o.hypothesisId===e.id),i=new URL(window.location.toString()),r=new URLSearchParams(window.location.search).get("view");if(e.type==="theme"){if(!(e.themeId===themeId)){if(this.log("Theme id '%s' is not hypothesis theme ID '%s'",e.themeId,themeId),this.isAppProxyPath())return this.log("On App Proxy path, skipping theme redirect to avoid infinite loop"),!1;if(t&&t.themeId!==e.themeId&&(t.themeId===themeId||!this.isThemePreview()))this.log("On old theme, redirecting and updating local visitor"),t.themeId=e.themeId;else if(this.isThemePreview())return this.log("On non-test theme, skipping redirect"),!1;return this.log("Hiding page to redirect for theme test"),this.hidePage(),!0}return!1}else if(e.type!=="dom"&&e.type!=="price"&&e.affix!==template.suffix&&e.affix!==r||e.redirectPath&&!i.pathname.endsWith(e.redirectPath))return this.log("Hiding page to redirect for template test"),this.hidePage(),!0;return this.log("Not redirecting"),!1}redirect(e){if(this.log("Redirecting to hypothesis '%s'",e.id),e.isControl)return;const t=new URL(window.location.toString());if(t.searchParams.delete("view"),e.redirectPath){const n=RegExp("^(/w{2}-w{2})/").exec(t.pathname);if(n&&n.length>1){const l=n[1];t.pathname=`${l}${e.redirectPath}`}else t.pathname=e.redirectPath}else e.type==="theme"?(t.searchParams.set("_ab","0"),t.searchParams.set("_fd","0"),t.searchParams.set("_sc","1"),t.searchParams.set("preview_theme_id",e.themeId.toString())):e.type!=="urlRedirect"&&t.searchParams.set("view",e.affix);const i=this.state.essential.visitorTests.find(n=>n.hypothesisId===e.id)?.testId,s=t.pathname+t.search,r=window.location.pathname+window.location.search,o=K(t.hash);if(i&&s!==r&&!o){const n=qe(),l=He({v:2,t:i,n,fh:Me(window.location.pathname+window.location.search)});t.hash=`slr-${n}`;const c=new Date(Date.now()+3e4).toUTCString();document.cookie=`shoplift_redirect=${l};domain=.${window.location.hostname};path=/;SameSite=Strict;expires=${c}`}s===r&&this.showPage(),this.queueRedirect(t)}async refreshVisitor(e){if(e===null||!this.state.essential.isFirstLoad||!this.testConfigs.some(i=>i.visitorOption!=="all"))return;this.log("Refreshing visitor"),this.hidePage();const t=await this.getVisitor(e);t&&t.id&&this.updateLocalVisitor(t)}buildBaseVisitor(){return{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.device,country:null,...this.state.essential.initialState}}getInitialState(){const e=this.getUTMValue("utm_source")??"",t=this.getUTMValue("utm_medium")??"",i=this.getUTMValue("utm_campaign")??"",s=this.getUTMValue("utm_content")??"",r=window.document.referrer,o=this.device;return{createdAt:new Date,utmSource:e,utmMedium:t,utmCampaign:i,utmContent:s,referrer:r,device:o}}checkForThemePreview(){return this.log("Checking for theme preview"),window.location.hostname.endsWith(".shopifypreview.com")?(this.log("on shopify preview domain"),this.clearThemeBar(!0,!1,this.state),document.querySelector("#sl-preview-bar-hide")?.remove(),!1):this.isThemePreview()?this.state.essential.visitorTests.some(e=>e.isThemeTest&&e.hypothesisId!=null&&this.getHypothesis(e.hypothesisId)&&e.themeId===themeId)?(this.log("On active theme test, remov
17ing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):this.state.essential.visitorTests.some(e=>e.isThemeTest&&e.hypothesisId!=null&&!this.getHypothesis(e.hypothesisId)&&e.themeId===themeId)?(this.log("Visitor is on an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.state.essential.isFirstLoad?(this.log("No visitor found on theme preview, redirecting to main theme"),this.redirectToMainTheme(),!0):this.inactiveTestConfigs.some(e=>e.hypotheses.some(t=>t.themeId===themeId))?(this.log("Current theme is an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.testConfigs.some(e=>e.hypotheses.some(t=>t.themeId===themeId))?(this.log("Falling back to clearing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):(this.log("No tests on current theme, skipping script"),this.clearThemeBar(!0,!1,this.state),document.querySelector("#sl-preview-bar-hide")?.remove(),!0):(this.log("Not on theme preview"),this.clearThemeBar(!0,!1,this.state),!1)}redirectToMainTheme(){this.hidePage();const e=new URL(window.location.toString());e.searchParams.set("preview_theme_id",""),this.queueRedirect(e)}testsForUrl(e){const t=new URL(window.location.href),i=this.typeFromTemplate();return e.filter(s=>s.hypotheses.some(r=>r.type!=="dom"&&r.type!=="price"&&(r.isControl&&r.type===i&&r.affix===template.suffix||r.type==="theme"||r.isControl&&r.type==="urlRedirect"&&r.redirectPath&&t.pathname.endsWith(r.redirectPath)||r.type==="basicScript"))&&(s.ignoreTestViewParameterEnforcement||!t.searchParams.has("view")||s.hypotheses.map(r=>r.affix).includes(t.searchParams.get("view")??"")))}domTestsForUrl(e){const t=new URL(window.location.href);return e.filter(i=>i.hypotheses.some(s=>s.type!=="dom"&&s.type!=="price"?!1:s.type==="price"&&s.priceData&&s.priceData.variants.length>0?!0:s.domSelectors&&s.domSelectors.some(r=>new RegExp(se(r)).test(K(t.toString())))))}async filterTestsByAudience(e,t,i){const s=[],r=e.some(n=>(n.requiresRegion||this.geoViaShopify&&n.requiresCountry)&&!i.some(l=>l.testId===n.id));this.resolvedRegion===null&&r&&(this.log("Hiding page to wait for Shopify region resolution"),this.hidePage(),await this.waitForResolvedRegion()),window.__slRegion=this.resolvedRegion??"";let o=t.country;this.geoViaShopify?o=this.resolvedRegion?this.resolvedRegion.slice(0,2):o:!o&&e.some(n=>n.requiresCountry&&!i.some(l=>l.testId===n.id))&&(this.log("Hiding page to check geoip"),this.hidePage(),o=await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/get-country`,signal:AbortSignal.timeout(this.getCountryTimeout)}).catch(n=>(this.log("Error getting country",n),null)));for(const n of e){if(this.log("Checking audience for test '%s'",n.id),this.state.essential.visitorTests.some(d=>d.testId===n.id&&d.hypothesisId==null)){console.log(`Skipping blocked test '${n.id}'`);continue}const l=this.visitorCreatedDuringTestActive(n.statusHistory);(i.some(d=>d.testId===n.id&&(n.device==="all"||n.device===t.device&&n.device===this.device))||this.isTargetAudience(n,t,l,o))&&(this.log("Visitor is in audience for test '%s'",n.id),s.push(n))}this.testsFilteredByAudience=s}async waitForResolvedRegion(e=1500,t=50){const i=Date.now();for(;this.resolvedRegion===null&&Date.now()-i<e;)await new Promise(s=>window.setTimeout(s,t))}isTargetAudience(e,t,i,s){const r=this.getChannel(t);return(e.device==="all"||e.device===t.device&&e.device===this.device)&&(e.visitorOption==="all"||e.visitorOption==="new"&&i||e.visitorOption==="returning"&&!i)&&(e.targetAudiences.length===0||e.targetAudiences.reduce((o,n)=>o||n.reduce((l,c)=>l&&c(t,i,r,s),!0),!1))}visitorCreatedDuringTestActive(e){let t="";for(const i of e){if(this.state.analytics.visitor!==null&&this.state.analytics.visitor.createdAt<i.createdAt||this.state.essential.initialState.createdAt<i.createdAt)break;t=i.status}return t==="active"}getDomTestsForCurrentUrl(){return this.domTestsForUrl(this.testsFilteredByAudience)}getCurrentVisitorHypothesis(e){return e.flatMap(t=>t.hypotheses).find(t=>t.type!=="dom"&&t.type!=="price"&&this.state.essential.visitorTests.some(i=>i.hypothesisId===t.id))}getVisitorDomHypothesis(e){return e.flatMap(t=>t.hypotheses).filter(t=>(t.type==="dom"||t.type==="price")&&this.state.essential.visitorTests.some(i=>i.hypothesisId===t.id))}getHypothesis(e){return this.testConfigs.filter(t=>t.hypotheses.some(i=>i.id===e)).map(t=>t.hypotheses.find(i=>i.id===e))[0]}getActiveAssignment(){if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const t=this.state.temporary.previewConfig;return t.currentVariant&&t.testId?{testId:t.testId,hypothesisId:t.currentVariant}:null}const e=this.state.essential.visitorTests.find(t=>t.hypothesisId);return e?.hypothesisId?{testId:e.testId,hypothesisId:e.hypothesisId}:null}findActiveSubscriptionTestControl(){for(const e of this.testConfigs){const t=e.hypotheses.find(i=>i.isControl);if(t?.subscriptionData)return{testId:e.id,hypothesis:t}}return null}getDomSelectorsForHypothesis(e){if(!e)return[];if(e.domSelectors&&e.domSelectors.length>0)return e.domSelectors;if(e.priceData){const t=`${this.priceSelectorsSessionKey}_${e.id}`;try{const s=sessionStorage.getItem(t);if(s){const r=JSON.parse(s);return e.domSelectors=r,this.log("Loaded %d price selectors from cache for hypothesis '%s'",r.length,e.id),r}}catch{}const i=$e(e.priceData);e.domSelectors=i;try{sessionStorage.setItem(t,JSON.stringify(i)),this.log("Generated and cached %d price selectors for hypothesis '%s'",i.length,e.id)}catch{this.log("Generated %d price selectors for hypothesis '%s' (cache unavailable)",i.length,e.id)}return i}return[]}hasThemeTest(e){return e.some(t=>t.hypotheses.some(i=>i.type==="theme"))}hasTestThatIsNotThemeTest(e){return e.some(t=>t.hypotheses.some(i=>i.type!=="theme"&&i.type!=="dom"&&i.type!=="price"))}hasThemeAndOtherTestTypes(e){return this.hasThemeTest(e)&&this.hasTestThatIsNotThemeTest(e)}testIsPaused(e){return e.status==="paused"||e.status==="incompatible"||e.status==="suspended"}visitorActiveTestType(){const e=this.state.essential.visitorTests.filter(t=>this.testConfigs.some(i=>i.hypotheses.some(s=>s.id==t.hypothesisId)));return e.length===0?null:e.some(t=>t.isThemeTest)?"theme":"templateOrUrlRedirect"}getReservationType(e){return e==="price"||this.isTemplateTestType(e)?"deferred":"immediate"}isTemplateTestType(e){return["product","collection","landing","index","cart","search","blog","article","collectionList"].includes(e)}getEntryCriteriaKey(e){const t=e.hypotheses.find(i=>i.isControl);if(!t)return`unknown:${e.id}`;switch(t.type){case"theme":return"global:theme";case"basicScript":return"global:autoApi";case"price":return"global:price";case"manualScript":return`conditional:manualApi:${e.id}`;case"urlRedirect":return`conditional:url:${t.redirectPath||"unknown"}`;default:return`conditional:template:${t.type}`}}isGlobalEntryCriteria(e){return e.startsWith("global:")}groupTestsByEntryCriteria(e){const t=new Map;for(const i of e){const s=this.getEntryCriteriaKey(i),r=t.get(s)||[];r.push(i),t.set(s,r)}return t}doesCurrentPageMatchEntryCriteria(e){if(this.isGlobalEntryCriteria(e))return!0;
17if(e==="conditional:manualApi")return!1;if(e.startsWith("conditional:url:")){const t=e.replace("conditional:url:","");return window.location.pathname.endsWith(t)}if(e.startsWith("conditional:template:")){const t=e.replace("conditional:template:","");return this.typeFromTemplate()===t}return!1}hasActiveReservation(){const e=this.getActiveReservations();return Object.values(e).some(t=>!t.isRealized)}getActiveReservation(){const e=this.getActiveReservations();return Object.values(e).find(t=>!t.isRealized)??null}clearStaleReservations(){const e=this.state.temporary.testReservations;if(!e)return;let t=!1;for(const[i,s]of Object.entries(e)){const r=this.testConfigs.find(n=>n.id===s.testId);if(!r){this.log("Test '%s' no longer in config, clearing reservation for criteria '%s'",s.testId,i),delete e[i],t=!0;continue}if(r.status!=="active"){this.log("Test '%s' status is '%s', clearing reservation for criteria '%s'",s.testId,r.status,i),delete e[i],t=!0;continue}this.testsFilteredByAudience.some(n=>n.id===s.testId)||(this.log("Visitor no longer passes audience for test '%s', clearing reservation for criteria '%s'",s.testId,i),delete e[i],t=!0)}t&&this.persistTemporaryState()}createReservations(e){if(this.state.temporary.testReservations||(this.state.temporary.testReservations={}),this.state.temporary.rolledEntryCriteria||(this.state.temporary.rolledEntryCriteria=[]),this.state.temporary.testCategory==="global"){this.createSingleReservation(e,"global");return}const i=e.filter(n=>this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(n))),s=e.filter(n=>!this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(n)));this.log("Conditional tests split - matching current page: %d, not matching: %d",i.length,s.length),i.length>0&&this.log("Tests matching current page (same pool): %o",i.map(n=>({id:n.id,title:n.title,criteria:this.getEntryCriteriaKey(n)})));const r=`conditional:current-page:${this.typeFromTemplate()}`;if(i.length>0&&!this.state.temporary.rolledEntryCriteria.includes(r)){this.createSingleReservation(i,r);for(const n of i){const l=this.getEntryCriteriaKey(n);this.state.temporary.rolledEntryCriteria.includes(l)||this.state.temporary.rolledEntryCriteria.push(l)}}const o=this.groupTestsByEntryCriteria(s);for(const[n,l]of o){if(this.state.temporary.rolledEntryCriteria.includes(n)){this.log("Already rolled for criteria '%s', skipping",n);continue}if(l.some(S=>this.state.essential.visitorTests.some(C=>C.testId===S.id))){this.log("Visitor already has VT for criteria '%s', skipping",n),this.state.temporary.rolledEntryCriteria.push(n);continue}const d=[...l].sort((S,C)=>S.id.localeCompare(C.id));this.log("Test dice roll for criteria '%s' - available tests: %o",n,d.map(S=>({id:S.id,title:S.title})));const u=Math.floor(Math.random()*d.length),h=d[u];this.log("Test dice roll: picked index %d of %d, selected test '%s' (%s)",u+1,l.length,h.id,h.title);const p=this.pickHypothesis(h);if(!p){this.log("No hypothesis picked for test '%s'",h.id);continue}this.sendDiagnosticTelemetry("assignment",h.id,{hypothesisId:p.id,isControl:p.isControl,testType:p.type});const b=this.getReservationType(p.type),E={testId:h.id,hypothesisId:p.id,testType:p.type,reservationType:b,isThemeTest:p.type==="theme",themeId:p.themeId,createdAt:new Date,isRealized:!1,entryCriteriaKey:n};this.state.temporary.testReservations[n]=E,this.state.temporary.rolledEntryCriteria.push(n),this.log("Created %s reservation for test '%s' (criteria: %s)",b,h.id,n);for(const S of l)S.id!==h.id&&this.markTestAsBlocked(S,n)}this.persistTemporaryState()}createSingleReservation(e,t){if(this.state.temporary.rolledEntryCriteria.includes(t)){this.log("Already rolled for pool '%s', skipping",t);return}if(e.some(u=>this.state.essential.visitorTests.some(h=>h.testId===u.id&&!h.isInvalid))){this.log("Visitor already has VT for pool '%s', skipping",t),this.state.temporary.rolledEntryCriteria.push(t);return}if(e.length===0){this.log("No tests in pool '%s'",t);return}const s=[...e].sort((u,h)=>u.id.localeCompare(h.id));this.log("Test dice roll for pool '%s' - available tests: %o",t,s.map(u=>({id:u.id,title:u.title,criteria:this.getEntryCriteriaKey(u)})));const r=Math.floor(Math.random()*s.length),o=s[r];this.log("Test dice roll: picked index %d of %d, selected test '%s' (%s)",r,e.length,o.id,o.title);const n=this.pickHypothesis(o);if(!n){this.log("No hypothesis picked for test '%s'",o.id);return}this.sendDiagnosticTelemetry("assignment",o.id,{hypothesisId:n.id,isControl:n.isControl,testType:n.type});const l=this.getReservationType(n.type),c=this.getEntryCriteriaKey(o),d={testId:o.id,hypothesisId:n.id,testType:n.type,reservationType:l,isThemeTest:n.type==="theme",themeId:n.themeId,createdAt:new Date,isRealized:!1,entryCriteriaKey:c};this.state.temporary.testReservations[c]=d,this.state.temporary.rolledEntryCriteria.push(t),this.log("Created %s reservation for test '%s' from pool '%s' (criteria: %s)",l,o.id,t,c);for(const u of e)u.id!==o.id&&this.markTestAsBlocked(u,`pool:${t}`);this.persistTemporaryState()}markTestAsBlocked(e,t){this.state.essential.visitorTests.some(i=>i.testId===e.id)||(this.log("Blocking visitor from test '%s' (reason: %s)",e.id,t),this.state.essential.visitorTests.push({createdAt:new Date,testId:e.id,hypothesisId:null,isThemeTest:e.hypotheses.some(i=>
17i.type==="theme"),shouldSendToGa:!1,isSaved:!0,isInvalid:!0,themeId:void 0}))}realizeReservationForCriteria(e){const t=this.state.temporary.testReservations?.[e];if(!t)return this.log("No reservation found for criteria '%s'",e),!1;if(t.isRealized)return this.log("Reservation already realized for criteria '%s'",e),!1;if(this.state.essential.visitorTests.some(s=>s.testId===t.testId&&!s.isInvalid))return this.log("Visitor already assigned to test '%s'",t.testId),!1;const i=this.getHypothesis(t.hypothesisId);return i?(t.isRealized=!0,this.persistTemporaryState(),this.queueAddVisitorToTest(t.testId,i),this.saveState(),this.log("Realized reservation for test '%s' (criteria: %s)",t.testId,e),!0):(this.log("Hypothesis '%s' not found",t.hypothesisId),!1)}getActiveReservations(){return this.state.temporary.testReservations??{}}getReservationForCurrentPage(){const e=this.getActiveReservations();for(const[t,i]of Object.entries(e)){if(i.isRealized)continue;const s=this.testConfigs.find(r=>r.id===i.testId);if(!(!s||s.status!=="active")&&this.doesCurrentPageMatchEntryCriteria(t))return i}return null}getReservationForTest(e){const t=this.getActiveReservations();return Object.values(t).find(i=>i.testId===e)??null}getReservationTestType(){const e=this.getActiveReservations(),t=Object.values(e);if(t.length===0)return null;for(const i of t)if(i.isThemeTest)return"theme";for(const i of t)if(i.testType==="price")return"price";return t.some(i=>!i.isRealized)?"templateOrUrlRedirect":null}hasPriceTests(e){return e.some(t=>t.hypotheses.some(i=>i.type==="price"))}_priceTestProductIds=null;getPriceTestProductIds(){if(this._priceTestProductIds)return this._priceTestProductIds;const e=new Set;for(const t of this.testConfigs)for(const i of t.hypotheses)if(i.type==="price"){for(const s of i.domSelectors||[]){const r=s.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);r?.[1]&&e.add(r[1])}if(i.priceData?.variants)for(const[s]of i.priceData.variants)e.add(s)}return this._priceTestProductIds=e,this.log("Built price test product ID cache with %d products",e.size),e}isProductInAnyPriceTest(e){return this.getPriceTestProductIds().has(e)}visitorActiveTestTypeWithReservations(){const e=this.getActiveReservations();for(const r of Object.values(e)){if(r.isThemeTest)return"theme";if(r.testType==="price")return"price"}if(Object.values(e).some(r=>!r.isRealized)){if(this.state.temporary.testCategory==="global")for(const o of Object.values(e)){if(o.testType==="theme")return"theme";if(o.testType==="price")return"price";if(o.testType==="basicScript")return"theme"}return"templateOrUrlRedirect"}const i=this.state.essential.visitorTests.filter(r=>!r.isInvalid&&this.testConfigs.some(o=>o.hypotheses.some(n=>n.id===r.hypothesisId)));return i.length===0?null:i.some(r=>this.getHypothesis(r.hypothesisId)?.type==="price")?"price":i.some(r=>r.isThemeTest)?"theme":"templateOrUrlRedirect"}applyControlForAudienceFilteredPriceTests(){const e=this.testConfigs.filter(s=>s.status==="active"&&s.hypotheses.some(r=>r.type==="price"));if(e.length===0)return;const t=this.testsFilteredByAudience.filter(s=>s.hypotheses.some(r=>r.type==="price")),i=e.filter(s=>!t.some(r=>r.id===s.id));if(i.length!==0){this.log("Found %d price tests filtered by audience, applying control selectors",i.length);for(const s of i){const r=s.hypotheses.find(c=>c.isControl),o=this.getDomSelectorsForHypothesis(r);if(o.length===0){this.log("No control selectors for audience-filtered price test '%s'",s.id);continue}const n=new URL(window.location.href);o.some(c=>{try{return new RegExp(se(c)).test(K(n.toString()))}catch{return!1}})&&(this.log("Applying control selectors for audience-filtered price test '%s'",s.id),U(document,{testId:s.id,hypothesisId:r.id,selectors:o},()=>{}),this.updatePriceTestHiddenInputs(s.id,"control",!1))}}}pickHypothesis(e){let t=Math.random();const i=e.hypotheses.reduce((r,o)=>r+o.visitorCount,0);return e.hypotheses.sort((r,o)=>r.isControl?o.isControl?0:-1:o.isControl?1:0).reduce((r,o)=>{if(r!==null)return r;const l=e.hypotheses.reduce((c,d)=>c&&d.visitorCount>20,!0)?o.visitorCount/i-o.trafficPercentage:0;return t<=o.trafficPercentage-l?o:(t-=o.trafficPercentage-l,null)},null)}typeFromTemplate(){switch(template.type){case"list-collections":return"collectionList";case"page":return"landing";case"article":case"blog":case"cart":case"collection":case"index":case"product":case"search":return template.type;default:return null}}queueRedirect(e){this.saveState(),this.disableReferrerOverride||(this.log(`Saving temporary referrer override '${document.referrer}'`),this.state.temporary.originalReferrer=document.referrer,this.persistTemporaryState()),window.setTimeout(()=>window.location.assign(e),0),window.setTimeout(()=>{this.syncAllEvents()},2e3)}scheduleRetrySync(){this.clientIdRetryCount>=5||(this.clientIdRetryCount++,window.setTimeout(()=>{this.syncAllEvents()},500))}async syncAllEvents(){const e=async()=>
17{if(this.isSyncing){window.setTimeout(()=>{(async()=>await e())()},500);return}try{if(this.isSyncing=!0,this.syncGAEvents(),this.shopifyAnalyticsId||(this.shopifyAnalyticsId=this.getShopifyAnalyticsId()),!this.shopifyAnalyticsId){this.scheduleRetrySync();return}await this.syncEvents()}finally{this.isSyncing=!1}};await e()}async syncEvents(){if(!this.state.essential.consentApproved||!this.shopifyAnalyticsId||this.state.analytics.queue.length===0)return;const e=this.state.analytics.queue.length,t=this.state.analytics.queue.splice(0,e);this.log("Syncing %s events",e);try{const i={shop:this.shop,visitorDetails:{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.state.analytics.visitor?.device??this.device,country:this.state.analytics.visitor?.country??null,...this.state.essential.initialState},events:this.state.essential.visitorTests.filter(r=>!r.isInvalid&&!r.isSaved&&r.hypothesisId!=null).map(r=>new be(r.testId,r.hypothesisId,r.createdAt)).concat(t)};await this.sendEvents(i);for(const r of this.state.essential.visitorTests.filter(o=>!o.isInvalid&&!o.isSaved&&o.hypothesisId!=null))this.sendDiagnosticTelemetry("event-delivered",r.testId,{hypothesisId:r.hypothesisId,isControl:r.assignedTo==="control",testType:r.testType??"unknown"});const s=await this.getVisitor(this.shopifyAnalyticsId);s!==null&&this.updateLocalVisitor(s);for(const r of this.state.essential.visitorTests.filter(o=>!o.isInvalid&&!o.isSaved))r.isSaved=!0,r.savedAt=Date.now()}catch{this.state.analytics.queue.splice(0,0,...t)}finally{this.saveState()}}syncGAEvents(){if(!this.gaConfig.sendEvents){if(he)return;he=!0,this.log("UseGtag is false — skipping GA Events");return}if(this.isSyncingGA){this.log("Already syncing GA - skipping GA events");return}const e=this.state.essential.visitorTests.filter(t=>t.shouldSendToGa);e.length!==0&&(this.isSyncingGA=!0,this.log("Syncing %s GA Events",e.length),Promise.allSettled(e.map(t=>this.sendGAEvent(t))).then(()=>this.log("All gtag events sent")).finally(()=>this.isSyncingGA=!1))}sendGAEvent(e){return new Promise(t=>{this.log("Sending GA Event for test %s, hypothesis %s",e.testId,e.hypothesisId);const i=()=>{this.log("GA acknowledged event for hypothesis %s",e.hypothesisId),e.shouldSendToGa=!1,this.persistEssentialState(),t()},s={exp_variant_string:`SL-${e.testId}-${e.hypothesisId}`};
17this.shopliftDebug&&Object.assign(s,{debug_mode:!0});function r(o,n,l){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}this.gaConfig.mode==="gtag"?r("event","experience_impression",{...s,event_callback:i}):(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"experience_impression",...s,eventCallback:i}))})}updateLocalVisitor(e){let t;({visitorTests:t,...this.state.analytics.visitor}=e),this.log("updateLocalVisitor - server returned %d tests: %o",t.length,t.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isInvalid:s.isInvalid}))),this.log("updateLocalVisitor - local has %d tests: %o",this.state.essential.visitorTests.length,this.state.essential.visitorTests.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isSaved:s.isSaved,isInvalid:s.isInvalid})));const i=300*1e3;for(const s of this.state.essential.visitorTests.filter(r=>r.isSaved&&(!r.savedAt||Date.now()-r.savedAt>i)&&!t.some(o=>o.testId===r.testId)))this.log("updateLocalVisitor - marking LOCAL test as INVALID (isSaved && not in server): testId=%s, hypothesisId=%s",s.testId,s.hypothesisId),s.isInvalid=!0;for(const s of t){const r=this.state.essential.visitorTests.findIndex(n=>n.testId===s.testId);if(!(r!==-1))this.log("updateLocalVisitor - ADDING server test (not found locally): testId=%s, hypothesisId=%s",s.testId,s.hypothesisId),this.state.essential.visitorTests.push(s);else{const n=this.state.essential.visitorTests.at(r);this.log("updateLocalVisitor - REPLACING local test with server test: testId=%s, local hypothesisId=%s -> server hypothesisId=%s, local isInvalid=%s -> false",s.testId,n?.hypothesisId,s.hypothesisId,n?.isInvalid),s.isInvalid=!1,s.shouldSendToGa=n?.shouldSe
17ndToGa??!1,s.testType=n?.testType,s.assignedTo=n?.assignedTo,s.testTitle=n?.testTitle,this.state.essential.visitorTests.splice(r,1,s)}}this.log("updateLocalVisitor - FINAL local tests: %o",this.state.essential.visitorTests.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isSaved:s.isSaved,isInvalid:s.isInvalid}))),this.state.analytics.visitor.storedAt=new Date}async getVisitor(e){try{return await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/by-key/${this.shop}/${e}`})}catch{return null}}async sendEvents(e){await this.makeRequest({method:"post",url:`${this.eventHost}/api/v0/events`,data:JSON.stringify(e)})}sendDiagnosticTelemetry(e,t,i){if(!this.telemetryEnabled||!navigator.sendBeacon)return;const s=this.state.essential.consentApproved,r=JSON.stringify({shop:this.shop,testId:t,checkpoint:e,device:this.device,...s?{visitorId:this.shopifyAnalyticsId??"unknown"}:{},clientTimestamp:Date.now(),consentApproved:s,hasConsentInteraction:this.state.essential.hasConsentInteraction,...i});navigator.sendBeacon(`${this.eventHost}/api/v0/telemetry`,new Blob([r],{type:"text/plain"}))}getUTMValue(e){return new URLSearchParams(window.location.search).get(e)||null}hidePage(e){this.log("Hiding page"),this.cssHideClass&&!window.document.documentElement.classList.contains(this.cssHideClass)&&(window.document.documentElement.classList.add(this.cssHideClass),e||setTimeout(this.removeAsyncHide(this.cssHideClass),2e3))}showPage(){this.cssHideClass&&this.removeAsyncHide(this.cssHideClass)()}getDeviceType(){function e(){let i=!1;return(function(s){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(i=!0)})(navigator.userAgent||navigator.vendor),i}function t(){let i=!1;return(function(s){(/android|ipad|playbook|silk/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
17sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(i=!0)})(navigator.userAgent||navigator.vendor),i}return e()?"mobile":t()?"tablet":"desktop"}removeAsyncHide(e){return()=>{e&&window.document.documentElement.classList.remove(e)}}async getCartState(){try{let e=await this.makeJsonRequest({method:"get",url:`${window.location.origin}/cart.js`});return e===null||(e.note===null&&(e=await this.makeJsonRequest({method:"post",url:`${window.location.origin}/cart/update.js`,data:JSON.stringify({note:""})})),e==null)?null:{token:e.token,total_price:e.total_price,total_discount:e.total_discount,currency:e.currency,items_subtotal_price:e.items_subtotal_price,items:e.items.map(t=>({quantity:t.quantity,variant_id:t.variant_id,key:t.key,price:t.price,final_line_price:t.final_line_price,sku:t.sku,product_id:t.product_id}))}}catch(e){return this.log("Error sending cart info",e),null}}ensureCartAttributesForExistingPriceTests(e){try{if(this.log("Checking visitor assignments for active price tests"),e&&this.state.temporary.previewConfig){const t=this.state.temporary.previewConfig;this.log("Using preview config for merchant:",t.testId);let i="variant";if(t.variants&&t.variants.length>0){const s=t.variants.find(r=>r.id===t.currentVariant);s&&s.isControl&&(i="control")}this.log("Merchant preview - updating hidden inputs:",t.testId,i),this.updatePriceTestHiddenInputs(t.testId,i,!0);return}for(const t of this.state.essential.visitorTests){const i=this.testConfigs.find(o=>o.id===t.testId);if(!i){this.log("Test config not found:",t.testId);continue}const s=i.hypotheses.find(o=>o.id===t.hypothesisId);if(!s||s.type!=="price")continue;const r=s.isControl?"control":"variant";this.log("Updating hidden inputs for price test:",t.testId,r),this.updatePriceTestHiddenInputs(t.testId,r,e)}}catch(t){this.log("Error ensuring cart attributes for existing price tests:",t)}}subscriptionSwapDone=!1;subscriptionHideWrongPlans=null;subscriptionPriceDone=!1;subscriptionUpdateOneTime=null;subscriptionOneTimeDone=!1;swapMap=null;slptValue=null;async subscriptionSwap(){await Ue(this)}async subscriptionPriceChange(){await ze(this)}async subscriptionOneTimePrice(){await We(this)}updatePriceTestHiddenInputs(e,t,i){try{this.cleanupPriceTestObservers();const s=`${e}:${t}:${i?"t":"f"}`,r=T=>{const m=T.getAttribute("data-sl-pid");if(!m)return!0;if(i&&this.state.temporary.previewConfig){const w=this.state.temporary.previewConfig,I=t==="control"?"a":"b",f=w.variants.find(v=>v.label===I);if(!f)return!1;for(const v of f.domSelectors||[]){const g=v.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(g){const P=g[1];if(this.log(`Extracted ID from selector: ${P}, comparing to: ${m}`),P===m)return this.log("Product ID match found in preview config:",m,"variant:",f.label),!0}else this.log(`Could not extract ID from selector: ${v.cssSelector}`)}return this.log("No product ID match in preview config for:",m,"variant:",I),!1}const y=this.testConfigs.find(w=>w.id===e);if(!y)return this.log("Test config not found for testId:",e),!1;for(const w of y.hypotheses||[]){for(const I of w.domSelectors||[]){const f=I.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(f&&f[1]===m)return this.log("Product ID match found in domSelectors:",m,"for test:",e),!0}if(w.priceData?.variants){for(const I of w.priceData.variants)if(I[0]===m)return this.log("Product ID match found in priceData:",m,"for test:",e),!0}}return this.log("No product ID match for:",m,"in test:",e),!1},o=new Set;let n=!1,l=null;const c=(T,m)=>{if(document.querySelectorAll("[data-sl-attribute-p]").forEach(w=>{if(w instanceof Element&&w.nodeType===Node.ELEMENT_NODE&&w.isConnected&&document.contains(w))try{T.observe(w,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(I){this.log(`Failed to observe element (${m}):`,I)}}),document.body&&document.body.isConnected)try{T.observe(document.body,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(w){this.log(`Failed to observe document.body (${m}):`,w)}},d=(T,m,y,w)=>{const I=T.filter(f=>{const v=f.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);return v&&v[1]===w});this.log(`Applying ${y} DOM selectors, total: ${T.length}, filtered: ${I.length}`),I.length>0&&U(document,{testId:e,hypothesisId:m,selectors:I})},u=(T,m)=>{this.log(`Applying DOM selector changes for product ID: ${T}`),m.disconnect(),n=!0;try{if(i&&this.state.temporary.previewConfig){const y=t==="control"?"a":"b",w=this.state.temporary.previewConfig.variants.find(I=>I.label===y);if(!w?.domSelectors){this.log(`No DOM selectors found for preview variant: ${y}`);return}d(w.domSelectors,w.id,"preview config",T)}else{const y=this.testConfigs.find(I=>I.id===e);if(!y){this.log(`No test config found for testId: ${e}`);return}const w=y.hypotheses.find(I=>t==="control"?I.isControl:!I.isControl);if(!w?.domSelectors){this.log(`No DOM selectors found for assignment: ${t}`);return}d(w.domSelectors,w.id,"live config",T)}}finally{l!==null&&clearTimeout(l),l=window.setTimeout(()=>{n=!1,l=null,c(m,"reconnection"),this.log("Re-established innerHTML observer after DOM changes")}
17,50)}},h=new MutationObserver(T=>{if(!n)for(const m of T){if(m.type!=="childList"&&m.type!=="characterData")continue;let y=m.target;m.type==="characterData"&&(y=m.target.parentElement||m.target.parentNode);let w=y,I=w.getAttribute("data-sl-attribute-p");for(;!I&&w.parentElement;)w=w.parentElement,I=w.getAttribute("data-sl-attribute-p");if(!I)continue;const f=w.innerHTML||w.textContent||"";let v="";m.type==="characterData"&&m.oldValue!==null&&(v=m.oldValue),this.log(`innerHTML changed on element with data-sl-attribute-p="${I}"`),v&&this.log(`Previous content: "${v}"`),this.log(`Current content: "${f}"`),u(I,h)}});c(h,"initial setup"),o.add(h);const p=new MutationObserver(T=>{T.forEach(m=>{m.addedNodes.forEach(y=>{if(y.nodeType===Node.ELEMENT_NODE){const w=y;E(w);const I=w.matches('input[name="properties[_slpt]"]')?[w]:w.querySelectorAll('input[name="properties[_slpt]"]');I.length>0&&this.log(`MutationObserver found ${I.length} new hidden input(s)`),I.forEach(f=>{const v=f.getAttribute("data-sl-pid");if(this.log(`MutationObserver checking new input with data-sl-pid="${v}"`),r(f))f.value!==s&&(f.value=s,this.log("Updated newly added hidden input:",s)),S(f);else{const g=f.getAttribute("data-sl-pid");g&&this.isProductInAnyPriceTest(g)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",g):(f.remove(),this.log("Removed newly added non-matching hidden input for product ID:",g))}})}})})});o.add(p);const b=new MutationObserver(T=>{T.forEach(m=>{if(m.type==="attributes"&&m.attributeName==="data-sl-pid"){const y=m.target;if(this.log("AttributeObserver detected data-sl-pid attribute change on:",y.tagName),y.matches('input[name="properties[_slpt]"]')){const w=y,I=m.oldValue,f=w.getAttribute("data-sl-pid");this.log(`data-sl-pid changed from "${I}" to "${f}" - triggering payment placement updates`),r(w)?(w.value!==s&&(w.value=s,this.log("Updated hidden input after data-sl-pid change:",s)),f&&u(f,h),this.log("Re-running payment placement updates after variant change"),E(document.body)):f&&this.isProductInAnyPriceTest(f)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",f):(w.remove(),this.log("Removed non-matching hidden input after data-sl-pid change:",f))}}})});o.add(b);const E=T=>{T.tagName==="SHOPIFY-PAYMENT-TERMS"&&(this.log("MutationObserver found new shopify-payment-terms element"),this.updateShopifyPaymentTerms(e,t));const m=T.querySelectorAll("shopify-payment-terms");m.length>0&&(this.log(`MutationObserver found ${m.length} shopify-payment-terms in added node`),this.updateShopifyPaymentTerms(e,t)),T.tagName==="AFTERPAY-PLACEMENT"&&(this.log("MutationObserver found new afterpay-placement element"),this.updateAfterpayPlacements(e,t,"afterpay"));const y=T.querySelectorAll("afterpay-placement");y.length>0&&(this.log(`MutationObserver found ${y.length} afterpay-placement in added node`),this.updateAfterpayPlacements(e,t,"afterpay")),T.tagName==="SQUARE-PLACEMENT"&&(this.log("MutationObserver found new square-placement element"),this.updateAfterpayPlacements(e,t,"square"));const w=T.querySelectorAll("square-placement");w.length>0&&(this.log(`MutationObserver found ${w.length} square-placement in added node`),this.updateAfterpayPlacements(e,t,"square")),T.tagName==="KLARNA-PLACEMENT"&&(this.log("MutationObserver found new klarna-placement element"),this.updateKlarnaPlacements(e,t));const I=T.querySelectorAll("klarna-placement");I.length>0&&(this.log(`MutationObserver found ${I.length} klarna-placement in added node`),this.updateKlarnaPlacements(e,t))},S=T=>{b.observe(T,{attributes:!0,attributeFilter:["data-sl-pid"],attributeOldValue:!0,subtree:!1});const m=T.getAttribute("data-sl-pid");this.log(`Started AttributeObserver on specific input with data-sl-pid="${m}"`)},C=()=>{const T=document.querySelectorAll('input[name="properties[_slpt]"]');this.log(`Found ${T.length} existing hidden inputs to check`),T.forEach(m=>{const y=m.getAttribute("data-sl-pid");this.log(`Checking existing input with data-sl-pid="${y}"`),r(m)?(m.value=s,this.log("Updated existing hidden input:",s),y&&(this.log("Applying initial DOM selector changes for existing product"),u(y,h)),S(m)):y&&this.isProductInAnyPriceTest(y)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",
17y):(m.remove(),this.log("Removed non-matching hidden input for product ID:",y))})},_=()=>{document.body?(p.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver on document.body"),C(),E(document.body)):document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{document.body&&(p.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver after DOMContentLoaded"),C(),E(document.body))}):(this.log("Set timeout on observer"),setTimeout(_,10))};_(),window.__shopliftPriceTestObservers=o,window.__shopliftPriceTestValue=s,this.log("Set up DOM observer for price test hidden inputs")}catch(s){this.log("Error updating price test hidden inputs:",s)}}updateKlarnaPlacements(e,t){this.updatePlacementElements(e,t,"klarna-placement",(i,s)=>{i.setAttribute("data-purchase-amount",s.toString())})}cleanupPriceTestObservers(){const e=window.__shopliftPriceTestObservers;e&&(e.forEach(t=>{t.disconnect()}),e.clear(),this.log("Cleaned up existing price test observers")),delete window.__shopliftPriceTestObservers,delete window.__shopliftPriceTestValue}updateAfterpayPlacements(e,t,i="afterpay"){const s=i==="square"?"square-placement":"afterpay-placement";if(document.querySelectorAll(s).length===0){this.log(`No ${s} elements found on page - early return`);return}this.updatePlacementElements(e,t,s,(o,n)=>{if(i==="afterpay"){const l=(n/100).toFixed(2);o.setAttribute("data-amount",l)}else o.setAttribute("data-amount",n.toString())}),this.log("updateAfterpayPlacements completed")}updatePlacementElements(e,t,i,s){const r=document.querySelectorAll(i);if(r.length===0){this.log(`No ${i} elements found - early return`);return}let o;if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const l=t==="control"?"a":"b",c=this.state.temporary.previewConfig.variants.find(d=>d.label===l);if(!c?.domSelectors){this.log(`No variant found for label ${l} in preview config for ${i}`);return}o=c.domSelectors,this.log(`Using preview config for ${i} in merchant mode, variant: ${l}`)}else{const l=this.testConfigs.find(d=>d.id===e);if(!l){this.log(`No testConfig found for id: ${e} - early return`);return}
17const c=l.hypotheses.find(d=>t==="control"?d.isControl:!d.isControl);if(!c?.domSelectors){this.log(`No hypothesis or domSelectors found for assignment: ${t} - early return`);return}o=c.domSelectors}const n=new RegExp(`${this.DATA_SL_ATTRIBUTE_P}=["'](\\d+)["']`);r.forEach(l=>{let c=null;const d=l.parentElement;if(d&&(c=d.querySelector('input[name="properties[_slpt]"]')),c||(c=l.querySelector('input[name="properties[_slpt]"]')),!c){this.log(`No hidden input found for ${i} element`);return}const u=c.getAttribute("data-sl-pid");if(!u){this.log("Hidden input has no data-sl-pid attribute - skipping");return}const h=o.find(S=>{const C=S.cssSelector.match(n);return C&&C[1]===u});if(!h){this.log(`No matching selector found for productId: ${u} - skipping element`);return}const p=h.actions.find(S=>S.scope==="price");if(!p?.value){this.log("No price action or value found - skipping element");return}const b=parseFloat(p.value.replace(/[^0-9.]/g,""));if(Number.isNaN(b)){this.log(`Invalid price "${p.value}" for product ${u} - skipping`);return}const E=Math.round(b*100);s(l,E)}),this.log(`updatePlacementElements completed for ${i}`)}updateShopifyPaymentTerms(e,t){const i=document.querySelectorAll("shopify-payment-terms");if(i.length===0)return;this.log("Store using shopify payments");let s;if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const o=t==="control"?"a":"b",n=this.state.temporary.previewConfig.variants.find(l=>l.label===o);if(!n||!n.domSelectors){this.log(`No variant found for label ${o} in preview config`);return}s=n.domSelectors,this.log(`Using preview config for shopify-payment-terms in merchant mode, variant: ${o}`)}else{const o=this.testConfigs.find(l=>l.id===e);if(!o)return;const n=o.hypotheses.find(l=>t==="control"?l.isControl===!0:l.isControl===!1);if(!n||!n.domSelectors)return;s=n.domSelectors}const r=new RegExp(`${this.DATA_SL_ATTRIBUTE_P}=["'](\\d+)["']`);i.forEach(o=>{const n=o.getAttribute("variant-id");if(!n)return;const l=s.find(c=>{const d=c.cssSelector.match(r);return d&&d[1]===n});if(l){const c=l.actions.find(d=>d.scope==="price");if(c&&c.value){const d=o.getAttribute("shopify-meta");if(d)try{const u=JSON.parse(d);if(u.variants&&Array.isArray(u.variants)){const h=u.variants.find(p=>p.id?.toString()===n);if(h){h.full_price=c.value;const p=parseFloat(c.value.replace(/[^0-9.]/g,""));if(h.number_of_payment_terms&&h.number_of_payment_terms>1){const b=p/h.number_of_payment_terms;h.price_per_term=`$${b.toFixed(2)}`}o.setAttribute("shopify-meta",JSON.stringify(u))}}}catch(u){this.log("Error parsing/updating shoplift-meta:",u)}}}})}async makeJsonRequest(e){const t=await this.makeRequest(e);return t===null?null:JSON.parse(await t.text(),F)}async makeRequest(e){const{url:t,method:i,headers:s,data:r,signal:o}=e,n=new Headers;if(s)for(const c in s)n.append(c,s[c]);(!s||!s.Accept)&&n.append("Accept","application/json"),(!s||!s["Content-Type"])&&n.append("Content-Type","application/json"),(this.eventHost.includes("ngrok.io")||this.eventHost.includes("ngrok-free.app"))&&n.append("ngrok-skip-browser-warning","1234");const l=await this.fetch(t,{method:i,headers:n,body:r,signal:o});if(!l.ok){if(l.status===204)return null;if(l.status===422){const c=await l.json();if(typeof c<"u"&&c.isBot)throw new ie}throw new Error(`Error sending shoplift request ${l.status}`)}return l}queueAddVisitorToTest(e,t){if(this.state.essential.visitorTests.some(s=>s.testId===e))return;const i=this.testConfigs.find(s=>s.id===e);if(this.state.essential.visitorTests.push({createdAt:new Date,testId:e,hypothesisId:t.id,isThemeTest:t.type==="theme",themeId:t.themeId,isSaved:!1,isInvalid:!1,shouldSendToGa:!0,testType:t.type,assignedTo:t.isControl?"control":"variant",testTitle:i?.title}),t.type==="price"){const s=t.isControl?"control":"variant";this.log("Price test assignment detected, updating cart attributes:",e,s),this.updatePriceTestHiddenInputs(e,s,!1)}}queueCartUpdate(e){this.queueEvent(new Ce(e))}queuePageView(e){this.queueEvent(new Se(e))}queueEvent(e){!this.state.essential.consentApproved&&this.state.essential.hasConsentInteraction||this.state.analytics.queue.length>10||this.state.analytics.queue.push(e)}legacyGetLocalStorageVisitor(){const e=this.localStorageGet(this.legacySessionKey);if(e)try{return JSON.parse(e,F)}catch{}return null}pruneStaleVisitorTests(){this.state.essential.visitorTests=this.state.essential.visitorTests.filter(e=>this.testConfigs.some(t=>t.id==e.testId)||this.inactiveTestConfigs.filter(t=>this.testIsPaused(t)).some(t=>t.id===e.testId))}pruneStateAndSave(){this.pruneStaleVisitorTests(),this.saveState()}saveState(){this.persistEssentialState(),this.persistAnalyticsState()}loadState(){const e=this.loadAnalyticsState(),t={analytics:e,essential:this.loadEssentialState(e),temporary:this.loadTemporaryState()},i=this.legacyGetLocalStorageVisitor(),s=this.legacyGetCookieVisitor(),r=[i,s].filter(o=>o!==null).sort((o,n)=>+n.storedAt-+o.storedAt)[0];return t.analytics.visitor===null&&r&&({visitorTests:t.essential.visitorTests,...t.analytics.visitor}=r,t.essential.isFirstLoad=!1,t.essential.initialState={createdAt:r.createdAt,referrer:r.referrer,utmCampaign:r.utmCampaign,utmContent:r.utmContent,utmMedium:r.utmMedium,utmSource:r.utmSource,device:r.device},this.deleteCookie("SHOPLIFT"),this.deleteLocalStorage(this.legacySessionKey)),!t.essential.consentApproved&&t.essential.hasConsentInteraction&&this.deleteLocalStorage(this.analyticsSessionKey),t}loadEssentialState(e){const t=this.loadLocalStorage(this.essentialSessionKey),i=this.loadCookie(this.essentialSessionKey),s=this.getInitialState();e.visitor?.device&&(s.device=e.visitor.device);const r={timestamp:new Date,consentApproved:!1,hasConsentInteraction:!1,debugMode:!1,initialState:s,visitorTests:[],isFirstLoad:!0},o=[t,i].filter(n=>n!==null).sort((n,l)=>+l.timestamp-+n.timestamp)[0]??r;return o.initialState||(e.visitor!==null?o.initialState=e.visitor:(o.initialState=s,o.initialState.createdAt=o.timestamp)),o}loadAnalyticsState(){const e=this.loadLocalStorage(this.analyticsSessionKey),t=this.loadCookie(this.analyticsSessionKey),i={timestamp:new Date,visitor:null,queue:[]},s=[e,t].filter(r=>r!==null).sort((r,o)=>+o.timestamp-+r.timestamp)[0]??i;return s.queue.length===0&&e&&e.queue.length>1&&(s.queue=e.queue),s}loadTemporaryState(){const e=this.sessionStorageGet(this.temporarySessionKey),t=e?JSON.parse(e,F):null,i=this.loadCookie(this.temporarySessionKey);return t??i??{isMerchant:!1,timestamp:new Date}}persistEssentialState(){this.log("Persisting essential state"),this.state.essential.isFirstLoad=!1,this.state.essential.timestamp=new Date,this.persistLocalStorageState(this.essentialSessionKey,this.state.essential),this.persist
17CookieState(this.essentialSessionKey,this.state.essential)}persistAnalyticsState(){this.log("Persisting analytics state"),this.state.essential.consentApproved&&(this.state.analytics.timestamp=new Date,this.persistLocalStorageState(this.analyticsSessionKey,this.state.analytics),this.persistCookieState(this.analyticsSessionKey,{...this.state.analytics,queue:[]}))}persistTemporaryState(){this.log("Setting temporary session state"),this.state.temporary.timestamp=new Date,this.sessionStorageSet(this.temporarySessionKey,JSON.stringify(this.state.temporary)),this.persistCookieState(this.temporarySessionKey,this.state.temporary,!0)}loadLocalStorage(e){const t=this.localStorageGet(e);if(t===null)return null;try{return JSON.parse(t,F)}catch{return null}}loadCookie(e){const t=this.getCookie(e);if(t===null)return null;try{return JSON.parse(t,F)}catch{return null}}persistLocalStorageState(e,t){this.localStorageSet(e,JSON.stringify(t))}persistCookieState(e,t,i=!1){const s=JSON.stringify(t),r=i?"":`expires=${new Date(new Date().getTime()+864e5*365).toUTCString()};`;document.cookie=`${e}=${s};domain=.${window.location.hostname};path=/;SameSite=Strict;${r}`}deleteCookie(e){const t=new Date(0).toUTCString();document.cookie=`${e}=;domain=.${window.location.hostname};path=/;expires=${t};`}deleteLocalStorage(e){window.localStorage.removeItem(e)}getChannel(e){return[{"name":"cross-network","test":(v) => new RegExp(".*cross-network.*", "i").test(v.utmCampaign)},{"name":"direct","test":(v) => v.utmSource === "" && v.utmMedium === ""},{"name":"paid-shopping","test":(v) => (new RegExp("^(?:Google|IGShopping|aax-us-east\.amazon-adsystem\.com|aax\.amazon-adsystem\.com|alibaba|alibaba\.com|amazon|amazon\.co\.uk|amazon\.com|apps\.shopify\.com|checkout\.shopify\.com|checkout\.stripe\.com|cr\.shopping\.naver\.com|cr2\.shopping\.naver\.com|ebay|ebay\.co\.uk|ebay\.com|ebay\.com\.au|ebay\.de|etsy|etsy\.com|m\.alibaba\.com|m\.shopping\.naver\.com|mercadolibre|mercadolibre\.com|mercadolibre\.com\.ar|mercadolibre\.com\.mx|message\.alibaba\.com|msearch\.shopping\.naver\.com|nl\.shopping\.net|no\.shopping\.net|offer\.alibaba\.com|one\.walmart\.com|order\.shopping\.yahoo\.co\.jp|partners\.shopify\.com|s3\.amazonaws\.com|se\.shopping\.net|shop\.app|shopify|shopify\.com|shopping\.naver\.com|shopping\.yahoo\.co\.jp|shopping\.yahoo\.com|shopzilla|shopzilla\.com|simplycodes\.com|store\.shopping\.yahoo\.co\.jp|stripe|stripe\.com|uk\.shopping\.net|walmart|walmart\.com)$", "i").test(v.utmSource) || new RegExp("^(.*(([^a-df-z]|^)shop|shopping).*)$", "i").test(v.utmCampaign)) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-search","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|y
17andex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-social","test":(v) => new RegExp("^(?:43things|43things\.com|51\.com|5ch\.net|Hatena|ImageShack|academia\.edu|activerain|activerain\.com|activeworlds|activeworlds\.com|addthis|addthis\.com|airg\.ca|allnurses\.com|allrecipes\.com|alumniclass|alumniclass\.com|ameba\.jp|ameblo\.jp|americantowns|americantowns\.com|amp\.reddit\.com|ancestry\.com|anobii|anobii\.com|answerbag|answerbag\.com|answers\.yahoo\.com|aolanswers|aolanswers\.com|apps\.facebook\.com|ar\.pinterest\.com|artstation\.com|askubuntu|askubuntu\.com|asmallworld\.com|athlinks|athlinks\.com|away\.vk\.com|awe\.sm|b\.hatena\.ne\.jp|baby-gaga|baby-gaga\.com|babyblog\.ru|badoo|badoo\.com|bebo|bebo\.com|beforeitsnews|beforeitsnews\.com|bharatstudent|bharatstudent\.com|biip\.no|biswap\.org|bit\.ly|blackcareernetwork\.com|blackplanet|blackplanet\.com|blip\.fm|blog\.com|blog\.feedspot\.com|blog\.goo\.ne\.jp|blog\.naver\.com|blog\.yahoo\.co\.jp|blogg\.no|bloggang\.com|blogger|blogger\.com|blogher|blogher\.com|bloglines|bloglines\.com|blogs\.com|blogsome|blogsome\.com|blogspot|blogspot\.com|blogster|blogster\.com|blurtit|blurtit\.com|bookmarks\.yahoo\.co\.jp|bookmarks\.yahoo\.com|br\.pinterest\.com|brightkite|brightkite\.com|brizzly|brizzly\.com|business\.facebook\.com|buzzfeed|buzzfeed\.com|buzznet|buzznet\.com|cafe\.naver\.com|cafemom|cafemom\.com|camospace|camospace\.com|canalblog\.com|care\.com|care2|care2\.com|caringbridge\.org|catster|catster\.com|cbnt\.io|cellufun|cellufun\.com|centerblog\.net|chat\.zalo\.me|chegg\.com|chicagonow|chicagonow\.com|chiebukuro\.yahoo\.co\.jp|classmates|classmates\.com|classquest|classquest\.com|co\.pinterest\.com|cocolog-nifty|cocolog-nifty\.com|copainsdavant\.linternaute\.com|couchsurfing\.org|cozycot|cozycot\.com|cross\.tv|crunchyroll|crunchyroll\.com|cyworld|cyworld\.com|cz\.pinterest\.com|d\.hatena\.ne\.jp|dailystrength\.org|deluxe\.com|deviantart|deviantart\.com|dianping|dianping\.com|digg|digg\.com|diigo|diigo\.com|discover\.hubpages\.com|disqus|disqus\.com|dogster|dogster\.com|dol2day|dol2day\.com|doostang|doostang\.com|dopplr|dopplr\.com|douban|douban\.com|draft\.blogger\.com|draugiem\.lv|drugs-forum|drugs-forum\.com|dzone|dzone\.com|edublogs\.org|elftown|elftown\.com|epicurious\.com|everforo\.com|exblog\.jp|extole|extole\.com|facebook|facebook\.com|faceparty|faceparty\.com|fandom\.com|fanpop|fanpop\.com|fark|fark\.com|fb|fb\.me|fc2|fc2\.com|feedspot|feministing|feministing\.com|filmaffinity|filmaffinity\.com|flickr|flickr\.com|flipboard|flipboard\.com|folkdirect|folkdirect\.com|foodservice|foodservice\.com|forums\.androidcentral\.com|forums\.crackberry\.com|forums\.imore\.com|forums\.nexopia\.com|forums\.webosnation\.com|forums\.wpcentral\.com|fotki|fotki\.com|fotolog|fotolog\.com|foursquare|foursquare\.com|free\.facebook\.com|friendfeed|friendfeed\.com|fruehstueckstreff\.org|fubar|fubar\.com|gaiaonline|gaiaonline\.com|gamerdna|gamerdna\.com|gather\.com|geni\.com|getpocket\.com|glassboard|glassboard\.com|glassdoor|glassdoor\.com|godtube|godtube\.com|goldenline\.pl|goldstar|goldstar\.com|goo\.gl|gooblog|goodreads|goodreads\.com|google\+|googlegroups\.com|googleplus|govloop|govloop\.com|gowalla|gowalla\.com|gree\.jp|groups\.google\.com|gulli\.com|gutefrage\.net|habbo|habbo\.com|hi5|hi5\.com|hootsuite|hootsuite\.com|houzz|houzz\.com|hoverspot|hoverspot\.com|hr\.com|hu\.pinterest\.com|hubculture|hubculture\.com|hubpages\.com|hyves\.net|hyves\.nl|ibibo|ibibo\.com|id\.pinterest\.com|identi\.ca|ig|imageshack\.com|imageshack\.us|imvu|imvu\.com|in\.pinterest\.com|insanejournal|insanejournal\.com|instagram|instagram\.com|instapaper|instapaper\.com|internations\.org|interpals\.net|intherooms|intherooms\.com|irc-galleria\.net|is\.gd|italki|italki\.com|jammerdirect|jammerdirect\.com|jappy\.com|jappy\.de|kaboodle\.com|kakao|kakao\.com|kakaocorp\.com|kaneva|kaneva\.com|kin\.naver\.com|l\.facebook\.com|l\.instagram\.com|l\.messenger\.com|last\.fm|librarything|librarything\.com|lifestream\.aol\.com|line|line\.me|linkedin|linkedin\.com|listal|listal\.com|listography|listography\.com|livedoor\.com|livedoorblog|livejournal|livejournal\.com|lm\.facebook\.com|lnkd\.in|m\.blog\.naver\.com|m\.cafe\.naver\.com|m\.facebook\.com|m\.kin\.naver\.com|m\.vk\.com|m\.yelp\.com|mbga\.jp|medium\.com|meetin\.org|meetup|meetup\.com|meinvz\.net|meneame\.net|menuism\.com|messages\.google\.com|messages\.yahoo\.co\.jp|messenger|messenger\.com|mix\.com|mixi\.jp|mobile\.facebook\.com|mocospace|mocospace\.com|mouthshut|mouthshut\.com|movabletype|movabletype\.com|mubi|mubi\.com|my\.o
17pera\.com|myanimelist\.net|myheritage|myheritage\.com|mylife|mylife\.com|mymodernmet|mymodernmet\.com|myspace|myspace\.com|netvibes|netvibes\.com|news\.ycombinator\.com|newsshowcase|nexopia|ngopost\.org|niconico|nicovideo\.jp|nightlifelink|nightlifelink\.com|ning|ning\.com|nl\.pinterest\.com|odnoklassniki\.ru|odnoklassniki\.ua|okwave\.jp|old\.reddit\.com|oneworldgroup\.org|onstartups|onstartups\.com|opendiary|opendiary\.com|oshiete\.goo\.ne\.jp|out\.reddit\.com|over-blog\.com|overblog\.com|paper\.li|partyflock\.nl|photobucket|photobucket\.com|pinboard|pinboard\.in|pingsta|pingsta\.com|pinterest|pinterest\.at|pinterest\.ca|pinterest\.ch|pinterest\.cl|pinterest\.co\.kr|pinterest\.co\.uk|pinterest\.com|pinterest\.com\.au|pinterest\.com\.mx|pinterest\.de|pinterest\.es|pinterest\.fr|pinterest\.it|pinterest\.jp|pinterest\.nz|pinterest\.ph|pinterest\.pt|pinterest\.ru|pinterest\.se|pixiv\.net|pl\.pinterest\.com|playahead\.se|plurk|plurk\.com|plus\.google\.com|plus\.url\.google\.com|pocket\.co|posterous|posterous\.com|pro\.homeadvisor\.com|pulse\.yahoo\.com|qapacity|qapacity\.com|quechup|quechup\.com|quora|quora\.com|qzone\.qq\.com|ravelry|ravelry\.com|reddit|reddit\.com|redux|redux\.com|renren|renren\.com|researchgate\.net|reunion|reunion\.com|reverbnation|reverbnation\.com|rtl\.de|ryze|ryze\.com|salespider|salespider\.com|scoop\.it|screenrant|screenrant\.com|scribd|scribd\.com|scvngr|scvngr\.com|secondlife|secondlife\.com|serverfault|serverfault\.com|shareit|sharethis|sharethis\.com|shvoong\.com|sites\.google\.com|skype|skyrock|skyrock\.com|slashdot\.org|slideshare\.net|smartnews\.com|snapchat|snapchat\.com|social|sociallife\.com\.br|socialvibe|socialvibe\.com|spaces\.live\.com|spoke|spoke\.com|spruz|spruz\.com|ssense\.com|stackapps|stackapps\.com|stackexchange|stackexchange\.com|stackoverflow|stackoverflow\.com|stardoll\.com|stickam|stickam\.com|studivz\.net|suomi24\.fi|superuser|superuser\.com|sweeva|sweeva\.com|t\.co|t\.me|tagged|tagged\.com|taggedmail|taggedmail\.com|talkbiznow|talkbiznow\.com|taringa\.net|techmeme|techmeme\.com|tencent|tencent\.com|tiktok|tiktok\.com|tinyurl|tinyurl\.com|toolbox|toolbox\.com|touch\.facebook\.com|tr\.pinterest\.com|travellerspoint|travellerspoint\.com|tripadvisor|tripadvisor\.com|trombi|trombi\.com|trustpilot|tudou|tudou\.com|tuenti|tuenti\.com|tumblr|tumblr\.com|tweetdeck|tweetdeck\.com|twitter|twitter\.com|twoo\.com|typepad|typepad\.com|unblog\.fr|urbanspoon\.com|ushareit\.com|ushi\.cn|vampirefreaks|vampirefreaks\.com|vampirerave|vampirerave\.com|vg\.no|video\.ibm\.com|vk\.com|vkontakte\.ru|wakoopa|wakoopa\.com|wattpad|wattpad\.com|web\.facebook\.com|web\.skype\.com|webshots|webshots\.com|wechat|wechat\.com|weebly|weebly\.com|weibo|weibo\.com|wer-weiss-was\.de|weread|weread\.com|whatsapp|whatsapp\.com|wiki\.answers\.com|wikihow\.com|wikitravel\.org|woot\.com|wordpress|wordpress\.com|wordpress\.org|xanga|xanga\.com|xing|xing\.com|yahoo-mbga\.jp|yammer|yammer\.com|yelp|yelp\.co\.uk|yelp\.com|youroom\.in|za\.pinterest\.com|zalo|zoo\.gr|zooppa|zooppa\.com)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-video","test":(v) => new RegExp("^(?:blog\.twitch\.tv|crackle|crackle\.com|curiositystream|curiositystream\.com|d\.tube|dailymotion|dailymotion\.com|dashboard\.twitch\.tv|disneyplus|disneyplus\.com|fast\.wistia\.net|help\.hulu\.com|help\.netflix\.com|hulu|hulu\.com|id\.twitch\.tv|iq\.com|iqiyi|iqiyi\.com|jobs\.netflix\.com|justin\.tv|m\.twitch\.tv|m\.youtube\.com|music\.youtube\.com|netflix|netflix\.com|player\.twitch\.tv|player\.vimeo\.com|ted|ted\.com|twitch|twitch\.tv|utreon|utreon\.com|veoh|veoh\.com|viadeo\.journaldunet\.com|vimeo|vimeo\.com|wistia|wistia\.com|youku|youku\.com|youtube|youtube\.com)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"display","test":(v) => new RegExp("^(?:display|banner|expandable|interstitial|cpm)$", "i").test(v.utmMedium)},{"name":"paid-other","test":(v) => new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)}
17,{"name":"organic-shopping","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|yandex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) || new RegExp("^(.*(([^a-df-z]|^)shop|shopping).*)$", "i").test(v.utmCampaign)},{"name":"organic-social","test":(v) => new RegExp("^(?:43things|43things\.com|51\.com|5ch\.net|Hatena|ImageShack|academia\.edu|activerain|activerain\.com|activeworlds|activeworlds\.com|addthis|addthis\.com|airg\.ca|allnurses\.com|allrecipes\.com|alumniclass|alumniclass\.com|ameba\.jp|ameblo\.jp|americantowns|americantowns\.com|amp\.reddit\.com|ancestry\.com|anobii|anobii\.com|answerbag|answerbag\.com|answers\.yahoo\.com|aolanswers|aolanswers\.com|apps\.facebook\.com|ar\.pinterest\.com|artstation\.com|askubuntu|askubuntu\.com|asmallworld\.com|athlinks|athlinks\.com|away\.vk\.com|awe\.sm|b\.hatena\.ne\.jp|baby-gaga|baby-gaga\.com|babyblog\.ru|badoo|badoo\.com|bebo|bebo\.com|beforeitsnews|beforeitsnews\.com|bharatstudent|bharatstudent\.com|biip\.no|biswap\.org|bit\.ly|blackcareernetwork\.com|blackplanet|blackplanet\.com|blip\.fm|blog\.com|blog\.feedspot\.com|blog\.goo\.ne\.jp|blog\.naver\.com|blog\.yahoo\.co\.jp|blogg\.no|bloggang\.com|blogger|blogger\.com|blogher|blogher\.com|bloglines|bloglines\.com|blogs\.com|blogsome|blogsome\.com|blogspot|blogspot\.com|blogster|blogster\.com|blurtit|blurtit\.com|bookmarks\.yahoo\.co\.jp|bookmarks\.yahoo\.com|br\.pinterest\.com|brightkite|brightkite\.com|brizzly|brizzly\.com|business\.facebook\.com|buzzfeed|buzzfeed\.com|buzznet|buzznet\.com|cafe\.naver\.com|cafemom|cafemom\.com|camospace|camospace\.com|canalblog\.com|care\.com|care2|care2\.com|caringbridge\.org|catster|catster\.com|cbnt\.io|cellufun|cellufun\.com|centerblog\.net|chat\.zalo\.me|chegg\.com|chicagonow|chicagonow\.com|chiebukuro\.yahoo\.co\.jp|classmates|classmates\.com|classquest|classquest\.com|co\.pinterest\.com|cocolog-nifty|cocolog-nifty\.com|copainsdavant\.linternaute\.com|couchsurfing\.org|cozycot|cozycot\.com|cross\.tv|crunchyroll|crunchyroll\.com|cyworld|cyworld\.com|cz\.pinterest\.com|d\.hatena\.ne\.jp|dailystrength\.org|deluxe\.com|deviantart|deviantart\.com|dianping|dianping\.com|digg|digg\.com|diigo|diigo\.com|discover\.hubpages\.com|disqus|disqus\.com|dogster|dogster\.com|dol2day|dol2day\.com|doostang|doostang\.com|dopplr|dopplr\.com|douban|douban\.com|draft\.blogger\.com|draugiem\.lv|drugs-forum|drugs-forum\.com|dzone|dzone\.com|edublogs\.org|elftown|elftown\.com|epicurious\.com|everforo\.com|exblog\.jp|extole|extole\.com|facebook|facebook\.com|faceparty|faceparty\.com|fandom\.com|fanpop|fanpop\.com|fark|fark\.com|fb|fb\.me|fc2|fc2\.com|feedspot|feministing|feministing\.com|filmaffinity|filmaffinity\.com|flickr|flickr\.com|flipboard|flipboard\.com|folkdirect|folkdirect\.com|foodservice|foodservice\.com|forums\.androidcentral\.com|forums\.crackberry\.com|forums\.imore\.com|forums\.nexopia\.com|forums\.webosnation\.com|forums\.wpcentral\.com|fotki|fotki\.com|fotolog|fotolog\.com|foursquare|foursquare\.com|free\.facebook\.com|friendfeed|friendfeed\.com|fruehstueckstreff\.org|fubar|fubar\.com|gaiaonline|gaiaonline\.com|gamerdna|gamerdna\.com|gather\.com|geni\.com|getpocket\.com|glassboard|glassboard\.com|glassdoor|glassdoor\.com|godtube|godtube\.com|goldenline\.pl|goldstar|goldstar\.com|goo\.gl|gooblog|goodreads|goodreads\.com|google\+|googlegroups\.com|googleplus|govloop|govloop\.com|gowalla|gowalla\.com|gree\.jp|groups\.google\.com|gulli\.com|gutefrage\.net|habbo|habbo\.com|hi5|hi5\.com|hootsuite|hootsuite\.com|houzz|houzz\.com|hoverspot|hoverspot\.com|hr\.com|hu\.pinterest\.com|hubculture|hubculture\.com|hubpages\.com|hyves\.net|hyves\.nl|ibibo|ibibo\.com|id\.pinterest\.com|identi\.ca|ig|imageshack\.com|imageshack\.us|imvu|imvu\.com|in\.pinterest\.com|insanejournal|insanejournal\.com|instagram|instagram\.com|instapaper|instapaper\.com|internations\.org|interpals\.net|intherooms|intherooms\.com|irc-galleria\.net|is\.gd|italki|italki\.com|jammerdirect|jammerdirect\.com|jappy\.com|jappy\.de|kaboodle\.com|k
17akao|kakao\.com|kakaocorp\.com|kaneva|kaneva\.com|kin\.naver\.com|l\.facebook\.com|l\.instagram\.com|l\.messenger\.com|last\.fm|librarything|librarything\.com|lifestream\.aol\.com|line|line\.me|linkedin|linkedin\.com|listal|listal\.com|listography|listography\.com|livedoor\.com|livedoorblog|livejournal|livejournal\.com|lm\.facebook\.com|lnkd\.in|m\.blog\.naver\.com|m\.cafe\.naver\.com|m\.facebook\.com|m\.kin\.naver\.com|m\.vk\.com|m\.yelp\.com|mbga\.jp|medium\.com|meetin\.org|meetup|meetup\.com|meinvz\.net|meneame\.net|menuism\.com|messages\.google\.com|messages\.yahoo\.co\.jp|messenger|messenger\.com|mix\.com|mixi\.jp|mobile\.facebook\.com|mocospace|mocospace\.com|mouthshut|mouthshut\.com|movabletype|movabletype\.com|mubi|mubi\.com|my\.opera\.com|myanimelist\.net|myheritage|myheritage\.com|mylife|mylife\.com|mymodernmet|mymodernmet\.com|myspace|myspace\.com|netvibes|netvibes\.com|news\.ycombinator\.com|newsshowcase|nexopia|ngopost\.org|niconico|nicovideo\.jp|nightlifelink|nightlifelink\.com|ning|ning\.com|nl\.pinterest\.com|odnoklassniki\.ru|odnoklassniki\.ua|okwave\.jp|old\.reddit\.com|oneworldgroup\.org|onstartups|onstartups\.com|opendiary|opendiary\.com|oshiete\.goo\.ne\.jp|out\.reddit\.com|over-blog\.com|overblog\.com|paper\.li|partyflock\.nl|photobucket|photobucket\.com|pinboard|pinboard\.in|pingsta|pingsta\.com|pinterest|pinterest\.at|pinterest\.ca|pinterest\.ch|pinterest\.cl|pinterest\.co\.kr|pinterest\.co\.uk|pinterest\.com|pinterest\.com\.au|pinterest\.com\.mx|pinterest\.de|pinterest\.es|pinterest\.fr|pinterest\.it|pinterest\.jp|pinterest\.nz|pinterest\.ph|pinterest\.pt|pinterest\.ru|pinterest\.se|pixiv\.net|pl\.pinterest\.com|playahead\.se|plurk|plurk\.com|plus\.google\.com|plus\.url\.google\.com|pocket\.co|posterous|posterous\.com|pro\.homeadvisor\.com|pulse\.yahoo\.com|qapacity|qapacity\.com|quechup|quechup\.com|quora|quora\.com|qzone\.qq\.com|ravelry|ravelry\.com|reddit|reddit\.com|redux|redux\.com|renren|renren\.com|researchgate\.net|reunion|reunion\.com|reverbnation|reverbnation\.com|rtl\.de|ryze|ryze\.com|salespider|salespider\.com|scoop\.it|screenrant|screenrant\.com|scribd|scribd\.com|scvngr|scvngr\.com|secondlife|secondlife\.com|serverfault|serverfault\.com|shareit|sharethis|sharethis\.com|shvoong\.com|sites\.google\.com|skype|skyrock|skyrock\.com|slashdot\.org|slideshare\.net|smartnews\.com|snapchat|snapchat\.com|social|sociallife\.com\.br|socialvibe|socialvibe\.com|spaces\.live\.com|spoke|spoke\.com|spruz|spruz\.com|ssense\.com|stackapps|stackapps\.com|stackexchange|stackexchange\.com|stackoverflow|stackoverflow\.com|stardoll\.com|stickam|stickam\.com|studivz\.net|suomi24\.fi|superuser|superuser\.com|sweeva|sweeva\.com|t\.co|t\.me|tagged|tagged\.com|taggedmail|taggedmail\.com|talkbiznow|talkbiznow\.com|taringa\.net|techmeme|techmeme\.com|tencent|tencent\.com|tiktok|tiktok\.com|tinyurl|tinyurl\.com|toolbox|toolbox\.com|touch\.facebook\.com|tr\.pinterest\.com|travellerspoint|travellerspoint\.com|tripadvisor|tripadvisor\.com|trombi|trombi\.com|trustpilot|tudou|tudou\.com|tuenti|tuenti\.com|tumblr|tumblr\.com|tweetdeck|tweetdeck\.com|twitter|twitter\.com|twoo\.com|typepad|typepad\.com|unblog\.fr|urbanspoon\.com|ushareit\.com|ushi\.cn|vampirefreaks|vampirefreaks\.com|vampirerave|vampirerave\.com|vg\.no|video\.ibm\.com|vk\.com|vkontakte\.ru|wakoopa|wakoopa\.com|wattpad|wattpad\.com|web\.facebook\.com|web\.skype\.com|webshots|webshots\.com|wechat|wechat\.com|weebly|weebly\.com|weibo|weibo\.com|wer-weiss-was\.de|weread|weread\.com|whatsapp|whatsapp\.com|wiki\.answers\.com|wikihow\.com|wikitravel\.org|woot\.com|wordpress|wordpress\.com|wordpress\.org|xanga|xanga\.com|xing|xing\.com|yahoo-mbga\.jp|yammer|yammer\.com|yelp|yelp\.co\.uk|yelp\.com|youroom\.in|za\.pinterest\.com|zalo|zoo\.gr|zooppa|zooppa\.com)$", "i").test(v.utmSource) || new RegExp("^(?:social|social-network|social-media|sm|social network|social media)$", "i").test(v.utmMedium)},{"name":"organic-video","test":(v) => new RegExp("^(?:blog\.twitch\.tv|crackle|crackle\.com|curiositystream|curiositystream\.com|d\.tube|dailymotion|dailymotion\.com|dashboard\.twitch\.tv|disneyplus|disneyplus\.com|fast\.wistia\.net|help\.hulu\.com|help\.netflix\.com|hulu|hulu\.com|id\.twitch\.tv|iq\.com|iqiyi|iqiyi\.com|jobs\.netflix\.com|justin\.tv|m\.twitch\.tv|m\.youtube\.com|music\.youtube\.com|netflix|netflix\.com|player\.twitch\.tv|player\.vimeo\.com|ted|ted\.com|twitch|twitch\.tv|utreon|utreon\.com|veoh|veoh\.com|viadeo\.journaldunet\.com|vimeo|vimeo\.com|wistia|wistia\.com|youku|youku\.com|youtube|youtube\.com)$", "i").test(v.utmSource) || new RegExp("^(.*video.*)$", "i").test(v.utmMedium)},{"name":"organic-search","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|y
17andex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) || v.utmMedium.toLowerCase() === "organic"},{"name":"referral","test":(v) => new RegExp("^(?:referral|app|link)$", "i").test(v.utmMedium)},{"name":"email","test":(v) => new RegExp("^(?:email|e-mail|e_mail|e mail)$", "i").test(v.utmMedium) || new RegExp("^(?:email|e-mail|e_mail|e mail)$", "i").test(v.utmSource)},{"name":"affiliate","test":(v) => v.utmMedium.toLowerCase() === "affiliate"},{"name":"audio","test":(v) => v.utmMedium.toLowerCase() === "audio"},{"name":"sms","test":(v) => v.utmSource.toLowerCase() === "sms" || v.utmMedium.toLowerCase() === "sms"},{"name":"mobile-push-notification","test":(v) => v.utmSource.toLowerCase() === "firebase" || new RegExp("(?:.*mobile.*|.*notification.*|push$)", "i").test(v.utmMedium)}].find(i=>i.test(e))?.name??"other"}getShopifyAnalyticsId(){const e=this.getCookie("_shopify_y");if(e)return e;try{const t=this.localStorageGet("Shoplift_ClientId");if(t)return t}catch{}return null}legacyGetCookieVisitor(){const e=this.getCookie("SHOPLIFT");return e===null?null:JSON.parse(e,F)}getCookie(e){const t=this.cookie.split("; ").filter(i=>i.split("=").at(0)===e).at(0);return t===void 0?null:t.split("=").slice(1).join("=")}monitorConsentChange(){document.addEventListener("visitorConsentCollected",e=>{(async()=>await this.onConsentChange(e.detail.analyticsAllowed,!0))()}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>this.loadShopifyConsentApiWithRetry()):this.loadShopifyConsentApiWithRetry()}loadShopifyConsentApiWithRetry(){let e=0;const t=()=>{this.loadShopifyConsentApi()||e++<10&&window.setTimeout(t,100)};t()}loadShopifyConsentApi(){if(window.Shopify){this.log("Loading Shopify features");const e=async()=>{if(!window.Shopify){this.log("Shopify object missing... suddenly?");return}if(window.Shopify.customerPrivacy===void 0){this.log("Shopify CustomerPrivacy api still missing, trying again in 1000ms"),t=window.setTimeout(()=>{(async()=>await e())()},1e3);return}if(this.geoViaShopify){const s=window.Shopify.customerPrivacy.getRegion?.();this.resolvedRegion=typeof s=="string"?s.replace(/-/g,""):""}const i=window.Shopify.customerPrivacy.getTrackingConsent();await this.onConsentChange(window.Shopify.customerPrivacy.analyticsProcessingAllowed(),i==="yes")};let t=window.setTimeout(()=>{(async()=>await e())()},5e3);return window.Shopify.loadFeatures([{name:"consent-tracking-api",version:"0.1"}],i=>{(async()=>{if(window.clearTimeout(t),i){this.log("Error loading consent tracking",i);return}await e()})()}),!0}return!1}async onConsentChange(e,t){try{if(this.log("Consent change detected",e,t),this.state.essential.consentApproved=e,this.state.essential.hasConsentInteraction=t,!this.state.essential.consentApproved){this.state.essential.hasConsentInteraction&&(this.state.analytics.queue.length=0),this.saveState();return}this.cookie=document.cookie,this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.saveState(),await this.syncAllEvents()}catch(i){this.log("Error syncing on consent change",i)}}isThemePreview(){return isThemePreview||themeRole!=="main"}isAppProxyPath(){const e=["/apps/","/tools/","/a/"],t=window.location.pathname;return e.some(i=>t.startsWith(i))}clearThemeBar(e,t,i){const s=structuredClone(i);this.log("Looking for theme bar"),this.waitForElement(null,"body").then(r=>this.waitForElement(r,"#preview-bar-iframe, #PBarNextFrameWrapper").then(o=>(this.log("Found theme bar"),t&&(this.log("Removing theme bar"),o.remove()),e?this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify({...this.debugState(),stateAtEvaluation:s},ee)}):Promise.resolve(null)))).catch(r=>console.error(r))}waitForElement(e,t){return new Promise(i=>{const s=document.querySelector(t);if(s){i(s);return}const r=new MutationObserver(o=>{const n=document.querySelector(t);if(n){r.disconnect(),i(n);return}});r.observe(e??document.documentElement,{childList:!0})})}setDebug(e){this.state.essential.debugMode=e,this.saveState()}log(e,...t){let i=0;const s=e.replace(/%[sdoOfF]/g,r=>{if(i>=t.length)return r;const o=t[i++];return r==="%o"||r==="%O"?JSON.stringify(o):String(o)});this.logHistory.push(`[${new Date().toISOString()}][SL] ${s}`),!(!this.state.essential.debugMode&&!this.shopliftDebug)&&console.debug(`[SL] ${e}`,...t)}debugState(){return{state:this.state,storage:{essential:this.loadLocalStorage(this.essentialSessionKey),analytics:this.loadLocalStorage(this.analyticsSessionKey)},params:{shop:this.shop,host:this.host,eventHost:this.eventHost,cssHideClass:this.cssHideClass,testConfigs:this.testConfigs,inactiveTestConfigs:this.inactiveTestConfigs,sendPageView:this.sendPageView,isShopifyMerchantCookie
17:this.getCookie("is_shopify_merchant"),themeId,url:window.location.href,isThemePreview,themeRole,gaConfig:this.gaConfig},logHistory:this.logHistory}}createViewportObserver(e,t={}){const{threshold:i=this.VIEWPORT_TRACK_THRESHOLD,triggerOnce:s=!0}=t,r=new Set;return new IntersectionObserver(o=>{o.forEach(n=>{if(n.isIntersecting&&!r.has(n.target)){const l=n.target,c=l.getAttribute(this.DATA_SL_TEST_ID);c&&(e(c,l),s&&r.add(l))}})},{threshold:i})}applyChangesWithViewport(e,t,i,s){const r=t.selectorsForViewportTracking??t.selectors,o=n=>{if(this.state.essential.visitorTests.some(h=>h.testId===n)||this.activeViewportObservers.has(n))return;const l=[];if(r.forEach(h=>{e.querySelectorAll(h.cssSelector).forEach(b=>l.push(b))}),l.length===0)return;let c=!1;const d=()=>{c||(c=!0,i(n),u.disconnect(),this.activeViewportObservers.delete(n))},u=this.createViewportObserver(()=>{d()},{triggerOnce:!0,...s});this.activeViewportObservers.set(n,u),this.log(`Created viewport observer for test ${n}, observing ${l.length} elements`),l.forEach(h=>{h.setAttribute(this.DATA_SL_TEST_ID,String(n)),u.observe(h)}),setTimeout(()=>{c||l.forEach(h=>{const p=h.getBoundingClientRect(),b=s?.threshold??this.VIEWPORT_TRACK_THRESHOLD,E=Math.min(p.bottom,window.innerHeight)-Math.max(p.top,0),S=Math.min(p.right,window.innerWidth)-Math.max(p.left,0);p.top<window.innerHeight&&p.bottom>0&&p.left<window.innerWidth&&p.right>0&&E>0&&S>0&&E>=p.height*b&&(this.log(`Price element already visible in viewport for test ${n}:`,h),d())})},100)};t.selectors.length>0&&U(e,t,()=>{}),Te(e,{testId:t.testId,hypothesisId:t.hypothesisId,selectors:r},n=>{o(n)})}applyPriceTestWithMapLookup(e,t,i,s){if(!t.priceData){this.log("No price data for hypothesis '%s'",t.id);return}this.log("Hypothesis '%s' isControl=%s, priceData has %d variants",t.id,t.isControl,t.priceData.variants.length);const r=t.priceData.variants.slice(0,3);for(const[S,C,_]of r)this.log("  Sample priceData: variant=%s, price=%d, compareAt=%d",S,C,_);const o=j(t.priceData),n=new Set;for(const S of i)if(S.priceData)for(const[C]of S.priceData.variants)n.add(C);this.log("Price test Map lookup: %d products in hypothesis, %d total products to track",o.size,n.size);const l=t.priceData,c=new WeakSet;let d=!1;const u="[data-sl-attribute-p], [data-sl-attribute-cap], [data-sl-attribute-discount]",h=S=>{if(c.has(S))return;const C=S.getAttribute("data-sl-attribute-p"),_=S.getAttribute("data-sl-attribute-cap"),T=S.getAttribute("data-sl-attribute-discount"),m=C||_||T;if(!m||!n.has(m))return;c.add(S);const y=o.get(m);y&&(this.log("Applying price for product %s: %d cents (compare at: %d cents)",m,y.priceInCents,y.compareAtPriceInCents),Le(S,m,y,l),this.log("Applied price to element for product %s",m)),!d&&!this.state.essential.visitorTests.some(w=>w.testId===e)&&(S.setAttribute(this.DATA_SL_TEST_ID,String(e)),this.setupElementViewportTracking(S,e,()=>{d||(d=!0,s(e))}))},p=()=>{const S=document.querySelectorAll(u);this.log("Scanning for price elements, found: %d",S.length),S.forEach(h)},b=new MutationObserver(S=>{for(const C of S)C.type==="childList"&&C.addedNodes.forEach(_=>{if(_.nodeType===Node.ELEMENT_NODE){const T=_;(T.hasAttribute("data-sl-attribute-p")||T.hasAttribute("data-sl-attribute-cap")||T.hasAttribute("data-sl-attribute-discount"))&&h(T),T.querySelectorAll(u).forEach(h)}}),C.type==="attributes"&&C.target instanceof Element&&h(C.target)}),E=document.body||document.documentElement;b.observe(E,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-sl-attribute-p","data-sl-attribute-cap","data-sl-attribute-discount"]}),this.log("MutationObserver started for price elements"),p(),document.readyState==="loading"&&document.addEventListener("DOMContentLoaded",()=>{this.log("DOMContentLoaded - rescanning for price elements"),p()}),setTimeout(()=>{this.log("Delayed rescan for price elements"),p()},100),setTimeout(()=>{this.log("Final rescan for price elements"),p()},500)}setupElementViewportTracking(e,t,i){const s=this.VIEWPORT_TRACK_THRESHOLD,r=e.getBoundingClientRect(),o=Math.min(r.bottom,window.innerHeight)-Math.max(r.top,0),n=Math.min(r.right,window.innerWidth)-Math.max(r.left,0);if(r.top<window.innerHeight&&r.bottom>0&&r.left<window.innerWidth&&r.right>0&&o>0&&n>0&&o>=r.height*s){this.log("Price element already visible for test %s",t),i();return}const c=new IntersectionObserver(d=>{for(const u of d)if(u.isIntersecting&&u.intersectionRatio>=s){this.log("Price element entered viewport for test %s",t),c.disconnect(),i();break}},{threshold:s});c.observe(e)}debug(){const e=this.debugState();console.log(JSON.stringify(e,ee,2))}}(async function(){window.shopliftInstance||(window.shopliftInstance=new Ze("golinutrition.myshopify.com","https://app.shoplift.ai","https://events.shoplift.ai",true,true,false,{"sendEvents":false,"mode":"gtag"},false,false,1000,[{"id":"01a0103f-3e3a-719b-902e-56c2f2914374","startAt":"2026-08-17T15:02:55.282447Z","requiresCountry":true,"requiresRegion":false,"bayesianRevision":5,"device":"all","status":"active","visitorOption":"all","ignoreTestViewParameterEnforcement":false,"statusHistory":[{"status":"active","createdAt":"2026-08-17T15:02:55.361221Z"}
17],"hypotheses":[{"visitorCount":261353,"trafficPercentage":0.4825608588689312,"title":"Original","domSelectors":[],"id":"01a01024-2294-7ce1-9d98-1ed4ab3b8bff","type":"landing","themeId":151168581828,"affix":"brand_aap_nz_bundles","isControl":true},{"visitorCount":280242,"trafficPercentage":0.5174391411310688,"title":"v2","domSelectors":[],"id":"01a01026-9aeb-7e5e-bc26-3961583e5f61","type":"landing","themeId":151168581828,"affix":"brand_aap_nz_bundles_v2","isControl":false}],"targetAudiences":[[(visitor, isNew, channel, country) => country === "US"]],"title":"zero sugar v2 "},{"id":"01a06471-1a9d-7c42-b559-0988f6b74595","startAt":"2026-09-02T23:25:29.114952Z","requiresCountry":false,"requiresRegion":false,"bayesianRevision":5,"device":"all","status":"active","visitorOption":"all","ignoreTestViewParameterEnforcement":false,"statusHistory":[{"status":"active","createdAt":"2026-09-02T23:25:29.135862Z"}],"hypotheses":[{"visitorCount":4210,"trafficPercentage":0.5,"title":"Original","priceData":{"moneyFormat":"<span class=money>${{amount}}</span>","currency":"USD","currencyCodeEnabled":false,"variants":[["6138144882884",4498,7500,"6138144882884"],["37826777186500",4498,7500,"6138144882884"]]},"subscriptionData":{"widget":{"widgetType":"radio","usesShadowDom":true,"selectors":{"onetimePrice":[{"selector":"rc-purchase-option__price","isShadow":true}],"subscriptionCompareAt":[{"selector":"rc-purchase-option__original-price","isShadow":true}],"subscriptionPrice":[{"selector":"rc-purchase-option__discounted-price","isShadow":true}],"subscriptionDiscount":[{"selector":".rc-plans-button__discount","isShadow":true},{"selector":"rc-benefits","isShadow":true},{"selector":".rc-purchase-option__badge","isShadow":true}],"widgetParent":[{"selector":"recharge-subscription-widget","isShadow":false}],"subscriptionPlans":[{"selector":"rc-selling-plans","isShadow":true}],"subscriptionInput":[{"selector":"input[name=\"rc_plan\"]","isShadow":true}]}},"plans":[{"productId":"6138144882884","existingPlanId":"5250416","createdPlanId":"23244163","existingShopifyPlanId":"1757380804","createdShopifyPlanId":"4236312772","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":12,"intervalUnit":"week","direction":"decrease"},{"productId":"6138144882884","existingPlanId":"5250414","createdPlanId":"23244165","existingShopifyPlanId":"1757315268","createdShopifyPlanId":"4236378308","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":4,"intervalUnit":"week","direction":"decrease"},{"productId":"6138144882884","existingPlanId":"5250415","createdPlanId":"23244164","existingShopifyPlanId":"1757348036","createdShopifyPlanId":"4236345540","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":8,"
17intervalUnit":"week","direction":"decrease"}]},"id":"01a06470-8518-7eed-87ce-767d62c7d10b","type":"price","themeId":151168581828,"affix":"","isControl":true},{"visitorCount":4215,"trafficPercentage":0.5,"title":"Untitled variant","priceData":{"moneyFormat":"<span class=money>${{amount}}</span>","currency":"USD","currencyCodeEnabled":false,"variants":[["6138144882884",4298,7500,"6138144882884"],["37826777186500",4298,7500,"6138144882884"]]},"subscriptionData":{"widget":{"widgetType":"radio","usesShadowDom":true,"selectors":{"onetimePrice":[{"selector":"rc-purchase-option__price","isShadow":true}],"subscriptionCompareAt":[{"selector":"rc-purchase-option__original-price","isShadow":true}],"subscriptionPrice":[{"selector":"rc-purchase-option__discounted-price","isShadow":true}],"subscriptionDiscount":[{"selector":".rc-plans-button__discount","isShadow":true},{"selector":"rc-benefits","isShadow":true},{"selector":".rc-purchase-option__badge","isShadow":true}],"widgetParent":[{"selector":"recharge-subscription-widget","isShadow":false}],"subscriptionPlans":[{"selector":"rc-selling-plans","isShadow":true}],"subscriptionInput":[{"selector":"input[name=\"rc_plan\"]","isShadow":true}]}},"plans":[{"productId":"6138144882884","existingPlanId":"5250416","createdPlanId":"23244163","existingShopifyPlanId":"1757380804","createdShopifyPlanId":"4236312772","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":12,"intervalUnit":"week","direction":"decrease"},{"productId":"6138144882884","existingPlanId":"5250414","createdPlanId":"23244165","existingShopifyPlanId":"1757315268","createdShopifyPlanId":"4236378308","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":4,"intervalUnit":"week","direction":"decrease"},{"productId":"6138144882884","existingPlanId":"5250415","createdPlanId":"23244164","existingShopifyPlanId":"1757348036","createdShopifyPlanId":"4236345540","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":8,"
17intervalUnit":"week","direction":"decrease"}]},"id":"01a06470-8ceb-7514-88a8-b3c9307b05a1","type":"price","themeId":151168581828,"affix":"","isControl":false}],"targetAudiences":[],"title":"ashwa 42.98"}],[{"id":"019d6f31-e9aa-76c4-8bb4-bdbe1b0a28ed","bayesianRevision":5,"status":"paused","hypotheses":[{"id":"019d6f30-9bd4-71c0-8d4c-dcc23e5d44f9","type":"landing","themeId":151168581828,"affix":"brand_nad","isControl":true,"redirectPath":null},{"id":"019d6f30-a20b-7925-a167-f6b51537b12c","type":"landing","themeId":151168581828,"affix":"sl-5D73A741","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"019e2e99-8016-7b10-979c-f2ce5e80c85d","bayesianRevision":5,"status":"paused","hypotheses":[{"id":"019e2e97-cb6b-791e-9981-544e273b386f","type":"urlRedirect","themeId":151168581828,"affix":"","isControl":true,"redirectPath":"/pages/goli-bundles-zs"},{"id":"019e2e98-251c-7b97-8ddc-7c28f9950c4c","type":"urlRedirect","themeId":151168581828,"affix":"","isControl":false,"redirectPath":"/pages/zero-sugar-v3"}],"ignoreTestViewParameterEnforcement":false}],{"planIds":["4236312772","4236345540","4236378308"],"widget":{"widgetType":"radio","usesShadowDom":true,"selectors":{"subscriptionDiscount":[{"selector":".rc-plans-button__discount","isShadow":true},{"selector":"rc-benefits","isShadow":true},{"selector":".rc-purchase-option__badge","isShadow":true}],"widgetParent":[{"selector":"recharge-subscription-widget","isShadow":false}],"subscriptionPlans":[{"selector":"rc-selling-plans","isShadow":true}],"subscriptionInput":[{"selector":"input[name=\"rc_plan\"]","isShadow":true}]}}},false),await window.shopliftInstance.init())})();async function Qe(a,e,t,i){const s=Be({log:i});if(t)return i("[SUB-PREVIEW] A side — no overlay applied; widget renders naturally"),s;const r=a.widget.widgetType,o=e?j(e):null;let n=W(e),l=J(a,n),c=l.discountMap,d=l.maxDiscount;function u(){const f=W(e);f!==n&&(n=f,l=J(a,n),c=l.discountMap,d=l.maxDiscount,i(`[SUB-PREVIEW] scope refreshed currentProductId=${n??"n/a"}, maxDiscount=${d}`))}i(`[SUB-PREVIEW] side=B, currentProductId=${n??"n/a"}, maxDiscount=${d}`);function h(f){if(!e||!o)return null;const v=Z(o),g=v?o.get(v):void 0;return g?{formattedVariantPrice:G(g.priceInCents,e),formattedDiscounted:G(g.priceInCents*(1-f/100),e)}:null}function p(f){const v=Y(a,f);if(!v)return d;const g=D(a,"subscriptionInput"),P=g.length?g[0].selector:'input[name="rc_plan"]',A=v.querySelector(`${P}:checked`);if(A){const k=c[A.value];if(k!==void 0)return k}return d}function b(f){const v=D(a,"subscriptionDiscount");for(const g of v)if(g.selector.includes("badge")||g.selector.includes("__badge")){const P=f.querySelector(g.selector);P?.textContent&&!P.textContent.includes(`${d}%`)&&$(P,A=>N(A,d))}}function E(f,v){const g=h(v);if(!g)return;const P=D(a,"subscriptionCompareAt");for(const A of P){const k=f.querySelector(A.selector)||f.querySelector(`[part~="${A.selector}"]`);k?.textContent&&!k.textContent.includes(g.formattedVariantPrice)&&$(k,x=>/\d/.test(x)?g.formattedVariantPrice:x)}}function S(f,v){const g=h(v);if(!g)return;const P=D(a,"subscriptionPrice");for(const A of P){const k=f.querySelector(A.selector)||f.querySelector(`[part~="${A.selector}"]`);k?.textContent&&!k.textContent.includes(g.formattedDiscounted)&&$(k,x=>/\d/.test(x)?g.formattedDiscounted:x)}}function C(f){const v=D(a,"subscriptionInput"),g=v.length?v[0].selector:'input[name="rc_plan"]',P=D(a,"subscriptionPlanDiscount"),A=P.length?P[0].selector:".rc-plans-button__discount";for(const k of Array.from(f.querySelectorAll("label"))){const x=k.querySelector(g),R=k.querySelector(A);if(x&&R?.textContent){const V=c[x.value];if(V!==void 0){const O=R.textContent.match(/[\d.]+%/)?.[0];O&&O!==`${V}%`&&$(R,L=>N(L,V))}}}}function _(f){const v=f.querySelector("select");if(v)for(const g of Array.from(v.options)){const P=c[g.value];if(P!==void 0&&g.textContent){const A=g.textContent.match(/[\d.]+%/)?.[0];A&&A!==`${P}%`&&(g.textContent=N(g.textContent,P))}}}function T(f){const v=D(a,"onetimePrice");if(!v.length||!e||!o)return;const g=Z(o),P=g?o.get(g):void 0;if(!P)return;const A=G(P.priceInCents,e),k=D(a,"onetimeContainer"),x=k.length?k[0].selector:'[part~="rc-purchase-option__onetime"]',R=f.querySelector(x);if(R)for(const V of v){const O=R.querySelector(`[part~="${V.selector}"]`);O?.textContent&&!O.textContent.includes(A)&&$(O,L=>/\d/.test(L)?A:L)}}function m(f,v){const P=D(a,"subscriptionDiscount").filter(A=>A.selector.includes("benefit")||A.selector==="rc-benefits");for(const A of P){const k=f.querySelector(A.selector);if(k?.shadowRoot){for(const x of Array.from(k.shadowRoot.querySelectorAll("li")))if(x.textContent?.includes("Save")){const R=x.textContent.match(/[\d.]+%/)?.[0];R&&R!==`${v}%`&&$(x,V=>N(V,v))}}}}let y=!1;function w(){if(!y){y=!0;try{u();const f=B(a);if(!f)return;const v=p(f);b(f),E(f,v),S(f,v),T(f);const g=Y(a,f);g&&(r==="buttons"||r==="radio"?C(g):_(g)),m(f,v)}finally{y=!1}}}const I=pe({data:a,runUpdates:w});return function(){I(),s()}}const Xe=Object.freeze(Object.defineProperty({__proto__:null,subscriptionPreviewRender:Qe},Symbol.toStringTag,{value:"Module"}))})(); })("/", { suffix: "", type: "login" }, "main", 151168581828, false)</script>
17
18<!-- End of Shoplift scripts -->
19
20
21
22
23    
24    
25    
26    
27    
28  
29<!--LOOMI SDK-->
30<!--DO NOT EDIT-->
31<link rel="preconnect"  href="https://live.visually-io.com/" crossorigin data-em-disable>
32<link rel="dns-prefetch" href="https://live.visually-io.com/" data-em-disable>
33<script>
34(()=> {
35    const env = 2;
36    var store = "golinutrition.myshopify.com";
37    var alias = store.replace(".myshopify.com", "").replaceAll("-", "_").toUpperCase();
38    var jitsuKey =  "js.7001735241";
39    window.loomi_ctx = {...(window.loomi_ctx || {}),storeAlias:alias,jitsuKey,env};
40    
41    
42	
43})()
44</script>
44
45<link href="https://live.visually-io.com/widgets/vsly-preact.min.js?k=js.7001735241&e=2&s=GOLINUTRITION" rel="preload" as="script" data-em-disable>
46<script type="text/javascript" src="https://live.visually-io.com/widgets/vsly-preact.min.js?k=js.7001735241&e=2&s=GOLINUTRITION" data-em-disable></script>
46
47<link href="https://live.visually-io.com/cf/GOLINUTRITION.js" rel="preload" as="script" data-em-disable>
48<link href="https://live.visually-io.com/v/visually.js" rel="preload" as="script" data-em-disable>
49<script type="text/javascript" src="https://live.visually-io.com/cf/GOLINUTRITION.js" data-em-disable></script>
vendor: 1 bytes, line 49
49
50<script type="text/javascript" src="https://live.visually-io.com/v/visually.js" data-em-disable></script>
vendor: 1 bytes, line 50
50
51<script defer type="text/javascript" src="https://live.visually-io.com/v/visually-a.js" data-em-disable></script>
51
52<!--LOOMI SDK-->
53
54<script>
55    localStorage.setItem('nb__region_code', "US");
56    localStorage.setItem('nb__currency_code', "USD");
57</script>
57
58
59<script>(function(){var e,n,r,i,t,a;(n=e=e||{}).A="identify",n.B="trackPageView",n.C="fireEmailCaptureEvent",n.D="fireCustomGoal",n.E="firePurchaseEvent",n.F="trackPageViewInitial",n.G="fireSlimPurchaseEvent",n.H="identifyCustomerId",n="//j.northbeam.io/ota-sp/e68ff5ff-714d-4636-a4b3-5bbbb9c9fbd8.js",window.Northbeam||(r=[],i=function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];r.push({fnName:n,args:t})},(t={})[e.F]=function(n){i(e.F,n)},t=t,(a={_q:r})[e.A]=function(n,t){return i(e.A,n,t)},a[e.B]=function(n){return i(e.B,n)},a[e.C]=function(n,t){return i(e.C,n,t)},a[e.D]=function(n,t){return i(e.D,n,t)},a[e.E]=function(n){return i(e.E,n)},a[e.G]=function(n){return i(e.G,n)},a[e.H]=function(n,t){return i(e.H,n,t)},a=a,a=Object.assign(function(n){for(var t=[],e=1;e<arguments.length;e++)t.push(arguments[e]);return i.apply(null,[n].concat(t))},a),window.Northbeam=a,(a=document.createElement("script")).async=!0,a.src=n,document.head.appendChild(a),t.trackPageViewInitial(window.location.href));})()</script>
59
60
61	<meta charset="utf-8">
62	<meta name="viewport" content="width=device-width, initial-scale=1">
63	<meta name="theme-color" content="#D7282F">
64	<link rel="canonical" href="https://goli.com/account/login">
65	
66
67	
67<script src="//goli.com/cdn/shop/t/104/assets/global.js?v=26131930807380250131778542513" type="text/javascript"></script>
67
68	
68<script src="//goli.com/cdn/shop/t/104/assets/js.cookie.min.js?v=90280881545131116191778541927" type="text/javascript"></script>
68
69	
70	
71	
71<script>
72		const country_iso_code = "US";
73	</script>
73
74	
75	
76	
76<script>
77	(async function () {
78		// Get query variables.
79		let discount_code            = get_query_variable('discount_code');
80		let cart                     = get_query_variable('cart');
81		let cart_add                 = get_query_variable('cart_add');
82		let currency                 = get_query_variable('currency');
83		let checkout                 = get_query_variable('checkout');
84		let campaign                 = get_query_variable('campaign');
85		let redirect_to              = get_query_variable('redirect_to');
86		let redirect_to_loading_text = get_query_variable('redirect_to_loading_text');
87
88		try {
89			let final_step_triggered          = false;
90			let done_processing_discount_code = (discount_code) ? false : true;
91			let done_processing_cart          = (cart)          ? false : true;
92			let done_processing_cart_add      = (cart_add)      ? false : true;
93			let done_processing_currency      = (currency)      ? false : true;
94			let done_processing_checkout      = (checkout)      ? false : true;
95			let done_processing_campaign      = (campaign)      ? false : true;
96
97			let trigger_final_step = function () {
98				if (
99					(!final_step_triggered)
100					&& done_processing_discount_code
101					&& done_processing_cart
102					&& done_processing_cart_add
103					&& done_processing_currency
104					&& done_processing_checkout
105					&& done_processing_campaign
106				){
107					final_step_triggered = true;
108					if (redirect_to) {
109						if (decodeURI(redirect_to) === '') {
110							if (Cookies.get('force_native_checkout') || !false || cartContainsSubscription()) {
111								window.location.href = decodeURI(redirect_to);
112							} else {
113								try {
114									// console.log('Running CartHook'); //Debugging
115									window.testGlobalBeforeReact(0);
116								} catch (e) {
117									// console.log('CartHook failed, redirecting to checkout'); //Debugging
118									window.location.href = decodeURI(redirect_to);
119								}
120							}
121						} else {
122							window.location.href = decodeURI(redirect_to);
123						}
124					}
125				}
126			};
127
128			// Enable loading indicator if final step involves a redirect.
129			if (redirect_to) {
130				// This script requires jQuery, so we'll wait until the page is loaded.
131				document.addEventListener('DOMContentLoaded', function(event) {
132					let loading_overlay_options = {
133						maxSize: 50
134					};
135					if (redirect_to_loading_text) {
136						loading_overlay_options.text      = decodeURIComponent(redirect_to_loading_text);
137						loading_overlay_options.textClass = 'mt-3';
138					}
139
140					// Since this isn't a global script, we'll wait until the page is loaded and check to see if it has been included or not.
141					if ($.LoadingOverlay === undefined) {
142						load_script('//goli.com/cdn/shop/t/104/assets/loadingoverlay.min.js?v=83345831542795446801778541957').then(() => {
143							$.LoadingOverlay('show', loading_overlay_options);
144						});
145					} else {
146						$.LoadingOverlay('show', loading_overlay_options);
147					}
148				});
149
150				// Trigger the redirect now if it's the only action being requested.
151				trigger_final_step();
152			}
153
154			// Apply discount.
155			if (discount_code) {
156				let response = await fetch('/discount/'+discount_code).then(data => {
157
158					done_processing_discount_code = true;
159					trigger_final_step();
160				}).catch((error) => {
161					done_processing_discount_code = true;
162					trigger_final_step();
163				});
164			}
165
166			// Process the cart.
167			if (cart) {
168				let response = await fetch('/cart/'+cart).then(data => {
169					done_processing_cart = true;
170					trigger_final_step();
171				}).catch((error) => {
172					console.log(error);
173					done_processing_cart = true;
174					trigger_final_step();
175				});
176			} else if (cart_add) {
177				// Process cart additions.
178				let cart_items     = [];
179				let cart_additions = cart_add.split(',');
180				cart_additions.forEach(element => {
181					let cart_addition = element.split(':');
182					cart_items.push({
183						id: cart_addition[0],
184						quantity: cart_addition[1]
185					});
186				});
187
188				let response = await fetch('/cart/add.js', {
189					method: 'POST',
190					headers: { 'Content-Type': 'application/json' },
191					body: JSON.stringify({ items: cart_items })
192				}).then(data => {
193					done_processing_cart_add = true;
194					trigger_final_step();
195				}).catch((error) => {
196					console.log(error);
197					done_processing_cart_add = true;
198					trigger_final_step();
199				});
200			}
201
202			// Apply the currency.
203			if (currency) {
204				let response = await fetch('?currency='+currency).then(data => {
205					done_processing_currency = true;
206					trigger_final_step();
207				}).catch((error) => {
208					done_processing_currency = true;
209					trigger_final_step();
210				});
211			}
212
213			// Force native checkout.
214			if (checkout) {
215				if (checkout == 'native') {
216					Cookies.set('force_native_checkout', 1, { expires: 1 });
217				}
218				done_processing_checkout = true;
219				trigger_final_step();
220			}
221
222			// Store a campaign identifier.
223			if (campaign) {
224				Cookies.set('campaign', campaign, { expires: 1 });
225				done_processing_campaign = true;
226				trigger_final_step();
227			}
228		} catch (e) {
229			console.log(e);
230		}
231	})()
232</script>
232
233	<!-- /snippets/ls-head.liquid -->
234<!-- /snippets/ls-sdk.liquid -->
235<script type="text/javascript">
236  window.LangShopConfig = {
237    "currentLanguage": "en",
238    "currentCurrency": "usd",
239    "currentCountry": "US",
240    "shopifyLocales":[{"code":"en","rootUrl":"\/"},{"code":"fr","rootUrl":"\/fr"},{"code":"de","rootUrl":"\/de"},{"code":"es","rootUrl":"\/es"}    ]
241,"shopifyCurrencies": ["USD"],
242    "originalLanguage": {"code":"en","title":"English","icon":null,"published":true},
243    "targetLanguages": [{"code":"de","title":"German","icon":null,"published":true},{"code":"es","title":"Spanish","icon":null,"published":true},{"code":"fr","title":"French","icon":null,"published":true},{"code":"ja","title":"Japanese","icon":null,"published":false}],
244    "languagesSwitchers": [],
245    "defaultCurrency": {"code":"usd","title":"US Dollar","icon":null,"rate":1,"formatWithCurrency":"${{amount}} USD","formatWithoutCurrency":"${{amount}}"},
246    "targetCurrencies": [{"code":"aud","title":"Australian Dollar","icon":null,"rate":1.3987,"formatWithCurrency":"${{amount}} AUD","formatWithoutCurrency":"${{amount}}","id":"aud"},{"code":"gbp","title":"Pound Sterling","icon":null,"rate":0.7663,"formatWithCurrency":"£{{amount}} GBP","formatWithoutCurrency":"£{{amount}}","id":"gbp"},{"code":"cad","title":"Canadian Dollar","icon":null,"rate":1.3383,"formatWithCurrency":"${{amount}} CAD","formatWithoutCurrency":"${{amount}}","id":"cad"},{"code":"eur","title":"Euro","icon":null,"rate":0.8245,"formatWithCurrency":"€{{amount}} EUR","formatWithoutCurrency":"€{{amount}}","id":"eur"}],
247    "currenciesSwitchers": [],
248    "languageDetection": "browser",
249    "languagesCountries": [{"code":"en","countries":["as","ai","ag","aw","au","bs","bh","bd","bb","bz","bm","bw","br","io","bn","kh","cm","ca","ky","cx","cc","ck","cy","dk","dm","eg","et","fk","fj","gm","gh","gi","gr","gl","gd","gu","gg","gy","hk","is","in","id","ie","im","il","jm","je","jo","ke","ki","kr","kw","la","lb","ls","lr","ly","my","mv","mt","mh","mu","fm","mc","ms","na","nr","np","an","nz","ng","nu","nf","mp","om","pk","pw","pg","ph","pn","qa","rw","sh","kn","lc","vc","ws","sc","sl","sg","sb","so","za","gs","lk","sd","sr","sz","sy","tz","th","tl","tk","to","tt","tc","tv","ug","ua","ae","gb","us","um","vu","vn","vg","vi","zm","zw","bq","ss","sx"]},{"code":"es","countries":["ar","bo","cl","co","cr","cu","do","ec","sv","gq","gt","hn","mx","ni","pa","py","pe","pr","es","uy","ve"]}],
250    "languagesBrowsers": [{"code":"en","browsers":[]},{"code":"es","browsers":["es"]}],
251    "currencyDetection": "store",
252    "currenciesLanguages": [{"code":"usd","languages":["nl","fil","haw","id","ja","es","to"]},{"code":"aud","languages":["zh","ms"]},{"code":"gbp","languages":["pt","gd","cy"]},{"code":"cad","languages":["en","fr"]}],
253    "currenciesCountries": [{"code":"usd","countries":["as","bq","ec","fm","gu","io","mh","mp","pr","pw","sv","tc","tl","um","us","vg","vi"]},{"code":"aud","countries":["au","cc","cx","hm","ki","nf","nr","tv"]},{"code":"gbp","countries":["gb","gg","gs","im","je"]},{"code":"cad","countries":["ca"]}],
254    "recommendationAlert": {"enabled":false,"type":"banner","styles":{"banner":{"bannerContainer":{"position":"top","spacing":10,"borderTop":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":1,"dimension":"px"}},"borderLeft":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"padding":{"top":{"value":23,"dimension":"px"},"right":{"value":55,"dimension":"px"},"bottom":{"value":23,"dimension":"px"},"left":{"value":55,"dimension":"px"}},"background":"rgba(255, 255, 255, 1)"},"bannerMessage":{"fontSize":{"value":16,"dimension":"px"}},"selectorContainer":{"background":"rgba(244,244,244, 1)","borderRadius":{"topLeft":{"value":2,"dimension":"px"},"topRight":{"value":2,"dimension":"px"},"bottomLeft":{"value":2,"dimension":"px"},"bottomRight":{"value":2,"dimension":"px"}},"borderTop":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderLeft":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}}},"selectorContainerHovered":null,"selectorText":{"padding":{"top":{"value":8,"dimension":"px"},"right":{"value":8,"dimension":"px"},"bottom":{"value":8,"dimension":"px"}
254,"left":{"value":8,"dimension":"px"}},"fontSize":{"value":16,"dimension":"px"},"fontFamily":"Open Sans","color":"rgba(39, 46, 49, 1)"},"selectorTextHovered":null,"changeButton":{"borderTop":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderLeft":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"fontSize":{"value":16,"dimension":"px"},"borderRadius":{"topLeft":{"value":2,"dimension":"px"},"topRight":{"value":2,"dimension":"px"},"bottomLeft":{"value":2,"dimension":"px"},"bottomRight":{"value":2,"dimension":"px"}},"padding":{"top":{"value":8,"dimension":"px"},"right":{"value":8,"dimension":"px"},"bottom":{"value":8,"dimension":"px"},"left":{"value":8,"dimension":"px"}},"background":"rgba(0, 0, 0, 1)","color":"rgba(255, 255, 255, 1)"},"changeButtonHovered":null,"closeButton":{"fontSize":{"value":16,"dimension":"px"},"color":"rgba(0, 0, 0, 1)"},"closeButtonHovered":null},"popup":{"popupContainer":{"maxWidth":{"value":30,"dimension":"rem"},"position":"bottom-left","spacing":10,"offset":{"value":1,"dimension":"em"},"borderTop":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":1,"dimension":"px"}},"borderLeft":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"borderRadius":{"topLeft":{"value":0,"dimension":"px"},"topRight":{"value":0,"dimension":"px"},"bottomLeft":{"value":0,"dimension":"px"},"bottomRight":{"value":0,"dimension":"px"}},"padding":{"top":{"value":15,"dimension":"px"},"right":{"value":20,"dimension":"px"},"bottom":{"value":15,"dimension":"px"},"left":{"value":20,"dimension":"px"}},"background":"rgba(255, 255, 255, 1)"},"popupMessage":{"fontSize":{"value":16,"dimension":"px"}},"selectorContainer":{"background":"rgba(244,244,244, 1)","borderRadius":{"topLeft":{"value":2,"dimension":"px"},"topRight":{"value":2,"dimension":"px"},"bottomLeft":{"value":2,"dimension":"px"},"bottomRight":{"value":2,"dimension":"px"}},"borderTop":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderLeft":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}}},"selectorContainerHovered":null,"selectorText":{"padding":{"top":{"value":8,"dimension":"px"},"right":{"value":8,"dimension":"px"},"bottom":{"value":8,"dimension":"px"},"left":{"value":8,"dimension":"px"}},"fontSize":{"value":16,"dimension":"px"},"fontFamily":"Open Sans","color":"rgba(39, 46, 49, 1)"},"selectorTextHovered":null,"changeButton":{"borderTop":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderLeft":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"fontSize":{"value":16,"dimension":"px"},"borderRadius":{"topLeft":{"value":2,"dimension":"px"},"topRight":{"value":2,"dimension":"px"},"bottomLeft":{"value":2,"dimension":"px"},"bottomRight":{"value":2,"dimension":"px"}},"padding":{"top":{"value":8,"dimension":"px"},"right":{"value":8,"dimension":"px"},"bottom":{"value":8,"dimension":"px"},"left":{"value":8,"dimension":"px"}},"background":"rgba(0, 0, 0, 1)","color":"rgba(255, 255, 255, 1)"},"changeButtonHovered":null,"closeButton":{"fontSize":{"value":16,"dimension":"px"},"color":"rgba(0, 0, 0, 1)"},"closeButtonHovered":null}}},
255    "currencyInQueryParam":true,
256    "allowAutomaticRedirects":false,
257    "storeMoneyFormat": "\u003cspan class=money\u003e${{amount}}\u003c\/span\u003e",
258    "storeMoneyWithCurrencyFormat": "\u003cspan class=money\u003e${{amount}} USD\u003c\/span\u003e",
259    "themeDynamics":[],
260    "dynamicThemeDomObserverInterval": 0,
261    "abilities":[],
262    "isAdmin":false,
263    "isPreview":false,
264    "i18n":{"en": {
265            "recommendation_alert": {
266                "currency_language_suggestion": null,
267                "language_suggestion": null,
268                "currency_suggestion": null,
269                "change": null
270            },
271            "switchers": {
272                "ios_switcher": {
273                    "done": null,
274                    "close": null
275                }
276            },
277            "languages": {"en": null
278,"de": null
279,"es": null
280,"fr": null
281,"ja": null
282
283            },
284            "currencies": {"usd": "US Dollar","aud": "Australian Dollar","gbp": "Pound Sterling","cad": "Canadian Dollar","eur": "Euro"}
285        },"de": {
286            "recommendation_alert": {
287                "currency_language_suggestion": null,
288                "language_suggestion": null,
289                "currency_suggestion": null,
290                "change": null
291            },
292            "switchers": {
293                "ios_switcher": {
294                    "done": null,
295                    "close": null
296                }
297            },
298            "languages": {"de": null
299
300            },
301            "currencies": {"usd": null,"aud": null,"gbp": null,"cad": null,"eur": null}
302        },"es": {
303            "recommendation_alert": {
304                "currency_language_suggestion": null,
305                "language_suggestion": null,
306                "currency_suggestion": null,
307                "change": null
308            },
309            "switchers": {
310                "ios_switcher": {
311                    "done": null,
312                    "close": null
313                }
314            },
315            "languages": {"es": null
316
317            },
318            "currencies": {"usd": null,"aud": null,"gbp": null,"cad": null,"eur": null}
319        },"fr": {
320            "recommendation_alert": {
321                "currency_language_suggestion": null,
322                "language_suggestion": null,
323                "currency_suggestion": null,
324                "change": null
325            },
326            "switchers": {
327                "ios_switcher": {
328                    "done": null,
329                    "close": null
330                }
331            },
332            "languages": {"fr": null
333
334            },
335            "currencies": {"usd": null,"aud": null,"gbp": null,"cad": null,"eur": null}
336        },"ja": {
337            "recommendation_alert": {
338                "currency_language_suggestion": null,
339                "language_suggestion": null,
340                "currency_suggestion": null,
341                "change": null
342            },
343            "switchers": {
344                "ios_switcher": {
345                    "done": null,
346                    "close": null
347                }
348            },
349            "languages": {"ja": null
350
351            },
352            "currencies": {"usd": null,"aud": null,"gbp": null,"cad": null,"eur": null}
353        }}};
354</script>
vendor: 1 bytes, line 354
354
355<script src="//goli.com/cdn/shop/t/104/assets/ls-sdk.js?v=131842147547904981411778541963&proxy_prefix=/apps/langshop" defer></script>
355
356
357	<link rel="apple-touch-icon" sizes="180x180" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/apple-touch-icon.png">
358<link rel="icon" type="image/png" sizes="32x32" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/favicon-32x32.png">
359<link rel="icon" type="image/png" sizes="16x16" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/favicon-16x16.png">
360<link rel="manifest" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/site.webmanifest">
361<link rel="mask-icon" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/safari-pinned-tab.svg" color="#d7272e">
362<link rel="shortcut icon" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/favicon.ico">
363<meta name="msapplication-TileColor" content="#ffffff">
364<meta name="msapplication-config" content="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/browserconfig.xml">
365<meta name="theme-color" content="#ffffff">
366
367	
368	<title>Account
369		
370		
371		
372		
373		 
374			| Goli®</title>
375
376	
377
378	
379
380
381
382
383
384
385
386
387<meta property="og:site_name" content="Goli®">
388<meta property="og:url" content="https://goli.com/account/login">
389<meta property="og:title" content="Account">
390<meta property="og:type" content="website">
391<meta property="og:description" content="Explore Goli® Nutrition's premium wellness gummies — ACV, Ashwagandha, Sleep, Probiotics & more. Backed by 1M+ reviews. Shop risk-free with free shipping.">
392
393
394
395
396
397<meta name="twitter:card" content="summary_large_image">
398<meta name="twitter:title" content="Account">
399<meta name="twitter:description" content="Explore Goli® Nutrition's premium wellness gummies — ACV, Ashwagandha, Sleep, Probiotics & more. Backed by 1M+ reviews. Shop risk-free with free shipping.">
400	
401<script>
402                document.addEventListener("DOMContentLoaded",function(t){(function(){if(typeof MutationObserver==="undefined"){return}var n=function(){var t=document.querySelectorAll("[itemtype]");for(var e=0,n=t.length;e<n;e++){var r=t[e];r.removeAttribute("itemtype");r.removeAttribute("itemscope");r.removeAttribute("itemprop")}var i=document.querySelectorAll('script[type="application/ld+json"]');for(var e=0,n=i.length;e<n;e++){var r=i[e];if(!r.classList.contains("richsnippets")){r.remove()}}};var t=new MutationObserver(function(t,e){n();e.disconnect();return});t.observe(document.getElementsByTagName("body")[0],{childList:true,subtree:true})})()});
403            </script>
403
404        
405
406
407	
407<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
407<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/7001735241/digital_wallets/dialog">
408<meta id="in-context-paypal-metadata" data-shop-id="7001735241" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
409<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" hreflang="x-default" href="https://goli.com/account/login">
410<link rel="alternate" hreflang="en" href="https://goli.com/account/login">
411<link rel="alternate" hreflang="fr" href="https://goli.com/fr/account/login">
412<link rel="alternate" hreflang="de" href="https://goli.com/de/account/login">
413<link rel="alternate" hreflang="es" href="https://goli.com/es/account/login">
414<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=393412"></script>
414
415<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
416<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=393412&shop_id=7001735241" crossorigin="anonymous"></script>
vendor: 1 bytes, line 416
416
417<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":7001735241,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/7001735241","merchantName":"Goli®","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Goli®","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 417
417
418<script id="shopify-features" type="application/json">{"accessToken":"21b7580da67b2f47d433611d72266b60","betas":["rich-media-storefront-analytics"],"domain":"goli.com","predictiveSearch":true,"shopId":7001735241,"locale":"en"}</script>
vendor: 1 bytes, line 418
418
419<script>var Shopify = Shopify || {};
420Shopify.shop = "golinutrition.myshopify.com";
421Shopify.locale = "en";
422Shopify.currency = {"active":"USD","rate":"1.0"};
423Shopify.country = "US";
424Shopify.theme = {"name":"LangShop | Goli Theme 2 [LIVE]","id":151168581828,"schema_name":"LangShop Theme","schema_version":"2.11.8","theme_store_id":null,"role":"main"};
425Shopify.theme.handle = "null";
426Shopify.theme.style = {"id":null,"handle":null};
427Shopify.cdnHost = "goli.com/cdn";
428Shopify.routes = Shopify.routes || {};
429Shopify.routes.root = "/";
430Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
431Shopify.SignInWithShop = Shopify.SignInWithShop || {};
432Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
433Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 433
433
434<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 434
434
435<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 435
435
436<script>
437  window.ShopifyPay = window.ShopifyPay || {};
438  window.ShopifyPay.apiHost = "shop.app\/pay";
439  window.ShopifyPay.redirectState = null;
440</script>
vendor: 1 bytes, line 440
440
441<script>
442  window.Shopify = window.Shopify || {};
443  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
444  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
445  window.Shopify.SignInWithShop.eligible = true;
446</script>
vendor: 1 bytes, line 446
446
447<script id="shop-js-analytics" type="application/json">{"pageType":"customers/login"}</script>
vendor: 1 bytes, line 447
447
448<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-customer-accounts.en.esm.js"></script>
vendor: 1 bytes, line 448
448
449<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"></script>
vendor: 1 bytes, line 449
449
450<script type="module">
451  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-customer-accounts.en.esm.js");
452await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-customer-accounts-sign-up.en.esm.js");
453
454  window.Shopify.SignInWithShop?.initCustomerAccounts?.(true, {"fedCMEnabled":true,"windoidEnabled":true});
455window.Shopify.SignInWithShop?.initCustomerAccountsSignUp?.({"fedCMEnabled":true,"windoidEnabled":true});
456
457</script>
vendor: 1 bytes, line 457
457
458<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 458
458
459<script type="module">
460  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
461
462  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
463
464</script>
vendor: 1 bytes, line 464
464
465<script>
466  window.Shopify = window.Shopify || {};
467  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
468  window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]};
469</script>
vendor: 1 bytes, line 469
469
470<script>(function() {
471  var isLoaded = false;
472  function asyncLoad() {
473    if (isLoaded) return;
474    isLoaded = true;
475    var urls = ["https:\/\/d23dclunsivw3h.cloudfront.net\/redirect-app.js?shop=golinutrition.myshopify.com","https:\/\/static.rechargecdn.com\/assets\/js\/widget.min.js?shop=golinutrition.myshopify.com","https:\/\/cdn.langshop.app\/buckets\/app\/libs\/storefront\/sdk.js?proxy_prefix=\/apps\/langshop\u0026source=sct\u0026shop=golinutrition.myshopify.com","https:\/\/cdn.langshop.app\/buckets\/app\/libs\/storefront\/sdk.js?proxy_prefix=\/apps\/langshop\u0026source=sct\u0026shop=golinutrition.myshopify.com","https:\/\/api.socialsnowball.io\/js\/referral.js?shop=golinutrition.myshopify.com"];
476    for (var i = 0; i < urls.length; i++) {
477      var s = document.createElement('script');
478      s.type = 'text/javascript';
479      s.async = true;
480      s.src = urls[i];
481      var x = document.getElementsByTagName('script')[0];
482      x.parentNode.insertBefore(s, x);
483    }
484  };
485  if(window.attachEvent) {
486    window.attachEvent('onload', asyncLoad);
487  } else {
488    window.addEventListener('load', asyncLoad, false);
489  }
490})();</script>
vendor: 1 bytes, line 490
490
491<script id="__st">var __st={"a":7001735241,"offset":-14400,"reqid":"7e7d0dae-2960-4039-ba9e-1401179423cb-1790954218","pageurl":"goli.com\/account\/login?return_url=%2Faccount","u":"ccc328917256"};</script>
vendor: 1 bytes, line 491
491
492<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 492
492
493<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!1)}();</script>
vendor: 1 bytes, line 493
493
494<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//goli.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 494
494
495<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//goli.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
495<script crossorigin="anonymous" defer="defer" src="//goli.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 495
495
496<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 496
496
497<script>
498  window.Shopify = window.Shopify || {};
499  window.Shopify.MCP = window.Shopify.MCP || {};
500  window.Shopify.MCP.enabled = true;
501  window.Shopify.MCP.shop = "golinutrition.myshopify.com";
502  window.Shopify.MCP.mcpEndpoint = "https:\/\/goli.com\/api\/mcp";
503  window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n  - What is your return policy?\n  - What is your shipping policy?\n  - What is your phone number?\n  - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}];
504</script>
vendor: 1 bytes, line 504
504
505<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/goli.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
506</script>
vendor: 1 bytes, line 506
506
507<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://goli.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
508</script>
vendor: 1 bytes, line 508
508
509<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
510  function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
511</script>
vendor: 1 bytes, line 511
511
512<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
513</script>
513
514<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://goli.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
515<style id="shopify-accelerated-checkout-cart">
516        #shopify-buyer-consent {
517  margin-top: 1em;
518  display: inline-block;
519  width: 100%;
520}
521
522#shopify-buyer-consent.hidden {
523  display: none;
524}
525
526#shopify-subscription-policy-button {
527  background: none;
528  border: none;
529  padding: 0;
530  text-decoration: underline;
531  font-size: inherit;
532  cursor: pointer;
533}
534
535#shopify-subscription-policy-button::before {
536  box-shadow: none;
537}
538
539      </style>
540
541<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
541
542
543	
544	
545	
546	
547		<!-- START Goli Pixel -->
548<script>
549	!function(e,t,a,c,n,o,i){e[c]||((n=e[c]=function(){n.process?n.process.apply(n,arguments):n.queue.push(arguments)}).queue=[],n.t=+new Date,(o=t.createElement(a)).async=1,o.src="https://beacon.goli.com/api/track/golipixel.js?t="+864e5*Math.ceil(new Date/864e5),(i=t.getElementsByTagName(a)[0]).parentNode.insertBefore(o,i))}(window,document,"script","golitrack"),golitrack("init","GOLI"),golitrack("event","pageload");
550
551	function golipixelAddToCart(add_to_cart_data) {
552		golitrack('event', 'addtocart', add_to_cart_data);
553	}
554</script>
554
555<!-- END Goli Pixel -->
556		
557		
558	
559
560	<link href="//goli.com/cdn/shop/t/104/assets/global.scss.css?v=111603181540343972631778542513" rel="stylesheet" type="text/css" media="all" />
561	<link href="//goli.com/cdn/shop/t/104/assets/theme-bootstrap.min.css?v=133925860776674579011778542075" rel="stylesheet" type="text/css" media="all" />
562	<link href="//goli.com/cdn/shop/t/104/assets/bootstrap-menu-multilevel.min.css?v=144276237868081910201778541848" rel="stylesheet" type="text/css" media="all" />
563	<link href="//goli.com/cdn/shop/t/104/assets/animate.min.css?v=7717165436794287701778541831" rel="stylesheet" type="text/css" media="all" />
564	<link href="//goli.com/cdn/shop/t/104/assets/theme-goli.scss.css?v=158909288011504828831778542513" rel="stylesheet" type="text/css" media="all" />
565	<link href="//goli.com/cdn/shop/t/104/assets/swiper-bundle.min.css?v=104561930517569505991778542074" rel="stylesheet" type="text/css" media="all" />
566	
567	
568
569
570  <link href="//goli.com/cdn/shop/t/104/assets/theme.fa1fa254.min.css" rel="stylesheet" type="text/css" media="all" />
571
572
573
574
575  
575<script src="//goli.com/cdn/shop/t/104/assets/theme.7358d6e2.min.js" type="module" crossorigin="anonymous"></script>
575
576  <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/cart.2ac1dc11.min.js" crossorigin="anonymous">
577  <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/bundlerc.a0cbb6c7.min.js" crossorigin="anonymous">
578  <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/index.0fa819ad.min.js" crossorigin="anonymous">
579  <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/module.esm.a991edb9.min.js" crossorigin="anonymous">
580  <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/checkoutWithOptionalProgressiveGifts.c8a7d331.min.js" crossorigin="anonymous">
581  <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/_commonjsHelpers.23102255.min.js" crossorigin="anonymous">
582
583
584<script>
585window.codebase = window.codebase || {};
586window.codebase.iid = 'C81FD92FD386';
587</script>
vendor: 1 bytes, line 587
587
588<script src="https://scripts.conversion.io/conversion.js" async></script>
588
589
590<script>/* >> Heatmap.com :: Snippet << */(function (h,e,a,t,m,ap) { (h._heatmap_paq = []).push([ 'setTrackerUrl', (h.heatUrl = e) + a]); h.hErrorLogs=h.hErrorLogs || []; ap=t.createElement('script');  ap.src=h.heatUrl+'preprocessor.min.js?sid='+m;  ap.defer=true; t.head.appendChild(ap); ['error', 'unhandledrejection'].forEach(function (ty) {     h.addEventListener(ty, function (et) { h.hErrorLogs.push({ type: ty, event: et }); }); });})(window,'https://dashboard.heatmap.com/','heatmap.php',document,5684);</script>
590
591
592	<!-- portable-quiz: Alpine.js runtime loader (lazy-loads Alpine + collapse plugin + iconify-icon only when x-data/x-*/iconify-icon is on the page) -->
593	
593<script src="//goli.com/cdn/shop/t/104/assets/vendor-runtime-loader.js?v=117260327266238815511784323119" defer="defer"></script>
593
594	<!-- portable-quiz: Material Symbols Outlined font, used by quiz nav arrows, announcement/checkpoint icons, and inline-icon block -->
595	<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200&display=block" rel="stylesheet">
596
597	
598
599	
599<script type="text/javascript"
600		src="https://www.bc86mdtrk.com/scripts/main.js"></script>
600
601
602	
602<script type="text/javascript">
603	EF.click({
604		offer_id: EF.urlParameter('oid'),
605		affiliate_id: EF.urlParameter('affid'),
606		source_id: EF.urlParameter('source_id'),
607		sub1: EF.urlParameter('sub1'),
608		sub2: EF.urlParameter('sub2'),
609		sub3: EF.urlParameter('sub3'),
610		sub4: EF.urlParameter('sub4'),
611		sub5: EF.urlParameter('sub5'),
612		sub6: EF.urlParameter('sub6'),
613		sub7: EF.urlParameter('sub7'),
614		sub8: EF.urlParameter('sub8'),
615		sub9: EF.urlParameter('sub9'),
616		sub10: EF.urlParameter('sub10'),
617		uid: EF.urlParameter('uid'),
618		transaction_id: EF.urlParameter('_ef_transaction_id'),
619	});
620	</script>
620
621<!-- BEGIN app block: shopify://apps/intelligems-a-b-testing/blocks/intelligems-script/fa83b64c-0c77-4c0c-b4b2-b94b42f5ef19 -->
621<script>
622  window._template = {
623    directory: "customers",
624    name: "login",
625    suffix: ""
626  };
627  window.__productIdFromTemplate = null;
628  window.__plpCollectionIdFromTemplate = null;
629  window.igProductData = (function() {
630    const data = {};return data;
631  })();
632</script>
632
633
634<script type="module" blocking="render" fetchpriority="high" src="https://cdn.intelligems.io/esm/5582aca649a5/bundle.js" data-em-disable async></script>
634
635
636
637<!-- END app block --><!-- BEGIN app block: shopify://apps/klickly-connector/blocks/klickly-embed/019d9086-f209-7d9a-959a-034ff6648e37 -->
638
639
640  
641<link rel="dns-prefetch" href="//kp-27ma.klck.dev">
642  <link rel="preconnect" href="//kp-27ma.klck.dev" fetchpriority="high">
643  <link rel="preload" href="https://kp-27ma.klck.dev/boa.js?v=19&version=v2&platform=shopify&domain_id=3291&account_id=1548&b_type_cart=050599e0d6a06508&b_type_visit=a10e8c2fcd3cbd7d&b_type_checkout=4ecb1dc4d0d4ac22&shop=golinutrition.myshopify.com" as="script" fetchpriority="high">
644  
644<script src="https://kp-27ma.klck.dev/boa.js?v=19&version=v2&platform=shopify&domain_id=3291&account_id=1548&b_type_cart=050599e0d6a06508&b_type_visit=a10e8c2fcd3cbd7d&b_type_checkout=4ecb1dc4d0d4ac22&shop=golinutrition.myshopify.com" async fetchpriority="high"></script>
644
645
646
647
648<!-- END app block --><!-- BEGIN app block: shopify://apps/triplewhale/blocks/triple_pixel_snippet/483d496b-3f1a-4609-aea7-8eee3b6b7a2a --><link rel='preconnect dns-prefetch' href='https://api.config-security.com/' crossorigin />
649<link rel='preconnect dns-prefetch' href='https://conf.config-security.com/' crossorigin />
650<script>
651/* >> TriplePixel :: start*/
652window.TriplePixelData={TripleName:"golinutrition.myshopify.com",ver:"2.16",plat:"SHOPIFY",isHeadless:false,src:'SHOPIFY_EXT',product:{id:"",name:``,price:"",variant:"",av:{  }},search:"",collection:"",cart:"",template:"login",curr:"USD" || "USD", market:"20034289860"},function(W,H,A,L,E,_,B,N){function O(U,T,P,H,R){void 0===R&&(R=!1),H=new XMLHttpRequest,P?(H.open("POST",U,!0),H.setRequestHeader("Content-Type","text/plain")):H.open("GET",U,!0),H.send(JSON.stringify(P||{})),H.onreadystatechange=function(){4===H.readyState&&200===H.status?(R=H.responseText,U.includes("/first")?eval(R):P||(N[B]=R)):(299<H.status||H.status<200)&&T&&!R&&(R=!0,O(U,T-1,P))}}if(N=window,!N[H+"sn"]){N[H+"sn"]=1,L=function(){return Date.now().toString(36)+"_"+Math.random().toString(36)};try{A.setItem(H,1+(0|A.getItem(H)||0)),(E=JSON.parse(A.getItem(H+"U")||"[]")).push({u:location.href,r:document.referrer,t:Date.now(),id:L()}),A.setItem(H+"U",JSON.stringify(E))}catch(e){}var i,m,p;A.getItem('"!nC`')||(_=A,A=N,A[H]||(E=A[H]=function(t,e,i){return void 0===i&&(i=[]),"State"==t?E.s:(W=L(),(E._q=E._q||[]).push([W,t,e].concat(i)),W)},E.s="Installed",E._q=[],E.ch=W,B="configSecurityConfModel",N[B]=1,O("https://conf.config-security.com/model",5),i=L(),m=A[atob("c2NyZWVu")],_.setItem("di_pmt_wt",i),p={id:i,action:"profile",avatar:_.getItem("auth-security_rand_salt_"),time:m[atob("d2lkdGg=")]+":"+m[atob("aGVpZ2h0")],host:A.TriplePixelData.TripleName,plat:A.TriplePixelData.plat,url:window.location.href.slice(0,500),ref:document.referrer,ver:A.TriplePixelData.ver},O("https://api.config-security.com/event",5,p),O("https://api.config-security.com/first?host=".concat(p.host,"&plat=").concat(p.plat),5)))}}("","TriplePixel",localStorage);
653/* << TriplePixel :: end*/
654</script>
654
655
656
657
658<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 -->
659
660
661
662
663
664
665
666
667
668
669
670
671  
671<script async src="https://static.klaviyo.com/onsite/js/L8puEx/klaviyo.js?company_id=L8puEx"></script>
671
672  
672<script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script>
672
673
674  
675
676
677
678
679  
679<script>
680    window.klaviyoReviewsProductDesignMode = false
681  </script>
681
682
683
684
685
686
687
688
689
690
691<!-- END app block --><meta property="og:image" content="https://cdn.shopify.com/s/files/1/0070/0173/5241/files/goli_logo.png?height=628&pad_color=fff&v=1613528510&width=1200" />
692<meta property="og:image:secure_url" content="https://cdn.shopify.com/s/files/1/0070/0173/5241/files/goli_logo.png?height=628&pad_color=fff&v=1613528510&width=1200" />
693<meta property="og:image:width" content="1200" />
694<meta property="og:image:height" content="628" />
695<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
696<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 7001735241,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "customers/login"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 696
696
697<script>
698  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
699</script>
vendor: 1 bytes, line 699
699
700<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
700).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 7001735241,storefrontBaseUrl: "https://goli.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://goli.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"2127855812","configuration":"{\"organizationId\":\"46eeecb4-02b5-419f-be3b-1a1398cc3353\",\"entitySlug\":\"goli\",\"ingestUrl\":\"https:\\\/\\\/edge.outersignal.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"6b8c96186f8e2559266228fdf4f2c61a","type":"APP","apiClientId":171538350081,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2056388804","configuration":"{\"redditPixelId\":\"t2_499fveef\",\"dataSharingType\":\"standard\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"27a6dc1e95874487d57379b5c016869f","type":"APP","apiClientId":304258285569,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2052587716","configuration":"{\"vibePixelId\":\"iCNE9E\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"72859894ec8aa8d5e0246c40aaed9466","type":"APP","apiClientId":132266098689,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]}
700,"dataSharingState":"unrestricted"},{"id":"1940652228","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"ef9b37cee6fb2f93ffcc681cf1cfdc4e","type":"APP","apiClientId":3624803,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1887797444","configuration":"{\"shop\":\"golinutrition.myshopify.com\", \"shopliftUrl\":\"https:\/\/events.shoplift.ai\/api\/events\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"dabcda9558be25394b12ce3ce899568b","type":"APP","apiClientId":7521861633,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1864302788","configuration":"{\"eventKey\":\"520a4ff1-3234-4e5c-880d-e529b916ac42\",\"name\":\"golinutrition - Axon Pixel\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4a5dfd2e28427774549854cee30cb444","type":"APP","apiClientId":256560922625,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1860763844","configuration":"{\"shopDomain\":\"golinutrition.myshopify.com\",\"accountId\":\"1548\",\"basisPixelVisit\":\"a10e8c2fcd3cbd7d\",\"basisPixelCart\":\"050599e0d6a06508\",\"basisPixelCheckout\":\"4ecb1dc4d0d4ac22\",\"analyticsApiURL\":\"https:\\\/\\\/kp-9dfa-api.klickly.com\\\/wp\",\"checkoutApiURL\":\"https:\\\/\\\/kp-9dfa-api.klickly.com\\\/cs\",\"cartApiURL\":\"https:\\\/\\\/kp-9dfa-api.klickly.com\\\/cc\",\"ardDataApiURL\":\"https:\\\/\\\/kp-9dfa-api.klickly.com\\\/ard\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"efdf7a548489ec4e8275e6f4b26ccd39","type":"APP","apiClientId":1821457,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1838416068","configuration":"{\"accountID\":\"1220658\",\"workspaceId\":\"9a26d396-7c71-4830-95f6-acad668c5b6b\",\"projectId\":\"09253904-ef71-4e46-a512-c367c8b3ca47\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d98eb033f1e81320021a411362de3a55","type":"APP","apiClientId":5461967,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1827897540","configuration":"{\"shopId\":\"golinutrition.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"31536d5a2ef62c1887054e49fd58dba0","type":"APP","apiClientId":4845829,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1659928772","configuration":"{\"tagID\":\"2613506863547\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7ae565e198624b39e0856d352b9a6b4c","type":"APP","apiClientId":3009811,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"}
700,{"id":"1656455364","configuration":"{\"accountID\":\"golinutrition.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"74f89c26283dd9bc8e535e14315f3aed","type":"APP","apiClientId":198303350785,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1514012868","configuration":"{\"dummy\":\"dummyValue\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"95e4efbd1b218c0fdb84a6d11c9ba2c2","type":"APP","apiClientId":3328713,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1448640708","configuration":"{\"accountID\":\"L8puEx\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"1158742212","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"GT-PBCVHNS\\\",\\\"GT-5TC3Q8ZH\\\",\\\"G-19DBNJGMLG\\\",\\\"GT-TQS73SN\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/OzJCCI6H4PUaELHb8Pgp\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/KN0fCIKH4PUaELHb8Pgp\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/80EwCIuH4PUaELHb8Pgp\\\",\\\"MC-RR6G4GX5ZC\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/RuYkCIrMy_UaELHb8Pgp\\\",\\\"MC-RR6G4GX5ZC\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/_U7hCIiH4PUaELHb8Pgp\\\",\\\"MC-RR6G4GX5ZC\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/sXaXCJGH4PUaELHb8Pgp\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/hIg3CIWH4PUaELHb8Pgp\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"894533828","configuration":"{\"pixelId\":\"d04c7846-6ef1-4ab7-8342-f0b988891e06\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c119f01612c13b62ab52809eb08154bb","type":"APP","apiClientId":2556259,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
700,"dataSharingState":"unrestricted"},{"id":"870908100","configuration":"{\"shopId\":\"golinutrition.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7093dff47f098f6de2afb75b62011ebe","type":"APP","apiClientId":2753413,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"630980804","configuration":"{\"pixelCode\":\"CPQSCNBC77UEMTOR868G\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"239894724","configuration":"{\"pixel_id\":\"274758730140253\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"43548868","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Axon Shopify Pixel"},{"id":"129106116","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"ACC"},{"id":"139624644","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Frontrow"},{"id":"147718340","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"rokt"},{"id":"156303556","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"heapmap"},{"id":"160792772","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Northbean"},{"id":"162758852","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"3","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"openai"},{"id":"162922692","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"2","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"cpg affiliate"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Goli®","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"golinutrition.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/goli.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://goli.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"151168581828","themePublished":"true","eventMetadataId":"a5c78cf2-f21d-43c9-8d53-d474b69de8df","shopId":"7001735241","storefrontBaseUrl":"https:\/\/goli.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
700<script>
701  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
702  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
703  window.ShopifyAnalytics.meta.currency = 'USD';
704  var meta = {"page":{"requestId":"7e7d0dae-2960-4039-ba9e-1401179423cb-1790954218"}};
705  for (var attr in meta) {
706    window.ShopifyAnalytics.meta[attr] = meta[attr];
707  }
708</script>
vendor: 1 bytes, line 708
708
709<script class="analytics">
710  (function () {
711    var customDocumentWrite = function(content) {
712      var jquery = null;
713
714      if (window.jQuery) {
715        jquery = window.jQuery;
716      } else if (window.Checkout && window.Checkout.$) {
717        jquery = window.Checkout.$;
718      }
719
720      if (jquery) {
721        jquery('body').append(content);
722      }
723    };
724
725    var hasLoggedConversion = function(token) {
726      if (token) {
727        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
728      }
729      return false;
730    }
731
732    var setCookieIfConversion = function(token) {
733      if (token) {
734        var twoMonthsFromNow = new Date(Date.now());
735        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
736
737        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
738      }
739    }
740
741    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
742    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
743    if (trekkie.integrations) {
744      return;
745    }
746    trekkie.methods = [
747      'identify',
748      'page',
749      'ready',
750      'track',
751      'trackForm',
752      'trackLink'
753    ];
754    trekkie.factory = function(method) {
755      return function() {
756        var args = Array.prototype.slice.call(arguments);
757        args.unshift(method);
758        trekkie.push(args);
759        if (method == 'track' || method == 'page') {
760          var pageUrl;
761          try {
762            pageUrl = window.location.href;
763          } catch (e) {}
764          var pageReferrer;
765          try {
766            pageReferrer = document.referrer;
767          } catch (e) {}
768          try {
769            if (window.__TREKKIE_SHIM_QUEUE == null) {
770              window.__TREKKIE_SHIM_QUEUE = [];
771            }
772            window.__TREKKIE_SHIM_QUEUE.push({
773              from: 'trekkie-stub',
774              method: method,
775              args: args.slice(1),
776              pageContext: {
777                url: pageUrl,
778                referrer: pageReferrer
779              }
780            });
781          } catch (e) {
782            // no-op
783          }
784        }
785        return trekkie;
786      };
787    };
788    for (var i = 0; i < trekkie.methods.length; i++) {
789      var key = trekkie.methods[i];
790      trekkie[key] = trekkie.factory(key);
791    }
792    trekkie.load = function(config) {
793      trekkie.config = config || {};
794      trekkie.config.initialDocumentCookie = document.cookie;
795      var first = document.getElementsByTagName('script')[0];
796var script = document.createElement('script');
797script.type = 'text/javascript';
798script.onerror = function(e) {
799  var scriptFallback = document.createElement('script');
800  scriptFallback.type = 'text/javascript';
801  scriptFallback.onerror = function(error) {
802          var Monorail = {
803      produce: function produce(monorailDomain, schemaId, payload) {
804        var currentMs = new Date().getTime();
805        var event = {
806          schema_id: schemaId,
807          payload: payload,
808          metadata: {
809            event_created_at_ms: currentMs,
810            event_sent_at_ms: currentMs
811          }
812        };
813        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
814      },
815      sendRequest: function sendRequest(endpointUrl, payload) {
816        // Try the sendBeacon API
817        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
818          var blobData = new window.Blob([payload], {
819            type: 'text/plain'
820          });
821
822          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
823            return true;
824          } // sendBeacon was not successful
825
826        } // XHR beacon
827
828        var xhr = new XMLHttpRequest();
829
830        try {
831          xhr.open('POST', endpointUrl);
832          xhr.setRequestHeader('Content-Type', 'text/plain');
833          xhr.send(payload);
834        } catch (e) {
835          console.log(e);
836        }
837
838        return false;
839      },
840      isIos12: function isIos12() {
841        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
842      }
843    };
844    Monorail.produce('monorail-edge.shopifysvc.com',
845      'trekkie_storefront_load_errors/1.1',
846      {shop_id: 7001735241,
847      theme_id: 151168581828,
848      app_name: "storefront",
849      context_url: window.location.href,
850      source_url: "//goli.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
851
852  };
853  scriptFallback.async = true;
854  scriptFallback.src = '//goli.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
855  first.parentNode.insertBefore(scriptFallback, first);
856};
857script.async = true;
858script.src = '//goli.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
859first.parentNode.insertBefore(script, first);
860
861    };
862    trekkie.load(
863      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":7001735241,"isMerchantRequest":null,"themeId":151168581828,"themeCityHash":"18036900454312155594","contentLanguage":"en","currency":"USD","eventMetadataId":"a5c78cf2-f21d-43c9-8d53-d474b69de8df"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
864    );
865
866    var loaded = false;
867    trekkie.ready(function() {
868      if (loaded) return;
869      loaded = true;
870
871      window.ShopifyAnalytics.lib = window.trekkie;
872
873      var originalDocumentWrite = document.write;
874      document.write = customDocumentWrite;
875      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
876      document.write = originalDocumentWrite;
877
878      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
879      var token = match? match[1]: undefined;
880      if (!hasLoggedConversion(token)) {
881        setCookieIfConversion(token);
882        
883      }
884    });
885
886    window.ShopifyAnalytics.lib.page(null,{"requestId":"7e7d0dae-2960-4039-ba9e-1401179423cb-1790954218","shopifyEmitted":true});
887
888    var eventsListenerScript = document.createElement('script');
889    eventsListenerScript.async = true;
890    eventsListenerScript.src = "//goli.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
891    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
892})();</script>
892
893  
893<script>
894  if (!window.ga || (window.ga && typeof window.ga !== 'function')) {
895    window.ga = function ga() {
896      (window.ga.q = window.ga.q || []).push(arguments);
897      if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
898        window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"});
899      }
900      console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information.");
901    };
902    if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
903      window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"});
904    }
905  }
906</script>
vendor: 1 bytes, line 906
906
907<script
908  defer
909  src="https://goli.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
910  data-application="storefront-renderer"
911  data-shop-id="7001735241"
912  data-render-region="gcp-us-central1"
913  data-page-type="customers/login"
914  data-theme-instance-id="151168581828"
915  data-theme-name="LangShop Theme"
916  data-theme-version="2.11.8"
917  data-monorail-region="shop_domain"
918  data-resource-timing-sampling-rate="10"
919  data-shs="true"
920  data-shs-beacon="true"
921  data-shs-export-with-fetch="true"
922  data-shs-logs-sample-rate="1"
923  data-shs-beacon-endpoint="https://goli.com/api/collect"
924></script>
924
925<meta name="shopify-y" content="c4692a9f-3b99-48f6-bcf3-7d5c2f82f4f3" data-expiration="1822511818000"><meta name="shopify-s" content="d441e5e0-5067-4fa6-9525-f22b8702e5f3" data-expiration="1790956018000"><meta name="new-cookie-storage-activated" content="t">
926</head>
927<body class="" data-shopify-template-handle="customers-login">
928
929	
930	
930<script src="//goli.com/cdn/shop/t/104/assets/theme-bootstrap.min.js?v=39564474806961312471778542075" type="text/javascript"></script>
930
931	
931<script src="//goli.com/cdn/shop/t/104/assets/bootstrap-menu-multilevel.min.js?v=99974821671961022501778541848" type="text/javascript"></script>
931
932	
932<script src="//goli.com/cdn/shop/t/104/assets/jquery.min.js?v=172596495919052813691778541926" type="text/javascript"></script>
932
933	
933<script src="//goli.com/cdn/shop/t/104/assets/dayjs.min.js?v=160933994874996829211778541891" type="text/javascript"></script>
933
934  
934<script src="//goli.com/cdn/shop/t/104/assets/loadingoverlay.min.js?v=83345831542795446801778541957" type="text/javascript"></script>
934
935  
935<script>
936		function cleanHtmlEntities(data) {
937			return data.map(item => {
938				const cleanedItem = {};
939				for (const key in item) {
940					if (typeof item[key] === 'string') {
941						cleanedItem[key] = item[key]
942							.replace(/&amp;/g, '&')
943							.replace(/&lt;br&gt;/g, '<br>')
944							.replace(/&lt;sup&gt;/g, '<sup>')
945							.replace(/&lt;\/sup&gt;/g, '</sup>');
946					} else {
947						cleanedItem[key] = item[key];
948					}
949				}
950				return cleanedItem;
951			});
952		}
953	</script>
953
954
955  
956
957	
957<script src="//goli.com/cdn/shop/t/104/assets/cart.min.js?v=156585583159371723031778541857" type="text/javascript"></script>
vendor: 1 bytes, line 957
957
958<script>
959	Cookies.set('tokenizer_product_variant_id', );
960	Cookies.set('tokenizer_product_variant_selling_plan_id', );
961
962	var cartProductKeyMap                  = {};
963	var cartProductVariantMap              = { one_time: {}, recurring: {} };
964	var cartProductVariantTotalQuantityMap = { one_time: {}, recurring: {} };
965
966	function cartProductTypeHandle(is_recurring) {
967		return (is_recurring) ? 'recurring' : 'one_time';
968	}
969
970	function cartProcessCartProductMap() {
971		cartProductKeyMap                  = {};
972		cartProductVariantMap              = { one_time: {}, recurring: {} };
973		cartProductVariantTotalQuantityMap = { one_time: {}, recurring: {} };
974		CartJS.cart.items.forEach(function(item, i) {
975			let product_type = cartProductTypeHandle(item.hasOwnProperty('selling_plan_allocation'));
976			if (!cartProductVariantTotalQuantityMap[product_type].hasOwnProperty('item.variant_id')) {
977				cartProductVariantTotalQuantityMap[product_type][item.variant_id] = 0;
978			}
979			cartProductKeyMap[item.key]                                        = i;
980			cartProductVariantMap[product_type][item.variant_id]               = i;
981			cartProductVariantTotalQuantityMap[product_type][item.variant_id] += parseInt(item['quantity']);
982		});
983	}
984
985	function cartGetItemIndexByKey(product_key) {
986		return cartProductKeyMap[product_key];
987	}
988
989	function cartGetItemByKey(product_key) {
990		return CartJS.cart.items[cartGetItemIndexByKey(product_key)];
991	}
992
993	function cartGetItemLineNumberByKey(product_key) {
994		return cartGetItemIndexByKey(product_key)+1;
995	}
996
997	function cartGetItemByVariantId(product_variant_id, is_recurring=false) {
998		let cart_index = cartProductVariantMap[cartProductTypeHandle(is_recurring)][product_variant_id];
999		return CartJS.cart.items[cart_index];
1000	}
1001
1002	function cartContainsSubscription() {
1003		return Object.keys(cartProductVariantTotalQuantityMap[cartProductTypeHandle(true)]).length > 0;
1004	}
1005
1006	function cartItemToOneTime(product_key) {
1007		return new Promise((resolve, reject) => {
1008			try {
1009				let item = cartGetItemByKey(product_key);
1010
1011				if (item.hasOwnProperty('selling_plan_allocation')) {
1012					let line_item_id       = cartGetItemLineNumberByKey(product_key);
1013					let product_properties = item.properties;
1014
1015					product_properties['selling_plan'] = '';
1016					CartJS.updateItem(line_item_id, item.quantity, product_properties, {
1017						'success': function(data, textStatus, jqXHR) {
1018							resolve();
1019						},
1020						'error': function(jqXHR, textStatus, errorThrown) {
1021							reject('Failed to convert to one-time purchase, please try again later or contact our support team.');
1022						}
1023					});
1024				} else {
1025					resolve();
1026				}
1027			} catch (e) {
1028				reject('Failed to convert to one-time purchase, please contact our support team.');
1029			}
1030		});
1031	}
1032
1033	function cartItemToSubscription(product_key) {
1034		return new Promise((resolve, reject) => {
1035			try {
1036				let item = cartGetItemByKey(product_key);
1037
1038				if (item.hasOwnProperty('selling_plan_allocation')) {
1039					resolve();
1040				} else {
1041					let line_item_id       = cartGetItemLineNumberByKey(product_key);
1042					let product_properties = item.properties;
1043
1044					jQuery.getJSON(window.Shopify.routes.root+'products/'+item.handle+'.js', function(product) {
1045						let product_variant_index = product.variants.findIndex(variant => variant.id === item.variant_id);
1046						let product_variant       = (product_variant_index >= 0) ? product.variants[product_variant_index] : null;
1047						if (product_variant && product_variant.hasOwnProperty('selling_plan_allocations') && product_variant.selling_plan_allocations.length > 0) {
1048							product_properties['selling_plan'] = product_variant.selling_plan_allocations[0].selling_plan_id;
1049							CartJS.updateItem(line_item_id, item.quantity, product_properties, {
1050								'success': function(data, textStatus, jqXHR) {
1051									resolve();
1052								},
1053								'error': function(jqXHR, textStatus, errorThrown) {
1054									reject('Failed to convert to subscription, please try again later or contact our support team.');
1055								}
1056							});
1057						} else {
1058							reject('Product not available as a subscription.');
1059						}
1060					});
1061				}
1062			} catch (e) {
1063				reject('Failed to convert to subscription, please contact our support team.');
1064			}
1065		});
1066	}
1067
1068	function cartToSubscription(callback, index=0) {
1069		let product_keys = Object.keys(cartProductKeyMap);
1070		if (typeof product_keys[index+1] === 'undefined') {
1071			// Final product in the array.
1072			cartItemToSubscription(product_keys[index]).then(() => {
1073				if (typeof callback === 'function') { callback(); }
1074			}).catch((error) => {
1075				console.log(error);
1076				if (typeof callback === 'function') { callback(); }
1077			});
1078		} else {
1079			cartItemToSubscription(product_keys[index]).then(() => {
1080				cartToSubscription(callback, index+1);
1081			}).catch((error) => {
1082				console.log(error);
1083				cartToSubscription(callback, index+1);
1084			});
1085		}
1086	}
1087
1088
1089	jQuery(function() {
1090		CartJS.init({"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}, {
1091			'debug': false
1092		});
1093	});
1094
1095	$(document).on('cart.ready cart.requestComplete', function(event, cart) {
1096		cartProcessCartProductMap();
1097		if (typeof cartUpdateEvents == 'function') {
1098			cartUpdateEvents(cart);
1099		}
1100	});
1101</script>
1101
1102	
1102<script>
1103	if (!Cookies.get('cart_attribute_landing_domain')) { Cookies.set('cart_attribute_landing_domain', 'goli.com', { expires: 1 }); }
1104	if (!Cookies.get('cart_attribute_landing_page'))   { Cookies.set('cart_attribute_landing_page', '/account/login', { expires: 1 });   }
1105	if (!Cookies.get('cart_attribute_user_agent'))     { Cookies.set('cart_attribute_user_agent', navigator.userAgent, { expires: 1 });      }
1106
1107	$(document).on('cart.ready', function(event, cart) {
1108		let cart_new_attributes      = {};
1109		let cart_existing_attributes = CartJS.getAttributes();
1110
1111		if (!('cart_landing_domain' in cart_existing_attributes) && Cookies.get('cart_attribute_landing_domain')) { cart_new_attributes['cart_landing_domain'] = Cookies.get('cart_attribute_landing_domain'); }
1112		if (!('cart_landing_page' in cart_existing_attributes)   && Cookies.get('cart_attribute_landing_page'))   { cart_new_attributes['cart_landing_page'] = Cookies.get('cart_attribute_landing_page');     }
1113		if (!('cart_user_agent' in cart_existing_attributes)     && Cookies.get('cart_attribute_user_agent'))     { cart_new_attributes['cart_user_agent'] = Cookies.get('cart_attribute_user_agent');         }
1114		if (!('cart_landing_fbp' in cart_existing_attributes)    && Cookies.get('_fbp'))                          { cart_new_attributes['cart_landing_fbp'] = Cookies.get('_fbp');                             }
1115
1116		if (!(Object.keys(cart_new_attributes).length === 0)) {
1117			CartJS.setAttributes(cart_new_attributes);
1118		}
1119	});
1120</script>
1120
1121	
1121<script>
1122	class AddToCartItem {
1123		constructor(variant_id, quantity, sku, amount, currency) {
1124			this.variant_id = (variant_id === undefined || variant_id === null) ? 0 : variant_id;
1125			this.quantity   = (quantity === undefined || quantity === null) ? 1 : quantity;
1126			this.sku        = (sku === undefined || sku === null) ? 'UNKNOWN' : sku;
1127			this.amount     = (amount === undefined || amount === null) ? 0 : amount;
1128			this.currency   = (currency === undefined || currency === null) ? 'USD' : currency;
1129		}
1130	}
1131
1132	class AddToCartData {
1133		constructor(add_to_cart_item_array) {
1134			this.items = (add_to_cart_item_array === undefined || add_to_cart_item_array === null || typeof add_to_cart_item_array !== 'object') ? [] : (Array.isArray(add_to_cart_item_array)) ? add_to_cart_item_array : [ add_to_cart_item_array ];
1135		}
1136		addItem(item_details_array) {
1137			this.items.push(new AddToCartItem(
1138				item_details_array['variant_id'],
1139				item_details_array['quantity'],
1140				item_details_array['sku'],
1141				item_details_array['amount'],
1142				item_details_array['currency']
1143			));
1144		}
1145		getItems() {
1146			return this.items;
1147		}
1148		getCartAmount() {
1149			let cart_amount = 0;
1150			this.getItems().forEach(function(cart_item) {
1151				cart_amount += cart_item.amount;
1152			});
1153			return cart_amount;
1154		}
1155		getCartQuantity() {
1156			let cart_quantity = 0;
1157			this.getItems().forEach(function(cart_item) {
1158				cart_quantity += cart_item.quantity;
1159			});
1160			return cart_quantity;
1161		}
1162	}
1163
1164	function pixelsAddToCart(add_to_cart_data) {
1165		try {
1166			if (typeof golipixelAddToCart == 'function') { golipixelAddToCart(add_to_cart_data); } 
1167			if (typeof pinterestAddToCart == 'function') { pinterestAddToCart(add_to_cart_data); }
1168			if (typeof klaviyoAddToCart == 'function')   { klaviyoAddToCart(); }
1169			if (typeof gtmAddCart == 'function')    { gtmAddCart(add_to_cart_data); }
1170		} catch (e) {
1171			console.log(e);
1172		}
1173	}
1174</script>
1174
1175	
1176		
1176<script src="//goli.com/cdn/shopifycloud/storefront/assets/themes_support/shopify_common-5f594365.js" type="text/javascript"></script>
1176
1177	
1178	
1178<script src="//goli.com/cdn/shop/t/104/assets/theme-goli.js?v=98552450417804743751782499671" type="text/javascript"></script>
1178
1179	
1179<script src="//goli.com/cdn/shop/t/104/assets/swiper-bundle.min.js?v=181550739200531974951778542074" type="text/javascript"></script>
1179
1180
1181
1182	
1183		
1184		<div id="shopify-section-header-v3" class="shopify-section">
1185
1186
1187
1188
1189<script>
1190	const menu =[
1191	
1192		{ 
1193			link: "/",
1194			title: "Products",
1195			collapsed: true,
1196			inner_links: [
1197				
1198					{ link: "/pages/goli-acv", title: "Apple Cider Vinegar Gummies" }, 
1199				
1200					{ link: "/pages/goli-ashwagandha", title: "Ashwagandha Gummies" }, 
1201				
1202					{ link: "/pages/goli-superfruits", title: "Superfruits Beauty Gummies" }, 
1203				
1204					{ link: "/pages/goli-supergreens", title: "Supergreens Gummies" }, 
1205				
1206					{ link: "/pages/goli-immune", title: "Triple Action Immune Gummies" }, 
1207				
1208					{ link: "/pages/goli-sleep", title: "Dreamy Sleep Gummies" }, 
1209				
1210					{ link: "/pages/goli-womens-multi", title: "Women's Complete Multi Gummies" }, 
1211				
1212					{ link: "/pages/goli-extra-strength-sleep", title: "Extra-Strength Sleep Gummies" }, 
1213				
1214					{ link: "/pages/probioticplus", title: "Probiotic+ Gummies" }, 
1215				
1216					{ link: "/pages/goli-beets-cardio", title: "Beets Cardio Gummies" }, 
1217				
1218					{ link: "/pages/matcha-mind", title: "Matcha Mind Gummies" }, 
1219				
1220					{ link: "/pages/zs-acv", title: "Zero Sugar ACV Gummies" }, 
1221				
1222					{ link: "/pages/renew-nad", title: "Renew NAD+" }, 
1223				
1224					{ link: "/pages/energy", title: "Recharge+ Energy" }, 
1225				
1226			]
1227		},
1228	
1229		{ 
1230			link: "/pages/order",
1231			title: "Shop",
1232			collapsed: true,
1233			inner_links: [
1234				
1235			]
1236		},
1237	
1238		{ 
1239			link: "/pages/about-us",
1240			title: "About Us",
1241			collapsed: true,
1242			inner_links: [
1243				
1244					{ link: "/pages/about-us", title: "Our Story" }, 
1245				
1246					{ link: "/pages/goli-for-good", title: "Goli® for Good" }, 
1247				
1248					{ link: "/pages/inside-the-gummy", title: "Inside the Gummy" }, 
1249				
1250					{ link: "/pages/science-advisory-board", title: "Scientific Advisory Board" }, 
1251				
1252			]
1253		},
1254	
1255		{ 
1256			link: "/pages/faq",
1257			title: "FAQ",
1258			collapsed: true,
1259			inner_links: [
1260				
1261			]
1262		},
1263	
1264	]
1265	const mobileMenu =  [
1266		
1267			
1268				{
1269					link: "/pages/zero-sugar-ashwagandha",
1270					product_type: "zs_ashwa",
1271					is_new: "true",
1272					menu_item_new_banner_text: " ",
1273					menu_item_link_text: " ",
1274					name: "ZERO SUGAR Ashwa Gummies",
1275					image: "//goli.com/cdn/shop/files/zs-ashwa-mobiel-cion_200x200.jpg?v=1790700812",
1276					color1: "#37bfdb",
1277					color2: "#00a9e0",
1278					text_color: "#ffffff",
1279				},					
1280			
1281		
1282			
1283				{
1284					link: "/pages/zs-acv",
1285					product_type: "zs_acv",
1286					is_new: "true",
1287					menu_item_new_banner_text: " ",
1288					menu_item_link_text: " ",
1289					name: "ZERO SUGAR ACV Gummies",
1290					image: "//goli.com/cdn/shop/files/menu-zs-acv-icon_200x200.jpg?v=1790274417",
1291					color1: "#f22431",
1292					color2: "#ffffff",
1293					text_color: "#ffffff",
1294				},					
1295			
1296		
1297			
1298				{
1299					link: "/pages/renew-nad",
1300					product_type: "nad",
1301					is_new: "false",
1302					menu_item_new_banner_text: " ",
1303					menu_item_link_text: " ",
1304					name: "NAD+<br>Gummies",
1305					image: "//goli.com/cdn/shop/files/renew-hamburger_200x200.png?v=1772477812",
1306					color1: "#822829",
1307					color2: "#eddedb",
1308					text_color: "#ffffff",
1309				},					
1310			
1311		
1312			
1313				{
1314					link: "/pages/goli-ashwagandha",
1315					product_type: "ashwagandha",
1316					is_new: "false",
1317					menu_item_new_banner_text: " ",
1318					menu_item_link_text: " ",
1319					name: "Ashwagandha<br>Gummies",
1320					image: "//goli.com/cdn/shop/files/ashwa-hamburger_200x200.jpg?v=1650394382",
1321					color1: "#d2eae7",
1322					color2: "#90d7ed",
1323					text_color: "#000000",
1324				},					
1325			
1326		
1327			
1328				{
1329					link: "/pages/goli-acv",
1330					product_type: "acv",
1331					is_new: "false",
1332					menu_item_new_banner_text: " ",
1333					menu_item_link_text: " ",
1334					name: "Apple Cider <br> Vinegar Gummies",
1335					image: "//goli.com/cdn/shop/files/acv-hamburger_200x200.jpg?v=1650394335",
1336					color1: "#eddedb",
1337					color2: "#ff8b91",
1338					text_color: "#000000",
1339				},					
1340			
1341		
1342			
1343				{
1344					link: "/pages/probioticplus",
1345					product_type: "probiotic",
1346					is_new: "false",
1347					menu_item_new_banner_text: " ",
1348					menu_item_link_text: " ",
1349					name: "Probiotic+<br>Gummies",
1350					image: "//goli.com/cdn/shop/files/ppp-hamburger_200x200.jpg?v=1679347399",
1351					color1: "#66bfa3",
1352					color2: "#2a9272",
1353					text_color: "#000000",
1354				},					
1355			
1356		
1357			
1358				{
1359					link: "/pages/matcha-mind",
1360					product_type: "matcha",
1361					is_new: "false",
1362					menu_item_new_banner_text: " ",
1363					menu_item_link_text: " ",
1364					name: "Matcha Mind<br>Gummies",
1365					image: "//goli.com/cdn/shop/files/mm-hamburger_200x200.jpg?v=1712670948",
1366					color1: "#448e87",
1367					color2: "#6fb6b1",
1368					text_color: "#000000",
1369				},					
1370			
1371		
1372			
1373				{
1374					link: "/pages/goli-beets-cardio",
1375					product_type: "beets",
1376					is_new: "false",
1377					menu_item_new_banner_text: " ",
1378					menu_item_link_text: " ",
1379					name: "Beets Cardio<br>Gummies",
1380					image: "//goli.com/cdn/shop/files/beets-hamburger_200x200.jpg?v=1680242632",
1381					color1: "#9c586c",
1382					color2: "#861f41",
1383					text_color: "#000000",
1384				},					
1385			
1386		
1387			
1388				{
1389					link: "/pages/goli-extra-strength-sleep",
1390					product_type: "xssleep",
1391					is_new: "false",
1392					menu_item_new_banner_text: " ",
1393					menu_item_link_text: " ",
1394					name: "Extra-Strength Sleep<br>Gummies",
1395					image: "//goli.com/cdn/shop/files/xssleep-hamburger_200x200.jpg?v=1678844181",
1396					color1: "#6c4e7a",
1397					color2: "#413049",
1398					text_color: "#000000",
1399				},					
1400			
1401		
1402			
1403				{
1404					link: "/pages/goli-sleep",
1405					product_type: "sleep",
1406					is_new: "false",
1407					menu_item_new_banner_text: " ",
1408					menu_item_link_text: " ",
1409					name: "Dreamy Sleep <br> Gummie",
1410					image: "//goli.com/cdn/shop/files/sleep-hamburger_200x200.jpg?v=1655790494",
1411					color1: "#e0ccf1",
1412					color2: "#500878",
1413					text_color: "#000000",
1414				},					
1415			
1416		
1417			
1418				{
1419					link: "/pages/goli-womens-multi",
1420					product_type: "womens_multi",
1421					is_new: "false",
1422					menu_item_new_banner_text: " ",
1423					menu_item_link_text: " ",
1424					name: "Women's Multi<br>Gummies",
1425					image: "//goli.com/cdn/shop/files/womens-multi-hamburger_200x200.jpg?v=1668445452",
1426					color1: "#e7bcce",
1427					color2: "#f22b7b",
1428					text_color: "#000000",
1429				},					
1430			
1431		
1432			
1433				{
1434					link: "/pages/goli-supergreens",
1435					product_type: "supergreens",
1436					is_new: "false",
1437					menu_item_new_banner_text: " ",
1438					menu_item_link_text: " ",
1439					name: "Supergreens<br>Gummies",
1440					image: "//goli.com/cdn/shop/files/sg-hamburger_200x200.jpg?v=1650642669",
1441					color1: "#d3e9d8",
1442					color2: "#32b05d",
1443					text_color: "#000000",
1444				},					
1445			
1446		
1447			
1448				{
1449					link: "/pages/goli-superfruits",
1450					product_type: "superfruits",
1451					is_new: "false",
1452					menu_item_new_banner_text: " ",
1453					menu_item_link_text: " ",
1454					name: "Superfruits<br>Beauty Gummies",
1455					image: "//goli.com/cdn/shop/files/sf-hamburger_200x200.jpg?v=1650394407",
1456					color1: "#f8dabe",
1457					color2: "#f37124",
1458					text_color: "#000000",
1459				},					
1460			
1461		
1462			
1463				{
1464					link: "/pages/goli-immune",
1465					product_type: "immune",
1466					is_new: "false",
1467					menu_item_new_banner_text: " ",
1468					menu_item_link_text: " ",
1469					name: "Triple Action<br>Immune Gummies",
1470					image: "//goli.com/cdn/shop/files/immune-hamburger_200x200.jpg?v=1650398008",
1471					color1: "#ffac7e",
1472					color2: "#e8350c",
1473					text_color: "#000000",
1474				},					
1475			
1476		
1477			
1478				{
1479					link: "/pages/energy",
1480					product_type: "acv",
1481					is_new: "false",
1482					menu_item_new_banner_text: " ",
1483					menu_item_link_text: " ",
1484					name: "Recharge+<br>Gummies",
1485					image: "//goli.com/cdn/shop/files/menu-recharge-icon_200x200.jpg?v=1789745935",
1486					color1: "#082b54",
1487					color2: "#ffc800",
1488					text_color: "#ffffff",
1489				},					
1490			
1491		
1492		]
1493		const is_homepage = true;
1494		const is_planpage = false;
1495		let page_type = '';
1496		
1497		
1498		
1499		function redirectToOrderPage() {
1500			
1501			
1502			if (page_type == "landing_page") {
1503				// Try to find the target element
1504				const targetElement = document.getElementById("product-target") ||
1505									 document.getElementById("shopify_single_shop_product") ||
1506									 document.querySelector('[id*="product"]') ||
1507									 document.querySelector('.brand-aam-products') ||
1508									 document.querySelector('#products_aam');
1509				
1510				if (targetElement) {
1511					// Calculate the position with -120px offset
1512					const elementPosition = targetElement.getBoundingClientRect().top + window.pageYOffset;
1513					const offsetPosition = elementPosition - 120;
1514					
1515					// Smooth scroll to the offset position
1516					window.scrollTo({
1517						top: offsetPosition,
1518						behavior: 'smooth'
1519					});
1520				} else {
1521					window.location = '/pages/order';
1522				}
1523			} else {
1524				window.location = '/pages/order';
1525			}
1526		}</script>
1526
1527<style data-shopify> 
1528	.cart-icon-v3{
1529		background-image: url("//goli.com/cdn/shop/t/104/assets/cart_v3.svg?v=60419950707257672141778541858");
1530		background-size: cover;
1531	}
1532	.caret_multilink::after {
1533			font-family: "Font Awesome 5 Pro";
1534			font-weight: 900;
1535			content: "\f0d7";
1536			margin-left: 5px;
1537	}
1538	.menu-hamburger::after {
1539			font-family: "Font Awesome 5 Pro";
1540			font-weight: 900;
1541			content: "\f0c9";
1542	}
1543</style>
1544
1545<div x-data="{ menu: menu, mobile_m: mobileMenu,showMobileMenu:false, shop_now:'Buy it now', is_plan_page: is_planpage , is_homepage: is_homepage, redirect: redirectToOrderPage }" >
1546	
1547	<div >
1548		<div class="fixed w-[100%] h-[100vh] top-0 grid grid-cols-1 z-[60000] overflow-hidden bg-black bg-opacity-50" style="display:none; z-index: 60001;" x-show="showMobileMenu"  >
1549			<div class="overflow-y-auto max-w-[425px]" x-show="showMobileMenu" x-transition:enter="transition ease-out duration-300 transform"
1550			x-transition:enter-start="opacity-0 -translate-x-full"
1551			x-transition:enter-end="opacity-100 translate-x-0"
1552			x-transition:leave="transition ease-in duration-300 transform"
1553			x-transition:leave-start="opacity-100 translate-x-0"
1554			x-transition:leave-end="opacity-0 -translate-x-full"
1555			@click.away="showMobileMenu = false">
1556				<div class="bg-white ">
1557					<div class="flex justify-end text-black font-bold px-[1em] py-[1em]">
1558						<button type="button" @click="showMobileMenu = !showMobileMenu"> 
1559							<i class='fas fa-times'></i>
1560						</button>
1561					</div>
1562					<div class="grid grid-cols-2 gap-[.5em] px-[.5em] pt-[.5em] justify-center ">
1563						<template x-for="(mdx, idyy) in mobileMenu" :key="idyy">
1564							<a :href="mdx.link" class="h-[4em] grid items-center"  :style="`background:${mdx.color1};color:${mdx.text_color || '#000000'}`">
1565								
1566								<div class="grid grid-cols-[60%] font-bold justify-end items-center ">
1567									<div class="relative z-10 leading-none"><span class="decoration-[50%] line-through" :style="`text-decoration-color:${mdx.color2}80`">EXPLORE</span>
1568										<div class="absolute w-[3em] h-[3em] left-[-3em] top-[-.2em] z-[-1]">
1569											<img class="w-[100%] h-auto" :src="`${mdx.image}`">
1570										</div>
1571									</div>
1572									<div x-html="mdx.name" class="leading-none text-[.7em] z-10"></div>
1573									
1574								</div>
1575							</a>
1576						</template>
1577					</div>
1578					<div class="grid grid-cols-1 gap-[.5em] px-[.5em] mt-[0.5em] justify-center">
1579						<button type="button" @click="redirect" class="block bg-black text-white py-[1em] text-[.8em] font-bold">ORDER NOW</button>
1580					</div>
1581					<div class="py-[1em]">
1582						<ul class="grid grid-cols-1 gap-[1em] justify-center items-center text-center">
1583							<template x-for="(menulinks, idx) in menu" :key="idx">
1584								<li class="font-bold">
1585									<a class="hover:text-gray-600" :href="menulinks.link" @click.away="menulinks.collapsed = true" :class="{'caret_multilink': menulinks.inner_links.length > 0}" x-text="menulinks.title" :style="menulinks.inner_links.length > 0 ? 'caret_multilink': ''; " @click.prevent="menulinks.inner_links.length > 0 ? menulinks.collapsed = !menulinks.collapsed : window.location = menulinks.link"></a>
1586									<ul class="grid grid-cols-1 gap-1 bg-white font-normal  border-gray-400 border-y-[1px] px-[2em] py-[2em]" x-show="!menulinks.collapsed && menulinks.inner_links.length > 0">
1587										<template x-for="(subLink, subIdx) in menulinks.inner_links" :key="subIdx">
1588											<li><a class="hover:text-gray-600" :href="subLink.link" x-text="subLink.title"></a></li>
1589										</template>
1590									</ul>
1591								</li>
1592							</template>
1593						</ul>
1594					</div>
1595					<div class="bg-[#017789] grid-cols-[5em,1fr] grid px-[1em] py-[1em] text-[7vw] ssm:text-[1.5rem] text-white items-center">
1596						<div class="filter invert">
1597							<img src="//goli.com/cdn/shop/t/104/assets/goli_logo.svg?v=69744193860116714471778541904" class="img-fluid nav-goli-logo" alt="Goli® Nutrition Home">
1598						</div>
1599						<div class="text-[.5em] border-l-[1px] border-white pl-[1em]">
1600							<span>With every order, Goli<sup>®</sup> Nutrition will donate a 6-month supply of essential vitamins to a child in need through our 1-for-1 grant with Vitamin Angels and plant a tree with the Eden Reforestation projects.</span>
1601						</div>
1602					</div>
1603				</div>
1604			</div>
1605		</div>
1606
1607	<div  id="header_goli" class="fixed w-[100%] block z-[60000]" x-data="{
1608		  content:'Free Shipping - Fully Tracked,&lt;br class=&quot;md:hidden&quot;&gt; &lt;span class=&quot;font-bold&quot;&gt;Taxes &amp; Duties Covered.&lt;/span&gt; Delivered Right to Your Door!' ,easter_banner:'Easter Sale Live Now! Use Code &lt;span class=&quot;font-bold&quot;&gt;25EASTER&lt;/span&gt; for 25% OFF Sitewide!',
1609	}">
1610		
1611	
1612				
1613			
1614				
1615					<div class="bg-black text-white phone-horizontal:text-[.2em] text-[.2em] flex justify-center items-center text-center">
1616
1617						<span class="text-[3.6em] py-[1em] md:text-[1rem] xl:text-[1.3rem] leading-none" ><p>FREE SHIPPING ACROSS THE US!</p></span>
1618
1619					</div>
1620				
1621			
1622			
1623
1624				
1625		
1626			<div class=" block">
1627
1628				<div class="grid grid-cols-[1fr,200px] py-1 bg-white md:hidden phone-horizontal:hidden">
1629					<div class="flex justify-start items-center pl-[1em]">
1630						<div class="menu-hamburger" @click="showMobileMenu = !showMobileMenu"></div>
1631						<div class="logo w-[4em] h-[3em] ml-[1em]"><a href="/"><img src="//goli.com/cdn/shop/t/104/assets/goli_logo.svg?v=69744193860116714471778541904" class="img-fluid nav-goli-logo" alt="Goli® Nutrition Home"></a></div>
1632					</div>
1633					<div class="flex justify-end items-center pr-[1em]">
1634						
1635							<button type="button" @click="redirect()" class="" x-show="!is_plan_page">
1636								<div class="bg-black text-white text-[.8em] font-medium justify-center items-center grid w-[110px] h-[30px] px-[5px] leading-none">Shop Now</div>
1637								<div class="font-bold text-black text-[.7em]">Free Shipping</div>
1638							</button>
1639						
1640					
1641						
1642						 <a href="#" x-data x-on:click="$store.w_cart.is_open = ! $store.w_cart.is_open" class="link-unstyled ml-3 animateCarttarget md:hidden phone-horizontal:hidden"  aria-label="Go to the cart">
1643							<span  class="text-[1.4em] w-[1em] h-[1em] inline-block cart-icon-v3 relative">
1644								<span  class="rounded-pill w-[.8em] h-[.8em] absolute  bg-[#D22730] top-[-8px] right-[-6px]" x-show="$store.w_cart.itemCount > 0">
1645									<span class="text-white text-[.5em] grid justify-center items-center" x-text="$store.w_cart.itemCount"></span>
1646								</span>
1647							</span>					
1648						</a> 
1649					</div>
1650				</div>
1651			</div>
1652
1653			<div  class="hidden md:block phone-horizontal:block bg-white py-1">
1654				<div class="container">
1655					<div class="grid grid-cols-[10em,1fr,15em] phone-horizontal:grid-cols-[10em,1fr,11em]">
1656						<div class="logo phone-horizontal:text-[1em] text-[1.5em] w-[4em] h-[3em] grid grid-cols-[1fr]  justify-center items-center"><a href="/"><img src="//goli.com/cdn/shop/t/104/assets/goli_logo.svg?v=69744193860116714471778541904" class="img-fluid nav-goli-logo" alt="Goli® Nutrition Home"></a></div>
1657						<ul class="flex gap-[1em] lg:gap-[5em] lg:mr-[4em]  justify-center lg:justify-end items-center">
1658							<template x-for="(menulinks, idx) in menu" :key="idx">
1659								<li class="font-bold relative">
1660									<a class="hover:text-gray-600 relative phone-horizontal:text-[.7em]" :href="menulinks.link" @click.away="menulinks.collapsed = true" :class="{'caret_multilink': menulinks.inner_links.length > 0}" x-text="menulinks.title" :style="menulinks.inner_links.length > 0 ? 'caret_multilink': ''; " @click.prevent="menulinks.inner_links.length > 0 ? menulinks.collapsed = !menulinks.collapsed : window.location = menulinks.link"></a>
1661									<ul class="grid grid-cols-1 gap-1 absolute top-[100%] left-0 z-[1000] w-[20rem] bg-white font-normal  border-gray-400 border-[1px] px-[2em] py-[2em]" x-show="!menulinks.collapsed && menulinks.inner_links.length > 0">
1662										<template x-for="(subLink, subIdx) in menulinks.inner_links" :key="subIdx">
1663											<li><a class="hover:text-gray-600" :href="subLink.link" x-text="subLink.title"></a></li>
1664										</template>
1665									</ul>
1666								</li>
1667							</template>
1668						</ul>
1669						<div class="flex justify-end items-center">
1670							<button type="button" @click="redirect()" class=""  x-show="!is_plan_page" >
1671								<div class="bg-black text-white font-medium justify-center items-center grid w-[150px] h-[50px]  phone-horizontal:w-[100px] phone-horizontal:h-[35px] phone-horizontal:text-[.7rem] "  >Shop Now</div>
1672								<div class="font-bold text-black text-[.9em] phone-horizontal:text-[.6em]">Free Shipping</div>
1673							</button>
1674							<a href="#" x-data x-on:click="$store.w_cart.is_open = ! $store.w_cart.is_open" class="animateCarttarget link-unstyled ml-3 hidden md:block phone-horizontal:block"  aria-label="Go to the cart">
1675								<span  class="text-[1.4em] w-[1em] h-[1em] inline-block cart-icon-v3 relative">
1676									<span  class="rounded-pill w-[.8em] h-[.8em] absolute  bg-[#D22730] top-[-8px] right-[-6px]" x-show="$store.w_cart.itemCount > 0">
1677										<span class="text-white text-[.5em] grid justify-center items-center" x-text="$store.w_cart.itemCount"></span>
1678									</span>
1679								</span>					
1680							</a>
1681						</div>
1682					</div>
1683				</div>
1684			</div>
1685		</div>
1686	</div>
1687	<div id="header_goli_space" ></div>
1688</div>
1689
1690<script>
1691	function goli_scroll_to_hash_target() {
1692		if (window.__zseDisableLoadHashScroll) {
1693			return;
1694		}
1695
1696		const hash = window.location.hash;
1697
1698		if (!hash || hash === '#') {
1699			return;
1700		}
1701
1702		if (hash === '#shopify_single_shop_product' || hash === '#shopify-section-add_to_the_cart_nad') {
1703			// Standard product pages have a jQuery click handler that manages this scroll.
1704			// On ZSE pages the same IDs are present as .zse-anchor-target spans — fall through
1705			// so the generic scroll below handles them instead.
1706			const _el = document.getElementById(hash.substring(1));
1707			if (!_el || !_el.classList.contains('zse-anchor-target')) {
1708				return;
1709			}
1710		}
1711
1712		const normalizedHash = decodeURIComponent(hash);
1713		const targetId = normalizedHash.substring(1);
1714		let attempts = 0;
1715		const maxAttempts = 40;
1716
1717		const tryScroll = function() {
1718			const target = document.getElementById(targetId) || document.querySelector(normalizedHash);
1719
1720			if (target) {
1721				const header = document.getElementById('header_goli');
1722				const headerOffset = header ? header.offsetHeight : 120;
1723				const targetTop = target.getBoundingClientRect().top + window.pageYOffset - headerOffset;
1724
1725				window.scrollTo({
1726					top: targetTop,
1727					behavior: 'smooth'
1728				});
1729
1730				return;
1731			}
1732
1733			attempts += 1;
1734			if (attempts < maxAttempts) {
1735				setTimeout(tryScroll, 150);
1736			}
1737		};
1738
1739		setTimeout(tryScroll, 120);
1740	}
1741
1742	function on_resize_nav_menu() {
1743		let header = $('#header_goli');  
1744		let header_section = $('#header_goli_space');
1745
1746		if (header_section.length && header.length) {
1747			let header_section_height = header_section.height();
1748			let header_height         = header.height();
1749
1750			if (header_section_height !== header_height) {
1751				let header_section_height_attribute = header_height+'px';
1752				header_section.css('height', header_section_height_attribute);
1753				header_section.attr('data-header-height', header_height);
1754			}
1755		}
1756	}
1757
1758
1759	function updateNavbarCart(cart) {
1760		try {
1761			let cart_item_count = parseInt(cart.item_count);
1762			if (Number.isInteger(cart_item_count)) {	
1763			}
1764		} catch (e) {
1765			console.log('Could not update navbar cart amount.', e);
1766		}
1767	}
1768
1769	$(document).on('cart.requestComplete', function(event, cart) {
1770		updateNavbarCart(cart);
1771	});
1772
1773	$(window).resize(function () {
1774		on_resize_nav_menu();
1775	});
1776
1777	$(window).on('hashchange', function() {
1778		goli_scroll_to_hash_target();
1779	});
1780
1781	$(window).on('load', function() {
1782		goli_scroll_to_hash_target();
1783	});
1784
1785	on_resize_nav_menu();
1786
1787	$(document).ready(function() {
1788		on_resize_nav_menu();
1789		goli_scroll_to_hash_target();
1790	});
1791
1792</script>
1792
1793
1794</div>
1795		<section id="shopify-section-subnav-shop-categories" class="shopify-section subnav-shop-categories-section">
1796<style data-shopify>
1797  #subnav-shop-categories { scrollbar-width: none; -ms-overflow-style: none; }
1798  #subnav-shop-categories::-webkit-scrollbar { display: none; }
1799  #subnav-shop-categories.is-hidden { transform: translateY(-100%); }
1800  #subnav-shop-categories .subnav-track { margin-inline: auto; }
1801  #subnav-shop-categories.is-scrollable .subnav-track { margin-inline: 0; }
1802  #subnav-shop-categories.is-scrollable {
1803    -webkit-mask-image: linear-gradient(to right, black calc(100% - 24px), transparent 100%);
1804            mask-image: linear-gradient(to right, black calc(100% - 24px), transparent 100%);
1805  }
1806  #subnav-shop-categories.is-scrollable.is-scrolled-end {
1807    -webkit-mask-image: none;
1808            mask-image: none;
1809  }
1810</style>
1811
1812
1813
1814
1815
1816
1817
1818
1819</section>
1820		<div id="floating-cart" x-data x-show="$store.w_cart.is_open" @click.away="$store.w_cart.is_open = false" x-transition:enter="transition duration-300 transform ease-out" x-transition:enter-start="opacity-0 translate-x-full -translate-y-full" x-transition:enter-end="opacity-100 translate-x-0 translate-y-0" x-transition:leave="transition duration-300 transform ease-in" x-transition:leave-start="opacity-100 translate-y-0 scale-100" x-transition:leave-end="opacity-0 translate-x-full -translate-y-full" class="my-floating-cart fixed z-[3000] w-[100%] shadow-[0_35px_60px_-15px_rgba(0,0,0,0.53)]" style="display:none;"> <div id="shopify-section-cart_2023" class="shopify-section">
1821
1822<form action="/cart" method="post" class="my-cart bg-white lg:w-[30rem] phone-horizontal:absolute phone-horizontal:w-[22em] phone-horizontal:right-0  lg:absolute lg:right-0 shadow-lg">
1823
1824  <!-- data-ajax-cart-section makes the element's HTML update
1825  when the cart gets changed -->    
1826  <section id="float-cart" class="text-[1vw]  shadow-[#0000007a 0px 12px 25px]">
1827    <div class="mx-auto px-[3em] pb-[3em]">
1828        <div class="cart-head">
1829			<div class="relative text-center text-[#D22730] text-[5em] font-black py-[0.5em]"> 
1830                <button
1831                    type="button" x-on:click="$store.w_cart.is_open = ! $store.w_cart.is_open"  class="absolute font-black right-0 toggle-floating-cart"><i
1832                        class="fas fa-times text-black"></i>
1833				</button><span x-text="$store.w_cart.itemCount > 0 ? 'Your Cart is Ready' : 'Your Cart'">Your Cart</span>
1834				
1835            </div>
1836        </div>
1837		<div data-ajax-cart-section>
1838        	<div class="cart-content text-[4em] py-[1em]  border-solid border-y-[.15em]  border-black">
1839				
1840					<div class="text-center text-[1em] font-bold py-[2em]">Your cart is currently empty.</div>
1841				
1842			</div>
1843
1844			<div class="flex justify-center py-[1em] text-[4em] flex justify-center font-bold items-center phone-horizontal:hidden"> 
1845				<button type="button" class="underline continue-shoping toggle-floating-cart"  x-on:click="$store.w_cart.is_open = ! $store.w_cart.is_open">
1846					Continue Shopping <i class="fa fa-chevron-right"></i>
1847				</button>
1848			</div>
1849
1850			<div x-data="{loader: false, link:'/checkout', color1:'grey' , color2:'#D22730' } " x-init="if($store.w_cart) $store.w_cart.itemCount = 0" class="grid grid-cols-[1fr]">
1851				<button type="button"
1852					:disabled="$store.w_cart.itemCount == 0 ? true : false ;" 
1853					@click="$store.w_cart.goToCheckout;" :style="$store.w_cart.itemCount == 0 ? `background:${color1}`: `background:${color2}`;"  
1854					id="ps-add-control-holder"
1855					class="rounded-[0.2em] text-[4em] py-[0.7em] text-white flex justify-center items-center">
1856						<span class="w-[1.5em] h-[1.5em] text-black font-bold bg-white rounded-[100%] mr-[1em] flex justify-center items-center" 
1857							data-ajax-cart-bind="item_count">
1858							0</span>CHECKOUT &#183; <span class="total-price-display"><span class=money>$0.00 USD</span>	
1859						</span>
1860				</button>
1861				<div  x-show="loader" style="display: none;"  class="fixed overflow-scroll inset-0 flex items-center justify-center bg-white bg-opacity-50"><i class="fa fa-spinner text-[40px] animate-spin text-black" aria-hidden="true"></i></div>
1862			</div>
1863			<!-- data-ajax-cart-static-element keeps the container unchanged
1864			when the cart and the surrounding HTML get updated -->
1865			<div data-ajax-cart-static-element class="my-cart__app-container"></div>
1866		</div>
1867    </div>
1868</section>
1869</form>
1870</div> </div>
1871	
1872	
1873
1874
1875
1876
1877
1878	
1879
1880
1881
1882<link href="//goli.com/cdn/shop/t/104/assets/customers.scss.css?v=154234318593219364681778542513" rel="stylesheet" type="text/css" media="all" />
1883
1884
1885<!-- /templates/customers/login.liquid -->
1886<section class="section-customers-login">
1887	<div class="container my-4">
1888		<div id="CustomerLoginForm" class="row justify-content-center">
1889			<div class="col-12 text-center">
1890				<h1 id="LoginHeading">Login</h1>
1891			</div>
1892			<div class="col-12 col-md-6">
1893
1894				<form method="post" action="/account/login" id="customer_login" accept-charset="UTF-8" data-login-with-shop-sign-in="true" novalidate="novalidate"><input type="hidden" name="form_type" value="customer_login" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="return_to" value="/account?feature=subscription_portal_modal" />
1895
1896
1897					<div class="mb-3">
1898						<label for="CustomerEmail" class="form-label">Email</label>
1899						<input
1900							type="email"
1901							name="customer[email]"
1902							id="CustomerEmail"
1903							class="form-control"
1904							autocomplete="email"
1905							autocorrect="off"
1906							autocapitalize="off"
1907
1908							>
1909					</div>
1910
1911
1912					<div class="mb-3">
1913						<label for="CustomerPassword" class="form-label">Password</label>
1914						<input
1915							type="password"
1916							value=""
1917							name="customer[password]"
1918							id="CustomerPassword"
1919							class="form-control"
1920	
1921							>
1922					</div>
1923
1924
1925					<div class="mb-3 text-center">
1926						<input class="bg-black text-white px-[.5rem] py-[.5rem] rounded-0" type="submit" value="Sign In">
1927					</div>
1928
1929
1930					<div class="mb-3 text-center">
1931						<a class="link-dark" id="RecoverPassword" href="#recover">Forgot your password?</a>
1932					</div>
1933
1934
1935					<div class="text-center">
1936						<a class="link-dark" href="/account/register">Don&#39;t have an account?</a>
1937					</div>
1938				<input type="hidden" name="return_url" value="/account" /></form>
1939			</div>
1940		</div>
1941
1942
1943		<div id="RecoverPasswordForm" class="row justify-content-center d-none">
1944			<div class="col-12 text-center">
1945				<h1 id="RecoverHeading">Reset your password</h1>
1946				<p>We will send you an email to reset your password.</p>
1947			</div>
1948
1949			<div class="col-12 col-md-6">
1950				<form method="post" action="/account/recover" accept-charset="UTF-8"><input type="hidden" name="form_type" value="recover_customer_password" /><input type="hidden" name="utf8" value="✓" />
1951
1952
1953
1954					<div class="mb-3">
1955						<label for="RecoverEmail" class="form-label">Email</label>
1956						<input
1957							type="email"
1958							value=""
1959							name="email"
1960							id="RecoverEmail"
1961							class="form-control"
1962							autocorrect="off"
1963							autocapitalize="off"
1964
1965							>
1966
1967					</div>
1968
1969					<div class="mb-3 text-center">
1970						<input class="bg-black text-white px-[.5rem] py-[.5rem] rounded-0" type="submit" value="Submit">
1971					</div>
1972
1973					<div class="text-center">
1974						<a class="link-dark" id="HideRecoverPasswordLink" href="#LoginHeading">Cancel</a>
1975					</div>
1976				</form>
1977			</div>
1978		</div>
1979
1980
1981
1982
1983
1984
1985	</div>
1986</section>
1987
1988
1989<script src="//goli.com/cdn/shop/t/104/assets/customers.js?v=124255201969998916251778542513" type="text/javascript"></script>
vendor: 1 bytes, line 1989
1989
1990<script>
1991
1992	// Remove pre-existing login page redirect to account page.
1993	let page_url_params = new URLSearchParams(window.location.search);
1994	if (page_url_params.has('return_url')) {
1995		window.location.href = '/account/login';
1996	}
1997
1998</script>
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020  
2021	<div role="footer">
2022		<div id="shopify-section-footer" class="shopify-section">
2023
2024
2025
2026
2027
2028<link href="//goli.com/cdn/shop/t/104/assets/section-footer.scss.css?v=142990195641469144891781879093" rel="stylesheet" type="text/css" media="all" />
2029
2030<style data-shopify>
2031  footer.footer-2021 .collapse {
2032       visibility: unset;
2033  }
2034  
2035</style>
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046<footer class="footer-2021 relative z-1" x-data="{ 
2047  keepWell: 'Keep well with Goli&lt;sup&gt;®&lt;/sup&gt;', 
2048  subscribe_to_newsletter: 'Subscribe to our newsletter for exclusive offers!',
2049  email_label: 'Email',
2050  subscribe_placeholder: 'Subscribe to our newsletter',
2051  become_an_ambassador: 'Become an Ambassador',
2052  follow_us: 'FOLLOW US:',
2053  about_us: 'About Us',
2054  terms_and_conditions: 'Terms &amp; Conditions',
2055  privacy_policy: 'Privacy Policy',
2056  about_goli: 'About Goli',
2057  inside_the_gummy: 'Inside the Gummy',
2058  goli_rewards_gift_cards: 'Goli® Rewards Gift Cards',
2059  digital_accessibility_statement: 'Digital Accessibility Statement',
2060  uk_withdraw_form: 'EU Withdrawal Form',
2061  disclaimer: '&lt;sup&gt;†&lt;/sup&gt;These statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure or prevent any disease. The views and nutritional advice expressed by Goli&lt;sup&gt;®&lt;/sup&gt; Nutrition are not intended for the purpose of providing medical advice. Please always consult your health care provider if you are taking any medications or have any medical conditions. Individual results may vary.',
2062  disclaimer_free_shipping: 'Free Shipping Disclaimer',
2063  disclaimer2: '&lt;sup&gt;‡&lt;/sup&gt;Vitamins B6, B9 &amp; B12 help convert food into cellular energy&lt;sup&gt;†&lt;/sup&gt;&lt;br&gt; &lt;sup&gt;◊&lt;/sup&gt;Source: SPINS MULO (powered by IRI) 52 weeks ending 01/01/2023.',
2064  copyright: 'Copyright Text',
2065  wholesale: 'Wholesale',
2066  manage_my_subscription: 'Manage my Subscription',
2067  contact_us: 'Contact Us',
2068  }">
2069  <div class="container">
2070    <div class="row">
2071      <div class="col-12 col-lg-5 text-center text-lg-start pt-5">
2072        <h2>
2073          <div class="text-top" x-html="keepWell"></div>
2074          <div class="text-bottom" x-html="subscribe_to_newsletter">
2075            Subscribe to our newsletter for exclusive offers!
2076          </div>
2077        </h2>
2078        <form id="newsletter-subscribe-form" class="newsletter-subscribe-form contact-form">
2079          <label for="newsletter-form-footer-email" x-html="email_label">Email</label>
2080          <input
2081            type="hidden"
2082            name="contact[tags]"
2083            value="newsletter">
2084          <div class="newsletter-box">
2085            <div class="input-group newsletter">
2086              <input
2087                type="email"
2088                name="email"
2089                id="newsletter-form-footer-email"
2090                class="input-group__field newsletter__input"
2091                value=""
2092                placeholder="Subscribe to our newsletter"
2093                aria-label=""
2094                aria-required="true"
2095                required
2096                autocorrect="off"
2097                autocapitalize="off"
2098              >
2099              <div class="input-group__btn">
2100                <button
2101                  type="submit"
2102                  class="btn newsletter__submit"
2103                  name="commit"
2104                  aria-label="subscribe">
2105                  <span class="newsletter__submit-text--large">
2106                    <i class="far fa-arrow-right"></i>
2107                  </span>
2108                </button>
2109              </div>
2110            </div>
2111          </div>
2112        </form>
2113
2114        <h6 class="follow-us-txt text-center text-lg-start" x-html="follow_us">
2115          FOLLOW US:
2116        </h6>
2117        <div class="social-box">
2118          <ul>
2119            
2120              <li>
2121                <a 
2122                  href="https://www.facebook.com/GoliNutrition"
2123                  target="_blank"
2124                  class="icon-link icon-link-facebook"
2125                  aria-label="facebook link">
2126                  <i class="fab fa-facebook-f"></i>
2127                </a>
2128              </li>
2129            
2130            
2131              <li>
2132                <a
2133                  href="https://www.instagram.com/GoliNutrition"
2134                  target="_blank"
2135                  class="icon-link icon-link-instagram"
2136                  aria-label="instagram link">
2137                  <i class="fab fa-instagram"></i>
2138                </a>
2139              </li>
2140            
2141            
2142              <li>
2143                <a
2144                  href="https://x.com/golinutrition"
2145                  target="_blank"
2146                  class="icon-link icon-link-twitter"
2147                  aria-label="twitter link">
2148                  <i class="fab fa-twitter"></i>
2149                </a>
2150              </li>
2151            
2152            
2153              <li>
2154                <a
2155                  href="https://www.youtube.com/GoliNutrition"
2156                  target="_blank"
2157                  class="icon-link icon-link-youtube"
2158                  aria-label="youtube link">
2159                  <i class="fab fa-youtube"></i>
2160                </a>
2161              </li>
2162            
2163            
2164              <li>
2165                <a
2166                  href="https://www.pinterest.ca/golinutrition"
2167                  target="_blank"
2168                  class="icon-link icon-link-pinterest"
2169                  aria-label="pinterest link">
2170                  <i class="fab fa-pinterest"></i>
2171                </a>
2172              </li>
2173            
2174            
2175              <li>
2176                <a
2177                  href="https://www.tiktok.com/@golinutrition"
2178                  target="_blank"
2179                  class="icon-link icon-link-tiktok"
2180                  aria-label="tiktok link">
2181                  <i class="fab fa-tiktok"></i>
2182                </a>
2183              </li>
2184            
2185          </ul>
2186        </div>
2187      </div>
2188      <div class="col-12 col-lg-4 menu-links pt-lg-5">
2189        <ul class="arrows">
2190   <li>
2191      <a id="footer-nav-link-0" href="https://partners.goli.com/login" class="drop" x-html="become_an_ambassador">Become an Ambassador</a>
2192   </li>
2193   <li>
2194      <a id="footer-nav-link-1" href="#!" class="drop collapsed flex justify-start relative" data-bs-toggle="collapse" data-bs-target="#footer-nav-link-1-collapse" aria-expanded="false" aria-controls="#footer-nav-link-1-collapse">
2195        <span x-html="about_goli">About Goli<sup>®</sup></span>
2196        <i class="absolute ml-1 text-[.5em] top-[40%] fas fa-chevron-down"></i>
2197      </a>
2198      <div id="footer-nav-link-1-collapse" class="collapse" style="">
2199         <div class="card card-body">
2200            <ul>
2201               <li>
2202                  <a id="footer-nav-link-1-0" href="
2203                     /pages/goli-for-good">Goli® for Good</a>
2204               </li>
2205               <li>
2206                  <a id="footer-nav-link-1-1" href="
2207                     /pages/about-us" x-html="about_us">About Us</a>
2208               </li>
2209               <li>
2210                  <a id="footer-nav-link-1-2" href="
2211                     /pages/inside-the-gummy" x-html="inside_the_gummy">Inside the Gummy</a>
2212               </li>
2213               <li>
2214                  <a id="footer-nav-link-1-2" href="/pages/science-advisory-board" >Science Advisory Board</a>
2215               </li>
2216            </ul>
2217         </div>
2218      </div>
2219   </li>
2220   <li><a id="footer-nav-link-2" href="/pages/faq" class="drop">FAQ</a></li>
2221   
2222     <li>
2223    <a id="footer-nav-link-3" href="
2224         #!" class="drop collapsed" data-bs-toggle="collapse" data-bs-target="#footer-nav-link-3-collapse" aria-expanded="false" aria-controls="#footer-nav-link-3-collapse">
2225         Wholesale
2226      <i class="fas fa-chevron-down"></i>
2227      </a>
2228      <div id="footer-nav-link-3-collapse" class="collapse" style="">
2229        <div class="card card-body">
2230           <ul>
2231              <li>
2232                 <a id="footer-nav-link-3-0" href="https://shopify.com/7001735241/account/">Wholesale Login</a>
2233              </li>
2234              <li>
2235                 <a id="footer-nav-link-3-1" href="/pages/wholesale-signup-form">Wholesale Sign up</a>
2236              </li>
2237           </ul>
2238        </div>
2239     </div>
2240    </li>  
2241   
2242   <li><a id="footer-nav-link-4" href=" /account/" class="drop" x-html="manage_my_subscription">Manage my Subscription</a></li>
2243   <li><a id="footer-nav-link-5" href=" /pages/contact-us" class="drop" x-html="contact_us">Contact Us</a></li>
2244</ul>
2245
2246      </div>
2247      <div class="col-6 col-lg-3 d-lg-grid justify-end md:justify-center items-center flex">
2248        <div class="flex justify-center">
2249          <img
2250            src="//goli.com/cdn/shop/t/104/assets/goli_g_logo.svg?v=178516252654123499561778541904"
2251            class="img-fluid footer-goli-logo w-[7em]"
2252            alt="Goli® Nutrition Logo">
2253        </div>
2254        <div class="logo-box d-none d-lg-block">
2255          <img
2256            src="//goli.com/cdn/shop/t/104/assets/b-corp-logo.svg?v=87429542476690666171778541838"
2257            class="img-fluid footer-goli-logo second_logo"
2258            alt="B-Corp Logo">
2259        </div>
2260      </div>
2261      <div class="col-6 d-lg-none">
2262        <div class="logo-box second_logo">
2263          <img
2264            src="//goli.com/cdn/shop/t/104/assets/b-corp-logo.svg?v=87429542476690666171778541838"
2265            class="img-fluid footer-goli-logo"
2266            alt="B-Corp Logo">
2267        </div>
2268      </div>
2269      <div class="col-12">
2270        <ul class="legal">
2271          <li>
2272            <button
2273              type="button"
2274              class="btn btn-link"
2275              data-bs-toggle="modal"
2276              data-bs-target="#legal-modal"
2277              data-modal-name="Terms & Conditions"
2278              data-modal-url="/policies/terms-of-service"  x-html="terms_and_conditions">Terms & Conditions</button>
2279          </li>
2280          <li>
2281            <button
2282              type="button"
2283              class="btn btn-link"
2284              data-bs-toggle="modal"
2285              data-bs-target="#legal-modal"
2286              data-modal-name="Privacy Policy"
2287              data-modal-url="/policies/privacy-policy"  x-html="privacy_policy">Privacy Policy</button>
2288          </li>
2289          <li>
2290            <button
2291              type="button"
2292              class="btn btn-link"
2293              data-bs-toggle="modal"
2294              data-bs-target="#legal-modal"
2295              data-modal-name="Goli® Rewards Gift Cards"
2296              data-modal-url="/pages/goli-rewards"  x-html="goli_rewards_gift_cards">Goli® Rewards Gift Cards</button>
2297          </li>
2298          <li>
2299            <a href="/pages/accessibility"  x-html="digital_accessibility_statement">Digital Accessibility Statement</a>
2300          </li>
2301          
2302        </ul>
2303      </div>
2304      <div class="col-12">
2305        
2306          <p class="disclaimer text-start border border-white" x-html="disclaimer"> 
2307            <sup>†</sup>These statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure or prevent any disease. The views and nutritional advice expressed by Goli<sup>®</sup> Nutrition are not intended for the purpose of providing medical advice. Please always consult your health care provider if you are taking any medications or have any medical conditions. Individual results may vary.
2308          </p>
2309          <p class="disclaimer text-start" x-html="disclaimer2">
2310            <sup>‡</sup>Vitamins B6, B9 & B12 help convert food into cellular energy<sup>†</sup><br> <sup>◊</sup>Source: SPINS MULO (powered by IRI) 52 weeks ending 01/01/2023.
2311          </p>
2312          <ul class="legal p-0 text-start d-flex flex-column mb-0"> 
2313
2314          </ul>
2315        
2316        <p class="disclaimer">
2317          &copy; 
2318  2026 Goli Nutrition Inc. All Rights Reserved. 
2319        </p>
2320      </div>
2321    </div>
2322  </div>
2323</footer>
2324
2325
2326<div
2327  id="legal-modal"
2328  class="modal fade z-[3000]"
2329  tabindex="-1"
2330  aria-labelledby="legal-modal-label"
2331  aria-hidden="true">
2332  <div class="modal-dialog modal-dialog-scrollable modal-lg">
2333    <div class="modal-content">
2334      <div class="modal-header">
2335        <h5 id="legal-modal-label" class="modal-title"></h5>
2336        <button
2337          type="button"
2338          class="btn-close text-black"
2339          data-bs-dismiss="modal"
2340          aria-label="Close">x</button>
2341      </div>
2342      <div class="modal-body"></div>
2343    </div>
2344  </div>
2345</div>
2346
2347
2348<script>
2349  $('#legal-modal').on('show.bs.modal', function(event) {
2350    let modal = $(this);
2351    let trigger = $(event.relatedTarget);
2352    let modal_name = trigger.data('modal-name');
2353
2354    let modal_content_url = trigger.data('modal-url') + ' .shopify-policy__container';
2355    modal.find('.modal-body').empty().load(modal_content_url, function() {
2356      $('.shopify-policy__title').html('<h1>' + modal_name + '</h1>');
2357    });
2358  });
2359
2360  (function () {
2361    function showMessage(element, type, message) {
2362      var messageElement = $('<div class="newsletter-message ' + type + '">' + message + '</div>');
2363      element.append(messageElement);
2364      setTimeout(function () {
2365        messageElement.fadeOut(function () {
2366          messageElement.remove();
2367        });
2368      }, 5000);
2369    }
2370
2371    function subscribeNewsletter(form, email) {
2372      $.ajax({
2373        type: 'POST',
2374        url: '/contact#newsletter-form-footer',
2375        data: {
2376          form_type: 'customer',
2377          utf8: '✓',
2378          contact: {
2379            email: email,
2380            tags: 'newsletter'
2381          }
2382        },
2383        success: function () {
2384          console.log('Successfully subscribed to newsletter');
2385          showMessage(form, 'success', 'Successfully subscribed to the newsletter!');
2386        },
2387        error: function () {
2388          console.log('Error subscribing to newsletter');
2389          showMessage(form, 'error', 'There was an error subscribing to the newsletter. Please try again.');
2390        }
2391      });
2392    }
2393
2394    $(document).ready(function () {
2395      $('.newsletter-subscribe-form').on('submit', function (e) {
2396        e.preventDefault();
2397
2398        var email = $(this).find('[name=email]').val();
2399
2400        subscribeNewsletter($(this), email);
2401      });
2402    });
2403  })();
2404  
2405</script>
2405
2406
2407
2408
2409</div>
2410	</div>
2411	
2411<script>
2412window.ALBSS = {
2413    event_key: 'f16b53e4-3027-43be-b393-3cf20457ecc6'
2414};
2415
2416// Handle cart=open URL parameter
2417document.addEventListener('DOMContentLoaded', function() {
2418	const urlParams = new URLSearchParams(window.location.search);
2419	if (urlParams.get('cart') === 'open') {
2420		// Wait for Alpine.js to be ready
2421		if (typeof Alpine !== 'undefined' && Alpine.store && Alpine.store('w_cart')) {
2422			Alpine.store('w_cart').is_open = true;
2423		} else {
2424			// Retry after a short delay if Alpine isn't ready yet
2425			setTimeout(function() {
2426				if (typeof Alpine !== 'undefined' && Alpine.store && Alpine.store('w_cart')) {
2427					Alpine.store('w_cart').is_open = true;
2428				}
2429			}, 100);
2430		}
2431		// Clean the URL by removing the cart parameter
2432		const url = new URL(window.location);
2433		url.searchParams.delete('cart');
2434		window.history.replaceState({}, '', url.pathname);
2435	}
2436});
2437</script>
2437
2438	
2438<script src="https://c.albss.com/p/l/loader.iife.js"></script>
2438
2439
2440	
2440<script type="text/javascript"> _linkedin_partner_id = "6889330"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); </script>
2440<script type="text/javascript"> (function(l) { if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; window.lintrk.q=[]} var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(window.lintrk); </script>
2440 <noscript> <img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=6889330&fmt=gif" /> </noscript>
2441	
2441<script src="https://static.rechargecdn.com/assets/storefront/recharge-client-1.16.3.min.js"></script>
2441
2442	
2443	
2444<div id="shopify-block-AcXUrTmxlUzVabmRtS__10248244882032696684" class="shopify-block shopify-app-block">
2445
2446
2447
2448</div>
2448<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
2448
2449</body>
2450</html>
2451

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.