

<!DOCTYPE html>

<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">

  <link rel="stylesheet" href="/scratch-pad-open/assets/css/just-the-docs-default.css">

  <link rel="stylesheet" href="/scratch-pad-open/assets/css/just-the-docs-head-nav.css" id="jtd-head-nav-stylesheet">

  <style id="jtd-nav-activation">
  
    .site-nav ul li a {
      background-image: none;
    }

  </style>

  

  
    <script src="/scratch-pad-open/assets/js/vendor/lunr.min.js"></script>
  

  <script src="/scratch-pad-open/assets/js/just-the-docs.js"></script>

  <meta name="viewport" content="width=device-width, initial-scale=1">

  



  <!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Open Source Notepad | The public half of my scratchpad — PRDs, commands, references, and field notes from building cloud-security products.</title>
<meta name="generator" content="Jekyll v3.10.0" />
<meta property="og:title" content="Open Source Notepad" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="The public half of my scratchpad — PRDs, commands, references, and field notes from building cloud-security products." />
<meta property="og:description" content="The public half of my scratchpad — PRDs, commands, references, and field notes from building cloud-security products." />
<link rel="canonical" href="https://ayushaggarwal1.github.io/scratch-pad-open/assets/css/just-the-docs-head-nav.css" />
<meta property="og:url" content="https://ayushaggarwal1.github.io/scratch-pad-open/assets/css/just-the-docs-head-nav.css" />
<meta property="og:site_name" content="Open Source Notepad" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Open Source Notepad" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"The public half of my scratchpad — PRDs, commands, references, and field notes from building cloud-security products.","headline":"Open Source Notepad","url":"https://ayushaggarwal1.github.io/scratch-pad-open/assets/css/just-the-docs-head-nav.css"}</script>
<!-- End Jekyll SEO tag -->


  <!-- IBM Plex Sans + Plex Mono -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap">

<!-- Emoji favicon -->
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3Ctext%20y=%22.9em%22%20font-size=%2290%22%3E%F0%9F%93%93%3C/text%3E%3C/svg%3E">

<meta name="theme-color" content="#ffffff">

<!-- Restore the chosen color scheme before first paint.
     Falls back to the OS preference when nothing is stored. -->
<script>
  (function () {
    try {
      var pref = localStorage.getItem("osn-scheme");
      if (!pref && window.matchMedia &&
          window.matchMedia("(prefers-color-scheme: dark)").matches) {
        pref = "dark";
      }
      if (pref === "dark") {
        var link = document.querySelector(
          'link[rel="stylesheet"][href*="just-the-docs-default"]'
        );
        if (link) {
          link.href = link.href.replace(
            "just-the-docs-default.css",
            "just-the-docs-scratchpad-dark.css"
          );
        }
        var meta = document.querySelector('meta[name="theme-color"]');
        if (meta) meta.setAttribute("content", "#1d222b");
      }
    } catch (e) { /* storage unavailable — keep the default scheme */ }
  })();
</script>


</head>

<body>
  <a class="skip-to-main" href="#main-content">Skip to main content</a>
  <svg xmlns="http://www.w3.org/2000/svg" class="d-none">
  <symbol id="svg-link" viewBox="0 0 24 24">
  <title>Link</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
    <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
  </svg>
</symbol>

  <symbol id="svg-menu" viewBox="0 0 24 24">
  <title>Menu</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu">
    <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>
  </svg>
</symbol>

  <symbol id="svg-arrow-right" viewBox="0 0 24 24">
  <title>Expand</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right">
    <polyline points="9 18 15 12 9 6"></polyline>
  </svg>
</symbol>

  <!-- Feather. MIT License: https://github.com/feathericons/feather/blob/master/LICENSE -->
<symbol id="svg-external-link" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link">
  <title id="svg-external-link-title">(external link)</title>
  <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line>
</symbol>

  
    <symbol id="svg-doc" viewBox="0 0 24 24">
  <title>Document</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file">
    <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>
  </svg>
</symbol>

    <symbol id="svg-search" viewBox="0 0 24 24">
  <title>Search</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search">
    <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>
  </svg>
</symbol>

  
  
    <!-- Bootstrap Icons. MIT License: https://github.com/twbs/icons/blob/main/LICENSE.md -->
<symbol id="svg-copy" viewBox="0 0 16 16">
  <title>Copy</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16">
    <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/>
    <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/>
  </svg>
