{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/fkacFTJOQlMUuzw2H7kQ/VNmdKh7bIconn8eZ8QBH/siteMetadata.js"],
  "sourcesContent": ["// Generated by Framer (3d4fa65)\nconst valuesByLocaleId={};function getLocalizedValue(key,locale){while(locale){const values=valuesByLocaleId[locale.id];if(values){const value=values[key];if(value)return value;}locale=locale.fallback;}}export default function metadata(params,activeLocale){return{customHTMLBodyEnd:'<!-- Google Tag Manager (noscript) -->\\n<noscript><iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-N3R8V622\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe></noscript>\\n<!-- End Google Tag Manager (noscript) -->\\n\\n\\n\\n',customHTMLHeadEnd:\"<link rel=\\\"canonical\\\" href=\\\"https://www.datascienceinstitute.net\\\">\\n\\n<!-- Google Tag Manager -->\\n<script>\\n  (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\\n  new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\\n  j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\\n  'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\\n  })(window,document,'script','dataLayer','GTM-N3R8V622');\\n</script>\\n<!-- End Google Tag Manager -->\\n\\n<!-- Start of HubSpot Embed Code -->\\n<script type=\\\"text/javascript\\\" id=\\\"hs-script-loader\\\" async=\\\"\\\" defer=\\\"\\\" src=\\\"//js-eu1.hs-scripts.com/25727595.js\\\"></script>\\n<!-- End of HubSpot Embed Code -->\\n\\n<!-- G-TEGC7S4F6X (comment only; safe to leave or delete) -->\\n\\n<script>\\n(function () {\\n  function fixLinks () {\\n    console.log('[links fixed]');\\n    document.querySelectorAll('a[href]').forEach(a => {\\n      const h = a.getAttribute('href');\\n      if (!h) return;\\n\\n      /* strip same-origin absolute URLs that contain /za (keep diploma) */\\n      if (h.startsWith(location.origin + '/za') &&\\n          h !== location.origin + '/za/postgraduate-diploma-in-data-science') {\\n        a.setAttribute('href', h.replace(location.origin + '/za', '') || '/');\\n      }\\n      /* strip root-relative /za paths (keep diploma) */\\n      else if (h.startsWith('/za') && h !== '/za/postgraduate-diploma-in-data-science') {\\n        a.setAttribute('href', h.replace(/^\\\\/za/, '') || '/');\\n      }\\n      /* add leading \u201C/\u201D to plain slugs */\\n      else if (!h.startsWith('/') && !h.startsWith('#') && !h.startsWith('http')) {\\n        a.setAttribute('href', '/' + h.replace(/^\\\\/+/, ''));\\n      }\\n    });\\n  }\\n  window.fixLinks = fixLinks;\\n\\n  function stripZa () {\\n    const p = window.location.pathname;\\n    if (p.startsWith('/za') && p !== '/za/postgraduate-diploma-in-data-science') {\\n      history.replaceState({}, '', p.replace(/^\\\\/za/, '') || '/');\\n    }\\n  }\\n  function onDiplomaPage () {\\n    const p = window.location.pathname;\\n    return p === \\\"/postgraduate-diploma-in-data-science\\\" ||\\n           p === \\\"/za/postgraduate-diploma-in-data-science\\\";\\n  }\\n  function getCountry () {\\n    const cached = sessionStorage.getItem(\\\"geoCode\\\");\\n    if (cached) return Promise.resolve(cached);\\n\\n    const ipapi  = \\\"https://ipapi.co/json/\\\";\\n    const backup = \\\"https://api.country.is/\\\";\\n\\n    return fetch(ipapi)\\n      .then(r => r.ok ? r.json() : Promise.reject())\\n      .catch(() => fetch(backup).then(r => r.json()))\\n      .then(d => {\\n        const code = (d.country_code || d.country || \\\"\\\").toLowerCase();\\n        sessionStorage.setItem(\\\"geoCode\\\", code);\\n        return code;\\n      });\\n  }\\n\\n  /* 3 \u2014 redirect routine */\\n  function handleRedirect () {\\n    stripZa(); \\n    if (!onDiplomaPage()) { fixLinks(); return; }\\n    if (window.location.hostname.includes(\\\"framer\\\")) { fixLinks(); return; }\\n    if (window.location.hash) { fixLinks(); return; }                 // keep anchor scrolls\\n\\n    setTimeout(() => {\\n      const allowed = {\\n        za  : \\\"/za/postgraduate-diploma-in-data-science\\\",\\n        intl: \\\"/postgraduate-diploma-in-data-science\\\"\\n      };\\n\\n      /* ISO-2 codes only (values set to 1) */\\n      const africa = \\\"dz eg ly ma sd tn bj bf cv gm gh gn gw ci lr ml mr ne ng sn sl tg bi cm cf td cg cd gq ga st ao bw sz ls na mw mz za zm zw ke et dj er so ss tz ug rw km mg mu sc\\\"\\n                     .split(\\\" \\\")\\n                     .reduce((o,c)=>(o[c]=1,o),{});\\n\\n      getCountry()\\n        .then(code => {\\n          const target = africa.hasOwnProperty(code) ? allowed.za : allowed.intl;\\n          if (window.location.pathname !== target) {\\n            console.log(`\uD83C\uDF0D User from ${code.toUpperCase()}, redirecting \u2192 ${target}`);\\n            window.location.replace(target);\\n          } else {\\n            console.log(\\\"\u2705 Already on correct page.\\\");\\n          }\\n        })\\n        .catch(err => {\\n          console.error(\\\"\uD83C\uDF10 Geo-IP failed:\\\", err);\\n          if (window.location.pathname !== allowed.intl) {\\n            window.location.replace(allowed.intl);\\n          }\\n        })\\n        .finally(fixLinks);\\n    }, 100);\\n  }\\n\\n  /* first run */\\n  handleRedirect();\\n  fixLinks();\\n\\n  /* patch SPA navigation */\\n  const p = history.pushState, r = history.replaceState;\\n  history.pushState    = function () { p.apply(history, arguments); handleRedirect(); fixLinks(); };\\n  history.replaceState = function () { r.apply(history, arguments); handleRedirect(); fixLinks(); };\\n  window.addEventListener(\\\"popstate\\\", () => { handleRedirect(); fixLinks(); });\\n\\n  /* intercept clicks that still point at /za... */\\n  document.addEventListener('click', e => {\\n    const a = e.target.closest('a[href]');\\n    if (!a) return;\\n    const h = (a.dataset.framerPage || a.getAttribute('href')) ?? '';\\n    if (h.startsWith('/za') && h !== '/za/postgraduate-diploma-in-data-science') {\\n      e.preventDefault();                               // stop Framer nav\\n      history.pushState({}, '', h.replace(/^\\\\/za/, '') || '/');\\n      handleRedirect();\\n      fixLinks();\\n    }\\n  }, true);   // capture phase \u2013 runs BEFORE Framer\u2019s router\\n})();\\n</script>\\n\\n<script>\\n(function(){\\nconst clean = () => { window.fixLinks && window.fixLinks(); };\\ndocument.addEventListener('framer:hydrated', clean);\\n\\nconst startObserver = () => {\\n  new MutationObserver(() => clean())\\n    .observe(document.body, {\\n      childList:true,\\n      subtree:true,\\n      attributes:true,               /* \u2190 watch attribute edits   */\\n      attributeFilter:['href','data-framer-page']\\n    });\\n};\\n\\nif (document.body) startObserver();\\nelse window.addEventListener('DOMContentLoaded', startObserver);\\n})();\\n</script>\",description:\"The Data Science Institute offers accredited postgraduate courses and professional certifications in Data Science and AI. Gain industry-focused qualifications through flexible online learning\",favicon:\"https://framerusercontent.com/assets/Y2MMnnLpszXPluHFyx5XTpOs.svg\",robots:\"max-image-preview:large\",title:\"Data Science Institute\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "AAC0N,SAARA,EAA0BC,EAAOC,EAAa,CAAC,MAAM,CAAC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAgQ,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAA2sL,YAAY,kMAAkM,QAAQ,oEAAoE,OAAO,0BAA0B,MAAM,wBAAwB,CAAE",
  "names": ["metadata", "params", "activeLocale"]
}
