1<!DOCTYPE html> 2<html prefix="og: https://ogp.me/ns#"> 3 <head>
vendor: 66 bytes, lines 3-4
3 4 <script src="https://www.recaptcha.net/recaptcha/api.js?render=
46LeuiLspAAAAACeY131qvj4K411sWhwO3YnaRQUR
vendor: 12 bytes, line 4
4"></script>
5<script type="text/javascript"> 6 (function(c,l,a,r,i,t,y){ 7 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 8 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 9 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 10 })(window, document, "clarity", "script", "g4vonwmmsj"); 11</script>
vendor: 1 bytes, line 11
11
12<script> 13window.$crisp = []; 14window.CRISP_WEBSITE_ID = "21e1a69a-5434-44de-acba-26b0eb500278"; 15 16(function() { 17 var d = document; 18 var s = d.createElement("script"); 19 s.src = "https://client.crisp.chat/l.js"; 20 s.async = 1; 21 d.getElementsByTagName("head")[0].appendChild(s); 22})(); 23 24// ADD THIS SAFETY HOOK: 25window.crisp_loaded = false; 26window.CRISP_READY_TRIGGER = function() { 27 window.crisp_loaded = true; 28 // Now it is safe for Crisp to manipulate the DOM 29}; 30</script>
vendor: 1 bytes, line 30
30
31<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous" onerror="adBlockFunction()"></script>
vendor: 1 bytes, line 31
31
32<script> 33 window.googletag = window.googletag || {cmd: []}; 34 35 googletag.cmd.push(function() { 36 googletag.setConfig({ 37 singleRequest: true, 38 collapseDiv: 'ON_NO_FILL', 39 safeFrame: { 40 allowOverlayExpansion: false, 41 allowPushExpansion: false 42 } 43 }); 44 45 googletag.defineSlot('/23372109308/create_map_ad_mobile', [[279, 260], [250, 250]], 'div-gpt-ad-1788434884720-0').addService(googletag.pubads()); 46 47 googletag.defineSlot('/23372109308/create_map_ad', [[576, 260], [300, 250]], 'div-gpt-ad-1788434462598-0').addService(googletag.pubads()); 48 49 googletag.defineSlot('/23372109308/create_map_question_mobile', [[327, 414], [300, 250]], 'div-gpt-ad-1788434955513-0').addService(googletag.pubads()); 50 51 googletag.defineSlot('/23372109308/create_map_question', [[720, 420], [728, 90]], 'div-gpt-ad-1788434923239-0').addService(googletag.pubads()); 52 53 googletag.enableServices(); 54 }); 55</script>
vendor: 1 bytes, line 55
55
56<script> 57 var adBlocker = false; 58 59 function adBlockFunction(){ 60 adBlocker = true; 61 } 62</script>
62 63 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> 64 <meta charset="utf-8"> 65 <meta name="description" content="Create interactive maps from any content. Text, images, AI prompts, questions, CSVs, and URLs all transform into maps instantly with Textomap."/> 66 <meta property="og:type" content="website" /> 67 <meta property="og:title" content="Textomap | Generate Interactive Maps from Text, Images, Prompts & Questions" /> 68 <meta property="og:description" content="Create interactive maps from any content. Text, images, AI prompts, questions, CSVs, and URLs all transform into maps instantly with Textomap."/> 69 <meta property="og:url" content="https://www.textomap.com/student-login/" /> 70 <meta property="og:image" content="https://www.textomap.com/style/images-p/cover.jpg?1" /> 71 <meta property="og:image:url" content="https://www.textomap.com/style/images-p/cover.jpg?1" /> 72 <meta property="og:image:width" content="1200" /> 73 <meta property="og:image:height" content="630" /> 74 <link rel="shortcut icon" href="https://www.textomap.com/style/images-p/favicon.ico" type="image/x-icon"> 75 <link rel="stylesheet" type="text/css" href="https://www.textomap.com/style/bootstrap.min.css"> 76 <link rel="stylesheet" type="text/css" href="https://www.textomap.com/style/jquery-ui.min.css"> 77 <noscript> 78 <style type="text/css"> 79 #mainCtrl {display:none;} 80 </style> 81 <div class="noscriptmsg"> 82 You don't have javascript enabled. 83 </div> 84</noscript> 85 86<link rel="preconnect" href="https://googleapis.com"> 87<link rel="preconnect" href="https://gstatic.com" crossorigin> 88<link href="https://fonts.googleapis.com/css2?family=Figtree:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Serif:ital,wght@1,500&display=swap" rel="stylesheet"> 89
90<script src="https://www.textomap.com/js/libs/min.js"></script>
90 91
92<script src="https://accounts.google.com/gsi/client" async defer></script>
92 93
94<script type="text/javascript"> 95var generalerrmsgh = "Something went wrongâ¦"; 96var generalerrmsg = "Please try again or refresh the page."; 97var ADD_LCTNS_PH = "Search and add locations"; 98var ADD_LCTNS_BTN = "Add to Map"; 99var ADD_LCTNS_TXT_BTN = "Assign to text"; 100var ADD_LCTNS_TXT_BTN_M = "Assign"; 101var shareToast = "Link has been copied to clipboard"; 102var embedToast = "Code has been copied to clipboard"; 103var appId = 529313177987750; 104var url = "https://www.textomap.com/"; 105var dir = "/opt/bitnami/apache2/htdocs/textomap/app/"; 106var twitterUrl = "https://twitter.com/intent/tweet?text=Textomap: Create interactive maps in one click,\n from any text you're reading or writing about.&url="; 107var linkedinUrl = "https://www.linkedin.com/sharing/share-offsite/?url="; 108var extensionId = "eojinpebehkmckmljpjpnmeomhndobja"; 109var mapboxToken = "pk.eyJ1IjoicmFpam1hbiIsImEiOiJja3kydndsNnAwcGwxMm5wbm44emZ5eTlqIn0.cnP4sGjx9g_0RgfRbJZjpg"; 110var staticMapUrl = "https://api.mapbox.com/styles/v1/mapbox/streets-v11/static/"; 111var googleExportUrl = "https://www.google.com/maps/dir/?api=1"; 112var mapLimit = "c81e728d9d4c2f636f067f89cc14862c"; 113var sourceLimit = "eccbc87e4b5ce2fe28308fd9f2a7baf3"; 114var embedPopover = "<div class='info1'>Your free map embed has been used.<br>Upgrade for unlimited embeds</div><a class='btn upgrade' href='/pricing' target='_self'>Upgrade</a>"; 115var exportToastEnd = "Your CSV file was successfully downloaded"; 116var exportToastStart = "Exporting map as CSV"; 117var mapPublicToast = "ð Your map is public<br><small>It will be visible to others</small>"; 118var mapPrivateToast = "ð Your map is private<br><small>Embedded and shared maps are not visible</small>"; 119var googleRecaptchaKey = "6LeuiLspAAAAACeY131qvj4K411sWhwO3YnaRQUR"; 120var googleRecaptcha = "1"; 121 122var isAndroid = navigator.userAgentData != undefined && navigator.userAgentData.platform != undefined ? 123navigator.userAgentData.platform.toLowerCase().indexOf("android") > -1 : false; //&& ua.indexOf("mobile"); 124 125if(isAndroid) {
126 document.write('<meta name="viewport" content="width=device-width,height='+window.innerHeight+', initial-scale=1.0">'); 127} 128 129var app = angular.module('app', ['ngAnimate', 'ngSanitize', 'ui.bootstrap']); 130 131app.config(function($locationProvider) { 132 $locationProvider.html5Mode(true); 133}); 134 135app.value('$anchorScroll', angular.noop); 136 137app.run(function($window, $rootScope) { 138 $rootScope.offline = !navigator.onLine; 139 $window.addEventListener("offline", function() { 140 $rootScope.$apply(function() { 141 $rootScope.offline = true; 142 }); 143 }, false); 144 145 $window.addEventListener("online", function() { 146 $rootScope.$apply(function() { 147 $rootScope.offline = false; 148 }); 149 }, false); 150}); 151</script>
151 152<link rel="stylesheet" type="text/css" href="https://www.textomap.com/style/style.min.css?4.02">
153<script src="https://www.textomap.com/script.js?4.02"></script>
153 <link rel="stylesheet" type="text/css" href="https://www.textomap.com/style/mobilestyle.css"> 154 <title>Textomap | Generate Interactive Maps from Text, Images, Prompts & Questions</title> 155 <base href="/"> 156 </head> 157 <body ng-app="app" ng-controller="appCtrl" id="appCtrl" ng-init="setMode(modes.GENERAL)" class="ng-cloak" ng-cloak 158 ng-show="isDataLoaded()"> 159 <div class="education"> 160 <div ng-controller="headerCtrl" id="headerCtrl"> 161 <div class="qheadercnt home general no-border"> 162 <div class="left"> 163 <div class="logo home" ng-click="home()"> 164 <img> 165 </div> 166 </div> 167 168 </div> 169 </div> 170 <div id="studentLoginCtrl" ng-controller="studentLoginCtrl" class="modal fade in show" tabindex="-1" role="dialog" aria-hidden="false"> 171 <div class="modal-dialog"> 172 <div class="modal-content"> 173 <div class="modal-body"> 174 <h4>Login to Textomap</h4> 175 <input type="text" ng-model="student.group" class="form-control" placeholder="Group name" 176 ng-focus="hasError = false" autofocus strip-text/> 177 <input type="text" ng-model="student.name" class="form-control" placeholder="Student name" 178 ng-focus="hasError = false" strip-text/> 179 <input type="text" ng-model="student.password" class="form-control" placeholder="Password" 180 ng-focus="hasError = false" strip-text/> 181 <div class="info2 red" ng-if="hasError">â ï¸ One or more of the details you have entered is incorrect. Please try again or contact your educator</div> 182 </div> 183 <div class="modal-footer"> 184 <div class="btn" ng-click="login()"> 185 Login <div class="spinner" ng-show="loading"></div> 186 </div> 187 <div class="info1">Forgot one of the details above to sign in?<br>Contact your teacher or administrator</div> 188 </div> 189 </div> 190 </div> 191 <div class="info1" ng-click="showLoginPopup()">Educator? Sign in here</div> 192 </div> 193 </div> 194 <div id="blockCtrl" class="modal fade" tabindex="-1" role="dialog" class="ng-cloak" ng-cloak> 195 <div class="modal-dialog"> 196 <div class="modal-content"> 197 <div class="modal-header"> 198 <span class="mask" ng-click="home()" ng-if="!isPage('/student-login/')"></span> 199 </div> 200 <div class="modal-body"> 201 <img ng-src="https://www.textomap.com/style/images-p/logo.svg" ng-if="!isPage('/student-login/')" loading="lazy"> 202 <h2>Your access has been blocked</h2> 203 <div class="info1" ng-if="!isPage('/student-login/')">Our system has identified you as a risk.<br>This might happen when using a VPN or similar tools.<br>In order to use Textomap, please disable your VPN.<br><br>If youâre still unable to login, please contact us for help.</div> 204 <div class="info1" ng-if="isPage('/student-login/')">Our system has identified you as a risk.<br>This might happen when using a VPN or similar tools.<br>In order to use Textomap, please disable your VPN.<br><br>If youâre still unable to login, please ontact your teacher or administrator</div> 205 <div class="btn" ng-click="contact('My account is blocked')" ng-if="!isPage('/student-login/')">Contact us</div> 206 <div class="btn" data-dismiss="modal" ng-if="isPage('/student-login/')">Got it</div> 207 <span class="credits" ng-if="!verifyCode"> 208 Please review our <a href='https://www.textomap.com/terms-of-use/' target='_self'>Terms of Use</a> 209 and <a href='https://www.textomap.com/privacy-policy/' target='_self'>Privacy policy</a> 210 </span> 211 </div> 212 </div> 213 </div> 214</div> <div id="loginCtrl" class="modal fade" tabindex="-1" role="dialog" ng-controller="loginCtrl" 215class="ng-cloak" ng-cloak data-backdrop="static"> 216 <div class="modal-dialog"> 217 <div class="modal-content"> 218 <div class="modal-header"> 219 <img ng-if="isExtension()" class="left" ng-src="https://www.textomap.com/style/images/logo-white.svg" ng-click="openSite()"> 220 <img ng-if="isExtension()" class="right" ng-click="close()" ng-src="https://www.textomap.com/style/images/close-white.svg">
221 <span ng-if="!isExtension()" class="mask" ng-click="close()"></span> 222 </div> 223 <div class="modal-body"> 224 <div class="left"> 225 <img ng-if="!isExtension()" ng-src="https://www.textomap.com/style/images-p/logo.svg"> 226 <span class="title-s"> 227 {{isFree ? 'Sign in to generate maps from images, websites and data files' : isMap ? 'Sign in to save and edit your maps' : isExtension() ? 'Sign in' : 228 isLimit ? 'Sign in and continue creating\nmaps free' : loginEmail ? 229 (showUserName ? 'Sign up with email' : 'Log in with email') : 230 verifyCode ? 'Check your mail for sign in code' : ''}} 231 </span> 232 <div ng-show="!loginEmail && !verifyCode"> 233 <div class="p2" ng-click="loginEmail = true">Log in to your account or <a>sign up for free</a></div> 234 <div id="g_id_onload" data-client_id="447130360595-lesck67cmbe5ba129kg6bnmfs75pbkg2.apps.googleusercontent.com" 235 data-callback="onGoogleSignin" data-auto_prompt="false" data-use_fedcm_for_button="true"></div> 236 <div id="googleLoginBtn" class="loginBtn g_id_signin" data-shape="circle" data-theme="filled_blue" 237 ng-attr-data-width="{{isMobile() ? 280 : 400}}"></div> 238 <div class="btn loginBtn" ng-click="showLoginEmail()">Continue with E-Mail</div> 239 </div> 240 <div ng-if="loginEmail"> 241 <div class="info1">Email address</div> 242 <input type="text" id="user.email" ng-model="user.email" class="form-control input-lg" 243 placeholder="Enter your email" ng-focus="clearError(true)" 244 ng-class="{'has-error': hasError}"/> 245 <div ng-if="showUserName"> 246 <div class="info1">Your Name</div> 247 <input type="text" id="user.name" ng-model="user.name" class="form-control input-lg" 248 placeholder="Enter first and last name" ng-focus="clearError(false)" strip-text 249 ng-class="{'has-error': hasErrorName}"/> 250 </div> 251 <div class="btn loginBtn" ng-click="sendCode()"> 252 Continue <div class="spinner" ng-show="loading"></div> 253 </div> 254 </div> 255 <div ng-show="verifyCode"> 256 <div class="info1">Enter your 6 digit sign in code</div> 257 <input ng-repeat="i in [1, 2, 3, 4, 5, 6]" type="text" id="{{'code' + i}}" maxlength="1" 258 class="form-control input-lg digit" required="true" 259 ng-class="{'has-error': hasErrorCode}" ng-keyup="keyup($event)" ng-paste="paste($event)"> 260 <div class="btn loginBtn" ng-click="checkCode()"> 261 Sign in <div class="spinner" ng-show="loading"></div> 262 </div> 263 <div class="info2"><b>{{'Email was sent to %%EMAIL%%.'.replace('%%EMAIL%%', user.email)}}</b></div> 264 <div class="info2">{{'Canât find it? Check your spam folder. It may take a few minutes to arrive.'.replace('%%EMAIL%%', user.email)}}</div> 265 <div class="btn-txt" ng-click="sendCode()"> 266 <div class="mask"></div> 267 Resend code </div> 268 </div> 269 <span class="credits" ng-if="!verifyCode"> 270 By signing in to this website, you accept our <a href='https://www.textomap.com/terms-of-use/' target='_self'>Terms of Use</a> 271 and <a href='https://www.textomap.com/privacy-policy/' target='_self'>Privacy policy</a><br> 272 This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank">Terms of Service</a> apply. 273 <a class="btn white" ng-if="!loginEmail" href="https://www.textomap.com/student-login/" 274 target='_self'>Student? <b>Sign in here</b></a> 275 </span> 276 </div> 277 </div> 278 </div> 279 </div> 280</div> 281 </body> 282</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.