</symbol>
<symbol id="svg-copied" viewBox="0 0 16 16">
  <title>Copied</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16">
    <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3Zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3Z"/>
    <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5v-1Zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708Z"/>
  </svg>
</symbol>

  
</svg>

  
    <header class="side-bar">
  <div class="site-header">
    <a href="/scratch-pad-open/" class="site-title lh-tight">
  Open Source Notepad

</a>
    <button id="menu-button" class="site-button btn-reset" aria-label="Menu" aria-expanded="false">
      <svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg>
    </button>
  </div>

  <nav aria-label="Main" id="site-nav" class="site-nav">
  
  
    <ul class="nav-list"><li class="nav-list-item"><a href="/scratch-pad-open/" class="nav-list-link">Home</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Notes submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/scratch-pad-open/notes/" class="nav-list-link">Notes</a><ul class="nav-list"><li class="nav-list-item"><a href="/scratch-pad-open/notes/001_notes/notes-1/" class="nav-list-link">Scratch Notes</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="ASPM submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/scratch-pad-open/notes/002_aspm/" class="nav-list-link">ASPM</a><ul class="nav-list"><li class="nav-list-item"><a href="/scratch-pad-open/notes/002_aspm/01-aspm-phase-1/" class="nav-list-link">ASPM Phase 1</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/002_aspm/02-aspm-phase-2/" class="nav-list-link">ASPM Phase 2</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/002_aspm/clouddefense-aspm/" class="nav-list-link">CloudDefense Comparison</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/002_aspm/quality-gates/" class="nav-list-link">Quality Gates Flow</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/002_aspm/bitbucket/bitbucket-docs/" class="nav-list-link">Bitbucket OAuth Setup</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/002_aspm/github/github-docs/" class="nav-list-link">GitHub App Setup</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/002_aspm/gitlab/docs/gitlab/" class="nav-list-link">GitLab App Setup</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="DSPM submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/scratch-pad-open/notes/003_dspm/" class="nav-list-link">DSPM</a><ul class="nav-list"><li class="nav-list-item"><a href="/scratch-pad-open/notes/003_dspm/dspm/" class="nav-list-link">DSPM Overview & Onboarding</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/003_dspm/recognizers/" class="nav-list-link">Presidio Recognizers Reference</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="CIEM submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/scratch-pad-open/notes/004_ciem/" class="nav-list-link">CIEM</a><ul class="nav-list"><li class="nav-list-item"><a href="/scratch-pad-open/notes/004_ciem/01-ciem-permission/" class="nav-list-link">Permission Recommendation</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/004_ciem/02-ciem-permission/" class="nav-list-link">Permission Recommendation MVP</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Integrations submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/scratch-pad-open/notes/005_integrations/" class="nav-list-link">Integrations</a><ul class="nav-list"><li class="nav-list-item"><a href="/scratch-pad-open/notes/005_integrations/jira/jira/" class="nav-list-link">Jira</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/005_integrations/sumo-logic/sumo/" class="nav-list-link">Sumo Logic</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/005_integrations/teams/ms-teams/" class="nav-list-link">Microsoft Teams</a></li></ul></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/006_event-trail/Event-Trail/" class="nav-list-link">Event Trail</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Rule Engine for Assets submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/scratch-pad-open/notes/007_rule-engine-assets/" class="nav-list-link">Rule Engine for Assets</a><ul class="nav-list"><li class="nav-list-item"><a href="/scratch-pad-open/notes/007_rule-engine-assets/RuleEngineForAssetsBE/" class="nav-list-link">Backend Requirements</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/007_rule-engine-assets/RuleEngineForAssets/" class="nav-list-link">Notes & Use Cases</a></li></ul></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/009_name-cloud-account/doc/" class="nav-list-link">Cloud Account Naming</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/011_ticket_template/templates/" class="nav-list-link">Ticket Templates</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/014_openshift/openshift/" class="nav-list-link">OpenShift Onboarding</a></li><li class="nav-list-item"><a href="/scratch-pad-open/notes/017_oracle/oracle/" class="nav-list-link">Oracle Cloud Setup</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Cmds submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/scratch-pad-open/cmds/" class="nav-list-link">Cmds</a><ul class="nav-list"><li class="nav-list-item"><a href="/scratch-pad-open/cmds/001_compliance-custom-script/" class="nav-list-link">Compliance Custom Scripts</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Security Tools Cmds submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/scratch-pad-open/cmds/002_security-tools-cmds/" class="nav-list-link">Security Tools Cmds</a><ul class="nav-list"><li class="nav-list-item"><a href="/scratch-pad-open/cmds/002_security-tools-cmds/betterleaks/" class="nav-list-link">Betterleaks</a></li><li class="nav-list-item"><a href="/scratch-pad-open/cmds/002_security-tools-cmds/checkov/" class="nav-list-link">Checkov</a></li><li class="nav-list-item"><a href="/scratch-pad-open/cmds/002_security-tools-cmds/cloudsplaining/" class="nav-list-link">Cloudsplaining</a></li><li class="nav-list-item"><a href="/scratch-pad-open/cmds/002_security-tools-cmds/cloudsploit/" class="nav-list-link">Cloudsploit</a></li><li class="nav-list-item"><a href="/scratch-pad-open/cmds/002_security-tools-cmds/prowler/" class="nav-list-link">Prowler</a></li></ul></li></ul></li></ul>
  
