<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <title>john-smulo-platform</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta name="theme-color" content="#000000" />
  <meta name="description" content="Web site created using create-react-app" />
  <link rel="icon" href="/assets/images/johnSmuloFavicon-1775007623210.png" />
  <link rel="manifest" href="/manifest.json" />

  <script>
    (function() {
      // ── Completely different approach ──────────────────────────────────────
      // Instead of trying to intercept event listeners (which failed because
      // rocket-web.js is a module that runs after this script and re-registers
      // its own raw handlers), we intercept at the PROPERTY level on the
      // Location object so ANY code — including platform scripts — is blocked
      // from changing the URL after the app has mounted.

      var _appMounted = false;
      var _currentPath = window.location.pathname + window.location.search + window.location.hash;

      // Mark app as mounted after first render tick
      window.__markAppMounted = function() {
        _appMounted = true;
        _currentPath = window.location.pathname + window.location.search + window.location.hash;
      };

      // 1. Override location.reload with a permanent no-op
      try {
        var reloadDescriptor = Object.getOwnPropertyDescriptor(window.location, 'reload') ||
                               Object.getOwnPropertyDescriptor(Location.prototype, 'reload');
        Object.defineProperty(window.location, 'reload', {
          configurable: true,
          writable: true,
          value: function() { /* blocked */ }
        });
      } catch(e) {}

      // Also override on prototype as fallback
      try {
        Object.defineProperty(Location.prototype, 'reload', {
          configurable: true,
          writable: true,
          value: function() { /* blocked */ }
        });
      } catch(e) {}

      // 2. Intercept window.location.href setter — the primary way platform
      //    scripts trigger a reload (assigning a new URL with _cb param)
      try {
        var locProto = Location.prototype;
        var origHrefDescriptor = Object.getOwnPropertyDescriptor(locProto, 'href');
        if (origHrefDescriptor && origHrefDescriptor.set) {
          var origHrefSet = origHrefDescriptor.set;
          Object.defineProperty(locProto, 'href', {
            configurable: true,
            enumerable: true,
            get: origHrefDescriptor.get,
            set: function(url) {
              // If the URL contains _cb (cache-bust param), strip it and use
              // history.replaceState instead of a real navigation
              if (typeof url === 'string' && url.indexOf('_cb=') !== -1) {
                try {
                  var parsed = new URL(url, window.location.origin);
                  parsed.searchParams.delete('_cb');
                  var clean = parsed.pathname + (parsed.search || '') + (parsed.hash || '');
                  window.history.replaceState(null, '', clean);
                } catch(e2) {}
                return;
              }
              // Block any same-origin navigation that would reload the current
              // page after the app has mounted (tab-switch triggered reload)
              if (_appMounted && typeof url === 'string') {
                try {
                  var target = new URL(url, window.location.origin);
                  var current = new URL(window.location.href);
                  // Same page reload attempt — block it
                  if (target.pathname === current.pathname && target.hostname === current.hostname) {
                    return;
                  }
                } catch(e3) {}
              }
              origHrefSet.call(this, url);
            }
          });
        }
      } catch(e) {}

      // 3. Intercept location.assign and location.replace
      try {
        var origAssign = Location.prototype.assign;
        Object.defineProperty(Location.prototype, 'assign', {
          configurable: true,
          writable: true,
          value: function(url) {
            if (typeof url === 'string' && url.indexOf('_cb=') !== -1) {
              try {
                var parsed = new URL(url, window.location.origin);
                parsed.searchParams.delete('_cb');
                window.history.replaceState(null, '', parsed.pathname + (parsed.search || '') + (parsed.hash || ''));
              } catch(e) {}
              return;
            }
            if (_appMounted && typeof url === 'string') {
              try {
                var target = new URL(url, window.location.origin);
                var current = new URL(window.location.href);
                if (target.pathname === current.pathname && target.hostname === current.hostname) return;
              } catch(e) {}
            }
            origAssign.call(this, url);
          }
        });
      } catch(e) {}

      try {
        var origReplace = Location.prototype.replace;
        Object.defineProperty(Location.prototype, 'replace', {
          configurable: true,
          writable: true,
          value: function(url) {
            if (typeof url === 'string' && url.indexOf('_cb=') !== -1) {
              try {
                var parsed = new URL(url, window.location.origin);
                parsed.searchParams.delete('_cb');
                window.history.replaceState(null, '', parsed.pathname + (parsed.search || '') + (parsed.hash || ''));
              } catch(e) {}
              return;
            }
            if (_appMounted && typeof url === 'string') {
              try {
                var target = new URL(url, window.location.origin);
                var current = new URL(window.location.href);
                if (target.pathname === current.pathname && target.hostname === current.hostname) return;
              } catch(e) {}
            }
            origReplace.call(this, url);
          }
        });
      } catch(e) {}

      // 4. Strip _cb from history state changes
      var _origHistReplace = window.history.replaceState.bind(window.history);
      var _origHistPush = window.history.pushState.bind(window.history);
      var _cleanUrl = function(url) {
        if (!url || typeof url !== 'string') return url;
        try {
          var parsed = new URL(url, window.location.origin);
          if (parsed.searchParams.has('_cb')) {
            parsed.searchParams.delete('_cb');
            return parsed.pathname + (parsed.search || '') + (parsed.hash || '');
          }
        } catch(e) {}
        return url;
      };
      window.history.replaceState = function(state, title, url) {
        return _origHistReplace(state, title, _cleanUrl(url));
      };
      window.history.pushState = function(state, title, url) {
        return _origHistPush(state, title, _cleanUrl(url));
      };

      // 5. As a final safety net, listen for visibilitychange ourselves
      //    FIRST (capture phase) and restore the URL if it gets changed
      document.addEventListener('visibilitychange', function() {
        if (document.visibilityState === 'visible') {
          // After a short tick, if the URL changed back to a _cb URL, fix it
          setTimeout(function() {
            if (window.location.search.indexOf('_cb=') !== -1) {
              var parsed = new URL(window.location.href);
              parsed.searchParams.delete('_cb');
              _origHistReplace(null, '', parsed.pathname + (parsed.search || '') + (parsed.hash || ''));
            }
          }, 0);
        }
      }, true);

    })();
  </script>

  <!-- Google tag (gtag.js) -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=G-L6LL1GYM1C"></script>
  <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', 'G-L6LL1GYM1C');
  </script>
  
  <script type="module" async src="https://static.rocket.new/rocket-web.js?_cfg=https%3A%2F%2Fjohnsmulo5614back.builtwithrocket.new&_be=https%3A%2F%2Fappanalytics.rocket.new&_v=0.1.17"></script>
  <script type="module" defer src="https://static.rocket.new/rocket-shot.js?v=0.0.2"></script>
    <script type="module" crossorigin src="/assets/index-mj_ZUyQv.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-Ck7IQTql.css">
  </head>

<body>
  <noscript>You need to enable JavaScript to run this app.</noscript>
  <div class="dhiwise-code" id="root"></div>
</body>

</html>