1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4
4<script> 5 (function () { 6 var proto = XMLHttpRequest.prototype; 7 var open = proto.open, setRequestHeader = proto.setRequestHeader, send = proto.send; 8 var TOKEN_KEY = 'base44_access_token'; 9 var storedTokenHeader = function () { 10 try { return 'Bearer ' + localStorage.getItem(TOKEN_KEY); } catch (e) { return null; } 11 }; 12 var forgetStoredToken = function () { 13 try { localStorage.removeItem(TOKEN_KEY); localStorage.removeItem('token'); } catch (e) {} 14 }; 15 16 proto.open = function (method, url) { 17 this.__b44IsAuthCheck = /\/entities\/User\/me(\?|$)/.test(url); 18 return open.apply(this, arguments); 19 }; 20 21 proto.setRequestHeader = function (name, value) { 22 if (this.__b44IsAuthCheck && name.toLowerCase() === 'authorization' && value === storedTokenHeader()) { 23 this.__b44SentToken = value; 24 } 25 return setRequestHeader.call(this, name, value); 26 }; 27 28 proto.send = function () { 29 this.addEventListener('loadend', function () { 30 var rejectedTokenStillStored = this.status === 401 && this.__b44SentToken === storedTokenHeader(); 31 if (rejectedTokenStillStored) forgetStoredToken(); 32 }); 33 return send.apply(this, arguments); 34 }; 35})(); 36 </script>
36 37 <meta charset="utf-8"/> 38 <link href="https://media.base44.com/images/public/6aa1770c2b29498a17ca5d77/034682fbc_logosmall.png" rel="icon" type="image/png"/> 39 <link href="https://media.base44.com/images/public/6aa1770c2b29498a17ca5d77/034682fbc_logosmall.png" rel="apple-touch-icon"/> 40 <meta content="width=device-width, initial-scale=1.0" name="viewport"/> 41 <meta content="The Ghosh Innovation Lab builds safety infrastructure for democracy, empowering women elected officials through Project Resilience." name="description"/> 42 <link href="/manifest.json" rel="manifest"/> 43 <link href="https://fonts.googleapis.com" rel="preconnect"/> 44 <link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/> 45 <link href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet"/> 46 <title> 47 Ghosh Innovation Lab: Safety is infrastructure for democracy 48 </title> 49
49<script crossorigin="" src="/assets/index-JtypD0_Y.js" type="module"> 50 </script>
50 51 <link crossorigin="" href="/assets/index-g3xyyCAP.css" rel="stylesheet"/> 52
52<script type="module"> 53 if (window.self === window.top) { 54 let lastPath = ""; 55 function getPageNameFromPath(path) { 56 const segments = path.split("/").filter(Boolean); 57 return segments[0] || null; 58 } 59 function trackPageView() { 60 const path = window.location.pathname; 61 if (path === lastPath) return; 62 lastPath = path; 63 const pageName = getPageNameFromPath(path) || "home"; 64 const appId = "6aa1770c2b29498a17ca5d77"; 65 if (!appId) return; 66 fetch(`/api/app-logs/${appId}/log-user-in-app/${pageName}`, { 67 method: "POST", 68 }).catch(() => {}); 69 } 70 const originalPushState = history.pushState.bind(history); 71 history.pushState = function (...args) { 72 originalPushState(...args); 73 trackPageView(); 74 }; 75 const originalReplaceState = history.replaceState.bind(history); 76 history.replaceState = function (...args) { 77 originalReplaceState(...args); 78 trackPageView(); 79 }; 80 window.addEventListener("popstate", trackPageView); 81 trackPageView(); 82} 83 </script>
83 84 <meta content="yes" name="mobile-web-app-capable"/> 85 <meta content="black" name="apple-mobile-web-app-status-bar-style"/> 86 <meta content="Ghosh Innovation Lab" name="apple-mobile-web-app-title"/> 87 </head> 88 <body> 89 <div id="root"> 90 </div> 91 </body> 92</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.