</nav>


<div class="d-md-block d-none site-footer">
  
  
    <button type="button" class="btn-reset scheme-toggle js-scheme-toggle" aria-live="polite">
  <svg class="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
  <svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg>
  <span class="scheme-toggle-label">dark mode</span>
</button>

<script>
  // This include renders twice (desktop sidebar + mobile footer);
  // initialize once and delegate clicks so both buttons work.
  (function () {
    if (window.__osnSchemeToggle) return;
    window.__osnSchemeToggle = true;

    var LIGHT_CSS = "just-the-docs-default.css";
    var DARK_CSS = "just-the-docs-scratchpad-dark.css";

    function themeLink() {
      return document.querySelector(
        'link[rel="stylesheet"][href*="just-the-docs-default"], ' +
        'link[rel="stylesheet"][href*="just-the-docs-scratchpad-dark"]'
      );
    }

    function currentMode() {
      var link = themeLink();
      return link && link.href.indexOf("scratchpad-dark") > -1 ? "dark" : "light";
    }

    function refreshButtons() {
      var dark = currentMode() === "dark";
      var next = dark ? "light" : "dark";
      var buttons = document.querySelectorAll(".js-scheme-toggle");
      for (var i = 0; i < buttons.length; i++) {
        buttons[i].classList.toggle("is-dark", dark);
        buttons[i].querySelector(".scheme-toggle-label").textContent = next + " mode";
        buttons[i].setAttribute("aria-label", "Switch to " + next + " mode");
      }
    }

    function setMode(mode) {
      var link = themeLink();
      if (!link) return;
      link.href = mode === "dark"
        ? link.href.replace(LIGHT_CSS, DARK_CSS)
        : link.href.replace(DARK_CSS, LIGHT_CSS);
      var meta = document.querySelector('meta[name="theme-color"]');
      if (meta) meta.setAttribute("content", mode === "dark" ? "#1d222b" : "#ffffff");
      try { localStorage.setItem("osn-scheme", mode); } catch (e) { /* ignore */ }
      refreshButtons();
    }

    document.addEventListener("click", function (event) {
      var button = event.target.closest && event.target.closest(".js-scheme-toggle");
      if (button) setMode(currentMode() === "dark" ? "light" : "dark");
    });

    if (document.readyState === "loading") {
      document.addEventListener("DOMContentLoaded", refreshButtons);
    } else {
      refreshButtons();
    }
  })();
</script>

  
  </div>
</header>

  
  <div class="main" id="top">
    <div id="main-header" class="main-header">
  
    

<div class="search" role="search">
  <div class="search-input-wrap">
    <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search the notepad" autocomplete="off">
    <label for="search-input" class="search-label">
      <span class="sr-only">Search the notepad</span>
      <svg viewBox="0 0 24 24" class="search-icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg>
    </label>
  </div>
  <div id="search-results" class="search-results"></div>
</div>

  
  
  
    <nav aria-label="Auxiliary" class="aux-nav">
  <ul class="aux-nav-list">
    
      <li class="aux-nav-list-item">
        <a href="https://github.com/AyushAggarwal1/scratch-pad-open" class="site-button"
          
          target="_blank" rel="noopener noreferrer"
          
        >
          GitHub
        </a>
      </li>
    
  </ul>
