plevinjs 0.1.10 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
- var ee="ipv4-mapped",ne="6to4",te="teredo",Cn="nat64";var Rn=(1n<<128n)-1n,Mn=[["0.0.0.0/8",8],["10.0.0.0/8",1],["100.64.0.0/10",129],["127.0.0.0/8",3],["169.254.0.0/16",17],["172.16.0.0/12",1],["192.0.0.0/24",8],["192.0.2.0/24",72],["192.88.99.0/24",8],["192.168.0.0/16",1],["198.18.0.0/15",264],["198.51.100.0/24",72],["203.0.113.0/24",72],["224.0.0.0/4",4],["240.0.0.0/4",8]],Dn=[["::/128",8],["::1/128",3],["::ffff:0:0/96",8],["64:ff9b::/96",8],["64:ff9b:1::/48",8],["100::/64",8],["2001::/23",8],["2001:db8::/32",72],["2002::/16",8],["3fff::/20",72],["fc00::/7",33],["fe80::/10",17],["ff00::/8",4]],wn=/^(0|[1-9][0-9]{0,2})$/,In=/^[0-9a-fA-F]{1,4}$/,Ge=e=>{let n=e.split(".");if(n.length!==4)return null;let t=0;for(let r of n){if(!wn.test(r))return null;let i=Number(r);if(i>255)return null;t=t*256+i}return t},Ne=(e,n)=>{if(e==="")return[];let t=e.split(":"),r=[];for(let i=0;i<t.length;i+=1){let s=t[i];if(i===t.length-1&&s.includes(".")){let o=Ge(s);if(o===null)return null;r.push(o>>>16,o&65535);continue}if(!In.test(s))return null;r.push(Number.parseInt(s,16))}return r.length<=n?r:null},Un=e=>{let n=e.split("::");if(n.length>2)return null;let t=Ne(n[0],8),r=n.length===2?Ne(n[1],8):[];if(t===null||r===null)return null;let i=t.length+r.length;if(n.length===1?i!==8:i>7)return null;let s=[...t,...Array(8-i).fill(0),...r],o=0n;for(let a of s)o=o<<16n|BigInt(a);return o},M=e=>{if(typeof e=="string"){if(e.includes(":")){let r=Un(e);if(r===null)throw new Error(`${e} is not an address`);return[r,!0]}let t=Ge(e);if(t===null)throw new Error(`${e} is not an address`);return[t,!1]}if(e instanceof Uint8Array){if(e.length===4)return[(e[0]<<24>>>0)+(e[1]<<16)+(e[2]<<8)+e[3],!1];if(e.length!==16)throw new Error("packed addresses are 4 or 16 bytes");let t=0n;for(let r of e)t=t<<8n|BigInt(r);return[t,!0]}if(typeof e!="bigint"&&!Number.isInteger(e))throw new Error(`${String(e)} is not an address`);let n=typeof e=="bigint"?e:BigInt(e);if(n<0n||n>Rn)throw new Error(`${e} is not an address`);return n>BigInt(4294967295)?[n,!0]:[Number(n),!1]},Bn=e=>Array.from({length:8},(n,t)=>Number(e>>BigInt(112-t*16)&0xffffn)),k=e=>[24,16,8,0].map(n=>e>>>n&255).join("."),ke=(e,n)=>{let t=-1,r=1,i=-1;for(let a=0;a<=n.length;a+=1)n[a]===0&&i<0&&(i=a),(n[a]!==0||a===n.length)&&i>=0&&(a-i>r&&([t,r]=[i,a-i]),i=-1);if(t<0)return e.join(":");let s=e.slice(0,t).join(":"),o=e.slice(t+r).join(":");return`${s}::${o}`},P=(e,n)=>{if(!n){let o=k(e),a=o.split(".");return[o,o,`${[...a].reverse().join(".")}.in-addr.arpa`]}let t=Bn(e),i=`${[...e.toString(16).padStart(32,"0")].reverse().join(".")}.ip6.arpa`;if(t.slice(0,5).every(o=>o===0)&&t[5]===65535){let o=k(Number(e&0xffffffffn)),a=t.slice(0,6).map(c=>c.toString(16)),l=t.slice(0,6).map(c=>c.toString(16).padStart(4,"0"));return[`${ke(a,t.slice(0,6))}:${o}`,`${l.join(":")}:${o}`,i]}return[ke(t.map(o=>o.toString(16)),t),t.map(o=>o.toString(16).padStart(4,"0")).join(":"),i]},R=(e,n)=>P(e,n)[0],Pe=(e,n)=>e.map(([t,r])=>{let[i,s]=t.split("/"),o=BigInt(M(i)[0]),a=BigInt((n?128:32)-Number(s));return[o,o+((1n<<a)-1n),r]}).sort((t,r)=>t[0]<r[0]?-1:1),Nn=[Pe(Mn,!1),Pe(Dn,!0)],Le=(e,n)=>{let t=Nn[n?1:0],r=BigInt(e),i=0,s=t.length;for(;i<s;){let a=i+s>>1;t[a][0]<=r?i=a+1:s=a}let o=t[i-1];return o&&r<=o[1]?o[2]:n&&r>>125n!==1n?8:0},G=(e,n)=>{if(!n)return[null,null];let t=e,r=Number(t&0xffffffffn);return t>>32n===0xffffn?[ee,k(r)]:t>>112n===0x2002n?[ne,k(Number(t>>80n&0xffffffffn))]:t>>96n===0x20010000n?[te,k(~r>>>0)]:t>>32n===0x0064ff9bn<<64n?[Cn,k(r)]:[null,null]},ve=(e,n)=>{if(!n||G(e,n)[0]!==null)return null;let t=e,r=[48n,32n,16n,0n].map(s=>Number(t>>s&0xffffn).toString(16));return r.every(s=>/^[0-9]+$/.test(s)&&Number(s)>0&&Number(s)<256)?r.join("."):null},xe=(e,n)=>{if(n)return[null,null,null];let t=BigInt(e);return[R(0xffff00000000n|t,!0),R(0x2002n<<112n|t<<80n,!0),R(0x0064ff9bn<<96n|t,!0)]},re=(e,n,t)=>{let r=BigInt((n?128:32)-t),i=BigInt(e),s=i>>r<<r,o=i|(1n<<r)-1n,a=R(n?s:Number(s),n);return[`${a}/${t}`,a,R(n?o:Number(o),n)]};var ie=e=>new Set(e.split(" ")),kn=ie("inc incorporated llc ltd ltda limited gmbh mbh ag kgaa ohg ev eg sa sab saa sau sal saog sac sas sarl srl spa nv bv cv asa aps oyj kft zrt nyrt doo sro ooo zao pao pjsc jsc ojsc llp plc pte pteltd pty corp corporation company holding holdings group uab sia tov oao pt sdn bhd coltd coltda eireli ead ood eood sti ltdsti spzoo"),Pn=ie("de me epp co as ab ad dd bt lc lp se sl slu sp z oo zoo oy ao esp kg network networks net telecom telecoms telecommunication telecommunications telecomunicaciones comunicaciones communication communications hosting solutions services service technologies technology tech systems system data datacenter datacentre cloud internet online isp international global enterprises enterprise backbone provider providers of and"),Gn=ie("the llc ltd gmbh sarl ooo zao pao ao oao jsc ojsc pjsc uab sia tov pt pp ps ip spolka"),Ln=new Set([...kn,...Pn,""]),vn=[".com",".net",".org",".io"],xn=/^.*\b(?:trading as|d\/b\/a|dba)\b\s*/i,_n=/\(.*?\)|,.*|\s+-\s+.*/g,_e=/[^0-9a-z]/g,Kn=/^AS\d+$/i,On=/-(AS|AP|US|UK|DE|FR|IN|CN|JP|EU|NET|COM|ORG)$/,Fn=/(NET|COM|TEL|WEB|LINE)$/,Vn=/[/?#]/,Hn=/^["']+|["']+$/g,Ke=new Set(["hosting","cdn","content"]),Wn=new Set(["residential","cellular"]),Oe=new Set(["public_proxy","residential_proxy"]),zn={"national capital":"country","regional capital":"region","district capital":"district"},$n=8192,Fe=e=>{let n=new Map;return t=>{let r=n.get(t);if(r!==void 0)return r;n.size>=$n&&n.clear();let i=e(t);return n.set(t,i),i}},Zn=/^\p{L}+$/u,Ve=e=>{let n=e.indexOf(`
2
- `);return[e.slice(0,n),e.slice(n+1)]},jn=e=>e.length>4&&Zn.test(e)&&e===e.toUpperCase()&&e!==e.toLowerCase(),Jn=e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),He=e=>e.split(" ").map(n=>jn(n)?Jn(n):n).join(" "),Yn=e=>{let t=e.replace(xn,"").replace(_n,"").split(/\s+/).map(s=>s.replace(Hn,"")).filter(Boolean);for(;t.length>1&&Ln.has(t[t.length-1].toLowerCase().replace(_e,""));)t.pop();for(;t.length&&Gn.has(t[0].toLowerCase().replace(_e,""));)t.shift();let r=t.join(" "),i=vn.find(s=>r.toLowerCase().endsWith(s));return He(i?r.slice(0,r.length-i.length):r)},qn=e=>{let t=(e.split(/\s+/)[0]??"").replace(On,"");return Kn.test(t)?"":(t.length>4&&t===t.toUpperCase()&&(t=t.replace(Fn,"")),He(t))},Qn=Fe(e=>{let[n,t]=Ve(e),r=Yn(t),i=qn(n);return!r||!i?r||i:r.toLowerCase()===i.toLowerCase()?i===i.toUpperCase()?r:i:r.toLowerCase().startsWith(`${i.toLowerCase()} `)?i:r}),We=(e,n)=>Qn(`${e}
3
- ${n}`),Xn=Fe(e=>{let[n,t]=Ve(e),i=((n.split("//").pop()??"").split(Vn)[0].split("@").pop()??"").split(":")[0],s=(t.split("@")[1]??"").toLowerCase(),o=(i||s).toLowerCase().replace(/^www\./,""),a=o.split(".").pop()??"";return a.length>2&&s.split(".")[0]===a&&o!==s?s:o}),ze=(e,n)=>Xn(`${e}
4
- ${n}`),$e=(e,n)=>e==="public_proxy"&&Wn.has(n)?["residential_proxy","inferred"]:[e,""],Ze=e=>zn[e]??"";var se=`
1
+ var J="ipv4-mapped",Q="6to4",X="teredo",st="nat64";var at=(1n<<128n)-1n,ot=[["0.0.0.0/8",8],["10.0.0.0/8",1],["100.64.0.0/10",129],["127.0.0.0/8",3],["169.254.0.0/16",17],["172.16.0.0/12",1],["192.0.0.0/24",8],["192.0.2.0/24",72],["192.88.99.0/24",8],["192.168.0.0/16",1],["198.18.0.0/15",264],["198.51.100.0/24",72],["203.0.113.0/24",72],["224.0.0.0/4",4],["240.0.0.0/4",8]],lt=[["::/128",8],["::1/128",3],["::ffff:0:0/96",8],["64:ff9b::/96",8],["64:ff9b:1::/48",8],["100::/64",8],["2001::/23",8],["2001:db8::/32",72],["2002::/16",8],["3fff::/20",72],["fc00::/7",33],["fe80::/10",17],["ff00::/8",4]],ct=/^(0|[1-9][0-9]{0,2})$/,ut=/^[0-9a-fA-F]{1,4}$/,be=n=>{let e=n.split(".");if(e.length!==4)return null;let t=0;for(let r of e){if(!ct.test(r))return null;let i=Number(r);if(i>255)return null;t=t*256+i}return t},he=(n,e)=>{if(n==="")return[];let t=n.split(":"),r=[];for(let i=0;i<t.length;i+=1){let s=t[i];if(i===t.length-1&&s.includes(".")){let a=be(s);if(a===null)return null;r.push(a>>>16,a&65535);continue}if(!ut.test(s))return null;r.push(Number.parseInt(s,16))}return r.length<=e?r:null},dt=n=>{let e=n.split("::");if(e.length>2)return null;let t=he(e[0],8),r=e.length===2?he(e[1],8):[];if(t===null||r===null)return null;let i=t.length+r.length;if(e.length===1?i!==8:i>7)return null;let s=[...t,...Array(8-i).fill(0),...r],a=0n;for(let o of s)a=a<<16n|BigInt(o);return a},g=n=>{if(typeof n=="string"){if(n.includes(":")){let r=dt(n);if(r===null)throw new Error(`${n} is not an address`);return[r,!0]}let t=be(n);if(t===null)throw new Error(`${n} is not an address`);return[t,!1]}if(n instanceof Uint8Array){if(n.length===4)return[(n[0]<<24>>>0)+(n[1]<<16)+(n[2]<<8)+n[3],!1];if(n.length!==16)throw new Error("packed addresses are 4 or 16 bytes");let t=0n;for(let r of n)t=t<<8n|BigInt(r);return[t,!0]}if(typeof n!="bigint"&&!Number.isInteger(n))throw new Error(`${String(n)} is not an address`);let e=typeof n=="bigint"?n:BigInt(n);if(e<0n||e>at)throw new Error(`${n} is not an address`);return e>BigInt(4294967295)?[e,!0]:[Number(e),!1]},pt=n=>Array.from({length:8},(e,t)=>Number(n>>BigInt(112-t*16)&0xffffn)),M=n=>[24,16,8,0].map(e=>n>>>e&255).join("."),ft=(n,e)=>{let t=-1,r=1,i=-1;for(let o=0;o<=e.length;o+=1)e[o]===0&&i<0&&(i=o),(e[o]!==0||o===e.length)&&i>=0&&(o-i>r&&([t,r]=[i,o-i]),i=-1);if(t<0)return n.join(":");let s=n.slice(0,t).join(":"),a=n.slice(t+r).join(":");return`${s}::${a}`},I=(n,e)=>{if(!e){let u=M(n),p=u.split(".");return[u,u,`${[...p].reverse().join(".")}.in-addr.arpa`]}let t=pt(n),i=`${[...n.toString(16).padStart(32,"0")].reverse().join(".")}.ip6.arpa`,s=t.slice(0,5).every(u=>u===0)&&t[5]===65535,a=s?t.slice(0,6):t,o=s?`:${M(Number(n&0xffffffffn))}`:"",l=a.map(u=>u.toString(16)),c=a.map(u=>u.toString(16).padStart(4,"0"));return[ft(l,a)+o,c.join(":")+o,i]},S=(n,e)=>I(n,e)[0],Te=(n,e)=>n.map(([t,r])=>{let[i,s]=t.split("/"),a=BigInt(g(i)[0]),o=BigInt((e?128:32)-Number(s));return[a,a+((1n<<o)-1n),r]}).sort((t,r)=>t[0]<r[0]?-1:1),mt=[Te(ot,!1),Te(lt,!0)],Se=(n,e)=>{let t=mt[e?1:0],r=BigInt(n),i=0,s=t.length;for(;i<s;){let o=i+s>>1;t[o][0]<=r?i=o+1:s=o}let a=t[i-1];return a&&r<=a[1]?a[2]:e&&r>>125n!==1n?8:0},D=(n,e)=>{if(!e)return[null,null];let t=n,r=Number(t&0xffffffffn);return t>>32n===0xffffn?[J,M(r)]:t>>112n===0x2002n?[Q,M(Number(t>>80n&0xffffffffn))]:t>>96n===0x20010000n?[X,M(~r>>>0)]:t>>32n===0x0064ff9bn<<64n?[st,M(r)]:[null,null]},Ae=(n,e)=>{if(!e||D(n,e)[0]!==null)return null;let t=n,r=[48n,32n,16n,0n].map(s=>Number(t>>s&0xffffn).toString(16));return r.every(s=>/^[0-9]+$/.test(s)&&Number(s)>0&&Number(s)<256)?r.join("."):null},ge=(n,e)=>{if(e)return[null,null,null];let t=BigInt(n);return[S(0xffff00000000n|t,!0),S(0x2002n<<112n|t<<80n,!0),S(0x0064ff9bn<<96n|t,!0)]},q=(n,e,t)=>{let r=BigInt((e?128:32)-t),i=BigInt(n),s=i>>r<<r,a=i|(1n<<r)-1n,o=S(e?s:Number(s),e);return[`${o}/${t}`,o,S(e?a:Number(a),e)]};var ee=n=>new Set(n.split(" ")),ht=ee("inc incorporated llc ltd ltda limited gmbh mbh ag kgaa ohg ev eg sa sab saa sau sal saog sac sas sarl srl spa nv bv cv asa aps oyj kft zrt nyrt doo sro ooo zao pao pjsc jsc ojsc llp plc pte pteltd pty corp corporation company holding holdings group uab sia tov oao pt sdn bhd coltd coltda eireli ead ood eood sti ltdsti spzoo"),Tt=ee("de me epp co as ab ad dd bt lc lp se sl slu sp z oo zoo oy ao esp kg network networks net telecom telecoms telecommunication telecommunications telecomunicaciones comunicaciones communication communications hosting solutions services service technologies technology tech systems system data datacenter datacentre cloud internet online isp international global enterprises enterprise backbone provider providers of and"),bt=ee("the llc ltd gmbh sarl ooo zao pao ao oao jsc ojsc pjsc uab sia tov pt pp ps ip spolka"),St=new Set([...ht,...Tt,""]),At=[".com",".net",".org",".io"],gt=/^.*\b(?:trading as|d\/b\/a|dba)\b\s*/i,Et=/\(.*?\)|,.*|\s+-\s+.*/g,Ee=/[^0-9a-z]/g,Rt=/^AS\d+$/i,Ct=/-(AS|AP|US|UK|DE|FR|IN|CN|JP|EU|NET|COM|ORG)$/,yt=/(NET|COM|TEL|WEB|LINE)$/,Mt=/[/?#]/,It=/^["']+|["']+$/g,Re=new Set(["hosting","cdn","content"]),Dt=new Set(["residential","cellular"]),Ce=new Set(["public_proxy","residential_proxy"]),Nt={"national capital":"country","regional capital":"region","district capital":"district"},wt=8192,ye=n=>{let e=new Map;return t=>{let r=e.get(t);if(r!==void 0)return r;e.size>=wt&&e.clear();let i=n(t);return e.set(t,i),i}},vt=/^\p{L}+$/u,Me=n=>{let e=n.indexOf(`
2
+ `);return[n.slice(0,e),n.slice(e+1)]},Bt=n=>n.length>4&&vt.test(n)&&n===n.toUpperCase()&&n!==n.toLowerCase(),Pt=n=>n.charAt(0).toUpperCase()+n.slice(1).toLowerCase(),Ie=n=>n.split(" ").map(e=>Bt(e)?Pt(e):e).join(" "),kt=n=>{let t=n.replace(gt,"").replace(Et,"").split(/\s+/).map(s=>s.replace(It,"")).filter(Boolean);for(;t.length>1&&St.has(t[t.length-1].toLowerCase().replace(Ee,""));)t.pop();for(;t.length&&bt.has(t[0].toLowerCase().replace(Ee,""));)t.shift();let r=t.join(" "),i=At.find(s=>r.toLowerCase().endsWith(s));return Ie(i?r.slice(0,r.length-i.length):r)},Ut=n=>{let t=(n.split(/\s+/)[0]??"").replace(Ct,"");return Rt.test(t)?"":(t.length>4&&t===t.toUpperCase()&&(t=t.replace(yt,"")),Ie(t))},Lt=ye(n=>{let[e,t]=Me(n),r=kt(t),i=Ut(e);return!r||!i?r||i:r.toLowerCase()===i.toLowerCase()?i===i.toUpperCase()?r:i:r.toLowerCase().startsWith(`${i.toLowerCase()} `)?i:r}),De=(n,e)=>Lt(`${n}
3
+ ${e}`),Gt=ye(n=>{let[e,t]=Me(n),i=((e.split("//").pop()??"").split(Mt)[0].split("@").pop()??"").split(":")[0],s=(t.split("@")[1]??"").toLowerCase(),a=(i||s).toLowerCase().replace(/^www\./,""),o=a.split(".").pop()??"";return o.length>2&&s.split(".")[0]===o&&a!==s?s:a}),Ne=(n,e)=>Gt(`${n}
4
+ ${e}`),we=(n,e)=>n==="public_proxy"&&Dt.has(e)?["residential_proxy","inferred"]:[n,""],ve=n=>Nt[n]??"";var Be=`
5
5
  ADAND020Andorra|Principality of Andorra|
6
6
  AEARE784United Arab Emirates
7
7
  AFAFG004Afghanistan|Islamic Republic of Afghanistan|
@@ -252,7 +252,7 @@ ZAZAF710South Africa|Republic of South Africa|
252
252
  ZMZMB894Zambia|Republic of Zambia|
253
253
  ZWZWE716Zimbabwe|Republic of Zimbabwe|
254
254
  `.trim().split(`
255
- `);var je=`
255
+ `);var Pe=`
256
256
  Africa/Abidjan|GMT
257
257
  Africa/Accra|GMT
258
258
  Africa/Addis_Ababa|EAT
@@ -621,6 +621,6 @@ W-SU|MSK
621
621
  WET|WET|WEST
622
622
  Zulu|UTC
623
623
  `.trim().split(`
624
- `);var nt=new Set("AT BE BG HR CY CZ DK EE FI FR DE GR HU IE IT LV LT LU MT NL PL PT RO SK SI ES SE".split(" ")),tt=new Set("AG AI AU BB BD BM BN BS BT BW CC CK CX CY DM FJ FK GB GD GG GY HK ID IE IM IN JE JM JP KE KI KN KY LC LK LS MO MS MT MU MV MW MY MZ NA NF NP NR NU NZ PG PK PN SB SC SG SH SR SZ TC TH TL TO TT TV TZ UG VC VG WS ZA ZM ZW".split(" ")),w=864e5,rt=7*w,ae=400*w,L=6e4,it=new Map(se.map(e=>{let[n,t="",r=""]=e.slice(8).split("|");return[e.slice(0,2),[n,t,r,e.slice(2,5)]]})),st=new Map(se.map(e=>[e.slice(0,2),e.slice(5,8)])),Je=e=>e||null,ot=e=>e.length!==2||!/^[a-zA-Z]{2}$/.test(e)?"":[...e.toUpperCase()].map(n=>String.fromCodePoint(127462+n.charCodeAt(0)-65)).join(""),Ye=new Map,en=e=>{if(!e)return null;let n=Ye.get(e);if(n!==void 0)return n;let t=it.get(e),r={code:e,name:t?t[0]:null,official:t?Je(t[1]):null,common:t?Je(t[2]):null,iso3:t?t[3]:null,numeric:st.get(e)??null,flag:ot(e)||null,european_union:nt.has(e),driving_side:tt.has(e)?"left":"right"};return Ye.set(e,r),r},at=new Map(je.map(e=>{let[n,t,r=t]=e.split("|");return[n,[t,r]]})),qe=new Map,lt=e=>{let n=qe.get(e);if(n!==void 0)return n;let t=null;try{t=new Intl.DateTimeFormat("en-US",{timeZone:e,hour12:!1,era:"short",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{t=null}return qe.set(e,t),t},nn=(e,n)=>{let t={};for(let s of e.formatToParts(n))t[s.type]=s.value;let r=Number(t.year)*(t.era==="BC"?-1:1),i=t.hour==="24"?0:Number(t.hour);return Date.UTC(r,Number(t.month)-1,Number(t.day),i,Number(t.minute),Number(t.second))},oe=(e,n)=>Math.round((nn(e,n)-n)/L),I=(e,n)=>{let t=oe(e,n-w),r=oe(e,n+w);if(t===r)return t;let i=[t,r].filter(s=>oe(e,n-s*L)===s);return i.length?Math.max(...i):Math.min(t,r)},le=e=>{let n=Math.abs(e),t=String(Math.floor(n/60)).padStart(2,"0");return`${e<0?"-":"+"}${t}:${String(n%60).padStart(2,"0")}`},Qe=(e,n)=>new Date(n).toISOString().slice(0,19)+le(I(e,n)),ct=(e,n,t,r)=>{for(;t-n>1e3;){let i=n+Math.floor((t-n)/2);I(e,i)===r?n=i:t=i}return Math.floor((t+3e4)/L)*L},ut=(e,n)=>{let t=n+ae,r=[],i=n-ae,s=I(e,i);for(;i<t;){let o=i+rt,a=I(e,o);a!==s&&r.push(ct(e,i,o,s)),s=a,i=o}return r},j=new Map,ft=(e,n,t)=>{let r=Math.floor(t/w)*w+w/2,i=`${e}@${r}`,s=j.get(i);if(s!==void 0)return s;j.size>2048&&j.clear();let o=ut(n,r),a=[I(n,r-ae),...o.map(f=>I(n,f))],l=Math.min(...a),c=Math.max(...a),u=[l,null,null];for(let f=0;l!==c&&f+1<o.length;f+=1){let[d,m]=[o[f],o[f+1]];if(I(n,d)===c&&m>=r){u=[l,d,m];break}}return j.set(i,u),u},dt=(e,n,t)=>{let r=at.get(e);if(r)return t?r[1]:r[0];let i=Math.abs(n),s=String(Math.floor(i/60)).padStart(2,"0"),o=i%60;return`${n<0?"-":"+"}${s}`+(o?String(o).padStart(2,"0"):"")},Xe=(e,n)=>{let t=lt(e);if(t===null)return{timezone:e,abbreviation:null,local:null,utc_offset:null,is_dst:!1,dst_start:null,dst_end:null};let r=nn(t,n),i=Math.round((r-n)/L),[s,o,a]=ft(e,t,r);return{timezone:e,abbreviation:dt(e,i,i!==s),local:new Date(r).toISOString().slice(0,19)+le(i),utc_offset:le(i),is_dst:i!==s,dst_start:o===null?null:Qe(t,o),dst_end:a===null?null:Qe(t,a)}},J=new Map,tn=(e,n)=>{if(!e)return null;if(n)return Xe(e,n.getTime());let t=Math.floor(Date.now()/1e3),r=`${e}@${t}`,i=J.get(r);if(i!==void 0)return i;J.size>1024&&J.clear();let s=Xe(e,t*1e3);return J.set(r,s),s};var mt=["1.1.1.1","8.8.8.8","9.9.9.9"],pt=["https://cloudflare-dns.com/dns-query","https://dns.google/dns-query"],ce=2e3,bt=4096,Tt=36e5,At=1232,ht=new Set([0,3]),U={A:1,CNAME:5,SOA:6,PTR:12,AAAA:28},St=(e,n)=>{let t=e.split(".").filter(Boolean),r=t.reduce((a,l)=>a+l.length+1,0),i=new Uint8Array(12+r+1+4+11),s=new DataView(i.buffer);s.setUint16(0,Math.floor(Math.random()*65536)),s.setUint16(2,288),s.setUint16(4,1),s.setUint16(10,1);let o=12;for(let a of t){i[o]=a.length;for(let l=0;l<a.length;l+=1)i[o+1+l]=a.charCodeAt(l);o+=a.length+1}return o+=1,s.setUint16(o,U[n]),s.setUint16(o+2,1),s.setUint16(o+5,41),s.setUint16(o+7,At),i},_=(e,n)=>{let t=[],r=n,i=-1;for(let s=0;s<128;s+=1){let o=e[r];if(o>=192){i<0&&(i=r+2),r=(o&63)<<8|e[r+1];continue}if(r+=1,!o)return[t.join("."),i<0?r:i];t.push(String.fromCharCode(...e.slice(r,r+o)).toLowerCase()),r+=o}throw new Error("name loops")},gt=(e,n,t)=>{if(t===U.A){let r=e.slice(n,n+4);return R((r[0]<<24>>>0)+(r[1]<<16)+(r[2]<<8)+r[3],!1)}if(t===U.AAAA){let r=0n;for(let i of e.slice(n,n+16))r=r<<8n|BigInt(i);return R(r,!0)}if(t===U.CNAME||t===U.PTR)return _(e,n)[0];if(t===U.SOA){let[r,i]=_(e,n);return`${r} ${_(e,i)[0]}`}return""},Et=e=>{let n=new DataView(e.buffer,e.byteOffset),t=n.getUint16(2),r=[n.getUint16(4),n.getUint16(6),n.getUint16(8)],i=12;for(let o=0;o<r[0];o+=1)i=_(e,i)[1]+4;let s=[];for(let o of r.slice(1)){let a=[];for(let l=0;l<o;l+=1){let[c,u]=_(e,i),f=n.getUint16(u),d=n.getUint16(u+8);a.push({name:c,kind:f,data:gt(e,u+10,f)}),i=u+10+d}s.push(a)}return{code:t&15,authentic:(t&32)!==0,truncated:(t&512)!==0,answer:s[0],authority:s[1]}},K=(e,n,t="answer")=>e?(t==="any"?[...e.answer,...e.authority]:e.answer).filter(i=>i.kind===U[n]):[],v=(e,n)=>K(e,n).map(t=>t.data),ue=e=>{try{let n=Et(e);return ht.has(n.code)?n:null}catch{return null}},fe=async e=>await import(e),yt=()=>typeof process<"u"&&!!process.versions?.node,rn=null,Ct=async()=>(rn??=(async()=>{let e=[];try{let{getServers:t}=await fe("node:dns");e.push(...t())}catch{}let n=e.map(t=>t.split("%")[0].replace(/^\[|]$/g,"")).filter(t=>!/^(fe80|169\.254)/i.test(t));return[...new Set([...n,...mt])]})(),rn),Rt=async(e,n)=>{let{connect:t}=await fe("node:net");return new Promise(r=>{let i=t(53,e),s=[],o=0,a=l=>{i.destroy(),r(l)};i.setTimeout(ce,()=>a(null)),i.on("error",()=>a(null)),i.on("connect",()=>{let l=new Uint8Array(n.length+2);new DataView(l.buffer).setUint16(0,n.length),l.set(n,2),i.write(l)}),i.on("data",l=>{if(s.push(l),o+=l.length,o<2)return;let c=new Uint8Array(o),u=0;for(let d of s)c.set(d,u),u+=d.length;let f=new DataView(c.buffer).getUint16(0);o>=f+2&&a(ue(c.slice(2,f+2)))})})},Mt=async(e,n)=>{let{createSocket:t}=await fe("node:dgram"),r=await Ct();return new Promise(i=>{let s=r.map(d=>t(d.includes(":")?"udp6":"udp4")),o=null,a=s.length,l=!1,c=d=>{if(!l){l=!0,clearTimeout(u);for(let m of s)m.close();i(d)}},u=setTimeout(()=>c(o),ce),f=async(d,m)=>{a-=1;let p=ue(d);if(p?.truncated&&(p=await Rt(m,e)),p&&(!n||K(p,n,"any").length))return c(p);o??=p,a||c(o)};s.forEach((d,m)=>{let p=r[m];d.on("error",()=>{a-=1,a||c(o)}),d.on("message",T=>{f(T,p)}),d.send(e,53,p)}),s.length||c(null)})},Dt=async(e,n)=>{let t=pt.map(async i=>{let s=await fetch(i,{method:"POST",headers:{"content-type":"application/dns-message"},body:e,signal:AbortSignal.timeout(ce)});if(!s.ok)throw new Error(`${s.status} from ${i}`);let o=ue(new Uint8Array(await s.arrayBuffer()));if(!o)throw new Error(`nothing from ${i}`);return o}),r=null;for(let i of await Promise.allSettled(t))if(i.status==="fulfilled"){if(!n||K(i.value,n,"any").length)return i.value;r??=i.value}return r},x=async([e,n,t])=>{let r=St(e,n);return yt()?Mt(r,t):Dt(r,t)},wt=(e,n)=>{let t=K(e,"SOA","any");if(!t.length)return;let[r,i]=t[0].data.split(" "),s=i.indexOf(".");n.zone=t[0].name,n.zone_primary=r,n.zone_contact=s<0?i:`${i.slice(0,s)}@${i.slice(s+1)}`},It=e=>({asked:e,hostname:null,hostnames:[],ipv4:null,ipv6:null,ipv4_addresses:[],ipv6_addresses:[],alias:null,zone:null,zone_primary:null,zone_contact:null,is_confirmed:!1,is_signed:!1}),sn=async(e,n)=>{let t=G(e,n)[1],[r,i]=t?M(t):[e,n],[s,,o]=P(r,i),[a,l]=await Promise.all([x([o,"PTR",null]),x([o,"SOA","SOA"])]),c=It(s);c.is_signed=!!a?.authentic,wt(l,c);let u=v(a,"PTR");if(!u.length)return c;c.hostname=u[0],c.hostnames=u;let[f,d]=await Promise.all([x([u[0],"A",null]),x([u[0],"AAAA",null])]);c.ipv4_addresses=v(f,"A"),c.ipv6_addresses=v(d,"AAAA"),c.ipv4=c.ipv4_addresses[0]??null,c.ipv6=c.ipv6_addresses[0]??null;let m=[...v(f,"CNAME"),...v(d,"CNAME")];c.alias=m[0]??null;let p=[...c.ipv4_addresses,...c.ipv6_addresses];return c.is_confirmed=p.some(T=>BigInt(M(T)[0])===BigInt(r)),c},Y=new Map,de=async(e,n)=>{let t=`${n?6:4}:${e}`,r=Y.get(t);if(r&&r[0]>Date.now())return r[1];let i=await sn(e,n);return Y.size>=bt&&Y.clear(),Y.set(t,[Date.now()+Tt,i]),i};var ln=(e,n)=>{let t=new Int32Array(e.length),r=n;for(let i=0;i<e.length;i+=1)t[i]=r,r+=1<<e[i];return t},pe=new Uint8Array([...Array(16).fill(0),1,1,1,1,2,2,3,3,4,6,7,8,9,10,11,12,13,14,15,16]),be=new Uint8Array([...Array(32).fill(0),1,1,1,1,2,2,3,3,4,4,5,7,8,9,10,11,12,13,14,15,16]),Ut=ln(pe,0),Bt=ln(be,3),Nt=[4,3,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,3,2,1,1,1,1,1,-1,-1,-1,-1],kt=[1,4,3,2,2,2,2,2,2,...Array(37).fill(1),...Array(7).fill(-1)],Pt=[1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1],S=e=>{throw new Error(`zstd: ${e}`)},B=e=>{let n=0;for(;1<<n<=e;)n+=1;return n-1},Te=(e,n,t)=>{let r=1<<t,i={log:t,symbols:new Uint8Array(r),bits:new Uint8Array(r),next:new Uint16Array(r)},s=new Uint16Array(256),o=r;for(let c=0;c<n;c+=1)e[c]<0?(s[c]=1,o-=1,i.symbols[o]=c):s[c]=e[c];let a=(r>>1)+(r>>3)+3,l=0;for(let c=0;c<n;c+=1)for(let u=0;u<e[c];u+=1){i.symbols[l]=c;do l=l+a&r-1;while(l>=o)}l!==0&&S("the symbols do not spread over the table");for(let c=0;c<r;c+=1){let u=s[i.symbols[c]]++,f=t-B(u);i.bits[c]=f,i.next[c]=(u<<f)-r}return i},O=(e,n,t)=>{let r=(e[n]&15)+5;r>t&&S("an entropy table is too accurate");let i=new Int16Array(256),s=(n<<3)+4,o=1<<r,a=-1;for(;a<255&&o>0;){let l=B(o+1),c=s>>3,u=(1<<l+1)-1,f=(e[c]|e[c+1]<<8|e[c+2]<<16)>>(s&7),d=f&(1<<l)-1,m=u-o-1,p=f&u;if(d<m?(s+=l,p=d):(s+=l+1,p>(1<<l)-1&&(p-=m)),p-=1,a+=1,i[a]=p,o-=p<0?-p:p,p!==0)continue;let T=3;for(;T===3;){let A=s>>3;T=(e[A]|e[A+1]<<8)>>(s&7)&3,s+=2,a+=T}}return(a>255||o!==0)&&S("the entropy counts do not add up"),[Te(i,a+1,r),s+7>>3]},on=(e,n)=>{let t=0;for(let c=0;c<n;c+=1){let u=e[c];u>11&&S("a huffman weight is out of range"),t+=u?1<<u-1:0}let r=B(t)+1,i=1<<r,s=i-t;s&s-1&&S("the huffman weights do not add up"),e[n]=B(s)+1;let o=new Uint32Array(13);for(let c=0;c<=n;c+=1)e[c]=e[c]&&r+1-e[c],o[e[c]]+=1;let a={maxBits:r,symbols:new Uint8Array(i),bits:new Uint8Array(i)},l=new Uint32Array(13);for(let c=r;c>0;c-=1){let u=l[c];l[c-1]=u+o[c]*(1<<r-c),a.bits.fill(c,u,l[c-1])}l[0]!==i&&S("the huffman codes do not fill the table");for(let c=0;c<=n;c+=1){let u=e[c];if(!u)continue;let f=l[u];l[u]=f+(1<<r-u),a.symbols.fill(c,f,l[u])}return a},cn=(e,n)=>{let t=e[n],r=new Uint8Array(256);if(t>=128){let T=t-127;for(let A=0;A<T;A+=2){let E=e[n+1+(A>>1)];r[A]=E>>4,r[A+1]=E&15}return[on(r,T),n+1+(T+1>>1)]}let[i,s]=O(e,n+1,6),o=n+1+t,a=e[o-1];a||S("a huffman bitstream ends on a zero byte");let l=s<<3,c=(o<<3)-8+B(a),u=0,f=0,d=0,m=i.log,p=i.log;for(;c-=m,!(c<l);){let T=c>>3;if(f+=(e[T]|e[T+1]<<8)>>(c&7)&(1<<m)-1,r[u]=i.symbols[f],u+=1,c-=p,c<l)break;T=c>>3,d+=(e[T]|e[T+1]<<8)>>(c&7)&(1<<p)-1,r[u]=i.symbols[d],u+=1,m=i.bits[f],f=i.next[f],p=i.bits[d],d=i.next[d]}return[on(r,u),o]},an=(e,n,t)=>{let r=e[e.length-1];r||S("a literal bitstream ends on a zero byte");let i=(1<<n.maxBits)-1,s=-n.maxBits,o=n.maxBits,a=(e.length<<3)-8+B(r)-o,l=0,c=0;for(;a>s&&c<t.length;){let u=a>>3,f=(e[u]|e[u+1]<<8|e[u+2]<<16)>>(a&7);l=(l<<o|f)&i,t[c]=n.symbols[l],c+=1,o=n.bits[l],a-=o}(a!==s||c!==t.length)&&S("a literal bitstream is the wrong length")},Gt=(e,n,t,r)=>{if(!r){an(e,n,t);return}let i=t.length+3>>2,s=6;for(let o=0;o<4;o+=1){let a=e[o<<1]|e[(o<<1)+1]<<8,l=o===3?e.length:s+a,c=i*o;an(e.subarray(s,l),n,t.subarray(c,c+i)),s=l}},Lt=()=>{let e=(n,t)=>{let r=new Int16Array(256);return r.set(n),Te(r,n.length,t)};return{literal:e(Nt,6),match:e(kt,6),offset:e(Pt,5)}},me=Lt(),vt=e=>Te(Int16Array.of(...Array(e).fill(0),1),e+1,0),xt=(e,n,t)=>{let r=e[n],i=r&3,s=r>>2&3,o=r>>4,a=0,l=n;if(i<2)return s&1?(o|=e[l+1]<<4,l+=1,s&2&&(o|=e[l+1]<<12,l+=1)):o=r>>3,l+=1,i===0?[{data:e.subarray(l,l+o),size:o},l+o]:[{data:new Uint8Array(o).fill(e[l]),size:o},l+1];if(s<2?(o|=(e[n+1]&63)<<4,a=e[n+1]>>6|e[n+2]<<2,l=n+3):s===2?(o|=e[n+1]<<4|(e[n+2]&3)<<12,a=e[n+2]>>2|e[n+3]<<6,l=n+4):(o|=e[n+1]<<4|(e[n+2]&63)<<12,a=e[n+2]>>6|e[n+3]<<2|e[n+4]<<10,l=n+5),i===2){let[f,d]=cn(e,l);t.huffman=f,a-=d-l,l=d}let c=t.huffman??S("literals without a huffman table"),u=new Uint8Array(o);return Gt(e.subarray(l,l+a),c,u,s!==0),[{data:u,size:o},l+a]},_t=(e,n,t)=>{let r=e[n];r&3&&S("a sequence header reserves bits that are set");let i=t.tables,s=[i?.match??null,i?.offset??null,i?.literal??null],a=[...[me.match,me.offset,me.literal]],l=n+1;for(let u=2;u>-1;u-=1){let f=r>>(u<<1)+2&3;if(f===1)a[u]=vt(e[l]),l+=1;else if(f===2){let[d,m]=O(e,l,9-(u&1));a[u]=d,l=m}else f===3&&(a[u]=s[u]??S("a repeated table was never sent"))}let c={match:a[0],offset:a[1],literal:a[2]};return t.tables=c,[c,l]},Kt=(e,n)=>{let t=e[n];return t<128?[t,n+1]:t<255?[t-128<<8|e[n+1],n+2]:[(e[n+1]|e[n+2]<<8)+32512,n+3]},Ot=(e,n,t)=>{if(e>3)return t[2]=t[1],t[1]=t[0],t[0]=e-3,t[0];let r=e-(n!==0?1:0);if(r===0)return t[0];let i=r===3?t[0]-1:t[r];return r>1&&(t[2]=t[1]),t[1]=t[0],t[0]=i,i},Ft=(e,n,t,r,i,s,o,a)=>{let[l]=_t(e,n,s),c=e[t-1];c||S("a sequence bitstream ends on a zero byte");let u=(E,C)=>{let y=E>>3,N=(e[y]|e[y+1]<<8|e[y+2]<<16|e[y+3]<<24)>>>(E&7);return C===32?N:N&(1<<C)-1},f=(t<<3)-8+B(c)-l.literal.log,d=u(f,l.literal.log);f-=l.offset.log;let m=u(f,l.offset.log);f-=l.match.log;let p=u(f,l.match.log),T=0,A=a;for(let E=0;E<r;E+=1){let C=l.literal.symbols[d],y=l.literal.bits[d],N=l.match.symbols[p],we=l.match.bits[p],X=l.offset.symbols[m],Ie=l.offset.bits[m];f-=X;let yn=(1<<X)+u(f,X);f-=be[N];let Ue=Bt[N]+u(f,be[N]);f-=pe[C];let $=Ut[C]+u(f,pe[C]);f-=y,d=l.literal.next[d]+u(f,y),f-=we,p=l.match.next[p]+u(f,we),f-=Ie,m=l.offset.next[m]+u(f,Ie);let Be=Ot(yn,$,s.offsets);o.set(i.data.subarray(T,T+$),A),T+=$,A+=$,Be>A&&S("a match reaches before the window");for(let Z=0;Z<Ue;Z+=1)o[A+Z]=o[A+Z-Be];A+=Ue}return o.set(i.data.subarray(T,i.size),A),A+i.size-T},Vt=(e,n,t,r,i,s)=>{let[o,a]=xt(e,n,r),[l,c]=Kt(e,a);return l===0?(i.set(o.data.subarray(0,o.size),s),s+o.size):Ft(e,c,t,l,o,r,i,s)},Ht=e=>{((e[0]|e[1]<<8|e[2]<<16)!==3126568||e[3]!==253)&&S("not a zstd frame");let t=e[4],r=t>>5&1,i=t>>6,s=6-r+(t&3?(t&3)===3?4:t&3:0),o=i?1<<i:r,a=0;for(let l=0;l<o;l+=1)a+=e[s+l]*256**l;return[s+o,o?a+(i===1?256:0):0]},Wt=(e,n)=>{if(n<=e.length)return e;let t=new Uint8Array(Math.max(n,e.length*2));return t.set(e),t},Ae=(e,n)=>{let[t,r]=Ht(e),i=n?n.content:new Uint8Array(0),s={huffman:n?.huffman??null,tables:n?.tables??null,offsets:Int32Array.from(n?n.offsets:[1,4,8])},o=new Uint8Array(i.length+(r||65536));o.set(i);let a=i.length,l=t;for(;;){let c=e[l]|e[l+1]<<8|e[l+2]<<16,u=c>>1&3,f=c>>3;if(l+=3,o=Wt(o,a+f+(1<<17)),u===0?(o.set(e.subarray(l,l+f),a),a+=f,l+=f):u===1?(o.fill(e[l],a,a+f),a+=f,l+=1):u===2?(a=Vt(e,l,l+f,s,o,a),l+=f):S("a block has no known type"),c&1)break}return o.subarray(i.length,a)},he=e=>{let n=new DataView(e.buffer,e.byteOffset,e.byteLength);if(n.getUint32(0,!0)!==3962610743)return{id:0,content:e,huffman:null,tables:null,offsets:[1,4,8]};let[t,r]=cn(e,8),[i,s]=O(e,r,8),[o,a]=O(e,s,9),[l,c]=O(e,a,9);return{id:n.getUint32(4,!0),content:e.subarray(c+12),huffman:t,tables:{literal:l,match:o,offset:i},offsets:[0,1,2].map(u=>n.getUint32(c+u*4,!0))}};var F="PLEVIN\0",un=1,zt=16384,$t=512,Zt=new Set(" -,./()&_+'"),jt=1e4,Jt=255,Se=16384,Yt=["place","network","abuse","prefix","rpki","roas","rir"],qt=new Set(["place","network","abuse"]),Qt=new Set(["signed","delta"]),fn="network",Xt={rpki:"rpki",rir:"rirs","place.granularity":"granularity","city.timezone":"timezones","city.type":"place_types","operator.category":"categories","abuse.user_type":"categories","abuse.service":"services","abuse.evidence":"evidence"},er=e=>e===Jt?null:e/100,nr={"abuse.risk":er,"abuse.is_anycast":Boolean,"abuse.is_satellite":Boolean},Ee=new TextDecoder,tr=new TextEncoder,rr=(e,n,t)=>{let r="";for(let i=n;i<t;i+=1){if(e[i]>127)return null;r+=String.fromCharCode(e[i])}return r},ir=(e,n,t)=>{let r=new Uint8Array(n+t.length);return r.set(e.subarray(0,n)),r.set(t,n),r},sr=new Uint8Array(Uint16Array.of(1).buffer)[0]===0,D=class{held=new Map;build;limit;constructor(n,t=zt){this.build=n,this.limit=t}get(n){let t=this.held.get(n);if(t!==void 0)return t;this.held.size>=this.limit&&this.held.clear();let r=this.build(n);return this.held.set(n,r),r}clear(){this.held.clear()}},De=(e,n)=>{let t=0,r=1;for(;;){let i=e[n];if(n+=1,t+=(i&127)*r,i<128)return[t,n];r*=128}},ye=(e,n,t)=>{let r=[];for(let i=0;i<t;i+=1){let[s,o]=De(e,n);r.push(s),n=o}return[r,n]},ge=(e,n,t)=>{let r=[];for(let i=0;i<t;i+=1){let s=0n,o=0n;for(;;){let a=e[n];if(n+=1,s|=BigInt(a&127)<<o,a<128)break;o+=7n}r.push(s)}return[r,n]},V=class{count;read;perBlock;perGroup;fanout;width;blocks;keys;offsets;data;dictionary;cache;groups;constructor(n,t){let r=new DataView(n.buffer,n.byteOffset,n.byteLength);this.count=t.count,this.read=t.read,this.perBlock=t.block,this.perGroup=t.group,this.fanout=this.perBlock/this.perGroup,this.blocks=r.getUint32(0,!0),this.width=r.getUint32(4,!0);let i=r.getUint32(8,!0);this.offsets=new Uint32Array(this.blocks+1);for(let o=0;o<=this.blocks;o+=1)this.offsets[o]=r.getUint32(12+o*4,!0);let s=12+4*(this.blocks+1);this.keys=[];for(let o=0;o<this.blocks;o+=1){let a=0n;for(let l=0;l<this.width;l+=1)a=a<<8n|BigInt(n[s+o*this.width+l]);this.keys.push(a)}s+=this.width*this.blocks,this.dictionary=i?he(n.subarray(s,s+i)):null,this.data=n.subarray(s+i),this.cache=new D(o=>this.block(o)),this.groups=new D(o=>this.values(o))}raw(n){let t=this.data.subarray(this.offsets[n],this.offsets[n+1]);return Ae(t,this.dictionary)}held(n){return Math.min(this.perGroup,this.count-n*this.perGroup)}block(n){throw new Error(`no block ${n}`)}values(n){throw new Error(`no group ${n}`)}at(n){throw new Error(`no row ${n}`)}},or={1:[Uint8Array,Int8Array],2:[Uint16Array,Int16Array],4:[Uint32Array,Int32Array],8:[BigUint64Array,BigInt64Array]},Q=class extends V{signed;constructor(n,t){super(n,t),this.signed=Qt.has(t.encoding)}block(n){let t=this.raw(n),r=t[0],i=t.slice(1);if(sr&&r>1)for(let s=0;s+r<=i.length;s+=r)i.subarray(s,s+r).reverse();return new or[r][this.signed?1:0](i.buffer)}at(n){let t=Math.floor(n/this.perBlock),r=this.cache.get(t)[n%this.perBlock];return typeof r=="bigint"?Number(r):r}rows(n){let t=[];for(let r=0;r<this.blocks;r+=1){let i=this.cache.get(r),s=typeof i[0]=="bigint"?BigInt(n):n;for(let o=i.indexOf(s);o>=0;o=i.indexOf(s,o+1))t.push(r*this.perBlock+o)}return t}},Ce=class extends Q{block(n){let t=super.block(n),r=new Float64Array(t.length),i=0;for(let s=0;s<t.length;s+=1)i+=Number(t[s]),r[s]=i;return r}},Re=class extends V{block(n){let t=this.raw(n),r=this.count-n*this.perBlock,i=Math.min(this.fanout,Math.ceil(r/this.perGroup))-1,[s,o]=ye(t,0,i),a=[o];for(let l of s)a.push(a[a.length-1]+l);return a.push(t.length),[t,a]}values(n){let t=Math.floor(n/this.fanout),[r,i]=this.cache.get(t),s=i[n%this.fanout],o=[],a="",l=null;for(let c=0;c<this.held(n);c+=1){let u=r[s],f=r[s+1];s+=2,f>127&&([f,s]=De(r,s-1));let d=l===null?rr(r,s,s+f):null;d===null?(l=ir(l??tr.encode(a),u,r.subarray(s,s+f)),a=Ee.decode(l)):a=a.slice(0,u)+d,s+=f,o.push(a)}return o}at(n){if(!n)return"";let t=Math.floor((n-1)/this.perGroup);return this.groups.get(t)[(n-1)%this.perGroup]}},Me=class extends V{hostBits;big;constructor(n,t){super(n,t),this.big=this.width!==4,this.hostBits=this.big?64:0}block(n){let t=this.raw(n),[r,i]=De(t,0),s=Math.ceil(r/this.perGroup),[o,a]=ge(t,i,s-1),l=[this.keys[n]];for(let d of o)l.push(l[l.length-1]+d);let[c,u]=ye(t,a,s-1),f=[u];for(let d of c)f.push(f[f.length-1]+d);return[l,f,t]}values(n){let t=Math.floor(n/this.fanout),[r,i,s]=this.cache.get(t),o=this.held(n),a=r[n%this.fanout],[l,c]=this.big?ge(s,i[n%this.fanout],o-1):ye(s,i[n%this.fanout],o-1);if(!this.big){let d=[Number(a)];for(let m of l)d.push(d[d.length-1]+m);return d}let u=[a>>BigInt(this.hostBits)];for(let d of l)u.push(u[u.length-1]+d);let[f]=ge(s,c,o);return u.map((d,m)=>d<<BigInt(this.hostBits)|f[m])}at(n){let t=Math.floor(n/this.perGroup);return this.groups.get(t)[n%this.perGroup]}row(n){let t=(this.big,n),r=q(this.keys,this.big?t:BigInt(t))-1;if(r<0)return null;let[i]=this.cache.get(r),s=r*this.fanout+q(i,this.big?t:BigInt(t))-1,o=q(this.groups.get(s),t)-1;return o<0?null:s*this.perGroup+o}holds(n){let t=this.row(n);return t!==null&&this.at(t)===n?t:null}},q=(e,n)=>{let t=0,r=e.length;for(;t<r;){let i=t+r>>1;e[i]<=n?t=i+1:r=i}return t},ar={plain:[],text:[],degrees:[],coded:[],links:[]},H=class{head;sections={};reads={};tables={};families;rows={};located;answers=new D(n=>this.answer(n));words=null;constructor(n){let t=new DataView(n.buffer,n.byteOffset,n.byteLength);if(Ee.decode(n.subarray(0,F.length))!==F||n[F.length]!==un)throw new Error(`not a plevin ${un} database`);let i=t.getUint32(F.length+1,!0),s=F.length+5;this.head=JSON.parse(Ee.decode(n.subarray(s,s+i)));let o=s+i;for(let[a,l]of Object.entries(this.head.sections)){let c=o+l.offset,u=n.subarray(c,c+l.bytes),f=l.encoding==="index"?Me:l.encoding==="front"?Re:l.encoding==="delta"?Ce:Q;this.sections[a]=new f(u,l)}Object.assign(this.reads,nr);for(let[a,l]of Object.entries(Xt)){let c=this.head.vocabularies[l];c&&(this.reads[a]=u=>c[u]??"")}this.plan(),this.families={4:this.family(4),6:this.family(6)},this.located={4:new D(a=>this.locateIn(4,a)),6:new D(a=>this.locateIn(6,a))}}linked(n,t){return this.rows[n]??=new D(r=>this.row(n,r)),this.rows[n].get(t)}get built(){return this.head.built}get selection(){return this.head.selection}get fields(){return this.head.fields}plan(){for(let[n,t]of Object.entries(this.sections)){let r=n.split(".");if(r.length!==3||r[0]!=="col"&&r[0]!=="link")continue;let[i,s,o]=r;this.tables[s]??={plain:[],text:[],degrees:[],coded:[],links:[]};let a=this.tables[s],l=this.reads[`${s}.${o}`];i==="link"?a.links.push([o,t]):l?a.coded.push([o,t,l]):t.read==="text"?a.text.push([o,t,this.sections.strings]):t.read?a.degrees.push([o,t]):a.plain.push([o,t])}}family(n){let t=`spine.v${n}`,r=`hosts.v${n}`;return{index:this.sections[t]??null,columns:Yt.filter(i=>`${t}.${i}`in this.sections).map(i=>[i,this.sections[`${t}.${i}`],this.reads[i]??null]),hosts:this.sections[r]??null,records:this.sections[`${r}.abuse`]??null}}row(n,t){let r=this.tables[n]??ar,i={};for(let[s,o]of r.plain)i[s]=o.at(t);for(let[s,o,a]of r.text)i[s]=a.at(o.at(t));for(let[s,o]of r.degrees)i[s]=o.at(t)/jt;for(let[s,o,a]of r.coded)i[s]=a(o.at(t));for(let[s,o]of r.links){let a=o.at(t);a&&(i[s]=this.linked(s,a-1))}return"postal_partial"in i&&(i.postal_partial=String(i.postal).slice(0,i.postal_partial)),i}answer(n){let t=n%2?6:4,r=(n-n%2)/2,i=r%Se,s=(r-i)/Se,o={};for(let[a,l,c]of this.families[t].columns){let u=i&&a==="abuse"?i:l.at(s);qt.has(a)?u&&(o[a]=this.linked(a,u-1)):(o[fn]??={},o[fn][a]=c?c(u):u)}return o}locateIn(n,t){let{index:r,hosts:i,records:s}=this.families[n],o=r===null?null:r.row(t);if(o===null)return null;if(i===null||s===null)return[n,o,0];let a=i.holds(t);return[n,o,a===null?0:s.at(a)+1]}locate(n,t){return this.located[t?6:4].get(n)}rowFor(n,t){let r=this.locate(n,t);return r===null?null:this.answerFor(r)}answerFor(n){let[t,r,i]=n;return this.answers.get((r*Se+i)*2+(t===6?1:0))}seek(n,t){let r=0,i=n.count;for(;r<i;){let s=r+i>>1;n.at(s)<t?r=s+1:i=s}return r}systemAt(n){let t=this.sections["col.network.asn"];if(!t||n<=0)return-1;let r=this.seek(t,n);return r<t.count&&t.at(r)===n?r:-1}system(n){let t=this.systemAt(n);return t<0?null:this.linked("network",t)}spans(n,t){let r=this.sections[`spine.v${t}`],i=this.sections[`spine.v${t}.network`],s=this.sections[`spine.v${t}.prefix`];if(!r||!i||!s)return[];let o=BigInt(t===6?128:32),a=new Set,l=[];for(let c of i.rows(n+1)){let u=s.at(c),f=o-BigInt(u),d=BigInt(r.at(c))>>f<<f,m=`${d}/${u}`;a.has(m)||(a.add(m),l.push([d,u]))}return l}searchable(){let n=this.sections["col.network.asn"],t=this.sections["col.network.handle"],r=this.sections["link.network.operator"],i=this.sections["link.network.carrier"],s=this.sections["col.operator.company"],o=this.sections["col.operator.peering"],a=this.sections["col.carrier.user_count"],l=this.sections.strings,c=[],u=[0],f=[],d=[];for(let m=this.seek(n,1);m<n.count;m+=1){let p=r.at(m),T=i.at(m),A=p?l.at(s.at(p-1)):"",E=p?o.at(p-1):0,C=T?a.at(T-1):0,y=`${l.at(t.at(m))} ${A}`.toLowerCase();c.push(y),u.push(u[u.length-1]+y.length+1),f.push(E+32-Math.clz32(C)),d.push(m)}return{haystack:c.join(`
625
- `),starts:u,weights:f,rows:d}}find(n,t){let r=n.trim().toLowerCase();if(!r||!("col.network.asn"in this.sections))return[];this.words??=this.searchable();let{haystack:i,starts:s,weights:o,rows:a}=this.words,l=[],c=i.indexOf(r);for(;c>=0&&l.length<$t;){let u=q(s,c)-1,f=s[u],d=s[u+1],m=c>f&&!Zt.has(i[c-1])?1:0;l.push([m,-o[u],d-f,u]),c=i.indexOf(r,d)}return l.sort((u,f)=>u[0]-f[0]||u[1]-f[1]||u[2]-f[2]),l.slice(0,t).map(([,,,u])=>this.linked("network",a[u]))}};var dn=1024,Ar=1n<<128n,b=e=>e?String(e):null,h=e=>e?Number(e):null,z=e=>e==null?null:Number(e),g=(e,n)=>e?.[n],hr=e=>e?{code:h(e.code),label:b(e.label)}:null,Sr=e=>e?{id:h(e.id),code:b(e.code),name:b(e.name)}:null,gr=e=>e?{id:h(e.id),code:b(e.code),iso:b(e.iso),name:b(e.name),type:b(e.type)}:null,An=e=>{let n=new WeakMap;return(t,...r)=>{if(!t)return null;let i=r.join(`
626
- `),s=n.get(t);s||(s=new Map,n.set(t,s));let o=s.get(i);if(o!==void 0)return o;let a=e(t,...r);return s.set(i,a),a}},hn=An(e=>{let n=String(e.type??"");return{id:h(e.id),name:b(e.name),ascii:b(e.ascii),country:b(e.country),population:h(e.population),elevation:h(e.elevation),postal:b(e.postal),postal_partial:b(e.postal_partial),timezone:b(e.timezone),type:b(n),capital:b(Ze(n)),region:gr(g(e,"region")),district:Sr(g(e,"district")),metro:hr(g(e,"metro"))}}),Er=An((e,n,t)=>{let r=String(e.company??""),i=String(e.website??""),s=String(e.abuse_email??"");return{company:b(r),brand:b(t||We(n,r)),domain:b(ze(i,s)),website:b(i),category:b(e.category),tier:h(e.tier),peering:h(e.peering),scope:b(e.scope),rir:b(e.rir),since:h(e.since),street:b(e.street),state:b(e.state),postal:b(e.postal),country:b(e.country),abuse_email:b(s),city:hn(g(e,"city"))}}),yr=(e,n)=>{if(!e&&!n)return null;let t=e??{};return{user_type:b(n),user_count:h(t.user_count),mcc:h(t.mcc),mnc:h(t.mnc),is_mobile:n==="cellular"}},Sn=(e,n,t,r)=>{if(!e&&!n)return null;let i=e??{},[s,o]=$e(String(i.service??""),t),a=String(i.name??"");return{name:b(a),provider:b(a||(s?r:"")),service:b(s),evidence:b(String(i.evidence??"")||o),risk:z(i.risk),network_risk:n?z(n.risk):null,last_seen_days:h(i.last_seen_days),is_anycast:!!i.is_anycast,is_satellite:!!i.is_satellite,is_hosting_provider:Ke.has(t),is_proxy:Oe.has(s),is_public_proxy:s==="public_proxy",is_residential_proxy:s==="residential_proxy",is_anonymous_vpn:s==="anonymous_vpn",is_tor_exit_node:s==="tor_exit_node",is_private_relay:s==="private_relay",is_anonymous:!!s}},Cr=e=>{if(!e)return null;let n=hn(g(e,"city")),t=n?.country??"",r=n?.timezone??"";return[{lat:z(e.lat),lon:z(e.lon),accuracy:h(e.accuracy),confidence:h(e.confidence),granularity:b(e.granularity),city:n,country:en(t)},r]},Rr=(e,n,t)=>{let r=g(e,"operator");return!r&&!t?null:Er(r??e,n,t)},gn=(e,n)=>{let t=String(e.handle??"");return[{asn:h(e.asn),handle:b(t),rir:b(e.rir),rpki:b(e.rpki),roas:z(e.roas),operator:Rr(e,t,String(e.brand??"")),carrier:yr(g(e,"carrier"),n)},h(e.prefix)]},En=(e,n)=>String(e?.user_type||n?.user_type||""),Mr=e=>{let n=g(e,"network"),t=g(n,"abuse"),r=En(g(e,"abuse"),t),i=n?gn(n,r):null,s=i?.[0].operator?.brand??"";return[Cr(g(e,"place")),i,Sn(g(e,"abuse"),t,r,s)]},mn=e=>{let n=g(e,"abuse"),t=En(void 0,n),{asn:r,handle:i,operator:s,carrier:o}=gn(e,t)[0],a=s?.brand??"";return{asn:r,handle:i,found:!0,network:{asn:r,handle:i,prefix:null,cidr:null,start:null,end:null,rir:null,rpki:null,roas:null,operator:s,carrier:o},abuse:Sn(void 0,n,t,a)}},Dr=(e,n)=>{let t=0n,r=0n;for(let[i,s]of[...e].sort(([o],[a])=>o<a?-1:1)){let o=i+(1n<<n-BigInt(s));o<=r||(t+=o-(i>r?i:r),r=o)}return t},pn=(e,n,t)=>{let r=t===6,i=r?128n:32n,s=e.spans(n,t);return s.sort((a,l)=>a[1]-l[1]||(a[0]<l[0]?-1:1)),[s.map(([a,l])=>{let[c,u,f]=re(a,r,l),d=1n<<i-BigInt(l);return{cidr:c,start:u,end:f,version:t,prefix:l,addresses:r?d:Number(d)}}),Dr(s,i)]},bn=e=>{let n=String(e).trim().toLowerCase().replace(/^as/,"");return/^\d+$/.test(n)?Number(n):0},wr=(e,n,t)=>{let[r,i]=e,[s,o,a]=i===null?[null,null,null]:re(n,t,i);return{...r,prefix:i,cidr:s,start:o,end:a}},Tn=(e,n,t,r,i=null)=>{let[s,o,a]=P(e,n),l=Le(e,n),[c,u]=G(e,n),[f,d,m]=xe(e,n),p=ve(e,n),[T,A,E]=t??[null,null,null];return{ip:s,version:n?6:4,number:e,compressed:s,expanded:o,arpa:a,is_global:l===0,is_bogon:l!==0,is_private:(l&1)!==0,is_loopback:(l&2)!==0,is_multicast:(l&4)!==0,is_reserved:(l&8)!==0,is_link_local:(l&16)!==0,is_unique_local:(l&32)!==0,is_documentation:(l&64)!==0,is_shared:(l&128)!==0,is_benchmark:(l&256)!==0,is_ipv4_mapped:c===ee,is_6to4:c===ne,is_teredo:c===te,tunnel:c,embedded_ipv4:u,decimal_ipv4:p,as_ipv4_mapped:f,as_6to4:d,as_nat64:m,found:t!==null,place:T===null?null:{...T[0],time:tn(T[1],r)},network:A===null?null:wr(A,e,n),abuse:E,dns:i}},W=class{file;kept=new Map;results=new Map;announced=new Map;second=0;constructor(n){this.file=new H(n)}get built(){return this.file.built}get selection(){return this.file.selection}get fields(){return this.file.fields}storedFor(n){let t=n.join(","),r=this.kept.get(t);if(r!==void 0)return r;this.kept.size>=dn*16&&this.kept.clear();let i=Mr(this.file.answerFor(n));return this.kept.set(t,i),i}lookup(n,t){let[r,i]=M(n);if(t){let u=this.file.locate(r,i);return Tn(r,i,u&&this.storedFor(u),t)}let s=Math.floor(Date.now()/1e3);s!==this.second&&(this.second=s,this.results.clear());let o=i?r+Ar:BigInt(r),a=this.results.get(o);if(a!==void 0)return a;this.results.size>=dn&&this.results.clear();let l=this.file.locate(r,i),c=Tn(r,i,l&&this.storedFor(l));return this.results.set(o,c),c}async resolve(n,t){let r=this.lookup(n,t?.moment);if(!t?.dns)return r;let[i,s]=M(n);return{...r,dns:await de(i,s)}}system(n){let t=bn(n),r=this.file.system(t);return r?mn(r):{asn:t||null,handle:null,found:!1,network:null,abuse:null}}routes(n){let t=bn(n),r=this.announced.get(t);if(r)return r;let i=this.file.systemAt(t);if(i<0)return{asn:t||null,found:!1,ipv4:[],ipv6:[],ipv4_addresses:0,ipv6_addresses:0n};let[s,o]=pn(this.file,i,4),[a,l]=pn(this.file,i,6),c={asn:t,found:!0,ipv4:s,ipv6:a,ipv4_addresses:Number(o),ipv6_addresses:l};return this.announced.set(t,c),c}search(n,t=20){let r=this.system(n);return r.found?[r]:this.file.find(n,t).map(mn)}row(n){let[t,r]=M(n);return this.file.rowFor(t,r)}},Hr=async e=>{if(e instanceof Uint8Array)return new W(e);if(e instanceof ArrayBuffer)return new W(new Uint8Array(e));let n=e instanceof Response?e:await fetch(e);if(!n.ok)throw new Error(`${n.status} reading the database`);return new W(new Uint8Array(await n.arrayBuffer()))};export{H as File,W as Plevin,x as ask,Ae as decompress,sn as facts,he as loadDictionary,de as named,Hr as open,K as records};
624
+ `);var xt=new Set("AT BE BG HR CY CZ DK EE FI FR DE GR HU IE IT LV LT LU MT NL PL PT RO SK SI ES SE".split(" ")),Ot=new Set("AG AI AU BB BD BM BN BS BT BW CC CK CX CY DM FJ FK GB GD GG GY HK ID IE IM IN JE JM JP KE KI KN KY LC LK LS MO MS MT MU MV MW MY MZ NA NF NP NR NU NZ PG PK PN SB SC SG SH SR SZ TC TH TL TO TT TV TZ UG VC VG WS ZA ZM ZW".split(" ")),E=864e5,Kt=7*E,ne=400*E,N=6e4,Vt=new Map(Be.map(n=>{let[e,t="",r=""]=n.slice(8).split("|"),i=[e,t,r,n.slice(2,5),n.slice(5,8)];return[n.slice(0,2),i]})),ke=n=>n||null,Ht=n=>n.length!==2||!/^[a-zA-Z]{2}$/.test(n)?"":[...n.toUpperCase()].map(e=>String.fromCodePoint(127462+e.charCodeAt(0)-65)).join(""),Ue=new Map,xe=n=>{if(!n)return null;let e=Ue.get(n);if(e!==void 0)return e;let t=Vt.get(n),r={code:n,name:t?t[0]:null,official:t?ke(t[1]):null,common:t?ke(t[2]):null,iso3:t?t[3]:null,numeric:t?t[4]:null,flag:Ht(n)||null,european_union:xt.has(n),driving_side:Ot.has(n)?"left":"right"};return Ue.set(n,r),r},Ft=new Map(Pe.map(n=>{let[e,t,r=t]=n.split("|");return[e,[t,r]]})),Le=new Map,Wt=n=>{let e=Le.get(n);if(e!==void 0)return e;let t=null;try{t=new Intl.DateTimeFormat("en-US",{timeZone:n,hour12:!1,era:"short",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{t=null}return Le.set(n,t),t},Oe=(n,e)=>{let t={};for(let s of n.formatToParts(e))t[s.type]=s.value;let r=Number(t.year)*(t.era==="BC"?-1:1),i=t.hour==="24"?0:Number(t.hour);return Date.UTC(r,Number(t.month)-1,Number(t.day),i,Number(t.minute),Number(t.second))},te=(n,e)=>Math.round((Oe(n,e)-e)/N),R=(n,e)=>{let t=te(n,e-E),r=te(n,e+E);if(t===r)return t;let i=[t,r].filter(s=>te(n,e-s*N)===s);return i.length?Math.max(...i):Math.min(t,r)},re=n=>{let e=Math.abs(n),t=String(Math.floor(e/60)).padStart(2,"0");return`${n<0?"-":"+"}${t}:${String(e%60).padStart(2,"0")}`},Ge=(n,e)=>new Date(e).toISOString().slice(0,19)+re(R(n,e)),zt=(n,e,t,r)=>{for(;t-e>1e3;){let i=e+Math.floor((t-e)/2);R(n,i)===r?e=i:t=i}return Math.floor((t+3e4)/N)*N},$t=(n,e)=>{let t=e+ne,r=[],i=e-ne,s=R(n,i);for(;i<t;){let a=i+Kt,o=R(n,a);o!==s&&r.push(zt(n,i,a,s)),s=o,i=a}return r},H=new Map,Zt=(n,e,t)=>{let r=Math.floor(t/E)*E+E/2,i=`${n}@${r}`,s=H.get(i);if(s!==void 0)return s;H.size>2048&&H.clear();let a=$t(e,r),o=[R(e,r-ne),...a.map(p=>R(e,p))],l=Math.min(...o),c=Math.max(...o),u=[l,null,null];for(let p=0;l!==c&&p+1<a.length;p+=1){let[d,f]=[a[p],a[p+1]];if(R(e,d)===c&&f>=r){u=[l,d,f];break}}return H.set(i,u),u},jt=(n,e,t)=>{let r=Ft.get(n);if(r)return t?r[1]:r[0];let i=Math.abs(e),s=String(Math.floor(i/60)).padStart(2,"0"),a=i%60;return`${e<0?"-":"+"}${s}`+(a?String(a).padStart(2,"0"):"")},_e=(n,e)=>{let t=Wt(n);if(t===null)return{timezone:n,abbreviation:null,local:null,utc_offset:null,is_dst:!1,dst_start:null,dst_end:null};let r=Oe(t,e),i=Math.round((r-e)/N),[s,a,o]=Zt(n,t,r);return{timezone:n,abbreviation:jt(n,i,i!==s),local:new Date(r).toISOString().slice(0,19)+re(i),utc_offset:re(i),is_dst:i!==s,dst_start:a===null?null:Ge(t,a),dst_end:o===null?null:Ge(t,o)}},F=new Map,Ke=(n,e)=>{if(!n)return null;if(e)return _e(n,e.getTime());let t=Math.floor(Date.now()/1e3),r=`${n}@${t}`,i=F.get(r);if(i!==void 0)return i;F.size>1024&&F.clear();let s=_e(n,t*1e3);return F.set(r,s),s};var Yt=["1.1.1.1","8.8.8.8","9.9.9.9"],Jt=["https://cloudflare-dns.com/dns-query","https://dns.google/dns-query"],Qt=["stun.l.google.com:19302","stun.cloudflare.com:3478"],Xt=["https://api.ipify.org","https://icanhazip.com"],P=2e3,qt=4096,en=36e5,tn=1232,nn=new Set([0,3]),C={A:1,CNAME:5,SOA:6,PTR:12,AAAA:28},rn=(n,e)=>{let t=n.split(".").filter(Boolean),r=t.reduce((o,l)=>o+l.length+1,0),i=new Uint8Array(12+r+1+4+11),s=new DataView(i.buffer);s.setUint16(0,Math.floor(Math.random()*65536)),s.setUint16(2,288),s.setUint16(4,1),s.setUint16(10,1);let a=12;for(let o of t){i[a]=o.length;for(let l=0;l<o.length;l+=1)i[a+1+l]=o.charCodeAt(l);a+=o.length+1}return a+=1,s.setUint16(a,C[e]),s.setUint16(a+2,1),s.setUint16(a+5,41),s.setUint16(a+7,tn),i},B=(n,e)=>{let t=[],r=e,i=-1;for(let s=0;s<128;s+=1){let a=n[r];if(a>=192){i<0&&(i=r+2),r=(a&63)<<8|n[r+1];continue}if(r+=1,!a)return[t.join("."),i<0?r:i];t.push(String.fromCharCode(...n.slice(r,r+a)).toLowerCase()),r+=a}throw new Error("name loops")},sn=(n,e,t)=>{if(t===C.A){let r=n.slice(e,e+4);return S((r[0]<<24>>>0)+(r[1]<<16)+(r[2]<<8)+r[3],!1)}if(t===C.AAAA){let r=0n;for(let i of n.slice(e,e+16))r=r<<8n|BigInt(i);return S(r,!0)}if(t===C.CNAME||t===C.PTR)return B(n,e)[0];if(t===C.SOA){let[r,i]=B(n,e);return`${r} ${B(n,i)[0]}`}return""},an=n=>{let e=new DataView(n.buffer,n.byteOffset),t=e.getUint16(2),r=[e.getUint16(4),e.getUint16(6),e.getUint16(8)],i=12;for(let a=0;a<r[0];a+=1)i=B(n,i)[1]+4;let s=[];for(let a of r.slice(1)){let o=[];for(let l=0;l<a;l+=1){let[c,u]=B(n,i),p=e.getUint16(u),d=e.getUint16(u+8);o.push({name:c,kind:p,data:sn(n,u+10,p)}),i=u+10+d}s.push(o)}return{code:t&15,authentic:(t&32)!==0,truncated:(t&512)!==0,answer:s[0],authority:s[1]}},k=(n,e,t="answer")=>n?(t==="any"?[...n.answer,...n.authority]:n.answer).filter(i=>i.kind===C[e]):[],w=(n,e)=>k(n,e).map(t=>t.data),ie=n=>{try{let e=an(n);return nn.has(e.code)?e:null}catch{return null}},$=async n=>await import(n),Fe=()=>typeof process<"u"&&!!process.versions?.node,Ve=null,on=async()=>(Ve??=(async()=>{let n=[];try{let{getServers:t}=await $("node:dns");n.push(...t())}catch{}let e=n.map(t=>t.split("%")[0].replace(/^\[|]$/g,"")).filter(t=>!/^(fe80|169\.254)/i.test(t));return[...new Set([...e,...Yt])]})(),Ve),ln=async(n,e)=>{let{connect:t}=await $("node:net");return new Promise(r=>{let i=t(53,n),s=[],a=0,o=l=>{i.destroy(),r(l)};i.setTimeout(P,()=>o(null)),i.on("error",()=>o(null)),i.on("connect",()=>{let l=new Uint8Array(e.length+2);new DataView(l.buffer).setUint16(0,e.length),l.set(e,2),i.write(l)}),i.on("data",l=>{if(s.push(l),a+=l.length,a<2)return;let c=new Uint8Array(a),u=0;for(let d of s)c.set(d,u),u+=d.length;let p=new DataView(c.buffer).getUint16(0);a>=p+2&&o(ie(c.slice(2,p+2)))})})},cn=async(n,e)=>{let{createSocket:t}=await $("node:dgram"),r=await on();return new Promise(i=>{let s=r.map(d=>t(d.includes(":")?"udp6":"udp4")),a=null,o=s.length,l=!1,c=d=>{if(!l){l=!0,clearTimeout(u);for(let f of s)f.close();i(d)}},u=setTimeout(()=>c(a),P),p=async(d,f)=>{o-=1;let h=ie(d);if(h?.truncated&&(h=await ln(f,n)),h&&(!e||k(h,e,"any").length))return c(h);a??=h,o||c(a)};s.forEach((d,f)=>{let h=r[f];d.on("error",()=>{o-=1,o||c(a)}),d.on("message",A=>{p(A,h)}),d.send(n,53,h)}),s.length||c(null)})},un=async(n,e)=>{let t=Jt.map(async i=>{let s=await fetch(i,{method:"POST",headers:{"content-type":"application/dns-message"},body:n,signal:AbortSignal.timeout(P)});if(!s.ok)throw new Error(`${s.status} from ${i}`);let a=ie(new Uint8Array(await s.arrayBuffer()));if(!a)throw new Error(`nothing from ${i}`);return a}),r=null;for(let i of await Promise.allSettled(t))if(i.status==="fulfilled"){if(!e||k(i.value,e,"any").length)return i.value;r??=i.value}return r},v=async([n,e,t])=>{let r=rn(n,e);return Fe()?cn(r,t):un(r,t)},dn=(n,e)=>{let t=k(n,"SOA","any");if(!t.length)return;let[r,i]=t[0].data.split(" "),s=i.indexOf(".");e.zone=t[0].name,e.zone_primary=r,e.zone_contact=s<0?i:`${i.slice(0,s)}@${i.slice(s+1)}`},pn=n=>({asked:n,hostname:null,hostnames:[],ipv4:null,ipv6:null,ipv4_addresses:[],ipv6_addresses:[],alias:null,zone:null,zone_primary:null,zone_contact:null,is_confirmed:!1,is_signed:!1}),We=async(n,e)=>{let t=D(n,e)[1],[r,i]=t?g(t):[n,e],[s,,a]=I(r,i),[o,l]=await Promise.all([v([a,"PTR",null]),v([a,"SOA","SOA"])]),c=pn(s);c.is_signed=!!o?.authentic,dn(l,c);let u=w(o,"PTR");if(!u.length)return c;c.hostname=u[0],c.hostnames=u;let[p,d]=await Promise.all([v([u[0],"A",null]),v([u[0],"AAAA",null])]);c.ipv4_addresses=w(p,"A"),c.ipv6_addresses=w(d,"AAAA"),c.ipv4=c.ipv4_addresses[0]??null,c.ipv6=c.ipv6_addresses[0]??null;let f=[...w(p,"CNAME"),...w(d,"CNAME")];c.alias=f[0]??null;let h=[...c.ipv4_addresses,...c.ipv6_addresses];return c.is_confirmed=h.some(A=>BigInt(g(A)[0])===BigInt(r)),c},ze=554869826,fn=257,mn=32,hn=1,Tn=/^candidate:\S+ \S+ \S+ \S+ (\S+) \S+ typ srflx/,bn=6e4,Sn=(n,e,t)=>{let r=0n;for(let i=0;i<16;i+=1){let s=t?n[4+i]:0;r=r<<8n|BigInt(n[e+i]^s)}return r},An=()=>{let n=new Uint8Array(20),e=new DataView(n.buffer);return e.setUint16(0,1),e.setUint32(4,ze),crypto.getRandomValues(n.subarray(8)),n},gn=n=>{let e=new DataView(n.buffer,n.byteOffset,n.byteLength);if(n.length<20||e.getUint16(0)!==fn)return null;let t=20;for(;t+4<=n.length;){let r=e.getUint16(t),i=e.getUint16(t+2),s=t+4,a=r===mn;if((a||r===hn)&&s+i<=n.length){let o=n[s+1];if(o===1)return S((e.getUint32(s+4)^(a?ze:0))>>>0,!1);if(o===2)return S(Sn(n,s+4,a),!0)}t=s+i+(4-i%4)%4}return null},$e=(n,e)=>{let t=!1,r=s=>{t||(t=!0,clearTimeout(i),e(),n(s))},i=setTimeout(()=>r(null),P);return r},En=async n=>{let{createSocket:e}=await $("node:dgram"),[t,r]=n.split(":");return new Promise(i=>{let s=e("udp4"),a=$e(i,()=>s.close());s.on("error",()=>a(null)),s.on("message",o=>a(gn(o))),s.send(An(),Number(r),t)})},Rn=n=>{let e=globalThis.RTCPeerConnection;return e?new Promise(t=>{let r=new e({iceServers:[{urls:`stun:${n}`}]}),i=$e(t,()=>r.close());r.onicecandidate=s=>{let a=Tn.exec(s.candidate?.candidate??"");a?i(a[1]):s.candidate||i(null)},r.createDataChannel(""),r.createOffer().then(s=>r.setLocalDescription(s)).catch(()=>i(null))}):Promise.resolve(null)},Cn=async()=>{for(let n of Xt)try{let e=await fetch(n,{signal:AbortSignal.timeout(P)});if(e.ok)return(await e.text()).trim()}catch{}return null},He=n=>{if(!n)return null;try{let[e,t]=g(n);return S(e,t)}catch{return null}},W=null,yn=async()=>{if(W&&W[0]>Date.now())return W[1];let n=null;for(let e of Qt)if(n=He(Fe()?await En(e):await Rn(e)),n)break;return n??=He(await Cn()),W=[Date.now()+bn,n],n},z=new Map,se=async(n,e)=>{let t=`${e?6:4}:${n}`,r=z.get(t);if(r&&r[0]>Date.now())return r[1];let i=await We(n,e);return z.size>=qt&&z.clear(),z.set(t,[Date.now()+en,i]),i};var U=n=>{throw new Error(`lzma: ${n}`)},L=class{bytes;length=0;done=!1;data;probs;context;positionMask;matchMask;range=-1;code=0;at=5;state=0;recent0=0;recent1=0;recent2=0;recent3=0;constructor(e,[t,r,i],s=0){(e.length<5||e[0]!==0)&&U("not a stream"),this.data=e,this.bytes=new Uint8Array(Math.max(s,e.length*4,256)),this.probs=new Uint16Array(1846+(768<<t+r)).fill(1024),this.context=t,this.positionMask=(1<<r)-1,this.matchMask=(1<<i)-1;for(let a=1;a<5;a+=1)this.code=this.code<<8|e[a]}bit(e){let t=this.probs,r=t[e],i=Math.imul(this.range>>>11,r),s=0;return(this.code^2147483648)<(i^2147483648)?(this.range=i,t[e]=r+(2048-r>>5)):(this.range=this.range-i|0,this.code=this.code-i|0,t[e]=r-(r>>5),s=1),this.range>>>24||(this.at>=this.data.length&&U("the stream ends early"),this.range<<=8,this.code=this.code<<8|this.data[this.at++]),s}direct(e){let t=0;for(let r=0;r<e;r+=1){this.range>>>=1;let i=(this.code^2147483648)>=(this.range^2147483648)?1:0;i&&(this.code=this.code-this.range|0),t=t*2+i,this.range>>>24||(this.at>=this.data.length&&U("the stream ends early"),this.range<<=8,this.code=this.code<<8|this.data[this.at++])}return t}tree(e,t){let r=1;for(let i=0;i<t;i+=1)r=r<<1|this.bit(e+r);return r-(1<<t)}reversed(e,t){let r=1,i=0;for(let s=0;s<t;s+=1){let a=this.bit(e+r);r=r<<1|a,i|=a<<s}return i}span(e,t){return this.bit(e+0)?this.bit(e+0+1)?16+this.tree(e+258,8):8+this.tree(e+130+(t<<3),3):this.tree(e+2+(t<<3),3)}distance(e){let t=this.tree(432+(Math.min(e,3)<<6),6);if(t<4)return t;let r=(t>>1)-1,i=(2|t&1)*2**r;return t<14?i+this.reversed(688+i-t-1,r):i+this.direct(r-4)*16+this.reversed(802,4)}room(e){if(this.length+e<=this.bytes.length)return;let t=new Uint8Array(Math.max(this.bytes.length*2,this.length+e));t.set(this.bytes.subarray(0,this.length)),this.bytes=t}literal(){let e=this.bytes,t=this.length,r=t?e[t-1]:0,i=1846+768*(((t&this.positionMask)<<this.context)+(r>>8-this.context)),s=1;if(this.state>=7){let o=e[t-this.recent0-1];for(;s<256;){let l=o>>7&1;o<<=1;let c=this.bit(i+(1+l<<8)+s);if(s=s<<1|c,c!==l)break}}for(;s<256;)s=s<<1|this.bit(i+s);this.room(1),this.bytes[this.length++]=s&255;let a=this.state;this.state=a<4?0:a<10?a-3:a-6}copy(e){this.room(e);let t=this.bytes,r=this.length-this.recent0-1;for(let i=0;i<e;i+=1)t[this.length+i]=t[r+i];this.length+=e}until(e){for(;!this.done&&this.length<e;)this.step();return this.bytes}step(){let e=this.length&this.matchMask,t=this.state;if(!this.bit(0+(t<<4|e))){this.literal();return}let i=this.bit(192+t)?this.repeat(t,e):this.fresh(t,e);this.done||(this.recent0>=this.length&&U("a match reaches before the start"),this.copy(i+2))}fresh(e,t){this.recent3=this.recent2,this.recent2=this.recent1,this.recent1=this.recent0;let r=this.span(818,t);return this.state=e<7?7:10,this.recent0=this.distance(r),this.done=this.recent0===4294967295,r}repeat(e,t){if(this.length||U("a repeat before any byte"),this.bit(204+e))this.rotate(e);else if(!this.bit(240+(e<<4|t)))return this.state=e<7?9:11,-1;return this.state=e<7?8:11,this.span(1332,t)}rotate(e){let t=this.recent1;this.bit(216+e)&&(t=this.recent2,this.bit(228+e)&&(t=this.recent3,this.recent3=this.recent2),this.recent2=this.recent1),this.recent1=this.recent0,this.recent0=t}},Mn=(n,e)=>{let t=new L(n,e);return t.until(Number.POSITIVE_INFINITY),t.bytes.subarray(0,t.length)};var G="PLEVIN\0",Ze=2,In=16384,Dn=512,Nn=new Set(" -,./()&_+'"),wn=1e4,vn=255,ae=16384,Bn=["place","network","abuse","prefix","rpki","roas","rir"],Pn=new Set(["place","network","abuse"]),kn=new Set(["signed","delta"]),je="network",Un={rpki:"rpki",rir:"rirs","place.granularity":"granularity","city.timezone":"timezones","city.type":"place_types","operator.category":"categories","abuse.user_type":"categories","abuse.service":"services","abuse.evidence":"evidence","abuse.level":"levels"},Ln=n=>n===vn?null:n/100,Gn={"abuse.risk":Ln,"abuse.is_anycast":Boolean,"abuse.is_satellite":Boolean},le=new TextDecoder,_n=new TextEncoder,xn=(n,e,t)=>{let r="";for(let i=e;i<t;i+=1){if(n[i]>127)return null;r+=String.fromCharCode(n[i])}return r},On=(n,e,t)=>{let r=new Uint8Array(e+t.length);return r.set(n.subarray(0,e)),r.set(t,e),r},y=(n,e=In)=>{let t=new Map;return r=>{let i=t.get(r);if(i!==void 0)return i;t.size>=e&&t.clear();let s=n(r);return t.set(r,s),s}},fe=(n,e)=>{let t=0,r=1;for(;;){let i=n[e];if(e+=1,t+=(i&127)*r,i<128)return[t,e];r*=128}},ce=(n,e,t)=>{let r=[];for(let i=0;i<t;i+=1){let[s,a]=fe(n,e);r.push(s),e=a}return[r,e]},oe=(n,e,t)=>{let r=[];for(let i=0;i<t;i+=1){let s=0n,a=0n;for(;;){let o=n[e];if(e+=1,s|=BigInt(o&127)<<a,o<128)break;a+=7n}r.push(s)}return[r,e]},_=class{count;read;perBlock;perGroup;fanout;width;blocks;keys;offsets;data;tuning;cache;groups;constructor(e,t){let r=new DataView(e.buffer,e.byteOffset,e.byteLength);this.count=t.count,this.read=t.read,this.perBlock=t.block,this.perGroup=t.group,this.fanout=this.perBlock/this.perGroup,this.blocks=r.getUint32(0,!0),this.width=r.getUint32(4,!0),this.offsets=new Uint32Array(this.blocks+1);for(let s=0;s<=this.blocks;s+=1)this.offsets[s]=r.getUint32(8+s*4,!0);let i=8+4*(this.blocks+1);this.keys=[];for(let s=0;s<this.blocks;s+=1){let a=0n;for(let o=0;o<this.width;o+=1)a=a<<8n|BigInt(e[i+s*this.width+o]);this.keys.push(a)}i+=this.width*this.blocks,this.tuning=t.lzma,this.data=e.subarray(i),this.cache=y(s=>this.block(s)),this.groups=y(s=>this.values(s))}stream(e){let t=this.data.subarray(this.offsets[e],this.offsets[e+1]);return new L(t,this.tuning)}held(e){return Math.min(this.perGroup,this.count-e*this.perGroup)}block(e){throw new Error(`no block ${e}`)}values(e){throw new Error(`no group ${e}`)}at(e){throw new Error(`no row ${e}`)}},Kn=(n,e,t,r)=>{let i=0;for(let a=t-1;a>=0;a-=1)i=i*256+n[e+a];let s=2**(t*8);return r&&i>=s/2?i-s:i},j=class extends _{signed;constructor(e,t){super(e,t),this.signed=kn.has(t.encoding)}block(e){return this.stream(e)}value(e,t){let r=e.until(1)[0],i=e.until(1+(t+1)*r);return Kn(i,1+t*r,r,this.signed)}at(e){return this.value(this.cache(Math.floor(e/this.perBlock)),e%this.perBlock)}rows(e){let t=[];for(let r=0;r<this.count;r+=1)this.at(r)===e&&t.push(r);return t}},ue=class extends j{sums=y(e=>({values:[],running:0}));at(e){let t=Math.floor(e/this.perBlock),r=e%this.perBlock,i=this.sums(t),s=this.cache(t);for(;i.values.length<=r;)i.running+=this.value(s,i.values.length),i.values.push(i.running);return i.values[r]}},de=class extends _{block(e){let t=this.stream(e),r=this.count-e*this.perBlock,i=Math.min(this.fanout,Math.ceil(r/this.perGroup))-1,[s,a]=ce(t.until(i*3),0,i),o=[a];for(let l of s)o.push(o[o.length-1]+l);return o.push(Number.POSITIVE_INFINITY),[t,o]}values(e){let t=Math.floor(e/this.fanout),[r,i]=this.cache(t),s=r.until(i[e%this.fanout+1]),a=i[e%this.fanout],o=[],l="",c=null;for(let u=0;u<this.held(e);u+=1){let p=s[a],d=s[a+1];a+=2,d>127&&([d,a]=fe(s,a-1));let f=c===null?xn(s,a,a+d):null;f===null?(c=On(c??_n.encode(l),p,s.subarray(a,a+d)),l=le.decode(c)):l=l.slice(0,p)+f,a+=d,o.push(l)}return o}at(e){if(!e)return"";let t=Math.floor((e-1)/this.perGroup);return this.groups(t)[(e-1)%this.perGroup]}},pe=class extends _{hostBits;big;constructor(e,t){super(e,t),this.big=this.width!==4,this.hostBits=this.big?64:0}block(e){let t=this.stream(e),r=t.until(3+this.fanout*(this.big?22:8)),[i,s]=fe(r,0),a=Math.ceil(i/this.perGroup),[o,l]=oe(r,s,a-1),c=[this.keys[e]];for(let f of o)c.push(c[c.length-1]+f);let[u,p]=ce(r,l,a-1),d=[p];for(let f of u)d.push(d[d.length-1]+f);return d.push(Number.POSITIVE_INFINITY),[c,d,t]}values(e){let t=Math.floor(e/this.fanout),[r,i,s]=this.cache(t),a=s.until(i[e%this.fanout+1]),o=this.held(e),l=r[e%this.fanout],[c,u]=this.big?oe(a,i[e%this.fanout],o-1):ce(a,i[e%this.fanout],o-1);if(!this.big){let f=[Number(l)];for(let h of c)f.push(f[f.length-1]+h);return f}let p=[l>>BigInt(this.hostBits)];for(let f of c)p.push(p[p.length-1]+f);let[d]=oe(a,u,o);return p.map((f,h)=>f<<BigInt(this.hostBits)|d[h])}at(e){let t=Math.floor(e/this.perGroup);return this.groups(t)[e%this.perGroup]}row(e){let t=(this.big,e),r=Z(this.keys,this.big?t:BigInt(t))-1;if(r<0)return null;let[i]=this.cache(r),s=r*this.fanout+Z(i,this.big?t:BigInt(t))-1,a=Z(this.groups(s),t)-1;return a<0?null:s*this.perGroup+a}holds(e){let t=this.row(e);return t!==null&&this.at(t)===e?t:null}},Z=(n,e)=>{let t=0,r=n.length;for(;t<r;){let i=t+r>>1;n[i]<=e?t=i+1:r=i}return t},Vn={plain:[],text:[],degrees:[],coded:[],links:[]},Hn={index:pe,front:de,delta:ue},x=class{head;sections={};reads={};tables={};families;rows={};located;answers=y(e=>this.answer(e));words=null;constructor(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength);if(le.decode(e.subarray(0,G.length))!==G||e[G.length]!==Ze)throw new Error(`not a plevin ${Ze} database`);let i=t.getUint32(G.length+1,!0),s=G.length+5;this.head=JSON.parse(le.decode(e.subarray(s,s+i)));let a=s+i;for(let[o,l]of Object.entries(this.head.sections)){let c=a+l.offset,u=e.subarray(c,c+l.bytes);this.sections[o]=new(Hn[l.encoding]??j)(u,l)}Object.assign(this.reads,Gn);for(let[o,l]of Object.entries(Un)){let c=this.head.vocabularies[l];c&&(this.reads[o]=u=>c[u]??"")}this.plan(),this.families={4:this.family(4),6:this.family(6)},this.located={4:y(o=>this.locateIn(4,o)),6:y(o=>this.locateIn(6,o))}}linked(e,t){return this.rows[e]??=y(r=>this.row(e,r)),this.rows[e](t)}get built(){return this.head.built}get selection(){return this.head.selection}get fields(){return this.head.fields}plan(){for(let[e,t]of Object.entries(this.sections)){let r=e.split(".");if(r.length!==3||r[0]!=="col"&&r[0]!=="link")continue;let[i,s,a]=r;this.tables[s]??={plain:[],text:[],degrees:[],coded:[],links:[]};let o=this.tables[s],l=this.reads[`${s}.${a}`];i==="link"?o.links.push([a,t]):l?o.coded.push([a,t,l]):t.read==="text"?o.text.push([a,t,this.sections.strings]):t.read?o.degrees.push([a,t]):o.plain.push([a,t])}}family(e){let t=`spine.v${e}`,r=`hosts.v${e}`;return{index:this.sections[t]??null,columns:Bn.filter(i=>`${t}.${i}`in this.sections).map(i=>[i,this.sections[`${t}.${i}`],this.reads[i]??null]),hosts:this.sections[r]??null,records:this.sections[`${r}.abuse`]??null}}row(e,t){let r=this.tables[e]??Vn,i={};for(let[s,a]of r.plain)i[s]=a.at(t);for(let[s,a,o]of r.text)i[s]=o.at(a.at(t));for(let[s,a]of r.degrees)i[s]=a.at(t)/wn;for(let[s,a,o]of r.coded)i[s]=o(a.at(t));for(let[s,a]of r.links){let o=a.at(t);o&&(i[s]=this.linked(s,o-1))}return"postal_partial"in i&&(i.postal_partial=String(i.postal).slice(0,i.postal_partial)),i}answer(e){let t=e%2?6:4,r=(e-e%2)/2,i=r%ae,s=(r-i)/ae,a={};for(let[o,l,c]of this.families[t].columns){let u=i&&o==="abuse"?i:l.at(s);Pn.has(o)?u&&(a[o]=this.linked(o,u-1)):(a[je]??={},a[je][o]=c?c(u):u)}return a}locateIn(e,t){let{index:r,hosts:i,records:s}=this.families[e],a=r===null?null:r.row(t);if(a===null)return null;if(i===null||s===null)return[e,a,0];let o=i.holds(t);return[e,a,o===null?0:s.at(o)+1]}locate(e,t){return this.located[t?6:4](e)}rowFor(e,t){let r=this.locate(e,t);return r===null?null:this.answerFor(r)}answerFor(e){let[t,r,i]=e;return this.answers((r*ae+i)*2+(t===6?1:0))}seek(e,t){let r=0,i=e.count;for(;r<i;){let s=r+i>>1;e.at(s)<t?r=s+1:i=s}return r}systemAt(e){let t=this.sections["col.network.asn"];if(!t||e<=0)return-1;let r=this.seek(t,e);return r<t.count&&t.at(r)===e?r:-1}system(e){let t=this.systemAt(e);return t<0?null:this.linked("network",t)}spans(e,t){let r=this.sections[`spine.v${t}`],i=this.sections[`spine.v${t}.network`],s=this.sections[`spine.v${t}.prefix`];if(!r||!i||!s)return[];let a=BigInt(t===6?128:32),o=new Set,l=[];for(let c of i.rows(e+1)){let u=s.at(c),p=a-BigInt(u),d=BigInt(r.at(c))>>p<<p,f=`${d}/${u}`;o.has(f)||(o.add(f),l.push([d,u]))}return l}searchable(){let e=this.sections["col.network.asn"],t=this.sections["col.network.handle"],r=this.sections["link.network.operator"],i=this.sections["link.network.carrier"],s=this.sections["col.operator.company"],a=this.sections["col.operator.peering"],o=this.sections["col.carrier.user_count"],l=this.sections.strings,c=[],u=[0],p=[],d=[];for(let f=this.seek(e,1);f<e.count;f+=1){let h=r.at(f),A=i.at(f),V=h?l.at(s.at(h-1)):"",Y=h?a.at(h-1):0,it=A?o.at(A-1):0,me=`${l.at(t.at(f))} ${V}`.toLowerCase();c.push(me),u.push(u[u.length-1]+me.length+1),p.push(Y+32-Math.clz32(it)),d.push(f)}return{haystack:c.join(`
625
+ `),starts:u,weights:p,rows:d}}find(e,t){let r=e.trim().toLowerCase();if(!r||!("col.network.asn"in this.sections))return[];this.words??=this.searchable();let{haystack:i,starts:s,weights:a,rows:o}=this.words,l=[],c=i.indexOf(r);for(;c>=0&&l.length<Dn;){let u=Z(s,c)-1,p=s[u],d=s[u+1],f=c>p&&!Nn.has(i[c-1])?1:0;l.push([f,-a[u],d-p,u]),c=i.indexOf(r,d)}return l.sort((u,p)=>u[0]-p[0]||u[1]-p[1]||u[2]-p[2]),l.slice(0,t).map(([,,,u])=>this.linked("network",o[u]))}};var Ye=1024,Xn=1n<<128n,m=n=>n?String(n):null,T=n=>n?Number(n):null,K=n=>n==null?null:Number(n),b=(n,e)=>n?.[e],qn=n=>n?{code:T(n.code),label:m(n.label)}:null,er=n=>n?{id:T(n.id),code:m(n.code),name:m(n.name)}:null,tr=n=>n?{id:T(n.id),code:m(n.code),iso:m(n.iso),name:m(n.name),type:m(n.type)}:null,qe=n=>{let e=new WeakMap;return(t,...r)=>{if(!t)return null;let i=r.join(`
626
+ `),s=e.get(t);s||(s=new Map,e.set(t,s));let a=s.get(i);if(a!==void 0)return a;let o=n(t,...r);return s.set(i,o),o}},et=qe(n=>{let e=String(n.type??"");return{id:T(n.id),name:m(n.name),ascii:m(n.ascii),country:m(n.country),population:T(n.population),elevation:T(n.elevation),postal:m(n.postal),postal_partial:m(n.postal_partial),timezone:m(n.timezone),type:m(e),capital:m(ve(e)),region:tr(b(n,"region")),district:er(b(n,"district")),metro:qn(b(n,"metro"))}}),nr=qe((n,e,t)=>{let r=String(n.company??""),i=String(n.website??""),s=String(n.abuse_email??"");return{company:m(r),brand:m(t||De(e,r)),domain:m(Ne(i,s)),website:m(i),category:m(n.category),tier:T(n.tier),peering:T(n.peering),scope:m(n.scope),rir:m(n.rir),since:T(n.since),street:m(n.street),state:m(n.state),postal:m(n.postal),country:m(n.country),abuse_email:m(s),city:et(b(n,"city"))}}),rr=(n,e)=>{if(!n&&!e)return null;let t=n??{};return{user_type:m(e),user_count:T(t.user_count),mcc:T(t.mcc),mnc:T(t.mnc),is_mobile:e==="cellular"}},tt=(n,e,t,r)=>{if(!n&&!e)return null;let i=n??{},[s,a]=we(String(i.service??""),t),o=String(i.name??""),l=String(i.level??"");return{name:m(o),provider:m(o||(s?r:"")),service:m(s),evidence:m(String(i.evidence??"")||a),level:m(l),risk:K(i.risk),network_risk:e?K(e.risk):null,last_seen_days:T(i.last_seen_days),is_malicious:!!l,is_anycast:!!i.is_anycast,is_satellite:!!i.is_satellite,is_hosting_provider:Re.has(t),is_proxy:Ce.has(s),is_public_proxy:s==="public_proxy",is_residential_proxy:s==="residential_proxy",is_anonymous_vpn:s==="anonymous_vpn",is_tor_exit_node:s==="tor_exit_node",is_private_relay:s==="private_relay",is_anonymous:!!s}},ir=n=>{if(!n)return null;let e=et(b(n,"city")),t=e?.country??"",r=e?.timezone??"";return[{lat:K(n.lat),lon:K(n.lon),accuracy:T(n.accuracy),confidence:T(n.confidence),granularity:m(n.granularity),city:e,country:xe(t)},r]},sr=(n,e,t)=>{let r=b(n,"operator");return!r&&!t?null:nr(r??n,e,t)},nt=(n,e)=>{let t=String(n.handle??"");return[{asn:T(n.asn),handle:m(t),rir:m(n.rir),rpki:m(n.rpki),roas:K(n.roas),operator:sr(n,t,String(n.brand??"")),carrier:rr(b(n,"carrier"),e)},T(n.prefix)]},rt=(n,e)=>String(n?.user_type||e?.user_type||""),ar=n=>{let e=b(n,"network"),t=b(e,"abuse"),r=rt(b(n,"abuse"),t),i=e?nt(e,r):null,s=i?.[0].operator?.brand??"";return[ir(b(n,"place")),i,tt(b(n,"abuse"),t,r,s)]},Je=n=>{let e=b(n,"abuse"),t=rt(void 0,e),{asn:r,handle:i,operator:s,carrier:a}=nt(n,t)[0];return{asn:r,handle:i,found:!0,network:{asn:r,handle:i,prefix:null,cidr:null,start:null,end:null,rir:null,rpki:null,roas:null,operator:s,carrier:a},abuse:tt(void 0,e,t,s?.brand??"")}},or=(n,e)=>{let t=0n,r=0n;for(let[i,s]of[...n].sort(([a],[o])=>a<o?-1:1)){let a=i+(1n<<e-BigInt(s));a<=r||(t+=a-(i>r?i:r),r=a)}return t},Qe=(n,e,t)=>{let r=t===6,i=r?128n:32n,s=n.spans(e,t);return s.sort((o,l)=>o[1]-l[1]||(o[0]<l[0]?-1:1)),[s.map(([o,l])=>{let[c,u,p]=q(o,r,l),d=1n<<i-BigInt(l);return{cidr:c,start:u,end:p,version:t,prefix:l,addresses:r?d:Number(d)}}),or(s,i)]},Xe=n=>{let e=String(n).trim().toLowerCase().replace(/^as/,"");return/^\d+$/.test(e)?Number(e):0},lr=(n,e,t)=>{let[r,i]=n,[s,a,o]=i===null?[null,null,null]:q(e,t,i);return{...r,prefix:i,cidr:s,start:a,end:o}},cr=(n,e,t,r,i=null)=>{let[s,a,o]=I(n,e),l=Se(n,e),[c,u]=D(n,e),[p,d,f]=ge(n,e),h=Ae(n,e),[A,V,Y]=t??[null,null,null];return{ip:s,version:e?6:4,number:n,compressed:s,expanded:a,arpa:o,is_global:l===0,is_bogon:l!==0,is_private:(l&1)!==0,is_loopback:(l&2)!==0,is_multicast:(l&4)!==0,is_reserved:(l&8)!==0,is_link_local:(l&16)!==0,is_unique_local:(l&32)!==0,is_documentation:(l&64)!==0,is_shared:(l&128)!==0,is_benchmark:(l&256)!==0,is_ipv4_mapped:c===J,is_6to4:c===Q,is_teredo:c===X,tunnel:c,embedded_ipv4:u,decimal_ipv4:h,as_ipv4_mapped:p,as_6to4:d,as_nat64:f,found:t!==null,place:A===null?null:{...A[0],time:Ke(A[1],r)},network:V===null?null:lr(V,n,e),abuse:Y,dns:i}},O=class{file;kept=new Map;results=new Map;announced=new Map;second=0;constructor(e){this.file=new x(e)}get built(){return this.file.built}get selection(){return this.file.selection}get fields(){return this.file.fields}storedFor(e){let t=e.join(","),r=this.kept.get(t);if(r!==void 0)return r;this.kept.size>=Ye*16&&this.kept.clear();let i=ar(this.file.answerFor(e));return this.kept.set(t,i),i}answerFor(e,t,r){let i=this.file.locate(e,t);return cr(e,t,i&&this.storedFor(i),r)}lookup(e,t){let[r,i]=g(e);if(t)return this.answerFor(r,i,t);let s=Math.floor(Date.now()/1e3);s!==this.second&&(this.second=s,this.results.clear());let a=i?r+Xn:BigInt(r),o=this.results.get(a);if(o!==void 0)return o;this.results.size>=Ye&&this.results.clear();let l=this.answerFor(r,i);return this.results.set(a,l),l}async resolve(e,t){let r=this.lookup(e,t?.moment);if(!t?.dns)return r;let[i,s]=g(e);return{...r,dns:await se(i,s)}}system(e){let t=Xe(e),r=this.file.system(t);return r?Je(r):{asn:t||null,handle:null,found:!1,network:null,abuse:null}}routes(e){let t=Xe(e),r=this.announced.get(t);if(r)return r;let i=this.file.systemAt(t);if(i<0)return{asn:t||null,found:!1,ipv4:[],ipv6:[],ipv4_addresses:0,ipv6_addresses:0n};let[s,a]=Qe(this.file,i,4),[o,l]=Qe(this.file,i,6),c={asn:t,found:!0,ipv4:s,ipv6:o,ipv4_addresses:Number(a),ipv6_addresses:l};return this.announced.set(t,c),c}search(e,t=20){let r=this.system(e);return r.found?[r]:this.file.find(e,t).map(Je)}row(e){let[t,r]=g(e);return this.file.rowFor(t,r)}},Mr=async n=>{if(n instanceof Uint8Array)return new O(n);if(n instanceof ArrayBuffer)return new O(new Uint8Array(n));let e=n instanceof Response?n:await fetch(n);if(!e.ok)throw new Error(`${e.status} reading the database`);return new O(new Uint8Array(await e.arrayBuffer()))};export{x as File,O as Plevin,v as ask,Mn as decompress,We as facts,se as named,Mr as open,yn as publicAddress,k as records};
package/dist/reader.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** The file format: one address in, the stored rows out, codes as words. */
2
- import { type Dictionary } from "./zstd.ts";
2
+ import { Lzma, type Tuning } from "./lzma.ts";
3
3
  export type Row = Record<string, unknown>;
4
4
  export type Found = [number, number, number];
5
5
  type Entry = {
@@ -10,6 +10,7 @@ type Entry = {
10
10
  offset: number;
11
11
  bytes: number;
12
12
  encoding: string;
13
+ lzma: Tuning;
13
14
  };
14
15
  type Head = {
15
16
  built: string;
@@ -19,16 +20,7 @@ type Head = {
19
20
  vocabularies: Record<string, string[]>;
20
21
  };
21
22
  type Read = (value: number) => unknown;
22
- declare class Cache<Key, Held> {
23
- private held;
24
- private build;
25
- private limit;
26
- constructor(build: (key: Key) => Held, limit?: number);
27
- get(key: Key): Held;
28
- clear(): void;
29
- }
30
- /** A block is what the codec packed; a group is all of one a lookup decodes. */
31
- declare class Section {
23
+ declare class Section<Block = unknown, Group = unknown> {
32
24
  readonly count: number;
33
25
  readonly read: string;
34
26
  readonly perBlock: number;
@@ -39,14 +31,14 @@ declare class Section {
39
31
  readonly keys: bigint[];
40
32
  protected readonly offsets: Uint32Array;
41
33
  protected readonly data: Uint8Array;
42
- protected readonly dictionary: Dictionary | null;
43
- protected readonly cache: Cache<number, never>;
44
- protected readonly groups: Cache<number, never>;
34
+ protected readonly tuning: Tuning;
35
+ protected readonly cache: (index: number) => Block;
36
+ protected readonly groups: (group: number) => Group;
45
37
  constructor(view: Uint8Array, entry: Entry);
46
- protected raw(index: number): Uint8Array;
38
+ protected stream(index: number): Lzma;
47
39
  protected held(group: number): number;
48
- protected block(index: number): unknown;
49
- protected values(group: number): unknown;
40
+ protected block(index: number): Block;
41
+ protected values(group: number): Group;
50
42
  at(row: number): unknown;
51
43
  }
52
44
  /** The database in memory, read a group at a time. */
@@ -61,19 +53,14 @@ export declare class File {
61
53
  private readonly answers;
62
54
  private words;
63
55
  constructor(bytes: Uint8Array);
64
- /** A row of a table, kept: a city is read once however many link to it. */
65
56
  private linked;
66
57
  get built(): string;
67
58
  get selection(): string;
68
59
  get fields(): string[];
69
- /** Each table's columns split by how they decode, so a read never branches. */
70
60
  private plan;
71
- /** The index a lookup bisects, the columns read at that row, and the hosts. */
72
61
  private family;
73
62
  private row;
74
- /** The columns the boundary reads, cached by the row rather than its values. */
75
63
  private answer;
76
- /** Which boundary answers, and the record a host overrides it with. */
77
64
  private locateIn;
78
65
  /** Which boundary and host record answer, kept so a repeat never bisects. */
79
66
  locate(value: number | bigint, wide: boolean): Found | null;
@@ -81,7 +68,6 @@ export declare class File {
81
68
  rowFor(value: number | bigint, wide: boolean): Row | null;
82
69
  /** One boundary as the file stores it, shared by every address it covers. */
83
70
  answerFor(found: Found): Row;
84
- /** The first row of a sorted column that is not below the value asked for. */
85
71
  private seek;
86
72
  /** The row one ASN is stored at, or -1 where the file carries no such network. */
87
73
  systemAt(asn: number): number;
@@ -89,7 +75,6 @@ export declare class File {
89
75
  system(asn: number): Row | null;
90
76
  /** Every prefix a network row is announced as, deduped, in the spine's order. */
91
77
  spans(network: number, version: number): [bigint, number][];
92
- /** Every ASN's handle and company in one lowercase text a search scans whole. */
93
78
  private searchable;
94
79
  /** The networks whose handle or company carries the text, widest reach first. */
95
80
  find(text: string, limit: number): Row[];
@@ -1 +1 @@
1
- {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}