1(function () { 2 const links = [ 3 { href: '/privacy.html', label: 'Privacy Policy' }, 4 { href: '/tos.html', label: 'Terms of Service' }, 5 { href: '/help.html', label: 'Help / FAQ' }, 6 { href: 'https://discord.gg/Qb2GQqW3Uq', label: 'Discord', external: true } 7 ]; 8 const existingFooter = document.querySelector('footer'); 9 const legacyNav = existingFooter ? null : document.querySelector('.footer-links'); 10 const footer = existingFooter || legacyNav || document.querySelector('.footer') || document.createElement('footer'); 11 if (footer.hasAttribute('data-bhb-footer-links')) return; 12 13 const style = document.createElement('style'); 14 style.textContent = [ 15 '.bhb-shared-footer{box-sizing:border-box;width:100%;padding:20px 16px;margin:28px auto 0;border-top:1px solid #1a1a1a;color:#888;text-align:center;font:13px/1.8 "Segoe UI",sans-serif;}', 16 '.bhb-shared-footer-links{display:flex;justify-content:center;align-items:center;gap:8px 20px;flex-wrap:wrap;margin:0;}', 17 '.bhb-shared-footer a{color:#bbb;text-decoration:none;}', 18 '.bhb-shared-footer a:hover{color:#ff6b35;}', 19 '@media(max-width:600px){.bhb-shared-footer{padding:18px 12px;}.bhb-shared-footer-links{gap:6px 14px;}}' 20 ].join(''); 21 document.head.appendChild(style); 22 23 const existingNav = legacyNav || Array.from(footer.querySelectorAll('p, div, nav')).find(function (element) { 24 return element.querySelectorAll('a').length >= 2; 25 }); 26 const nav = existingNav || document.createElement('nav'); 27 nav.classList.add('bhb-shared-footer-links'); 28 nav.setAttribute('aria-label', 'Site policies and support'); 29 nav.replaceChildren(); 30 links.forEach(function (item) { 31 const anchor = document.createElement('a'); 32 anchor.href = item.href; 33 anchor.textContent = item.label; 34 if (item.external) { 35 anchor.target = '_blank'; 36 anchor.rel = 'noopener noreferrer'; 37 } 38 nav.appendChild(anchor); 39 }); 40 41 if (!existingNav) footer.appendChild(nav); 42 if (!footer.parentNode) document.body.appendChild(footer); 43 footer.classList.add('bhb-shared-footer'); 44 footer.setAttribute('data-bhb-footer-links', ''); 45})();
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.