PageSourceSearch

https://www.localgymsandfitness.com/login

html localgymsandfitness.com collected 2026-10-02 07:59:27 UTC 71,135 bytes, 1,848 lines download raw bytes

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.