</nav>

  
</div>

    <div class="main-content-wrap">
      
      <div id="main-content" class="main-content">
        <main>
          
            

          

          
            
          
        </main>
        
<hr>
<footer>
  
    <p><a href="#top" id="back-to-top">Back to top</a></p>
  

  <div class="footer-social">
  <a class="footer-social-link" href="https://github.com/AyushAggarwal1" target="_blank" rel="noopener noreferrer" aria-label="GitHub — AyushAggarwal1" title="GitHub">
    <svg viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
  </a>
  <a class="footer-social-link" href="https://www.linkedin.com/in/ayushaggarwalin/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn — ayushaggarwalin" title="LinkedIn">
    <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.55v-5.57c0-1.33-.03-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.35V9h3.41v1.56h.05c.47-.9 1.63-1.85 3.36-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.06 2.06 0 1 1 0-4.12 2.06 2.06 0 0 1 0 4.12zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.72v20.55C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.73V1.72C24 .77 23.2 0 22.22 0z"/></svg>
  </a>
  <a class="footer-social-link" href="mailto:ayushaggarwal1136@gmail.com" aria-label="Email — ayushaggarwal1136@gmail.com" title="Email">
    <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4-8 5-8-5V6l8 5 8-5v2z"/></svg>
  </a>
</div><p class="text-small mb-0">© 2026 Ayush Aggarwal. Notes are living documents — they change as I learn, update, and reorganize them.</p>

  
    <div class="d-flex mt-2">
      
      
        <p class="text-small mb-0">
          <a href="https://github.com/AyushAggarwal1/scratch-pad-open/tree/main/assets/css/just-the-docs-head-nav.css" id="edit-this-page">Edit this page on GitHub</a>
        </p>
      
    </div>
  <div class="d-md-none mt-4 fs-2">
    
    
      <button type="button" class="btn-reset scheme-toggle js-scheme-toggle" aria-live="polite">
  <svg class="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
  <svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg>
  <span class="scheme-toggle-label">dark mode</span>
</button>

<script>
  // This include renders twice (desktop sidebar + mobile footer);
  // initialize once and delegate clicks so both buttons work.
  (function () {
    if (window.__osnSchemeToggle) return;
    window.__osnSchemeToggle = true;

    var LIGHT_CSS = "just-the-docs-default.css";
    var DARK_CSS = "just-the-docs-scratchpad-dark.css";

    function themeLink() {
      return document.querySelector(
        'link[rel="stylesheet"][href*="just-the-docs-default"], ' +
        'link[rel="stylesheet"][href*="just-the-docs-scratchpad-dark"]'
      );
    }

    function currentMode() {
      var link = themeLink();
      return link && link.href.indexOf("scratchpad-dark") > -1 ? "dark" : "light";
    }

    function refreshButtons() {
      var dark = currentMode() === "dark";
      var next = dark ? "light" : "dark";
      var buttons = document.querySelectorAll(".js-scheme-toggle");
      for (var i = 0; i < buttons.length; i++) {
        buttons[i].classList.toggle("is-dark", dark);
        buttons[i].querySelector(".scheme-toggle-label").textContent = next + " mode";
        buttons[i].setAttribute("aria-label", "Switch to " + next + " mode");
      }
    }

    function setMode(mode) {
      var link = themeLink();
      if (!link) return;
      link.href = mode === "dark"
        ? link.href.replace(LIGHT_CSS, DARK_CSS)
        : link.href.replace(DARK_CSS, LIGHT_CSS);
      var meta = document.querySelector('meta[name="theme-color"]');
      if (meta) meta.setAttribute("content", mode === "dark" ? "#1d222b" : "#ffffff");
      try { localStorage.setItem("osn-scheme", mode); } catch (e) { /* ignore */ }
      refreshButtons();
    }

    document.addEventListener("click", function (event) {
      var button = event.target.closest && event.target.closest(".js-scheme-toggle");
      if (button) setMode(currentMode() === "dark" ? "light" : "dark");
    });

    if (document.readyState === "loading") {
      document.addEventListener("DOMContentLoaded", refreshButtons);
    } else {
      refreshButtons();
    }
  })();
</script>

    
  </div>
</footer>

      </div>
    </div>
    
      

<div class="search-overlay"></div>

    
  </div>

  
</body>
</html>

