{"version":3,"file":"siteMetadata.BAghRGwt.mjs","names":[],"sources":["https:/framerusercontent.com/modules/52eynTZeE0MxqbN1tr02/DIMQIfxlAqI82cnjsD5M/siteMetadata.js"],"sourcesContent":["// Generated by Framer (84a2f33)\nexport default function metadata(params,activeLocale){return{customHTMLBodyEnd:\"\\n<script>(function(w){w.fpr=w.fpr||function(){w.fpr.q = w.fpr.q||[];w.fpr.q[arguments[0]=='set'?'unshift':'push'](arguments);};})(window);\\nfpr(\\\"init\\\", {cid:\\\"18obd0e9\\\"}); \\nfpr(\\\"click\\\");\\n</script>\\n<script src=\\\"https://cdn.firstpromoter.com/fpr.js\\\" async=\\\"\\\"></script>\\n\\n<script>\\n  // Track which links we've already processed\\n  const processedLinks = new WeakSet();\\n  let isMonitoring = false;\\n  let retryInterval = null;\\n  \\n  function getFPTid() {\\n    return window.FPROM && window.FPROM.data && window.FPROM.data.tid;\\n  }\\n  \\n  function processPaymentLinks() {\\n    const tid = getFPTid();\\n    if (!tid) {\\n      console.log('FirstPromoter tracking ID not available yet');\\n      return 0;\\n    }\\n    \\n    const stripePaymentLinks = document.querySelectorAll('a[href^=\\\"https://buy.stripe.com/\\\"]');\\n    let updatedCount = 0;\\n    \\n    stripePaymentLinks.forEach(function(link) {\\n      // Skip if already processed\\n      if (processedLinks.has(link)) {\\n        return;\\n      }\\n      \\n      const oldUrl = link.getAttribute(\\\"href\\\");\\n      try {\\n        const url = new URL(oldUrl);\\n        // Only update if not already set\\n        if (!url.searchParams.has('client_reference_id')) {\\n          url.searchParams.set('client_reference_id', tid);\\n          link.setAttribute(\\\"href\\\", url.toString());\\n          processedLinks.add(link);\\n          updatedCount++;\\n          console.log('Updated payment link:', link);\\n        } else {\\n          // Mark as processed even if it already has the parameter\\n          processedLinks.add(link);\\n        }\\n      } catch (e) {\\n        console.error('Error updating payment link:', e, oldUrl);\\n      }\\n    });\\n    \\n    if (updatedCount > 0) {\\n      console.log(`Updated ${updatedCount} new payment links with tracking ID: ${tid}`);\\n    }\\n    \\n    return updatedCount;\\n  }\\n  \\n  function startMonitoring() {\\n    if (isMonitoring) return;\\n    isMonitoring = true;\\n    \\n    console.log('Starting payment link monitoring...');\\n    \\n    // Use MutationObserver for efficient monitoring\\n    if (window.MutationObserver) {\\n      const observer = new MutationObserver(function(mutations) {\\n        // Debounce processing\\n        clearTimeout(observer.timeout);\\n        observer.timeout = setTimeout(() => {\\n          processPaymentLinks();\\n        }, 100);\\n      });\\n      \\n      observer.observe(document.body, {\\n        childList: true,\\n        subtree: true,\\n        attributes: true,\\n        attributeFilter: ['href']\\n      });\\n      \\n      console.log('Using MutationObserver for link monitoring');\\n    }\\n    \\n    // Also poll every second as backup (for cases MutationObserver might miss)\\n    retryInterval = setInterval(() => {\\n      processPaymentLinks();\\n    }, 1000);\\n    \\n    // Initial processing with exponential backoff for FirstPromoter loading\\n    let retryCount = 0;\\n    const maxRetries = 5;\\n    \\n    function initialProcess() {\\n      if (!getFPTid() && retryCount < maxRetries) {\\n        const delay = 100 * Math.pow(2, retryCount);\\n        console.log(`FirstPromoter not ready, retrying in ${delay}ms`);\\n        retryCount++;\\n        setTimeout(initialProcess, delay);\\n      } else {\\n        processPaymentLinks();\\n      }\\n    }\\n    \\n    initialProcess();\\n  }\\n  \\n  // Start monitoring when DOM is ready\\n  if (document.readyState === 'loading') {\\n    document.addEventListener('DOMContentLoaded', startMonitoring);\\n  } else {\\n    startMonitoring();\\n  }\\n  \\n  // Listen for SPA navigation events (works with most routers)\\n  let lastUrl = location.href;\\n  new MutationObserver(() => {\\n    const url = location.href;\\n    if (url !== lastUrl) {\\n      lastUrl = url;\\n      console.log('URL changed, processing payment links...');\\n      setTimeout(processPaymentLinks, 100); // Small delay for DOM to update\\n    }\\n  }).observe(document, {subtree: true, childList: true});\\n  \\n  // Also listen for common SPA navigation events\\n  window.addEventListener('popstate', () => {\\n    setTimeout(processPaymentLinks, 100);\\n  });\\n  \\n  // For SPAs that dispatch custom events\\n  window.addEventListener('routeChange', () => {\\n    setTimeout(processPaymentLinks, 100);\\n  });\\n</script>\\n<!-- Plugin: 33d9eb --> <script type=\\\"text/javascript\\\" id=\\\"hs-script-loader\\\" async=\\\"\\\" defer=\\\"\\\" src=\\\"//js-eu1.hs-scripts.com/48103084.js\\\"></script>\",customHTMLHeadEnd:\"<!-- Google tag (gtag.js) -->\\n<script async=\\\"\\\" src=\\\"https://www.googletagmanager.com/gtag/js?id=AW-17237500201\\\">\\n</script>\\n<script>\\n  window.dataLayer = window.dataLayer || [];\\n  function gtag(){dataLayer.push(arguments);}\\n  gtag('js', new Date());\\n\\n  gtag('config', 'AW-17237500201');\\n</script>\\n\\n\\n<script type=\\\"text/javascript\\\">\\n    (function(c,l,a,r,i,t,y){\\n        c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};\\n        t=l.createElement(r);t.async=1;t.src=\\\"https://www.clarity.ms/tag/\\\"+i;\\n        y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);\\n    })(window, document, \\\"clarity\\\", \\\"script\\\", \\\"kxzkrsq4ms\\\");\\n</script>\\n<script>(function(w){w.fpr=w.fpr||function(){w.fpr.q = w.fpr.q||[];w.fpr.q[arguments[0]=='set'?'unshift':'push'](arguments);};})(window);\\nfpr(\\\"init\\\", {cid:\\\"18obd0e9\\\"}); \\nfpr(\\\"click\\\");\\n</script>\\n<script src=\\\"https://cdn.firstpromoter.com/fpr.js\\\" async=\\\"\\\"></script>\\n\\n<!-- Meta Pixel Code -->\\n<script>\\n!function(f,b,e,v,n,t,s)\\n{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\\nn.callMethod.apply(n,arguments):n.queue.push(arguments)};\\nif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\\nn.queue=[];t=b.createElement(e);t.async=!0;\\nt.src=v;s=b.getElementsByTagName(e)[0];\\ns.parentNode.insertBefore(t,s)}(window, document,'script',\\n'https://connect.facebook.net/en_US/fbevents.js');\\nfbq('init', '1533692663974167');\\nfbq('track', 'PageView');\\n</script>\\n<noscript></noscript>\",description:\"Turn WhatsApp and Instagram Chats Into Qualified Leads and Booked Appointments While You Finally Get Some Rest.\",favicon:\"https://framerusercontent.com/assets/OLS343N9E9QK9yTzlEsGbLiF1M.png\",robots:\"max-image-preview:large\",title:\"DM Champ - Your 24/7 AI Sales Assistant\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"oDACA,SAAwB,EAAS,EAAO,EAAa,CAAC,MAAM,CAAC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qJAA0zI,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAA+8C,YAAY,kHAAkH,QAAQ,sEAAsE,OAAO,0BAA0B,MAAM,0CAA0C"}