PageSourceSearch

https://web.vatrin.app/register

html vatrin.app collected 2026-10-01 15:18:13 UTC 20,864 bytes, 469 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" dir="ltr">
3  <head>
4    <meta charset="utf-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1">
6    <meta name="robots" content="noindex, nofollow">
7    <meta name="csrf-token" content="FwsHBT87K2pVWxIcCDsMHgIkFj0AQnMeVDmLUQJ8ejMZ0mXYUBobo1C3">
8    <title data-suffix=" · Vatrin">
9      Register
10     · Vatrin</title>
11    <meta property="og:title" content="Register" key="og:title">
12
13<meta name="description" content="Register" key="description">
14<meta property="og:description" content="Register" key="og:description">
15<meta name="twitter:description" content="Register" key="twitter:description">
16
17<meta property="og:image" content="/images/logo-27b92223f36b7adb084762441c0f0856.png?vsn=d" key="og:image">
18<meta name="twitter:image" content="/images/logo-27b92223f36b7adb084762441c0f0856.png?vsn=d" key="twitter:image">
19
20<link rel="canonical" href="https://web.vatrin.app/register" key="canonical">
21<meta property="og:url" content="https://web.vatrin.app/register" key="og:url">
22<meta name="twitter:url" content="https://web.vatrin.app/register" key="twitter:url">
23
24<meta property="og:site_name" content="Vatrin">
25<meta property="og:type" content="website">
26
27<link href="/favicon-cbaf99682e0917a4239d1982ee6859ba.ico?vsn=d" rel="shortcut icon" media="(prefers-color-scheme: light)">
28<link href="/favicon-dark-57177eacb64d621e0a44fc88eafbc7ee.ico?vsn=d" rel="shortcut icon" media="(prefers-color-scheme: dark)">
29
30<link rel="alternate" hreflang="en" href="https://web.vatrin.app/register">
31<link rel="alternate" hreflang="ar" href="https://web.vatrin.app/ar/register">
32
33
34  <meta property="al:ios:url" content="vatrin-seller://">
35  <meta property="al:ios:app_store_id" content="1660052265">
36  <meta property="al:ios:app_name" content="Vatrin Seller">
37  
38  
39  <meta name="apple-itunes-app" content="app-id=1660052265">
40
41  <meta property="al:android:url" content="vatrin-seller://">
42  <meta property="al:android:package" content="com.vatrin.seller">
43  <meta property="al:android:app_name" content="Vatrin Seller">
44
45  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/smartbanner.js/1.25.0/smartbanner.min.css" integrity="sha512-PHvPyt987eem5xJmPM0hwbf4LtZ9k6yOLpqkqf6E67Oy9x7Fs77U/mU+hK3PnXt0yVV1+4HMoAMXYYJWP1sIdA==" crossorigin="anonymous" referrerpolicy="no-referrer">
46  
46<script src="https://cdnjs.cloudflare.com/ajax/libs/smartbanner.js/1.25.0/smartbanner.min.js" integrity="sha512-bGaeKb0i8Z2y2aMWYmLx74XbTvpHYpRrNbClk4MtaAX4LTlE2Vr454/9H3lFdO3lqmTO8p62654Q/x8S5R6amA==" crossorigin="anonymous" referrerpolicy="no-referrer">
47  </script>
47
48
49  <!-- Start SmartBanner configuration -->
50<meta name="smartbanner:title" content="Vatrin: Ecommerce &amp; Cashier">
51<meta name="smartbanner:author" content="Vatrin">
52<meta name="smartbanner:price" content="FREE">
53<meta name="smartbanner:price-suffix-apple" content=" - On the App Store">
54<meta name="smartbanner:price-suffix-google" content=" - In Google Play">
55<meta name="smartbanner:icon-apple" content="/images/app-icon-651cbb35365ed0ffb1617fd2ce595372.png?vsn=d">
56<meta name="smartbanner:icon-google" content="/images/app-icon-651cbb35365ed0ffb1617fd2ce595372.png?vsn=d">
57<meta name="smartbanner:button" content="VIEW">
58<meta name="smartbanner:button-url-apple" content="https://apps.apple.com/us/app/vatrin/id1660052265">
59<meta name="smartbanner:button-url-google" content="https://play.google.com/store/apps/details?id=com.vatrin.seller">
60<meta name="smartbanner:enabled-platforms" content="android,ios">
61<meta name="smartbanner:close-label" content="Close">
62
63<meta name="smartbanner:custom-design-modifier" content="ios">
64
65<meta name="smartbanner:exclude-user-agent-regex" content="^.*(Version).*Safari">
66<!-- End SmartBanner configuration -->
67
68
69    <link phx-track-static rel="stylesheet" href="/assets/app-1a4a09e48222b6b53dd70481a89d18bc.css?vsn=d">
70    
70<script defer phx-track-static type="text/javascript" src="/assets/js/app-11e86b40016096f87ed1b5e25b67ebcc.js?vsn=d">
71    </script>
71
72
73    <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/dist/svg-arrow.css">
74    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/driver.css">
75
76    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/quill.snow.css" rel="stylesheet">
77    <link href="/assets/vendor/quill2-emoji-ad1105cdc41947094857eb72ff1d13b1.css?vsn=d" rel="stylesheet">
78
79    
79<script>
80  const adapters = ["posthog","firebase","meta","tiktok"];
81
82  window.analytics = {
83    distinctId: "",
84    aliasId: "",
85    userProperties: null,
86    source: "merchant-frontend",
87    env: "prod",
88    adapters: {
89      local: {
90        track(eventName, properties) { console.debug(`[Analytics] Event Tracked: ${eventName}`, properties) },
91        page() { console.debug("[Analytics] Page View Tracked") }
92      },
93      test: {
94        track(eventName, properties) { console.debug(`[Analytics] Event Tracked: ${eventName}`, properties) },
95        page() { console.debug("[Analytics] Page View Tracked") }
96      }
97    },
98    track(eventName, properties, options = {}) {
99      properties = { source: window.analytics.source, env: window.analytics.env, ...window.analytics.userProperties, ...properties };
100      this.channels(options).forEach((channel) => { window.analytics.adapters[channel]?.track(eventName, properties) });
101    },
102    page(options = {}) {
103      this.channels(options).forEach((channel) => { window.analytics.adapters[channel]?.page() });
104    },
105    channels(options) {
106      if (!options.channels) { return adapters }
107
108      return options.channels.filter(channel => adapters.includes(channel));
109    }
110  }
111</script>
111
112    
112<script>
113  !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.async=!0,p.src=s.api_host+"/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="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
114
115  posthog.init("phc_JJsqAZw552EEUWEKq6WWd2vxpl5vKhmGeEqGsMVlRi3", {
116    api_host: "https://us.posthog.com",
117    autocapture: false,
118    loaded: function (posthog) {
119      posthog.register({ source: window.analytics.source, env: window.analytics.env })
120
121      if (window.analytics.distinctId) {
122        posthog.identify(window.analytics.distinctId, window.analytics.userProperties)
123        posthog.alias(window.analytics.aliasId, window.analytics.distinctId);
124      } else if (posthog.get_distinct_id()?.startsWith("store:")) {
125        // If the distinct_id starts with "store:", reset the posthog instance
126        // This means the user has logged out, and we don't want to track events for the previous user
127        posthog.reset()
128      }
129
130      window.analytics.adapters.posthog = {
131        track(eventName, properties) { window.posthog?.capture(eventName, properties) },
132        page() { window.posthog?.capture("$pageview") }
133      };
134    }
135  })
136</script>
136
137    <!-- Meta Pixel Code -->
138<script>
vendor: 417 bytes, lines 138-147
138
139  !function(f,b,e,v,n,t,s)
140  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
141  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
142  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
143  n.queue=[];t=b.createElement(e);t.async=!0;
144  t.src=v;s=b.getElementsByTagName(e)[0];
145  s.parentNode.insertBefore(t,s)}(window, document,'script',
146  "https://connect.facebook.net/en_US/fbevents.js");
147  fbq("init", "
1476494741080538244
vendor: 35 bytes, lines 147-150
147");
148  fbq("track", "PageView");
149
150  
150// Refer to https://developers.facebook.com/docs/meta-pixel/reference#standard-events for the rest of the standard events
151  const metaStandardEvents = ["PageView", "ViewContent", "CompleteRegistration"];
152  window.analytics.adapters.meta = {
153    track(eventName, properties) {
154      const trackType = metaStandardEvents.includes(eventName) ? "track" : "trackCustom";
155      fbq(trackType, eventName, properties);
156    },
157    page() { fbq("track", "PageView") }
158  };
159</script>
159
160<noscript>
161  <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=6494741080538244&amp;ev=PageView&amp;noscript=1">
162</noscript>
163<!-- End Meta Pixel Code -->
164
165    <!-- TikTok Pixel Code Start -->
166<script if>
167  !function (w, d, t) {
168  w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie","holdConsent","revokeConsent","grantConsent"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(
169  var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var r="https://analytics.tiktok.com/i18n/pixel/events.js",o=n&&n.partner;ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=r,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};n=document.createElement("script")
170  ;n.type="text/javascript",n.async=!0,n.src=r+"?sdkid="+e+"&lib="+t;e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(n,e)};
171  ttq.load("CT7G27JC77UANHJ2R3D0");
172  ttq.page();
173  }(window, document, "ttq");
174
175  window.analytics.adapters.tiktok = {
176    track(eventName, properties) {
177      ttq.track(eventName, properties)
178    },
179    page() { ttq.page() }
180  };
181</script>
181
182<!-- TikTok Pixel Code End -->
183
184
185    
185<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/quill.js">
186    </script>
186
187    
187<script src="https://unpkg.com/quill-paste-smart@latest/dist/quill-paste-smart.js">
188    </script>
188
189
190    
190<script async src="https://js.stripe.com/v3/pricing-table.js">
191    </script>
191
192  </head>
193  <body class="bg-white antialiased">
194    <div id="phx-GNpw3C5cT9yW93fB" data-phx-main data-phx-session="SFMyNTY.g2gDaAJhBnQAAAAIdwJpZG0AAAAUcGh4LUdOcHczQzVjVDl5VzkzZkJ3B3Nlc3Npb250AAAAAHcEdmlld3cdRWxpeGlyLlZhdHJleFdlYi5BdXRoTGl2ZS5OZXd3CnBhcmVudF9waWR3A25pbHcGcm91dGVydxdFbGl4aXIuVmF0cmV4V2ViLlJvdXRlcncJcm9vdF92aWV3dx1FbGl4aXIuVmF0cmV4V2ViLkF1dGhMaXZlLk5ld3cRbGl2ZV9zZXNzaW9uX25hbWV3IXJlZGlyZWN0X2lmX3VzZXJfaXNfYXV0aGVudGljYXRlZHcIcm9vdF9waWR3A25pbG4GAEZqC_igAWIAAVGA.fGr8S8-OIuJIJ_gpwHSF2yY4GLfX6eKkhXbY6p-QZn4" data-phx-static="SFMyNTY.g2gDaAJhBnQAAAADdwJpZG0AAAAUcGh4LUdOcHczQzVjVDl5VzkzZkJ3BWZsYXNodAAAAAB3CmFzc2lnbl9uZXdsAAAAAXcMY3VycmVudF91c2Vyam4GAEZqC_igAWIAAVGA.dst0ftfW03X68Y7z5YB1sK8Ld1MuCyk_cvPNST8cEBc"><main class="bg-white h-screen w-screen">
195  
196
197
198  <div class="h-full relative flex flex-col lg:flex-row text-base-content">
199    <div class="flex absolute w-full justify-between pt-6 lg:pt-8 px-6 lg:px-11">
200      <div>
201        <img src="/images/logo-transparent-9a1f2276ac7034bc750846d85dcf9adc.svg?vsn=d" class="w-20 lg:w-[102px]">
202      </div>
203      <a href="/ar/register" id="locale-change-button" dir="ltr" class="flex items-center justify-center gap-x-1">
204  <p class="text-dark-200 font-medium font-avenir">
205    العربية
206  </p>
207  <img class="rounded-full h-4 w-4" src="/images/arabic-9b5f452892eb0fdf634275fb65c6a1dd.svg?vsn=d" alt="Flag for en">
208</a>
209    </div>
210    <div class="w-full lg:w-[49.3%] h-[49.3%] lg:h-full bg-base-200 flex items-center justify-center">
211      <img class="max-w-[592px] p-4 pt-[4.25rem] h-full lg:w-full lg:h-auto lg:pt-4" src="/images/analytics-en.png" srcset="/images/analytics-en.png, /images/[email protected] 2x, /images/[email protected] 3x" loading="lazy">
212    </div>
213
214    <div class="flex-grow flex items-center justify-center p-4">
215      <div class="mx-auto max-w-sm">
216        <div id="phone-number-form-container" class="">
217  <header class="">
218  <div>
219    <h1 class="text-lg font-semibold leading-8 text-zinc-800">
220      
221    <div class="flex flex-col gap-3 font-semibold text-[1.875rem]">
222      <div class="leading-none">👋</div>
223      <div class="leading-normal">Welcome to Vatrin!</div>
224    </div>
225    
226    </h1>
227    <p class="mt-7 text-sm leading-6 text-zinc-600">
228      Let&#39;s get started and explore all the possibilities awaiting you!
229    </p>
230  </div>
231  <div class="flex-none"></div>
232</header>
233
234  <form phx-submit="next" phx-change="validate" class="flex flex-col gap-[1.125rem] pt-[1.125rem]" id="phone-number-form" method="post">
235  
236  
237  
238  
239    <div>
240      <div phx-feedback-for="user[phone_number]" class="w-full " dir="ltr">
241  <div class="live_phone " id="live_phone-phone-number" phx-hook="LivePhone">
242  <div class="live_phone-country" tabindex="0" phx-target="1" phx-click="toggle" aria-owns="live_phone-phone-number" aria-expanded="false" role="combobox">
243  <span class="live_phone-country-flag">🇪🇬</span>
244  <span class="live_phone-country-code">+20</span>
245</div>
246
247  <input type="tel" class="live_phone-input" value="" tabindex="0" placeholder="WhatsApp number" phx-target="1" phx-keyup="typing" phx-blur="close">
248
249  <input id="user_phone_number" name="user[phone_number]" type="hidden" value="">
250
251  
252</div>
253  <div dir="auto">
254    
255  </div>
256</div>
257    </div>
258
259    
260  
261    
262      <button class="phx-submit-loading:opacity-75 w-full btn btn-primary !rounded-lg !text-xl !leading-[1.875rem] !py-2.5">
263  
264        Next
265      
266</button>
267
268      <div class="flex gap-1 justify-center font-medium text-sm text-base-content">
269        <span>Already have an account?</span>
270
271        <a href="/login" data-phx-link="redirect" data-phx-link-state="push" class="text-link hover:underline">
272          Log In
273        </a>
274      </div>
275    
276  
277
278</form>
279</div>
280
281<div class="hidden">
282  <div class="mx-auto max-w-sm text-base-content">
283  <header class="text-center">
284  <div>
285    <h1 class="text-lg font-semibold leading-8 text-zinc-800">
286      
287    <div class="flex flex-col gap-3 font-semibold text-[1.875rem]">
288      Verification Code
289    </div>
290    
291    </h1>
292    <p class="mt-7 text-sm leading-6 text-zinc-600">
293      
294      Enter the OTP sent to your Whatsapp mobile number
295      <br>
296      <span dir="ltr" class="text-primary font-semibold text-lg">
297        
298      </span>
299    
300    </p>
301  </div>
302  <div class="flex-none"></div>
303</header>
304
305  <form action="/login?_action=registered" method="post" phx-submit="verify-otp" phx-change="validate" class="flex flex-col gap-[1.125rem] pt-[1.125rem]" id="confirmation-form">
306  
307  <input name="_csrf_token" type="hidden" hidden value="FwsHBT87K2pVWxIcCDsMHgIkFj0AQnMeVDmLUQJ8ejMZ0mXYUBobo1C3">
308  
309  
310    <div class="flex flex-col items-center">
311      <div class="flex gap-3 text-2xl text-center justify-center whitespace-nowrap text-sky-950" id="otp-digits-input-group" dir="ltr">
312  
313  
314    
315      <input type="hidden" name="user[otp_digits][_persistent_id]" value="0">
316    
317  
318  
319    <input id="user[otp_digits][digit_0]" name="user[otp_digits][digit_0]" type="text" autocomplete="off" inputmode="numeric" class="otp-input shrink-0 bg-white rounded-2xl border-dashed border-[3px] h-[60px] w-[60px] text-center focus:border-primary focus:ring-0 border-light-300"><input id="user[otp_digits][digit_1]" name="user[otp_digits][digit_1]" type="text" autocomplete="off" inputmode="numeric" class="otp-input shrink-0 bg-white rounded-2xl border-dashed border-[3px] h-[60px] w-[60px] text-center focus:border-primary focus:ring-0 border-light-300"><input id="user[otp_digits][digit_2]" name="user[otp_digits][digit_2]" type="text" autocomplete="off" inputmode="numeric" class="otp-input shrink-0 bg-white rounded-2xl border-dashed border-[3px] h-[60px] w-[60px] text-center focus:border-primary focus:ring-0 border-light-300"><input id="user[otp_digits][digit_3]" name="user[otp_digits][digit_3]" type="text" autocomplete="off" inputmode="numeric" class="otp-input shrink-0 bg-white rounded-2xl border-dashed border-[3px] h-[60px] w-[60px] text-center focus:border-primary focus:ring-0 border-light-300">
320  
321
322</div>
323
324<div phx-feedback-for="user[otp]" class="hidden">
325  
326
327  <div class="relative ">
328    
329
330    <input type="hidden" name="user[otp]" id="otp" class="py-2.5 px-4 text-base-content text-base rounded-lg order-2 peer block w-full focus:ring-transparent focus:outline-none placeholder:text-slate-500 phx-no-feedback:border-gray-300 phx-no-feedback:focus:border-gray-400 border-gray-300 focus:border-gray-400">
331
332    
333
334    
335
336    
337  </div>
338
339  
340</div>
341
342<script src="/assets/vendor/otp-3baec50e726c9d45a78e54e7ee8573a6.js?vsn=d">
343</script>
343
344
345      <div phx-feedback-for="user[phone_number]" class="hidden">
346  
347
348  <div class="relative ">
349    
350
351    <input type="hidden" name="user[phone_number]" id="phone-number__verification" class="py-2.5 px-4 text-base-content text-base rounded-lg order-2 peer block w-full focus:ring-transparent focus:outline-none placeholder:text-slate-500 phx-no-feedback:border-gray-300 phx-no-feedback:focus:border-gray-400 border-gray-300 focus:border-gray-400">
352
353    
354
355    
356
357    
358  </div>
359
360  
361</div>
362      <div phx-feedback-for="user[remember_me]" class="hidden">
363  
364
365  <div class="relative ">
366    
367
368    <input type="hidden" name="user[remember_me]" id="user_remember_me" value="true" class="py-2.5 px-4 text-base-content text-base rounded-lg order-2 peer block w-full focus:ring-transparent focus:outline-none placeholder:text-slate-500 phx-no-feedback:border-gray-300 phx-no-feedback:focus:border-gray-400 border-gray-300 focus:border-gray-400">
369
370    
371
372    
373
374    
375  </div>
376
377  
378</div>
379    </div>
380
381    
382  
383    
384      <button class="phx-submit-loading:opacity-75 w-full btn btn-primary !rounded-lg !text-xl !leading-[1.875rem] !py-2.5" id="submit-btn">
385  
386        Next
387      
388</button>
389
390      <div class="flex gap-1 justify-center font-medium">
391        <span>Didn&#39;t get the code?</span>
392
393        
394
395        <p class="text-dark-100">
396          Resend in 00:30
397        </p>
398      </div>
399    
400  
401
402</form>
403</div>
404</div>
405      </div>
406    </div>
407  </div>
408</main></div>
409
410    
410<script src="https://unpkg.com/@popperjs/core@2">
411    </script>
411
412    
412<script src="https://unpkg.com/tippy.js@6">
413    </script>
413
414    
414<script src="https://cdn.jsdelivr.net/npm/@easepick/[email protected]/dist/index.umd.min.js">
415    </script>
415
416    
416<script src="https://cdn.jsdelivr.net/npm/@floating-ui/[email protected]">
417    </script>
417
418    
418<script src="https://cdn.jsdelivr.net/npm/@floating-ui/[email protected]">
419    </script>
419
420    
420<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js">
421    </script>
421
422    <!-- Including ResizeObserver polyfill for compatibility with browsers that do not natively support ResizeObserver. 
423     This ensures smooth functionality for detecting container resize events. -->
424    
424<script src="https://cdn.jsdelivr.net/npm/resize-observer-polyfill/dist/ResizeObserver.global.js">
425    </script>
425
426
427    
427<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/driver.js.iife.js">
428    </script>
428
429
430    <!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 430-431
430
431<script async src="https://www.googletagmanager.com/gtag/js?id=
431G-T1Y067ZG2Q
vendor: 14 bytes, lines 431-433
431">
432</script>
433
434<script type="module">
435  import { initializeApp } from "https://www.gstatic.com/firebasejs/11.0.1/firebase-app.js";
436  import { getAnalytics, logEvent, setUserId, setUserProperties } from "https://www.gstatic.com/firebasejs/11.0.1/firebase-analytics.js";
437
438  const firebaseConfig = {
439    apiKey: "AIzaSyAaeN7j7M9GuUTDWx5wQbFY9YCVHtNvbk4",
440    authDomain: "ps-vatrin-com.firebaseapp.com",
441    projectId: "ps-vatrin-com",
442    storageBucket: "ps-vatrin-com.appspot.com",
443    messagingSenderId: "627652008834",
444    appId: "1:627652008834:web:84e9be0d17b8dd43a08d9b",
445    measurementId: "G-T1Y067ZG2Q"
446  };
447
448  // Initialize Firebase
449  const app = initializeApp(firebaseConfig);
450  const analytics = getAnalytics(app);
451  setUserId(analytics, window.analytics.distinctId);
452  setUserProperties(analytics, window.analytics.userProperties);
453
454  window.analytics.adapters.firebase = {
455    track(eventName, properties) { logEvent(analytics, event, properties) },
456    page() { logEvent(analytics, "screen_view", { firebase_screen: window.location.pathname }) }
457  };
458</script>
458
459
460<script>
461  window.dataLayer = window.dataLayer || [];
462  function gtag(){dataLayer.push(arguments);}
463  gtag("js", new Date());
464
465  // Should be removed when used with firebase. Refer to https://firebase.google.com/docs/analytics/get-started?platform=web
466  // gtag("config", "G-T1Y067ZG2Q");
467</script>
467
468  </body>
469</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.