1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta name="robots" content="max-image-preview:standard"> 5 <meta name="robots" content="noindex,follow"> 6 7 <title>LocalGymsAndFitness</title> 8 9 <meta charset="utf-8"> 10 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 11 <meta http-equiv="x-ua-compatible" content="ie=edge"> 12 13 14<meta name="msvalidate.01" content="D49109743A3942DA9C7A030378CF0421" /> 15 16<meta name="guestpostlinks-verification" content="guestpostlinks-verification-code-12785"> 17 18 19 <link rel="shortcut icon" href="/img/localgymsandfitness/favicon.ico" type="image/x-icon"> 20 21 <!-- Prefetch DNS for external assets --> 22 <link rel="dns-prefetch" href="//graph.facebook.com"> 23 <link rel="preconnect" href="//graph.facebook.com"> 24 <link rel="dns-prefetch" href="https://www.google-analytics.com"> 25 26 <link rel="preload" href="/assets/vendor/icon-line/css/simple-line-icons.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 27 <noscript><link rel="stylesheet" href="/assets/vendor/icon-line/css/simple-line-icons.css"></noscript> 28 29 <link rel="preload" href="/assets/vendor/icon-hs/style.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 30 <noscript><link rel="stylesheet" href="/assets/vendor/icon-hs/style.css"></noscript> 31 32 33 <link rel="preload" href="/assets/vendor/icon-hs/fonts/hs-icons.ttf?xa77py" as="font" type="font/ttf" crossorigin> 34 35 36 37 38
38<script data-cfasync="false"> 39 var userCountryCode='US'; 40 </script>
40 41
41<script data-cfasync="false" defer src="/js/adsense-unfilled-collapse.js?v=20260830-3"></script>
vendor: 1 bytes, line 41
41
42<script data-cfasync="false"> 43(function () { 44 var consentGate = { 45 enabled: false, 46 requestPauseEnabled: false, 47 diagnosticsEnabled: false, 48 regulated: false, 49 ready: false, 50 startedAt: Date.now(), 51 queue: [], 52 surfaceQueued: {}, 53 surfaceReleased: {}, 54 requestPauseArmed: false, 55 requestPauseReleased: false, 56 requestPauseTimedOut: false, 57 requestPauseOutcomeRecorded: false, 58 telemetryEnabled: false, 59 telemetryToken: '', 60 telemetryPageviewId: '', 61 telemetryRate: 0, 62 pageType: 'admin' 63 }; 64 consentGate.requestPauseActive = consentGate.requestPauseEnabled && consentGate.regulated; 65 consentGate.active = (consentGate.enabled || consentGate.requestPauseEnabled) && consentGate.regulated; 66 consentGate.diagnosticsActive = consentGate.active || (consentGate.diagnosticsEnabled && consentGate.regulated); 67 var consentGatePublicState = { 68 enabled: consentGate.enabled, 69 requestPauseEnabled: consentGate.requestPauseEnabled, 70 requestPauseActive: consentGate.requestPauseActive, 71 requestPauseArmed: false, 72 requestPauseReleased: false, 73 requestPauseTimedOut: false, 74 diagnosticsEnabled: consentGate.diagnosticsEnabled, 75 regulated: consentGate.regulated, 76 active: consentGate.active, 77 diagnosticsActive: consentGate.diagnosticsActive, 78 ready: false, 79 queuedSurfaces: 0, 80 releasedSurfaces: 0, 81 abandonedSurfaces: 0, 82 autoRequestObserved: false, 83 autoDomObserved: false, 84 autoFilledObserved: false, 85 autoUnfilledObserved: false 86 }; 87 window.fglConsentReadyGateState = consentGatePublicState; 88 89 // This partial is emitted before every AdSense loader on Unify01. Arming 90 // synchronously here prevents both account-configured Auto Ads and manual 91 // slots from issuing requests before Funding Choices is ready. 92 if (consentGate.requestPauseActive) { 93 window.adsbygoogle = window.adsbygoogle || []; 94 window.adsbygoogle.pauseAdRequests = 1; 95 consentGate.requestPauseArmed = true; 96 consentGatePublicState.requestPauseArmed = true; 97 } 98 99 function consentGateSampled() { 100 var hash = 2166136261; 101 if (!consentGate.telemetryEnabled || !consentGate.telemetryToken || 102 !consentGate.telemetryPageviewId || consentGate.telemetryRate < 1) return false; 103 for (var i = 0; i < consentGate.telemetryPageviewId.length; i++) {
104 hash ^= consentGate.telemetryPageviewId.charCodeAt(i); 105 hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24); 106 } 107 return ((hash >>> 0) % 1000) < consentGate.telemetryRate; 108 } 109 consentGate.sampled = consentGateSampled(); 110 111 function consentGateBrowserFamily() { 112 var ua = String(navigator && navigator.userAgent || '').toLowerCase(); 113 if (ua.indexOf('edg/') !== -1 || ua.indexOf('edge/') !== -1) return 'edge'; 114 if (ua.indexOf('opr/') !== -1 || ua.indexOf('opera') !== -1) return 'opera'; 115 if (ua.indexOf('firefox/') !== -1 || ua.indexOf('fxios/') !== -1) return 'firefox'; 116 if (ua.indexOf('chrome/') !== -1 || ua.indexOf('crios/') !== -1) return 'chrome'; 117 if (ua.indexOf('safari/') !== -1) return 'safari'; 118 return 'other'; 119 } 120 121 function consentGateTrafficSource() { 122 var referrer = String(document.referrer || ''), parser, host, current; 123 if (!referrer) return 'direct'; 124 try { 125 parser = document.createElement('a'); parser.href = referrer; 126 host = String(parser.hostname || '').toLowerCase(); 127 current = String(window.location.hostname || '').toLowerCase(); 128 } catch (e) { return 'unknown'; } 129 if (!host) return 'unknown'; 130 if (host === current || host.slice(-(current.length + 1)) === '.' + current) return 'internal'; 131 if (/(^|\.)google\./.test(host)) return 'google'; 132 if (/(^|\.)(bing\.com|yahoo\.[a-z.]+)$/.test(host) || host.indexOf('search.yahoo.') !== -1) return 'bing_yahoo'; 133 if (/(^|\.)(duckduckgo\.com|ecosia\.org|yandex\.[a-z.]+|baidu\.com)$/.test(host)) return 'other_search'; 134 if (/(^|\.)(facebook\.com|instagram\.com|twitter\.com|t\.co|linkedin\.com|pinterest\.[a-z.]+)$/.test(host)) return 'social'; 135 return 'other_referral'; 136 } 137 138 function recordConsentGateEvent(eventType, surface, elapsedMs, diagnostic, placement) { 139 var body, event, xhr; 140 if (!consentGate.sampled) return; 141 diagnostic = diagnostic || {}; 142 event = { 143 event_type: eventType, 144 placement: placement || '', 145 elapsed_ms: Math.max(0, elapsedMs || 0), 146 layout: 'unify01', 147 page_type: consentGate.pageType, 148 browser_family: consentGateBrowserFamily(), 149 loader_source: diagnostic.loader_source || 'adsbygoogle', 150 visibility_state: document.visibilityState || 'unknown', 151 failure_class: 'none', 152 client_profile: 'unknown', 153 resource_entry_state: diagnostic.resource_entry_state || 'unknown', 154 traffic_source_family: consentGateTrafficSource(), 155 delivery_surface: surface, 156 tcf_probe_stage: diagnostic.tcf_probe_stage || 'none', 157 tcf_observation_phase: diagnostic.tcf_observation_phase || 'none', 158 tcf_api_state: diagnostic.tcf_api_state || 'not_probed', 159 tcf_cmp_family: diagnostic.tcf_cmp_family || 'unknown', 160 tcf_cmp_status: diagnostic.tcf_cmp_status || 'unknown', 161 tcf_event_status: diagnostic.tcf_event_status || 'unknown', 162 tcf_string_state: diagnostic.tcf_string_state || 'unknown', 163 gdpr_applies_state: diagnostic.gdpr_applies_state || 'unknown' 164 }; 165 body = JSON.stringify({ 166 token: consentGate.telemetryToken, 167 pageview_id: consentGate.telemetryPageviewId, 168 sample_rate_permille: consentGate.telemetryRate, 169 events: [event] 170 }); 171 try { 172 if (navigator.sendBeacon && window.Blob && navigator.sendBeacon('/adt', new Blob([body], {type: 'application/json'}))) return; 173 } catch (e) {} 174 try { 175 if (window.fetch) { 176 window.fetch('/adt', {method: 'POST', body: body, credentials: 'same-origin', keepalive: true, 177 headers: {'Content-Type': 'application/json'}}).catch(function () {}); 178 return; 179 } 180 if (window.XMLHttpRequest) { 181 xhr = new XMLHttpRequest(); 182 xhr.open('POST', '/adt', true); 183 xhr.setRequestHeader('Content-Type', 'application/json'); 184 xhr.send(body); 185 } 186 } catch (e) {} 187 } 188 189 function recordRequestPauseOutcome(outcome, elapsedMs, diagnostic) { 190 var placement; 191 if (!consentGate.requestPauseArmed || consentGate.requestPauseOutcomeRecorded) return; 192 consentGate.requestPauseOutcomeRecorded = true; 193 placement = 'request_pause_v3_' + outcome + 194 (consentGate.requestPauseTimedOut ? '_after_timeout' : '_before_timeout'); 195 recordConsentGateEvent( 196 outcome === 'released' ? 'adsense_request_pause_released' : 'adsense_request_pause_abandoned', 197 'unknown', 198 elapsedMs, 199 diagnostic, 200 placement 201 ); 202 } 203 204 if (consentGate.requestPauseArmed) { 205 recordConsentGateEvent('adsense_request_pause_armed', 'unknown', 0, null, 'request_pause_v3_armed'); 206 } 207 208 var autoConsentTrace = { 209 consentReadyAt: null, 210 consentReadyDiagnostic: null, 211 tcfSnapshots: [], 212 listenerId: null, 213 applicationPushAt: null,
214 requestRecorded: false, 215 requestBeforeRecorded: false, 216 boundaryOutcomeRecorded: false, 217 boundaryTimer: null, 218 domRecorded: false, 219 filledRecorded: false, 220 unfilledRecorded: false, 221 statusOutcomeRecorded: false, 222 statusWindowClosed: false, 223 statusWindowTimer: null, 224 resourceObserverStarted: false, 225 domObserverStarted: false, 226 domObserver: null, 227 tcfListenerStarted: false, 228 prePushRecorded: {} 229 }; 230 231 function autoTraceNow() { 232 try { 233 if (window.performance && typeof window.performance.now === 'function') return window.performance.now(); 234 } catch (e) {} 235 return Date.now() - consentGate.startedAt; 236 } 237 238 function autoTraceBoundedSnapshot(data) { 239 var cmpId = data && parseInt(data.cmpId, 10), tcString; 240 if (data && typeof data.tcString === 'string') tcString = data.tcString.length ? 'present' : 'absent'; 241 else tcString = 'unknown'; 242 return { 243 observedAt: autoTraceNow(), 244 cmpFamily: cmpId === 300 ? 'google' : (cmpId > 0 ? 'other' : 'unknown'), 245 cmpStatus: String(data && data.cmpStatus || 'unknown').toLowerCase(), 246 eventStatus: String(data && data.eventStatus || 'unknown').toLowerCase(), 247 stringState: tcString, 248 gdprState: data && data.gdprApplies === true ? 'yes' : 249 (data && data.gdprApplies === false ? 'no' : 'unknown') 250 }; 251 } 252 253 function autoTraceSnapshotAt(observedAt) { 254 var snapshots = autoConsentTrace.tcfSnapshots, i; 255 for (i = snapshots.length - 1; i >= 0; i--) { 256 if (snapshots[i].observedAt <= observedAt) { 257 return snapshots[i]; 258 } 259 } 260 return null; 261 } 262 263 function autoTraceDiagnosticAt(observedAt, resourceState) { 264 var snapshot = autoTraceSnapshotAt(observedAt); 265 if (snapshot) { 266 return { 267 resource_entry_state: resourceState || 'present', 268 tcf_observation_phase: 'first', 269 tcf_api_state: 'responded', 270 tcf_cmp_family: snapshot.cmpFamily, 271 tcf_cmp_status: snapshot.cmpStatus, 272 tcf_event_status: snapshot.eventStatus, 273 tcf_string_state: snapshot.stringState, 274 gdpr_applies_state: snapshot.gdprState 275 }; 276 } 277 return { 278 resource_entry_state: resourceState || 'present', 279 tcf_observation_phase: 'first', 280 tcf_api_state: typeof window.__tcfapi === 'function' ? 'not_probed' : 'absent', 281 tcf_string_state: 'unknown', 282 gdpr_applies_state: 'unknown' 283 }; 284 } 285 286 function autoTraceRecord(kind, observedAt, placement) { 287 var afterConsent = autoConsentTrace.consentReadyAt !== null && observedAt >= autoConsentTrace.consentReadyAt; 288 var eventType = kind === 'request' 289 ? 'adsense_auto_request_before_consent' 290 : (afterConsent ? 'adsense_auto_dom_after_consent' : 'adsense_auto_dom_before_consent'); 291 recordConsentGateEvent( 292 eventType, 293 'auto_ads', 294 observedAt, 295 autoTraceDiagnosticAt(observedAt), 296 placement || (kind === 'request' ? 'auto_request' : 'auto_dom') 297 ); 298 return afterConsent; 299 } 300 301 function autoTraceIsGoogleAdRequest(resourceName) { 302 var parser, host, path; 303 try { 304 parser = document.createElement('a'); 305 parser.href = String(resourceName || ''); 306 host = String(parser.hostname || '').toLowerCase(); 307 path = String(parser.pathname || '').toLowerCase(); 308 } catch (e) { return false; } 309 return (host === 'pagead2.googlesyndication.com' || host === 'googleads.g.doubleclick.net') && 310 path.indexOf('/pagead/ads') === 0; 311 } 312 313 function autoTraceQueryValue(resourceName, parameterName) { 314 var parser, query, parts, i, pair, key, value; 315 try { 316 parser = document.createElement('a'); 317 parser.href = String(resourceName || ''); 318 query = String(parser.search || '').replace(/^\?/, ''); 319 if (!query) return null; 320 parts = query.split('&'); 321 for (i = 0; i < parts.length; i++) { 322 pair = parts[i].split('='); 323 key = decodeURIComponent(String(pair.shift() || '').replace(/\+/g, ' ')); 324 if (key !== parameterName) continue; 325 value = decodeURIComponent(String(pair.join('=') || '').replace(/\+/g, ' ')); 326 return value; 327 } 328 } catch (e) {} 329 return null; 330 } 331 332 function autoTraceRequestClassification(resourceName) { 333 var gdpr = autoTraceQueryValue(resourceName, 'gdpr'); 334 var tcString = autoTraceQueryValue(resourceName, 'gdpr_consent'); 335 var signal = tcString ? 'tc_present' : 336 (gdpr === '1' ? 'gdpr_without_tc' : (gdpr === '0' ? 'gdpr_not_applicable' : 'no_url_signal')); 337 var mode = autoTraceQueryValue(resourceName, 'ltd') === '1' ? 'limited' : 338 (autoTraceQueryValue(resourceName, 'npa') === '1' ? 'non_personalized' : 339 (autoTraceQueryValue(resourceName, 'rdp') === '1' ? 'restricted' : 'no_url_marker')); 340 return 'req_' + signal + '_' + mode; 341 } 342 343 function autoTraceResourceEntry(entry) { 344 var observedAt; 345 if (autoConsentTrace.requestRecorded || autoConsentTrace.boundaryOutcomeRecorded || 346 !autoTraceIsGoogleAdRequest(entry && entry.name)) return; 347 observedAt = typeof entry.startTime === 'number' ? entry.startTime : autoTraceNow(); 348 if (autoConsentTrace.applicationPushAt !== null && observedAt >= autoConsentTrace.applicationPushAt) return; 349 if (autoConsentTrace.consentReadyAt !== null && observedAt >= autoConsentTrace.consentReadyAt) return; 350 autoConsentTrace.requestRecorded = true; 351 autoTraceRecord('request', observedAt, autoTraceRequestClassification(entry.name)); 352 autoConsentTrace.requestBeforeRecorded = true; 353 autoConsentTrace.boundaryOutcomeRecorded = true; 354 if (autoConsentTrace.boundaryTimer !== null) window.clearTimeout(autoConsentTrace.boundaryTimer); 355 autoConsentTrace.boundaryTimer = null; 356 consentGatePublicState.autoRequestObserved = true; 357 } 358 359 function autoTraceDrainResourceEntries() { 360 var resources, i; 361 try { 362 if (!window.performance || !window.performance.getEntriesByType) return; 363 resources = window.performance.getEntriesByType('resource'); 364 for (i = 0; i < resources.length && !autoConsentTrace.requestRecorded; i++) { 365 autoTraceResourceEntry(resources[i]); 366 } 367 } catch (e) {} 368 } 369 370 function autoTraceStartResourceObserver() { 371 var observer; 372 if (!consentGate.diagnosticsActive || !consentGate.sampled || autoConsentTrace.resourceObserverStarted) return; 373 autoConsentTrace.resourceObserverStarted = true; 374 try { 375 autoTraceDrainResourceEntries(); 376 if (window.PerformanceObserver) { 377 observer = new PerformanceObserver(function (list) { 378 var entries = list.getEntries(), j; 379 for (j = 0; j < entries.length; j++) autoTraceResourceEntry(entries[j]); 380 }); 381 try { observer.observe({type: 'resource', buffered: true}); } 382 catch (bufferedError) { observer.observe({entryTypes: ['resource']}); } 383 } 384 } catch (e) {} 385 } 386 387 function autoTraceIsInjectedAdNode(node) { 388 if (!node || node.nodeType !== 1) return false;
389 try { 390 if (node.closest && node.closest('[data-fgl-adsense-manual="1"]')) return false; 391 if (node.matches && node.matches('.adsbygoogle, iframe[id^="google_ads_iframe_"]')) return true; 392 return String(node.id || '').toLowerCase().indexOf('google_vignette') === 0; 393 } catch (e) { return false; } 394 } 395 396 function autoTraceRecordAdStatus(status, observedAt) { 397 var afterConsent, eventType, placement; 398 if (autoConsentTrace.statusWindowClosed || (status !== 'filled' && status !== 'unfilled')) return; 399 afterConsent = autoConsentTrace.consentReadyAt !== null && observedAt >= autoConsentTrace.consentReadyAt; 400 if (!autoConsentTrace.statusOutcomeRecorded) { 401 autoConsentTrace.statusOutcomeRecorded = true; 402 recordConsentGateEvent( 403 'adsense_auto_status_observed_' + (afterConsent ? 'after' : 'before') + '_consent', 404 'auto_ads', 405 observedAt, 406 autoTraceDiagnosticAt(observedAt), 407 status === 'filled' ? 'auto_status_filled' : 'auto_status_unfilled' 408 ); 409 } 410 if (status === 'filled') { 411 if (autoConsentTrace.filledRecorded) return; 412 autoConsentTrace.filledRecorded = true; 413 consentGatePublicState.autoFilledObserved = true; 414 placement = 'auto_window_filled'; 415 } else if (status === 'unfilled') { 416 if (autoConsentTrace.unfilledRecorded) return; 417 autoConsentTrace.unfilledRecorded = true; 418 consentGatePublicState.autoUnfilledObserved = true; 419 placement = 'auto_window_unfilled'; 420 } 421 eventType = 'adsense_auto_' + status + '_' + (afterConsent ? 'after' : 'before') + '_consent'; 422 recordConsentGateEvent(eventType, 'auto_ads', observedAt, 423 autoTraceDiagnosticAt(observedAt), placement); 424 } 425 426 function autoTraceInspectAdStatusNode(node) { 427 var candidates, i, status; 428 if (!node || node.nodeType !== 1) return; 429 try { 430 if (node.closest && node.closest('[data-fgl-adsense-manual="1"]')) return; 431 if (node.matches && node.matches('.adsbygoogle[data-ad-status]')) { 432 status = String(node.getAttribute('data-ad-status') || '').toLowerCase(); 433 autoTraceRecordAdStatus(status, autoTraceNow()); 434 } 435 if (!node.querySelectorAll) return; 436 candidates = node.querySelectorAll('.adsbygoogle[data-ad-status]'); 437 for (i = 0; i < candidates.length; i++) { 438 if (candidates[i].closest && candidates[i].closest('[data-fgl-adsense-manual="1"]')) continue; 439 status = String(candidates[i].getAttribute('data-ad-status') || '').toLowerCase(); 440 autoTraceRecordAdStatus(status, autoTraceNow()); 441 } 442 } catch (e) {} 443 } 444 445 function autoTraceInspectDomNode(node) { 446 var candidates, i; 447 if (autoConsentTrace.domRecorded || autoConsentTrace.applicationPushAt !== null || !node || node.nodeType !== 1) return; 448 if (autoTraceIsInjectedAdNode(node)) { 449 autoConsentTrace.domRecorded = true; 450 autoTraceRecord('dom', autoTraceNow()); 451 consentGatePublicState.autoDomObserved = true; 452 return; 453 } 454 if (!node.querySelectorAll) return; 455 candidates = node.querySelectorAll('.adsbygoogle, iframe[id^="google_ads_iframe_"], [id^="google_vignette"]'); 456 for (i = 0; i < candidates.length && !autoConsentTrace.domRecorded; i++) { 457 if (autoTraceIsInjectedAdNode(candidates[i])) { 458 autoConsentTrace.domRecorded = true; 459 autoTraceRecord('dom', autoTraceNow()); 460 consentGatePublicState.autoDomObserved = true; 461 } 462 } 463 } 464 465 function autoTraceStartDomObserver() { 466 var observer, root = document.documentElement || document.body; 467 if (!consentGate.diagnosticsActive || !consentGate.sampled || autoConsentTrace.domObserverStarted || !root) return; 468 autoConsentTrace.domObserverStarted = true; 469 autoTraceInspectDomNode(root); 470 autoTraceInspectAdStatusNode(root); 471 if (!window.MutationObserver) return; 472 observer = new MutationObserver(function (records) { 473 var i, j; 474 for (i = 0; i < records.length; i++) { 475 if (records[i].type === 'attributes') autoTraceInspectAdStatusNode(records[i].target); 476 for (j = 0; j < records[i].addedNodes.length; j++) { 477 autoTraceInspectDomNode(records[i].addedNodes[j]); 478 autoTraceInspectAdStatusNode(records[i].addedNodes[j]); 479 } 480 } 481 }); 482 observer.observe(root, {childList: true, subtree: true, attributes: true, attributeFilter: ['data-ad-status']}); 483 autoConsentTrace.domObserver = observer; 484 } 485 486 function autoTraceDrainDomRecords() { 487 var records, i, j; 488 if (!autoConsentTrace.domObserver || !autoConsentTrace.domObserver.takeRecords) return; 489 try { 490 records = autoConsentTrace.domObserver.takeRecords(); 491 for (i = 0; i < records.length; i++) { 492 if (records[i].type === 'attributes') autoTraceInspectAdStatusNode(records[i].target); 493 for (j = 0; j < records[i].addedNodes.length; j++) { 494 autoTraceInspectDomNode(records[i].addedNodes[j]); 495 autoTraceInspectAdStatusNode(records[i].addedNodes[j]); 496 } 497 } 498 } catch (e) {} 499 } 500 501 function autoTraceStartTcfListener() { 502 var api = window.__tcfapi; 503 if (!consentGate.diagnosticsActive || !consentGate.sampled || autoConsentTrace.tcfListenerStarted || 504 typeof api !== 'function') return; 505 try { 506 api('addEventListener', 2, function (data, success) { 507 if (!success || !data) return; 508 autoConsentTrace.listenerId = data.listenerId || autoConsentTrace.listenerId; 509 autoConsentTrace.tcfSnapshots.push(autoTraceBoundedSnapshot(data)); 510 if (autoConsentTrace.tcfSnapshots.length > 8) autoConsentTrace.tcfSnapshots.shift(); 511 }); 512 autoConsentTrace.tcfListenerStarted = true; 513 } catch (e) {} 514 } 515 516 function autoTraceFinalizeBoundary(fallbackBoundaryAt) { 517 var boundaryAt, boundaryDiagnostic; 518 if (!consentGate.diagnosticsActive || !consentGate.sampled || autoConsentTrace.boundaryOutcomeRecorded) return; 519 boundaryAt = autoConsentTrace.consentReadyAt !== null 520 ? autoConsentTrace.consentReadyAt 521 : (typeof fallbackBoundaryAt === 'number' ? fallbackBoundaryAt : null); 522 if (boundaryAt === null) return; 523 autoTraceDrainResourceEntries(); 524 if (autoConsentTrace.requestBeforeRecorded || autoConsentTrace.boundaryOutcomeRecorded) return; 525 autoConsentTrace.boundaryOutcomeRecorded = true; 526 autoConsentTrace.boundaryTimer = null; 527 boundaryDiagnostic = autoConsentTrace.consentReadyAt !== null 528 ? autoConsentTrace.consentReadyDiagnostic 529 : autoTraceDiagnosticAt(boundaryAt, 'missing'); 530 recordConsentGateEvent( 531 'adsense_auto_no_request_before_consent', 532 'auto_ads', 533 boundaryAt, 534 boundaryDiagnostic || autoTraceDiagnosticAt(boundaryAt, 'missing'), 535 'auto_request' 536 ); 537 } 538 539 function autoTraceFinalizeStatusWindow(fallbackBoundaryAt) { 540 var boundaryAt, boundaryDiagnostic; 541 if (!consentGate.diagnosticsActive || !consentGate.sampled || autoConsentTrace.statusWindowClosed) return; 542 autoConsentTrace.statusWindowClosed = true; 543 if (autoConsentTrace.statusWindowTimer !== null) window.clearTimeout(autoConsentTrace.statusWindowTimer); 544 autoConsentTrace.statusWindowTimer = null; 545 if (autoConsentTrace.statusOutcomeRecorded) return; 546 autoConsentTrace.statusOutcomeRecorded = true; 547 boundaryAt = autoConsentTrace.consentReadyAt !== null 548 ? autoTraceNow() 549 : (typeof fallbackBoundaryAt === 'number' ? fallbackBoundaryAt : autoTraceNow()); 550 boundaryDiagnostic = autoTraceDiagnosticAt(boundaryAt, 'missing'); 551 recordConsentGateEvent( 552 'adsense_auto_no_status_observed', 553 'auto_ads', 554 boundaryAt, 555 boundaryDiagnostic, 556 'auto_status_none' 557 ); 558 } 559 560 function autoTraceMarkApplicationPush() { 561 if (autoConsentTrace.applicationPushAt !== null) return; 562 autoTraceDrainResourceEntries(); 563 autoTraceDrainDomRecords(); 564 autoConsentTrace.applicationPushAt = autoTraceNow(); 565 } 566 567 function autoTraceManualSlot(elem) { 568 var slot = elem && elem.getAttribute ? String(elem.getAttribute('data-ad-slot') || '') : ''; 569 return /^\d{1,20}$/.test(slot) ? 'slot_' + slot : ''; 570 } 571 572 function autoTraceRecordPrePush(surface, placement) { 573 var observedAt, snapshot; 574 if (!consentGate.diagnosticsActive || !consentGate.sampled || 575 autoConsentTrace.prePushRecorded[surface]) return; 576 autoConsentTrace.prePushRecorded[surface] = true; 577 observedAt = autoTraceNow(); 578 snapshot = autoTraceSnapshotAt(observedAt); 579 recordConsentGateEvent( 580 'adsense_tcf_probe', 581 surface, 582 snapshot ? Math.max(0, observedAt - snapshot.observedAt) : 0, 583 autoTraceDiagnosticAt(observedAt, 'missing'), 584 placement || '' 585 ); 586 } 587 588 autoTraceStartResourceObserver(); 589 autoTraceStartDomObserver(); 590 if (!autoConsentTrace.domObserverStarted && document.readyState === 'loading') { 591 document.addEventListener('DOMContentLoaded', autoTraceStartDomObserver); 592 } 593 594 function queueConsentGatePush(surface, action) { 595 if (!consentGate.active || consentGate.ready) return false;
596 consentGate.queue.push({surface: surface, action: action}); 597 if (!consentGate.surfaceQueued[surface]) { 598 consentGate.surfaceQueued[surface] = true; 599 consentGatePublicState.queuedSurfaces++; 600 recordConsentGateEvent('adsense_consent_push_queued', surface, Date.now() - consentGate.startedAt); 601 } 602 return true; 603 } 604 605 function releaseConsentGatePushes() { 606 var queued, item, i, elapsed; 607 if (!consentGate.diagnosticsActive || consentGate.ready) return; 608 autoTraceDrainDomRecords(); 609 if (autoConsentTrace.consentReadyAt === null) autoConsentTrace.consentReadyAt = autoTraceNow(); 610 autoConsentTrace.consentReadyDiagnostic = autoTraceDiagnosticAt(autoConsentTrace.consentReadyAt, 'missing'); 611 autoConsentTrace.boundaryTimer = window.setTimeout(autoTraceFinalizeBoundary, 10000); 612 autoConsentTrace.statusWindowTimer = window.setTimeout(autoTraceFinalizeStatusWindow, 10000); 613 consentGate.ready = true; 614 consentGatePublicState.ready = true; 615 elapsed = Date.now() - consentGate.startedAt; 616 if (consentGate.requestPauseArmed && !consentGate.requestPauseReleased) { 617 recordRequestPauseOutcome('released', elapsed, autoConsentTrace.consentReadyDiagnostic); 618 window.adsbygoogle = window.adsbygoogle || []; 619 window.adsbygoogle.pauseAdRequests = 0; 620 consentGate.requestPauseReleased = true; 621 consentGatePublicState.requestPauseReleased = true; 622 } 623 queued = consentGate.queue.slice(0); 624 consentGate.queue = []; 625 for (i = 0; i < queued.length; i++) { 626 item = queued[i]; 627 if (!consentGate.surfaceReleased[item.surface]) { 628 consentGate.surfaceReleased[item.surface] = true; 629 consentGatePublicState.releasedSurfaces++; 630 recordConsentGateEvent('adsense_consent_push_released', item.surface, elapsed); 631 } 632 try { item.action(); } catch (e) {} 633 } 634 } 635 636 if (consentGate.diagnosticsActive) { 637 window.googlefc = window.googlefc || {}; 638 window.googlefc.callbackQueue = window.googlefc.callbackQueue || []; 639 window.googlefc.callbackQueue.push({'CONSENT_API_READY': autoTraceStartTcfListener}); 640 window.googlefc.callbackQueue.push({'CONSENT_DATA_READY': releaseConsentGatePushes}); 641 autoTraceStartTcfListener(); 642 if (consentGate.requestPauseArmed) { 643 window.setTimeout(function () { 644 if (consentGate.requestPauseReleased || consentGate.requestPauseTimedOut) return; 645 consentGate.requestPauseTimedOut = true; 646 consentGatePublicState.requestPauseTimedOut = true; 647 recordConsentGateEvent( 648 'adsense_request_pause_timeout', 649 'unknown', 650 Date.now() - consentGate.startedAt, 651 autoTraceDiagnosticAt(autoTraceNow(), 'missing'), 652 'request_pause_v3_timeout_checkpoint' 653 ); 654 }, 10000); 655 } 656 window.addEventListener('pagehide', function (event) { 657 var seen = {}, i, surface; 658 if (event && event.persisted) return; 659 if (consentGate.requestPauseArmed && !consentGate.requestPauseReleased) { 660 recordRequestPauseOutcome( 661 'abandoned', 662 Date.now() - consentGate.startedAt, 663 autoTraceDiagnosticAt(autoTraceNow(), 'missing') 664 ); 665 } 666 autoTraceFinalizeBoundary(autoTraceNow()); 667 autoTraceFinalizeStatusWindow(autoTraceNow()); 668 if (!consentGate.active || consentGate.ready || !consentGate.queue.length) return; 669 for (i = 0; i < consentGate.queue.length; i++) { 670 surface = consentGate.queue[i].surface; 671 if (!seen[surface]) { 672 seen[surface] = true; 673 consentGatePublicState.abandonedSurfaces++; 674 recordConsentGateEvent('adsense_consent_push_abandoned', surface, Date.now() - consentGate.startedAt); 675 } 676 } 677 }); 678 } 679 680 function getBrowserTimeZone() { 681 try { 682 return String(Intl.DateTimeFormat().resolvedOptions().timeZone || ''); 683 } catch (e) { 684 return ''; 685 } 686 } 687 688 function clientMatchesSuspiciousAdsenseProfile() { 689 var scr = window.screen || {}; 690 if (scr.width === 1280 && scr.height === 1200) { 691 var browserTimeZone = getBrowserTimeZone(); 692 return browserTimeZone.indexOf('Asia/') === 0; 693 } 694 695 return false;
696 } 697 698 function sendTarpitGaEvent(name) { 699 try { 700 if (window.fglGtagConfigured && typeof window.gtag === 'function') { 701 window.gtag('event', name, { 702 'event_category': 'scraper_tarpit', 703 'event_label': '1280x1200_asia_timezone', 704 'non_interaction': true 705 }); 706 return; 707 } 708 709 window.fglPendingTarpitGaEvents = window.fglPendingTarpitGaEvents || []; 710 window.fglPendingTarpitGaEvents.push({ 711 name: name, 712 params: { 713 'event_category': 'scraper_tarpit', 714 'event_label': '1280x1200_asia_timezone', 715 'non_interaction': true 716 } 717 }); 718 } catch (e) { 719 } 720 } 721 722 window.fglFlushTarpitGaEvents = function () { 723 if (typeof window.gtag !== 'function') { 724 return; 725 } 726 727 var events = window.fglPendingTarpitGaEvents || []; 728 window.fglPendingTarpitGaEvents = []; 729 for (var i = 0; i < events.length; i++) { 730 window.gtag('event', events[i].name, events[i].params); 731 } 732 }; 733 734 function runClientTarpit(durationMs) { 735 var endAt = Date.now() + durationMs; 736 var sink = 0; 737 while (Date.now() < endAt) { 738 sink += Math.sqrt((Date.now() % 997) + Math.random()); 739 } 740 window.fglTarpitSink = sink; 741 } 742 743 function runSuspiciousClientTarpit() { 744 var waitStartedAt = Date.now(); 745 746 sendTarpitGaEvent('fgl_tarpit_start_20260610_a'); 747 748 function runAfterGaStartFlush() { 749 if (!window.fglGtagConfigured && Date.now() - waitStartedAt < 3000) { 750 window.setTimeout(runAfterGaStartFlush, 50); 751 return; 752 } 753 754 if (window.fglFlushTarpitGaEvents) { 755 window.fglFlushTarpitGaEvents(); 756 } 757 758 window.setTimeout(function () { 759 runClientTarpit(25000); 760 sendTarpitGaEvent('fgl_tarpit_end_25s_20260610_a'); 761 if (window.fglFlushTarpitGaEvents) { 762 window.fglFlushTarpitGaEvents(); 763 } 764 765 window.setTimeout(function () { 766 runClientTarpit(30000); 767 sendTarpitGaEvent('fgl_tarpit_end_55s_20260610_a'); 768 if (window.fglFlushTarpitGaEvents) { 769 window.fglFlushTarpitGaEvents(); 770 } 771 }, 0); 772 }, 3000); 773 } 774 775 window.setTimeout(runAfterGaStartFlush, 0); 776 } 777 778 if (clientMatchesSuspiciousAdsenseProfile()) { 779 runSuspiciousClientTarpit(); 780 } 781 782 window.fglShouldBlockAdsenseClient = function () { 783 return clientMatchesSuspiciousAdsenseProfile(); 784 }; 785 786 window.fglCanLoadAdsenseClient = function () { 787 return !window.fglShouldBlockAdsenseClient(); 788 }; 789 790 function pushAdsenseElementNow(elem) { 791 if (!window.fglCanLoadAdsenseClient() || !elem) { 792 return false; 793 } 794 795 if (elem.getAttribute('data-adsbygoogle-status') || elem.getAttribute('data-fgl-adsbygoogle-pushed')) { 796 return false; 797 } 798 799 autoTraceRecordPrePush('manual_placement', autoTraceManualSlot(elem)); 800 autoTraceMarkApplicationPush(); 801 elem.setAttribute('data-fgl-adsbygoogle-pushed', '1'); 802 try { 803 (window.adsbygoogle = window.adsbygoogle || []).push({}); 804 } catch (e) { 805 if (String(e && e.message || '').indexOf('already have ads') !== -1) { 806 return false; 807 } 808 elem.removeAttribute('data-fgl-adsbygoogle-pushed'); 809 throw e; 810 } 811 return true; 812 } 813 814 window.fglPushAdsenseElement = function (elem) { 815 if (!window.fglCanLoadAdsenseClient() || !elem) return false; 816 if (elem.getAttribute('data-adsbygoogle-status') || elem.getAttribute('data-fgl-adsbygoogle-pushed') || 817 elem.getAttribute('data-fgl-adsbygoogle-consent-queued')) return false;
818 elem.setAttribute('data-fgl-adsense-manual', '1'); 819 if (queueConsentGatePush('manual_placement', function () { 820 elem.removeAttribute('data-fgl-adsbygoogle-consent-queued'); 821 if (document.documentElement.contains(elem)) pushAdsenseElementNow(elem); 822 })) { 823 elem.setAttribute('data-fgl-adsbygoogle-consent-queued', '1'); 824 return true; 825 } 826 return pushAdsenseElementNow(elem); 827 }; 828 829 function pushAdsenseOptionsNow(opts) { 830 if (!window.fglCanLoadAdsenseClient() || window.fglAdsenseOptionsPushed) { 831 return false; 832 } 833 834 if (document.querySelector('.adsbygoogle')) { 835 return false; 836 } 837 838 autoTraceRecordPrePush('auto_ads'); 839 autoTraceMarkApplicationPush(); 840 window.fglAdsenseOptionsPushed = true; 841 try { 842 (window.adsbygoogle = window.adsbygoogle || []).push(opts); 843 } catch (e) { 844 if (String(e && e.message || '').indexOf('already have ads') !== -1) { 845 return false; 846 } 847 window.fglAdsenseOptionsPushed = false; 848 throw e; 849 } 850 return true; 851 } 852 853 window.fglPushAdsenseOptions = function (opts) { 854 if (!window.fglCanLoadAdsenseClient() || window.fglAdsenseOptionsPushed || window.fglAdsenseOptionsConsentQueued) return false; 855 if (document.querySelector('.adsbygoogle')) return false; 856 if (queueConsentGatePush('auto_ads', function () { 857 window.fglAdsenseOptionsConsentQueued = false; 858 pushAdsenseOptionsNow(opts); 859 })) { 860 window.fglAdsenseOptionsConsentQueued = true; 861 return true; 862 } 863 return pushAdsenseOptionsNow(opts); 864 }; 865 866 window.fglLoadAdsenseScript = function (src, anon, callback) { 867 if (!window.fglCanLoadAdsenseClient()) { 868 return false; 869 } 870 871 var scriptKey = src.indexOf('/adsbygoogle.js') !== -1 ? 'adsbygoogle' : src; 872 window.fglLoadedAdScripts = window.fglLoadedAdScripts || {}; 873 if (window.fglLoadedAdScripts[scriptKey]) { 874 return false; 875 } 876 window.fglLoadedAdScripts[scriptKey] = true; 877 878 var script = document.createElement('script'); 879 script.type = 'text/javascript'; 880 script.async = true; 881 if (src.indexOf('/adsbygoogle.js') === -1) { 882 script.setAttribute('data-cfasync', 'false'); 883 } else { 884 script.setAttribute('fetchpriority', 'high'); 885 } 886 script.src = src; 887 if (anon) { 888 script.crossOrigin = 'anonymous'; 889 } 890 if (callback) { 891 script.onload = callback; 892 } 893 document.head.appendChild(script); 894 return true; 895 }; 896 897}()); 898</script>
898 899 900 901 902
902<script data-cfasync="false"> 903 904 var _errsLogged=0; 905 function _logErr(err) { 906 if (_errsLogged>=5) { 907 return; 908 } 909 _errsLogged++; 910 var client = new XMLHttpRequest(); 911 client.open('POST', '/err'); 912 client.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8'); 913 client.send(err); 914 } 915 916 function loadScript(jsFile, anon, callback) { 917 const script = document.createElement('script'); 918 script.type = 'text/javascript'; 919 script.async = true; 920 script.onerror = function() { 921 console.log("Error loading " + this.src); 922 if ((this.src.search("addthis") === -1) && (this.src.search("cse.google") === -1) && !navigator.userAgent.includes("Googlebot") && !navigator.userAgent.includes("bingbot")) { 923 _logErr(['loadScript error ' + jsFile, 924 'Loc: ' + window.location.href, 925 'Country: ' + userCountryCode, 926 'UA: ' + navigator.userAgent, 927 this.src].join('\n')); 928 } 929 }; 930 script.src = jsFile; 931 if (anon) { 932 script.crossOrigin = 'anonymous'; 933 } 934 if (callback) { 935 script.onload=callback; 936 } 937 938 document.head.appendChild(script); 939 } 940 </script>
940 941 942
942<script data-cfasync="false"> 943 window.dataLayer = window.dataLayer || []; 944 function gtag(){ dataLayer.push(arguments); } 945 946 gtag('consent','default',{ 947 ad_storage:'denied', 948 analytics_storage:'denied', 949 ad_user_data:'denied', 950 ad_personalization:'denied' 951 },{ 952 region:[ 953 'AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR','DE','GR','HU','IE','IT', 954 'LV','LT','LU','MT','NL','PL','PT','RO','SK','SI','ES','SE','IS','LI','NO', 955 'GB','CH' 956 ] 957 }); 958 959 gtag('consent','default',{ 960 ad_storage:'granted', 961 analytics_storage:'granted', 962 ad_user_data:'granted', 963 ad_personalization:'granted' 964 }); 965 </script>
965 966 967 968 969 970 <link rel="stylesheet" type="text/css" href="/css/font-awesome.4.7.0.min.css" /> 971<link rel="stylesheet" type="text/css" href="/assets/css.css" /> 972<link rel="stylesheet" href="/css/directory-shared.css?v=13"> 973 <link rel="stylesheet" href="/css/localgymsandfitness-theme.css?v=2">
974<script data-cfasync="false" src="/js/jquery.3.7.1.min.js"></script>
vendor: 1 bytes, line 974
974
975<script data-cfasync="false" src="/assets/js.js?v=2"></script>
975 976 977 978
978<script data-cfasync="false">var FbInited = false;</script>
978 979 980
980<script data-cfasync="false"> 981 982 </script>
982 983
983<script data-cfasync="false"> 984(function () { 985 try { 986 var nav = window.navigator || {}; 987 var scr = window.screen || {}; 988 var lang = String(nav.language || ''); 989 var langs = nav.languages || []; 990 var firstLang = langs && langs.length ? String(langs[0] || '') : lang; 991 var ref = String(document.referrer || ''); 992 993 if (scr.width !== 1280 || scr.height !== 1200) { 994 return; 995 } 996 997 var payload = { 998 sw: scr.width || 0, 999 sh: scr.height || 0, 1000 aw: scr.availWidth || 0, 1001 ah: scr.availHeight || 0, 1002 iw: window.innerWidth || 0, 1003 ih: window.innerHeight || 0, 1004 dpr: window.devicePixelRatio || 0, 1005 lang: lang, 1006 langs: Array.prototype.slice.call(langs || []).slice(0, 8), 1007 ref: ref, 1008 uri: window.location.pathname + window.location.search 1009 }; 1010 var body = JSON.stringify(payload); 1011 var endpoint = '/asvl'; 1012 1013 if (nav.sendBeacon) { 1014 nav.sendBeacon(endpoint, new Blob([body], {type: 'application/json'})); 1015 return; 1016 } 1017 1018 if (window.fetch) { 1019 window.fetch(endpoint, { 1020 method: 'POST', 1021 body: body, 1022 headers: {'Content-Type': 'application/json'}, 1023 keepalive: true, 1024 credentials: 'same-origin' 1025 }); 1026 } 1027 } catch (e) { 1028 } 1029}()); 1030</script>
1030 1031 1032 1033 1034 1035 1036
1036<script data-cfasync="false"> 1037 var configuredWebsiteHost = 'www.localgymsandfitness.com'; 1038 var configuredAccountHost = 'account.' + configuredWebsiteHost.replace(/^www\./, ''); 1039 if ((window.location.hostname !== configuredWebsiteHost) && (window.location.hostname !== configuredAccountHost) && (window.location.hostname.indexOf('localhost') === -1)) { 1040 window.top.location.href = 'http://www.localgymsandfitness.com' + window.location.pathname; 1041 } 1042 </script>
1042 1043 1044 1045 <link rel="stylesheet" href="/css/listing-picture-initials.css?v=1" /> 1046
1046<script data-cfasync="false" defer src="/js/facebook-picture-placeholder.js?v=6"></script>
1046 1047 </head> 1048 1049 <body class="site-localgymsandfitness page-admin"> 1050 <main > 1051 1052 1053 1054<!-- Header --> 1055 <header id="js-header" class="u-header u-header--sticky-top u-header--toggle-section u-header--change-appearance" data-header-fix-moment="300"> 1056 <div class="u-header__section u-header__section--dark g-bg-primary g-transition-0_3 g-py-10" data-header-fix-moment-exclude="g-py-10" data-header-fix-moment-classes="g-py-0"> 1057 1058 <nav class="navbar navbar-expand-lg"> 1059 <div class="container"> 1060 <!-- Responsive Toggle Button --> 1061 <button class="navbar-toggler navbar-toggler-right btn g-line-height-1 g-brd-none g-pa-0 g-pos-abs g-top-3 g-right-0" type="button" 1062 aria-label="Toggle navigation" aria-expanded="false" aria-controls="navBar" data-toggle="collapse" data-target="#navBar"> 1063 <span class="hamburger hamburger--slider"> 1064 <span class="hamburger-box"> 1065 <span class="hamburger-inner"> 1066 </span> 1067 </span> 1068 </span> 1069 </button> 1070 <!-- End Responsive Toggle Button --> 1071 1072 <!-- Logo --> 1073 <a href="https://www.localgymsandfitness.com/" class="navbar-brand"> 1074 <img src="/img/localgymsandfitness/logo-v2.svg?v=1" height="30" alt="LocalGymsAndFitness"> 1075 </a> 1076 <!-- End Logo --> 1077 1078 <!-- Navigation --> 1079 <div class="collapse navbar-collapse align-items-center flex-sm-row g-pt-10 g-pt-5--lg" id="navBar"> 1080 <ul class="navbar-nav text-uppercase g-font-weight-600 ml-auto"> 1081 1082 1083 <li class="nav-item g-mx-20--lg "> 1084 <a href="https://www.localgymsandfitness.com/" class="nav-link px-0" data-google-interstitial="false"> 1085 Home </a> 1086 </li> 1087 <li class="nav-item g-mx-20--lg "> 1088 <a href="https://www.localgymsandfitness.com/countries" class="nav-link px-0"><i class='fa fa-globe'></i> Countries<span class='sr-only'>(current)</span></a> 1089 </li> 1090 1091 1092 </ul> 1093 </div> 1094 <!-- End Navigation --> 1095 </div> 1096 </nav> 1097 </div> 1098 </header> 1099 <!-- End Header --> 1100 1101<style> 1102 .admin-entry-shell { 1103 padding: 150px 0 72px; 1104 } 1105 1106 .admin-entry-grid { 1107 display: grid; 1108 grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr); 1109 gap: 28px; 1110 align-items: stretch; 1111 } 1112 1113 .admin-entry-hero, 1114 .admin-entry-card { 1115 border-radius: 28px; 1116 overflow: hidden; 1117 box-shadow: 0 28px 60px rgba(16, 24, 40, 0.12); 1118 } 1119 1120 .admin-entry-hero { 1121 background: 1122 linear-gradient(145deg, rgba(7, 21, 24, 0.96), rgba(18, 63, 22, 0.94)), 1123 url('/img/localgymsandfitness/1920x800/training.jpg') center/cover no-repeat; 1124 color: #fff; 1125 padding: 44px 38px; 1126 position: relative; 1127 } 1128 1129 .admin-entry-hero::after { 1130 content: ''; 1131 position: absolute; 1132 inset: 0; 1133 background: 1134 radial-gradient(circle at top right, rgba(120, 214, 32, 0.18), transparent 38%), 1135 linear-gradient(180deg, transparent, rgba(0, 0, 0, 0.18)); 1136 pointer-events: none; 1137 } 1138 1139 .admin-entry-hero-content { 1140 position: relative; 1141 z-index: 1; 1142 } 1143 1144 .admin-entry-eyebrow { 1145 display: inline-flex; 1146 align-items: center; 1147 padding: 9px 15px; 1148 border-radius: 999px; 1149 background: rgba(255, 255, 255, 0.08); 1150 border: 1px solid rgba(255, 255, 255, 0.16); 1151 font-size: 12px; 1152 font-weight: 700; 1153 letter-spacing: 0.08em; 1154 text-transform: uppercase; 1155 margin-bottom: 18px; 1156 } 1157 1158 .admin-entry-title { 1159 margin: 0 0 14px; 1160 font-size: 46px; 1161 line-height: 1.02; 1162 font-weight: 800; 1163 letter-spacing: -0.04em; 1164 color: #fff; 1165 } 1166 1167 .admin-entry-page { 1168 margin: 0 0 18px; 1169 font-size: 18px; 1170 line-height: 1.5; 1171 color: rgba(255, 255, 255, 0.86); 1172 } 1173 1174 .admin-entry-page a { 1175 color: #fff; 1176 text-decoration: none; 1177 border-bottom: 1px solid rgba(255, 255, 255, 0.25); 1178 } 1179 1180 .admin-entry-copy { 1181 margin: 0 0 24px; 1182 font-size: 20px; 1183 line-height: 1.55; 1184 color: rgba(255, 255, 255, 0.88); 1185 max-width: 640px; 1186 } 1187 1188 .admin-entry-points { 1189 list-style: none; 1190 margin: 0; 1191 padding: 0; 1192 display: grid; 1193 gap: 14px; 1194 } 1195 1196 .admin-entry-points li { 1197 display: grid; 1198 grid-template-columns: 36px minmax(0, 1fr); 1199 gap: 12px; 1200 align-items: center; 1201 padding: 14px 16px; 1202 border-radius: 18px; 1203 background: rgba(255, 255, 255, 0.08); 1204 border: 1px solid rgba(255, 255, 255, 0.08); 1205 color: rgba(255, 255, 255, 0.92); 1206 font-size: 16px; 1207 line-height: 1.45; 1208 } 1209 1210 .admin-entry-points i { 1211 width: 36px; 1212 height: 36px; 1213 display: inline-flex; 1214 align-items: center; 1215 justify-content: center; 1216 border-radius: 12px; 1217 background: rgba(120, 214, 32, 0.16); 1218 color: #9be34d; 1219 font-size: 16px; 1220 } 1221 1222 .admin-entry-card { 1223 background: #fff; 1224 border: 1px solid rgba(15, 23, 42, 0.08); 1225 padding: 34px 32px; 1226 display: flex; 1227 flex-direction: column; 1228 justify-content: center; 1229 } 1230 1231 .admin-entry-card h2 { 1232 margin: 0 0 12px; 1233 font-size: 34px; 1234 line-height: 1.08; 1235 font-weight: 800; 1236 letter-spacing: -0.03em; 1237 color: #10212b; 1238 } 1239 1240 .admin-entry-card p { 1241 margin: 0 0 22px; 1242 font-size: 16px; 1243 line-height: 1.65; 1244 color: #5c708c; 1245 } 1246 1247 .admin-entry-cta { 1248 display: inline-flex; 1249 align-items: center; 1250 justify-content: center; 1251 min-height: 58px; 1252 padding: 0 24px; 1253 border-radius: 16px; 1254 background: linear-gradient(135deg, #2b7fff, #1959f7); 1255 color: #fff; 1256 font-size: 18px; 1257 font-weight: 700; 1258 text-decoration: none; 1259 box-shadow: 0 18px 34px rgba(25, 89, 247, 0.24); 1260 } 1261 1262 button.admin-entry-cta { 1263 border: 0; 1264 width: 100%; 1265 cursor: pointer; 1266 } 1267 1268 .admin-entry-cta:hover, 1269 .admin-entry-cta:focus { 1270 color: #fff; 1271 text-decoration: none; 1272 } 1273 1274 .admin-entry-note { 1275 margin-top: 26px; 1276 padding-top: 22px; 1277 border-top: 1px solid rgba(15, 23, 42, 0.08); 1278 } 1279 1280 .admin-entry-note h3 { 1281 margin: 0 0 8px; 1282 font-size: 18px; 1283 line-height: 1.35; 1284 font-weight: 700; 1285 color: #10212b; 1286 } 1287 1288 .admin-entry-note p { 1289 margin: 0; 1290 font-size: 15px; 1291 line-height: 1.6; 1292 } 1293 1294 @media (max-width: 991px) { 1295 .admin-entry-shell { 1296 padding: 126px 0 56px; 1297 } 1298 1299 .admin-entry-grid { 1300 grid-template-columns: 1fr; 1301 } 1302 1303 .admin-entry-title { 1304 font-size: 40px; 1305 } 1306 } 1307 1308 @media (max-width: 767px) { 1309 .admin-entry-shell { 1310 padding: 108px 0 40px; 1311 } 1312 1313 .admin-entry-hero, 1314 .admin-entry-card { 1315 border-radius: 24px; 1316 } 1317 1318 .admin-entry-hero { 1319 padding: 30px 22px; 1320 } 1321 1322 .admin-entry-card { 1323 padding: 26px 22px; 1324 } 1325 1326 .admin-entry-title { 1327 font-size: 34px; 1328 } 1329 1330 .admin-entry-copy { 1331 font-size: 18px; 1332 } 1333 1334 .admin-entry-card h2 { 1335 font-size: 28px; 1336 } 1337 } 1338</style> 1339 1340<div class="container admin-entry-shell"> 1341 <div class="admin-entry-grid"> 1342 <section class="admin-entry-hero"> 1343 <div class="admin-entry-hero-content"> 1344 <div class="admin-entry-eyebrow">Admin access</div> 1345 <h1 class="admin-entry-title">Login</h1> 1346 <p class="admin-entry-copy">Log in to your account to:</p> 1347 1348 <ul class="admin-entry-points"> 1349 <li> 1350 <i class="fa fa-plus-square-o" aria-hidden="true"></i>
1351 <span>Add a new listing</span> 1352 </li> 1353 <li> 1354 <i class="fa fa-pencil-square-o" aria-hidden="true"></i> 1355 <span>Claim and edit your listing</span> 1356 </li> 1357 <li> 1358 <i class="fa fa-times-circle-o" aria-hidden="true"></i> 1359 <span>Remove your listing from the site</span> 1360 </li> 1361 </ul> 1362 </div> 1363 </section> 1364 1365 <section class="admin-entry-card"> 1366 <h2>Start secure access</h2> 1367 <p>Access the secure admin workspace for your listing</p> 1368 1369 <a href="https://account.localgymsandfitness.com/login" rel="nofollow" class="admin-entry-cta" data-google-interstitial="false">Start</a> 1370 1371 </section> 1372 </div> 1373</div> 1374 1375 1376 <!-- Footer --> 1377 <footer class="g-bg-black-opacity-0_9 g-color-white-opacity-0_6 g-py-60"> 1378 <div class="container"> 1379 <div class="row"> 1380 <!-- Footer Content --> 1381 <div class="col-lg-4 g-mb-50 g-mb-0--lg"> 1382 <h6 class="h6 g-color-white text-uppercase g-font-weight-700 g-mb-20">About LocalGymsAndFitness</h6> 1383 <div class="g-mb-25"> 1384 <p> 1385 One of the largest resources on the Internet for finding gyms & sports facilities worldwide. </p> 1386 </div> 1387 1388 </div> 1389 <!-- End Footer Content --> 1390 1391 <!-- Footer Content --> 1392 <div class="col-lg-4 g-mb-30 g-mb-0--lg"> 1393 <h6 class="h6 g-color-white text-uppercase g-font-weight-700 g-mb-20">Useful Links</h6> 1394 <div class="row"> 1395 <div class="col-sm-6"> 1396 <ul class="list-unstyled g-mb-30 g-mb-0--md"> 1397 <li class="d-flex g-mb-12"> 1398 <i class="fa fa-circle g-color-primary g-font-size-5 g-mt-10 g-mr-8"></i> 1399 <a class="g-color-white-opacity-0_6 g-color-primary--hover" href="https://www.localgymsandfitness.com/about" data-google-interstitial="false"> 1400 About LocalGymsAndFitness</a> 1401 </li> 1402 <li class="d-flex g-mb-12"> 1403 <i class="fa fa-circle g-color-primary g-font-size-5 g-mt-10 g-mr-8"></i> 1404 <a class="g-color-white-opacity-0_6 g-color-primary--hover" href="https://www.localgymsandfitness.com/terms" data-google-interstitial="false"> 1405 Terms</a> 1406 </li> 1407 <li class="d-flex g-mb-12"> 1408 <i class="fa fa-circle g-color-primary g-font-size-5 g-mt-10 g-mr-8"></i> 1409 <a class="g-color-white-opacity-0_6 g-color-primary--hover" href="https://www.localgymsandfitness.com/privacy" data-google-interstitial="false"> 1410 Privacy Policy</a> 1411 </li> 1412 <li class="d-flex"> 1413 <i class="fa fa-circle g-color-primary g-font-size-5 g-mt-10 g-mr-8"></i> 1414 <a class="g-color-white-opacity-0_6 g-color-primary--hover" href="https://www.localgymsandfitness.com/faq" data-google-interstitial="false"> 1415 FAQ</a> 1416 </li> 1417 </ul> 1418 </div> 1419 1420 <div class="col-sm-6"> 1421 <ul class="list-unstyled mb-0"> 1422 <li class="d-flex g-mb-12"> 1423 <i class="fa fa-circle g-color-primary g-font-size-5 g-mt-10 g-mr-8"></i> 1424 <a class="g-color-white-opacity-0_6 g-color-primary--hover" href="https://www.localgymsandfitness.com/advertise" data-google-interstitial="false"> 1425 Advertise</a> 1426 </li> 1427 <li class="d-flex g-mb-12"> 1428 <i class="fa fa-circle g-color-primary g-font-size-5 g-mt-10 g-mr-8"></i> 1429 <a class="g-color-white-opacity-0_6 g-color-primary--hover" href="https://www.localgymsandfitness.com/login/start" data-google-interstitial="false"> 1430 Add listing</a> 1431 </li> 1432 </ul> 1433 </div> 1434 </div> 1435 </div> 1436 <!-- End Footer Content --> 1437 1438 <!-- Footer Content --> 1439 <div class="col-lg-4">
1440 <h6 class="h6 g-color-white text-uppercase g-font-weight-700 g-mb-20">Subscribe</h6> 1441 1442 <p> We will notify you when anything happens in Chicago. </p> 1443 1444 <form class="g-mt-25" onsubmit="event.preventDefault(); subscribe(,null);" > 1445 <div class="row"> 1446 <div class="col-md-8 col-lg-12"> 1447 1448 <div class="form-group g-mb-20"> 1449 <label class="sr-only" for="email">Your Email</label> 1450 <input id="email" class="form-control g-color-white g-bg-transparent g-bg-transparent--focus g-brd-white-opacity-0_1 g-brd-primary--focus g-px-20 g-py-12" type="email" placeholder="Your Email"> 1451 </div> 1452 </div> 1453 1454 <div class="col-md-4 col-lg-12"> 1455 <button id="submit" class="btn btn-md u-btn-primary g-font-size-12 text-uppercase rounded g-py-11 g-px-30" type="submit">Subscribe</button> 1456 </div> 1457 </div> 1458 </form> 1459 </div> 1460 <!-- End Footer Content --> 1461 </div> 1462 </div> 1463 </footer> 1464 <!-- End Footer --> 1465 <div class="container" id="google-consent-footer"></div> 1466
1466<script data-cfasync="false" defer src="/js/google-consent-footer.js?v=20260917-1"></script>
1466 1467
1468<script> 1469 function subscribe(city, page) { 1470 var email; 1471 if (page === null) { 1472 email = $("#email").val(); 1473 $("#email").prop('disabled', true); 1474 $("#submit").hide(300); 1475 } else { 1476 email = $("#alert_email").val(); 1477 $("#alert_email").prop('disabled', true); 1478 $("#alert_submit").hide(300); 1479 } 1480 1481 $.ajax({ 1482 method: "POST", 1483 contentType : 'application/json', 1484 url: "/subscribe", 1485 data: JSON.stringify({email: email, city: city, page: page}) 1486 }).done(function(response) { 1487 console.log(response); 1488 }) 1489 .fail(function( jqXHR, textStatus) { 1490 console.log(textStatus); 1491 }); 1492 1493 return false; 1494 } 1495</script>
1495 1496 1497 1498 </main> 1499 1500 1501 1502
1502<script data-cfasync="false"> 1503 1504/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */ 1505(function(w){ 1506 "use strict"; 1507 /* exported loadCSS */ 1508 var loadCSS = function( href, before, media ){ 1509 // Arguments explained: 1510 // `href` [REQUIRED] is the URL for your CSS file. 1511 // `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet <link> before 1512 // By default, loadCSS attempts to inject the link after the last stylesheet or script in the DOM. However, you might desire a more specific location in your document. 1513 // `media` [OPTIONAL] is the media type or query of the stylesheet. By default it will be 'all' 1514 var doc = w.document; 1515 var ss = doc.createElement( "link" ); 1516 var ref; 1517 if( before ){ 1518 ref = before; 1519 } 1520 else { 1521 var refs = ( doc.body || doc.getElementsByTagName( "head" )[ 0 ] ).childNodes; 1522 ref = refs[ refs.length - 1]; 1523 } 1524 1525 var sheets = doc.styleSheets; 1526 ss.rel = "stylesheet"; 1527 ss.href = href; 1528 // temporarily set media to something inapplicable to ensure it'll fetch without blocking render 1529 ss.media = "only x"; 1530 1531 // wait until body is defined before injecting link. This ensures a non-blocking load in IE11. 1532 function ready( cb ){ 1533 if( doc.body ){ 1534 return cb(); 1535 } 1536 setTimeout(function(){ 1537 ready( cb ); 1538 }); 1539 } 1540 // Inject link 1541 // Note: the ternary preserves the existing behavior of "before" argument, but we could choose to change the argument to "after" in a later release and standardize on ref.nextSibling for all refs 1542 // Note: `insertBefore` is used instead of `appendChild`, for safety re: http://www.paulirish.com/2011/surefire-dom-element-insertion/ 1543 ready( function(){ 1544 ref.parentNode.insertBefore( ss, ( before ? ref : ref.nextSibling ) ); 1545 }); 1546 // A method (exposed on return object for external use) that mimics onload by polling document.styleSheets until it includes the new sheet. 1547 var onloadcssdefined = function( cb ){ 1548 var resolvedHref = ss.href; 1549 var i = sheets.length; 1550 while( i-- ){ 1551 if( sheets[ i ].href === resolvedHref ){ 1552 return cb(); 1553 } 1554 } 1555 setTimeout(function() { 1556 onloadcssdefined( cb ); 1557 }); 1558 }; 1559 1560 function loadCB(){ 1561 if( ss.addEventListener ){ 1562 ss.removeEventListener( "load", loadCB ); 1563 } 1564 ss.media = media || "all"; 1565 } 1566 1567 // once loaded, set link's media back to `all` so that the stylesheet applies once it loads 1568 if( ss.addEventListener ){ 1569 ss.addEventListener( "load", loadCB); 1570 } 1571 ss.onloadcssdefined = onloadcssdefined; 1572 onloadcssdefined( loadCB ); 1573 return ss; 1574 }; 1575 // commonjs 1576 if( typeof exports !== "undefined" ){ 1577 exports.loadCSS = loadCSS; 1578 } 1579 else { 1580 w.loadCSS = loadCSS; 1581 } 1582}( typeof global !== "undefined" ? global : this )); 1583 </script>
1583 1584 1585 1586
1587<script data-cfasync="false"> 1588 1589var $grid, $grid2; 1590$(function () { 1591 1592 $grid = $('.masonry-grid').masonry({ 1593 columnWidth: '.masonry-grid-item', 1594 itemSelector: '.masonry-grid-item', 1595 transitionDuration: 0, 1596 }); 1597 1598 $grid2 = $('.masonry-grid2').masonry({ 1599 columnWidth: '.masonry-grid-item', 1600 itemSelector: '.masonry-grid-item', 1601 transitionDuration: 0, 1602 }); 1603 1604 var layoutPending = false; 1605 function scheduleLayout() { 1606 if (layoutPending) return; 1607 layoutPending = true; 1608 requestAnimationFrame(function () { 1609 layoutPending = false; 1610 $grid.masonry('layout'); 1611 $grid2.masonry('layout'); 1612 }); 1613 } 1614 var grids = document.querySelectorAll('.masonry-grid, .masonry-grid2'); 1615 // Lazy images, failed images and embedded media can change size after load. 1616 // Observe item dimensions, not container height, to avoid layout feedback. 1617 if (window.ResizeObserver) { 1618 var sizeObserver = new ResizeObserver(scheduleLayout); 1619 grids.forEach(function (grid) { 1620 grid.querySelectorAll('.masonry-grid-item').forEach(function (item) { 1621 sizeObserver.observe(item); 1622 }); 1623 }); 1624 } 1625 grids.forEach(function (grid) { 1626 grid.addEventListener('load', scheduleLayout, true); 1627 grid.addEventListener('error', scheduleLayout, true); 1628 }); 1629 $(window).on('resize', scheduleLayout); 1630 if (document.fonts && document.fonts.ready) document.fonts.ready.then(scheduleLayout); 1631 scheduleLayout(); 1632 1633}); 1634$(window).on('load', function () { 1635 if ($grid !== undefined) { 1636 $grid.masonry('layout'); 1637 } 1638}); 1639</script>
1639 1640 1641
1641<script data-cfasync="false"> 1642 var documentReady=false, carouselInit=false; 1643 </script>
1643 1644
1644<script src="https://cdnjs.cloudflare.com/polyfill/v2/polyfill.min.js?features=IntersectionObserver"></script>
vendor: 1 bytes, line 1644
1644
1645<script data-cfasync="false"> 1646 1647document.addEventListener("DOMContentLoaded", function() { 1648 1649 var lazyImages = [].slice.call(document.querySelectorAll("img[data-src]")); 1650 var lazyVideos = [].slice.call(document.querySelectorAll("div.fb-video-lazy")); 1651 var captchaDivs = [].slice.call(document.querySelectorAll("div.g-recaptcha")); 1652 1653 if ("IntersectionObserver" in window) { 1654 1655 1656 1657 let lazyImageObserver = new IntersectionObserver(function(entries, observer) { 1658 entries.forEach(function(entry) { 1659 if (entry.isIntersecting) { 1660 1661 let lazyImage = entry.target; 1662 if (typeof lazyImage.dataset.src !== 'undefined') { 1663 lazyImage.src = lazyImage.dataset.src; 1664 } 1665 lazyImageObserver.unobserve(lazyImage); 1666 1667 if ($grid !== undefined) { 1668 $grid.masonry('layout'); 1669 } 1670 1671 if (typeof addthis !== 'undefined') { 1672 if (typeof addthis.layers.refresh !== 'undefined' && $.isFunction(addthis.layers.refresh)) { 1673 addthis.layers.refresh(); 1674 } 1675 } 1676 1677 if (documentReady && !carouselInit) { 1678 // initialization of carousel 1679 carouselInit = true; 1680 $.HSCore.components.HSCarousel.init('.js-carousel'); 1681 } 1682 } 1683 }); 1684 }, { 1685 rootMargin: "0px 0px 600px 0px" 1686 }); 1687 1688 lazyImages.forEach(function(lazyImage) { 1689 lazyImageObserver.observe(lazyImage); 1690 }); 1691 1692 1693 1694 let lazyVideoObserver = new IntersectionObserver(function(entries, observer) { 1695 entries.forEach(function(entry) { 1696 if (entry.isIntersecting) { 1697 1698 var timerId; 1699 var renderVid = function() { 1700 if (FbInited) { 1701 clearInterval(timerId); 1702 let lazyVideo = entry.target; 1703 observer.unobserve(lazyVideo); 1704 lazyVideo.classList.add('fb-video'); 1705 lazyVideo.classList.remove('fb-video-lazy'); 1706 FB.XFBML.parse(lazyVideo.parentNode); 1707 1708 if ($grid !== undefined) { 1709 $grid.masonry('layout'); 1710 } 1711 } 1712 }; 1713 1714 if (!FbInited) { 1715 timerId = setInterval(renderVid, 500); 1716 } else { 1717 renderVid(); 1718 } 1719 } 1720 }); 1721 }, { 1722 rootMargin: "0px 0px 600px 0px" 1723 }); 1724 1725 lazyVideos.forEach(function(lazyVideo) { 1726 lazyVideoObserver.observe(lazyVideo); 1727 }); 1728 1729 1730 1731 let captchaObserver = new IntersectionObserver(function(entries, observer) { 1732 entries.forEach(function(entry) { 1733 if (entry.isIntersecting) { 1734 observer.unobserve(entry.target); 1735 if (!document.querySelector('script[src*="/recaptcha/api.js"]')) { 1736 var rc = document.createElement('script'); 1737 rc.setAttribute('src','https://www.google.com/recaptcha/api.js'); 1738 document.head.appendChild(rc); 1739 } 1740 } 1741 }); 1742 }, { 1743 rootMargin: "0px 0px 256px 0px" 1744 }); 1745 1746 captchaDivs.forEach(function(captchaDiv) { 1747 captchaObserver.observe(captchaDiv); 1748 }); 1749 1750 } else { 1751 } 1752 }); 1753</script>
1753 1754 1755 1756 1757
1757<script data-cfasync="false"> 1758 1759 $(function () { 1760 1761 documentReady = true; 1762 1763 // initialization of go to 1764 $.HSCore.components.HSGoTo.init('.js-go-to'); 1765 1766 // initialization of header 1767 $.HSCore.components.HSHeader.init($('#js-header')); 1768 $.HSCore.helpers.HSHamburgers.init('.hamburger'); 1769 1770 // initialization of rating 1771 $.HSCore.components.HSRating.init($('.js-rating'), { 1772 spacing: 4 1773 }); 1774 1775 1776 1777 1778 1779 }); 1780 </script>
1780 1781 1782 1783 1784 1785 1786 <br/> 1787 <br/> 1788 <br/> 1789 1790 1791 1792 1793
1793<script data-cfasync="false"> 1794 document.addEventListener('DOMContentLoaded', () => { 1795 1796 [].forEach.call(document.querySelectorAll('.js-directory-results-toggle'), function (button) { 1797 var results = document.getElementById(button.getAttribute('aria-controls')); 1798 if (!results) return; 1799 button.addEventListener('click', function () { 1800 var expanded = button.getAttribute('aria-expanded') === 'true'; 1801 results.classList.toggle('is-expanded', !expanded); 1802 button.setAttribute('aria-expanded', expanded ? 'false' : 'true'); 1803 button.textContent = expanded ? button.getAttribute('data-collapsed-label') : button.getAttribute('data-expanded-label'); 1804 }); 1805 results.classList.add('is-collapsible'); 1806 button.classList.add('is-enhanced'); 1807 }); 1808 [].forEach.call(document.querySelectorAll('.js-directory-list-toggle'), function (button) { 1809 var list = document.getElementById(button.getAttribute('aria-controls')); 1810 if (!list) return; 1811 button.addEventListener('click', function () { 1812 var expanded = button.getAttribute('aria-expanded') === 'true'; 1813 list.classList.toggle('is-expanded', !expanded); 1814 button.setAttribute('aria-expanded', expanded ? 'false' : 'true'); 1815 button.textContent = expanded ? button.getAttribute('data-collapsed-label') : button.getAttribute('data-expanded-label'); 1816 }); 1817 list.classList.add('is-collapsible'); 1818 button.classList.add('is-enhanced'); 1819 }); 1820 1821 1822 setTimeout(function (){ 1823 loadScript("https://cdnjs.cloudflare.com/polyfill/v2/polyfill.min.js?features=IntersectionObserver"); 1824 1825 1826 1827 1828 loadScript("https://s.skimresources.com/js/117608X1581654.skimlinks.js"); 1829 1830 }, 3500); 1831 }); 1832 1833 function loadCss(cssFile) { 1834 var head = document.getElementsByTagName('head')[0]; 1835 var link = document.createElement('link'); 1836 link.rel = 'stylesheet'; 1837 link.type = 'text/css'; 1838 link.href = cssFile; 1839 link.media = 'all'; 1840 head.appendChild(link); 1841 } 1842 </script>
1842 1843 1844 1845 1846
1846<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"132afb33a56b4735ae1670dc4e4e071a","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 1846
1846
1847<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a4422af309d40bcd',t:'MTc5MDkyNzk2Nw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
1847</body> 1848</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.