PageSourceSearch

https://app.timelines.ai/accounts/login/

html timelines.ai collected 2026-09-24 11:43:50 UTC 23,954 bytes, 504 lines download raw bytes

1
2
3<!DOCTYPE html>
4<html lang="en">
5<head>
6    <meta charset="UTF-8">
7    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
8    <title>Login page - TimelinesAI</title>
9    <link rel="icon" href="/static/img/favicon/favicon.9d22dcd0a823.ico"/>
10    <link rel="icon" type="image/png" href="/static/img/favicon/favicon-32x32.20dabd51e0ff.png" sizes="32x32"/>
11    <link rel="icon" type="image/png" href="/static/img/favicon/favicon-16x16.bda746574050.png" sizes="16x16"/>
12    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/[email protected]/cdn/themes/light.css" />
13    <link rel="stylesheet" href="/static/css/bootstrap.min.ee7cc9e9bd5d.css">
14    <link rel="stylesheet" href="/static/css/bootstrap-datetimepicker.min.fc28fdcaebe0.css">
15    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
16    <link rel="stylesheet" href="/static/css/bootstrap-datepicker.min.6c64af21a8a4.css"/>
17    <link rel="stylesheet" href="/static/css/daterangepicker.af9f42f313f1.css"/>
18    <link rel="stylesheet" href="/static/css/toastr.min.bc96861d9899.css"/>
19    <link href="/static/css/select2-4.0.13.min.9f54e6414f87.css" rel="stylesheet"/>
20    <link href="/static/css/fontawesome-free/css/all.min.220d3af32394.css" rel="stylesheet" />
21    <link href="/static/css/fontawesome-free/css/solid.min.a5a4b24a648e.css" rel="stylesheet" />
22    <link href="/static/css/fontawesome-free/css/brands.min.39f906b05775.css" rel="stylesheet" />
23    <link href="/static/css/fontawesome-free/css/v4-shims.min.0e111e42b92a.css" rel="stylesheet" />
24    <link href="/static/css/adminlte.f91facdf3368.css" rel="stylesheet" />
25    <link href="/static/css/style.1c36de89b0e6.css" rel="stylesheet" />
26    <link href="/static/css/timelines/base.5e7d21a0c537.css" rel="stylesheet" />
27    <link href="/static/css/timelines/sidebar.fcc39e95aa63.css" rel="stylesheet" />
28    <link href="/static/css/icheck_flat_blue.bc45717b0a59.css" rel="stylesheet">
29    <link href="/static/css/balloon.f0023d951f40.css" rel="stylesheet">
30    <link href="/static/css/checkbox-switch.74854563ebbc.css" rel="stylesheet">
31    <link href="/static/css/intlTelInput.min.053300e047cf.css" rel="stylesheet">
32    
33    
33<script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/[email protected]/cdn/shoelace-autoloader.js"></script>
vendor: 1 bytes, line 33
33
34<script>
35    window.startTime = new Date().getTime();</script>
35
36
37
38
39<script>
40    !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init ge bs pe cs gs capture Ae Fi Ss register register_once register_for_session unregister unregister_for_session Es getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey canRenderSurveyAsync identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty ks ys createPersonProfile xs ps opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing ws debug $s getPageViewId captureTraceFeedback captureTraceMetric".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
41    posthog.init("phc_K5ueEDZNi3i040uTKrpXxtUP6yGdgjYijjaQM7IqLRH", {
42        api_host: 'https://eu.i.posthog.com',
43        person_profiles: 'always', // to create profiles for anonymous users as well
44        persistence: 'cookie',
45        cross_subdomain_cookie: true,
46        autocapture: false,
47        capture_dead_clicks: false,
48        capture_pageleave: false,
49        capture_performance: {
50            web_vitals: false,
51            web_vitals_allowed_metrics: []
52        },
53    });
54</script>
vendor: 1 bytes, line 54
54
55<script>
vendor: 323 bytes, line 55
55(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
55GTM-PBPZWJN
vendor: 3 bytes, line 55
55');
55</script>
55<script src="/static/js/jquery-3.7.1.min.2c872dbe60f4.js"></script>
55
56    
56<script src="/static/js/jquery-migrate-3.5.2.min.88d82ba2bc43.js"></script>
56
57    
57<script src="/static/js/jquery.scrollTo.min.4f3d9d7281a2.js"></script>
57
58    
58<script src="/static/js/bootstrap-3.3.7.min.5869c96cc8f1.js"></script>
58
59    
59<script src="/static/js/select2-4.0.13.min.86fee17cd48a.js"></script>
59
60     
61    <link href="/static/css/timelines/login.8d983f9a7948.css" rel="stylesheet"/>
62</head>
63<body class="sidebar-mini wysihtml5-supported login-page  " data-reset-height='false'>
vendor: 68 bytes, lines 63-64
63
64<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
64GTM-PBPZWJN
vendor: 82 bytes, line 64
64" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
64<div class="app-container ">
65    <div id="content-wrapper" class="wrapper">
66        
67            
68            <!-- Left side column. contains the logo and sidebar -->
69            
70            
71            
72            
73            <div class="content-wrapper" data-name="bg-content-wrapper">
74                
75                
76
77
78
79
80
81<div class="login-box">
82    <div class="login-logo">
83        <a href="/"><img src="/static/img/logo-hr.bfdbfc55d875.png"  style="max-width:240px;"/></a>
84    </div>
85    <!-- /.login-logo -->
86    <div class="login-box-body">
87        <p class="login-box-msg">Sign in to start your session</p>
88
89        
90        
91        
92
93        
94
95        
96
97        <form action="/accounts/login/" method="post">
98            <div class="form-group has-feedback">
99                <input type="email" name="email" placeholder="email" class="form-control" maxlength="254" required id="id_email">
100                <span class="fa fa-envelope-o form-control-feedback"></span>
101            </div>
102            <div class="form-group has-feedback">
103                <input type="password" name="password" placeholder="password" class="form-control" required id="id_password">
104                <span class="fa fa-unlock-alt form-control-feedback"></span>
105            </div>
106
107            <div class="text-center">
108                <button type="submit" class="btn btn-info btn-block btn-flat" data-testid="login-btn-signin">Sign In</button>
109            </div>
110            <input type="hidden" name="csrfmiddlewaretoken" value="ZIYtltzwqyAQmpjsWLlZd8hQ8YzcJE17gelWcO2Mz4eZYMsA5HB6YUdn0pT2x4vN" />
111            <input type="hidden" name="next" value="" />
112        </form>
113        <div class='text-center margin' style="display: flex; flex-direction: column; gap: 5px">
114            <a href="/accounts/send_otp">Sign in with email code</a>
115            <a href='/accounts/reset_password'>Forgot your password?</a>
116        </div>
117
118        
119        <div class="social-buttons">
120            <!-- <a href="/login/google-oauth2/" title='Sign in with Google' class='btn btn-social-icon btn-google'><i class='fa fa-google'></i></a> -->
121         <a href="/login/google-oauth2/" title='Sign in with Google' >
122                <button class="gsi-material-button">
123                <div class="gsi-material-button-state"></div>
124                <div class="gsi-material-button-content-wrapper">
125                    <div class="gsi-material-button-icon">
126                    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" xmlns:xlink="http://www.w3.org/1999/xlink" style="display: block;">
127                        <path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"></path>
128                        <path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"></path>
129                        <path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"></path>
130                        <path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"></path>
131                        <path fill="none" d="M0 0h48v48H0z"></path>
132                    </svg>
133                    </div>
134                    <span style="display: none;">Sign in with Google</span>
135                </div>
136                </button>
137         </a>
138        </div>
139        
140
141        <div class='signup-block'>
142            Don't have account yet?<br/>
143            <a href='/register/' class='btn btn-primary'>Sign-up</a>
144        </div>
145        
146    </div>
147    <!-- /.login-box-body -->
148</div>
149
150
151
152
153</div>
154        
155
156        
157        
158    </div>
159</div>
160
161
162  <div id="chat-info-modal-description-link" class="modal fade chat_info_modal_description"  tabindex="-1" role="dialog" aria-hidden="true" style="z-index: 9999">
163    <div class="modal-dialog" role="document">
164      <div class="modal-content">
165        <div class="modal-header">
166          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
167            <span aria-hidden="true">&times;</span>
168          </button>
169          <h4 class="modal-title" id="chat-info-modal-description-link-label"></h4>
170        </div>
171        <div class="modal-body"></div>
172        <div class="modal-footer">
173          <button type="button" class="btn-ui btn-ui-default" data-dismiss="modal">Close</button>
174        </div>
175      </div>
176    </div>
177  </div>
178
179<div class="chat_detail_pd_pinned_modal modal fade" id="pin-deal-modal" tabindex="-1" role="dialog" aria-hidden="true" style="z-index: 9999">
180    <div class="modal-dialog" role="document">
181        <div class="modal-content modal_add_agent" style="border-radius: 20px !important">
182            <div class="modal-body">
183                <div class="col-sm-12 custom-select-wrapper"
184                     style="display: flex; flex-direction: column; gap: 10px; align-items: center;"
185                >
186                    <p>Select and set a deal where WhatsApp messages continue to sync going forward</p>
187                    <select id="deal-select" class="form-control pipedrive-card-select" style="width: 100%">
188                        <option value="">Loading...</option>
189                    </select>
190                    <div id="btn-reload-deals" class="reload-assistants">
191                        
192    
193        <svg class="" width="19" height="16" fill="none" viewBox="0 0 19 16"
194             xmlns="http://www.w3.org/2000/svg">
195            <path d="M9.10449 10.8333L10.7758 12.4166L9.10449 13.9999" stroke="currentColor" stroke-width="1.5"
196                  stroke-linecap="round" stroke-linejoin="round"></path>
197            <path d="M4.09093 2.91675H2.41963C2.198 2.91675 1.98545 3.00016 1.82874 3.14862C1.67203 3.29709 1.58398 3.49845 1.58398 3.70841L1.58398 11.625C1.58398 11.835 1.67203 12.0364 1.82874 12.1848C1.98545 12.3333 2.198 12.4167 2.41963 12.4167H10.7761"
198                  stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
199            <path d="M9.10391 4.4999L7.43262 2.91658L9.10391 1.33325" stroke="currentColor" stroke-width="1.5"
200                  stroke-linecap="round" stroke-linejoin="round"></path>
201            <path d="M14.1178 12.4167H15.7891C16.0107 12.4167 16.2233 12.3333 16.38 12.1848C16.5367 12.0364 16.6247 11.835 16.6247 11.625V3.70841C16.6247 3.49845 16.5367 3.29709 16.38 3.14862C16.2233 3.00016 16.0107 2.91675 15.7891 2.91675H7.43262"
202                  stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
203        </svg>
204    
205
206                        Refresh the list
207                    </div>
208                    <div id="no-deals-block"
209                         style="display: none; margin-top: 10px; color: #a00; text-align: center;">
210                        Pipedrive Person <a href="" target="_blank"
211                                            style="color: #a00; text-decoration: underline;" class="et">
212                        
213                    </a> doesn't have any deals yet.<br>
214                        Create a deal for the person at Pipedrive first.
215                    </div>
216                </div>
217            </div>
218            <div class="modal-footer">
219                <button id="cancel-pin-deal" class="btn-ui btn-ui-default" data-dismiss="modal">Cancel</button>
220                <button id="save-pin-deal" class="btn-ui btn-ui-purple">Save</button>
221            </div>
222        </div>
223    </div>
224</div>
225
226<style>
227    .chat_detail_pd_pinned_modal .modal-footer {
228        display: flex;
229        justify-content: flex-end;
230        align-items: center;
231    }
232
233    .chat_detail_pd_pinned_modal p {
234        padding: 0;
235        font-size: 14px;
236        font-family: 'Outfit', sans-serif;
237        margin-bottom: 0;
238    }
239</style>
240<div class="chat_detail_pd_unpinned_modal modal fade" id="unpin-deal-modal" tabindex="-1" role="dialog" aria-hidden="true" style="z-index: 9999">
241    <div class="modal-dialog" role="document">
242        <div class="modal-content modal_add_agent" style="border-radius: 20px !important">
243            <div class="modal-body">
244
245
246
247                <p>Removing a pinned deal will revert to automatic daily selection of a deal / contact for message sync</p>
248            </div>
249            <div class="modal-footer">
250                <button id="cancel-unpin-deal" class="btn-ui btn-ui-default" data-dismiss="modal">Cancel</button>
251                <button id="confirm-unpin-deal" class="btn-ui btn-ui-purple">Unpin</button>
252            </div>
253        </div>
254    </div>
255</div>
256
257<style>
258    .chat_detail_pd_unpinned_modal .modal-footer {
259        display: flex;
260        justify-content: flex-end;
261        align-items: center;
262    }
263
264    .chat_detail_pd_unpinned_modal p {
265        padding: 0;
266        font-size: 14px;
267        font-family: 'Outfit', sans-serif;
268        margin-bottom: 0;
269    }
270</style>
271
272
273
274
275
276
277<div class="modal fade" id="messages-controls-reopen-timeline-modal" tabindex="-1" role="dialog" aria-hidden="true">
278  <div class="modal-dialog">
279    <div class="modal-content">
280      <div class="modal-header">
281        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
282          <span aria-hidden="true">×</span>
283        </button>
284        <h4 class="modal-title">Reopen Timeline</h4>
285      </div>
286      <div class="modal-body">
287        <p>Are you sure you want to reopen this timeline?</p>
288      </div>
289      <div class="modal-footer">
290        <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button>
291        <button type="button" class="btn btn-primary btn-confirm-action">Reopen</button>
292      </div>
293    </div>
294  </div>
295</div>
296
297
298<div class="modal fade" id="messages-controls-close-timeline-modal" tabindex="-1" role="dialog" aria-hidden="true">
299  <div class="modal-dialog">
300    <div class="modal-content">
301      <div class="modal-header">
302        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
303          <span aria-hidden="true">×</span>
304        </button>
305        <h4 class="modal-title">Resolve Timeline</h4>
306      </div>
307      <div class="modal-body">
308        <p>Are you sure you want to resolve this timeline?</p>
309      </div>
310      <div class="modal-footer">
311        <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button>
312        <button type="button" class="btn btn-primary btn-confirm-action">Resolve</button>
313      </div>
314    </div>
315  </div>
316</div>
317
318
319<sl-dialog id="delete-filter-dialog"
320           label="Delete chat filter"
321           class="dialog-overview delete_filter_dialog">
322    Are you sure you want to delete <b><span id="delete-filter-name"></span></b> filter?
323    This action cannot be undone.
324
325    <button id="js-delete-timeline-filter"
326            style="margin-right: 16px"
327            class="btn-ui btn-ui-purple"
328            slot="footer">
329        Delete filter
330
331
332    </button>
333
334    <button id="delete-filter-cancel"
335            slot="footer"
336            class="btn-ui btn-ui-default">
337        Cancel
338    </button>
339</sl-dialog>
340
341
342<div class="modal fade" id="visuals-timelines-close-timeline-modal" tabindex="-1" role="dialog" aria-hidden="true">
343  <div class="modal-dialog">
344    <div class="modal-content">
345      <div class="modal-header">
346        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
347          <span aria-hidden="true">×</span>
348        </button>
349        <h4 class="modal-title">Resolve Timeline</h4>
350      </div>
351      <div class="modal-body">
352        <p>Are you sure you want to resolve this timeline?</p>
353      </div>
354      <div class="modal-footer">
355        <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button>
356        <button type="button" class="btn btn-primary btn-confirm-action">Resolve</button>
357      </div>
358    </div>
359  </div>
360</div>
361
362
363
364<div class="modal fade" id="visuals-timelines-reopen-timeline-modal" tabindex="-1" role="dialog" aria-hidden="true">
365  <div class="modal-dialog">
366    <div class="modal-content">
367      <div class="modal-header">
368        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
369          <span aria-hidden="true">×</span>
370        </button>
371        <h4 class="modal-title">Reopen Timeline</h4>
372      </div>
373      <div class="modal-body">
374        <p>Are you sure you want to reopen this timeline?</p>
375      </div>
376      <div class="modal-footer">
377        <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button>
378        <button type="button" class="btn btn-primary btn-confirm-action">Reopen</button>
379      </div>
380    </div>
381  </div>
382</div>
383
384
385<sl-dialog id="waba-cancel-reason-dialog" label="Reason" class="dialog-overview">
386  <p id="cancel-reason-dialog-body" style="margin: 0; word-wrap: break-word; text-align: center"></p>
387</sl-dialog>
388<script src="/static/js/timelines/chat_waba.48491b7cb38f.js"></script>
388
389
390<script>
391window.floating_notification_timeout = 10;
392var orgId = null;
393var role = null;
394var limit_mb = 0;
395const user_authenticated = false;
396
397</script>
vendor: 1 bytes, line 397
397
398<script src="/static/js/moment.min.aeb7908241d9.js"></script>
vendor: 1 bytes, line 398
398
399<script src="/static/js/daterangepicker.min.f73957376d7e.js"></script>
vendor: 1 bytes, line 399
399
400<script src="/static/js/bootstrap-datetimepicker.min.8a36160a466c.js"></script>
vendor: 1 bytes, line 400
400
401<script src="/static/js/socket.io.min-4.7.4.66c33313d3d4.js"></script>
vendor: 1 bytes, line 401
401
402<script src="/static/js/toastr.min.9cbd94fc0eec.js"></script>
vendor: 1 bytes, line 402
402
403<script src="/static/js/popper-1.14.3.min.4a28261efa0f.js"></script>
vendor: 1 bytes, line 403
403
404<script src="/static/js/clipboard.min.3f3688138a1b.js"></script>
vendor: 1 bytes, line 404
404
405<script src="/static/js/template.21d96df185bd.js"></script>
405  
406<script src="/static/js/icheck.min.df8eccd3ee39.js"></script>
vendor: 1 bytes, line 406
406
407<script src="/static/js/jquery-cookie.bee6bb88c240.js"></script>
vendor: 1 bytes, line 407
407
408<script src="/static/js/timelines.8b3c3a33a735.js"></script>
vendor: 1 bytes, line 408
408
409<script src="/static/js/async.ea7857f28004.js"></script>
vendor: 1 bytes, line 409
409
410<script src="/static/js/tooltip.2edcf0323a40.js"></script>
vendor: 1 bytes, line 410
410
411<script src="/static/js/timelines/base.7515425279c2.js"></script>
vendor: 1 bytes, line 411
411
412<script src="/static/js/timelines/user_notifications.251653839565.js"></script>
412
413
414<script>
415    blockUserCabinet();
416    if ($('.main-alert').length) {
417        $('.main-alert .close').on('click', function() {
418            var alert_id = $(this).attr('data-id');
419            $('div#system-notification-'+alert_id).remove();
420            api.dismissSystemNotifications(alert_id, {'onSuccess': function() {}});
421        });
422    }
423</script>
423
424
425<script> // user activity tracking
426const _ACTIVITY_COLLECT_INTERVAL = 1000;
427const _ACTIVITY_SENDING_INTERVAL = 120;
428const activity_events = ["mouseup", "keydown", "scroll", "mousemove"];
429
430let has_activity = true;  // user has opened page, so we have activity
431
432function _activity_event_handler() {has_activity = true}
433
434function _current_time_key() {
435    const ts_minute = Math.floor(Date.now()/(60*1000)) // minute number from epoch
436    return `${window.userId}_${window.workspace_id}_${ts_minute}`
437}
438
439if (user_authenticated) {
440    let to_send_cnt = _ACTIVITY_SENDING_INTERVAL  // seconds counter, send data on very first turn
441    setInterval(function () {
442        let activity_tracker_str = localStorage.getItem('activity_tracker')
443        let activity_tracker_data
444        if (activity_tracker_str === null) activity_tracker_data = {}
445        else activity_tracker_data = JSON.parse(activity_tracker_str)
446
447        const ts_key = _current_time_key()
448
449        if (!document.hidden && has_activity) {
450//            console.log('active tick', ts_key, activity_tracker_data, ts_key in activity_tracker_data)
451            if (!(ts_key in activity_tracker_data)) {
452//                console.log('=== got tick', ts_key)
453                activity_tracker_data[ts_key] = 1
454                localStorage.setItem('activity_tracker', JSON.stringify(activity_tracker_data))
455            }
456            has_activity = false
457        }
458        to_send_cnt += 1
459        if (to_send_cnt > _ACTIVITY_SENDING_INTERVAL) {
460//            console.log('=== send collected')
461            to_send_cnt = 0
462            let ids_to_send = []
463            for (const [key, _] of Object.entries(activity_tracker_data)) {
464                if (key !== ts_key) ids_to_send.push(key)
465            }
466            if (ids_to_send.length > 0) {
467//                console.log('=== send', ids_to_send)
468                window.socket.emit('user_activity_track', ids_to_send)
469                for (const key of ids_to_send) {
470                    delete activity_tracker_data[key]
471//                    console.log('=== deleted', key)
472                }
473                localStorage.setItem('activity_tracker', JSON.stringify(activity_tracker_data))
474//                console.log('=== store cleaned', activity_tracker_data)
475            }
476        }
477    }, _ACTIVITY_COLLECT_INTERVAL);
478
479    document.addEventListener("DOMContentLoaded", function () {
480        activity_events.forEach(function (e) {
481            document.addEventListener(e, _activity_event_handler)
482        });
483    });
484}
485</script>
vendor: 1 bytes, line 485
485
486<script>
487    (function (w, d, s, p, t) {
488        w.gr = w.gr || function () {
489            w.gr.ce = 60;
490            w.gr.q = w.gr.q || [];
491            w.gr.q.push(arguments);
492        };
493        p = d.getElementsByTagName(s)[0];
494        t = d.createElement(s);
495        t.async = true;
496        t.src = "https://script.getreditus.com/v2.js";
497        p.parentNode.insertBefore(t, p);
498    })(window, document, "script");
499    window.gr("initCustomer", "c22de9d3-800a-4536-8781-8739577c300b");
500    window.gr("track", "pageview");
501</script>
501
502
503<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":"e89c8ea97b6043c4b16e2ff5023400cf","spa":2}' crossorigin="anonymous"></script>
503
504</body></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.