PageSourceSearch

https://mipcc2026.ca/speakers

html mipcc2026.ca collected 2026-10-05 18:54:13 UTC 21,262 bytes, 536 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" data-lang="en">
3<head>
4<meta charset="UTF-8" />
5<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6<link rel="icon" type="image/svg+xml" href="assets/favicon.svg">
7<link rel="icon" type="image/png" sizes="32x32" href="assets/favicon-32.png">
8<link rel="icon" type="image/png" sizes="192x192" href="assets/favicon-192.png">
9<link rel="apple-touch-icon" sizes="180x180" href="assets/favicon-180.png">
10<link rel="shortcut icon" href="assets/favicon.ico">
11<meta name="theme-color" content="#E1251B">
12<title>Plenary Speakers · MIPCC 2026</title>
13<link rel="preconnect" href="https://fonts.googleapis.com">
14<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
15<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,[email protected],300;9..144,400;9..144,500;9..144,600&family=Inter+Tight:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
16<link rel="stylesheet" href="styles.css">
17<link rel="stylesheet" href="concierge.css">
18<style>
19  .speakers-grid-full {
20    display: grid;
21    grid-template-columns: repeat(2, 1fr);
22    gap: 32px;
23  }
24  .speaker-detail {
25    display: grid;
26    grid-template-columns: 1fr 1.4fr;
27    gap: 0;
28    background: var(--paper);
29    border: 1px solid var(--line);
30    overflow: hidden;
31    transition: box-shadow 0.4s, transform 0.4s;
32  }
33  .speaker-detail:hover {
34    box-shadow: 0 30px 60px -20px rgba(14, 27, 44, 0.15);
35    transform: translateY(-4px);
36  }
37  .speaker-detail-image {
38    aspect-ratio: 1/1.2; position: relative; overflow: hidden;
39    display: flex; align-items: flex-end; padding: 24px;
40    background: var(--ink);
41  }
42  .speaker-detail-image.has-photo img {
43    position: absolute; inset: 0;
44    width: 100%; height: 100%;
45    object-fit: cover;
46    object-position: top center;
47    filter: grayscale(100%) contrast(1.05);
48    transition: filter 0.6s, transform 0.8s;
49  }
50  .speaker-detail:hover .speaker-detail-image.has-photo img {
51    filter: grayscale(0%) contrast(1.0);
52    transform: scale(1.03);
53  }
54  .speaker-detail-image.style-1 { background: linear-gradient(135deg, var(--mipcc-blue-deep) 0%, var(--ink) 100%); }
55  .speaker-detail-image.style-2 { background: linear-gradient(135deg, var(--mipcc-red) 0%, var(--mipcc-blue-deep) 100%); }
56  .speaker-detail-image.style-3 { background: linear-gradient(135deg, var(--gold-deep) 0%, var(--mipcc-blue-deep) 100%); }
57  .speaker-detail-image.style-4 { background: linear-gradient(135deg, var(--mipcc-blue-light) 0%, var(--mipcc-blue-deep) 100%); }
58  .speaker-detail-image::before {
59    content: ''; position: absolute; inset: 0;
60    background: linear-gradient(180deg, transparent 55%, rgba(14, 27, 44, 0.9));
61    pointer-events: none;
62  }
63  .speaker-detail-image .initial {
64    position: absolute; top: 24px; right: 28px;
65    font-family: 'Fraunces', serif;
66    font-size: 88px; font-weight: 300;
67    color: var(--paper); opacity: 0.3; line-height: 1;
68  }
69  .speaker-detail-image .tag {
70    position: relative; z-index: 2;
71    font-family: 'JetBrains Mono', monospace;
72    font-size: 10px; color: var(--gold);
73    letter-spacing: 0.15em; text-transform: uppercase;
74  }
75  .speaker-detail-info {
76    padding: 36px;
77    display: flex;
78    flex-direction: column;
79    justify-content: center;
80  }
81  .speaker-detail-info .name {
82    font-family: 'Fraunces', serif;
83    font-size: 24px; font-weight: 500;
84    margin-bottom: 8px; color: var(--ink);
85    line-height: 1.25;
86  }
87  .speaker-detail-info .creds {
88    font-size: 13px; color: var(--mipcc-red);
89    font-weight: 500; margin-bottom: 16px;
90  }
91  .speaker-detail-info .affiliation {
92    font-size: 14px; color: var(--mipcc-blue-deep);
93    font-weight: 600; margin-bottom: 16px;
94    padding-bottom: 16px;
95    border-bottom: 1px dotted var(--line);
96  }
97  .speaker-detail-info .title {
98    font-size: 14px; line-height: 1.7;
99    color: var(--whisper);
100    margin-bottom: 20px;
101  }
102  .read-bio-btn {
103    align-self: flex-start;
104    background: transparent;
105    color: var(--ink);
106    padding: 10px 0;
107    border: none;
108    font-family: 'Inter Tight', sans-serif;
109    font-size: 12px; font-weight: 600;
110    letter-spacing: 0.06em; cursor: pointer;
111    text-transform: uppercase;
112    border-bottom: 1px solid var(--mipcc-blue-deep);
113    transition: all 0.3s;
114    display: inline-flex; align-items: center; gap: 8px;
115  }
116  .read-bio-btn:hover {
117    color: var(--mipcc-red);
118    border-color: var(--mipcc-red);
119    gap: 12px;
120  }
121
122  /* MODAL */
123  .bio-modal-overlay {
124    position: fixed; inset: 0;
125    background: rgba(14, 27, 44, 0.85);
126    backdrop-filter: blur(8px);
127    z-index: 1000;
128    display: none;
129    align-items: flex-start; justify-content: center;
130    padding: 80px 20px;
131    overflow-y: auto;
132    opacity: 0;
133    transition: opacity 0.3s;
134  }
135  .bio-modal-overlay.active {
136    display: flex;
137    opacity: 1;
138  }
139  .bio-modal {
140    background: var(--paper);
141    max-width: 760px; width: 100%;
142    position: relative;
143    padding: 0;
144    border: 1px solid var(--gold);
145    box-shadow: 0 40px 80px -20px rgba(0, 0, 0, 0.5);
146    transform: translateY(-10px);
147    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
148  }
149  .bio-modal-overlay.active .bio-modal {
150    transform: translateY(0);
151  }
152  .bio-modal-header {
153    display: grid;
154    grid-template-columns: 140px 1fr;
155    gap: 28px;
156    padding: 36px 36px 28px;
157    border-bottom: 1px solid var(--line);
158    align-items: start;
159  }
160  .bio-modal-photo {
161    aspect-ratio: 4/5;
162    overflow: hidden;
163    border: 1px solid var(--gold);
164  }
165  .bio-modal-photo img {
166    width: 100%; height: 100%;
167    object-fit: cover;
168    filter: grayscale(100%) contrast(1.05);
169  }
170  .bio-modal-photo.no-photo {
171    background: linear-gradient(135deg, var(--mipcc-blue-deep), var(--ink));
172    display: flex; align-items: center; justify-content: center;
173    color: var(--gold);
174    font-family: 'Fraunces', serif;
175    font-size: 56px; font-weight: 300;
176  }
177  .bio-modal-header-info {
178    padding-top: 4px;
179  }
180  .bio-modal-eyebrow {
181    font-family: 'JetBrains Mono', monospace;
182    font-size: 10px; color: var(--mipcc-red);
183    letter-spacing: 0.15em; text-transform: uppercase;
184    margin-bottom: 12px; font-weight: 500;
185  }
186  .bio-modal-name {
187    font-family: 'Fraunces', serif;
188    font-size: 28px; font-weight: 500;
189    color: var(--ink); line-height: 1.2;
190    margin-bottom: 8px;
191  }
192  .bio-modal-creds {
193    font-size: 13px; color: var(--mipcc-red);
194    font-weight: 500; margin-bottom: 12px;
195  }
196  .bio-modal-affiliation {
197    font-size: 14px; color: var(--mipcc-blue-deep);
198    font-weight: 600; margin-bottom: 10px;
199  }
200  .bio-modal-title {
201    font-size: 13px; line-height: 1.6;
202    color: var(--whisper);
203  }
204  .bio-modal-body {
205    padding: 32px 36px 40px;
206    max-height: 50vh;
207    overflow-y: auto;
208  }
209  .bio-modal-body p {
210    font-size: 15px; line-height: 1.75;
211    color: var(--ink); margin-bottom: 16px;
212  }
213  .bio-modal-body p:last-child { margin-bottom: 0; }
214  .bio-modal-close {
215    position: absolute;
216    top: 16px; right: 16px;
217    width: 40px; height: 40px;
218    background: transparent;
219    border: 1px solid var(--line);
220    cursor: pointer;
221    font-size: 20px;
222    color: var(--ink);
223    transition: all 0.3s;
224    display: flex; align-items: center; justify-content: center;
225    line-height: 1;
226  }
227  .bio-modal-close:hover {
228    background: var(--ink);
229    color: var(--paper);
230    border-color: var(--ink);
231  }
232  body.modal-open { overflow: hidden; }
233  @media (max-width: 768px) {
234    .speakers-grid-full { grid-template-columns: 1fr; }
235    .speaker-detail { grid-template-columns: 1fr; }
236    .speaker-detail-image { aspect-ratio: 4/5; }
237    .bio-modal-overlay { padding: 20px; }
238    .bio-modal-header {
239      grid-template-columns: 100px 1fr;
240      padding: 24px 20px 20px;
241      gap: 20px;
242    }
243    .bio-modal-body { padding: 24px 20px 28px; max-height: 60vh; }
244    .bio-modal-name { font-size: 22px; }
245  }
246</style>
247</head>
248<body>
249
250<nav>
251  <a class='nav-logo' href='/'><img src="assets/logo-horizontal.png" alt="Montreal International Palliative Care Congress"></a>
252  <ul class="nav-links">
253    <li><a data-i18n='nav.about' href='/#about'>About</a></li>
254    <li><a data-i18n='nav.committee' href='/committee'>Committee</a></li>
255    <li><a class='current' data-i18n='nav.speakers' href='/speakers'>Speakers</a></li>
256    <li><a data-i18n='nav.program' href='/#program'>Program</a></li>
257    <li><a data-i18n='nav.fees' href='/registration'>Registration</a></li>
258    <li><a data-i18n='nav.innovation' href='/innovation'>Innovation</a></li>
259    <li><a data-i18n='nav.travel' href='/travel'>Travel</a></li>
260    <li><a data-i18n='nav.faq' href='/faq'>FAQ</a></li>
261    <li><a data-i18n='nav.partners' href='/partners'>Partners</a></li>
262  </ul>
263  <div class="nav-actions">
264    <button class="menu-toggle" id="menuToggle" aria-label="Menu">
265      <span></span>
266      <span></span>
267      <span></span>
268    </button>
269    <div class="lang-toggle">
270      <button data-setlang="en" class="active">EN</button><span class="sep">/</span>
271      <button data-setlang="fr">FR</button><span class="sep">/</span>
272      <button data-setlang="es">ES</button>
273    </div>
274    <span class="btn-outline is-disabled" data-i18n="nav.submitClosed" aria-disabled="true">Submissions Closed</span>
275    <a href="https://event.fourwaves.com/mipcc2026/registration" class="btn-primary" data-i18n="nav.register">Register</a>
276  </div>
277</nav>
278
279<div class="mobile-menu" id="mobileMenu">
280  <ul>
281    <li><a data-i18n='nav.about' href='/#about'>About</a></li>
282        <li><a data-i18n='nav.committee' href='/committee'>Committee</a></li>
283        <li><a class='current' data-i18n='nav.speakers' href='/speakers'>Speakers</a></li>
284        <li><a data-i18n='nav.program' href='/#program'>Program</a></li>
285        <li><a data-i18n='nav.fees' href='/registration'>Registration</a></li>
286        <li><a data-i18n='nav.innovation' href='/innovation'>Innovation Challenge</a></li>
287        <li><a data-i18n='nav.travel' href='/travel'>Travel & Visa</a></li>
288        <li><a data-i18n='nav.faq' href='/faq'>FAQ</a></li>
289        <li><a data-i18n='nav.partners' href='/partners'>Partners</a></li>
290  </ul>
291  <div class="menu-footer">
292    <div class="lang-toggle">
293      <button data-setlang="en" class="active">EN</button><span class="sep">/</span>
294      <button data-setlang="fr">FR</button><span class="sep">/</span>
295      <button data-setlang="es">ES</button>
296    </div>
297    <span class="btn-outline is-disabled" data-i18n="nav.submitClosed" aria-disabled="true" style="margin-bottom:10px;">Submissions Closed</span>
298    <a href="https://event.fourwaves.com/mipcc2026/registration" class="btn-primary" data-i18n="nav.register">Register</a>
299  </div>
300</div>
301
302
303<header class="page-header">
304  <div class="breadcrumb">
305    <a data-i18n='summaries.backToHome' href='/'>← Back to home</a>
306  </div>
307  <h1>
308    <span data-i18n="speakers.title">The voices</span> <em data-i18n="speakers.titleEm">of the 50th</em>
309  </h1>
310  <p class="lead" data-i18n="speakers.intro">Clinicians, researchers, and humanists chosen to carry the legacy and shape the next chapter.</p>
311</header>
312
313<section style="padding-top: 80px;">
314  <div class="speakers-grid-full" id="speakersGrid"></div>
315</section>
316
317<!-- BIO MODAL -->
318<div class="bio-modal-overlay" id="bioModalOverlay">
319  <div class="bio-modal">
320    <button class="bio-modal-close" id="bioModalClose" aria-label="Close">×</button>
321    <div class="bio-modal-header">
322      <div class="bio-modal-photo" id="bioModalPhoto"></div>
323      <div class="bio-modal-header-info">
324        <div class="bio-modal-eyebrow">Plenary Speaker</div>
325        <div class="bio-modal-name" id="bioModalName"></div>
326        <div class="bio-modal-creds" id="bioModalCreds"></div>
327        <div class="bio-modal-affiliation" id="bioModalAffiliation"></div>
328        <div class="bio-modal-title" id="bioModalTitle"></div>
329      </div>
330    </div>
331    <div class="bio-modal-body" id="bioModalBody"></div>
332  </div>
333</div>
334
335<footer>
336  <div class="footer-grid">
337    <div class="footer-brand">
338      <img src="assets/logo-horizontal-white.png" alt="Montreal International Palliative Care Congress" class="footer-logo">
339      <p data-i18n-html="footer.tagline">MIPCC 2026</p>
340    </div>
341    <div class="footer-col">
342      <h4 data-i18n="footer.eventTitle">Event</h4>
343      <ul>
344        <li><a data-i18n='nav.about' href='/#about'>About</a></li>
345        <li><a data-i18n='nav.committee' href='/committee'>Committee</a></li>
346        <li><a data-i18n='nav.speakers' href='/speakers'>Speakers</a></li>
347        <li><a data-i18n='nav.program' href='/#program'>Program</a></li>
348      </ul>
349    </div>
350    <div class="footer-col">
351      <h4 data-i18n="footer.infoTitle">Information</h4>
352      <ul>
353        <li><a data-i18n='nav.innovation' href='/innovation'>Innovation Challenge</a></li>
354        <li><a data-i18n='nav.travel' href='/travel'>Travel & Visa</a></li>
355        <li><a data-i18n='nav.faq' href='/faq'>FAQ</a></li>
356        <li><a data-i18n='nav.partners' href='/partners'>Partners</a></li>
357      </ul>
358    </div>
359    <div class="footer-col">
360      <h4 data-i18n="footer.contactTitle">Contact</h4>
361      <ul>
362        <li data-i18n="footer.contactGeneral">[email protected]</li>
363        <li><a href="https://www.linkedin.com/company/palliative-care-mcgill-mcgill-university/" target="_blank" rel="noopener" data-i18n="footer.linkedin">LinkedIn</a></li>
364      </ul>
365    </div>
366  </div>
367  <div class="footer-bottom">
368    <div data-i18n="footer.copyright">© MIPCC 2026</div>
369    <div><a href="https://neoevents.ca" target="_blank" rel="noopener" data-i18n="footer.credit" style="color: rgba(250, 247, 242, 0.4); text-decoration: none; transition: color 0.3s;" onmouseover="this.style.color='var(--gold)'" onmouseout="this.style.color='rgba(250, 247, 242, 0.4)'">Produced by NEO</a></div>
370  </div>
371</footer>
372
373<script src="translations.js"></script>
vendor: 1 bytes, line 373
373
374<script>
375  let currentLang = 'en';
376  function getNested(obj, path) {
377    return path.split('.').reduce((acc, key) => acc && acc[key], obj);
378  }
379  function setLanguage(lang) {
380    currentLang = lang;
381    document.documentElement.setAttribute('data-lang', lang);
382    document.documentElement.setAttribute('lang', lang);
383    document.querySelectorAll('[data-setlang]').forEach(btn => {
384      btn.classList.toggle('active', btn.dataset.setlang === lang);
385    });
386    document.querySelectorAll('[data-i18n]').forEach(el => {
387      const key = el.getAttribute('data-i18n');
388      const value = getNested(translations[lang], key);
389      if (value !== undefined) el.textContent = value;
390    });
391    document.querySelectorAll('[data-i18n-html]').forEach(el => {
392      const key = el.getAttribute('data-i18n-html');
393      const value = getNested(translations[lang], key);
394      if (value !== undefined) el.innerHTML = value;
395    });
396    renderSpeakers();
397  }
398  function renderSpeakers() {
399    const grid = document.getElementById('speakersGrid');
400    const L = currentLang;
401    const pick = v => (v && typeof v === 'object' && v[L] !== undefined) ? v[L] : v;
402    grid.innerHTML = plenarySpeakers.map((s, i) => {
403      const initials = s.name.split(' ').map(w => w.charAt(0)).slice(0, 2).join('');
404      const hasPhoto = s.photo;
405      const t = translations[currentLang].speakers || {};
406      const readBioLabel = t.readBio || 'Read bio →';
407      return `
408        <div class="speaker-detail">
409          <div class="speaker-detail-image ${hasPhoto ? 'has-photo' : 'style-' + ((i % 4) + 1)}">
410            ${hasPhoto ? `<img src="assets/speakers/${s.photo}.png" alt="${s.name}">` : `<span class="initial">${initials}</span>`}
411            <span class="tag">Plenary Speaker</span>
412          </div>
413          <div class="speaker-detail-info">
414            <div class="name">${s.name}</div>
415            ${s.credentials ? `<div class="creds">${s.credentials}</div>` : ''}
416            <div class="affiliation">${pick(s.affiliation)}</div>
417            <div class="title">${pick(s.title)}</div>
418            ${s.bio ? `<button class="read-bio-btn" data-speaker-idx="${i}">${readBioLabel}</button>` : ''}
419          </div>
420        </div>
421      `;
422    }).join('');
423
424    // Wire up bio buttons
425    grid.querySelectorAll('.read-bio-btn').forEach(btn => {
426      btn.addEventListener('click', () => {
427        const idx = parseInt(btn.dataset.speakerIdx);
428        openBioModal(plenarySpeakers[idx]);
429      });
430    });
431  }
432
433  // BIO MODAL
434  function openBioModal(speaker) {
435    const L = currentLang;
436    const pick = v => (v && typeof v === 'object' && v[L] !== undefined) ? v[L] : v;
437    const overlay = document.getElementById('bioModalOverlay');
438    const photo = document.getElementById('bioModalPhoto');
439    const initials = speaker.name.split(' ').map(w => w.charAt(0)).slice(0, 2).join('');
440
441    if (speaker.photo) {
442      photo.className = 'bio-modal-photo';
443      photo.innerHTML = `<img src="assets/speakers/${speaker.photo}.png" alt="${speaker.name}">`;
444    } else {
445      photo.className = 'bio-modal-photo no-photo';
446      photo.innerHTML = `<span>${initials}</span>`;
447    }
448
449    document.getElementById('bioModalName').textContent = speaker.name;
450    document.getElementById('bioModalCreds').textContent = speaker.credentials || '';
451    document.getElementById('bioModalCreds').style.display = speaker.credentials ? 'block' : 'none';
452    document.getElementById('bioModalAffiliation').textContent = pick(speaker.affiliation);
453    document.getElementById('bioModalTitle').textContent = pick(speaker.title);
454
455    const bioText = pick(speaker.bio) || '';
456    const paragraphs = bioText.split('\n\n').map(p => `<p>${p.trim()}</p>`).join('');
457    document.getElementById('bioModalBody').innerHTML = paragraphs;
458
459    overlay.classList.add('active');
460    document.body.classList.add('modal-open');
461  }
462  function closeBioModal() {
463    document.getElementById('bioModalOverlay').classList.remove('active');
464    document.body.classList.remove('modal-open');
465  }
466  document.getElementById('bioModalOverlay').addEventListener('click', (e) => {
467    if (e.target.id === 'bioModalOverlay') closeBioModal();
468  });
469  document.getElementById('bioModalClose').addEventListener('click', closeBioModal);
470  document.addEventListener('keydown', (e) => {
471    if (e.key === 'Escape') closeBioModal();
472  });
473  document.querySelectorAll('[data-setlang]').forEach(btn => {
474    btn.addEventListener('click', () => setLanguage(btn.dataset.setlang));
475  });
476  // ---- URL-based language routing (shareable links: /fr, ?lang=es, #en) ----
477  (function initLanguageFromURL() {
478    const supported = ['en', 'fr', 'es'];
479    function detect() {
480      // 1) path segment, e.g. /fr or /fr/  (works with Netlify redirects)
481      const seg = window.location.pathname.split('/').filter(Boolean)[0];
482      if (seg && supported.includes(seg.toLowerCase())) return seg.toLowerCase();
483      // 2) query param, e.g. ?lang=fr
484      const q = new URLSearchParams(window.location.search).get('lang');
485      if (q && supported.includes(q.toLowerCase())) return q.toLowerCase();
486      // 3) hash, e.g. #fr
487      const h = window.location.hash.replace('#', '').toLowerCase();
488      if (supported.includes(h)) return h;
489      return 'en';
490    }
491    setLanguage(detect());
492    // keep the hash in sync when the user switches language, so the URL is shareable
493    document.querySelectorAll('[data-setlang]').forEach(btn => {
494      btn.addEventListener('click', () => {
495        const lang = btn.dataset.setlang;
496        if (history.replaceState) {
497          history.replaceState(null, '', '#' + lang);
498        } else {
499          window.location.hash = lang;
500        }
501      });
502    });
503    // respond to back/forward navigation and manual hash edits
504    window.addEventListener('hashchange', () => {
505      const h = window.location.hash.replace('#', '').toLowerCase();
506      if (supported.includes(h)) setLanguage(h);
507    });
508  })();
509
510  // Mobile menu toggle
511  const menuToggle = document.getElementById('menuToggle');
512  const mobileMenu = document.getElementById('mobileMenu');
513  if (menuToggle && mobileMenu) {
514    menuToggle.addEventListener('click', () => {
515      menuToggle.classList.toggle('active');
516      mobileMenu.classList.toggle('active');
517      document.body.style.overflow = mobileMenu.classList.contains('active') ? 'hidden' : '';
518    });
519    // Close menu when clicking a link
520    mobileMenu.querySelectorAll('a').forEach(link => {
521      link.addEventListener('click', () => {
522        menuToggle.classList.remove('active');
523        mobileMenu.classList.remove('active');
524        document.body.style.overflow = '';
525      });
526    });
527  }
528
529</script>
vendor: 1 bytes, line 529
529
530<script src="faq-data.js"></script>
vendor: 1 bytes, line 530
530
531<script src="kb-source.js"></script>
vendor: 1 bytes, line 531
531
532<script src="concierge.js"></script>
532
533
534<script async id="netlify-rum-container" src="/.netlify/scripts/rum" data-netlify-rum-site-id="db8d0af5-78ad-416e-aa64-ad0add87f63b" data-netlify-deploy-branch="" data-netlify-deploy-context="production" data-netlify-cwv-token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaXRlX2lkIjoiZGI4ZDBhZjUtNzhhZC00MTZlLWFhNjQtYWQwYWRkODdmNjNiIiwiYWNjb3VudF9pZCI6IjY5ZmRjMWMzNjE2NjJmMzlkNDEzYjQ4NSIsImRlcGxveV9pZCI6IjZhYzNkZDczZGQwOTY0MDRkZjI0MmNmYSIsImlzc3VlciI6Im5mc2VydmVyIn0.EfTXMdHyvZU3wvEXUc1lNMVqp-7LlpBwyIUD0trVt1M"></script>
534
535</body>
536</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.