1document.addEventListener("DOMContentLoaded",function(){const e=document.querySelector(".nav-toggle"),t=document.querySelector(".nav-menu");e&&t&&(e.addEventListener("click",function(){e.classList.toggle("active"),t.classList.toggle("active")}),document.querySelectorAll(".nav-link").forEach(n=>{n.addEventListener("click",function(){e.classList.remove("active"),t.classList.remove("active")})}),document.addEventListener("click",function(n){e.contains(n.target)||t.contains(n.target)||(e.classList.remove("active"),t.classList.remove("active"))}));const n=document.getElementById("chat-input"),o=document.getElementById("create-btn"),c=document.querySelectorAll(".prompt-chip");if(n&&o){function a(){const e=n.value.trim().length>0;o.disabled=!e}n.addEventListener("input",function(){this.style.height="auto",this.style.height=Math.min(this.scrollHeight,150)+"px",a()}),c.forEach(e=>{e.addEventListener("click",function(){c.forEach(e=>e.classList.remove("active")),this.classList.add("active"),n.value=this.getAttribute("data-prompt"),n.style.height="auto",n.style.height=Math.min(n.scrollHeight,150)+"px",a(),n.focus()})}),n.addEventListener("keydown",function(){c.forEach(e=>e.classList.remove("active"))}),o.addEventListener("click",function(){const e=n.value.trim();if(e){const t=encodeURIComponent(e);window.location.href="https://betta.bob.tools/#/assistant:::"+t}}),n.addEventListener("keydown",function(e){"Enter"!==e.key||e.shiftKey||(e.preventDefault(),o.click())})}const i=new IntersectionObserver(function(e){e.forEach(e=>{e.isIntersecting&&(e.target.classList.add("fade-in-up"),i.unobserve(e.target))})},{threshold:.1,rootMargin:"0px 0px -50px 0px"});document.querySelectorAll(".feature-card, .update-card, .hero-heading").forEach(e=>i.observe(e));const s=window.location.pathname;document.querySelectorAll(".nav-link").forEach(e=>{const t=e.getAttribute("href"),n=s.replace(/\/index\.html$/,"/").replace(/\/$/,"")||"/";(t.replace(/\/$/,"")||"/")===n?e.classList.add("active"):e.classList.remove("active")}),document.querySelectorAll("[data-copy]").forEach(e=>{e.addEventListener("click",function(){const e=this.getAttribute("data-copy"),t=()=>{this.classList.add("copied"),setTimeout(()=>this.classList.remove("copied"),1500)},n=()=>{const n=document.createElement("textarea");n.value=e,document.body.appendChild(n),n.select();try{document.execCommand("copy"),t()}catch(e){}document.body.removeChild(n)};navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(e).then(t).catch(n):n()})});const l=document.getElementById("lang-switch");if(l)if(s.startsWith("/ru")){const r=s.replace(/^\/ru/,"")||"/";l.href=r,l.style.display="inline-block",l.addEventListener("click",function(){localStorage.setItem("bob-lang","en")})}else{const d="/ru"+("/"===s?"/":s);l.href=d,(/^ru\b/i.test(navigator.language||"")||"ru"===localStorage.getItem("bob-lang"))&&(l.style.display="inline-block"),l.addEventListener("click",function(){localStorage.setItem("bob-lang","ru")})}}),"localhost"!==window.location.hostname&&"127.0.0.1"!==window.location.hostname||console.log("Bob Tools - Development Mode");
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.