{
  "version": 3,
  "sources": ["/cdn/shop/t/92/assets/laley-ui-loader.js?lly=laley-custom-20260921-epostsjekk-v860"],
  "sourcesContent": ["(() => {\n  if (window.__laleyUiLoader === 'ready') return;\n  window.__laleyUiLoader = 'initializing';\n\n  // `defer` scripts run after parsing and some Chromium/WebKit builds no\n  // longer expose `document.currentScript` once a preview/proxy has rewritten\n  // the tag. Resolve our own script as a deterministic fallback; without its\n  // data contract the loader silently has empty module URLs and every first\n  // drawer interaction becomes a no-op.\n  const owner = document.currentScript\n    || [...document.scripts].reverse().find((script) => script.src?.includes('laley-ui-loader.js'));\n  if (!owner) return;\n  const version = owner?.dataset.laleyUiVersion || '';\n  const modules = new Map([\n    ['productMedia', {\n      src: owner?.dataset.productMediaSrc || '',\n      ready: () => Boolean(window.LaleyProductMedia),\n    }],\n    ['quantity', {\n      src: owner?.dataset.quantitySrc || '',\n      ready: () => Boolean(window.customElements?.get('quantity-counter')),\n    }],\n    ['overlay', {\n      src: owner?.dataset.overlaySrc || '',\n      styles: [owner?.dataset.overlayCss || ''].filter(Boolean),\n      ready: () => Boolean(window.LaleyOverlaySystem),\n    }],\n    ['hub', {\n      src: owner?.dataset.hubSrc || '',\n      styles: [owner?.dataset.hubCss || ''].filter(Boolean),\n      ready: () => Boolean(window.__laleyKlaviyoHubPresentation),\n    }],\n    ['panel', {\n      src: owner?.dataset.panelSrc || '',\n      styles: [owner?.dataset.panelCss || ''].filter(Boolean),\n      depends: ['productMedia'],\n      ready: () => typeof window.LaleyPanel?.open === 'function',\n    }],\n    ['cart', {\n      src: owner?.dataset.cartSrc || '',\n      depends: ['quantity'],\n      styles: [\n        owner?.dataset.cartCss || '',\n        owner?.dataset.productChoiceCss || '',\n        // The empty-cart discovery block reuses the search panel's .laley-panel__* markup\n        // (trending grid, \"Se alle\" link, result heading), so the cart needs panel CSS too \u2014\n        // otherwise that block opens unstyled (list bullets, default-blue link). Deduped by href.\n        owner?.dataset.panelCss || '',\n      ].filter(Boolean),\n      ready: () => Boolean(window.__laleyCartDrawerCanon),\n    }],\n    ['club', {\n      src: owner?.dataset.clubSrc || '',\n      styles: [owner?.dataset.clubCss || ''].filter(Boolean),\n      ready: () => Boolean(window.customElements?.get('laley-kundeklubb-popup')),\n    }],\n    ['mobile', {\n      src: owner?.dataset.mobileSrc || '',\n      ready: () => Boolean(window.__laleyMobileHeader),\n    }],\n  ]);\n  const pending = new Map();\n  const resourcePending = new Map();\n  const loaded = new Set();\n  const replaying = new WeakSet();\n  const pendingMenuIntent = new WeakSet();\n\n  const panelSelector = [\n    '[data-laley-ui-trigger^=\"panel:\"]',\n    '[data-laley-panel-search-trigger]',\n    '.laley-hv2__mobile-search',\n    '.laley-hv2__action--search',\n  ].join(',');\n  const cartSelector = [\n    '[data-laley-ui-trigger=\"cart\"]',\n    '[data-cart-toggle]',\n    '[aria-controls=\"cart-drawer\"]',\n  ].join(',');\n  const bisSelector = [\n    '[data-pdp-atc][data-mode=\"bis\"]',\n    '[data-pdp-sticky-atc][data-mode=\"bis\"]',\n    '.klaviyo-bis-trigger',\n  ].join(',');\n  const customerClubSelector = [\n    // A coming-soon PDP button carries its future signup context from first\n    // paint, but `pick` still belongs exclusively to the PDP size validator.\n    // Do not lazy-open Kundeklubb until the exact variant has been selected and\n    // the PDP controller changes the action to `kundeklubb`.\n    '[data-kk-open]:not([data-mode=\"pick\"]):not([data-mode=\"unavailable\"])',\n    '[data-kk-badge]',\n    '[data-pdp-atc][data-mode=\"kundeklubb\"]',\n    '[data-pdp-sticky-atc][data-mode=\"kundeklubb\"]',\n  ].join(',');\n  const favoritesSelector = 'a[href^=\"#k-hub\"]';\n  const sizeGuideSelector = '[data-pdp-sizeguide-open]';\n  /* Filter and sort open the same lazy-loaded overlay. Keep both triggers in the\n     same intent contract so a first interaction can never expose the unstyled\n     inline fallback while the shared overlay module is still idle. */\n  const filterSelector = '[data-co-filter-panel-toggle],[data-co-sort-open]';\n  const mobileMenuSelector = '.laley-hv2__hamburger[data-drawer-toggle=\"hamburger\"]';\n  const intentSelector = `${panelSelector},${cartSelector},${bisSelector},${customerClubSelector},${favoritesSelector},${sizeGuideSelector},${filterSelector},${mobileMenuSelector}`;\n  const cartPrimeSelector = [\n    '[data-laley-ui-prime=\"cart\"]',\n    cartSelector,\n    '[data-pdp-atc]',\n    '[data-add-to-cart]',\n    'form[action*=\"/cart/add\"] [type=\"submit\"]',\n    '.laley-ctl__add',\n  ].join(',');\n  const primeSelector = `${panelSelector},${bisSelector},${cartPrimeSelector},${customerClubSelector},${favoritesSelector},${sizeGuideSelector},${filterSelector},${mobileMenuSelector}`;\n\n  const emit = (name, detail = {}) => {\n    document.dispatchEvent(new CustomEvent(name, {\n      bubbles: true,\n      detail: { version, ...detail },\n    }));\n  };\n\n  const normalizedUrl = (url) => new URL(url, document.baseURI).href;\n  const styleIsReady = (url) => {\n    if (!url) return true;\n    const href = normalizedUrl(url);\n    const link = [...document.querySelectorAll('link[rel=\"stylesheet\"]')]\n      .find((candidate) => candidate.href === href);\n    return Boolean(link && (link.sheet || link.dataset.laleyUiState === 'ready'));\n  };\n\n  const isReady = (key) => {\n    const module = modules.get(key);\n    if (!module) return false;\n    const dependenciesReady = (module.depends || []).every(isReady);\n    const stylesReady = (module.styles || []).every(styleIsReady);\n    return Boolean(dependenciesReady && (loaded.has(key) || (module.ready() && stylesReady)));\n  };\n\n  const loadStylesheet = (url, key) => {\n    if (!url || styleIsReady(url)) return Promise.resolve(url);\n    const href = normalizedUrl(url);\n    if (resourcePending.has(href)) return resourcePending.get(href);\n\n    const promise = new Promise((resolve, reject) => {\n      let link = [...document.querySelectorAll('link[rel=\"stylesheet\"]')]\n        .find((candidate) => candidate.href === href);\n      const created = !link;\n\n      const succeed = () => {\n        link.dataset.laleyUiState = 'ready';\n        resolve(href);\n      };\n      const fail = () => {\n        resourcePending.delete(href);\n        link.dataset.laleyUiState = 'error';\n        if (created) link.remove();\n        reject(new Error(`Unable to load Laley UI stylesheet: ${key}`));\n      };\n\n      if (!link) {\n        link = document.createElement('link');\n        link.rel = 'stylesheet';\n        link.href = href;\n        link.dataset.laleyUiStyle = key;\n        link.dataset.laleyUiState = 'loading';\n      }\n\n      if (link.sheet || link.dataset.laleyUiState === 'ready') {\n        succeed();\n        return;\n      }\n      link.addEventListener('load', succeed, { once: true });\n      link.addEventListener('error', fail, { once: true });\n      if (created) document.head.appendChild(link);\n    });\n\n    resourcePending.set(href, promise);\n    return promise;\n  };\n\n  const loadScriptResource = (key) => {\n    const module = modules.get(key);\n    if (!module?.src || module.ready()) return Promise.resolve(key);\n    const resourceKey = normalizedUrl(module.src);\n    if (resourcePending.has(resourceKey)) return resourcePending.get(resourceKey);\n\n    const promise = new Promise((resolve, reject) => {\n      const selector = `script[data-laley-ui-module=\"${key}\"]`;\n      let script = document.querySelector(selector);\n      const created = !script;\n\n      const succeed = () => {\n        script.dataset.laleyUiState = 'ready';\n        resolve(key);\n      };\n      const fail = () => {\n        resourcePending.delete(resourceKey);\n        script.dataset.laleyUiState = 'error';\n        if (created) script.remove();\n        reject(new Error(`Unable to load Laley UI module: ${key}`));\n      };\n\n      if (!script) {\n        script = document.createElement('script');\n        script.src = module.src;\n        script.async = true;\n        script.dataset.laleyUiModule = key;\n        script.dataset.laleyUiState = 'loading';\n      }\n\n      if (script.dataset.laleyUiState === 'ready' || module.ready()) {\n        succeed();\n        return;\n      }\n      script.addEventListener('load', succeed, { once: true });\n      script.addEventListener('error', fail, { once: true });\n      if (created) document.head.appendChild(script);\n    });\n\n    resourcePending.set(resourceKey, promise);\n    return promise;\n  };\n\n  const loadModule = (key) => {\n    const module = modules.get(key);\n    if (!module || isReady(key)) {\n      if (module) loaded.add(key);\n      return Promise.resolve(key);\n    }\n    if (pending.has(key)) return pending.get(key);\n\n    const promise = Promise.all((module.depends || []).map(loadModule)).then(() => Promise.all([\n      ...(module.styles || []).map((url) => loadStylesheet(url, key)),\n      loadScriptResource(key),\n    ])).then(() => {\n      loaded.add(key);\n      pending.delete(key);\n      emit('laley:ui:module-ready', { module: key });\n      return key;\n    }).catch((error) => {\n      pending.delete(key);\n      emit('laley:ui:module-error', { module: key });\n      throw error;\n    });\n\n    pending.set(key, promise);\n    return promise;\n  };\n\n  const load = (surface = 'all') => loadModule('overlay').then(() => {\n    if (surface === 'overlay') return 'overlay';\n    if (surface === 'panel') return loadModule('panel');\n    if (surface === 'cart') return loadModule('cart');\n    if (surface === 'club') return loadModule('club');\n    if (surface === 'hub') return loadModule('hub');\n    if (surface === 'mobile') return loadModule('mobile');\n    return Promise.all([loadModule('panel'), loadModule('cart')]);\n  });\n\n  const closest = (event, selector) => {\n    const target = event.target?.nodeType === 1 ? event.target : event.target?.parentElement;\n    return target?.closest?.(selector) || null;\n  };\n  const contractFor = (trigger) => trigger?.dataset?.laleyUiTrigger\n    || trigger?.dataset?.laleyUiPrime\n    || '';\n  const surfaceFor = (trigger) => {\n    const contract = contractFor(trigger);\n    if (contract === 'cart') return 'cart';\n    if (contract.startsWith('panel:')) return 'panel';\n    if (trigger?.matches?.(mobileMenuSelector)) return 'mobile';\n    if (trigger?.matches?.(favoritesSelector)) return 'hub';\n    if (trigger?.matches?.(sizeGuideSelector)) return 'overlay';\n    if (trigger?.matches?.(filterSelector)) return 'overlay';\n    if (trigger?.matches?.(customerClubSelector)) return 'club';\n    if (trigger?.matches?.(bisSelector)) return 'club';\n    return trigger?.matches?.(cartPrimeSelector) ? 'cart' : 'panel';\n  };\n\n  // A discount badge and a product waitlist intentionally share the lazy-loaded\n  // Kundeklubb controller, but not the same presentation. Only the compact offer\n  // badge may request the conversion popup. Product/stock triggers default to the\n  // signup sidebar so a previously warmed module can never change their UX.\n  const clubModeFor = (action, club) => {\n    if (action?.matches?.('[data-kk-waitlist], [data-kk-restock]')) return 'sidebar';\n    if (action?.matches?.('[data-kk-badge-action]')) {\n      return club?.badge?.classList.contains('is-member') ? 'sidebar' : 'conversion';\n    }\n    return action?.getAttribute?.('data-kk-mode') === 'conversion' ? 'conversion' : 'sidebar';\n  };\n\n  const prime = (event) => {\n    const trigger = closest(event, primeSelector);\n    if (trigger) {\n      window.__laleyOverlayLastTrigger = trigger;\n      window.LaleyOverlaySystem?.captureTrigger?.(trigger);\n      load(surfaceFor(trigger)).catch(() => {});\n    }\n  };\n\n  document.addEventListener('pointerdown', prime, { capture: true, passive: true });\n  document.addEventListener('focusin', prime, true);\n  document.addEventListener('keydown', (event) => {\n    if (event.metaKey && event.key.toLowerCase() === 'k' && !isReady('panel')) {\n      event.preventDefault();\n      load('panel')\n        .then(() => window.LaleyPanel?.open('search'))\n        .catch(() => window.location.assign('/search'));\n      return;\n    }\n    if (event.key === 'Enter' || event.key === ' ') prime(event);\n  }, true);\n\n  document.addEventListener('click', (event) => {\n    const trigger = closest(event, intentSelector);\n    if (!trigger || replaying.has(trigger)) return;\n\n    const surface = surfaceFor(trigger);\n    if (surface === 'mobile' && pendingMenuIntent.has(trigger)) {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      return;\n    }\n    if (isReady(surface)) {\n      // PDP purchase actions own size validation, variant context and analytics.\n      // The lazy loader only makes their dependency ready; it must not replace\n      // runPrimaryAction with a generic Kundeklubb open on the capture phase.\n      if (surface === 'club' && trigger.matches?.(\n        '[data-pdp-atc][data-mode=\"bis\"], [data-pdp-sticky-atc][data-mode=\"bis\"], '\n        + '[data-pdp-atc][data-mode=\"kundeklubb\"], [data-pdp-sticky-atc][data-mode=\"kundeklubb\"]'\n      )) return;\n      // The UI loader's capture listener is registered before lazy component\n      // controllers. On a warm customer-club surface it must actively hand the\n      // click to that controller; returning here would let older product/app\n      // capture listeners consume pointer clicks before Kundeklubb sees them.\n      if (surface === 'club') {\n        const clubAction = trigger.matches?.('[data-kk-badge]')\n          ? (event.target?.closest?.('[data-kk-badge-dismiss]')\n            || event.target?.closest?.('[data-kk-badge-action]'))\n          : trigger;\n        const club = document.querySelector('[data-kk-popup]');\n        if (club && clubAction) {\n          event.preventDefault();\n          event.stopPropagation();\n          event.stopImmediatePropagation();\n          if (clubAction.matches?.('[data-kk-badge-dismiss]')) {\n            club.setWithTTL?.(club.badgeDismissKey, 30);\n            club.syncBadgeVisibility?.();\n          } else {\n            club.applyTriggerContent?.(clubAction);\n            club.open?.(true, clubModeFor(clubAction, club));\n          }\n        }\n      }\n      return;\n    }\n\n    /* The mobile header uses a real search input. Let Safari perform its\n       native focus default so the keyboard opens on this first tap even when\n       the search bundle is still cold. Once loaded, transfer the already-open\n       text session to the panel input instead of replaying a synthetic click. */\n    if (surface === 'panel' && trigger.matches?.('[data-laley-header-search-input]')) {\n      load(surface).then(() => {\n        /* The user may have tapped away while assets loaded, or the warm\n           focus handler may already have opened search. Never steal focus,\n           reopen a dismissed panel, or overwrite text typed in its input. */\n        if (!trigger.isConnected || document.activeElement !== trigger) return;\n        window.LaleyPanel?.open('search', {\n          trigger,\n          immediateFocus: true,\n          initialQuery: trigger.value\n        });\n      }).catch(() => {\n        if (trigger.isConnected && document.activeElement === trigger) {\n          const query = new URLSearchParams({ q: trigger.value, type: 'product' });\n          window.location.assign(`/search?${query}`);\n        }\n      });\n      return;\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n    event.stopImmediatePropagation();\n\n    if (surface === 'mobile') {\n      // Repeated taps while a slow connection loads the controller express\n      // one open intent, not a queue of alternating open/close toggles.\n      pendingMenuIntent.add(trigger);\n      trigger.setAttribute('aria-busy', 'true');\n      load(surface).then(() => {\n        // Let the original click finish and every controller finish binding.\n        // Keep the intent guarded until that fresh task actually dispatches.\n        window.setTimeout(() => {\n          pendingMenuIntent.delete(trigger);\n          trigger.removeAttribute('aria-busy');\n          if (!trigger.isConnected || !window.matchMedia('(max-width: 989px)').matches) return;\n          trigger.click();\n        }, 0);\n      }).catch(() => {\n        pendingMenuIntent.delete(trigger);\n        trigger.removeAttribute('aria-busy');\n      });\n      return;\n    }\n\n    load(surface).then(() => {\n      // A cold customer-club click is a complete intent. Replay it in a fresh\n      // task after the custom element has connected; a nested synchronous click\n      // can be swallowed while the PDP and drawer install capture handlers.\n      if (surface === 'club') {\n        window.setTimeout(() => {\n          // The compact customer-club trigger is a two-action control: its\n          // offer button opens the campaign while its adjacent X only dismisses\n          // the trigger. The lazy-loader intentionally matches the shared\n          // wrapper so both controls prime the module, but the replay must keep\n          // the customer's original intent. Replaying the wrapper itself would\n          // not reach either controller action after the module upgrades.\n          const replayTarget = trigger.matches?.('[data-kk-badge]')\n            ? (event.target?.closest?.('[data-kk-badge-dismiss]')\n              || event.target?.closest?.('[data-kk-badge-action]')\n              || trigger.querySelector?.('[data-kk-badge-action]'))\n            : trigger;\n          replayTarget?.click();\n        }, 0);\n        return;\n      }\n      replaying.add(trigger);\n      trigger.click();\n      window.setTimeout(() => replaying.delete(trigger), 0);\n    }).catch(() => {\n      const href = trigger.getAttribute?.('href');\n      if (href && !href.startsWith('#')) window.location.assign(href);\n      else if (surface === 'panel') window.location.assign('/search');\n    });\n  }, true);\n\n  const api = {\n    version,\n    load,\n    isReady,\n    state: () => Object.fromEntries([...modules.keys()].map((key) => [key, isReady(key) ? 'ready' : (pending.has(key) ? 'loading' : 'idle')])),\n  };\n  window.LaleyUI = Object.assign(window.LaleyUI || {}, api);\n  window.LaleyUILoader = window.LaleyUI;\n  window.__laleyUiLoader = 'ready';\n  owner?.setAttribute('data-laley-ui-state', 'ready');\n  emit('laley:ui:ready');\n\n  // The theme editor opens the drawer from section selection, without a\n  // storefront click. Load its presentation before editing or replacing it.\n  if (window.Shopify?.designMode) {\n    const warmEditorCart = (event) => {\n      const target = event?.target;\n      const drawer = event\n        ? (target?.matches?.('#cart-drawer') ? target : target?.querySelector?.('#cart-drawer') || target?.closest?.('#cart-drawer'))\n        : document.getElementById('cart-drawer');\n      if (drawer) load('cart').catch(() => {});\n    };\n    warmEditorCart();\n    ['shopify:section:load', 'shopify:section:select', 'shopify:block:select'].forEach((eventName) => {\n      document.addEventListener(eventName, warmEditorCart);\n    });\n  }\n\n  // Product pages expose the size guide above the fold. Warm the shared\n  // overlay shell as soon as the deferred loader runs so its first opening\n  // follows the same uninterrupted motion contract as every other drawer.\n  // The request stays asynchronous and does not block initial rendering.\n  if (owner?.dataset.laleyUiPrewarmOverlay === 'true') {\n    load('overlay').catch(() => {});\n  }\n\n  if (window.location.hash.toLowerCase().startsWith('#k-hub')) {\n    load('hub').catch(() => {});\n  }\n\n  // Returning shoppers with saved items should not wait for the presentation\n  // bundle on their next tap. Warm only our assets, without opening the hub or\n  // reading/changing any favorite products. New shoppers still load on intent.\n  if (window.LaleyFavoritesTrigger?.getCount() > 0) {\n    const warmFavorites = () => load('hub').catch(() => {});\n    if ('requestIdleCallback' in window) {\n      window.requestIdleCallback(warmFavorites, { timeout: 1600 });\n    } else {\n      window.setTimeout(warmFavorites, 900);\n    }\n  }\n  document.addEventListener('pointerover', (event) => {\n    if (closest(event, favoritesSelector)) load('hub').catch(() => {});\n  }, { passive: true });\n\n  /* Header V2 switches to its hamburger composition at 989px. Preload both\n     persistent header interactions across that entire range. Search cannot\n     be replayed after a cold module load on iOS: the input may receive DOM\n     focus, but the original gesture permission to raise the keyboard has\n     already expired. Warming panel + overlay here makes the first tap native;\n     cart, club and other heavier surfaces remain intent-loaded. */\n  const mobileQuery = window.matchMedia('(max-width: 989px)');\n  const loadMobileHeader = () => {\n    if (!mobileQuery.matches) return;\n    loadModule('mobile').catch(() => {});\n    load('panel').catch(() => {});\n  };\n  loadMobileHeader();\n  mobileQuery.addEventListener?.('change', loadMobileHeader);\n\n  // Kundeklubb er global, men full CSS + controller skal ikke ligge i den\n  // kritiske gjestelasten. Manuelle innganger primes p\u00E5 fokus/pointerdown og\n  // spilles av atomisk. Returflyter lastes straks; automatiske tilbud primes\n  // f\u00F8rst like f\u00F8r de kan \u00E5pne. Componentens egne consent/cooldown-regler er\n  // fortsatt sannhetskilden etter oppgradering av custom elementet.\n  const clubPopup = document.querySelector('[data-kk-popup]');\n  if (clubPopup) {\n    // The compact offer trigger is persistent conversion UI. Prime its lazy\n    // controller during idle time so the very first pointer click cannot race\n    // another capture listener (notably Klaviyo/Recharge on product pages).\n    // CSS + controller remain outside the critical rendering path.\n    if (document.querySelector('[data-kk-badge]')) {\n      const primeOfferTrigger = () => load('club').catch(() => {});\n      if ('requestIdleCallback' in window) {\n        window.requestIdleCallback(primeOfferTrigger, { timeout: 1600 });\n      } else {\n        window.setTimeout(primeOfferTrigger, 900);\n      }\n    }\n\n    const clubReturn = new URLSearchParams(window.location.search);\n    const hasClubReturn = clubReturn.get('lly_club') === 'open' || clubReturn.get('lly_waitlist') === 'open';\n    const hasAutomaticGuestOffer = clubPopup.dataset.enabled === 'true'\n      && clubPopup.dataset.autoOpen === 'true'\n      && clubPopup.dataset.customerLoggedIn !== 'true';\n    if (hasClubReturn) {\n      load('club').catch(() => {});\n    } else if (hasAutomaticGuestOffer) {\n      const pathname = window.location.pathname || '';\n      const isCollectionPage = document.body?.classList.contains('template-collection')\n        || pathname.includes('/collections/');\n      const hasRefinementContext = /(?:[?&](?:co_|filter\\.|sort_by=|page=))/.test(window.location.search || '');\n      const delayMs = Math.max(0, Number(clubPopup.dataset.popupDelayMs) || 0);\n      const warmupMs = Math.min(750, delayMs);\n\n      if (!isCollectionPage && !hasRefinementContext) {\n        const primeAutomaticOffer = () => {\n          if (isReady('club') || pending.has('club')) return;\n          // The custom element reads this in its constructor. Only the small\n          // remainder is scheduled after CSS + JS have loaded, keeping the\n          // merchant-configured opening time approximately unchanged.\n          clubPopup.dataset.popupDelayMs = String(warmupMs);\n          load('club').catch(() => {});\n        };\n        window.setTimeout(primeAutomaticOffer, Math.max(0, delayMs - warmupMs));\n\n        if (clubPopup.dataset.enableExitIntent === 'true' && window.innerWidth > 768) {\n          const primeExitIntent = (event) => {\n            if (event.clientY > 0) return;\n            document.removeEventListener('mouseout', primeExitIntent);\n            const exitPoint = { clientY: event.clientY };\n            load('club')\n              .then(() => document.querySelector('[data-kk-popup]')?.handleExitIntent?.(exitPoint))\n              .catch(() => {});\n          };\n          document.addEventListener('mouseout', primeExitIntent);\n        }\n      }\n    }\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
