{
  "version": 3,
  "sources": ["/cdn/shop/t/10/assets/c2g-attribution.js?probe=202608140320"],
  "sourcesContent": ["(() => {\n  const VERSION = \"2026-08-14.3\";\n  const STORAGE_KEY = \"c2g_attribution_v1\";\n  const SYNC_KEY = \"c2g_attribution_cart_sync_v1\";\n  const CLICK_KEYS = [\"gclid\", \"gbraid\", \"wbraid\", \"msclkid\", \"srsltid\", \"oppref\"];\n  const UTM_KEYS = [\"source\", \"medium\", \"campaign\", \"content\", \"term\"];\n  const status = { version: VERSION, stage: \"loaded\", allowed: false, synced: false, error: \"\" };\n  let syncInFlight = null;\n\n  function report(stage) {\n    status.stage = stage;\n    document.documentElement.dataset.c2gAttribution = stage;\n    document.documentElement.dataset.c2gAttributionVersion = VERSION;\n  }\n\n  report(\"loaded\");\n\n  function limit(value, max = 200) {\n    return String(value || \"\").trim().slice(0, max);\n  }\n\n  function storageGet(storage, key) {\n    try {\n      return storage.getItem(key);\n    } catch (_) {\n      return null;\n    }\n  }\n\n  function storageSet(storage, key, value) {\n    try {\n      storage.setItem(key, value);\n      return true;\n    } catch (_) {\n      return false;\n    }\n  }\n\n  function normalizedHost(value) {\n    const host = limit(value, 255).toLowerCase().replace(/^www\\./, \"\");\n    if (!host) return \"\";\n    if (host.includes(\"google.\")) return \"google\";\n    if (host.includes(\"bing.\")) return \"bing\";\n    if (host === \"chatgpt.com\" || host.endsWith(\".chatgpt.com\") || host === \"openai.com\") return \"openai\";\n    return host;\n  }\n\n  function externalReferrer() {\n    if (!document.referrer) return \"\";\n    try {\n      const referrer = new URL(document.referrer);\n      if (referrer.hostname === window.location.hostname) return \"\";\n      return normalizedHost(referrer.hostname);\n    } catch (_) {\n      return \"\";\n    }\n  }\n\n  function googleClientId() {\n    const cookie = document.cookie.split(\";\").map((part) => part.trim()).find((part) => part.startsWith(\"_ga=\"));\n    if (!cookie) return \"\";\n    const value = decodeURIComponent(cookie.slice(4));\n    const parts = value.split(\".\");\n    const candidate = parts.length >= 4 ? `${parts[parts.length - 2]}.${parts[parts.length - 1]}` : value;\n    return /^\\d+\\.\\d+$/.test(candidate) ? candidate : \"\";\n  }\n\n  function googleSessionId() {\n    const cookie = document.cookie.split(\";\").map((part) => part.trim())\n      .find((part) => part.startsWith(\"_ga_NBJLFZMQ54=\"));\n    if (!cookie) return \"\";\n    const value = decodeURIComponent(cookie.slice(cookie.indexOf(\"=\") + 1));\n    const modern = value.match(/(?:^|\\.)s(\\d+)(?:\\$|\\.|$)/);\n    if (modern) return modern[1];\n    const legacy = value.match(/^GS\\d+\\.\\d+\\.(\\d+)(?:\\.|$)/);\n    return legacy ? legacy[1] : \"\";\n  }\n\n  function clickEvidence(params) {\n    for (const key of CLICK_KEYS) {\n      const value = limit(params.get(key), 400);\n      if (value) return { type: key, id: value };\n    }\n    return { type: \"\", id: \"\" };\n  }\n\n  function inferredSource(params, referrer, click) {\n    const utm = Object.fromEntries(UTM_KEYS.map((key) => [key, limit(params.get(`utm_${key}`), 160)]));\n    if (!utm.source && [\"gclid\", \"gbraid\", \"wbraid\", \"srsltid\"].includes(click.type)) utm.source = \"google\";\n    if (!utm.source && click.type === \"msclkid\") utm.source = \"bing\";\n    if (!utm.source && click.type === \"oppref\") utm.source = \"openai\";\n    if (!utm.medium && [\"gclid\", \"gbraid\", \"wbraid\", \"msclkid\"].includes(click.type)) utm.medium = \"cpc\";\n    if (!utm.medium && click.type === \"srsltid\") utm.medium = \"organic\";\n    if (!utm.medium && click.type === \"oppref\") utm.medium = \"cpc\";\n    if (!utm.source && referrer) utm.source = referrer;\n    if (!utm.medium && referrer) utm.medium = [\"google\", \"bing\"].includes(referrer) ? \"organic\" : \"referral\";\n    if (!utm.source) utm.source = \"(direct)\";\n    if (!utm.medium) utm.medium = \"(none)\";\n    return utm;\n  }\n\n  function currentTouch() {\n    const url = new URL(window.location.href);\n    const referrer = externalReferrer();\n    const click = clickEvidence(url.searchParams);\n    const utm = inferredSource(url.searchParams, referrer, click);\n    const hasMarketingParams = CLICK_KEYS.some((key) => url.searchParams.has(key)) ||\n      UTM_KEYS.some((key) => url.searchParams.has(`utm_${key}`));\n    return {\n      source: utm.source,\n      medium: utm.medium,\n      campaign: utm.campaign,\n      content: utm.content,\n      term: utm.term,\n      landing: limit(`${url.pathname}${url.hash || \"\"}`, 220),\n      referrer,\n      timestamp: new Date().toISOString(),\n      click_type: click.type,\n      click_id: click.id,\n      qualified: hasMarketingParams || Boolean(referrer)\n    };\n  }\n\n  function readState() {\n    try {\n      const parsed = JSON.parse(storageGet(window.localStorage, STORAGE_KEY) || \"null\");\n      if (parsed && parsed.version === VERSION && parsed.first && parsed.last) return parsed;\n    } catch (_) {}\n    return null;\n  }\n\n  function updateState() {\n    const touch = currentTouch();\n    const previous = readState();\n    const first = previous?.first || touch;\n    const last = touch.qualified ? touch : previous?.last || touch;\n    const click = touch.click_id\n      ? touch\n      : touch.qualified\n        ? { click_type: \"\", click_id: \"\" }\n        : previous?.click || touch;\n    const next = { version: VERSION, first, last, click };\n    storageSet(window.localStorage, STORAGE_KEY, JSON.stringify(next));\n    return next;\n  }\n\n  function cartAttributes(state) {\n    const attributes = {\n      __c2g_attr_v: VERSION,\n      __c2g_consent: \"analytics+marketing\",\n      __c2g_ga_client_id: googleClientId(),\n      __c2g_ga_session_id: googleSessionId(),\n      __c2g_click_type: state.click.click_type,\n      __c2g_click_id: state.click.click_id\n    };\n    for (const prefix of [\"first\", \"last\"]) {\n      const touch = state[prefix];\n      for (const key of [\"source\", \"medium\", \"campaign\", \"content\", \"term\", \"landing\", \"referrer\", \"timestamp\"]) {\n        attributes[`__c2g_${prefix}_${key}`] = limit(touch[key], key === \"landing\" || key === \"referrer\" ? 220 : 160);\n      }\n    }\n    return attributes;\n  }\n\n  function consentAllowed() {\n    const privacy = window.Shopify?.customerPrivacy;\n    if (!privacy) return null;\n    try {\n      return Boolean(privacy.analyticsProcessingAllowed() && privacy.marketingAllowed());\n    } catch (_) {\n      return null;\n    }\n  }\n\n  async function syncOnce() {\n    const allowed = consentAllowed();\n    status.allowed = allowed === true;\n    if (!allowed) {\n      report(allowed === false ? \"consent-blocked\" : \"privacy-pending\");\n      return;\n    }\n    const state = updateState();\n    const attributes = cartAttributes(state);\n    const fingerprint = JSON.stringify(attributes);\n    if (storageGet(window.sessionStorage, SYNC_KEY) === fingerprint) {\n      status.synced = true;\n      report(\"synced\");\n      return;\n    }\n    const root = window.Shopify?.routes?.root || \"/\";\n    try {\n      const response = await fetch(`${root}cart/update.js`, {\n        method: \"POST\",\n        credentials: \"same-origin\",\n        keepalive: true,\n        headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n        body: JSON.stringify({ attributes })\n      });\n      if (!response.ok) throw new Error(`cart update ${response.status}`);\n      storageSet(window.sessionStorage, SYNC_KEY, fingerprint);\n      status.synced = true;\n      status.error = \"\";\n      report(\"synced\");\n    } catch (error) {\n      status.error = limit(error, 160);\n      report(\"error\");\n    }\n  }\n\n  function sync() {\n    if (syncInFlight) return syncInFlight;\n    syncInFlight = syncOnce().finally(() => {\n      syncInFlight = null;\n    });\n    return syncInFlight;\n  }\n\n  function scheduleSync() {\n    Promise.resolve().then(sync);\n  }\n\n  window.__c2gAttribution = Object.freeze({\n    version: VERSION,\n    status,\n    refresh: sync,\n    inspect: () => {\n      const state = readState();\n      if (!state) return null;\n      return {\n        version: state.version,\n        first: { ...state.first, click_id: state.first.click_id ? \"present\" : \"\" },\n        last: { ...state.last, click_id: state.last.click_id ? \"present\" : \"\" },\n        click: { type: state.click.click_type, id: state.click.click_id ? \"present\" : \"\" },\n        ga_client_id: googleClientId() ? \"present\" : \"\",\n        ga_session_id: googleSessionId() ? \"present\" : \"\"\n      };\n    }\n  });\n\n  document.addEventListener(\"shopifyCustomerPrivacyApiLoaded\", scheduleSync);\n  document.addEventListener(\"visitorConsentCollected\", scheduleSync);\n  window.addEventListener(\"pageshow\", scheduleSync);\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", scheduleSync, { once: true });\n  } else {\n    scheduleSync();\n  }\n  window.setTimeout(scheduleSync, 1500);\n})();\n"],
  "mappings": "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",
  "names": []
}
