1!function(){"use strict";var e="etducky_clerk_client_jwt";function t(){return!(!window.ETDuckyConfig||"local"!==window.ETDuckyConfig.DEPLOYMENT_MODE)}function n(){try{localStorage.removeItem(e)}catch(e){}}function o(){if(t())try{fetch("/api/entitlement/status",{cache:"no-store"}).then(function(e){return e.ok?e.json():null}).then(function(e){if(e&&"Active"!==e.state){var t="Grace"===e.state,n=document.createElement("div");n.id="etd-entitlement-banner",n.style.cssText="position:sticky;top:0;z-index:2147482000;padding:10px 16px;text-align:center;font:14px system-ui,sans-serif;color:#fff;background:"+(t?"#b45309":"#b91c1c")+";";var o=t&&e.graceEndsAt?new Date(e.graceEndsAt).toLocaleDateString():"";n.innerHTML=t?"Your Local-First license has expired and this instance is in its grace period"+(o?" (until "+o+")":"")+". Renewal is attempted automatically â please verify your subscription. ":"The license grace period has ended: this instance is collection-only. Agent data keeps flowing and nothing is deleted, but management actions are disabled. ";var r=document.createElement("a");r.href=e.renewalUrl||"https://etducky.com/configuration",r.target="_blank",r.rel="noopener",r.style.cssText="color:#fff;font-weight:700;text-decoration:underline",r.textContent="Manage subscription",n.appendChild(r),document.body.insertBefore(n,document.body.firstChild)}}).catch(function(){})}catch(e){}}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",o):o(),window.ETDuckyLocalAuth={load:async function(o,r){if(!t())return o.load(r);var i=o.__unstable__onBeforeRequest||o.__internal_onBeforeRequest,a=o.__unstable__onAfterResponse||o.__internal_onAfterResponse;if(!i||!a)return window.console&&console.error&&console.error("ETDucky local auth: clerk-js request hooks missing; falling back to standard (cookie) mode. OAuth sign-in may fail."),o.load(r);i.call(o,async function(t){t.credentials="omit",t.url&&t.url.searchParams&&t.url.searchParams.append("_is_native","1");var n=function(){try{return localStorage.getItem(e)}catch(e){return null}}();n&&t.headers.set("Authorization","Bearer "+n)}),a.call(o,async function(t,n){var o=n&&n.headers?n.headers.get("Authorization"):null;if(o){var r=0===o.indexOf("Bearer ")?o.slice(7):o;r&&function(t){try{localStorage.setItem(e,t)}catch(e){}}(r)}});var c={};
1for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(c[s]=r[s]);c.standardBrowser=!1,await o.load(c);var l=o.signOut?o.signOut.bind(o):null;l&&(o.signOut=function(){return Promise.resolve(l.apply(null,arguments)).finally(n)});try{o.environment&&o.environment.displayConfig&&(o.environment.displayConfig.signInUrl=window.location.origin+"/",o.environment.displayConfig.signUpUrl=window.location.origin+"/")}catch(e){}await async function(e){var t;try{t=new URLSearchParams(window.location.search)}catch(e){return}var n=t.get("rotating_token_nonce");if(!n)return;if(t.get("__clerk_modal_state"))return;try{t.delete("rotating_token_nonce");var o=t.toString(),r=window.location.hash||"";-1!==r.indexOf("sso-callback")&&(r=""),window.history.replaceState(null,"",window.location.pathname+(o?"?"+o:"")+r)}catch(e){}try{var i=e.client.signIn,a=e.client.signUp;await i.reload({rotatingTokenNonce:n}),i.firstFactorVerification&&"transferable"===i.firstFactorVerification.status&&await a.create({transfer:!0});var c=a&&a.createdSessionId||i.createdSessionId;c&&await e.setActive({session:c})}catch(t){try{var s=e.client.signUp;if(await s.reload({rotatingTokenNonce:n}),s.createdSessionId)return void await e.setActive({session:s.createdSessionId})}catch(e){}window.console&&console.error&&console.error("ETDucky local OAuth completion failed:",t)}}(o),function(e){try{if(e.session||!e.client)return;var t=e.client.signIn;if(!t||"needs_second_factor"!==t.status)return;var n=t.firstFactorVerification;if(!n||"verified"!==n.status)return;if(!(t.supportedSecondFactors||[]).some(function(e){return"totp"===e.strategy}))return}catch(e){return}var o=document.createElement("div");o.id="etd-local-mfa",o.style.cssText="position:fixed;inset:0;z-index:2147483000;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;",o.innerHTML='<div style="background:#fff;border-radius:12px;padding:28px 32px;max-width:340px;font-family:system-ui,sans-serif;box-shadow:0 10px 40px rgba(0,0,0,.35);text-align:center"><div style="font-size:17px;font-weight:600;margin-bottom:6px">Two-step verification</div><div style="font-size:13px;color:#555;margin-bottom:16px">Enter the code from your authenticator app to finish signing in.</div><input id="etd-local-mfa-code" inputmode="numeric" autocomplete="one-time-code" maxlength="6" style="font-size:22px;letter-spacing:6px;text-align:center;width:160px;padding:6px 8px;border:1px solid #cbd5e1;border-radius:8px" /><div id="etd-local-mfa-err" style="color:#b91c1c;font-size:12px;min-height:16px;margin-top:8px"></div><button id="etd-local-mfa-go" style="margin-top:10px;font-size:15px;padding:8px 26px;border:none;border-radius:8px;background:#1d4ed8;color:#fff;cursor:pointer">Verify</button> <button id="etd-local-mfa-cancel" style="margin-top:10px;font-size:13px;padding:8px 14px;border:none;background:none;color:#64748b;cursor:pointer">Cancel</button></div>',document.body.appendChild(o);var r=o.querySelector("#etd-local-mfa-code"),i=o.querySelector("#etd-local-mfa-err");function a(){i.textContent="";var t=(r.value||"").trim();t.length<6?i.textContent="Enter the 6-digit code.":e.client.signIn.attemptSecondFactor({strategy:"totp",code:t}).then(function(){var t=e.client.signIn.createdSessionId,n=function(){o.remove(),window.location.reload()};t?e.setActive({session:t}).then(n,n):n()}).catch(function(e){if("session_exists"===(e&&e.errors&&e.errors[0]?e.errors[0].code:null))return o.remove(),void window.location.reload();i.textContent=e&&e.errors&&e.errors[0]?e.errors[0].message:"Verification failed.",r.select()})}r.focus(),o.querySelector("#etd-local-mfa-go").addEventListener("click",a),r.addEventListener("keydown",function(e){"Enter"===e.key&&a()}),o.querySelector("#etd-local-mfa-cancel").addEventListener("click",function(){o.remove()})}(o)}}}();
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.