@ahmadmoussawi/webdb 0.2.0 → 0.2.2
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.
- package/README.md +8 -8
- package/dist/core/index.d.ts +5 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/js/codecs.c.d.ts +8 -0
- package/dist/core/js/codecs.c.d.ts.map +1 -1
- package/dist/core/js/page.c.d.ts +32 -2
- package/dist/core/js/page.c.d.ts.map +1 -1
- package/dist/core/js/vm.c.d.ts +43 -0
- package/dist/core/js/vm.c.d.ts.map +1 -1
- package/dist/core/js/vm.helpers.c.d.ts +326 -72
- package/dist/core/js/vm.helpers.c.d.ts.map +1 -1
- package/dist/core/wasm/embedded_wasm.d.ts +1 -1
- package/dist/core/wasm/embedded_wasm.d.ts.map +1 -1
- package/dist/core/wasm/wasm_core.d.ts +7 -4
- package/dist/core/wasm/wasm_core.d.ts.map +1 -1
- package/dist/host/api/live_query.d.ts +13 -0
- package/dist/host/api/live_query.d.ts.map +1 -1
- package/dist/host/api/query_builder.d.ts +1 -0
- package/dist/host/api/query_builder.d.ts.map +1 -1
- package/dist/host/api/webdb.d.ts.map +1 -1
- package/dist/host/compiler/compiler.d.ts +1 -0
- package/dist/host/compiler/compiler.d.ts.map +1 -1
- package/dist/host/driver/buffer_pool_driver.d.ts +1 -0
- package/dist/host/driver/buffer_pool_driver.d.ts.map +1 -1
- package/dist/host/driver/transaction_coordinator.d.ts.map +1 -1
- package/dist/shared/c_runtime.d.ts +4 -0
- package/dist/shared/c_runtime.d.ts.map +1 -1
- package/dist/shared/vm_context.d.ts +11 -0
- package/dist/shared/vm_context.d.ts.map +1 -1
- package/dist/webdb.js +11469 -9873
- package/dist/webdb.js.map +1 -1
- package/dist/webdb.umd.cjs +4 -4
- package/dist/webdb.umd.cjs.map +1 -1
- package/package.json +4 -2
package/dist/webdb.umd.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
(function(E,$t){typeof exports=="object"&&typeof module<"u"?$t(exports):typeof define=="function"&&define.amd?define(["exports"],$t):(E=typeof globalThis<"u"?globalThis:E||self,$t(E.WebDB={}))})(this,function(E){"use strict";var kc=Object.defineProperty;var Mc=(E,$t,Rn)=>$t in E?kc(E,$t,{enumerable:!0,configurable:!0,writable:!0,value:Rn}):E[$t]=Rn;var N=(E,$t,Rn)=>Mc(E,typeof $t!="symbol"?$t+"":$t,Rn);const pa=[["TYPE",1],["FLAGS",1],["CELL_COUNT",2],["CONTENT_OFFSET",2],["NEXT_PAGE_ID",4],["FREE_BYTES",2],["CHECKSUM",4]],te=16,Er=0,ya=1,Ta=2,Ca=4,Ir=6,wa=10,Me=12,Sa=[["CHILD_PAGE_ID",4],["ROWID",8]],pr=12,Ua=0,Oa=4,yr=291,Tr=145,ie=64,Pa=[["MAGIC",6],["PAGE_SIZE",2],["FILE_FORMAT_VERSION",2],["MIN_READ_VERSION",2],["TOTAL_PAGES",4],["FREE_PAGE_HEAD",4],["SCHEMA_VERSION",4],["CHANGE_COUNTER",4],["PAGE_CHECKSUM",4],["NEXT_CATALOG_PAGE_ID",4],["NEXT_INDEX_CATALOG_PAGE_ID",4],["RESERVED",60]],ba=100,Ie=0,ei=6,ni=8,si=10,re=12,fe=16,pe=20,ye=24,Te=28,Ge=32,qe=36,Na=40,La=16,Ba=8,ee=16,ii=8,ns=100,ss=2148,Ra=3172,Fa=4,Da=3176,Qa=920,Ce=56,Ae=256,va=[["TABLE_ID",2],["COLUMN_COUNT",2],["ROOT_PAGE_ID",4],["COL_CATALOG_PAGE_ID",4],["NAME",64],["FLAGS",4],["ROW_COUNT_ESTIMATE",4],["AUTO_INC_NEXT",8],["RESERVED",36]],we=128,ka=0,Ma=2,Ga=4,qa=8,Wa=12,Ha=76,Va=80,$a=84,xa=92,Xa=[["INDEX_ID",2],["TABLE_ID",2],["ROOT_PAGE_ID",4],["COLUMN_COUNT",1],["FLAGS",1],["COLUMN_INDICES",16],["COL_DIRECTIONS",8],["NAME",64],["RESERVED",30]],Se=128,Ya=0,Za=2,ja=4,Ka=8,Ja=9,za=10,tl=26,el=34,nl=98,sl=[["PAGE_TYPE",1],["FLAGS",1],["COL_COUNT_IN_PAGE",2],["TABLE_ID",2],["START_COL_INDEX",2],["NEXT_COL_CATALOG_PAGE_ID",4],["PAGE_CHECKSUM",4]],Fn=16,il=0,rl=1,ol=2,al=4,ll=6,cl=8,ul=12,fl=[["TYPE",1],["FLAGS",1],["COL_OFFSET",2],["NAME",64],["RESERVED",4]],ri=72,Al=0,hl=1,gl=2,dl=4,_l=68,ml=4194304,We=1024,El=1024,Ht=2048,Ue=8,Cr=16384,wr=12288,oi=65536,Sr=32768,Ur=4096,Or=61312,He=16777216,Il=[["SLOT_TO_PAGE",4096],["PAGE_TO_SLOT",16384],["DIRTY_MASK",128],["VM_CONTEXT",12288],["RESULT_BUFFER",65536],["BYTECODE",32768],["PAGE_SCRATCHPAD",4096],["ALIGNMENT_PADDING",61312]],is=4194304,Gt=4198400,Pr=4214784,br=4214912,Dn=4227200,Nr=4292736,Lr=4325504,pl=4329600,Br=4390912,yl=21168128;function ai(e,t=He){const n=e*4096,s=e*4+7&-8;let i=16;for(;i<e*2;)i<<=1;const r=i*8,o=Math.ceil(e/8)+7&-8;if(e===We)return{slotsEndOffset:n,slotToPageOffset:is,pageToSlotOffset:Gt,pageToSlotBuckets:Ht,dirtyMaskOffset:Pr,vmContextOffset:br,resultBufferOffset:Dn,bytecodeOffset:Nr,pageScratchpadOffset:Lr,transientArenaOffset:Br};const a=n,c=a+s,l=c+r,u=l+o,d=u+wr,h=d+oi,f=h+Sr,g=f+Ur+Or;return{slotsEndOffset:n,slotToPageOffset:a,pageToSlotOffset:c,pageToSlotBuckets:i,dirtyMaskOffset:l,vmContextOffset:u,resultBufferOffset:d,bytecodeOffset:h,pageScratchpadOffset:f,transientArenaOffset:g}}const Oe=4096,an=4128,Rr=1,Qn=1463897158,rs=1,os=2,as=3,Tl=[["MAGIC",6],["WAL_VERSION",2],["PAGE_SIZE",4],["CHECKPOINT_SEQ",4],["SALT1",4],["SALT2",4],["CHECKSUM",4],["RESERVED",4]],ls=32,li=0,ci=6,ui=8,fi=12,Ai=16,hi=20,gi=24,Fr=28,Cl=[["MAGIC",4],["FRAME_TYPE",2],["FLAGS",2],["TX_ID",4],["PAGE_ID",4],["DB_SIZE_PAGES",4],["FRAME_SEQ",4],["CHECKSUM",4],["RESERVED",4]],Ve=32,di=0,_i=4,mi=6,Ei=8,Ii=12,pi=16,yi=20,Ti=24,Dr=28,cs=1,Qr=1,$e=0,vr=2,Ci=5,us=10,vn=12,fs=13,wl=1280,Sl=8,Ul=64,Ol=16,Pl=7,bl=32,kr=1e4,Qt=1e4;function Mr(){return{pageId:0,rootPageId:0,slotIdx:0,cellIdx:0,rowOffset:0,btreeDepth:0,flags:0}}function Gr(){const e=Array.from({length:16},()=>Mr());return{pc:0,status:L.RUNNING,fault_page_id:0,resultCount:0,resultOffset:0,arenaOffset:0,maxQueryMemory:He,rowsAffected:0,registers:new Array(64).fill(null),cursor:e[0],cursors:e,keyInfos:[],sorters:[],aggregators:[],table:null,tables:void 0,outputColumns:void 0,inSets:[]}}function qr(e,t,n){e.pc=0,e.status=L.RUNNING,e.fault_page_id=0,e.resultCount=0,e.resultOffset=0,e.arenaOffset=0,e.maxQueryMemory=He,e.rowsAffected=0,e.registers.fill(null);for(let s=0;s<e.cursors.length;s++){const i=e.cursors[s];i.pageId=0,i.rootPageId=0,i.slotIdx=0,i.cellIdx=0,i.rowOffset=0,i.btreeDepth=0,i.flags=0}e.cursor=e.cursors[0],e.keyInfos=[],e.sorters=[],e.aggregators=[],e.table=t??null,e.tables=n,e.outputColumns=void 0,e.inSets=[]}var S=(e=>(e[e.NULL=0]="NULL",e[e.INT32=1]="INT32",e[e.INT64=2]="INT64",e[e.FLOAT64=3]="FLOAT64",e[e.TEXT=4]="TEXT",e[e.BLOB=5]="BLOB",e[e.UUID=6]="UUID",e[e.ULID=7]="ULID",e))(S||{}),tt=(e=>(e[e.NONE=0]="NONE",e[e.PRIMARY_KEY=1]="PRIMARY_KEY",e[e.NOT_NULL=2]="NOT_NULL",e[e.INDEXED=4]="INDEXED",e[e.AUTO_INC=8]="AUTO_INC",e))(tt||{}),xe=(e=>(e[e.NONE=0]="NONE",e[e.ACTIVE=1]="ACTIVE",e[e.SYSTEM=2]="SYSTEM",e))(xe||{}),rt=(e=>(e[e.NONE=0]="NONE",e[e.UNIQUE=1]="UNIQUE",e[e.PRIMARY=2]="PRIMARY",e[e.SPATIAL_VECTOR=4]="SPATIAL_VECTOR",e))(rt||{}),m=(e=>(e[e.OP_HALT=0]="OP_HALT",e[e.OP_OPEN_CURSOR=1]="OP_OPEN_CURSOR",e[e.OP_REWIND=2]="OP_REWIND",e[e.OP_NEXT_ROW=3]="OP_NEXT_ROW",e[e.OP_COLUMN_INT=4]="OP_COLUMN_INT",e[e.OP_COLUMN_FLOAT=5]="OP_COLUMN_FLOAT",e[e.OP_COLUMN_TEXT=6]="OP_COLUMN_TEXT",e[e.OP_COLUMN_BLOB=7]="OP_COLUMN_BLOB",e[e.OP_LAST=8]="OP_LAST",e[e.OP_PREV_ROW=9]="OP_PREV_ROW",e[e.OP_COLUMN_UUID=10]="OP_COLUMN_UUID",e[e.OP_COLUMN_ULID=11]="OP_COLUMN_ULID",e[e.OP_OPEN_INDEX=12]="OP_OPEN_INDEX",e[e.OP_INDEX_SEEK_EQ=13]="OP_INDEX_SEEK_EQ",e[e.OP_INDEX_SEEK_GE=14]="OP_INDEX_SEEK_GE",e[e.OP_INDEX_NEXT=15]="OP_INDEX_NEXT",e[e.OP_IS_NULL=16]="OP_IS_NULL",e[e.OP_IS_NOT_NULL=17]="OP_IS_NOT_NULL",e[e.OP_EQ=18]="OP_EQ",e[e.OP_NE=19]="OP_NE",e[e.OP_GT=20]="OP_GT",e[e.OP_GE=21]="OP_GE",e[e.OP_LT=22]="OP_LT",e[e.OP_LE=23]="OP_LE",e[e.OP_JUMP=24]="OP_JUMP",e[e.OP_STR_LIKE=25]="OP_STR_LIKE",e[e.OP_STR_NOT_LIKE=26]="OP_STR_NOT_LIKE",e[e.OP_STR_CONTAINS=27]="OP_STR_CONTAINS",e[e.OP_STR_STARTS_WITH=28]="OP_STR_STARTS_WITH",e[e.OP_STR_ENDS_WITH=29]="OP_STR_ENDS_WITH",e[e.OP_LOAD_BLOB=30]="OP_LOAD_BLOB",e[e.OP_IN=31]="OP_IN",e[e.OP_LOAD_INT=32]="OP_LOAD_INT",e[e.OP_LOAD_FLOAT=33]="OP_LOAD_FLOAT",e[e.OP_LOAD_TEXT=34]="OP_LOAD_TEXT",e[e.OP_LOAD_NULL=35]="OP_LOAD_NULL",e[e.OP_EMIT_ROW=36]="OP_EMIT_ROW",e[e.OP_RESULT_ROW=37]="OP_RESULT_ROW",e[e.OP_OFFSET=38]="OP_OFFSET",e[e.OP_LIMIT=39]="OP_LIMIT",e[e.OP_CALL_UDF=40]="OP_CALL_UDF",e[e.OP_STR_LOWER=41]="OP_STR_LOWER",e[e.OP_STR_UPPER=42]="OP_STR_UPPER",e[e.OP_STR_LENGTH=43]="OP_STR_LENGTH",e[e.OP_STR_SUBSTR=44]="OP_STR_SUBSTR",e[e.OP_STR_TRIM=45]="OP_STR_TRIM",e[e.OP_MATH_ABS=46]="OP_MATH_ABS",e[e.OP_MATH_ROUND=47]="OP_MATH_ROUND",e[e.OP_SORTER_OPEN=48]="OP_SORTER_OPEN",e[e.OP_SORTER_INSERT=49]="OP_SORTER_INSERT",e[e.OP_SORTER_SORT=50]="OP_SORTER_SORT",e[e.OP_SORTER_NEXT=51]="OP_SORTER_NEXT",e[e.OP_MATH_FLOOR=52]="OP_MATH_FLOOR",e[e.OP_MATH_CEIL=53]="OP_MATH_CEIL",e[e.OP_ADD=54]="OP_ADD",e[e.OP_SUB=55]="OP_SUB",e[e.OP_MUL=56]="OP_MUL",e[e.OP_DIV=57]="OP_DIV",e[e.OP_MOD=58]="OP_MOD",e[e.OP_ENTER_SUBQUERY=59]="OP_ENTER_SUBQUERY",e[e.OP_RETURN_SUBQUERY=60]="OP_RETURN_SUBQUERY",e[e.OP_STR_CONCAT=61]="OP_STR_CONCAT",e[e.OP_COALESCE=62]="OP_COALESCE",e[e.OP_COPY=63]="OP_COPY",e[e.OP_AGG_INIT=64]="OP_AGG_INIT",e[e.OP_AGG_STEP=65]="OP_AGG_STEP",e[e.OP_AGG_NEXT=66]="OP_AGG_NEXT",e[e.OP_AGG_FINAL=67]="OP_AGG_FINAL",e[e.OP_REG_IS_NULL=72]="OP_REG_IS_NULL",e[e.OP_REG_IS_NOT_NULL=73]="OP_REG_IS_NOT_NULL",e[e.OP_DELETE_ROW=80]="OP_DELETE_ROW",e[e.OP_UPDATE_FIELD=81]="OP_UPDATE_FIELD",e[e.OP_INSERT_ROW=82]="OP_INSERT_ROW",e))(m||{}),L=(e=>(e[e.RUNNING=0]="RUNNING",e[e.DONE=1]="DONE",e[e.PAGE_FAULT=2]="PAGE_FAULT",e[e.BUFFER_FULL=3]="BUFFER_FULL",e[e.ERROR=4]="ERROR",e[e.TIMEOUT=5]="TIMEOUT",e[e.ARENA_EXHAUSTED=6]="ARENA_EXHAUSTED",e[e.INVALID_BYTECODE=7]="INVALID_BYTECODE",e))(L||{});class Wr extends Error{constructor(t,n=2048){super(`Row size (${t} bytes) exceeds maximum limit of ${n} bytes`),this.name="RowSizeLimitExceededError"}}class As extends Error{constructor(t,n){super(`NOT NULL constraint failed: ${n?n+".":""}${t}`),this.name="NotNullConstraintError"}}class Hr extends Error{constructor(t,n=64){super(`Identifier "${t}" (${t.length} characters) exceeds maximum limit of ${n} characters`),this.name="IdentifierTooLongError"}}class hs extends Error{constructor(t,n){super(n?`Column "${t}" already exists on table "${n}"`:`Column "${t}" already exists`),this.name="ColumnAlreadyExistsError"}}class wi extends Error{constructor(t){super(t),this.name="CannotDropColumnError"}}class he extends Error{constructor(t,n){super(n?`Column "${t}" not found on table "${n}"`:`Column "${t}" not found`),this.name="ColumnNotFoundError"}}class kn extends Error{constructor(t){super(`Table not found: "${t}"`),this.name="TableNotFoundError"}}class gs extends Error{constructor(t){super(`Table already exists: "${t}"`),this.name="TableAlreadyExistsError"}}class Vr extends Error{constructor(t){super(`Index not found: "${t}"`),this.name="IndexNotFoundError"}}class Si extends Error{constructor(t){super(`Index already exists: "${t}"`),this.name="IndexAlreadyExistsError"}}class ln extends Error{constructor(t){super(t),this.name="UniqueConstraintViolationError"}}class Pe extends Error{constructor(t,n,s){super(`Corrupted page detected (pageId: ${t}): stored checksum ${n}${s!==void 0?`, computed checksum ${s}`:""}`),this.pageId=t,this.storedChecksum=n,this.computedChecksum=s,this.name="CorruptPageError"}}class Mn extends Error{constructor(t,n=256){super(`Too many columns: ${t} exceeds maximum limit of ${n} columns`),this.name="TooManyColumnsError"}}class Ui extends Error{constructor(t,n=16){super(`Too many tables: ${t} exceeds maximum limit of ${n} tables on Page 1`),this.name="TooManyTablesError"}}class $r extends Error{constructor(t,n=8){super(`Too many indexes: ${t} exceeds maximum limit of ${n} indexes on Page 1`),this.name="TooManyIndexesError"}}class xr extends Error{constructor(t){super(t),this.name="UnsupportedFormatVersionError"}}class Gn extends Error{constructor(t){super(t),this.name="InvalidDatabaseError"}}class Oi extends Error{constructor(t="Transient query arena exhausted"){super(t),this.name="QueryArenaExhaustedError"}}class ds extends Error{constructor(t,n=16){super(`Too many cursors: ${t} exceeds maximum limit of ${n} cursors`),this.name="TooManyCursorsError"}}class st extends Error{constructor(t,n=64){super(`Too many registers: ${t} exceeds maximum limit of ${n} registers`),this.name="TooManyRegistersError"}}class Xr extends Error{constructor(t,n=7){super(`Subquery nesting depth ${t} exceeds maximum limit of ${n}`),this.name="SubqueryNestingTooDeepError"}}class Yr extends Error{constructor(t="Query execution exceeded maximum cycle limit (TIMEOUT)"){super(t),this.name="QueryTimeoutError"}}class Zr extends Error{constructor(t="Malformed bytecode execution halted (INVALID_BYTECODE)"){super(t),this.name="InvalidBytecodeError"}}class jr extends Error{constructor(t,n=8){super(`Too many order by columns: ${t} exceeds maximum limit of ${n}`),this.name="TooManyOrderByColumnsError"}}class Kr extends Error{constructor(t,n=8){super(`Too many group by columns: ${t} exceeds maximum limit of ${n}`),this.name="TooManyGroupByColumnsError"}}class Pi extends Error{constructor(t){super(`Function "${t}" is neither a native built-in function nor a registered UDF`),this.name="UnknownFunctionError"}}class _s extends Error{constructor(t){super(`Aggregate function "${t}" cannot be used in WHERE clause`),this.name="AggregateNotAllowedInWhereError"}}class ms extends Error{constructor(t="Corrupted WAL file header detected"){super(t),this.name="CorruptWalHeaderError"}}class qn extends Error{constructor(t="Corrupted WAL frame detected"){super(t),this.name="CorruptWalFrameError"}}class Jr{constructor(){N(this,"name","memory");N(this,"isSynchronous",!0);N(this,"pages",new Map);N(this,"walHeader",null);N(this,"walFrames",[])}async readPages(t){return t.map(n=>{const s=this.pages.get(n);return s?new Uint8Array(s):null})}async writePages(t){for(const{pageId:n,data:s}of t){const i=new Uint8Array(s.byteLength);i.set(s),this.pages.set(n,i)}}async flush(){}async truncate(t){for(const n of Array.from(this.pages.keys()))n>t&&this.pages.delete(n)}snapshot(){const t=new Map;for(const[n,s]of this.pages.entries())t.set(n,new Uint8Array(s));return t}restoreSnapshot(t){this.pages.clear();for(const[n,s]of t.entries())this.pages.set(n,new Uint8Array(s))}async readWalHeader(){return this.walHeader?new Uint8Array(this.walHeader):null}async writeWalHeader(t){const n=new Uint8Array(t.byteLength);n.set(t),this.walHeader=n}async readWalFrames(t,n){const s=n!==void 0?t+n:this.walFrames.length;return this.walFrames.slice(t,s).map(r=>new Uint8Array(r))}async appendWalFrames(t){for(const n of t){const s=new Uint8Array(n.byteLength);s.set(n),this.walFrames.push(s)}}async flushWal(){}async truncateWal(t){t===0?(this.walFrames=[],this.walHeader=null):this.walFrames.length=Math.min(this.walFrames.length,t)}async getWalFrameCount(){return this.walFrames.length}async close(){}}class zr{constructor(t){N(this,"name","idb");N(this,"isSynchronous",!1);N(this,"dbName");N(this,"dbPromise",null);this.dbName=`webdb_${t}`}getDb(){return this.dbPromise||(this.dbPromise=new Promise((t,n)=>{const s=globalThis.indexedDB;if(!s){n(new Error("IndexedDB is not available in the current environment"));return}const i=s.open(this.dbName,1);i.onupgradeneeded=()=>{const r=i.result;r.objectStoreNames.contains("pages")||r.createObjectStore("pages"),r.objectStoreNames.contains("wal_frames")||r.createObjectStore("wal_frames"),r.objectStoreNames.contains("wal_meta")||r.createObjectStore("wal_meta")},i.onsuccess=()=>t(i.result),i.onerror=()=>n(i.error)})),this.dbPromise}async readPages(t){if(t.length===0)return[];const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction("pages","readonly"),o=r.objectStore("pages"),a=new Array(t.length).fill(null);for(let c=0;c<t.length;c++){const l=o.get(t[c]);l.onsuccess=()=>{const u=l.result;u&&(a[c]=u instanceof Uint8Array?u:new Uint8Array(u))}}r.oncomplete=()=>s(a),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)})}async writePages(t){if(t.length===0)return;const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction("pages","readwrite"),o=r.objectStore("pages");for(const{pageId:a,data:c}of t){const l=new Uint8Array(c.byteLength);l.set(c),o.put(l,a)}r.oncomplete=()=>s(),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)})}async flush(){}async truncate(t){const n=await this.getDb();return new Promise((s,i)=>{const o=n.transaction("pages","readwrite").objectStore("pages"),a=IDBKeyRange.lowerBound(t,!0),c=o.delete(a);c.onsuccess=()=>s(),c.onerror=()=>i(c.error)})}async readWalHeader(){const t=await this.getDb();return new Promise((n,s)=>{const o=t.transaction("wal_meta","readonly").objectStore("wal_meta").get("header");o.onsuccess=()=>{const a=o.result;n(a?a instanceof Uint8Array?a:new Uint8Array(a):null)},o.onerror=()=>s(o.error)})}async writeWalHeader(t){const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction("wal_meta","readwrite"),o=r.objectStore("wal_meta"),a=new Uint8Array(t.byteLength);a.set(t),o.put(a,"header"),r.oncomplete=()=>s(),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)})}async readWalFrames(t,n){const s=await this.getDb();return new Promise((i,r)=>{const a=s.transaction("wal_frames","readonly").objectStore("wal_frames"),c=[],l=n!==void 0?IDBKeyRange.bound(t,t+n-1):IDBKeyRange.lowerBound(t,!1),u=a.openCursor(l);u.onsuccess=()=>{const d=u.result;if(d){const h=d.value;c.push(h instanceof Uint8Array?h:new Uint8Array(h)),d.continue()}else i(c)},u.onerror=()=>r(u.error)})}async appendWalFrames(t){if(t.length===0)return;const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction("wal_frames","readwrite"),o=r.objectStore("wal_frames"),a=o.count();a.onsuccess=()=>{let c=a.result;for(const l of t){const u=new Uint8Array(l.byteLength);u.set(l),o.put(u,c++)}},r.oncomplete=()=>s(),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)})}async flushWal(){}async truncateWal(t){const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction(["wal_frames","wal_meta"],"readwrite"),o=r.objectStore("wal_frames"),a=r.objectStore("wal_meta");if(t===0)o.clear(),a.delete("header");else{const c=IDBKeyRange.lowerBound(t,!1);o.delete(c)}r.oncomplete=()=>s(),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)})}async getWalFrameCount(){const t=await this.getDb();return new Promise((n,s)=>{const o=t.transaction("wal_frames","readonly").objectStore("wal_frames").count();o.onsuccess=()=>n(o.result),o.onerror=()=>s(o.error)})}async close(){this.dbPromise&&((await this.dbPromise).close(),this.dbPromise=null)}}class to{constructor(t){N(this,"name","opfs");N(this,"isSynchronous");N(this,"dbName");N(this,"rootDir",null);N(this,"dbFileHandle",null);N(this,"walFileHandle",null);N(this,"dbSyncHandle",null);N(this,"walSyncHandle",null);this.dbName=t,this.isSynchronous=typeof globalThis.FileSystemSyncAccessHandle<"u"}async initHandles(){var t;if(!this.rootDir){if(!((t=navigator==null?void 0:navigator.storage)!=null&&t.getDirectory))throw new Error("OPFS (Origin Private File System) is not available in the current environment");if(this.rootDir=await navigator.storage.getDirectory(),this.dbFileHandle=await this.rootDir.getFileHandle(`${this.dbName}.db`,{create:!0}),this.walFileHandle=await this.rootDir.getFileHandle(`${this.dbName}.wal`,{create:!0}),this.isSynchronous)try{this.dbSyncHandle=await this.dbFileHandle.createSyncAccessHandle(),this.walSyncHandle=await this.walFileHandle.createSyncAccessHandle()}catch{}}}async readPages(t){if(t.length===0)return[];if(await this.initHandles(),this.dbSyncHandle){const i=this.dbSyncHandle.getSize();return t.map(r=>{const o=(r-1)*4096;if(o+4096>i)return null;const a=new Uint8Array(4096);return this.dbSyncHandle.read(a,{at:o}),a})}const n=await this.dbFileHandle.getFile(),s=[];for(const i of t){const r=(i-1)*4096;if(r+4096>n.size)s.push(null);else{const a=await n.slice(r,r+4096).arrayBuffer();s.push(new Uint8Array(a))}}return s}async writePages(t){if(t.length===0)return;if(await this.initHandles(),this.dbSyncHandle){for(const{pageId:s,data:i}of t){const r=(s-1)*4096;this.dbSyncHandle.write(i,{at:r})}return}const n=await this.dbFileHandle.createWritable({keepExistingData:!0});for(const{pageId:s,data:i}of t){const r=(s-1)*4096;await n.seek(r),await n.write(i)}await n.close()}async flush(){this.dbSyncHandle&&this.dbSyncHandle.flush()}async truncate(t){await this.initHandles();const n=t*4096;if(this.dbSyncHandle){this.dbSyncHandle.truncate(n);return}const s=await this.dbFileHandle.createWritable({keepExistingData:!0});await s.truncate(n),await s.close()}async readWalHeader(){if(await this.initHandles(),this.walSyncHandle){if(this.walSyncHandle.getSize()<32)return null;const i=new Uint8Array(32);return this.walSyncHandle.read(i,{at:0}),i}const t=await this.walFileHandle.getFile();if(t.size<32)return null;const n=t.slice(0,32);return new Uint8Array(await n.arrayBuffer())}async writeWalHeader(t){if(await this.initHandles(),this.walSyncHandle){this.walSyncHandle.write(t,{at:0});return}const n=await this.walFileHandle.createWritable({keepExistingData:!0});await n.seek(0),await n.write(t),await n.close()}async readWalFrames(t,n){await this.initHandles();const s=[];let i=t;const r=n!==void 0?t+n:1/0;if(this.walSyncHandle){const a=this.walSyncHandle.getSize();for(;i<r;){const c=32+i*4128;if(c>=a)break;const l=Math.min(4128,a-c),u=new Uint8Array(l);this.walSyncHandle.read(u,{at:c}),s.push(u),i++}return s}const o=await this.walFileHandle.getFile();for(;i<r;){const a=32+i*4128;if(a>=o.size)break;const c=Math.min(4128,o.size-a),l=o.slice(a,a+c);s.push(new Uint8Array(await l.arrayBuffer())),i++}return s}async appendWalFrames(t){if(await this.initHandles(),this.walSyncHandle){let i=Math.max(32,this.walSyncHandle.getSize());for(const r of t)this.walSyncHandle.write(r,{at:i}),i+=r.byteLength;return}const n=await this.walFileHandle.getFile(),s=await this.walFileHandle.createWritable({keepExistingData:!0});await s.seek(Math.max(32,n.size));for(const i of t)await s.write(i);await s.close()}async flushWal(){this.walSyncHandle&&this.walSyncHandle.flush()}async truncateWal(t){await this.initHandles();const n=t===0?0:32+t*4128;if(this.walSyncHandle){this.walSyncHandle.truncate(n);return}const s=await this.walFileHandle.createWritable({keepExistingData:t>0});await s.truncate(n),await s.close()}async getWalFrameCount(){await this.initHandles();let t=0;return this.walSyncHandle?t=this.walSyncHandle.getSize():t=(await this.walFileHandle.getFile()).size,t<=32?0:Math.ceil((t-32)/4128)}async close(){this.dbSyncHandle&&(this.dbSyncHandle.close(),this.dbSyncHandle=null),this.walSyncHandle&&(this.walSyncHandle.close(),this.walSyncHandle=null),this.dbFileHandle=null,this.walFileHandle=null,this.rootDir=null}}const cn=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;cn[e]=t>>>0}function bi(e,t=0,n=e.byteLength-t){let s=4294967295;const i=t+n;for(let r=t;r<i;r++)s=cn[(s^e[r])&255]^s>>>8;return(s^4294967295)>>>0}function be(e){let t=4294967295;for(let n=0;n<4096;n++){const s=n>=12&&n<=15?0:e[n];t=cn[(t^s)&255]^t>>>8}return(t^4294967295)>>>0}function Ni(e){let t=4294967295;for(let n=0;n<4096;n++){const s=n>=28&&n<=31?0:e[n];t=cn[(t^s)&255]^t>>>8}return(t^4294967295)>>>0}function Es(e){let t=4294967295;for(let s=0;s<24;s++)t=cn[(t^e[s])&255]^t>>>8;const n=Math.min(e.byteLength,4128);for(let s=32;s<n;s++)t=cn[(t^e[s])&255]^t>>>8;return(t^4294967295)>>>0}function un(e,t,n,s,i){const r=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength),o=n instanceof Uint8Array?n:new Uint8Array(n.buffer,n.byteOffset,n.byteLength);r.set(o.subarray(s,s+i),t)}function xt(e,t,n,s){(e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength)).fill(n&255,t,t+s)}function Nl(e,t,n,s,i){const r=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength),o=n instanceof Uint8Array?n:new Uint8Array(n.buffer,n.byteOffset,n.byteLength);for(let a=0;a<i;a++){const c=r[t+a]-o[s+a];if(c!==0)return c}return 0}function Is(e){return e.length}function eo(e,t){return e instanceof Uint8Array?e[t]:e.getUint8(t)}function Ll(e,t,n){e instanceof Uint8Array?e[t]=n&255:e.setUint8(t,n&255)}function ps(e,t){return e.getUint16(t,!0)}function ys(e,t,n){e.setUint16(t,n&65535,!0)}function yt(e,t){return e.getUint32(t,!0)}function Tt(e,t,n){e.setUint32(t,n>>>0,!0)}function Bl(e,t){return e.getInt32(t,!0)}function Rl(e,t,n){e.setInt32(t,n|0,!0)}function Fl(e,t){return e.getFloat64(t,!0)}function Dl(e,t,n){e.setFloat64(t,n,!0)}function Ql(e,t){return e.getBigUint64(t,!0)}function vl(e,t,n){e.setBigUint64(t,n,!0)}function kl(e,t){return e.getBigInt64(t,!0)}function Ml(e,t,n){e.setBigInt64(t,n,!0)}function no(e,t,n){return n!==void 0?e[t+(n>>3)]&1<<(n&7)?1:0:e[t>>3]&1<<(t&7)?1:0}function so(e,t,n){n!==void 0?e[t+(n>>3)]|=1<<(n&7):e[t>>3]|=1<<(t&7)}function io(e,t,n){n!==void 0?e[t+(n>>3)]&=~(1<<(n&7)):e[t>>3]&=~(1<<(t&7))}function ro(e,t){if(!e)throw new Error(`Assertion failed: ${t}`)}class Li{constructor(t){N(this,"vfs");N(this,"buffer");N(this,"uint8");N(this,"view");N(this,"in_flight_flushes",new Map);N(this,"in_flight_reads",new Map);N(this,"coordinator",null);if(!t.vfs)throw new Error("Io requires a valid IVfsAdapter instance");if(!t.memory)throw new Error("Io requires a valid memory buffer or WebAssembly.Memory");this.vfs=t.vfs,this.buffer=t.memory instanceof WebAssembly.Memory?t.memory.buffer:t.memory,this.uint8=new Uint8Array(this.buffer),this.view=new DataView(this.buffer)}setTransactionCoordinator(t){this.coordinator=t}isInTransaction(){return this.coordinator?this.coordinator.isInTransaction():!1}stampSlotChecksum(t,n){const s=t*4096,i=this.uint8.subarray(s,s+4096);if(n===1){const r=Ni(i);Tt(this.view,s+Te,r)}else{const r=be(i);Tt(this.view,s+Me,r)}}async readSlot(t,n){if(n<=0)throw new Error(`Invalid page ID: ${n}. Page IDs must be positive integers.`);if(this.coordinator&&this.coordinator.hasSpilledPage(n)){const o=t*4096,a=this.coordinator.getSpilledPage(n);this.uint8.set(a,o);return}const s=this.in_flight_flushes.get(n);s&&await s;const i=this.in_flight_reads.get(n);if(i){await i;return}const r=(async()=>{const[o]=await this.vfs.readPages([n]),a=t*4096;if(o){if(o.byteLength!==4096)throw new Pe(n,`Unexpected page byte length: ${o.byteLength}, expected 4096`);const c=n===1?Te:Me,l=yt(new DataView(o.buffer,o.byteOffset),c);if(l!==0){const u=n===1?Ni(o):be(o);if(u!==l)throw new Pe(n,l,u)}this.uint8.set(o,a)}else this.uint8.fill(0,a,a+4096)})();this.in_flight_reads.set(n,r);try{await r}finally{this.in_flight_reads.delete(n)}}async writeSlot(t,n){if(n<=0)throw new Error(`Invalid page ID: ${n}. Page IDs must be positive integers.`);const s=this.in_flight_flushes.get(n);if(s){await s;return}const i=t*4096,r=this.uint8.subarray(i,i+4096);this.stampSlotChecksum(t,n);const o=r.slice();this.coordinator&&this.coordinator.onDirectPageWrite(n,o);const a=this.vfs.writePages([{pageId:n,data:o}]);this.in_flight_flushes.set(n,a);try{await a}finally{this.in_flight_flushes.delete(n)}}async spillOrWriteSlot(t,n){this.coordinator&&this.coordinator.isInTransaction()?await this.coordinator.spillUncommittedSlot(t,n):await this.writeSlot(t,n)}async resolvePageFault(t,n,s){if(s>0&&(this.coordinator&&this.coordinator.isInTransaction()?await this.coordinator.spillUncommittedSlot(t,s):await this.writeSlot(t,s)),this.coordinator&&this.coordinator.hasSpilledPage(n)){const i=t*4096,r=this.coordinator.getSpilledPage(n);this.uint8.set(r,i)}else await this.readSlot(t,n)}async flush(){var t,n;await((n=(t=this.vfs).flush)==null?void 0:n.call(t))}}const Bi=new Uint8Array([87,69,66,87,65,76]);function Ts(e={}){const t=new Uint8Array(ls),n=new DataView(t.buffer,t.byteOffset,t.byteLength);t.set(Bi,li),ys(n,ci,e.walVersion??Rr),Tt(n,ui,e.pageSize??Oe),Tt(n,fi,e.checkpointSeq??0);const s=e.salt1??Math.floor(Math.random()*4294967295)>>>0;Tt(n,Ai,s);const i=e.salt2??Math.floor(Math.random()*4294967295)>>>0;Tt(n,hi,i);const r=e.checksum??bi(t,0,24);return Tt(n,gi,r),Tt(n,Fr,0),t}function Cs(e,t=!0){if(e.byteLength<ls)throw new ms(`Truncated WAL file header: expected at least ${ls} bytes, received ${e.byteLength}`);for(let l=0;l<6;l++)if(e[li+l]!==Bi[l])throw new ms('Invalid WAL file header magic identifier (expected "WEBWAL")');const n=new DataView(e.buffer,e.byteOffset,e.byteLength),s=ps(n,ci),i=yt(n,ui),r=yt(n,fi),o=yt(n,Ai),a=yt(n,hi),c=yt(n,gi);if(t){const l=bi(e,0,24);if(c!==l)throw new ms(`WAL file header CRC32 checksum mismatch: stored ${c}, computed ${l}`)}return{walVersion:s,pageSize:i,checkpointSeq:r,salt1:o,salt2:a,checksum:c}}function ws(e,t){const n=new Uint8Array(an),s=new DataView(n.buffer,n.byteOffset,n.byteLength);Tt(s,di,e.magic??Qn),ys(s,_i,e.frameType),ys(s,mi,e.flags??0),Tt(s,Ei,e.txId),Tt(s,Ii,e.pageId),Tt(s,pi,e.dbSizePages??0),Tt(s,yi,e.frameSeq),Tt(s,Dr,0),t&&n.set(t.subarray(0,Oe),Ve);const i=e.checksum??Es(n);return Tt(s,Ti,i),n}function Ri(e){if(e.byteLength<Ve)throw new qn(`Truncated WAL frame header: expected at least ${Ve} bytes, received ${e.byteLength}`);const t=new DataView(e.buffer,e.byteOffset,e.byteLength);return{magic:yt(t,di),frameType:ps(t,_i),flags:ps(t,mi),txId:yt(t,Ei),pageId:yt(t,Ii),dbSizePages:yt(t,pi),frameSeq:yt(t,yi),checksum:yt(t,Ti)}}function Fi(e){if(e.byteLength<an)return{valid:!1,reason:"truncated"};const t=Ri(e);if(t.magic!==Qn)return{valid:!1,reason:"magic_mismatch",header:t};const n=Es(e);return t.checksum!==n?{valid:!1,reason:"checksum_mismatch",header:t}:{valid:!0,header:t}}function Gl(e,t=!0){if(e.byteLength<an)throw new qn(`Truncated WAL frame: expected ${an} bytes, received ${e.byteLength}`);const n=Ri(e);if(n.magic!==Qn)throw new qn(`Invalid WAL frame magic: expected 0x${Qn.toString(16)}, got 0x${n.magic.toString(16)}`);if(t){const i=Es(e);if(n.checksum!==i)throw new qn(`WAL frame CRC32 checksum mismatch: stored ${n.checksum}, computed ${i}`)}const s=e.subarray(Ve,an);return{header:n,pageData:s}}const oo=new TextDecoder,ao="0123456789abcdef",Di="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function ql(e){return e>=48&&e<=57?e-48:e>=97&&e<=102?e-97+10:e>=65&&e<=70?e-65+10:-1}function Qi(e){if(e>=48&&e<=57)return e-48;switch(e>=97&&e<=122&&(e=e-32),e){case 65:return 10;case 66:return 11;case 67:return 12;case 68:return 13;case 69:return 14;case 70:return 15;case 71:return 16;case 72:return 17;case 74:return 18;case 75:return 19;case 77:return 20;case 78:return 21;case 80:return 22;case 81:return 23;case 82:return 24;case 83:return 25;case 84:return 26;case 86:return 27;case 87:return 28;case 88:return 29;case 89:return 30;case 90:return 31;case 73:case 76:return 1;case 79:return 0;default:return-1}}function Wl(e,t,n){let s=0,i=-1;for(let r=0;r<Is(e);r++){const o=e.charCodeAt(r);if(o!==45){if(s>=32)return-1;const a=ql(o);if(a<0)return-1;s%2===0?i=a:t[n+(s>>1)]=i<<4|a,s++}}return s!==32?-1:0}function Hl(e,t,n){let s=0;for(let i=0;i<16;i++){(i===4||i===6||i===8||i===10)&&(n[s++]=45);const r=e[t+i];n[s++]=ao.charCodeAt(r>>4&15),n[s++]=ao.charCodeAt(r&15)}n[s]=0}class fn{static encode(t,n,s=0){if(Wl(t,n,s)!==0)throw new Error(`Invalid UUID format: "${t}" (must be 36 characters with hyphens)`)}static decode(t,n=0){const s=new Uint8Array(37);return Hl(t,n,s),oo.decode(s.subarray(0,36))}}function Vl(e,t,n){if(Is(e)!==26)return-1;let s=0n;for(let o=0;o<10;o++){const a=Qi(e.charCodeAt(o));if(a<0)return-1;s=s<<5n|BigInt(a)}t[n+0]=Number(s>>40n&0xffn),t[n+1]=Number(s>>32n&0xffn),t[n+2]=Number(s>>24n&0xffn),t[n+3]=Number(s>>16n&0xffn),t[n+4]=Number(s>>8n&0xffn),t[n+5]=Number(s&0xffn);let i=0n;for(let o=10;o<18;o++){const a=Qi(e.charCodeAt(o));if(a<0)return-1;i=i<<5n|BigInt(a)}let r=0n;for(let o=18;o<26;o++){const a=Qi(e.charCodeAt(o));if(a<0)return-1;r=r<<5n|BigInt(a)}for(let o=0;o<5;o++)t[n+6+o]=Number(i>>BigInt((4-o)*8)&0xffn),t[n+11+o]=Number(r>>BigInt((4-o)*8)&0xffn);return 0}function $l(e,t,n){let s=0n;for(let o=0;o<6;o++)s=s<<8n|BigInt(e[t+o]);for(let o=9;o>=0;o--)n[o]=Di.charCodeAt(Number(s%32n)),s/=32n;let i=0n;for(let o=0;o<5;o++)i=i<<8n|BigInt(e[t+6+o]);let r=0n;for(let o=0;o<5;o++)r=r<<8n|BigInt(e[t+11+o]);for(let o=25;o>=18;o--)n[o]=Di.charCodeAt(Number(r&31n)),r>>=5n;for(let o=17;o>=10;o--)n[o]=Di.charCodeAt(Number(i&31n)),i>>=5n;n[26]=0}class An{static encode(t,n,s=0){if(Vl(t,n,s)!==0)throw new Error(`Invalid ULID length: "${t}" (must be 26 Crockford Base32 characters)`)}static decode(t,n=0){const s=new Uint8Array(27);return $l(t,n,s),oo.decode(s.subarray(0,26))}}const vi=new TextEncoder,Ss=new TextDecoder;function Wn(e,t,n=fs,s=0){e.setUint8(t+0,n),e.setUint8(t+1,0),e.setUint16(t+2,0,!0),e.setUint16(t+4,4096,!0),e.setUint32(t+6,s,!0),e.setUint16(t+10,0,!0),e.setUint32(t+Me,0,!0)}function lo(e,t,n=0){e.setUint8(t+0,$e),e.setUint8(t+1,0),e.setUint16(t+2,0,!0),e.setUint16(t+4,0,!0),e.setUint32(t+6,n,!0),e.setUint16(t+10,0,!0),e.setUint32(t+Me,0,!0)}function Xe(e,t){return e.getUint8(t+0)}function xl(e,t,n){e.setUint8(t+0,n)}function ft(e,t){return e.getUint16(t+2,!0)}function Ye(e,t,n){e.setUint16(t+2,n,!0)}function Ze(e,t){return e.getUint16(t+4,!0)}function je(e,t,n){e.setUint16(t+4,n,!0)}function Ut(e,t){return e.getUint32(t+6,!0)}function Us(e,t,n){e.setUint32(t+6,n,!0)}function Ne(e,t){return e.getUint16(t+10,!0)}function Ke(e,t,n){e.setUint16(t+10,n,!0)}function Xl(e,t){return e.getUint32(t+Me,!0)}function Yl(e,t,n){e.setUint32(t+Me,n,!0)}function at(e,t,n){const s=t+te+n*2;return e.getUint16(s,!0)}function hn(e,t,n,s){const i=t+te+n*2;e.setUint16(i,s,!0)}function Os(e,t){const n=ft(e,t),s=Ze(e,t),i=te+n*2;return s-i}function co(e,t){return Os(e,t)+Ne(e,t)}function Hn(e,t,n=0,s){const i=ft(e,t);if(i===0){je(e,t,4096),Ke(e,t,0);return}let r=e,o=n;if(n===0||n===t||n+4096>e.byteLength){const c=new Uint8Array(4096);r=new DataView(c.buffer),o=0}un(r,o,e,t,te);let a=4096;for(let c=0;c<i;c++){let l=0,u=e,d=0;if(s&&c===s.cell_idx)l=s.row_bytes.byteLength,u=s.row_bytes,d=0;else{const h=at(e,t,c);Xe(e,t)===us?l=2+e.getUint16(t+h,!0)+8:l=Ps(e,t+h),u=e,d=t+h}a=a-l,un(r,o+a,u,d,l),hn(r,o,c,a)}je(r,o,a),Ke(r,o,0),un(e,t,r,o,4096)}function Ps(e,t){return e.getUint16(t+1,!0)}function gn(e,t,n,s){const i=ft(e,t),r=Ze(e,t),o=n.byteLength+2,a=te+i*2,c=r-a,l=c+Ne(e,t);if(o>l)return-1;o>c&&Hn(e,t,s);const u=Ze(e,t),d=ft(e,t),h=u-n.byteLength,f=e.byteOffset+t+h;return new Uint8Array(e.buffer).set(n,f),hn(e,t,d,h),Ye(e,t,d+1),je(e,t,h),d}function uo(e,t,n){const s=ft(e,t);if(n>=s)return;const i=at(e,t,n),r=Ps(e,t+i),o=t+te,a=o+(n+1)*2,c=o+n*2,l=(s-1-n)*2;l>0&&un(e,c,e,a,l),Ye(e,t,s-1),Ke(e,t,Ne(e,t)+r)}function ki(e,t,n,s,i){const r=ft(e,t);if(n<0||n>=r)throw new Error(`Invalid cell index ${n} for update`);const o=at(e,t,n),a=Ps(e,t+o),c=s.byteLength,l=new Uint8Array(e.buffer);if(c<=a)return l.set(s,e.byteOffset+t+o),c<a&&Ke(e,t,Ne(e,t)+(a-c)),!0;const u=co(e,t),d=c-a;if(u>=d){if(Os(e,t)<c)return Hn(e,t,i,{cell_idx:n,row_bytes:s}),!0;Ke(e,t,Ne(e,t)+a);const g=Ze(e,t)-c;return l.set(s,e.byteOffset+t+g),hn(e,t,n,g),je(e,t,g),!0}return!1}function Zl(e){const t=Array.isArray(e)?e:e.columns,n=Math.ceil(t.length/8);let s=0,i=0;for(let r=0;r<t.length;r++){const o=t[r];o.type===S.INT32?s+=4:o.type===S.INT64||o.type===S.FLOAT64?s+=8:o.type===S.UUID||o.type===S.ULID?s+=16:(o.type===S.TEXT||o.type===S.BLOB)&&i++}return{null_bitmap_bytes:n,fixed_slice_size:s,var_col_count:i}}function bs(e,t){const n=Array.isArray(e)?e:e.columns,s=n.length;if(s>Ae)throw new Mn(s,Ae);const i=Math.ceil(s/8),r=new Uint8Array(i);for(let p=0;p<s;p++){const y=n[p],T=t[y.name];if(T==null){if(y.flags&tt.NOT_NULL)throw new As(y.name);const w=p>>3,C=1<<(p&7);r[w]|=C}}let o=0;for(let p=0;p<s;p++){const y=n[p];if(!((r[p>>3]&1<<(p&7))!==0))switch(y.type){case S.INT32:o+=4;break;case S.INT64:case S.FLOAT64:o+=8;break;case S.UUID:case S.ULID:o+=16;break}}const a=[];for(let p=0;p<s;p++){const y=n[p];if(y.type===S.TEXT||y.type===S.BLOB)if((r[p>>3]&1<<(p&7))!==0)a.push({col_idx:p,col:y,payload:null});else{const O=t[y.name];let w;y.type===S.TEXT?w=vi.encode(String(O??"")):w=O instanceof Uint8Array?O:new Uint8Array(O),a.push({col_idx:p,col:y,payload:w})}}const c=a.length*4,l=3+i+o+c;let u=0;for(let p=0;p<a.length;p++){const y=a[p];y.payload&&(u+=y.payload.byteLength)}const d=l+u;if(d>2048)throw new Wr(d,2048);const h=new Uint8Array(d),f=new DataView(h.buffer);f.setUint8(0,1),f.setUint16(1,d,!0),h.set(r,3);let g=3+i;for(let p=0;p<s;p++){const y=n[p];if(!((r[p>>3]&1<<(p&7))!==0)){const O=t[y.name];switch(y.type){case S.INT32:f.setInt32(g,Number(O),!0),g+=4;break;case S.INT64:f.setBigInt64(g,BigInt(O),!0),g+=8;break;case S.FLOAT64:f.setFloat64(g,Number(O),!0),g+=8;break;case S.UUID:fn.encode(String(O),h,g),g+=16;break;case S.ULID:An.encode(String(O),h,g),g+=16;break}}}let _=g,I=l;for(let p=0;p<a.length;p++){const y=a[p];y.payload===null?(f.setUint16(_,0,!0),f.setUint16(_+2,0,!0)):(f.setUint16(_,I,!0),f.setUint16(_+2,y.payload.byteLength,!0),h.set(y.payload,I),I+=y.payload.byteLength),_+=4}return h}function Je(e,t,n){let s,i,r;if(e instanceof DataView){i=e,r=t;const g=n;s=Array.isArray(g)?g:g.columns}else s=Array.isArray(e)?e:e.columns,i=t,r=n;const o={},a=s.length,c=Math.ceil(a/8),l=new Uint8Array(i.buffer,i.byteOffset+r+3,c);let u=r+3+c,d=0;const h=u;for(let g=0;g<a;g++){const _=s[g];if(!((l[g>>3]&1<<(g&7))!==0))switch(_.type){case S.INT32:u+=4;break;case S.INT64:case S.FLOAT64:u+=8;break;case S.UUID:case S.ULID:u+=16;break}}const f=u;u=h;for(let g=0;g<a;g++){const _=s[g];if((l[g>>3]&1<<(g&7))!==0){o[_.name]=null,(_.type===S.TEXT||_.type===S.BLOB)&&d++;continue}switch(_.type){case S.INT32:o[_.name]=i.getInt32(u,!0),u+=4;break;case S.INT64:o[_.name]=i.getBigInt64(u,!0),u+=8;break;case S.FLOAT64:o[_.name]=i.getFloat64(u,!0),u+=8;break;case S.UUID:{const p=new Uint8Array(i.buffer,i.byteOffset+u,16);o[_.name]=fn.decode(p,0),u+=16;break}case S.ULID:{const p=new Uint8Array(i.buffer,i.byteOffset+u,16);o[_.name]=An.decode(p,0),u+=16;break}case S.TEXT:{const p=f+d*4,y=i.getUint16(p,!0),T=i.getUint16(p+2,!0),O=i.byteOffset+r+y,w=new Uint8Array(i.buffer,O,T);o[_.name]=Ss.decode(w),d++;break}case S.BLOB:{const p=f+d*4,y=i.getUint16(p,!0),T=i.getUint16(p+2,!0),O=i.byteOffset+r+y,w=new Uint8Array(T);w.set(new Uint8Array(i.buffer,O,T)),o[_.name]=w,d++;break}}}return o}function fo(e,t,n=0){Wn(e,t,Ci,n)}function Ns(e,t){return e.getUint32(t+6,!0)}function Ao(e,t,n){e.setUint32(t+6,n,!0)}function ho(e,t,n,s){const i=ft(e,t);if(i>=yr)return-1;const o=Ze(e,t)-pr,a=t+o;return e.setUint32(a,n,!0),e.setBigInt64(a+4,s,!0),hn(e,t,i,o),Ye(e,t,i+1),je(e,t,o),i+1}function jl(e,t,n){const s=ft(e,t);if(s===0)return Ns(e,t);let i=0,r=s-1,o=-1;for(;i<=r;){const a=i+r>>1,c=at(e,t,a),l=e.getBigInt64(t+c+4,!0);n<=l?(o=e.getUint32(t+c,!0),r=a-1):i=a+1}return o!==-1?o:Ns(e,t)}function Kl(e,t,n){const s=ft(e,t),i=Tr;if(s<=i)throw new Error(`Cannot split interior page with only ${s} cells`);const r=at(e,t,i),o=e.getUint32(t+r,!0),a=e.getBigInt64(t+r+4,!0),c=Ns(e,t);fo(e,n,c);for(let l=i+1;l<s;l++){const u=at(e,t,l),d=e.getUint32(t+u,!0),h=e.getBigInt64(t+u+4,!0);ho(e,n,d,h)}return Ao(e,t,o),Ye(e,t,i),{median_rowid:a,promoted_child_page_id:o,right_child_page_id:c}}function Ls(e,t,n=0){Wn(e,t,us,n)}function Bs(e,t,n,s,i,r){if(e!==s)return e-s;if(e===S.NULL)return n<r?-1:n>r?1:0;let o=0;if(e===S.INT32||e===S.INT64||e===S.FLOAT64){const a=typeof t=="bigint"?Number(t):t,c=typeof i=="bigint"?Number(i):i;o=a<c?-1:a>c?1:0}else if(e===S.TEXT||e===S.UUID||e===S.ULID){const a=String(t),c=String(i);o=a<c?-1:a>c?1:0}else if(e===S.BLOB){const a=t,c=i,l=Math.min(a.length,c.length);for(let u=0;u<l;u++)if(a[u]!==c[u]){o=a[u]<c[u]?-1:1;break}o===0&&(o=a.length-c.length)}return o!==0?o:n<r?-1:n>r?1:0}function Mi(e,t,n,s){const i=new Uint8Array(e.buffer,e.byteOffset+t,n);return n===0?{cellType:S.NULL,cellVal:null}:s===S.TEXT?n===4&&(i[2]===0&&i[3]===0||i[2]===255&&i[3]===255)?{cellType:S.INT32,cellVal:new DataView(i.buffer,i.byteOffset).getInt32(0,!0)}:n===2&&i[0]<32&&i[1]<32?{cellType:S.BLOB,cellVal:i}:{cellType:S.TEXT,cellVal:Ss.decode(i)}:n===2?{cellType:S.BLOB,cellVal:i}:n===4?{cellType:S.INT32,cellVal:new DataView(i.buffer,i.byteOffset).getInt32(0,!0)}:s===S.UUID&&n===16?{cellType:S.UUID,cellVal:fn.decode(i,0)}:s===S.ULID&&n===16?{cellType:S.ULID,cellVal:An.decode(i,0)}:s===S.FLOAT64&&n===8?{cellType:S.FLOAT64,cellVal:new DataView(i.buffer,i.byteOffset).getFloat64(0,!0)}:s===S.INT64&&n===8?{cellType:S.INT64,cellVal:new DataView(i.buffer,i.byteOffset).getBigInt64(0,!0)}:s===S.BLOB?n===5||n===6?{cellType:S.TEXT,cellVal:Ss.decode(i)}:{cellType:S.BLOB,cellVal:i}:{cellType:S.TEXT,cellVal:Ss.decode(i)}}function Gi(e,t,n,s,i,r){let o;n===S.NULL||s===null||s===void 0?o=new Uint8Array(0):n===S.INT32?(o=new Uint8Array(4),new DataView(o.buffer).setInt32(0,Number(s),!0)):n===S.INT64?(o=new Uint8Array(8),new DataView(o.buffer).setBigInt64(0,BigInt(s),!0)):n===S.FLOAT64?(o=new Uint8Array(8),new DataView(o.buffer).setFloat64(0,Number(s),!0)):n===S.UUID?(o=new Uint8Array(16),fn.encode(String(s),o,0)):n===S.ULID?(o=new Uint8Array(16),An.encode(String(s),o,0)):n===S.TEXT?o=vi.encode(String(s)):o=s instanceof Uint8Array?s:new Uint8Array(s);const a=2+o.byteLength+8,c=a+2,l=ft(e,t),u=Os(e,t),d=u+Ne(e,t);if(c>d)return-1;c>u&&Hn(e,t,r);const f=Ze(e,t)-a,g=t+f,_=e.byteOffset+g;e.setUint16(g,o.byteLength,!0),new Uint8Array(e.buffer).set(o,_+2),e.setBigInt64(g+2+o.byteLength,i,!0);let I=0,p=l-1,y=l;for(;I<=p;){const U=I+p>>1,Q=at(e,t,U),R=e.getUint16(t+Q,!0),A=e.getBigInt64(t+Q+2+R,!0),{cellType:b,cellVal:k}=Mi(e,t+Q+2,R,n);Bs(n,s,i,b,k,A)<0?(y=U,p=U-1):I=U+1}const T=new Uint8Array(e.buffer),w=e.byteOffset+t+te,C=w+y*2,B=w+(y+1)*2,P=(l-y)*2;return P>0&&T.copyWithin(B,C,C+P),hn(e,t,y,f),Ye(e,t,l+1),je(e,t,f),y}function go(e,t,n){const s=ft(e,t);if(n<0||n>=s)return;const i=at(e,t,n),o=2+e.getUint16(t+i,!0)+8,a=t+te,c=a+(n+1)*2,l=a+n*2,u=(s-1-n)*2;u>0&&un(e,l,e,c,u),Ye(e,t,s-1),Ke(e,t,Ne(e,t)+o)}function Vn(e,t,n,s,i){const r=ft(e,t);let o=0,a=r-1;for(;o<=a;){const c=o+a>>1,l=at(e,t,c),u=e.getUint16(t+l,!0),d=e.getBigInt64(t+l+2+u,!0),{cellType:h,cellVal:f}=Mi(e,t+l+2,u,n),_=Bs(n,s,i!==void 0?i:d,h,f,d);if(_===0){if(i===void 0){let I=c;for(;I>0;){const p=I-1,y=at(e,t,p),T=e.getUint16(t+y,!0),{cellType:O,cellVal:w}=Mi(e,t+y+2,T,n);if(Bs(n,s,0n,O,w,0n)===0)I=p;else break}return{found:!0,slot_idx:I}}return{found:!0,slot_idx:c}}else _<0?a=c-1:o=c+1}return{found:!1,slot_idx:o}}function _o(e,t){if(t==null)return new Uint8Array(0);if(e===S.INT32){const n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,Number(t),!0),n}if(e===S.INT64){const n=new Uint8Array(8);return new DataView(n.buffer).setBigInt64(0,BigInt(t),!0),n}if(e===S.FLOAT64){const n=new Uint8Array(8);return new DataView(n.buffer).setFloat64(0,Number(t),!0),n}if(e===S.UUID){const n=new Uint8Array(16);return fn.encode(String(t),n,0),n}if(e===S.ULID){const n=new Uint8Array(16);return An.encode(String(t),n,0),n}return e===S.TEXT?vi.encode(String(t)):t instanceof Uint8Array?t:new Uint8Array(t)}function Rs(e,t,n,s){const i=[];let r=0;for(let c=0;c<n;c++){const l=e[t[c]],u=s[l.name],d=_o(l.type,u),h=new Uint8Array(3+d.byteLength);h[0]=l.type,h[1]=d.byteLength&255,h[2]=d.byteLength>>8&255,h.set(d,3),i.push(h),r+=h.byteLength}const o=new Uint8Array(r);let a=0;for(let c=0;c<i.length;c++){const l=i[c];o.set(l,a),a+=l.byteLength}return o}const Jl=2654435769;function $n(e,t){const n=Math.imul(e,Jl);return(n^n>>>16)>>>0&t}function mo(e,t,n,s){const i=n-1;let r=$n(s,i);for(let o=0;o<n;o++){const a=t+r*Ue,c=e.getUint32(a,!0);if(c===0)return-1;if(c===s)return e.getUint32(a+4,!0);r=r+1&i}return-1}function Eo(e,t,n,s,i){const r=n-1;let o=$n(s,r);for(let a=0;a<n;a++){const c=t+o*Ue,l=e.getUint32(c,!0);if(l===0||l===s){e.setUint32(c,s,!0),e.setUint32(c+4,i,!0);return}o=o+1&r}throw new Error(`BufferPool page table full: cannot insert page ${s}`)}function qi(e,t,n,s){const i=n-1;let r=$n(s,i),o=!1;for(let l=0;l<n;l++){const u=t+r*Ue,d=e.getUint32(u,!0);if(d===0)return!1;if(d===s){o=!0;break}r=r+1&i}if(!o)return!1;let a=r;for(;;){a=a+1&i;const l=t+a*Ue,u=e.getUint32(l,!0);if(u===0)break;const d=$n(u,i);if((r-d&i)<(a-d&i)){const h=e.getUint32(l+4,!0),f=t+r*Ue;e.setUint32(f,u,!0),e.setUint32(f+4,h,!0),r=a}}const c=t+r*Ue;return e.setUint32(c,0,!0),e.setUint32(c+4,0,!0),!0}function zl(e){return e*4096}function dn(e,t,n){return yt(e,t+n*4)}function Wi(e,t,n,s){Tt(e,t+n*4,s)}function Vt(e,t,n,s){return mo(e,t,n,s)}function Io(e,t,n,s,i,r){ro(r>0,"page_id must be > 0");const o=dn(e,t,i);return o>0&&o!==r&&qi(e,n,s,o),Wi(e,t,i,r),Eo(e,n,s,r,i),0}function po(e,t,n,s,i){const r=dn(e,t,i);return r>0?(qi(e,n,s,r),Wi(e,t,i,0),1):0}function yo(e,t,n){so(e,t,n)}function To(e,t,n){io(e,t,n)}function Hi(e,t,n){return no(e,t,n)===1}function Vi(e,t){if(e[t]>=4294967295)throw new Error(`Pin count overflow on slot ${t}`);e[t]++}function $i(e,t){t!==0&&e[t]>0&&e[t]--}function _n(e,t){return t===0||e[t]>0}function xi(e,t,n,s,i,r){const o=new DataView(e);for(let c=1;c<i;c++)if(yt(o,s+c*4)===0&&!_n(n,c))return{candidate_slot:c,next_clock_hand:r};let a=r;for(let c=0;c<i*2;c++){if(a=(a+1)%i,a===0||_n(n,a))continue;const l=new DataView(e,a*4096,4096);if(Xe(l,0)!==vn)if(t[a]===1)t[a]=0;else return{candidate_slot:a,next_clock_hand:a}}throw new Error("Cache deadlock: all slots are pinned")}function Xi(e,t,n,s,i,r,o,a){const c=new DataView(e);let l=-1,u=o;if(a>1&&a<=r&&dn(c,s,a-1)===0&&!_n(n,a-1))l=a-1;else{const I=xi(e,t,n,s,r,o);l=I.candidate_slot,u=I.next_clock_hand}const d=dn(c,s,l),h=Hi(new Uint8Array(e),i,l),f=new DataView(e,l*4096,4096),g=d>0&&Xe(f,0)===$e,_=h&&!g&&d>0?d:0;return{candidate_slot:l,flush_page_id:_,next_clock_hand:u}}function Ct(e,t){return e.cursors&&e.cursors[t]?e.cursors[t]:e.cursor}function Xt(e,t){if(t<=0)return 0;if(e.byteLength>=Gt+Cr){const n=Vt(e,Gt,Ht,t);if(n>=0)return n*4096}return(t-1)*4096}function mn(e,t){if(e==null||t===null||t===void 0)return{result:0,is_unknown:!0};if(typeof e=="boolean"||typeof t=="boolean"){const n=e?1:0,s=t?1:0;return n===s?{result:0,is_unknown:!1}:{result:n>s?1:-1,is_unknown:!1}}if(typeof e=="number"&&typeof t=="number")return e===t?{result:0,is_unknown:!1}:{result:e>t?1:-1,is_unknown:!1};if(typeof e=="bigint"||typeof t=="bigint"){const n=BigInt(e),s=BigInt(t);return n===s?{result:0,is_unknown:!1}:{result:n>s?1:-1,is_unknown:!1}}if(typeof e=="string"&&typeof t=="string")return e===t?{result:0,is_unknown:!1}:{result:e>t?1:-1,is_unknown:!1};if(e instanceof Uint8Array&&t instanceof Uint8Array){const n=Math.min(e.byteLength,t.byteLength);for(let s=0;s<n;s++)if(e[s]!==t[s])return{result:e[s]>t[s]?1:-1,is_unknown:!1};return e.byteLength===t.byteLength?{result:0,is_unknown:!1}:{result:e.byteLength>t.byteLength?1:-1,is_unknown:!1}}return e===t?{result:0,is_unknown:!1}:{result:e>t?1:-1,is_unknown:!1}}function Co(e){return e>=65&&e<=90?e+32:e}function tc(e,t,n,s){let i=0,r=0,o=-1,a=-1;for(;i<t;){const c=r<s?n.charCodeAt(r):0,l=e.charCodeAt(i);if(r<s&&(c===95||Co(c)===Co(l)))i++,r++;else if(r<s&&c===37)o=r++,a=i;else if(o!==-1)r=o+1,i=++a;else return 0}for(;r<s&&n.charCodeAt(r)===37;)r++;return r===s?1:0}function ze(e,t){return tc(e,e.length,t,t.length)===1}function En(e,t,n){const s=n.numKeys;for(let i=0;i<s;i++){const r=e[i],o=t[i],a=n.directions[i]??0,c=n.nullOrders[i]??(a===1?1:0),l=r==null,u=o==null;if(l&&u)continue;if(l||u)return c===0?l?-1:1:l?1:-1;let d=0;if(typeof r=="number"&&typeof o=="number")d=r<o?-1:r>o?1:0;else if(typeof r=="bigint"||typeof o=="bigint"){const h=BigInt(r),f=BigInt(o);d=h<f?-1:h>f?1:0}else if(typeof r=="string"&&typeof o=="string")d=r<o?-1:r>o?1:0;else if(r instanceof Uint8Array&&o instanceof Uint8Array){const h=Math.min(r.byteLength,o.byteLength);for(let f=0;f<h;f++)if(r[f]!==o[f]){d=r[f]<o[f]?-1:1;break}d===0&&(d=r.byteLength<o.byteLength?-1:r.byteLength>o.byteLength?1:0)}else d=r<o?-1:r>o?1:0;if(d!==0)return a===1?-d:d}return 0}function wo(e,t,n,s){const i=s.numKeys;for(let r=0;r<i;r++){const o=e[t+r],a=n[r],c=s.directions[r]??0,l=s.nullOrders[r]??(c===1?1:0),u=o==null,d=a==null;if(u&&d)continue;if(u||d)return l===0?u?-1:1:u?1:-1;let h=0;if(typeof o=="number"&&typeof a=="number")h=o<a?-1:o>a?1:0;else if(typeof o=="string"&&typeof a=="string")h=o<a?-1:o>a?1:0;else if(typeof o=="bigint"||typeof a=="bigint"){const f=BigInt(o),g=BigInt(a);h=f<g?-1:f>g?1:0}else if(o instanceof Uint8Array&&a instanceof Uint8Array){const f=Math.min(o.byteLength,a.byteLength);for(let g=0;g<f;g++)if(o[g]!==a[g]){h=o[g]<a[g]?-1:1;break}h===0&&(h=o.byteLength<a.byteLength?-1:o.byteLength>a.byteLength?1:0)}else h=o<a?-1:o>a?1:0;if(h!==0)return c===1?-h:h}return 0}function Fs(e){let t=2166136261;for(let n=0;n<e.length;n++){const s=e[n];if(s==null)t^=255,t=Math.imul(t,16777619);else if(typeof s=="number"){const i=new ArrayBuffer(8);new DataView(i).setFloat64(0,s,!0);const r=new Uint8Array(i);for(let o=0;o<8;o++)t^=r[o],t=Math.imul(t,16777619)}else if(typeof s=="string")for(let i=0;i<s.length;i++)t^=s.charCodeAt(i)&255,t=Math.imul(t,16777619);else if(typeof s=="bigint"){const i=Number(s);t^=i&255,t=Math.imul(t,16777619)}else if(s instanceof Uint8Array)for(let i=0;i<s.byteLength;i++)t^=s[i],t=Math.imul(t,16777619)}return t=t>>>0,t===0?1:t}function ec(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){const s=e[n],i=t[n];if(s==null){if(i!=null)return!1}else{if(i==null)return!1;if(s!==i)if(s instanceof Uint8Array&&i instanceof Uint8Array){if(s.byteLength!==i.byteLength)return!1;for(let r=0;r<s.byteLength;r++)if(s[r]!==i[r])return!1}else return!1}}return!0}function So(e){const t=new Array(e);for(let n=0;n<e;n++)t[n]={hash:0,keys:[],count:0,sum:0,min_val:1/0,max_val:-1/0,has_val:!1};return t}function Uo(e,t,n,s){let i=t;for(;;){let r=i;const o=2*i+1,a=2*i+2;if(o<n&&En(e[o].keys,e[r].keys,s)>0&&(r=o),a<n&&En(e[a].keys,e[r].keys,s)>0&&(r=a),r!==i){const c=e[i];e[i]=e[r],e[r]=c,i=r}else break}}function nc(e){const t=e.keyInfo;e.entries.sort((n,s)=>En(n.keys,s.keys,t)),e.readIdx=t.offset??0}function Oo(e,t,n){const s=new Uint8Array(e.buffer,e.byteOffset+t,n),i=new Uint8Array(n);return i.set(s),i}function sc(e,t,n,s,i,r,o){if(o>0&&t.entries.length>=o){if(En(n,t.entries[0].keys,t.keyInfo)>=0)return L.RUNNING;const u=t.entries[0],d=i-u.rowLen;if(d>0&&e.arenaOffset+d>e.maxQueryMemory)return e.status=L.ARENA_EXHAUSTED,L.ARENA_EXHAUSTED;e.arenaOffset+=d;const h=Oo(r,s,i);return u.keys=n,u.rowOffset=s,u.rowLen=i,u.rowData=h,Uo(t.entries,0,o,t.keyInfo),L.RUNNING}const a=16+16*n.length+i;if(e.arenaOffset+a>e.maxQueryMemory)return e.status=L.ARENA_EXHAUSTED,L.ARENA_EXHAUSTED;e.arenaOffset+=a;const c=Oo(r,s,i);if(t.entries.push({keys:n,rowOffset:s,rowLen:i,rowData:c}),o>0&&t.entries.length===o)for(let l=Math.floor(o/2)-1;l>=0;l--)Uo(t.entries,l,o,t.keyInfo);return L.RUNNING}function ic(e,t,n){var r,o;let s;const i={};if(e.outputColumns&&n===e.outputColumns.length){s=e.outputColumns;for(let a=0;a<n;a++)i[s[a].name]=e.registers[t+a]}else if(e.table&&n===e.table.columns.length){s=e.table.columns;for(let a=0;a<n;a++)i[s[a].name]=e.registers[t+a]}else{s=[];for(let a=0;a<n;a++){const c=e.registers[t+a],l=((o=(r=e.table)==null?void 0:r.columns[a])==null?void 0:o.name)??`col_${a}`;let u=S.TEXT;typeof c=="number"?u=Number.isInteger(c)?S.INT32:S.FLOAT64:typeof c=="bigint"?u=S.INT64:c instanceof Uint8Array&&(u=S.BLOB),s.push({name:l,type:u,flags:tt.NONE,colOffset:0}),i[l]=c}}return bs(s,i)}function Yi(e,t,n,s){const i=2+n.byteLength;if(e.resultOffset+i>oi)return e.status=L.BUFFER_FULL,e.pc=s,L.BUFFER_FULL;const r=Dn+e.resultOffset;return t.setUint16(r,n.byteLength,!0),new Uint8Array(t.buffer,t.byteOffset+r+2,n.byteLength).set(n),e.resultOffset+=i,e.resultCount++,L.RUNNING}function tn(e,t,n){return(e.getUint8(t+(n>>3))&1<<(n&7))!==0}function xn(e,t,n,s,i){let r=t+n;for(let o=0;o<i;o++)if(!tn(e,t,o))switch(s[o].type){case S.INT32:r+=4;break;case S.INT64:case S.FLOAT64:r+=8;break;case S.UUID:case S.ULID:r+=16;break}return r}const Po=new TextDecoder;function Xn(e,t,n){var c,l;const s=new DataView(n.buffer,n.byteOffset,n.byteLength),i=n.byteLength,r=1e7;let o=0;const a=t.byteLength>=is+4&&t.getUint32(is,!0)>0;for(;e.pc<i;){if(++o>r)return e.status=L.TIMEOUT,L.TIMEOUT;const u=e.pc,d=n[e.pc];switch(e.pc+=1,d){case m.OP_HALT:return e.arenaOffset=0,e.status=L.DONE,L.DONE;case m.OP_OPEN_CURSOR:{const h=n[e.pc],f=s.getUint32(e.pc+1,!0);e.pc+=5;const g=Ct(e,h);if(g.pageId=f,g.cellIdx=0,g.rowOffset=0,a&&f>0){const _=Vt(t,Gt,Ht,f);if(_<0)return e.fault_page_id=f,e.status=L.PAGE_FAULT,e.pc=u,L.PAGE_FAULT;g.slotIdx=_}break}case m.OP_REWIND:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const g=Ct(e,h);if(a&&g.pageId>0){const p=Vt(t,Gt,Ht,g.pageId);if(p<0)return e.fault_page_id=g.pageId,e.status=L.PAGE_FAULT,e.pc=u,L.PAGE_FAULT;g.slotIdx=p}const _=Xt(t,g.pageId);if(ft(t,_)===0)e.pc=f;else{g.cellIdx=0;const p=at(t,_,0);g.rowOffset=_+p}break}case m.OP_NEXT_ROW:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const g=Ct(e,h),_=Xt(t,g.pageId),I=ft(t,_),p=g.cellIdx+1;if(p<I){g.cellIdx=p;const y=at(t,_,g.cellIdx);g.rowOffset=_+y}else{const y=Ut(t,_);if(y!==0){if(a){const w=Vt(t,Gt,Ht,y);if(w<0)return e.fault_page_id=y,e.status=L.PAGE_FAULT,e.pc=u,L.PAGE_FAULT;g.slotIdx=w}g.pageId=y,g.cellIdx=0;const T=Xt(t,y);if(ft(t,T)>0){const w=at(t,T,0);g.rowOffset=T+w}else e.pc=f}else e.pc=f}break}case m.OP_LAST:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const g=Ct(e,h),_=Xt(t,g.pageId),I=ft(t,_);if(I===0)e.pc=f;else{g.cellIdx=I-1;const p=at(t,_,g.cellIdx);g.rowOffset=_+p}break}case m.OP_PREV_ROW:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const g=Ct(e,h),_=Xt(t,g.pageId);if(g.cellIdx>0){g.cellIdx--;const I=at(t,_,g.cellIdx);g.rowOffset=_+I}else e.pc=f;break}case m.OP_COLUMN_INT:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const _=Ct(e,h),I=(e.tables&&e.tables[h])??e.table,p=I.columns[f],y=Math.ceil(I.columns.length/8),T=_.rowOffset+3;if(tn(t,T,f)){e.registers[g]=null;break}const O=xn(t,T,y,I.columns,f);p.type===S.INT32?e.registers[g]=t.getInt32(O,!0):p.type===S.INT64&&(e.registers[g]=Number(t.getBigInt64(O,!0)));break}case m.OP_COLUMN_FLOAT:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const _=Ct(e,h),I=(e.tables&&e.tables[h])??e.table,p=Math.ceil(I.columns.length/8),y=_.rowOffset+3;if(tn(t,y,f)){e.registers[g]=null;break}const T=xn(t,y,p,I.columns,f);e.registers[g]=t.getFloat64(T,!0);break}case m.OP_COLUMN_UUID:case m.OP_COLUMN_ULID:case m.OP_COLUMN_TEXT:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const _=Ct(e,h),I=(e.tables&&e.tables[h])??e.table,p=Math.ceil(I.columns.length/8),y=_.rowOffset+3;if(tn(t,y,f)){e.registers[g]=null;break}if(I.columns[f].type===S.UUID||I.columns[f].type===S.ULID){const P=xn(t,y,p,I.columns,f),U=new Uint8Array(t.buffer,t.byteOffset+P,16);e.registers[g]=I.columns[f].type===S.UUID?fn.decode(U,0):An.decode(U,0);break}const T=xn(t,y,p,I.columns,I.columns.length);let O=0;for(let P=0;P<f;P++){const U=I.columns[P];(U.type===S.TEXT||U.type===S.BLOB)&&O++}const w=T+O*4,C=t.getUint16(w,!0),B=t.getUint16(w+2,!0);if(B===0)e.registers[g]="";else{const P=new Uint8Array(t.buffer,_.rowOffset+C,B);e.registers[g]=Po.decode(P)}break}case m.OP_COLUMN_BLOB:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const _=Ct(e,h),I=(e.tables&&e.tables[h])??e.table,p=Math.ceil(I.columns.length/8),y=_.rowOffset+3;if(tn(t,y,f)){e.registers[g]=null;break}const T=xn(t,y,p,I.columns,I.columns.length);let O=0;for(let U=0;U<f;U++){const Q=I.columns[U];(Q.type===S.TEXT||Q.type===S.BLOB)&&O++}const w=T+O*4,C=t.getUint16(w,!0),B=t.getUint16(w+2,!0),P=new Uint8Array(B);P.set(new Uint8Array(t.buffer,_.rowOffset+C,B)),e.registers[g]=P;break}case m.OP_OPEN_INDEX:{const h=n[e.pc],f=s.getUint32(e.pc+1,!0);e.pc+=5;const g=Ct(e,h);if(g.pageId=f,g.rootPageId=f,g.cellIdx=0,g.rowOffset=0,a&&f>0){const _=Vt(t,Gt,Ht,f);if(_<0)return e.fault_page_id=f,e.status=L.PAGE_FAULT,e.pc=u,L.PAGE_FAULT;g.slotIdx=_}break}case m.OP_INDEX_SEEK_EQ:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],_=n[e.pc+3],I=s.getUint16(e.pc+4,!0);if(e.pc+=6,I>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const p=e.registers[g];if(p==null){e.pc=I;break}const y=Ct(e,h);let T=y.rootPageId||y.pageId,O=!1,w=0n;for(;T!==0;){if(a&&T>0){const P=Vt(t,Gt,Ht,T);if(P<0)return e.fault_page_id=T,e.status=L.PAGE_FAULT,e.pc=u,L.PAGE_FAULT;y.slotIdx=P}const C=Xt(t,T),B=Vn(t,C,_,p);if(B.found){O=!0,y.pageId=T,y.cellIdx=B.slot_idx;const P=at(t,C,B.slot_idx),U=t.getUint16(C+P,!0);w=t.getBigInt64(C+P+2+U,!0);break}T=Ut(t,C)}if(!O)e.pc=I;else{const C=Number(w>>16n),B=Number(w&0xffffn);if(a&&C>0&&Vt(t,Gt,Ht,C)<0)return e.fault_page_id=C,e.status=L.PAGE_FAULT,e.pc=u,L.PAGE_FAULT;const P=Ct(e,f);P.pageId=C,P.cellIdx=B;const U=Xt(t,C),Q=at(t,U,B);P.rowOffset=U+Q}break}case m.OP_INDEX_SEEK_GE:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],_=n[e.pc+3],I=s.getUint16(e.pc+4,!0);if(e.pc+=6,I>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const p=e.registers[g];if(p==null){e.pc=I;break}const y=Ct(e,h);let T=y.rootPageId||y.pageId,O=!1,w=0n;for(;T!==0;){if(a&&T>0){const U=Vt(t,Gt,Ht,T);if(U<0)return e.fault_page_id=T,e.status=L.PAGE_FAULT,e.pc=u,L.PAGE_FAULT;y.slotIdx=U}const C=Xt(t,T),B=ft(t,C),P=Vn(t,C,_,p);if(P.found||P.slot_idx<B){O=!0,y.pageId=T,y.cellIdx=P.slot_idx;const U=at(t,C,P.slot_idx),Q=t.getUint16(C+U,!0);w=t.getBigInt64(C+U+2+Q,!0);break}T=Ut(t,C)}if(!O)e.pc=I;else{const C=Number(w>>16n),B=Number(w&0xffffn);if(a&&C>0&&Vt(t,Gt,Ht,C)<0)return e.fault_page_id=C,e.status=L.PAGE_FAULT,e.pc=u,L.PAGE_FAULT;const P=Ct(e,f);P.pageId=C,P.cellIdx=B;const U=Xt(t,C),Q=at(t,U,B);P.rowOffset=U+Q}break}case m.OP_INDEX_NEXT:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=Ct(e,h);let I=_.pageId,p=Xt(t,I);const y=ft(t,p);let T=_.cellIdx+1;if(T>=y){if(I=Ut(t,p),I===0){e.pc=g;break}if(a&&I>0){const A=Vt(t,Gt,Ht,I);if(A<0)return e.fault_page_id=I,e.status=L.PAGE_FAULT,e.pc=u,L.PAGE_FAULT;_.slotIdx=A}p=Xt(t,I),T=0,_.pageId=I,_.cellIdx=-1}const O=at(t,p,T),w=t.getUint16(p+O,!0),C=t.getBigInt64(p+O+2+w,!0),B=Number(C>>16n),P=Number(C&0xffffn);if(a&&B>0&&Vt(t,Gt,Ht,B)<0)return e.fault_page_id=B,e.status=L.PAGE_FAULT,e.pc=u,L.PAGE_FAULT;_.pageId=I,_.cellIdx=T;const U=Ct(e,f);U.pageId=B,U.cellIdx=P;const Q=Xt(t,B),R=at(t,Q,P);U.rowOffset=Q+R;break}case m.OP_IS_NULL:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const I=Ct(e,h).rowOffset+3;tn(t,I,f)&&(e.pc=g);break}case m.OP_IS_NOT_NULL:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const I=Ct(e,h).rowOffset+3;tn(t,I,f)||(e.pc=g);break}case m.OP_EQ:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=mn(e.registers[h],e.registers[f]);!_.is_unknown&&_.result===0&&(e.pc=g);break}case m.OP_NE:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=mn(e.registers[h],e.registers[f]);!_.is_unknown&&_.result!==0&&(e.pc=g);break}case m.OP_GT:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=mn(e.registers[h],e.registers[f]);!_.is_unknown&&_.result>0&&(e.pc=g);break}case m.OP_GE:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=mn(e.registers[h],e.registers[f]);!_.is_unknown&&_.result>=0&&(e.pc=g);break}case m.OP_LT:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=mn(e.registers[h],e.registers[f]);!_.is_unknown&&_.result<0&&(e.pc=g);break}case m.OP_LE:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=mn(e.registers[h],e.registers[f]);!_.is_unknown&&_.result<=0&&(e.pc=g);break}case m.OP_JUMP:{const h=s.getUint16(e.pc,!0);if(h>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;e.pc=h;break}case m.OP_STR_LIKE:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=e.registers[h],I=e.registers[f];if(_===null||I===null)break;ze(String(_),String(I))&&(e.pc=g);break}case m.OP_STR_NOT_LIKE:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=e.registers[h],I=e.registers[f];if(_===null||I===null)break;ze(String(_),String(I))||(e.pc=g);break}case m.OP_STR_CONTAINS:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=e.registers[h],I=e.registers[f];if(_===null||I===null)break;String(_).includes(String(I))&&(e.pc=g);break}case m.OP_STR_STARTS_WITH:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=e.registers[h],I=e.registers[f];if(_===null||I===null)break;String(_).startsWith(String(I))&&(e.pc=g);break}case m.OP_STR_ENDS_WITH:{const h=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=e.registers[h],I=e.registers[f];if(_===null||I===null)break;String(_).endsWith(String(I))&&(e.pc=g);break}case m.OP_IN:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0),g=s.getUint16(e.pc+3,!0);if(e.pc+=5,g>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=e.registers[h];if(_==null)break;const I=(c=e.inSets)==null?void 0:c[f];I&&(I.has(_)||typeof _=="number"&&Number.isSafeInteger(_)&&I.has(BigInt(_))||typeof _=="bigint"&&I.has(Number(_)))&&(e.pc=g);break}case m.OP_LOAD_INT:{const h=n[e.pc],f=s.getInt32(e.pc+1,!0);e.pc+=5,e.registers[h]=f;break}case m.OP_LOAD_FLOAT:{const h=n[e.pc],f=s.getFloat64(e.pc+1,!0);e.pc+=9,e.registers[h]=f;break}case m.OP_LOAD_TEXT:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0),g=new Uint8Array(n.buffer,n.byteOffset+e.pc+3,f);e.registers[h]=Po.decode(g),e.pc+=3+f;break}case m.OP_LOAD_BLOB:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0),g=new Uint8Array(f);g.set(new Uint8Array(n.buffer,n.byteOffset+e.pc+3,f)),e.registers[h]=g,e.pc+=3+f;break}case m.OP_LOAD_NULL:{const h=n[e.pc];e.pc+=1,e.registers[h]=null;break}case m.OP_EMIT_ROW:{const h=n[e.pc];e.pc+=1;const f=Ct(e,h),g=t.getUint16(f.rowOffset+1,!0),_=new Uint8Array(t.buffer,t.byteOffset+f.rowOffset,g),I=Yi(e,t,_,u);if(I!==L.RUNNING)return I;break}case m.OP_OFFSET:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const g=Number(e.registers[h]??0);g>0&&(e.registers[h]=g-1,e.pc=f);break}case m.OP_LIMIT:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const g=Number(e.registers[h]??0);g<=1?(e.registers[h]=0,e.pc=f):e.registers[h]=g-1;break}case m.OP_CALL_UDF:{const h=s.getUint16(e.pc,!0),f=n[e.pc+2],g=n[e.pc+3],_=n[e.pc+4];e.pc+=5;const I=(l=e.udfs)==null?void 0:l[h];if(!I)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const p=[];for(let y=0;y<g;y++)p.push(e.registers[f+y]);try{const y=I(...p);e.registers[_]=y!==void 0?y:null}catch{return e.status=L.ERROR,L.ERROR}break}case m.OP_STR_LOWER:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[h];e.registers[f]=g!==null?String(g).toLowerCase():null;break}case m.OP_STR_UPPER:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[h];e.registers[f]=g!==null?String(g).toUpperCase():null;break}case m.OP_STR_LENGTH:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[h];e.registers[f]=g!==null?String(g).length:null;break}case m.OP_STR_SUBSTR:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],_=n[e.pc+3];e.pc+=4;const I=e.registers[h],p=e.registers[f],y=e.registers[g];if(I===null||p===null){e.registers[_]=null;break}const T=String(I),O=Math.max(0,Number(p)-1);if(y===null)e.registers[_]=T.slice(O);else{const w=Math.max(0,Number(y));e.registers[_]=T.slice(O,O+w)}break}case m.OP_STR_TRIM:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[h];e.registers[f]=g!=null?String(g).trim():null;break}case m.OP_MATH_ABS:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[h];e.registers[f]=g!=null?Math.abs(Number(g)):null;break}case m.OP_MATH_ROUND:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[h];e.registers[f]=g!=null?Math.round(Number(g)):null;break}case m.OP_RESULT_ROW:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=ic(e,h,f),_=Yi(e,t,g,u);if(_!==L.RUNNING)return _;break}case m.OP_SORTER_OPEN:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.keyInfos[f]??{numKeys:1,directions:[0],nullOrders:[0]},_=g.limit!==void 0&&g.limit>0?(g.offset??0)+g.limit:0,I=_>0&&_<=kr?_:0;e.sorters[h]={keyInfo:g,entries:[],readIdx:0,isSorted:!1,maxK:I};break}case m.OP_SORTER_INSERT:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],_=n[e.pc+3];e.pc+=4;const I=e.sorters[h];if(!I)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const p=I.maxK??0;if(p>0&&I.entries.length>=p){if(g===1){const C=e.registers[f],B=I.entries[0].keys[0],P=I.keyInfo.directions[0]??0;if(typeof C=="number"&&typeof B=="number"){if(P===0?C>=B:C<=B)break}else if(typeof C=="string"&&typeof B=="string"){if(P===0?C>=B:C<=B)break}else if(wo(e.registers,f,I.entries[0].keys,I.keyInfo)>=0)break}else if(wo(e.registers,f,I.entries[0].keys,I.keyInfo)>=0)break}const y=Ct(e,_),T=t.getUint16(y.rowOffset+1,!0),O=new Array(g);for(let C=0;C<g;C++)O[C]=e.registers[f+C];const w=sc(e,I,O,y.rowOffset,T,t,p);if(w!==L.RUNNING)return w;break}case m.OP_SORTER_SORT:{const h=n[e.pc];e.pc+=1;const f=e.sorters[h];if(!f)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;nc(f),f.isSorted=!0;break}case m.OP_SORTER_NEXT:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const g=e.sorters[h];if(!g)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const _=g.keyInfo.limit!==void 0?(g.keyInfo.offset??0)+g.keyInfo.limit:g.entries.length;if(g.readIdx>=Math.min(g.entries.length,_))break;const I=g.entries[g.readIdx],p=I.rowData??new Uint8Array(t.buffer,t.byteOffset+I.rowOffset,I.rowLen),y=Yi(e,t,p,u);if(y!==L.RUNNING)return y;g.readIdx++,e.pc=f;break}case m.OP_MATH_FLOOR:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[h];e.registers[f]=g!=null?Math.floor(Number(g)):null;break}case m.OP_MATH_CEIL:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[h];e.registers[f]=g!=null?Math.ceil(Number(g)):null;break}case m.OP_ADD:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const _=e.registers[h],I=e.registers[f];_==null||I===null||I===void 0?e.registers[g]=null:e.registers[g]=Number(_)+Number(I);break}case m.OP_SUB:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const _=e.registers[h],I=e.registers[f];_==null||I===null||I===void 0?e.registers[g]=null:e.registers[g]=Number(_)-Number(I);break}case m.OP_MUL:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const _=e.registers[h],I=e.registers[f];_==null||I===null||I===void 0?e.registers[g]=null:e.registers[g]=Number(_)*Number(I);break}case m.OP_DIV:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const _=e.registers[h],I=e.registers[f];if(_==null||I===null||I===void 0)e.registers[g]=null;else{const p=Number(I);e.registers[g]=p===0?null:Number(_)/p}break}case m.OP_MOD:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const _=e.registers[h],I=e.registers[f];if(_==null||I===null||I===void 0)e.registers[g]=null;else{const p=Number(I);e.registers[g]=p===0?null:Number(_)%p}break}case m.OP_STR_CONCAT:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;let _="",I=!1;for(let p=0;p<f;p++){const y=e.registers[h+p];y!=null&&(I=!0,_+=String(y))}e.registers[g]=I?_:null;break}case m.OP_COALESCE:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;let _=null;for(let I=0;I<f;I++){const p=e.registers[h+I];if(p!=null){_=p;break}}e.registers[g]=_;break}case m.OP_COPY:{const h=n[e.pc],f=n[e.pc+1];e.pc+=2,e.registers[f]=e.registers[h];break}case m.OP_AGG_INIT:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],_=n[e.pc+3];if(e.pc+=4,_===0){if(e.arenaOffset+40960>e.maxQueryMemory)return e.status=L.ARENA_EXHAUSTED,L.ARENA_EXHAUSTED;e.arenaOffset+=40960;const y=So(1024);if(g===0){const T=Fs([]),O=T%1024;y[O].hash=T,y[O].keys=[],y[O].count=0,y[O].sum=0,y[O].min_val=1/0,y[O].max_val=-1/0,y[O].has_val=!1}e.aggregators[h]={mode:0,startKeyReg:f,numKeys:g,capacity:1024,occupiedCount:g===0?1:0,readIdx:0,buckets:y}}else e.aggregators[h]={mode:1,startKeyReg:f,numKeys:g,capacity:1,occupiedCount:0,readIdx:0,buckets:[]};break}case m.OP_AGG_STEP:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],_=n[e.pc+3],I=n[e.pc+4];e.pc+=5;const p=e.aggregators[h];if(!p)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const y=[];for(let O=0;O<g;O++)y.push(e.registers[f+O]);const T=_===255?null:e.registers[_];if(p.mode===0){const O=Fs(y),w=O%p.capacity;let C=null;for(let B=0;B<p.capacity;B++){const P=(w+B)%p.capacity,U=p.buckets[P];if(U.hash===0){U.hash=O,U.keys=y.slice(),U.count=0,U.sum=0,U.min_val=1/0,U.max_val=-1/0,U.has_val=!1,p.occupiedCount++,C=U;break}else if(U.hash===O&&ec(U.keys,y)){C=U;break}}if(!C)return e.status=L.ARENA_EXHAUSTED,L.ARENA_EXHAUSTED;if(I===0)(_===255||T!=null)&&C.count++;else if(I===1||I===2)T!=null&&(C.sum+=Number(T),C.has_val=!0);else if(I===3){if(T!=null){const B=Number(T);(!C.has_val||B<C.min_val)&&(C.min_val=B),C.has_val=!0}}else if(I===4&&T!=null){const B=Number(T);(!C.has_val||B>C.max_val)&&(C.max_val=B),C.has_val=!0}if(p.occupiedCount>.7*p.capacity){const P=p.capacity*2,U=P*40;if(e.arenaOffset+U>e.maxQueryMemory)return e.status=L.ARENA_EXHAUSTED,L.ARENA_EXHAUSTED;e.arenaOffset+=U;const Q=p.buckets,R=So(P);for(let A=0;A<Q.length;A++){const b=Q[A];if(b.hash!==0){const k=b.hash%P;for(let V=0;V<P;V++){const j=(k+V)%P;if(R[j].hash===0){R[j]=b;break}}}}p.capacity=P,p.buckets=R}}break}case m.OP_AGG_NEXT:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],_=s.getUint16(e.pc+3,!0);if(e.pc+=5,_>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const I=e.aggregators[h];if(!I)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;for(;I.readIdx<I.buckets.length&&I.buckets[I.readIdx].hash===0;)I.readIdx++;if(I.readIdx>=I.buckets.length)break;const p=I.buckets[I.readIdx++];for(let y=0;y<p.keys.length;y++)e.registers[f+y]=p.keys[y];e.registers[g]=p.sum,e.registers[g+1]=p.count,e.registers[g+2]=p.has_val?p.min_val:null,e.registers[g+3]=p.has_val?p.max_val:null,e.pc=_;break}case m.OP_AGG_FINAL:{const h=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],_=n[e.pc+3];e.pc+=4;const I=e.registers[h],p=Number(e.registers[f]??0);_===0?e.registers[g]=p:_===1?e.registers[g]=p>0?Number(I):null:_===2?e.registers[g]=p>0?Number(I)/p:null:(_===3||_===4)&&(e.registers[g]=e.registers[h]);break}case m.OP_REG_IS_NULL:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const g=e.registers[h];g==null&&(e.pc=f);break}case m.OP_REG_IS_NOT_NULL:{const h=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE;const g=e.registers[h];g!=null&&(e.pc=f);break}default:return e.status=L.INVALID_BYTECODE,L.INVALID_BYTECODE}}return e.status=L.DONE,L.DONE}const rc=new TextDecoder,bo=new Uint8Array([87,69,66,68,66,0]),No=new Uint32Array(256);let Lo=0;function oc(){if(!Lo){for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;No[e]=t>>>0}Lo=1}}function Zi(e,t=0){oc();let n=4294967295;for(let s=0;s<4096;s++){const i=s>=28&&s<=31?0:e.getUint8(t+s);n=No[(n^i)&255]^n>>>8}return(n^4294967295)>>>0}function Bo(e,t=0){xt(e,t,0,4096),e.setUint8(t+Ie+0,87),e.setUint8(t+Ie+1,69),e.setUint8(t+Ie+2,66),e.setUint8(t+Ie+3,68),e.setUint8(t+Ie+4,66),e.setUint8(t+Ie+5,0),e.setUint16(t+ei,4096,!0),e.setUint16(t+ni,cs,!0),e.setUint16(t+si,Qr,!0),e.setUint32(t+re,1,!0),e.setUint32(t+fe,0,!0),e.setUint32(t+pe,1,!0),e.setUint32(t+ye,0,!0),e.setUint32(t+Te,0,!0),e.setUint32(t+Ge,0,!0),e.setUint32(t+qe,0,!0);const n=Zi(e,t);e.setUint32(t+Te,n,!0)}function Yn(e,t=!1){for(let u=0;u<bo.length;u++)if(e.getUint8(Ie+u)!==bo[u])throw new Gn("Invalid database file: magic bytes mismatch");const n=e.getUint16(ei,!0),s=e.getUint16(ni,!0),i=e.getUint16(si,!0),r=e.getUint32(re,!0),o=e.getUint32(fe,!0),a=e.getUint32(pe,!0),c=e.getUint32(ye,!0),l=e.getUint32(Te,!0);if(i>cs)throw new xr(`Database file format requires engine version >= ${i}, but running engine is version ${cs}`);if(t&&l!==0){const u=Zi(e,0);if(u!==l)throw new Pe(1,l,u)}return{pageSize:n,fileFormatVersion:s,minReadVersion:i,totalPages:r,freePageHead:o,schemaVersion:a,changeCounter:c,storedChecksum:l}}function Ro(e,t=0){return e.getUint32(t+re,!0)}function ac(e,t,n){n===void 0&&(n=t,t=0),e.setUint32(t+re,n,!0)}function lc(e,t=0){return e.getUint32(t+fe,!0)}function cc(e,t,n){n===void 0&&(n=t,t=0),e.setUint32(t+fe,n,!0)}function Fo(e,t=0){return e.getUint32(t+pe,!0)}function en(e,t=0){const n=Fo(e,t)+1;return e.setUint32(t+pe,n,!0),n}function Do(e,t=0){return e.getUint32(t+ye,!0)}function oe(e,t=0){const n=Do(e,t)+1;return e.setUint32(t+ye,n,!0),n}function Yt(e,t=0){e.setUint32(t+Te,0,!0);const n=Zi(e,t);return e.setUint32(t+Te,n,!0),n}function Ds(e,t,n,s){let i=0;for(;i<s&&i<Is(n);i++)e.setUint8(t+i,n.charCodeAt(i));for(;i<s;i++)e.setUint8(t+i,0)}function Qs(e,t,n){const s=[];for(let i=0;i<n;i++){const r=e.getUint8(t+i);if(r===0)break;s.push(r)}return rc.decode(new Uint8Array(s))}function Qo(e){switch(e.toUpperCase()){case"INT32":return S.INT32;case"INT64":return S.INT64;case"FLOAT64":return S.FLOAT64;case"TEXT":return S.TEXT;case"BLOB":return S.BLOB;case"UUID":return S.UUID;case"ULID":return S.ULID;default:throw new Error(`Unsupported column data type: "${e}"`)}}const nn=31,uc=1,fc=2;function ae(e,t,n){var i;if(t<=1)return e;if(n){const r=n.getPageBytes(t);if(r&&r.byteLength>=4096)return new DataView(r.buffer,r.byteOffset,4096)}const s=(i=e.buffer)==null?void 0:i.__webdbPool;if(s&&typeof s.getResidentSlot=="function"){const r=s.getResidentSlot(t);if(r!==-1)return s.getSlotDataView(r)}return e.buffer.byteLength>=t*4096?new DataView(e.buffer,(t-1)*4096,4096):null}function Le(e,t,n,s){var a;const i=new Uint8Array(n.buffer,n.byteOffset,4096),r=be(i);n.setUint32(12,r,!0),s!=null&&s.markPageDirty&&s.markPageDirty(t);const o=(a=e.buffer)==null?void 0:a.__webdbPool;if(o&&typeof o.getResidentSlot=="function"){const c=o.getResidentSlot(t);c!==-1&&o.markDirty(c)}}function In(e,t){let n=ee,s=e.getUint32(Ge,!0);for(;s!==0;){const i=ae(e,s,t);if(!i)break;n+=nn,s=i.getUint32(8,!0)}return n}function vs(e,t,n){if(t<0)return null;if(t<ee)return{view:e,offset:ns+t*we,pageId:1};const s=t-ee,i=Math.floor(s/nn),r=s%nn;let o=e.getUint32(Ge,!0);for(let c=0;c<i;c++){if(o===0)return null;const l=ae(e,o,n);if(!l)return null;o=l.getUint32(8,!0)}if(o===0)return null;const a=ae(e,o,n);return a?{view:a,offset:Fn+r*we,pageId:o}:null}function vo(e,t,n){const s=In(e,n),i=ae(e,t,n);if(!i)return-1;Gs(i,0,0,s,0),i.setUint8(1,uc),Le(e,t,i,n);const r=e.getUint32(Ge,!0);if(r===0)e.setUint32(Ge,t,!0);else{let o=r;for(;o!==0;){const a=ae(e,o,n);if(!a)break;const c=a.getUint32(8,!0);if(c===0){a.setUint32(8,t,!0),Le(e,o,a,n);break}o=c}}return s}function qt(e,t,n){const s=vs(e,t,n);if(!s)return null;const{view:i,offset:r}=s,o=i.getUint16(r+0,!0);if(o===0)return null;const a=i.getUint16(r+2,!0),c=i.getUint32(r+4,!0),l=i.getUint32(r+8,!0),u=Qs(i,r+12,ie),d=i.getUint32(r+76,!0),h=i.getUint32(r+80,!0),f=i.getBigUint64(r+84,!0),g=i.getUint32(r+92,!0),_=i.getUint8(r+96),I=i.getUint8(r+97),p=[];for(let y=0;y<8;y++)p.push(i.getUint16(r+98+y*2,!0));return{tableId:o,columnCount:a,rootPageId:c,colCatalogPageId:l,name:u,flags:d,rowCountEstimate:h,autoIncNext:f,pkRootPageId:g>0?g:void 0,pkColumnCount:g>0?_:void 0,pkFlags:g>0?I:void 0,pkColumnIndices:g>0?p:void 0}}function sn(e,t,n,s){var l;const i=vs(e,t,s);if(!i)throw new Error(`Invalid table descriptor slot ${t}`);const{view:r,offset:o,pageId:a}=i;if(r.setUint16(o+0,n.tableId,!0),r.setUint16(o+2,n.columnCount,!0),r.setUint32(o+4,n.rootPageId,!0),r.setUint32(o+8,n.colCatalogPageId,!0),Ds(r,o+12,n.name,ie),r.setUint32(o+76,n.flags,!0),r.setUint32(o+80,n.rowCountEstimate,!0),r.setBigUint64(o+84,n.autoIncNext,!0),new Uint8Array(r.buffer,r.byteOffset).fill(0,o+92,o+we),n.pkRootPageId&&n.pkRootPageId>0){r.setUint32(o+92,n.pkRootPageId,!0),r.setUint8(o+96,n.pkColumnCount??1),r.setUint8(o+97,n.pkFlags??rt.PRIMARY|rt.UNIQUE);for(let u=0;u<8;u++)r.setUint16(o+98+u*2,((l=n.pkColumnIndices)==null?void 0:l[u])??0,!0)}a>1&&Le(e,a,r,s)}function ji(e){return e.pkRootPageId&&e.pkRootPageId>0&&e.pkColumnCount&&e.pkColumnCount>0&&(e.pkFlags??rt.PRIMARY|rt.UNIQUE)&rt.PRIMARY?{indexId:32768+e.tableId,tableId:e.tableId,rootPageId:e.pkRootPageId,columnCount:e.pkColumnCount,flags:e.pkFlags??rt.PRIMARY|rt.UNIQUE,columnIndices:e.pkColumnIndices?[...e.pkColumnIndices]:[0,0,0,0,0,0,0,0],colDirections:[0,0,0,0,0,0,0,0],name:`pk_${e.name}`}:null}function Ac(e,t,n){const s=Zt(e,t,n);return s!==-1?qt(e,s,n):null}function Zt(e,t,n){const s=In(e,n);for(let i=0;i<s;i++){const r=qt(e,i,n);if(r&&r.flags&xe.ACTIVE&&r.name===t)return i}return-1}function Ki(e,t=0,n){for(let s=0;s<ee;s++){const i=t+ns+s*we;if(e.getUint16(i,!0)===0)return s}if(t===0){const s=In(e,n);for(let i=ee;i<s;i++){const r=vs(e,i,n);if(r&&r.view.getUint16(r.offset,!0)===0)return i}}return-1}function pn(e,t){const n=[],s=In(e,t);for(let i=0;i<s;i++){const r=qt(e,i,t);r&&r.flags&xe.ACTIVE&&n.push(r)}return n}function Be(e,t){let n=Tn,s=e.getUint32(qe,!0);for(;s!==0;){const i=ae(e,s,t);if(!i)break;n+=nn,s=i.getUint32(8,!0)}return n}function ks(e,t,n){if(t<0)return null;if(t<Tn)return{view:e,offset:ss+t*Se,pageId:1};const s=t-Tn,i=Math.floor(s/nn),r=s%nn;let o=e.getUint32(qe,!0);for(let c=0;c<i;c++){if(o===0)return null;const l=ae(e,o,n);if(!l)return null;o=l.getUint32(8,!0)}if(o===0)return null;const a=ae(e,o,n);return a?{view:a,offset:Fn+r*Se,pageId:o}:null}function ko(e,t,n){const s=Be(e,n),i=ae(e,t,n);if(!i)return-1;Gs(i,0,0,s,0),i.setUint8(1,fc),Le(e,t,i,n);const r=e.getUint32(qe,!0);if(r===0)e.setUint32(qe,t,!0);else{let o=r;for(;o!==0;){const a=ae(e,o,n);if(!a)break;const c=a.getUint32(8,!0);if(c===0){a.setUint32(8,t,!0),Le(e,o,a,n);break}o=c}}return s}function yn(e,t,n){const s=ks(e,t,n);if(!s)return null;const{view:i,offset:r}=s,o=i.getUint16(r+0,!0);if(o===0)return null;const a=i.getUint16(r+2,!0),c=i.getUint32(r+4,!0),l=i.getUint8(r+8),u=i.getUint8(r+9),d=[];for(let g=0;g<8;g++)d.push(i.getUint16(r+10+g*2,!0));const h=[];for(let g=0;g<8;g++)h.push(i.getUint8(r+26+g));const f=Qs(i,r+34,ie);return{indexId:o,tableId:a,rootPageId:c,columnCount:l,flags:u,columnIndices:d,colDirections:h,name:f}}function Ji(e,t,n,s){const i=ks(e,t,s);if(!i)throw new Error(`Invalid index descriptor slot ${t}`);const{view:r,offset:o,pageId:a}=i;r.setUint16(o+0,n.indexId,!0),r.setUint16(o+2,n.tableId,!0),r.setUint32(o+4,n.rootPageId,!0),r.setUint8(o+8,n.columnCount),r.setUint8(o+9,n.flags);for(let l=0;l<8;l++)r.setUint16(o+10+l*2,n.columnIndices[l]??0,!0);for(let l=0;l<8;l++)r.setUint8(o+26+l,n.colDirections[l]??0);Ds(r,o+34,n.name,ie),new Uint8Array(r.buffer,r.byteOffset).fill(0,o+98,o+Se),a>1&&Le(e,a,r,s)}const Tn=8;function Mo(e,t=0,n){for(let s=0;s<Tn;s++){const i=t+ss+s*Se;if(e.getUint16(i+0,!0)===0)return s}if(t===0){const s=Be(e,n);for(let i=Tn;i<s;i++){const r=ks(e,i,n);if(r&&r.view.getUint16(r.offset,!0)===0)return i}}return-1}function Ms(e,t,n){const s=t.toLowerCase(),i=Be(e,n);for(let o=0;o<i;o++){const a=yn(e,o,n);if(a&&a.name.toLowerCase()===s)return{slotIdx:o,desc:a}}const r=In(e,n);for(let o=0;o<r;o++){const a=qt(e,o,n);if(a&&a.flags&xe.ACTIVE){const c=ji(a);if(c&&c.name.toLowerCase()===s)return{slotIdx:-(o+1),desc:c}}}return null}function le(e,t,n){const s=[];let i=!1;const r=t-1;let o=r>=0?qt(e,r,n):null;if((!o||o.tableId!==t)&&(o=pn(e,n).find(l=>l.tableId===t)??null),o&&o.flags&xe.ACTIVE){const c=ji(o);c&&(s.push(c),i=!0)}const a=Be(e,n);for(let c=0;c<a;c++){const l=yn(e,c,n);if(l&&l.tableId===t){if(i&&l.flags&rt.PRIMARY)continue;s.push(l)}}return s}function Go(e,t){const n=[],s=pn(e,t),i=new Set;for(const o of s){i.add(o.tableId);const a=le(e,o.tableId,t);for(const c of a)n.push(c)}const r=Be(e,t);for(let o=0;o<r;o++){const a=yn(e,o,t);a&&!i.has(a.tableId)&&n.push(a)}return n}function zi(e,t,n){if(n===void 0&&(n=t,t=0),n<Tn){const s=t+ss+n*Se;return xt(e,s,0,Se),0}if(t===0){const s=ks(e,n);return s?(xt(s.view,s.offset,0,Se),s.pageId>1&&Le(e,s.pageId,s.view),0):-1}return-1}function qo(e,t,n){if(n===void 0&&(n=t,t=0),n<ee){const s=t+ns+n*we;return xt(e,s,0,we),0}if(t===0){const s=vs(e,n);return s?(xt(s.view,s.offset,0,we),s.pageId>1&&Le(e,s.pageId,s.view),0):-1}return-1}function Gs(e,t,n,s,i=0){xt(e,t,0,4096),e.setUint8(t+0,vn),e.setUint8(t+1,0),e.setUint16(t+2,0,!0),e.setUint16(t+4,n,!0),e.setUint16(t+6,s,!0),e.setUint32(t+8,i,!0),e.setUint32(t+12,0,!0)}function ge(e,t){return{pageType:e.getUint8(t+0),flags:e.getUint8(t+1),colCountInPage:e.getUint16(t+2,!0),tableId:e.getUint16(t+4,!0),startColIndex:e.getUint16(t+6,!0),nextColCatalogPageId:e.getUint32(t+8,!0),pageChecksum:e.getUint32(t+12,!0)}}function hc(e,t,n,s,i,r){e.setUint8(t+0,vn),e.setUint8(t+1,0),e.setUint16(t+2,n,!0),e.setUint16(t+4,s,!0),e.setUint16(t+6,i,!0),e.setUint32(t+8,r,!0)}function tr(e,t,n,s){if(n<0||n>=Ce)throw new Error(`Invalid catalog in-page slot ${n}`);const i=t+Fn+n*ri;e.setUint8(i+0,s.type),e.setUint8(i+1,s.flags),e.setUint16(i+2,s.colOffset,!0),Ds(e,i+4,s.name,ie),e.setUint32(i+68,0,!0)}function Wo(e,t,n){const s=t+Fn+n*ri,i=e.getUint8(s+0),r=e.getUint8(s+1),o=e.getUint16(s+2,!0),a=Qs(e,s+4,ie);return{type:i,flags:r,colOffset:o,name:a}}function Ho(e){return{pageChainIdx:Math.floor(e/Ce),colIdxInPage:e%Ce}}function Vo(e,t,n,s){var B,P,U,Q,R;if(s.length===0)throw new Error("Table must have at least one column");if(s.length>Ae)throw new Mn(s.length,Ae);if(Zt(e,n,t)!==-1)throw new gs(n);let i=Ki(e,0,t);if(i===-1){const A=t.allocateNewPage();if(!A||A<=1)throw new Ui(ee+1,ee);if(i=vo(e,A,t),i===-1)throw new Ui(ee+1,ee)}const r=i+1,o=t.allocateNewPage(),a=t.getPageBytes(o),c=new DataView(a.buffer,a.byteOffset);c.setUint8(0,13),c.setUint8(1,0),c.setUint16(2,0,!0),c.setUint16(4,4096,!0),c.setUint32(6,0,!0),c.setUint16(10,0,!0),c.setUint32(12,0,!0),t.markPageDirty(o);const l=[];let u=0;for(let A=0;A<s.length;A++){const b=s[A],k=typeof b.type=="string"?Qo(b.type):b.type;let V=0;typeof b.flags=="number"?V=b.flags:((b.primaryKey||(B=b.flags)!=null&&B.primaryKey)&&(V|=tt.PRIMARY_KEY),(b.notNull||(P=b.flags)!=null&&P.notNull)&&(V|=tt.NOT_NULL),(b.indexed||(U=b.flags)!=null&&U.indexed)&&(V|=tt.INDEXED),(b.autoInc||b.autoIncrement||(Q=b.flags)!=null&&Q.autoInc||(R=b.flags)!=null&&R.autoIncrement)&&(V|=tt.AUTO_INC));const j=u;switch(k){case S.INT32:u+=4;break;case S.INT64:case S.FLOAT64:u+=8;break;case S.UUID:case S.ULID:u+=16;break}l.push({type:k,flags:V,colOffset:j,name:b.name})}const d=l.length,h=Math.ceil(d/Ce),f=[];for(let A=0;A<h;A++)f.push(t.allocateNewPage());for(let A=0;A<h;A++){const b=f[A],k=A<h-1?f[A+1]:0,V=A*Ce,j=Math.min(d-V,Ce),K=t.getPageBytes(b),G=new DataView(K.buffer,K.byteOffset);Gs(G,0,r,V,k),G.setUint16(2,j,!0);for(let Rt=0;Rt<j;Rt++){const dt=l[V+Rt];tr(G,0,Rt,dt)}const q=be(K);G.setUint32(12,q,!0),t.markPageDirty(b)}const g=f[0],_=[];for(let A=0;A<l.length;A++)l[A].flags&tt.PRIMARY_KEY&&_.push(l[A]);let I=0,p=0,y=0;const T=[0,0,0,0,0,0,0,0];if(_.length>0){I=t.allocateNewPage();const A=t.getPageBytes(I),b=new DataView(A.buffer,A.byteOffset);Ls(b,0,0),t.markPageDirty(I),p=Math.min(_.length,8),y=rt.PRIMARY|rt.UNIQUE;for(let k=0;k<p;k++){const V=_[k].name;let j=0;for(let K=0;K<l.length;K++)if(l[K].name===V){j=K;break}T[k]=j}}const O={tableId:r,columnCount:d,rootPageId:o,colCatalogPageId:g,name:n,flags:xe.ACTIVE,rowCountEstimate:0,autoIncNext:1n,pkRootPageId:I>0?I:void 0,pkColumnCount:I>0?p:void 0,pkFlags:I>0?y:void 0,pkColumnIndices:I>0?T:void 0};sn(e,i,O,t),en(e),oe(e),Yt(e);const w=le(e,r,t),C=[];for(let A=0;A<_.length;A++)C.push(_[A].name);return{...O,columns:l,primaryKey:C.length>0?C:void 0,indexes:w.length>0?w:void 0}}function er(e,t,n){const s=Zt(e,n,t);if(s===-1)throw new kn(n);const i=qt(e,s,t),r=[];let o=i.colCatalogPageId,a=0;for(;o!==0&&a<i.columnCount;){const u=t.getPageBytes(o),d=new DataView(u.buffer,u.byteOffset),h=ge(d,0);for(let f=0;f<h.colCountInPage;f++){const g=Wo(d,0,f);r.push(g),a++}o=h.nextColCatalogPageId}const c=le(e,i.tableId,t),l=[];for(let u=0;u<r.length;u++)r[u].flags&tt.PRIMARY_KEY&&l.push(r[u].name);return{...i,columns:r,primaryKey:l.length>0?l:void 0,indexes:c.length>0?c:void 0}}function gc(e,t){const n=pn(e,t),s=[];for(let i=0;i<n.length;i++)s.push(er(e,t,n[i].name));return s}const nr="AGFzbQEAAAABcBFgAX8Bf2ACf38AYAJ/fwF/YAN/f38AYAN/f38Bf2AEf39/fwF/YAAAYAV/f39/fwF/YAN/f34Bf2ACf34Bf2ABfwBgBH9/f38AYAV/f39/fwBgBX9+f35/AGAFf3x/fH8AYAd/f39/f39/AGAAAX8CDwEDZW52Bm1lbW9yeQIAQwNIRwYAAAQAAwQDAgQFBAACAwcFAQECAwEAAQABAAEAAQABAAECAwAAAQABAQgJAQIAAAoAAQAAAAAAAwAAAgILDAACBQ0ODwUQBgkBfwFBgKCLAgsH2A1MD19fc3RhY2tfcG9pbnRlcgMAB2hleF92YWwAARBjcm9ja2ZvcmRfZGVjb2RlAAILdXVpZF9lbmNvZGUAAwZzdHJsZW4ABAt1dWlkX2RlY29kZQAFC3VsaWRfZW5jb2RlAAYLdWxpZF9kZWNvZGUABw9wYWdlX3RhYmxlX2hhc2gACA5wYWdlX3RhYmxlX2dldAAJDnBhZ2VfdGFibGVfc2V0AAoRcGFnZV90YWJsZV9kZWxldGUACxhidWZfcG9vbF9nZXRfc2xvdF9vZmZzZXQADBpidWZfcG9vbF9yZWFkX3Nsb3RfdG9fcGFnZQANG2J1Zl9wb29sX3dyaXRlX3Nsb3RfdG9fcGFnZQAOGmJ1Zl9wb29sX2dldF9yZXNpZGVudF9zbG90AAkUYnVmX3Bvb2xfYXNzaWduX3Nsb3QADxZidWZfcG9vbF91bmFzc2lnbl9zbG90ABATYnVmX3Bvb2xfbWFya19kaXJ0eQARFGJ1Zl9wb29sX2NsZWFyX2RpcnR5ABIRYnVmX3Bvb2xfaXNfZGlydHkAEwlwYWdlX2luaXQAFA5wYWdlX2luaXRfZnJlZQAVDXBhZ2VfZ2V0X3R5cGUAFg1wYWdlX3NldF90eXBlABcTcGFnZV9nZXRfY2VsbF9jb3VudAAYE3BhZ2Vfc2V0X2NlbGxfY291bnQAGRxwYWdlX2dldF9jZWxsX2NvbnRlbnRfb2Zmc2V0ABoccGFnZV9zZXRfY2VsbF9jb250ZW50X29mZnNldAAbFXBhZ2VfZ2V0X25leHRfcGFnZV9pZAAcFXBhZ2Vfc2V0X25leHRfcGFnZV9pZAAdE3BhZ2VfZ2V0X2ZyZWVfYnl0ZXMAHhNwYWdlX3NldF9mcmVlX2J5dGVzAB8RcGFnZV9nZXRfY2hlY2tzdW0AIBFwYWdlX3NldF9jaGVja3N1bQAhFHBhZ2VfZ2V0X2NlbGxfb2Zmc2V0ACIUcGFnZV9zZXRfY2VsbF9vZmZzZXQAIx5wYWdlX2dldF9jb250aWd1b3VzX2ZyZWVfc3BhY2UAJBlwYWdlX2dldF90b3RhbF9mcmVlX3NwYWNlACUMcGFnZV9jb21wYWN0ACYTcGFnZV9nZXRfcm93X2xlbmd0aAAnD3BhZ2VfZGVsZXRlX3JvdwAoEnBhZ2VfaW5pdF9pbnRlcmlvcgApHHBhZ2VfZ2V0X3JpZ2h0X2NoaWxkX3BhZ2VfaWQAHBxwYWdlX3NldF9yaWdodF9jaGlsZF9wYWdlX2lkAB0ZcGFnZV9pbnNlcnRfaW50ZXJpb3JfY2VsbAAqG3BhZ2VfYmluYXJ5X3NlYXJjaF9pbnRlcmlvcgArFHBhZ2VfaW5pdF9pbmRleF9sZWFmACwNY29tcHV0ZV9jcmMzMgAtFWNvbXB1dGVfcGFnZV9jaGVja3N1bQAuFmNvbXB1dGVfcGFnZTFfY2hlY2tzdW0ALxJjYXRhbG9nX2luaXRfcGFnZTEAMBdjYXRhbG9nX2dldF90b3RhbF9wYWdlcwAgF2NhdGFsb2dfc2V0X3RvdGFsX3BhZ2VzACEaY2F0YWxvZ19nZXRfZnJlZV9wYWdlX2hlYWQAMRpjYXRhbG9nX3NldF9mcmVlX3BhZ2VfaGVhZAAyGmNhdGFsb2dfZ2V0X3NjaGVtYV92ZXJzaW9uADMgY2F0YWxvZ19pbmNyZW1lbnRfc2NoZW1hX3ZlcnNpb24ANBpjYXRhbG9nX2dldF9jaGFuZ2VfY291bnRlcgA1IGNhdGFsb2dfaW5jcmVtZW50X2NoYW5nZV9jb3VudGVyADYdY2F0YWxvZ191cGRhdGVfcGFnZTFfY2hlY2tzdW0ANxpjYXRhbG9nX3dyaXRlX2ZpeGVkX3N0cmluZwA4HGNhdGFsb2dfZmluZF9mcmVlX3RhYmxlX3Nsb3QAORxjYXRhbG9nX2ZpbmRfZnJlZV9pbmRleF9zbG90ADofY2F0YWxvZ19kZWxldGVfaW5kZXhfZGVzY3JpcHRvcgA7H2NhdGFsb2dfZGVsZXRlX3RhYmxlX2Rlc2NyaXB0b3IAPBFjYXRhbG9nX2luaXRfcGFnZQA9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IAE7AAALCgAgAEEEai8AAAsMACAAQQRqIAE7AAALCgAgAEEGaigAAAsMACAAQQZqIAE2AAALCgAgAEEKai8AAAsMACAAQQpqIAE7AAALCgAgAEEMaigAAAsMACAAQQxqIAE2AAALEAAgACABQQF0akEQai8AAAsSACAAIAFBAXRqQRBqIAI7AAALHgAgAEEEai8AACAAQQJqLwAAQQF0a0EQa0H//wNxCycAIABBCmovAAAgAEEEai8AACAAQQJqLwAAQQF0a2pBEGtB//8DcQuBAgEHfyAAQQJqLwAAIgZFBEAgAEEKakEAOwAAIABBBGpBgCA7AAAPCyABQQAgACABRxtBACABQYBgTxsiAyAAKQAINwAIIAMgACkAADcAACADQRBqIQQgAEEBaiEIIABBEGohBUGAICEBA0AgBS8AACECIAECfyAALQAAQQpGBEAgACACaiIHLwAAQQpqDAELIAAgAmohByACIAhqLwAACyICayEBIAJB//8DcSICBEAgAyABQf//A3FqIAcgAvwKAAALIAQgATsAACAFQQJqIQUgBEECaiEEIAZBAWsiBg0ACyADQQpqQQA7AAAgA0EEaiABOwAAIAAgA0GAIPwKAAALCgAgAEEBai8AAAt0AQN/IABBAmovAAAiAiABSwRAIAAgACABQQF0akEQaiIDLwAAakEBai8AACEEAkAgAkEBayICIAFGDQAgAiABa0EBdCIBRQ0AIAMgA0ECaiAB/AoAAAsgAEECaiACOwAAIABBCmoiACAALwAAIARqOwAACws1ACAAQQU7AAAgAEEMakEANgAAIABBCmpBADsAACAAQQZqIAE2AAAgAEECakGAgICAATYAAAtsAQV/IABBAmoiBS8AACIDQaICTQR/IABBBGoiBi8AAEEMayIEIABqIgcgATYAACAHQQRqIAI3AAAgACADQQF0Qf7/A3FqQRBqIAQ7AAAgBiAEOwAAIAUgA0EBaiIAOwAAIABB//8DcQVBfwsLhwEBBn8CQCAAQQJqLwAAIgIEQCAAQRBqIQcgAkEBayEDQX8hAgNAIAMgBWoiBEEBdiEGAkAgACAHIARB/v8HcWovAABqIgRBBGo1AAAgAVkEQCAGQQFrIQMgBCgAACECDAELIAZBAWohBQsgAyAFTw0ACyACQX9HDQELIABBBmooAAAhAgsgAgs1ACAA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";let Zn=null;function $o(){if(!Zn){const e=globalThis.Buffer;if(typeof e<"u"&&typeof e.from=="function")Zn=new Uint8Array(e.from(nr,"base64"));else{const t=atob(nr),n=t.length;Zn=new Uint8Array(n);for(let s=0;s<n;s++)Zn[s]=t.charCodeAt(s)}}return Zn}function xo(e,t){const n=t??$o(),s=new WebAssembly.Module(n),i=new WebAssembly.Instance(s,{env:{memory:e}}),r=i.exports;r.__stack_pointer&&typeof r.__stack_pointer=="object"&&"value"in r.__stack_pointer&&(r.__stack_pointer.value=4378624);const o=(c,l=0)=>c.byteOffset+l;return{instance:i,exports:r,memory:e,page_init:(c,l,u=fs,d=0)=>{r.page_init(o(c,l),u,d)},page_init_free:(c,l,u=0)=>{r.page_init_free(o(c,l),u)},page_get_type:(c,l)=>r.page_get_type(o(c,l)),page_set_type:(c,l,u)=>{r.page_set_type(o(c,l),u)},page_get_cell_count:(c,l)=>r.page_get_cell_count(o(c,l)),page_set_cell_count:(c,l,u)=>{r.page_set_cell_count(o(c,l),u)},page_get_cell_content_offset:(c,l)=>r.page_get_cell_content_offset(o(c,l)),page_set_cell_content_offset:(c,l,u)=>{r.page_set_cell_content_offset(o(c,l),u)},page_get_next_page_id:(c,l)=>r.page_get_next_page_id(o(c,l)),page_set_next_page_id:(c,l,u)=>{r.page_set_next_page_id(o(c,l),u)},page_get_free_bytes:(c,l)=>r.page_get_free_bytes(o(c,l)),page_set_free_bytes:(c,l,u)=>{r.page_set_free_bytes(o(c,l),u)},page_get_checksum:(c,l)=>r.page_get_checksum(o(c,l)),page_set_checksum:(c,l,u)=>{r.page_set_checksum(o(c,l),u)},page_get_cell_offset:(c,l,u)=>r.page_get_cell_offset(o(c,l),u),page_set_cell_offset:(c,l,u,d)=>{r.page_set_cell_offset(o(c,l),u,d)},page_get_contiguous_free_space:(c,l)=>r.page_get_contiguous_free_space(o(c,l)),page_get_total_free_space:(c,l)=>r.page_get_total_free_space(o(c,l)),page_compact:(c,l,u=0,d)=>{d?Hn(c,l,u,d):r.page_compact(o(c,l),u,-1,0,0)},page_get_row_length:(c,l)=>r.page_get_row_length(o(c,l)),page_insert_row:(c,l,u,d=0)=>gn(c,l,u,d),page_delete_row:(c,l,u)=>{r.page_delete_row(o(c,l),u)},page_update_row:(c,l,u,d,h=0)=>ki(c,l,u,d,h),page_table_hash:(c,l)=>r.page_table_hash(c,l),page_table_get:(c,l,u,d)=>r.page_table_get(o(c,l),u,d),page_table_set:(c,l,u,d,h)=>{if(r.page_table_set(o(c,l),u,d,h)<0)throw new Error(`BufferPool page table full: cannot insert page ${d}`)},page_table_delete:(c,l,u,d)=>r.page_table_delete(o(c,l),u,d)!==0,buf_pool_get_slot_offset:c=>r.buf_pool_get_slot_offset(c),buf_pool_read_slot_to_page:(c,l,u)=>r.buf_pool_read_slot_to_page(o(c,l),u),buf_pool_write_slot_to_page:(c,l,u,d)=>{r.buf_pool_write_slot_to_page(o(c,l),u,d)},buf_pool_get_resident_slot:(c,l,u,d)=>r.buf_pool_get_resident_slot(o(c,l),u,d),buf_pool_assign_slot:(c,l,u,d,h,f)=>{r.buf_pool_assign_slot(o(c,l),o(c,u),d,h,f)},buf_pool_unassign_slot:(c,l,u,d,h)=>{r.buf_pool_unassign_slot(o(c,l),o(c,u),d,h)},buf_pool_mark_dirty:(c,l,u)=>{r.buf_pool_mark_dirty(o(c,l),u)},buf_pool_clear_dirty:(c,l,u)=>{r.buf_pool_clear_dirty(o(c,l),u)},buf_pool_is_dirty:(c,l,u)=>r.buf_pool_is_dirty(o(c,l),u)!==0,buf_pool_pin_slot:(c,l)=>{Vi(c,l)},buf_pool_unpin_slot:(c,l)=>{$i(c,l)},buf_pool_is_pinned:(c,l)=>_n(c,l),buf_pool_find_victim:(c,l,u,d,h,f)=>xi(c,l,u,d,h,f),buf_pool_select_eviction_victim:(c,l,u,d,h,f,g,_)=>Xi(c,l,u,d,h,f,g,_),catalog_init_page1:c=>{r.catalog_init_page1(o(c))},catalog_read_page1_header:(c,l)=>Yn(c,l),catalog_get_total_pages:c=>r.catalog_get_total_pages(o(c)),catalog_set_total_pages:(c,l)=>{r.catalog_set_total_pages(o(c),l)},catalog_get_free_page_head:c=>r.catalog_get_free_page_head(o(c)),catalog_set_free_page_head:(c,l)=>{r.catalog_set_free_page_head(o(c),l)},catalog_get_schema_version:c=>r.catalog_get_schema_version(o(c)),catalog_increment_schema_version:c=>r.catalog_increment_schema_version(o(c)),catalog_get_change_counter:c=>r.catalog_get_change_counter(o(c)),catalog_increment_change_counter:c=>r.catalog_increment_change_counter(o(c)),catalog_update_page1_checksum:c=>r.catalog_update_page1_checksum(o(c)),sql_like_match:(c,l)=>ze(c,l),fnv1a_32:c=>Fs(c),compare_sorter_keys:En,vm_step:Xn}}function Xo(e=We,t=He){const n=ai(e,t),s=n.transientArenaOffset+256*1024,i=Math.ceil(s/65536),r=Math.ceil((n.transientArenaOffset+t)/65536);return new WebAssembly.Memory({initial:i,maximum:Math.max(i,r)})}class Yo{constructor(t){N(this,"io");N(this,"wasmMemory");N(this,"buffer");N(this,"view");N(this,"uint8");N(this,"slotCount");N(this,"maxQueryMemory");N(this,"offsets");N(this,"slotsEndOffset");N(this,"slotToPageOffset");N(this,"pageToSlotOffset");N(this,"pageToSlotBuckets");N(this,"dirtyMaskOffset");N(this,"vmContextOffset");N(this,"resultBufferOffset");N(this,"bytecodeOffset");N(this,"pageScratchpadOffset");N(this,"transientArenaOffset");N(this,"pin_counts");N(this,"slot_dirty_generations");N(this,"ref_bits");N(this,"clock_hand",0);N(this,"arena_offset",0);N(this,"in_flight_acquires",new Map);N(this,"allocation_lock",Promise.resolve());var s,i,r;this.slotCount=t.slotCount??((s=t.pool)==null?void 0:s.slotCount)??We,this.maxQueryMemory=t.maxQueryMemory??((i=t.pool)==null?void 0:i.maxQueryMemory)??He;const n=t.memory??((r=t.pool)==null?void 0:r.wasmMemory);if(!n)throw new Error("BufferPoolDriver requires a valid WebAssembly.Memory (or pool with wasmMemory)");if(this.wasmMemory=n,this.buffer=this.wasmMemory.buffer,this.buffer.__webdbPool=this,this.view=new DataView(this.buffer),this.uint8=new Uint8Array(this.buffer),this.offsets=ai(t.useDefaultLayoutOffsets?We:this.slotCount,this.maxQueryMemory),this.slotsEndOffset=this.offsets.slotsEndOffset,this.slotToPageOffset=this.offsets.slotToPageOffset,this.pageToSlotOffset=this.offsets.pageToSlotOffset,this.pageToSlotBuckets=this.offsets.pageToSlotBuckets,this.dirtyMaskOffset=this.offsets.dirtyMaskOffset,this.vmContextOffset=this.offsets.vmContextOffset,this.resultBufferOffset=this.offsets.resultBufferOffset,this.bytecodeOffset=this.offsets.bytecodeOffset,this.pageScratchpadOffset=this.offsets.pageScratchpadOffset,this.transientArenaOffset=this.offsets.transientArenaOffset,this.ref_bits=new Uint8Array(this.slotCount),this.pin_counts=new Uint32Array(this.slotCount),this.slot_dirty_generations=new Uint32Array(this.slotCount),t.io)this.io=t.io;else if(t.vfs)this.io=new Li({vfs:t.vfs,memory:this.wasmMemory});else throw new Error("BufferPoolDriver requires either an Io instance or IVfsAdapter");xt(this.uint8,this.slotToPageOffset,0,this.slotCount*4),xt(this.uint8,this.pageToSlotOffset,0,this.pageToSlotBuckets*Ue),xt(this.uint8,this.dirtyMaskOffset,0,Math.ceil(this.slotCount/8)),this.assignSlot(0,1),this.pin_counts[0]=1}validate_slot_idx(t){if(!Number.isInteger(t)||t<0||t>=this.slotCount)throw new Error(`Invalid slot index: ${t}. Must be an integer between 0 and ${this.slotCount-1}`)}validate_page_id(t){if(!Number.isInteger(t)||t<=0)throw new Error(`Invalid page ID: ${t}. Page IDs must be positive integers.`)}async with_allocation_lock(t){const n=this.allocation_lock;let s;this.allocation_lock=new Promise(i=>{s=i}),await n;try{return await t()}finally{s()}}setTransactionCoordinator(t){this.io.setTransactionCoordinator(t)}getSlotOffset(t){return this.validate_slot_idx(t),t*4096}getPageBytesInSlot(t){return this.validate_slot_idx(t),this.uint8.subarray(t*4096,(t+1)*4096)}getSlotDataView(t){return this.validate_slot_idx(t),new DataView(this.buffer,t*4096,4096)}getResidentSlot(t){return this.validate_page_id(t),Vt(this.view,this.pageToSlotOffset,this.pageToSlotBuckets,t)}getAssignedPage(t){return this.validate_slot_idx(t),dn(this.view,this.slotToPageOffset,t)}assignSlot(t,n){if(this.validate_slot_idx(t),!Number.isInteger(n)||n<=0)throw new Error(`Invalid page ID: ${n}. Must be a positive integer >= 1`);if(t===0&&n!==1)throw new Error(`Cannot reassign slot 0: reserved permanently for page 1 (got page ${n})`);const s=this.getResidentSlot(n);if(s!==-1&&s!==t)throw new Error(`Cannot map page ${n} to slot ${t}: already resident in slot ${s}`);Io(this.view,this.slotToPageOffset,this.pageToSlotOffset,this.pageToSlotBuckets,t,n),this.ref_bits[t]=1}unassignSlot(t){if(this.validate_slot_idx(t),t===0)throw new Error("Cannot unassign slot 0: reserved permanently for page 1");po(this.view,this.slotToPageOffset,this.pageToSlotOffset,this.pageToSlotBuckets,t),this.ref_bits[t]=0}markDirty(t){this.validate_slot_idx(t),yo(this.uint8,this.dirtyMaskOffset,t),this.slot_dirty_generations[t]++}clearDirty(t){this.validate_slot_idx(t),To(this.uint8,this.dirtyMaskOffset,t)}isDirty(t){return this.validate_slot_idx(t),Hi(this.uint8,this.dirtyMaskOffset,t)}pinSlot(t){this.validate_slot_idx(t),Vi(this.pin_counts,t)}unpinSlot(t){this.validate_slot_idx(t),$i(this.pin_counts,t)}pinPage(t){this.validate_page_id(t);const n=this.getResidentSlot(t);if(n===-1)throw new Error(`Cannot pin page ${t}: page is not resident in buffer pool`);this.pinSlot(n)}unpinPage(t){if(this.validate_page_id(t),t===1)return;const n=this.getResidentSlot(t);n!==-1&&this.unpinSlot(n)}forceUnpinSlot(t){this.validate_slot_idx(t),t!==0&&(this.pin_counts[t]=0)}forceUnpinPage(t){if(this.validate_page_id(t),t<=1)return;const n=this.getResidentSlot(t);n!==-1&&this.forceUnpinSlot(n)}isSlotPinned(t){return this.validate_slot_idx(t),_n(this.pin_counts,t)}getPinCount(t){return this.validate_slot_idx(t),this.pin_counts[t]}getRefBit(t){return this.validate_slot_idx(t),this.ref_bits[t]}setRefBit(t,n){this.validate_slot_idx(t),this.ref_bits[t]=n?1:0}allocArena(t){const n=t+7&-8;if(this.arena_offset+n>this.maxQueryMemory)throw new Oi;const s=this.transientArenaOffset+this.arena_offset;return this.arena_offset+=n,s}resetArena(){this.arena_offset>0&&(xt(this.uint8,this.transientArenaOffset,0,this.arena_offset),this.arena_offset=0)}getArenaOffset(){return this.arena_offset}async acquirePage(t,n=!1){this.validate_page_id(t);const s=this.getResidentSlot(t);if(s!==-1)return this.setRefBit(s,1),n&&this.pinSlot(s),s;const i=this.in_flight_acquires.get(t);if(i){const o=await i;return n&&this.pinSlot(o),o}const r=(async()=>{const{candidate_slot:o,flush_page_id:a,next_clock_hand:c}=Xi(this.buffer,this.ref_bits,this.pin_counts,this.slotToPageOffset,this.dirtyMaskOffset,this.slotCount,this.clock_hand,t);this.clock_hand=c,this.pinSlot(o);try{return await this.io.resolvePageFault(o,t,a),this.assignSlot(o,t),this.setRefBit(o,1),this.clearDirty(o),o}catch(l){throw o!==-1&&this.unpinSlot(o),l}})();this.in_flight_acquires.set(t,r);try{const o=await r;return n||this.unpinSlot(o),o}finally{this.in_flight_acquires.delete(t)}}acquireAndPinPage(t){return this.acquirePage(t,!0)}async flushSlot(t){this.validate_slot_idx(t);const n=this.getAssignedPage(t);if(n===0)return;if(t===0&&n!==1)throw new Error(`Corruption detected: slot 0 is assigned to page ${n} instead of page 1`);const s=this.slot_dirty_generations[t];await this.io.writeSlot(t,n),this.slot_dirty_generations[t]===s&&this.clearDirty(t)}async flushPage(t){this.validate_page_id(t);const n=this.getResidentSlot(t);n!==-1&&this.isDirty(n)&&await this.flushSlot(n)}async flushAllDirty(){for(let t=0;t<this.slotCount;t++)this.isDirty(t)&&await this.flushSlot(t);await this.io.flush()}async allocatePage(t=!1){return this.with_allocation_lock(async()=>{const n=this.getSlotDataView(0),s=yt(n,fe),i=yt(n,re);if(s>0){if(s<=1||i>0&&s>i)throw new Pe(s,`Corrupted free_page_head pointer ${s} (totalPages: ${i})`);const c=await this.acquirePage(s,t),l=this.getSlotDataView(c),u=eo(l,Er);if(u!==$e)throw new Pe(s,`Expected free page type 0x00, got 0x${u.toString(16)}`);const d=yt(l,Ir);if(d===s||i>0&&d>i)throw new Pe(s,`Corrupted next_free_page_id pointer ${d} in free page ${s}`);return Tt(n,fe,d),this.markDirty(0),Wn(l,0),this.markDirty(c),s}const r=i+1;Tt(n,re,r),this.markDirty(0);const o=await this.acquirePage(r,t),a=this.getSlotDataView(o);return Wn(a,0),this.markDirty(o),r})}allocateAndPinPage(){return this.allocatePage(!0)}async freePage(t,n=!1){if(this.validate_page_id(t),t<=1)throw new Error(`Cannot free reserved database page ${t}`);return this.with_allocation_lock(async()=>{const s=this.getSlotDataView(0),i=yt(s,re);if(i>0&&t>i)throw new Error(`Cannot free page ${t} beyond total pages ${i}`);const r=this.getResidentSlot(t);if(r!==-1){if(n)this.forceUnpinSlot(r);else if(this.isSlotPinned(r))throw new Error(`Cannot free pinned/active database page ${t}`)}const o=await this.acquirePage(t,!0);try{const a=this.getSlotDataView(o),c=Xe(a,0);if(c===$e){if(this.unassignSlot(o),n)return;throw new Error(`Double-free detected: page ${t} is already marked free`)}if(!n&&c===vn)throw new Error(`Cannot free system catalog page ${t}`);const l=yt(s,fe);lo(a,0,l),xt(this.uint8,o*4096+te,0,4096-te),this.io.isInTransaction()?await this.io.spillOrWriteSlot(o,t):await this.flushSlot(o),this.unassignSlot(o),this.clearDirty(o),this.setRefBit(o,0),Tt(s,fe,t),this.markDirty(0)}finally{this.unpinSlot(o)}})}async stepVm(t,n){let s=Xn(t,this.view,n);for(;s===L.PAGE_FAULT;){const i=t.cursor.pageId;await this.acquirePage(i),t.status=L.RUNNING,s=Xn(t,this.view,n)}return s}}async function sr(e){var u;const t=await e.getWalFrameCount();if(t===0)return{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0};const n=await e.readWalHeader();if(!n)return await e.truncateWal(0),{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0};try{Cs(n,!0)}catch{return await e.truncateWal(0),{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0}}const s=await e.readWalFrames(0,t),i=new Map,r=new Set;let o=0;for(const d of s){const h=Fi(d);if(!h.valid||!h.header)break;const{header:f}=h;if(f.frameSeq!==o+1)break;if(o++,i.has(f.txId)||i.set(f.txId,[]),f.frameType===os)r.add(f.txId);else if(f.frameType===rs||f.frameType===as){const g=new Uint8Array(d.buffer,d.byteOffset+Ve,4096),_=new Uint8Array(4096);_.set(g),i.get(f.txId).push({pageId:f.pageId,data:_,frameType:f.frameType})}}const a=new Map;let c=0,l=0;for(const[d,h]of i.entries())if(r.has(d)){c++;for(const f of h)f.pageId>0&&a.set(f.pageId,f.data)}else l++;if(a.size>0){const d=[];for(const[h,f]of a.entries())d.push({pageId:h,data:f});d.sort((h,f)=>h.pageId-f.pageId),await e.writePages(d)}return await((u=e.flush)==null?void 0:u.call(e)),await e.truncateWal(0),{frameCount:o,committedTxCount:c,abortedTxCount:l,replayedPageCount:a.size}}class Zo{constructor(t,n){N(this,"activeLease",null);N(this,"inFlightNonTxCount",0);N(this,"queue",[]);N(this,"leaseWaiters",[]);N(this,"nextLeaseId",1);N(this,"nextTxId",1);N(this,"crossTabLockName");N(this,"onSyncCrossTab");N(this,"releaseWebLock",null);this.crossTabLockName=t,this.onSyncCrossTab=n}hasWebLocks(){var t;return!!this.crossTabLockName&&typeof navigator<"u"&&typeof((t=navigator==null?void 0:navigator.locks)==null?void 0:t.request)=="function"}async acquireWebLock(){!this.hasWebLocks()||this.releaseWebLock||await new Promise(t=>{navigator.locks.request(this.crossTabLockName,{mode:"exclusive"},()=>new Promise(n=>{this.releaseWebLock=n,t()})).catch(()=>{t()})})}releaseCurrentWebLock(){if(this.releaseWebLock){const t=this.releaseWebLock;this.releaseWebLock=null,t()}}get isLeased(){return this.activeLease!==null}get currentLease(){return this.activeLease}async enqueue(t,n){if(this.activeLease&&n===this.activeLease.leaseId)return t();if(this.activeLease||this.leaseWaiters.length>0||this.hasWebLocks()&&this.inFlightNonTxCount>0)return new Promise((s,i)=>{this.queue.push(async()=>{this.inFlightNonTxCount++;try{this.hasWebLocks()&&this.inFlightNonTxCount===1&&(await this.acquireWebLock(),this.onSyncCrossTab&&await this.onSyncCrossTab());const r=await t();s(r)}catch(r){i(r)}finally{this.inFlightNonTxCount--,this.inFlightNonTxCount===0&&!this.activeLease&&this.releaseCurrentWebLock(),this.drain()}})});this.inFlightNonTxCount++;try{return this.hasWebLocks()&&this.inFlightNonTxCount===1&&(await this.acquireWebLock(),this.onSyncCrossTab&&await this.onSyncCrossTab()),await t()}finally{this.inFlightNonTxCount--,this.inFlightNonTxCount===0&&!this.activeLease&&this.releaseCurrentWebLock(),this.drain()}}async acquireExclusiveLease(){if(!this.activeLease&&this.inFlightNonTxCount===0&&this.queue.length===0){const t={leaseId:this.nextLeaseId++,txId:this.nextTxId++,createdAt:Date.now()};return this.activeLease=t,await this.acquireWebLock(),t}return new Promise(t=>{this.leaseWaiters.push({resolve:async n=>{await this.acquireWebLock(),t(n)}}),this.drain()})}releaseExclusiveLease(t){!this.activeLease||this.activeLease.leaseId!==t||(this.activeLease=null,this.releaseCurrentWebLock(),this.drain())}drain(){if(!this.activeLease){if(this.leaseWaiters.length>0){if(this.inFlightNonTxCount===0){const t=this.leaseWaiters.shift(),n={leaseId:this.nextLeaseId++,txId:this.nextTxId++,createdAt:Date.now()};this.activeLease=n,t.resolve(n)}return}for(;this.queue.length>0&&!this.activeLease&&this.leaseWaiters.length===0&&(!this.hasWebLocks()||this.inFlightNonTxCount===0);){const t=this.queue.shift();t&&t()}}}}class jo{constructor(t,n,s,i){N(this,"vfs");N(this,"pool");N(this,"io");N(this,"queue");N(this,"activeLease",null);N(this,"snapshotFrameCount",0);N(this,"snapshotWalFrameSeq",0);N(this,"slotSnapshots",new Map);N(this,"pinCountsSnapshot",null);N(this,"spilledPages",new Map);N(this,"committedWalPages",new Map);N(this,"walFrameSeq",0);N(this,"txCommitCount",0);N(this,"checkpointSeq",0);N(this,"instanceSalt",Math.floor(Math.random()*4294967295)>>>0||1);N(this,"expectedWalFrameCount",0);N(this,"lastDiskChangeCounter",0);N(this,"lastDiskSchemaVersion",0);N(this,"onCrossTabInvalidated");N(this,"idleTimer",null);N(this,"isClosed",!1);this.vfs=t,this.pool=n,this.io=s,this.queue=new Zo(i,()=>this.syncCrossTabState())}setOnCrossTabInvalidated(t){this.onCrossTabInvalidated=t}recordDiskPage1State(){const t=this.pool.getSlotDataView(0);this.lastDiskChangeCounter=t.getUint32(ye,!0),this.lastDiskSchemaVersion=t.getUint32(pe,!0)}async reloadFromDisk(t,n,s){this.pool.getPageBytesInSlot(0).set(t),this.pool.clearDirty(0),this.lastDiskChangeCounter=n,this.lastDiskSchemaVersion=s;for(let i=1;i<this.pool.slotCount;i++)this.pool.unassignSlot(i),this.pool.clearDirty(i),this.pool.pin_counts[i]=0;this.pool.pin_counts[0]=1,this.onCrossTabInvalidated&&await this.onCrossTabInvalidated()}async syncCrossTabState(t=!1){if(!t&&!this.queue.hasWebLocks())return;const n=await this.vfs.getWalFrameCount();let s=!1;if(n>0){const r=await this.vfs.readWalHeader();let o=0;if(r)try{o=Cs(r,!0).salt1}catch{o=0}(o!==this.instanceSalt||n!==this.expectedWalFrameCount)&&(s=!0,await sr(this.vfs),this.committedWalPages.clear(),this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0)}else this.expectedWalFrameCount>0&&(s=!0,this.committedWalPages.clear(),this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0);const[i]=await this.vfs.readPages([1]);if(i){const r=new DataView(i.buffer,i.byteOffset,i.byteLength),o=r.getUint32(ye,!0),a=r.getUint32(pe,!0);(s||o!==this.lastDiskChangeCounter||a!==this.lastDiskSchemaVersion)&&await this.reloadFromDisk(i,o,a)}}get leaseQueue(){return this.queue}isInTransaction(){return this.activeLease!==null}getActiveLeaseId(){return this.activeLease?this.activeLease.leaseId:null}getActiveTxId(){return this.activeLease?this.activeLease.txId:null}hasSpilledPage(t){return this.spilledPages.has(t)||this.committedWalPages.has(t)}getSpilledPage(t){const n=this.spilledPages.get(t)??this.committedWalPages.get(t);return n?new Uint8Array(n):null}onDirectPageWrite(t,n){if(this.committedWalPages.has(t)&&this.committedWalPages.set(t,new Uint8Array(n)),t===1){const s=new DataView(n.buffer,n.byteOffset,n.byteLength);this.lastDiskChangeCounter=s.getUint32(ye,!0),this.lastDiskSchemaVersion=s.getUint32(pe,!0)}}async spillUncommittedSlot(t,n){if(!this.activeLease){await this.io.writeSlot(t,n);return}this.io.stampSlotChecksum(t,n);const s=this.pool.getPageBytesInSlot(t),i=new Uint8Array(Oe);i.set(s),this.spilledPages.set(n,i);const r=this.pool.getSlotDataView(0).getUint32(re,!0),o=ws({frameType:as,flags:0,txId:this.activeLease.txId,pageId:n,dbSizePages:r,frameSeq:++this.walFrameSeq},i);await this.vfs.appendWalFrames([o]),this.expectedWalFrameCount=await this.vfs.getWalFrameCount()}async captureSavepoint(){const t=await this.vfs.getWalFrameCount(),n=new Map;for(let r=0;r<this.pool.slotCount;r++){const o=this.pool.getAssignedPage(r);if(o>0){const a=this.pool.isDirty(r),c=new Uint8Array(this.pool.getPageBytesInSlot(r));n.set(r,{pageId:o,dirty:a,data:c})}}const s=new Uint32Array(this.pool.pin_counts),i=new Map;for(const[r,o]of this.spilledPages.entries())i.set(r,new Uint8Array(o));return{frameCount:t,slotSnapshots:n,pinCounts:s,spilledPages:i,walFrameSeq:this.walFrameSeq}}async restoreSavepoint(t){for(let n=1;n<this.pool.slotCount;n++)this.pool.unassignSlot(n),this.pool.clearDirty(n);for(let n=0;n<this.pool.slotCount;n++){const s=t.slotSnapshots.get(n);s&&(this.pool.assignSlot(n,s.pageId),this.pool.getPageBytesInSlot(n).set(s.data),s.dirty?this.pool.markDirty(n):this.pool.clearDirty(n))}this.pool.pin_counts.set(t.pinCounts),this.spilledPages.clear();for(const[n,s]of t.spilledPages.entries())this.spilledPages.set(n,new Uint8Array(s));this.walFrameSeq=t.walFrameSeq,await this.vfs.truncateWal(t.frameCount),this.expectedWalFrameCount=t.frameCount}async begin(){const t=await this.queue.acquireExclusiveLease();this.activeLease=t,this.pauseIdleTimer();try{await this.syncCrossTabState();const n=await this.vfs.getWalFrameCount(),s=await this.vfs.readWalHeader();let i=!1;if(s&&n>0)try{i=Cs(s,!0).salt1===this.instanceSalt}catch{i=!1}i||await this.vfs.writeWalHeader(Ts({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt})),this.spilledPages.clear();const r=await this.captureSavepoint();return this.snapshotFrameCount=r.frameCount,this.snapshotWalFrameSeq=r.walFrameSeq,this.slotSnapshots=r.slotSnapshots,this.pinCountsSnapshot=r.pinCounts,t}catch(n){throw this.activeLease=null,this.queue.releaseExclusiveLease(t.leaseId),n}}async commit(t){var o,a;if(!this.activeLease||this.activeLease.leaseId!==t)return;const n=this.activeLease.txId,s=[],i=this.pool.getSlotDataView(0).getUint32(re,!0);for(const[c,l]of this.spilledPages.entries())this.committedWalPages.set(c,l);for(let c=0;c<this.pool.slotCount;c++)if(this.pool.isDirty(c)){const l=this.pool.getAssignedPage(c);if(l>0){this.io.stampSlotChecksum(c,l);const u=this.pool.getPageBytesInSlot(c),d=new Uint8Array(Oe);d.set(u),this.committedWalPages.set(l,d),this.pool.clearDirty(c),s.push(ws({frameType:rs,flags:0,txId:n,pageId:l,dbSizePages:i,frameSeq:++this.walFrameSeq},d))}}s.push(ws({frameType:os,flags:0,txId:n,pageId:0,dbSizePages:i,frameSeq:++this.walFrameSeq})),await this.vfs.appendWalFrames(s),await((a=(o=this.vfs).flushWal)==null?void 0:a.call(o));const r=await this.vfs.getWalFrameCount();this.expectedWalFrameCount=r,this.activeLease=null,this.spilledPages.clear(),this.slotSnapshots.clear(),this.pinCountsSnapshot=null,this.txCommitCount++,this.queue.releaseExclusiveLease(t),this.scheduleIdleTimer(),(r>=256||this.txCommitCount>=100)&&this.queue.enqueue(()=>this.executeCheckpoint())}async rollback(t){!this.activeLease||this.activeLease.leaseId!==t||(await this.restoreSavepoint({frameCount:this.snapshotFrameCount,slotSnapshots:this.slotSnapshots,pinCounts:this.pinCountsSnapshot??new Uint32Array(this.pool.pin_counts),spilledPages:new Map,walFrameSeq:this.snapshotWalFrameSeq}),this.activeLease=null,this.spilledPages.clear(),this.slotSnapshots.clear(),this.pinCountsSnapshot=null,this.queue.releaseExclusiveLease(t),this.scheduleIdleTimer())}async checkpoint(){return this.queue.enqueue(()=>this.executeCheckpoint())}async executeCheckpoint(){var o,a;const t=await this.vfs.getWalFrameCount(),n=new Map;if(t>0){const c=await this.vfs.readWalFrames(0,t),l=new Map,u=new Set;for(const d of c){const h=Fi(d);if(!h.valid||!h.header)break;const{frameType:f,txId:g,pageId:_}=h.header;if(l.has(g)||l.set(g,[]),f===os)u.add(g);else if(f===rs||f===as){const I=new Uint8Array(d.buffer,d.byteOffset+Ve,Oe),p=new Uint8Array(Oe);p.set(I),l.get(g).push({pageId:_,data:p})}}for(const[d,h]of l.entries())if(u.has(d))for(const f of h)f.pageId>0&&n.set(f.pageId,f.data)}for(const[c,l]of this.committedWalPages.entries())n.set(c,l);const s=new Map;for(let c=0;c<this.pool.slotCount;c++)if(this.pool.isDirty(c)){const l=this.pool.getAssignedPage(c);if(l>0){this.io.stampSlotChecksum(c,l);const u=this.pool.getPageBytesInSlot(c),d=new Uint8Array(Oe);d.set(u),s.set(l,{slotIdx:c,data:d})}}const i=new Set([...n.keys(),...s.keys()]),r=[];for(const c of i)if(s.has(c)){const{slotIdx:l,data:u}=s.get(c);r.push({pageId:c,data:u}),this.pool.clearDirty(l)}else r.push({pageId:c,data:n.get(c)});return r.length>0&&(r.sort((c,l)=>c.pageId-l.pageId),await this.vfs.writePages(r)),await((a=(o=this.vfs).flush)==null?void 0:a.call(o)),await this.vfs.truncateWal(0),this.committedWalPages.clear(),this.checkpointSeq++,this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0,this.recordDiskPage1State(),await this.vfs.writeWalHeader(Ts({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt})),{pagesWritten:r.length}}async resetWalAfterImport(){this.spilledPages.clear(),this.committedWalPages.clear(),await this.vfs.truncateWal(0),this.checkpointSeq++,this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0,this.recordDiskPage1State(),await this.vfs.writeWalHeader(Ts({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt}))}scheduleIdleTimer(){this.isClosed||(this.pauseIdleTimer(),this.idleTimer=setTimeout(()=>{this.checkpoint().catch(()=>{})},5e3))}pauseIdleTimer(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null)}async close(){this.isClosed=!0,this.pauseIdleTimer(),await this.checkpoint()}}const Ko=new Set(["count","sum","avg","min","max"]),Jo=new Set(["upper","lower","length","substr","trim","abs","round","floor","ceil","concat","coalesce"]);function de(e){return Ko.has(e.toLowerCase())}function zo(e){return Jo.has(e.toLowerCase())}function dc(e){return de(e)||zo(e)}function rn(e,t){if(t==="where"){if(e.type==="fn"&&de(e.name))throw new _s(e.name);if(e.type==="binary"&&(rn(e.left,t),rn(e.right,t)),e.type==="fn")for(const n of e.args)rn(n,t)}}function _c(e){const t=[];let n=0;const s=e.length;for(;n<s;){const i=e[n];if(/\s/.test(i)){n++;continue}if(/[0-9]/.test(i)||i==="."&&n+1<s&&/[0-9]/.test(e[n+1])){const r=n;let o=!1;for(;n<s&&(/[0-9]/.test(e[n])||e[n]==="."&&!o);)e[n]==="."&&(o=!0),n++;t.push({type:"NUMBER",value:e.slice(r,n),pos:r});continue}if(i==="'"||i==='"'){const r=i,o=n;n++;let a="";for(;n<s&&e[n]!==r;)e[n]==="\\"&&n+1<s&&n++,a+=e[n],n++;n<s&&e[n]===r&&n++,t.push({type:"STRING",value:a,pos:o});continue}if(i==="("){t.push({type:"LPAREN",value:"(",pos:n++});continue}if(i===")"){t.push({type:"RPAREN",value:")",pos:n++});continue}if(i===","){t.push({type:"COMMA",value:",",pos:n++});continue}if(i==="<"){if(n+1<s&&e[n+1]==="="){t.push({type:"OP",value:"<=",pos:n}),n+=2;continue}if(n+1<s&&e[n+1]===">"){t.push({type:"OP",value:"!=",pos:n}),n+=2;continue}t.push({type:"OP",value:"<",pos:n++});continue}if(i===">"){if(n+1<s&&e[n+1]==="="){t.push({type:"OP",value:">=",pos:n}),n+=2;continue}t.push({type:"OP",value:">",pos:n++});continue}if(i==="="){if(n+1<s&&e[n+1]==="="){t.push({type:"OP",value:"=",pos:n}),n+=2;continue}t.push({type:"OP",value:"=",pos:n++});continue}if(i==="!"&&n+1<s&&e[n+1]==="="){t.push({type:"OP",value:"!=",pos:n}),n+=2;continue}if(i==="+"||i==="-"||i==="/"||i==="%"){t.push({type:"OP",value:i,pos:n++});continue}if(i==="*"){t.push({type:"STAR",value:"*",pos:n++});continue}if(/[a-zA-Z_]/.test(i)){const r=n;for(;n<s;)if(/[a-zA-Z0-9_]/.test(e[n]))n++;else if(e[n]==="."&&n+1<s&&/[a-zA-Z_]/.test(e[n+1]))n+=2;else break;const o=e.slice(r,n);t.push({type:"IDENT",value:o,pos:r});continue}n++}return t.push({type:"EOF",value:"",pos:s}),t}class mc{constructor(t){N(this,"tokens");N(this,"cursor",0);this.tokens=t}peek(){return this.tokens[this.cursor]??{type:"EOF",value:"",pos:0}}consume(){const t=this.peek();return this.cursor++,t}match(t,n){const s=this.peek();return s.type!==t||n!==void 0&&s.value.toLowerCase()!==n.toLowerCase()?!1:(this.cursor++,!0)}getPrecedence(t){if(t.type==="OP"||t.type==="STAR"){if(t.value==="="||t.value==="!="||t.value==="<"||t.value==="<="||t.value===">"||t.value===">=")return 5;if(t.value==="+"||t.value==="-")return 10;if(t.value==="*"||t.value==="/"||t.value==="%")return 20}return 0}parse(t=0){let n=this.parsePrimary();for(;;){const s=this.peek(),i=this.getPrecedence(s);if(i===0||i<=t)break;this.consume();const r=this.parse(i);n={type:"binary",op:s.value,left:n,right:r}}return n}parsePrimary(){const t=this.peek();if(t.type==="OP"&&t.value==="-"){this.consume();const n=this.parse(25);return n.type==="literal"&&typeof n.value=="number"?{type:"literal",value:-n.value}:{type:"binary",op:"-",left:{type:"literal",value:0},right:n}}if(this.match("NUMBER"))return{type:"literal",value:Number(t.value)};if(this.match("STRING"))return{type:"literal",value:t.value};if(this.match("LPAREN")){const n=this.parse(0);if(!this.match("RPAREN"))throw new Error("Unclosed parenthesis in expression");return n}if(this.match("STAR"))return{type:"col",name:"*"};if(t.type==="IDENT"){this.consume();const n=t.value,s=n.toLowerCase();if(s==="null"&&this.peek().type!=="LPAREN")return{type:"literal",value:null};if(s==="true"&&this.peek().type!=="LPAREN")return{type:"literal",value:!0};if(s==="false"&&this.peek().type!=="LPAREN")return{type:"literal",value:!1};if(this.match("LPAREN")){const i=[];if(!this.match("RPAREN")){for(;;)if(i.push(this.parse(0)),!this.match("COMMA")){if(this.match("RPAREN"))break;throw new Error(`Expected ',' or ')' in argument list of function ${n}`)}}return{type:"fn",name:s,args:i}}return{type:"col",name:n}}throw new Error(`Unexpected token "${t.value}" in expression at position ${t.pos}`)}}function At(e){const t=e.trim();if(!t)throw new Error("Cannot parse empty expression");const n=_c(t);return new mc(n).parse(0)}function Ec(e){let t=0,n=null;const s=e.length;for(let i=0;i<s;i++){const r=e[i];if(n){r===n&&e[i-1]!=="\\"&&(n=null);continue}if(r==="'"||r==='"'){n=r;continue}if(r==="("){t++;continue}if(r===")"){t--;continue}if(t===0&&(r===" "||r===" ")&&i+4<s&&e.slice(i+1,i+3).toLowerCase()==="as"&&/\s/.test(e[i+3])){const o=e.slice(0,i).trim(),a=e.slice(i+4).trim();return{exprStr:o,explicitAlias:a}}}return{exprStr:e.trim()}}function vt(e){if(e.type==="col")return e.name.includes(".")?e.name.slice(e.name.lastIndexOf(".")+1):e.name;if(e.type==="fn"){if(e.args.length>0&&e.args[0].type==="col"&&e.args[0].name!=="*"){const t=e.args[0].name.includes(".")?e.args[0].name.slice(e.args[0].name.lastIndexOf(".")+1):e.args[0].name;return`${e.name}_${t}`}return e.name}return e.type==="binary"?"expr":"val"}function qs(e){const{exprStr:t,explicitAlias:n}=Ec(e),s=At(t),i=n&&n.length>0?n:vt(s);return{expr:s,alias:i}}class it{constructor(t){N(this,"node");this.node=t}add(t){return new it({type:"binary",op:"+",left:this.node,right:jt(t)})}sub(t){return new it({type:"binary",op:"-",left:this.node,right:jt(t)})}mul(t){return new it({type:"binary",op:"*",left:this.node,right:jt(t)})}div(t){return new it({type:"binary",op:"/",left:this.node,right:jt(t)})}mod(t){return new it({type:"binary",op:"%",left:this.node,right:jt(t)})}eq(t){return new it({type:"binary",op:"=",left:this.node,right:jt(t)})}ne(t){return new it({type:"binary",op:"!=",left:this.node,right:jt(t)})}lt(t){return new it({type:"binary",op:"<",left:this.node,right:jt(t)})}lte(t){return new it({type:"binary",op:"<=",left:this.node,right:jt(t)})}gt(t){return new it({type:"binary",op:">",left:this.node,right:jt(t)})}gte(t){return new it({type:"binary",op:">=",left:this.node,right:jt(t)})}as(t){return{expr:this.node,alias:t}}}function jt(e){return e===null?{type:"literal",value:null}:typeof e=="boolean"?{type:"literal",value:e}:e instanceof it?e.node:typeof e=="number"?{type:"literal",value:e}:typeof e=="string"?{type:"literal",value:e}:e}function ir(e){return new it({type:"col",name:e})}function ta(e){return new it(At(e))}const Ic=ta;function Pt(e,t){return new it({type:"fn",name:e.toLowerCase(),args:t.map(n=>typeof n=="string"&&!n.startsWith("'")?ir(n).node:jt(n))})}const ea=(e,...t)=>Pt(e,t),pc={upper:e=>Pt("upper",[e]),lower:e=>Pt("lower",[e]),length:e=>Pt("length",[e]),substr:(e,t,n)=>{const s=[e,t];return n!==void 0&&s.push(n),Pt("substr",s)},trim:e=>Pt("trim",[e]),abs:e=>Pt("abs",[e]),round:e=>Pt("round",[e]),floor:e=>Pt("floor",[e]),ceil:e=>Pt("ceil",[e]),count:e=>Pt("count",[e??ir("*").node]),sum:e=>Pt("sum",[e]),avg:e=>Pt("avg",[e]),min:e=>Pt("min",[e]),max:e=>Pt("max",[e]),concat:(...e)=>Pt("concat",e),coalesce:(...e)=>Pt("coalesce",e)};for(const[e,t]of Object.entries(pc))Object.defineProperty(ea,e,{value:t,writable:!0,enumerable:!0,configurable:!0});const yc=ea;function kt(e,t,n){switch(e.type){case"literal":return e.value;case"col":return e.name==="*"?null:t[e.name]!==void 0?t[e.name]:null;case"binary":{const s=kt(e.left,t,n),i=kt(e.right,t,n);if(s===null||i===null||s===void 0||i===void 0)return null;if(e.op==="="||e.op==="!="||e.op==="<"||e.op==="<="||e.op===">"||e.op===">="){const a=typeof s=="string"&&typeof i=="string"?s<i?-1:s>i?1:0:Number(s)<Number(i)?-1:Number(s)>Number(i)?1:0;switch(e.op){case"=":return a===0?1:0;case"!=":return a!==0?1:0;case"<":return a<0?1:0;case"<=":return a<=0?1:0;case">":return a>0?1:0;case">=":return a>=0?1:0}}const r=Number(s),o=Number(i);switch(e.op){case"+":return r+o;case"-":return r-o;case"*":return r*o;case"/":return o===0?null:r/o;case"%":return o===0?null:r%o}return null}case"fn":{const s=e.name.toLowerCase();if(de(s)){if(t[s]!==void 0)return t[s];const r=e.args[0];if(r&&r.type==="col"){const o=`${s}_${r.name}`;if(t[o]!==void 0)return t[o]}return null}const i=e.args.map(r=>kt(r,t,n));switch(s){case"upper":return i[0]!==null&&i[0]!==void 0?String(i[0]).toUpperCase():null;case"lower":return i[0]!==null&&i[0]!==void 0?String(i[0]).toLowerCase():null;case"length":return i[0]!==null&&i[0]!==void 0?String(i[0]).length:null;case"trim":return i[0]!==null&&i[0]!==void 0?String(i[0]).trim():null;case"substr":{if(i[0]===null||i[0]===void 0)return null;const r=String(i[0]),o=Math.max(0,(Number(i[1])||1)-1),a=i[2]!==null&&i[2]!==void 0?Number(i[2]):void 0;return a!==void 0?r.substring(o,o+a):r.substring(o)}case"abs":return i[0]!==null&&i[0]!==void 0?Math.abs(Number(i[0])):null;case"round":return i[0]!==null&&i[0]!==void 0?Math.round(Number(i[0])):null;case"floor":return i[0]!==null&&i[0]!==void 0?Math.floor(Number(i[0])):null;case"ceil":return i[0]!==null&&i[0]!==void 0?Math.ceil(Number(i[0])):null;case"concat":return i.some(r=>r==null)?null:i.map(String).join("");case"coalesce":{for(const r of i)if(r!=null)return r;return null}case"starts_with":case"startswith":return i[0]!==null&&i[0]!==void 0&&i[1]!==null&&i[1]!==void 0?String(i[0]).startsWith(String(i[1]))?1:0:null;case"ends_with":case"endswith":return i[0]!==null&&i[0]!==void 0&&i[1]!==null&&i[1]!==void 0?String(i[0]).endsWith(String(i[1]))?1:0:null;case"contains":return i[0]!==null&&i[0]!==void 0&&i[1]!==null&&i[1]!==void 0?String(i[0]).includes(String(i[1]))?1:0:null;case"like":return i[0]!==null&&i[0]!==void 0&&i[1]!==null&&i[1]!==void 0?ze(String(i[0]),String(i[1]))?1:0:null;default:{let r;if(typeof n=="function")r=n(s);else if(n instanceof Map){const o=n.get(s);r=typeof o=="function"?o:o==null?void 0:o.call}else if(n&&typeof n=="object"){const o=n[s];r=typeof o=="function"?o:o==null?void 0:o.call}if(r)return r(...i);throw new Pi(s)}}}}}const Cn=.5,Ws=.05,_e=.02;function na(e){const t=[];function n(i){if(i.colName&&t.push(i.colName),i.expr&&s(i.expr),i.children)for(const r of i.children)n(r);i.child&&n(i.child)}function s(i){if(i&&(i.type==="col"&&i.name&&t.push(i.name),i.left&&s(i.left),i.right&&s(i.right),i.args&&Array.isArray(i.args)))for(const r of i.args)s(r)}return n(e),t}function wn(e,t){const n=na(e),s=new Set;for(const i of n){const r=gt(i,t);r&&s.add(r.tableIdx)}return s}function rr(e,t){var s,i;const n=Math.max(1,t.rowCountEstimate||10);if(e.type==="cmp"){const r=e.op??"=";if(r==="="){const o=(s=e.colName)==null?void 0:s.toLowerCase(),a=t.columns.findIndex(c=>c.name.toLowerCase()===o);if(a!==-1&&t.indexes){for(const c of t.indexes)if(c.columnCount===1&&c.columnIndices[0]===a)return(c.flags&(rt.PRIMARY|rt.UNIQUE))!==0?1/n:Math.min(.2,5/n)}return .1}if(r==="<"||r==="<="||r===">"||r===">=")return .33;if(r==="!="||r==="<>")return .9;if(r==="like"||r==="contains"||r==="starts_with"||r==="ends_with")return .15}if(e.type==="in"){const r=Math.max(1,((i=e.values)==null?void 0:i.length)||1);return Math.min(1,r*.05)}return e.type==="null"?e.isNull?.05:.95:.2}function me(e,t,n,s){var d;const i=Math.max(1,e.rowCountEstimate||10);let r=1;for(const h of t)r*=rr(h,e);const o=Math.max(1,Math.round(i*r)),a=n!==void 0&&n.length>0,c=a&&o>1?o*Math.log2(o)*_e:0,l=Ys(e,t,t,n);if(l){const h=l.scanType==="point",f=l.scanType==="multi_point",g=l.satisfiesOrderBy===!0,_=g&&s!==void 0&&s>0?Math.min(s,o):o;let I=Cn;return h?(I+=1*_e,{cost:I,rows:1,scanType:"IndexScan",indexName:l.index.name,isOrderSatisfied:!0,sortCostAvoided:a?c:void 0}):f?(I=(((d=l.inValues)==null?void 0:d.length)||1)*Cn+_*_e,!g&&a&&(I+=c),{cost:I,rows:_,scanType:"IndexScan",indexName:l.index.name,isOrderSatisfied:g,sortCostAvoided:g?c:void 0}):(I+=_*Ws+_*_e,!g&&a&&(I+=c),{cost:I,rows:_,scanType:"IndexScan",indexName:l.index.name,isOrderSatisfied:g,sortCostAvoided:g?c:void 0})}let u=i*_e;return a&&(u+=c),{cost:u,rows:o,scanType:"TableScan",isOrderSatisfied:!1}}function jn(e,t){if(!e.indexes||e.indexes.length===0)return null;const n=e.columns.findIndex(r=>r.name.toLowerCase()===t.toLowerCase());if(n===-1)return null;let s=null,i=999;for(const r of e.indexes)if(r.columnCount===1&&r.columnIndices[0]===n){const o=(r.flags&rt.PRIMARY)!==0,a=(r.flags&rt.UNIQUE)!==0,c=o?1:a?2:3;c<i&&(i=c,s={index:r,isUnique:o||a})}return s}function Hs(e,t){const n=t.length,s=[],i=Array.from({length:n},()=>new Set);if(!e.joinedTables)return{edges:s,dependencies:i};for(let r=0;r<e.joinedTables.length;r++){const o=e.joinedTables[r],a=r+1,c=gt(o.leftCol,t),l=gt(o.rightCol,t);if(c&&l&&(s.push({tableA:c.tableIdx,tableB:l.tableIdx,colA:c.col.name,colB:l.col.name,op:o.op,type:o.type,declaredRightTable:a}),o.type==="left")){const u=c.tableIdx===a?l.tableIdx:c.tableIdx;i[a].add(u)}}return{edges:s,dependencies:i}}function Kn(e,t){if(e.selectExprs&&e.selectExprs.length>0)return e.selectExprs;const n=new Set,s=new Set;for(const r of t)for(const o of r.columns)n.has(o.name.toLowerCase())&&s.add(o.name.toLowerCase()),n.add(o.name.toLowerCase());const i=[];for(const r of t)for(const o of r.columns){const a=s.has(o.name.toLowerCase())?`${r.name}.${o.name}`:o.name;i.push({expr:{type:"col",name:`${r.name}.${o.name}`},alias:a})}return i}function Vs(e,t,n,s){const i=e.length,r=[];for(let o=1;o<i;o++){const a=e[o],c=t[a],l=e.slice(0,o),u=n.find(_=>_.tableA===a&&l.includes(_.tableB)||_.tableB===a&&l.includes(_.tableA));let d,h,f="=",g="inner";if(u)f=u.op,g=u.type,u.tableA===a?(h=`${c.name}.${u.colA}`,d=`${t[u.tableB].name}.${u.colB}`):(h=`${c.name}.${u.colB}`,d=`${t[u.tableA].name}.${u.colA}`);else{const _=s==null?void 0:s.find(I=>I.table.name===c.name);d=_?_.leftCol:`${t[e[0]].name}.id`,h=_?_.rightCol:`${c.name}.id`,f=_?_.op:"=",g=_?_.type:"inner"}r.push({type:g,table:c,cursor:o,leftCol:d,op:f,rightCol:h})}return r}function or(e,t,n,s,i){if(!s||s.length===0)return!1;for(const r of s){if(r.direction==="desc")return!1;const o=r.colName;if(!o)return!1;let a=gt(o,n);if(!a&&i){const c=i.find(l=>l.alias===o);c&&c.expr.type==="col"&&(a=gt(c.expr.name,n))}if(!a||a.tableIdx!==t)return!1}return!0}function ar(e,t){var n;if(e.type==="null")return 1;if(e.type==="cmp"){const s=e.op??"=";if(s==="like"||s==="not like")return(typeof e.value=="string"?e.value:"").startsWith("%")?25:15;let i=!1;if(t&&e.colName){const r=e.colName.toLowerCase(),o=r.includes(".")?r.slice(r.lastIndexOf(".")+1):r;for(const a of t){const c=a.columns.find(l=>l.name.toLowerCase()===o);if(c){i=c.type===1||c.type===2||c.type===3;break}}}else typeof e.value=="number"&&(i=!0);return s==="="||s==="=="?i?2:4:i?3:6}return e.type==="in"?(((n=e.values)==null?void 0:n.length)??0)<=3?5:10:e.type==="expr"?40:e.type==="and"||e.type==="or"?15:e.type==="not"?8:10}function lr(e,t){if(!e||e.length===0)return{filters:[],isAlwaysFalse:!1,isAlwaysTrue:!0,metrics:{originalCount:0,optimizedCount:0,isAlwaysFalse:!1,isAlwaysTrue:!0,eliminatedFiltersCount:0,reordered:!1}};const n=e.length,s=[];for(const d of e)d.type==="and"&&Array.isArray(d.children)?s.push(...d.children):s.push(d);const i=new Map,r=[];for(const d of s)if(d.colName){const h=d.colName.toLowerCase();i.has(h)||i.set(h,[]),i.get(h).push(d)}else r.push(d);for(const[d,h]of i.entries()){const f=Tc(h);if(f)return{filters:[],isAlwaysFalse:!0,isAlwaysTrue:!1,metrics:{originalCount:n,optimizedCount:0,isAlwaysFalse:!0,isAlwaysTrue:!1,contradictionReason:`Contradiction on column "${d}": ${f}`,eliminatedFiltersCount:n,reordered:!1}}}const o=[];let a=0;for(const[,d]of i.entries()){const h=Cc(d);a+=d.length-h.length,o.push(...h)}o.push(...r);const c=o.map(d=>cr(d)).join("|");o.sort((d,h)=>{const f=ar(d,t),g=ar(h,t);return f-g});const l=o.map(d=>cr(d)).join("|"),u=c!==l;return{filters:o,isAlwaysFalse:!1,isAlwaysTrue:o.length===0,metrics:{originalCount:n,optimizedCount:o.length,isAlwaysFalse:!1,isAlwaysTrue:o.length===0,eliminatedFiltersCount:a,reordered:u}}}function Tc(e){let t=!1,n=!1;const s=[];let i=null,r=null,o=null;for(const a of e){if(a.type==="null"&&(a.isNull===!0&&(t=!0),a.isNull===!1&&(n=!0)),a.type==="cmp"){const c=a.op??"=",l=a.value;c==="="&&l!==null&&l!==void 0&&s.push(l),typeof l=="number"&&(c===">"?(!i||l>i.val||l===i.val&&!i.strict)&&(i={val:l,strict:!0}):c===">="?(!i||l>i.val)&&(i={val:l,strict:!1}):c==="<"?(!r||l<r.val||l===r.val&&!r.strict)&&(r={val:l,strict:!0}):c==="<="&&(!r||l<r.val)&&(r={val:l,strict:!1}))}if(a.type==="in"&&!a.notIn){if(!a.values||a.values.length===0)return"Empty IN () list";const c=new Set(a.values);if(!o)o=c;else{const l=new Set([...o].filter(u=>c.has(u)));if(l.size===0)return"Mutually exclusive IN lists with no common values";o=l}}}if(t&&n)return"Conflicting IS NULL and IS NOT NULL";if(t&&(s.length>0||i||r))return"Conflicting IS NULL and literal comparison";if(s.length>1){const a=s[0];for(let c=1;c<s.length;c++)if(s[c]!==a)return`Conflicting equality values (${a} !== ${s[c]})`}if(s.length>0&&(i||r)){const a=s[0];if(typeof a=="number"){if(i&&(i.strict?a<=i.val:a<i.val))return`Equality value ${a} violates lower bound ${i.strict?">":">="} ${i.val}`;if(r&&(r.strict?a>=r.val:a>r.val))return`Equality value ${a} violates upper bound ${r.strict?"<":"<="} ${r.val}`}}if(s.length>0&&o){const a=s[0];if(!o.has(a))return`Equality value ${a} not present in IN list`}if(i&&r){if(i.val>r.val)return`Lower bound ${i.val} is greater than upper bound ${r.val}`;if(i.val===r.val&&(i.strict||r.strict))return`Strict range bounds empty at ${i.val}`}return null}function Cc(e){const t=[],n=new Set;let s=!1,i;for(const a of e)if(a.type==="cmp"&&(a.op==="="||a.op===void 0)&&a.value!==null&&a.value!==void 0){s=!0,i=a.value;break}let r=null,o=null;for(const a of e)if(a.type==="cmp"&&typeof a.value=="number"){const c=a.op??"=",l=a.value;c===">"?(!r||l>r.val||l===r.val&&!r.strict)&&(r={val:l,strict:!0,filter:a}):c===">="?(!r||l>r.val)&&(r={val:l,strict:!1,filter:a}):c==="<"?(!o||l<o.val||l===o.val&&!o.strict)&&(o={val:l,strict:!0,filter:a}):c==="<="&&(!o||l<o.val)&&(o={val:l,strict:!1,filter:a})}for(const a of e){const c=cr(a);if(!n.has(c)&&!(a.type==="null"&&a.isNull===!1&&s)&&!(a.type==="in"&&!a.notIn&&s&&Array.isArray(a.values)&&a.values.includes(i))){if(a.type==="cmp"&&typeof a.value=="number"){const l=a.op??"=";if(l===">"||l===">="){if(r&&a!==r.filter)continue}else if((l==="<"||l==="<=")&&o&&a!==o.filter)continue}n.add(c),t.push(a)}}return t}function cr(e){return`${e.type}:${e.colName??""}:${e.isNull??""}:${e.op??""}:${String(e.value??"")}:${e.notIn??""}:${JSON.stringify(e.values??"")}`}function sa(e,t){const n=[...e],s=o=>o.toLowerCase(),i=o=>{const a=o.lastIndexOf(".");return a>=0?o.slice(a+1).toLowerCase():o.toLowerCase()},r=o=>{const a=s(o),c=i(o);for(const l of e)if(l.type==="cmp"&&(l.op==="="||l.op==="=="||l.op===void 0)&&l.colName&&l.value!==null&&l.value!==void 0){const u=s(l.colName),d=i(l.colName);if(u===a||d===a||u===c)return l.value}};for(const o of t){if(o.type!=="inner"&&o.type!=="left"||o.op!=="="&&o.op!=="==")continue;const a=r(o.leftCol);if(a!==void 0&&n.push({type:"cmp",colName:o.rightCol,op:"=",value:a}),o.type==="inner"){const c=r(o.rightCol);c!==void 0&&n.push({type:"cmp",colName:o.leftCol,op:"=",value:c})}}return n}class $s{constructor(t){N(this,"name","cost");N(this,"indexSeekCost");N(this,"indexNextCost");N(this,"rowEvalCost");this.indexSeekCost=(t==null?void 0:t.indexSeekCost)??Cn,this.indexNextCost=(t==null?void 0:t.indexNextCost)??Ws,this.rowEvalCost=(t==null?void 0:t.rowEvalCost)??_e}optimize(t){var R,A;const n=[t.table,...((R=t.joinedTables)==null?void 0:R.map(b=>b.table))??[]],s=n.length,i=lr(t.filters,n);if(i.isAlwaysFalse)return{plan:{...t,filters:[]},orderedTables:n,metrics:null,isAlwaysFalse:!0,whereMetrics:i.metrics};let r=i.filters,o=i.metrics;if(t.joinedTables&&t.joinedTables.length>0){const b=sa(r,t.joinedTables);if(b.length>r.length){const k=lr(b,n);if(k.isAlwaysFalse)return{plan:{...t,filters:[]},orderedTables:n,metrics:null,isAlwaysFalse:!0,whereMetrics:k.metrics};r=k.filters,o=k.metrics}}if(s<=1||!t.joinedTables||t.joinedTables.length===0){const b=new Map;b.set(0,r);const k=me(t.table,r,t.orderBy,t.limit);return{plan:{...t,filters:r},orderedTables:[t.table],metrics:{totalCost:k.cost,estimatedRows:k.rows,joinOrder:[t.table.name],singleTableFilters:b,crossFilters:[],tableScanTypes:[k.scanType],tableIndexNames:[k.indexName],isOrderSatisfied:k.isOrderSatisfied,sortCostAvoided:k.sortCostAvoided},isAlwaysFalse:!1,isAlwaysTrue:o.isAlwaysTrue,whereMetrics:o,isOrderSatisfied:k.isOrderSatisfied,sortCostAvoided:k.sortCostAvoided}}const a=ne(r),c=Sn(a),l=new Map,u=[];for(let b=0;b<s;b++)l.set(b,[]);for(const b of c){const k=wn(b,n);if(k.size===1){const V=k.values().next().value;V!==void 0&&((A=l.get(V))==null||A.push(b))}else u.push(b)}if(s<=1||!t.joinedTables||t.joinedTables.length===0){const b=me(n[0],l.get(0)??[]);return{plan:t,orderedTables:n,metrics:{totalCost:b.cost,estimatedRows:b.rows,joinOrder:[n[0].name],singleTableFilters:l,crossFilters:u,tableScanTypes:[b.scanType],tableIndexNames:[b.indexName]}}}const{edges:d,dependencies:h}=Hs(t,n),f=new Map;for(let b=0;b<s;b++)if(h[b].size===0){const k=or(n[b],b,n,t.orderBy,t.selectExprs),V=k?t.orderBy.map(G=>{const q=G.colName??"",Rt=q.includes(".")?q.slice(q.lastIndexOf(".")+1):q;return{...G,colName:Rt}}):void 0,j=me(n[b],l.get(b)??[],V,k?t.limit:void 0),K=1<<b;f.set(K,{order:[b],cost:j.cost,rows:j.rows,scanTypes:[j.scanType],indexNames:[j.indexName],edgesUsed:[],isOrderSatisfied:j.isOrderSatisfied,sortCostAvoided:j.sortCostAvoided})}const g=1<<s;for(let b=2;b<=s;b++)for(let k=1;k<g;k++)if(wc(k)===b)for(let V=0;V<s;V++){if(!(k&1<<V))continue;const j=k^1<<V,K=f.get(j);if(!K)continue;let G=!0;for(const De of h[V])if(!(j&1<<De)){G=!1;break}if(!G)continue;const q=this.evaluateJoinStep(K.rows,n[V],V,d,K.order,l.get(V)??[]),Rt=K.cost+q.stepCost,dt=f.get(k);let _t=!1,On=Rt,Pn=dt?dt.cost:0;const bn=K.isOrderSatisfied===!0,on=(dt==null?void 0:dt.isOrderSatisfied)===!0;if(b===s&&t.orderBy&&t.orderBy.length>0&&(!bn&&q.newRows>1&&(On+=q.newRows*Math.log2(q.newRows)*this.rowEvalCost),dt&&!on&&dt.rows>1&&(Pn+=dt.rows*Math.log2(dt.rows)*this.rowEvalCost)),!dt)_t=!0;else if(bn&&!on)_t=!0;else if(!bn&&on)_t=!1;else{const De=K.scanTypes.filter(Qe=>Qe==="IndexScan").length+(q.scanType==="IndexScan"?1:0),es=dt.scanTypes.filter(Qe=>Qe==="IndexScan").length;if(De>es&&On<=Pn*1.2)_t=!0;else if(De<es)_t=!1;else if(On<Pn*.75)_t=!0;else if(Pn<On*.75)_t=!1;else{const Qe=K.order[0]===0,Nn=dt.order[0]===0;if(Qe&&!Nn)_t=!0;else if(!Qe&&Nn)_t=!1;else{const ce=K.order.filter(Ln=>Ln>V).length,zs=dt.order.filter((Ln,ti)=>Ln>ti).length;ce<zs&&(_t=!0)}}}_t&&f.set(k,{order:[...K.order,V],cost:Rt,rows:q.newRows,scanTypes:[...K.scanTypes,q.scanType],indexNames:[...K.indexNames,q.indexName],edgesUsed:[...K.edgesUsed,q.matchedEdge],isOrderSatisfied:K.isOrderSatisfied,sortCostAvoided:K.sortCostAvoided})}const _=(1<<s)-1,I=f.get(_);let p,y,T,O,w;I?(p=I.order,y=I.cost,T=I.rows,O=I.scanTypes,w=I.indexNames):(p=Array.from({length:s},(b,k)=>k),y=999999,T=100,O=Array.from({length:s},()=>"TableScan"),w=Array.from({length:s},()=>{}));const C=p.map(b=>n[b]),B=Vs(p,n,d,t.joinedTables),P=Kn(t,n),U=(I==null?void 0:I.isOrderSatisfied)===!0,Q=U&&t.orderBy&&t.orderBy.length>0&&T>1?T*Math.log2(T)*this.rowEvalCost:void 0;return{plan:{...t,table:C[0],joinedTables:B,selectExprs:P,filters:r,isOrderSatisfied:U},orderedTables:C,metrics:{totalCost:y,estimatedRows:T,joinOrder:C.map(b=>b.name),singleTableFilters:l,crossFilters:u,tableScanTypes:O,tableIndexNames:w,isOrderSatisfied:U,sortCostAvoided:Q},isAlwaysFalse:!1,isAlwaysTrue:o.isAlwaysTrue,whereMetrics:o,isOrderSatisfied:U,sortCostAvoided:Q}}evaluateJoinStep(t,n,s,i,r,o){const a=Math.max(1,n.rowCountEstimate||10);let c=1;for(const f of o)c*=rr(f,n);const l=[];for(const f of i)if(f.tableA===s&&r.includes(f.tableB)){const g=jn(n,f.colA);l.push({edge:f,nextCol:f.colA,outerCol:f.colB,idxMatch:g})}else if(f.tableB===s&&r.includes(f.tableA)){const g=jn(n,f.colB);l.push({edge:f,nextCol:f.colB,outerCol:f.colA,idxMatch:g})}if(l.length===0){const f=t*(2+a*.1),g=Math.max(1,Math.round(t*a*c)),_={tableA:r[0],tableB:s,colA:"",colB:"",op:"=",type:"inner",declaredRightTable:s};return{stepCost:f,newRows:g,scanType:"TableScan",matchedEdge:_}}l.sort((f,g)=>{const _=f.idxMatch?f.idxMatch.isUnique?1:2:3,I=g.idxMatch?g.idxMatch.isUnique?1:2:3;return _-I});const u=l[0];if(u.idxMatch&&u.idxMatch.isUnique){const f=this.indexSeekCost+1*this.rowEvalCost,g=t*f,_=Math.max(1,Math.round(t*c));return{stepCost:g,newRows:_,scanType:"IndexScan",indexName:u.idxMatch.index.name,matchedEdge:u.edge}}if(u.idxMatch&&!u.idxMatch.isUnique){const f=Math.max(1,Math.min(10,Math.round(a/20))),g=this.indexSeekCost+f*this.indexNextCost,_=t*g,I=Math.max(1,Math.round(t*f*c));return{stepCost:_,newRows:I,scanType:"IndexScan",indexName:u.idxMatch.index.name,matchedEdge:u.edge}}const d=t*(2+a*.1),h=Math.max(1,Math.round(t*Math.max(1,Math.round(a*.1))*c));return{stepCost:d,newRows:h,scanType:"TableScan",matchedEdge:u.edge}}}function wc(e){let t=0,n=e;for(;n>0;)t+=n&1,n>>=1;return t}class ia{constructor(){N(this,"name","heuristic")}optimize(t){var P,U,Q;const n=[t.table,...((P=t.joinedTables)==null?void 0:P.map(R=>R.table))??[]],s=n.length,i=ne(t.filters),r=Sn(i),o=new Map,a=[];for(let R=0;R<s;R++)o.set(R,[]);for(const R of r){const A=wn(R,n);if(A.size===1){const b=A.values().next().value;b!==void 0&&((U=o.get(b))==null||U.push(R))}else a.push(R)}if(s<=1||!t.joinedTables||t.joinedTables.length===0){const R=me(n[0],o.get(0)??[],t.orderBy,t.limit);return{plan:t,orderedTables:n,metrics:{totalCost:R.cost,estimatedRows:R.rows,joinOrder:[n[0].name],singleTableFilters:o,crossFilters:a,tableScanTypes:[R.scanType],tableIndexNames:[R.indexName],isOrderSatisfied:R.isOrderSatisfied,sortCostAvoided:R.sortCostAvoided},isOrderSatisfied:R.isOrderSatisfied,sortCostAvoided:R.sortCostAvoided}}const{edges:c,dependencies:l}=Hs(t,n),u=n.map((R,A)=>{const b=or(R,A,n,t.orderBy,t.selectExprs),k=b?t.orderBy.map(V=>{const j=V.colName??"",K=j.includes(".")?j.slice(j.lastIndexOf(".")+1):j;return{...V,colName:K}}):void 0;return me(R,o.get(A)??[],k,b?t.limit:void 0)}),d=[];for(let R=0;R<s;R++)l[R].size===0&&d.push(R);d.sort((R,A)=>{const b=u[R].isOrderSatisfied?1:0,k=u[A].isOrderSatisfied?1:0;if(b!==k)return k-b;if(u[R].rows!==u[A].rows)return u[R].rows-u[A].rows;const V=u[R].scanType==="IndexScan"?1:0,j=u[A].scanType==="IndexScan"?1:0;return V!==j?j-V:R===0?-1:A===0?1:R-A});const h=d[0]??0,f=[h],g=[u[h].scanType],_=[u[h].indexName];let I=u[h].cost,p=u[h].rows;const y=new Set;for(let R=0;R<s;R++)R!==h&&y.add(R);for(;y.size>0;){const R=[];for(const b of y){let k=!0;for(const G of l[b])if(!f.includes(G)){k=!1;break}if(!k)continue;const V=n[b],j=Math.max(1,V.rowCountEstimate||10);let K=null;for(const G of c)if(G.tableA===b&&f.includes(G.tableB)){const q=jn(V,G.colA);q&&(!K||q.isUnique)&&(K={isUnique:q.isUnique,indexName:q.index.name})}else if(G.tableB===b&&f.includes(G.tableA)){const q=jn(V,G.colB);q&&(!K||q.isUnique)&&(K={isUnique:q.isUnique,indexName:q.index.name})}if(K)if(K.isUnique){const G=Cn+1*_e;R.push({tableIdx:b,rank:1,stepCost:p*G,newRows:Math.max(1,p),scanType:"IndexScan",indexName:K.indexName})}else{const G=Math.max(1,Math.min(10,Math.round(j/20))),q=Cn+G*Ws;R.push({tableIdx:b,rank:2,stepCost:p*q,newRows:Math.max(1,p*G),scanType:"IndexScan",indexName:K.indexName})}else R.push({tableIdx:b,rank:3,stepCost:p*(2+j*.1),newRows:Math.max(1,p*Math.max(1,Math.round(j*.1))),scanType:"TableScan"})}if(R.length===0){const b=y.values().next().value;if(b===void 0)break;f.push(b),g.push("TableScan"),_.push(void 0),y.delete(b);continue}R.sort((b,k)=>b.rank!==k.rank?b.rank-k.rank:Math.abs(b.stepCost-k.stepCost)>.05?b.stepCost-k.stepCost:b.tableIdx-k.tableIdx);const A=R[0];f.push(A.tableIdx),g.push(A.scanType),_.push(A.indexName),I+=A.stepCost,p=A.newRows,y.delete(A.tableIdx)}const T=f.map(R=>n[R]),O=Vs(f,n,c,t.joinedTables),w=Kn(t,n),C=((Q=u[h])==null?void 0:Q.isOrderSatisfied)===!0,B=C&&t.orderBy&&t.orderBy.length>0&&p>1?p*Math.log2(p)*_e:void 0;return{plan:{...t,table:T[0],joinedTables:O,selectExprs:w,isOrderSatisfied:C},orderedTables:T,metrics:{totalCost:I,estimatedRows:p,joinOrder:T.map(R=>R.name),singleTableFilters:o,crossFilters:a,tableScanTypes:g,tableIndexNames:_,isOrderSatisfied:C,sortCostAvoided:B},isOrderSatisfied:C,sortCostAvoided:B}}}class ra{constructor(){N(this,"name","noop")}optimize(t){var g,_;const n=[t.table,...((g=t.joinedTables)==null?void 0:g.map(I=>I.table))??[]],s=n.length,i=ne(t.filters),r=Sn(i),o=new Map,a=[];for(let I=0;I<s;I++)o.set(I,[]);for(const I of r){const p=wn(I,n);if(p.size===1){const y=p.values().next().value;y!==void 0&&((_=o.get(y))==null||_.push(I))}else a.push(I)}const c=me(n[0],o.get(0)??[]),l=[c.scanType],u=[c.indexName];let d=c.cost;const h=c.rows;if(t.joinedTables)for(let I=1;I<s;I++){const p=t.joinedTables[I-1],y=Zs(p,n[I],I,n,I);y?(l.push("IndexScan"),u.push(y.index.name),d+=h*.55):(l.push("TableScan"),u.push(void 0),d+=h*(2+(n[I].rowCountEstimate||10)*.1))}const f=Kn(t,n);return{plan:{...t,selectExprs:f},orderedTables:n,metrics:{totalCost:d,estimatedRows:h,joinOrder:n.map(I=>I.name),singleTableFilters:o,crossFilters:a,tableScanTypes:l,tableIndexNames:u}}}}class Sc{constructor(t){N(this,"name","custom-order");N(this,"orderSpec");this.orderSpec=t}optimize(t){var w,C,B;const n=[t.table,...((w=t.joinedTables)==null?void 0:w.map(P=>P.table))??[]],s=n.length,i=t.joinedTables!==void 0&&t.joinedTables.length>0,r=ne(t.filters),o=Sn(r),a=new Map,c=[];for(let P=0;P<s;P++)a.set(P,[]);for(const P of o){const U=wn(P,n);if(U.size===1){const Q=U.values().next().value;Q!==void 0&&((C=a.get(Q))==null||C.push(P))}else c.push(P)}if(!i||s<=1){const P=me(n[0],a.get(0)??[]);return{plan:t,orderedTables:n,metrics:{totalCost:P.cost,estimatedRows:P.rows,joinOrder:[n[0].name],singleTableFilters:a,crossFilters:c,tableScanTypes:[P.scanType],tableIndexNames:[P.indexName]}}}const l=Array.from({length:s},(P,U)=>U);if(this.orderSpec){if(typeof this.orderSpec=="function"){const P=this.orderSpec;l.sort((U,Q)=>P(n[U],n[Q]))}else if(Array.isArray(this.orderSpec)){const P=this.orderSpec;l.sort((U,Q)=>{const R=n[U].name,A=n[Q].name,b=P.indexOf(R),k=P.indexOf(A),V=b===-1?9999:b,j=k===-1?9999:k;return V!==j?V-j:U-Q})}}const{edges:u}=Hs(t,n),d=l.map(P=>n[P]),h=Vs(l,n,u,t.joinedTables),f=Kn(t,n),g={...t,table:d[0],joinedTables:h,selectExprs:f},_=new Map;for(let P=0;P<s;P++)_.set(P,[]);for(const P of o){const U=wn(P,d);if(U.size===1){const Q=U.values().next().value;Q!==void 0&&((B=_.get(Q))==null||B.push(P))}}const I=me(d[0],_.get(0)??[]),p=[I.scanType],y=[I.indexName];let T=I.cost;const O=I.rows;if(g.joinedTables)for(let P=1;P<s;P++){const U=g.joinedTables[P-1],Q=Zs(U,d[P],P,d,P);Q?(p.push("IndexScan"),y.push(Q.index.name),T+=O*.55):(p.push("TableScan"),y.push(void 0),T+=O*(2+(d[P].rowCountEstimate||10)*.1))}return{plan:g,orderedTables:d,metrics:{totalCost:T,estimatedRows:O,joinOrder:d.map(P=>P.name),singleTableFilters:_,crossFilters:c,tableScanTypes:p,tableIndexNames:y}}}}class oa{constructor(t){N(this,"name","custom");this.fn=t}optimize(t){return this.fn(t)}}const Uc=oa,Oc=$s,Pc=$s,bc=ia,Nc=ra,Lc=new $s;function ur(e){return e??Lc}function Bc(e,t){return ur(t).optimize(e)}function Jn(e){if(!e)return m.OP_EQ;switch(String(e).trim().toLowerCase().replace(/\s+/g," ")){case"=":case"==":return m.OP_EQ;case"!=":case"<>":return m.OP_NE;case">":return m.OP_GT;case">=":return m.OP_GE;case"<":return m.OP_LT;case"<=":return m.OP_LE;case"like":return m.OP_STR_LIKE;case"not like":return m.OP_STR_NOT_LIKE;case"contains":return m.OP_STR_CONTAINS;case"starts_with":return m.OP_STR_STARTS_WITH;case"ends_with":return m.OP_STR_ENDS_WITH;default:return m.OP_EQ}}class xs{constructor(){N(this,"buffer",[]);N(this,"textEncoder",new TextEncoder)}emitUint8(t){const n=this.buffer.length;return this.buffer.push(t&255),n}emitUint16(t){const n=this.buffer.length;return this.buffer.push(t&255),this.buffer.push(t>>8&255),n}emitUint32(t){const n=this.buffer.length;return this.buffer.push(t&255),this.buffer.push(t>>8&255),this.buffer.push(t>>16&255),this.buffer.push(t>>24&255),n}emitInt32(t){return this.emitUint32(t)}emitFloat64(t){const n=this.buffer.length,s=new ArrayBuffer(8);new DataView(s).setFloat64(0,t,!0);const i=new Uint8Array(s);for(let r=0;r<8;r++)this.buffer.push(i[r]);return n}emitString(t){const n=this.textEncoder.encode(t),s=this.emitUint16(n.byteLength);for(let i=0;i<n.byteLength;i++)this.buffer.push(n[i]);return s}emitBytes(t){const n=this.emitUint16(t.byteLength);for(let s=0;s<t.byteLength;s++)this.buffer.push(t[s]);return n}patchUint16(t,n){this.buffer[t]=n&255,this.buffer[t+1]=n>>8&255}currentOffset(){return this.buffer.length}toByteArray(){return new Uint8Array(this.buffer)}}function Lt(e,t,n,s,i){i===S.INT32||i===S.INT64?(e.emitUint8(m.OP_COLUMN_INT),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s)):i===S.FLOAT64?(e.emitUint8(m.OP_COLUMN_FLOAT),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s)):i===S.TEXT?(e.emitUint8(m.OP_COLUMN_TEXT),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s)):i===S.UUID?(e.emitUint8(m.OP_COLUMN_UUID),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s)):i===S.ULID?(e.emitUint8(m.OP_COLUMN_ULID),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s)):i===S.BLOB&&(e.emitUint8(m.OP_COLUMN_BLOB),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s))}function Re(e){if(e.type==="in"){if(e.values&&e.values.length>Qt)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${Qt} elements`);return{type:"in",colName:e.colName,expr:e.expr,values:e.values?Array.from(new Set(e.values)):[],notIn:!!e.notIn}}if(e.type==="cmp"){const t=e.op?String(e.op).trim().toLowerCase():"";if(t==="in"||t==="not in"){const n=Array.isArray(e.value)?e.value:[e.value];if(n.length>Qt)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${Qt} elements`);return{type:"in",colName:e.colName,expr:e.expr,values:Array.from(new Set(n)),notIn:t==="not in"}}}if(e.type==="and")return{type:"and",children:e.children?e.children.map(Re):[]};if(e.type==="or")return{type:"or",children:e.children?e.children.map(Re):[]};if(e.type==="not"){const t=e.child;if(!t)return e;if(t.type==="not"&&t.child)return Re(t.child);if(t.type==="in")return{type:"in",colName:t.colName,expr:t.expr,values:t.values,notIn:!t.notIn};if(t.type==="and")return{type:"or",children:t.children?t.children.map(n=>Re({type:"not",child:n})):[]};if(t.type==="or")return{type:"and",children:t.children?t.children.map(n=>Re({type:"not",child:n})):[]};if(t.type==="null")return{type:"null",colName:t.colName,expr:t.expr,isNull:!t.isNull};if(t.type==="cmp"){const n=t.op?String(t.op).trim().toLowerCase():"";if(n==="in"||n==="not in")return Re({type:"in",colName:t.colName,expr:t.expr,values:Array.isArray(t.value)?t.value:[t.value],notIn:n==="in"});const s={"=":"!=","!=":"=",">":"<=",">=":"<","<":">=","<=":">",like:"not like","not like":"like"};return t.op&&s[t.op]?{type:"cmp",colName:t.colName,op:s[t.op],value:t.value}:{type:"and",children:[{type:"null",colName:t.colName,isNull:!1},{type:"not",child:t}]}}}return e}function ne(e){if(!e||e.length===0)return null;const t=e.length===1?e[0]:{type:"and",children:e};return Re(t)}function aa(e){const t=[],n=new Set;function s(i){if(i.type==="null"||i.type==="cmp"||i.type==="expr"||i.type==="in")n.has(i)||(n.add(i),t.push(i));else if(i.type==="and"||i.type==="or"){if(i.children)for(const r of i.children)s(r)}else i.type==="not"&&i.child&&s(i.child)}return s(e),t}function Sn(e){if(!e)return[];const t=[];function n(s){if(s.type==="and"&&s.children)for(const i of s.children)n(i);else(s.type==="cmp"||s.type==="in"||s.type==="null")&&t.push(s)}return n(e),t}function gt(e,t){if(e.includes(".")){const n=e.split("."),s=n[0],i=n[1],r=t.findIndex(a=>a.name.toLowerCase()===s.toLowerCase());if(r===-1)return null;const o=t[r].columns.findIndex(a=>a.name.toLowerCase()===i.toLowerCase());return o===-1?null:{tableIdx:r,cursor:r,colIdx:o,col:t[r].columns[o],table:t[r]}}for(let n=0;n<t.length;n++){const s=t[n].columns.findIndex(i=>i.name.toLowerCase()===e.toLowerCase());if(s!==-1)return{tableIdx:n,cursor:n,colIdx:s,col:t[n].columns[s],table:t[n]}}return null}function fr(e,t,n,s,i,r,o,a){const c=o??[n];if(e.type==="expr"){const h=t*2,f=t*2+1;let g=50;const _=()=>{if(g>=64)throw new st(g);return g++};Z(e.expr,n,s,0,h,_,r,void 0,c),s.emitUint8(m.OP_LOAD_INT),s.emitUint8(f),s.emitInt32(1),s.emitUint8(m.OP_EQ),s.emitUint8(h),s.emitUint8(f),i.push(s.emitUint16(0));return}if(e.type==="null"){if(e.expr){const f=t*2;let g=50;const _=()=>{if(g>=64)throw new st(g);return g++};Z(e.expr,n,s,0,f,_,r,void 0,c),e.isNull?s.emitUint8(m.OP_REG_IS_NULL):s.emitUint8(m.OP_REG_IS_NOT_NULL),s.emitUint8(f),i.push(s.emitUint16(0));return}if(!e.colName)throw new Error("Filter leaf node missing colName");const h=gt(e.colName,c);if(!h)throw new Error(`Column "${e.colName}" not found in tables`);e.isNull?s.emitUint8(m.OP_IS_NULL):s.emitUint8(m.OP_IS_NOT_NULL),s.emitUint8(h.cursor),s.emitUint8(h.colIdx),i.push(s.emitUint16(0));return}if(e.type==="in"){if(!e.values||e.values.length===0){e.notIn&&(s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0)));return}const h=t*2;if(e.expr){let g=50;const _=()=>{if(g>=64)throw new st(g);return g++};Z(e.expr,n,s,0,h,_,r,void 0,c)}else{if(!e.colName)throw new Error("Filter IN leaf node missing colName");const g=gt(e.colName,c);if(g)Lt(s,g.cursor,g.colIdx,h,g.col.type);else try{const _=At(e.colName);let I=50;Z(_,n,s,0,h,()=>{if(I>=64)throw new st(I);return I++},r,void 0,c)}catch{throw new Error(`Column "${e.colName}" not found in tables`)}}const f=(a==null?void 0:a.get(e))??0;if(!e.notIn)s.emitUint8(m.OP_IN),s.emitUint8(h),s.emitUint16(f),i.push(s.emitUint16(0));else{let g=-1;if(e.colName){const p=gt(e.colName,c);p&&(s.emitUint8(m.OP_IS_NULL),s.emitUint8(p.cursor),s.emitUint8(p.colIdx),g=s.emitUint16(0))}s.emitUint8(m.OP_IN),s.emitUint8(h),s.emitUint16(f);const _=s.emitUint16(0);s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0));const I=s.currentOffset();g!==-1&&s.patchUint16(g,I),s.patchUint16(_,I)}return}const l=t*2,u=t*2+1;if(e.expr){let h=50;const f=()=>{if(h>=64)throw new st(h);return h++};Z(e.expr,n,s,0,l,f,r,void 0,c)}else{if(!e.colName)throw new Error("Filter leaf node missing colName");const h=gt(e.colName,c);if(h)Lt(s,h.cursor,h.colIdx,l,h.col.type);else try{const f=At(e.colName);let g=50;Z(f,n,s,0,l,()=>{if(g>=64)throw new st(g);return g++},r,void 0,c)}catch{throw new Error(`Column "${e.colName}" not found in tables`)}}const d=Jn(e.op);s.emitUint8(d),s.emitUint8(l),s.emitUint8(u),i.push(s.emitUint16(0))}function Ar(e,t,n,s,i,r,o,a){const c=o??[n];if(e.type==="expr"){const f=t*2,g=t*2+1;let _=50;const I=()=>{if(_>=64)throw new st(_);return _++};Z(e.expr,n,s,0,f,I,r,void 0,c),s.emitUint8(m.OP_LOAD_INT),s.emitUint8(g),s.emitInt32(1),s.emitUint8(m.OP_EQ),s.emitUint8(f),s.emitUint8(g);const p=s.emitUint16(0);s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0)),s.patchUint16(p,s.currentOffset());return}if(e.type==="null"){if(e.expr){const g=t*2;let _=50;const I=()=>{if(_>=64)throw new st(_);return _++};Z(e.expr,n,s,0,g,I,r,void 0,c),e.isNull?s.emitUint8(m.OP_REG_IS_NOT_NULL):s.emitUint8(m.OP_REG_IS_NULL),s.emitUint8(g),i.push(s.emitUint16(0));return}if(!e.colName)throw new Error("Filter leaf node missing colName");const f=gt(e.colName,c);if(!f)throw new Error(`Column "${e.colName}" not found in tables`);e.isNull?s.emitUint8(m.OP_IS_NOT_NULL):s.emitUint8(m.OP_IS_NULL),s.emitUint8(f.cursor),s.emitUint8(f.colIdx),i.push(s.emitUint16(0));return}if(e.type==="in"){if(!e.values||e.values.length===0){e.notIn||(s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0)));return}const f=t*2;if(e.expr){let _=50;const I=()=>{if(_>=64)throw new st(_);return _++};Z(e.expr,n,s,0,f,I,r,void 0,c)}else{if(!e.colName)throw new Error("Filter IN leaf node missing colName");const _=gt(e.colName,c);if(_)Lt(s,_.cursor,_.colIdx,f,_.col.type);else try{const I=At(e.colName);let p=50;Z(I,n,s,0,f,()=>{if(p>=64)throw new st(p);return p++},r,void 0,c)}catch{throw new Error(`Column "${e.colName}" not found in tables`)}}const g=(a==null?void 0:a.get(e))??0;if(e.notIn){if(e.colName){const _=gt(e.colName,c);_&&(s.emitUint8(m.OP_IS_NULL),s.emitUint8(_.cursor),s.emitUint8(_.colIdx),i.push(s.emitUint16(0)))}s.emitUint8(m.OP_IN),s.emitUint8(f),s.emitUint16(g),i.push(s.emitUint16(0))}else{if(e.colName){const p=gt(e.colName,c);p&&(s.emitUint8(m.OP_IS_NULL),s.emitUint8(p.cursor),s.emitUint8(p.colIdx),i.push(s.emitUint16(0)))}s.emitUint8(m.OP_IN),s.emitUint8(f),s.emitUint16(g);const _=s.emitUint16(0);s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0));const I=s.currentOffset();s.patchUint16(_,I)}return}const l=t*2,u=t*2+1;if(e.expr){let f=50;const g=()=>{if(f>=64)throw new st(f);return f++};Z(e.expr,n,s,0,l,g,r,void 0,c)}else{if(!e.colName)throw new Error("Filter leaf node missing colName");const f=gt(e.colName,c);if(f)Lt(s,f.cursor,f.colIdx,l,f.col.type);else try{const g=At(e.colName);let _=50;Z(g,n,s,0,l,()=>{if(_>=64)throw new st(_);return _++},r,void 0,c)}catch{throw new Error(`Column "${e.colName}" not found in tables`)}}const d=Jn(e.op);s.emitUint8(d),s.emitUint8(l),s.emitUint8(u);const h=s.emitUint16(0);s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0)),s.patchUint16(h,s.currentOffset())}function Rc(e,t,n,s,i,r,o,a,c,l){o==="true"?Ar(e,t,n,s,r,a,c,l):o==="false"?fr(e,t,n,s,i,a,c,l):(fr(e,t,n,s,i,a,c,l),s.emitUint8(m.OP_JUMP),r.push(s.emitUint16(0)))}function zn(e,t,n,s,i,r,o,a,c,l){if(e.type==="cmp"||e.type==="null"||e.type==="expr"||e.type==="in"){const u=s.get(e)??0;Rc(e,u,n,t,i,r,o,a,c,l);return}if(e.type==="not"){if(!e.child)return;const u=e.child,d=s.get(u)??0;o==="true"?fr(u,d,n,t,r,a,c,l):o==="false"?Ar(u,d,n,t,i,a,c,l):(Ar(u,d,n,t,i,a,c,l),t.emitUint8(m.OP_JUMP),r.push(t.emitUint16(0)));return}if(e.type==="and"){const u=e.children??[];if(u.length===0){o==="false"&&(t.emitUint8(m.OP_JUMP),i.push(t.emitUint16(0)));return}for(let d=0;d<u.length;d++){const h=u[d];if(d===u.length-1)zn(h,t,n,s,i,r,o,a,c,l);else{const g=[];zn(h,t,n,s,g,r,"true",a,c,l);const _=t.currentOffset();for(const I of g)t.patchUint16(I,_)}}return}if(e.type==="or"){const u=e.children??[];if(u.length===0){o==="true"&&(t.emitUint8(m.OP_JUMP),r.push(t.emitUint16(0)));return}for(let d=0;d<u.length;d++){const h=u[d];if(d===u.length-1)zn(h,t,n,s,i,r,o,a,c,l);else{const g=[];zn(h,t,n,s,i,g,"false",a,c,l);const _=t.currentOffset();for(const I of g)t.patchUint16(I,_)}}return}}function Fc(e,t,n,s,i,r,o){if(e.type==="cmp"){let a;const c=s(e.colName,e.expr);if(c!==void 0)a=c;else if(e.expr)a=i(),Z(e.expr,t,n,-1,a,i,o,s);else if(e.colName){a=i();const f=At(e.colName);Z(f,t,n,-1,a,i,o,s)}else a=i(),n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(a);const l=i(),u=e.value;u==null?(n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(l)):typeof u=="number"?Number.isInteger(u)?(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(u)):(n.emitUint8(m.OP_LOAD_FLOAT),n.emitUint8(l),n.emitFloat64(u)):typeof u=="string"?(n.emitUint8(m.OP_LOAD_TEXT),n.emitUint8(l),n.emitString(u)):typeof u=="boolean"?(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(u?1:0)):typeof u=="bigint"&&(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(Number(u)));const d=Jn(e.op);n.emitUint8(d),n.emitUint8(a),n.emitUint8(l);const h=n.emitUint16(0);n.emitUint8(m.OP_JUMP),r.push(n.emitUint16(0)),n.patchUint16(h,n.currentOffset());return}if(e.type==="null"){let a;const c=s(e.colName,e.expr);if(c!==void 0)a=c;else if(e.expr)a=i(),Z(e.expr,t,n,-1,a,i,o,s);else if(e.colName){a=i();const l=At(e.colName);Z(l,t,n,-1,a,i,o,s)}else a=i(),n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(a);e.isNull?(n.emitUint8(m.OP_REG_IS_NOT_NULL),n.emitUint8(a),r.push(n.emitUint16(0))):(n.emitUint8(m.OP_REG_IS_NULL),n.emitUint8(a),r.push(n.emitUint16(0)));return}if(e.type==="expr"&&e.expr){const a=i();Z(e.expr,t,n,-1,a,i,o,s);const c=i();n.emitUint8(m.OP_LOAD_INT),n.emitUint8(c),n.emitInt32(1),n.emitUint8(m.OP_EQ),n.emitUint8(a),n.emitUint8(c);const l=n.emitUint16(0);n.emitUint8(m.OP_JUMP),r.push(n.emitUint16(0)),n.patchUint16(l,n.currentOffset());return}}function la(e,t,n,s,i,r,o){if(e.type==="cmp"){let a;const c=s(e.colName,e.expr);if(c!==void 0)a=c;else if(e.expr)a=i(),Z(e.expr,t,n,-1,a,i,o,s);else if(e.colName){a=i();const h=At(e.colName);Z(h,t,n,-1,a,i,o,s)}else a=i(),n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(a);const l=i(),u=e.value;u==null?(n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(l)):typeof u=="number"?Number.isInteger(u)?(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(u)):(n.emitUint8(m.OP_LOAD_FLOAT),n.emitUint8(l),n.emitFloat64(u)):typeof u=="string"?(n.emitUint8(m.OP_LOAD_TEXT),n.emitUint8(l),n.emitString(u)):typeof u=="boolean"?(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(u?1:0)):typeof u=="bigint"&&(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(Number(u)));const d=Jn(e.op);n.emitUint8(d),n.emitUint8(a),n.emitUint8(l),r.push(n.emitUint16(0));return}if(e.type==="null"){let a;const c=s(e.colName,e.expr);if(c!==void 0)a=c;else if(e.expr)a=i(),Z(e.expr,t,n,-1,a,i,o,s);else if(e.colName){a=i();const l=At(e.colName);Z(l,t,n,-1,a,i,o,s)}else a=i(),n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(a);e.isNull?(n.emitUint8(m.OP_REG_IS_NULL),n.emitUint8(a),r.push(n.emitUint16(0))):(n.emitUint8(m.OP_REG_IS_NOT_NULL),n.emitUint8(a),r.push(n.emitUint16(0)));return}if(e.type==="expr"&&e.expr){const a=i();Z(e.expr,t,n,-1,a,i,o,s);const c=i();n.emitUint8(m.OP_LOAD_INT),n.emitUint8(c),n.emitInt32(1),n.emitUint8(m.OP_EQ),n.emitUint8(a),n.emitUint8(c),r.push(n.emitUint16(0));return}}function Dc(e,t,n,s,i,r,o,a,c){a==="true"?Fc(e,t,n,s,i,o,c):a==="false"?la(e,t,n,s,i,r,c):(la(e,t,n,s,i,r,c),n.emitUint8(m.OP_JUMP),o.push(n.emitUint16(0)))}function Fe(e,t,n,s,i,r,o,a,c){if(e.type==="cmp"||e.type==="null"||e.type==="expr"){Dc(e,n,t,s,i,r,o,a,c);return}if(e.type==="not"){if(!e.child)return;const l=e.child;a==="true"?Fe(l,t,n,s,i,o,r,"false",c):a==="false"?Fe(l,t,n,s,i,r,o,"true",c):Fe(l,t,n,s,i,o,r,"none",c);return}if(e.type==="and"){const l=e.children??[];if(l.length===0){a==="false"&&(t.emitUint8(m.OP_JUMP),r.push(t.emitUint16(0)));return}for(let u=0;u<l.length;u++){const d=l[u];if(u===l.length-1)Fe(d,t,n,s,i,r,o,a,c);else{const f=[];Fe(d,t,n,s,i,f,o,"true",c);const g=t.currentOffset();for(const _ of f)t.patchUint16(_,g)}}return}if(e.type==="or"){const l=e.children??[];if(l.length===0){a==="true"&&(t.emitUint8(m.OP_JUMP),o.push(t.emitUint16(0)));return}for(let u=0;u<l.length;u++){const d=l[u];if(u===l.length-1)Fe(d,t,n,s,i,r,o,a,c);else{const f=[];Fe(d,t,n,s,i,r,f,"false",c);const g=t.currentOffset();for(const _ of f)t.patchUint16(_,g)}}return}}function Qc(e,t,n,s,i,r,o){if(!e)return;const a=[];Fe(e,n,t,s,i,a,r,"true",o);const c=n.currentOffset();for(const l of a)n.patchUint16(l,c)}function se(e,t,n,s,i,r,o,a){if(!e)return;const c=[];zn(e,n,t,s,c,i,"true",r,o,a);const l=n.currentOffset();for(const u of c)n.patchUint16(u,l)}function ca(e,t,n,s){if(e.type==="literal")return typeof e.value=="number"?Number.isInteger(e.value)?S.INT32:S.FLOAT64:(typeof e.value=="string",S.TEXT);if(e.type==="col"){const i=s??[t],r=gt(e.name,i);return r?r.col.type:S.TEXT}if(e.type==="binary")return S.FLOAT64;if(e.type==="fn"){const i=e.name.toLowerCase();if(n&&n.has(i)){const r=n.get(i);if(r.returnType!==void 0)return r.returnType}if(["upper","lower","substr","trim","concat"].includes(i))return S.TEXT;if(["length","count","starts_with","startswith","ends_with","endswith","like","contains"].includes(i))return S.INT32;if(["abs","round","floor","ceil","sum","avg","min","max"].includes(i)){if(e.args.length>0&&e.args[0].type==="col"){const r=gt(e.args[0].name,s??[t]);if(r&&r.col.type===S.INT32&&i!=="avg")return S.INT32}return S.FLOAT64}return S.TEXT}return S.TEXT}function Z(e,t,n,s,i,r,o,a,c){if(a){const l=e.type==="col"?e.name:void 0,u=a(l,e);if(u!==void 0){u!==i&&(n.emitUint8(m.OP_COPY),n.emitUint8(u),n.emitUint8(i));return}}if(e.type==="literal"){const l=e.value;l==null?(n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(i)):typeof l=="number"?Number.isInteger(l)?(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(l)):(n.emitUint8(m.OP_LOAD_FLOAT),n.emitUint8(i),n.emitFloat64(l)):typeof l=="string"?(n.emitUint8(m.OP_LOAD_TEXT),n.emitUint8(i),n.emitString(l)):typeof l=="boolean"&&(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(l?1:0));return}if(e.type==="col"){if(s===-1)throw new Error(`Column "${e.name}" in HAVING clause must be an aggregate or grouping column`);const l=c??[t],u=gt(e.name,l);if(!u){if(e.name==="*"){n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(i);return}throw new Error(`Column "${e.name}" does not exist in table "${t.name}"`)}Lt(n,u.cursor,u.colIdx,i,u.col.type);return}if(e.type==="binary"){const l=r(),u=r();Z(e.left,t,n,s,l,r,o,a,c),Z(e.right,t,n,s,u,r,o,a,c);let d=m.OP_ADD;if(e.op==="+")d=m.OP_ADD;else if(e.op==="-")d=m.OP_SUB;else if(e.op==="*")d=m.OP_MUL;else if(e.op==="/")d=m.OP_DIV;else if(e.op==="%")d=m.OP_MOD;else if(e.op==="="||e.op==="!="||e.op==="<"||e.op==="<="||e.op===">"||e.op===">="){let h=m.OP_EQ;e.op==="="?h=m.OP_EQ:e.op==="!="?h=m.OP_NE:e.op==="<"?h=m.OP_LT:e.op==="<="?h=m.OP_LE:e.op===">"?h=m.OP_GT:e.op===">="&&(h=m.OP_GE),n.emitUint8(h),n.emitUint8(l),n.emitUint8(u);const f=n.emitUint16(0);n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(0),n.emitUint8(m.OP_JUMP);const g=n.emitUint16(0);n.patchUint16(f,n.currentOffset()),n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(1),n.patchUint16(g,n.currentOffset());return}n.emitUint8(d),n.emitUint8(l),n.emitUint8(u),n.emitUint8(i);return}if(e.type==="fn"){const l=e.name.toLowerCase(),u={upper:m.OP_STR_UPPER,lower:m.OP_STR_LOWER,length:m.OP_STR_LENGTH,trim:m.OP_STR_TRIM,abs:m.OP_MATH_ABS,round:m.OP_MATH_ROUND,floor:m.OP_MATH_FLOOR,ceil:m.OP_MATH_CEIL};if(u[l]){const h=r(),f=e.args[0]??{type:"literal",value:null};Z(f,t,n,s,h,r,o,a,c),n.emitUint8(u[l]),n.emitUint8(h),n.emitUint8(i);return}if(l==="substr"){const h=r(),f=r(),g=r();Z(e.args[0],t,n,s,h,r,o,a,c),Z(e.args[1]??{type:"literal",value:1},t,n,s,f,r,o,a,c),e.args[2]!==void 0?Z(e.args[2],t,n,s,g,r,o,a,c):(n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(g)),n.emitUint8(m.OP_STR_SUBSTR),n.emitUint8(h),n.emitUint8(f),n.emitUint8(g),n.emitUint8(i);return}const d={starts_with:m.OP_STR_STARTS_WITH,startswith:m.OP_STR_STARTS_WITH,ends_with:m.OP_STR_ENDS_WITH,endswith:m.OP_STR_ENDS_WITH,like:m.OP_STR_LIKE,contains:m.OP_STR_CONTAINS};if(d[l]){const h=r(),f=r();Z(e.args[0]??{type:"literal",value:null},t,n,s,h,r,o,a,c),Z(e.args[1]??{type:"literal",value:""},t,n,s,f,r,o,a,c),n.emitUint8(d[l]),n.emitUint8(h),n.emitUint8(f);const g=n.emitUint16(0);n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(0),n.emitUint8(m.OP_JUMP);const _=n.emitUint16(0);n.patchUint16(g,n.currentOffset()),n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(1),n.patchUint16(_,n.currentOffset());return}if(l==="concat"||l==="coalesce"){const h=e.args.length,f=r();for(let _=1;_<h;_++)r();for(let _=0;_<h;_++)Z(e.args[_],t,n,s,f+_,r,o,a,c);const g=l==="concat"?m.OP_STR_CONCAT:m.OP_COALESCE;n.emitUint8(g),n.emitUint8(f),n.emitUint8(h),n.emitUint8(i);return}if(o&&o.has(l)){const h=o.get(l),f=e.args.length;let g=i;if(f>0){g=r();for(let _=1;_<f;_++)r();for(let _=0;_<f;_++)Z(e.args[_],t,n,s,g+_,r,o,a,c)}n.emitUint8(m.OP_CALL_UDF),n.emitUint16(h),n.emitUint8(g),n.emitUint8(f),n.emitUint8(i);return}throw new Pi(l)}}function hr(e,t,n,s){n==null?(e.emitUint8(m.OP_LOAD_NULL),e.emitUint8(t)):typeof n=="number"?s===S.FLOAT64||!Number.isInteger(n)?(e.emitUint8(m.OP_LOAD_FLOAT),e.emitUint8(t),e.emitFloat64(n)):(e.emitUint8(m.OP_LOAD_INT),e.emitUint8(t),e.emitInt32(Math.floor(n))):typeof n=="bigint"?(e.emitUint8(m.OP_LOAD_INT),e.emitUint8(t),e.emitInt32(Number(n))):typeof n=="string"?(e.emitUint8(m.OP_LOAD_TEXT),e.emitUint8(t),e.emitString(n)):typeof n=="boolean"&&(e.emitUint8(m.OP_LOAD_INT),e.emitUint8(t),e.emitInt32(n?1:0))}function Xs(e){switch(e){case S.INT32:return-2147483648;case S.INT64:return-9223372036854775808n;case S.FLOAT64:return-1/0;case S.TEXT:case S.UUID:case S.ULID:return"";case S.BLOB:return new Uint8Array(0);default:return 0}}function gr(e,t,n,s){var a;if(!n||n.length===0)return!1;for(const c of n)if(c.direction==="desc")return!1;const i=e.columnIndices.map(c=>t.columns[c].name.toLowerCase());let r=0;if(s&&s.size>0)for(;r<i.length&&s.has(i[r]);)r++;let o=0;for(;r<i.length&&o<n.length;){const c=(a=n[o].colName)==null?void 0:a.toLowerCase();if(!c||c!==i[r])return!1;r++,o++}return o===n.length}function ua(e,t,n,s,i){if(!n||n.length===0)return!1;for(const r of n){if(r.direction==="desc")return!1;const o=r.colName;if(!o)return!1;if(s&&s.length>0){let a=gt(o,s);if(!a&&i){const c=i.find(l=>l.alias===o);c&&c.expr.type==="col"&&(a=gt(c.expr.name,s))}if(!a||a.tableIdx!==0)return!1}else{const a=o.includes(".")?o.slice(o.lastIndexOf(".")+1):o;if(!e.columns.some(l=>l.name.toLowerCase()===a.toLowerCase()))return!1}}return!0}function Ys(e,t,n,s){if(!e.indexes||e.indexes.length===0)return null;const i=n??t,r=new Set;for(const a of t)a.type==="cmp"&&(a.op==="="||a.op===void 0)&&a.colName&&a.value!==void 0&&a.value!==null&&r.add(a.colName.toLowerCase());const o=a=>{if(s&&s.length>0){if(a.scanType==="point"&&a.index.flags&(rt.PRIMARY|rt.UNIQUE))a.satisfiesOrderBy=!0;else if(gr(a.index,e,s,r)){if(a.scanType==="multi_point"&&a.inValues){const c=s[0].direction==="desc"?-1:1;a.inValues.sort((l,u)=>typeof l=="number"&&typeof u=="number"?(l-u)*c:String(l).localeCompare(String(u))*c)}a.satisfiesOrderBy=!0}}return a};for(const a of e.indexes)if(a.flags&rt.PRIMARY&&a.columnCount===1){const c=e.columns[a.columnIndices[0]];for(let l=0;l<t.length;l++){const u=t[l];if(u.type==="cmp"&&(u.op==="="||u.op===void 0)&&u.colName===c.name&&u.value!==void 0&&u.value!==null)return o({index:a,scanType:"point",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type});if(u.type==="in"&&!u.notIn&&u.colName===c.name&&Array.isArray(u.values)&&u.values.length>0){const d=Array.from(new Set(u.values.filter(h=>h!=null)));return o({index:a,scanType:"multi_point",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type,inValues:d})}}}for(const a of e.indexes)if(a.flags&rt.UNIQUE&&a.columnCount===1){const c=e.columns[a.columnIndices[0]];for(let l=0;l<t.length;l++){const u=t[l];if(u.type==="cmp"&&(u.op==="="||u.op===void 0)&&u.colName===c.name&&u.value!==void 0&&u.value!==null)return o({index:a,scanType:"point",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type});if(u.type==="in"&&!u.notIn&&u.colName===c.name&&Array.isArray(u.values)&&u.values.length>0){const d=Array.from(new Set(u.values.filter(h=>h!=null)));return o({index:a,scanType:"multi_point",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type,inValues:d})}}}for(const a of e.indexes)if(a.columnCount>1){const c=[];let l=!0;for(let u=0;u<a.columnCount;u++){const d=e.columns[a.columnIndices[u]],h=t.find(f=>f.type==="cmp"&&(f.op==="="||f.op===void 0)&&f.colName===d.name&&f.value!==void 0&&f.value!==null);if(h)c.push(h);else{l=!1;break}}if(l){const u={};for(const h of c)u[h.colName]=h.value;const d=Rs(e.columns,a.columnIndices,a.columnCount,u);return o({index:a,scanType:"point",seekFilter:c[0],filterIndex:i.indexOf(c[0]),keyType:S.BLOB,compositeValue:d})}}for(const a of e.indexes)if(a.columnCount===1){const c=e.columns[a.columnIndices[0]];for(let l=0;l<t.length;l++){const u=t[l];if(u.type==="cmp"&&(u.op==="="||u.op===void 0)&&u.colName===c.name&&u.value!==void 0&&u.value!==null)return o({index:a,scanType:"range",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type})}}for(const a of e.indexes)if(a.columnCount===1){const c=e.columns[a.columnIndices[0]];for(let l=0;l<t.length;l++){const u=t[l];if(u.type==="cmp"&&(u.op===">="||u.op===">")&&u.colName===c.name&&u.value!==void 0&&u.value!==null)return o({index:a,scanType:"range",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type})}}if(s&&s.length>0){for(const a of e.indexes)if(gr(a,e,s,r))if(a.columnCount===1){const c=e.columns[a.columnIndices[0]];return{index:a,scanType:"range",seekFilter:void 0,filterIndex:-1,keyType:c.type,satisfiesOrderBy:!0}}else{const c={};for(let u=0;u<a.columnCount;u++){const d=e.columns[a.columnIndices[u]],h=t.find(f=>f.type==="cmp"&&(f.op==="="||f.op===void 0)&&f.colName===d.name&&f.value!==void 0&&f.value!==null);h?c[d.name]=h.value:c[d.name]=Xs(d.type)}const l=Rs(e.columns,a.columnIndices,a.columnCount,c);return{index:a,scanType:"range",seekFilter:void 0,filterIndex:-1,keyType:S.BLOB,compositeValue:l,satisfiesOrderBy:!0}}}return null}function Zs(e,t,n,s,i){if(e.op!=="="||!t.indexes||t.indexes.length===0)return null;const r=gt(e.leftCol,s),o=gt(e.rightCol,s);if(!r||!o)return null;let a=null,c=null;if(r.tableIdx===n&&o.tableIdx<n?(a=r,c=o):o.tableIdx===n&&r.tableIdx<n&&(a=o,c=r),!a||!c)return null;let l=null,u=999;for(const h of t.indexes)if(h.columnCount===1&&h.columnIndices[0]===a.colIdx){const f=(h.flags&rt.PRIMARY)!==0,g=(h.flags&rt.UNIQUE)!==0,_=f?1:g?2:3;_<u&&(u=_,l=h)}if(!l)return null;const d=(l.flags&(rt.PRIMARY|rt.UNIQUE))!==0;return{index:l,isUnique:d,innerCol:a,outerCol:c,indexCursor:i}}function dr(e,t){var zs,Ln,ti,ga,da,_a,ma,Ea,Ia;const n=[e.table,...((zs=e.joinedTables)==null?void 0:zs.map(F=>F.table))??[]],i=ur((t==null?void 0:t.planner)??e.planner).optimize(e),r=i.orderedTables??n,o=i.whereMetrics,a=i.metrics;if(i.isAlwaysFalse){const F=new xs;F.emitUint8(m.OP_HALT);const M=F.toByteArray();return e.outputColumns&&(M.outputColumns=e.outputColumns),M.allTables=r,M.whereMetrics=o,M}const c=i.plan;c!==e&&Object.assign(e,c);const l=e.joinedTables!==void 0&&e.joinedTables.length>0,u=ne(e.filters),d=u?aa(u):[],h=Sn(u),f=Array.from({length:r.length},()=>[]),g=new Set;if(l&&a)for(let F=0;F<r.length;F++){const M=n.indexOf(r[F]);if(M!==-1){const W=a.singleTableFilters.get(M)??[];if(F===0||e.joinedTables&&((Ln=e.joinedTables[F-1])==null?void 0:Ln.type)==="inner"){f[F]=W;for(const $ of W)g.add($)}}}const _=[];for(const F of h)g.has(F)||_.push(F);const I=ne(_),p=l&&ua(r[0],e.joinedTables,e.orderBy,r,e.selectExprs),y=p?e.orderBy.map(F=>{const M=F.colName??"",W=M.includes(".")?M.slice(M.lastIndexOf(".")+1):M;return{...F,colName:W}}):void 0,T=l?Ys(r[0],f[0],d,y):null,O=p&&!!(T!=null&&T.satisfiesOrderBy);let w=r.length,C=-1;T&&w<16&&(C=w++);const B=new Array(r.length).fill(null);if(l&&e.joinedTables)for(let F=1;F<r.length;F++){const M=e.joinedTables[F-1];if(w<16){const W=Zs(M,r[F],F,r,w);W&&(B[F]=W,w++)}}const P=w;if(P>16)throw new ds(P,16);for(const F of h)if(F.type==="in"&&!F.notIn&&(!F.values||F.values.length===0)){const M=new xs;M.emitUint8(m.OP_HALT);const W=M.toByteArray();return e.outputColumns&&(W.outputColumns=e.outputColumns),W}const U=[],Q=new Map;for(const F of d)if(F.type==="in"){const M=U.length;Q.set(F,M);const W=new Set;if(F.values)for(const $ of F.values)$!=null&&(W.add($),typeof $=="bigint"?W.add(Number($)):typeof $=="number"&&Number.isSafeInteger($)&&W.add(BigInt($)));U.push(W)}const R=new Map;for(let F=0;F<d.length;F++)R.set(d[F],F);if(d.length*2>=64)throw new st(d.length*2);if(e.orderBy&&e.orderBy.length>8)throw new jr(e.orderBy.length);if(e.groupBy&&e.groupBy.length>8)throw new Kr(e.groupBy.length);const A=new xs;if(e.limit!==void 0&&e.limit<=0)return A.emitUint8(m.OP_HALT),A.toByteArray();let b=d.length*2;const k=e.offset!==void 0&&e.offset>0,V=e.limit!==void 0&&e.limit>0,j=k?b++:-1,K=V?b++:-1;if(b>=64)throw new st(b);const G=e.table;for(let F=0;F<d.length;F++){const M=d[F];if(M.type==="cmp"){const W=F*2+1,$=M.value;if($==null)A.emitUint8(m.OP_LOAD_NULL),A.emitUint8(W);else if(typeof $=="number"){const mt=M.colName?gt(M.colName,r):void 0;mt&&mt.col.type===S.FLOAT64?(A.emitUint8(m.OP_LOAD_FLOAT),A.emitUint8(W),A.emitFloat64($)):Number.isInteger($)?(A.emitUint8(m.OP_LOAD_INT),A.emitUint8(W),A.emitInt32(Math.floor($))):(A.emitUint8(m.OP_LOAD_FLOAT),A.emitUint8(W),A.emitFloat64($))}else typeof $=="bigint"?(A.emitUint8(m.OP_LOAD_INT),A.emitUint8(W),A.emitInt32(Number($))):typeof $=="string"?(A.emitUint8(m.OP_LOAD_TEXT),A.emitUint8(W),A.emitString($)):typeof $=="boolean"&&(A.emitUint8(m.OP_LOAD_INT),A.emitUint8(W),A.emitInt32($?1:0))}}if(k&&(A.emitUint8(m.OP_LOAD_INT),A.emitUint8(j),A.emitInt32(e.offset)),V&&(A.emitUint8(m.OP_LOAD_INT),A.emitUint8(K),A.emitInt32(e.limit)),e.aggregates&&e.aggregates.length>0||e.groupBy&&e.groupBy.length>0){const F=((ti=e.groupBy)==null?void 0:ti.length)??0,M=e.aggregates??[],W=M.length,$=[];for(const v of e.groupBy??[]){const H=typeof v=="string"?v:v.colName??(v.expr?vt(v.expr):"group_key"),X=(ga=e.selectExprs)==null?void 0:ga.find(ht=>{if(ht.alias===H)return!0;if(typeof v=="object"&&v.expr)return JSON.stringify(ht.expr)===JSON.stringify(v.expr);if(typeof v=="string"&&v.includes("("))try{const zt=At(v);return JSON.stringify(ht.expr)===JSON.stringify(zt)}catch{return!1}return!1}),Y=(X==null?void 0:X.alias)??H,J=G.columns.find(ht=>ht.name===H||ht.name===Y);J?$.push({...J,name:Y}):$.push({name:Y,type:S.TEXT,flags:tt.NONE,colOffset:0})}for(let v=0;v<M.length;v++){const H=M[v],X=H.alias??(H.colName?`${H.func}_${H.colName}`:H.func),Y=H.func==="count"?S.INT32:S.FLOAT64;$.push({name:X,type:Y,flags:tt.NONE,colOffset:0})}const z=b,et=z+F,ot=et+4,Et=ot+4,nt=Et+F,Ot=nt+W;if(Ot>=64)throw new st(Ot);A.emitUint8(m.OP_AGG_INIT),A.emitUint8(0),A.emitUint8(z),A.emitUint8(F),A.emitUint8(0),A.emitUint8(m.OP_OPEN_CURSOR),A.emitUint8(0),A.emitUint32(G.rootPageId),A.emitUint8(m.OP_REWIND),A.emitUint8(0);const Ft=A.emitUint16(0),lt=A.currentOffset(),bt=[];if(se(u,G,A,R,bt,e.udfNameMap,void 0,Q),e.groupBy)for(let v=0;v<e.groupBy.length;v++){const H=e.groupBy[v],X=z+v;let Y=Math.max(Ot+4,40);const J=()=>{if(Y>=64)throw new st(Y);return Y++};if(typeof H=="object"&&H.expr)Z(H.expr,G,A,0,X,J,e.udfNameMap);else{const ht=typeof H=="string"?H:H.colName,zt=(_a=(da=e.selectExprs)==null?void 0:da.find(pt=>pt.alias===ht))==null?void 0:_a.expr;if(zt)Z(zt,G,A,0,X,J,e.udfNameMap);else{const pt=G.columns.findIndex(Dt=>Dt.name===ht);if(pt!==-1){const Dt=G.columns[pt];Lt(A,0,pt,X,Dt.type)}else try{const Dt=At(ht);Z(Dt,G,A,0,X,J,e.udfNameMap)}catch{throw new Error(`Grouping column "${ht}" not found in table "${G.name}"`)}}}}W===0&&F>0&&(A.emitUint8(m.OP_AGG_STEP),A.emitUint8(0),A.emitUint8(z),A.emitUint8(F),A.emitUint8(255),A.emitUint8(0));const Kt=M.some(v=>v.func==="count"),Wt=M.some(v=>v.func==="avg"),ve=M.some(v=>v.func==="sum"),ue=M.some(v=>v.func==="min"),Nt=M.some(v=>v.func==="max");if(Kt||Wt||ve){const v=M.find(X=>X.func==="count");let H=255;if(v&&v.colName&&v.colName!=="*"){const X=G.columns.findIndex(Y=>Y.name===v.colName);if(X!==-1){const Y=G.columns[X];H=et,Lt(A,0,X,H,Y.type)}}A.emitUint8(m.OP_AGG_STEP),A.emitUint8(0),A.emitUint8(z),A.emitUint8(F),A.emitUint8(H),A.emitUint8(0)}if(ve||Wt){const v=M.find(X=>X.func==="sum"||X.func==="avg");let H=255;if(v&&v.colName&&v.colName!=="*"){const X=G.columns.findIndex(Y=>Y.name===v.colName);if(X!==-1){const Y=G.columns[X];H=et+1,Lt(A,0,X,H,Y.type)}}A.emitUint8(m.OP_AGG_STEP),A.emitUint8(0),A.emitUint8(z),A.emitUint8(F),A.emitUint8(H),A.emitUint8(1)}if(ue){const v=M.find(X=>X.func==="min");let H=255;if(v&&v.colName&&v.colName!=="*"){const X=G.columns.findIndex(Y=>Y.name===v.colName);if(X!==-1){const Y=G.columns[X];H=et+2,Lt(A,0,X,H,Y.type)}}A.emitUint8(m.OP_AGG_STEP),A.emitUint8(0),A.emitUint8(z),A.emitUint8(F),A.emitUint8(H),A.emitUint8(3)}if(Nt){const v=M.find(X=>X.func==="max");let H=255;if(v&&v.colName&&v.colName!=="*"){const X=G.columns.findIndex(Y=>Y.name===v.colName);if(X!==-1){const Y=G.columns[X];H=et+3,Lt(A,0,X,H,Y.type)}}A.emitUint8(m.OP_AGG_STEP),A.emitUint8(0),A.emitUint8(z),A.emitUint8(F),A.emitUint8(H),A.emitUint8(4)}const Ee=A.currentOffset();for(const v of bt)A.patchUint16(v,Ee);A.emitUint8(m.OP_NEXT_ROW),A.emitUint8(0);const D=A.emitUint16(0);A.emitUint8(m.OP_JUMP),A.emitUint16(lt);const It=A.currentOffset();A.patchUint16(Ft,It),A.patchUint16(D,It);const ct=A.currentOffset();A.emitUint8(m.OP_AGG_NEXT),A.emitUint8(0),A.emitUint8(Et),A.emitUint8(ot);const Mt=A.emitUint16(0),St=A.currentOffset();A.emitUint8(m.OP_HALT);const Jt=A.currentOffset();A.patchUint16(Mt,Jt);for(let v=0;v<M.length;v++){const H=M[v],X=nt+v;let Y=ot,J=0;H.func==="count"?(Y=ot,J=0):H.func==="sum"?(Y=ot,J=1):H.func==="avg"?(Y=ot,J=2):H.func==="min"?(Y=ot+2,J=3):H.func==="max"&&(Y=ot+3,J=4),A.emitUint8(m.OP_AGG_FINAL),A.emitUint8(Y),A.emitUint8(ot+1),A.emitUint8(X),A.emitUint8(J)}const Bn=(v,H)=>{var X;for(let Y=0;Y<M.length;Y++){const J=M[Y],ht=nt+Y;if(v&&(J.alias&&J.alias===v||(J.colName?`${J.func}_${J.colName}`:J.func)===v||`${J.func}(${J.colName??"*"})`===v.replace(/\s+/g,"")||J.func===v))return ht;if(H&&H.type==="fn"){const zt=H.name.toLowerCase();if(J.func===zt)if(zt==="count"){const pt=H.args[0],Dt=pt&&pt.type==="col"?pt.name:void 0;if(J.colName===void 0||J.colName==="*"||J.colName===Dt)return ht}else{const pt=H.args[0],Dt=pt&&pt.type==="col"?pt.name:void 0;if(J.colName===Dt)return ht}}}if(e.groupBy)for(let Y=0;Y<e.groupBy.length;Y++){const J=e.groupBy[Y],ht=Et+Y,zt=typeof J=="string"?J:J.colName,pt=typeof J=="object"?J.expr:void 0;if(v){if(zt===v||pt&&vt(pt)===v)return ht;const Dt=(X=e.selectExprs)==null?void 0:X.find(mr=>mr.alias===v);if(Dt){if(zt===Dt.alias||pt&&JSON.stringify(pt)===JSON.stringify(Dt.expr))return ht;if(typeof J=="string"&&J.includes("("))try{const mr=At(J);if(JSON.stringify(mr)===JSON.stringify(Dt.expr))return ht}catch{}}}if(H){if(pt&&JSON.stringify(pt)===JSON.stringify(H)||H.type==="col"&&zt===H.name)return ht;if(typeof J=="string"&&J.includes("("))try{const Dt=At(J);if(JSON.stringify(Dt)===JSON.stringify(H))return ht}catch{}}}};if(e.having&&e.having.length>0){let v=null;e.having.length===1?v=e.having[0]:v={type:"and",children:e.having};const H=[];let X=Math.max(Ot+4,40);Qc(v,G,A,Bn,()=>{if(X>=64)throw new st(X);return X++},H,e.udfNameMap);for(const J of H)A.patchUint16(J,ct)}k&&(A.emitUint8(m.OP_OFFSET),A.emitUint8(j),A.emitUint16(ct)),A.emitUint8(m.OP_RESULT_ROW),A.emitUint8(Et),A.emitUint8(F+W),V&&(A.emitUint8(m.OP_LIMIT),A.emitUint8(K),A.emitUint16(St)),A.emitUint8(m.OP_JUMP),A.emitUint16(ct);const ke=A.toByteArray();return ke.outputColumns=$,ke.inSets=U,e.outputColumns=$,ke}const q=l?null:Ys(G,h,d,e.orderBy);if(!l&&e.orderBy&&e.orderBy.length>0&&!(q!=null&&q.satisfiesOrderBy)){const F=e.orderBy.length,M=b,W=M+F;if(W>=64)throw new st(W);const $={numKeys:F,directions:e.orderBy.map(lt=>lt.direction==="desc"?1:0),nullOrders:e.orderBy.map(lt=>lt.nullOrder==="nulls_last"?1:lt.nullOrder==="nulls_first"?0:lt.direction==="desc"?1:0),limit:e.limit,offset:e.offset};e.keyInfos=[$],A.emitUint8(m.OP_SORTER_OPEN),A.emitUint8(0),A.emitUint8(0),A.emitUint8(m.OP_OPEN_CURSOR),A.emitUint8(0),A.emitUint32(G.rootPageId),A.emitUint8(m.OP_REWIND),A.emitUint8(0);const mt=A.emitUint16(0),z=A.currentOffset(),et=[];se(u,G,A,R,et,e.udfNameMap,void 0,Q);for(let lt=0;lt<F;lt++){const bt=e.orderBy[lt],Kt=M+lt;let Wt=50;const ve=()=>{if(Wt>=64)throw new st(Wt);return Wt++};if(bt.expr)Z(bt.expr,G,A,0,Kt,ve,e.udfNameMap);else if(bt.colName){const ue=bt.colName,Nt=(Ea=(ma=e.selectExprs)==null?void 0:ma.find(Ee=>Ee.alias===ue))==null?void 0:Ea.expr;if(Nt)Z(Nt,G,A,0,Kt,ve,e.udfNameMap);else{const Ee=G.columns.findIndex(D=>D.name===ue);if(Ee!==-1){const D=G.columns[Ee];Lt(A,0,Ee,Kt,D.type)}else try{const D=At(ue);Z(D,G,A,0,Kt,ve,e.udfNameMap)}catch{throw new Error(`Order by column "${ue}" not found in table "${G.name}"`)}}}}A.emitUint8(m.OP_SORTER_INSERT),A.emitUint8(0),A.emitUint8(M),A.emitUint8(F),A.emitUint8(0);const ot=A.currentOffset();for(const lt of et)A.patchUint16(lt,ot);A.emitUint8(m.OP_NEXT_ROW),A.emitUint8(0);const Et=A.emitUint16(0);A.emitUint8(m.OP_JUMP),A.emitUint16(z);const nt=A.currentOffset();A.patchUint16(mt,nt),A.patchUint16(Et,nt),A.emitUint8(m.OP_SORTER_SORT),A.emitUint8(0);const Ot=A.currentOffset();A.emitUint8(m.OP_SORTER_NEXT),A.emitUint8(0),A.emitUint16(Ot),A.emitUint8(m.OP_HALT);const Ft=A.toByteArray();return Ft.keyInfos=e.keyInfos,Ft.inSets=U,a&&(Ft.planMetrics=a,Ft.estimatedCost=a.totalCost,Ft.estimatedRows=a.estimatedRows,Ft.joinOrder=a.joinOrder),Ft}const Rt=e.selectExprs!==void 0&&e.selectExprs.length>0&&!(e.selectExprs.length===1&&e.selectExprs[0].expr.type==="col"&&e.selectExprs[0].expr.name==="*");let dt=[];if(Rt)dt=e.selectExprs;else if(l){const F=new Set,M=new Set;for(const W of r)for(const $ of W.columns)F.has($.name.toLowerCase())&&M.add($.name.toLowerCase()),F.add($.name.toLowerCase());for(const W of r)for(const $ of W.columns){const mt=M.has($.name.toLowerCase())?`${W.name}.${$.name}`:$.name;dt.push({expr:{type:"col",name:`${W.name}.${$.name}`},alias:mt})}}let _t=-1;if(Rt||l){const F=dt.map(M=>({name:M.alias,type:ca(M.expr,G,e.udfDefs,r),flags:tt.NONE,colOffset:0}));if(e.outputColumns=F,_t=b,b+=dt.length,b>=64)throw new st(b)}if(l){const F=r.length,M=new Array(F);for(let D=1;D<F;D++)e.joinedTables[D-1].type==="left"&&(M[D]=b++);const W=b++,$=b++,mt=b++;let z=-1;if(T&&C!==-1)if(T.compositeValue){if(z=b++,b>=64)throw new st(b);A.emitUint8(m.OP_LOAD_BLOB),A.emitUint8(z),A.emitUint32(T.compositeValue.length),A.emitBytes(T.compositeValue)}else if(T.scanType==="multi_point"){if(z=b++,b>=64)throw new st(b)}else if(T.filterIndex>=0)z=T.filterIndex*2+1;else{if(z=b++,b>=64)throw new st(b);const D=Xs(T.keyType);hr(A,z,D,T.keyType)}if(b>=64)throw new st(b);for(let D=0;D<F;D++)A.emitUint8(m.OP_OPEN_CURSOR),A.emitUint8(D),A.emitUint32(r[D].rootPageId);T&&C!==-1&&(A.emitUint8(m.OP_OPEN_INDEX),A.emitUint8(C),A.emitUint32(T.index.rootPageId));for(let D=1;D<F;D++){const It=B[D];It&&(A.emitUint8(m.OP_OPEN_INDEX),A.emitUint8(It.indexCursor),A.emitUint32(It.index.rootPageId))}const et=new Array(F),ot=new Array(F),Et=Array.from({length:F},()=>[]),nt=new Array(F),Ot=[];if(T&&C!==-1?T.scanType==="point"?(A.emitUint8(m.OP_INDEX_SEEK_EQ),A.emitUint8(C),A.emitUint8(0),A.emitUint8(z),A.emitUint8(T.keyType),et[0]=A.emitUint16(0)):(A.emitUint8(m.OP_INDEX_SEEK_GE),A.emitUint8(C),A.emitUint8(0),A.emitUint8(z),A.emitUint8(T.keyType),et[0]=A.emitUint16(0)):(A.emitUint8(m.OP_REWIND),A.emitUint8(0),et[0]=A.emitUint16(0)),ot[0]=A.currentOffset(),f[0]&&f[0].length>0){const D=ne(f[0]);se(D,r[0],A,R,Et[0],e.udfNameMap,r,Q)}for(let D=1;D<F;D++){const It=e.joinedTables[D-1],ct=B[D];if(It.type==="left"&&(A.emitUint8(m.OP_LOAD_INT),A.emitUint8(M[D]),A.emitInt32(0)),ct&&ct.isUnique){if(Lt(A,ct.outerCol.cursor,ct.outerCol.colIdx,W,ct.outerCol.col.type),A.emitUint8(m.OP_INDEX_SEEK_EQ),A.emitUint8(ct.indexCursor),A.emitUint8(D),A.emitUint8(W),A.emitUint8(ct.outerCol.col.type),et[D]=A.emitUint16(0),ot[D]=A.currentOffset(),It.type==="inner"&&f[D]&&f[D].length>0){const Mt=ne(f[D]);se(Mt,r[D],A,R,Et[D],e.udfNameMap,r,Q)}It.type==="left"&&(A.emitUint8(m.OP_LOAD_INT),A.emitUint8(M[D]),A.emitInt32(1))}else if(ct&&!ct.isUnique){Lt(A,ct.outerCol.cursor,ct.outerCol.colIdx,W,ct.outerCol.col.type),A.emitUint8(m.OP_INDEX_SEEK_GE),A.emitUint8(ct.indexCursor),A.emitUint8(D),A.emitUint8(W),A.emitUint8(ct.outerCol.col.type),et[D]=A.emitUint16(0),ot[D]=A.currentOffset(),Lt(A,D,ct.innerCol.colIdx,$,ct.innerCol.col.type),A.emitUint8(m.OP_EQ),A.emitUint8(W),A.emitUint8($);const Mt=A.emitUint16(0);if(A.emitUint8(m.OP_JUMP),Et[D].push(A.emitUint16(0)),A.patchUint16(Mt,A.currentOffset()),It.type==="inner"&&f[D]&&f[D].length>0){const St=ne(f[D]);se(St,r[D],A,R,Et[D],e.udfNameMap,r,Q)}It.type==="left"&&(A.emitUint8(m.OP_LOAD_INT),A.emitUint8(M[D]),A.emitInt32(1))}else{A.emitUint8(m.OP_REWIND),A.emitUint8(D),et[D]=A.emitUint16(0),ot[D]=A.currentOffset();const Mt=gt(It.leftCol,r);if(!Mt)throw new Error(`Join column "${It.leftCol}" not found in tables`);const St=gt(It.rightCol,r);if(!St)throw new Error(`Join column "${It.rightCol}" not found in tables`);Lt(A,Mt.cursor,Mt.colIdx,W,Mt.col.type),Lt(A,St.cursor,St.colIdx,$,St.col.type);let Jt;switch(It.op){case"=":Jt=m.OP_EQ;break;case"!=":Jt=m.OP_NE;break;case">":Jt=m.OP_GT;break;case">=":Jt=m.OP_GE;break;case"<":Jt=m.OP_LT;break;case"<=":Jt=m.OP_LE;break;default:Jt=m.OP_EQ}A.emitUint8(Jt),A.emitUint8(W),A.emitUint8($);const Bn=A.emitUint16(0);if(A.emitUint8(m.OP_JUMP),Et[D].push(A.emitUint16(0)),A.patchUint16(Bn,A.currentOffset()),It.type==="inner"&&f[D]&&f[D].length>0){const ke=ne(f[D]);se(ke,r[D],A,R,Et[D],e.udfNameMap,r,Q)}It.type==="left"&&(A.emitUint8(m.OP_LOAD_INT),A.emitUint8(M[D]),A.emitInt32(1))}}se(I,G,A,R,Et[F-1],e.udfNameMap,r,Q);const lt=!(e.orderBy!==void 0&&e.orderBy.length>0)||O;let bt=-1;k&<&&(A.emitUint8(m.OP_OFFSET),A.emitUint8(j),bt=A.emitUint16(0));let Kt=b;const Wt=()=>{if(Kt>=64)throw new st(Kt);return Kt++};for(let D=0;D<dt.length;D++)Z(dt[D].expr,G,A,0,_t+D,Wt,e.udfNameMap,void 0,r);A.emitUint8(m.OP_RESULT_ROW),A.emitUint8(_t),A.emitUint8(dt.length),V&<&&(A.emitUint8(m.OP_LIMIT),A.emitUint8(K),Ot.push(A.emitUint16(0)));for(let D=F-1;D>=1;D--){const It=A.currentOffset();D===F-1&&bt!==-1&&A.patchUint16(bt,It);for(const St of Et[D])A.patchUint16(St,It);const ct=B[D];if(ct&&ct.isUnique){const St=A.currentOffset();A.patchUint16(et[D],St)}else if(ct&&!ct.isUnique){A.emitUint8(m.OP_INDEX_NEXT),A.emitUint8(ct.indexCursor),A.emitUint8(D),nt[D]=A.emitUint16(0),A.emitUint8(m.OP_JUMP),A.emitUint16(ot[D]);const St=A.currentOffset();A.patchUint16(et[D],St),A.patchUint16(nt[D],St)}else{A.emitUint8(m.OP_NEXT_ROW),A.emitUint8(D),nt[D]=A.emitUint16(0),A.emitUint8(m.OP_JUMP),A.emitUint16(ot[D]);const St=A.currentOffset();A.patchUint16(et[D],St),A.patchUint16(nt[D],St)}if(e.joinedTables[D-1].type==="left"){A.emitUint8(m.OP_LOAD_INT),A.emitUint8(mt),A.emitInt32(0),A.emitUint8(m.OP_EQ),A.emitUint8(M[D]),A.emitUint8(mt);const St=A.emitUint16(0);A.emitUint8(m.OP_JUMP);const Jt=A.emitUint16(0);A.patchUint16(St,A.currentOffset());for(let v=0;v<dt.length;v++){const H=dt[v];let X=-1;if(H.expr.type==="col"){const Y=gt(H.expr.name,r);Y&&(X=Y.tableIdx)}X>=D?(A.emitUint8(m.OP_LOAD_NULL),A.emitUint8(_t+v)):Z(H.expr,G,A,0,_t+v,Wt,e.udfNameMap,void 0,r)}const Bn=[];k&<&&(A.emitUint8(m.OP_OFFSET),A.emitUint8(j),Bn.push(A.emitUint16(0))),A.emitUint8(m.OP_RESULT_ROW),A.emitUint8(_t),A.emitUint8(dt.length),V&<&&(A.emitUint8(m.OP_LIMIT),A.emitUint8(K),Ot.push(A.emitUint16(0)));const ke=A.currentOffset();A.patchUint16(Jt,ke);for(const v of Bn)A.patchUint16(v,ke)}}const ve=A.currentOffset();for(const D of Et[0])A.patchUint16(D,ve);T&&C!==-1?T.scanType==="point"?(A.emitUint8(m.OP_JUMP),nt[0]=A.emitUint16(0)):(A.emitUint8(m.OP_INDEX_NEXT),A.emitUint8(C),A.emitUint8(0),nt[0]=A.emitUint16(0),A.emitUint8(m.OP_JUMP),A.emitUint16(ot[0])):(A.emitUint8(m.OP_NEXT_ROW),A.emitUint8(0),nt[0]=A.emitUint16(0),A.emitUint8(m.OP_JUMP),A.emitUint16(ot[0]));const ue=A.currentOffset();A.patchUint16(et[0],ue),A.patchUint16(nt[0],ue);for(const D of Ot)A.patchUint16(D,ue);A.emitUint8(m.OP_HALT);const Nt=A.toByteArray();e.outputColumns&&(Nt.outputColumns=e.outputColumns);const Ee=(Ia=e.joinedTables)==null?void 0:Ia.map((D,It)=>{const ct=It+1,Mt=B[ct];return{tableIndex:ct,tableName:D.table.name,scanType:Mt?"IndexScan":"TableScan",indexName:Mt?Mt.index.name:void 0}});return Nt.joinedTableScans=Ee,Nt.allTables=r,Nt.inSets=U,Nt.table0Scan=T,Nt.isOrderSatisfied=O,O&&(e.isOrderSatisfied=!0),a&&(Nt.planMetrics=a,Nt.estimatedCost=a.totalCost,Nt.estimatedRows=a.estimatedRows,Nt.joinOrder=a.joinOrder),o&&(Nt.whereMetrics=o),Nt}if(q){let F;if(q.compositeValue){if(F=b++,F>=64)throw new st(F);A.emitUint8(m.OP_LOAD_BLOB),A.emitUint8(F),A.emitBytes(q.compositeValue)}else if(q.scanType==="multi_point"){if(F=b++,F>=64)throw new st(F)}else if(q.filterIndex>=0)F=q.filterIndex*2+1;else{if(F=b++,F>=64)throw new st(F);const M=Xs(q.keyType);hr(A,F,M,q.keyType)}if(q.scanType==="point"){A.emitUint8(m.OP_OPEN_CURSOR),A.emitUint8(0),A.emitUint32(G.rootPageId),A.emitUint8(m.OP_OPEN_INDEX),A.emitUint8(1),A.emitUint32(q.index.rootPageId),A.emitUint8(m.OP_INDEX_SEEK_EQ),A.emitUint8(1),A.emitUint8(0),A.emitUint8(F),A.emitUint8(q.keyType);const M=A.emitUint16(0),W=[];se(u,G,A,R,W,e.udfNameMap,void 0,Q);let $=-1;if(k&&(A.emitUint8(m.OP_OFFSET),A.emitUint8(j),$=A.emitUint16(0)),Rt){let ot=b;const Et=()=>{if(ot>=64)throw new st(ot);return ot++};for(let nt=0;nt<e.selectExprs.length;nt++)Z(e.selectExprs[nt].expr,G,A,0,_t+nt,Et,e.udfNameMap);A.emitUint8(m.OP_RESULT_ROW),A.emitUint8(_t),A.emitUint8(e.selectExprs.length)}else A.emitUint8(m.OP_EMIT_ROW),A.emitUint8(0);A.emitUint8(m.OP_JUMP);const mt=A.emitUint16(0),z=A.currentOffset();A.patchUint16(M,z),A.patchUint16(mt,z),$!==-1&&A.patchUint16($,z);for(const ot of W)A.patchUint16(ot,z);A.emitUint8(m.OP_HALT);const et=A.toByteArray();return et.indexScan=q,et.inSets=U,e.outputColumns&&(et.outputColumns=e.outputColumns),q!=null&&q.satisfiesOrderBy&&(et.isOrderSatisfied=!0,e.isOrderSatisfied=!0),a&&(et.planMetrics=a,et.estimatedCost=a.totalCost,et.estimatedRows=a.estimatedRows,et.joinOrder=a.joinOrder),et}else if(q.scanType==="multi_point"){const M=q.inValues?q.inValues.length:0;if(M===0){A.emitUint8(m.OP_HALT);const z=A.toByteArray();return z.indexScan=q,z.inSets=U,e.outputColumns&&(z.outputColumns=e.outputColumns),z}A.emitUint8(m.OP_OPEN_CURSOR),A.emitUint8(0),A.emitUint32(G.rootPageId),A.emitUint8(m.OP_OPEN_INDEX),A.emitUint8(1),A.emitUint32(q.index.rootPageId);const W=[];for(let z=0;z<M;z++){const et=q.inValues[z];hr(A,F,et,q.keyType),A.emitUint8(m.OP_INDEX_SEEK_EQ),A.emitUint8(1),A.emitUint8(0),A.emitUint8(F),A.emitUint8(q.keyType);const ot=A.emitUint16(0),Et=[];se(u,G,A,R,Et,e.udfNameMap,void 0,Q);let nt=-1;if(k&&(A.emitUint8(m.OP_OFFSET),A.emitUint8(j),nt=A.emitUint16(0)),Rt){let bt=b;const Kt=()=>{if(bt>=64)throw new st(bt);return bt++};for(let Wt=0;Wt<e.selectExprs.length;Wt++)Z(e.selectExprs[Wt].expr,G,A,0,_t+Wt,Kt,e.udfNameMap);A.emitUint8(m.OP_RESULT_ROW),A.emitUint8(_t),A.emitUint8(e.selectExprs.length)}else A.emitUint8(m.OP_EMIT_ROW),A.emitUint8(0);V&&(A.emitUint8(m.OP_LIMIT),A.emitUint8(K),W.push(A.emitUint16(0)));const Ot=z===M-1;let Ft=-1;Ot||(A.emitUint8(m.OP_JUMP),Ft=A.emitUint16(0));const lt=A.currentOffset();A.patchUint16(ot,lt);for(const bt of Et)A.patchUint16(bt,lt);nt!==-1&&A.patchUint16(nt,lt),Ft!==-1&&A.patchUint16(Ft,lt)}const $=A.currentOffset();for(const z of W)A.patchUint16(z,$);A.emitUint8(m.OP_HALT);const mt=A.toByteArray();return mt.indexScan=q,mt.inSets=U,e.outputColumns&&(mt.outputColumns=e.outputColumns),q!=null&&q.satisfiesOrderBy&&(mt.isOrderSatisfied=!0,e.isOrderSatisfied=!0),a&&(mt.planMetrics=a,mt.estimatedCost=a.totalCost,mt.estimatedRows=a.estimatedRows,mt.joinOrder=a.joinOrder),mt}else{A.emitUint8(m.OP_OPEN_CURSOR),A.emitUint8(0),A.emitUint32(G.rootPageId),A.emitUint8(m.OP_OPEN_INDEX),A.emitUint8(1),A.emitUint32(q.index.rootPageId),A.emitUint8(m.OP_INDEX_SEEK_GE),A.emitUint8(1),A.emitUint8(0),A.emitUint8(F),A.emitUint8(q.keyType);const M=A.emitUint16(0),W=A.currentOffset(),$=[];se(u,G,A,R,$,e.udfNameMap,void 0,Q);let mt=-1;if(k&&(A.emitUint8(m.OP_OFFSET),A.emitUint8(j),mt=A.emitUint16(0)),Rt){let Ot=b;const Ft=()=>{if(Ot>=64)throw new st(Ot);return Ot++};for(let lt=0;lt<e.selectExprs.length;lt++)Z(e.selectExprs[lt].expr,G,A,0,_t+lt,Ft,e.udfNameMap);A.emitUint8(m.OP_RESULT_ROW),A.emitUint8(_t),A.emitUint8(e.selectExprs.length)}else A.emitUint8(m.OP_EMIT_ROW),A.emitUint8(0);let z=-1;V&&(A.emitUint8(m.OP_LIMIT),A.emitUint8(K),z=A.emitUint16(0));const et=A.currentOffset();mt!==-1&&A.patchUint16(mt,et);for(const Ot of $)A.patchUint16(Ot,et);A.emitUint8(m.OP_INDEX_NEXT),A.emitUint8(1),A.emitUint8(0);const ot=A.emitUint16(0);A.emitUint8(m.OP_JUMP),A.emitUint16(W);const Et=A.currentOffset();A.patchUint16(M,Et),A.patchUint16(ot,Et),z!==-1&&A.patchUint16(z,Et),A.emitUint8(m.OP_HALT);const nt=A.toByteArray();return nt.indexScan=q,nt.inSets=U,e.outputColumns&&(nt.outputColumns=e.outputColumns),q!=null&&q.satisfiesOrderBy&&(nt.isOrderSatisfied=!0,e.isOrderSatisfied=!0),a&&(nt.planMetrics=a,nt.estimatedCost=a.totalCost,nt.estimatedRows=a.estimatedRows,nt.joinOrder=a.joinOrder),nt}}A.emitUint8(m.OP_OPEN_CURSOR),A.emitUint8(0),A.emitUint32(G.rootPageId),A.emitUint8(m.OP_REWIND),A.emitUint8(0);const On=A.emitUint16(0),Pn=A.currentOffset(),bn=[];se(u,G,A,R,bn,e.udfNameMap,void 0,Q);let on=-1;if(k&&(A.emitUint8(m.OP_OFFSET),A.emitUint8(j),on=A.emitUint16(0)),Rt){let F=b;const M=()=>{if(F>=64)throw new st(F);return F++};for(let W=0;W<e.selectExprs.length;W++)Z(e.selectExprs[W].expr,G,A,0,_t+W,M,e.udfNameMap);A.emitUint8(m.OP_RESULT_ROW),A.emitUint8(_t),A.emitUint8(e.selectExprs.length)}else A.emitUint8(m.OP_EMIT_ROW),A.emitUint8(0);let De=-1;V&&(A.emitUint8(m.OP_LIMIT),A.emitUint8(K),De=A.emitUint16(0));const es=A.currentOffset();on!==-1&&A.patchUint16(on,es);for(const F of bn)A.patchUint16(F,es);A.emitUint8(m.OP_NEXT_ROW),A.emitUint8(0);const Qe=A.emitUint16(0);A.emitUint8(m.OP_JUMP),A.emitUint16(Pn);const Nn=A.currentOffset();A.patchUint16(On,Nn),A.patchUint16(Qe,Nn),De!==-1&&A.patchUint16(De,Nn),A.emitUint8(m.OP_HALT);const ce=A.toByteArray();return ce.inSets=U,e.outputColumns&&(ce.outputColumns=e.outputColumns),o&&(ce.whereMetrics=o),a&&(ce.planMetrics=a,ce.estimatedCost=a.totalCost,ce.estimatedRows=a.estimatedRows,ce.joinOrder=a.joinOrder),ce}const vc=new TextDecoder;function fa(e,t){const n=[],s=new DataView(e.buffer,e.byteOffset,e.byteLength);let i=0;const r=a=>{var c;return(c=t==null?void 0:t.columns[a])!=null&&c.name?`'${t.columns[a].name}'`:`col_${a}`},o=a=>`0x${a.toString(16).padStart(4,"0")}`;for(;i<e.byteLength;){const a=i,c=e[i++];switch(c){case m.OP_HALT:n.push({addr:a,opcode:"OP_HALT",p1:"",p2:"",p3:"",comment:"Halt VM execution (STATUS_DONE)"});break;case m.OP_OPEN_CURSOR:{const l=e[i++],u=s.getUint32(i,!0);i+=4,n.push({addr:a,opcode:"OP_OPEN_CURSOR",p1:`c[${l}]`,p2:`page=${u}`,p3:"",comment:`Open cursor ${l} on root page ${u}${t?` ('${t.name}')`:""}`});break}case m.OP_OPEN_INDEX:{const l=e[i++],u=s.getUint32(i,!0);i+=4,n.push({addr:a,opcode:"OP_OPEN_INDEX",p1:`c[${l}]`,p2:`page=${u}`,p3:"",comment:`Open index cursor ${l} on root page ${u}`});break}case m.OP_INDEX_SEEK_EQ:{const l=e[i++],u=e[i++],d=e[i++],h=e[i++],f=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_INDEX_SEEK_EQ",p1:`idx=c[${l}], data=c[${u}]`,p2:`key=r[${d}], type=${h}`,p3:o(f),comment:`Seek exact key in index; position data cursor or jump to ${o(f)} if not found`});break}case m.OP_INDEX_SEEK_GE:{const l=e[i++],u=e[i++],d=e[i++],h=e[i++],f=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_INDEX_SEEK_GE",p1:`idx=c[${l}], data=c[${u}]`,p2:`key=r[${d}], type=${h}`,p3:o(f),comment:`Seek first entry >= key in index; position data cursor or jump to ${o(f)} if EOF`});break}case m.OP_INDEX_NEXT:{const l=e[i++],u=e[i++],d=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_INDEX_NEXT",p1:`idx=c[${l}], data=c[${u}]`,p2:o(d),p3:"",comment:`Advance index cursor to next entry; jump to ${o(d)} if EOF`});break}case m.OP_REWIND:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_REWIND",p1:`c[${l}]`,p2:o(u),p3:"",comment:`Rewind cursor to first row; jump to ${o(u)} if empty`});break}case m.OP_NEXT_ROW:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_NEXT_ROW",p1:`c[${l}]`,p2:o(u),p3:"",comment:`Advance cursor to next row; jump to ${o(u)} if EOF`});break}case m.OP_LAST:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_LAST",p1:`c[${l}]`,p2:o(u),p3:"",comment:`Position cursor to last row; jump to ${o(u)} if empty`});break}case m.OP_PREV_ROW:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_PREV_ROW",p1:`c[${l}]`,p2:o(u),p3:"",comment:`Advance cursor to previous row; jump to ${o(u)} if BOF`});break}case m.OP_COLUMN_INT:{const l=e[i++],u=e[i++],d=e[i++];n.push({addr:a,opcode:"OP_COLUMN_INT",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${d}]`,comment:`Read ${r(u)} as INT into r[${d}]`});break}case m.OP_COLUMN_FLOAT:{const l=e[i++],u=e[i++],d=e[i++];n.push({addr:a,opcode:"OP_COLUMN_FLOAT",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${d}]`,comment:`Read ${r(u)} as FLOAT into r[${d}]`});break}case m.OP_COLUMN_TEXT:{const l=e[i++],u=e[i++],d=e[i++];n.push({addr:a,opcode:"OP_COLUMN_TEXT",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${d}]`,comment:`Read ${r(u)} as TEXT into r[${d}]`});break}case m.OP_COLUMN_BLOB:{const l=e[i++],u=e[i++],d=e[i++];n.push({addr:a,opcode:"OP_COLUMN_BLOB",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${d}]`,comment:`Read ${r(u)} as BLOB into r[${d}]`});break}case m.OP_COLUMN_UUID:{const l=e[i++],u=e[i++],d=e[i++];n.push({addr:a,opcode:"OP_COLUMN_UUID",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${d}]`,comment:`Read ${r(u)} as UUID into r[${d}]`});break}case m.OP_COLUMN_ULID:{const l=e[i++],u=e[i++],d=e[i++];n.push({addr:a,opcode:"OP_COLUMN_ULID",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${d}]`,comment:`Read ${r(u)} as ULID into r[${d}]`});break}case m.OP_IS_NULL:{const l=e[i++],u=e[i++],d=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_IS_NULL",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:o(d),comment:`If ${r(u)} IS NULL -> jump to ${o(d)}`});break}case m.OP_IS_NOT_NULL:{const l=e[i++],u=e[i++],d=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_IS_NOT_NULL",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:o(d),comment:`If ${r(u)} IS NOT NULL -> jump to ${o(d)}`});break}case m.OP_EQ:case m.OP_NE:case m.OP_GT:case m.OP_GE:case m.OP_LT:case m.OP_LE:{const l={[m.OP_EQ]:"OP_EQ",[m.OP_NE]:"OP_NE",[m.OP_GT]:"OP_GT",[m.OP_GE]:"OP_GE",[m.OP_LT]:"OP_LT",[m.OP_LE]:"OP_LE"},u={[m.OP_EQ]:"==",[m.OP_NE]:"!=",[m.OP_GT]:">",[m.OP_GE]:">=",[m.OP_LT]:"<",[m.OP_LE]:"<="},d=e[i++],h=e[i++],f=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:l[c],p1:`r[${d}]`,p2:`r[${h}]`,p3:o(f),comment:`If r[${d}] ${u[c]} r[${h}] -> jump to ${o(f)}`});break}case m.OP_JUMP:{const l=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_JUMP",p1:o(l),p2:"",p3:"",comment:`Unconditional jump to ${o(l)}`});break}case m.OP_STR_LIKE:case m.OP_STR_NOT_LIKE:case m.OP_STR_CONTAINS:case m.OP_STR_STARTS_WITH:case m.OP_STR_ENDS_WITH:{const l={[m.OP_STR_LIKE]:"OP_STR_LIKE",[m.OP_STR_NOT_LIKE]:"OP_STR_NOT_LIKE",[m.OP_STR_CONTAINS]:"OP_STR_CONTAINS",[m.OP_STR_STARTS_WITH]:"OP_STR_STARTS_WITH",[m.OP_STR_ENDS_WITH]:"OP_STR_ENDS_WITH"},u={[m.OP_STR_LIKE]:"LIKE",[m.OP_STR_NOT_LIKE]:"NOT LIKE",[m.OP_STR_CONTAINS]:"CONTAINS",[m.OP_STR_STARTS_WITH]:"STARTS_WITH",[m.OP_STR_ENDS_WITH]:"ENDS_WITH"},d=e[i++],h=e[i++],f=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:l[c],p1:`r[${d}]`,p2:`r[${h}]`,p3:o(f),comment:`If r[${d}] ${u[c]} r[${h}] -> jump to ${o(f)}`});break}case m.OP_IN:{const l=e[i++],u=s.getUint16(i,!0);i+=2;const d=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_IN",p1:`r[${l}]`,p2:`set[${u}]`,p3:o(d),comment:`If r[${l}] IN set[${u}] -> jump to ${o(d)}`});break}case m.OP_LOAD_INT:{const l=e[i++],u=s.getInt32(i,!0);i+=4,n.push({addr:a,opcode:"OP_LOAD_INT",p1:`r[${l}]`,p2:`${u}`,p3:"",comment:`Load literal int ${u} into r[${l}]`});break}case m.OP_LOAD_FLOAT:{const l=e[i++],u=s.getFloat64(i,!0);i+=8,n.push({addr:a,opcode:"OP_LOAD_FLOAT",p1:`r[${l}]`,p2:`${u}`,p3:"",comment:`Load literal float ${u} into r[${l}]`});break}case m.OP_LOAD_TEXT:{const l=e[i++],u=s.getUint16(i,!0);i+=2;const d=new Uint8Array(e.buffer,e.byteOffset+i,u),h=vc.decode(d);i+=u,n.push({addr:a,opcode:"OP_LOAD_TEXT",p1:`r[${l}]`,p2:`"${h}"`,p3:"",comment:`Load literal text "${h}" into r[${l}]`});break}case m.OP_LOAD_BLOB:{const l=e[i++],u=s.getUint16(i,!0);i+=2+u,n.push({addr:a,opcode:"OP_LOAD_BLOB",p1:`r[${l}]`,p2:`len=${u}`,p3:"",comment:`Load literal BLOB (${u} bytes) into r[${l}]`});break}case m.OP_LOAD_NULL:{const l=e[i++];n.push({addr:a,opcode:"OP_LOAD_NULL",p1:`r[${l}]`,p2:"NULL",p3:"",comment:`Set r[${l}] to NULL`});break}case m.OP_EMIT_ROW:{const l=e[i++];n.push({addr:a,opcode:"OP_EMIT_ROW",p1:`c[${l}]`,p2:"",p3:"",comment:"Row passed all filters -> emit to Output Result Buffer"});break}case m.OP_RESULT_ROW:{const l=e[i++],u=e[i++];n.push({addr:a,opcode:"OP_RESULT_ROW",p1:`r[${l}]`,p2:`cols=${u}`,p3:"",comment:`Serialize registers r[${l}..${l+u-1}] to Result Buffer`});break}case m.OP_OFFSET:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_OFFSET",p1:`r[${l}]`,p2:o(u),p3:"",comment:`If r[${l}] > 0 -> decrement and skip row to ${o(u)}`});break}case m.OP_LIMIT:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_LIMIT",p1:`r[${l}]`,p2:o(u),p3:"",comment:`If r[${l}] <= 1 -> halt to ${o(u)}, else decrement`});break}case m.OP_CALL_UDF:{const l=s.getUint16(i,!0);i+=2;const u=e[i++],d=e[i++],h=e[i++];n.push({addr:a,opcode:"OP_CALL_UDF",p1:`udf#${l}`,p2:`r[${u}..${u+d-1}]`,p3:`r[${h}]`,comment:`Call UDF #${l} with ${d} args -> r[${h}]`});break}case m.OP_STR_LOWER:case m.OP_STR_UPPER:case m.OP_STR_LENGTH:case m.OP_STR_TRIM:case m.OP_MATH_ABS:case m.OP_MATH_ROUND:case m.OP_MATH_FLOOR:case m.OP_MATH_CEIL:{const l={[m.OP_STR_LOWER]:"OP_STR_LOWER",[m.OP_STR_UPPER]:"OP_STR_UPPER",[m.OP_STR_LENGTH]:"OP_STR_LENGTH",[m.OP_STR_TRIM]:"OP_STR_TRIM",[m.OP_MATH_ABS]:"OP_MATH_ABS",[m.OP_MATH_ROUND]:"OP_MATH_ROUND",[m.OP_MATH_FLOOR]:"OP_MATH_FLOOR",[m.OP_MATH_CEIL]:"OP_MATH_CEIL"},u=e[i++],d=e[i++];n.push({addr:a,opcode:l[c],p1:`r[${u}]`,p2:`r[${d}]`,p3:"",comment:`${l[c]}: r[${d}] = ${l[c].toLowerCase()}(r[${u}])`});break}case m.OP_STR_SUBSTR:{const l=e[i++],u=e[i++],d=e[i++],h=e[i++];n.push({addr:a,opcode:"OP_STR_SUBSTR",p1:`r[${l}]`,p2:`start=r[${u}], len=r[${d}]`,p3:`r[${h}]`,comment:`Extract substring from r[${l}] into r[${h}]`});break}case m.OP_ADD:case m.OP_SUB:case m.OP_MUL:case m.OP_DIV:case m.OP_MOD:{const l={[m.OP_ADD]:"OP_ADD",[m.OP_SUB]:"OP_SUB",[m.OP_MUL]:"OP_MUL",[m.OP_DIV]:"OP_DIV",[m.OP_MOD]:"OP_MOD"},u=e[i++],d=e[i++],h=e[i++];n.push({addr:a,opcode:l[c],p1:`r[${u}]`,p2:`r[${d}]`,p3:`r[${h}]`,comment:`${l[c]}: r[${h}] = r[${u}] ${l[c].replace("OP_","")} r[${d}]`});break}case m.OP_STR_CONCAT:case m.OP_COALESCE:{const l={[m.OP_STR_CONCAT]:"OP_STR_CONCAT",[m.OP_COALESCE]:"OP_COALESCE"},u=e[i++],d=e[i++],h=e[i++];n.push({addr:a,opcode:l[c],p1:`r[${u}..${u+d-1}]`,p2:`count=${d}`,p3:`r[${h}]`,comment:`${l[c]}: r[${h}]`});break}case m.OP_COPY:{const l=e[i++],u=e[i++];n.push({addr:a,opcode:"OP_COPY",p1:`r[${l}]`,p2:`r[${u}]`,p3:"",comment:`Copy r[${l}] to r[${u}]`});break}case m.OP_SORTER_OPEN:{const l=e[i++],u=e[i++];n.push({addr:a,opcode:"OP_SORTER_OPEN",p1:`s[${l}]`,p2:`keyInfo=${u}`,p3:"",comment:`Open sorter ${l} with keyInfo ${u}`});break}case m.OP_SORTER_INSERT:{const l=e[i++],u=e[i++],d=e[i++],h=e[i++];n.push({addr:a,opcode:"OP_SORTER_INSERT",p1:`s[${l}]`,p2:`r[${u}..+${d}]`,p3:`c[${h}]`,comment:`Insert row from cursor ${h} into sorter ${l}`});break}case m.OP_SORTER_SORT:{const l=e[i++];n.push({addr:a,opcode:"OP_SORTER_SORT",p1:`s[${l}]`,p2:"",p3:"",comment:`Sort entries in sorter ${l}`});break}case m.OP_SORTER_NEXT:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_SORTER_NEXT",p1:`s[${l}]`,p2:o(u),p3:"",comment:`Emit next sorted row from sorter ${l}; jump to ${o(u)} while more rows`});break}case m.OP_AGG_INIT:{const l=e[i++],u=e[i++],d=e[i++],h=e[i++];n.push({addr:a,opcode:"OP_AGG_INIT",p1:`agg[${l}]`,p2:`keys=r[${u}..+${d}]`,p3:`mode=${h===0?"hash":"stream"}`,comment:`Initialize aggregator ${l} (${h===0?"hash table":"stream"})`});break}case m.OP_AGG_STEP:{const l=e[i++],u=e[i++],d=e[i++],h=e[i++],f=e[i++],g=["COUNT","SUM","AVG","MIN","MAX"];n.push({addr:a,opcode:"OP_AGG_STEP",p1:`agg[${l}]`,p2:`val=${h===255?"*":`r[${h}]`}`,p3:g[f]??`${f}`,comment:`Update accumulator ${g[f]??f} for group r[${u}..+${d}]`});break}case m.OP_AGG_NEXT:{const l=e[i++],u=e[i++],d=e[i++],h=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_AGG_NEXT",p1:`agg[${l}]`,p2:`out_keys=r[${u}], out_acc=r[${d}]`,p3:o(h),comment:`Iterate next group bucket; jump to ${o(h)}`});break}case m.OP_AGG_FINAL:{const l=e[i++],u=e[i++],d=e[i++],h=e[i++],f=["COUNT","SUM","AVG","MIN","MAX"];n.push({addr:a,opcode:"OP_AGG_FINAL",p1:`sum=r[${l}], cnt=r[${u}]`,p2:`r[${d}]`,p3:f[h]??`${h}`,comment:`Finalize ${f[h]??h} into r[${d}]`});break}case m.OP_REG_IS_NULL:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_REG_IS_NULL",p1:`r[${l}]`,p2:o(u),p3:"",comment:`Jump to ${o(u)} if r[${l}] is NULL`});break}case m.OP_REG_IS_NOT_NULL:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_REG_IS_NOT_NULL",p1:`r[${l}]`,p2:o(u),p3:"",comment:`Jump to ${o(u)} if r[${l}] is NOT NULL`});break}default:n.push({addr:a,opcode:`OP_UNKNOWN(0x${c.toString(16)})`,p1:"",p2:"",p3:"",comment:"Unknown opcode"});break}}return n}function Aa(e){const t=(i,r)=>i.padEnd(r," "),n=i=>`0x${i.toString(16).padStart(4,"0")}`;let s=`${t("ADDR",8)} ${t("OPCODE",18)} ${t("P1",12)} ${t("P2",20)} ${t("P3",10)} COMMENT
|
|
2
|
-
`;
|
|
3
|
-
`;for(const
|
|
4
|
-
`;return s}const ts=new Set;function js(e,t){if(ts.size===0||!e)return;const n=Array.isArray(t)?t:[t];for(const s of ts)s.record(e,n)}function ha(e,t={}){let n={data:t.initialData,isLoading:!0,error:null,lastUpdated:null,lastEvent:null};const s=new Set;let i=[],r="",o=0,a=!1,c=!1,l=null,u;const d=()=>{if(!a)for(const p of s)try{p(n)}catch{}},h=()=>{for(const p of i)try{p()}catch{}i=[],r=""},f=p=>{if(!a){if(u=p,t.debounceMs&&t.debounceMs>0){l!==null&&clearTimeout(l),l=setTimeout(()=>{l=null;const y=u;u=void 0,_(y)},t.debounceMs);return}c||(c=!0,queueMicrotask(()=>{if(c=!1,a)return;const y=u;u=void 0,_(y)}))}},g=p=>{if(a)return;if(t.db&&typeof t.db.subscribe=="function"){if(p.has(t.db)||p.set(t.db,new Set),t.tables){const w=p.get(t.db);if(t.tables==="*")w.add("*");else{const C=Array.isArray(t.tables)?t.tables:[t.tables];for(const B of C)w.add(B.toLowerCase())}}}else if(t.tables&&p.size>0)for(const[,w]of p)if(t.tables==="*")w.add("*");else{const C=Array.isArray(t.tables)?t.tables:[t.tables];for(const B of C)w.add(B.toLowerCase())}const y=[];let T=0;for(const[,w]of p){const C=w.has("*")?["*"]:Array.from(w).sort();y.push(`${T++}:${C.join(",")}`)}const O=y.join("|");if(!(O===r&&i.length>0)){h(),r=O;for(const[w,C]of p){if(!w||typeof w.subscribe!="function")continue;const B=C.has("*")||C.size===0?"*":Array.from(C),P=w.subscribe(B,U=>{f(U)});i.push(P)}}},_=async p=>{if(a)return n.data;const y=++o,T=new Map,O={record(w,C){if(!w||typeof w.subscribe!="function")return;let B=T.get(w);B||(B=new Set,T.set(w,B));for(const P of C)P&&P!=="__subquery__"&&B.add(P.toLowerCase())}};ts.add(O);try{const w=e();let C;if(x(w)){const B=w;O.record(B.getDb(),B.getReferencedTables()),C=await B.toArray()}else{const B=await w;if(x(B)){const P=B;O.record(P.getDb(),P.getReferencedTables()),C=await P.toArray()}else C=B}return ts.delete(O),a||y!==o?n.data:(g(T),n={data:C,isLoading:!1,error:null,lastUpdated:Date.now(),lastEvent:p??n.lastEvent},d(),C)}catch(w){if(ts.delete(O),a||y!==o)return n.data;(T.size>0||t.db)&&g(T);const C=w instanceof Error?w:new Error(String(w));if(n={...n,isLoading:!1,error:C},t.onError)try{t.onError(C)}catch{}return d(),n.data}};t.autoStart!==!1&&_();const I={getState(){return n},subscribe(p){return a?()=>{}:(s.add(p),p(n),()=>{s.delete(p)})},onData(p){return I.subscribe(y=>{!y.isLoading&&!y.error&&y.data!==void 0&&p(y.data,y)})},refresh(){return _()},destroy(){a||(a=!0,o++,l!==null&&(clearTimeout(l),l=null),h(),s.clear())},[Symbol.asyncIterator](){const p=[];let y=null,T=null,O=null,w=!1;const C=U=>{if(!w)if(y){const Q=y;y=null,T=null,Q({value:U,done:!1})}else p.push({value:U})},B=U=>{if(!w)if(T){const Q=T;y=null,T=null,Q(U)}else p.push({error:U})};O=I.subscribe(U=>{U.isLoading||(U.error?B(U.error):U.data!==void 0&&C(U.data))});const P=()=>{if(!w&&(w=!0,O&&(O(),O=null),I.destroy(),y)){const U=y;y=null,T=null,U({value:void 0,done:!0})}};return{next(){if(p.length>0){const U=p.shift();return U.error?Promise.reject(U.error):U.done?Promise.resolve({value:void 0,done:!0}):Promise.resolve({value:U.value,done:!1})}return w||a?Promise.resolve({value:void 0,done:!0}):new Promise((U,Q)=>{y=U,T=Q})},return(){return P(),Promise.resolve({value:void 0,done:!0})},throw(U){return P(),Promise.reject(U)},[Symbol.asyncIterator](){return this}}}};return I}function Ks(e,t,n){const s=typeof t=="function",r=ha(e,s?n:t);return s&&r.onData(t),r}function x(e){return e instanceof Bt||typeof e=="object"&&e!==null&&typeof e.toArray=="function"&&typeof e.where=="function"&&typeof e.select=="function"&&"filters"in e}function wt(e){if(e instanceof it||typeof e=="object"&&e!==null&&"node"in e)return{expr:e.node};if(typeof e=="object"&&e!==null&&"type"in e)return{expr:e};if(typeof e=="string"){const t=e.trim();return t.includes("(")||t.includes("+")||t.includes("-")||t.includes("*")||t.includes("/")||t.includes("%")?{expr:At(t),colName:t}:{colName:t}}return{}}function _r(e){const t=[];function n(s){if(s.type==="fn"){const i=s.name.toLowerCase();if(de(i)){const r=s.args[0],o=r&&r.type==="col"&&r.name!=="*"?r.name:void 0;t.push({func:i,colName:o})}for(const r of s.args)n(r)}else s.type==="binary"&&(n(s.left),n(s.right))}return n(e),t}function Js(e){if(!e)return[];if(Array.isArray(e)){const t=[];for(const n of e)t.push(...Js(n));return t}if(x(e)){const t=e.getSelectFields(),n=e.getAggregates();return[{alias:t.length>0?t[0].alias:n.length>0?n[0].alias??(n[0].colName?`${n[0].func}_${n[0].colName}`:n[0].func):"subquery",subquery:e}]}if(e instanceof it||typeof e=="object"&&e!==null&&"node"in e){const t=e.node;return[{alias:vt(t),expr:t,sourceCol:t.type==="col"&&t.name!=="*"?t.name:void 0,fn:t.type==="fn"?t.name:void 0}]}if(typeof e=="string"){const t=e.trim();if(!t)return[];const n=qs(t);return[{alias:n.alias,expr:n.expr,sourceCol:n.expr.type==="col"&&n.expr.name!=="*"?n.expr.name:void 0,fn:n.expr.type==="fn"?n.expr.name:void 0}]}if(typeof e=="object"&&e!==null){if("subquery"in e&&"as"in e&&x(e.subquery)&&typeof e.as=="string")return[{alias:e.as,subquery:e.subquery}];if("expr"in e&&"alias"in e){const n=e.expr;return[{alias:e.alias,expr:n,sourceCol:n.type==="col"&&n.name!=="*"?n.name:void 0,fn:n.type==="fn"?n.name:void 0}]}if("col"in e&&"as"in e&&typeof e.col=="string"&&typeof e.as=="string"){const n=qs(`${e.col} as ${e.as}`);return[{sourceCol:e.col==="*"?void 0:e.col,alias:e.as,expr:n.expr,fn:n.expr.type==="fn"?n.expr.name:void 0}]}const t=[];for(const[n,s]of Object.entries(e))if(typeof s=="string"){const i=qs(`${n} as ${s}`);t.push({sourceCol:n==="*"?void 0:n,alias:s,expr:i.expr,fn:i.expr.type==="fn"?i.expr.name:void 0})}else if(x(s))t.push({alias:n,subquery:s});else if(typeof s=="object"&&s!==null&&"subquery"in s&&x(s.subquery))t.push({alias:n,subquery:s.subquery});else if(s instanceof it||typeof s=="object"&&s!==null&&"node"in s){const i=s.node;t.push({alias:n,expr:i,sourceCol:i.type==="col"&&i.name!=="*"?i.name:void 0,fn:i.type==="fn"?i.name:void 0})}else if(typeof s=="object"&&s!==null&&"type"in s){const i=s;t.push({alias:n,expr:i,sourceCol:i.type==="col"&&i.name!=="*"?i.name:void 0,fn:i.type==="fn"?i.name:void 0})}return t}return[]}function ut(e){if(!x(e))if(typeof e=="string"){const t=e.trim();if(de(t))throw new _s(t);if(t.includes("("))try{const n=At(t);rn(n,"where")}catch(n){if(n instanceof _s)throw n}}else e instanceof it||typeof e=="object"&&e!==null&&"node"in e?rn(e.node,"where"):typeof e=="object"&&e!==null&&"type"in e&&rn(e,"where")}class Bt{constructor(t,n){N(this,"db");N(this,"tableName");N(this,"sourceSubquery");N(this,"filters",[]);N(this,"selectFields",[]);N(this,"limitCount",null);N(this,"offsetCount",null);N(this,"sortCol",null);N(this,"sortDir","asc");N(this,"orderKeys",[]);N(this,"groupCols",[]);N(this,"groupKeys",[]);N(this,"aggExprs",[]);N(this,"havingFilters",[]);N(this,"joins",[]);N(this,"planner");this.db=t,x(n)?(this.sourceSubquery=n,this.tableName="__subquery__",this.assertSubqueryDepth(),js(this.db,n.getReferencedTables())):(this.tableName=n,js(this.db,n))}withPlanner(t){return this.planner=t,this}as(t){return{subquery:this,as:t}}getDb(){return this.db}getTableName(){return this.tableName}getReferencedTables(){const t=new Set,n=s=>{if(!s)return;s.tableName&&s.tableName!=="__subquery__"&&t.add(s.tableName),s.sourceSubquery&&n(s.sourceSubquery);for(const r of s.joins)r.table&&t.add(r.table);for(const r of s.selectFields)r.subquery&&x(r.subquery)&&n(r.subquery);const i=r=>{if(r&&(r.subquery&&x(r.subquery)&&n(r.subquery),r.value&&x(r.value)&&n(r.value),r.child&&i(r.child),r.children))for(const o of r.children)i(o)};for(const r of s.filters)i(r);for(const r of s.havingFilters)i(r)};return n(this),Array.from(t)}getSourceSubquery(){return this.sourceSubquery}getAggregates(){return this.aggExprs}getFilterSubqueryDepth(t){let n=0;if(t.subquery&&x(t.subquery)&&(n=Math.max(n,1+t.subquery.getMaxSubqueryDepth())),t.value&&x(t.value)&&(n=Math.max(n,1+t.value.getMaxSubqueryDepth())),t.child&&(n=Math.max(n,this.getFilterSubqueryDepth(t.child))),t.children)for(const s of t.children)n=Math.max(n,this.getFilterSubqueryDepth(s));return n}getMaxSubqueryDepth(){let t=0;this.sourceSubquery&&(t=Math.max(t,1+this.sourceSubquery.getMaxSubqueryDepth()));for(const n of this.selectFields)n.subquery&&(t=Math.max(t,1+n.subquery.getMaxSubqueryDepth()));for(const n of this.filters)t=Math.max(t,this.getFilterSubqueryDepth(n));for(const n of this.havingFilters)t=Math.max(t,this.getFilterSubqueryDepth(n));return t}assertSubqueryDepth(){const t=this.getMaxSubqueryDepth();if(t>7)throw new Xr(t,7)}join(t,n,s,i){const r=i!==void 0?s:"=",o=i!==void 0?i:s;return this.joins.push({type:"inner",table:t,leftCol:n,op:r,rightCol:o}),this}innerJoin(t,n,s,i){return this.join(t,n,s,i)}leftJoin(t,n,s,i){const r=i!==void 0?s:"=",o=i!==void 0?i:s;return this.joins.push({type:"left",table:t,leftCol:n,op:r,rightCol:o}),this}getJoins(){return this.joins}where(t,n,s){if(typeof t=="function"){const i=new Bt(this.db,this.tableName);t(i);const r=i.getRootFilter();r&&(this.filters.push(r),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0){if(typeof t=="string"){ut(t);const i=At(t);this.filters.push({type:"expr",expr:i})}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t)ut(t),this.filters.push({type:"expr",expr:t.node});else if(typeof t=="object"&&t!==null&&"type"in t)ut(t),this.filters.push({type:"expr",expr:t});else if(typeof t=="object"&&t!==null)for(const[i,r]of Object.entries(t))this.where(i,"=",r)}else{if(ut(t),ut(s),typeof n=="string"&&n.trim().toLowerCase()==="in")return this.whereIn(t,s);if(typeof n=="string"&&n.trim().toLowerCase()==="not in")return this.whereNotIn(t,s);const i=wt(t);x(s)?(this.filters.push({type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:s}),this.assertSubqueryDepth()):this.filters.push({type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s})}return this}orWhere(t,n,s){if(typeof t=="function"){const i=new Bt(this.db,this.tableName);t(i);const r=i.getRootFilter();r&&(this.addOrFilter(r),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0)if(typeof t=="string"){ut(t);const i=At(t);this.addOrFilter({type:"expr",expr:i})}else t instanceof it||typeof t=="object"&&t!==null&&"node"in t?(ut(t),this.addOrFilter({type:"expr",expr:t.node})):typeof t=="object"&&t!==null&&"type"in t&&(ut(t),this.addOrFilter({type:"expr",expr:t}));else{if(ut(t),ut(s),typeof n=="string"&&n.trim().toLowerCase()==="in")return this.orWhereIn(t,s);if(typeof n=="string"&&n.trim().toLowerCase()==="not in")return this.orWhereNotIn(t,s);const i=wt(t);x(s)?(this.addOrFilter({type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:s}),this.assertSubqueryDepth()):this.addOrFilter({type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s})}return this}whereNot(t,n,s){if(typeof t=="function"){const i=new Bt(this.db,this.tableName);t(i);const r=i.getRootFilter();r&&(this.filters.push({type:"not",child:r}),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0)if(typeof t=="string"){ut(t);const i=At(t);this.filters.push({type:"not",child:{type:"expr",expr:i}})}else t instanceof it||typeof t=="object"&&t!==null&&"node"in t?(ut(t),this.filters.push({type:"not",child:{type:"expr",expr:t.node}})):typeof t=="object"&&t!==null&&"type"in t&&(ut(t),this.filters.push({type:"not",child:{type:"expr",expr:t}}));else{if(ut(t),ut(s),typeof n=="string"&&n.trim().toLowerCase()==="in")return this.whereNotIn(t,s);if(typeof n=="string"&&n.trim().toLowerCase()==="not in")return this.whereIn(t,s);const i=wt(t);this.filters.push({type:"not",child:{type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0}}),x(s)&&this.assertSubqueryDepth()}return this}orWhereNot(t,n,s){if(typeof t=="function"){const i=new Bt(this.db,this.tableName);t(i);const r=i.getRootFilter();r&&(this.addOrFilter({type:"not",child:r}),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0)if(typeof t=="string"){ut(t);const i=At(t);this.addOrFilter({type:"not",child:{type:"expr",expr:i}})}else t instanceof it||typeof t=="object"&&t!==null&&"node"in t?(ut(t),this.addOrFilter({type:"not",child:{type:"expr",expr:t.node}})):typeof t=="object"&&t!==null&&"type"in t&&(ut(t),this.addOrFilter({type:"not",child:{type:"expr",expr:t}}));else{if(ut(t),ut(s),typeof n=="string"&&n.trim().toLowerCase()==="in")return this.orWhereNotIn(t,s);if(typeof n=="string"&&n.trim().toLowerCase()==="not in")return this.orWhereIn(t,s);const i=wt(t);this.addOrFilter({type:"not",child:{type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0}}),x(s)&&this.assertSubqueryDepth()}return this}whereRaw(t){return this.where(t)}orWhereRaw(t){return this.orWhere(t)}whereNull(t){return ut(t),this.filters.push({type:"null",colName:t,isNull:!0}),this}whereNotNull(t){return ut(t),this.filters.push({type:"null",colName:t,isNull:!1}),this}orWhereNull(t){return ut(t),this.addOrFilter({type:"null",colName:t,isNull:!0}),this}orWhereNotNull(t){return ut(t),this.addOrFilter({type:"null",colName:t,isNull:!1}),this}whereLike(t,n){return this.where(t,"like",n)}whereNotLike(t,n){return this.where(t,"not like",n)}whereStartsWith(t,n){return this.where(t,"starts_with",n)}whereEndsWith(t,n){return this.where(t,"ends_with",n)}whereContains(t,n){return this.where(t,"contains",n)}orWhereLike(t,n){return this.orWhere(t,"like",n)}orWhereNotLike(t,n){return this.orWhere(t,"not like",n)}orWhereStartsWith(t,n){return this.orWhere(t,"starts_with",n)}orWhereEndsWith(t,n){return this.orWhere(t,"ends_with",n)}orWhereContains(t,n){return this.orWhere(t,"contains",n)}whereIn(t,n){ut(t);const s=wt(t);if(x(n))return this.filters.push({type:"in",colName:s.colName,expr:s.expr,subquery:n,notIn:!1}),this.assertSubqueryDepth(),this;if(!Array.isArray(n))throw new TypeError("WebDB: whereIn requires an array of values");if(n.length>Qt)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${Qt} elements`);return this.filters.push({type:"in",colName:s.colName,expr:s.expr,values:n,notIn:!1}),this}whereNotIn(t,n){ut(t);const s=wt(t);if(x(n))return this.filters.push({type:"in",colName:s.colName,expr:s.expr,subquery:n,notIn:!0}),this.assertSubqueryDepth(),this;if(!Array.isArray(n))throw new TypeError("WebDB: whereNotIn requires an array of values");if(n.length>Qt)throw new RangeError(`WebDB: whereNotIn list exceeds maximum limit of ${Qt} elements`);return this.filters.push({type:"in",colName:s.colName,expr:s.expr,values:n,notIn:!0}),this}orWhereIn(t,n){ut(t);const s=wt(t);if(x(n))return this.addOrFilter({type:"in",colName:s.colName,expr:s.expr,subquery:n,notIn:!1}),this.assertSubqueryDepth(),this;if(!Array.isArray(n))throw new TypeError("WebDB: orWhereIn requires an array of values");if(n.length>Qt)throw new RangeError(`WebDB: orWhereIn list exceeds maximum limit of ${Qt} elements`);return this.addOrFilter({type:"in",colName:s.colName,expr:s.expr,values:n,notIn:!1}),this}orWhereNotIn(t,n){ut(t);const s=wt(t);if(x(n))return this.addOrFilter({type:"in",colName:s.colName,expr:s.expr,subquery:n,notIn:!0}),this.assertSubqueryDepth(),this;if(!Array.isArray(n))throw new TypeError("WebDB: orWhereNotIn requires an array of values");if(n.length>Qt)throw new RangeError(`WebDB: orWhereNotIn list exceeds maximum limit of ${Qt} elements`);return this.addOrFilter({type:"in",colName:s.colName,expr:s.expr,values:n,notIn:!0}),this}whereExists(t){if(!x(t))throw new TypeError("WebDB: whereExists requires a QueryBuilder subquery");return this.filters.push({type:"exists",subquery:t,notExists:!1}),this.assertSubqueryDepth(),this}whereNotExists(t){if(!x(t))throw new TypeError("WebDB: whereNotExists requires a QueryBuilder subquery");return this.filters.push({type:"exists",subquery:t,notExists:!0}),this.assertSubqueryDepth(),this}orWhereExists(t){if(!x(t))throw new TypeError("WebDB: orWhereExists requires a QueryBuilder subquery");return this.addOrFilter({type:"exists",subquery:t,notExists:!1}),this.assertSubqueryDepth(),this}orWhereNotExists(t){if(!x(t))throw new TypeError("WebDB: orWhereNotExists requires a QueryBuilder subquery");return this.addOrFilter({type:"exists",subquery:t,notExists:!0}),this.assertSubqueryDepth(),this}getFilters(){return this.filters}getRootFilter(){return this.filters.length===0?null:this.filters.length===1?this.filters[0]:{type:"and",children:[...this.filters]}}addOrFilter(t){if(this.filters.length===0){this.filters.push(t);return}if(this.filters.length===1&&this.filters[0].type==="or"&&this.filters[0].children){this.filters[0].children.push(t);return}let n;this.filters.length===1?n=this.filters[0]:n={type:"and",children:[...this.filters]},this.filters=[{type:"or",children:[n,t]}]}limit(t){return this.limitCount=t,this}offset(t){return this.offsetCount=t,this}orderBy(t,n="asc",s){if(typeof t=="string"){this.sortCol=t,this.sortDir=n;const i=wt(t);this.orderKeys.push({colName:i.colName??t,expr:i.expr,direction:n,nullOrder:s})}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t)this.orderKeys.push({expr:t.node,direction:n,nullOrder:s});else if(typeof t=="object"&&t!==null&&"type"in t)this.orderKeys.push({expr:t,direction:n,nullOrder:s});else if(Array.isArray(t))for(const i of t)if(typeof i=="string"){const r=wt(i);this.orderKeys.push({colName:r.colName??i,expr:r.expr,direction:"asc"})}else this.orderKeys.push(i);else this.orderKeys.push(t);return this}groupBy(...t){for(const n of t)if(Array.isArray(n))for(const s of n)this.addGroupByItem(s);else this.addGroupByItem(n);return this}addGroupByItem(t){if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t)this.groupKeys.push({expr:t.node}),this.groupCols.push(vt(t.node));else if(typeof t=="object"&&t!==null&&"type"in t)this.groupKeys.push({expr:t}),this.groupCols.push(vt(t));else if(typeof t=="string"){const n=wt(t);this.groupKeys.push({colName:n.colName??t,expr:n.expr}),this.groupCols.push(t)}}registerAggregatesFromFilter(t){const n=(s,i)=>{if(i){const r=_r(i);for(const o of r)this.aggExprs.some(c=>c.func===o.func&&(c.colName===o.colName||c.colName===void 0&&o.colName===void 0))||this.aggExprs.push(o)}else if(s&&s.includes("("))try{const r=At(s),o=_r(r);for(const a of o)this.aggExprs.some(l=>l.func===a.func&&(l.colName===a.colName||l.colName===void 0&&a.colName===void 0))||this.aggExprs.push(a)}catch{}};if(t.type==="cmp")n(t.colName,t.expr);else if(t.type==="expr"&&t.expr)n(void 0,t.expr);else if(t.type==="null")n(t.colName,t.expr);else if(t.type==="not"&&t.child)this.registerAggregatesFromFilter(t.child);else if((t.type==="and"||t.type==="or")&&t.children)for(const s of t.children)this.registerAggregatesFromFilter(s)}having(t,n,s){if(typeof t=="function"){const i=new Bt(this.db,this.tableName);t(i);const r=i.getRootHavingFilter();r&&(this.havingFilters.push(r),this.registerAggregatesFromFilter(r),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0){if(typeof t=="string"){const r={type:"expr",expr:At(t)};this.havingFilters.push(r),this.registerAggregatesFromFilter(r)}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t){const i={type:"expr",expr:t.node};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}else if(typeof t=="object"&&t!==null&&"type"in t){const i={type:"expr",expr:t};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}}else{const i=wt(t);if(typeof n=="string"&&(n.trim().toLowerCase()==="in"||n.trim().toLowerCase()==="not in")){const o=n.trim().toLowerCase()==="not in",a=x(s)?{type:"in",colName:i.colName,expr:i.expr,subquery:s,notIn:o}:{type:"in",colName:i.colName,expr:i.expr,values:s,notIn:o};return this.havingFilters.push(a),this.registerAggregatesFromFilter(a),this.assertSubqueryDepth(),this}const r={type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0};this.havingFilters.push(r),this.registerAggregatesFromFilter(r),x(s)&&this.assertSubqueryDepth()}return this}orHaving(t,n,s){if(typeof t=="function"){const i=new Bt(this.db,this.tableName);t(i);const r=i.getRootHavingFilter();r&&(this.addHavingOrFilter(r),this.registerAggregatesFromFilter(r),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0){if(typeof t=="string"){const r={type:"expr",expr:At(t)};this.addHavingOrFilter(r),this.registerAggregatesFromFilter(r)}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t){const i={type:"expr",expr:t.node};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}else if(typeof t=="object"&&t!==null&&"type"in t){const i={type:"expr",expr:t};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}}else{const i=wt(t),r={type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0};this.addHavingOrFilter(r),this.registerAggregatesFromFilter(r),x(s)&&this.assertSubqueryDepth()}return this}havingNot(t,n,s){if(typeof t=="function"){const i=new Bt(this.db,this.tableName);t(i);const r=i.getRootHavingFilter();if(r){const o={type:"not",child:r};this.havingFilters.push(o),this.registerAggregatesFromFilter(o),this.assertSubqueryDepth()}}else if(n===void 0&&s===void 0){if(typeof t=="string"){const r={type:"not",child:{type:"expr",expr:At(t)}};this.havingFilters.push(r),this.registerAggregatesFromFilter(r)}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t){const i={type:"not",child:{type:"expr",expr:t.node}};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}else if(typeof t=="object"&&t!==null&&"type"in t){const i={type:"not",child:{type:"expr",expr:t}};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}}else{const i=wt(t),r={type:"not",child:{type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0}};this.havingFilters.push(r),this.registerAggregatesFromFilter(r),x(s)&&this.assertSubqueryDepth()}return this}orHavingNot(t,n,s){if(typeof t=="function"){const i=new Bt(this.db,this.tableName);t(i);const r=i.getRootHavingFilter();if(r){const o={type:"not",child:r};this.addHavingOrFilter(o),this.registerAggregatesFromFilter(o),this.assertSubqueryDepth()}}else if(n===void 0&&s===void 0){if(typeof t=="string"){const r={type:"not",child:{type:"expr",expr:At(t)}};this.addHavingOrFilter(r),this.registerAggregatesFromFilter(r)}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t){const i={type:"not",child:{type:"expr",expr:t.node}};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}else if(typeof t=="object"&&t!==null&&"type"in t){const i={type:"not",child:{type:"expr",expr:t}};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}}else{const i=wt(t),r={type:"not",child:{type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0}};this.addHavingOrFilter(r),this.registerAggregatesFromFilter(r),x(s)&&this.assertSubqueryDepth()}return this}havingRaw(t){return this.having(t)}orHavingRaw(t){return this.orHaving(t)}havingNull(t){const n=wt(t),s={type:"null",colName:n.colName,expr:n.expr,isNull:!0};return this.havingFilters.push(s),this.registerAggregatesFromFilter(s),this}havingNotNull(t){const n=wt(t),s={type:"null",colName:n.colName,expr:n.expr,isNull:!1};return this.havingFilters.push(s),this.registerAggregatesFromFilter(s),this}orHavingNull(t){const n=wt(t),s={type:"null",colName:n.colName,expr:n.expr,isNull:!0};return this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s),this}orHavingNotNull(t){const n=wt(t),s={type:"null",colName:n.colName,expr:n.expr,isNull:!1};return this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s),this}getHavingFilters(){return this.havingFilters}getRootHavingFilter(){return this.havingFilters.length===0?null:this.havingFilters.length===1?this.havingFilters[0]:{type:"and",children:[...this.havingFilters]}}addHavingOrFilter(t){if(this.havingFilters.length===0){this.havingFilters.push(t);return}if(this.havingFilters.length===1&&this.havingFilters[0].type==="or"&&this.havingFilters[0].children){this.havingFilters[0].children.push(t);return}let n;this.havingFilters.length===1?n=this.havingFilters[0]:n={type:"and",children:[...this.havingFilters]},this.havingFilters=[{type:"or",children:[n,t]}]}aggregate(t){return this.aggExprs.push(...t),this}count(t,n){return this.aggExprs.push({func:"count",colName:t,alias:n}),this}sum(t,n){return this.aggExprs.push({func:"sum",colName:t,alias:n}),this}avg(t,n){return this.aggExprs.push({func:"avg",colName:t,alias:n}),this}min(t,n){return this.aggExprs.push({func:"min",colName:t,alias:n}),this}max(t,n){return this.aggExprs.push({func:"max",colName:t,alias:n}),this}select(t,...n){if(t===void 0)return this;const s=[];s.push(...Js(t));for(const i of n)s.push(...Js(i));this.selectFields.push(...s),this.assertSubqueryDepth();for(const i of s)if(i.expr&&i.expr.type==="fn"){const r=i.expr.name.toLowerCase();if(de(r)&&!this.aggExprs.some(a=>a.alias===i.alias)){const a=i.expr.args[0],c=a&&a.type==="col"&&a.name!=="*"?a.name:void 0;this.aggExprs.push({func:r,colName:c,alias:i.alias})}}else if(typeof i.fn=="string"){const r=i.fn.toLowerCase();de(r)&&(this.aggExprs.some(a=>a.alias===i.alias)||this.aggExprs.push({func:r,colName:i.sourceCol==="*"?void 0:i.sourceCol,alias:i.alias}))}return this}getSelectFields(){return this.selectFields}clone(t){const n=t??this.db,s=new Bt(n,this.sourceSubquery?this.sourceSubquery.clone(n):this.tableName),i=r=>({...r,values:r.values?[...r.values]:void 0,subquery:r.subquery&&x(r.subquery)?r.subquery.clone(n):r.subquery,value:x(r.value)?r.value.clone(n):r.value,child:r.child?i(r.child):void 0,children:r.children?r.children.map(i):void 0});return s.filters=this.filters.map(i),s.selectFields=this.selectFields.map(r=>({...r,args:r.args?[...r.args]:void 0,subquery:r.subquery?r.subquery.clone(n):void 0})),s.limitCount=this.limitCount,s.offsetCount=this.offsetCount,s.sortCol=this.sortCol,s.sortDir=this.sortDir,s.orderKeys=this.orderKeys.map(r=>({...r})),s.groupCols=[...this.groupCols],s.groupKeys=this.groupKeys.map(r=>({...r})),s.aggExprs=this.aggExprs.map(r=>({...r})),s.havingFilters=this.havingFilters.map(i),s.joins=this.joins.map(r=>({...r})),s.planner=this.planner,s}cloneExprNode(t){return t.type==="binary"?{...t,left:this.cloneExprNode(t.left),right:this.cloneExprNode(t.right)}:t.type==="fn"?{...t,args:t.args.map(n=>this.cloneExprNode(n))}:{...t}}substituteExpr(t,n){if(t.type==="col"){if(t.name==="*")return t;const s=t.name.includes(".")?t.name.slice(t.name.lastIndexOf(".")+1):t.name,i=n.get(t.name)??n.get(s);return i?this.cloneExprNode(i):{...t}}return t.type==="binary"?{...t,left:this.substituteExpr(t.left,n),right:this.substituteExpr(t.right,n)}:t.type==="fn"?{...t,args:t.args.map(s=>this.substituteExpr(s,n))}:{...t}}substituteColOrExpr(t,n,s){if(n){const i=this.substituteExpr(n,s);return i.type==="col"?{colName:i.name,expr:i}:{expr:i}}if(t){const i=t.includes(".")?t.slice(t.lastIndexOf(".")+1):t,r=s.get(t)??s.get(i);if(r){const o=this.cloneExprNode(r);return o.type==="col"?{colName:o.name}:{expr:o}}return{colName:t}}return{colName:t,expr:n}}substituteFilter(t,n){var i;if(t.type==="and"||t.type==="or")return{...t,children:(i=t.children)==null?void 0:i.map(r=>this.substituteFilter(r,n))};if(t.type==="not"&&t.child)return{...t,child:this.substituteFilter(t.child,n)};if(t.type==="exists")return{...t};const s=this.substituteColOrExpr(t.colName,t.expr,n);return{...t,colName:s.colName,expr:s.expr}}tryFlatten(){var r;if(!this.sourceSubquery)return null;const t=this.sourceSubquery.tryFlatten()??this.sourceSubquery.clone(this.db);if(t.sourceSubquery||t.groupKeys.length>0||t.groupCols.length>0||t.aggExprs.length>0||t.havingFilters.length>0||t.limitCount!==null||t.offsetCount!==null||t.joins.length>0||t.selectFields.some(o=>o.subquery)||this.joins.length>0)return null;const n=new Map;for(const o of t.selectFields){const a=o.expr??{type:"col",name:o.sourceCol??o.alias};n.set(o.alias,a)}for(const o of this.aggExprs)if(o.colName){const a=o.colName.includes(".")?o.colName.slice(o.colName.lastIndexOf(".")+1):o.colName,c=n.get(o.colName)??n.get(a);if(c&&c.type!=="col")return null}for(const o of this.groupKeys){const a=this.substituteColOrExpr(o.colName,o.expr,n);if(!a.colName&&a.expr&&a.expr.type!=="col")return null}const s=new Bt(this.db,t.tableName);s.planner=this.planner??t.planner,s.filters=[...t.filters.map(o=>({...o})),...this.filters.map(o=>this.substituteFilter(o,n))],this.selectFields.length>0?s.selectFields=this.selectFields.map(o=>{if(o.subquery)return{...o,subquery:o.subquery.clone(this.db)};const a=o.expr??{type:"col",name:o.sourceCol??o.alias},c=this.substituteExpr(a,n);return{alias:o.alias,expr:c,sourceCol:c.type==="col"&&c.name!=="*"?c.name:void 0,fn:c.type==="fn"?c.name:void 0}}):t.selectFields.length>0&&(s.selectFields=t.selectFields.map(o=>({...o})));const i=this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0;return this.orderKeys.length>0?(s.orderKeys=this.orderKeys.map(o=>{const a=this.substituteColOrExpr(o.colName,o.expr,n);return{...o,colName:a.colName,expr:a.expr}}),(r=s.orderKeys[0])!=null&&r.colName&&(s.sortCol=s.orderKeys[0].colName,s.sortDir=s.orderKeys[0].direction??"asc")):!i&&t.orderKeys.length>0&&(s.orderKeys=t.orderKeys.map(o=>({...o})),s.sortCol=t.sortCol,s.sortDir=t.sortDir),s.groupKeys=this.groupKeys.map(o=>{const a=this.substituteColOrExpr(o.colName,o.expr,n);return{colName:a.colName,expr:a.expr}}),s.groupCols=this.groupCols.map(o=>{const a=n.get(o);return a&&a.type==="col"?a.name:o}),s.aggExprs=this.aggExprs.map(o=>{if(o.colName){const a=n.get(o.colName);if(a&&a.type==="col")return{...o,colName:a.name}}return{...o}}),s.havingFilters=this.havingFilters.map(o=>this.substituteFilter(o,n)),s.limitCount=this.limitCount,s.offsetCount=this.offsetCount,s}exprReferencesOuter(t,n){if(!t)return!1;if(t.type==="col"){if(t.name.includes(".")){const s=t.name.slice(0,t.name.indexOf("."));if(s==="outer"||!n.has(s))return!0}return!1}return t.type==="binary"?this.exprReferencesOuter(t.left,n)||this.exprReferencesOuter(t.right,n):t.type==="fn"?t.args.some(s=>this.exprReferencesOuter(s,n)):!1}filterIsCorrelatedWithOuter(t,n){var s;if(t.type==="and"||t.type==="or")return((s=t.children)==null?void 0:s.some(i=>this.filterIsCorrelatedWithOuter(i,n)))??!1;if(t.type==="not"&&t.child)return this.filterIsCorrelatedWithOuter(t.child,n);if(t.type==="cmp"&&(t.value instanceof it||typeof t.value=="object"&&t.value!==null&&!x(t.value)&&("node"in t.value||"type"in t.value)||t.subquery&&x(t.subquery)&&this.isSubqueryCorrelated(t.subquery))||(t.type==="in"||t.type==="exists")&&t.subquery&&x(t.subquery)&&this.isSubqueryCorrelated(t.subquery))return!0;if(t.colName&&t.colName.includes(".")){const i=t.colName.slice(0,t.colName.indexOf("."));if(i==="outer"||!n.has(i))return!0}return!!this.exprReferencesOuter(t.expr,n)}isSubqueryCorrelated(t){const n=new Set([t.tableName]);for(const s of t.joins)n.add(s.table);return!!(t.filters.some(s=>this.filterIsCorrelatedWithOuter(s,n))||t.havingFilters.some(s=>this.filterIsCorrelatedWithOuter(s,n))||t.sourceSubquery&&this.isSubqueryCorrelated(t.sourceSubquery)||t.selectFields.some(s=>s.subquery&&this.isSubqueryCorrelated(s.subquery)))}filterContainsCorrelatedSubquery(t){var s;if(t.type==="and"||t.type==="or")return((s=t.children)==null?void 0:s.some(i=>this.filterContainsCorrelatedSubquery(i)))??!1;if(t.type==="not"&&t.child)return this.filterContainsCorrelatedSubquery(t.child);const n=t.subquery&&x(t.subquery)?t.subquery:x(t.value)?t.value:void 0;return!!(n&&this.isSubqueryCorrelated(n))}getRowValue(t,n){if(n in t)return t[n];if(n.startsWith("outer.")){const s=n.slice(6);if(s in t)return t[s]}if(n.includes(".")){const s=n.slice(n.lastIndexOf(".")+1);if(s in t)return t[s]}}bindOuterRowToExpr(t,n,s,i=!1){if(t.type==="col"){if(i)return{type:"literal",value:this.getRowValue(n,t.name)??null};if(t.name.includes(".")){const r=t.name.slice(0,t.name.indexOf("."));if(r==="outer"||!s.has(r))return{type:"literal",value:this.getRowValue(n,t.name)??null}}return{...t}}return t.type==="binary"?{...t,left:this.bindOuterRowToExpr(t.left,n,s,i),right:this.bindOuterRowToExpr(t.right,n,s,i)}:t.type==="fn"?{...t,args:t.args.map(r=>this.bindOuterRowToExpr(r,n,s,i))}:{...t}}bindOuterRowToFilter(t,n,s){var r;if(t.type==="and"||t.type==="or")return{...t,children:(r=t.children)==null?void 0:r.map(o=>this.bindOuterRowToFilter(o,n,s))};if(t.type==="not"&&t.child)return{...t,child:this.bindOuterRowToFilter(t.child,n,s)};let i=t.expr?this.bindOuterRowToExpr(t.expr,n,s,!1):void 0;if(t.type==="cmp"&&(t.value instanceof it||typeof t.value=="object"&&t.value!==null&&!x(t.value)&&("node"in t.value||"type"in t.value))){const o="node"in t.value?t.value.node:t.value,a=this.bindOuterRowToExpr(o,n,s,!0);let c;typeof this.db.getUdf=="function"&&(c=u=>{var d,h;return(h=(d=this.db.getUdf(u))==null?void 0:d.def)==null?void 0:h.call});const l=kt(a,n,c);return l==null?{type:"in",values:[],notIn:!1}:{...t,expr:i,value:l}}return{...t,expr:i,subquery:t.subquery&&x(t.subquery)?this.bindOuterRowToSubquery(t.subquery,n):t.subquery}}bindOuterRowToSubquery(t,n){const s=t.clone(this.db),i=new Set([s.tableName]);for(const r of s.joins)i.add(r.table);return s.filters=s.filters.map(r=>this.bindOuterRowToFilter(r,n,i)),s.havingFilters=s.havingFilters.map(r=>this.bindOuterRowToFilter(r,n,i)),s.sourceSubquery&&(s.sourceSubquery=this.bindOuterRowToSubquery(s.sourceSubquery,n)),s}async evalScalarSubquery(t,n){const i=await(n&&this.isSubqueryCorrelated(t)?this.bindOuterRowToSubquery(t,n):t.clone(this.db)).first();if(!i)return null;const r=Object.keys(i);return r.length>0?i[r[0]]:null}async resolveUncorrelatedFilter(t){if(t.type==="and"||t.type==="or"){const n=[];for(const s of t.children??[])n.push(await this.resolveUncorrelatedFilter(s));return{...t,children:n}}if(t.type==="not"&&t.child)return{...t,child:await this.resolveUncorrelatedFilter(t.child)};if(t.type==="in"&&t.subquery&&x(t.subquery)&&!this.isSubqueryCorrelated(t.subquery)){const s=(await t.subquery.clone(this.db).toArray()).map(r=>{const o=Object.keys(r);return o.length>0?r[o[0]]:null});if(t.notIn&&s.some(r=>r==null))return{type:"in",colName:t.colName,expr:t.expr,values:[],notIn:!1};const i=s.filter(r=>r!=null);if(i.length>Qt)throw new RangeError(`WebDB: whereIn subquery result exceeds maximum limit of ${Qt} elements`);return{type:"in",colName:t.colName,expr:t.expr,values:i,notIn:t.notIn}}if(t.type==="exists"&&t.subquery&&x(t.subquery)&&!this.isSubqueryCorrelated(t.subquery)){const s=await t.subquery.clone(this.db).first()!==null,i=t.notExists?!s:s;return{type:"in",values:[],notIn:i}}if(t.type==="cmp"){const n=t.subquery&&x(t.subquery)?t.subquery:x(t.value)?t.value:void 0;if(n&&!this.isSubqueryCorrelated(n)){const s=await this.evalScalarSubquery(n);return s==null?{type:"in",colName:t.colName,expr:t.expr,values:[],notIn:!1}:{...t,value:s,subquery:void 0}}}return t}async resolveUncorrelatedFilters(t){const n=[];for(const s of t)n.push(await this.resolveUncorrelatedFilter(s));return n}evalFilterTargetValue(t,n,s){let i;if(typeof this.db.getUdf=="function"&&(i=r=>{var o,a;return(a=(o=this.db.getUdf(r))==null?void 0:o.def)==null?void 0:a.call}),n&&t[n]!==void 0)return t[n];if(s){const r=vt(s);return t[r]!==void 0?t[r]:kt(s,t,i)}if(n)return this.getRowValue(t,n)}evalComparisonValues(t,n,s){if(t==null||s===null||s===void 0)return!1;const i=(n??"=").trim().toLowerCase();switch(i){case"=":return t===s;case"!=":case"<>":return t!==s;case"<":return t<s;case"<=":return t<=s;case">":return t>s;case">=":return t>=s;case"starts_with":return String(t).startsWith(String(s));case"ends_with":return String(t).endsWith(String(s));case"contains":return String(t).includes(String(s));case"like":case"not like":{const r=String(s).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,"."),a=new RegExp(`^${r}$`,"s").test(String(t));return i==="not like"?!a:a}default:return t===s}}async evalFilterOnRow(t,n){if(n.type==="and"){for(const s of n.children??[])if(!await this.evalFilterOnRow(t,s))return!1;return!0}if(n.type==="or"){for(const s of n.children??[])if(await this.evalFilterOnRow(t,s))return!0;return!1}if(n.type==="not"&&n.child){if(n.child.type==="cmp"||n.child.type==="in"){const s=this.evalFilterTargetValue(t,n.child.colName,n.child.expr);if(s==null)return!1}return!await this.evalFilterOnRow(t,n.child)}if(n.type==="null"){const s=this.evalFilterTargetValue(t,n.colName,n.expr),i=s==null;return n.isNull?i:!i}if(n.type==="expr"&&n.expr){let s;typeof this.db.getUdf=="function"&&(s=r=>{var o,a;return(a=(o=this.db.getUdf(r))==null?void 0:o.def)==null?void 0:a.call});const i=kt(n.expr,t,s);return!!(i&&i!==0)}if(n.type==="exists"){if(n.subquery&&x(n.subquery)){const r=await(this.isSubqueryCorrelated(n.subquery)?this.bindOuterRowToSubquery(n.subquery,t):n.subquery.clone(this.db)).first()!==null;return n.notExists?!r:r}return!!n.notExists}if(n.type==="in"){let s=n.values??[];if(n.subquery&&x(n.subquery)){const c=(await(this.isSubqueryCorrelated(n.subquery)?this.bindOuterRowToSubquery(n.subquery,t):n.subquery.clone(this.db)).toArray()).map(l=>{const u=Object.keys(l);return u.length>0?l[u[0]]:null});if(n.notIn&&c.some(l=>l==null))return!1;s=c.filter(l=>l!=null)}if(!n.colName&&!n.expr)return n.notIn?s.length===0:s.length>0;if(s.length===0)return!!n.notIn;const i=this.evalFilterTargetValue(t,n.colName,n.expr);if(i==null||n.notIn&&s.some(o=>o==null))return!1;const r=s.includes(i);return n.notIn?!r:r}if(n.type==="cmp"){const s=this.evalFilterTargetValue(t,n.colName,n.expr),i=n.subquery&&x(n.subquery)?n.subquery:x(n.value)?n.value:void 0,r=i?await this.evalScalarSubquery(i,t):n.value;return this.evalComparisonValues(s,n.op,r)}return!0}async evalFiltersOnRows(t,n){if(n.length===0)return t;const s=await this.resolveUncorrelatedFilters(n),i=[];for(const r of t){let o=!0;for(const a of s)if(!await this.evalFilterOnRow(r,a)){o=!1;break}o&&i.push(r)}return i}performInMemoryAggregation(t){const n=Math.max(this.groupKeys.length,this.groupCols.length),s=new Map;if(n===0)s.set("__global__",{keyRow:{},rows:t});else for(const a of t){const c=[],l={};for(let h=0;h<n;h++){const f=this.groupKeys[h],g=this.groupCols[h],_=this.evalFilterTargetValue(a,(f==null?void 0:f.colName)??g,f==null?void 0:f.expr);c.push(_);const I=(f==null?void 0:f.colName)??(f!=null&&f.expr?vt(f.expr):g);I&&(l[I]=_,I.includes(".")&&(l[I.slice(I.lastIndexOf(".")+1)]=_)),g&&(l[g]=_)}const u=JSON.stringify(c);let d=s.get(u);d||(d={keyRow:l,rows:[]},s.set(u,d)),d.rows.push(a)}let i;typeof this.db.getUdf=="function"&&(i=a=>{var c,l;return(l=(c=this.db.getUdf(a))==null?void 0:c.def)==null?void 0:l.call});const r=(a,c,l,u)=>{const d=c.toLowerCase();if(d==="count"){if(!l&&(!u||u.type==="col"&&u.name==="*"))return a.length;let f=0;for(const g of a){const _=u?kt(u,g,i):this.getRowValue(g,l);_!=null&&f++}return f}const h=[];for(const f of a){const g=u?kt(u,f,i):l?this.getRowValue(f,l):null;g!=null&&h.push(g)}return h.length===0?null:d==="sum"?h.reduce((f,g)=>f+Number(g),0):d==="avg"?h.reduce((f,g)=>f+Number(g),0)/h.length:d==="min"?h.reduce((f,g)=>g<f?g:f,h[0]):d==="max"?h.reduce((f,g)=>g>f?g:f,h[0]):null},o=[];for(const{keyRow:a,rows:c}of s.values()){const l={...a};for(const u of this.aggExprs){const d=r(c,u.func,u.colName),h=u.alias??(u.colName?`${u.func}_${u.colName}`:u.func);l[h]=d,l[`${u.func}(${u.colName??"*"})`]=d,u.colName||(l[u.func]=d)}for(const u of this.selectFields)if(u.expr&&u.expr.type==="fn"&&de(u.expr.name)){const d=u.expr.args[0],h=r(c,u.expr.name,d&&d.type==="col"&&d.name!=="*"?d.name:void 0,d);l[u.alias]=h,l[vt(u.expr)]=h}o.push(l)}return o}async attachSelectSubqueries(t){const n=this.selectFields.filter(i=>i.subquery);if(n.length===0||t.length===0)return;const s=new Map;for(const i of n)if(i.subquery&&!this.isSubqueryCorrelated(i.subquery)){const r=await this.evalScalarSubquery(i.subquery);s.set(i,r)}for(const i of t)for(const r of n)s.has(r)?i[r.alias]=s.get(r):r.subquery&&(i[r.alias]=await this.evalScalarSubquery(r.subquery,i))}async executeMaterializedDerivedTable(){let t=await this.sourceSubquery.clone(this.db).toArray();for(const r of this.joins){const o=await new Bt(this.db,r.table).toArray(),a=[];for(const c of t){let l=!1;const u=this.getRowValue(c,r.leftCol);for(const d of o){const h=this.getRowValue(d,r.rightCol);if(this.evalComparisonValues(u,r.op,h)){l=!0;const f={...c};for(const[g,_]of Object.entries(d))f[`${r.table}.${g}`]=_,g in f||(f[g]=_);a.push(f)}}!l&&r.type==="left"&&a.push({...c})}t=a}t=await this.evalFiltersOnRows(t,this.filters),(this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0)&&(t=this.performInMemoryAggregation(t),this.havingFilters.length>0&&(t=await this.evalFiltersOnRows(t,this.havingFilters)));const s=this.selectFields.some(r=>r.subquery),i=s&&this.orderKeys.some(r=>this.selectFields.some(o=>o.subquery&&(o.alias===r.colName||o.alias===(r.expr?vt(r.expr):void 0))));return i&&await this.attachSelectSubqueries(t),this.orderKeys.length>0&&(t=this.sortAggregatedRows(t)),this.offsetCount!==null&&this.offsetCount>0&&(t=t.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(t=t.slice(0,this.limitCount)),s&&!i&&await this.attachSelectSubqueries(t),this.selectFields.length>0&&(t=t.map(r=>this.projectRow(r))),t}projectRow(t){const n=Object.keys(t);if(this.selectFields.length>0&&n.length===this.selectFields.length&&this.selectFields.every(i=>i.alias in t))return t;const s={};for(const i of this.selectFields){const r=i.alias;if(t[r]!==void 0)s[r]=t[r];else if(i.expr&&t[vt(i.expr)]!==void 0)s[r]=t[vt(i.expr)];else if(i.sourceCol!==void 0&&t[i.sourceCol]!==void 0)s[r]=t[i.sourceCol];else if(i.expr){let o;typeof this.db.getUdf=="function"&&(o=a=>{var c,l;return(l=(c=this.db.getUdf(a))==null?void 0:c.def)==null?void 0:l.call}),s[r]=kt(i.expr,t,o)}else s[r]=null}return s}async explain(){if(this.assertSubqueryDepth(),this.sourceSubquery){const r=this.tryFlatten();if(r)return r.explain();const o=await this.sourceSubquery.clone(this.db).explain(),a=await this.resolveUncorrelatedFilters(this.filters);return{plan:{...o.plan,filters:[...o.plan.filters,...a],orderBy:this.orderKeys.length>0?this.orderKeys:o.plan.orderBy,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:o.plan.groupBy,aggregates:this.aggExprs.length>0?this.aggExprs:o.plan.aggregates,having:this.havingFilters.length>0?this.havingFilters:o.plan.having,select:this.selectFields.length>0?this.selectFields:o.plan.select,limit:this.limitCount!==null?this.limitCount:o.plan.limit,offset:this.offsetCount!==null?this.offsetCount:o.plan.offset},bytecodeSize:o.bytecodeSize,instructions:o.instructions,assembly:o.assembly}}const t=await this.resolveUncorrelatedFilters(this.filters.filter(r=>!this.filterContainsCorrelatedSubquery(r))),n=await this.resolveUncorrelatedFilters(this.havingFilters.filter(r=>!this.filterContainsCorrelatedSubquery(r))),s=this.selectFields.filter(r=>!r.subquery),i=s.map(r=>({expr:r.expr??{type:"col",name:r.sourceCol??r.alias},alias:r.alias}));return this.db.explainQuery(this.tableName,t,{joins:this.joins.length>0?this.joins:void 0,orderBy:this.orderKeys.length>0?this.orderKeys:void 0,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:void 0,aggregates:this.aggExprs.length>0?this.aggExprs:void 0,having:n.length>0?n:void 0,select:s.length>0?s:void 0,selectExprs:i.length>0?i:void 0,limit:this.limitCount!==null?this.limitCount:void 0,offset:this.offsetCount!==null?this.offsetCount:void 0,planner:this.planner})}getOrderKeyValue(t,n){const s=n.colName??(n.expr?vt(n.expr):void 0);if(!s)return;if(t[s]!==void 0)return t[s];const i=s.includes(".")?s.slice(s.lastIndexOf(".")+1):s;if(t[i]!==void 0)return t[i];if(this.selectFields.length>0){for(const r of this.selectFields)if((r.sourceCol===s||r.sourceCol===i||r.alias===s||r.alias===i)&&t[r.alias]!==void 0)return t[r.alias]}if(t[`__sort_${s}`]!==void 0)return t[`__sort_${s}`];if(t[`__sort_${i}`]!==void 0)return t[`__sort_${i}`];if(n.expr){let r;return typeof this.db.getUdf=="function"&&(r=o=>{var a,c;return(c=(a=this.db.getUdf(o))==null?void 0:a.def)==null?void 0:c.call}),kt(n.expr,t,r)}}sortAggregatedRows(t){return[...t].sort((n,s)=>{for(const i of this.orderKeys){const r=this.getOrderKeyValue(n,i),o=this.getOrderKeyValue(s,i);if(r===o)continue;if(r==null)return i.nullOrder==="nulls_first"?-1:1;if(o==null)return i.nullOrder==="nulls_first"?1:-1;const a=i.direction==="desc"?-1:1;return typeof r=="number"&&typeof o=="number"?(r-o)*a:String(r).localeCompare(String(o))*a}return 0})}async toArray(){if(this.assertSubqueryDepth(),js(this.db,this.getReferencedTables()),this.sourceSubquery){const p=this.tryFlatten();return p?p.toArray():this.executeMaterializedDerivedTable()}const t=this.filters.some(p=>this.filterContainsCorrelatedSubquery(p)),n=this.havingFilters.some(p=>this.filterContainsCorrelatedSubquery(p)),s=this.selectFields.some(p=>p.subquery),i=this.selectFields.some(p=>p.subquery&&this.isSubqueryCorrelated(p.subquery)),r=await this.resolveUncorrelatedFilters(this.filters.filter(p=>!this.filterContainsCorrelatedSubquery(p))),o=this.filters.filter(p=>this.filterContainsCorrelatedSubquery(p)),a=this.joins.length>0,c=this.orderKeys.length>0,l=this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0;if(t){let p=await this.db.executeQuery(this.tableName,r,{limit:null,offset:null,sortCol:null,sortDir:this.sortDir,joins:a?this.joins:void 0,planner:this.planner});return p=await this.evalFiltersOnRows(p,o),l&&(p=this.performInMemoryAggregation(p),this.havingFilters.length>0&&(p=await this.evalFiltersOnRows(p,this.havingFilters))),s&&await this.attachSelectSubqueries(p),c&&(p=this.sortAggregatedRows(p)),this.offsetCount!==null&&this.offsetCount>0&&(p=p.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(p=p.slice(0,this.limitCount)),this.selectFields.length>0&&(p=p.map(y=>this.projectRow(y))),p}const u=await this.resolveUncorrelatedFilters(this.havingFilters.filter(p=>!this.filterContainsCorrelatedSubquery(p))),d=this.selectFields.filter(p=>!p.subquery),h=d.map(p=>({expr:p.expr??{type:"col",name:p.sourceCol??p.alias},alias:p.alias}));if(a&&c&&h.length>0)for(const p of this.orderKeys){const y=p.colName;if(y){const T=y.includes(".")?y.slice(y.lastIndexOf(".")+1):y;d.some(w=>w.alias===y||w.alias===T||w.sourceCol===y||w.sourceCol===T)||h.push({expr:{type:"col",name:y},alias:`__sort_${y}`})}}const f=!i||l,g=await this.db.executeQuery(this.tableName,r,{limit:a&&c&&l||n?null:this.limitCount,offset:a&&c&&l||n?null:this.offsetCount,sortCol:a?null:this.sortCol,sortDir:this.sortDir,orderBy:a&&l?void 0:c?this.orderKeys:void 0,joins:a?this.joins:void 0,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:void 0,aggregates:this.aggExprs.length>0?this.aggExprs:void 0,having:u.length>0?u:void 0,select:f&&d.length>0?d:void 0,selectExprs:f&&h.length>0?h:void 0,planner:this.planner});let _=g;if(n){const p=this.havingFilters.filter(y=>this.filterContainsCorrelatedSubquery(y));_=await this.evalFiltersOnRows(_,p)}const I=g.isOrderSatisfied===!0;return(l||a)&&c&&!I?(_=this.sortAggregatedRows(_),(a||n)&&(this.offsetCount!==null&&this.offsetCount>0&&(_=_.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(_=_.slice(0,this.limitCount)))):n&&(this.offsetCount!==null&&this.offsetCount>0&&(_=_.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(_=_.slice(0,this.limitCount))),s&&await this.attachSelectSubqueries(_),this.selectFields.length>0&&(_=_.map(p=>this.projectRow(p))),_}async first(){const t=await this.limit(1).toArray();return t.length>0?t[0]:null}live(t,n){return Ks(()=>this.clone(this.db).toArray(),t,n)}async update(t,n){if(!this.db.executeUpdate)throw new Error("Database executor does not support executeUpdate");this.assertSubqueryDepth();const s=await this.resolveUncorrelatedFilters(this.filters);return this.db.executeUpdate(this.tableName,s,t,n)}async delete(t){if(!this.db.executeDelete)throw new Error("Database executor does not support executeDelete");this.assertSubqueryDepth();const n=await this.resolveUncorrelatedFilters(this.filters);return this.db.executeDelete(this.tableName,n,t)}}class Un{constructor(t,n,s,i,r="js",o,a,c){N(this,"vfs");N(this,"io");N(this,"driver");N(this,"coreMode");N(this,"wasmCore");N(this,"planner");N(this,"coordinator");N(this,"currentLeaseId",null);N(this,"vmCtx");N(this,"udfs",new Map);N(this,"nextUdfId",1);N(this,"tableMetaCache",new Map);N(this,"tableTailPages",new Map);N(this,"indexTailPages",new Map);N(this,"beforeCommitHooks",new Set);N(this,"commitHooks",new Set);N(this,"subscriptions",new Set);N(this,"activeTxChanges",[]);N(this,"activeTxOrigin","local");N(this,"activeTxMeta");N(this,"activeTxId",0);N(this,"nextAutoTxId",1e6);N(this,"isRunningBeforeCommit",!1);N(this,"broadcastChannel",null);N(this,"instanceId",Math.random().toString(36).slice(2)+Date.now().toString(36));if(this.vfs=t,this.io=n,this.driver=s,this.coordinator=i,this.coreMode=r,this.wasmCore=o,this.planner=a,this.vmCtx=Gr(),this.coordinator.setOnCrossTabInvalidated(async()=>{this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await Un.pinAllCatalogPages(this.driver)}),typeof BroadcastChannel<"u"&&c){const l=`webdb_sync_${t.name}_${c}`;this.broadcastChannel=new BroadcastChannel(l),this.broadcastChannel.onmessage=u=>{const d=u.data;if(!d||d.senderId===this.instanceId)return;const{tables:h,origin:f,meta:g,changeCounter:_,schemaVersion:I}=d;this.coordinator.leaseQueue.enqueue(async()=>{await this.coordinator.syncCrossTabState(!0),this.notifySubscriptions({tables:Array.isArray(h)?h:[],origin:f??"remote",meta:g,changeCounter:typeof _=="number"?_:this.getSyncState().changeCounter,schemaVersion:typeof I=="number"?I:this.getSyncState().schemaVersion,crossTab:!0})}).catch(()=>{})}}}get pool(){return this.driver}static async open(t){const n=t.storage||"memory";let s;t.vfs?s=t.vfs:n==="idb"?s=new zr(t.name):n==="opfs"?s=new to(t.name):s=new Jr;const i=t.slotCount??We,r=t.maxQueryMemory??He,o=Xo(Math.max(i,We),r),a=t.core??"js";let c;a==="wasm"&&(c=xo(o,t.wasmBinary?new Uint8Array(t.wasmBinary):void 0));const l=new Li({vfs:s,memory:o}),u=new Yo({io:l,memory:o,slotCount:i,maxQueryMemory:r,useDefaultLayoutOffsets:!0}),d=t.name&&s.name!=="memory"?`webdb_lock_${s.name}_${t.name}`:void 0,h=new jo(s,u,l,d);u.setTransactionCoordinator(h),await h.leaseQueue.enqueue(async()=>{await sr(s);const[g]=await s.readPages([1]);g?(u.getPageBytesInSlot(0).set(g),u.clearDirty(0),Yn(u.getSlotDataView(0),!0),await Un.pinAllCatalogPages(u)):(Bo(u.getSlotDataView(0)),u.markDirty(0),await u.flushSlot(0)),h.recordDiskPage1State()});const f=new Un(s,l,u,h,a,c,t.planner,t.name);return t.initialData&&await f.importBinary(t.initialData),f}static async pinAllCatalogPages(t){const n=t.getSlotDataView(0);let s=n.getUint32(Ge,!0);for(;s!==0;){const o=await t.acquireAndPinPage(s),a=t.getSlotDataView(o);s=ge(a,0).nextColCatalogPageId}let i=n.getUint32(qe,!0);for(;i!==0;){const o=await t.acquireAndPinPage(i),a=t.getSlotDataView(o);i=ge(a,0).nextColCatalogPageId}const r=pn(n);for(const o of r){let a=o.colCatalogPageId;for(;a!==0;){const c=await t.acquireAndPinPage(a),l=t.getSlotDataView(c);a=ge(l,0).nextColCatalogPageId}}}getPlanner(){return this.planner}setPlanner(t){return this.planner=t,this}validateIdentifier(t,n="Identifier"){if(!t||typeof t!="string"||t.length===0)throw new Error(`${n} cannot be empty`);if(t.length>ie)throw new Hr(t,ie)}async createTable(t,n){return this.coordinator.leaseQueue.enqueue(()=>this._createTableInternal(t,n),this.currentLeaseId??void 0)}async _createTableInternal(t,n){var _;if(this.validateIdentifier(t,"Table name"),n.length===0)throw new Error("Table must have at least one column");if(n.length>Ae)throw new Mn(n.length,Ae);const s=new Set;let i=!1;for(const I of n){if(this.validateIdentifier(I.name,"Column name"),s.has(I.name))throw new hs(I.name,t);s.add(I.name);const p=typeof I.flags=="number"?I.flags:0;(I.primaryKey||(_=I.flags)!=null&&_.primaryKey||p&tt.PRIMARY_KEY)&&(i=!0)}const r=this.pool.getSlotDataView(0);if(Zt(r,t)!==-1)throw new gs(t);const o=Ki(r)===-1?1:0,a=Math.ceil(n.length/Ce),c=i?1:0,l=1+a+c+o,u=[];for(let I=0;I<l;I++)u.push(await this.driver.allocateAndPinPage());let d=0;const h={allocateNewPage:()=>{if(d<u.length)return u[d++];const p=r.getUint32(12,!0)+1;return r.setUint32(12,p,!0),this.pool.markDirty(0),p},getPageBytes:I=>{let p=this.pool.getResidentSlot(I);return p===-1&&(p=I<=this.pool.slotCount?I-1:1,this.pool.assignSlot(p,I)),this.pool.getPageBytesInSlot(p)},markPageDirty:I=>{const p=this.pool.getResidentSlot(I);p!==-1&&this.pool.markDirty(p)}};let f;try{f=Vo(r,h,t,n)}catch(I){for(const p of u)this.driver.forceUnpinPage(p),await this.driver.freePage(p,!0);throw I}this.driver.unpinPage(f.rootPageId);for(const I of f.indexes??[])I.rootPageId>1&&this.driver.unpinPage(I.rootPageId);let g=f.colCatalogPageId;for(;g!==0;){const I=await this.driver.acquirePage(g);this.pool.isSlotPinned(I)||this.pool.pinSlot(I),g=ge(this.pool.getSlotDataView(I),0).nextColCatalogPageId}return this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this.tableMetaCache.delete(t.toLowerCase()),f}async getTable(t){return this.coordinator.leaseQueue.enqueue(()=>this._getTableInternal(t),this.currentLeaseId??void 0)}async _getTableInternal(t){const n=t.toLowerCase(),s=this.tableMetaCache.get(n);if(s)return s;const i=this.pool.getSlotDataView(0),r=Zt(i,t);if(r===-1)throw new kn(t);let a=qt(i,r).colCatalogPageId;for(;a!==0;){await this.driver.acquirePage(a);const u=this.pool.getResidentSlot(a);a=ge(this.pool.getSlotDataView(u),0).nextColCatalogPageId}const l=er(i,{getPageBytes:u=>{const d=this.pool.getResidentSlot(u);return d!==-1?this.pool.getPageBytesInSlot(d):new Uint8Array(4096)}},t);return this.tableMetaCache.set(n,l),l}async listTables(){return this.coordinator.leaseQueue.enqueue(async()=>{const t=this.pool.getSlotDataView(0),n=pn(t),s=[];for(const i of n)s.push(await this._getTableInternal(i.name));return s},this.currentLeaseId??void 0)}async freeTableTreePages(t){if(t<=1)return;const n=[],s=new Set,i=[t];for(;i.length>0;){const r=i.shift();if(r<=1||s.has(r))continue;s.add(r);const o=await this.driver.acquirePage(r),a=this.pool.getSlotDataView(o),c=Xe(a,0);if(c===$e){this.driver.forceUnpinPage(r);continue}if(n.push(r),c===Ci||c===vr){const l=ft(a,0);for(let d=0;d<l;d++){const h=at(a,0,d);if(h>0&&h+4<=4096){const f=a.getUint32(h,!0);f>1&&!s.has(f)&&i.push(f)}}const u=Ut(a,0);u>1&&!s.has(u)&&i.push(u)}else if(c===fs||c===us){const l=Ut(a,0);l>1&&!s.has(l)&&i.push(l)}}for(const r of n)this.driver.forceUnpinPage(r),await this.driver.freePage(r,!0)}async dropTable(t){return this.coordinator.leaseQueue.enqueue(()=>this._dropTableInternal(t),this.currentLeaseId??void 0)}async _dropTableInternal(t){var a;this.tableMetaCache.delete(t.toLowerCase()),this.tableTailPages.delete(t);const n=this.pool.getSlotDataView(0),s=Zt(n,t);if(s===-1)throw new kn(t);const i=qt(n,s);i.pkRootPageId&&i.pkRootPageId>1&&(await this.freeTableTreePages(i.pkRootPageId),this.indexTailPages.delete(i.pkRootPageId));const r=Be(n);for(let c=0;c<r;c++){const l=yn(n,c);l&&(l.tableId===i.tableId||l.name.toLowerCase().startsWith(`idx_${t.toLowerCase()}_`)||l.name.toLowerCase()===`pk_${t.toLowerCase()}`)&&(l.rootPageId>1&&l.rootPageId!==i.pkRootPageId&&(await this.freeTableTreePages(l.rootPageId),this.indexTailPages.delete(l.rootPageId)),zi(n,c))}i.rootPageId>1&&await this.freeTableTreePages(i.rootPageId);let o=i.colCatalogPageId;for(;o>1;){const c=await this.driver.acquirePage(o),l=this.pool.getSlotDataView(c);if(Xe(l,0)===$e){this.driver.forceUnpinPage(o);break}const h=ge(l,0).nextColCatalogPageId;this.driver.forceUnpinPage(o),await this.driver.freePage(o,!0),o=h}qo(n,s),en(n),oe(n),Yt(n),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),((a=this.vmCtx.table)==null?void 0:a.name.toLowerCase())===t.toLowerCase()&&(this.vmCtx.table=null)}async renameTable(t,n){return this.coordinator.leaseQueue.enqueue(()=>this._renameTableInternal(t,n),this.currentLeaseId??void 0)}async _renameTableInternal(t,n){var u;this.validateIdentifier(n,"Table name");const s=this.pool.getSlotDataView(0),i=Zt(s,t);if(i===-1)throw new kn(t);if(t===n)return this._getTableInternal(n);if(Zt(s,n)!==-1)throw new gs(n);const r=qt(s,i);r.name=n,sn(s,i,r);const o=`pk_${t}`,a=`idx_${t}_`,c=Be(s);for(let d=0;d<c;d++){const h=yn(s,d);if(h&&h.tableId===r.tableId){let f=null;h.name===o?f=`pk_${n}`:h.name.startsWith(a)&&(f=`idx_${n}_${h.name.slice(a.length)}`),f&&f.length<=ie&&!Ms(s,f)&&(h.name=f,Ji(s,d,h))}}en(s),oe(s),Yt(s),this.pool.markDirty(0),this.tableMetaCache.delete(t.toLowerCase()),this.tableMetaCache.delete(n.toLowerCase());const l=this.tableTailPages.get(t);return l!==void 0&&(this.tableTailPages.delete(t),this.tableTailPages.set(n,l)),((u=this.vmCtx.table)==null?void 0:u.name.toLowerCase())===t.toLowerCase()&&(this.vmCtx.table=null),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(n)}async renameColumn(t,n,s){return this.coordinator.leaseQueue.enqueue(()=>this._renameColumnInternal(t,n,s),this.currentLeaseId??void 0)}async _renameColumnInternal(t,n,s){var g;this.validateIdentifier(s,"Column name");const i=await this._getTableInternal(t),r=i.columns.findIndex(_=>_.name===n);if(r===-1)throw new he(n,t);if(n===s)return i;if(i.columns.some((_,I)=>I!==r&&_.name===s))throw new hs(s,t);const{pageChainIdx:o,colIdxInPage:a}=Ho(r);let c=i.colCatalogPageId;for(let _=0;_<o;_++){const I=await this.driver.acquirePage(c);c=ge(this.pool.getSlotDataView(I),0).nextColCatalogPageId}const l=await this.driver.acquirePage(c),u=this.pool.getSlotDataView(l),d={...i.columns[r],name:s};tr(u,0,a,d);const h=be(this.pool.getPageBytesInSlot(l));u.setUint32(12,h,!0),this.pool.markDirty(l);const f=this.pool.getSlotDataView(0);return en(f),oe(f),Yt(f),this.pool.markDirty(0),this.tableMetaCache.delete(t.toLowerCase()),((g=this.vmCtx.table)==null?void 0:g.name.toLowerCase())===t.toLowerCase()&&(this.vmCtx.table=null),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(t)}async addColumn(t,n,s){this.validateIdentifier(n.name,"Column name");const i=(s==null?void 0:s.defaultValue)!==void 0?s.defaultValue:n.defaultValue!==void 0?n.defaultValue:null;return this._executeTableRebuildAtomic(t,r=>{var d,h,f;if(r.columns.some(g=>g.name===n.name))throw new hs(n.name,t);if(r.columns.length+1>Ae)throw new Mn(r.columns.length+1,Ae);const o=typeof n.flags=="number"?n.flags:0,a=!!n.primaryKey||!!((d=n.flags)!=null&&d.primaryKey)||(o&tt.PRIMARY_KEY)!==0,c=!!n.autoInc||!!((h=n.flags)!=null&&h.autoInc)||(o&tt.AUTO_INC)!==0,l=!!n.indexed||!!((f=n.flags)!=null&&f.indexed)||(o&tt.INDEXED)!==0;if(a&&r.columns.some(g=>(g.flags&tt.PRIMARY_KEY)!==0))throw new Error(`Cannot add a PRIMARY KEY column "${n.name}" to table "${t}" because it already has a primary key`);return{newColumns:[...r.columns.map(g=>({name:g.name,type:g.type,flags:{primaryKey:(g.flags&tt.PRIMARY_KEY)!==0,notNull:(g.flags&tt.NOT_NULL)!==0,indexed:(g.flags&tt.INDEXED)!==0,autoInc:(g.flags&tt.AUTO_INC)!==0}})),n],transformRow:g=>{const _={...g};return(!c||i!==null)&&(_[n.name]=i),_},keepIndex:()=>!0,newAutoIndexCol:l&&!a?n.name:void 0}})}async dropColumn(t,n){return this.validateIdentifier(n,"Column name"),this._executeTableRebuildAtomic(t,s=>{const i=s.columns.findIndex(a=>a.name===n);if(i===-1)throw new he(n,t);if(s.columns.length<=1)throw new wi(`Cannot drop column "${n}" from table "${t}": table must have at least one column`);if(s.columns[i].flags&tt.PRIMARY_KEY)throw new wi(`Cannot drop PRIMARY KEY column "${n}" from table "${t}"`);return{newColumns:s.columns.filter(a=>a.name!==n).map(a=>({name:a.name,type:a.type,flags:{primaryKey:(a.flags&tt.PRIMARY_KEY)!==0,notNull:(a.flags&tt.NOT_NULL)!==0,indexed:(a.flags&tt.INDEXED)!==0,autoInc:(a.flags&tt.AUTO_INC)!==0}})),transformRow:a=>{const c={...a};return delete c[n],c},keepIndex:a=>!a.includes(n)}})}async alterTable(t,n){switch(n.type){case"renameTable":return this.renameTable(t,n.newName);case"renameColumn":return this.renameColumn(t,n.from,n.to);case"addColumn":return this.addColumn(t,n.column,{defaultValue:n.defaultValue});case"dropColumn":return this.dropColumn(t,n.column);default:throw new Error(`Unsupported alterTable operation: ${n==null?void 0:n.type}`)}}async _executeTableRebuildAtomic(t,n){return this.coordinator.isInTransaction()?this.coordinator.leaseQueue.enqueue(async()=>{const s=await this.coordinator.captureSavepoint();try{return await this._rebuildTableSchemaInternal(t,n)}catch(i){throw this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.restoreSavepoint(s),i}},this.currentLeaseId??void 0):this.transaction(s=>s._rebuildTableSchemaInternal(t,n))}async _rebuildTableSchemaInternal(t,n){const s=await this._getTableInternal(t),{newColumns:i,transformRow:r,keepIndex:o,newAutoIndexCol:a}=n(s),c=[];let l=s.rootPageId;for(;l!==0;){let _=await this.driver.acquirePage(l),I=this.pool.getSlotDataView(_);const p=ft(I,0),y=Ut(I,0);for(let T=0;T<p;T++){_=await this.driver.acquirePage(l),I=this.pool.getSlotDataView(_);const O=at(I,0,T),w=Je(s.columns,I,O);w&&c.push(r(w))}l=y}const u=s.autoIncNext,d=this.pool.getSlotDataView(0),h=le(d,s.tableId),f=[];for(const _ of h){if(_.flags&rt.PRIMARY)continue;const I=_.columnIndices.slice(0,_.columnCount).map(p=>{var y;return(y=s.columns[p])==null?void 0:y.name}).filter(p=>typeof p=="string");I.length===_.columnCount&&o(I)&&f.push({name:_.name,colNames:I,unique:(_.flags&rt.UNIQUE)!==0})}await this._dropTableInternal(t),await this._createTableInternal(t,i);for(const _ of f)await this._createIndexInternal(t,_.colNames,{name:_.name,unique:_.unique});a&&!f.some(_=>_.colNames.length===1&&_.colNames[0]===a)&&await this._createIndexInternal(t,a),c.length>0&&await this._insertManyInternal(t,c,!1);const g=Zt(d,t);if(g!==-1){const _=qt(d,g);u>_.autoIncNext&&(_.autoIncNext=u,sn(d,g,_),Yt(d),this.pool.markDirty(0))}return this.tableMetaCache.delete(t.toLowerCase()),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(t)}async createIndex(t,n,s){return this.coordinator.leaseQueue.enqueue(()=>this._createIndexInternal(t,n,s),this.currentLeaseId??void 0)}async _createIndexInternal(t,n,s){const i=await this._getTableInternal(t),r=Array.isArray(n)?n:[n];if(r.length===0)throw new Error(`At least one column must be specified for createIndex on table "${t}"`);if(r.length>8)throw new Error(`Maximum 8 columns allowed per index (requested ${r.length})`);const o=[];for(const w of r){const C=i.columns.findIndex(B=>B.name===w);if(C===-1)throw new he(w,t);o.push(C)}const a=(s==null?void 0:s.name)??`idx_${t}_${r.join("_")}`,c=this.pool.getSlotDataView(0);if(Ms(c,a)!==null)throw new Si(a);const d=le(c,i.tableId).find(w=>{if(w.columnCount!==o.length)return!1;for(let C=0;C<w.columnCount;C++)if(w.columnIndices[C]!==o[C])return!1;return!0});if(d)throw new Si(d.name||a);const h=await this.driver.allocateAndPinPage(),f=this.pool.getResidentSlot(h),g=this.pool.getSlotDataView(f);Ls(g,0,0),this.pool.markDirty(f),this.pool.unpinSlot(f);const _=!!(s!=null&&s.unique);let I=i.rootPageId;for(;I!==0;){let w=await this.driver.acquirePage(I),C=this.pool.getSlotDataView(w);const B=ft(C,0),P=Ut(C,0);for(let U=0;U<B;U++){w=await this.driver.acquirePage(I),C=this.pool.getSlotDataView(w);const Q=at(C,0,U),R=Je(i.columns,C,Q);if(R){const A=BigInt(I)<<16n|BigInt(U),{keyVal:b,keyType:k}=this.extractIndexKey(i.columns,{columnCount:o.length,columnIndices:o},R);if(b!=null){if(_&&await this.probeIndexUnique(h,k,b))throw await this.freeTableTreePages(h),this.indexTailPages.delete(h),new ln(`Duplicate key value violates unique constraint "${a}" on table "${t}"`);await this.insertIntoIndex(h,k,b,A)}}}I=P}let p=Mo(c);if(p===-1){const w=await this.driver.allocateAndPinPage();if(p=ko(c,w),p===-1)throw new $r(ii+1,ii);this.pool.markDirty(0)}const y=[0,0,0,0,0,0,0,0],T=[0,0,0,0,0,0,0,0];for(let w=0;w<o.length&&w<8;w++)y[w]=o[w];const O=_?rt.UNIQUE:0;Ji(c,p,{indexId:p+1,tableId:i.tableId,rootPageId:h,columnCount:o.length,flags:O,columnIndices:y,colDirections:T,name:a}),en(c),oe(c),Yt(c),this.pool.markDirty(0),this.tableMetaCache.delete(t.toLowerCase()),this.indexTailPages.delete(h),this.coordinator.isInTransaction()||await this.driver.flushAllDirty()}async dropIndex(t){return this.coordinator.leaseQueue.enqueue(()=>this._dropIndexInternal(t),this.currentLeaseId??void 0)}async _dropIndexInternal(t){const n=this.pool.getSlotDataView(0),s=Ms(n,t);if(!s)throw new Vr(t);if(s.desc.rootPageId>1&&(await this.freeTableTreePages(s.desc.rootPageId),this.indexTailPages.delete(s.desc.rootPageId)),s.slotIdx>=0)zi(n,s.slotIdx);else{const i=-s.slotIdx-1,r=qt(n,i);r&&(r.pkRootPageId=void 0,r.pkColumnCount=void 0,r.pkFlags=void 0,r.pkColumnIndices=void 0,sn(n,i,r))}en(n),oe(n),Yt(n),this.pool.markDirty(0),this.tableMetaCache.clear(),this.indexTailPages.clear(),this.coordinator.isInTransaction()||await this.driver.flushAllDirty()}async listIndexes(t){return this.coordinator.leaseQueue.enqueue(async()=>{const n=this.pool.getSlotDataView(0);if(t){const s=await this._getTableInternal(t);return le(n,s.tableId)}return Go(n)},this.currentLeaseId??void 0)}extractIndexKey(t,n,s){if(n.columnCount===1){const i=t[n.columnIndices[0]];return{keyVal:s[i.name],keyType:i.type}}return{keyVal:Rs(t,n.columnIndices,n.columnCount,s),keyType:S.BLOB}}async probeIndexUnique(t,n,s,i){let r=t;for(;r!==0;){const o=await this.driver.acquirePage(r),a=this.pool.getSlotDataView(o);if(ft(a,0)>0){const l=Vn(a,0,n,s);if(l.found){const u=at(a,0,l.slot_idx),d=a.getUint16(u,!0),h=a.getBigInt64(u+2+d,!0);if(!i||!i.has(h))return!0}}r=Ut(a,0)}return!1}async deleteFromIndex(t,n,s,i){let r=t;for(;r!==0;){const o=await this.driver.acquirePage(r),a=this.pool.getSlotDataView(o);if(ft(a,0)>0){const l=Vn(a,0,n,s,i);if(l.found)return go(a,0,l.slot_idx),this.pool.markDirty(o),!0}r=Ut(a,0)}return!1}async insertIntoIndex(t,n,s,i){let r=this.indexTailPages.get(t)??t,o=await this.driver.acquirePage(r),a=this.pool.getSlotDataView(o);for(;;){const l=Ut(a,0);if(l===0)break;r=l,o=await this.driver.acquirePage(r),a=this.pool.getSlotDataView(o)}this.indexTailPages.set(t,r);let c=Gi(a,0,n,s,i,this.pool.pageScratchpadOffset);if(c===-1){this.pool.pinSlot(o);try{const l=await this.driver.allocateAndPinPage(),u=this.pool.getResidentSlot(l);try{Us(a,0,l),this.pool.markDirty(o);const d=this.pool.getSlotDataView(u);if(Ls(d,0,0),c=Gi(d,0,n,s,i,this.pool.pageScratchpadOffset),c===-1)throw new Error("Unexpected error: index entry does not fit in empty page");this.pool.markDirty(u),this.indexTailPages.set(t,l)}finally{this.pool.unpinSlot(u)}}finally{this.pool.unpinSlot(o)}}else this.pool.markDirty(o)}cloneRow(t){const n={};for(const[s,i]of Object.entries(t))n[s]=i instanceof Uint8Array?i.slice():i;return n}valuesEqual(t,n){if(t===n||t==null&&n==null)return!0;if(t instanceof Uint8Array&&n instanceof Uint8Array){if(t.byteLength!==n.byteLength)return!1;for(let s=0;s<t.byteLength;s++)if(t[s]!==n[s])return!1;return!0}return typeof t=="number"&&typeof n=="bigint"||typeof t=="bigint"&&typeof n=="number"?BigInt(t)===BigInt(n):typeof t=="boolean"&&typeof n=="number"||typeof t=="number"&&typeof n=="boolean"?Number(t)===Number(n):!1}extractPrimaryKey(t,n){const s=t.columns.filter(i=>(i.flags&tt.PRIMARY_KEY)!==0);return s.length===1?n[s[0].name]??null:s.length>1?s.map(i=>n[i.name]??null):t.columns.length===1?n[t.columns[0].name]??null:t.columns.map(i=>n[i.name]??null)}serializePkKey(t){const n=s=>s==null?"null":s instanceof Uint8Array?`b:${Array.from(s).join(",")}`:`${typeof s}:${String(s)}`;return Array.isArray(t)?`[${t.map(n).join("|")}]`:t!==null&&typeof t=="object"&&!(t instanceof Uint8Array)?`{${Object.keys(t).sort().map(i=>`${i}:${n(t[i])}`).join("|")}}`:n(t)}buildChangeset(t,n,s,i){const{changeCounter:r,schemaVersion:o}=this.getSyncState(),a=Array.from(new Set(i.map(c=>c.table)));return{txId:t,origin:n,meta:s,changeCounter:r,schemaVersion:o,tables:a,changes:i,coalesced:()=>{const c=new Map;for(const l of i){const u=`${l.table.toLowerCase()}::${this.serializePkKey(l.pk)}`,d=c.get(u);if(!d){c.set(u,{table:l.table,op:l.op,pk:Array.isArray(l.pk)?[...l.pk]:l.pk,oldRow:l.oldRow?this.cloneRow(l.oldRow):void 0,newRow:l.newRow?this.cloneRow(l.newRow):void 0,changedColumns:l.changedColumns?[...l.changedColumns]:void 0});continue}if(d.op==="insert"&&l.op==="update")c.set(u,{table:l.table,op:"insert",pk:Array.isArray(l.pk)?[...l.pk]:l.pk,newRow:l.newRow?this.cloneRow(l.newRow):d.newRow});else if(d.op==="insert"&&l.op==="delete")c.delete(u);else if(d.op==="update"&&l.op==="update"){const h=d.oldRow,f=l.newRow?this.cloneRow(l.newRow):d.newRow,g=Object.keys(f).filter(_=>!this.valuesEqual(h[_],f[_]));c.set(u,{table:l.table,op:"update",pk:Array.isArray(l.pk)?[...l.pk]:l.pk,oldRow:h,newRow:f,changedColumns:g})}else if(d.op==="update"&&l.op==="delete")c.set(u,{table:l.table,op:"delete",pk:Array.isArray(d.pk)?[...d.pk]:d.pk,oldRow:d.oldRow});else if(d.op==="delete"&&l.op==="insert"){const h=d.oldRow,f=l.newRow?this.cloneRow(l.newRow):{},g=Object.keys(f).filter(_=>!this.valuesEqual(h[_],f[_]));c.set(u,{table:l.table,op:"update",pk:Array.isArray(l.pk)?[...l.pk]:l.pk,oldRow:h,newRow:f,changedColumns:g})}else c.set(u,{table:l.table,op:l.op,pk:Array.isArray(l.pk)?[...l.pk]:l.pk,oldRow:l.oldRow?this.cloneRow(l.oldRow):void 0,newRow:l.newRow?this.cloneRow(l.newRow):void 0,changedColumns:l.changedColumns?[...l.changedColumns]:void 0})}return Array.from(c.values())}}}notifySubscriptions(t){if(t.tables.length===0||this.subscriptions.size===0)return;const n=new Set(t.tables.map(s=>s.toLowerCase()));for(const s of this.subscriptions)if(s.tables==="*")s.callback(t);else for(const i of n)if(s.tables.has(i)){s.callback(t);break}}emitCommitAndSubscriptions(t){if(t.changes.length===0)return;for(const r of this.commitHooks)r(t);const n=t.tables,{changeCounter:s,schemaVersion:i}=t;if(this.notifySubscriptions({tables:n,origin:t.origin,meta:t.meta,changeCounter:s,schemaVersion:i,crossTab:!1,changeset:t}),this.broadcastChannel)try{this.broadcastChannel.postMessage({senderId:this.instanceId,tables:n,origin:t.origin,meta:t.meta,changeCounter:s,schemaVersion:i})}catch{}}onBeforeCommit(t){return this.beforeCommitHooks.add(t),()=>{this.beforeCommitHooks.delete(t)}}onCommit(t){return this.commitHooks.add(t),()=>{this.commitHooks.delete(t)}}subscribe(t,n){const s={tables:t==="*"?"*":new Set((Array.isArray(t)?t:[t]).map(i=>i.toLowerCase())),callback:n};return this.subscriptions.add(s),()=>{this.subscriptions.delete(s)}}liveQuery(t,n,s){const i=typeof n=="function",r={db:this,...i?s:n};return i?Ks(t,n,r):Ks(t,r)}getSyncState(){const t=this.pool.getSlotDataView(0),n=Yn(t,!1);return{changeCounter:n.changeCounter,schemaVersion:n.schemaVersion}}validateFilterColumns(t,n){const s=new Set(t.columns.map(o=>o.name)),i=o=>{if(o){if(o.type==="col"&&o.name!=="*"){if(!s.has(o.name))throw new he(o.name,t.name)}else if(o.type==="binary")i(o.left),i(o.right);else if(o.type==="fn"&&Array.isArray(o.args))for(const a of o.args)i(a)}},r=o=>{if(o.colName&&!s.has(o.colName))throw new he(o.colName,t.name);if(o.expr&&i(o.expr),o.child&&r(o.child),o.children)for(const a of o.children)r(a)};for(const o of n)r(o)}matchesFilter(t,n,s){switch(s.type){case"and":return(s.children??[]).every(i=>this.matchesFilter(t,n,i));case"or":return(s.children??[]).some(i=>this.matchesFilter(t,n,i));case"not":return s.child?!this.matchesFilter(t,n,s.child):!0;case"null":{const i=s.expr?kt(s.expr,n,o=>{var a;return(a=this.getUdf(o))==null?void 0:a.def.call}):n[s.colName],r=i==null;return s.isNull?r:!r}case"in":{const i=s.expr?kt(s.expr,n,a=>{var c;return(c=this.getUdf(a))==null?void 0:c.def.call}):n[s.colName];if(i==null)return!1;const o=(s.values??[]).some(a=>this.valuesEqual(i,a));return s.notIn?!o:o}case"expr":{if(!s.expr)return!0;const i=kt(s.expr,n,r=>{var o;return(o=this.getUdf(r))==null?void 0:o.def.call});return!!i&&i!==0}case"cmp":{const i=s.expr?kt(s.expr,n,a=>{var c;return(c=this.getUdf(a))==null?void 0:c.def.call}):n[s.colName],r=s.value;if(i==null||r===null||r===void 0)return!1;switch(String(s.op??"=").trim().toLowerCase().replace(/\s+/g," ")){case"=":case"==":return this.valuesEqual(i,r);case"!=":case"<>":return!this.valuesEqual(i,r);case"<":return typeof i=="string"&&typeof r=="string"?i<r:Number(i)<Number(r);case"<=":return typeof i=="string"&&typeof r=="string"?i<=r:Number(i)<=Number(r);case">":return typeof i=="string"&&typeof r=="string"?i>r:Number(i)>Number(r);case">=":return typeof i=="string"&&typeof r=="string"?i>=r:Number(i)>=Number(r);case"like":return ze(String(i),String(r));case"not like":return!ze(String(i),String(r));case"contains":return String(i).includes(String(r));case"starts_with":return String(i).startsWith(String(r));case"ends_with":return String(i).endsWith(String(r));default:return this.valuesEqual(i,r)}}default:return!0}}matchesFilters(t,n,s){for(const i of s)if(!this.matchesFilter(t,n,i))return!1;return!0}async deleteCellsOnDataPageAndShiftIndexes(t,n,s,i,r){if(i.length===0)return;const o=new Set(i);if(n.length>0){for(const u of i){const d=r[u];if(!d)continue;const h=BigInt(s)<<16n|BigInt(u);for(const f of n){const{keyVal:g,keyType:_}=this.extractIndexKey(t.columns,f,d.row);g!=null&&await this.deleteFromIndex(f.rootPageId,_,g,h)}}let l=0;for(let u=0;u<r.length;u++)if(!o.has(u)){if(l!==u){const d=r[u].row,h=BigInt(s)<<16n|BigInt(u),f=BigInt(s)<<16n|BigInt(l);for(const g of n){const{keyVal:_,keyType:I}=this.extractIndexKey(t.columns,g,d);_!=null&&(await this.deleteFromIndex(g.rootPageId,I,_,h),await this.insertIntoIndex(g.rootPageId,I,_,f))}}l++}}const a=await this.driver.acquirePage(s),c=this.pool.getSlotDataView(a);for(let l=i.length-1;l>=0;l--)uo(c,0,i[l]);this.pool.markDirty(a)}normalizeWhereOrPkFilters(t,n){if(n!==null&&typeof n=="object"&&!(n instanceof Uint8Array)){const i=[];for(const[r,o]of Object.entries(n))o!==void 0&&(o===null?i.push({type:"null",colName:r,isNull:!0}):i.push({type:"cmp",colName:r,op:"=",value:o}));return i}const s=t.columns.find(i=>(i.flags&tt.PRIMARY_KEY)!==0);if(!s)throw new Error(`Table "${t.name}" does not have a primary key column for scalar lookup`);return[{type:"cmp",colName:s.name,op:"=",value:n}]}async insert(t,n,s){await this.insertMany(t,[n],s)}async insertMany(t,n,s){if(!(!n||n.length===0)){if(!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0){await this.transaction(async i=>{await i._insertManyInternal(t,n,!0)},s);return}return this.coordinator.leaseQueue.enqueue(async()=>{const i=this.coordinator.isInTransaction(),r=await this._insertManyInternal(t,n,!0);if(!i&&r.length>0){const o=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,r);this.emitCommitAndSubscriptions(o)}},this.currentLeaseId??void 0)}}async _insertManyInternal(t,n,s=!0){if(!n||n.length===0)return[];const i=await this._getTableInternal(t),r=this.pool.getSlotDataView(0),o=le(r,i.tableId),a=o.filter(p=>(p.flags&(rt.UNIQUE|rt.PRIMARY))!==0),c=i.columns.find(p=>(p.flags&tt.AUTO_INC)!==0),l=new Map;for(const p of a)l.set(p.name,new Set);let u=i.autoIncNext;const d=[];for(let p=0;p<n.length;p++){const y=n[p];for(const C of i.columns)if(C.flags&tt.PRIMARY_KEY&&!(C.flags&tt.AUTO_INC)&&(y[C.name]===void 0||y[C.name]===null))throw new As(C.name,t);let T;const O={};for(const C of i.columns)y[C.name]!==void 0?O[C.name]=y[C.name]:O[C.name]=null;c&&(y[c.name]===void 0||y[c.name]===null)&&(T=Number(u),u+=1n,O[c.name]=T);for(const C of a){const{keyVal:B,keyType:P}=this.extractIndexKey(i.columns,C,O);if(B!=null){const U=B instanceof Uint8Array?Array.from(B).join(","):B,Q=l.get(C.name);if(Q.has(U))throw new ln(`Duplicate key value violates unique constraint "${C.name}" on table "${t}"`);if(Q.add(U),await this.probeIndexUnique(C.rootPageId,P,B))throw new ln(`Duplicate key value violates unique constraint "${C.name}" on table "${t}"`)}}const w=bs(i.columns,O);d.push({row:y,effectiveRow:O,rowBytes:w,assignedAutoInc:T})}i.autoIncNext=u;let h=this.tableTailPages.get(t)??i.rootPageId,f=await this.driver.acquirePage(h),g=this.pool.getSlotDataView(f);for(;;){const p=Ut(g,0);if(p===0)break;h=p,f=await this.driver.acquirePage(h),g=this.pool.getSlotDataView(f)}this.tableTailPages.set(t,h);const _=[];for(let p=0;p<d.length;p++){const{row:y,effectiveRow:T,rowBytes:O,assignedAutoInc:w}=d[p];c&&w!==void 0&&(y[c.name]=w),f=await this.driver.acquirePage(h),g=this.pool.getSlotDataView(f);let C=h,B=gn(g,0,O,this.pool.pageScratchpadOffset);if(B===-1){const U=f;this.pool.pinSlot(U);try{const Q=await this.driver.allocateAndPinPage(),R=this.pool.getResidentSlot(Q);try{Us(g,0,Q),this.pool.markDirty(U);const A=this.pool.getSlotDataView(R);if(B=gn(A,0,O,this.pool.pageScratchpadOffset),B===-1)throw new Error("Unexpected error: row does not fit in empty page");this.pool.markDirty(R),h=Q,C=Q,f=R,g=A,this.tableTailPages.set(t,Q)}finally{this.pool.unpinSlot(R)}}finally{this.pool.unpinSlot(U)}}else this.pool.markDirty(f);const P=BigInt(C)<<16n|BigInt(B);for(const U of o){const{keyVal:Q,keyType:R}=this.extractIndexKey(i.columns,U,T);Q!=null&&await this.insertIntoIndex(U.rootPageId,R,Q,P)}if(s){const U={table:i.name,op:"insert",pk:this.extractPrimaryKey(i,T),newRow:this.cloneRow(T)};_.push(U),this.coordinator.isInTransaction()&&this.activeTxChanges.push(U)}}const I=Zt(r,t);if(I!==-1){const p=qt(r,I);p.rowCountEstimate+=n.length,c&&(p.autoIncNext=i.autoIncNext),sn(r,I,p),oe(r),Yt(r),this.pool.markDirty(0)}return this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),_}async update(t,n,s,i){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(r=>r.update(t,n,s,i),i):this.coordinator.leaseQueue.enqueue(async()=>{const r=await this._getTableInternal(t),o=this.normalizeWhereOrPkFilters(r,n),a=this.coordinator.isInTransaction(),{count:c,changes:l}=await this._executeUpdateInternal(t,o,s);if(!a&&l.length>0){const u=this.buildChangeset(this.nextAutoTxId++,(i==null?void 0:i.origin)??"local",i==null?void 0:i.meta,l);this.emitCommitAndSubscriptions(u)}return c},this.currentLeaseId??void 0)}async executeUpdate(t,n,s,i){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(r=>r.executeUpdate(t,n,s,i),i):this.coordinator.leaseQueue.enqueue(async()=>{const r=this.coordinator.isInTransaction(),{count:o,changes:a}=await this._executeUpdateInternal(t,n,s);if(!r&&a.length>0){const c=this.buildChangeset(this.nextAutoTxId++,(i==null?void 0:i.origin)??"local",i==null?void 0:i.meta,a);this.emitCommitAndSubscriptions(c)}return o},this.currentLeaseId??void 0)}async _executeUpdateInternal(t,n,s){const i=await this._getTableInternal(t);this.validateFilterColumns(i,n);const r=new Map(i.columns.map(_=>[_.name,_]));for(const _ of Object.keys(s))if(!r.has(_))throw new he(_,t);const o=this.pool.getSlotDataView(0),a=le(o,i.tableId),c=a.filter(_=>(_.flags&(rt.UNIQUE|rt.PRIMARY))!==0),l=[],u=new Set;let d=0,h=i.rootPageId;for(;h!==0;){const _=await this.driver.acquirePage(h),I=this.pool.getSlotDataView(_),p=ft(I,0),y=Ut(I,0),T=[],O=[];for(let w=0;w<p;w++){const C=at(I,0,w),B=Je(i.columns,I,C);if(T.push({cellIdx:w,row:B}),this.matchesFilters(i,B,n)){const P={...B};for(const[R,A]of Object.entries(s))A!==void 0&&(P[R]=A);for(const R of i.columns)if(R.flags&tt.PRIMARY_KEY&&(P[R.name]===null||P[R.name]===void 0))throw new As(R.name,t);const U=i.columns.map(R=>R.name).filter(R=>!this.valuesEqual(B[R],P[R])),Q=bs(i.columns,P);O.push({cellIdx:w,oldRow:B,newRow:P,changedColumns:U,newRowBytes:Q}),u.add(BigInt(h)<<16n|BigInt(w)),d++}}O.length>0&&l.push({pageId:h,allCells:T,matches:O}),h=y}if(d===0)return{count:0,changes:[]};for(const _ of c){const I=new Set;for(const p of l)for(const y of p.matches){const{keyVal:T,keyType:O}=this.extractIndexKey(i.columns,_,y.newRow);if(T!=null){const w=T instanceof Uint8Array?Array.from(T).join(","):T;if(I.has(w))throw new ln(`Duplicate key value violates unique constraint "${_.name}" on table "${t}"`);if(I.add(w),await this.probeIndexUnique(_.rootPageId,O,T,u))throw new ln(`Duplicate key value violates unique constraint "${_.name}" on table "${t}"`)}}}const f=[],g=[];for(const _ of l){const I=[];for(const p of _.matches){const y=await this.driver.acquirePage(_.pageId),T=this.pool.getSlotDataView(y);if(ki(T,0,p.cellIdx,p.newRowBytes,this.pool.pageScratchpadOffset)){this.pool.markDirty(y),_.allCells[p.cellIdx].row=p.newRow;const w=BigInt(_.pageId)<<16n|BigInt(p.cellIdx);for(const B of a){const P=this.extractIndexKey(i.columns,B,p.oldRow),U=this.extractIndexKey(i.columns,B,p.newRow);this.valuesEqual(P.keyVal,U.keyVal)||(P.keyVal!==void 0&&P.keyVal!==null&&await this.deleteFromIndex(B.rootPageId,P.keyType,P.keyVal,w),U.keyVal!==void 0&&U.keyVal!==null&&await this.insertIntoIndex(B.rootPageId,U.keyType,U.keyVal,w))}const C={table:i.name,op:"update",pk:this.extractPrimaryKey(i,p.newRow),oldRow:this.cloneRow(p.oldRow),newRow:this.cloneRow(p.newRow),changedColumns:p.changedColumns};f.push(C),this.coordinator.isInTransaction()&&this.activeTxChanges.push(C)}else I.push(p.cellIdx),g.push(p)}I.length>0&&await this.deleteCellsOnDataPageAndShiftIndexes(i,a,_.pageId,I,_.allCells)}if(g.length>0){let _=this.tableTailPages.get(t)??i.rootPageId,I=await this.driver.acquirePage(_),p=this.pool.getSlotDataView(I);for(;;){const y=Ut(p,0);if(y===0)break;_=y,I=await this.driver.acquirePage(_),p=this.pool.getSlotDataView(I)}this.tableTailPages.set(t,_);for(const y of g){I=await this.driver.acquirePage(_),p=this.pool.getSlotDataView(I);let T=_,O=gn(p,0,y.newRowBytes,this.pool.pageScratchpadOffset);if(O===-1){const B=I;this.pool.pinSlot(B);try{const P=await this.driver.allocateAndPinPage(),U=this.pool.getResidentSlot(P);try{Us(p,0,P),this.pool.markDirty(B);const Q=this.pool.getSlotDataView(U);O=gn(Q,0,y.newRowBytes,this.pool.pageScratchpadOffset),this.pool.markDirty(U),_=P,T=P,this.tableTailPages.set(t,P)}finally{this.pool.unpinSlot(U)}}finally{this.pool.unpinSlot(B)}}else this.pool.markDirty(I);const w=BigInt(T)<<16n|BigInt(O);for(const B of a){const{keyVal:P,keyType:U}=this.extractIndexKey(i.columns,B,y.newRow);P!=null&&await this.insertIntoIndex(B.rootPageId,U,P,w)}const C={table:i.name,op:"update",pk:this.extractPrimaryKey(i,y.newRow),oldRow:this.cloneRow(y.oldRow),newRow:this.cloneRow(y.newRow),changedColumns:y.changedColumns};f.push(C),this.coordinator.isInTransaction()&&this.activeTxChanges.push(C)}}return oe(o),Yt(o),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),{count:d,changes:f}}async delete(t,n,s){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(i=>i.delete(t,n,s),s):this.coordinator.leaseQueue.enqueue(async()=>{const i=await this._getTableInternal(t),r=this.normalizeWhereOrPkFilters(i,n),o=this.coordinator.isInTransaction(),{count:a,changes:c}=await this._executeDeleteInternal(t,r);if(!o&&c.length>0){const l=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,c);this.emitCommitAndSubscriptions(l)}return a},this.currentLeaseId??void 0)}async executeDelete(t,n,s){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(i=>i.executeDelete(t,n,s),s):this.coordinator.leaseQueue.enqueue(async()=>{const i=this.coordinator.isInTransaction(),{count:r,changes:o}=await this._executeDeleteInternal(t,n);if(!i&&o.length>0){const a=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,o);this.emitCommitAndSubscriptions(a)}return r},this.currentLeaseId??void 0)}async _executeDeleteInternal(t,n){const s=await this._getTableInternal(t);this.validateFilterColumns(s,n);const i=this.pool.getSlotDataView(0),r=le(i,s.tableId),o=[];let a=0,c=s.rootPageId;for(;c!==0;){const u=await this.driver.acquirePage(c),d=this.pool.getSlotDataView(u),h=ft(d,0),f=Ut(d,0);if(h>0){const g=[],_=[];for(let I=0;I<h;I++){const p=at(d,0,I),y=Je(s.columns,d,p);if(g.push({cellIdx:I,row:y}),this.matchesFilters(s,y,n)){_.push(I);const T={table:s.name,op:"delete",pk:this.extractPrimaryKey(s,y),oldRow:this.cloneRow(y)};o.push(T),this.coordinator.isInTransaction()&&this.activeTxChanges.push(T)}}_.length>0&&(a+=_.length,await this.deleteCellsOnDataPageAndShiftIndexes(s,r,c,_,g))}c=f}if(a===0)return{count:0,changes:[]};const l=Zt(i,t);if(l!==-1){const u=qt(i,l);u.rowCountEstimate=Math.max(0,u.rowCountEstimate-a),sn(i,l,u)}return oe(i),Yt(i),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),{count:a,changes:o}}async upsert(t,n,s){const i=await this.upsertMany(t,[n],s);return i.inserted>0?"inserted":i.updated>0?"updated":"ignored"}async upsertMany(t,n,s){return!n||n.length===0?{inserted:0,updated:0,ignored:0}:!this.coordinator.isInTransaction()&&(this.beforeCommitHooks.size>0||n.length>1)?this.transaction(i=>i._upsertManyInLease(t,n,s),s):this.coordinator.leaseQueue.enqueue(async()=>{const i=this.coordinator.isInTransaction(),r=[],o=await this._upsertManyInLease(t,n,s,i?void 0:r);if(!i&&r.length>0){const a=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,r);this.emitCommitAndSubscriptions(a)}return o},this.currentLeaseId??void 0)}async _upsertManyInLease(t,n,s,i){const r=await this._getTableInternal(t),o=new Set(r.columns.map(h=>h.name));let a;if(s!=null&&s.conflictTarget){a=Array.isArray(s.conflictTarget)?s.conflictTarget:[s.conflictTarget];for(const h of a)if(!o.has(h))throw new he(h,t)}else if(a=r.columns.filter(h=>(h.flags&tt.PRIMARY_KEY)!==0).map(h=>h.name),a.length===0)throw new Error(`Cannot upsert on table "${t}" without a primary key or explicit conflictTarget`);const c=(s==null?void 0:s.mode)??"merge";let l=0,u=0,d=0;for(const h of n){for(const I of Object.keys(h))if(!o.has(I))throw new he(I,t);const f=a.every(I=>h[I]!==void 0&&h[I]!==null);let g=null,_=[];if(f&&(_=a.map(I=>({type:"cmp",colName:I,op:"=",value:h[I]})),g=await this.findFirstMatchingRow(r,_)),g){if(c==="ignore"){d++;continue}if(s!=null&&s.where&&!s.where(this.cloneRow(g),this.cloneRow(h))){d++;continue}const I={};if(c==="replace")for(const y of r.columns)h[y.name]!==void 0?I[y.name]=h[y.name]:y.flags&tt.PRIMARY_KEY?I[y.name]=g[y.name]:I[y.name]=null;else for(const[y,T]of Object.entries(h))T!==void 0&&(I[y]=T);const{changes:p}=await this._executeUpdateInternal(t,_,I);i&&i.push(...p),u++}else{const I=await this._insertManyInternal(t,[h],!0);i&&i.push(...I),l++}}return{inserted:l,updated:u,ignored:d}}async findFirstMatchingRow(t,n){let s=t.rootPageId;for(;s!==0;){const i=await this.driver.acquirePage(s),r=this.pool.getSlotDataView(i),o=ft(r,0),a=Ut(r,0);for(let c=0;c<o;c++){const l=at(r,0,c),u=Je(t.columns,r,l);if(this.matchesFilters(t,u,n))return u}s=a}return null}async transaction(t,n){const s=await this.coordinator.begin(),i=s.leaseId;this.activeTxChanges=[],this.activeTxOrigin=(n==null?void 0:n.origin)??"local",this.activeTxMeta=n==null?void 0:n.meta,this.activeTxId=s.txId;const r=new Proxy(this,{get:(o,a,c)=>{if(a==="currentLeaseId")return i;if(a==="transaction")return async(u,d)=>{const h=await this.coordinator.captureSavepoint(),f=this.activeTxChanges.length;try{return await u(r)}catch(g){throw this.activeTxChanges.length=f,this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.restoreSavepoint(h),g}};if(a==="checkpoint")return()=>this.checkpoint();if(a==="from")return u=>{const d=new Bt(r,u);return o.planner&&d.withPlanner(o.planner),d};const l=Reflect.get(o,a,c);return typeof l=="function"?l.bind(r):l}});try{const o=await t(r);if(this.activeTxChanges.length>0&&this.beforeCommitHooks.size>0&&!this.isRunningBeforeCommit){const d=this.buildChangeset(this.activeTxId,this.activeTxOrigin,this.activeTxMeta,[...this.activeTxChanges]);this.isRunningBeforeCommit=!0;try{for(const h of this.beforeCommitHooks)await h(d,r)}finally{this.isRunningBeforeCommit=!1}}const a=[...this.activeTxChanges],c=this.activeTxOrigin,l=this.activeTxMeta,u=this.activeTxId;if(this.activeTxChanges=[],this.activeTxOrigin="local",this.activeTxMeta=void 0,await this.coordinator.commit(i),a.length>0){const d=this.buildChangeset(u,c,l,a);this.emitCommitAndSubscriptions(d)}return o}catch(o){throw this.activeTxChanges=[],this.activeTxOrigin="local",this.activeTxMeta=void 0,this.isRunningBeforeCommit=!1,this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.rollback(i),o}}registerFunction(t,n){const s=t.toLowerCase(),i=typeof n=="function"?{call:n}:{...n};if(!i.returnType)try{const o=i.call(1,1,1,1,1);typeof o=="number"?i.returnType=Number.isInteger(o)?S.INT32:S.FLOAT64:typeof o=="string"&&(i.returnType=S.TEXT)}catch{try{const o=i.call("","","","","");typeof o=="number"?i.returnType=Number.isInteger(o)?S.INT32:S.FLOAT64:typeof o=="string"&&(i.returnType=S.TEXT)}catch{}}let r=this.udfs.get(s);return r?r.def=i:(r={id:this.nextUdfId++,def:i},this.udfs.set(s,r)),this}getUdf(t){return this.udfs.get(t.toLowerCase())}getUdfMap(){const t=new Map;for(const[n,s]of this.udfs.entries())t.set(n,s.id);return t}getUdfDefs(){const t=new Map;for(const[n,s]of this.udfs.entries())t.set(n,s.def);return t}from(t){return new Bt(this,t)}async explainQuery(t,n,s){return this.coordinator.leaseQueue.enqueue(()=>this._explainQueryInternal(t,n,s),this.currentLeaseId??void 0)}async _explainQueryInternal(t,n,s){var I,p,y;const i=await this._getTableInternal(t),r=[];if(s!=null&&s.joins&&s.joins.length>0){if(1+s.joins.length>16)throw new ds(1+s.joins.length,16);for(let T=0;T<s.joins.length;T++){const O=s.joins[T],w=await this._getTableInternal(O.table);r.push({type:O.type,table:w,cursor:T+1,leftCol:O.leftCol,op:O.op,rightCol:O.rightCol})}}const o=dr({table:i,joinedTables:r.length>0?r:void 0,filters:n,orderBy:s==null?void 0:s.orderBy,groupBy:s==null?void 0:s.groupBy,aggregates:s==null?void 0:s.aggregates,having:s==null?void 0:s.having,selectExprs:s==null?void 0:s.selectExprs,udfNameMap:this.getUdfMap(),udfDefs:this.getUdfDefs(),limit:s==null?void 0:s.limit,offset:s==null?void 0:s.offset,planner:(s==null?void 0:s.planner)??this.planner}),c=(o.allTables??(r.length>0?[i,...r.map(T=>T.table)]:[i]))[0],l=fa(o,c),u=Aa(l),d=o.indexScan??o.table0Scan,h=d?"IndexScan":"TableScan",f=d?d.index.name:void 0,g=o.joinedTableScans,_=(I=s==null?void 0:s.joins)==null?void 0:I.map(T=>{const O=g==null?void 0:g.find(w=>w.tableName.toLowerCase()===T.table.toLowerCase());return O&&O.scanType==="IndexScan"?{...T,scanType:O.scanType,indexName:O.indexName}:T});return{plan:{table:c.name,rootPageId:c.rootPageId,scanType:h,indexName:f,filters:n,orderBy:s==null?void 0:s.orderBy,groupBy:s==null?void 0:s.groupBy,aggregates:s==null?void 0:s.aggregates,having:s==null?void 0:s.having,select:s==null?void 0:s.select,joins:_,limit:s==null?void 0:s.limit,offset:s==null?void 0:s.offset,estimatedCost:o.estimatedCost,estimatedRows:o.estimatedRows,joinOrder:o.joinOrder,isOrderSatisfied:o.isOrderSatisfied??((p=o.planMetrics)==null?void 0:p.isOrderSatisfied)??!1,sortCostAvoided:((y=o.planMetrics)==null?void 0:y.sortCostAvoided)??void 0},bytecodeSize:o.byteLength,instructions:l,assembly:u}}async executeQuery(t,n,s){return this.coordinator.leaseQueue.enqueue(()=>this._executeQueryInternal(t,n,s),this.currentLeaseId??void 0)}async _executeQueryInternal(t,n,s){var _;const i=await this._getTableInternal(t),r=[],o=[];if(s.joins&&s.joins.length>0){if(1+s.joins.length>16)throw new ds(1+s.joins.length,16);for(let I=0;I<s.joins.length;I++){const p=s.joins[I],y=await this._getTableInternal(p.table);r.push(y),o.push({type:p.type,table:y,cursor:I+1,leftCol:p.leftCol,op:p.op,rightCol:p.rightCol})}}for(const I of[i,...r]){let p=I.rootPageId;for(;p!==0;){const y=await this.driver.acquirePage(p),T=this.pool.getSlotDataView(y);p=Ut(T,0)}for(const y of I.indexes??[]){let T=y.rootPageId;for(;T!==0;){const O=await this.driver.acquirePage(T),w=this.pool.getSlotDataView(O);T=Ut(w,0)}}}let a=s.orderBy;!a&&s.sortCol&&(a=[{colName:s.sortCol,direction:s.sortDir}]);const c={table:i,joinedTables:o.length>0?o:void 0,filters:n,orderBy:a,groupBy:s.groupBy,aggregates:s.aggregates,having:s.having,selectExprs:s.selectExprs,udfNameMap:this.getUdfMap(),udfDefs:this.getUdfDefs(),limit:s.limit!==null?s.limit:void 0,offset:s.offset!==null?s.offset:void 0,planner:s.planner??this.planner},l=dr(c),u=l.allTables??[i,...r];qr(this.vmCtx,u[0],u),l.inSets&&(this.vmCtx.inSets=l.inSets);const d=l.keyInfos??c.keyInfos;d&&(this.vmCtx.keyInfos=d);const h={};for(const I of this.udfs.values())h[I.id]=I.def.call;this.vmCtx.udfs=h;let f=l.outputColumns??c.outputColumns??i.columns;if(c.aggregates&&c.aggregates.length>0||c.groupBy&&c.groupBy.length>0)if(l.outputColumns)f=l.outputColumns;else{f=[];const I=c.groupBy??[];for(const p of I){const y=typeof p=="string"?p:p.colName??(p.expr?vt(p.expr):"group_key"),T=i.columns.find(O=>O.name===y);T?f.push(T):f.push({name:y,type:S.TEXT,flags:tt.NONE,colOffset:0})}for(let p=0;p<(((_=c.aggregates)==null?void 0:_.length)??0);p++){const y=c.aggregates[p],T=y.alias??(y.colName?`${y.func}_${y.colName}`:y.func),O=y.func==="count"?S.INT32:S.FLOAT64;f.push({name:T,type:O,flags:tt.NONE,colOffset:0})}}this.vmCtx.outputColumns=f;const g=[];for(;;){const I=Xn(this.vmCtx,this.pool.view,l);let p=0;for(let y=0;y<this.vmCtx.resultCount;y++){const T=this.pool.view.getUint16(Dn+p,!0),O=Dn+p+2,w=Je(f,this.pool.view,O);g.push(w),p+=2+T}if(I===L.DONE)break;if(I===L.BUFFER_FULL)this.vmCtx.resultOffset=0,this.vmCtx.resultCount=0,this.vmCtx.status=L.RUNNING;else if(I===L.PAGE_FAULT){this.vmCtx.resultOffset=0,this.vmCtx.resultCount=0;const y=[],T=this.vmCtx.cursors??[this.vmCtx.cursor];for(const O of T)if(O&&O.pageId>1){const w=this.pool.getResidentSlot(O.pageId);w>0&&(this.pool.pinSlot(w),y.push(w))}try{await this.driver.acquirePage(this.vmCtx.fault_page_id)}finally{for(const O of y)this.pool.unpinSlot(O)}this.vmCtx.status=L.RUNNING}else throw I===L.ARENA_EXHAUSTED?(this.vmCtx.arenaOffset=0,new Oi):I===L.TIMEOUT?new Yr:I===L.INVALID_BYTECODE?new Zr:new Error(`VM execution error: status=${I}`)}return Object.defineProperty(g,"isOrderSatisfied",{value:l.isOrderSatisfied??!1,writable:!0,enumerable:!1,configurable:!0}),g}async checkpoint(){return this.coordinator.checkpoint()}async exportBinary(){return this.coordinator.leaseQueue.enqueue(async()=>{this.coordinator.isInTransaction()||(await this.coordinator.executeCheckpoint(),await this.driver.flushAllDirty());const t=this.pool.getSlotDataView(0),n=Ro(t),s=new Uint8Array(n*4096);s.set(this.pool.getPageBytesInSlot(0),0);const i=new DataView(s.buffer,s.byteOffset,4096);Yt(i,0);const r=[];for(let c=2;c<=n;c++)this.pool.getResidentSlot(c)===-1&&!this.coordinator.hasSpilledPage(c)&&r.push(c);const o=r.length>0?await this.vfs.readPages(r):[],a=new Map;for(let c=0;c<r.length;c++)a.set(r[c],o[c]??null);for(let c=2;c<=n;c++){const l=(c-1)*4096,u=s.subarray(l,l+4096),d=this.pool.getResidentSlot(c);if(d!==-1)u.set(this.pool.getPageBytesInSlot(d));else if(this.coordinator.hasSpilledPage(c))u.set(this.coordinator.getSpilledPage(c));else{const f=a.get(c);f&&u.set(f)}const h=be(u);new DataView(u.buffer,u.byteOffset,4096).setUint32(12,h,!0)}return s},this.currentLeaseId??void 0)}async importBinary(t){if(this.coordinator.isInTransaction())throw new Error("Cannot import binary database while a transaction is active");return this.coordinator.leaseQueue.enqueue(async()=>{var c,l;const n=t instanceof Uint8Array?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t);if(n.byteLength<4096||n.byteLength%4096!==0)throw new Gn(`Invalid database binary size (${n.byteLength} bytes): must be a non-zero multiple of 4096 bytes`);const s=n.byteLength/4096,i=n.subarray(0,4096),r=new DataView(i.buffer,i.byteOffset,4096),o=Yn(r,!0);if(o.pageSize!==4096)throw new Gn(`Invalid database page size ${o.pageSize} (expected 4096)`);if(o.totalPages!==s)throw new Gn(`Database page count mismatch: header specifies ${o.totalPages} pages, but binary image contains ${s} pages`);for(let u=2;u<=s;u++){const d=(u-1)*4096,h=n.subarray(d,d+4096),g=new DataView(h.buffer,h.byteOffset,4096).getUint32(12,!0);if(g!==0){const _=be(h);if(_!==g)throw new Pe(u,g,_)}}const a=[];for(let u=1;u<=s;u++){const d=(u-1)*4096;a.push({pageId:u,data:n.subarray(d,d+4096).slice()})}for(let u=1;u<this.pool.slotCount;u++)this.pool.forceUnpinSlot(u),this.pool.unassignSlot(u),this.pool.clearDirty(u),this.pool.getPageBytesInSlot(u).fill(0);this.pool.getPageBytesInSlot(0).set(a[0].data),this.pool.clearDirty(0),await this.vfs.writePages(a),await((l=(c=this.vfs).flush)==null?void 0:l.call(c)),await this.coordinator.resetWalAfterImport(),this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),this.vmCtx.table=null,await Un.pinAllCatalogPages(this.driver)})}async close(){var t,n;this.broadcastChannel&&(this.broadcastChannel.close(),this.broadcastChannel=null),this.beforeCommitHooks.clear(),this.commitHooks.clear(),this.subscriptions.clear(),await this.coordinator.close(),await this.driver.flushAllDirty(),await((n=(t=this.vfs).close)==null?void 0:n.call(t))}}E.ALIGNMENT_PADDING_OFFSET=pl,E.ALIGNMENT_PADDING_SIZE=Or,E.AggregateNotAllowedInWhereError=_s,E.BUILTIN_AGGREGATES=Ko,E.BUILTIN_SCALARS=Jo,E.BYTECODE_OFFSET=Nr,E.BYTECODE_SIZE=Sr,E.BufferPoolDriver=Yo,E.BytecodeEmitter=xs,E.CATALOG_PAGE_HEADER_FIELDS=sl,E.CATALOG_PAGE_HEADER_OFFSET_COL_COUNT_IN_PAGE=ol,E.CATALOG_PAGE_HEADER_OFFSET_FLAGS=rl,E.CATALOG_PAGE_HEADER_OFFSET_NEXT_COL_CATALOG_PAGE_ID=cl,E.CATALOG_PAGE_HEADER_OFFSET_PAGE_CHECKSUM=ul,E.CATALOG_PAGE_HEADER_OFFSET_PAGE_TYPE=il,E.CATALOG_PAGE_HEADER_OFFSET_START_COL_INDEX=ll,E.CATALOG_PAGE_HEADER_OFFSET_TABLE_ID=al,E.CATALOG_PAGE_HEADER_SIZE=Fn,E.COLUMN_META_FIELDS=fl,E.COLUMN_META_OFFSET_COL_OFFSET=gl,E.COLUMN_META_OFFSET_FLAGS=hl,E.COLUMN_META_OFFSET_NAME=dl,E.COLUMN_META_OFFSET_RESERVED=_l,E.COLUMN_META_OFFSET_TYPE=Al,E.COLUMN_META_SIZE=ri,E.COST_INDEX_NEXT=Ws,E.COST_INDEX_SEEK=Cn,E.COST_ROW_EVAL=_e,E.CURRENT_ENGINE_VERSION=cs,E.CURRENT_MIN_READ_VERSION=Qr,E.CannotDropColumnError=wi,E.ColumnAlreadyExistsError=hs,E.ColumnFlag=tt,E.ColumnNotFoundError=he,E.CorruptPageError=Pe,E.CorruptWalFrameError=qn,E.CorruptWalHeaderError=ms,E.CostBasedPlanner=$s,E.CostBasedQueryPlanner=Pc,E.CustomOrderPlanner=Sc,E.CustomPlanner=oa,E.CustomQueryPlanner=Uc,E.DEFAULT_BUFFER_POOL_REGIONS=Il,E.DEFAULT_CACHE_SIZE_BYTES=ml,E.DEFAULT_MAX_QUERY_MEMORY=He,E.DEFAULT_PAGE_SLOTS=El,E.DEFAULT_PAGE_TO_SLOT_BUCKETS=Ht,E.DEFAULT_SLOT_COUNT=We,E.DIRTY_MASK_OFFSET=Pr,E.DataType=S,E.DefaultQueryPlanner=Oc,E.ExclusiveLeaseQueue=Zo,E.ExpressionBuilder=it,E.FILE_HEADER_SIZE=ba,E.HEADER_OFFSET_CHANGE_COUNTER=ye,E.HEADER_OFFSET_FILE_FORMAT_VERSION=ni,E.HEADER_OFFSET_FREE_PAGE_HEAD=fe,E.HEADER_OFFSET_MAGIC=Ie,E.HEADER_OFFSET_MIN_READ_VERSION=si,E.HEADER_OFFSET_NEXT_CATALOG_PAGE_ID=Ge,E.HEADER_OFFSET_NEXT_INDEX_CATALOG_PAGE_ID=qe,E.HEADER_OFFSET_PAGE_CHECKSUM=Te,E.HEADER_OFFSET_PAGE_SIZE=ei,E.HEADER_OFFSET_RESERVED=Na,E.HEADER_OFFSET_SCHEMA_VERSION=pe,E.HEADER_OFFSET_TOTAL_PAGES=re,E.HeuristicPlanner=ia,E.HeuristicQueryPlanner=bc,E.INDEX_CATALOG_OFFSET=ss,E.INDEX_DESCRIPTOR_FIELDS=Xa,E.INDEX_DESCRIPTOR_OFFSET_COLUMN_COUNT=Ka,E.INDEX_DESCRIPTOR_OFFSET_COLUMN_INDICES=za,E.INDEX_DESCRIPTOR_OFFSET_COL_DIRECTIONS=tl,E.INDEX_DESCRIPTOR_OFFSET_FLAGS=Ja,E.INDEX_DESCRIPTOR_OFFSET_INDEX_ID=Ya,E.INDEX_DESCRIPTOR_OFFSET_NAME=el,E.INDEX_DESCRIPTOR_OFFSET_RESERVED=nl,E.INDEX_DESCRIPTOR_OFFSET_ROOT_PAGE_ID=ja,E.INDEX_DESCRIPTOR_OFFSET_TABLE_ID=Za,E.INDEX_DESCRIPTOR_SIZE=Se,E.IdentifierTooLongError=Hr,E.IndexAlreadyExistsError=Si,E.IndexFlag=rt,E.IndexNotFoundError=Vr,E.IndexedDbVfsAdapter=zr,E.InvalidBytecodeError=Zr,E.InvalidDatabaseError=Gn,E.Io=Li,E.MASTER_TABLE_OFFSET=ns,E.MAX_COLUMNS_PER_CATALOG_PAGE=Ce,E.MAX_COLUMNS_PER_TABLE=Ae,E.MAX_CURSORS_PER_FRAME=Ol,E.MAX_DESCRIPTORS_PER_OVERFLOW_PAGE=nn,E.MAX_INDEXES_PAGE1=ii,E.MAX_INDEXES_SYSPAGE=Ba,E.MAX_IN_LIST_SIZE=Qt,E.MAX_NAME_LENGTH=ie,E.MAX_REGISTERS_PER_FRAME=Ul,E.MAX_ROW_SIZE=2048,E.MAX_SUBQUERY_DEPTH=Pl,E.MAX_TABLES_PAGE1=ee,E.MAX_TABLES_SYSPAGE=La,E.MAX_TABLE_INTERIOR_CELLS=yr,E.MAX_TOPK_HEAP_LIMIT=kr,E.MemoryVfsAdapter=Jr,E.NEXT_DESCRIPTOR_CATALOG_PAGE_OFFSET=Ra,E.NEXT_DESCRIPTOR_CATALOG_PAGE_SIZE=Fa,E.NoOpPlanner=ra,E.NoOpQueryPlanner=Nc,E.NotNullConstraintError=As,E.OpCode=m,E.OpfsVfsAdapter=to,E.PAGE_HEADER_OFFSET_CELL_COUNT=Ta,E.PAGE_HEADER_OFFSET_CHECKSUM=Me,E.PAGE_HEADER_OFFSET_CONTENT_OFFSET=Ca,E.PAGE_HEADER_OFFSET_FLAGS=ya,E.PAGE_HEADER_OFFSET_FREE_BYTES=wa,E.PAGE_HEADER_OFFSET_NEXT_PAGE_ID=Ir,E.PAGE_HEADER_OFFSET_TYPE=Er,E.PAGE_HEADER_SIZE=te,E.PAGE_SCRATCHPAD_OFFSET=Lr,E.PAGE_SCRATCHPAD_SIZE=Ur,E.PAGE_SIZE=4096,E.PAGE_TO_SLOT_BUCKET_SIZE=Ue,E.PAGE_TO_SLOT_OFFSET=Gt,E.PAGE_TO_SLOT_SIZE=Cr,E.PAGE_TYPE_CATALOG_PAGE=vn,E.PAGE_TYPE_FREE=$e,E.PAGE_TYPE_INDEX_INTERIOR=vr,E.PAGE_TYPE_INDEX_LEAF=us,E.PAGE_TYPE_LEAF_DATA=fs,E.PAGE_TYPE_TABLE_INTERIOR=Ci,E.QueryArenaExhaustedError=Oi,E.QueryBuilder=Bt,E.QueryTimeoutError=Yr,E.RESULT_BUFFER_OFFSET=Dn,E.RESULT_BUFFER_SIZE=oi,E.RowSizeLimitExceededError=Wr,E.SLOTTED_PAGE_HEADER_FIELDS=pa,E.SLOT_TO_PAGE_OFFSET=is,E.SYSPAGE_FILE_HEADER_FIELDS=Pa,E.SYSPAGE_RESERVED_OFFSET=Da,E.SYSPAGE_RESERVED_SIZE=Qa,E.SubqueryNestingTooDeepError=Xr,E.TABLE_DESCRIPTOR_FIELDS=va,E.TABLE_DESCRIPTOR_OFFSET_AUTO_INC_NEXT=$a,E.TABLE_DESCRIPTOR_OFFSET_COLUMN_COUNT=Ma,E.TABLE_DESCRIPTOR_OFFSET_COL_CATALOG_PAGE_ID=qa,E.TABLE_DESCRIPTOR_OFFSET_FLAGS=Ha,E.TABLE_DESCRIPTOR_OFFSET_NAME=Wa,E.TABLE_DESCRIPTOR_OFFSET_RESERVED=xa,E.TABLE_DESCRIPTOR_OFFSET_ROOT_PAGE_ID=Ga,E.TABLE_DESCRIPTOR_OFFSET_ROW_COUNT_ESTIMATE=Va,E.TABLE_DESCRIPTOR_OFFSET_TABLE_ID=ka,E.TABLE_DESCRIPTOR_SIZE=we,E.TABLE_INTERIOR_CELL_FIELDS=Sa,E.TABLE_INTERIOR_CELL_OFFSET_CHILD_PAGE_ID=Ua,E.TABLE_INTERIOR_CELL_OFFSET_ROWID=Oa,E.TABLE_INTERIOR_CELL_SIZE=pr,E.TABLE_INTERIOR_SPLIT_INDEX=Tr,E.TOTAL_MEMORY_BYTES=yl,E.TRANSIENT_ARENA_OFFSET=Br,E.TableAlreadyExistsError=gs,E.TableFlag=xe,E.TableNotFoundError=kn,E.TooManyColumnsError=Mn,E.TooManyCursorsError=ds,E.TooManyGroupByColumnsError=Kr,E.TooManyIndexesError=$r,E.TooManyOrderByColumnsError=jr,E.TooManyRegistersError=st,E.TooManyTablesError=Ui,E.TransactionCoordinator=jo,E.UniqueConstraintViolationError=ln,E.UnknownFunctionError=Pi,E.UnsupportedFormatVersionError=xr,E.VM_CONTEXT_OFFSET=br,E.VM_CONTEXT_SIZE=wr,E.VM_FRAME_COUNT=Sl,E.VM_FRAME_SIZE=wl,E.VmStatus=L,E.WAL_CURRENT_VERSION=Rr,E.WAL_FILE_HEADER_FIELDS=Tl,E.WAL_FILE_HEADER_SIZE=ls,E.WAL_FRAME_HEADER_FIELDS=Cl,E.WAL_FRAME_HEADER_SIZE=Ve,E.WAL_FRAME_MAGIC=Qn,E.WAL_FRAME_OFFSET_CHECKSUM=Ti,E.WAL_FRAME_OFFSET_DB_SIZE_PAGES=pi,E.WAL_FRAME_OFFSET_FLAGS=mi,E.WAL_FRAME_OFFSET_FRAME_SEQ=yi,E.WAL_FRAME_OFFSET_FRAME_TYPE=_i,E.WAL_FRAME_OFFSET_MAGIC=di,E.WAL_FRAME_OFFSET_PAGE_ID=Ii,E.WAL_FRAME_OFFSET_RESERVED=Dr,E.WAL_FRAME_OFFSET_TX_ID=Ei,E.WAL_FRAME_SIZE=an,E.WAL_FRAME_TYPE_PAGE_DATA=rs,E.WAL_FRAME_TYPE_TX_COMMIT=os,E.WAL_FRAME_TYPE_TX_UNCOMMITTED=as,E.WAL_HEADER_OFFSET_CHECKPOINT_SEQ=fi,E.WAL_HEADER_OFFSET_CHECKSUM=gi,E.WAL_HEADER_OFFSET_MAGIC=li,E.WAL_HEADER_OFFSET_PAGE_SIZE=ui,E.WAL_HEADER_OFFSET_RESERVED=Fr,E.WAL_HEADER_OFFSET_SALT1=Ai,E.WAL_HEADER_OFFSET_SALT2=hi,E.WAL_HEADER_OFFSET_WAL_VERSION=ci,E.WAL_HEADER_SIZE=bl,E.WAL_MAGIC_BYTES=Bi,E.WAL_PAGE_SIZE=Oe,E.WEBDB_CORE_WASM_BASE64=nr,E.WebDB=Un,E.buf_pool_assign_slot=Io,E.buf_pool_clear_dirty=To,E.buf_pool_find_victim=xi,E.buf_pool_get_resident_slot=Vt,E.buf_pool_get_slot_offset=zl,E.buf_pool_is_dirty=Hi,E.buf_pool_is_pinned=_n,E.buf_pool_mark_dirty=yo,E.buf_pool_pin_slot=Vi,E.buf_pool_read_slot_to_page=dn,E.buf_pool_select_eviction_victim=Xi,E.buf_pool_unassign_slot=po,E.buf_pool_unpin_slot=$i,E.buf_pool_write_slot_to_page=Wi,E.buildJoinEdges=Hs,E.buildRootFilter=ne,E.c_assert=ro,E.canJoinPreserveOrder=ua,E.catalog_append_index_overflow_page=ko,E.catalog_append_table_overflow_page=vo,E.catalog_create_table=Vo,E.catalog_delete_index_descriptor=zi,E.catalog_delete_table_descriptor=qo,E.catalog_find_free_index_slot=Mo,E.catalog_find_free_table_slot=Ki,E.catalog_find_index_by_name=Ms,E.catalog_find_table_by_name=Ac,E.catalog_find_table_slot=Zt,E.catalog_get_change_counter=Do,E.catalog_get_free_page_head=lc,E.catalog_get_index_slot_capacity=Be,E.catalog_get_schema_version=Fo,E.catalog_get_table_pk_index=ji,E.catalog_get_table_slot_capacity=In,E.catalog_get_total_pages=Ro,E.catalog_increment_change_counter=oe,E.catalog_increment_schema_version=en,E.catalog_init_page=Gs,E.catalog_init_page1=Bo,E.catalog_list_all_indexes=Go,E.catalog_list_table_descriptors=pn,E.catalog_list_table_indexes=le,E.catalog_load_all_tables=gc,E.catalog_load_table_meta=er,E.catalog_map_column_location=Ho,E.catalog_parse_data_type=Qo,E.catalog_read_column_meta=Wo,E.catalog_read_fixed_string=Qs,E.catalog_read_index_descriptor=yn,E.catalog_read_page1_header=Yn,E.catalog_read_page_header=ge,E.catalog_read_table_descriptor=qt,E.catalog_set_free_page_head=cc,E.catalog_set_total_pages=ac,E.catalog_update_page1_checksum=Yt,E.catalog_write_column_meta=tr,E.catalog_write_fixed_string=Ds,E.catalog_write_index_descriptor=Ji,E.catalog_write_page_header=hc,E.catalog_write_table_descriptor=sn,E.chooseIndexScan=Ys,E.chooseJoinIndex=Zs,E.clear_bit=io,E.col=ir,E.collectLeafFilters=aa,E.compare_sorter_keys=En,E.compileQuery=dr,E.computeBufferPoolOffsets=ai,E.computePage1Checksum=Ni,E.computePageChecksum=be,E.computeWalFrameChecksum=Es,E.crc32=bi,E.createLiveQuery=ha,E.createVmContext=Gr,E.createVmCursor=Mr,E.createWasmCore=xo,E.createWasmMemory=Xo,E.decodeWalFileHeader=Cs,E.decodeWalFrame=Gl,E.decodeWalFrameHeader=Ri,E.deriveDefaultAlias=vt,E.disassembleBytecode=fa,E.doesTableSatisfyJoinOrderKeys=or,E.emitExpression=Z,E.encodeWalFileHeader=Ts,E.encodeWalFrame=ws,E.estimateFilterSelectivity=rr,E.estimateWhereCost=ar,E.evalExprNode=kt,E.exp=ta,E.extractAggregatesFromExpr=_r,E.extractFilterColumnNames=na,E.findIndexOnColumn=jn,E.fn=yc,E.fnv1a_32=Fs,E.formatDisassembly=Aa,E.getCmpOpcode=Jn,E.getFilterReferencedTables=wn,E.getMinKeyValueForType=Xs,E.getSingleTableBaseCost=me,E.getTopLevelConjunctionFilters=Sn,E.getWebDbCoreWasmBytes=$o,E.get_bit=no,E.inferExprType=ca,E.inferTransitivePredicates=sa,E.isAggregateFunction=de,E.isBuiltinFunction=dc,E.isBuiltinScalarFunction=zo,E.isIndexAlignedWithOrderBy=gr,E.isQueryBuilder=x,E.liveQuery=Ks,E.materializeOutputSelectExprs=Kn,E.memcmp=Nl,E.memcpy=un,E.memset=xt,E.normalizeFilter=Re,E.normalizeSelectItem=Js,E.notifyLiveQueryTableRead=js,E.optimizeQueryPlan=Bc,E.optimizeWherePredicates=lr,E.page_binary_search_index_leaf=Vn,E.page_binary_search_interior=jl,E.page_compact=Hn,E.page_compare_index_keys=Bs,E.page_delete_index_leaf_cell=go,E.page_delete_row=uo,E.page_deserialize_row=Je,E.page_get_cell_content_offset=Ze,E.page_get_cell_count=ft,E.page_get_cell_offset=at,E.page_get_checksum=Xl,E.page_get_contiguous_free_space=Os,E.page_get_free_bytes=Ne,E.page_get_next_page_id=Ut,E.page_get_right_child_page_id=Ns,E.page_get_row_length=Ps,E.page_get_table_layout=Zl,E.page_get_total_free_space=co,E.page_get_type=Xe,E.page_init=Wn,E.page_init_free=lo,E.page_init_index_leaf=Ls,E.page_init_interior=fo,E.page_insert_index_leaf_cell=Gi,E.page_insert_interior_cell=ho,E.page_insert_row=gn,E.page_serialize_row=bs,E.page_set_cell_content_offset=je,E.page_set_cell_count=Ye,E.page_set_cell_offset=hn,E.page_set_checksum=Yl,E.page_set_free_bytes=Ke,E.page_set_next_page_id=Us,E.page_set_right_child_page_id=Ao,E.page_set_type=xl,E.page_split_interior=Kl,E.page_table_delete=qi,E.page_table_get=mo,E.page_table_hash=$n,E.page_table_set=Eo,E.page_update_row=ki,E.parseExpression=At,E.parseFilterTarget=wt,E.parseSelectExpr=qs,E.read_f64=Fl,E.read_i32=Bl,E.read_i64=kl,E.read_u16=ps,E.read_u32=yt,E.read_u64=Ql,E.read_u8=eo,E.reconstructJoinPlans=Vs,E.recoverFromWal=sr,E.resetVmContext=qr,E.resolveColumnAcrossTables=gt,E.resolveQueryPlanner=ur,E.serialize_composite_key=Rs,E.serialize_single_key=_o,E.set_bit=so,E.sql=Ic,E.sql_like_match=ze,E.strlen=Is,E.validateClause=rn,E.validateWalFrame=Fi,E.vm_step=Xn,E.write_f64=Dl,E.write_i32=Rl,E.write_i64=Ml,E.write_u16=ys,E.write_u32=Tt,E.write_u64=vl,E.write_u8=Ll,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(f,de){typeof exports=="object"&&typeof module<"u"?de(exports):typeof define=="function"&&define.amd?define(["exports"],de):(f=typeof globalThis<"u"?globalThis:f||self,de(f.WebDB={}))})(this,function(f){"use strict";var dg=Object.defineProperty;var _g=(f,de,Qn)=>de in f?dg(f,de,{enumerable:!0,configurable:!0,writable:!0,value:Qn}):f[de]=Qn;var G=(f,de,Qn)=>_g(f,typeof de!="symbol"?de+"":de,Qn);const yc=[["TYPE",1],["FLAGS",1],["CELL_COUNT",2],["CONTENT_OFFSET",2],["NEXT_PAGE_ID",4],["FREE_BYTES",2],["CHECKSUM",4]],Fe=16,zo=0,pc=1,Uc=2,Tc=4,vo=6,Sc=10,LA=12,Nc=[["CHILD_PAGE_ID",4],["ROWID",8]],tr=12,Rc=0,Dc=4,er=291,Ar=145,ke=64,Fc=[["MAGIC",6],["PAGE_SIZE",2],["FILE_FORMAT_VERSION",2],["MIN_READ_VERSION",2],["TOTAL_PAGES",4],["FREE_PAGE_HEAD",4],["SCHEMA_VERSION",4],["CHANGE_COUNTER",4],["PAGE_CHECKSUM",4],["NEXT_CATALOG_PAGE_ID",4],["NEXT_INDEX_CATALOG_PAGE_ID",4],["RESERVED",60]],Lc=100,oA=0,hi=6,fi=8,Ci=10,qe=12,We=16,rA=20,aA=24,cA=28,bA=32,OA=36,bc=40,Oc=16,Pc=8,Le=16,Qi=8,ns=100,ss=2148,Gc=3172,wc=4,kc=3176,qc=920,lA=56,Ke=256,Mc=[["TABLE_ID",2],["COLUMN_COUNT",2],["ROOT_PAGE_ID",4],["COL_CATALOG_PAGE_ID",4],["NAME",64],["FLAGS",4],["ROW_COUNT_ESTIMATE",4],["AUTO_INC_NEXT",8],["RESERVED",36]],uA=128,Hc=0,Yc=2,Vc=4,xc=8,Xc=12,Jc=76,Wc=80,Kc=84,Zc=92,jc=[["INDEX_ID",2],["TABLE_ID",2],["ROOT_PAGE_ID",4],["COLUMN_COUNT",1],["FLAGS",1],["COLUMN_INDICES",16],["COL_DIRECTIONS",8],["NAME",64],["RESERVED",30]],gA=128,$c=0,zc=2,vc=4,tl=8,el=9,Al=10,nl=26,sl=34,il=98,ol=[["PAGE_TYPE",1],["FLAGS",1],["COL_COUNT_IN_PAGE",2],["TABLE_ID",2],["START_COL_INDEX",2],["NEXT_COL_CATALOG_PAGE_ID",4],["PAGE_CHECKSUM",4]],dn=16,rl=0,al=1,cl=2,ll=4,ul=6,gl=8,El=12,Il=[["TYPE",1],["FLAGS",1],["COL_OFFSET",2],["NAME",64],["RESERVED",4]],di=72,Bl=0,hl=1,fl=2,Cl=4,Ql=68,dl=4194304,PA=1024,_l=1024,Ie=2048,EA=8,ml=16384,nr=12288,is=65536,sr=32768,ir=4096,or=61312,IA=16777216,yl=[["SLOT_TO_PAGE",4096],["PAGE_TO_SLOT",16384],["DIRTY_MASK",128],["VM_CONTEXT",12288],["RESULT_BUFFER",65536],["BYTECODE",32768],["PAGE_SCRATCHPAD",4096],["ALIGNMENT_PADDING",61312]],os=4194304,Be=4198400,rr=4214784,_n=4214912,_e=4227200,zt=4292736,_i=4325504,pl=4329600,mn=4390912,mi=21168128;function yi(t,e=IA){const A=t*4096,n=t*4+7&-8;let s=16;for(;s<t*2;)s<<=1;const i=s*8,o=Math.ceil(t/8)+7&-8;if(t===PA)return{slotsEndOffset:A,slotToPageOffset:os,pageToSlotOffset:Be,pageToSlotBuckets:Ie,dirtyMaskOffset:rr,vmContextOffset:_n,resultBufferOffset:_e,bytecodeOffset:zt,pageScratchpadOffset:_i,transientArenaOffset:mn};const r=A,a=r+n,c=a+i,l=c+o,u=l+nr,g=u+is,E=g+sr,h=E+ir+or;return{slotsEndOffset:A,slotToPageOffset:r,pageToSlotOffset:a,pageToSlotBuckets:s,dirtyMaskOffset:c,vmContextOffset:l,resultBufferOffset:u,bytecodeOffset:g,pageScratchpadOffset:E,transientArenaOffset:h}}const BA=4096,JA=4128,ar=1,yn=1463897158,rs=1,as=2,cs=3,Ul=[["MAGIC",6],["WAL_VERSION",2],["PAGE_SIZE",4],["CHECKPOINT_SEQ",4],["SALT1",4],["SALT2",4],["CHECKSUM",4],["RESERVED",4]],ls=32,pi=0,Ui=6,Ti=8,Si=12,Ni=16,Ri=20,Di=24,cr=28,Tl=[["MAGIC",4],["FRAME_TYPE",2],["FLAGS",2],["TX_ID",4],["PAGE_ID",4],["DB_SIZE_PAGES",4],["FRAME_SEQ",4],["CHECKSUM",4],["RESERVED",4]],GA=32,Fi=0,Li=4,bi=6,Oi=8,Pi=12,Gi=16,wi=20,ki=24,lr=28,us=1,ur=1,wA=0,gr=2,qi=5,pn=10,Un=12,gs=13,Sl=1280,Nl=8,Rl=64,Dl=16,Fl=7,Ll=32,Er=1e4,ae=1e4;function Ir(){return{pageId:0,rootPageId:0,slotIdx:0,cellIdx:0,rowOffset:0,btreeDepth:0,flags:0}}function Br(){const t=Array.from({length:16},()=>Ir());return{pc:0,status:L.RUNNING,fault_page_id:0,resultCount:0,resultOffset:0,arenaOffset:0,maxQueryMemory:IA,rowsAffected:0,registers:new Array(64).fill(null),cursor:t[0],cursors:t,keyInfos:[],sorters:[],aggregators:[],table:null,tables:void 0,outputColumns:void 0,inSets:[],_resetId:0}}function hr(t,e,A){if(t.pc=0,t.status=L.RUNNING,t.fault_page_id=0,t.resultCount=0,t.resultOffset=0,t.arenaOffset=0,t.maxQueryMemory=IA,t.rowsAffected=0,!t._fastHostMode){t.registers.fill(null);for(let n=0;n<t.cursors.length;n++){const s=t.cursors[n];s.pageId=0,s.rootPageId=0,s.slotIdx=0,s.cellIdx=0,s.rowOffset=0,s.btreeDepth=0,s.flags=0}t.cursor=t.cursors[0]}t.keyInfos=[],t.sorters=[],t.aggregators=[],t.table=e??null,t.tables=A,t.outputColumns=void 0,t.inSets=[],t._resetId=(t._resetId??0)+1}var _=(t=>(t[t.NULL=0]="NULL",t[t.INT32=1]="INT32",t[t.INT64=2]="INT64",t[t.FLOAT64=3]="FLOAT64",t[t.TEXT=4]="TEXT",t[t.BLOB=5]="BLOB",t[t.UUID=6]="UUID",t[t.ULID=7]="ULID",t))(_||{}),gt=(t=>(t[t.NONE=0]="NONE",t[t.PRIMARY_KEY=1]="PRIMARY_KEY",t[t.NOT_NULL=2]="NOT_NULL",t[t.INDEXED=4]="INDEXED",t[t.AUTO_INC=8]="AUTO_INC",t))(gt||{}),kA=(t=>(t[t.NONE=0]="NONE",t[t.ACTIVE=1]="ACTIVE",t[t.SYSTEM=2]="SYSTEM",t))(kA||{}),ft=(t=>(t[t.NONE=0]="NONE",t[t.UNIQUE=1]="UNIQUE",t[t.PRIMARY=2]="PRIMARY",t[t.SPATIAL_VECTOR=4]="SPATIAL_VECTOR",t))(ft||{}),C=(t=>(t[t.OP_HALT=0]="OP_HALT",t[t.OP_OPEN_CURSOR=1]="OP_OPEN_CURSOR",t[t.OP_REWIND=2]="OP_REWIND",t[t.OP_NEXT_ROW=3]="OP_NEXT_ROW",t[t.OP_COLUMN_INT=4]="OP_COLUMN_INT",t[t.OP_COLUMN_FLOAT=5]="OP_COLUMN_FLOAT",t[t.OP_COLUMN_TEXT=6]="OP_COLUMN_TEXT",t[t.OP_COLUMN_BLOB=7]="OP_COLUMN_BLOB",t[t.OP_LAST=8]="OP_LAST",t[t.OP_PREV_ROW=9]="OP_PREV_ROW",t[t.OP_COLUMN_UUID=10]="OP_COLUMN_UUID",t[t.OP_COLUMN_ULID=11]="OP_COLUMN_ULID",t[t.OP_OPEN_INDEX=12]="OP_OPEN_INDEX",t[t.OP_INDEX_SEEK_EQ=13]="OP_INDEX_SEEK_EQ",t[t.OP_INDEX_SEEK_GE=14]="OP_INDEX_SEEK_GE",t[t.OP_INDEX_NEXT=15]="OP_INDEX_NEXT",t[t.OP_IS_NULL=16]="OP_IS_NULL",t[t.OP_IS_NOT_NULL=17]="OP_IS_NOT_NULL",t[t.OP_EQ=18]="OP_EQ",t[t.OP_NE=19]="OP_NE",t[t.OP_GT=20]="OP_GT",t[t.OP_GE=21]="OP_GE",t[t.OP_LT=22]="OP_LT",t[t.OP_LE=23]="OP_LE",t[t.OP_JUMP=24]="OP_JUMP",t[t.OP_STR_LIKE=25]="OP_STR_LIKE",t[t.OP_STR_NOT_LIKE=26]="OP_STR_NOT_LIKE",t[t.OP_STR_CONTAINS=27]="OP_STR_CONTAINS",t[t.OP_STR_STARTS_WITH=28]="OP_STR_STARTS_WITH",t[t.OP_STR_ENDS_WITH=29]="OP_STR_ENDS_WITH",t[t.OP_LOAD_BLOB=30]="OP_LOAD_BLOB",t[t.OP_IN=31]="OP_IN",t[t.OP_LOAD_INT=32]="OP_LOAD_INT",t[t.OP_LOAD_FLOAT=33]="OP_LOAD_FLOAT",t[t.OP_LOAD_TEXT=34]="OP_LOAD_TEXT",t[t.OP_LOAD_NULL=35]="OP_LOAD_NULL",t[t.OP_EMIT_ROW=36]="OP_EMIT_ROW",t[t.OP_RESULT_ROW=37]="OP_RESULT_ROW",t[t.OP_OFFSET=38]="OP_OFFSET",t[t.OP_LIMIT=39]="OP_LIMIT",t[t.OP_CALL_UDF=40]="OP_CALL_UDF",t[t.OP_STR_LOWER=41]="OP_STR_LOWER",t[t.OP_STR_UPPER=42]="OP_STR_UPPER",t[t.OP_STR_LENGTH=43]="OP_STR_LENGTH",t[t.OP_STR_SUBSTR=44]="OP_STR_SUBSTR",t[t.OP_STR_TRIM=45]="OP_STR_TRIM",t[t.OP_MATH_ABS=46]="OP_MATH_ABS",t[t.OP_MATH_ROUND=47]="OP_MATH_ROUND",t[t.OP_SORTER_OPEN=48]="OP_SORTER_OPEN",t[t.OP_SORTER_INSERT=49]="OP_SORTER_INSERT",t[t.OP_SORTER_SORT=50]="OP_SORTER_SORT",t[t.OP_SORTER_NEXT=51]="OP_SORTER_NEXT",t[t.OP_MATH_FLOOR=52]="OP_MATH_FLOOR",t[t.OP_MATH_CEIL=53]="OP_MATH_CEIL",t[t.OP_ADD=54]="OP_ADD",t[t.OP_SUB=55]="OP_SUB",t[t.OP_MUL=56]="OP_MUL",t[t.OP_DIV=57]="OP_DIV",t[t.OP_MOD=58]="OP_MOD",t[t.OP_ENTER_SUBQUERY=59]="OP_ENTER_SUBQUERY",t[t.OP_RETURN_SUBQUERY=60]="OP_RETURN_SUBQUERY",t[t.OP_STR_CONCAT=61]="OP_STR_CONCAT",t[t.OP_COALESCE=62]="OP_COALESCE",t[t.OP_COPY=63]="OP_COPY",t[t.OP_AGG_INIT=64]="OP_AGG_INIT",t[t.OP_AGG_STEP=65]="OP_AGG_STEP",t[t.OP_AGG_NEXT=66]="OP_AGG_NEXT",t[t.OP_AGG_FINAL=67]="OP_AGG_FINAL",t[t.OP_REG_IS_NULL=72]="OP_REG_IS_NULL",t[t.OP_REG_IS_NOT_NULL=73]="OP_REG_IS_NOT_NULL",t[t.OP_DELETE_ROW=80]="OP_DELETE_ROW",t[t.OP_UPDATE_FIELD=81]="OP_UPDATE_FIELD",t[t.OP_INSERT_ROW=82]="OP_INSERT_ROW",t))(C||{}),L=(t=>(t[t.RUNNING=0]="RUNNING",t[t.DONE=1]="DONE",t[t.PAGE_FAULT=2]="PAGE_FAULT",t[t.BUFFER_FULL=3]="BUFFER_FULL",t[t.ERROR=4]="ERROR",t[t.TIMEOUT=5]="TIMEOUT",t[t.ARENA_EXHAUSTED=6]="ARENA_EXHAUSTED",t[t.INVALID_BYTECODE=7]="INVALID_BYTECODE",t))(L||{});class Mi extends Error{constructor(e,A=2048){super(`Row size (${e} bytes) exceeds maximum limit of ${A} bytes`),this.name="RowSizeLimitExceededError"}}class Es extends Error{constructor(e,A){super(`NOT NULL constraint failed: ${A?A+".":""}${e}`),this.name="NotNullConstraintError"}}class fr extends Error{constructor(e,A=64){super(`Identifier "${e}" (${e.length} characters) exceeds maximum limit of ${A} characters`),this.name="IdentifierTooLongError"}}class Is extends Error{constructor(e,A){super(A?`Column "${e}" already exists on table "${A}"`:`Column "${e}" already exists`),this.name="ColumnAlreadyExistsError"}}class Hi extends Error{constructor(e){super(e),this.name="CannotDropColumnError"}}class Ze extends Error{constructor(e,A){super(A?`Column "${e}" not found on table "${A}"`:`Column "${e}" not found`),this.name="ColumnNotFoundError"}}class Tn extends Error{constructor(e){super(`Table not found: "${e}"`),this.name="TableNotFoundError"}}class Bs extends Error{constructor(e){super(`Table already exists: "${e}"`),this.name="TableAlreadyExistsError"}}class Cr extends Error{constructor(e){super(`Index not found: "${e}"`),this.name="IndexNotFoundError"}}class Yi extends Error{constructor(e){super(`Index already exists: "${e}"`),this.name="IndexAlreadyExistsError"}}class WA extends Error{constructor(e){super(e),this.name="UniqueConstraintViolationError"}}class hA extends Error{constructor(e,A,n){super(`Corrupted page detected (pageId: ${e}): stored checksum ${A}${n!==void 0?`, computed checksum ${n}`:""}`),this.pageId=e,this.storedChecksum=A,this.computedChecksum=n,this.name="CorruptPageError"}}class Sn extends Error{constructor(e,A=256){super(`Too many columns: ${e} exceeds maximum limit of ${A} columns`),this.name="TooManyColumnsError"}}class Vi extends Error{constructor(e,A=16){super(`Too many tables: ${e} exceeds maximum limit of ${A} tables on Page 1`),this.name="TooManyTablesError"}}class Qr extends Error{constructor(e,A=8){super(`Too many indexes: ${e} exceeds maximum limit of ${A} indexes on Page 1`),this.name="TooManyIndexesError"}}class dr extends Error{constructor(e){super(e),this.name="UnsupportedFormatVersionError"}}class Nn extends Error{constructor(e){super(e),this.name="InvalidDatabaseError"}}class xi extends Error{constructor(e="Transient query arena exhausted"){super(e),this.name="QueryArenaExhaustedError"}}class hs extends Error{constructor(e,A=16){super(`Too many cursors: ${e} exceeds maximum limit of ${A} cursors`),this.name="TooManyCursorsError"}}class Bt extends Error{constructor(e,A=64){super(`Too many registers: ${e} exceeds maximum limit of ${A} registers`),this.name="TooManyRegistersError"}}class _r extends Error{constructor(e,A=7){super(`Subquery nesting depth ${e} exceeds maximum limit of ${A}`),this.name="SubqueryNestingTooDeepError"}}class mr extends Error{constructor(e="Query execution exceeded maximum cycle limit (TIMEOUT)"){super(e),this.name="QueryTimeoutError"}}class yr extends Error{constructor(e="Malformed bytecode execution halted (INVALID_BYTECODE)"){super(e),this.name="InvalidBytecodeError"}}class pr extends Error{constructor(e,A=8){super(`Too many order by columns: ${e} exceeds maximum limit of ${A}`),this.name="TooManyOrderByColumnsError"}}class Ur extends Error{constructor(e,A=8){super(`Too many group by columns: ${e} exceeds maximum limit of ${A}`),this.name="TooManyGroupByColumnsError"}}class Xi extends Error{constructor(e){super(`Function "${e}" is neither a native built-in function nor a registered UDF`),this.name="UnknownFunctionError"}}class fs extends Error{constructor(e){super(`Aggregate function "${e}" cannot be used in WHERE clause`),this.name="AggregateNotAllowedInWhereError"}}class Cs extends Error{constructor(e="Corrupted WAL file header detected"){super(e),this.name="CorruptWalHeaderError"}}class Rn extends Error{constructor(e="Corrupted WAL frame detected"){super(e),this.name="CorruptWalFrameError"}}class Tr{constructor(){G(this,"name","memory");G(this,"isSynchronous",!0);G(this,"pages",new Map);G(this,"walHeader",null);G(this,"walFrames",[])}async readPages(e){return e.map(A=>{const n=this.pages.get(A);return n?new Uint8Array(n):null})}async writePages(e){for(const{pageId:A,data:n}of e){const s=new Uint8Array(n.byteLength);s.set(n),this.pages.set(A,s)}}async flush(){}async truncate(e){for(const A of Array.from(this.pages.keys()))A>e&&this.pages.delete(A)}snapshot(){const e=new Map;for(const[A,n]of this.pages.entries())e.set(A,new Uint8Array(n));return e}restoreSnapshot(e){this.pages.clear();for(const[A,n]of e.entries())this.pages.set(A,new Uint8Array(n))}async readWalHeader(){return this.walHeader?new Uint8Array(this.walHeader):null}async writeWalHeader(e){const A=new Uint8Array(e.byteLength);A.set(e),this.walHeader=A}async readWalFrames(e,A){const n=A!==void 0?e+A:this.walFrames.length;return this.walFrames.slice(e,n).map(i=>new Uint8Array(i))}async appendWalFrames(e){for(const A of e){const n=new Uint8Array(A.byteLength);n.set(A),this.walFrames.push(n)}}async flushWal(){}async truncateWal(e){e===0?(this.walFrames=[],this.walHeader=null):this.walFrames.length=Math.min(this.walFrames.length,e)}async getWalFrameCount(){return this.walFrames.length}async close(){}}class Sr{constructor(e){G(this,"name","idb");G(this,"isSynchronous",!1);G(this,"dbName");G(this,"dbPromise",null);this.dbName=`webdb_${e}`}getDb(){return this.dbPromise||(this.dbPromise=new Promise((e,A)=>{const n=globalThis.indexedDB;if(!n){A(new Error("IndexedDB is not available in the current environment"));return}const s=n.open(this.dbName,1);s.onupgradeneeded=()=>{const i=s.result;i.objectStoreNames.contains("pages")||i.createObjectStore("pages"),i.objectStoreNames.contains("wal_frames")||i.createObjectStore("wal_frames"),i.objectStoreNames.contains("wal_meta")||i.createObjectStore("wal_meta")},s.onsuccess=()=>e(s.result),s.onerror=()=>A(s.error)})),this.dbPromise}async readPages(e){if(e.length===0)return[];const A=await this.getDb();return new Promise((n,s)=>{const i=A.transaction("pages","readonly"),o=i.objectStore("pages"),r=new Array(e.length).fill(null);for(let a=0;a<e.length;a++){const c=o.get(e[a]);c.onsuccess=()=>{const l=c.result;l&&(r[a]=l instanceof Uint8Array?l:new Uint8Array(l))}}i.oncomplete=()=>n(r),i.onerror=()=>s(i.error),i.onabort=()=>s(i.error)})}async writePages(e){if(e.length===0)return;const A=await this.getDb();return new Promise((n,s)=>{const i=A.transaction("pages","readwrite"),o=i.objectStore("pages");for(const{pageId:r,data:a}of e){const c=new Uint8Array(a.byteLength);c.set(a),o.put(c,r)}i.oncomplete=()=>n(),i.onerror=()=>s(i.error),i.onabort=()=>s(i.error)})}async flush(){}async truncate(e){const A=await this.getDb();return new Promise((n,s)=>{const o=A.transaction("pages","readwrite").objectStore("pages"),r=IDBKeyRange.lowerBound(e,!0),a=o.delete(r);a.onsuccess=()=>n(),a.onerror=()=>s(a.error)})}async readWalHeader(){const e=await this.getDb();return new Promise((A,n)=>{const o=e.transaction("wal_meta","readonly").objectStore("wal_meta").get("header");o.onsuccess=()=>{const r=o.result;A(r?r instanceof Uint8Array?r:new Uint8Array(r):null)},o.onerror=()=>n(o.error)})}async writeWalHeader(e){const A=await this.getDb();return new Promise((n,s)=>{const i=A.transaction("wal_meta","readwrite"),o=i.objectStore("wal_meta"),r=new Uint8Array(e.byteLength);r.set(e),o.put(r,"header"),i.oncomplete=()=>n(),i.onerror=()=>s(i.error),i.onabort=()=>s(i.error)})}async readWalFrames(e,A){const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction("wal_frames","readonly").objectStore("wal_frames"),a=[],c=A!==void 0?IDBKeyRange.bound(e,e+A-1):IDBKeyRange.lowerBound(e,!1),l=r.openCursor(c);l.onsuccess=()=>{const u=l.result;if(u){const g=u.value;a.push(g instanceof Uint8Array?g:new Uint8Array(g)),u.continue()}else s(a)},l.onerror=()=>i(l.error)})}async appendWalFrames(e){if(e.length===0)return;const A=await this.getDb();return new Promise((n,s)=>{const i=A.transaction("wal_frames","readwrite"),o=i.objectStore("wal_frames"),r=o.count();r.onsuccess=()=>{let a=r.result;for(const c of e){const l=new Uint8Array(c.byteLength);l.set(c),o.put(l,a++)}},i.oncomplete=()=>n(),i.onerror=()=>s(i.error),i.onabort=()=>s(i.error)})}async flushWal(){}async truncateWal(e){const A=await this.getDb();return new Promise((n,s)=>{const i=A.transaction(["wal_frames","wal_meta"],"readwrite"),o=i.objectStore("wal_frames"),r=i.objectStore("wal_meta");if(e===0)o.clear(),r.delete("header");else{const a=IDBKeyRange.lowerBound(e,!1);o.delete(a)}i.oncomplete=()=>n(),i.onerror=()=>s(i.error),i.onabort=()=>s(i.error)})}async getWalFrameCount(){const e=await this.getDb();return new Promise((A,n)=>{const o=e.transaction("wal_frames","readonly").objectStore("wal_frames").count();o.onsuccess=()=>A(o.result),o.onerror=()=>n(o.error)})}async close(){this.dbPromise&&((await this.dbPromise).close(),this.dbPromise=null)}}class Nr{constructor(e){G(this,"name","opfs");G(this,"isSynchronous");G(this,"dbName");G(this,"rootDir",null);G(this,"dbFileHandle",null);G(this,"walFileHandle",null);G(this,"dbSyncHandle",null);G(this,"walSyncHandle",null);this.dbName=e,this.isSynchronous=typeof globalThis.FileSystemSyncAccessHandle<"u"}async initHandles(){var e;if(!this.rootDir){if(!((e=navigator==null?void 0:navigator.storage)!=null&&e.getDirectory))throw new Error("OPFS (Origin Private File System) is not available in the current environment");if(this.rootDir=await navigator.storage.getDirectory(),this.dbFileHandle=await this.rootDir.getFileHandle(`${this.dbName}.db`,{create:!0}),this.walFileHandle=await this.rootDir.getFileHandle(`${this.dbName}.wal`,{create:!0}),this.isSynchronous)try{this.dbSyncHandle=await this.dbFileHandle.createSyncAccessHandle(),this.walSyncHandle=await this.walFileHandle.createSyncAccessHandle()}catch{}}}async readPages(e){if(e.length===0)return[];if(await this.initHandles(),this.dbSyncHandle){const s=this.dbSyncHandle.getSize();return e.map(i=>{const o=(i-1)*4096;if(o+4096>s)return null;const r=new Uint8Array(4096);return this.dbSyncHandle.read(r,{at:o}),r})}const A=await this.dbFileHandle.getFile(),n=[];for(const s of e){const i=(s-1)*4096;if(i+4096>A.size)n.push(null);else{const r=await A.slice(i,i+4096).arrayBuffer();n.push(new Uint8Array(r))}}return n}async writePages(e){if(e.length===0)return;if(await this.initHandles(),this.dbSyncHandle){for(const{pageId:n,data:s}of e){const i=(n-1)*4096;this.dbSyncHandle.write(s,{at:i})}return}const A=await this.dbFileHandle.createWritable({keepExistingData:!0});for(const{pageId:n,data:s}of e){const i=(n-1)*4096;await A.seek(i),await A.write(s)}await A.close()}async flush(){this.dbSyncHandle&&this.dbSyncHandle.flush()}async truncate(e){await this.initHandles();const A=e*4096;if(this.dbSyncHandle){this.dbSyncHandle.truncate(A);return}const n=await this.dbFileHandle.createWritable({keepExistingData:!0});await n.truncate(A),await n.close()}async readWalHeader(){if(await this.initHandles(),this.walSyncHandle){if(this.walSyncHandle.getSize()<32)return null;const s=new Uint8Array(32);return this.walSyncHandle.read(s,{at:0}),s}const e=await this.walFileHandle.getFile();if(e.size<32)return null;const A=e.slice(0,32);return new Uint8Array(await A.arrayBuffer())}async writeWalHeader(e){if(await this.initHandles(),this.walSyncHandle){this.walSyncHandle.write(e,{at:0});return}const A=await this.walFileHandle.createWritable({keepExistingData:!0});await A.seek(0),await A.write(e),await A.close()}async readWalFrames(e,A){await this.initHandles();const n=[];let s=e;const i=A!==void 0?e+A:1/0;if(this.walSyncHandle){const r=this.walSyncHandle.getSize();for(;s<i;){const a=32+s*4128;if(a>=r)break;const c=Math.min(4128,r-a),l=new Uint8Array(c);this.walSyncHandle.read(l,{at:a}),n.push(l),s++}return n}const o=await this.walFileHandle.getFile();for(;s<i;){const r=32+s*4128;if(r>=o.size)break;const a=Math.min(4128,o.size-r),c=o.slice(r,r+a);n.push(new Uint8Array(await c.arrayBuffer())),s++}return n}async appendWalFrames(e){if(await this.initHandles(),this.walSyncHandle){let s=Math.max(32,this.walSyncHandle.getSize());for(const i of e)this.walSyncHandle.write(i,{at:s}),s+=i.byteLength;return}const A=await this.walFileHandle.getFile(),n=await this.walFileHandle.createWritable({keepExistingData:!0});await n.seek(Math.max(32,A.size));for(const s of e)await n.write(s);await n.close()}async flushWal(){this.walSyncHandle&&this.walSyncHandle.flush()}async truncateWal(e){await this.initHandles();const A=e===0?0:32+e*4128;if(this.walSyncHandle){this.walSyncHandle.truncate(A);return}const n=await this.walFileHandle.createWritable({keepExistingData:e>0});await n.truncate(A),await n.close()}async getWalFrameCount(){await this.initHandles();let e=0;return this.walSyncHandle?e=this.walSyncHandle.getSize():e=(await this.walFileHandle.getFile()).size,e<=32?0:Math.ceil((e-32)/4128)}async close(){this.dbSyncHandle&&(this.dbSyncHandle.close(),this.dbSyncHandle=null),this.walSyncHandle&&(this.walSyncHandle.close(),this.walSyncHandle=null),this.dbFileHandle=null,this.walFileHandle=null,this.rootDir=null}}const KA=new Uint32Array(256);for(let t=0;t<256;t++){let e=t;for(let A=0;A<8;A++)e=e&1?3988292384^e>>>1:e>>>1;KA[t]=e>>>0}function Ji(t,e=0,A=t.byteLength-e){let n=4294967295;const s=e+A;for(let i=e;i<s;i++)n=KA[(n^t[i])&255]^n>>>8;return(n^4294967295)>>>0}function fA(t){let e=4294967295;for(let A=0;A<4096;A++){const n=A>=12&&A<=15?0:t[A];e=KA[(e^n)&255]^e>>>8}return(e^4294967295)>>>0}function Wi(t){let e=4294967295;for(let A=0;A<4096;A++){const n=A>=28&&A<=31?0:t[A];e=KA[(e^n)&255]^e>>>8}return(e^4294967295)>>>0}function Qs(t){let e=4294967295;for(let n=0;n<24;n++)e=KA[(e^t[n])&255]^e>>>8;const A=Math.min(t.byteLength,4128);for(let n=32;n<A;n++)e=KA[(e^t[n])&255]^e>>>8;return(e^4294967295)>>>0}const Rr=new WeakMap;function Dn(t){if(t instanceof Uint8Array)return t;if(t.byteOffset===0&&t.byteLength===t.buffer.byteLength){let e=Rr.get(t.buffer);return e||(e=new Uint8Array(t.buffer),Rr.set(t.buffer,e)),e}return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function kt(t,e,A,n,s){if(s<=0)return;const i=Dn(t),o=Dn(A);if(i===o)i.copyWithin(e,n,n+s);else for(let r=0;r<s;r++)i[e+r]=o[n+r]}function Zt(t,e,A,n){if(n<=0)return;Dn(t).fill(A&255,e,e+n)}function bl(t,e,A,n,s){const i=Dn(t),o=Dn(A);for(let r=0;r<s;r++){const a=i[e+r]-o[n+r];if(a!==0)return a}return 0}function ds(t){return t.length}function y(t,e){return t instanceof Uint8Array?t[e]:t.getUint8(e)}function K(t,e,A){t instanceof Uint8Array?t[e]=A&255:t.setUint8(e,A&255)}function v(t,e){return t.getUint16(e,!0)}function se(t,e,A){t.setUint16(e,A&65535,!0)}function R(t,e){return t.getUint32(e,!0)}function S(t,e,A){t.setUint32(e,A>>>0,!0)}function vt(t,e){return t.getInt32(e,!0)}function q(t,e,A){t.setInt32(e,A|0,!0)}function st(t,e){return t.getFloat64(e,!0)}function ge(t,e,A){t.setFloat64(e,A,!0)}function Ol(t,e){return t.getBigUint64(e,!0)}function Pl(t,e,A){t.setBigUint64(e,A,!0)}function ie(t,e){return t.getBigInt64(e,!0)}function je(t,e,A){t.setBigInt64(e,A,!0)}function _s(t){return Number(t)}function Nt(t){return Number(t)|0}function ms(t){return BigInt(Math.trunc(t))}function ys(t){return Math.trunc(t)|0}function Dr(t,e,A){return A!==void 0?t[e+(A>>3)]&1<<(A&7)?1:0:t[e>>3]&1<<(e&7)?1:0}function Fr(t,e,A){A!==void 0?t[e+(A>>3)]|=1<<(A&7):t[e>>3]|=1<<(e&7)}function Lr(t,e,A){A!==void 0?t[e+(A>>3)]&=~(1<<(A&7)):t[e>>3]&=~(1<<(e&7))}function br(t,e){if(!t)throw new Error(`Assertion failed: ${e}`)}class Ki{constructor(e){G(this,"vfs");G(this,"buffer");G(this,"uint8");G(this,"view");G(this,"in_flight_flushes",new Map);G(this,"in_flight_reads",new Map);G(this,"coordinator",null);if(!e.vfs)throw new Error("Io requires a valid IVfsAdapter instance");if(!e.memory)throw new Error("Io requires a valid memory buffer or WebAssembly.Memory");this.vfs=e.vfs,this.buffer=e.memory instanceof WebAssembly.Memory?e.memory.buffer:e.memory,this.uint8=new Uint8Array(this.buffer),this.view=new DataView(this.buffer)}setTransactionCoordinator(e){this.coordinator=e}isInTransaction(){return this.coordinator?this.coordinator.isInTransaction():!1}stampSlotChecksum(e,A){const n=e*4096,s=this.uint8.subarray(n,n+4096);if(A===1){const i=Wi(s);S(this.view,n+cA,i)}else{const i=fA(s);S(this.view,n+LA,i)}}async readSlot(e,A){if(A<=0)throw new Error(`Invalid page ID: ${A}. Page IDs must be positive integers.`);if(this.coordinator&&this.coordinator.hasSpilledPage(A)){const o=e*4096,r=this.coordinator.getSpilledPage(A);this.uint8.set(r,o);return}const n=this.in_flight_flushes.get(A);n&&await n;const s=this.in_flight_reads.get(A);if(s){await s;return}const i=(async()=>{const[o]=await this.vfs.readPages([A]),r=e*4096;if(o){if(o.byteLength!==4096)throw new hA(A,`Unexpected page byte length: ${o.byteLength}, expected 4096`);const a=A===1?cA:LA,c=R(new DataView(o.buffer,o.byteOffset),a);if(c!==0){const l=A===1?Wi(o):fA(o);if(l!==c)throw new hA(A,c,l)}this.uint8.set(o,r)}else this.uint8.fill(0,r,r+4096)})();this.in_flight_reads.set(A,i);try{await i}finally{this.in_flight_reads.delete(A)}}async writeSlot(e,A){if(A<=0)throw new Error(`Invalid page ID: ${A}. Page IDs must be positive integers.`);const n=this.in_flight_flushes.get(A);if(n){await n;return}const s=e*4096,i=this.uint8.subarray(s,s+4096);this.stampSlotChecksum(e,A);const o=i.slice();this.coordinator&&this.coordinator.onDirectPageWrite(A,o);const r=this.vfs.writePages([{pageId:A,data:o}]);this.in_flight_flushes.set(A,r);try{await r}finally{this.in_flight_flushes.delete(A)}}async spillOrWriteSlot(e,A){this.coordinator&&this.coordinator.isInTransaction()?await this.coordinator.spillUncommittedSlot(e,A):await this.writeSlot(e,A)}async resolvePageFault(e,A,n){if(n>0&&(this.coordinator&&this.coordinator.isInTransaction()?await this.coordinator.spillUncommittedSlot(e,n):await this.writeSlot(e,n)),this.coordinator&&this.coordinator.hasSpilledPage(A)){const s=e*4096,i=this.coordinator.getSpilledPage(A);this.uint8.set(i,s)}else await this.readSlot(e,A)}async flush(){var e,A;await((A=(e=this.vfs).flush)==null?void 0:A.call(e))}}const Zi=new Uint8Array([87,69,66,87,65,76]);function ps(t={}){const e=new Uint8Array(ls),A=new DataView(e.buffer,e.byteOffset,e.byteLength);e.set(Zi,pi),se(A,Ui,t.walVersion??ar),S(A,Ti,t.pageSize??BA),S(A,Si,t.checkpointSeq??0);const n=t.salt1??Math.floor(Math.random()*4294967295)>>>0;S(A,Ni,n);const s=t.salt2??Math.floor(Math.random()*4294967295)>>>0;S(A,Ri,s);const i=t.checksum??Ji(e,0,24);return S(A,Di,i),S(A,cr,0),e}function Us(t,e=!0){if(t.byteLength<ls)throw new Cs(`Truncated WAL file header: expected at least ${ls} bytes, received ${t.byteLength}`);for(let c=0;c<6;c++)if(t[pi+c]!==Zi[c])throw new Cs('Invalid WAL file header magic identifier (expected "WEBWAL")');const A=new DataView(t.buffer,t.byteOffset,t.byteLength),n=v(A,Ui),s=R(A,Ti),i=R(A,Si),o=R(A,Ni),r=R(A,Ri),a=R(A,Di);if(e){const c=Ji(t,0,24);if(a!==c)throw new Cs(`WAL file header CRC32 checksum mismatch: stored ${a}, computed ${c}`)}return{walVersion:n,pageSize:s,checkpointSeq:i,salt1:o,salt2:r,checksum:a}}function Ts(t,e){const A=new Uint8Array(JA),n=new DataView(A.buffer,A.byteOffset,A.byteLength);S(n,Fi,t.magic??yn),se(n,Li,t.frameType),se(n,bi,t.flags??0),S(n,Oi,t.txId),S(n,Pi,t.pageId),S(n,Gi,t.dbSizePages??0),S(n,wi,t.frameSeq),S(n,lr,0),e&&A.set(e.subarray(0,BA),GA);const s=t.checksum??Qs(A);return S(n,ki,s),A}function ji(t){if(t.byteLength<GA)throw new Rn(`Truncated WAL frame header: expected at least ${GA} bytes, received ${t.byteLength}`);const e=new DataView(t.buffer,t.byteOffset,t.byteLength);return{magic:R(e,Fi),frameType:v(e,Li),flags:v(e,bi),txId:R(e,Oi),pageId:R(e,Pi),dbSizePages:R(e,Gi),frameSeq:R(e,wi),checksum:R(e,ki)}}function $i(t){if(t.byteLength<JA)return{valid:!1,reason:"truncated"};const e=ji(t);if(e.magic!==yn)return{valid:!1,reason:"magic_mismatch",header:e};const A=Qs(t);return e.checksum!==A?{valid:!1,reason:"checksum_mismatch",header:e}:{valid:!0,header:e}}function Gl(t,e=!0){if(t.byteLength<JA)throw new Rn(`Truncated WAL frame: expected ${JA} bytes, received ${t.byteLength}`);const A=ji(t);if(A.magic!==yn)throw new Rn(`Invalid WAL frame magic: expected 0x${yn.toString(16)}, got 0x${A.magic.toString(16)}`);if(e){const s=Qs(t);if(A.checksum!==s)throw new Rn(`WAL frame CRC32 checksum mismatch: stored ${A.checksum}, computed ${s}`)}const n=t.subarray(GA,JA);return{header:A,pageData:n}}const Or=new TextDecoder,Pr="0123456789abcdef",zi="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function Gr(t){return t>=48&&t<=57?t-48:t>=97&&t<=102?t-97+10:t>=65&&t<=70?t-65+10:-1}function ZA(t){if(t>=48&&t<=57)return t-48;switch(t>=97&&t<=122&&(t=t-32),t){case 65:return 10;case 66:return 11;case 67:return 12;case 68:return 13;case 69:return 14;case 70:return 15;case 71:return 16;case 72:return 17;case 74:return 18;case 75:return 19;case 77:return 20;case 78:return 21;case 80:return 22;case 81:return 23;case 82:return 24;case 83:return 25;case 84:return 26;case 86:return 27;case 87:return 28;case 88:return 29;case 89:return 30;case 90:return 31;case 73:case 76:return 1;case 79:return 0;default:return-1}}function wl(t,e,A){let n=0,s=-1;for(let i=0;i<ds(t);i++){const o=t.charCodeAt(i);if(o!==45){if(n>=32)return-1;const r=Gr(o);if(r<0)return-1;n%2===0?s=r:e[A+(n>>1)]=s<<4|r,n++}}return n!==32?-1:0}function kl(t,e,A){let n=0;for(let s=0;s<16;s++){(s===4||s===6||s===8||s===10)&&(A[n++]=45);const i=t[e+s];A[n++]=Pr.charCodeAt(i>>4&15),A[n++]=Pr.charCodeAt(i&15)}A[n]=0}class CA{static encode(e,A,n=0){if(wl(e,A,n)!==0)throw new Error(`Invalid UUID format: "${e}" (must be 36 characters with hyphens)`)}static decode(e,A=0){const n=new Uint8Array(37);return kl(e,A,n),Or.decode(n.subarray(0,36))}}function ql(t,e,A){if(ds(t)!==26)return-1;let n=0n;for(let o=0;o<10;o++){const r=ZA(t.charCodeAt(o));if(r<0)return-1;n=n<<5n|BigInt(r)}e[A+0]=Number(n>>40n&0xffn),e[A+1]=Number(n>>32n&0xffn),e[A+2]=Number(n>>24n&0xffn),e[A+3]=Number(n>>16n&0xffn),e[A+4]=Number(n>>8n&0xffn),e[A+5]=Number(n&0xffn);let s=0n;for(let o=10;o<18;o++){const r=ZA(t.charCodeAt(o));if(r<0)return-1;s=s<<5n|BigInt(r)}let i=0n;for(let o=18;o<26;o++){const r=ZA(t.charCodeAt(o));if(r<0)return-1;i=i<<5n|BigInt(r)}for(let o=0;o<5;o++)e[A+6+o]=Number(s>>BigInt((4-o)*8)&0xffn),e[A+11+o]=Number(i>>BigInt((4-o)*8)&0xffn);return 0}function Ml(t,e,A){let n=0n;for(let o=0;o<6;o++)n=n<<8n|BigInt(t[e+o]);for(let o=9;o>=0;o--)A[o]=zi.charCodeAt(Number(n%32n)),n/=32n;let s=0n;for(let o=0;o<5;o++)s=s<<8n|BigInt(t[e+6+o]);let i=0n;for(let o=0;o<5;o++)i=i<<8n|BigInt(t[e+11+o]);for(let o=25;o>=18;o--)A[o]=zi.charCodeAt(Number(i&31n)),i>>=5n;for(let o=17;o>=10;o--)A[o]=zi.charCodeAt(Number(s&31n)),s>>=5n;A[26]=0}class QA{static encode(e,A,n=0){if(ql(e,A,n)!==0)throw new Error(`Invalid ULID length: "${e}" (must be 26 Crockford Base32 characters)`)}static decode(e,A=0){const n=new Uint8Array(27);return Ml(e,A,n),Or.decode(n.subarray(0,26))}}const dA=new TextEncoder,Hl=new TextDecoder,Yl=new Uint8Array(4096),Vl=new DataView(Yl.buffer),me=new Uint8Array(8192),Me=new DataView(me.buffer),Ct=new Uint8Array(4096),jA=new DataView(Ct.buffer);function Fn(t,e,A=gs,n=0){t.setUint8(e+0,A),t.setUint8(e+1,0),t.setUint16(e+2,0,!0),t.setUint16(e+4,4096,!0),t.setUint32(e+6,n,!0),t.setUint16(e+10,0,!0),t.setUint32(e+LA,0,!0)}function wr(t,e,A=0){t.setUint8(e+0,wA),t.setUint8(e+1,0),t.setUint16(e+2,0,!0),t.setUint16(e+4,0,!0),t.setUint32(e+6,A,!0),t.setUint16(e+10,0,!0),t.setUint32(e+LA,0,!0)}function _A(t,e){return t.getUint8(e+0)}function xl(t,e,A){t.setUint8(e+0,A)}function _t(t,e){return t.getUint16(e+2,!0)}function mA(t,e,A){t.setUint16(e+2,A,!0)}function yA(t,e){return t.getUint16(e+4,!0)}function He(t,e,A){t.setUint16(e+4,A,!0)}function jt(t,e){return t.getUint32(e+6,!0)}function Ss(t,e,A){t.setUint32(e+6,A,!0)}function $e(t,e){return t.getUint16(e+10,!0)}function ze(t,e,A){t.setUint16(e+10,A,!0)}function Xl(t,e){return t.getUint32(e+LA,!0)}function Jl(t,e,A){t.setUint32(e+LA,A,!0)}function Et(t,e,A){const n=e+Fe+A*2;return t.getUint16(n,!0)}function Ye(t,e,A,n){const s=e+Fe+A*2;t.setUint16(s,n,!0)}function Ln(t,e){const A=_t(t,e),n=yA(t,e),s=Fe+A*2;return n-s}function kr(t,e){return Ln(t,e)+$e(t,e)}function qr(t,e,A){const n=_t(t,e);if(n===0){He(t,e,4096),ze(t,e,0);return}const s=A===0||A===e?_i:A;kt(t,s,t,e,Fe);let i=4096;const o=_A(t,e);for(let r=0;r<n;r++){const a=Et(t,e,r);let c=0;o===pn?c=2+v(t,e+a)+8:c=On(t,e+a),i=i-c,kt(t,s+i,t,e+a,c),Ye(t,s,r,i)}He(t,s,i),ze(t,s,0),kt(t,e,t,s,4096)}function bn(t,e,A=0,n){if(!n&&A>0&&A!==e&&A+4096<=t.byteLength){qr(t,e,A);return}const s=_t(t,e);if(s===0){He(t,e,4096),ze(t,e,0);return}let i=t,o=A;(A===0||A===e||A+4096>t.byteLength)&&(i=Vl,o=0),kt(i,o,t,e,Fe);let r=4096;const a=_A(t,e);for(let c=0;c<s;c++){let l=0,u=t,g=0;if(n&&c===n.cell_idx)l=n.row_bytes.byteLength,u=n.row_bytes,g=0;else{const E=Et(t,e,c);a===pn?l=2+t.getUint16(e+E,!0)+8:l=On(t,e+E),u=t,g=e+E}r=r-l,kt(i,o+r,u,g,l),Ye(i,o,c,r)}He(i,o,r),ze(i,o,0),kt(t,e,i,o,4096)}function On(t,e){return t.getUint16(e+1,!0)}function Pn(t,e,A,n){const s=_t(t,e),i=yA(t,e),o=A.byteLength+2,r=Fe+s*2,a=i-r,c=a+$e(t,e);if(o>c)return-1;o>a&&bn(t,e,n);const l=yA(t,e),u=_t(t,e),g=l-A.byteLength;return kt(t,e+g,A,0,A.byteLength),Ye(t,e,u,g),mA(t,e,u+1),He(t,e,g),u}function Mr(t,e,A){const n=_t(t,e);if(A>=n)return;const s=Et(t,e,A),i=On(t,e+s),o=e+Fe,r=o+(A+1)*2,a=o+A*2,c=(n-1-A)*2;c>0&&kt(t,a,t,r,c),mA(t,e,n-1),ze(t,e,$e(t,e)+i)}function vi(t,e,A,n,s){const i=_t(t,e);if(A<0||A>=i)throw new Error(`Invalid cell index ${A} for update`);const o=Et(t,e,A),r=On(t,e+o),a=n.byteLength,c=new Uint8Array(t.buffer);if(a<=r)return c.set(n,t.byteOffset+e+o),a<r&&ze(t,e,$e(t,e)+(r-a)),!0;const l=kr(t,e),u=a-r;if(l>=u){if(Ln(t,e)<a)return bn(t,e,s,{cell_idx:A,row_bytes:n}),!0;ze(t,e,$e(t,e)+r);const h=yA(t,e)-a;return c.set(n,t.byteOffset+e+h),Ye(t,e,A,h),He(t,e,h),!0}return!1}function Wl(t){const e=Array.isArray(t)?t:t.columns,A=Math.ceil(e.length/8);let n=0,s=0;for(let i=0;i<e.length;i++){const o=e[i];o.type===_.INT32?n+=4:o.type===_.INT64||o.type===_.FLOAT64?n+=8:o.type===_.UUID||o.type===_.ULID?n+=16:(o.type===_.TEXT||o.type===_.BLOB)&&s++}return{null_bitmap_bytes:A,fixed_slice_size:n,var_col_count:s}}function to(t,e){const A=Array.isArray(t)?t:t.columns,n=A.length;if(n>Ke)throw new Sn(n,Ke);const s=n+7>>3;for(let E=0;E<s;E++)me[3+E]=0;let i=0,o=0;for(let E=0;E<n;E++){const h=A[E],B=e[h.name],Q=B==null,d=h.type;if(Q){if(h.flags>.NOT_NULL)throw new Es(h.name);me[3+(E>>3)]|=1<<(E&7),(d===_.TEXT||d===_.BLOB)&&o++}else switch(d){case _.INT32:i+=4;break;case _.INT64:case _.FLOAT64:i+=8;break;case _.UUID:case _.ULID:i+=16;break;case _.TEXT:case _.BLOB:o++;break}}const r=o<<2,a=3+s+i+r;if(a>2048)throw new Mi(a,2048);let c=3+s,l=c+i,u=a;for(let E=0;E<n;E++){const h=A[E],B=h.type;if((me[3+(E>>3)]&1<<(E&7))!==0){(B===_.TEXT||B===_.BLOB)&&(Me.setUint16(l,0,!0),Me.setUint16(l+2,0,!0),l+=4);continue}const d=e[h.name];switch(B){case _.INT32:Me.setInt32(c,Number(d),!0),c+=4;break;case _.INT64:Me.setBigInt64(c,BigInt(d),!0),c+=8;break;case _.FLOAT64:Me.setFloat64(c,Number(d),!0),c+=8;break;case _.UUID:CA.encode(String(d),me,c),c+=16;break;case _.ULID:QA.encode(String(d),me,c),c+=16;break;case _.TEXT:{const p=String(d??"");let U=0;if(p.length>0)if(u+p.length*3<=me.byteLength)U=dA.encodeInto(p,me.subarray(u)).written;else{const N=dA.encode(p);U=N.byteLength,u+U<=2048&&me.set(N,u)}u<=2048&&(Me.setUint16(l,u,!0),Me.setUint16(l+2,U,!0)),u+=U,l+=4;break}case _.BLOB:{const p=d instanceof Uint8Array?d:new Uint8Array(d),U=p.byteLength;u+U<=2048&&(Me.setUint16(l,u,!0),Me.setUint16(l+2,U,!0),me.set(p,u)),u+=U,l+=4;break}}}const g=u;if(g>2048)throw new Mi(g,2048);return me[0]=1,Me.setUint16(1,g,!0),me.slice(0,g)}function qA(t,e,A){let n,s,i;if(t instanceof DataView){s=t,i=e;const B=A;n=Array.isArray(B)?B:B.columns}else n=Array.isArray(t)?t:t.columns,s=e,i=A;const o={},r=n.length,a=r+7>>3,c=i+3,l=c+a;let u=l,g=r>0?s.getUint8(c):0;for(let B=0;B<r;B++)if(!(B&7)&&B>0&&(g=s.getUint8(c+(B>>3))),!(g&1<<(B&7))){const Q=n[B].type;Q===_.INT32?u+=4:Q===_.INT64||Q===_.FLOAT64?u+=8:(Q===_.UUID||Q===_.ULID)&&(u+=16)}const E=u;u=l;let h=0;g=r>0?s.getUint8(c):0;for(let B=0;B<r;B++){!(B&7)&&B>0&&(g=s.getUint8(c+(B>>3)));const Q=n[B],d=Q.type;if((g&1<<(B&7))!==0){o[Q.name]=null,(d===_.TEXT||d===_.BLOB)&&h++;continue}switch(d){case _.INT32:o[Q.name]=s.getInt32(u,!0),u+=4;break;case _.INT64:o[Q.name]=s.getBigInt64(u,!0),u+=8;break;case _.FLOAT64:o[Q.name]=s.getFloat64(u,!0),u+=8;break;case _.UUID:{const U=new Uint8Array(s.buffer,s.byteOffset+u,16);o[Q.name]=CA.decode(U,0),u+=16;break}case _.ULID:{const U=new Uint8Array(s.buffer,s.byteOffset+u,16);o[Q.name]=QA.decode(U,0),u+=16;break}case _.TEXT:{const U=E+(h<<2),N=s.getUint16(U,!0),m=s.getUint16(U+2,!0);if(m===0)o[Q.name]="";else{const T=s.byteOffset+i+N,F=new Uint8Array(s.buffer,T,m);o[Q.name]=Hl.decode(F)}h++;break}case _.BLOB:{const U=E+(h<<2),N=s.getUint16(U,!0),m=s.getUint16(U+2,!0),T=s.byteOffset+i+N,F=new Uint8Array(m);m>0&&F.set(new Uint8Array(s.buffer,T,m)),o[Q.name]=F,h++;break}}}return o}function Hr(t,e,A=0){Fn(t,e,qi,A)}function Ns(t,e){return t.getUint32(e+6,!0)}function Yr(t,e,A){t.setUint32(e+6,A,!0)}function Vr(t,e,A,n){const s=_t(t,e);if(s>=er)return-1;const o=yA(t,e)-tr,r=e+o;return t.setUint32(r,A,!0),t.setBigInt64(r+4,n,!0),Ye(t,e,s,o),mA(t,e,s+1),He(t,e,o),s+1}function Kl(t,e,A){const n=_t(t,e);if(n===0)return Ns(t,e);let s=0,i=n-1,o=-1;for(;s<=i;){const r=s+i>>1,a=Et(t,e,r),c=t.getBigInt64(e+a+4,!0);A<=c?(o=t.getUint32(e+a,!0),i=r-1):s=r+1}return o!==-1?o:Ns(t,e)}function Zl(t,e,A){const n=_t(t,e),s=Ar;if(n<=s)throw new Error(`Cannot split interior page with only ${n} cells`);const i=Et(t,e,s),o=t.getUint32(e+i,!0),r=t.getBigInt64(e+i+4,!0),a=Ns(t,e);Hr(t,A,a);for(let c=s+1;c<n;c++){const l=Et(t,e,c),u=t.getUint32(e+l,!0),g=t.getBigInt64(e+l+4,!0);Vr(t,A,u,g)}return Yr(t,e,o),mA(t,e,s),{median_rowid:r,promoted_child_page_id:o,right_child_page_id:a}}function Rs(t,e,A=0){Fn(t,e,pn,A)}function jl(t,e,A,n,s,i){if(t!==n)return t-n;if(t===_.NULL)return A<i?-1:A>i?1:0;let o=0;if(t===_.INT32||t===_.INT64||t===_.FLOAT64){const r=typeof e=="bigint"?Number(e):e,a=typeof s=="bigint"?Number(s):s;o=r<a?-1:r>a?1:0}else if(t===_.TEXT||t===_.UUID||t===_.ULID){const r=String(e),a=String(s);o=r<a?-1:r>a?1:0}else if(t===_.BLOB){const r=e,a=s,c=Math.min(r.length,a.length);for(let l=0;l<c;l++)if(r[l]!==a[l]){o=r[l]<a[l]?-1:1;break}o===0&&(o=r.length-a.length)}return o!==0?o:A<i?-1:A>i?1:0}function Ds(t,e,A,n,s,i,o,r,a,c){let l=_.TEXT,u=0;if(A===0)l=_.NULL;else if(s===_.TEXT)if(A===4){const E=y(t,e+2),h=y(t,e+3);E===0&&h===0||E===255&&h===255?(l=_.INT32,u=vt(t,e)):l=_.TEXT}else A===2&&y(t,e)<32&&y(t,e+1)<32?l=_.BLOB:l=_.TEXT;else A===2?l=_.BLOB:A===4?(l=_.INT32,u=vt(t,e)):s===_.UUID&&A===16?l=_.UUID:s===_.ULID&&A===16?l=_.ULID:s===_.FLOAT64&&A===8?(l=_.FLOAT64,u=st(t,e)):s===_.INT64&&A===8?(l=_.INT64,u=_s(ie(t,e))):s===_.BLOB?A===5||A===6?l=_.TEXT:l=_.BLOB:l=_.TEXT;if(i!==l)return i-l;if(i===_.NULL)return c<n?-1:c>n?1:0;let g=0;if(i===_.INT32||i===_.INT64||i===_.FLOAT64)g=o<u?-1:o>u?1:0;else{const E=a<A?a:A;for(let h=0;h<E;h++){const B=y(t,r+h),Q=y(t,e+h);if(B!==Q){g=B<Q?-1:1;break}}g===0&&(g=a-A)}return g!==0?g:c<n?-1:c>n?1:0}function Fs(t,e,A,n,s,i,o,r,a){const c=2+o+8,l=c+2,u=_t(t,e),g=Ln(t,e),E=g+$e(t,e);if(l>E)return-1;l>g&&qr(t,e,a);const B=yA(t,e)-c,Q=e+B;se(t,Q,o),o>0&&(A===_.INT32?q(t,Q+2,ys(s)):A===_.INT64?je(t,Q+2,n):A===_.FLOAT64?ge(t,Q+2,s):i!==Q+2&&kt(t,Q+2,t,i,o)),je(t,Q+2+o,r);let d=0,p=u-1,U=u;for(;d<=p;){const N=d+p>>1,m=Et(t,e,N),T=v(t,e+m),F=ie(t,e+m+2+T);Ds(t,e+m+2,T,F,A,A,s,Q+2,o,r)<0?(U=N,p=N-1):d=N+1}for(let N=u-1;N>=U;N--){const m=Et(t,e,N);Ye(t,e,N+1,m)}return Ye(t,e,U,B),mA(t,e,u+1),He(t,e,B),U}function $l(t,e,A,n,s,i,o,r){const a=_t(t,e);let c=0,l=a-1;for(;c<=l;){const u=c+l>>1,g=Et(t,e,u),E=v(t,e+g),h=ie(t,e+g+2+E),B=o!==0?r:h,Q=Ds(t,e+g+2,E,h,A,A,n,s,i,B);if(Q===0){if(o===0){let d=u;for(;d>0;){const p=d-1,U=Et(t,e,p),N=v(t,e+U);if(Ds(t,e+U+2,N,0n,A,A,n,s,i,0n)===0)d=p;else break}return d}return u}else Q<0?l=u-1:c=u+1}return-(c+1)}function eo(t,e,A,n,s,i=0){let o=A;if((A===_.NULL||n===null||n===void 0)&&(o=_.NULL),o===_.NULL){if(i>0&&i!==e&&i+4096<=t.byteLength)return Fs(t,e,_.NULL,0n,0,0,0,s,i)}else if(o===_.INT32){const m=Number(n)|0;if(i>0&&i!==e&&i+4096<=t.byteLength)return Fs(t,e,_.INT32,0n,m,0,4,s,i)}else if(o===_.INT64){const m=BigInt(n);if(i>0&&i!==e&&i+4096<=t.byteLength)return Fs(t,e,_.INT64,m,Number(m),0,8,s,i)}else if(o===_.FLOAT64){const m=Number(n);if(i>0&&i!==e&&i+4096<=t.byteLength)return Fs(t,e,_.FLOAT64,0n,m,0,8,s,i)}let r=0,a=0,c=null;if(o===_.NULL)r=0;else if(o===_.INT32)a=Number(n)|0,jA.setInt32(0,a,!0),r=4;else if(o===_.INT64){const m=BigInt(n);a=Number(m),jA.setBigInt64(0,m,!0),r=8}else if(o===_.FLOAT64)a=Number(n),jA.setFloat64(0,a,!0),r=8;else if(o===_.UUID)CA.encode(String(n),Ct,0),r=16;else if(o===_.ULID)QA.encode(String(n),Ct,0),r=16;else if(o===_.TEXT){const m=String(n);m.length*3<=Ct.byteLength?r=dA.encodeInto(m,Ct).written:(c=dA.encode(m),r=c.byteLength)}else c=n instanceof Uint8Array?n:new Uint8Array(n),r=c.byteLength;const l=2+r+8,u=l+2,g=_t(t,e),E=Ln(t,e),h=E+$e(t,e);if(u>h)return-1;u>E&&bn(t,e,i);const Q=yA(t,e)-l,d=e+Q;t.setUint16(d,r,!0),r>0&&(c!==null?kt(t,d+2,c,0,r):kt(t,d+2,Ct,0,r)),t.setBigInt64(d+2+r,s,!0);let p=0,U=g-1,N=g;for(;p<=U;){const m=p+U>>1,T=Et(t,e,m),F=t.getUint16(e+T,!0),D=t.getBigInt64(e+T+2+F,!0);Ds(t,e+T+2,F,D,o,o,a,d+2,r,s)<0?(N=m,U=m-1):p=m+1}for(let m=g-1;m>=N;m--){const T=Et(t,e,m);Ye(t,e,m+1,T)}return Ye(t,e,N,Q),mA(t,e,g+1),He(t,e,Q),N}function Ao(t,e,A){const n=_t(t,e);if(A<0||A>=n)return;const s=Et(t,e,A),o=2+t.getUint16(e+s,!0)+8,r=e+Fe,a=r+(A+1)*2,c=r+A*2,l=(n-1-A)*2;l>0&&kt(t,c,t,a,l),mA(t,e,n-1),ze(t,e,$e(t,e)+o)}function Ls(t,e,A,n,s){let i=A;(A===_.NULL||n===null||n===void 0)&&(i=_.NULL);const o=s!==void 0?1:0,r=s!==void 0?s:0n;if(i===_.NULL||i===_.INT32||i===_.INT64||i===_.FLOAT64){const E=i===_.NULL?0:Number(n),h=$l(t,e,i,E,0,0,o,r);return h>=0?{found:!0,slot_idx:h}:{found:!1,slot_idx:-h-1}}let a=0,c=Ct;if(i===_.UUID)CA.encode(String(n),Ct,0),a=16;else if(i===_.ULID)QA.encode(String(n),Ct,0),a=16;else if(i===_.TEXT){const E=String(n);E.length*3<=Ct.byteLength?a=dA.encodeInto(E,Ct).written:(c=dA.encode(E),a=c.byteLength)}else c=n instanceof Uint8Array?n:new Uint8Array(n),a=c.byteLength;const l=_t(t,e);let u=0,g=l-1;for(;u<=g;){const E=u+g>>1,h=Et(t,e,E),B=t.getUint16(e+h,!0),Q=t.getBigInt64(e+h+2+B,!0),d=e+h+2;let p=_.TEXT;if(B===0)p=_.NULL;else if(i===_.TEXT)if(B===4){const N=t.getUint8(d+2),m=t.getUint8(d+3);(N===0&&m===0||N===255&&m===255)&&(p=_.INT32)}else B===2&&t.getUint8(d)<32&&t.getUint8(d+1)<32&&(p=_.BLOB);else B===2?p=_.BLOB:B===4?p=_.INT32:i===_.UUID&&B===16?p=_.UUID:i===_.ULID&&B===16?p=_.ULID:i===_.BLOB&&(p=B===5||B===6?_.TEXT:_.BLOB);let U=0;if(i!==p)U=i-p;else{const N=a<B?a:B;for(let m=0;m<N;m++){const T=c[m],F=t.getUint8(d+m);if(T!==F){U=T<F?-1:1;break}}U===0&&(U=a-B),U===0&&o!==0&&(U=r<Q?-1:r>Q?1:0)}if(U===0){if(o===0){let N=E;for(;N>0;){const m=N-1,T=Et(t,e,m);if(t.getUint16(e+T,!0)!==a)break;const D=e+T+2;let O=!0;for(let w=0;w<a;w++)if(c[w]!==t.getUint8(D+w)){O=!1;break}if(O)N=m;else break}return{found:!0,slot_idx:N}}return{found:!0,slot_idx:E}}else U<0?g=E-1:u=E+1}return{found:!1,slot_idx:u}}function zl(t,e){if(e==null)return new Uint8Array(0);if(t===_.INT32){const A=new Uint8Array(4);return new DataView(A.buffer).setInt32(0,Number(e),!0),A}if(t===_.INT64){const A=new Uint8Array(8);return new DataView(A.buffer).setBigInt64(0,BigInt(e),!0),A}if(t===_.FLOAT64){const A=new Uint8Array(8);return new DataView(A.buffer).setFloat64(0,Number(e),!0),A}if(t===_.UUID){const A=new Uint8Array(16);return CA.encode(String(e),A,0),A}if(t===_.ULID){const A=new Uint8Array(16);return QA.encode(String(e),A,0),A}return t===_.TEXT?dA.encode(String(e)):e instanceof Uint8Array?e:new Uint8Array(e)}function bs(t,e,A,n){let s=0;for(let i=0;i<A;i++){const o=t[e[i]],r=n[o.name],a=o.type;if(Ct[s]=a,r==null){Ct[s+1]=0,Ct[s+2]=0,s+=3;continue}switch(a){case _.INT32:Ct[s+1]=4,Ct[s+2]=0,jA.setInt32(s+3,Number(r),!0),s+=7;break;case _.INT64:Ct[s+1]=8,Ct[s+2]=0,jA.setBigInt64(s+3,BigInt(r),!0),s+=11;break;case _.FLOAT64:Ct[s+1]=8,Ct[s+2]=0,jA.setFloat64(s+3,Number(r),!0),s+=11;break;case _.UUID:Ct[s+1]=16,Ct[s+2]=0,CA.encode(String(r),Ct,s+3),s+=19;break;case _.ULID:Ct[s+1]=16,Ct[s+2]=0,QA.encode(String(r),Ct,s+3),s+=19;break;case _.TEXT:{const c=String(r);let l=0;c.length>0&&(l=dA.encodeInto(c,Ct.subarray(s+3)).written),Ct[s+1]=l&255,Ct[s+2]=l>>8&255,s+=3+l;break}default:{const c=r instanceof Uint8Array?r:new Uint8Array(r),l=c.byteLength;Ct[s+1]=l&255,Ct[s+2]=l>>8&255,Ct.set(c,s+3),s+=3+l;break}}}return Ct.slice(0,s)}const vl=2654435769;function Gn(t,e){const A=Math.imul(t,vl);return(A^A>>>16)>>>0&e}function xr(t,e,A,n){const s=A-1;let i=Gn(n,s);for(let o=0;o<A;o++){const r=e+i*EA,a=t.getUint32(r,!0);if(a===0)return-1;if(a===n)return t.getUint32(r+4,!0);i=i+1&s}return-1}function Xr(t,e,A,n,s){const i=A-1;let o=Gn(n,i);for(let r=0;r<A;r++){const a=e+o*EA,c=t.getUint32(a,!0);if(c===0||c===n){t.setUint32(a,n,!0),t.setUint32(a+4,s,!0);return}o=o+1&i}throw new Error(`BufferPool page table full: cannot insert page ${n}`)}function no(t,e,A,n){const s=A-1;let i=Gn(n,s),o=!1;for(let c=0;c<A;c++){const l=e+i*EA,u=t.getUint32(l,!0);if(u===0)return!1;if(u===n){o=!0;break}i=i+1&s}if(!o)return!1;let r=i;for(;;){r=r+1&s;const c=e+r*EA,l=t.getUint32(c,!0);if(l===0)break;const u=Gn(l,s);if((i-u&s)<(r-u&s)){const g=t.getUint32(c+4,!0),E=e+i*EA;t.setUint32(E,l,!0),t.setUint32(E+4,g,!0),i=r}}const a=e+i*EA;return t.setUint32(a,0,!0),t.setUint32(a+4,0,!0),!0}function tu(t){return t*4096}function $A(t,e,A){return R(t,e+A*4)}function so(t,e,A,n){S(t,e+A*4,n)}function he(t,e,A,n){return xr(t,e,A,n)}function Jr(t,e,A,n,s,i){br(i>0,"page_id must be > 0");const o=$A(t,e,s);return o>0&&o!==i&&no(t,A,n,o),so(t,e,s,i),Xr(t,A,n,i,s),0}function Wr(t,e,A,n,s){const i=$A(t,e,s);return i>0?(no(t,A,n,i),so(t,e,s,0),1):0}function Kr(t,e,A){Fr(t,e,A)}function Zr(t,e,A){Lr(t,e,A)}function io(t,e,A){return Dr(t,e,A)===1}function oo(t,e){if(t[e]>=4294967295)throw new Error(`Pin count overflow on slot ${e}`);t[e]++}function ro(t,e){e!==0&&t[e]>0&&t[e]--}function zA(t,e){return e===0||t[e]>0}function ao(t,e,A,n,s,i){const o=new DataView(t);for(let a=1;a<s;a++)if(R(o,n+a*4)===0&&!zA(A,a))return{candidate_slot:a,next_clock_hand:i};let r=i;for(let a=0;a<s*2;a++){if(r=(r+1)%s,r===0||zA(A,r))continue;const c=new DataView(t,r*4096,4096);if(_A(c,0)!==Un)if(e[r]===1)e[r]=0;else return{candidate_slot:r,next_clock_hand:r}}throw new Error("Cache deadlock: all slots are pinned")}function co(t,e,A,n,s,i,o,r){const a=new DataView(t);let c=-1,l=o;if(r>1&&r<=i&&$A(a,n,r-1)===0&&!zA(A,r-1))c=r-1;else{const Q=ao(t,e,A,n,i,o);c=Q.candidate_slot,l=Q.next_clock_hand}const u=$A(a,n,c),g=io(new Uint8Array(t),s,c),E=new DataView(t,c*4096,4096),h=u>0&&_A(E,0)===wA,B=g&&!h&&u>0?u:0;return{candidate_slot:c,flush_page_id:B,next_clock_hand:l}}const j=0,V=4,fe=8,vA=12,tn=16,ye=20,wn=24,jr=28,lo=32,eu=40,$r=44,zr=48,vr=52,ta=56,ea=60,Aa=64,Os=68,na=72,sa=32,$=0,ce=1,be=4,pe=8,It=16,pt=24,mt=28,ia=2120,Au=24,Vt=0,kn=4,ve=8,Jt=12,Ht=16,Ps=2504,oa=260,ra=6664,qn=6928,Mn=32,aa=0,uo=1,go=4,Gs=8,ca=12,la=20,Hn=7184,ws=32,ks=0,ua=1,qs=2,Yn=4,Eo=8,Ms=12,ga=16,Vn=20,nu=24,Hs=7312,Ys=32,xn=0,Vs=1,Io=2,Bo=3,en=4,Xn=8,An=12,Jn=16,xs=20,Ea=7440,ho=7680,fo=99;function Wn(t){return t>=65&&t<=90?t+32:t}function su(t){return t>=97&&t<=122?t-32:t}function k(t,e){return t+na+(e<<5)}function qt(t,e){return t+ia+e*Au}function Xs(t,e,A){const n=R(t,e+lo);return A<n?e+Ps+A*oa:e+Ps}function te(t,e,A,n){const s=n+7&4294967288,i=R(t,e+Aa);return i+s>IA?0:(S(t,e+Aa,i+s),A+i)}function Qt(t,e){K(t,e+$,1),K(t,e+ce,_.NULL),q(t,e+be,0),je(t,e+pe,0n),ge(t,e+It,0),S(t,e+pt,0),S(t,e+mt,0)}function Oe(t,e,A){K(t,e+$,0),K(t,e+ce,_.INT32),q(t,e+be,A),je(t,e+pe,ms(A)),ge(t,e+It,A),S(t,e+pt,0),S(t,e+mt,0)}function Ia(t,e,A){const n=_s(A);K(t,e+$,0),K(t,e+ce,_.INT64),q(t,e+be,Nt(A)),je(t,e+pe,A),ge(t,e+It,n),S(t,e+pt,0),S(t,e+mt,0)}function Yt(t,e,A){K(t,e+$,0),K(t,e+ce,_.FLOAT64),q(t,e+be,ys(A)),je(t,e+pe,ms(A)),ge(t,e+It,A),S(t,e+pt,0),S(t,e+mt,0)}function $t(t,e,A,n,s){K(t,e+$,0),K(t,e+ce,A),q(t,e+be,0),je(t,e+pe,0n),ge(t,e+It,0),S(t,e+pt,n),S(t,e+mt,s)}function Js(t,e,A){e!==A&&kt(t,e,t,A,sa)}function Co(t,e,A,n,s){if(kt(t,n,t,s,sa),y(t,s+$)!==0)return 0;const o=y(t,s+ce);if(o===_.TEXT||o===_.BLOB||o===_.UUID||o===_.ULID){const r=R(t,s+pt),a=R(t,s+mt);if(a>0&&r<A){const c=te(t,e,A,a);if(c===0)return-1;kt(t,c,t,r,a),S(t,n+pt,c)}}return 0}function Ba(t){return t<10?48+t:87+t}function Qo(t){return t<10?48+t:t<18?65+(t-10):t===18?74:t===19?75:t===20?77:t===21?78:t<27?80+(t-22):86+(t-27)}function ha(t,e,A){let n=0;for(let s=0;s<16;s++){(s===4||s===6||s===8||s===10)&&(K(t,A+n,45),n++);const i=y(t,e+s);K(t,A+n,Ba(i>>4&15)),n++,K(t,A+n,Ba(i&15)),n++}}function iu(t,e,A,n){let s=0,i=-1;for(let o=0;o<A;o++){const r=y(t,e+o);if(r!==45){if(s>=32)return-1;const a=Gr(r);if(a<0)return-1;s&1?K(t,n+(s>>1),i<<4|a):i=a,s++}}return s===32?0:-1}function fa(t,e,A){let n=0n;for(let o=0;o<6;o++)n=n<<8n|BigInt(y(t,e+o));for(let o=9;o>=0;o--){const r=Nt(n&31n);K(t,A+o,Qo(r)),n=n>>5n}let s=0n;for(let o=0;o<5;o++)s=s<<8n|BigInt(y(t,e+6+o));let i=0n;for(let o=0;o<5;o++)i=i<<8n|BigInt(y(t,e+11+o));for(let o=25;o>=18;o--){const r=Nt(i&31n);K(t,A+o,Qo(r)),i=i>>5n}for(let o=17;o>=10;o--){const r=Nt(s&31n);K(t,A+o,Qo(r)),s=s>>5n}}function ou(t,e,A,n){if(A!==26)return-1;let s=0n;for(let r=0;r<10;r++){const a=ZA(y(t,e+r));if(a<0)return-1;s=s<<5n|BigInt(a)}K(t,n+0,Nt(s>>40n&0xffn)),K(t,n+1,Nt(s>>32n&0xffn)),K(t,n+2,Nt(s>>24n&0xffn)),K(t,n+3,Nt(s>>16n&0xffn)),K(t,n+4,Nt(s>>8n&0xffn)),K(t,n+5,Nt(s&0xffn));let i=0n;for(let r=10;r<18;r++){const a=ZA(y(t,e+r));if(a<0)return-1;i=i<<5n|BigInt(a)}let o=0n;for(let r=18;r<26;r++){const a=ZA(y(t,e+r));if(a<0)return-1;o=o<<5n|BigInt(a)}return K(t,n+6,Nt(i>>32n&0xffn)),K(t,n+7,Nt(i>>24n&0xffn)),K(t,n+8,Nt(i>>16n&0xffn)),K(t,n+9,Nt(i>>8n&0xffn)),K(t,n+10,Nt(i&0xffn)),K(t,n+11,Nt(o>>32n&0xffn)),K(t,n+12,Nt(o>>24n&0xffn)),K(t,n+13,Nt(o>>16n&0xffn)),K(t,n+14,Nt(o>>8n&0xffn)),K(t,n+15,Nt(o&0xffn)),0}function Ue(t,e,A){if(A===0)return 0;if(e!==0){const n=he(t,Be,Ie,A);if(n>=0)return n*4096}return(A-1)*4096}function MA(t,e,A){return y(t,e+(A>>3))&1<<(A&7)?1:0}function Kn(t,e,A,n,s){let i=e+A;for(let o=0;o<s;o++)if(MA(t,e,o)===0){const r=y(t,n+4+o);r===_.INT32?i+=4:r===_.INT64||r===_.FLOAT64?i+=8:(r===_.UUID||r===_.ULID)&&(i+=16)}return i}function Ca(t,e,A){let n=0;for(let s=0;s<A;s++){const i=y(t,e+4+s);(i===_.TEXT||i===_.BLOB)&&n++}return n}function Ws(t,e,A,n,s){const i=A<s?A:s;for(let o=0;o<i;o++){const r=y(t,e+o),a=y(t,n+o);if(r!==a)return r<a?-1:1}return A===s?0:A<s?-1:1}function tA(t,e,A){const n=y(t,e+$),s=y(t,A+$);if(n!==0||s!==0)return-2;const i=y(t,e+ce),o=y(t,A+ce);if(i===_.INT64&&o===_.INT64){const E=ie(t,e+pe),h=ie(t,A+pe);return E<h?-1:E>h?1:0}const r=i===_.INT32||i===_.INT64||i===_.FLOAT64?1:0,a=o===_.INT32||o===_.INT64||o===_.FLOAT64?1:0;if(r!==0&&a!==0){const E=st(t,e+It),h=st(t,A+It);return E<h?-1:E>h?1:0}const c=R(t,e+pt),l=R(t,e+mt),u=R(t,A+pt),g=R(t,A+mt);return Ws(t,c,l,u,g)}function Qa(t,e,A,n,s,i){const o=Et(t,A,n),r=A+o,a=v(t,r);if(a===0)return 1;const c=r+2;if(s===_.INT32){const g=st(t,i+It),E=vt(t,c);return g<E?-1:g>E?1:0}if(s===_.INT64){const g=ie(t,c);if(y(t,i+ce)===_.INT64){const Q=ie(t,i+pe);return Q<g?-1:Q>g?1:0}const h=st(t,i+It),B=_s(g);return h<B?-1:h>B?1:0}if(s===_.FLOAT64){const g=st(t,i+It),E=st(t,c);return g<E?-1:g>E?1:0}const l=R(t,i+pt),u=R(t,i+mt);if(s===_.UUID&&a===16){const g=e+ho;return ha(t,c,g),Ws(t,l,u,g,36)}if(s===_.ULID&&a===16){const g=e+ho;return fa(t,c,g),Ws(t,l,u,g,26)}return Ws(t,l,u,c,a)}function ru(t,e,A,n,s){const i=_t(t,A);let o=0,r=i-1,a=-1;for(;o<=r;){const c=o+r>>1,l=Qa(t,e,A,c,n,s);l<=0?(l===0&&(a=c),r=c-1):o=c+1}return a}function au(t,e,A,n,s){const i=_t(t,A);let o=0,r=i-1,a=-1;for(;o<=r;){const c=o+r>>1;Qa(t,e,A,c,n,s)<=0?(a=c,r=c-1):o=c+1}return a}function da(t,e,A,n,s){let i=0,o=0,r=-1,a=-1;for(;i<A;){const c=o<s?y(t,n+o):0,l=y(t,e+i);if(o<s&&(c===95||Wn(c)===Wn(l)))i++,o++;else if(o<s&&c===37)r=o,o++,a=i;else if(r!==-1)o=r+1,a++,i=a;else return 0}for(;o<s&&y(t,n+o)===37;)o++;return o===s?1:0}function cu(t,e,A,n,s){if(s===0)return 1;if(s>A)return 0;const i=A-s;for(let o=0;o<=i;o++){let r=1;for(let a=0;a<s;a++)if(y(t,e+o+a)!==y(t,n+a)){r=0;break}if(r!==0)return 1}return 0}function lu(t,e,A,n,s){if(s>A)return 0;for(let i=0;i<s;i++)if(y(t,e+i)!==y(t,n+i))return 0;return 1}function uu(t,e,A,n,s){if(s>A)return 0;const i=A-s;for(let o=0;o<s;o++)if(y(t,e+i+o)!==y(t,n+o))return 0;return 1}function gu(t,e,A){let n=0,s=0;for(;s<A;){const i=y(t,e+s);i&128?(i&224)===192?s+=2:(i&240)===224?s+=3:s+=4:s+=1,n++}return n}function Eu(t,e,A,n,s){if(y(t,n+$)!==0){Qt(t,s);return}const i=R(t,n+pt),o=R(t,n+mt);if(o===0){$t(t,s,_.TEXT,0,0);return}const r=te(t,e,A,o);if(r===0){q(t,e+V,L.ARENA_EXHAUSTED);return}for(let a=0;a<o;a++)K(t,r+a,Wn(y(t,i+a)));$t(t,s,_.TEXT,r,o)}function Iu(t,e,A,n,s){if(y(t,n+$)!==0){Qt(t,s);return}const i=R(t,n+pt),o=R(t,n+mt);if(o===0){$t(t,s,_.TEXT,0,0);return}const r=te(t,e,A,o);if(r===0){q(t,e+V,L.ARENA_EXHAUSTED);return}for(let a=0;a<o;a++)K(t,r+a,su(y(t,i+a)));$t(t,s,_.TEXT,r,o)}function Bu(t,e,A){if(y(t,e+$)!==0){Qt(t,A);return}const n=R(t,e+pt),s=R(t,e+mt);let i=0,o=s;for(;i<o;){const r=y(t,n+i);if(r===32||r===9||r===10||r===13)i++;else break}for(;o>i;){const r=y(t,n+o-1);if(r===32||r===9||r===10||r===13)o--;else break}$t(t,A,_.TEXT,n+i,o-i)}function hu(t,e,A,n,s){if(y(t,e+$)!==0||y(t,A+$)!==0){Qt(t,s);return}const i=R(t,e+pt),o=R(t,e+mt),r=vt(t,A+be)-1,a=r<0?0:r,c=y(t,n+$)===0?1:0;let l=2147483647;if(c!==0){const B=vt(t,n+be);l=B<0?0:B}let u=0,g=0,E=o;for(;g<o&&u<a;){const B=y(t,i+g);B&128?(B&224)===192?g+=2:(B&240)===224?g+=3:g+=4:g+=1,u++}E=g;let h=0;for(;g<o&&h<l;){const B=y(t,i+g);B&128?(B&224)===192?g+=2:(B&240)===224?g+=3:g+=4:g+=1,h++}$t(t,s,_.TEXT,i+E,g-E)}function _a(t,e,A){if(A===0n)return K(t,e,48),1;let n=A,s=0;n<0n&&(s=1,n=-n);let i=0;const o=e+32;for(;n>0n;){const a=Nt(n%10n);K(t,o+i,48+a),i++,n=n/10n}let r=0;s!==0&&(K(t,e,45),r++);for(let a=0;a<i;a++)K(t,e+r,y(t,o+i-1-a)),r++;return r}function fu(t,e,A,n,s,i){let o=0,r=0;const a=e+ho;for(let g=0;g<s;g++){const E=k(e,n+g);if(y(t,E+$)===0){r=1;const h=y(t,E+ce);h===_.TEXT||h===_.BLOB||h===_.UUID||h===_.ULID?o+=R(t,E+mt):o+=_a(t,a,ie(t,E+pe))}}const c=k(e,i);if(r===0){Qt(t,c);return}if(o===0){$t(t,c,_.TEXT,0,0);return}const l=te(t,e,A,o);if(l===0){q(t,e+V,L.ARENA_EXHAUSTED);return}let u=0;for(let g=0;g<s;g++){const E=k(e,n+g);if(y(t,E+$)===0){const h=y(t,E+ce);if(h===_.TEXT||h===_.BLOB||h===_.UUID||h===_.ULID){const B=R(t,E+pt),Q=R(t,E+mt);Q>0&&(kt(t,l+u,t,B,Q),u+=Q)}else{const B=_a(t,a,ie(t,E+pe));kt(t,l+u,t,a,B),u+=B}}}$t(t,c,_.TEXT,l,o)}function Cu(t){return t<0?-t:t}function ma(t){const e=Math.trunc(t);return t<e?e-1:e}function Qu(t){const e=Math.trunc(t);return t>e?e+1:e}function du(t){return ma(t+.5)}function _u(t,e,A,n){if(y(t,n+$)!==0)return 0;const s=R(t,e+$r);if(A>=s)return 0;const i=e+Ea+A*8,o=R(t,i),r=R(t,i+4);for(let a=0;a<o;a++){const c=r+(a<<5);if(tA(t,n,c)===0)return 1}return 0}function ya(t,e,A,n,s){const i=R(t,e+tn),o=2+n;if(i+o>is)return q(t,e+V,L.BUFFER_FULL),S(t,e+j,s),L.BUFFER_FULL;const r=_e+i;return se(t,r,n),kt(t,r+2,t,A,n),S(t,e+tn,i+o),S(t,e+vA,R(t,e+vA)+1),L.RUNNING}function pa(t,e,A,n,s){const i=e+ra,o=y(t,i),r=v(t,i+2);if(o!==0&&n===r)return y(t,i+4+s);if(R(t,e+lo)>0){const u=e+Ps,g=v(t,u);if(n===g)return y(t,u+4+s)}const c=k(e,A+s);if(y(t,c+$)!==0)return _.TEXT;const l=y(t,c+ce);if(l===_.FLOAT64){const u=st(t,c+It);return u===Math.trunc(u)&&u>=-2147483648&&u<=2147483647?_.INT32:_.FLOAT64}return l}function mu(t,e,A,n,s){const i=n+7>>3;let o=0,r=0,a=0;for(let U=0;U<n;U++){const N=pa(t,e,A,n,U),m=k(e,A+U),T=y(t,m+$);N===_.TEXT||N===_.BLOB?(r++,T===0&&(a+=R(t,m+mt))):T===0&&(N===_.INT32?o+=4:N===_.INT64||N===_.FLOAT64?o+=8:(N===_.UUID||N===_.ULID)&&(o+=16))}const c=r*4,l=3+i+o+c,u=l+a,g=R(t,e+tn),E=2+u;if(g+E>is)return q(t,e+V,L.BUFFER_FULL),S(t,e+j,s),L.BUFFER_FULL;const h=_e+g;se(t,h,u);const B=h+2;K(t,B+0,1),se(t,B+1,u),Zt(t,B+3,0,i);let Q=B+3+i,d=Q+o,p=l;for(let U=0;U<n;U++){const N=pa(t,e,A,n,U),m=k(e,A+U);if(y(t,m+$)!==0){const F=B+3+(U>>3);K(t,F,y(t,F)|1<<(U&7)),(N===_.TEXT||N===_.BLOB)&&(se(t,d,0),se(t,d+2,0),d+=4)}else if(N===_.TEXT||N===_.BLOB){const F=R(t,m+pt),D=R(t,m+mt);se(t,d,p),se(t,d+2,D),D>0&&(kt(t,B+p,t,F,D),p+=D),d+=4}else if(N===_.INT32)q(t,Q,ys(st(t,m+It))),Q+=4;else if(N===_.INT64){const D=y(t,m+ce)===_.INT64?ie(t,m+pe):ms(st(t,m+It));je(t,Q,D),Q+=8}else if(N===_.FLOAT64)ge(t,Q,st(t,m+It)),Q+=8;else if(N===_.UUID){const F=R(t,m+pt),D=R(t,m+mt);iu(t,F,D,Q),Q+=16}else if(N===_.ULID){const F=R(t,m+pt),D=R(t,m+mt);ou(t,F,D,Q),Q+=16}}return S(t,e+tn,g+E),S(t,e+vA,R(t,e+vA)+1),L.RUNNING}function Ks(t,e,A,n){const s=y(t,n+aa);for(let i=0;i<s;i++){const o=e+(i<<5),r=A+(i<<5),a=y(t,n+ca+i),c=y(t,n+la+i),l=y(t,o+$),u=y(t,r+$);if(l!==0&&u!==0)continue;if(l!==0||u!==0)return c===0?l!==0?-1:1:l!==0?1:-1;const g=tA(t,o,r);if(g!==0)return a===1?-g:g}return 0}function Ua(t,e,A,n,s){let i=A;for(;;){let o=i;const r=2*i+1,a=2*i+2;if(r<n){const c=R(t,e+(r<<2)),l=R(t,e+(o<<2));Ks(t,c+16,l+16,s)>0&&(o=r)}if(a<n){const c=R(t,e+(a<<2)),l=R(t,e+(o<<2));Ks(t,c+16,l+16,s)>0&&(o=a)}if(o!==i){const c=R(t,e+(i<<2));S(t,e+(i<<2),R(t,e+(o<<2))),S(t,e+(o<<2),c),i=o}else break}}function yu(t,e,A,n,s){const i=e+Hn+n*ws,o=e+qn+s*Mn,r=y(t,o+uo),a=R(t,o+go),c=R(t,o+Gs);let l=0;r!==0&&a>0&&(l=c+a);const u=l>0&&l<=Er?l:0,g=u>0?u:256,E=te(t,e,A,g*4);return E===0?(q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED):(K(t,i+ks,1),K(t,i+ua,0),K(t,i+qs,s),S(t,i+Yn,0),S(t,i+Eo,g),S(t,i+Ms,0),S(t,i+ga,u),S(t,i+Vn,E),S(t,i+nu,0),L.RUNNING)}function pu(t,e,A,n,s,i,o){const r=e+Hn+n*ws;if(y(t,r+ks)===0)return q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const a=y(t,r+qs),c=e+qn+a*Mn,l=R(t,r+Yn),u=R(t,r+ga);let g=R(t,r+Vn);const E=k(e,s);if(u>0&&l>=u){const O=R(t,g);if(Ks(t,E,O+16,c)>=0)return L.RUNNING;const P=qt(e,o),I=R(t,P+Ht),b=v(t,I+1),H=R(t,O+4),J=R(t,e+ye),ot=R(t,e+wn);if(b>H){const Ft=b-H;if(J+Ft>ot)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,e+ye,J+Ft)}else{const Ft=H-b;S(t,e+ye,J>=Ft?J-Ft:0)}const rt=16+(i<<5)+b,x=te(t,e,A,rt);if(x===0)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;const X=x+16+(i<<5);S(t,x+0,i),S(t,x+4,b),S(t,x+8,X),S(t,x+12,0);for(let Ft=0;Ft<i;Ft++)Co(t,e,A,x+16+(Ft<<5),k(e,s+Ft));return kt(t,X,t,I,b),S(t,g,x),Ua(t,g,0,u,c),L.RUNNING}const h=qt(e,o),B=R(t,h+Ht),Q=v(t,B+1),d=16+16*i+Q,p=R(t,e+ye),U=R(t,e+wn);if(p+d>U)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,e+ye,p+d);let N=R(t,r+Eo);if(l>=N){const O=N*2,w=te(t,e,A,O*4);if(w===0)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;kt(t,w,t,g,l*4),g=w,N=O,S(t,r+Eo,N),S(t,r+Vn,g)}const m=16+(i<<5)+Q,T=te(t,e,A,m);if(T===0)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;const F=T+16+(i<<5);S(t,T+0,i),S(t,T+4,Q),S(t,T+8,F),S(t,T+12,0);for(let O=0;O<i;O++)Co(t,e,A,T+16+(O<<5),k(e,s+O));kt(t,F,t,B,Q),S(t,g+(l<<2),T);const D=l+1;if(S(t,r+Yn,D),u>0&&D===u)for(let O=(u>>1)-1;O>=0;O--)Ua(t,g,O,u,c);return L.RUNNING}function Uu(t,e,A,n){const s=e+Hn+n*ws;if(y(t,s+ks)===0)return q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const i=R(t,s+Yn),o=y(t,s+qs),r=e+qn+o*Mn,a=R(t,r+Gs);if(i>1){const c=R(t,s+Vn),l=te(t,e,A,i*4);if(l===0)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;for(let u=1;u<i;u=u<<1){for(let g=0;g<i;g+=u<<1){const E=g,h=g+u<i?g+u:i,B=g+(u<<1)<i?g+(u<<1):i;let Q=E,d=h;for(let p=E;p<B;p++)if(Q<h&&d<B){const U=R(t,c+(Q<<2)),N=R(t,c+(d<<2));Ks(t,U+16,N+16,r)<=0?(S(t,l+(p<<2),U),Q++):(S(t,l+(p<<2),N),d++)}else Q<h?(S(t,l+(p<<2),R(t,c+(Q<<2))),Q++):(S(t,l+(p<<2),R(t,c+(d<<2))),d++)}kt(t,c,t,l,i*4)}}return S(t,s+Ms,a),K(t,s+ua,1),L.RUNNING}function Tu(t,e,A,n,s){const i=e+Hn+A*ws;if(y(t,i+ks)===0)return q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const o=R(t,i+Yn),r=R(t,i+Ms),a=y(t,i+qs),c=e+qn+a*Mn,l=y(t,c+uo),u=R(t,c+go),g=R(t,c+Gs);let E=o;if(l!==0){const U=g+u;U<E&&(E=U)}if(r>=E)return L.RUNNING;const h=R(t,i+Vn),B=R(t,h+(r<<2)),Q=R(t,B+4),d=R(t,B+8),p=ya(t,e,d,Q,s);return p!==L.RUNNING?p:(S(t,i+Ms,r+1),S(t,e+j,n),L.RUNNING)}function Su(t,e,A){let n=2166136261;for(let s=0;s<A;s++){const i=e+(s<<5);if(y(t,i+$)!==0)n^=255,n=Math.imul(n,16777619)>>>0;else{const r=y(t,i+ce);if(r===_.INT32||r===_.INT64||r===_.FLOAT64)for(let a=0;a<8;a++)n^=y(t,i+It+a),n=Math.imul(n,16777619)>>>0;else{const a=R(t,i+pt),c=R(t,i+mt);for(let l=0;l<c;l++)n^=y(t,a+l),n=Math.imul(n,16777619)>>>0}}}return n=n>>>0,n===0?1:n}function Nu(t,e,A,n){for(let s=0;s<n;s++){const i=e+(s<<5),o=A+(s<<5),r=y(t,i+$),a=y(t,o+$);if(!(r!==0&&a!==0)&&(r!==0||a!==0||tA(t,i,o)!==0))return 0}return 1}function Ta(t,e,A,n,s,i){const o=te(t,e,A,1320);if(o===0)return 0;Zt(t,o,0,1320),S(t,o+0,n),S(t,o+4,s);for(let r=0;r<s;r++)if(Co(t,e,A,o+40+(r<<5),i+(r<<5))<0)return 0;return o}function Ru(t,e,A,n,s,i,o){const r=e+Hs+n*Ys;if(S(t,e+Os,0),o===0){const l=R(t,e+ye),u=R(t,e+wn);if(l+40960>u)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,e+ye,l+40960);const g=te(t,e,A,1024*4);if(g===0)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;Zt(t,g,0,1024*4);let E=0;if(i===0){const Q=Ta(t,e,A,2166136261,0,0);if(Q===0)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,g+1812,Q),E=1}K(t,r+xn,1),K(t,r+Vs,0),K(t,r+Io,s),K(t,r+Bo,i),S(t,r+en,1024),S(t,r+Xn,E),S(t,r+An,0),S(t,r+Jn,g),S(t,r+xs,0)}else K(t,r+xn,1),K(t,r+Vs,1),K(t,r+Io,s),K(t,r+Bo,i),S(t,r+en,1),S(t,r+Xn,0),S(t,r+An,0),S(t,r+Jn,0),S(t,r+xs,0);return L.RUNNING}function Du(t,e,A,n,s,i,o,r){const a=e+Hs+n*Ys;if(y(t,a+xn)===0)return q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const c=r&7,l=r>>3;if(y(t,a+Vs)===0){let g=R(t,a+en),E=R(t,a+Xn),h=R(t,a+Jn);const B=k(e,s),Q=Su(t,B,i),d=Q%g;let p=0;for(let m=0;m<g;m++){const T=(d+m)%g,F=R(t,h+(T<<2));if(F===0){const D=Ta(t,e,A,Q,i,B);if(D===0)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,h+(T<<2),D),E++,S(t,a+Xn,E),p=D;break}else if(R(t,F+0)===Q&&Nu(t,F+40,B,i)!==0){p=F;break}}if(p===0)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;const U=p+296+(l<<5),N=o!==255&&y(t,k(e,o)+$)===0?1:0;if(c===0)(o===255||N!==0)&&(S(t,U+0,R(t,U+0)+1),S(t,p+8,R(t,p+8)+1));else if(c===1||c===2){if(N!==0){const m=st(t,k(e,o)+It);ge(t,U+8,st(t,U+8)+m),S(t,U+0,R(t,U+0)+1),S(t,U+4,1),ge(t,p+16,st(t,p+16)+m),S(t,p+12,1)}}else if(c===3){if(N!==0){const m=st(t,k(e,o)+It);(R(t,U+4)===0||m<st(t,U+16))&&ge(t,U+16,m),S(t,U+0,R(t,U+0)+1),S(t,U+4,1),(R(t,p+12)===0||m<st(t,p+24))&&ge(t,p+24,m),S(t,p+12,1)}}else if(c===4&&N!==0){const m=st(t,k(e,o)+It);(R(t,U+4)===0||m>st(t,U+24))&&ge(t,U+24,m),S(t,U+0,R(t,U+0)+1),S(t,U+4,1),(R(t,p+12)===0||m>st(t,p+32))&&ge(t,p+32,m),S(t,p+12,1)}if(E*10>g*7){const m=g*2,T=m*40,F=R(t,e+ye),D=R(t,e+wn);if(F+T>D)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,e+ye,F+T);const O=te(t,e,A,m*4);if(O===0)return q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;Zt(t,O,0,m*4);for(let w=0;w<g;w++){const P=R(t,h+(w<<2));if(P!==0){const b=R(t,P+0)%m;for(let H=0;H<m;H++){const J=(b+H)%m;if(R(t,O+(J<<2))===0){S(t,O+(J<<2),P);break}}}}S(t,a+en,m),S(t,a+Jn,O)}}return L.RUNNING}function Fu(t,e,A,n,s,i){const o=e+Hs+A*Ys;if(y(t,o+xn)===0)return q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const r=R(t,o+en),a=R(t,o+Jn);let c=R(t,o+An);for(;c<r&&R(t,a+(c<<2))===0;)c++;if(c>=r)return S(t,o+An,c),S(t,o+xs,0),S(t,e+Os,0),L.RUNNING;const l=R(t,a+(c<<2));c++,S(t,o+An,c),S(t,o+xs,l),S(t,e+Os,l);const u=R(t,l+4);for(let d=0;d<u;d++)Js(t,k(e,n+d),l+40+(d<<5));const g=R(t,l+8),E=R(t,l+12),h=st(t,l+16),B=st(t,l+24),Q=st(t,l+32);return Yt(t,k(e,s),h),Oe(t,k(e,s+1),g),E!==0?(Yt(t,k(e,s+2),B),Yt(t,k(e,s+3),Q)):(Qt(t,k(e,s+2)),Qt(t,k(e,s+3))),S(t,e+j,i),L.RUNNING}function Lu(t,e,A,n,s,i){const o=i&7,r=i>>3,a=k(e,s),c=R(t,e+Os);if(c!==0){const E=c+296+(r<<5),h=R(t,E+0),B=R(t,E+4),Q=st(t,E+8),d=st(t,E+16),p=st(t,E+24);return o===0?Oe(t,a,h):o===1?B!==0?Yt(t,a,Q):Qt(t,a):o===2?h>0?Yt(t,a,Q/h):Qt(t,a):o===3?B!==0?Yt(t,a,d):Qt(t,a):o===4&&(B!==0?Yt(t,a,p):Qt(t,a)),L.RUNNING}const l=k(e,A),u=k(e,n),g=y(t,u+$)!==0?0:vt(t,u+be);return o===0?Oe(t,a,g):o===1?g>0?Yt(t,a,st(t,l+It)):Qt(t,a):o===2?g>0?Yt(t,a,st(t,l+It)/g):Qt(t,a):(o===3||o===4)&&Js(t,a,l),L.RUNNING}function bu(t,e,A,n){let s=0,i=0,o=-1,r=-1;for(;s<e;){const a=i<n?A.charCodeAt(i):0,c=t.charCodeAt(s);if(i<n&&(a===95||Wn(a)===Wn(c)))s++,i++;else if(i<n&&a===37)o=i++,r=s;else if(o!==-1)i=o+1,s=++r;else return 0}for(;i<n&&A.charCodeAt(i)===37;)i++;return i===n?1:0}function Ou(t,e){if(t==null||e===null||e===void 0)return{result:0,is_unknown:!0};if(typeof t=="boolean"||typeof e=="boolean"){const A=t?1:0,n=e?1:0;return{result:A===n?0:A>n?1:-1,is_unknown:!1}}if(typeof t=="bigint"||typeof e=="bigint"){const A=BigInt(t),n=BigInt(e);return{result:A===n?0:A>n?1:-1,is_unknown:!1}}if(t instanceof Uint8Array&&e instanceof Uint8Array){const A=Math.min(t.byteLength,e.byteLength);for(let n=0;n<A;n++)if(t[n]!==e[n])return{result:t[n]>e[n]?1:-1,is_unknown:!1};return{result:t.byteLength===e.byteLength?0:t.byteLength>e.byteLength?1:-1,is_unknown:!1}}return{result:t===e?0:t>e?1:-1,is_unknown:!1}}function Zn(t,e){return bu(t,t.length,e,e.length)===1}function Sa(t,e,A){const n=A.numKeys;for(let s=0;s<n;s++){const i=t[s],o=e[s],r=A.directions[s]??0,a=A.nullOrders[s]??(r===1?1:0),c=i==null,l=o==null;if(c&&l)continue;if(c||l)return a===0?c?-1:1:c?1:-1;const u=Ou(i,o).result;if(u!==0)return r===1?-u:u}return 0}function Na(t){let e=2166136261;for(let A=0;A<t.length;A++){const n=t[A];if(n==null)e^=255,e=Math.imul(e,16777619);else if(typeof n=="string")for(let s=0;s<n.length;s++)e^=n.charCodeAt(s)&255,e=Math.imul(e,16777619);else{const s=Number(n)|0;e^=s&255,e=Math.imul(e,16777619)}}return e=e>>>0,e===0?1:e}function Pu(t,e,A,n,s){let o=0;const r=R(t,e+jr);let a=R(t,e+j);for(;a<n;){if(o++,o>1e7)return S(t,e+j,a),q(t,e+V,L.TIMEOUT),L.TIMEOUT;const c=a,l=y(t,A+a);switch(a+=1,l){case C.OP_HALT:return S(t,e+ye,0),S(t,e+j,a),q(t,e+V,L.DONE),L.DONE;case C.OP_OPEN_CURSOR:{const u=y(t,A+a),g=R(t,A+a+1);a+=5;const E=qt(e,u);if(S(t,E+Vt,g),q(t,E+Jt,0),S(t,E+Ht,0),r!==0&&g>0){const h=he(t,Be,Ie,g);if(h<0)return S(t,e+fe,g),q(t,e+V,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,E+ve,h)}break}case C.OP_REWIND:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=qt(e,u),h=R(t,E+Vt);if(r!==0&&h>0){const d=he(t,Be,Ie,h);if(d<0)return S(t,e+fe,h),q(t,e+V,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,E+ve,d)}const B=Ue(t,r,h);if(_t(t,B)===0)a=g;else{q(t,E+Jt,0);const d=Et(t,B,0);S(t,E+Ht,B+d)}break}case C.OP_NEXT_ROW:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=qt(e,u),h=R(t,E+Vt),B=Ue(t,r,h),Q=_t(t,B),d=vt(t,E+Jt)+1;if(d<Q){q(t,E+Jt,d);const p=Et(t,B,d);S(t,E+Ht,B+p)}else{const p=jt(t,B);if(p!==0){if(r!==0){const m=he(t,Be,Ie,p);if(m<0)return S(t,e+fe,p),q(t,e+V,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,E+ve,m)}S(t,E+Vt,p),q(t,E+Jt,0);const U=Ue(t,r,p);if(_t(t,U)>0){const m=Et(t,U,0);S(t,E+Ht,U+m)}else a=g}else a=g}break}case C.OP_LAST:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=qt(e,u),h=R(t,E+Vt),B=Ue(t,r,h),Q=_t(t,B);if(Q===0)a=g;else{const d=Q-1;q(t,E+Jt,d);const p=Et(t,B,d);S(t,E+Ht,B+p)}break}case C.OP_PREV_ROW:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=qt(e,u),h=R(t,E+Vt),B=Ue(t,r,h),Q=vt(t,E+Jt);if(Q>0){const d=Q-1;q(t,E+Jt,d);const p=Et(t,B,d);S(t,E+Ht,B+p)}else a=g;break}case C.OP_COLUMN_INT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=qt(e,u),B=R(t,h+Ht),Q=Xs(t,e,u),d=v(t,Q+2),p=B+3,U=k(e,E);if(MA(t,p,g)!==0){Qt(t,U);break}const N=Kn(t,p,d,Q,g),m=y(t,Q+4+g);m===_.INT32?Oe(t,U,vt(t,N)):m===_.INT64&&Ia(t,U,ie(t,N));break}case C.OP_COLUMN_FLOAT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=qt(e,u),B=R(t,h+Ht),Q=Xs(t,e,u),d=v(t,Q+2),p=B+3,U=k(e,E);if(MA(t,p,g)!==0){Qt(t,U);break}const N=Kn(t,p,d,Q,g);Yt(t,U,st(t,N));break}case C.OP_COLUMN_UUID:case C.OP_COLUMN_ULID:case C.OP_COLUMN_TEXT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=qt(e,u),B=R(t,h+Ht),Q=Xs(t,e,u),d=v(t,Q+0),p=v(t,Q+2),U=B+3,N=k(e,E);if(MA(t,U,g)!==0){Qt(t,N);break}const m=y(t,Q+4+g);if(m===_.UUID||m===_.ULID){const P=Kn(t,U,p,Q,g);if(m===_.UUID){const I=te(t,e,s,36);if(I===0)return S(t,e+j,a),q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;ha(t,P,I),$t(t,N,_.UUID,I,36)}else{const I=te(t,e,s,26);if(I===0)return S(t,e+j,a),q(t,e+V,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;fa(t,P,I),$t(t,N,_.ULID,I,26)}break}const T=Kn(t,U,p,Q,d),F=Ca(t,Q,g),D=T+(F<<2),O=v(t,D),w=v(t,D+2);$t(t,N,_.TEXT,B+O,w);break}case C.OP_COLUMN_BLOB:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=qt(e,u),B=R(t,h+Ht),Q=Xs(t,e,u),d=v(t,Q+0),p=v(t,Q+2),U=B+3,N=k(e,E);if(MA(t,U,g)!==0){Qt(t,N);break}const m=Kn(t,U,p,Q,d),T=Ca(t,Q,g),F=m+(T<<2),D=v(t,F),O=v(t,F+2);$t(t,N,_.BLOB,B+D,O);break}case C.OP_OPEN_INDEX:{const u=y(t,A+a),g=R(t,A+a+1);a+=5;const E=qt(e,u);if(S(t,E+Vt,g),S(t,E+kn,g),q(t,E+Jt,0),S(t,E+Ht,0),r!==0&&g>0){const h=he(t,Be,Ie,g);if(h<0)return S(t,e+fe,g),q(t,e+V,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,E+ve,h)}break}case C.OP_INDEX_SEEK_EQ:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3),B=v(t,A+a+4);if(a+=6,B>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const Q=k(e,E);if(y(t,Q+$)!==0){a=B;break}const d=qt(e,u),p=R(t,d+kn);let U=p!==0?p:R(t,d+Vt),N=0,m=0n;for(;U!==0;){if(r!==0&&U>0){const D=he(t,Be,Ie,U);if(D<0)return S(t,e+fe,U),q(t,e+V,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,d+ve,D)}const T=Ue(t,r,U),F=ru(t,e,T,h,Q);if(F>=0){N=1,S(t,d+Vt,U),q(t,d+Jt,F);const D=Et(t,T,F),O=v(t,T+D);m=ie(t,T+D+2+O);break}U=jt(t,T)}if(N===0)a=B;else{const T=Nt(m>>16n),F=Nt(m&0xffffn);if(r!==0&&T>0&&he(t,Be,Ie,T)<0)return S(t,e+fe,T),q(t,e+V,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;const D=qt(e,g);S(t,D+Vt,T),q(t,D+Jt,F);const O=Ue(t,r,T),w=Et(t,O,F);S(t,D+Ht,O+w)}break}case C.OP_INDEX_SEEK_GE:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3),B=v(t,A+a+4);if(a+=6,B>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const Q=k(e,E);if(y(t,Q+$)!==0){a=B;break}const d=qt(e,u),p=R(t,d+kn);let U=p!==0?p:R(t,d+Vt),N=0,m=0n;for(;U!==0;){if(r!==0&&U>0){const D=he(t,Be,Ie,U);if(D<0)return S(t,e+fe,U),q(t,e+V,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,d+ve,D)}const T=Ue(t,r,U),F=au(t,e,T,h,Q);if(F>=0){N=1,S(t,d+Vt,U),q(t,d+Jt,F);const D=Et(t,T,F),O=v(t,T+D);m=ie(t,T+D+2+O);break}U=jt(t,T)}if(N===0)a=B;else{const T=Nt(m>>16n),F=Nt(m&0xffffn);if(r!==0&&T>0&&he(t,Be,Ie,T)<0)return S(t,e+fe,T),q(t,e+V,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;const D=qt(e,g);S(t,D+Vt,T),q(t,D+Jt,F);const O=Ue(t,r,T),w=Et(t,O,F);S(t,D+Ht,O+w)}break}case C.OP_INDEX_NEXT:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=qt(e,u);let B=R(t,h+Vt),Q=Ue(t,r,B);const d=_t(t,Q);let p=vt(t,h+Jt)+1;if(p>=d){if(B=jt(t,Q),B===0){a=E;break}if(r!==0&&B>0){const P=he(t,Be,Ie,B);if(P<0)return S(t,e+fe,B),q(t,e+V,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,h+ve,P)}Q=Ue(t,r,B),p=0,S(t,h+Vt,B),q(t,h+Jt,-1)}const U=Et(t,Q,p),N=v(t,Q+U),m=ie(t,Q+U+2+N),T=Nt(m>>16n),F=Nt(m&0xffffn);if(r!==0&&T>0&&he(t,Be,Ie,T)<0)return S(t,e+fe,T),q(t,e+V,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;S(t,h+Vt,B),q(t,h+Jt,p);const D=qt(e,g);S(t,D+Vt,T),q(t,D+Jt,F);const O=Ue(t,r,T),w=Et(t,O,F);S(t,D+Ht,O+w);break}case C.OP_IS_NULL:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=qt(e,u),B=R(t,h+Ht);MA(t,B+3,g)!==0&&(a=E);break}case C.OP_IS_NOT_NULL:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=qt(e,u),B=R(t,h+Ht);MA(t,B+3,g)===0&&(a=E);break}case C.OP_EQ:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;tA(t,k(e,u),k(e,g))===0&&(a=E);break}case C.OP_NE:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=tA(t,k(e,u),k(e,g));h!==-2&&h!==0&&(a=E);break}case C.OP_GT:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;tA(t,k(e,u),k(e,g))===1&&(a=E);break}case C.OP_GE:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=tA(t,k(e,u),k(e,g));(h===0||h===1)&&(a=E);break}case C.OP_LT:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;tA(t,k(e,u),k(e,g))===-1&&(a=E);break}case C.OP_LE:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=tA(t,k(e,u),k(e,g));(h===-1||h===0)&&(a=E);break}case C.OP_JUMP:{const u=v(t,A+a);if(u>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;a=u;break}case C.OP_STR_LIKE:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=k(e,u),B=k(e,g);if(y(t,h+$)!==0||y(t,B+$)!==0)break;da(t,R(t,h+pt),R(t,h+mt),R(t,B+pt),R(t,B+mt))!==0&&(a=E);break}case C.OP_STR_NOT_LIKE:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=k(e,u),B=k(e,g);if(y(t,h+$)!==0||y(t,B+$)!==0)break;da(t,R(t,h+pt),R(t,h+mt),R(t,B+pt),R(t,B+mt))===0&&(a=E);break}case C.OP_STR_CONTAINS:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=k(e,u),B=k(e,g);if(y(t,h+$)!==0||y(t,B+$)!==0)break;cu(t,R(t,h+pt),R(t,h+mt),R(t,B+pt),R(t,B+mt))!==0&&(a=E);break}case C.OP_STR_STARTS_WITH:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=k(e,u),B=k(e,g);if(y(t,h+$)!==0||y(t,B+$)!==0)break;lu(t,R(t,h+pt),R(t,h+mt),R(t,B+pt),R(t,B+mt))!==0&&(a=E);break}case C.OP_STR_ENDS_WITH:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=k(e,u),B=k(e,g);if(y(t,h+$)!==0||y(t,B+$)!==0)break;uu(t,R(t,h+pt),R(t,h+mt),R(t,B+pt),R(t,B+mt))!==0&&(a=E);break}case C.OP_IN:{const u=y(t,A+a),g=v(t,A+a+1),E=v(t,A+a+3);if(a+=5,E>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;_u(t,e,g,k(e,u))!==0&&(a=E);break}case C.OP_LOAD_INT:{const u=y(t,A+a),g=vt(t,A+a+1);a+=5,Oe(t,k(e,u),g);break}case C.OP_LOAD_FLOAT:{const u=y(t,A+a),g=st(t,A+a+1);a+=9,Yt(t,k(e,u),g);break}case C.OP_LOAD_TEXT:{const u=y(t,A+a),g=v(t,A+a+1),E=A+a+3;a+=3+g,$t(t,k(e,u),_.TEXT,E,g);break}case C.OP_LOAD_BLOB:{const u=y(t,A+a),g=v(t,A+a+1),E=A+a+3;a+=3+g,$t(t,k(e,u),_.BLOB,E,g);break}case C.OP_LOAD_NULL:{const u=y(t,A+a);a+=1,Qt(t,k(e,u));break}case C.OP_EMIT_ROW:{const u=y(t,A+a);a+=1;const g=qt(e,u),E=R(t,g+Ht),h=v(t,E+1),B=ya(t,e,E,h,c);if(B!==L.RUNNING)return B;break}case C.OP_OFFSET:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=k(e,u),h=y(t,E+$)!==0?0:vt(t,E+be);h>0&&(Oe(t,E,h-1),a=g);break}case C.OP_LIMIT:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=k(e,u),h=y(t,E+$)!==0?0:vt(t,E+be);h<=1?(Oe(t,E,0),a=g):Oe(t,E,h-1);break}case C.OP_CALL_UDF:{const u=v(t,A+a),g=y(t,A+a+2),E=y(t,A+a+3),h=y(t,A+a+4);return a+=5,S(t,e+zr,u),S(t,e+vr,g),S(t,e+ta,E),S(t,e+ea,h),S(t,e+j,a),q(t,e+V,fo),fo}case C.OP_STR_LOWER:{const u=y(t,A+a),g=y(t,A+a+1);a+=2,Eu(t,e,s,k(e,u),k(e,g));break}case C.OP_STR_UPPER:{const u=y(t,A+a),g=y(t,A+a+1);a+=2,Iu(t,e,s,k(e,u),k(e,g));break}case C.OP_STR_LENGTH:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=k(e,u),h=k(e,g);if(y(t,E+$)!==0)Qt(t,h);else{const B=gu(t,R(t,E+pt),R(t,E+mt));Oe(t,h,B)}break}case C.OP_STR_SUBSTR:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3);a+=4,hu(t,k(e,u),k(e,g),k(e,E),k(e,h));break}case C.OP_STR_TRIM:{const u=y(t,A+a),g=y(t,A+a+1);a+=2,Bu(t,k(e,u),k(e,g));break}case C.OP_MATH_ABS:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=k(e,u),h=k(e,g);y(t,E+$)!==0?Qt(t,h):Yt(t,h,Cu(st(t,E+It)));break}case C.OP_MATH_ROUND:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=k(e,u),h=k(e,g);y(t,E+$)!==0?Qt(t,h):Yt(t,h,du(st(t,E+It)));break}case C.OP_RESULT_ROW:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=mu(t,e,u,g,c);if(E!==L.RUNNING)return E;break}case C.OP_SORTER_OPEN:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=yu(t,e,s,u,g);if(E!==L.RUNNING)return S(t,e+j,a),E;break}case C.OP_SORTER_INSERT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3);a+=4;const B=pu(t,e,s,u,g,E,h);if(B!==L.RUNNING)return S(t,e+j,a),B;break}case C.OP_SORTER_SORT:{const u=y(t,A+a);a+=1;const g=Uu(t,e,s,u);if(g!==L.RUNNING)return S(t,e+j,a),g;break}case C.OP_SORTER_NEXT:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;S(t,e+j,a);const E=Tu(t,e,u,g,c);if(E!==L.RUNNING)return E;a=R(t,e+j);break}case C.OP_MATH_FLOOR:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=k(e,u),h=k(e,g);y(t,E+$)!==0?Qt(t,h):Yt(t,h,ma(st(t,E+It)));break}case C.OP_MATH_CEIL:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=k(e,u),h=k(e,g);y(t,E+$)!==0?Qt(t,h):Yt(t,h,Qu(st(t,E+It)));break}case C.OP_ADD:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,u),B=k(e,g),Q=k(e,E);y(t,h+$)!==0||y(t,B+$)!==0?Qt(t,Q):Yt(t,Q,st(t,h+It)+st(t,B+It));break}case C.OP_SUB:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,u),B=k(e,g),Q=k(e,E);y(t,h+$)!==0||y(t,B+$)!==0?Qt(t,Q):Yt(t,Q,st(t,h+It)-st(t,B+It));break}case C.OP_MUL:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,u),B=k(e,g),Q=k(e,E);y(t,h+$)!==0||y(t,B+$)!==0?Qt(t,Q):Yt(t,Q,st(t,h+It)*st(t,B+It));break}case C.OP_DIV:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,u),B=k(e,g),Q=k(e,E);if(y(t,h+$)!==0||y(t,B+$)!==0)Qt(t,Q);else{const d=st(t,B+It);d===0?Qt(t,Q):Yt(t,Q,st(t,h+It)/d)}break}case C.OP_MOD:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,u),B=k(e,g),Q=k(e,E);if(y(t,h+$)!==0||y(t,B+$)!==0)Qt(t,Q);else{const d=st(t,B+It);if(d===0)Qt(t,Q);else{const p=st(t,h+It),U=Math.trunc(p/d);Yt(t,Q,p-U*d)}}break}case C.OP_STR_CONCAT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3,fu(t,e,s,u,g,E);break}case C.OP_COALESCE:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,E);let B=0;for(let Q=0;Q<g;Q++){const d=k(e,u+Q);if(y(t,d+$)===0){Js(t,h,d),B=1;break}}B===0&&Qt(t,h);break}case C.OP_COPY:{const u=y(t,A+a),g=y(t,A+a+1);a+=2,Js(t,k(e,g),k(e,u));break}case C.OP_AGG_INIT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3);a+=4;const B=Ru(t,e,s,u,g,E,h);if(B!==L.RUNNING)return S(t,e+j,a),B;break}case C.OP_AGG_STEP:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3),B=y(t,A+a+4);a+=5;const Q=Du(t,e,s,u,g,E,h,B);if(Q!==L.RUNNING)return S(t,e+j,a),Q;break}case C.OP_AGG_NEXT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=v(t,A+a+3);if(a+=5,h>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;S(t,e+j,a);const B=Fu(t,e,u,g,E,h);if(B!==L.RUNNING)return B;a=R(t,e+j);break}case C.OP_AGG_FINAL:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3);a+=4,Lu(t,e,u,g,E,h);break}case C.OP_REG_IS_NULL:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;y(t,k(e,u)+$)!==0&&(a=g);break}case C.OP_REG_IS_NOT_NULL:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE;y(t,k(e,u)+$)===0&&(a=g);break}default:return S(t,e+j,a),q(t,e+V,L.INVALID_BYTECODE),L.INVALID_BYTECODE}}return S(t,e+j,a),q(t,e+V,L.DONE),L.DONE}const Gu=new TextEncoder,wu=new TextDecoder;function _o(t,e,A,n,s){if(s==null)Qt(t,n);else if(typeof s=="boolean")Oe(t,n,s?1:0);else if(typeof s=="number")Number.isInteger(s)&&s>=-2147483648&&s<=2147483647?Oe(t,n,s):Yt(t,n,s);else if(typeof s=="bigint")Ia(t,n,s);else if(typeof s=="string"){const i=Gu.encode(s);if(i.byteLength===0)$t(t,n,_.TEXT,0,0);else{const o=te(t,e,A,i.byteLength);new Uint8Array(t.buffer,t.byteOffset+o,i.byteLength).set(i),$t(t,n,_.TEXT,o,i.byteLength)}}else if(s instanceof Uint8Array)if(s.byteLength===0)$t(t,n,_.BLOB,0,0);else{const i=te(t,e,A,s.byteLength);new Uint8Array(t.buffer,t.byteOffset+i,s.byteLength).set(s),$t(t,n,_.BLOB,i,s.byteLength)}else Qt(t,n)}function Ra(t,e){if(y(t,e+$)!==0)return null;const A=y(t,e+ce);if(A===_.INT32)return vt(t,e+be);if(A===_.INT64)return Number(ie(t,e+pe));if(A===_.FLOAT64)return st(t,e+It);const n=R(t,e+pt),s=R(t,e+mt);if(A===_.TEXT||A===_.UUID||A===_.ULID)return s===0?"":wu.decode(new Uint8Array(t.buffer,t.byteOffset+n,s));if(A===_.BLOB){const i=new Uint8Array(s);return s>0&&i.set(new Uint8Array(t.buffer,t.byteOffset+n,s)),i}return null}function mo(t,e,A,n,s){var p,U,N;let i=e,o=!1;if(s)if(e.buffer===s&&e.byteOffset===0)i=e.byteLength>=mn+65536?e:new DataView(s);else{i=new DataView(s);const m=Math.min(e.byteLength,_n);new Uint8Array(s,0,m).set(new Uint8Array(e.buffer,e.byteOffset,m)),o=!0}else if(e.byteLength<mn+65536||e.byteOffset!==0){const m=mo;(!m._fallbackBuffer||!m._fallbackView)&&(m._fallbackBuffer=new ArrayBuffer(mi),m._fallbackView=new DataView(m._fallbackBuffer));const T=Math.min(e.byteLength,_n);new Uint8Array(m._fallbackBuffer,0,T).set(new Uint8Array(e.buffer,e.byteOffset,T)),i=m._fallbackView,o=!0}const r=_n,a=zt,c=mn,l=t,u=t._fastHostMode===!0;if(l._syncedResetId!==t._resetId||l._syncedBuffer!==i.buffer){Zt(i,r,0,ia+384),Zt(i,r+Hn,0,256);for(let m=0;m<64;m++)K(i,r+na+(m<<5)+$,1);u||(l._lastSyncedRegs?l._lastSyncedRegs.fill(null):l._lastSyncedRegs=new Array(64).fill(null)),l._syncedInSetsRef=null,l._syncedResetId=t._resetId,l._syncedBuffer=i.buffer}if(o&&t.resultOffset>0){const m=_e+t.resultOffset;e.byteLength>=m&&new Uint8Array(i.buffer,i.byteOffset+_e,t.resultOffset).set(new Uint8Array(e.buffer,e.byteOffset+_e,t.resultOffset))}const g=t.tables??(t.table?[t.table]:[]),E=Math.min(g.length,16);S(i,r+lo,E);for(let m=0;m<E;m++){const T=g[m]??g[0],F=r+Ps+m*oa;if(T){const D=Math.min(T.columns.length,256);se(i,F+0,D),se(i,F+2,Math.ceil(D/8));for(let O=0;O<D;O++)K(i,F+4+O,T.columns[O].type)}}const h=r+ra;if(t.outputColumns&&t.outputColumns.length>0){const m=Math.min(t.outputColumns.length,256);K(i,h+0,1),se(i,h+2,m);for(let T=0;T<m;T++)K(i,h+4+T,t.outputColumns[T].type)}else K(i,h+0,0),se(i,h+2,0);const B=Math.min(((p=t.keyInfos)==null?void 0:p.length)??0,8);S(i,r+eu,B);for(let m=0;m<B;m++){const T=t.keyInfos[m],F=r+qn+m*Mn,D=Math.min(T.numKeys,8);K(i,F+aa,D),K(i,F+uo,T.limit!==void 0?1:0),S(i,F+go,T.limit??0),S(i,F+Gs,T.offset??0);for(let O=0;O<D;O++){const w=T.directions[O]??0,P=((U=T.nullOrders)==null?void 0:U[O])??(w===1?1:0);K(i,F+ca+O,w),K(i,F+la+O,P)}}if(t.inSets&&t.inSets.length>0&&l._syncedInSetsRef!==t.inSets){const m=Math.min(t.inSets.length,16);S(i,r+$r,m);for(let T=0;T<m;T++){const F=t.inSets[T],D=r+Ea+T*8;if(!F||F.size===0)S(i,D+0,0),S(i,D+4,0);else{const O=Array.from(F),w=te(i,r,c,O.length*32);S(i,D+0,O.length),S(i,D+4,w);for(let P=0;P<O.length;P++)_o(i,r,c,w+P*32,O[P])}}l._syncedInSetsRef=t.inSets}if(!u){for(let T=0;T<16;T++){const F=(t.cursors&&t.cursors[T])??(T===0?t.cursor:void 0),D=qt(r,T);F&&(S(i,D+Vt,F.pageId),S(i,D+kn,F.rootPageId??0),q(i,D+ve,F.slotIdx),q(i,D+Jt,F.cellIdx),S(i,D+Ht,F.rowOffset))}const m=l._lastSyncedRegs;for(let T=0;T<64;T++)t.registers[T]!==m[T]&&(_o(i,r,c,k(r,T),t.registers[T]),m[T]=t.registers[T])}const Q=e.byteLength>=os+4&&e.getUint32(os,!0)>0?1:0;S(i,r+j,t.pc),q(i,r+V,t.status),S(i,r+fe,t.fault_page_id),S(i,r+vA,t.resultCount),S(i,r+tn,t.resultOffset),S(i,r+ye,t.arenaOffset),S(i,r+wn,t.maxQueryMemory),S(i,r+jr,Q),new Uint8Array(i.buffer,i.byteOffset+a,A.byteLength).set(A);let d=n(i,r,a,A.byteLength,c);for(;d===fo;){const m=R(i,r+zr),T=R(i,r+vr),F=R(i,r+ta),D=R(i,r+ea),O=(N=t.udfs)==null?void 0:N[m];if(!O){d=L.INVALID_BYTECODE,q(i,r+V,d);break}const w=[];for(let P=0;P<F;P++)w.push(Ra(i,k(r,T+P)));try{const P=O(...w);_o(i,r,c,k(r,D),P),q(i,r+V,L.RUNNING),d=n(i,r,a,A.byteLength,c)}catch{d=L.ERROR,q(i,r+V,d);break}}if(t.pc=R(i,r+j),t.status=d,t.resultCount=R(i,r+vA),t.resultOffset=R(i,r+tn),t.arenaOffset=R(i,r+ye),u){if(d===L.PAGE_FAULT){t.fault_page_id=R(i,r+fe);for(let m=0;m<16;m++){const T=t.cursors[m];T&&(T.pageId=R(i,qt(r,m)+Vt))}}}else{t.fault_page_id=R(i,r+fe);for(let T=0;T<16;T++){const F=qt(r,T),D=t.cursors[T];D&&(D.pageId=R(i,F+Vt),D.rootPageId=R(i,F+kn),D.slotIdx=vt(i,F+ve),D.cellIdx=vt(i,F+Jt),D.rowOffset=R(i,F+Ht))}t.cursor&&t.cursors&&t.cursor!==t.cursors[0]&&Object.assign(t.cursor,t.cursors[0]);const m=l._lastSyncedRegs;for(let T=0;T<64;T++){const F=Ra(i,k(r,T));t.registers[T]=F,m[T]=F}for(let T=0;T<4;T++){const F=r+Hs+T*Ys;if(y(i,F+xn)!==0){const D=R(i,F+en),O=R(i,F+Xn),w=R(i,F+An);t.aggregators[T]?(t.aggregators[T].capacity=D,t.aggregators[T].occupiedCount=O,t.aggregators[T].readIdx=w):t.aggregators[T]={mode:y(i,F+Vs),startKeyReg:y(i,F+Io),numKeys:y(i,F+Bo),capacity:D,occupiedCount:O,readIdx:w,buckets:[],currentBucket:null}}}}if(o&&t.resultOffset>0){const m=_e+t.resultOffset;e.byteLength>=m&&new Uint8Array(e.buffer,e.byteOffset+_e,t.resultOffset).set(new Uint8Array(i.buffer,i.byteOffset+_e,t.resultOffset))}return d}function ku(t,e,A){return mo(t,e,A,(n,s,i,o,r)=>Pu(n,s,i,o,r))}const yo="AGFzbQEAAAABuAEZYAF/AX9gAn9/AGAEf39/fwF/YAJ/fwF/YAN/f38Bf2ADf39/AGAEf39/fwBgBX9/f39/AX9gAXwBfGACf34Bf2ABfwBgBX9/f39/AGAGf39/f39/AX9gAABgA39/fgF/YAl/f35/f3x/f34Bf2AIf39+fH9/fn8Bf2AHf398f39/fgF/YAJ/fgBgAn98AGAHf39/f39/fwF/YAV/fn9+fwBgBX98f3x/AGAHf39/f39/fwBgAAF/Ag8BA2VudgZtZW1vcnkCAEMDhgGEAQ0AAAQABQQFAwQCBAADBQcCAQEDBQEAAQABAAEAAQABAAEDBQAAAQACAQEOCQEPEBEBAwAACgABAAAAAAAFBgsAAAMDAwQKARITBgECAAABBAEEAwMCAwIDBwICAgICAgMGBgEGCQsICAgIBAICAgQGAgwEAgMEBwwUBwcDAhUWFwIEGAYJAX8BQYCgiwILB7MXiQEPX19zdGFja19wb2ludGVyAwAHaGV4X3ZhbAABEGNyb2NrZm9yZF9kZWNvZGUAAgt1dWlkX2VuY29kZQADBnN0cmxlbgAEC3V1aWRfZGVjb2RlAAULdWxpZF9lbmNvZGUABgt1bGlkX2RlY29kZQAHD3BhZ2VfdGFibGVfaGFzaAAIDnBhZ2VfdGFibGVfZ2V0AAkOcGFnZV90YWJsZV9zZXQAChFwYWdlX3RhYmxlX2RlbGV0ZQALGGJ1Zl9wb29sX2dldF9zbG90X29mZnNldAAMGmJ1Zl9wb29sX3JlYWRfc2xvdF90b19wYWdlAA0bYnVmX3Bvb2xfd3JpdGVfc2xvdF90b19wYWdlAA4aYnVmX3Bvb2xfZ2V0X3Jlc2lkZW50X3Nsb3QACRRidWZfcG9vbF9hc3NpZ25fc2xvdAAPFmJ1Zl9wb29sX3VuYXNzaWduX3Nsb3QAEBNidWZfcG9vbF9tYXJrX2RpcnR5ABEUYnVmX3Bvb2xfY2xlYXJfZGlydHkAEhFidWZfcG9vbF9pc19kaXJ0eQATCXBhZ2VfaW5pdAAUDnBhZ2VfaW5pdF9mcmVlABUNcGFnZV9nZXRfdHlwZQAWDXBhZ2Vfc2V0X3R5cGUAFxNwYWdlX2dldF9jZWxsX2NvdW50ABgTcGFnZV9zZXRfY2VsbF9jb3VudAAZHHBhZ2VfZ2V0X2NlbGxfY29udGVudF9vZmZzZXQAGhxwYWdlX3NldF9jZWxsX2NvbnRlbnRfb2Zmc2V0ABsVcGFnZV9nZXRfbmV4dF9wYWdlX2lkABwVcGFnZV9zZXRfbmV4dF9wYWdlX2lkAB0TcGFnZV9nZXRfZnJlZV9ieXRlcwAeE3BhZ2Vfc2V0X2ZyZWVfYnl0ZXMAHxFwYWdlX2dldF9jaGVja3N1bQAgEXBhZ2Vfc2V0X2NoZWNrc3VtACEUcGFnZV9nZXRfY2VsbF9vZmZzZXQAIhRwYWdlX3NldF9jZWxsX29mZnNldAAjHnBhZ2VfZ2V0X2NvbnRpZ3VvdXNfZnJlZV9zcGFjZQAkGXBhZ2VfZ2V0X3RvdGFsX2ZyZWVfc3BhY2UAJRBwYWdlX2NvbXBhY3RfcmF3ACYTcGFnZV9nZXRfcm93X2xlbmd0aAAnE3BhZ2VfaW5zZXJ0X3Jvd19yYXcAKA9wYWdlX2RlbGV0ZV9yb3cAKRJwYWdlX2luaXRfaW50ZXJpb3IAKhxwYWdlX2dldF9yaWdodF9jaGlsZF9wYWdlX2lkABwccGFnZV9zZXRfcmlnaHRfY2hpbGRfcGFnZV9pZAAdGXBhZ2VfaW5zZXJ0X2ludGVyaW9yX2NlbGwAKxtwYWdlX2JpbmFyeV9zZWFyY2hfaW50ZXJpb3IALBRwYWdlX2luaXRfaW5kZXhfbGVhZgAtG3BhZ2VfY29tcGFyZV9pbmRleF9jZWxsX3JhdwAuGnBhZ2VfaW5zZXJ0X2luZGV4X2NlbGxfcmF3AC8ccGFnZV9iaW5hcnlfc2VhcmNoX2luZGV4X3JhdwAwG3BhZ2VfZGVsZXRlX2luZGV4X2xlYWZfY2VsbAAxDWNvbXB1dGVfY3JjMzIAMhVjb21wdXRlX3BhZ2VfY2hlY2tzdW0AMxZjb21wdXRlX3BhZ2UxX2NoZWNrc3VtADQSY2F0YWxvZ19pbml0X3BhZ2UxADUXY2F0YWxvZ19nZXRfdG90YWxfcGFnZXMAIBdjYXRhbG9nX3NldF90b3RhbF9wYWdlcwAhGmNhdGFsb2dfZ2V0X2ZyZWVfcGFnZV9oZWFkADYaY2F0YWxvZ19zZXRfZnJlZV9wYWdlX2hlYWQANxpjYXRhbG9nX2dldF9zY2hlbWFfdmVyc2lvbgA4IGNhdGFsb2dfaW5jcmVtZW50X3NjaGVtYV92ZXJzaW9uADkaY2F0YWxvZ19nZXRfY2hhbmdlX2NvdW50ZXIAOiBjYXRhbG9nX2luY3JlbWVudF9jaGFuZ2VfY291bnRlcgA7HWNhdGFsb2dfdXBkYXRlX3BhZ2UxX2NoZWNrc3VtADwaY2F0YWxvZ193cml0ZV9maXhlZF9zdHJpbmcAPRFjYXRhbG9nX2luaXRfcGFnZQA+GWNhdGFsb2dfd3JpdGVfcGFnZV9oZWFkZXIAPw10b19sb3dlcl9jaGFyAEANdG9fdXBwZXJfY2hhcgBBCnZtX3JlZ19vZmYAQg12bV9jdXJzb3Jfb2ZmAEMUdm1fcmVzb2x2ZV90YWJsZV9vZmYARA12bV9waHlzX2FsbG9jAEUPdm1fcmVnX3NldF9udWxsAEYOdm1fcmVnX3NldF9pMzIARw52bV9yZWdfc2V0X2k2NABIDnZtX3JlZ19zZXRfZjY0AEkQdm1fcmVnX3NldF9zbGljZQBKC3ZtX3JlZ19jb3B5AEsVdm1fcmVnX2Nsb25lX3RvX2FyZW5hAEwLdm1faGV4X2NoYXIATRF2bV9jcm9ja2ZvcmRfY2hhcgBOE3ZtX3V1aWRfZGVjb2RlX3ZpZXcATxN2bV91dWlkX2VuY29kZV92aWV3AFATdm1fdWxpZF9kZWNvZGVfdmlldwBRE3ZtX3VsaWRfZW5jb2RlX3ZpZXcAUhZ2bV9yZXNvbHZlX3BhZ2Vfb2Zmc2V0AFMOdm1fcm93X2lzX251bGwAVBt2bV9jb21wdXRlX2ZpeGVkX2NvbF9vZmZzZXQAVRZ2bV9jb21wdXRlX3Zhcl9jb2xfaWR4AFYUdm1fY29tcGFyZV9ieXRlc19yYXcAVxJ2bV9jb21wYXJlX3JlZ18zdmwAWBV2bV9jb21wYXJlX2luZGV4X2NlbGwAWRV2bV9pbmRleF9zZWVrX2xlYWZfZXEAWhV2bV9pbmRleF9zZWVrX2xlYWZfZ2UAWxNzcWxfbGlrZV9tYXRjaF92aWV3AFwUdm1fc3RyX2NvbnRhaW5zX3ZpZXcAXRd2bV9zdHJfc3RhcnRzX3dpdGhfdmlldwBeFXZtX3N0cl9lbmRzX3dpdGhfdmlldwBfEnZtX3V0ZjhfY2hhcl9jb3VudABgDHZtX3N0cl9sb3dlcgBhDHZtX3N0cl91cHBlcgBiC3ZtX3N0cl90cmltAGMOdm1fdXRmOF9zdWJzdHIAZBh2bV9mb3JtYXRfaTY0X3RvX3NjcmF0Y2gAZQ12bV9zdHJfY29uY2F0AGYLdm1fbWF0aF9hYnMAZw12bV9tYXRoX2Zsb29yAGgMdm1fbWF0aF9jZWlsAGkNdm1fbWF0aF9yb3VuZABqEnZtX2luX3NldF9jb250YWlucwBrD3ZtX2VtaXRfcmF3X3JvdwBsGHZtX2luZmVyX3Jlc3VsdF9jb2xfdHlwZQBtIHZtX3NlcmlhbGl6ZV9hbmRfZW1pdF9yZXN1bHRfcm93AG4bdm1fY29tcGFyZV9zb3J0ZXJfa2V5X3Nsb3RzAG8Ydm1fc29ydGVyX2hlYXBfc2lmdF9kb3duAHASdm1fc29ydGVyX29wZW5fcmF3AHEUdm1fc29ydGVyX2luc2VydF9yYXcAchJ2bV9zb3J0ZXJfc29ydF9yYXcAcxJ2bV9zb3J0ZXJfbmV4dF9yYXcAdBJ2bV9oYXNoX2dyb3VwX2tleXMAdRh2bV9ncm91cF9rZXlfc2xvdHNfbWF0Y2gAdhN2bV9hbGxvY19hZ2dfYnVja2V0AHcPdm1fYWdnX2luaXRfcmF3AHgPdm1fYWdnX3N0ZXBfcmF3AHkPdm1fYWdnX25leHRfcmF3AHoQdm1fYWdnX2ZpbmFsX3JhdwB7DmZudjFhXzMyX2J5dGVzAHwSc3FsX2xpa2VfbWF0Y2hfcmF3AH0RY29tcGFyZV8zdmxfaW50NjQAfhNjb21wYXJlXzN2bF9mbG9hdDY0AH8RY29tcGFyZV8zdmxfYnl0ZXMAgAELdm1fc3RlcF9yYXcAgQEGbWVtY21wAIIBEndlYmRiX2NvcmVfdmVyc2lvbgCDAQgBAAwBAQrB8QKEAQ8AQeCpiwJBAEGBCPwLAAs4AQF/IABBMGsiAUEKTwR/IABB4QBrQQVNBEAgAEHXAGsPC0F/IABBN2sgAEHBAGtBBk8bBSABCwtCAQF/AkAgAEEwayIBQQpJDQBBfyEBIABBIGsgACAAQeEAa0EaSRtBwQBrIgBBGUsNACAAQQJ0KALQqIsCIQELIAELyAEBBH8gASACaiEGQX8hBQNAQQAhAQNAIAEiAkEBaiEBIAAgAmotAAANAAsCQCACIARNDQAgACAEaiwAACIBQS1HBEAgA0EfSg0BAkAgAUEwayICQQpJDQAgAUHhAGtBBU0EQCABQdcAayECDAELQX8gAUE3ayABQcEAa0EGTxshAgsCQCADQQFxRQRAIAIhBQwBCyAGIANBAXVqIAIgBUEEdHI6AAALIANBAWohAwsgBEEBaiEEDAELC0EAIANBIEcgAiAES3JrCxwBAn8DQCACIgFBAWohAiAAIAFqLQAADQALIAELigEBA38gACABaiEDQQAhAUEAIQADQAJAAkAgAEENcUEEaw4FAAEBAQABCyABIAJqQS06AAAgAUEBaiEBCyABIAJqIgRBAWogACADai0AACIFQQ9xLQCAoIsCOgAAIAQgBUEEdi0AgKCLAjoAACABQQJqIQEgAEEBaiIAQRBHDQALIAEgAmpBADoAAAuiEQIGfwN+A0AgBCIDQQFqIQQgACADai0AAA0ACyADQRpGBH8CQCAALAAAIgNBMGsiBEEKSQ0AQX8hBCADQSBrIAMgA0HhAGtBGkkbQcEAayIDQRlLDQAgA0ECdCgC0KiLAiEECwJAIAAsAAEiA0EwayIFQQpJDQBBfyEFIANBIGsgAyADQeEAa0EaSRtBwQBrIgNBGUsNACADQQJ0KALQqIsCIQULIAStIAWtIQkCQCAALAACIgNBMGsiBEEKSQ0AQX8hBCADQSBrIAMgA0HhAGtBGkkbQcEAayIDQRlLDQAgA0ECdCgC0KiLAiEEC0IKhiAJQgWGhCEJIAStAkAgACwAAyIDQTBrIgRBCkkNAEF/IQQgA0EgayADIANB4QBrQRpJG0HBAGsiA0EZSw0AIANBAnQoAtCoiwIhBAsgCYQgBK0hCQJAIAAsAAQiA0EwayIEQQpJDQBBfyEEIANBIGsgAyADQeEAa0EaSRtBwQBrIgNBGUsNACADQQJ0KALQqIsCIQQLQgqGIAlCBYaEIQkgBK0CQCAALAAFIgNBMGsiBEEKSQ0AQX8hBCADQSBrIAMgA0HhAGtBGkkbQcEAayIDQRlLDQAgA0ECdCgC0KiLAiEECyAJhCAErSEJAkAgACwABiIDQTBrIgRBCkkNAEF/IQQgA0EgayADIANB4QBrQRpJG0HBAGsiA0EZSw0AIANBAnQoAtCoiwIhBAtCCoYgCUIFhoQhCSAErQJAIAAsAAciA0EwayIEQQpJDQBBfyEEIANBIGsgAyADQeEAa0EaSRtBwQBrIgNBGUsNACADQQJ0KALQqIsCIQQLIAmEIQogBK0hCQJAIAAsAAgiA0EwayIEQQpJDQBBfyEEIANBIGsgAyADQeEAa0EaSRtBwQBrIgNBGUsNACADQQJ0KALQqIsCIQQLIAStIApCCoYgCUIFhoSEIQoCQCAALAAJIgNBMGsiBUEKSQ0AQX8hBSADQSBrIAMgA0HhAGtBGkkbQcEAayIDQRlLDQAgA0ECdCgC0KiLAiEFCyABIAJqIgYgCkIjiDwAACAGQQVqIAWtIApCBYaEIgk8AAAgBkEBaiAKQhuIPAAAIAZBBGogCUIIiDwAACAGQQNqIAlCEIg8AAAgBkECaiAJQhiIPAAAAkAgACwACiIBQTBrIgVBCkkNAEF/IQUgAUEgayABIAFB4QBrQRpJG0HBAGsiAUEZSw0AIAFBAnQoAtCoiwIhBQsCQCAALAALIgFBMGsiAkEKSQ0AQX8hAiABQSBrIAEgAUHhAGtBGkkbQcEAayIBQRlLDQAgAUECdCgC0KiLAiECCwJAIAAsAAwiA0EwayIBQQpJDQBBfyEBIANBIGsgAyADQeEAa0EaSRtBwQBrIgNBGUsNACADQQJ0KALQqIsCIQELAkAgACwADSIDQTBrIgdBCkkNAEF/IQcgA0EgayADIANB4QBrQRpJG0HBAGsiA0EZSw0AIANBAnQoAtCoiwIhBwsCQCAALAAOIgNBMGsiCEEKSQ0AQX8hCCADQSBrIAMgA0HhAGtBGkkbQcEAayIDQRlLDQAgA0ECdCgC0KiLAiEICwJAIAAsAA8iA0EwayIEQQpJDQBBfyEEIANBIGsgAyADQeEAa0EaSRtBwQBrIgNBGUsNACADQQJ0KALQqIsCIQQLIAWtIAKtAkAgACwAECICQTBrIgVBCkkNAEF/IQUgAkEgayACIAJB4QBrQRpJG0HBAGsiAkEZSw0AIAJBAnQoAtCoiwIhBQtCBYYhCUIKhgJAIAAsABEiA0EwayICQQpJDQBBfyECIANBIGsgAyADQeEAa0EaSRtBwQBrIgNBGUsNACADQQJ0KALQqIsCIQILIAmEIQkgAa0CQCAALAASIgNBMGsiAUEKSQ0AQX8hASADQSBrIAMgA0HhAGtBGkkbQcEAayIDQRlLDQAgA0ECdCgC0KiLAiEBCyAJhCAHrQJAIAAsABMiA0EwayIHQQpJDQBBfyEHIANBIGsgAyADQeEAa0EaSRtBwQBrIgNBGUsNACADQQJ0KALQqIsCIQcLQgWGIQtCCoYgAa0hCiAHrSEJAkAgACwAFCIDQTBrIgFBCkkNAEF/IQEgA0EgayADIANB4QBrQRpJG0HBAGsiA0EZSw0AIANBAnQoAtCoiwIhAQsgC4QhCyAKQgqGIAlCBYaEIQogAa0hCQJAIAAsABUiA0EwayIBQQpJDQBBfyEBIANBIGsgAyADQeEAa0EaSRtBwQBrIgNBGUsNACADQQJ0KALQqIsCIQELIAitIAuEIAkgCoQhCiABrSEJAkAgACwAFiIDQTBrIgFBCkkNAEF/IQEgA0EgayADIANB4QBrQRpJG0HBAGsiA0EZSw0AIANBAnQoAtCoiwIhAQsgBK1CBYYhC0IKhiAKQgqGIAlCBYaEIQogAa0hCQJAIAAsABciA0EwayIBQQpJDQBBfyEBIANBIGsgAyADQeEAa0EaSRtBwQBrIgNBGUsNACADQQJ0KALQqIsCIQELIAuEIQsgBa0gCSAKhCEKIAGtIQkCQCAALAAYIgFBMGsiBUEKSQ0AQX8hBSABQSBrIAEgAUHhAGtBGkkbQcEAayIBQRlLDQAgAUECdCgC0KiLAiEFCyALhCELIAWtIApCCoYgCUIFhoSEIQkCQCAALAAZIgBBMGsiBUEKSQ0AQX8hBSAAQSBrIAAgAEHhAGtBGkkbQcEAayIAQRlLDQAgAEECdCgC0KiLAiEFCyAGQQtqIAlCG4g8AAAgBkEGaiALQhuIPAAAIAZBD2ogBa0gCUIFhoQiCjwAACAGQQpqIAKtIAtCBYaEIgk8AAAgBkEMaiAKQhiIPAAAIAZBB2ogCUIYiDwAACAGQQ1qIApCEIg8AAAgBkEIaiAJQhCIPAAAIAZBDmogCkIIiDwAACAGQQlqIAlCCIg8AABBAAVBfwsLeAEBfiAAIAFqIgAxAABCEIYgAEEBajEAAEIIhoQgAEECajEAAIRCEIYgAEEDajEAAEIIhoQgAEEEajEAAIRCCIYgAEEFajEAAIQhAyACQQlqIQEDQCABIAOnQR9xLQCgoIsCOgAAIAFBAWshASADQgWIIQMMAAsACxYAIABBufPd8XlsIgBBEHYgAHMgAXELaAEEfyABRQRAQX8PCyABQQFrIQQgAkG5893xeWwiA0EQdiADcyEDA0AgAyAEcSIDQQN0IABqIgUoAAAiBkUEQEF/DwsgAiAGRgRAIAVBBGooAAAPCyADQQFqIQMgAUEBayIBDQALQX8LbAEEfyABBEAgAUEBayEFIAJBufPd8XlsIgRBEHYgBHMhBANAIAQgBXEiBkEDdCAAaiIEKAAAIgdBACACIAdHG0UEQCAEIAI2AAAgBEEEaiADNgAAQQAPCyAGQQFqIQQgAUEBayIBDQALC0F/C/0BAQZ/AkAgAUUNACABQQFrIQYgAkG5893xeWwiA0EQdiADcyEEA0AgBCAGcSIDQQN0IABqIgUoAAAiB0UNASADQQFqIQQgAiAHRwRAIAFBAWsiAQ0BDAILCyAEIAZxIgFBA3QgAGoiAigAACIEBEADQCADIARBufPd8XlsIgVBEHYgBXMgBnEiBWsgBnEgASAFayAGcUkEQCACQQRqKAAAIQIgA0EDdCAAaiIDIAQ2AAAgA0EEaiACNgAAIAEhAwsgAUEBaiAGcSIBQQN0IABqIgIoAAAiBA0ACyADQQN0IABqIQULIAVBADYAACAFQQRqQQA2AABBASEICyAICwcAIABBDHQLDQAgAUECdCAAaigAAAsPACABQQJ0IABqIAI2AAALpgMBB38gBEUEQEF/DwsCQAJAAkAgA0ECdCAAaiIKKAAAIgdFDQAgBCAHRg0AIAJFBEAgCiAENgAAQQAPCyACQQFrIQAgB0G5893xeWwiBUEQdiAFcyEFIAIhCAJAA0AgACAFcSIGQQN0IAFqIgkoAAAiC0UNAiAGQQFqIQUgByALRg0BIAhBAWsiCA0ACyAKIAQ2AAAMAgsgACAFcSIFQQN0IAFqIgcoAAAiCARAA0AgBiAIQbnz3fF5bCIJQRB2IAlzIABxIglrIABxIAUgCWsgAHFJBEAgB0EEaigAACEHIAZBA3QgAWoiBiAINgAAIAZBBGogBzYAACAFIQYLIAVBAWogAHEiBUEDdCABaiIHKAAAIggNAAsgBkEDdCABaiEJCyAJQQA2AAAgCUEEakEANgAACyAKIAQ2AAAgAkUNASACQQFrIQALIARBufPd8XlsIgVBEHYgBXMhBgNAIAAgBnEiBkEDdCABaiIFKAAAIghBACAEIAhHG0UEQCAFIAQ2AAAgBUEEaiADNgAAQQAPCyAGQQFqIQYgAkEBayICDQALC0EAC5YCAQV/IANBAnQgAGoiBygAACIGRQRAQQAPCwJAIAJFDQAgAkEBayEFIAZBufPd8XlsIgBBEHYgAHMhAwNAIAMgBXEiAEEDdCABaiIEKAAAIghFDQEgAEEBaiEDIAYgCEcEQCACQQFrIgINAQwCCwsgAyAFcSICQQN0IAFqIgYoAAAiAwRAA0AgACADQbnz3fF5bCIEQRB2IARzIAVxIgRrIAVxIAIgBGsgBXFJBEAgBkEEaigAACEEIABBA3QgAWoiACADNgAAIABBBGogBDYAACACIQALIAJBAWogBXEiAkEDdCABaiIGKAAAIgMNAAsgAEEDdCABaiEECyAEQQA2AAAgBEEEakEANgAACyAHQQA2AABBAQsdACAAIAFBA3ZqIgAgAC0AAEEBIAFBB3F0cjoAAAsdACAAIAFBA3ZqIgAgAC0AAEF+IAFBB3F3cToAAAsWACAAIAFBA3ZqLQAAIAFBB3F2QQFxCz8AIAAgAToAACAAQQxqQQA2AAAgAEEKakEAOwAAIABBBmogAjYAACAAQQJqQYCAgIABNgAAIABBAWpBADoAAAsxACAAQQA7AAAgAEEMakEANgAAIABBCmpBADsAACAAQQZqIAE2AAAgAEECakEANgAACwcAIAAtAAALCQAgACABOgAACwoAIABBAmovAAALDAAgAEECaiABOwAACwoAIABBBGovAAALDAAgAEEEaiABOwAACwoAIABBBmooAAALDAAgAEEGaiABNgAACwoAIABBCmovAAALDAAgAEEKaiABOwAACwoAIABBDGooAAALDAAgAEEMaiABNgAACxAAIAAgAUEBdGpBEGovAAALEgAgACABQQF0akEQaiACOwAACx4AIABBBGovAAAgAEECai8AAEEBdGtBEGtB//8DcQsnACAAQQpqLwAAIABBBGovAAAgAEECai8AAEEBdGtqQRBrQf//A3EL0gIBB38gAEECai8AACIGRQRAIABBCmpBADsAACAAQQRqQYAgOwAADwtBgIGIAiABIAAgAUYbQYCBiAIgARsiAiAAKQAINwAIIAIgACkAADcAAAJAIAAtAABBCkcEQCAAQQFqIQUgAEEQaiEDIAJBEGohBEGAICEBA0AgASAFIAMvAAAiCGovAAAiB2shASAHBEAgAiABQf//A3FqIAAgCGogB/wKAAALIAQgATsAACADQQJqIQMgBEECaiEEIAZBAWsiBg0ACwwBCyAAQRBqIQMg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AAtBACEBQX8hAgNAAn8gAUH8H3FBHEYEQCACQf8BcUECdCgC4KmLAiACQQh2cyICDAELIAIgACABaiIDLQAAc0H/AXFBAnRB4KmLAmooAgAgAkEIdnMiAiADQQFqLQAAcwtB/wFxQQJ0KALgqYsCIAJBCHZzIQIgAUECaiIBQYAgRw0ACyAAQRxqIAJBf3MiADYAACAAC6kBAQN/AkACQCACRQ0AA0BBACEDA0AgAyIFQQFqIQMgASAFai0AAA0ACyAEIAVPDQEgACAEaiABIARqLQAAOgAAIARBAWoiBCACRw0ACwwBCyACIARNDQAgBCEDIAIgBGtBB3EiAQRAA0AgACADakEAOgAAIANBAWohAyABQQFrIgENAAsLIAQgAmtBeEsNAANAIAAgA2pCADcAACACIANBCGoiA0cNAAsLCz4AIABBAWpBAEH/H/wLACAAQQxqQQA2AAAgAEEIaiADNgAAIABBBmogAjsAACAAQQRqIAE7AAAgAEEMNgAACzEAIABBDDsAACAAQQhqIAQ2AAAgAEEGaiADOwAAIABBBGogAjsAACAAQQJqIAE7AAALEwAgAEEgciAAIABBwQBrQRpJGwsTACAAQSBrIAAgAEHhAGtBGkkbCw4AIAAgAUEFdGpByABqCw4AIAAgAUEYbGpByBBqCx0AIAAgAUGEAmxBACABIABBIGooAABJG2pByBNqCzMBAX8gAEFAayIAKAAAIgMgAkEHakF4cWoiAkGAgIAITQR/IAAgAjYAACABIANqBUEACwsxACAAQQE7AAAgAEEYakIANwAAIABBEGpCADcAACAAQQhqQgA3AAAgAEEEakEANgAACzQAIABBgAI7AAAgAEEYakIANwAAIABBEGogAbc5AAAgAEEIaiABrDcAACAAQQRqIAE2AAALMwAgAEGABDsAACAAQRhqQgA3AAAgAEEQaiABuTkAACAAQQhqIAE3AAAgAEEEaiABPgAACzYAIABBgAY7AAAgAEEYakIANwAAIABBEGogATkAACAAQQhqIAH8BjcAACAAQQRqIAH8AjYAAAtFACAAQQA6AAAgAEEcaiADNgAAIABBGGogAjYAACAAQRBqQgA3AAAgAEEIakIANwAAIABBBGpBADYAACAAQQFqIAE6AAALMgAgACABRwRAIAAgASkAGDcAGCAAIAEpABA3ABAgACABKQAINwAIIAAgASkAADcAAAsLtgEBBH8gAiADKQAYNwAYIAIgAykAEDcAECACIAMpAAg3AAggAiADKQAANwAAAkAgAy0AAA0AIANBAWotAABB/AFxQQRHDQAgA0EcaigAACIERQ0AIANBGGooAAAiAyABTw0AQX8hBSAAQUBrIgAoAAAiBiAEQQdqQXhxaiIHQYCAgAhLDQAgACAHNgAAIAEgBmoiAEUNACAEBEAgACADIAT8CgAACyACQRhqIAA2AABBACEFCyAFCxQAQTBB1wAgAEEKSRsgAGpB/wFxC1IBAX8CfyAAQTByIABBCU0NABogAEE3aiAAQRFNDQAaIABBEmsiAUEETwRAIABBOmogAEEaTQ0BGiAAQTtqDAELQcqWtfIEIAFBA3R2C0H/AXELhQEBBH8gAUEBaiEFA0ACQAJAIARBDXFBBGsOBQABAQEAAQsgASACakEtOgAAIAJBAWohAgsgASACakEwQdcAIAAgBGotAAAiA0GgAUkbIANBBHZqOgAAIAIgBWpBMEHXACADQQ9xIgNBCkkbIANqOgAAIAJBAmohAiAEQQFqIgRBEEcNAAsLuQEBBX8gAUUEQEF/DwtBfyEGAkADQCAALQAAIgRBLUcEQEEBIQcgA0EfSw0CAkAgBEEwayIFQQpJDQAgBEHhAGtB/wFxQQVNBEAgBEHXAGshBQwBCyAEQcEAa0H/AXFBBUsNAyAEQTdrIQULAkAgA0EBcUUEQCAFIQYMAQsgA0EBdiACaiAFIAZBBHRyOgAACyADQQFqIQMLIABBAWohACABQQFrIgENAAtBACEHC0EAIAcgA0EgR3JrC7AVAgZ/Cn4gAEEFai0AACICrSAAQQFqLQAAIgStQv8Bg0IIhiIIIABBAmotAAAiA61C/wGDhCIKQhCGIABBA2oxAABCCIaEIgkgAEEEai0AACIFrUL/AYOEIgtCCIaEIQwgAC0AACEGIAFBCWoCfyACQR9xIgJBCU0EQCACQTByDAELIAJBN2ogAkERTQ0AGiACQRJrIgdBBE8EQCACQTpqIAJBGk0NARogAkE7agwBC0HKlrXyBCAHQQN0QfgBcXYLOgAAIAFBCGoCfwJAIAynQQV2QR9xIgJBCk8EQCACQRJPBEAgAkESayIHQQRJDQIgAkE7aiACQRtPDQMaIAJBOmoMAwsgAkE3agwCCyACQTByDAELQcqWtfIEIAdBA3R2CzoAACABQQdqAn8CQCAFQQJ2IgVBH3EiAkEKTwRAIAJBEk8EQCACQRJrIgVBBEkNAiACQTtqIAJBG08NAxogAkE6agwDCyACQTdqDAILIAVBP3FBMHIMAQtBypa18gQgBUEDdEH4AXF2CzoAACABQQZqAn8CQCALp0EHdkEfcSICQQpPBEAgAkESTwRAIAJBEmsiBUEESQ0CIAJBO2ogAkEbTw0DGiACQTpqDAMLIAJBN2oMAgsgAkEwcgwBC0HKlrXyBCAFQQN0dgs6AAAgAUEFagJ/AkAgCadBDHZBH3EiAkEKTwRAIAJBEk8EQCACQRJrIgVBBEkNAiACQTtqIAJBG08NAxogAkE6agwDCyACQTdqDAILIAJBMHIMAQtBypa18gQgBUEDdHYLOgAAIAFBBGoCfwJAIANBAXZBH3EiAkEKTwRAIAJBEk8EQCACQRJrIgNBBEkNAiACQTtqIAJBG08NAxogAkE6agwDCyACQTdqDAILIAJBMHIMAQtBypa18gQgA0EDdEH4AXF2CzoAACABQQNqAn8CQCAKp0EGdkEfcSICQQpPBEAgAkESTwRAIAJBEmsiA0EESQ0CIAJBO2ogAkEbTw0DGiACQTpqDAMLIAJBN2oMAgsgAkEwcgwBC0HKlrXyBCADQQN0dgs6AAAgCKdBC3YhAiABQQJqAn8CQCAEQdAATwRAIARBkAFPBEAgAkESayIDQQRJDQIgAkE7aiAEQdgBTw0DGiACQTpqDAMLIAJBN2oMAgsgAkEwcgwBC0HKlrXyBCADQQN0dgs6AAAgAUEBagJ/AkAgBkEfcSICQQpPBEAgAkESTwRAIAJBEmsiBEEESQ0CIAJBO2ogAkEbTw0DGiACQTpqDAMLIAJBN2oMAgsgAkEwcgwBC0HKlrXyBCAEQQN0QfgBcXYLOgAAIAEgBkHgAXFBBXZBMHI6AAAgAEEOajEAAEIIhiIIIABBD2otAAAiA62EIQogAEEKai0AACEGIABBBmotAAAhAiAAQQxqMQAAQgiGIgkgAEELai0AACIErUL/AYMiC0IQhoQiDCAAQQ1qMQAAhCINQhCGIABBCWoxAAAhDiAAQQhqMQAAIQ8gAEEHajEAACEQIAFBGWoCfyADQR9xIgBBCU0EQCAAQTByDAELIABBN2ogAEERTQ0AGiAAQRJrIgNBBE8EQCAAQTpqIABBGk0NARogAEE7agwBC0HKlrXyBCADQQN0QfgBcXYLOgAAIAiEIREgAUEYagJ/AkAgCqdBBXZBH3EiAEEKTwRAIABBEk8EQCAAQRJrIgNBBEkNAiAAQTtqIABBG08NAxogAEE6agwDCyAAQTdqDAILIABBMHIMAQtBypa18gQgA0EDdHYLOgAAIAFBF2oCfwJAIAinQQp2QR9xIgBBCk8EQCAAQRJPBEAgAEESayIDQQRJDQIgAEE7aiAAQRtPDQMaIABBOmoMAwsgAEE3agwCCyAAQTByDAELQcqWtfIEIANBA3R2CzoAACABQRZqAn8CQCARp0EPdkEfcSIAQQpPBEAgAEESTwRAIABBEmsiA0EESQ0CIABBO2ogAEEbTw0DGiAAQTpqDAMLIABBN2oMAgsgAEEwcgwBC0HKlrXyBCADQQN0dgs6AAAgAUEVagJ/AkAgDadBBHZBH3EiAEEKTwRAIABBEk8EQCAAQRJrIgNBBEkNAiAAQTtqIABBG08NAxogAEE6agwDCyAAQTdqDAILIABBMHIMAQtBypa18gQgA0EDdHYLOgAAIAFBFGoCfwJAIAmnQQl2QR9xIgBBCk8EQCAAQRJPBEAgAEESayIDQQRJDQIgAEE7aiAAQRtPDQMaIABBOmoMAwsgAEE3agwCCyAAQTByDAELQcqWtfIEIANBA3R2CzoAACAGrUL/AYMgAq1C/wGDIQggAUETagJ/AkAgDKdBDnZBH3EiAEEKTwRAIABBEk8EQCAAQRJrIgNBBEkNAiAAQTtqIABBG08NAxogAEE6agwDCyAAQTdqDAILIABBMHIMAQtBypa18gQgA0EDdHYLOgAAIAtCA4inIQAgAUESagJ/AkAgBEHQAE8EQCAEQZABTwRAIABBEmsiA0EESQ0CIABBO2ogBEHYAU8NAxogAEE6agwDCyAAQTdqDAILIABBMHIMAQtBypa18gQgA0EDdHYLOgAAIA5CCIYiCoQhCSABQRFqAn8gBkEfcSIAQQlNBEAgAEEwcgwBCyAAQTdqIABBEU0NABogAEESayIEQQRPBEAgAEE6aiAAQRpNDQEaIABBO2oMAQtBypa18gQgBEEDdEH4AXF2CzoAACAPIBBCCIYiCyAIQhCGhCIMhCINQhCGIAqEIQ4gAUEQagJ/AkAgCadBBXZBH3EiAEEKTwRAIABBEk8EQCAAQRJrIgRBBEkNAiAAQTtqIABBG08NAxogAEE6agwDCyAAQTdqDAILIABBMHIMAQtBypa18gQgBEEDdHYLOgAAIAFBD2oCfwJAIAqnQQp2QR9xIgBBCk8EQCAAQRJPBEAgAEESayIEQQRJDQIgAEE7aiAAQRtPDQMaIABBOmoMAwsgAEE3agwCCyAAQTByDAELQcqWtfIEIARBA3R2CzoAACABQQ5qAn8CQCAOp0EPdkEfcSIAQQpPBEAgAEESTwRAIABBEmsiBEEESQ0CIABBO2ogAEEbTw0DGiAAQTpqDAMLIABBN2oMAgsgAEEwcgwBC0HKlrXyBCAEQQN0dgs6AAAgAUENagJ/AkAgDadBBHZBH3EiAEEKTwRAIABBEk8EQCAAQRJrIgRBBEkNAiAAQTtqIABBG08NAxogAEE6agwDCyAAQTdqDAILIABBMHIMAQtBypa18gQgBEEDdHYLOgAAIAFBDGoCfwJAIAunQQl2QR9xIgBBCk8EQCAAQRJPBEAgAEESayIEQQRJDQIgAEE7aiAAQRtPDQMaIABBOmoMAwsgAEE3agwCCyAAQTByDAELQcqWtfIEIARBA3R2CzoAACABQQtqAn8CQCAMp0EOdkEfcSIAQQpPBEAgAEESTwRAIABBEmsiBEEESQ0CIABBO2ogAEEbTw0DGiAAQTpqDAMLIABBN2oMAgsgAEEwcgwBC0HKlrXyBCAEQQN0dgs6AAAgCEIDiKchACABQQpqAn8CQCACQdAATwRAIAJBkAFPBEAgAEESayIBQQRJDQIgAEE7aiACQdgBTw0DGiAAQTpqDAMLIABBN2oMAgsgAEEwcgwBC0HKlrXyBCABQQN0dgs6AAAL0xICEH8CfkF/IRICQCABQRpHDQAgAC0AACIBQTBrIgNBCk8EQCABQSBrIAEgAUHhAGtB/wFxQRpJG0HBAGsiAUEZSw0BQf//vx8gAXZBAXFFDQEgAS0AuKmLAiEDCyAAQQFqLQAAIgFBMGsiBEEKTwRAIAFBIGsgASABQeEAa0H/AXFBGkkbQcEAayIBQRlLDQFB//+/HyABdkEBcUUNASABLQC4qYsCIQQLIABBAmotAAAiAUEwayIFQQpPBEAgAUEgayABIAFB4QBrQf8BcUEaSRtBwQBrIgFBGUsNAUH//78fIAF2QQFxRQ0BIAEtALipiwIhBQsgAEEDai0AACIBQTBrIgZBCk8EQCABQSBrIAEgAUHhAGtB/wFxQRpJG0HBAGsiAUEZSw0BQf//vx8gAXZBAXFFDQEgAS0AuKmLAiEGCyAAQQRqLQAAIgFBMGsiB0EKTwRAIAFBIGsgASABQeEAa0H/AXFBGkkbQcEAayIBQRlLDQFB//+/HyABdkEBcUUNASABLQC4qYsCIQcLIABBBWotAAAiAUEwayIIQQpPBEAgAUEgayABIAFB4QBrQf8BcUEaSRtBwQBrIgFBGUsNAUH//78fIAF2QQFxRQ0BIAEtALipiwIhCAsgAEEGai0AACIBQTBrIglBCk8EQCABQSBrIAEgAUHhAGtB/wFxQRpJG0HBAGsiAUEZSw0BQf//vx8gAXZBAXFFDQEgAS0AuKmLAiEJCyAAQQdqLQAAIgFBMGsiCkEKTwRAIAFBIGsgASABQeEAa0H/AXFBGkkbQcEAayIBQRlLDQFB//+/HyABdkEBcUUNASABLQC4qYsCIQoLIABBCGotAAAiAUEwayILQQpPBEAgAUEgayABIAFB4QBrQf8BcUEaSRtBwQBrIgFBGUsNAUH//78fIAF2QQFxRQ0BIAEtALipiwIhCwsgAEEJai0AACIBQTBrIgxBCk8EQCABQSBrIAEgAUHhAGtB/wFxQRpJG0HBAGsiAUEZSw0BQf//vx8gAXZBAXFFDQEgAS0AuKmLAiEMCyACQQNqIAlBBXQgCnKtIAdBD3QgCEEKdHKtIANBCnQgBEEFdHIgBXIiAUEFdCAGcq1CFIaEhCITQgaIPAAAIAJBAmogE0IOiDwAACACQQFqIBNCFog8AAAgAiABQQV2OgAAIAJBBWogC0EFdCIBIAxyOgAAIAJBBGogAa0gE0IKhoRCCIg8AAAgAEEKai0AACIBQTBrIgNBCk8EQCABQSBrIAEgAUHhAGtB/wFxQRpJG0HBAGsiAUEZSw0BQf//vx8gAXZBAXFFDQEgAS0AuKmLAiEDCyAAQQtqLQAAIgFBMGsiBEEKTwRAIAFBIGsgASABQeEAa0H/AXFBGkkbQcEAayIBQRlLDQFB//+/HyABdkEBcUUNASABLQC4qYsCIQQLIABBDGotAAAiAUEwayIFQQpPBEAgAUEgayABIAFB4QBrQf8BcUEaSRtBwQBrIgFBGUsNAUH//78fIAF2QQFxRQ0BIAEtALipiwIhBQsgAEENai0AACIBQTBrIgZBCk8EQCABQSBrIAEgAUHhAGtB/wFxQRpJG0HBAGsiAUEZSw0BQf//vx8gAXZBAXFFDQEgAS0AuKmLAiEGCyAAQQ5qLQAAIgFBMGsiB0EKTwRAIAFBIGsgASABQeEAa0H/AXFBGkkbQcEAayIBQRlLDQFB//+/HyABdkEBcUUNASABLQC4qYsCIQcLIABBD2otAAAiAUEwayIIQQpPBEAgAUEgayABIAFB4QBrQf8BcUEaSRtBwQBrIgFBGUsNAUH//78fIAF2QQFxRQ0BIAEtALipiwIhCAsgAEEQai0AACIBQTBrIglBCk8EQCABQSBrIAEgAUHhAGtB/wFxQRpJG0HBAGsiAUEZSw0BQf//vx8gAXZBAXFFDQEgAS0AuKmLAiEJCyAAQRFqLQAAIgFBMGsiCkEKTwRAIAFBIGsgASABQeEAa0H/AXFBGkkbQcEAayIBQRlLDQFB//+/HyABdkEBcUUNASABLQC4qYsCIQoLIABBEmotAAAiAUEwayILQQpPBEAgAUEgayABIAFB4QBrQf8BcUEaSRtBwQBrIgFBGUsNAUH//78fIAF2QQFxRQ0BIAEtALipiwIhCwsgAEETai0AACIBQTBrIgxBCk8EQCABQSBrIAEgAUHhAGtB/wFxQRpJG0HBAGsiAUEZSw0BQf//vx8gAXZBAXFFDQEgAS0AuKmLAiEMCyAAQRRqLQAAIgFBMGsiDUEKTwRAIAFBIGsgASABQeEAa0H/AXFBGkkbQcEAayIBQRlLDQFB//+/HyABdkEBcUUNASABLQC4qYsCIQ0LIABBFWotAAAiAUEwayIOQQpPBEAgAUEgayABIAFB4QBrQf8BcUEaSRtBwQBrIgFBGUsNAUH//78fIAF2QQFxRQ0BIAEtALipiwIhDgsgAEEWai0AACIBQTBrIg9BCk8EQCABQSBrIAEgAUHhAGtB/wFxQRpJG0HBAGsiAUEZSw0BQf//vx8gAXZBAXFFDQEgAS0AuKmLAiEPCyAAQRdqLQAAIgFBMGsiEEEKTwRAIAFBIGsgASABQeEAa0H/AXFBGkkbQcEAayIBQRlLDQFB//+/HyABdkEBcUUNASABLQC4qYsCIRALIABBGGotAAAiAUEwayIRQQpPBEAgAUEgayABIAFB4QBrQf8BcUEaSRtBwQBrIgFBGUsNAUH//78fIAF2QQFxRQ0BIAEtALipiwIhEQsgAEEZai0AACIAQTBrIgFBCk8EQCAAQSBrIAAgAEHhAGtB/wFxQRpJG0HBAGsiAEEZSw0BQf//vx8gAHZBAXFFDQEgAC0AuKmLAiEBCyACQQ1qIA9BBXQgEHKtIAtBCnQgDEEFdHIgDXIiAEEFdCAOcq1CCoaEIhNCBog8AAAgAkEMaiATQg6IPAAAIAJBC2ogAEEHdjoAACACQQpqIAlBBXQiACAKcjoAACACQQlqIACtIAdBBXQgCHKtIANBCnQgBEEFdHIgBXIiAEEFdCAGcq1CCoaEIhRCCoaEQgiIPAAAIAJBCGogFEIGiDwAACACQQdqIBRCDog8AAAgAkEGaiAAQQd2OgAAIAJBD2ogEUEFdCIAIAFyOgAAIAJBDmogAK0gE0IKhoRCCIg8AABBACESCyASC6MBAQN/IAFFBEBBAA8LAkAgAEUNACABQbnz3fF5bCIAQRB2IABzIQBBgBAhAwNAIABBA3RB+P8AcSIEKAKAoIACIgJFDQECQCABIAJGDQAgAEEBakH/D3EiAEEDdCIEKAKAoIACIgJFDQIgASACRg0AIABBAWohACADQQJrIgMNAQwCCwsgBCgChKCAAiIAQQBIDQAgAEEMdA8LIAFBDHRBgCBrCxYAIAFBA3YgAGotAAAgAUEHcXZBAXELhAEBAn8gACABaiEEIAMEQCACQQRqIQJBACEBA0ACQCABQQN2IABqLQAAIAFBB3F2QQFxDQAgASACai0AACIFQQFGBEAgBEEEaiEEDAELIAVB/gFxIgVBAkYEQCAEQQhqIQQMAQsgBEEQaiAEIAVBBkYbIQQLIAMgAUEBaiIBRw0ACwsgBAu4AQEEfyABRQRAQQAPCyABQQNxIQQCQCABQQRPBEAgAEEHaiECIAFBfHEiBSEBA0AgAyACQQNrLQAAQf4BcUEERmogAkECay0AAEH+AXFBBEZqIAJBAWstAABB/gFxQQRGaiACLQAAQf4BcUEERmohAyACQQRqIQIgAUEEayIBDQALIARFDQELIAAgBWpBBGohAgNAIAMgAi0AAEH+AXFBBEZqIQMgAkEBaiECIARBAWsiBA0ACwsgAwtZAQR/AkAgASADIAEgA0kiBRsiBEUNAANAIAAtAAAiBiACLQAAIgdGBEAgAEEBaiEAIAJBAWohAiAEQQFrIgQNAQwCCwtBf0EBIAYgB0kbDwsgASADSyAFawuOAgMGfwJ+AnwCQCAALQAAIAEtAAByBH9BfgUgAUEBai0AACECAkAgAEEBai0AACIDQQJHDQAgAkECRw0AIABBCGopAAAiCCABQQhqKQAAIglVIAggCVNrDwsCQCADQQFrQf8BcUECSw0AIAJBAWtB/wFxQQJLDQBBfyAAQRBqKwAAIgogAUEQaisAACILZCAKIAtjGw8LIABBHGooAAAiAiABQRxqKAAAIgMgAiADSSIFGyIERQ0BIAFBGGooAAAhASAAQRhqKAAAIQADQCAALQAAIgYgAS0AACIHRgRAIABBAWohACABQQFqIQEgBEEBayIEDQEMAwsLQX9BASAGIAdJGwsPCyACIANLIAVrC54FAwN/AnwCfgJAAkACQCABIAEgAkEBdGpBEGovAABqIgEvAAAiAgR/IAFBAmohBQJAAkACQAJAIANBAWsOAwABAgMLQX8gBEEQaisAACIIIAUoAAC3IglkIAggCWMbDwsgBSkAACEKIARBAWotAABBAkYEQCAEQQhqKQAAIgsgClUgCiALVWsPC0F/IARBEGorAAAiCCAKuSIJZCAIIAljGw8LQX8gBEEQaisAACIIIAUrAAAiCWQgCCAJYxsPCyAEQRxqKAAAIQYgBEEYaigAACEEAkAgA0EGRw0AIAJBEEcNACAAQYE8aiEHIABBgDxqIQNBACEBQQAhAgNAAkACQCACQQ1xQQRrDgUAAQEBAAELIAEgA2pBLToAACABQQFqIQELIAEgA2pBMEHXACACIAVqLQAAIgBBoAFJGyAAQQR2ajoAACABIAdqQTBB1wAgAEEPcSIAQQpJGyAAajoAACABQQJqIQEgAkEBaiICQRBHDQALIAZBJEkhACAGRQ0CIAZBJCAAGyEBA0AgBC0AACICIAMtAAAiBUYEQCAEQQFqIQQgA0EBaiEDIAFBAWsiAQ0BDAQLC0F/QQEgAiAFSRsPCwJAIANBB0cNACACQRBHDQAgBSAAQYA8aiIBEFEgBkEaSSEAIAZFDQMgBkEaIAAbIQIDQCAELQAAIgMgAS0AACIFRgRAIARBAWohBCABQQFqIQEgAkEBayICDQEMBQsLQX9BASADIAVJGw8LIAIgBkshACAGRQ0DIAYgAiAAGyEBA0AgBC0AACIDIAUtAAAiB0YEQCAEQQFqIQQgBUEBaiEFIAFBAWsiAQ0BDAULC0F/QQEgAyAHSRsFQQELDwsgBkEkSyAAaw8LIAZBGksgAGsPCyACIAZJIABrC2cBBX8gAUECai8AACIERQRAQX8PCyAEQQFrIQRBfyEFA0AgBSAEIAhqQQF2IgYgACABIAZB//8DcSACIAMQWSIHGyEFIAggBkEBaiAHQQBMIgcbIgggBkEBayAEIAcbIgRMDQALIAULZQEFfyABQQJqLwAAIgRFBEBBfw8LIARBAWshBEF/IQUDQCAEIAdqQQF2IgYgBSAAIAEgBkH//wNxIAIgAxBZQQBMIggbIQUgByAGQQFqIAgbIgcgBkEBayAEIAgbIgRMDQALIAUL4AEBBn8gAQRAQX8hBUF/IQcDQCAFIQkCfyADIARLBEACQCACIARqLQAAIghB3wBHBEAgCEEgciAIIAhBwQBrQf8BcUEaSRsgACAGai0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0cNAQsgBkEBaiEGIAkhBSAHDAILIAYhBSAEIAhBJUYNARoLIAdBf0YEQEEADwsgCUEBaiIFIQYgByIECyEHIARBAWohBCABIAZLDQALCwJAIAMgBE0NAANAIAIgBGotAABBJUcNASADIARBAWoiBEcNAAsgAyEECyADIARGC3IBBX8gA0UEQEEBDwsgASADSQRAQQAPCyABIANrIQYDQCADIQUgACEBIAIhBAJAA0AgAS0AACAELQAARiIHBEAgAUEBaiEBIARBAWohBCAFQQFrIgUNAQwCCwsgAEEBaiEAIAhBAWoiCCAGTQ0BCwsgBwtLAAJAAkAgASADSQ0AIANFBEBBAQ8LA0AgAC0AACACLQAARw0BQQEhASAAQQFqIQAgAkEBaiECIANBAWsiAw0ACwwBC0EAIQELIAELVQACQAJAIAEgA0kNACADRQRAQQEPC0EAIANrIQMgACABaiEAA0AgACADai0AACACLQAARw0BQQEhASACQQFqIQIgA0EBaiIDDQALDAELQQAhAQsgAQtYAQN/IAEEQANAIANBAWohAwJ/QQEgACAEaiwAACICQQBODQAaQQIgAkH/AXEiAkHgAXFBwAFGDQAaQQNBBCACQfABcUHgAUYbCyAEaiIEIAFJDQALCyADC4UDAQZ/AkAgAi0AAARAIANBATsAAAwBCyACQRxqKAAAIgRFBEAgA0GACDsAAAwBCwJAIABBQGsiBSgAACIGIARBB2pBeHFqIgdBgICACEsNACACQRhqKAAAIQggBSAHNgAAIAEgBmoiAUUNAEEAIQICQCAEQQFHBEAgBEEBcSAEQX5xIQYDQCABIAJqIgcgAiAIaiIJLQAAIgBBIHIgACAAQcEAa0H/AXFBGkkbOgAAIAdBAWogCUEBai0AACIAQSByIAAgAEHBAGtB/wFxQRpJGzoAACAGIAJBAmoiAkcNAAtFDQELIAEgAmogAiAIai0AACIAQSByIAAgAEHBAGtB/wFxQRpJGzoAAAsgA0GACDsAACADQRhqIAE2AAAgA0EQakIANwAAIANBCGpCADcAACADQQRqQQA2AAAgA0EcaiAENgAADwsgAEEEakEGNgAADwsgA0EYakEANgAAIANBEGpCADcAACADQQhqQgA3AAAgA0EEakEANgAAIANBHGpBADYAAAuFAwEGfwJAIAItAAAEQCADQQE7AAAMAQsgAkEcaigAACIERQRAIANBgAg7AAAMAQsCQCAAQUBrIgUoAAAiBiAEQQdqQXhxaiIHQYCAgAhLDQAgAkEYaigAACEIIAUgBzYAACABIAZqIgFFDQBBACECAkAgBEEBRwRAIARBAXEgBEF+cSEGA0AgASACaiIHIAIgCGoiCS0AACIAQSBrIAAgAEHhAGtB/wFxQRpJGzoAACAHQQFqIAlBAWotAAAiAEEgayAAIABB4QBrQf8BcUEaSRs6AAAgBiACQQJqIgJHDQALRQ0BCyABIAJqIAIgCGotAAAiAEEgayAAIABB4QBrQf8BcUEaSRs6AAALIANBgAg7AAAgA0EYaiABNgAAIANBEGpCADcAACADQQhqQgA3AAAgA0EEakEANgAAIANBHGogBDYAAA8LIABBBGpBBjYAAA8LIANBGGpBADYAACADQRBqQgA3AAAgA0EIakIANwAAIANBBGpBADYAACADQRxqQQA2AAALigIBBX9BASEGIAAtAABFBEAgAEEYaigAACEEQQAhBgJAIABBHGooAAAiAEUNAAJAA0AgAiAEai0AAEEJayIDQRdLDQFBASADdEGTgIAEcUUNASAAIAJBAWoiAkcNAAsgACICIQMMAQsgACACTQRAIAAhAwwBCyAEQQFr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IQggACADIAEgB2oiBC0AACAEQQFqLQAAIARBAmotAAAgBEEDai0AABB4IgRFDTgMQwsgBUEDaiEIIAEgB2oiBEEBai0AAEEFdCIGIAQtAABBBXQiBUYNNyAGIAxqIgQgBSAMaiIGKQAYNwAYIAQgBikAEDcAECAEIAYpAAg3AAggBCAGKQAANwAADDcLIAVBBGohCCABIAdqIgVBAmotAABBBXQiCSAMaiEGAkAgBUEBai0AACIERQ0AIAUtAABBBXQhBQNAIAUgDGoiBy0AAARAIAVBIGohBSAEQQFrIgQNAQwCCwsgBSAJRg03IAYgBykAGDcAGCAGIAcpABA3ABAgBiAHKQAINwAIIAYgBykAADcAAAw3CyAGQQE7AAAgBkEYakIANwAAIAZBEGpCADcAACAGQQhqQgA3AAAgBkEEakEANgAADDYLIAAgAyABIAdqIggtAAAgCEEBai0AACAIQQJqLQAAEGYgBUEEaiEIDDULIAVBBGohCCABIAdqIgZBAmotAABBBXQgDGohBAJAIAYtAABBBXQgDGoiBS0AAEUEQCAGQQFqLQAAQQV0IAxqIgYtAABFDQELIARBATsAACAEQRhqQgA3AAAgBEEQakIANwAAIARBCGpCADcAACAEQQRqQQA2AAAMNQsgBkEQaisAACIbRAAAAAAAAAAAYQRAIARBATsAACAEQRhqQgA3AAAgBEEQakIANwAAIARBCGpCADcAACAEQQRqQQA2AAAMNQsgBUEQaisAACEcIARBGGpCADcAACAEQYAGOwAAIARBEGogHCAcIBuj/Aa5IBuioSIbOQAAIARBCGogG/wGNwAAIARBBGogG/wCNgAADDQLIAVBBGohCCABIAdqIgZBAmotAABBBXQgDGohBAJAIAYtAABBBXQgDGoiBS0AAEUEQCAGQQFqLQAAQQV0IAxqIgYtAABFDQELIARBATsAACAEQRhqQgA3AAAgBEEQakIANwAAIARBCGpCADcAACAEQQRqQQA2AAAMNAsgBkEQaisAACIbRAAAAAAAAAAAYQRAIARBATsAACAEQRhqQgA3AAAgBEEQakIANwAAIARBCGpCADcAACAEQQRqQQA2AAAMNAsgBUEQaisAACEcIARBGGpCADcAACAEQYAGOwAAIARBEGogHCAboyIbOQAAIARBCGogG/wGNwAAIARBBGog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";let jn=null;function Da(){if(!jn){const t=globalThis.Buffer;if(typeof t<"u"&&typeof t.from=="function")jn=new Uint8Array(t.from(yo,"base64"));else{const e=atob(yo),A=e.length;jn=new Uint8Array(A);for(let n=0;n<A;n++)jn[n]=e.charCodeAt(n)}}return jn}const qu=new TextDecoder,Fa=new Uint8Array([87,69,66,68,66,0]),La=new Uint32Array(256);let ba=0;function Mu(){if(!ba){for(let t=0;t<256;t++){let e=t;for(let A=0;A<8;A++)e=e&1?3988292384^e>>>1:e>>>1;La[t]=e>>>0}ba=1}}function po(t,e=0){Mu();let A=4294967295;for(let n=0;n<4096;n++){const s=n>=28&&n<=31?0:t.getUint8(e+n);A=La[(A^s)&255]^A>>>8}return(A^4294967295)>>>0}function Oa(t,e=0){Zt(t,e,0,4096),t.setUint8(e+oA+0,87),t.setUint8(e+oA+1,69),t.setUint8(e+oA+2,66),t.setUint8(e+oA+3,68),t.setUint8(e+oA+4,66),t.setUint8(e+oA+5,0),t.setUint16(e+hi,4096,!0),t.setUint16(e+fi,us,!0),t.setUint16(e+Ci,ur,!0),t.setUint32(e+qe,1,!0),t.setUint32(e+We,0,!0),t.setUint32(e+rA,1,!0),t.setUint32(e+aA,0,!0),t.setUint32(e+cA,0,!0),t.setUint32(e+bA,0,!0),t.setUint32(e+OA,0,!0);const A=po(t,e);t.setUint32(e+cA,A,!0)}function $n(t,e=!1){for(let l=0;l<Fa.length;l++)if(t.getUint8(oA+l)!==Fa[l])throw new Nn("Invalid database file: magic bytes mismatch");const A=t.getUint16(hi,!0),n=t.getUint16(fi,!0),s=t.getUint16(Ci,!0),i=t.getUint32(qe,!0),o=t.getUint32(We,!0),r=t.getUint32(rA,!0),a=t.getUint32(aA,!0),c=t.getUint32(cA,!0);if(s>us)throw new dr(`Database file format requires engine version >= ${s}, but running engine is version ${us}`);if(e&&c!==0){const l=po(t,0);if(l!==c)throw new hA(1,c,l)}return{pageSize:A,fileFormatVersion:n,minReadVersion:s,totalPages:i,freePageHead:o,schemaVersion:r,changeCounter:a,storedChecksum:c}}function Pa(t,e=0){return t.getUint32(e+qe,!0)}function Hu(t,e,A){A===void 0&&(A=e,e=0),t.setUint32(e+qe,A,!0)}function Yu(t,e=0){return t.getUint32(e+We,!0)}function Vu(t,e,A){A===void 0&&(A=e,e=0),t.setUint32(e+We,A,!0)}function Ga(t,e=0){return t.getUint32(e+rA,!0)}function HA(t,e=0){const A=Ga(t,e)+1;return t.setUint32(e+rA,A,!0),A}function wa(t,e=0){return t.getUint32(e+aA,!0)}function Ve(t,e=0){const A=wa(t,e)+1;return t.setUint32(e+aA,A,!0),A}function Te(t,e=0){t.setUint32(e+cA,0,!0);const A=po(t,e);return t.setUint32(e+cA,A,!0),A}function Zs(t,e,A,n){let s=0;for(;s<n&&s<ds(A);s++)t.setUint8(e+s,A.charCodeAt(s));for(;s<n;s++)t.setUint8(e+s,0)}function js(t,e,A){const n=[];for(let s=0;s<A;s++){const i=t.getUint8(e+s);if(i===0)break;n.push(i)}return qu.decode(new Uint8Array(n))}function ka(t){switch(t.toUpperCase()){case"INT32":return _.INT32;case"INT64":return _.INT64;case"FLOAT64":return _.FLOAT64;case"TEXT":return _.TEXT;case"BLOB":return _.BLOB;case"UUID":return _.UUID;case"ULID":return _.ULID;default:throw new Error(`Unsupported column data type: "${t}"`)}}const YA=31,xu=1,Xu=2;function xe(t,e,A){var s;if(e<=1)return t;if(A){const i=A.getPageBytes(e);if(i&&i.byteLength>=4096)return new DataView(i.buffer,i.byteOffset,4096)}const n=(s=t.buffer)==null?void 0:s.__webdbPool;if(n&&typeof n.getResidentSlot=="function"){const i=n.getResidentSlot(e);if(i!==-1)return n.getSlotDataView(i)}return t.buffer.byteLength>=e*4096?new DataView(t.buffer,(e-1)*4096,4096):null}function pA(t,e,A,n){var r;const s=new Uint8Array(A.buffer,A.byteOffset,4096),i=fA(s);A.setUint32(12,i,!0),n!=null&&n.markPageDirty&&n.markPageDirty(e);const o=(r=t.buffer)==null?void 0:r.__webdbPool;if(o&&typeof o.getResidentSlot=="function"){const a=o.getResidentSlot(e);a!==-1&&o.markDirty(a)}}function nn(t,e){let A=Le,n=t.getUint32(bA,!0);for(;n!==0;){const s=xe(t,n,e);if(!s)break;A+=YA,n=s.getUint32(8,!0)}return A}function $s(t,e,A){if(e<0)return null;if(e<Le)return{view:t,offset:ns+e*uA,pageId:1};const n=e-Le,s=Math.floor(n/YA),i=n%YA;let o=t.getUint32(bA,!0);for(let a=0;a<s;a++){if(o===0)return null;const c=xe(t,o,A);if(!c)return null;o=c.getUint32(8,!0)}if(o===0)return null;const r=xe(t,o,A);return r?{view:r,offset:dn+i*uA,pageId:o}:null}function qa(t,e,A){const n=nn(t,A),s=xe(t,e,A);if(!s)return-1;ti(s,0,0,n,0),s.setUint8(1,xu),pA(t,e,s,A);const i=t.getUint32(bA,!0);if(i===0)t.setUint32(bA,e,!0);else{let o=i;for(;o!==0;){const r=xe(t,o,A);if(!r)break;const a=r.getUint32(8,!0);if(a===0){r.setUint32(8,e,!0),pA(t,o,r,A);break}o=a}}return n}function Ee(t,e,A){const n=$s(t,e,A);if(!n)return null;const{view:s,offset:i}=n,o=s.getUint16(i+0,!0);if(o===0)return null;const r=s.getUint16(i+2,!0),a=s.getUint32(i+4,!0),c=s.getUint32(i+8,!0),l=js(s,i+12,ke),u=s.getUint32(i+76,!0),g=s.getUint32(i+80,!0),E=s.getBigUint64(i+84,!0),h=s.getUint32(i+92,!0),B=s.getUint8(i+96),Q=s.getUint8(i+97),d=[];for(let p=0;p<8;p++)d.push(s.getUint16(i+98+p*2,!0));return{tableId:o,columnCount:r,rootPageId:a,colCatalogPageId:c,name:l,flags:u,rowCountEstimate:g,autoIncNext:E,pkRootPageId:h>0?h:void 0,pkColumnCount:h>0?B:void 0,pkFlags:h>0?Q:void 0,pkColumnIndices:h>0?d:void 0}}function VA(t,e,A,n){var c;const s=$s(t,e,n);if(!s)throw new Error(`Invalid table descriptor slot ${e}`);const{view:i,offset:o,pageId:r}=s;if(i.setUint16(o+0,A.tableId,!0),i.setUint16(o+2,A.columnCount,!0),i.setUint32(o+4,A.rootPageId,!0),i.setUint32(o+8,A.colCatalogPageId,!0),Zs(i,o+12,A.name,ke),i.setUint32(o+76,A.flags,!0),i.setUint32(o+80,A.rowCountEstimate,!0),i.setBigUint64(o+84,A.autoIncNext,!0),new Uint8Array(i.buffer,i.byteOffset).fill(0,o+92,o+uA),A.pkRootPageId&&A.pkRootPageId>0){i.setUint32(o+92,A.pkRootPageId,!0),i.setUint8(o+96,A.pkColumnCount??1),i.setUint8(o+97,A.pkFlags??ft.PRIMARY|ft.UNIQUE);for(let l=0;l<8;l++)i.setUint16(o+98+l*2,((c=A.pkColumnIndices)==null?void 0:c[l])??0,!0)}r>1&&pA(t,r,i,n)}function Uo(t){return t.pkRootPageId&&t.pkRootPageId>0&&t.pkColumnCount&&t.pkColumnCount>0&&(t.pkFlags??ft.PRIMARY|ft.UNIQUE)&ft.PRIMARY?{indexId:32768+t.tableId,tableId:t.tableId,rootPageId:t.pkRootPageId,columnCount:t.pkColumnCount,flags:t.pkFlags??ft.PRIMARY|ft.UNIQUE,columnIndices:t.pkColumnIndices?[...t.pkColumnIndices]:[0,0,0,0,0,0,0,0],colDirections:[0,0,0,0,0,0,0,0],name:`pk_${t.name}`}:null}function Ju(t,e,A){const n=Se(t,e,A);return n!==-1?Ee(t,n,A):null}function Se(t,e,A){const n=nn(t,A);for(let s=0;s<n;s++){const i=Ee(t,s,A);if(i&&i.flags&kA.ACTIVE&&i.name===e)return s}return-1}function To(t,e=0,A){for(let n=0;n<Le;n++){const s=e+ns+n*uA;if(t.getUint16(s,!0)===0)return n}if(e===0){const n=nn(t,A);for(let s=Le;s<n;s++){const i=$s(t,s,A);if(i&&i.view.getUint16(i.offset,!0)===0)return s}}return-1}function UA(t,e){const A=[],n=nn(t,e);for(let s=0;s<n;s++){const i=Ee(t,s,e);i&&i.flags&kA.ACTIVE&&A.push(i)}return A}function TA(t,e){let A=on,n=t.getUint32(OA,!0);for(;n!==0;){const s=xe(t,n,e);if(!s)break;A+=YA,n=s.getUint32(8,!0)}return A}function zs(t,e,A){if(e<0)return null;if(e<on)return{view:t,offset:ss+e*gA,pageId:1};const n=e-on,s=Math.floor(n/YA),i=n%YA;let o=t.getUint32(OA,!0);for(let a=0;a<s;a++){if(o===0)return null;const c=xe(t,o,A);if(!c)return null;o=c.getUint32(8,!0)}if(o===0)return null;const r=xe(t,o,A);return r?{view:r,offset:dn+i*gA,pageId:o}:null}function Ma(t,e,A){const n=TA(t,A),s=xe(t,e,A);if(!s)return-1;ti(s,0,0,n,0),s.setUint8(1,Xu),pA(t,e,s,A);const i=t.getUint32(OA,!0);if(i===0)t.setUint32(OA,e,!0);else{let o=i;for(;o!==0;){const r=xe(t,o,A);if(!r)break;const a=r.getUint32(8,!0);if(a===0){r.setUint32(8,e,!0),pA(t,o,r,A);break}o=a}}return n}function sn(t,e,A){const n=zs(t,e,A);if(!n)return null;const{view:s,offset:i}=n,o=s.getUint16(i+0,!0);if(o===0)return null;const r=s.getUint16(i+2,!0),a=s.getUint32(i+4,!0),c=s.getUint8(i+8),l=s.getUint8(i+9),u=[];for(let h=0;h<8;h++)u.push(s.getUint16(i+10+h*2,!0));const g=[];for(let h=0;h<8;h++)g.push(s.getUint8(i+26+h));const E=js(s,i+34,ke);return{indexId:o,tableId:r,rootPageId:a,columnCount:c,flags:l,columnIndices:u,colDirections:g,name:E}}function So(t,e,A,n){const s=zs(t,e,n);if(!s)throw new Error(`Invalid index descriptor slot ${e}`);const{view:i,offset:o,pageId:r}=s;i.setUint16(o+0,A.indexId,!0),i.setUint16(o+2,A.tableId,!0),i.setUint32(o+4,A.rootPageId,!0),i.setUint8(o+8,A.columnCount),i.setUint8(o+9,A.flags);for(let c=0;c<8;c++)i.setUint16(o+10+c*2,A.columnIndices[c]??0,!0);for(let c=0;c<8;c++)i.setUint8(o+26+c,A.colDirections[c]??0);Zs(i,o+34,A.name,ke),new Uint8Array(i.buffer,i.byteOffset).fill(0,o+98,o+gA),r>1&&pA(t,r,i,n)}const on=8;function Ha(t,e=0,A){for(let n=0;n<on;n++){const s=e+ss+n*gA;if(t.getUint16(s+0,!0)===0)return n}if(e===0){const n=TA(t,A);for(let s=on;s<n;s++){const i=zs(t,s,A);if(i&&i.view.getUint16(i.offset,!0)===0)return s}}return-1}function vs(t,e,A){const n=e.toLowerCase(),s=TA(t,A);for(let o=0;o<s;o++){const r=sn(t,o,A);if(r&&r.name.toLowerCase()===n)return{slotIdx:o,desc:r}}const i=nn(t,A);for(let o=0;o<i;o++){const r=Ee(t,o,A);if(r&&r.flags&kA.ACTIVE){const a=Uo(r);if(a&&a.name.toLowerCase()===n)return{slotIdx:-(o+1),desc:a}}}return null}function Xe(t,e,A){const n=[];let s=!1;const i=e-1;let o=i>=0?Ee(t,i,A):null;if((!o||o.tableId!==e)&&(o=UA(t,A).find(c=>c.tableId===e)??null),o&&o.flags&kA.ACTIVE){const a=Uo(o);a&&(n.push(a),s=!0)}const r=TA(t,A);for(let a=0;a<r;a++){const c=sn(t,a,A);if(c&&c.tableId===e){if(s&&c.flags&ft.PRIMARY)continue;n.push(c)}}return n}function Ya(t,e){const A=[],n=UA(t,e),s=new Set;for(const o of n){s.add(o.tableId);const r=Xe(t,o.tableId,e);for(const a of r)A.push(a)}const i=TA(t,e);for(let o=0;o<i;o++){const r=sn(t,o,e);r&&!s.has(r.tableId)&&A.push(r)}return A}function No(t,e,A){if(A===void 0&&(A=e,e=0),A<on){const n=e+ss+A*gA;return Zt(t,n,0,gA),0}if(e===0){const n=zs(t,A);return n?(Zt(n.view,n.offset,0,gA),n.pageId>1&&pA(t,n.pageId,n.view),0):-1}return-1}function Va(t,e,A){if(A===void 0&&(A=e,e=0),A<Le){const n=e+ns+A*uA;return Zt(t,n,0,uA),0}if(e===0){const n=$s(t,A);return n?(Zt(n.view,n.offset,0,uA),n.pageId>1&&pA(t,n.pageId,n.view),0):-1}return-1}function ti(t,e,A,n,s=0){Zt(t,e,0,4096),t.setUint8(e+0,Un),t.setUint8(e+1,0),t.setUint16(e+2,0,!0),t.setUint16(e+4,A,!0),t.setUint16(e+6,n,!0),t.setUint32(e+8,s,!0),t.setUint32(e+12,0,!0)}function eA(t,e){return{pageType:t.getUint8(e+0),flags:t.getUint8(e+1),colCountInPage:t.getUint16(e+2,!0),tableId:t.getUint16(e+4,!0),startColIndex:t.getUint16(e+6,!0),nextColCatalogPageId:t.getUint32(e+8,!0),pageChecksum:t.getUint32(e+12,!0)}}function Wu(t,e,A,n,s,i){t.setUint8(e+0,Un),t.setUint8(e+1,0),t.setUint16(e+2,A,!0),t.setUint16(e+4,n,!0),t.setUint16(e+6,s,!0),t.setUint32(e+8,i,!0)}function Ro(t,e,A,n){if(A<0||A>=lA)throw new Error(`Invalid catalog in-page slot ${A}`);const s=e+dn+A*di;t.setUint8(s+0,n.type),t.setUint8(s+1,n.flags),t.setUint16(s+2,n.colOffset,!0),Zs(t,s+4,n.name,ke),t.setUint32(s+68,0,!0)}function xa(t,e,A){const n=e+dn+A*di,s=t.getUint8(n+0),i=t.getUint8(n+1),o=t.getUint16(n+2,!0),r=js(t,n+4,ke);return{type:s,flags:i,colOffset:o,name:r}}function Xa(t){return{pageChainIdx:Math.floor(t/lA),colIdxInPage:t%lA}}function Ja(t,e,A,n){var F,D,O,w,P;if(n.length===0)throw new Error("Table must have at least one column");if(n.length>Ke)throw new Sn(n.length,Ke);if(Se(t,A,e)!==-1)throw new Bs(A);let s=To(t,0,e);if(s===-1){const I=e.allocateNewPage();if(!I||I<=1)throw new Vi(Le+1,Le);if(s=qa(t,I,e),s===-1)throw new Vi(Le+1,Le)}const i=s+1,o=e.allocateNewPage(),r=e.getPageBytes(o),a=new DataView(r.buffer,r.byteOffset);a.setUint8(0,13),a.setUint8(1,0),a.setUint16(2,0,!0),a.setUint16(4,4096,!0),a.setUint32(6,0,!0),a.setUint16(10,0,!0),a.setUint32(12,0,!0),e.markPageDirty(o);const c=[];let l=0;for(let I=0;I<n.length;I++){const b=n[I],H=typeof b.type=="string"?ka(b.type):b.type;let J=0;typeof b.flags=="number"?J=b.flags:((b.primaryKey||(F=b.flags)!=null&&F.primaryKey)&&(J|=gt.PRIMARY_KEY),(b.notNull||(D=b.flags)!=null&&D.notNull)&&(J|=gt.NOT_NULL),(b.indexed||(O=b.flags)!=null&&O.indexed)&&(J|=gt.INDEXED),(b.autoInc||b.autoIncrement||(w=b.flags)!=null&&w.autoInc||(P=b.flags)!=null&&P.autoIncrement)&&(J|=gt.AUTO_INC));const ot=l;switch(H){case _.INT32:l+=4;break;case _.INT64:case _.FLOAT64:l+=8;break;case _.UUID:case _.ULID:l+=16;break}c.push({type:H,flags:J,colOffset:ot,name:b.name})}const u=c.length,g=Math.ceil(u/lA),E=[];for(let I=0;I<g;I++)E.push(e.allocateNewPage());for(let I=0;I<g;I++){const b=E[I],H=I<g-1?E[I+1]:0,J=I*lA,ot=Math.min(u-J,lA),rt=e.getPageBytes(b),x=new DataView(rt.buffer,rt.byteOffset);ti(x,0,i,J,H),x.setUint16(2,ot,!0);for(let Ft=0;Ft<ot;Ft++){const bt=c[J+Ft];Ro(x,0,Ft,bt)}const X=fA(rt);x.setUint32(12,X,!0),e.markPageDirty(b)}const h=E[0],B=[];for(let I=0;I<c.length;I++)c[I].flags>.PRIMARY_KEY&&B.push(c[I]);let Q=0,d=0,p=0;const U=[0,0,0,0,0,0,0,0];if(B.length>0){Q=e.allocateNewPage();const I=e.getPageBytes(Q),b=new DataView(I.buffer,I.byteOffset);Rs(b,0,0),e.markPageDirty(Q),d=Math.min(B.length,8),p=ft.PRIMARY|ft.UNIQUE;for(let H=0;H<d;H++){const J=B[H].name;let ot=0;for(let rt=0;rt<c.length;rt++)if(c[rt].name===J){ot=rt;break}U[H]=ot}}const N={tableId:i,columnCount:u,rootPageId:o,colCatalogPageId:h,name:A,flags:kA.ACTIVE,rowCountEstimate:0,autoIncNext:1n,pkRootPageId:Q>0?Q:void 0,pkColumnCount:Q>0?d:void 0,pkFlags:Q>0?p:void 0,pkColumnIndices:Q>0?U:void 0};VA(t,s,N,e),HA(t),Ve(t),Te(t);const m=Xe(t,i,e),T=[];for(let I=0;I<B.length;I++)T.push(B[I].name);return{...N,columns:c,primaryKey:T.length>0?T:void 0,indexes:m.length>0?m:void 0}}function Do(t,e,A){const n=Se(t,A,e);if(n===-1)throw new Tn(A);const s=Ee(t,n,e),i=[];let o=s.colCatalogPageId,r=0;for(;o!==0&&r<s.columnCount;){const l=e.getPageBytes(o),u=new DataView(l.buffer,l.byteOffset),g=eA(u,0);for(let E=0;E<g.colCountInPage;E++){const h=xa(u,0,E);i.push(h),r++}o=g.nextColCatalogPageId}const a=Xe(t,s.tableId,e),c=[];for(let l=0;l<i.length;l++)i[l].flags>.PRIMARY_KEY&&c.push(i[l].name);return{...s,columns:i,primaryKey:c.length>0?c:void 0,indexes:a.length>0?a:void 0}}function Ku(t,e){const A=UA(t,e),n=[];for(let s=0;s<A.length;s++)n.push(Do(t,e,A[s].name));return n}const Wa=new TextEncoder;function ei(t,e){const A=e??Da(),n=new WebAssembly.Module(A),s=new WebAssembly.Instance(n,{env:{memory:t}}),i=s.exports;i.__stack_pointer&&typeof i.__stack_pointer=="object"&&"value"in i.__stack_pointer&&(i.__stack_pointer.value=4378624);const o=(l,u=0)=>l.byteOffset+u;let r=new Uint8Array(t.buffer);const a=()=>(r.buffer!==t.buffer&&(r=new Uint8Array(t.buffer)),r);return{instance:s,exports:i,memory:t,page_init:(l,u,g=gs,E=0)=>{i.page_init(o(l,u),g,E)},page_init_free:(l,u,g=0)=>{i.page_init_free(o(l,u),g)},page_get_type:(l,u)=>i.page_get_type(o(l,u)),page_set_type:(l,u,g)=>{i.page_set_type(o(l,u),g)},page_get_cell_count:(l,u)=>i.page_get_cell_count(o(l,u)),page_set_cell_count:(l,u,g)=>{i.page_set_cell_count(o(l,u),g)},page_get_cell_content_offset:(l,u)=>i.page_get_cell_content_offset(o(l,u)),page_set_cell_content_offset:(l,u,g)=>{i.page_set_cell_content_offset(o(l,u),g)},page_get_next_page_id:(l,u)=>i.page_get_next_page_id(o(l,u)),page_set_next_page_id:(l,u,g)=>{i.page_set_next_page_id(o(l,u),g)},page_get_free_bytes:(l,u)=>i.page_get_free_bytes(o(l,u)),page_set_free_bytes:(l,u,g)=>{i.page_set_free_bytes(o(l,u),g)},page_get_checksum:(l,u)=>i.page_get_checksum(o(l,u)),page_set_checksum:(l,u,g)=>{i.page_set_checksum(o(l,u),g)},page_get_cell_offset:(l,u,g)=>i.page_get_cell_offset(o(l,u),g),page_set_cell_offset:(l,u,g,E)=>{i.page_set_cell_offset(o(l,u),g,E)},page_get_contiguous_free_space:(l,u)=>i.page_get_contiguous_free_space(o(l,u)),page_get_total_free_space:(l,u)=>i.page_get_total_free_space(o(l,u)),page_compact:(l,u,g=0,E)=>{E||l.buffer!==t.buffer?bn(l,u,g,E):i.page_compact_raw(o(l,u),g)},page_get_row_length:(l,u)=>i.page_get_row_length(o(l,u)),page_insert_row:(l,u,g,E=0)=>l.buffer===t.buffer&&i.page_insert_row_raw?(a().set(g,zt),i.page_insert_row_raw(o(l,u),zt,g.byteLength,E)):Pn(l,u,g,E),page_delete_row:(l,u,g)=>{i.page_delete_row(o(l,u),g)},page_update_row:(l,u,g,E,h=0)=>vi(l,u,g,E,h),page_insert_index_leaf_cell:(l,u,g,E,h,B=0)=>{if(l.buffer===t.buffer&&i.page_insert_index_cell_raw){const Q=o(l,u);if(g===_.NULL||E===null||E===void 0)return i.page_insert_index_cell_raw(Q,_.NULL,0n,0,0,0,h,B);if(g===_.INT32)return i.page_insert_index_cell_raw(Q,_.INT32,0n,Number(E)|0,0,4,h,B);if(g===_.INT64){const U=BigInt(E);return i.page_insert_index_cell_raw(Q,_.INT64,U,Number(U),0,8,h,B)}if(g===_.FLOAT64)return i.page_insert_index_cell_raw(Q,_.FLOAT64,0n,Number(E),0,8,h,B);const d=a();let p=0;if(g===_.UUID)CA.encode(String(E),d,zt),p=16;else if(g===_.ULID)QA.encode(String(E),d,zt),p=16;else if(g===_.TEXT)p=Wa.encodeInto(String(E),d.subarray(zt,zt+8192)).written;else{const U=E instanceof Uint8Array?E:new Uint8Array(E);p=U.byteLength,d.set(U,zt)}return i.page_insert_index_cell_raw(Q,g,0n,0,zt,p,h,B)}return eo(l,u,g,E,h,B)},page_delete_index_leaf_cell:(l,u,g)=>{l.buffer===t.buffer&&i.page_delete_index_leaf_cell?i.page_delete_index_leaf_cell(o(l,u),g):Ao(l,u,g)},page_binary_search_index_leaf:(l,u,g,E,h)=>{if(l.buffer===t.buffer&&i.page_binary_search_index_raw){const B=o(l,u),Q=h!==void 0?1:0,d=h!==void 0?h:0n;let p=g;if((g===_.NULL||E===null||E===void 0)&&(p=_.NULL),p===_.NULL||p===_.INT32||p===_.INT64||p===_.FLOAT64){const T=p===_.NULL?0:Number(E),F=i.page_binary_search_index_raw(B,p,T,0,0,Q,d);return F>=0?{found:!0,slot_idx:F}:{found:!1,slot_idx:-F-1}}const U=a();let N=0;if(p===_.UUID)CA.encode(String(E),U,zt),N=16;else if(p===_.ULID)QA.encode(String(E),U,zt),N=16;else if(p===_.TEXT)N=Wa.encodeInto(String(E),U.subarray(zt,zt+8192)).written;else{const T=E instanceof Uint8Array?E:new Uint8Array(E);N=T.byteLength,U.set(T,zt)}const m=i.page_binary_search_index_raw(B,p,0,zt,N,Q,d);return m>=0?{found:!0,slot_idx:m}:{found:!1,slot_idx:-m-1}}return Ls(l,u,g,E,h)},page_table_hash:(l,u)=>i.page_table_hash(l,u),page_table_get:(l,u,g,E)=>i.page_table_get(o(l,u),g,E),page_table_set:(l,u,g,E,h)=>{if(i.page_table_set(o(l,u),g,E,h)<0)throw new Error(`BufferPool page table full: cannot insert page ${E}`)},page_table_delete:(l,u,g,E)=>i.page_table_delete(o(l,u),g,E)!==0,buf_pool_get_slot_offset:l=>i.buf_pool_get_slot_offset(l),buf_pool_read_slot_to_page:(l,u,g)=>i.buf_pool_read_slot_to_page(o(l,u),g),buf_pool_write_slot_to_page:(l,u,g,E)=>{i.buf_pool_write_slot_to_page(o(l,u),g,E)},buf_pool_get_resident_slot:(l,u,g,E)=>i.buf_pool_get_resident_slot(o(l,u),g,E),buf_pool_assign_slot:(l,u,g,E,h,B)=>{i.buf_pool_assign_slot(o(l,u),o(l,g),E,h,B)},buf_pool_unassign_slot:(l,u,g,E,h)=>{i.buf_pool_unassign_slot(o(l,u),o(l,g),E,h)},buf_pool_mark_dirty:(l,u,g)=>{i.buf_pool_mark_dirty(o(l,u),g)},buf_pool_clear_dirty:(l,u,g)=>{i.buf_pool_clear_dirty(o(l,u),g)},buf_pool_is_dirty:(l,u,g)=>i.buf_pool_is_dirty(o(l,u),g)!==0,buf_pool_pin_slot:(l,u)=>{oo(l,u)},buf_pool_unpin_slot:(l,u)=>{ro(l,u)},buf_pool_is_pinned:(l,u)=>zA(l,u),buf_pool_find_victim:(l,u,g,E,h,B)=>ao(l,u,g,E,h,B),buf_pool_select_eviction_victim:(l,u,g,E,h,B,Q,d)=>co(l,u,g,E,h,B,Q,d),catalog_init_page1:l=>{i.catalog_init_page1(o(l))},catalog_read_page1_header:(l,u)=>$n(l,u),catalog_get_total_pages:l=>i.catalog_get_total_pages(o(l)),catalog_set_total_pages:(l,u)=>{i.catalog_set_total_pages(o(l),u)},catalog_get_free_page_head:l=>i.catalog_get_free_page_head(o(l)),catalog_set_free_page_head:(l,u)=>{i.catalog_set_free_page_head(o(l),u)},catalog_get_schema_version:l=>i.catalog_get_schema_version(o(l)),catalog_increment_schema_version:l=>i.catalog_increment_schema_version(o(l)),catalog_get_change_counter:l=>i.catalog_get_change_counter(o(l)),catalog_increment_change_counter:l=>i.catalog_increment_change_counter(o(l)),catalog_update_page1_checksum:l=>i.catalog_update_page1_checksum(o(l)),sql_like_match:(l,u)=>Zn(l,u),fnv1a_32:l=>Na(l),compare_sorter_keys:Sa,vm_step:(l,u,g)=>mo(l,u,g,(E,h,B,Q,d)=>i.vm_step_raw(h,B,Q,d),t.buffer)}}let Fo=null;const Ka=new WeakMap;function Ai(t,e,A){var i,o,r;const n=(o=(i=globalThis.process)==null?void 0:i.env)==null?void 0:o.WEBDB_CORE;if((n==="wasm"||n==="js"?n:globalThis.__WEBDB_DEFAULT_CORE__)==="wasm"){const a=(r=e.buffer)==null?void 0:r.__webdbPool;if(a!=null&&a.wasmMemory){let c=Ka.get(e.buffer);return c||(c=ei(a.wasmMemory),Ka.set(e.buffer,c)),c.vm_step(t,e,A)}if(!Fo){const c=Math.ceil(mi/65536),l=new WebAssembly.Memory({initial:c,maximum:c});Fo=ei(l)}return Fo.vm_step(t,e,A)}return ku(t,e,A)}function Za(t=PA,e=IA){const A=yi(t,e),n=A.transientArenaOffset+Math.min(e,2*1024*1024),s=Math.ceil(n/65536),i=Math.ceil((A.transientArenaOffset+e)/65536);return new WebAssembly.Memory({initial:s,maximum:Math.max(s,i)})}class ja{constructor(e){G(this,"io");G(this,"wasmMemory");G(this,"buffer");G(this,"view");G(this,"uint8");G(this,"slotCount");G(this,"maxQueryMemory");G(this,"offsets");G(this,"slotsEndOffset");G(this,"slotToPageOffset");G(this,"pageToSlotOffset");G(this,"pageToSlotBuckets");G(this,"dirtyMaskOffset");G(this,"vmContextOffset");G(this,"resultBufferOffset");G(this,"bytecodeOffset");G(this,"pageScratchpadOffset");G(this,"transientArenaOffset");G(this,"pin_counts");G(this,"slot_dirty_generations");G(this,"ref_bits");G(this,"slot_views");G(this,"clock_hand",0);G(this,"arena_offset",0);G(this,"in_flight_acquires",new Map);G(this,"allocation_lock",Promise.resolve());var n,s,i;this.slotCount=e.slotCount??((n=e.pool)==null?void 0:n.slotCount)??PA,this.maxQueryMemory=e.maxQueryMemory??((s=e.pool)==null?void 0:s.maxQueryMemory)??IA;const A=e.memory??((i=e.pool)==null?void 0:i.wasmMemory);if(!A)throw new Error("BufferPoolDriver requires a valid WebAssembly.Memory (or pool with wasmMemory)");this.wasmMemory=A,this.buffer=this.wasmMemory.buffer,this.buffer.__webdbPool=this,this.view=new DataView(this.buffer),this.uint8=new Uint8Array(this.buffer),this.offsets=yi(e.useDefaultLayoutOffsets?PA:this.slotCount,this.maxQueryMemory),this.slotsEndOffset=this.offsets.slotsEndOffset,this.slotToPageOffset=this.offsets.slotToPageOffset,this.pageToSlotOffset=this.offsets.pageToSlotOffset,this.pageToSlotBuckets=this.offsets.pageToSlotBuckets,this.dirtyMaskOffset=this.offsets.dirtyMaskOffset,this.vmContextOffset=this.offsets.vmContextOffset,this.resultBufferOffset=this.offsets.resultBufferOffset,this.bytecodeOffset=this.offsets.bytecodeOffset,this.pageScratchpadOffset=this.offsets.pageScratchpadOffset,this.transientArenaOffset=this.offsets.transientArenaOffset,this.ref_bits=new Uint8Array(this.slotCount),this.pin_counts=new Uint32Array(this.slotCount),this.slot_dirty_generations=new Uint32Array(this.slotCount),this.slot_views=new Array(this.slotCount);for(let o=0;o<this.slotCount;o++)this.slot_views[o]=new DataView(this.buffer,o*4096,4096);if(e.io)this.io=e.io;else if(e.vfs)this.io=new Ki({vfs:e.vfs,memory:this.wasmMemory});else throw new Error("BufferPoolDriver requires either an Io instance or IVfsAdapter");Zt(this.uint8,this.slotToPageOffset,0,this.slotCount*4),Zt(this.uint8,this.pageToSlotOffset,0,this.pageToSlotBuckets*EA),Zt(this.uint8,this.dirtyMaskOffset,0,Math.ceil(this.slotCount/8)),this.assignSlot(0,1),this.pin_counts[0]=1}validate_slot_idx(e){if(!Number.isInteger(e)||e<0||e>=this.slotCount)throw new Error(`Invalid slot index: ${e}. Must be an integer between 0 and ${this.slotCount-1}`)}validate_page_id(e){if(!Number.isInteger(e)||e<=0)throw new Error(`Invalid page ID: ${e}. Page IDs must be positive integers.`)}async with_allocation_lock(e){const A=this.allocation_lock;let n;this.allocation_lock=new Promise(s=>{n=s}),await A;try{return await e()}finally{n()}}setTransactionCoordinator(e){this.io.setTransactionCoordinator(e)}getSlotOffset(e){return this.validate_slot_idx(e),e*4096}getPageBytesInSlot(e){return this.validate_slot_idx(e),this.uint8.subarray(e*4096,(e+1)*4096)}getSlotDataView(e){this.validate_slot_idx(e);const A=this.slot_views[e];if(A&&A.buffer===this.wasmMemory.buffer)return A;const n=new DataView(this.wasmMemory.buffer,e*4096,4096);return this.slot_views[e]=n,n}getResidentSlot(e){return this.validate_page_id(e),he(this.view,this.pageToSlotOffset,this.pageToSlotBuckets,e)}getAssignedPage(e){return this.validate_slot_idx(e),$A(this.view,this.slotToPageOffset,e)}assignSlot(e,A){if(this.validate_slot_idx(e),!Number.isInteger(A)||A<=0)throw new Error(`Invalid page ID: ${A}. Must be a positive integer >= 1`);if(e===0&&A!==1)throw new Error(`Cannot reassign slot 0: reserved permanently for page 1 (got page ${A})`);const n=this.getResidentSlot(A);if(n!==-1&&n!==e)throw new Error(`Cannot map page ${A} to slot ${e}: already resident in slot ${n}`);Jr(this.view,this.slotToPageOffset,this.pageToSlotOffset,this.pageToSlotBuckets,e,A),this.ref_bits[e]=1}unassignSlot(e){if(this.validate_slot_idx(e),e===0)throw new Error("Cannot unassign slot 0: reserved permanently for page 1");Wr(this.view,this.slotToPageOffset,this.pageToSlotOffset,this.pageToSlotBuckets,e),this.ref_bits[e]=0}markDirty(e){this.validate_slot_idx(e),Kr(this.uint8,this.dirtyMaskOffset,e),this.slot_dirty_generations[e]++}clearDirty(e){this.validate_slot_idx(e),Zr(this.uint8,this.dirtyMaskOffset,e)}isDirty(e){return this.validate_slot_idx(e),io(this.uint8,this.dirtyMaskOffset,e)}pinSlot(e){this.validate_slot_idx(e),oo(this.pin_counts,e)}unpinSlot(e){this.validate_slot_idx(e),ro(this.pin_counts,e)}pinPage(e){this.validate_page_id(e);const A=this.getResidentSlot(e);if(A===-1)throw new Error(`Cannot pin page ${e}: page is not resident in buffer pool`);this.pinSlot(A)}unpinPage(e){if(this.validate_page_id(e),e===1)return;const A=this.getResidentSlot(e);A!==-1&&this.unpinSlot(A)}forceUnpinSlot(e){this.validate_slot_idx(e),e!==0&&(this.pin_counts[e]=0)}forceUnpinPage(e){if(this.validate_page_id(e),e<=1)return;const A=this.getResidentSlot(e);A!==-1&&this.forceUnpinSlot(A)}isSlotPinned(e){return this.validate_slot_idx(e),zA(this.pin_counts,e)}getPinCount(e){return this.validate_slot_idx(e),this.pin_counts[e]}getRefBit(e){return this.validate_slot_idx(e),this.ref_bits[e]}setRefBit(e,A){this.validate_slot_idx(e),this.ref_bits[e]=A?1:0}allocArena(e){const A=e+7&-8;if(this.arena_offset+A>this.maxQueryMemory)throw new xi;const n=this.transientArenaOffset+this.arena_offset;return this.arena_offset+=A,n}resetArena(){this.arena_offset>0&&(Zt(this.uint8,this.transientArenaOffset,0,this.arena_offset),this.arena_offset=0)}getArenaOffset(){return this.arena_offset}async acquirePage(e,A=!1){this.validate_page_id(e);const n=this.getResidentSlot(e);if(n!==-1)return this.setRefBit(n,1),A&&this.pinSlot(n),n;const s=this.in_flight_acquires.get(e);if(s){const o=await s;return A&&this.pinSlot(o),o}const i=(async()=>{const{candidate_slot:o,flush_page_id:r,next_clock_hand:a}=co(this.buffer,this.ref_bits,this.pin_counts,this.slotToPageOffset,this.dirtyMaskOffset,this.slotCount,this.clock_hand,e);this.clock_hand=a,this.pinSlot(o);try{return await this.io.resolvePageFault(o,e,r),this.assignSlot(o,e),this.setRefBit(o,1),this.clearDirty(o),o}catch(c){throw o!==-1&&this.unpinSlot(o),c}})();this.in_flight_acquires.set(e,i);try{const o=await i;return A||this.unpinSlot(o),o}finally{this.in_flight_acquires.delete(e)}}acquireAndPinPage(e){return this.acquirePage(e,!0)}async flushSlot(e){this.validate_slot_idx(e);const A=this.getAssignedPage(e);if(A===0)return;if(e===0&&A!==1)throw new Error(`Corruption detected: slot 0 is assigned to page ${A} instead of page 1`);const n=this.slot_dirty_generations[e];await this.io.writeSlot(e,A),this.slot_dirty_generations[e]===n&&this.clearDirty(e)}async flushPage(e){this.validate_page_id(e);const A=this.getResidentSlot(e);A!==-1&&this.isDirty(A)&&await this.flushSlot(A)}async flushAllDirty(){for(let e=0;e<this.slotCount;e++)this.isDirty(e)&&await this.flushSlot(e);await this.io.flush()}async allocatePage(e=!1){return this.with_allocation_lock(async()=>{const A=this.getSlotDataView(0),n=R(A,We),s=R(A,qe);if(n>0){if(n<=1||s>0&&n>s)throw new hA(n,`Corrupted free_page_head pointer ${n} (totalPages: ${s})`);const a=await this.acquirePage(n,e),c=this.getSlotDataView(a),l=y(c,zo);if(l!==wA)throw new hA(n,`Expected free page type 0x00, got 0x${l.toString(16)}`);const u=R(c,vo);if(u===n||s>0&&u>s)throw new hA(n,`Corrupted next_free_page_id pointer ${u} in free page ${n}`);return S(A,We,u),this.markDirty(0),Fn(c,0),this.markDirty(a),n}const i=s+1;S(A,qe,i),this.markDirty(0);const o=await this.acquirePage(i,e),r=this.getSlotDataView(o);return Fn(r,0),this.markDirty(o),i})}allocateAndPinPage(){return this.allocatePage(!0)}async freePage(e,A=!1){if(this.validate_page_id(e),e<=1)throw new Error(`Cannot free reserved database page ${e}`);return this.with_allocation_lock(async()=>{const n=this.getSlotDataView(0),s=R(n,qe);if(s>0&&e>s)throw new Error(`Cannot free page ${e} beyond total pages ${s}`);const i=this.getResidentSlot(e);if(i!==-1){if(A)this.forceUnpinSlot(i);else if(this.isSlotPinned(i))throw new Error(`Cannot free pinned/active database page ${e}`)}const o=await this.acquirePage(e,!0);try{const r=this.getSlotDataView(o),a=_A(r,0);if(a===wA){if(this.unassignSlot(o),A)return;throw new Error(`Double-free detected: page ${e} is already marked free`)}if(!A&&a===Un)throw new Error(`Cannot free system catalog page ${e}`);const c=R(n,We);wr(r,0,c),Zt(this.uint8,o*4096+Fe,0,4096-Fe),this.io.isInTransaction()?await this.io.spillOrWriteSlot(o,e):await this.flushSlot(o),this.unassignSlot(o),this.clearDirty(o),this.setRefBit(o,0),S(n,We,e),this.markDirty(0)}finally{this.unpinSlot(o)}})}async stepVm(e,A){let n=Ai(e,this.view,A);for(;n===L.PAGE_FAULT;){const s=e.cursor.pageId;await this.acquirePage(s),e.status=L.RUNNING,n=Ai(e,this.view,A)}return n}}async function Lo(t){var l;const e=await t.getWalFrameCount();if(e===0)return{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0};const A=await t.readWalHeader();if(!A)return await t.truncateWal(0),{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0};try{Us(A,!0)}catch{return await t.truncateWal(0),{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0}}const n=await t.readWalFrames(0,e),s=new Map,i=new Set;let o=0;for(const u of n){const g=$i(u);if(!g.valid||!g.header)break;const{header:E}=g;if(E.frameSeq!==o+1)break;if(o++,s.has(E.txId)||s.set(E.txId,[]),E.frameType===as)i.add(E.txId);else if(E.frameType===rs||E.frameType===cs){const h=new Uint8Array(u.buffer,u.byteOffset+GA,4096),B=new Uint8Array(4096);B.set(h),s.get(E.txId).push({pageId:E.pageId,data:B,frameType:E.frameType})}}const r=new Map;let a=0,c=0;for(const[u,g]of s.entries())if(i.has(u)){a++;for(const E of g)E.pageId>0&&r.set(E.pageId,E.data)}else c++;if(r.size>0){const u=[];for(const[g,E]of r.entries())u.push({pageId:g,data:E});u.sort((g,E)=>g.pageId-E.pageId),await t.writePages(u)}return await((l=t.flush)==null?void 0:l.call(t)),await t.truncateWal(0),{frameCount:o,committedTxCount:a,abortedTxCount:c,replayedPageCount:r.size}}class $a{constructor(e,A){G(this,"activeLease",null);G(this,"inFlightNonTxCount",0);G(this,"queue",[]);G(this,"leaseWaiters",[]);G(this,"nextLeaseId",1);G(this,"nextTxId",1);G(this,"crossTabLockName");G(this,"onSyncCrossTab");G(this,"releaseWebLock",null);this.crossTabLockName=e,this.onSyncCrossTab=A}hasWebLocks(){var e;return!!this.crossTabLockName&&typeof navigator<"u"&&typeof((e=navigator==null?void 0:navigator.locks)==null?void 0:e.request)=="function"}async acquireWebLock(){!this.hasWebLocks()||this.releaseWebLock||await new Promise(e=>{navigator.locks.request(this.crossTabLockName,{mode:"exclusive"},()=>new Promise(A=>{this.releaseWebLock=A,e()})).catch(()=>{e()})})}releaseCurrentWebLock(){if(this.releaseWebLock){const e=this.releaseWebLock;this.releaseWebLock=null,e()}}get isLeased(){return this.activeLease!==null}get currentLease(){return this.activeLease}async enqueue(e,A){if(this.activeLease&&A===this.activeLease.leaseId)return e();if(this.activeLease||this.leaseWaiters.length>0||this.hasWebLocks()&&this.inFlightNonTxCount>0)return new Promise((n,s)=>{this.queue.push(async()=>{this.inFlightNonTxCount++;try{this.hasWebLocks()&&this.inFlightNonTxCount===1&&(await this.acquireWebLock(),this.onSyncCrossTab&&await this.onSyncCrossTab());const i=await e();n(i)}catch(i){s(i)}finally{this.inFlightNonTxCount--,this.inFlightNonTxCount===0&&!this.activeLease&&this.releaseCurrentWebLock(),this.drain()}})});this.inFlightNonTxCount++;try{return this.hasWebLocks()&&this.inFlightNonTxCount===1&&(await this.acquireWebLock(),this.onSyncCrossTab&&await this.onSyncCrossTab()),await e()}finally{this.inFlightNonTxCount--,this.inFlightNonTxCount===0&&!this.activeLease&&this.releaseCurrentWebLock(),this.drain()}}async acquireExclusiveLease(){if(!this.activeLease&&this.inFlightNonTxCount===0&&this.queue.length===0){const e={leaseId:this.nextLeaseId++,txId:this.nextTxId++,createdAt:Date.now()};return this.activeLease=e,await this.acquireWebLock(),e}return new Promise(e=>{this.leaseWaiters.push({resolve:async A=>{await this.acquireWebLock(),e(A)}}),this.drain()})}releaseExclusiveLease(e){!this.activeLease||this.activeLease.leaseId!==e||(this.activeLease=null,this.releaseCurrentWebLock(),this.drain())}drain(){if(!this.activeLease){if(this.leaseWaiters.length>0){if(this.inFlightNonTxCount===0){const e=this.leaseWaiters.shift(),A={leaseId:this.nextLeaseId++,txId:this.nextTxId++,createdAt:Date.now()};this.activeLease=A,e.resolve(A)}return}for(;this.queue.length>0&&!this.activeLease&&this.leaseWaiters.length===0&&(!this.hasWebLocks()||this.inFlightNonTxCount===0);){const e=this.queue.shift();e&&e()}}}}class za{constructor(e,A,n,s){G(this,"vfs");G(this,"pool");G(this,"io");G(this,"queue");G(this,"activeLease",null);G(this,"snapshotFrameCount",0);G(this,"snapshotWalFrameSeq",0);G(this,"slotSnapshots",new Map);G(this,"pinCountsSnapshot",null);G(this,"spilledPages",new Map);G(this,"committedWalPages",new Map);G(this,"walFrameSeq",0);G(this,"txCommitCount",0);G(this,"checkpointSeq",0);G(this,"instanceSalt",Math.floor(Math.random()*4294967295)>>>0||1);G(this,"expectedWalFrameCount",0);G(this,"lastDiskChangeCounter",0);G(this,"lastDiskSchemaVersion",0);G(this,"onCrossTabInvalidated");G(this,"idleTimer",null);G(this,"isClosed",!1);this.vfs=e,this.pool=A,this.io=n,this.queue=new $a(s,()=>this.syncCrossTabState())}setOnCrossTabInvalidated(e){this.onCrossTabInvalidated=e}recordDiskPage1State(){const e=this.pool.getSlotDataView(0);this.lastDiskChangeCounter=e.getUint32(aA,!0),this.lastDiskSchemaVersion=e.getUint32(rA,!0)}async reloadFromDisk(e,A,n){this.pool.getPageBytesInSlot(0).set(e),this.pool.clearDirty(0),this.lastDiskChangeCounter=A,this.lastDiskSchemaVersion=n;for(let s=1;s<this.pool.slotCount;s++)this.pool.unassignSlot(s),this.pool.clearDirty(s),this.pool.pin_counts[s]=0;this.pool.pin_counts[0]=1,this.onCrossTabInvalidated&&await this.onCrossTabInvalidated()}async syncCrossTabState(e=!1){if(!e&&!this.queue.hasWebLocks())return;const A=await this.vfs.getWalFrameCount();let n=!1;if(A>0){const i=await this.vfs.readWalHeader();let o=0;if(i)try{o=Us(i,!0).salt1}catch{o=0}(o!==this.instanceSalt||A!==this.expectedWalFrameCount)&&(n=!0,await Lo(this.vfs),this.committedWalPages.clear(),this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0)}else this.expectedWalFrameCount>0&&(n=!0,this.committedWalPages.clear(),this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0);const[s]=await this.vfs.readPages([1]);if(s){const i=new DataView(s.buffer,s.byteOffset,s.byteLength),o=i.getUint32(aA,!0),r=i.getUint32(rA,!0);(e||n||o!==this.lastDiskChangeCounter||r!==this.lastDiskSchemaVersion)&&await this.reloadFromDisk(s,o,r)}}get leaseQueue(){return this.queue}isInTransaction(){return this.activeLease!==null}getActiveLeaseId(){return this.activeLease?this.activeLease.leaseId:null}getActiveTxId(){return this.activeLease?this.activeLease.txId:null}hasSpilledPage(e){return this.spilledPages.has(e)||this.committedWalPages.has(e)}getSpilledPage(e){const A=this.spilledPages.get(e)??this.committedWalPages.get(e);return A?new Uint8Array(A):null}onDirectPageWrite(e,A){if(this.committedWalPages.has(e)&&this.committedWalPages.set(e,new Uint8Array(A)),e===1){const n=new DataView(A.buffer,A.byteOffset,A.byteLength);this.lastDiskChangeCounter=n.getUint32(aA,!0),this.lastDiskSchemaVersion=n.getUint32(rA,!0)}}async spillUncommittedSlot(e,A){if(!this.activeLease){await this.io.writeSlot(e,A);return}this.io.stampSlotChecksum(e,A);const n=this.pool.getPageBytesInSlot(e),s=new Uint8Array(BA);s.set(n),this.spilledPages.set(A,s);const i=this.pool.getSlotDataView(0).getUint32(qe,!0),o=Ts({frameType:cs,flags:0,txId:this.activeLease.txId,pageId:A,dbSizePages:i,frameSeq:++this.walFrameSeq},s);await this.vfs.appendWalFrames([o]),this.expectedWalFrameCount=await this.vfs.getWalFrameCount()}async captureSavepoint(){const e=await this.vfs.getWalFrameCount(),A=new Map;for(let i=0;i<this.pool.slotCount;i++){const o=this.pool.getAssignedPage(i);if(o>0){const r=this.pool.isDirty(i),a=new Uint8Array(this.pool.getPageBytesInSlot(i));A.set(i,{pageId:o,dirty:r,data:a})}}const n=new Uint32Array(this.pool.pin_counts),s=new Map;for(const[i,o]of this.spilledPages.entries())s.set(i,new Uint8Array(o));return{frameCount:e,slotSnapshots:A,pinCounts:n,spilledPages:s,walFrameSeq:this.walFrameSeq}}async restoreSavepoint(e){for(let A=1;A<this.pool.slotCount;A++)this.pool.unassignSlot(A),this.pool.clearDirty(A);for(let A=0;A<this.pool.slotCount;A++){const n=e.slotSnapshots.get(A);n&&(this.pool.assignSlot(A,n.pageId),this.pool.getPageBytesInSlot(A).set(n.data),n.dirty?this.pool.markDirty(A):this.pool.clearDirty(A))}this.pool.pin_counts.set(e.pinCounts),this.spilledPages.clear();for(const[A,n]of e.spilledPages.entries())this.spilledPages.set(A,new Uint8Array(n));this.walFrameSeq=e.walFrameSeq,await this.vfs.truncateWal(e.frameCount),this.expectedWalFrameCount=e.frameCount}async begin(){const e=await this.queue.acquireExclusiveLease();this.activeLease=e,this.pauseIdleTimer();try{await this.syncCrossTabState();const A=await this.vfs.getWalFrameCount(),n=await this.vfs.readWalHeader();let s=!1;if(n&&A>0)try{s=Us(n,!0).salt1===this.instanceSalt}catch{s=!1}s||await this.vfs.writeWalHeader(ps({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt})),this.spilledPages.clear();const i=await this.captureSavepoint();return this.snapshotFrameCount=i.frameCount,this.snapshotWalFrameSeq=i.walFrameSeq,this.slotSnapshots=i.slotSnapshots,this.pinCountsSnapshot=i.pinCounts,e}catch(A){throw this.activeLease=null,this.queue.releaseExclusiveLease(e.leaseId),A}}async commit(e){var o,r;if(!this.activeLease||this.activeLease.leaseId!==e)return;const A=this.activeLease.txId,n=[],s=this.pool.getSlotDataView(0).getUint32(qe,!0);for(const[a,c]of this.spilledPages.entries())this.committedWalPages.set(a,c);for(let a=0;a<this.pool.slotCount;a++)if(this.pool.isDirty(a)){const c=this.pool.getAssignedPage(a);if(c>0){this.io.stampSlotChecksum(a,c);const l=this.pool.getPageBytesInSlot(a),u=new Uint8Array(BA);u.set(l),this.committedWalPages.set(c,u),this.pool.clearDirty(a),n.push(Ts({frameType:rs,flags:0,txId:A,pageId:c,dbSizePages:s,frameSeq:++this.walFrameSeq},u))}}n.push(Ts({frameType:as,flags:0,txId:A,pageId:0,dbSizePages:s,frameSeq:++this.walFrameSeq})),await this.vfs.appendWalFrames(n),await((r=(o=this.vfs).flushWal)==null?void 0:r.call(o));const i=await this.vfs.getWalFrameCount();this.expectedWalFrameCount=i,this.activeLease=null,this.spilledPages.clear(),this.slotSnapshots.clear(),this.pinCountsSnapshot=null,this.txCommitCount++,this.queue.releaseExclusiveLease(e),this.scheduleIdleTimer(),(i>=256||this.txCommitCount>=100)&&this.queue.enqueue(()=>this.executeCheckpoint())}async rollback(e){!this.activeLease||this.activeLease.leaseId!==e||(await this.restoreSavepoint({frameCount:this.snapshotFrameCount,slotSnapshots:this.slotSnapshots,pinCounts:this.pinCountsSnapshot??new Uint32Array(this.pool.pin_counts),spilledPages:new Map,walFrameSeq:this.snapshotWalFrameSeq}),this.activeLease=null,this.spilledPages.clear(),this.slotSnapshots.clear(),this.pinCountsSnapshot=null,this.queue.releaseExclusiveLease(e),this.scheduleIdleTimer())}async checkpoint(){return this.queue.enqueue(()=>this.executeCheckpoint())}async executeCheckpoint(){var o,r;const e=await this.vfs.getWalFrameCount(),A=new Map;if(e>0){const a=await this.vfs.readWalFrames(0,e),c=new Map,l=new Set;for(const u of a){const g=$i(u);if(!g.valid||!g.header)break;const{frameType:E,txId:h,pageId:B}=g.header;if(c.has(h)||c.set(h,[]),E===as)l.add(h);else if(E===rs||E===cs){const Q=new Uint8Array(u.buffer,u.byteOffset+GA,BA),d=new Uint8Array(BA);d.set(Q),c.get(h).push({pageId:B,data:d})}}for(const[u,g]of c.entries())if(l.has(u))for(const E of g)E.pageId>0&&A.set(E.pageId,E.data)}for(const[a,c]of this.committedWalPages.entries())A.set(a,c);const n=new Map;for(let a=0;a<this.pool.slotCount;a++)if(this.pool.isDirty(a)){const c=this.pool.getAssignedPage(a);if(c>0){this.io.stampSlotChecksum(a,c);const l=this.pool.getPageBytesInSlot(a),u=new Uint8Array(BA);u.set(l),n.set(c,{slotIdx:a,data:u})}}const s=new Set([...A.keys(),...n.keys()]),i=[];for(const a of s)if(n.has(a)){const{slotIdx:c,data:l}=n.get(a);i.push({pageId:a,data:l}),this.pool.clearDirty(c)}else i.push({pageId:a,data:A.get(a)});return i.length>0&&(i.sort((a,c)=>a.pageId-c.pageId),await this.vfs.writePages(i)),await((r=(o=this.vfs).flush)==null?void 0:r.call(o)),await this.vfs.truncateWal(0),this.committedWalPages.clear(),this.checkpointSeq++,this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0,this.recordDiskPage1State(),await this.vfs.writeWalHeader(ps({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt})),{pagesWritten:i.length}}async resetWalAfterImport(){this.spilledPages.clear(),this.committedWalPages.clear(),await this.vfs.truncateWal(0),this.checkpointSeq++,this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0,this.recordDiskPage1State(),await this.vfs.writeWalHeader(ps({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt}))}scheduleIdleTimer(){this.isClosed||(this.pauseIdleTimer(),this.idleTimer=setTimeout(()=>{this.checkpoint().catch(()=>{})},5e3))}pauseIdleTimer(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null)}async close(){this.isClosed=!0,this.pauseIdleTimer(),await this.checkpoint()}}const va=new Set(["count","sum","avg","min","max"]),tc=new Set(["upper","lower","length","substr","trim","abs","round","floor","ceil","concat","coalesce"]);function AA(t){return va.has(t.toLowerCase())}function ec(t){return tc.has(t.toLowerCase())}function Zu(t){return AA(t)||ec(t)}function xA(t,e){if(e==="where"){if(t.type==="fn"&&AA(t.name))throw new fs(t.name);if(t.type==="binary"&&(xA(t.left,e),xA(t.right,e)),t.type==="fn")for(const A of t.args)xA(A,e)}}function ju(t){const e=[];let A=0;const n=t.length;for(;A<n;){const s=t[A];if(/\s/.test(s)){A++;continue}if(/[0-9]/.test(s)||s==="."&&A+1<n&&/[0-9]/.test(t[A+1])){const i=A;let o=!1;for(;A<n&&(/[0-9]/.test(t[A])||t[A]==="."&&!o);)t[A]==="."&&(o=!0),A++;e.push({type:"NUMBER",value:t.slice(i,A),pos:i});continue}if(s==="'"||s==='"'){const i=s,o=A;A++;let r="";for(;A<n&&t[A]!==i;)t[A]==="\\"&&A+1<n&&A++,r+=t[A],A++;A<n&&t[A]===i&&A++,e.push({type:"STRING",value:r,pos:o});continue}if(s==="("){e.push({type:"LPAREN",value:"(",pos:A++});continue}if(s===")"){e.push({type:"RPAREN",value:")",pos:A++});continue}if(s===","){e.push({type:"COMMA",value:",",pos:A++});continue}if(s==="<"){if(A+1<n&&t[A+1]==="="){e.push({type:"OP",value:"<=",pos:A}),A+=2;continue}if(A+1<n&&t[A+1]===">"){e.push({type:"OP",value:"!=",pos:A}),A+=2;continue}e.push({type:"OP",value:"<",pos:A++});continue}if(s===">"){if(A+1<n&&t[A+1]==="="){e.push({type:"OP",value:">=",pos:A}),A+=2;continue}e.push({type:"OP",value:">",pos:A++});continue}if(s==="="){if(A+1<n&&t[A+1]==="="){e.push({type:"OP",value:"=",pos:A}),A+=2;continue}e.push({type:"OP",value:"=",pos:A++});continue}if(s==="!"&&A+1<n&&t[A+1]==="="){e.push({type:"OP",value:"!=",pos:A}),A+=2;continue}if(s==="+"||s==="-"||s==="/"||s==="%"){e.push({type:"OP",value:s,pos:A++});continue}if(s==="*"){e.push({type:"STAR",value:"*",pos:A++});continue}if(/[a-zA-Z_]/.test(s)){const i=A;for(;A<n;)if(/[a-zA-Z0-9_]/.test(t[A]))A++;else if(t[A]==="."&&A+1<n&&/[a-zA-Z_]/.test(t[A+1]))A+=2;else break;const o=t.slice(i,A);e.push({type:"IDENT",value:o,pos:i});continue}A++}return e.push({type:"EOF",value:"",pos:n}),e}class $u{constructor(e){G(this,"tokens");G(this,"cursor",0);this.tokens=e}peek(){return this.tokens[this.cursor]??{type:"EOF",value:"",pos:0}}consume(){const e=this.peek();return this.cursor++,e}match(e,A){const n=this.peek();return n.type!==e||A!==void 0&&n.value.toLowerCase()!==A.toLowerCase()?!1:(this.cursor++,!0)}getPrecedence(e){if(e.type==="OP"||e.type==="STAR"){if(e.value==="="||e.value==="!="||e.value==="<"||e.value==="<="||e.value===">"||e.value===">=")return 5;if(e.value==="+"||e.value==="-")return 10;if(e.value==="*"||e.value==="/"||e.value==="%")return 20}return 0}parse(e=0){let A=this.parsePrimary();for(;;){const n=this.peek(),s=this.getPrecedence(n);if(s===0||s<=e)break;this.consume();const i=this.parse(s);A={type:"binary",op:n.value,left:A,right:i}}return A}parsePrimary(){const e=this.peek();if(e.type==="OP"&&e.value==="-"){this.consume();const A=this.parse(25);return A.type==="literal"&&typeof A.value=="number"?{type:"literal",value:-A.value}:{type:"binary",op:"-",left:{type:"literal",value:0},right:A}}if(this.match("NUMBER"))return{type:"literal",value:Number(e.value)};if(this.match("STRING"))return{type:"literal",value:e.value};if(this.match("LPAREN")){const A=this.parse(0);if(!this.match("RPAREN"))throw new Error("Unclosed parenthesis in expression");return A}if(this.match("STAR"))return{type:"col",name:"*"};if(e.type==="IDENT"){this.consume();const A=e.value,n=A.toLowerCase();if(n==="null"&&this.peek().type!=="LPAREN")return{type:"literal",value:null};if(n==="true"&&this.peek().type!=="LPAREN")return{type:"literal",value:!0};if(n==="false"&&this.peek().type!=="LPAREN")return{type:"literal",value:!1};if(this.match("LPAREN")){const s=[];if(!this.match("RPAREN")){for(;;)if(s.push(this.parse(0)),!this.match("COMMA")){if(this.match("RPAREN"))break;throw new Error(`Expected ',' or ')' in argument list of function ${A}`)}}return{type:"fn",name:n,args:s}}return{type:"col",name:A}}throw new Error(`Unexpected token "${e.value}" in expression at position ${e.pos}`)}}function Rt(t){const e=t.trim();if(!e)throw new Error("Cannot parse empty expression");const A=ju(e);return new $u(A).parse(0)}function zu(t){let e=0,A=null;const n=t.length;for(let s=0;s<n;s++){const i=t[s];if(A){i===A&&t[s-1]!=="\\"&&(A=null);continue}if(i==="'"||i==='"'){A=i;continue}if(i==="("){e++;continue}if(i===")"){e--;continue}if(e===0&&(i===" "||i===" ")&&s+4<n&&t.slice(s+1,s+3).toLowerCase()==="as"&&/\s/.test(t[s+3])){const o=t.slice(0,s).trim(),r=t.slice(s+4).trim();return{exprStr:o,explicitAlias:r}}}return{exprStr:t.trim()}}function le(t){if(t.type==="col")return t.name.includes(".")?t.name.slice(t.name.lastIndexOf(".")+1):t.name;if(t.type==="fn"){if(t.args.length>0&&t.args[0].type==="col"&&t.args[0].name!=="*"){const e=t.args[0].name.includes(".")?t.args[0].name.slice(t.args[0].name.lastIndexOf(".")+1):t.args[0].name;return`${t.name}_${e}`}return t.name}return t.type==="binary"?"expr":"val"}function ni(t){const{exprStr:e,explicitAlias:A}=zu(t),n=Rt(e),s=A&&A.length>0?A:le(n);return{expr:n,alias:s}}class dt{constructor(e){G(this,"node");this.node=e}add(e){return new dt({type:"binary",op:"+",left:this.node,right:Ne(e)})}sub(e){return new dt({type:"binary",op:"-",left:this.node,right:Ne(e)})}mul(e){return new dt({type:"binary",op:"*",left:this.node,right:Ne(e)})}div(e){return new dt({type:"binary",op:"/",left:this.node,right:Ne(e)})}mod(e){return new dt({type:"binary",op:"%",left:this.node,right:Ne(e)})}eq(e){return new dt({type:"binary",op:"=",left:this.node,right:Ne(e)})}ne(e){return new dt({type:"binary",op:"!=",left:this.node,right:Ne(e)})}lt(e){return new dt({type:"binary",op:"<",left:this.node,right:Ne(e)})}lte(e){return new dt({type:"binary",op:"<=",left:this.node,right:Ne(e)})}gt(e){return new dt({type:"binary",op:">",left:this.node,right:Ne(e)})}gte(e){return new dt({type:"binary",op:">=",left:this.node,right:Ne(e)})}as(e){return{expr:this.node,alias:e}}}function Ne(t){return t===null?{type:"literal",value:null}:typeof t=="boolean"?{type:"literal",value:t}:t instanceof dt?t.node:typeof t=="number"?{type:"literal",value:t}:typeof t=="string"?{type:"literal",value:t}:t}function bo(t){return new dt({type:"col",name:t})}function Ac(t){return new dt(Rt(t))}const vu=Ac;function ee(t,e){return new dt({type:"fn",name:t.toLowerCase(),args:e.map(A=>typeof A=="string"&&!A.startsWith("'")?bo(A).node:Ne(A))})}const nc=(t,...e)=>ee(t,e),tg={upper:t=>ee("upper",[t]),lower:t=>ee("lower",[t]),length:t=>ee("length",[t]),substr:(t,e,A)=>{const n=[t,e];return A!==void 0&&n.push(A),ee("substr",n)},trim:t=>ee("trim",[t]),abs:t=>ee("abs",[t]),round:t=>ee("round",[t]),floor:t=>ee("floor",[t]),ceil:t=>ee("ceil",[t]),count:t=>ee("count",[t??bo("*").node]),sum:t=>ee("sum",[t]),avg:t=>ee("avg",[t]),min:t=>ee("min",[t]),max:t=>ee("max",[t]),concat:(...t)=>ee("concat",t),coalesce:(...t)=>ee("coalesce",t)};for(const[t,e]of Object.entries(tg))Object.defineProperty(nc,t,{value:e,writable:!0,enumerable:!0,configurable:!0});const eg=nc;function ue(t,e,A){switch(t.type){case"literal":return t.value;case"col":return t.name==="*"?null:e[t.name]!==void 0?e[t.name]:null;case"binary":{const n=ue(t.left,e,A),s=ue(t.right,e,A);if(n===null||s===null||n===void 0||s===void 0)return null;if(t.op==="="||t.op==="!="||t.op==="<"||t.op==="<="||t.op===">"||t.op===">="){const r=typeof n=="string"&&typeof s=="string"?n<s?-1:n>s?1:0:Number(n)<Number(s)?-1:Number(n)>Number(s)?1:0;switch(t.op){case"=":return r===0?1:0;case"!=":return r!==0?1:0;case"<":return r<0?1:0;case"<=":return r<=0?1:0;case">":return r>0?1:0;case">=":return r>=0?1:0}}const i=Number(n),o=Number(s);switch(t.op){case"+":return i+o;case"-":return i-o;case"*":return i*o;case"/":return o===0?null:i/o;case"%":return o===0?null:i%o}return null}case"fn":{const n=t.name.toLowerCase();if(AA(n)){if(e[n]!==void 0)return e[n];const i=t.args[0];if(i&&i.type==="col"){const o=`${n}_${i.name}`;if(e[o]!==void 0)return e[o]}return null}const s=t.args.map(i=>ue(i,e,A));switch(n){case"upper":return s[0]!==null&&s[0]!==void 0?String(s[0]).toUpperCase():null;case"lower":return s[0]!==null&&s[0]!==void 0?String(s[0]).toLowerCase():null;case"length":return s[0]!==null&&s[0]!==void 0?String(s[0]).length:null;case"trim":return s[0]!==null&&s[0]!==void 0?String(s[0]).trim():null;case"substr":{if(s[0]===null||s[0]===void 0)return null;const i=String(s[0]),o=Math.max(0,(Number(s[1])||1)-1),r=s[2]!==null&&s[2]!==void 0?Number(s[2]):void 0;return r!==void 0?i.substring(o,o+r):i.substring(o)}case"abs":return s[0]!==null&&s[0]!==void 0?Math.abs(Number(s[0])):null;case"round":return s[0]!==null&&s[0]!==void 0?Math.round(Number(s[0])):null;case"floor":return s[0]!==null&&s[0]!==void 0?Math.floor(Number(s[0])):null;case"ceil":return s[0]!==null&&s[0]!==void 0?Math.ceil(Number(s[0])):null;case"concat":return s.some(i=>i==null)?null:s.map(String).join("");case"coalesce":{for(const i of s)if(i!=null)return i;return null}case"starts_with":case"startswith":return s[0]!==null&&s[0]!==void 0&&s[1]!==null&&s[1]!==void 0?String(s[0]).startsWith(String(s[1]))?1:0:null;case"ends_with":case"endswith":return s[0]!==null&&s[0]!==void 0&&s[1]!==null&&s[1]!==void 0?String(s[0]).endsWith(String(s[1]))?1:0:null;case"contains":return s[0]!==null&&s[0]!==void 0&&s[1]!==null&&s[1]!==void 0?String(s[0]).includes(String(s[1]))?1:0:null;case"like":return s[0]!==null&&s[0]!==void 0&&s[1]!==null&&s[1]!==void 0?Zn(String(s[0]),String(s[1]))?1:0:null;default:{let i;if(typeof A=="function")i=A(n);else if(A instanceof Map){const o=A.get(n);i=typeof o=="function"?o:o==null?void 0:o.call}else if(A&&typeof A=="object"){const o=A[n];i=typeof o=="function"?o:o==null?void 0:o.call}if(i)return i(...s);throw new Xi(n)}}}}}const rn=.5,si=.05,nA=.02;function sc(t){const e=[];function A(s){if(s.colName&&e.push(s.colName),s.expr&&n(s.expr),s.children)for(const i of s.children)A(i);s.child&&A(s.child)}function n(s){if(s&&(s.type==="col"&&s.name&&e.push(s.name),s.left&&n(s.left),s.right&&n(s.right),s.args&&Array.isArray(s.args)))for(const i of s.args)n(i)}return A(t),e}function an(t,e){const A=sc(t),n=new Set;for(const s of A){const i=Lt(s,e);i&&n.add(i.tableIdx)}return n}function Oo(t,e){var n,s;const A=Math.max(1,e.rowCountEstimate||10);if(t.type==="cmp"){const i=t.op??"=";if(i==="="){const o=(n=t.colName)==null?void 0:n.toLowerCase(),r=e.columns.findIndex(a=>a.name.toLowerCase()===o);if(r!==-1&&e.indexes){for(const a of e.indexes)if(a.columnCount===1&&a.columnIndices[0]===r)return(a.flags&(ft.PRIMARY|ft.UNIQUE))!==0?1/A:Math.min(.2,5/A)}return .1}if(i==="<"||i==="<="||i===">"||i===">=")return .33;if(i==="!="||i==="<>")return .9;if(i==="like"||i==="contains"||i==="starts_with"||i==="ends_with")return .15}if(t.type==="in"){const i=Math.max(1,((s=t.values)==null?void 0:s.length)||1);return Math.min(1,i*.05)}return t.type==="null"?t.isNull?.05:.95:.2}function sA(t,e,A,n){var u;const s=Math.max(1,t.rowCountEstimate||10);let i=1;for(const g of e)i*=Oo(g,t);const o=Math.max(1,Math.round(s*i)),r=A!==void 0&&A.length>0,a=r&&o>1?o*Math.log2(o)*nA:0,c=li(t,e,e,A);if(c){const g=c.scanType==="point",E=c.scanType==="multi_point",h=c.satisfiesOrderBy===!0,B=h&&n!==void 0&&n>0?Math.min(n,o):o;let Q=rn;return g?(Q+=1*nA,{cost:Q,rows:1,scanType:"IndexScan",indexName:c.index.name,isOrderSatisfied:!0,sortCostAvoided:r?a:void 0}):E?(Q=(((u=c.inValues)==null?void 0:u.length)||1)*rn+B*nA,!h&&r&&(Q+=a),{cost:Q,rows:B,scanType:"IndexScan",indexName:c.index.name,isOrderSatisfied:h,sortCostAvoided:h?a:void 0}):(Q+=B*si+B*nA,!h&&r&&(Q+=a),{cost:Q,rows:B,scanType:"IndexScan",indexName:c.index.name,isOrderSatisfied:h,sortCostAvoided:h?a:void 0})}let l=s*nA;return r&&(l+=a),{cost:l,rows:o,scanType:"TableScan",isOrderSatisfied:!1}}function zn(t,e){if(!t.indexes||t.indexes.length===0)return null;const A=t.columns.findIndex(i=>i.name.toLowerCase()===e.toLowerCase());if(A===-1)return null;let n=null,s=999;for(const i of t.indexes)if(i.columnCount===1&&i.columnIndices[0]===A){const o=(i.flags&ft.PRIMARY)!==0,r=(i.flags&ft.UNIQUE)!==0,a=o?1:r?2:3;a<s&&(s=a,n={index:i,isUnique:o||r})}return n}function ii(t,e){const A=e.length,n=[],s=Array.from({length:A},()=>new Set);if(!t.joinedTables)return{edges:n,dependencies:s};for(let i=0;i<t.joinedTables.length;i++){const o=t.joinedTables[i],r=i+1,a=Lt(o.leftCol,e),c=Lt(o.rightCol,e);if(a&&c&&(n.push({tableA:a.tableIdx,tableB:c.tableIdx,colA:a.col.name,colB:c.col.name,op:o.op,type:o.type,declaredRightTable:r}),o.type==="left")){const l=a.tableIdx===r?c.tableIdx:a.tableIdx;s[r].add(l)}}return{edges:n,dependencies:s}}function vn(t,e){if(t.selectExprs&&t.selectExprs.length>0)return t.selectExprs;const A=new Set,n=new Set;for(const i of e)for(const o of i.columns)A.has(o.name.toLowerCase())&&n.add(o.name.toLowerCase()),A.add(o.name.toLowerCase());const s=[];for(const i of e)for(const o of i.columns){const r=n.has(o.name.toLowerCase())?`${i.name}.${o.name}`:o.name;s.push({expr:{type:"col",name:`${i.name}.${o.name}`},alias:r})}return s}function oi(t,e,A,n){const s=t.length,i=[];for(let o=1;o<s;o++){const r=t[o],a=e[r],c=t.slice(0,o),l=A.find(B=>B.tableA===r&&c.includes(B.tableB)||B.tableB===r&&c.includes(B.tableA));let u,g,E="=",h="inner";if(l)E=l.op,h=l.type,l.tableA===r?(g=`${a.name}.${l.colA}`,u=`${e[l.tableB].name}.${l.colB}`):(g=`${a.name}.${l.colB}`,u=`${e[l.tableA].name}.${l.colA}`);else{const B=n==null?void 0:n.find(Q=>Q.table.name===a.name);u=B?B.leftCol:`${e[t[0]].name}.id`,g=B?B.rightCol:`${a.name}.id`,E=B?B.op:"=",h=B?B.type:"inner"}i.push({type:h,table:a,cursor:o,leftCol:u,op:E,rightCol:g})}return i}function Po(t,e,A,n,s){if(!n||n.length===0)return!1;for(const i of n){if(i.direction==="desc")return!1;const o=i.colName;if(!o)return!1;let r=Lt(o,A);if(!r&&s){const a=s.find(c=>c.alias===o);a&&a.expr.type==="col"&&(r=Lt(a.expr.name,A))}if(!r||r.tableIdx!==e)return!1}return!0}function Go(t,e){var A;if(t.type==="null")return 1;if(t.type==="cmp"){const n=t.op??"=";if(n==="like"||n==="not like")return(typeof t.value=="string"?t.value:"").startsWith("%")?25:15;let s=!1;if(e&&t.colName){const i=t.colName.toLowerCase(),o=i.includes(".")?i.slice(i.lastIndexOf(".")+1):i;for(const r of e){const a=r.columns.find(c=>c.name.toLowerCase()===o);if(a){s=a.type===1||a.type===2||a.type===3;break}}}else typeof t.value=="number"&&(s=!0);return n==="="||n==="=="?s?2:4:s?3:6}return t.type==="in"?(((A=t.values)==null?void 0:A.length)??0)<=3?5:10:t.type==="expr"?40:t.type==="and"||t.type==="or"?15:t.type==="not"?8:10}function wo(t,e){if(!t||t.length===0)return{filters:[],isAlwaysFalse:!1,isAlwaysTrue:!0,metrics:{originalCount:0,optimizedCount:0,isAlwaysFalse:!1,isAlwaysTrue:!0,eliminatedFiltersCount:0,reordered:!1}};const A=t.length,n=[];for(const u of t)u.type==="and"&&Array.isArray(u.children)?n.push(...u.children):n.push(u);const s=new Map,i=[];for(const u of n)if(u.colName){const g=u.colName.toLowerCase();s.has(g)||s.set(g,[]),s.get(g).push(u)}else i.push(u);for(const[u,g]of s.entries()){const E=Ag(g);if(E)return{filters:[],isAlwaysFalse:!0,isAlwaysTrue:!1,metrics:{originalCount:A,optimizedCount:0,isAlwaysFalse:!0,isAlwaysTrue:!1,contradictionReason:`Contradiction on column "${u}": ${E}`,eliminatedFiltersCount:A,reordered:!1}}}const o=[];let r=0;for(const[,u]of s.entries()){const g=ng(u);r+=u.length-g.length,o.push(...g)}o.push(...i);const a=o.map(u=>ko(u)).join("|");o.sort((u,g)=>{const E=Go(u,e),h=Go(g,e);return E-h});const c=o.map(u=>ko(u)).join("|"),l=a!==c;return{filters:o,isAlwaysFalse:!1,isAlwaysTrue:o.length===0,metrics:{originalCount:A,optimizedCount:o.length,isAlwaysFalse:!1,isAlwaysTrue:o.length===0,eliminatedFiltersCount:r,reordered:l}}}function Ag(t){let e=!1,A=!1;const n=[];let s=null,i=null,o=null;for(const r of t){if(r.type==="null"&&(r.isNull===!0&&(e=!0),r.isNull===!1&&(A=!0)),r.type==="cmp"){const a=r.op??"=",c=r.value;a==="="&&c!==null&&c!==void 0&&n.push(c),typeof c=="number"&&(a===">"?(!s||c>s.val||c===s.val&&!s.strict)&&(s={val:c,strict:!0}):a===">="?(!s||c>s.val)&&(s={val:c,strict:!1}):a==="<"?(!i||c<i.val||c===i.val&&!i.strict)&&(i={val:c,strict:!0}):a==="<="&&(!i||c<i.val)&&(i={val:c,strict:!1}))}if(r.type==="in"&&!r.notIn){if(!r.values||r.values.length===0)return"Empty IN () list";const a=new Set(r.values);if(!o)o=a;else{const c=new Set([...o].filter(l=>a.has(l)));if(c.size===0)return"Mutually exclusive IN lists with no common values";o=c}}}if(e&&A)return"Conflicting IS NULL and IS NOT NULL";if(e&&(n.length>0||s||i))return"Conflicting IS NULL and literal comparison";if(n.length>1){const r=n[0];for(let a=1;a<n.length;a++)if(n[a]!==r)return`Conflicting equality values (${r} !== ${n[a]})`}if(n.length>0&&(s||i)){const r=n[0];if(typeof r=="number"){if(s&&(s.strict?r<=s.val:r<s.val))return`Equality value ${r} violates lower bound ${s.strict?">":">="} ${s.val}`;if(i&&(i.strict?r>=i.val:r>i.val))return`Equality value ${r} violates upper bound ${i.strict?"<":"<="} ${i.val}`}}if(n.length>0&&o){const r=n[0];if(!o.has(r))return`Equality value ${r} not present in IN list`}if(s&&i){if(s.val>i.val)return`Lower bound ${s.val} is greater than upper bound ${i.val}`;if(s.val===i.val&&(s.strict||i.strict))return`Strict range bounds empty at ${s.val}`}return null}function ng(t){const e=[],A=new Set;let n=!1,s;for(const r of t)if(r.type==="cmp"&&(r.op==="="||r.op===void 0)&&r.value!==null&&r.value!==void 0){n=!0,s=r.value;break}let i=null,o=null;for(const r of t)if(r.type==="cmp"&&typeof r.value=="number"){const a=r.op??"=",c=r.value;a===">"?(!i||c>i.val||c===i.val&&!i.strict)&&(i={val:c,strict:!0,filter:r}):a===">="?(!i||c>i.val)&&(i={val:c,strict:!1,filter:r}):a==="<"?(!o||c<o.val||c===o.val&&!o.strict)&&(o={val:c,strict:!0,filter:r}):a==="<="&&(!o||c<o.val)&&(o={val:c,strict:!1,filter:r})}for(const r of t){const a=ko(r);if(!A.has(a)&&!(r.type==="null"&&r.isNull===!1&&n)&&!(r.type==="in"&&!r.notIn&&n&&Array.isArray(r.values)&&r.values.includes(s))){if(r.type==="cmp"&&typeof r.value=="number"){const c=r.op??"=";if(c===">"||c===">="){if(i&&r!==i.filter)continue}else if((c==="<"||c==="<=")&&o&&r!==o.filter)continue}A.add(a),e.push(r)}}return e}function ko(t){return`${t.type}:${t.colName??""}:${t.isNull??""}:${t.op??""}:${String(t.value??"")}:${t.notIn??""}:${JSON.stringify(t.values??"")}`}function ic(t,e){const A=[...t],n=o=>o.toLowerCase(),s=o=>{const r=o.lastIndexOf(".");return r>=0?o.slice(r+1).toLowerCase():o.toLowerCase()},i=o=>{const r=n(o),a=s(o);for(const c of t)if(c.type==="cmp"&&(c.op==="="||c.op==="=="||c.op===void 0)&&c.colName&&c.value!==null&&c.value!==void 0){const l=n(c.colName),u=s(c.colName);if(l===r||u===r||l===a)return c.value}};for(const o of e){if(o.type!=="inner"&&o.type!=="left"||o.op!=="="&&o.op!=="==")continue;const r=i(o.leftCol);if(r!==void 0&&A.push({type:"cmp",colName:o.rightCol,op:"=",value:r}),o.type==="inner"){const a=i(o.rightCol);a!==void 0&&A.push({type:"cmp",colName:o.leftCol,op:"=",value:a})}}return A}class ri{constructor(e){G(this,"name","cost");G(this,"indexSeekCost");G(this,"indexNextCost");G(this,"rowEvalCost");this.indexSeekCost=(e==null?void 0:e.indexSeekCost)??rn,this.indexNextCost=(e==null?void 0:e.indexNextCost)??si,this.rowEvalCost=(e==null?void 0:e.rowEvalCost)??nA}optimize(e){var P,I;const A=[e.table,...((P=e.joinedTables)==null?void 0:P.map(b=>b.table))??[]],n=A.length,s=wo(e.filters,A);if(s.isAlwaysFalse)return{plan:{...e,filters:[]},orderedTables:A,metrics:null,isAlwaysFalse:!0,whereMetrics:s.metrics};let i=s.filters,o=s.metrics;if(e.joinedTables&&e.joinedTables.length>0){const b=ic(i,e.joinedTables);if(b.length>i.length){const H=wo(b,A);if(H.isAlwaysFalse)return{plan:{...e,filters:[]},orderedTables:A,metrics:null,isAlwaysFalse:!0,whereMetrics:H.metrics};i=H.filters,o=H.metrics}}if(n<=1||!e.joinedTables||e.joinedTables.length===0){const b=new Map;b.set(0,i);const H=sA(e.table,i,e.orderBy,e.limit);return{plan:{...e,filters:i},orderedTables:[e.table],metrics:{totalCost:H.cost,estimatedRows:H.rows,joinOrder:[e.table.name],singleTableFilters:b,crossFilters:[],tableScanTypes:[H.scanType],tableIndexNames:[H.indexName],isOrderSatisfied:H.isOrderSatisfied,sortCostAvoided:H.sortCostAvoided},isAlwaysFalse:!1,isAlwaysTrue:o.isAlwaysTrue,whereMetrics:o,isOrderSatisfied:H.isOrderSatisfied,sortCostAvoided:H.sortCostAvoided}}const r=Pe(i),a=cn(r),c=new Map,l=[];for(let b=0;b<n;b++)c.set(b,[]);for(const b of a){const H=an(b,A);if(H.size===1){const J=H.values().next().value;J!==void 0&&((I=c.get(J))==null||I.push(b))}else l.push(b)}if(n<=1||!e.joinedTables||e.joinedTables.length===0){const b=sA(A[0],c.get(0)??[]);return{plan:e,orderedTables:A,metrics:{totalCost:b.cost,estimatedRows:b.rows,joinOrder:[A[0].name],singleTableFilters:c,crossFilters:l,tableScanTypes:[b.scanType],tableIndexNames:[b.indexName]}}}const{edges:u,dependencies:g}=ii(e,A),E=new Map;for(let b=0;b<n;b++)if(g[b].size===0){const H=Po(A[b],b,A,e.orderBy,e.selectExprs),J=H?e.orderBy.map(x=>{const X=x.colName??"",Ft=X.includes(".")?X.slice(X.lastIndexOf(".")+1):X;return{...x,colName:Ft}}):void 0,ot=sA(A[b],c.get(b)??[],J,H?e.limit:void 0),rt=1<<b;E.set(rt,{order:[b],cost:ot.cost,rows:ot.rows,scanTypes:[ot.scanType],indexNames:[ot.indexName],edgesUsed:[],isOrderSatisfied:ot.isOrderSatisfied,sortCostAvoided:ot.sortCostAvoided})}const h=1<<n;for(let b=2;b<=n;b++)for(let H=1;H<h;H++)if(sg(H)===b)for(let J=0;J<n;J++){if(!(H&1<<J))continue;const ot=H^1<<J,rt=E.get(ot);if(!rt)continue;let x=!0;for(const RA of g[J])if(!(ot&1<<RA)){x=!1;break}if(!x)continue;const X=this.evaluateJoinStep(rt.rows,A[J],J,u,rt.order,c.get(J)??[]),Ft=rt.cost+X.stepCost,bt=E.get(H);let Ot=!1,In=Ft,Bn=bt?bt.cost:0;const hn=rt.isOrderSatisfied===!0,XA=(bt==null?void 0:bt.isOrderSatisfied)===!0;if(b===n&&e.orderBy&&e.orderBy.length>0&&(!hn&&X.newRows>1&&(In+=X.newRows*Math.log2(X.newRows)*this.rowEvalCost),bt&&!XA&&bt.rows>1&&(Bn+=bt.rows*Math.log2(bt.rows)*this.rowEvalCost)),!bt)Ot=!0;else if(hn&&!XA)Ot=!0;else if(!hn&&XA)Ot=!1;else{const RA=rt.scanTypes.filter(DA=>DA==="IndexScan").length+(X.scanType==="IndexScan"?1:0),As=bt.scanTypes.filter(DA=>DA==="IndexScan").length;if(RA>As&&In<=Bn*1.2)Ot=!0;else if(RA<As)Ot=!1;else if(In<Bn*.75)Ot=!0;else if(Bn<In*.75)Ot=!1;else{const DA=rt.order[0]===0,fn=bt.order[0]===0;if(DA&&!fn)Ot=!0;else if(!DA&&fn)Ot=!1;else{const Je=rt.order.filter(Cn=>Cn>J).length,Ii=bt.order.filter((Cn,Bi)=>Cn>Bi).length;Je<Ii&&(Ot=!0)}}}Ot&&E.set(H,{order:[...rt.order,J],cost:Ft,rows:X.newRows,scanTypes:[...rt.scanTypes,X.scanType],indexNames:[...rt.indexNames,X.indexName],edgesUsed:[...rt.edgesUsed,X.matchedEdge],isOrderSatisfied:rt.isOrderSatisfied,sortCostAvoided:rt.sortCostAvoided})}const B=(1<<n)-1,Q=E.get(B);let d,p,U,N,m;Q?(d=Q.order,p=Q.cost,U=Q.rows,N=Q.scanTypes,m=Q.indexNames):(d=Array.from({length:n},(b,H)=>H),p=999999,U=100,N=Array.from({length:n},()=>"TableScan"),m=Array.from({length:n},()=>{}));const T=d.map(b=>A[b]),F=oi(d,A,u,e.joinedTables),D=vn(e,A),O=(Q==null?void 0:Q.isOrderSatisfied)===!0,w=O&&e.orderBy&&e.orderBy.length>0&&U>1?U*Math.log2(U)*this.rowEvalCost:void 0;return{plan:{...e,table:T[0],joinedTables:F,selectExprs:D,filters:i,isOrderSatisfied:O},orderedTables:T,metrics:{totalCost:p,estimatedRows:U,joinOrder:T.map(b=>b.name),singleTableFilters:c,crossFilters:l,tableScanTypes:N,tableIndexNames:m,isOrderSatisfied:O,sortCostAvoided:w},isAlwaysFalse:!1,isAlwaysTrue:o.isAlwaysTrue,whereMetrics:o,isOrderSatisfied:O,sortCostAvoided:w}}evaluateJoinStep(e,A,n,s,i,o){const r=Math.max(1,A.rowCountEstimate||10);let a=1;for(const E of o)a*=Oo(E,A);const c=[];for(const E of s)if(E.tableA===n&&i.includes(E.tableB)){const h=zn(A,E.colA);c.push({edge:E,nextCol:E.colA,outerCol:E.colB,idxMatch:h})}else if(E.tableB===n&&i.includes(E.tableA)){const h=zn(A,E.colB);c.push({edge:E,nextCol:E.colB,outerCol:E.colA,idxMatch:h})}if(c.length===0){const E=e*(2+r*.1),h=Math.max(1,Math.round(e*r*a)),B={tableA:i[0],tableB:n,colA:"",colB:"",op:"=",type:"inner",declaredRightTable:n};return{stepCost:E,newRows:h,scanType:"TableScan",matchedEdge:B}}c.sort((E,h)=>{const B=E.idxMatch?E.idxMatch.isUnique?1:2:3,Q=h.idxMatch?h.idxMatch.isUnique?1:2:3;return B-Q});const l=c[0];if(l.idxMatch&&l.idxMatch.isUnique){const E=this.indexSeekCost+1*this.rowEvalCost,h=e*E,B=Math.max(1,Math.round(e*a));return{stepCost:h,newRows:B,scanType:"IndexScan",indexName:l.idxMatch.index.name,matchedEdge:l.edge}}if(l.idxMatch&&!l.idxMatch.isUnique){const E=Math.max(1,Math.min(10,Math.round(r/20))),h=this.indexSeekCost+E*this.indexNextCost,B=e*h,Q=Math.max(1,Math.round(e*E*a));return{stepCost:B,newRows:Q,scanType:"IndexScan",indexName:l.idxMatch.index.name,matchedEdge:l.edge}}const u=e*(2+r*.1),g=Math.max(1,Math.round(e*Math.max(1,Math.round(r*.1))*a));return{stepCost:u,newRows:g,scanType:"TableScan",matchedEdge:l.edge}}}function sg(t){let e=0,A=t;for(;A>0;)e+=A&1,A>>=1;return e}class oc{constructor(){G(this,"name","heuristic")}optimize(e){var D,O,w;const A=[e.table,...((D=e.joinedTables)==null?void 0:D.map(P=>P.table))??[]],n=A.length,s=Pe(e.filters),i=cn(s),o=new Map,r=[];for(let P=0;P<n;P++)o.set(P,[]);for(const P of i){const I=an(P,A);if(I.size===1){const b=I.values().next().value;b!==void 0&&((O=o.get(b))==null||O.push(P))}else r.push(P)}if(n<=1||!e.joinedTables||e.joinedTables.length===0){const P=sA(A[0],o.get(0)??[],e.orderBy,e.limit);return{plan:e,orderedTables:A,metrics:{totalCost:P.cost,estimatedRows:P.rows,joinOrder:[A[0].name],singleTableFilters:o,crossFilters:r,tableScanTypes:[P.scanType],tableIndexNames:[P.indexName],isOrderSatisfied:P.isOrderSatisfied,sortCostAvoided:P.sortCostAvoided},isOrderSatisfied:P.isOrderSatisfied,sortCostAvoided:P.sortCostAvoided}}const{edges:a,dependencies:c}=ii(e,A),l=A.map((P,I)=>{const b=Po(P,I,A,e.orderBy,e.selectExprs),H=b?e.orderBy.map(J=>{const ot=J.colName??"",rt=ot.includes(".")?ot.slice(ot.lastIndexOf(".")+1):ot;return{...J,colName:rt}}):void 0;return sA(P,o.get(I)??[],H,b?e.limit:void 0)}),u=[];for(let P=0;P<n;P++)c[P].size===0&&u.push(P);u.sort((P,I)=>{const b=l[P].isOrderSatisfied?1:0,H=l[I].isOrderSatisfied?1:0;if(b!==H)return H-b;if(l[P].rows!==l[I].rows)return l[P].rows-l[I].rows;const J=l[P].scanType==="IndexScan"?1:0,ot=l[I].scanType==="IndexScan"?1:0;return J!==ot?ot-J:P===0?-1:I===0?1:P-I});const g=u[0]??0,E=[g],h=[l[g].scanType],B=[l[g].indexName];let Q=l[g].cost,d=l[g].rows;const p=new Set;for(let P=0;P<n;P++)P!==g&&p.add(P);for(;p.size>0;){const P=[];for(const b of p){let H=!0;for(const x of c[b])if(!E.includes(x)){H=!1;break}if(!H)continue;const J=A[b],ot=Math.max(1,J.rowCountEstimate||10);let rt=null;for(const x of a)if(x.tableA===b&&E.includes(x.tableB)){const X=zn(J,x.colA);X&&(!rt||X.isUnique)&&(rt={isUnique:X.isUnique,indexName:X.index.name})}else if(x.tableB===b&&E.includes(x.tableA)){const X=zn(J,x.colB);X&&(!rt||X.isUnique)&&(rt={isUnique:X.isUnique,indexName:X.index.name})}if(rt)if(rt.isUnique){const x=rn+1*nA;P.push({tableIdx:b,rank:1,stepCost:d*x,newRows:Math.max(1,d),scanType:"IndexScan",indexName:rt.indexName})}else{const x=Math.max(1,Math.min(10,Math.round(ot/20))),X=rn+x*si;P.push({tableIdx:b,rank:2,stepCost:d*X,newRows:Math.max(1,d*x),scanType:"IndexScan",indexName:rt.indexName})}else P.push({tableIdx:b,rank:3,stepCost:d*(2+ot*.1),newRows:Math.max(1,d*Math.max(1,Math.round(ot*.1))),scanType:"TableScan"})}if(P.length===0){const b=p.values().next().value;if(b===void 0)break;E.push(b),h.push("TableScan"),B.push(void 0),p.delete(b);continue}P.sort((b,H)=>b.rank!==H.rank?b.rank-H.rank:Math.abs(b.stepCost-H.stepCost)>.05?b.stepCost-H.stepCost:b.tableIdx-H.tableIdx);const I=P[0];E.push(I.tableIdx),h.push(I.scanType),B.push(I.indexName),Q+=I.stepCost,d=I.newRows,p.delete(I.tableIdx)}const U=E.map(P=>A[P]),N=oi(E,A,a,e.joinedTables),m=vn(e,A),T=((w=l[g])==null?void 0:w.isOrderSatisfied)===!0,F=T&&e.orderBy&&e.orderBy.length>0&&d>1?d*Math.log2(d)*nA:void 0;return{plan:{...e,table:U[0],joinedTables:N,selectExprs:m,isOrderSatisfied:T},orderedTables:U,metrics:{totalCost:Q,estimatedRows:d,joinOrder:U.map(P=>P.name),singleTableFilters:o,crossFilters:r,tableScanTypes:h,tableIndexNames:B,isOrderSatisfied:T,sortCostAvoided:F},isOrderSatisfied:T,sortCostAvoided:F}}}class rc{constructor(){G(this,"name","noop")}optimize(e){var h,B;const A=[e.table,...((h=e.joinedTables)==null?void 0:h.map(Q=>Q.table))??[]],n=A.length,s=Pe(e.filters),i=cn(s),o=new Map,r=[];for(let Q=0;Q<n;Q++)o.set(Q,[]);for(const Q of i){const d=an(Q,A);if(d.size===1){const p=d.values().next().value;p!==void 0&&((B=o.get(p))==null||B.push(Q))}else r.push(Q)}const a=sA(A[0],o.get(0)??[]),c=[a.scanType],l=[a.indexName];let u=a.cost;const g=a.rows;if(e.joinedTables)for(let Q=1;Q<n;Q++){const d=e.joinedTables[Q-1],p=ui(d,A[Q],Q,A,Q);p?(c.push("IndexScan"),l.push(p.index.name),u+=g*.55):(c.push("TableScan"),l.push(void 0),u+=g*(2+(A[Q].rowCountEstimate||10)*.1))}const E=vn(e,A);return{plan:{...e,selectExprs:E},orderedTables:A,metrics:{totalCost:u,estimatedRows:g,joinOrder:A.map(Q=>Q.name),singleTableFilters:o,crossFilters:r,tableScanTypes:c,tableIndexNames:l}}}}class ig{constructor(e){G(this,"name","custom-order");G(this,"orderSpec");this.orderSpec=e}optimize(e){var m,T,F;const A=[e.table,...((m=e.joinedTables)==null?void 0:m.map(D=>D.table))??[]],n=A.length,s=e.joinedTables!==void 0&&e.joinedTables.length>0,i=Pe(e.filters),o=cn(i),r=new Map,a=[];for(let D=0;D<n;D++)r.set(D,[]);for(const D of o){const O=an(D,A);if(O.size===1){const w=O.values().next().value;w!==void 0&&((T=r.get(w))==null||T.push(D))}else a.push(D)}if(!s||n<=1){const D=sA(A[0],r.get(0)??[]);return{plan:e,orderedTables:A,metrics:{totalCost:D.cost,estimatedRows:D.rows,joinOrder:[A[0].name],singleTableFilters:r,crossFilters:a,tableScanTypes:[D.scanType],tableIndexNames:[D.indexName]}}}const c=Array.from({length:n},(D,O)=>O);if(this.orderSpec){if(typeof this.orderSpec=="function"){const D=this.orderSpec;c.sort((O,w)=>D(A[O],A[w]))}else if(Array.isArray(this.orderSpec)){const D=this.orderSpec;c.sort((O,w)=>{const P=A[O].name,I=A[w].name,b=D.indexOf(P),H=D.indexOf(I),J=b===-1?9999:b,ot=H===-1?9999:H;return J!==ot?J-ot:O-w})}}const{edges:l}=ii(e,A),u=c.map(D=>A[D]),g=oi(c,A,l,e.joinedTables),E=vn(e,A),h={...e,table:u[0],joinedTables:g,selectExprs:E},B=new Map;for(let D=0;D<n;D++)B.set(D,[]);for(const D of o){const O=an(D,u);if(O.size===1){const w=O.values().next().value;w!==void 0&&((F=B.get(w))==null||F.push(D))}}const Q=sA(u[0],B.get(0)??[]),d=[Q.scanType],p=[Q.indexName];let U=Q.cost;const N=Q.rows;if(h.joinedTables)for(let D=1;D<n;D++){const O=h.joinedTables[D-1],w=ui(O,u[D],D,u,D);w?(d.push("IndexScan"),p.push(w.index.name),U+=N*.55):(d.push("TableScan"),p.push(void 0),U+=N*(2+(u[D].rowCountEstimate||10)*.1))}return{plan:h,orderedTables:u,metrics:{totalCost:U,estimatedRows:N,joinOrder:u.map(D=>D.name),singleTableFilters:B,crossFilters:a,tableScanTypes:d,tableIndexNames:p}}}}class ac{constructor(e){G(this,"name","custom");this.fn=e}optimize(e){return this.fn(e)}}const og=ac,rg=ri,ag=ri,cg=oc,lg=rc,ug=new ri;function qo(t){return t??ug}function gg(t,e){return qo(e).optimize(t)}function ts(t){if(!t)return C.OP_EQ;switch(String(t).trim().toLowerCase().replace(/\s+/g," ")){case"=":case"==":return C.OP_EQ;case"!=":case"<>":return C.OP_NE;case">":return C.OP_GT;case">=":return C.OP_GE;case"<":return C.OP_LT;case"<=":return C.OP_LE;case"like":return C.OP_STR_LIKE;case"not like":return C.OP_STR_NOT_LIKE;case"contains":return C.OP_STR_CONTAINS;case"starts_with":return C.OP_STR_STARTS_WITH;case"ends_with":return C.OP_STR_ENDS_WITH;default:return C.OP_EQ}}class ai{constructor(){G(this,"buffer",[]);G(this,"textEncoder",new TextEncoder)}emitUint8(e){const A=this.buffer.length;return this.buffer.push(e&255),A}emitUint16(e){const A=this.buffer.length;return this.buffer.push(e&255),this.buffer.push(e>>8&255),A}emitUint32(e){const A=this.buffer.length;return this.buffer.push(e&255),this.buffer.push(e>>8&255),this.buffer.push(e>>16&255),this.buffer.push(e>>24&255),A}emitInt32(e){return this.emitUint32(e)}emitFloat64(e){const A=this.buffer.length,n=new ArrayBuffer(8);new DataView(n).setFloat64(0,e,!0);const s=new Uint8Array(n);for(let i=0;i<8;i++)this.buffer.push(s[i]);return A}emitString(e){const A=this.textEncoder.encode(e),n=this.emitUint16(A.byteLength);for(let s=0;s<A.byteLength;s++)this.buffer.push(A[s]);return n}emitBytes(e){const A=this.emitUint16(e.byteLength);for(let n=0;n<e.byteLength;n++)this.buffer.push(e[n]);return A}patchUint16(e,A){this.buffer[e]=A&255,this.buffer[e+1]=A>>8&255}currentOffset(){return this.buffer.length}toByteArray(){return new Uint8Array(this.buffer)}}function Ce(t,e,A,n,s){s===_.INT32||s===_.INT64?(t.emitUint8(C.OP_COLUMN_INT),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n)):s===_.FLOAT64?(t.emitUint8(C.OP_COLUMN_FLOAT),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n)):s===_.TEXT?(t.emitUint8(C.OP_COLUMN_TEXT),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n)):s===_.UUID?(t.emitUint8(C.OP_COLUMN_UUID),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n)):s===_.ULID?(t.emitUint8(C.OP_COLUMN_ULID),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n)):s===_.BLOB&&(t.emitUint8(C.OP_COLUMN_BLOB),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n))}function SA(t){if(t.type==="in"){if(t.values&&t.values.length>ae)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${ae} elements`);return{type:"in",colName:t.colName,expr:t.expr,values:t.values?Array.from(new Set(t.values)):[],notIn:!!t.notIn}}if(t.type==="cmp"){const e=t.op?String(t.op).trim().toLowerCase():"";if(e==="in"||e==="not in"){const A=Array.isArray(t.value)?t.value:[t.value];if(A.length>ae)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${ae} elements`);return{type:"in",colName:t.colName,expr:t.expr,values:Array.from(new Set(A)),notIn:e==="not in"}}}if(t.type==="and")return{type:"and",children:t.children?t.children.map(SA):[]};if(t.type==="or")return{type:"or",children:t.children?t.children.map(SA):[]};if(t.type==="not"){const e=t.child;if(!e)return t;if(e.type==="not"&&e.child)return SA(e.child);if(e.type==="in")return{type:"in",colName:e.colName,expr:e.expr,values:e.values,notIn:!e.notIn};if(e.type==="and")return{type:"or",children:e.children?e.children.map(A=>SA({type:"not",child:A})):[]};if(e.type==="or")return{type:"and",children:e.children?e.children.map(A=>SA({type:"not",child:A})):[]};if(e.type==="null")return{type:"null",colName:e.colName,expr:e.expr,isNull:!e.isNull};if(e.type==="cmp"){const A=e.op?String(e.op).trim().toLowerCase():"";if(A==="in"||A==="not in")return SA({type:"in",colName:e.colName,expr:e.expr,values:Array.isArray(e.value)?e.value:[e.value],notIn:A==="in"});const n={"=":"!=","!=":"=",">":"<=",">=":"<","<":">=","<=":">",like:"not like","not like":"like"};return e.op&&n[e.op]?{type:"cmp",colName:e.colName,op:n[e.op],value:e.value}:{type:"and",children:[{type:"null",colName:e.colName,isNull:!1},{type:"not",child:e}]}}}return t}function Pe(t){if(!t||t.length===0)return null;const e=t.length===1?t[0]:{type:"and",children:t};return SA(e)}function cc(t){const e=[],A=new Set;function n(s){if(s.type==="null"||s.type==="cmp"||s.type==="expr"||s.type==="in")A.has(s)||(A.add(s),e.push(s));else if(s.type==="and"||s.type==="or"){if(s.children)for(const i of s.children)n(i)}else s.type==="not"&&s.child&&n(s.child)}return n(t),e}function cn(t){if(!t)return[];const e=[];function A(n){if(n.type==="and"&&n.children)for(const s of n.children)A(s);else(n.type==="cmp"||n.type==="in"||n.type==="null")&&e.push(n)}return A(t),e}function Lt(t,e){if(t.includes(".")){const A=t.split("."),n=A[0],s=A[1],i=e.findIndex(r=>r.name.toLowerCase()===n.toLowerCase());if(i===-1)return null;const o=e[i].columns.findIndex(r=>r.name.toLowerCase()===s.toLowerCase());return o===-1?null:{tableIdx:i,cursor:i,colIdx:o,col:e[i].columns[o],table:e[i]}}for(let A=0;A<e.length;A++){const n=e[A].columns.findIndex(s=>s.name.toLowerCase()===t.toLowerCase());if(n!==-1)return{tableIdx:A,cursor:A,colIdx:n,col:e[A].columns[n],table:e[A]}}return null}function Mo(t,e,A,n,s,i,o,r){const a=o??[A];if(t.type==="expr"){const g=e*2,E=e*2+1;let h=50;const B=()=>{if(h>=64)throw new Bt(h);return h++};it(t.expr,A,n,0,g,B,i,void 0,a),n.emitUint8(C.OP_LOAD_INT),n.emitUint8(E),n.emitInt32(1),n.emitUint8(C.OP_EQ),n.emitUint8(g),n.emitUint8(E),s.push(n.emitUint16(0));return}if(t.type==="null"){if(t.expr){const E=e*2;let h=50;const B=()=>{if(h>=64)throw new Bt(h);return h++};it(t.expr,A,n,0,E,B,i,void 0,a),t.isNull?n.emitUint8(C.OP_REG_IS_NULL):n.emitUint8(C.OP_REG_IS_NOT_NULL),n.emitUint8(E),s.push(n.emitUint16(0));return}if(!t.colName)throw new Error("Filter leaf node missing colName");const g=Lt(t.colName,a);if(!g)throw new Error(`Column "${t.colName}" not found in tables`);t.isNull?n.emitUint8(C.OP_IS_NULL):n.emitUint8(C.OP_IS_NOT_NULL),n.emitUint8(g.cursor),n.emitUint8(g.colIdx),s.push(n.emitUint16(0));return}if(t.type==="in"){if(!t.values||t.values.length===0){t.notIn&&(n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0)));return}const g=e*2;if(t.expr){let h=50;const B=()=>{if(h>=64)throw new Bt(h);return h++};it(t.expr,A,n,0,g,B,i,void 0,a)}else{if(!t.colName)throw new Error("Filter IN leaf node missing colName");const h=Lt(t.colName,a);if(h)Ce(n,h.cursor,h.colIdx,g,h.col.type);else try{const B=Rt(t.colName);let Q=50;it(B,A,n,0,g,()=>{if(Q>=64)throw new Bt(Q);return Q++},i,void 0,a)}catch{throw new Error(`Column "${t.colName}" not found in tables`)}}const E=(r==null?void 0:r.get(t))??0;if(!t.notIn)n.emitUint8(C.OP_IN),n.emitUint8(g),n.emitUint16(E),s.push(n.emitUint16(0));else{let h=-1;if(t.colName){const d=Lt(t.colName,a);d&&(n.emitUint8(C.OP_IS_NULL),n.emitUint8(d.cursor),n.emitUint8(d.colIdx),h=n.emitUint16(0))}n.emitUint8(C.OP_IN),n.emitUint8(g),n.emitUint16(E);const B=n.emitUint16(0);n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0));const Q=n.currentOffset();h!==-1&&n.patchUint16(h,Q),n.patchUint16(B,Q)}return}const c=e*2,l=e*2+1;if(t.expr){let g=50;const E=()=>{if(g>=64)throw new Bt(g);return g++};it(t.expr,A,n,0,c,E,i,void 0,a)}else{if(!t.colName)throw new Error("Filter leaf node missing colName");const g=Lt(t.colName,a);if(g)Ce(n,g.cursor,g.colIdx,c,g.col.type);else try{const E=Rt(t.colName);let h=50;it(E,A,n,0,c,()=>{if(h>=64)throw new Bt(h);return h++},i,void 0,a)}catch{throw new Error(`Column "${t.colName}" not found in tables`)}}const u=ts(t.op);n.emitUint8(u),n.emitUint8(c),n.emitUint8(l),s.push(n.emitUint16(0))}function Ho(t,e,A,n,s,i,o,r){const a=o??[A];if(t.type==="expr"){const E=e*2,h=e*2+1;let B=50;const Q=()=>{if(B>=64)throw new Bt(B);return B++};it(t.expr,A,n,0,E,Q,i,void 0,a),n.emitUint8(C.OP_LOAD_INT),n.emitUint8(h),n.emitInt32(1),n.emitUint8(C.OP_EQ),n.emitUint8(E),n.emitUint8(h);const d=n.emitUint16(0);n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0)),n.patchUint16(d,n.currentOffset());return}if(t.type==="null"){if(t.expr){const h=e*2;let B=50;const Q=()=>{if(B>=64)throw new Bt(B);return B++};it(t.expr,A,n,0,h,Q,i,void 0,a),t.isNull?n.emitUint8(C.OP_REG_IS_NOT_NULL):n.emitUint8(C.OP_REG_IS_NULL),n.emitUint8(h),s.push(n.emitUint16(0));return}if(!t.colName)throw new Error("Filter leaf node missing colName");const E=Lt(t.colName,a);if(!E)throw new Error(`Column "${t.colName}" not found in tables`);t.isNull?n.emitUint8(C.OP_IS_NOT_NULL):n.emitUint8(C.OP_IS_NULL),n.emitUint8(E.cursor),n.emitUint8(E.colIdx),s.push(n.emitUint16(0));return}if(t.type==="in"){if(!t.values||t.values.length===0){t.notIn||(n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0)));return}const E=e*2;if(t.expr){let B=50;const Q=()=>{if(B>=64)throw new Bt(B);return B++};it(t.expr,A,n,0,E,Q,i,void 0,a)}else{if(!t.colName)throw new Error("Filter IN leaf node missing colName");const B=Lt(t.colName,a);if(B)Ce(n,B.cursor,B.colIdx,E,B.col.type);else try{const Q=Rt(t.colName);let d=50;it(Q,A,n,0,E,()=>{if(d>=64)throw new Bt(d);return d++},i,void 0,a)}catch{throw new Error(`Column "${t.colName}" not found in tables`)}}const h=(r==null?void 0:r.get(t))??0;if(t.notIn){if(t.colName){const B=Lt(t.colName,a);B&&(n.emitUint8(C.OP_IS_NULL),n.emitUint8(B.cursor),n.emitUint8(B.colIdx),s.push(n.emitUint16(0)))}n.emitUint8(C.OP_IN),n.emitUint8(E),n.emitUint16(h),s.push(n.emitUint16(0))}else{if(t.colName){const d=Lt(t.colName,a);d&&(n.emitUint8(C.OP_IS_NULL),n.emitUint8(d.cursor),n.emitUint8(d.colIdx),s.push(n.emitUint16(0)))}n.emitUint8(C.OP_IN),n.emitUint8(E),n.emitUint16(h);const B=n.emitUint16(0);n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0));const Q=n.currentOffset();n.patchUint16(B,Q)}return}const c=e*2,l=e*2+1;if(t.expr){let E=50;const h=()=>{if(E>=64)throw new Bt(E);return E++};it(t.expr,A,n,0,c,h,i,void 0,a)}else{if(!t.colName)throw new Error("Filter leaf node missing colName");const E=Lt(t.colName,a);if(E)Ce(n,E.cursor,E.colIdx,c,E.col.type);else try{const h=Rt(t.colName);let B=50;it(h,A,n,0,c,()=>{if(B>=64)throw new Bt(B);return B++},i,void 0,a)}catch{throw new Error(`Column "${t.colName}" not found in tables`)}}const u=ts(t.op);n.emitUint8(u),n.emitUint8(c),n.emitUint8(l);const g=n.emitUint16(0);n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0)),n.patchUint16(g,n.currentOffset())}function Eg(t,e,A,n,s,i,o,r,a,c){o==="true"?Ho(t,e,A,n,i,r,a,c):o==="false"?Mo(t,e,A,n,s,r,a,c):(Mo(t,e,A,n,s,r,a,c),n.emitUint8(C.OP_JUMP),i.push(n.emitUint16(0)))}function es(t,e,A,n,s,i,o,r,a,c){if(t.type==="cmp"||t.type==="null"||t.type==="expr"||t.type==="in"){const l=n.get(t)??0;Eg(t,l,A,e,s,i,o,r,a,c);return}if(t.type==="not"){if(!t.child)return;const l=t.child,u=n.get(l)??0;o==="true"?Mo(l,u,A,e,i,r,a,c):o==="false"?Ho(l,u,A,e,s,r,a,c):(Ho(l,u,A,e,s,r,a,c),e.emitUint8(C.OP_JUMP),i.push(e.emitUint16(0)));return}if(t.type==="and"){const l=t.children??[];if(l.length===0){o==="false"&&(e.emitUint8(C.OP_JUMP),s.push(e.emitUint16(0)));return}for(let u=0;u<l.length;u++){const g=l[u];if(u===l.length-1)es(g,e,A,n,s,i,o,r,a,c);else{const h=[];es(g,e,A,n,h,i,"true",r,a,c);const B=e.currentOffset();for(const Q of h)e.patchUint16(Q,B)}}return}if(t.type==="or"){const l=t.children??[];if(l.length===0){o==="true"&&(e.emitUint8(C.OP_JUMP),i.push(e.emitUint16(0)));return}for(let u=0;u<l.length;u++){const g=l[u];if(u===l.length-1)es(g,e,A,n,s,i,o,r,a,c);else{const h=[];es(g,e,A,n,s,h,"false",r,a,c);const B=e.currentOffset();for(const Q of h)e.patchUint16(Q,B)}}return}}function Ig(t,e,A,n,s,i,o){if(t.type==="cmp"){let r;const a=n(t.colName,t.expr);if(a!==void 0)r=a;else if(t.expr)r=s(),it(t.expr,e,A,-1,r,s,o,n);else if(t.colName){r=s();const E=Rt(t.colName);it(E,e,A,-1,r,s,o,n)}else r=s(),A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(r);const c=s(),l=t.value;l==null?(A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(c)):typeof l=="number"?Number.isInteger(l)?(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(l)):(A.emitUint8(C.OP_LOAD_FLOAT),A.emitUint8(c),A.emitFloat64(l)):typeof l=="string"?(A.emitUint8(C.OP_LOAD_TEXT),A.emitUint8(c),A.emitString(l)):typeof l=="boolean"?(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(l?1:0)):typeof l=="bigint"&&(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(Number(l)));const u=ts(t.op);A.emitUint8(u),A.emitUint8(r),A.emitUint8(c);const g=A.emitUint16(0);A.emitUint8(C.OP_JUMP),i.push(A.emitUint16(0)),A.patchUint16(g,A.currentOffset());return}if(t.type==="null"){let r;const a=n(t.colName,t.expr);if(a!==void 0)r=a;else if(t.expr)r=s(),it(t.expr,e,A,-1,r,s,o,n);else if(t.colName){r=s();const c=Rt(t.colName);it(c,e,A,-1,r,s,o,n)}else r=s(),A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(r);t.isNull?(A.emitUint8(C.OP_REG_IS_NOT_NULL),A.emitUint8(r),i.push(A.emitUint16(0))):(A.emitUint8(C.OP_REG_IS_NULL),A.emitUint8(r),i.push(A.emitUint16(0)));return}if(t.type==="expr"&&t.expr){const r=s();it(t.expr,e,A,-1,r,s,o,n);const a=s();A.emitUint8(C.OP_LOAD_INT),A.emitUint8(a),A.emitInt32(1),A.emitUint8(C.OP_EQ),A.emitUint8(r),A.emitUint8(a);const c=A.emitUint16(0);A.emitUint8(C.OP_JUMP),i.push(A.emitUint16(0)),A.patchUint16(c,A.currentOffset());return}}function lc(t,e,A,n,s,i,o){if(t.type==="cmp"){let r;const a=n(t.colName,t.expr);if(a!==void 0)r=a;else if(t.expr)r=s(),it(t.expr,e,A,-1,r,s,o,n);else if(t.colName){r=s();const g=Rt(t.colName);it(g,e,A,-1,r,s,o,n)}else r=s(),A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(r);const c=s(),l=t.value;l==null?(A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(c)):typeof l=="number"?Number.isInteger(l)?(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(l)):(A.emitUint8(C.OP_LOAD_FLOAT),A.emitUint8(c),A.emitFloat64(l)):typeof l=="string"?(A.emitUint8(C.OP_LOAD_TEXT),A.emitUint8(c),A.emitString(l)):typeof l=="boolean"?(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(l?1:0)):typeof l=="bigint"&&(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(Number(l)));const u=ts(t.op);A.emitUint8(u),A.emitUint8(r),A.emitUint8(c),i.push(A.emitUint16(0));return}if(t.type==="null"){let r;const a=n(t.colName,t.expr);if(a!==void 0)r=a;else if(t.expr)r=s(),it(t.expr,e,A,-1,r,s,o,n);else if(t.colName){r=s();const c=Rt(t.colName);it(c,e,A,-1,r,s,o,n)}else r=s(),A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(r);t.isNull?(A.emitUint8(C.OP_REG_IS_NULL),A.emitUint8(r),i.push(A.emitUint16(0))):(A.emitUint8(C.OP_REG_IS_NOT_NULL),A.emitUint8(r),i.push(A.emitUint16(0)));return}if(t.type==="expr"&&t.expr){const r=s();it(t.expr,e,A,-1,r,s,o,n);const a=s();A.emitUint8(C.OP_LOAD_INT),A.emitUint8(a),A.emitInt32(1),A.emitUint8(C.OP_EQ),A.emitUint8(r),A.emitUint8(a),i.push(A.emitUint16(0));return}}function Bg(t,e,A,n,s,i,o,r,a){r==="true"?Ig(t,e,A,n,s,o,a):r==="false"?lc(t,e,A,n,s,i,a):(lc(t,e,A,n,s,i,a),A.emitUint8(C.OP_JUMP),o.push(A.emitUint16(0)))}function NA(t,e,A,n,s,i,o,r,a){if(t.type==="cmp"||t.type==="null"||t.type==="expr"){Bg(t,A,e,n,s,i,o,r,a);return}if(t.type==="not"){if(!t.child)return;const c=t.child;r==="true"?NA(c,e,A,n,s,o,i,"false",a):r==="false"?NA(c,e,A,n,s,i,o,"true",a):NA(c,e,A,n,s,o,i,"none",a);return}if(t.type==="and"){const c=t.children??[];if(c.length===0){r==="false"&&(e.emitUint8(C.OP_JUMP),i.push(e.emitUint16(0)));return}for(let l=0;l<c.length;l++){const u=c[l];if(l===c.length-1)NA(u,e,A,n,s,i,o,r,a);else{const E=[];NA(u,e,A,n,s,E,o,"true",a);const h=e.currentOffset();for(const B of E)e.patchUint16(B,h)}}return}if(t.type==="or"){const c=t.children??[];if(c.length===0){r==="true"&&(e.emitUint8(C.OP_JUMP),o.push(e.emitUint16(0)));return}for(let l=0;l<c.length;l++){const u=c[l];if(l===c.length-1)NA(u,e,A,n,s,i,o,r,a);else{const E=[];NA(u,e,A,n,s,i,E,"false",a);const h=e.currentOffset();for(const B of E)e.patchUint16(B,h)}}return}}function hg(t,e,A,n,s,i,o){if(!t)return;const r=[];NA(t,A,e,n,s,r,i,"true",o);const a=A.currentOffset();for(const c of r)A.patchUint16(c,a)}function Ge(t,e,A,n,s,i,o,r){if(!t)return;const a=[];es(t,A,e,n,a,s,"true",i,o,r);const c=A.currentOffset();for(const l of a)A.patchUint16(l,c)}function uc(t,e,A,n){if(t.type==="literal")return typeof t.value=="number"?Number.isInteger(t.value)?_.INT32:_.FLOAT64:(typeof t.value=="string",_.TEXT);if(t.type==="col"){const s=n??[e],i=Lt(t.name,s);return i?i.col.type:_.TEXT}if(t.type==="binary")return _.FLOAT64;if(t.type==="fn"){const s=t.name.toLowerCase();if(A&&A.has(s)){const i=A.get(s);if(i.returnType!==void 0)return i.returnType}if(["upper","lower","substr","trim","concat"].includes(s))return _.TEXT;if(["length","count","starts_with","startswith","ends_with","endswith","like","contains"].includes(s))return _.INT32;if(["abs","round","floor","ceil","sum","avg","min","max"].includes(s)){if(t.args.length>0&&t.args[0].type==="col"){const i=Lt(t.args[0].name,n??[e]);if(i&&i.col.type===_.INT32&&s!=="avg")return _.INT32}return _.FLOAT64}return _.TEXT}return _.TEXT}function it(t,e,A,n,s,i,o,r,a){if(r){const c=t.type==="col"?t.name:void 0,l=r(c,t);if(l!==void 0){l!==s&&(A.emitUint8(C.OP_COPY),A.emitUint8(l),A.emitUint8(s));return}}if(t.type==="literal"){const c=t.value;c==null?(A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(s)):typeof c=="number"?Number.isInteger(c)?(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(c)):(A.emitUint8(C.OP_LOAD_FLOAT),A.emitUint8(s),A.emitFloat64(c)):typeof c=="string"?(A.emitUint8(C.OP_LOAD_TEXT),A.emitUint8(s),A.emitString(c)):typeof c=="boolean"&&(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(c?1:0));return}if(t.type==="col"){if(n===-1)throw new Error(`Column "${t.name}" in HAVING clause must be an aggregate or grouping column`);const c=a??[e],l=Lt(t.name,c);if(!l){if(t.name==="*"){A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(s);return}throw new Error(`Column "${t.name}" does not exist in table "${e.name}"`)}Ce(A,l.cursor,l.colIdx,s,l.col.type);return}if(t.type==="binary"){const c=i(),l=i();it(t.left,e,A,n,c,i,o,r,a),it(t.right,e,A,n,l,i,o,r,a);let u=C.OP_ADD;if(t.op==="+")u=C.OP_ADD;else if(t.op==="-")u=C.OP_SUB;else if(t.op==="*")u=C.OP_MUL;else if(t.op==="/")u=C.OP_DIV;else if(t.op==="%")u=C.OP_MOD;else if(t.op==="="||t.op==="!="||t.op==="<"||t.op==="<="||t.op===">"||t.op===">="){let g=C.OP_EQ;t.op==="="?g=C.OP_EQ:t.op==="!="?g=C.OP_NE:t.op==="<"?g=C.OP_LT:t.op==="<="?g=C.OP_LE:t.op===">"?g=C.OP_GT:t.op===">="&&(g=C.OP_GE),A.emitUint8(g),A.emitUint8(c),A.emitUint8(l);const E=A.emitUint16(0);A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(0),A.emitUint8(C.OP_JUMP);const h=A.emitUint16(0);A.patchUint16(E,A.currentOffset()),A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(1),A.patchUint16(h,A.currentOffset());return}A.emitUint8(u),A.emitUint8(c),A.emitUint8(l),A.emitUint8(s);return}if(t.type==="fn"){const c=t.name.toLowerCase(),l={upper:C.OP_STR_UPPER,lower:C.OP_STR_LOWER,length:C.OP_STR_LENGTH,trim:C.OP_STR_TRIM,abs:C.OP_MATH_ABS,round:C.OP_MATH_ROUND,floor:C.OP_MATH_FLOOR,ceil:C.OP_MATH_CEIL};if(l[c]){const g=i(),E=t.args[0]??{type:"literal",value:null};it(E,e,A,n,g,i,o,r,a),A.emitUint8(l[c]),A.emitUint8(g),A.emitUint8(s);return}if(c==="substr"){const g=i(),E=i(),h=i();it(t.args[0],e,A,n,g,i,o,r,a),it(t.args[1]??{type:"literal",value:1},e,A,n,E,i,o,r,a),t.args[2]!==void 0?it(t.args[2],e,A,n,h,i,o,r,a):(A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(h)),A.emitUint8(C.OP_STR_SUBSTR),A.emitUint8(g),A.emitUint8(E),A.emitUint8(h),A.emitUint8(s);return}const u={starts_with:C.OP_STR_STARTS_WITH,startswith:C.OP_STR_STARTS_WITH,ends_with:C.OP_STR_ENDS_WITH,endswith:C.OP_STR_ENDS_WITH,like:C.OP_STR_LIKE,contains:C.OP_STR_CONTAINS};if(u[c]){const g=i(),E=i();it(t.args[0]??{type:"literal",value:null},e,A,n,g,i,o,r,a),it(t.args[1]??{type:"literal",value:""},e,A,n,E,i,o,r,a),A.emitUint8(u[c]),A.emitUint8(g),A.emitUint8(E);const h=A.emitUint16(0);A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(0),A.emitUint8(C.OP_JUMP);const B=A.emitUint16(0);A.patchUint16(h,A.currentOffset()),A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(1),A.patchUint16(B,A.currentOffset());return}if(c==="concat"||c==="coalesce"){const g=t.args.length,E=i();for(let B=1;B<g;B++)i();for(let B=0;B<g;B++)it(t.args[B],e,A,n,E+B,i,o,r,a);const h=c==="concat"?C.OP_STR_CONCAT:C.OP_COALESCE;A.emitUint8(h),A.emitUint8(E),A.emitUint8(g),A.emitUint8(s);return}if(o&&o.has(c)){const g=o.get(c),E=t.args.length;let h=s;if(E>0){h=i();for(let B=1;B<E;B++)i();for(let B=0;B<E;B++)it(t.args[B],e,A,n,h+B,i,o,r,a)}A.emitUint8(C.OP_CALL_UDF),A.emitUint16(g),A.emitUint8(h),A.emitUint8(E),A.emitUint8(s);return}throw new Xi(c)}}function Yo(t,e,A,n){A==null?(t.emitUint8(C.OP_LOAD_NULL),t.emitUint8(e)):typeof A=="number"?n===_.FLOAT64||!Number.isInteger(A)?(t.emitUint8(C.OP_LOAD_FLOAT),t.emitUint8(e),t.emitFloat64(A)):(t.emitUint8(C.OP_LOAD_INT),t.emitUint8(e),t.emitInt32(Math.floor(A))):typeof A=="bigint"?(t.emitUint8(C.OP_LOAD_INT),t.emitUint8(e),t.emitInt32(Number(A))):typeof A=="string"?(t.emitUint8(C.OP_LOAD_TEXT),t.emitUint8(e),t.emitString(A)):typeof A=="boolean"&&(t.emitUint8(C.OP_LOAD_INT),t.emitUint8(e),t.emitInt32(A?1:0))}function ci(t){switch(t){case _.INT32:return-2147483648;case _.INT64:return-9223372036854775808n;case _.FLOAT64:return-1/0;case _.TEXT:case _.UUID:case _.ULID:return"";case _.BLOB:return new Uint8Array(0);default:return 0}}function Vo(t,e,A,n){var r;if(!A||A.length===0)return!1;for(const a of A)if(a.direction==="desc")return!1;const s=t.columnIndices.map(a=>e.columns[a].name.toLowerCase());let i=0;if(n&&n.size>0)for(;i<s.length&&n.has(s[i]);)i++;let o=0;for(;i<s.length&&o<A.length;){const a=(r=A[o].colName)==null?void 0:r.toLowerCase();if(!a||a!==s[i])return!1;i++,o++}return o===A.length}function gc(t,e,A,n,s){if(!A||A.length===0)return!1;for(const i of A){if(i.direction==="desc")return!1;const o=i.colName;if(!o)return!1;if(n&&n.length>0){let r=Lt(o,n);if(!r&&s){const a=s.find(c=>c.alias===o);a&&a.expr.type==="col"&&(r=Lt(a.expr.name,n))}if(!r||r.tableIdx!==0)return!1}else{const r=o.includes(".")?o.slice(o.lastIndexOf(".")+1):o;if(!t.columns.some(c=>c.name.toLowerCase()===r.toLowerCase()))return!1}}return!0}function li(t,e,A,n){if(!t.indexes||t.indexes.length===0)return null;const s=A??e,i=new Set;for(const r of e)r.type==="cmp"&&(r.op==="="||r.op===void 0)&&r.colName&&r.value!==void 0&&r.value!==null&&i.add(r.colName.toLowerCase());const o=r=>{if(n&&n.length>0){if(r.scanType==="point"&&r.index.flags&(ft.PRIMARY|ft.UNIQUE))r.satisfiesOrderBy=!0;else if(Vo(r.index,t,n,i)){if(r.scanType==="multi_point"&&r.inValues){const a=n[0].direction==="desc"?-1:1;r.inValues.sort((c,l)=>typeof c=="number"&&typeof l=="number"?(c-l)*a:String(c).localeCompare(String(l))*a)}r.satisfiesOrderBy=!0}}return r};for(const r of t.indexes)if(r.flags&ft.PRIMARY&&r.columnCount===1){const a=t.columns[r.columnIndices[0]];for(let c=0;c<e.length;c++){const l=e[c];if(l.type==="cmp"&&(l.op==="="||l.op===void 0)&&l.colName===a.name&&l.value!==void 0&&l.value!==null)return o({index:r,scanType:"point",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type});if(l.type==="in"&&!l.notIn&&l.colName===a.name&&Array.isArray(l.values)&&l.values.length>0){const u=Array.from(new Set(l.values.filter(g=>g!=null)));return o({index:r,scanType:"multi_point",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type,inValues:u})}}}for(const r of t.indexes)if(r.flags&ft.UNIQUE&&r.columnCount===1){const a=t.columns[r.columnIndices[0]];for(let c=0;c<e.length;c++){const l=e[c];if(l.type==="cmp"&&(l.op==="="||l.op===void 0)&&l.colName===a.name&&l.value!==void 0&&l.value!==null)return o({index:r,scanType:"point",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type});if(l.type==="in"&&!l.notIn&&l.colName===a.name&&Array.isArray(l.values)&&l.values.length>0){const u=Array.from(new Set(l.values.filter(g=>g!=null)));return o({index:r,scanType:"multi_point",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type,inValues:u})}}}for(const r of t.indexes)if(r.columnCount>1){const a=[];let c=!0;for(let l=0;l<r.columnCount;l++){const u=t.columns[r.columnIndices[l]],g=e.find(E=>E.type==="cmp"&&(E.op==="="||E.op===void 0)&&E.colName===u.name&&E.value!==void 0&&E.value!==null);if(g)a.push(g);else{c=!1;break}}if(c){const l={};for(const g of a)l[g.colName]=g.value;const u=bs(t.columns,r.columnIndices,r.columnCount,l);return o({index:r,scanType:r.flags&(ft.UNIQUE|ft.PRIMARY)?"point":"range",seekFilter:a[0],filterIndex:s.indexOf(a[0]),keyType:_.BLOB,compositeValue:u})}}for(const r of t.indexes)if(r.columnCount===1){const a=t.columns[r.columnIndices[0]];for(let c=0;c<e.length;c++){const l=e[c];if(l.type==="cmp"&&(l.op==="="||l.op===void 0)&&l.colName===a.name&&l.value!==void 0&&l.value!==null)return o({index:r,scanType:"range",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type})}}for(const r of t.indexes)if(r.columnCount===1){const a=t.columns[r.columnIndices[0]];for(let c=0;c<e.length;c++){const l=e[c];if(l.type==="cmp"&&(l.op===">="||l.op===">")&&l.colName===a.name&&l.value!==void 0&&l.value!==null)return o({index:r,scanType:"range",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type})}}if(n&&n.length>0){for(const r of t.indexes)if(Vo(r,t,n,i))if(r.columnCount===1){const a=t.columns[r.columnIndices[0]];return{index:r,scanType:"range",seekFilter:void 0,filterIndex:-1,keyType:a.type,satisfiesOrderBy:!0}}else{const a={};for(let l=0;l<r.columnCount;l++){const u=t.columns[r.columnIndices[l]],g=e.find(E=>E.type==="cmp"&&(E.op==="="||E.op===void 0)&&E.colName===u.name&&E.value!==void 0&&E.value!==null);g?a[u.name]=g.value:a[u.name]=ci(u.type)}const c=bs(t.columns,r.columnIndices,r.columnCount,a);return{index:r,scanType:"range",seekFilter:void 0,filterIndex:-1,keyType:_.BLOB,compositeValue:c,satisfiesOrderBy:!0}}}return null}function ui(t,e,A,n,s){if(t.op!=="="||!e.indexes||e.indexes.length===0)return null;const i=Lt(t.leftCol,n),o=Lt(t.rightCol,n);if(!i||!o)return null;let r=null,a=null;if(i.tableIdx===A&&o.tableIdx<A?(r=i,a=o):o.tableIdx===A&&i.tableIdx<A&&(r=o,a=i),!r||!a)return null;let c=null,l=999;for(const g of e.indexes)if(g.columnCount===1&&g.columnIndices[0]===r.colIdx){const E=(g.flags&ft.PRIMARY)!==0,h=(g.flags&ft.UNIQUE)!==0,B=E?1:h?2:3;B<l&&(l=B,c=g)}if(!c)return null;const u=(c.flags&(ft.PRIMARY|ft.UNIQUE))!==0;return{index:c,isUnique:u,innerCol:r,outerCol:a,indexCursor:s}}function xo(t,e){var Ii,Cn,Bi,fc,Cc,Qc,dc,_c,mc;const A=[t.table,...((Ii=t.joinedTables)==null?void 0:Ii.map(M=>M.table))??[]],s=qo((e==null?void 0:e.planner)??t.planner).optimize(t),i=s.orderedTables??A,o=s.whereMetrics,r=s.metrics;if(s.isAlwaysFalse){const M=new ai;M.emitUint8(C.OP_HALT);const Z=M.toByteArray();return t.outputColumns&&(Z.outputColumns=t.outputColumns),Z.allTables=i,Z.whereMetrics=o,Z}const a=s.plan;a!==t&&Object.assign(t,a);const c=t.joinedTables!==void 0&&t.joinedTables.length>0,l=Pe(t.filters),u=l?cc(l):[],g=cn(l),E=Array.from({length:i.length},()=>[]),h=new Set;if(c&&r)for(let M=0;M<i.length;M++){const Z=A.indexOf(i[M]);if(Z!==-1){const tt=r.singleTableFilters.get(Z)??[];if(M===0||t.joinedTables&&((Cn=t.joinedTables[M-1])==null?void 0:Cn.type)==="inner"){E[M]=tt;for(const et of tt)h.add(et)}}}const B=[];for(const M of g)h.has(M)||B.push(M);const Q=Pe(B),d=c&&gc(i[0],t.joinedTables,t.orderBy,i,t.selectExprs),p=d?t.orderBy.map(M=>{const Z=M.colName??"",tt=Z.includes(".")?Z.slice(Z.lastIndexOf(".")+1):Z;return{...M,colName:tt}}):void 0,U=c?li(i[0],E[0],u,p):null,N=d&&!!(U!=null&&U.satisfiesOrderBy);let m=i.length,T=-1;U&&m<16&&(T=m++);const F=new Array(i.length).fill(null);if(c&&t.joinedTables)for(let M=1;M<i.length;M++){const Z=t.joinedTables[M-1];if(m<16){const tt=ui(Z,i[M],M,i,m);tt&&(F[M]=tt,m++)}}const D=m;if(D>16)throw new hs(D,16);for(const M of g)if(M.type==="in"&&!M.notIn&&(!M.values||M.values.length===0)){const Z=new ai;Z.emitUint8(C.OP_HALT);const tt=Z.toByteArray();return t.outputColumns&&(tt.outputColumns=t.outputColumns),tt}const O=[],w=new Map;for(const M of u)if(M.type==="in"){const Z=O.length;w.set(M,Z);const tt=new Set;if(M.values)for(const et of M.values)et!=null&&(tt.add(et),typeof et=="bigint"?tt.add(Number(et)):typeof et=="number"&&Number.isSafeInteger(et)&&tt.add(BigInt(et)));O.push(tt)}const P=new Map;for(let M=0;M<u.length;M++)P.set(u[M],M);if(u.length*2>=64)throw new Bt(u.length*2);if(t.orderBy&&t.orderBy.length>8)throw new pr(t.orderBy.length);if(t.groupBy&&t.groupBy.length>8)throw new Ur(t.groupBy.length);const I=new ai;if(t.limit!==void 0&&t.limit<=0)return I.emitUint8(C.OP_HALT),I.toByteArray();let b=u.length*2;const H=t.offset!==void 0&&t.offset>0,J=t.limit!==void 0&&t.limit>0,ot=H?b++:-1,rt=J?b++:-1;if(b>=64)throw new Bt(b);const x=t.table;for(let M=0;M<u.length;M++){const Z=u[M];if(Z.type==="cmp"){const tt=M*2+1,et=Z.value;if(et==null)I.emitUint8(C.OP_LOAD_NULL),I.emitUint8(tt);else if(typeof et=="number"){const Pt=Z.colName?Lt(Z.colName,i):void 0;Pt&&Pt.col.type===_.FLOAT64?(I.emitUint8(C.OP_LOAD_FLOAT),I.emitUint8(tt),I.emitFloat64(et)):Number.isInteger(et)?(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(tt),I.emitInt32(Math.floor(et))):(I.emitUint8(C.OP_LOAD_FLOAT),I.emitUint8(tt),I.emitFloat64(et))}else typeof et=="bigint"?(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(tt),I.emitInt32(Number(et))):typeof et=="string"?(I.emitUint8(C.OP_LOAD_TEXT),I.emitUint8(tt),I.emitString(et)):typeof et=="boolean"&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(tt),I.emitInt32(et?1:0))}}if(H&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(ot),I.emitInt32(t.offset)),J&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(rt),I.emitInt32(t.limit)),t.aggregates&&t.aggregates.length>0||t.groupBy&&t.groupBy.length>0){const M=((Bi=t.groupBy)==null?void 0:Bi.length)??0,Z=t.aggregates??[],tt=Z.length,et=[];for(const z of t.groupBy??[]){const W=typeof z=="string"?z:z.colName??(z.expr?le(z.expr):"group_key"),ut=(fc=t.selectExprs)==null?void 0:fc.find(at=>{if(at.alias===W)return!0;if(typeof z=="object"&&z.expr)return JSON.stringify(at.expr)===JSON.stringify(z.expr);if(typeof z=="string"&&z.includes("("))try{const Xt=Rt(z);return JSON.stringify(at.expr)===JSON.stringify(Xt)}catch{return!1}return!1}),ct=(ut==null?void 0:ut.alias)??W,nt=x.columns.find(at=>at.name===W||at.name===ct);nt?et.push({...nt,name:ct}):et.push({name:ct,type:_.TEXT,flags:gt.NONE,colOffset:0})}for(let z=0;z<Z.length;z++){const W=Z[z],ut=W.alias??(W.colName?`${W.func}_${W.colName}`:W.func),ct=W.func==="count"?_.INT32:_.FLOAT64;et.push({name:ut,type:ct,flags:gt.NONE,colOffset:0})}const lt=b,yt=lt+M,Ut=yt+4,wt=Ut+4,ht=wt+M,Wt=ht+tt;if(Wt>=64)throw new Bt(Wt);I.emitUint8(C.OP_AGG_INIT),I.emitUint8(0),I.emitUint8(lt),I.emitUint8(M),I.emitUint8(0),I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(x.rootPageId),I.emitUint8(C.OP_REWIND),I.emitUint8(0);const re=I.emitUint16(0),Tt=I.currentOffset(),Ae=[];if(Ge(l,x,I,P,Ae,t.udfNameMap,void 0,w),t.groupBy)for(let z=0;z<t.groupBy.length;z++){const W=t.groupBy[z],ut=lt+z;let ct=Math.max(Wt+4,40);const nt=()=>{if(ct>=64)throw new Bt(ct);return ct++};if(typeof W=="object"&&W.expr)it(W.expr,x,I,0,ut,nt,t.udfNameMap);else{const at=typeof W=="string"?W:W.colName,Xt=(Qc=(Cc=t.selectExprs)==null?void 0:Cc.find(Gt=>Gt.alias===at))==null?void 0:Qc.expr;if(Xt)it(Xt,x,I,0,ut,nt,t.udfNameMap);else{const Gt=x.columns.findIndex(Kt=>Kt.name===at);if(Gt!==-1){const Kt=x.columns[Gt];Ce(I,0,Gt,ut,Kt.type)}else try{const Kt=Rt(at);it(Kt,x,I,0,ut,nt,t.udfNameMap)}catch{throw new Error(`Grouping column "${at}" not found in table "${x.name}"`)}}}}tt===0&&M>0&&(I.emitUint8(C.OP_AGG_STEP),I.emitUint8(0),I.emitUint8(lt),I.emitUint8(M),I.emitUint8(255),I.emitUint8(0));for(let z=0;z<Z.length;z++){const W=Z[z];let ut=0;W.func==="count"?ut=0:W.func==="sum"?ut=1:W.func==="avg"?ut=2:W.func==="min"?ut=3:W.func==="max"&&(ut=4);let ct=255;if(W.colName&&W.colName!=="*"){const nt=x.columns.findIndex(at=>at.name===W.colName);if(nt!==-1){const at=x.columns[nt];ct=yt,Ce(I,0,nt,ct,at.type)}else try{const at=Rt(W.colName);let Xt=Math.max(Wt+4,40);const Gt=()=>{if(Xt>=64)throw new Bt(Xt);return Xt++};ct=yt,it(at,x,I,0,ct,Gt,t.udfNameMap)}catch{}}I.emitUint8(C.OP_AGG_STEP),I.emitUint8(0),I.emitUint8(lt),I.emitUint8(M),I.emitUint8(ct),I.emitUint8(z<<3|ut)}const Re=I.currentOffset();for(const z of Ae)I.patchUint16(z,Re);I.emitUint8(C.OP_NEXT_ROW),I.emitUint8(0);const Qe=I.emitUint16(0);I.emitUint8(C.OP_JUMP),I.emitUint16(Tt);const FA=I.currentOffset();I.patchUint16(re,FA),I.patchUint16(Qe,FA);const De=I.currentOffset();I.emitUint8(C.OP_AGG_NEXT),I.emitUint8(0),I.emitUint8(wt),I.emitUint8(Ut);const ne=I.emitUint16(0),iA=I.currentOffset();I.emitUint8(C.OP_HALT);const Y=I.currentOffset();I.patchUint16(ne,Y);for(let z=0;z<Z.length;z++){const W=Z[z],ut=ht+z;let ct=Ut,nt=0;W.func==="count"?(ct=Ut,nt=0):W.func==="sum"?(ct=Ut,nt=1):W.func==="avg"?(ct=Ut,nt=2):W.func==="min"?(ct=Ut+2,nt=3):W.func==="max"&&(ct=Ut+3,nt=4),I.emitUint8(C.OP_AGG_FINAL),I.emitUint8(ct),I.emitUint8(Ut+1),I.emitUint8(ut),I.emitUint8(z<<3|nt)}const Mt=(z,W)=>{var ut;for(let ct=0;ct<Z.length;ct++){const nt=Z[ct],at=ht+ct;if(z&&(nt.alias&&nt.alias===z||(nt.colName?`${nt.func}_${nt.colName}`:nt.func)===z||`${nt.func}(${nt.colName??"*"})`===z.replace(/\s+/g,"")||nt.func===z))return at;if(W&&W.type==="fn"){const Xt=W.name.toLowerCase();if(nt.func===Xt)if(Xt==="count"){const Gt=W.args[0],Kt=Gt&&Gt.type==="col"?Gt.name:void 0;if(nt.colName===void 0||nt.colName==="*"||nt.colName===Kt)return at}else{const Gt=W.args[0],Kt=Gt&&Gt.type==="col"?Gt.name:void 0;if(nt.colName===Kt)return at}}}if(t.groupBy)for(let ct=0;ct<t.groupBy.length;ct++){const nt=t.groupBy[ct],at=wt+ct,Xt=typeof nt=="string"?nt:nt.colName,Gt=typeof nt=="object"?nt.expr:void 0;if(z){if(Xt===z||Gt&&le(Gt)===z)return at;const Kt=(ut=t.selectExprs)==null?void 0:ut.find($o=>$o.alias===z);if(Kt){if(Xt===Kt.alias||Gt&&JSON.stringify(Gt)===JSON.stringify(Kt.expr))return at;if(typeof nt=="string"&&nt.includes("("))try{const $o=Rt(nt);if(JSON.stringify($o)===JSON.stringify(Kt.expr))return at}catch{}}}if(W){if(Gt&&JSON.stringify(Gt)===JSON.stringify(W)||W.type==="col"&&Xt===W.name)return at;if(typeof nt=="string"&&nt.includes("("))try{const Kt=Rt(nt);if(JSON.stringify(Kt)===JSON.stringify(W))return at}catch{}}}};if(t.having&&t.having.length>0){let z=null;t.having.length===1?z=t.having[0]:z={type:"and",children:t.having};const W=[];let ut=Math.max(Wt+4,40);hg(z,x,I,Mt,()=>{if(ut>=64)throw new Bt(ut);return ut++},W,t.udfNameMap);for(const nt of W)I.patchUint16(nt,De)}H&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),I.emitUint16(De)),I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(wt),I.emitUint8(M+tt),J&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),I.emitUint16(iA)),I.emitUint8(C.OP_JUMP),I.emitUint16(De);const St=I.toByteArray();return St.outputColumns=et,St.inSets=O,t.outputColumns=et,St}const X=c?null:li(x,g,u,t.orderBy);if(!c&&t.orderBy&&t.orderBy.length>0&&!(X!=null&&X.satisfiesOrderBy)){const M=t.orderBy.length,Z=b,tt=Z+M;if(tt>=64)throw new Bt(tt);const et={numKeys:M,directions:t.orderBy.map(Tt=>Tt.direction==="desc"?1:0),nullOrders:t.orderBy.map(Tt=>Tt.nullOrder==="nulls_last"?1:Tt.nullOrder==="nulls_first"?0:Tt.direction==="desc"?1:0),limit:t.limit,offset:t.offset};t.keyInfos=[et],I.emitUint8(C.OP_SORTER_OPEN),I.emitUint8(0),I.emitUint8(0),I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(x.rootPageId),I.emitUint8(C.OP_REWIND),I.emitUint8(0);const Pt=I.emitUint16(0),lt=I.currentOffset(),yt=[];Ge(l,x,I,P,yt,t.udfNameMap,void 0,w);for(let Tt=0;Tt<M;Tt++){const Ae=t.orderBy[Tt],Re=Z+Tt;let Qe=50;const FA=()=>{if(Qe>=64)throw new Bt(Qe);return Qe++};if(Ae.expr)it(Ae.expr,x,I,0,Re,FA,t.udfNameMap);else if(Ae.colName){const De=Ae.colName,ne=(_c=(dc=t.selectExprs)==null?void 0:dc.find(iA=>iA.alias===De))==null?void 0:_c.expr;if(ne)it(ne,x,I,0,Re,FA,t.udfNameMap);else{const iA=x.columns.findIndex(Y=>Y.name===De);if(iA!==-1){const Y=x.columns[iA];Ce(I,0,iA,Re,Y.type)}else try{const Y=Rt(De);it(Y,x,I,0,Re,FA,t.udfNameMap)}catch{throw new Error(`Order by column "${De}" not found in table "${x.name}"`)}}}}I.emitUint8(C.OP_SORTER_INSERT),I.emitUint8(0),I.emitUint8(Z),I.emitUint8(M),I.emitUint8(0);const Ut=I.currentOffset();for(const Tt of yt)I.patchUint16(Tt,Ut);I.emitUint8(C.OP_NEXT_ROW),I.emitUint8(0);const wt=I.emitUint16(0);I.emitUint8(C.OP_JUMP),I.emitUint16(lt);const ht=I.currentOffset();I.patchUint16(Pt,ht),I.patchUint16(wt,ht),I.emitUint8(C.OP_SORTER_SORT),I.emitUint8(0);const Wt=I.currentOffset();I.emitUint8(C.OP_SORTER_NEXT),I.emitUint8(0),I.emitUint16(Wt),I.emitUint8(C.OP_HALT);const re=I.toByteArray();return re.keyInfos=t.keyInfos,re.inSets=O,r&&(re.planMetrics=r,re.estimatedCost=r.totalCost,re.estimatedRows=r.estimatedRows,re.joinOrder=r.joinOrder),re}const Ft=t.selectExprs!==void 0&&t.selectExprs.length>0&&!(t.selectExprs.length===1&&t.selectExprs[0].expr.type==="col"&&t.selectExprs[0].expr.name==="*");let bt=[];if(Ft)bt=t.selectExprs;else if(c){const M=new Set,Z=new Set;for(const tt of i)for(const et of tt.columns)M.has(et.name.toLowerCase())&&Z.add(et.name.toLowerCase()),M.add(et.name.toLowerCase());for(const tt of i)for(const et of tt.columns){const Pt=Z.has(et.name.toLowerCase())?`${tt.name}.${et.name}`:et.name;bt.push({expr:{type:"col",name:`${tt.name}.${et.name}`},alias:Pt})}}let Ot=-1;if(Ft||c){const M=bt.map(Z=>({name:Z.alias,type:uc(Z.expr,x,t.udfDefs,i),flags:gt.NONE,colOffset:0}));if(t.outputColumns=M,Ot=b,b+=bt.length,b>=64)throw new Bt(b)}if(c){const M=i.length,Z=new Array(M);for(let Y=1;Y<M;Y++)t.joinedTables[Y-1].type==="left"&&(Z[Y]=b++);const tt=b++,et=b++,Pt=b++;let lt=-1;if(U&&T!==-1)if(U.compositeValue){if(lt=b++,b>=64)throw new Bt(b);I.emitUint8(C.OP_LOAD_BLOB),I.emitUint8(lt),I.emitUint32(U.compositeValue.length),I.emitBytes(U.compositeValue)}else if(U.scanType==="multi_point"){if(lt=b++,b>=64)throw new Bt(b)}else if(U.filterIndex>=0)lt=U.filterIndex*2+1;else{if(lt=b++,b>=64)throw new Bt(b);const Y=ci(U.keyType);Yo(I,lt,Y,U.keyType)}if(b>=64)throw new Bt(b);for(let Y=0;Y<M;Y++)I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(Y),I.emitUint32(i[Y].rootPageId);U&&T!==-1&&(I.emitUint8(C.OP_OPEN_INDEX),I.emitUint8(T),I.emitUint32(U.index.rootPageId));for(let Y=1;Y<M;Y++){const Mt=F[Y];Mt&&(I.emitUint8(C.OP_OPEN_INDEX),I.emitUint8(Mt.indexCursor),I.emitUint32(Mt.index.rootPageId))}const yt=new Array(M),Ut=new Array(M),wt=Array.from({length:M},()=>[]),ht=new Array(M),Wt=[];if(U&&T!==-1?U.scanType==="point"?(I.emitUint8(C.OP_INDEX_SEEK_EQ),I.emitUint8(T),I.emitUint8(0),I.emitUint8(lt),I.emitUint8(U.keyType),yt[0]=I.emitUint16(0)):(I.emitUint8(C.OP_INDEX_SEEK_GE),I.emitUint8(T),I.emitUint8(0),I.emitUint8(lt),I.emitUint8(U.keyType),yt[0]=I.emitUint16(0)):(I.emitUint8(C.OP_REWIND),I.emitUint8(0),yt[0]=I.emitUint16(0)),Ut[0]=I.currentOffset(),E[0]&&E[0].length>0){const Y=Pe(E[0]);Ge(Y,i[0],I,P,wt[0],t.udfNameMap,i,w)}for(let Y=1;Y<M;Y++){const Mt=t.joinedTables[Y-1],St=F[Y];if(Mt.type==="left"&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(Z[Y]),I.emitInt32(0)),St&&St.isUnique){if(Ce(I,St.outerCol.cursor,St.outerCol.colIdx,tt,St.outerCol.col.type),I.emitUint8(C.OP_INDEX_SEEK_EQ),I.emitUint8(St.indexCursor),I.emitUint8(Y),I.emitUint8(tt),I.emitUint8(St.outerCol.col.type),yt[Y]=I.emitUint16(0),Ut[Y]=I.currentOffset(),Mt.type==="inner"&&E[Y]&&E[Y].length>0){const z=Pe(E[Y]);Ge(z,i[Y],I,P,wt[Y],t.udfNameMap,i,w)}Mt.type==="left"&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(Z[Y]),I.emitInt32(1))}else if(St&&!St.isUnique){Ce(I,St.outerCol.cursor,St.outerCol.colIdx,tt,St.outerCol.col.type),I.emitUint8(C.OP_INDEX_SEEK_GE),I.emitUint8(St.indexCursor),I.emitUint8(Y),I.emitUint8(tt),I.emitUint8(St.outerCol.col.type),yt[Y]=I.emitUint16(0),Ut[Y]=I.currentOffset(),Ce(I,Y,St.innerCol.colIdx,et,St.innerCol.col.type),I.emitUint8(C.OP_EQ),I.emitUint8(tt),I.emitUint8(et);const z=I.emitUint16(0);if(I.emitUint8(C.OP_JUMP),wt[Y].push(I.emitUint16(0)),I.patchUint16(z,I.currentOffset()),Mt.type==="inner"&&E[Y]&&E[Y].length>0){const W=Pe(E[Y]);Ge(W,i[Y],I,P,wt[Y],t.udfNameMap,i,w)}Mt.type==="left"&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(Z[Y]),I.emitInt32(1))}else{I.emitUint8(C.OP_REWIND),I.emitUint8(Y),yt[Y]=I.emitUint16(0),Ut[Y]=I.currentOffset();const z=Lt(Mt.leftCol,i);if(!z)throw new Error(`Join column "${Mt.leftCol}" not found in tables`);const W=Lt(Mt.rightCol,i);if(!W)throw new Error(`Join column "${Mt.rightCol}" not found in tables`);Ce(I,z.cursor,z.colIdx,tt,z.col.type),Ce(I,W.cursor,W.colIdx,et,W.col.type);let ut;switch(Mt.op){case"=":ut=C.OP_EQ;break;case"!=":ut=C.OP_NE;break;case">":ut=C.OP_GT;break;case">=":ut=C.OP_GE;break;case"<":ut=C.OP_LT;break;case"<=":ut=C.OP_LE;break;default:ut=C.OP_EQ}I.emitUint8(ut),I.emitUint8(tt),I.emitUint8(et);const ct=I.emitUint16(0);if(I.emitUint8(C.OP_JUMP),wt[Y].push(I.emitUint16(0)),I.patchUint16(ct,I.currentOffset()),Mt.type==="inner"&&E[Y]&&E[Y].length>0){const nt=Pe(E[Y]);Ge(nt,i[Y],I,P,wt[Y],t.udfNameMap,i,w)}Mt.type==="left"&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(Z[Y]),I.emitInt32(1))}}Ge(Q,x,I,P,wt[M-1],t.udfNameMap,i,w);const Tt=!(t.orderBy!==void 0&&t.orderBy.length>0)||N;let Ae=-1;H&&Tt&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),Ae=I.emitUint16(0));let Re=b;const Qe=()=>{if(Re>=64)throw new Bt(Re);return Re++};for(let Y=0;Y<bt.length;Y++)it(bt[Y].expr,x,I,0,Ot+Y,Qe,t.udfNameMap,void 0,i);I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(bt.length),J&&Tt&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),Wt.push(I.emitUint16(0)));for(let Y=M-1;Y>=1;Y--){const Mt=I.currentOffset();Y===M-1&&Ae!==-1&&I.patchUint16(Ae,Mt);for(const W of wt[Y])I.patchUint16(W,Mt);const St=F[Y];if(St&&St.isUnique){const W=I.currentOffset();I.patchUint16(yt[Y],W)}else if(St&&!St.isUnique){I.emitUint8(C.OP_INDEX_NEXT),I.emitUint8(St.indexCursor),I.emitUint8(Y),ht[Y]=I.emitUint16(0),I.emitUint8(C.OP_JUMP),I.emitUint16(Ut[Y]);const W=I.currentOffset();I.patchUint16(yt[Y],W),I.patchUint16(ht[Y],W)}else{I.emitUint8(C.OP_NEXT_ROW),I.emitUint8(Y),ht[Y]=I.emitUint16(0),I.emitUint8(C.OP_JUMP),I.emitUint16(Ut[Y]);const W=I.currentOffset();I.patchUint16(yt[Y],W),I.patchUint16(ht[Y],W)}if(t.joinedTables[Y-1].type==="left"){I.emitUint8(C.OP_LOAD_INT),I.emitUint8(Pt),I.emitInt32(0),I.emitUint8(C.OP_EQ),I.emitUint8(Z[Y]),I.emitUint8(Pt);const W=I.emitUint16(0);I.emitUint8(C.OP_JUMP);const ut=I.emitUint16(0);I.patchUint16(W,I.currentOffset());for(let at=0;at<bt.length;at++){const Xt=bt[at];let Gt=-1;if(Xt.expr.type==="col"){const Kt=Lt(Xt.expr.name,i);Kt&&(Gt=Kt.tableIdx)}Gt>=Y?(I.emitUint8(C.OP_LOAD_NULL),I.emitUint8(Ot+at)):it(Xt.expr,x,I,0,Ot+at,Qe,t.udfNameMap,void 0,i)}const ct=[];H&&Tt&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),ct.push(I.emitUint16(0))),I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(bt.length),J&&Tt&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),Wt.push(I.emitUint16(0)));const nt=I.currentOffset();I.patchUint16(ut,nt);for(const at of ct)I.patchUint16(at,nt)}}const FA=I.currentOffset();for(const Y of wt[0])I.patchUint16(Y,FA);U&&T!==-1?U.scanType==="point"?(I.emitUint8(C.OP_JUMP),ht[0]=I.emitUint16(0)):(I.emitUint8(C.OP_INDEX_NEXT),I.emitUint8(T),I.emitUint8(0),ht[0]=I.emitUint16(0),I.emitUint8(C.OP_JUMP),I.emitUint16(Ut[0])):(I.emitUint8(C.OP_NEXT_ROW),I.emitUint8(0),ht[0]=I.emitUint16(0),I.emitUint8(C.OP_JUMP),I.emitUint16(Ut[0]));const De=I.currentOffset();I.patchUint16(yt[0],De),I.patchUint16(ht[0],De);for(const Y of Wt)I.patchUint16(Y,De);I.emitUint8(C.OP_HALT);const ne=I.toByteArray();t.outputColumns&&(ne.outputColumns=t.outputColumns);const iA=(mc=t.joinedTables)==null?void 0:mc.map((Y,Mt)=>{const St=Mt+1,z=F[St];return{tableIndex:St,tableName:Y.table.name,scanType:z?"IndexScan":"TableScan",indexName:z?z.index.name:void 0}});return ne.joinedTableScans=iA,ne.allTables=i,ne.inSets=O,ne.table0Scan=U,ne.isOrderSatisfied=N,N&&(t.isOrderSatisfied=!0),r&&(ne.planMetrics=r,ne.estimatedCost=r.totalCost,ne.estimatedRows=r.estimatedRows,ne.joinOrder=r.joinOrder),o&&(ne.whereMetrics=o),ne}if(X){let M;if(X.compositeValue){if(M=b++,M>=64)throw new Bt(M);I.emitUint8(C.OP_LOAD_BLOB),I.emitUint8(M),I.emitBytes(X.compositeValue)}else if(X.scanType==="multi_point"){if(M=b++,M>=64)throw new Bt(M)}else if(X.filterIndex>=0)M=X.filterIndex*2+1;else{if(M=b++,M>=64)throw new Bt(M);const Z=ci(X.keyType);Yo(I,M,Z,X.keyType)}if(X.scanType==="point"){I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(x.rootPageId),I.emitUint8(C.OP_OPEN_INDEX),I.emitUint8(1),I.emitUint32(X.index.rootPageId),I.emitUint8(C.OP_INDEX_SEEK_EQ),I.emitUint8(1),I.emitUint8(0),I.emitUint8(M),I.emitUint8(X.keyType);const Z=I.emitUint16(0),tt=[];Ge(l,x,I,P,tt,t.udfNameMap,void 0,w);let et=-1;if(H&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),et=I.emitUint16(0)),Ft){let Ut=b;const wt=()=>{if(Ut>=64)throw new Bt(Ut);return Ut++};for(let ht=0;ht<t.selectExprs.length;ht++)it(t.selectExprs[ht].expr,x,I,0,Ot+ht,wt,t.udfNameMap);I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(t.selectExprs.length)}else I.emitUint8(C.OP_EMIT_ROW),I.emitUint8(0);I.emitUint8(C.OP_JUMP);const Pt=I.emitUint16(0),lt=I.currentOffset();I.patchUint16(Z,lt),I.patchUint16(Pt,lt),et!==-1&&I.patchUint16(et,lt);for(const Ut of tt)I.patchUint16(Ut,lt);I.emitUint8(C.OP_HALT);const yt=I.toByteArray();return yt.indexScan=X,yt.inSets=O,t.outputColumns&&(yt.outputColumns=t.outputColumns),X!=null&&X.satisfiesOrderBy&&(yt.isOrderSatisfied=!0,t.isOrderSatisfied=!0),r&&(yt.planMetrics=r,yt.estimatedCost=r.totalCost,yt.estimatedRows=r.estimatedRows,yt.joinOrder=r.joinOrder),yt}else if(X.scanType==="multi_point"){const Z=X.inValues?X.inValues.length:0;if(Z===0){I.emitUint8(C.OP_HALT);const lt=I.toByteArray();return lt.indexScan=X,lt.inSets=O,t.outputColumns&&(lt.outputColumns=t.outputColumns),lt}I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(x.rootPageId),I.emitUint8(C.OP_OPEN_INDEX),I.emitUint8(1),I.emitUint32(X.index.rootPageId);const tt=[];for(let lt=0;lt<Z;lt++){const yt=X.inValues[lt];Yo(I,M,yt,X.keyType),I.emitUint8(C.OP_INDEX_SEEK_EQ),I.emitUint8(1),I.emitUint8(0),I.emitUint8(M),I.emitUint8(X.keyType);const Ut=I.emitUint16(0),wt=[];Ge(l,x,I,P,wt,t.udfNameMap,void 0,w);let ht=-1;if(H&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),ht=I.emitUint16(0)),Ft){let Ae=b;const Re=()=>{if(Ae>=64)throw new Bt(Ae);return Ae++};for(let Qe=0;Qe<t.selectExprs.length;Qe++)it(t.selectExprs[Qe].expr,x,I,0,Ot+Qe,Re,t.udfNameMap);I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(t.selectExprs.length)}else I.emitUint8(C.OP_EMIT_ROW),I.emitUint8(0);J&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),tt.push(I.emitUint16(0)));const Wt=lt===Z-1;let re=-1;Wt||(I.emitUint8(C.OP_JUMP),re=I.emitUint16(0));const Tt=I.currentOffset();I.patchUint16(Ut,Tt);for(const Ae of wt)I.patchUint16(Ae,Tt);ht!==-1&&I.patchUint16(ht,Tt),re!==-1&&I.patchUint16(re,Tt)}const et=I.currentOffset();for(const lt of tt)I.patchUint16(lt,et);I.emitUint8(C.OP_HALT);const Pt=I.toByteArray();return Pt.indexScan=X,Pt.inSets=O,t.outputColumns&&(Pt.outputColumns=t.outputColumns),X!=null&&X.satisfiesOrderBy&&(Pt.isOrderSatisfied=!0,t.isOrderSatisfied=!0),r&&(Pt.planMetrics=r,Pt.estimatedCost=r.totalCost,Pt.estimatedRows=r.estimatedRows,Pt.joinOrder=r.joinOrder),Pt}else{I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(x.rootPageId),I.emitUint8(C.OP_OPEN_INDEX),I.emitUint8(1),I.emitUint32(X.index.rootPageId),I.emitUint8(C.OP_INDEX_SEEK_GE),I.emitUint8(1),I.emitUint8(0),I.emitUint8(M),I.emitUint8(X.keyType);const Z=I.emitUint16(0),tt=I.currentOffset(),et=[];Ge(l,x,I,P,et,t.udfNameMap,void 0,w);let Pt=-1;if(H&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),Pt=I.emitUint16(0)),Ft){let Wt=b;const re=()=>{if(Wt>=64)throw new Bt(Wt);return Wt++};for(let Tt=0;Tt<t.selectExprs.length;Tt++)it(t.selectExprs[Tt].expr,x,I,0,Ot+Tt,re,t.udfNameMap);I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(t.selectExprs.length)}else I.emitUint8(C.OP_EMIT_ROW),I.emitUint8(0);let lt=-1;J&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),lt=I.emitUint16(0));const yt=I.currentOffset();Pt!==-1&&I.patchUint16(Pt,yt);for(const Wt of et)I.patchUint16(Wt,yt);I.emitUint8(C.OP_INDEX_NEXT),I.emitUint8(1),I.emitUint8(0);const Ut=I.emitUint16(0);I.emitUint8(C.OP_JUMP),I.emitUint16(tt);const wt=I.currentOffset();I.patchUint16(Z,wt),I.patchUint16(Ut,wt),lt!==-1&&I.patchUint16(lt,wt),I.emitUint8(C.OP_HALT);const ht=I.toByteArray();return ht.indexScan=X,ht.inSets=O,t.outputColumns&&(ht.outputColumns=t.outputColumns),X!=null&&X.satisfiesOrderBy&&(ht.isOrderSatisfied=!0,t.isOrderSatisfied=!0),r&&(ht.planMetrics=r,ht.estimatedCost=r.totalCost,ht.estimatedRows=r.estimatedRows,ht.joinOrder=r.joinOrder),ht}}I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(x.rootPageId),I.emitUint8(C.OP_REWIND),I.emitUint8(0);const In=I.emitUint16(0),Bn=I.currentOffset(),hn=[];Ge(l,x,I,P,hn,t.udfNameMap,void 0,w);let XA=-1;if(H&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),XA=I.emitUint16(0)),Ft){let M=b;const Z=()=>{if(M>=64)throw new Bt(M);return M++};for(let tt=0;tt<t.selectExprs.length;tt++)it(t.selectExprs[tt].expr,x,I,0,Ot+tt,Z,t.udfNameMap);I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(t.selectExprs.length)}else I.emitUint8(C.OP_EMIT_ROW),I.emitUint8(0);let RA=-1;J&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),RA=I.emitUint16(0));const As=I.currentOffset();XA!==-1&&I.patchUint16(XA,As);for(const M of hn)I.patchUint16(M,As);I.emitUint8(C.OP_NEXT_ROW),I.emitUint8(0);const DA=I.emitUint16(0);I.emitUint8(C.OP_JUMP),I.emitUint16(Bn);const fn=I.currentOffset();I.patchUint16(In,fn),I.patchUint16(DA,fn),RA!==-1&&I.patchUint16(RA,fn),I.emitUint8(C.OP_HALT);const Je=I.toByteArray();return Je.inSets=O,t.outputColumns&&(Je.outputColumns=t.outputColumns),o&&(Je.whereMetrics=o),r&&(Je.planMetrics=r,Je.estimatedCost=r.totalCost,Je.estimatedRows=r.estimatedRows,Je.joinOrder=r.joinOrder),Je}const fg=new TextDecoder;function Ec(t,e){const A=[],n=new DataView(t.buffer,t.byteOffset,t.byteLength);let s=0;const i=r=>{var a;return(a=e==null?void 0:e.columns[r])!=null&&a.name?`'${e.columns[r].name}'`:`col_${r}`},o=r=>`0x${r.toString(16).padStart(4,"0")}`;for(;s<t.byteLength;){const r=s,a=t[s++];switch(a){case C.OP_HALT:A.push({addr:r,opcode:"OP_HALT",p1:"",p2:"",p3:"",comment:"Halt VM execution (STATUS_DONE)"});break;case C.OP_OPEN_CURSOR:{const c=t[s++],l=n.getUint32(s,!0);s+=4,A.push({addr:r,opcode:"OP_OPEN_CURSOR",p1:`c[${c}]`,p2:`page=${l}`,p3:"",comment:`Open cursor ${c} on root page ${l}${e?` ('${e.name}')`:""}`});break}case C.OP_OPEN_INDEX:{const c=t[s++],l=n.getUint32(s,!0);s+=4,A.push({addr:r,opcode:"OP_OPEN_INDEX",p1:`c[${c}]`,p2:`page=${l}`,p3:"",comment:`Open index cursor ${c} on root page ${l}`});break}case C.OP_INDEX_SEEK_EQ:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++],E=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_INDEX_SEEK_EQ",p1:`idx=c[${c}], data=c[${l}]`,p2:`key=r[${u}], type=${g}`,p3:o(E),comment:`Seek exact key in index; position data cursor or jump to ${o(E)} if not found`});break}case C.OP_INDEX_SEEK_GE:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++],E=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_INDEX_SEEK_GE",p1:`idx=c[${c}], data=c[${l}]`,p2:`key=r[${u}], type=${g}`,p3:o(E),comment:`Seek first entry >= key in index; position data cursor or jump to ${o(E)} if EOF`});break}case C.OP_INDEX_NEXT:{const c=t[s++],l=t[s++],u=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_INDEX_NEXT",p1:`idx=c[${c}], data=c[${l}]`,p2:o(u),p3:"",comment:`Advance index cursor to next entry; jump to ${o(u)} if EOF`});break}case C.OP_REWIND:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_REWIND",p1:`c[${c}]`,p2:o(l),p3:"",comment:`Rewind cursor to first row; jump to ${o(l)} if empty`});break}case C.OP_NEXT_ROW:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_NEXT_ROW",p1:`c[${c}]`,p2:o(l),p3:"",comment:`Advance cursor to next row; jump to ${o(l)} if EOF`});break}case C.OP_LAST:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_LAST",p1:`c[${c}]`,p2:o(l),p3:"",comment:`Position cursor to last row; jump to ${o(l)} if empty`});break}case C.OP_PREV_ROW:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_PREV_ROW",p1:`c[${c}]`,p2:o(l),p3:"",comment:`Advance cursor to previous row; jump to ${o(l)} if BOF`});break}case C.OP_COLUMN_INT:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_INT",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as INT into r[${u}]`});break}case C.OP_COLUMN_FLOAT:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_FLOAT",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as FLOAT into r[${u}]`});break}case C.OP_COLUMN_TEXT:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_TEXT",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as TEXT into r[${u}]`});break}case C.OP_COLUMN_BLOB:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_BLOB",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as BLOB into r[${u}]`});break}case C.OP_COLUMN_UUID:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_UUID",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as UUID into r[${u}]`});break}case C.OP_COLUMN_ULID:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_ULID",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as ULID into r[${u}]`});break}case C.OP_IS_NULL:{const c=t[s++],l=t[s++],u=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_IS_NULL",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:o(u),comment:`If ${i(l)} IS NULL -> jump to ${o(u)}`});break}case C.OP_IS_NOT_NULL:{const c=t[s++],l=t[s++],u=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_IS_NOT_NULL",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:o(u),comment:`If ${i(l)} IS NOT NULL -> jump to ${o(u)}`});break}case C.OP_EQ:case C.OP_NE:case C.OP_GT:case C.OP_GE:case C.OP_LT:case C.OP_LE:{const c={[C.OP_EQ]:"OP_EQ",[C.OP_NE]:"OP_NE",[C.OP_GT]:"OP_GT",[C.OP_GE]:"OP_GE",[C.OP_LT]:"OP_LT",[C.OP_LE]:"OP_LE"},l={[C.OP_EQ]:"==",[C.OP_NE]:"!=",[C.OP_GT]:">",[C.OP_GE]:">=",[C.OP_LT]:"<",[C.OP_LE]:"<="},u=t[s++],g=t[s++],E=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:c[a],p1:`r[${u}]`,p2:`r[${g}]`,p3:o(E),comment:`If r[${u}] ${l[a]} r[${g}] -> jump to ${o(E)}`});break}case C.OP_JUMP:{const c=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_JUMP",p1:o(c),p2:"",p3:"",comment:`Unconditional jump to ${o(c)}`});break}case C.OP_STR_LIKE:case C.OP_STR_NOT_LIKE:case C.OP_STR_CONTAINS:case C.OP_STR_STARTS_WITH:case C.OP_STR_ENDS_WITH:{const c={[C.OP_STR_LIKE]:"OP_STR_LIKE",[C.OP_STR_NOT_LIKE]:"OP_STR_NOT_LIKE",[C.OP_STR_CONTAINS]:"OP_STR_CONTAINS",[C.OP_STR_STARTS_WITH]:"OP_STR_STARTS_WITH",[C.OP_STR_ENDS_WITH]:"OP_STR_ENDS_WITH"},l={[C.OP_STR_LIKE]:"LIKE",[C.OP_STR_NOT_LIKE]:"NOT LIKE",[C.OP_STR_CONTAINS]:"CONTAINS",[C.OP_STR_STARTS_WITH]:"STARTS_WITH",[C.OP_STR_ENDS_WITH]:"ENDS_WITH"},u=t[s++],g=t[s++],E=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:c[a],p1:`r[${u}]`,p2:`r[${g}]`,p3:o(E),comment:`If r[${u}] ${l[a]} r[${g}] -> jump to ${o(E)}`});break}case C.OP_IN:{const c=t[s++],l=n.getUint16(s,!0);s+=2;const u=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_IN",p1:`r[${c}]`,p2:`set[${l}]`,p3:o(u),comment:`If r[${c}] IN set[${l}] -> jump to ${o(u)}`});break}case C.OP_LOAD_INT:{const c=t[s++],l=n.getInt32(s,!0);s+=4,A.push({addr:r,opcode:"OP_LOAD_INT",p1:`r[${c}]`,p2:`${l}`,p3:"",comment:`Load literal int ${l} into r[${c}]`});break}case C.OP_LOAD_FLOAT:{const c=t[s++],l=n.getFloat64(s,!0);s+=8,A.push({addr:r,opcode:"OP_LOAD_FLOAT",p1:`r[${c}]`,p2:`${l}`,p3:"",comment:`Load literal float ${l} into r[${c}]`});break}case C.OP_LOAD_TEXT:{const c=t[s++],l=n.getUint16(s,!0);s+=2;const u=new Uint8Array(t.buffer,t.byteOffset+s,l),g=fg.decode(u);s+=l,A.push({addr:r,opcode:"OP_LOAD_TEXT",p1:`r[${c}]`,p2:`"${g}"`,p3:"",comment:`Load literal text "${g}" into r[${c}]`});break}case C.OP_LOAD_BLOB:{const c=t[s++],l=n.getUint16(s,!0);s+=2+l,A.push({addr:r,opcode:"OP_LOAD_BLOB",p1:`r[${c}]`,p2:`len=${l}`,p3:"",comment:`Load literal BLOB (${l} bytes) into r[${c}]`});break}case C.OP_LOAD_NULL:{const c=t[s++];A.push({addr:r,opcode:"OP_LOAD_NULL",p1:`r[${c}]`,p2:"NULL",p3:"",comment:`Set r[${c}] to NULL`});break}case C.OP_EMIT_ROW:{const c=t[s++];A.push({addr:r,opcode:"OP_EMIT_ROW",p1:`c[${c}]`,p2:"",p3:"",comment:"Row passed all filters -> emit to Output Result Buffer"});break}case C.OP_RESULT_ROW:{const c=t[s++],l=t[s++];A.push({addr:r,opcode:"OP_RESULT_ROW",p1:`r[${c}]`,p2:`cols=${l}`,p3:"",comment:`Serialize registers r[${c}..${c+l-1}] to Result Buffer`});break}case C.OP_OFFSET:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_OFFSET",p1:`r[${c}]`,p2:o(l),p3:"",comment:`If r[${c}] > 0 -> decrement and skip row to ${o(l)}`});break}case C.OP_LIMIT:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_LIMIT",p1:`r[${c}]`,p2:o(l),p3:"",comment:`If r[${c}] <= 1 -> halt to ${o(l)}, else decrement`});break}case C.OP_CALL_UDF:{const c=n.getUint16(s,!0);s+=2;const l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:"OP_CALL_UDF",p1:`udf#${c}`,p2:`r[${l}..${l+u-1}]`,p3:`r[${g}]`,comment:`Call UDF #${c} with ${u} args -> r[${g}]`});break}case C.OP_STR_LOWER:case C.OP_STR_UPPER:case C.OP_STR_LENGTH:case C.OP_STR_TRIM:case C.OP_MATH_ABS:case C.OP_MATH_ROUND:case C.OP_MATH_FLOOR:case C.OP_MATH_CEIL:{const c={[C.OP_STR_LOWER]:"OP_STR_LOWER",[C.OP_STR_UPPER]:"OP_STR_UPPER",[C.OP_STR_LENGTH]:"OP_STR_LENGTH",[C.OP_STR_TRIM]:"OP_STR_TRIM",[C.OP_MATH_ABS]:"OP_MATH_ABS",[C.OP_MATH_ROUND]:"OP_MATH_ROUND",[C.OP_MATH_FLOOR]:"OP_MATH_FLOOR",[C.OP_MATH_CEIL]:"OP_MATH_CEIL"},l=t[s++],u=t[s++];A.push({addr:r,opcode:c[a],p1:`r[${l}]`,p2:`r[${u}]`,p3:"",comment:`${c[a]}: r[${u}] = ${c[a].toLowerCase()}(r[${l}])`});break}case C.OP_STR_SUBSTR:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:"OP_STR_SUBSTR",p1:`r[${c}]`,p2:`start=r[${l}], len=r[${u}]`,p3:`r[${g}]`,comment:`Extract substring from r[${c}] into r[${g}]`});break}case C.OP_ADD:case C.OP_SUB:case C.OP_MUL:case C.OP_DIV:case C.OP_MOD:{const c={[C.OP_ADD]:"OP_ADD",[C.OP_SUB]:"OP_SUB",[C.OP_MUL]:"OP_MUL",[C.OP_DIV]:"OP_DIV",[C.OP_MOD]:"OP_MOD"},l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:c[a],p1:`r[${l}]`,p2:`r[${u}]`,p3:`r[${g}]`,comment:`${c[a]}: r[${g}] = r[${l}] ${c[a].replace("OP_","")} r[${u}]`});break}case C.OP_STR_CONCAT:case C.OP_COALESCE:{const c={[C.OP_STR_CONCAT]:"OP_STR_CONCAT",[C.OP_COALESCE]:"OP_COALESCE"},l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:c[a],p1:`r[${l}..${l+u-1}]`,p2:`count=${u}`,p3:`r[${g}]`,comment:`${c[a]}: r[${g}]`});break}case C.OP_COPY:{const c=t[s++],l=t[s++];A.push({addr:r,opcode:"OP_COPY",p1:`r[${c}]`,p2:`r[${l}]`,p3:"",comment:`Copy r[${c}] to r[${l}]`});break}case C.OP_SORTER_OPEN:{const c=t[s++],l=t[s++];A.push({addr:r,opcode:"OP_SORTER_OPEN",p1:`s[${c}]`,p2:`keyInfo=${l}`,p3:"",comment:`Open sorter ${c} with keyInfo ${l}`});break}case C.OP_SORTER_INSERT:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:"OP_SORTER_INSERT",p1:`s[${c}]`,p2:`r[${l}..+${u}]`,p3:`c[${g}]`,comment:`Insert row from cursor ${g} into sorter ${c}`});break}case C.OP_SORTER_SORT:{const c=t[s++];A.push({addr:r,opcode:"OP_SORTER_SORT",p1:`s[${c}]`,p2:"",p3:"",comment:`Sort entries in sorter ${c}`});break}case C.OP_SORTER_NEXT:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_SORTER_NEXT",p1:`s[${c}]`,p2:o(l),p3:"",comment:`Emit next sorted row from sorter ${c}; jump to ${o(l)} while more rows`});break}case C.OP_AGG_INIT:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:"OP_AGG_INIT",p1:`agg[${c}]`,p2:`keys=r[${l}..+${u}]`,p3:`mode=${g===0?"hash":"stream"}`,comment:`Initialize aggregator ${c} (${g===0?"hash table":"stream"})`});break}case C.OP_AGG_STEP:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++],E=t[s++],h=E&7,B=E>>3,Q=["COUNT","SUM","AVG","MIN","MAX"];A.push({addr:r,opcode:"OP_AGG_STEP",p1:`agg[${c}]`,p2:`val=${g===255?"*":`r[${g}]`}`,p3:Q[h]??`${h}`,comment:`Update accumulator ${Q[h]??h} (slot ${B}) for group r[${l}..+${u}]`});break}case C.OP_AGG_NEXT:{const c=t[s++],l=t[s++],u=t[s++],g=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_AGG_NEXT",p1:`agg[${c}]`,p2:`out_keys=r[${l}], out_acc=r[${u}]`,p3:o(g),comment:`Iterate next group bucket; jump to ${o(g)}`});break}case C.OP_AGG_FINAL:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++],E=g&7,h=g>>3,B=["COUNT","SUM","AVG","MIN","MAX"];A.push({addr:r,opcode:"OP_AGG_FINAL",p1:`sum=r[${c}], cnt=r[${l}]`,p2:`r[${u}]`,p3:B[E]??`${E}`,comment:`Finalize ${B[E]??E} (slot ${h}) into r[${u}]`});break}case C.OP_REG_IS_NULL:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_REG_IS_NULL",p1:`r[${c}]`,p2:o(l),p3:"",comment:`Jump to ${o(l)} if r[${c}] is NULL`});break}case C.OP_REG_IS_NOT_NULL:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_REG_IS_NOT_NULL",p1:`r[${c}]`,p2:o(l),p3:"",comment:`Jump to ${o(l)} if r[${c}] is NOT NULL`});break}default:A.push({addr:r,opcode:`OP_UNKNOWN(0x${a.toString(16)})`,p1:"",p2:"",p3:"",comment:"Unknown opcode"});break}}return A}function Ic(t){const e=(s,i)=>s.padEnd(i," "),A=s=>`0x${s.toString(16).padStart(4,"0")}`;let n=`${e("ADDR",8)} ${e("OPCODE",18)} ${e("P1",12)} ${e("P2",20)} ${e("P3",10)} COMMENT
|
|
2
|
+
`;n+="-".repeat(95)+`
|
|
3
|
+
`;for(const s of t)n+=`${e(A(s.addr),8)} ${e(s.opcode,18)} ${e(s.p1,12)} ${e(s.p2,20)} ${e(s.p3,10)} ${s.comment}
|
|
4
|
+
`;return n}const Bc=new WeakMap;let Cg=1;function Qg(t){const e=t==null?void 0:t.instanceId;if(typeof e=="string"&&e.length>0)return e;let A=Bc.get(t);return A===void 0&&(A=Cg++,Bc.set(t,A)),`db_${A}`}let ln=null;const Xo=[];function Jo(t){Xo.push(ln),ln=t}function Wo(){ln=Xo.length>0?Xo.pop():null}function un(){return ln}function Ko(t,e){queueMicrotask(()=>{Jo(t),e>1&&Ko(t,e-1)})}function Zo(t){queueMicrotask(()=>{Wo(),t>1&&Zo(t-1)})}function gn(t,e){if(!e)return t;const A=3;return new Promise((n,s)=>{t.then(i=>{Ko(e,A),n(i),Zo(A)},i=>{Ko(e,A),s(i),Zo(A)})})}function we(t,e){if(!ln||!t)return;const A=Array.isArray(e)?e:[e];ln.record(t,A)}function hc(t,e={}){let A={data:e.initialData,isLoading:!0,error:null,lastUpdated:null,lastEvent:null};const n=new Set;let s=[],i="",o=0,r=null,a=!1,c=!1,l=null,u;const g=e.tables!==void 0,E=()=>!e.tables||e.tables==="*"?["*"]:(Array.isArray(e.tables)?e.tables:[e.tables]).map(m=>m.toLowerCase()),h=()=>{if(!a)for(const N of n)try{N(A)}catch{}},B=()=>{for(const N of s)try{N()}catch{}s=[],i=""},Q=N=>{if(!a){if(u=N,e.debounceMs&&e.debounceMs>0){l!==null&&clearTimeout(l),l=setTimeout(()=>{l=null;const m=u;u=void 0,p(m)},e.debounceMs);return}c||(c=!0,queueMicrotask(()=>{if(!c||a)return;c=!1;const m=u;u=void 0,p(m)}))}},d=N=>{if(a)return;if(N.size===0&&e.db&&typeof e.db.subscribe=="function"&&N.set(e.db,new Set),g){const F=E();for(const[D]of N)N.set(D,new Set(F))}const m=[];for(const[F,D]of N){const O=Qg(F),w=D.has("*")?["*"]:Array.from(D).sort();m.push(`${O}:${w.join(",")}`)}m.sort();const T=m.join("|");if(!(T===i&&s.length>0)){B(),i=T;for(const[F,D]of N){if(!F||typeof F.subscribe!="function")continue;const O=D.has("*")||D.size===0?"*":Array.from(D),w=F.subscribe(O,P=>{Q(P)});s.push(w)}}},p=N=>{if(a)return Promise.resolve(A.data);c&&(c=!1),l!==null&&(clearTimeout(l),l=null),N===void 0&&u!==void 0&&(N=u,u=void 0);const m=++o,T=(async()=>{const F=new Map,D={record(w,P){if(!w||typeof w.subscribe!="function")return;let I=F.get(w);if(I||(I=new Set,F.set(w,I)),!g)for(const b of P)b&&b!=="__subquery__"&&I.add(b.toLowerCase())}},O=g&&!!(e.db&&typeof e.db.subscribe=="function");try{let w;if(O)w=t();else{Jo(D);try{w=t()}finally{Wo()}}let P;if(At(w)){const I=w;O||D.record(I.getDb(),I.getReferencedTables()),P=await I.toArray()}else{const I=await w;if(At(I)){const b=I;O||D.record(b.getDb(),b.getReferencedTables()),P=await b.toArray()}else P=I}return a?A.data:m!==o?r?await r:A.data:(d(F),A={data:P,isLoading:!1,error:null,lastUpdated:Date.now(),lastEvent:N??A.lastEvent},h(),P)}catch(w){if(a)return A.data;if(m!==o)return r?await r:A.data;(F.size>0||e.db)&&d(F);const P=w instanceof Error?w:new Error(String(w));if(A={...A,isLoading:!1,error:P},e.onError)try{e.onError(P)}catch{}return h(),A.data}})();return r=T,T};e.autoStart!==!1&&p();const U={getState(){return A},subscribe(N){return a?()=>{}:(n.add(N),N(A),()=>{n.delete(N)})},onData(N){return U.subscribe(m=>{!m.isLoading&&!m.error&&m.data!==void 0&&N(m.data,m)})},refresh(){return p()},destroy(){a||(a=!0,o++,l!==null&&(clearTimeout(l),l=null),B(),n.clear())},[Symbol.asyncIterator](){const N=[];let m=null,T=null,F=null,D=!1;const O=I=>{if(!D)if(m){const b=m;m=null,T=null,b({value:I,done:!1})}else N.push({value:I})},w=I=>{if(!D)if(T){const b=T;m=null,T=null,b(I)}else N.push({error:I})};F=U.subscribe(I=>{I.isLoading||(I.error?w(I.error):I.data!==void 0&&O(I.data))});const P=()=>{if(!D&&(D=!0,F&&(F(),F=null),U.destroy(),m)){const I=m;m=null,T=null,I({value:void 0,done:!0})}};return{next(){if(N.length>0){const I=N.shift();return I.error?Promise.reject(I.error):I.done?Promise.resolve({value:void 0,done:!0}):Promise.resolve({value:I.value,done:!1})}return D||a?Promise.resolve({value:void 0,done:!0}):new Promise((I,b)=>{m=I,T=b})},return(){return P(),Promise.resolve({value:void 0,done:!0})},throw(I){return P(),Promise.reject(I)},[Symbol.asyncIterator](){return this}}}};return U}function gi(t,e,A){const n=typeof e=="function",i=hc(t,n?A:e);return n&&i.onData(e),i}function At(t){return t instanceof oe||typeof t=="object"&&t!==null&&typeof t.toArray=="function"&&typeof t.where=="function"&&typeof t.select=="function"&&"filters"in t}function xt(t){if(t instanceof dt||typeof t=="object"&&t!==null&&"node"in t)return{expr:t.node};if(typeof t=="object"&&t!==null&&"type"in t)return{expr:t};if(typeof t=="string"){const e=t.trim();return e.includes("(")||e.includes("+")||e.includes("-")||e.includes("*")||e.includes("/")||e.includes("%")?{expr:Rt(e),colName:e}:{colName:e}}return{}}function jo(t){const e=[];function A(n){if(n.type==="fn"){const s=n.name.toLowerCase();if(AA(s)){const i=n.args[0],o=i&&i.type==="col"&&i.name!=="*"?i.name:void 0;e.push({func:s,colName:o})}for(const i of n.args)A(i)}else n.type==="binary"&&(A(n.left),A(n.right))}return A(t),e}function Ei(t){if(!t)return[];if(Array.isArray(t)){const e=[];for(const A of t)e.push(...Ei(A));return e}if(At(t)){const e=t.getSelectFields(),A=t.getAggregates();return[{alias:e.length>0?e[0].alias:A.length>0?A[0].alias??(A[0].colName?`${A[0].func}_${A[0].colName}`:A[0].func):"subquery",subquery:t}]}if(t instanceof dt||typeof t=="object"&&t!==null&&"node"in t){const e=t.node;return[{alias:le(e),expr:e,sourceCol:e.type==="col"&&e.name!=="*"?e.name:void 0,fn:e.type==="fn"?e.name:void 0}]}if(typeof t=="string"){const e=t.trim();if(!e)return[];const A=ni(e);return[{alias:A.alias,expr:A.expr,sourceCol:A.expr.type==="col"&&A.expr.name!=="*"?A.expr.name:void 0,fn:A.expr.type==="fn"?A.expr.name:void 0}]}if(typeof t=="object"&&t!==null){if("subquery"in t&&"as"in t&&At(t.subquery)&&typeof t.as=="string")return[{alias:t.as,subquery:t.subquery}];if("expr"in t&&"alias"in t){const A=t.expr;return[{alias:t.alias,expr:A,sourceCol:A.type==="col"&&A.name!=="*"?A.name:void 0,fn:A.type==="fn"?A.name:void 0}]}if("col"in t&&"as"in t&&typeof t.col=="string"&&typeof t.as=="string"){const A=ni(`${t.col} as ${t.as}`);return[{sourceCol:t.col==="*"?void 0:t.col,alias:t.as,expr:A.expr,fn:A.expr.type==="fn"?A.expr.name:void 0}]}const e=[];for(const[A,n]of Object.entries(t))if(typeof n=="string"){const s=ni(`${A} as ${n}`);e.push({sourceCol:A==="*"?void 0:A,alias:n,expr:s.expr,fn:s.expr.type==="fn"?s.expr.name:void 0})}else if(At(n))e.push({alias:A,subquery:n});else if(typeof n=="object"&&n!==null&&"subquery"in n&&At(n.subquery))e.push({alias:A,subquery:n.subquery});else if(n instanceof dt||typeof n=="object"&&n!==null&&"node"in n){const s=n.node;e.push({alias:A,expr:s,sourceCol:s.type==="col"&&s.name!=="*"?s.name:void 0,fn:s.type==="fn"?s.name:void 0})}else if(typeof n=="object"&&n!==null&&"type"in n){const s=n;e.push({alias:A,expr:s,sourceCol:s.type==="col"&&s.name!=="*"?s.name:void 0,fn:s.type==="fn"?s.name:void 0})}return e}return[]}function Dt(t){if(!At(t))if(typeof t=="string"){const e=t.trim();if(AA(e))throw new fs(e);if(e.includes("("))try{const A=Rt(e);xA(A,"where")}catch(A){if(A instanceof fs)throw A}}else t instanceof dt||typeof t=="object"&&t!==null&&"node"in t?xA(t.node,"where"):typeof t=="object"&&t!==null&&"type"in t&&xA(t,"where")}class oe{constructor(e,A){G(this,"db");G(this,"tableName");G(this,"sourceSubquery");G(this,"filters",[]);G(this,"selectFields",[]);G(this,"limitCount",null);G(this,"offsetCount",null);G(this,"sortCol",null);G(this,"sortDir","asc");G(this,"orderKeys",[]);G(this,"groupCols",[]);G(this,"groupKeys",[]);G(this,"aggExprs",[]);G(this,"havingFilters",[]);G(this,"joins",[]);G(this,"planner");this.db=e,At(A)?(this.sourceSubquery=A,this.tableName="__subquery__",this.assertSubqueryDepth(),we(this.db,A.getReferencedTables())):(this.tableName=A,we(this.db,A))}withPlanner(e){return this.planner=e,this}as(e){return{subquery:this,as:e}}getDb(){return this.db}getTableName(){return this.tableName}getReferencedTables(){const e=new Set,A=n=>{if(!n)return;n.tableName&&n.tableName!=="__subquery__"&&e.add(n.tableName),n.sourceSubquery&&A(n.sourceSubquery);for(const i of n.joins)i.table&&e.add(i.table);for(const i of n.selectFields)i.subquery&&At(i.subquery)&&A(i.subquery);const s=i=>{if(i&&(i.subquery&&At(i.subquery)&&A(i.subquery),i.value&&At(i.value)&&A(i.value),i.child&&s(i.child),i.children))for(const o of i.children)s(o)};for(const i of n.filters)s(i);for(const i of n.havingFilters)s(i)};return A(this),Array.from(e)}getSourceSubquery(){return this.sourceSubquery}getAggregates(){return this.aggExprs}getFilterSubqueryDepth(e){let A=0;if(e.subquery&&At(e.subquery)&&(A=Math.max(A,1+e.subquery.getMaxSubqueryDepth())),e.value&&At(e.value)&&(A=Math.max(A,1+e.value.getMaxSubqueryDepth())),e.child&&(A=Math.max(A,this.getFilterSubqueryDepth(e.child))),e.children)for(const n of e.children)A=Math.max(A,this.getFilterSubqueryDepth(n));return A}getMaxSubqueryDepth(){let e=0;this.sourceSubquery&&(e=Math.max(e,1+this.sourceSubquery.getMaxSubqueryDepth()));for(const A of this.selectFields)A.subquery&&(e=Math.max(e,1+A.subquery.getMaxSubqueryDepth()));for(const A of this.filters)e=Math.max(e,this.getFilterSubqueryDepth(A));for(const A of this.havingFilters)e=Math.max(e,this.getFilterSubqueryDepth(A));return e}assertSubqueryDepth(){const e=this.getMaxSubqueryDepth();if(e>7)throw new _r(e,7)}join(e,A,n,s){const i=s!==void 0?n:"=",o=s!==void 0?s:n;return this.joins.push({type:"inner",table:e,leftCol:A,op:i,rightCol:o}),we(this.db,e),this}innerJoin(e,A,n,s){return this.join(e,A,n,s)}leftJoin(e,A,n,s){const i=s!==void 0?n:"=",o=s!==void 0?s:n;return this.joins.push({type:"left",table:e,leftCol:A,op:i,rightCol:o}),we(this.db,e),this}getJoins(){return this.joins}where(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootFilter();i&&(this.filters.push(i),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0){if(typeof e=="string"){Dt(e);const s=Rt(e);this.filters.push({type:"expr",expr:s})}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e)Dt(e),this.filters.push({type:"expr",expr:e.node});else if(typeof e=="object"&&e!==null&&"type"in e)Dt(e),this.filters.push({type:"expr",expr:e});else if(typeof e=="object"&&e!==null)for(const[s,i]of Object.entries(e))this.where(s,"=",i)}else{if(Dt(e),Dt(n),typeof A=="string"&&A.trim().toLowerCase()==="in")return this.whereIn(e,n);if(typeof A=="string"&&A.trim().toLowerCase()==="not in")return this.whereNotIn(e,n);const s=xt(e);At(n)?(this.filters.push({type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:n}),this.assertSubqueryDepth()):this.filters.push({type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n})}return this}orWhere(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootFilter();i&&(this.addOrFilter(i),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0)if(typeof e=="string"){Dt(e);const s=Rt(e);this.addOrFilter({type:"expr",expr:s})}else e instanceof dt||typeof e=="object"&&e!==null&&"node"in e?(Dt(e),this.addOrFilter({type:"expr",expr:e.node})):typeof e=="object"&&e!==null&&"type"in e&&(Dt(e),this.addOrFilter({type:"expr",expr:e}));else{if(Dt(e),Dt(n),typeof A=="string"&&A.trim().toLowerCase()==="in")return this.orWhereIn(e,n);if(typeof A=="string"&&A.trim().toLowerCase()==="not in")return this.orWhereNotIn(e,n);const s=xt(e);At(n)?(this.addOrFilter({type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:n}),this.assertSubqueryDepth()):this.addOrFilter({type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n})}return this}whereNot(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootFilter();i&&(this.filters.push({type:"not",child:i}),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0)if(typeof e=="string"){Dt(e);const s=Rt(e);this.filters.push({type:"not",child:{type:"expr",expr:s}})}else e instanceof dt||typeof e=="object"&&e!==null&&"node"in e?(Dt(e),this.filters.push({type:"not",child:{type:"expr",expr:e.node}})):typeof e=="object"&&e!==null&&"type"in e&&(Dt(e),this.filters.push({type:"not",child:{type:"expr",expr:e}}));else{if(Dt(e),Dt(n),typeof A=="string"&&A.trim().toLowerCase()==="in")return this.whereNotIn(e,n);if(typeof A=="string"&&A.trim().toLowerCase()==="not in")return this.whereIn(e,n);const s=xt(e);this.filters.push({type:"not",child:{type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0}}),At(n)&&this.assertSubqueryDepth()}return this}orWhereNot(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootFilter();i&&(this.addOrFilter({type:"not",child:i}),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0)if(typeof e=="string"){Dt(e);const s=Rt(e);this.addOrFilter({type:"not",child:{type:"expr",expr:s}})}else e instanceof dt||typeof e=="object"&&e!==null&&"node"in e?(Dt(e),this.addOrFilter({type:"not",child:{type:"expr",expr:e.node}})):typeof e=="object"&&e!==null&&"type"in e&&(Dt(e),this.addOrFilter({type:"not",child:{type:"expr",expr:e}}));else{if(Dt(e),Dt(n),typeof A=="string"&&A.trim().toLowerCase()==="in")return this.orWhereNotIn(e,n);if(typeof A=="string"&&A.trim().toLowerCase()==="not in")return this.orWhereIn(e,n);const s=xt(e);this.addOrFilter({type:"not",child:{type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0}}),At(n)&&this.assertSubqueryDepth()}return this}whereRaw(e){return this.where(e)}orWhereRaw(e){return this.orWhere(e)}whereNull(e){return Dt(e),this.filters.push({type:"null",colName:e,isNull:!0}),this}whereNotNull(e){return Dt(e),this.filters.push({type:"null",colName:e,isNull:!1}),this}orWhereNull(e){return Dt(e),this.addOrFilter({type:"null",colName:e,isNull:!0}),this}orWhereNotNull(e){return Dt(e),this.addOrFilter({type:"null",colName:e,isNull:!1}),this}whereLike(e,A){return this.where(e,"like",A)}whereNotLike(e,A){return this.where(e,"not like",A)}whereStartsWith(e,A){return this.where(e,"starts_with",A)}whereEndsWith(e,A){return this.where(e,"ends_with",A)}whereContains(e,A){return this.where(e,"contains",A)}orWhereLike(e,A){return this.orWhere(e,"like",A)}orWhereNotLike(e,A){return this.orWhere(e,"not like",A)}orWhereStartsWith(e,A){return this.orWhere(e,"starts_with",A)}orWhereEndsWith(e,A){return this.orWhere(e,"ends_with",A)}orWhereContains(e,A){return this.orWhere(e,"contains",A)}whereIn(e,A){Dt(e);const n=xt(e);if(At(A))return this.filters.push({type:"in",colName:n.colName,expr:n.expr,subquery:A,notIn:!1}),this.assertSubqueryDepth(),this;if(!Array.isArray(A))throw new TypeError("WebDB: whereIn requires an array of values");if(A.length>ae)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${ae} elements`);return this.filters.push({type:"in",colName:n.colName,expr:n.expr,values:A,notIn:!1}),this}whereNotIn(e,A){Dt(e);const n=xt(e);if(At(A))return this.filters.push({type:"in",colName:n.colName,expr:n.expr,subquery:A,notIn:!0}),this.assertSubqueryDepth(),this;if(!Array.isArray(A))throw new TypeError("WebDB: whereNotIn requires an array of values");if(A.length>ae)throw new RangeError(`WebDB: whereNotIn list exceeds maximum limit of ${ae} elements`);return this.filters.push({type:"in",colName:n.colName,expr:n.expr,values:A,notIn:!0}),this}orWhereIn(e,A){Dt(e);const n=xt(e);if(At(A))return this.addOrFilter({type:"in",colName:n.colName,expr:n.expr,subquery:A,notIn:!1}),this.assertSubqueryDepth(),this;if(!Array.isArray(A))throw new TypeError("WebDB: orWhereIn requires an array of values");if(A.length>ae)throw new RangeError(`WebDB: orWhereIn list exceeds maximum limit of ${ae} elements`);return this.addOrFilter({type:"in",colName:n.colName,expr:n.expr,values:A,notIn:!1}),this}orWhereNotIn(e,A){Dt(e);const n=xt(e);if(At(A))return this.addOrFilter({type:"in",colName:n.colName,expr:n.expr,subquery:A,notIn:!0}),this.assertSubqueryDepth(),this;if(!Array.isArray(A))throw new TypeError("WebDB: orWhereNotIn requires an array of values");if(A.length>ae)throw new RangeError(`WebDB: orWhereNotIn list exceeds maximum limit of ${ae} elements`);return this.addOrFilter({type:"in",colName:n.colName,expr:n.expr,values:A,notIn:!0}),this}whereExists(e){if(!At(e))throw new TypeError("WebDB: whereExists requires a QueryBuilder subquery");return this.filters.push({type:"exists",subquery:e,notExists:!1}),this.assertSubqueryDepth(),this}whereNotExists(e){if(!At(e))throw new TypeError("WebDB: whereNotExists requires a QueryBuilder subquery");return this.filters.push({type:"exists",subquery:e,notExists:!0}),this.assertSubqueryDepth(),this}orWhereExists(e){if(!At(e))throw new TypeError("WebDB: orWhereExists requires a QueryBuilder subquery");return this.addOrFilter({type:"exists",subquery:e,notExists:!1}),this.assertSubqueryDepth(),this}orWhereNotExists(e){if(!At(e))throw new TypeError("WebDB: orWhereNotExists requires a QueryBuilder subquery");return this.addOrFilter({type:"exists",subquery:e,notExists:!0}),this.assertSubqueryDepth(),this}getFilters(){return this.filters}getRootFilter(){return this.filters.length===0?null:this.filters.length===1?this.filters[0]:{type:"and",children:[...this.filters]}}addOrFilter(e){if(this.filters.length===0){this.filters.push(e);return}if(this.filters.length===1&&this.filters[0].type==="or"&&this.filters[0].children){this.filters[0].children.push(e);return}let A;this.filters.length===1?A=this.filters[0]:A={type:"and",children:[...this.filters]},this.filters=[{type:"or",children:[A,e]}]}limit(e){return this.limitCount=e,this}offset(e){return this.offsetCount=e,this}orderBy(e,A="asc",n){if(typeof e=="string"){this.sortCol=e,this.sortDir=A;const s=xt(e);this.orderKeys.push({colName:s.colName??e,expr:s.expr,direction:A,nullOrder:n})}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e)this.orderKeys.push({expr:e.node,direction:A,nullOrder:n});else if(typeof e=="object"&&e!==null&&"type"in e)this.orderKeys.push({expr:e,direction:A,nullOrder:n});else if(Array.isArray(e))for(const s of e)if(typeof s=="string"){const i=xt(s);this.orderKeys.push({colName:i.colName??s,expr:i.expr,direction:"asc"})}else this.orderKeys.push(s);else this.orderKeys.push(e);return this}groupBy(...e){for(const A of e)if(Array.isArray(A))for(const n of A)this.addGroupByItem(n);else this.addGroupByItem(A);return this}addGroupByItem(e){if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e)this.groupKeys.push({expr:e.node}),this.groupCols.push(le(e.node));else if(typeof e=="object"&&e!==null&&"type"in e)this.groupKeys.push({expr:e}),this.groupCols.push(le(e));else if(typeof e=="string"){const A=xt(e);this.groupKeys.push({colName:A.colName??e,expr:A.expr}),this.groupCols.push(e)}}registerAggregatesFromFilter(e){const A=(n,s)=>{if(s){const i=jo(s);for(const o of i)this.aggExprs.some(a=>a.func===o.func&&(a.colName===o.colName||a.colName===void 0&&o.colName===void 0))||(o.fromHaving=!0,this.aggExprs.push(o))}else if(n&&n.includes("("))try{const i=Rt(n),o=jo(i);for(const r of o)this.aggExprs.some(c=>c.func===r.func&&(c.colName===r.colName||c.colName===void 0&&r.colName===void 0))||(r.fromHaving=!0,this.aggExprs.push(r))}catch{}};if(e.type==="cmp")A(e.colName,e.expr);else if(e.type==="expr"&&e.expr)A(void 0,e.expr);else if(e.type==="null")A(e.colName,e.expr);else if(e.type==="not"&&e.child)this.registerAggregatesFromFilter(e.child);else if((e.type==="and"||e.type==="or")&&e.children)for(const n of e.children)this.registerAggregatesFromFilter(n)}having(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootHavingFilter();i&&(this.havingFilters.push(i),this.registerAggregatesFromFilter(i),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0){if(typeof e=="string"){const i={type:"expr",expr:Rt(e)};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e){const s={type:"expr",expr:e.node};this.havingFilters.push(s),this.registerAggregatesFromFilter(s)}else if(typeof e=="object"&&e!==null&&"type"in e){const s={type:"expr",expr:e};this.havingFilters.push(s),this.registerAggregatesFromFilter(s)}}else{const s=xt(e);if(typeof A=="string"&&(A.trim().toLowerCase()==="in"||A.trim().toLowerCase()==="not in")){const o=A.trim().toLowerCase()==="not in",r=At(n)?{type:"in",colName:s.colName,expr:s.expr,subquery:n,notIn:o}:{type:"in",colName:s.colName,expr:s.expr,values:n,notIn:o};return this.havingFilters.push(r),this.registerAggregatesFromFilter(r),this.assertSubqueryDepth(),this}const i={type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0};this.havingFilters.push(i),this.registerAggregatesFromFilter(i),At(n)&&this.assertSubqueryDepth()}return this}orHaving(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootHavingFilter();i&&(this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0){if(typeof e=="string"){const i={type:"expr",expr:Rt(e)};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e){const s={type:"expr",expr:e.node};this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s)}else if(typeof e=="object"&&e!==null&&"type"in e){const s={type:"expr",expr:e};this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s)}}else{const s=xt(e),i={type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i),At(n)&&this.assertSubqueryDepth()}return this}havingNot(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootHavingFilter();if(i){const o={type:"not",child:i};this.havingFilters.push(o),this.registerAggregatesFromFilter(o),this.assertSubqueryDepth()}}else if(A===void 0&&n===void 0){if(typeof e=="string"){const i={type:"not",child:{type:"expr",expr:Rt(e)}};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e){const s={type:"not",child:{type:"expr",expr:e.node}};this.havingFilters.push(s),this.registerAggregatesFromFilter(s)}else if(typeof e=="object"&&e!==null&&"type"in e){const s={type:"not",child:{type:"expr",expr:e}};this.havingFilters.push(s),this.registerAggregatesFromFilter(s)}}else{const s=xt(e),i={type:"not",child:{type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0}};this.havingFilters.push(i),this.registerAggregatesFromFilter(i),At(n)&&this.assertSubqueryDepth()}return this}orHavingNot(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootHavingFilter();if(i){const o={type:"not",child:i};this.addHavingOrFilter(o),this.registerAggregatesFromFilter(o),this.assertSubqueryDepth()}}else if(A===void 0&&n===void 0){if(typeof e=="string"){const i={type:"not",child:{type:"expr",expr:Rt(e)}};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e){const s={type:"not",child:{type:"expr",expr:e.node}};this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s)}else if(typeof e=="object"&&e!==null&&"type"in e){const s={type:"not",child:{type:"expr",expr:e}};this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s)}}else{const s=xt(e),i={type:"not",child:{type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0}};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i),At(n)&&this.assertSubqueryDepth()}return this}havingRaw(e){return this.having(e)}orHavingRaw(e){return this.orHaving(e)}havingNull(e){const A=xt(e),n={type:"null",colName:A.colName,expr:A.expr,isNull:!0};return this.havingFilters.push(n),this.registerAggregatesFromFilter(n),this}havingNotNull(e){const A=xt(e),n={type:"null",colName:A.colName,expr:A.expr,isNull:!1};return this.havingFilters.push(n),this.registerAggregatesFromFilter(n),this}orHavingNull(e){const A=xt(e),n={type:"null",colName:A.colName,expr:A.expr,isNull:!0};return this.addHavingOrFilter(n),this.registerAggregatesFromFilter(n),this}orHavingNotNull(e){const A=xt(e),n={type:"null",colName:A.colName,expr:A.expr,isNull:!1};return this.addHavingOrFilter(n),this.registerAggregatesFromFilter(n),this}getHavingFilters(){return this.havingFilters}getRootHavingFilter(){return this.havingFilters.length===0?null:this.havingFilters.length===1?this.havingFilters[0]:{type:"and",children:[...this.havingFilters]}}addHavingOrFilter(e){if(this.havingFilters.length===0){this.havingFilters.push(e);return}if(this.havingFilters.length===1&&this.havingFilters[0].type==="or"&&this.havingFilters[0].children){this.havingFilters[0].children.push(e);return}let A;this.havingFilters.length===1?A=this.havingFilters[0]:A={type:"and",children:[...this.havingFilters]},this.havingFilters=[{type:"or",children:[A,e]}]}aggregate(e){return this.aggExprs.push(...e),this}count(e,A){return this.aggExprs.push({func:"count",colName:e,alias:A}),this}sum(e,A){return this.aggExprs.push({func:"sum",colName:e,alias:A}),this}avg(e,A){return this.aggExprs.push({func:"avg",colName:e,alias:A}),this}min(e,A){return this.aggExprs.push({func:"min",colName:e,alias:A}),this}max(e,A){return this.aggExprs.push({func:"max",colName:e,alias:A}),this}select(e,...A){if(e===void 0)return this;const n=[];n.push(...Ei(e));for(const s of A)n.push(...Ei(s));this.selectFields.push(...n),this.assertSubqueryDepth();for(const s of n)if(s.expr&&s.expr.type==="fn"){const i=s.expr.name.toLowerCase();if(AA(i)&&!this.aggExprs.some(r=>r.alias===s.alias)){const r=s.expr.args[0],a=r&&r.type==="col"&&r.name!=="*"?r.name:void 0;this.aggExprs.push({func:i,colName:a,alias:s.alias})}}else if(typeof s.fn=="string"){const i=s.fn.toLowerCase();AA(i)&&(this.aggExprs.some(r=>r.alias===s.alias)||this.aggExprs.push({func:i,colName:s.sourceCol==="*"?void 0:s.sourceCol,alias:s.alias}))}return this}getSelectFields(){return this.selectFields}clone(e){const A=e??this.db,n=new oe(A,this.sourceSubquery?this.sourceSubquery.clone(A):this.tableName),s=i=>({...i,values:i.values?[...i.values]:void 0,subquery:i.subquery&&At(i.subquery)?i.subquery.clone(A):i.subquery,value:At(i.value)?i.value.clone(A):i.value,child:i.child?s(i.child):void 0,children:i.children?i.children.map(s):void 0});return n.filters=this.filters.map(s),n.selectFields=this.selectFields.map(i=>({...i,args:i.args?[...i.args]:void 0,subquery:i.subquery?i.subquery.clone(A):void 0})),n.limitCount=this.limitCount,n.offsetCount=this.offsetCount,n.sortCol=this.sortCol,n.sortDir=this.sortDir,n.orderKeys=this.orderKeys.map(i=>({...i})),n.groupCols=[...this.groupCols],n.groupKeys=this.groupKeys.map(i=>({...i})),n.aggExprs=this.aggExprs.map(i=>({...i})),n.havingFilters=this.havingFilters.map(s),n.joins=this.joins.map(i=>({...i})),n.planner=this.planner,n}cloneExprNode(e){return e.type==="binary"?{...e,left:this.cloneExprNode(e.left),right:this.cloneExprNode(e.right)}:e.type==="fn"?{...e,args:e.args.map(A=>this.cloneExprNode(A))}:{...e}}substituteExpr(e,A){if(e.type==="col"){if(e.name==="*")return e;const n=e.name.includes(".")?e.name.slice(e.name.lastIndexOf(".")+1):e.name,s=A.get(e.name)??A.get(n);return s?this.cloneExprNode(s):{...e}}return e.type==="binary"?{...e,left:this.substituteExpr(e.left,A),right:this.substituteExpr(e.right,A)}:e.type==="fn"?{...e,args:e.args.map(n=>this.substituteExpr(n,A))}:{...e}}substituteColOrExpr(e,A,n){if(A){const s=this.substituteExpr(A,n);return s.type==="col"?{colName:s.name,expr:s}:{expr:s}}if(e){const s=e.includes(".")?e.slice(e.lastIndexOf(".")+1):e,i=n.get(e)??n.get(s);if(i){const o=this.cloneExprNode(i);return o.type==="col"?{colName:o.name}:{expr:o}}return{colName:e}}return{colName:e,expr:A}}substituteFilter(e,A){var s;if(e.type==="and"||e.type==="or")return{...e,children:(s=e.children)==null?void 0:s.map(i=>this.substituteFilter(i,A))};if(e.type==="not"&&e.child)return{...e,child:this.substituteFilter(e.child,A)};if(e.type==="exists")return{...e};const n=this.substituteColOrExpr(e.colName,e.expr,A);return{...e,colName:n.colName,expr:n.expr}}tryFlatten(){var i;if(!this.sourceSubquery)return null;const e=this.sourceSubquery.tryFlatten()??this.sourceSubquery.clone(this.db);if(e.sourceSubquery||e.groupKeys.length>0||e.groupCols.length>0||e.aggExprs.length>0||e.havingFilters.length>0||e.limitCount!==null||e.offsetCount!==null||e.joins.length>0||e.selectFields.some(o=>o.subquery)||this.joins.length>0)return null;const A=new Map;for(const o of e.selectFields){const r=o.expr??{type:"col",name:o.sourceCol??o.alias};A.set(o.alias,r)}for(const o of this.aggExprs)if(o.colName){const r=o.colName.includes(".")?o.colName.slice(o.colName.lastIndexOf(".")+1):o.colName,a=A.get(o.colName)??A.get(r);if(a&&a.type!=="col")return null}for(const o of this.groupKeys){const r=this.substituteColOrExpr(o.colName,o.expr,A);if(!r.colName&&r.expr&&r.expr.type!=="col")return null}const n=new oe(this.db,e.tableName);n.planner=this.planner??e.planner,n.filters=[...e.filters.map(o=>({...o})),...this.filters.map(o=>this.substituteFilter(o,A))],this.selectFields.length>0?n.selectFields=this.selectFields.map(o=>{if(o.subquery)return{...o,subquery:o.subquery.clone(this.db)};const r=o.expr??{type:"col",name:o.sourceCol??o.alias},a=this.substituteExpr(r,A);return{alias:o.alias,expr:a,sourceCol:a.type==="col"&&a.name!=="*"?a.name:void 0,fn:a.type==="fn"?a.name:void 0}}):e.selectFields.length>0&&(n.selectFields=e.selectFields.map(o=>({...o})));const s=this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0;return this.orderKeys.length>0?(n.orderKeys=this.orderKeys.map(o=>{const r=this.substituteColOrExpr(o.colName,o.expr,A);return{...o,colName:r.colName,expr:r.expr}}),(i=n.orderKeys[0])!=null&&i.colName&&(n.sortCol=n.orderKeys[0].colName,n.sortDir=n.orderKeys[0].direction??"asc")):!s&&e.orderKeys.length>0&&(n.orderKeys=e.orderKeys.map(o=>({...o})),n.sortCol=e.sortCol,n.sortDir=e.sortDir),n.groupKeys=this.groupKeys.map(o=>{const r=this.substituteColOrExpr(o.colName,o.expr,A);return{colName:r.colName,expr:r.expr}}),n.groupCols=this.groupCols.map(o=>{const r=A.get(o);return r&&r.type==="col"?r.name:o}),n.aggExprs=this.aggExprs.map(o=>{if(o.colName){const r=A.get(o.colName);if(r&&r.type==="col")return{...o,colName:r.name}}return{...o}}),n.havingFilters=this.havingFilters.map(o=>this.substituteFilter(o,A)),n.limitCount=this.limitCount,n.offsetCount=this.offsetCount,n}exprReferencesOuter(e,A){if(!e)return!1;if(e.type==="col"){if(e.name.includes(".")){const n=e.name.slice(0,e.name.indexOf("."));if(n==="outer"||!A.has(n))return!0}return!1}return e.type==="binary"?this.exprReferencesOuter(e.left,A)||this.exprReferencesOuter(e.right,A):e.type==="fn"?e.args.some(n=>this.exprReferencesOuter(n,A)):!1}filterIsCorrelatedWithOuter(e,A){var n;if(e.type==="and"||e.type==="or")return((n=e.children)==null?void 0:n.some(s=>this.filterIsCorrelatedWithOuter(s,A)))??!1;if(e.type==="not"&&e.child)return this.filterIsCorrelatedWithOuter(e.child,A);if(e.type==="cmp"&&(e.value instanceof dt||typeof e.value=="object"&&e.value!==null&&!At(e.value)&&("node"in e.value||"type"in e.value)||e.subquery&&At(e.subquery)&&this.isSubqueryCorrelated(e.subquery))||(e.type==="in"||e.type==="exists")&&e.subquery&&At(e.subquery)&&this.isSubqueryCorrelated(e.subquery))return!0;if(e.colName&&e.colName.includes(".")){const s=e.colName.slice(0,e.colName.indexOf("."));if(s==="outer"||!A.has(s))return!0}return!!this.exprReferencesOuter(e.expr,A)}isSubqueryCorrelated(e){const A=new Set([e.tableName]);for(const n of e.joins)A.add(n.table);return!!(e.filters.some(n=>this.filterIsCorrelatedWithOuter(n,A))||e.havingFilters.some(n=>this.filterIsCorrelatedWithOuter(n,A))||e.sourceSubquery&&this.isSubqueryCorrelated(e.sourceSubquery)||e.selectFields.some(n=>n.subquery&&this.isSubqueryCorrelated(n.subquery)))}filterContainsCorrelatedSubquery(e){var n;if(e.type==="and"||e.type==="or")return((n=e.children)==null?void 0:n.some(s=>this.filterContainsCorrelatedSubquery(s)))??!1;if(e.type==="not"&&e.child)return this.filterContainsCorrelatedSubquery(e.child);const A=e.subquery&&At(e.subquery)?e.subquery:At(e.value)?e.value:void 0;return!!(A&&this.isSubqueryCorrelated(A))}getRowValue(e,A){if(A in e)return e[A];if(A.startsWith("outer.")){const n=A.slice(6);if(n in e)return e[n]}if(A.includes(".")){const n=A.slice(A.lastIndexOf(".")+1);if(n in e)return e[n]}}bindOuterRowToExpr(e,A,n,s=!1){if(e.type==="col"){if(s)return{type:"literal",value:this.getRowValue(A,e.name)??null};if(e.name.includes(".")){const i=e.name.slice(0,e.name.indexOf("."));if(i==="outer"||!n.has(i))return{type:"literal",value:this.getRowValue(A,e.name)??null}}return{...e}}return e.type==="binary"?{...e,left:this.bindOuterRowToExpr(e.left,A,n,s),right:this.bindOuterRowToExpr(e.right,A,n,s)}:e.type==="fn"?{...e,args:e.args.map(i=>this.bindOuterRowToExpr(i,A,n,s))}:{...e}}bindOuterRowToFilter(e,A,n){var i;if(e.type==="and"||e.type==="or")return{...e,children:(i=e.children)==null?void 0:i.map(o=>this.bindOuterRowToFilter(o,A,n))};if(e.type==="not"&&e.child)return{...e,child:this.bindOuterRowToFilter(e.child,A,n)};let s=e.expr?this.bindOuterRowToExpr(e.expr,A,n,!1):void 0;if(e.type==="cmp"&&(e.value instanceof dt||typeof e.value=="object"&&e.value!==null&&!At(e.value)&&("node"in e.value||"type"in e.value))){const o="node"in e.value?e.value.node:e.value,r=this.bindOuterRowToExpr(o,A,n,!0);let a;typeof this.db.getUdf=="function"&&(a=l=>{var u,g;return(g=(u=this.db.getUdf(l))==null?void 0:u.def)==null?void 0:g.call});const c=ue(r,A,a);return c==null?{type:"in",values:[],notIn:!1}:{...e,expr:s,value:c}}return{...e,expr:s,subquery:e.subquery&&At(e.subquery)?this.bindOuterRowToSubquery(e.subquery,A):e.subquery}}bindOuterRowToSubquery(e,A){const n=e.clone(this.db),s=new Set([n.tableName]);for(const i of n.joins)s.add(i.table);return n.filters=n.filters.map(i=>this.bindOuterRowToFilter(i,A,s)),n.havingFilters=n.havingFilters.map(i=>this.bindOuterRowToFilter(i,A,s)),n.sourceSubquery&&(n.sourceSubquery=this.bindOuterRowToSubquery(n.sourceSubquery,A)),n}async evalScalarSubquery(e,A){const s=await(A&&this.isSubqueryCorrelated(e)?this.bindOuterRowToSubquery(e,A):e.clone(this.db)).first();if(!s)return null;const i=Object.keys(s);return i.length>0?s[i[0]]:null}async resolveUncorrelatedFilter(e){if(e.type==="and"||e.type==="or"){const A=[];for(const n of e.children??[])A.push(await this.resolveUncorrelatedFilter(n));return{...e,children:A}}if(e.type==="not"&&e.child)return{...e,child:await this.resolveUncorrelatedFilter(e.child)};if(e.type==="in"&&e.subquery&&At(e.subquery)&&!this.isSubqueryCorrelated(e.subquery)){const n=(await e.subquery.clone(this.db).toArray()).map(i=>{const o=Object.keys(i);return o.length>0?i[o[0]]:null});if(e.notIn&&n.some(i=>i==null))return{type:"in",colName:e.colName,expr:e.expr,values:[],notIn:!1};const s=n.filter(i=>i!=null);if(s.length>ae)throw new RangeError(`WebDB: whereIn subquery result exceeds maximum limit of ${ae} elements`);return{type:"in",colName:e.colName,expr:e.expr,values:s,notIn:e.notIn}}if(e.type==="exists"&&e.subquery&&At(e.subquery)&&!this.isSubqueryCorrelated(e.subquery)){const n=await e.subquery.clone(this.db).first()!==null,s=e.notExists?!n:n;return{type:"in",values:[],notIn:s}}if(e.type==="cmp"){const A=e.subquery&&At(e.subquery)?e.subquery:At(e.value)?e.value:void 0;if(A&&!this.isSubqueryCorrelated(A)){const n=await this.evalScalarSubquery(A);return n==null?{type:"in",colName:e.colName,expr:e.expr,values:[],notIn:!1}:{...e,value:n,subquery:void 0}}}return e}async resolveUncorrelatedFilters(e){const A=[];for(const n of e)A.push(await this.resolveUncorrelatedFilter(n));return A}evalFilterTargetValue(e,A,n){let s;if(typeof this.db.getUdf=="function"&&(s=i=>{var o,r;return(r=(o=this.db.getUdf(i))==null?void 0:o.def)==null?void 0:r.call}),A&&e[A]!==void 0)return e[A];if(n){const i=le(n);return e[i]!==void 0?e[i]:ue(n,e,s)}if(A)return this.getRowValue(e,A)}evalComparisonValues(e,A,n){if(e==null||n===null||n===void 0)return!1;const s=(A??"=").trim().toLowerCase();switch(s){case"=":return e===n;case"!=":case"<>":return e!==n;case"<":return e<n;case"<=":return e<=n;case">":return e>n;case">=":return e>=n;case"starts_with":return String(e).startsWith(String(n));case"ends_with":return String(e).endsWith(String(n));case"contains":return String(e).includes(String(n));case"like":case"not like":{const i=String(n).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,"."),r=new RegExp(`^${i}$`,"s").test(String(e));return s==="not like"?!r:r}default:return e===n}}async evalFilterOnRow(e,A){if(A.type==="and"){for(const n of A.children??[])if(!await this.evalFilterOnRow(e,n))return!1;return!0}if(A.type==="or"){for(const n of A.children??[])if(await this.evalFilterOnRow(e,n))return!0;return!1}if(A.type==="not"&&A.child){if(A.child.type==="cmp"||A.child.type==="in"){const n=this.evalFilterTargetValue(e,A.child.colName,A.child.expr);if(n==null)return!1}return!await this.evalFilterOnRow(e,A.child)}if(A.type==="null"){const n=this.evalFilterTargetValue(e,A.colName,A.expr),s=n==null;return A.isNull?s:!s}if(A.type==="expr"&&A.expr){let n;typeof this.db.getUdf=="function"&&(n=i=>{var o,r;return(r=(o=this.db.getUdf(i))==null?void 0:o.def)==null?void 0:r.call});const s=ue(A.expr,e,n);return!!(s&&s!==0)}if(A.type==="exists"){if(A.subquery&&At(A.subquery)){const i=await(this.isSubqueryCorrelated(A.subquery)?this.bindOuterRowToSubquery(A.subquery,e):A.subquery.clone(this.db)).first()!==null;return A.notExists?!i:i}return!!A.notExists}if(A.type==="in"){let n=A.values??[];if(A.subquery&&At(A.subquery)){const a=(await(this.isSubqueryCorrelated(A.subquery)?this.bindOuterRowToSubquery(A.subquery,e):A.subquery.clone(this.db)).toArray()).map(c=>{const l=Object.keys(c);return l.length>0?c[l[0]]:null});if(A.notIn&&a.some(c=>c==null))return!1;n=a.filter(c=>c!=null)}if(!A.colName&&!A.expr)return A.notIn?n.length===0:n.length>0;if(n.length===0)return!!A.notIn;const s=this.evalFilterTargetValue(e,A.colName,A.expr);if(s==null||A.notIn&&n.some(o=>o==null))return!1;const i=n.includes(s);return A.notIn?!i:i}if(A.type==="cmp"){const n=this.evalFilterTargetValue(e,A.colName,A.expr),s=A.subquery&&At(A.subquery)?A.subquery:At(A.value)?A.value:void 0,i=s?await this.evalScalarSubquery(s,e):A.value;return this.evalComparisonValues(n,A.op,i)}return!0}async evalFiltersOnRows(e,A){if(A.length===0)return e;const n=await this.resolveUncorrelatedFilters(A),s=[];for(const i of e){let o=!0;for(const r of n)if(!await this.evalFilterOnRow(i,r)){o=!1;break}o&&s.push(i)}return s}performInMemoryAggregation(e){const A=Math.max(this.groupKeys.length,this.groupCols.length),n=new Map;if(A===0)n.set("__global__",{keyRow:{},rows:e});else for(const r of e){const a=[],c={};for(let g=0;g<A;g++){const E=this.groupKeys[g],h=this.groupCols[g],B=this.evalFilterTargetValue(r,(E==null?void 0:E.colName)??h,E==null?void 0:E.expr);a.push(B);const Q=(E==null?void 0:E.colName)??(E!=null&&E.expr?le(E.expr):h);Q&&(c[Q]=B,Q.includes(".")&&(c[Q.slice(Q.lastIndexOf(".")+1)]=B)),h&&(c[h]=B)}const l=JSON.stringify(a);let u=n.get(l);u||(u={keyRow:c,rows:[]},n.set(l,u)),u.rows.push(r)}let s;typeof this.db.getUdf=="function"&&(s=r=>{var a,c;return(c=(a=this.db.getUdf(r))==null?void 0:a.def)==null?void 0:c.call});const i=(r,a,c,l)=>{const u=a.toLowerCase();if(u==="count"){if(!c&&(!l||l.type==="col"&&l.name==="*"))return r.length;let E=0;for(const h of r){const B=l?ue(l,h,s):this.getRowValue(h,c);B!=null&&E++}return E}const g=[];for(const E of r){const h=l?ue(l,E,s):c?this.getRowValue(E,c):null;h!=null&&g.push(h)}return g.length===0?null:u==="sum"?g.reduce((E,h)=>E+Number(h),0):u==="avg"?g.reduce((E,h)=>E+Number(h),0)/g.length:u==="min"?g.reduce((E,h)=>h<E?h:E,g[0]):u==="max"?g.reduce((E,h)=>h>E?h:E,g[0]):null},o=[];for(const{keyRow:r,rows:a}of n.values()){const c={...r};for(const l of this.aggExprs){const u=i(a,l.func,l.colName),g=l.alias??(l.colName?`${l.func}_${l.colName}`:l.func);c[g]=u,c[`${l.func}(${l.colName??"*"})`]=u,l.colName||(c[l.func]=u)}for(const l of this.selectFields)if(l.expr&&l.expr.type==="fn"&&AA(l.expr.name)){const u=l.expr.args[0],g=i(a,l.expr.name,u&&u.type==="col"&&u.name!=="*"?u.name:void 0,u);c[l.alias]=g,c[le(l.expr)]=g}o.push(c)}return o}async attachSelectSubqueries(e){const A=this.selectFields.filter(s=>s.subquery);if(A.length===0||e.length===0)return;const n=new Map;for(const s of A)if(s.subquery&&!this.isSubqueryCorrelated(s.subquery)){const i=await this.evalScalarSubquery(s.subquery);n.set(s,i)}for(const s of e)for(const i of A)n.has(i)?s[i.alias]=n.get(i):i.subquery&&(s[i.alias]=await this.evalScalarSubquery(i.subquery,s))}async executeMaterializedDerivedTable(){let e=await this.sourceSubquery.clone(this.db).toArray();for(const i of this.joins){const o=await new oe(this.db,i.table).toArray(),r=[];for(const a of e){let c=!1;const l=this.getRowValue(a,i.leftCol);for(const u of o){const g=this.getRowValue(u,i.rightCol);if(this.evalComparisonValues(l,i.op,g)){c=!0;const E={...a};for(const[h,B]of Object.entries(u))E[`${i.table}.${h}`]=B,h in E||(E[h]=B);r.push(E)}}!c&&i.type==="left"&&r.push({...a})}e=r}e=await this.evalFiltersOnRows(e,this.filters),(this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0)&&(e=this.performInMemoryAggregation(e),this.havingFilters.length>0&&(e=await this.evalFiltersOnRows(e,this.havingFilters)));const n=this.selectFields.some(i=>i.subquery),s=n&&this.orderKeys.some(i=>this.selectFields.some(o=>o.subquery&&(o.alias===i.colName||o.alias===(i.expr?le(i.expr):void 0))));return s&&await this.attachSelectSubqueries(e),this.orderKeys.length>0&&(e=this.sortAggregatedRows(e)),this.offsetCount!==null&&this.offsetCount>0&&(e=e.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(e=e.slice(0,this.limitCount)),n&&!s&&await this.attachSelectSubqueries(e),this.selectFields.length>0&&(e=e.map(i=>this.projectRow(i))),e}projectRow(e){const A=this.aggExprs.filter(i=>!i.fromHaving),n=Object.keys(e);if(this.selectFields.length>0&&A.length===0&&n.length===this.selectFields.length&&this.selectFields.every(i=>i.alias in e))return e;const s={};for(const i of this.selectFields){const o=i.alias;if(e[o]!==void 0)s[o]=e[o];else if(i.expr&&e[le(i.expr)]!==void 0)s[o]=e[le(i.expr)];else if(i.sourceCol!==void 0&&e[i.sourceCol]!==void 0)s[o]=e[i.sourceCol];else if(i.expr){let r;typeof this.db.getUdf=="function"&&(r=a=>{var c,l;return(l=(c=this.db.getUdf(a))==null?void 0:c.def)==null?void 0:l.call}),s[o]=ue(i.expr,e,r)}else s[o]=null}for(const i of A){const o=i.alias??(i.colName?`${i.func}_${i.colName}`:i.func);!(o in s)&&e[o]!==void 0&&(s[o]=e[o])}return s}async explain(){if(this.assertSubqueryDepth(),this.sourceSubquery){const i=this.tryFlatten();if(i)return i.explain();const o=await this.sourceSubquery.clone(this.db).explain(),r=await this.resolveUncorrelatedFilters(this.filters);return{plan:{...o.plan,filters:[...o.plan.filters,...r],orderBy:this.orderKeys.length>0?this.orderKeys:o.plan.orderBy,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:o.plan.groupBy,aggregates:this.aggExprs.length>0?this.aggExprs:o.plan.aggregates,having:this.havingFilters.length>0?this.havingFilters:o.plan.having,select:this.selectFields.length>0?this.selectFields:o.plan.select,limit:this.limitCount!==null?this.limitCount:o.plan.limit,offset:this.offsetCount!==null?this.offsetCount:o.plan.offset},bytecodeSize:o.bytecodeSize,instructions:o.instructions,assembly:o.assembly}}const e=await this.resolveUncorrelatedFilters(this.filters.filter(i=>!this.filterContainsCorrelatedSubquery(i))),A=await this.resolveUncorrelatedFilters(this.havingFilters.filter(i=>!this.filterContainsCorrelatedSubquery(i))),n=this.selectFields.filter(i=>!i.subquery),s=n.map(i=>({expr:i.expr??{type:"col",name:i.sourceCol??i.alias},alias:i.alias}));return this.db.explainQuery(this.tableName,e,{joins:this.joins.length>0?this.joins:void 0,orderBy:this.orderKeys.length>0?this.orderKeys:void 0,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:void 0,aggregates:this.aggExprs.length>0?this.aggExprs:void 0,having:A.length>0?A:void 0,select:n.length>0?n:void 0,selectExprs:s.length>0?s:void 0,limit:this.limitCount!==null?this.limitCount:void 0,offset:this.offsetCount!==null?this.offsetCount:void 0,planner:this.planner})}getOrderKeyValue(e,A){const n=A.colName??(A.expr?le(A.expr):void 0);if(!n)return;if(e[n]!==void 0)return e[n];const s=n.includes(".")?n.slice(n.lastIndexOf(".")+1):n;if(e[s]!==void 0)return e[s];if(this.selectFields.length>0){for(const i of this.selectFields)if((i.sourceCol===n||i.sourceCol===s||i.alias===n||i.alias===s)&&e[i.alias]!==void 0)return e[i.alias]}if(e[`__sort_${n}`]!==void 0)return e[`__sort_${n}`];if(e[`__sort_${s}`]!==void 0)return e[`__sort_${s}`];if(A.expr){let i;return typeof this.db.getUdf=="function"&&(i=o=>{var r,a;return(a=(r=this.db.getUdf(o))==null?void 0:r.def)==null?void 0:a.call}),ue(A.expr,e,i)}}sortAggregatedRows(e){return[...e].sort((A,n)=>{for(const s of this.orderKeys){const i=this.getOrderKeyValue(A,s),o=this.getOrderKeyValue(n,s);if(i===o)continue;if(i==null)return s.nullOrder==="nulls_first"?-1:1;if(o==null)return s.nullOrder==="nulls_first"?1:-1;const r=s.direction==="desc"?-1:1;return typeof i=="number"&&typeof o=="number"?(i-o)*r:String(i).localeCompare(String(o))*r}return 0})}toArray(){this.assertSubqueryDepth();const e=un();we(this.db,this.getReferencedTables());const A=this._toArrayInternal();return gn(A,e)}async _toArrayInternal(){if(this.sourceSubquery){const d=this.tryFlatten();return d?d._toArrayInternal():this.executeMaterializedDerivedTable()}const e=this.filters.some(d=>this.filterContainsCorrelatedSubquery(d)),A=this.havingFilters.some(d=>this.filterContainsCorrelatedSubquery(d)),n=this.selectFields.some(d=>d.subquery),s=this.selectFields.some(d=>d.subquery&&this.isSubqueryCorrelated(d.subquery)),i=await this.resolveUncorrelatedFilters(this.filters.filter(d=>!this.filterContainsCorrelatedSubquery(d))),o=this.filters.filter(d=>this.filterContainsCorrelatedSubquery(d)),r=this.joins.length>0,a=this.orderKeys.length>0,c=this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0;if(e){let d=await this.db.executeQuery(this.tableName,i,{limit:null,offset:null,sortCol:null,sortDir:this.sortDir,joins:r?this.joins:void 0,planner:this.planner});return d=await this.evalFiltersOnRows(d,o),c&&(d=this.performInMemoryAggregation(d),this.havingFilters.length>0&&(d=await this.evalFiltersOnRows(d,this.havingFilters))),n&&await this.attachSelectSubqueries(d),a&&(d=this.sortAggregatedRows(d)),this.offsetCount!==null&&this.offsetCount>0&&(d=d.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(d=d.slice(0,this.limitCount)),this.selectFields.length>0&&(d=d.map(p=>this.projectRow(p))),d}const l=await this.resolveUncorrelatedFilters(this.havingFilters.filter(d=>!this.filterContainsCorrelatedSubquery(d))),u=this.selectFields.filter(d=>!d.subquery),g=u.map(d=>({expr:d.expr??{type:"col",name:d.sourceCol??d.alias},alias:d.alias}));if(r&&a&&g.length>0)for(const d of this.orderKeys){const p=d.colName;if(p){const U=p.includes(".")?p.slice(p.lastIndexOf(".")+1):p;u.some(m=>m.alias===p||m.alias===U||m.sourceCol===p||m.sourceCol===U)||g.push({expr:{type:"col",name:p},alias:`__sort_${p}`})}}const E=!s||c,h=await this.db.executeQuery(this.tableName,i,{limit:r&&a&&c||A?null:this.limitCount,offset:r&&a&&c||A?null:this.offsetCount,sortCol:r?null:this.sortCol,sortDir:this.sortDir,orderBy:r&&c?void 0:a?this.orderKeys:void 0,joins:r?this.joins:void 0,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:void 0,aggregates:this.aggExprs.length>0?this.aggExprs:void 0,having:l.length>0?l:void 0,select:E&&u.length>0?u:void 0,selectExprs:E&&g.length>0?g:void 0,planner:this.planner});let B=h;if(A){const d=this.havingFilters.filter(p=>this.filterContainsCorrelatedSubquery(p));B=await this.evalFiltersOnRows(B,d)}const Q=h.isOrderSatisfied===!0;return(c||r)&&a&&!Q?(B=this.sortAggregatedRows(B),(r||A)&&(this.offsetCount!==null&&this.offsetCount>0&&(B=B.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(B=B.slice(0,this.limitCount)))):A&&(this.offsetCount!==null&&this.offsetCount>0&&(B=B.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(B=B.slice(0,this.limitCount))),n&&await this.attachSelectSubqueries(B),this.selectFields.length>0&&(B=B.map(d=>this.projectRow(d))),B}first(){const e=un();this.limit(1),this.assertSubqueryDepth(),we(this.db,this.getReferencedTables());const A=this._toArrayInternal().then(n=>n.length>0?n[0]:null);return gn(A,e)}live(e,A){return gi(()=>this.clone(this.db).toArray(),e,A)}async update(e,A){if(!this.db.executeUpdate)throw new Error("Database executor does not support executeUpdate");this.assertSubqueryDepth();const n=await this.resolveUncorrelatedFilters(this.filters);return this.db.executeUpdate(this.tableName,n,e,A)}async delete(e){if(!this.db.executeDelete)throw new Error("Database executor does not support executeDelete");this.assertSubqueryDepth();const A=await this.resolveUncorrelatedFilters(this.filters);return this.db.executeDelete(this.tableName,A,e)}}class En{constructor(e,A,n,s,i="js",o,r,a){G(this,"vfs");G(this,"io");G(this,"driver");G(this,"coreMode");G(this,"wasmCore");G(this,"planner");G(this,"coordinator");G(this,"currentLeaseId",null);G(this,"vmCtx");G(this,"udfs",new Map);G(this,"nextUdfId",1);G(this,"tableMetaCache",new Map);G(this,"tableTailPages",new Map);G(this,"indexTailPages",new Map);G(this,"beforeCommitHooks",new Set);G(this,"commitHooks",new Set);G(this,"subscriptions",new Set);G(this,"activeTxChanges",[]);G(this,"activeTxOrigin","local");G(this,"activeTxMeta");G(this,"activeTxId",0);G(this,"nextAutoTxId",1e6);G(this,"isRunningBeforeCommit",!1);G(this,"broadcastChannel",null);G(this,"instanceId",Math.random().toString(36).slice(2)+Date.now().toString(36));if(this.vfs=e,this.io=A,this.driver=n,this.coordinator=s,this.coreMode=i,this.wasmCore=o,this.planner=r,this.vmCtx=Br(),this.vmCtx._fastHostMode=!0,this.coordinator.setOnCrossTabInvalidated(async()=>{this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await En.pinAllCatalogPages(this.driver)}),typeof BroadcastChannel<"u"&&a){const c=`webdb_sync_${e.name}_${a}`;this.broadcastChannel=new BroadcastChannel(c),this.broadcastChannel.onmessage=l=>{const u=l.data;if(!u||u.senderId===this.instanceId)return;const{tables:g,origin:E,meta:h,changeCounter:B,schemaVersion:Q}=u;this.coordinator.leaseQueue.enqueue(async()=>{await this.coordinator.syncCrossTabState(!0),this.notifySubscriptions({tables:Array.isArray(g)?g:[],origin:E??"remote",meta:h,changeCounter:typeof B=="number"?B:this.getSyncState().changeCounter,schemaVersion:typeof Q=="number"?Q:this.getSyncState().schemaVersion,crossTab:!0})}).catch(()=>{})}}}get pool(){return this.driver}static async open(e){var Q,d;const A=e.storage||"memory";let n;e.vfs?n=e.vfs:A==="idb"?n=new Sr(e.name):A==="opfs"?n=new Nr(e.name):n=new Tr;const s=e.slotCount??PA,i=e.maxQueryMemory??IA,o=Za(Math.max(s,PA),i),r=(d=(Q=globalThis.process)==null?void 0:Q.env)==null?void 0:d.WEBDB_CORE,a=r==="wasm"||r==="js"?r:globalThis.__WEBDB_DEFAULT_CORE__,c=e.core??a??"js";let l;c==="wasm"&&(l=ei(o,e.wasmBinary?new Uint8Array(e.wasmBinary):void 0));const u=new Ki({vfs:n,memory:o}),g=new ja({io:u,memory:o,slotCount:s,maxQueryMemory:i,useDefaultLayoutOffsets:!0}),E=e.name&&n.name!=="memory"?`webdb_lock_${n.name}_${e.name}`:void 0,h=new za(n,g,u,E);g.setTransactionCoordinator(h),await h.leaseQueue.enqueue(async()=>{await Lo(n);const[p]=await n.readPages([1]);p?(g.getPageBytesInSlot(0).set(p),g.clearDirty(0),$n(g.getSlotDataView(0),!0),await En.pinAllCatalogPages(g)):(Oa(g.getSlotDataView(0)),g.markDirty(0),await g.flushSlot(0)),h.recordDiskPage1State()});const B=new En(n,u,g,h,c,l,e.planner,e.name);return e.initialData&&await B.importBinary(e.initialData),B}static async pinAllCatalogPages(e){const A=e.getSlotDataView(0);let n=A.getUint32(bA,!0);for(;n!==0;){const o=await e.acquireAndPinPage(n),r=e.getSlotDataView(o);n=eA(r,0).nextColCatalogPageId}let s=A.getUint32(OA,!0);for(;s!==0;){const o=await e.acquireAndPinPage(s),r=e.getSlotDataView(o);s=eA(r,0).nextColCatalogPageId}const i=UA(A);for(const o of i){let r=o.colCatalogPageId;for(;r!==0;){const a=await e.acquireAndPinPage(r),c=e.getSlotDataView(a);r=eA(c,0).nextColCatalogPageId}}}getPlanner(){return this.planner}setPlanner(e){return this.planner=e,this}validateIdentifier(e,A="Identifier"){if(!e||typeof e!="string"||e.length===0)throw new Error(`${A} cannot be empty`);if(e.length>ke)throw new fr(e,ke)}async createTable(e,A){return this.coordinator.leaseQueue.enqueue(()=>this._createTableInternal(e,A),this.currentLeaseId??void 0)}async _createTableInternal(e,A){var B;if(this.validateIdentifier(e,"Table name"),A.length===0)throw new Error("Table must have at least one column");if(A.length>Ke)throw new Sn(A.length,Ke);const n=new Set;let s=!1;for(const Q of A){if(this.validateIdentifier(Q.name,"Column name"),n.has(Q.name))throw new Is(Q.name,e);n.add(Q.name);const d=typeof Q.flags=="number"?Q.flags:0;(Q.primaryKey||(B=Q.flags)!=null&&B.primaryKey||d>.PRIMARY_KEY)&&(s=!0)}const i=this.pool.getSlotDataView(0);if(Se(i,e)!==-1)throw new Bs(e);const o=To(i)===-1?1:0,r=Math.ceil(A.length/lA),a=s?1:0,c=1+r+a+o,l=[];for(let Q=0;Q<c;Q++)l.push(await this.driver.allocateAndPinPage());let u=0;const g={allocateNewPage:()=>{if(u<l.length)return l[u++];const d=i.getUint32(12,!0)+1;return i.setUint32(12,d,!0),this.pool.markDirty(0),d},getPageBytes:Q=>{let d=this.pool.getResidentSlot(Q);return d===-1&&(d=Q<=this.pool.slotCount?Q-1:1,this.pool.assignSlot(d,Q)),this.pool.getPageBytesInSlot(d)},markPageDirty:Q=>{const d=this.pool.getResidentSlot(Q);d!==-1&&this.pool.markDirty(d)}};let E;try{E=Ja(i,g,e,A)}catch(Q){for(const d of l)this.driver.forceUnpinPage(d),await this.driver.freePage(d,!0);throw Q}this.driver.unpinPage(E.rootPageId);for(const Q of E.indexes??[])Q.rootPageId>1&&this.driver.unpinPage(Q.rootPageId);let h=E.colCatalogPageId;for(;h!==0;){const Q=await this.driver.acquirePage(h);this.pool.isSlotPinned(Q)||this.pool.pinSlot(Q),h=eA(this.pool.getSlotDataView(Q),0).nextColCatalogPageId}return this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this.tableMetaCache.delete(e.toLowerCase()),E}getTable(e){const A=un();we(this,e);const n=this.coordinator.leaseQueue.enqueue(()=>this._getTableInternal(e),this.currentLeaseId??void 0);return gn(n,A)}async _getTableInternal(e){const A=e.toLowerCase(),n=this.tableMetaCache.get(A);if(n)return n;const s=this.pool.getSlotDataView(0),i=Se(s,e);if(i===-1)throw new Tn(e);let r=Ee(s,i).colCatalogPageId;for(;r!==0;){await this.driver.acquirePage(r);const l=this.pool.getResidentSlot(r);r=eA(this.pool.getSlotDataView(l),0).nextColCatalogPageId}const c=Do(s,{getPageBytes:l=>{const u=this.pool.getResidentSlot(l);return u!==-1?this.pool.getPageBytesInSlot(u):new Uint8Array(4096)}},e);return this.tableMetaCache.set(A,c),c}listTables(){const e=un();we(this,"*");const A=this.coordinator.leaseQueue.enqueue(async()=>{const n=this.pool.getSlotDataView(0),s=UA(n),i=[];for(const o of s)i.push(await this._getTableInternal(o.name));return i},this.currentLeaseId??void 0);return gn(A,e)}async freeTableTreePages(e){if(e<=1)return;const A=[],n=new Set,s=[e];for(;s.length>0;){const i=s.shift();if(i<=1||n.has(i))continue;n.add(i);const o=await this.driver.acquirePage(i),r=this.pool.getSlotDataView(o),a=_A(r,0);if(a===wA){this.driver.forceUnpinPage(i);continue}if(A.push(i),a===qi||a===gr){const c=_t(r,0);for(let u=0;u<c;u++){const g=Et(r,0,u);if(g>0&&g+4<=4096){const E=r.getUint32(g,!0);E>1&&!n.has(E)&&s.push(E)}}const l=jt(r,0);l>1&&!n.has(l)&&s.push(l)}else if(a===gs||a===pn){const c=jt(r,0);c>1&&!n.has(c)&&s.push(c)}}for(const i of A)this.driver.forceUnpinPage(i),await this.driver.freePage(i,!0)}async dropTable(e){return this.coordinator.leaseQueue.enqueue(()=>this._dropTableInternal(e),this.currentLeaseId??void 0)}async _dropTableInternal(e){var r;this.tableMetaCache.delete(e.toLowerCase()),this.tableTailPages.delete(e);const A=this.pool.getSlotDataView(0),n=Se(A,e);if(n===-1)throw new Tn(e);const s=Ee(A,n);s.pkRootPageId&&s.pkRootPageId>1&&(await this.freeTableTreePages(s.pkRootPageId),this.indexTailPages.delete(s.pkRootPageId));const i=TA(A);for(let a=0;a<i;a++){const c=sn(A,a);c&&(c.tableId===s.tableId||c.name.toLowerCase().startsWith(`idx_${e.toLowerCase()}_`)||c.name.toLowerCase()===`pk_${e.toLowerCase()}`)&&(c.rootPageId>1&&c.rootPageId!==s.pkRootPageId&&(await this.freeTableTreePages(c.rootPageId),this.indexTailPages.delete(c.rootPageId)),No(A,a))}s.rootPageId>1&&await this.freeTableTreePages(s.rootPageId);let o=s.colCatalogPageId;for(;o>1;){const a=await this.driver.acquirePage(o),c=this.pool.getSlotDataView(a);if(_A(c,0)===wA){this.driver.forceUnpinPage(o);break}const g=eA(c,0).nextColCatalogPageId;this.driver.forceUnpinPage(o),await this.driver.freePage(o,!0),o=g}Va(A,n),HA(A),Ve(A),Te(A),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),((r=this.vmCtx.table)==null?void 0:r.name.toLowerCase())===e.toLowerCase()&&(this.vmCtx.table=null)}async renameTable(e,A){return this.coordinator.leaseQueue.enqueue(()=>this._renameTableInternal(e,A),this.currentLeaseId??void 0)}async _renameTableInternal(e,A){var l;this.validateIdentifier(A,"Table name");const n=this.pool.getSlotDataView(0),s=Se(n,e);if(s===-1)throw new Tn(e);if(e===A)return this._getTableInternal(A);if(Se(n,A)!==-1)throw new Bs(A);const i=Ee(n,s);i.name=A,VA(n,s,i);const o=`pk_${e}`,r=`idx_${e}_`,a=TA(n);for(let u=0;u<a;u++){const g=sn(n,u);if(g&&g.tableId===i.tableId){let E=null;g.name===o?E=`pk_${A}`:g.name.startsWith(r)&&(E=`idx_${A}_${g.name.slice(r.length)}`),E&&E.length<=ke&&!vs(n,E)&&(g.name=E,So(n,u,g))}}HA(n),Ve(n),Te(n),this.pool.markDirty(0),this.tableMetaCache.delete(e.toLowerCase()),this.tableMetaCache.delete(A.toLowerCase());const c=this.tableTailPages.get(e);return c!==void 0&&(this.tableTailPages.delete(e),this.tableTailPages.set(A,c)),((l=this.vmCtx.table)==null?void 0:l.name.toLowerCase())===e.toLowerCase()&&(this.vmCtx.table=null),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(A)}async renameColumn(e,A,n){return this.coordinator.leaseQueue.enqueue(()=>this._renameColumnInternal(e,A,n),this.currentLeaseId??void 0)}async _renameColumnInternal(e,A,n){var h;this.validateIdentifier(n,"Column name");const s=await this._getTableInternal(e),i=s.columns.findIndex(B=>B.name===A);if(i===-1)throw new Ze(A,e);if(A===n)return s;if(s.columns.some((B,Q)=>Q!==i&&B.name===n))throw new Is(n,e);const{pageChainIdx:o,colIdxInPage:r}=Xa(i);let a=s.colCatalogPageId;for(let B=0;B<o;B++){const Q=await this.driver.acquirePage(a);a=eA(this.pool.getSlotDataView(Q),0).nextColCatalogPageId}const c=await this.driver.acquirePage(a),l=this.pool.getSlotDataView(c),u={...s.columns[i],name:n};Ro(l,0,r,u);const g=fA(this.pool.getPageBytesInSlot(c));l.setUint32(12,g,!0),this.pool.markDirty(c);const E=this.pool.getSlotDataView(0);return HA(E),Ve(E),Te(E),this.pool.markDirty(0),this.tableMetaCache.delete(e.toLowerCase()),((h=this.vmCtx.table)==null?void 0:h.name.toLowerCase())===e.toLowerCase()&&(this.vmCtx.table=null),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(e)}async addColumn(e,A,n){this.validateIdentifier(A.name,"Column name");const s=(n==null?void 0:n.defaultValue)!==void 0?n.defaultValue:A.defaultValue!==void 0?A.defaultValue:null;return this._executeTableRebuildAtomic(e,i=>{var u,g,E;if(i.columns.some(h=>h.name===A.name))throw new Is(A.name,e);if(i.columns.length+1>Ke)throw new Sn(i.columns.length+1,Ke);const o=typeof A.flags=="number"?A.flags:0,r=!!A.primaryKey||!!((u=A.flags)!=null&&u.primaryKey)||(o>.PRIMARY_KEY)!==0,a=!!A.autoInc||!!((g=A.flags)!=null&&g.autoInc)||(o>.AUTO_INC)!==0,c=!!A.indexed||!!((E=A.flags)!=null&&E.indexed)||(o>.INDEXED)!==0;if(r&&i.columns.some(h=>(h.flags>.PRIMARY_KEY)!==0))throw new Error(`Cannot add a PRIMARY KEY column "${A.name}" to table "${e}" because it already has a primary key`);return{newColumns:[...i.columns.map(h=>({name:h.name,type:h.type,flags:{primaryKey:(h.flags>.PRIMARY_KEY)!==0,notNull:(h.flags>.NOT_NULL)!==0,indexed:(h.flags>.INDEXED)!==0,autoInc:(h.flags>.AUTO_INC)!==0}})),A],transformRow:h=>{const B={...h};return(!a||s!==null)&&(B[A.name]=s),B},keepIndex:()=>!0,newAutoIndexCol:c&&!r?A.name:void 0}})}async dropColumn(e,A){return this.validateIdentifier(A,"Column name"),this._executeTableRebuildAtomic(e,n=>{const s=n.columns.findIndex(r=>r.name===A);if(s===-1)throw new Ze(A,e);if(n.columns.length<=1)throw new Hi(`Cannot drop column "${A}" from table "${e}": table must have at least one column`);if(n.columns[s].flags>.PRIMARY_KEY)throw new Hi(`Cannot drop PRIMARY KEY column "${A}" from table "${e}"`);return{newColumns:n.columns.filter(r=>r.name!==A).map(r=>({name:r.name,type:r.type,flags:{primaryKey:(r.flags>.PRIMARY_KEY)!==0,notNull:(r.flags>.NOT_NULL)!==0,indexed:(r.flags>.INDEXED)!==0,autoInc:(r.flags>.AUTO_INC)!==0}})),transformRow:r=>{const a={...r};return delete a[A],a},keepIndex:r=>!r.includes(A)}})}async alterTable(e,A){switch(A.type){case"renameTable":return this.renameTable(e,A.newName);case"renameColumn":return this.renameColumn(e,A.from,A.to);case"addColumn":return this.addColumn(e,A.column,{defaultValue:A.defaultValue});case"dropColumn":return this.dropColumn(e,A.column);default:throw new Error(`Unsupported alterTable operation: ${A==null?void 0:A.type}`)}}async _executeTableRebuildAtomic(e,A){return this.coordinator.isInTransaction()?this.coordinator.leaseQueue.enqueue(async()=>{const n=await this.coordinator.captureSavepoint();try{return await this._rebuildTableSchemaInternal(e,A)}catch(s){throw this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.restoreSavepoint(n),s}},this.currentLeaseId??void 0):this.transaction(n=>n._rebuildTableSchemaInternal(e,A))}async _rebuildTableSchemaInternal(e,A){const n=await this._getTableInternal(e),{newColumns:s,transformRow:i,keepIndex:o,newAutoIndexCol:r}=A(n),a=[];let c=n.rootPageId;for(;c!==0;){let B=await this.driver.acquirePage(c),Q=this.pool.getSlotDataView(B);const d=_t(Q,0),p=jt(Q,0);for(let U=0;U<d;U++){B=await this.driver.acquirePage(c),Q=this.pool.getSlotDataView(B);const N=Et(Q,0,U),m=qA(n.columns,Q,N);m&&a.push(i(m))}c=p}const l=n.autoIncNext,u=this.pool.getSlotDataView(0),g=Xe(u,n.tableId),E=[];for(const B of g){if(B.flags&ft.PRIMARY)continue;const Q=B.columnIndices.slice(0,B.columnCount).map(d=>{var p;return(p=n.columns[d])==null?void 0:p.name}).filter(d=>typeof d=="string");Q.length===B.columnCount&&o(Q)&&E.push({name:B.name,colNames:Q,unique:(B.flags&ft.UNIQUE)!==0})}await this._dropTableInternal(e),await this._createTableInternal(e,s);for(const B of E)await this._createIndexInternal(e,B.colNames,{name:B.name,unique:B.unique});r&&!E.some(B=>B.colNames.length===1&&B.colNames[0]===r)&&await this._createIndexInternal(e,r),a.length>0&&await this._insertManyInternal(e,a,!1);const h=Se(u,e);if(h!==-1){const B=Ee(u,h);l>B.autoIncNext&&(B.autoIncNext=l,VA(u,h,B),Te(u),this.pool.markDirty(0))}return this.tableMetaCache.delete(e.toLowerCase()),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(e)}async createIndex(e,A,n){return this.coordinator.leaseQueue.enqueue(()=>this._createIndexInternal(e,A,n),this.currentLeaseId??void 0)}async _createIndexInternal(e,A,n){const s=await this._getTableInternal(e),i=Array.isArray(A)?A:[A];if(i.length===0)throw new Error(`At least one column must be specified for createIndex on table "${e}"`);if(i.length>8)throw new Error(`Maximum 8 columns allowed per index (requested ${i.length})`);const o=[];for(const T of i){const F=s.columns.findIndex(D=>D.name===T);if(F===-1)throw new Ze(T,e);o.push(F)}const r=(n==null?void 0:n.name)??`idx_${e}_${i.join("_")}`,a=this.pool.getSlotDataView(0);if(vs(a,r)!==null)throw new Yi(r);const u=Xe(a,s.tableId).find(T=>{if(T.columnCount!==o.length)return!1;for(let F=0;F<T.columnCount;F++)if(T.columnIndices[F]!==o[F])return!1;return!0});if(u)throw new Yi(u.name||r);const g=await this.driver.allocateAndPinPage(),E=this.pool.getResidentSlot(g),h=this.pool.getSlotDataView(E);Rs(h,0,0),this.pool.markDirty(E),this.pool.unpinSlot(E);const B=!!(n!=null&&n.unique),Q=B?new Set:null;let d=s.rootPageId;for(;d!==0;){let T=this.pool.getResidentSlot(d);T!==-1?this.pool.setRefBit(T,1):T=await this.driver.acquirePage(d);let F=this.pool.getSlotDataView(T);const D=_t(F,0),O=jt(F,0);for(let w=0;w<D;w++){T=this.pool.getResidentSlot(d),T!==-1?this.pool.setRefBit(T,1):T=await this.driver.acquirePage(d),F=this.pool.getSlotDataView(T);const P=Et(F,0,w),I=qA(s.columns,F,P);if(I){const b=BigInt(d)<<16n|BigInt(w),{keyVal:H,keyType:J}=this.extractIndexKey(s.columns,{columnCount:o.length,columnIndices:o},I);if(H!=null){if(Q!==null){const ot=H instanceof Uint8Array?Array.from(H).join(","):H;if(Q.has(ot))throw await this.freeTableTreePages(g),this.indexTailPages.delete(g),new WA(`Duplicate key value violates unique constraint "${r}" on table "${e}"`);Q.add(ot)}await this.insertIntoIndex(g,J,H,b)}}}d=O}let p=Ha(a);if(p===-1){const T=await this.driver.allocateAndPinPage();if(p=Ma(a,T),p===-1)throw new Qr(Qi+1,Qi);this.pool.markDirty(0)}const U=[0,0,0,0,0,0,0,0],N=[0,0,0,0,0,0,0,0];for(let T=0;T<o.length&&T<8;T++)U[T]=o[T];const m=B?ft.UNIQUE:0;So(a,p,{indexId:p+1,tableId:s.tableId,rootPageId:g,columnCount:o.length,flags:m,columnIndices:U,colDirections:N,name:r}),HA(a),Ve(a),Te(a),this.pool.markDirty(0),this.tableMetaCache.delete(e.toLowerCase()),this.indexTailPages.delete(g),this.coordinator.isInTransaction()||await this.driver.flushAllDirty()}async dropIndex(e){return this.coordinator.leaseQueue.enqueue(()=>this._dropIndexInternal(e),this.currentLeaseId??void 0)}async _dropIndexInternal(e){const A=this.pool.getSlotDataView(0),n=vs(A,e);if(!n)throw new Cr(e);if(n.desc.rootPageId>1&&(await this.freeTableTreePages(n.desc.rootPageId),this.indexTailPages.delete(n.desc.rootPageId)),n.slotIdx>=0)No(A,n.slotIdx);else{const s=-n.slotIdx-1,i=Ee(A,s);i&&(i.pkRootPageId=void 0,i.pkColumnCount=void 0,i.pkFlags=void 0,i.pkColumnIndices=void 0,VA(A,s,i))}HA(A),Ve(A),Te(A),this.pool.markDirty(0),this.tableMetaCache.clear(),this.indexTailPages.clear(),this.coordinator.isInTransaction()||await this.driver.flushAllDirty()}async listIndexes(e){return this.coordinator.leaseQueue.enqueue(async()=>{const A=this.pool.getSlotDataView(0);if(e){const n=await this._getTableInternal(e);return Xe(A,n.tableId)}return Ya(A)},this.currentLeaseId??void 0)}extractIndexKey(e,A,n){if(A.columnCount===1){const s=e[A.columnIndices[0]];return{keyVal:n[s.name],keyType:s.type}}return{keyVal:bs(e,A.columnIndices,A.columnCount,n),keyType:_.BLOB}}async probeIndexUnique(e,A,n,s){const i=this.wasmCore?this.wasmCore.page_binary_search_index_leaf:Ls;let o=e;for(;o!==0;){let r=this.pool.getResidentSlot(o);r!==-1?this.pool.setRefBit(r,1):r=await this.driver.acquirePage(o);const a=this.pool.getSlotDataView(r);if(_t(a,0)>0){const l=i(a,0,A,n);if(l.found){const u=Et(a,0,l.slot_idx),g=a.getUint16(u,!0),E=a.getBigInt64(u+2+g,!0);if(!s||!s.has(E))return!0}}o=jt(a,0)}return!1}async deleteFromIndex(e,A,n,s){const i=this.wasmCore?this.wasmCore.page_binary_search_index_leaf:Ls,o=this.wasmCore?this.wasmCore.page_delete_index_leaf_cell:Ao;let r=e;for(;r!==0;){let a=this.pool.getResidentSlot(r);a!==-1?this.pool.setRefBit(a,1):a=await this.driver.acquirePage(r);const c=this.pool.getSlotDataView(a);if(_t(c,0)>0){const u=i(c,0,A,n,s);if(u.found)return o(c,0,u.slot_idx),this.pool.markDirty(a),!0}r=jt(c,0)}return!1}async insertIntoIndex(e,A,n,s){const i=this.wasmCore?this.wasmCore.page_insert_index_leaf_cell:eo;let o=this.indexTailPages.get(e)??e,r=this.pool.getResidentSlot(o);r!==-1?this.pool.setRefBit(r,1):r=await this.driver.acquirePage(o);let a=this.pool.getSlotDataView(r);for(;;){const l=jt(a,0);if(l===0)break;o=l,r=this.pool.getResidentSlot(o),r!==-1?this.pool.setRefBit(r,1):r=await this.driver.acquirePage(o),a=this.pool.getSlotDataView(r)}this.indexTailPages.set(e,o);let c=i(a,0,A,n,s,this.pool.pageScratchpadOffset);if(c===-1){this.pool.pinSlot(r);try{const l=await this.driver.allocateAndPinPage(),u=this.pool.getResidentSlot(l);try{Ss(a,0,l),this.pool.markDirty(r);const g=this.pool.getSlotDataView(u);if(Rs(g,0,0),c=i(g,0,A,n,s,this.pool.pageScratchpadOffset),c===-1)throw new Error("Unexpected error: index entry does not fit in empty page");this.pool.markDirty(u),this.indexTailPages.set(e,l)}finally{this.pool.unpinSlot(u)}}finally{this.pool.unpinSlot(r)}}else this.pool.markDirty(r)}cloneRow(e){const A={};for(const[n,s]of Object.entries(e))A[n]=s instanceof Uint8Array?s.slice():s;return A}valuesEqual(e,A){if(e===A||e==null&&A==null)return!0;if(e instanceof Uint8Array&&A instanceof Uint8Array){if(e.byteLength!==A.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==A[n])return!1;return!0}return typeof e=="number"&&typeof A=="bigint"||typeof e=="bigint"&&typeof A=="number"?BigInt(e)===BigInt(A):typeof e=="boolean"&&typeof A=="number"||typeof e=="number"&&typeof A=="boolean"?Number(e)===Number(A):!1}extractPrimaryKey(e,A){const n=e.columns.filter(s=>(s.flags>.PRIMARY_KEY)!==0);return n.length===1?A[n[0].name]??null:n.length>1?n.map(s=>A[s.name]??null):e.columns.length===1?A[e.columns[0].name]??null:e.columns.map(s=>A[s.name]??null)}serializePkKey(e){const A=n=>n==null?"null":n instanceof Uint8Array?`b:${Array.from(n).join(",")}`:`${typeof n}:${String(n)}`;return Array.isArray(e)?`[${e.map(A).join("|")}]`:e!==null&&typeof e=="object"&&!(e instanceof Uint8Array)?`{${Object.keys(e).sort().map(s=>`${s}:${A(e[s])}`).join("|")}}`:A(e)}buildChangeset(e,A,n,s){const{changeCounter:i,schemaVersion:o}=this.getSyncState(),r=Array.from(new Set(s.map(a=>a.table)));return{txId:e,origin:A,meta:n,changeCounter:i,schemaVersion:o,tables:r,changes:s,coalesced:()=>{const a=new Map;for(const c of s){const l=`${c.table.toLowerCase()}::${this.serializePkKey(c.pk)}`,u=a.get(l);if(!u){a.set(l,{table:c.table,op:c.op,pk:Array.isArray(c.pk)?[...c.pk]:c.pk,oldRow:c.oldRow?this.cloneRow(c.oldRow):void 0,newRow:c.newRow?this.cloneRow(c.newRow):void 0,changedColumns:c.changedColumns?[...c.changedColumns]:void 0});continue}if(u.op==="insert"&&c.op==="update")a.set(l,{table:c.table,op:"insert",pk:Array.isArray(c.pk)?[...c.pk]:c.pk,newRow:c.newRow?this.cloneRow(c.newRow):u.newRow});else if(u.op==="insert"&&c.op==="delete")a.delete(l);else if(u.op==="update"&&c.op==="update"){const g=u.oldRow,E=c.newRow?this.cloneRow(c.newRow):u.newRow,h=Object.keys(E).filter(B=>!this.valuesEqual(g[B],E[B]));a.set(l,{table:c.table,op:"update",pk:Array.isArray(c.pk)?[...c.pk]:c.pk,oldRow:g,newRow:E,changedColumns:h})}else if(u.op==="update"&&c.op==="delete")a.set(l,{table:c.table,op:"delete",pk:Array.isArray(u.pk)?[...u.pk]:u.pk,oldRow:u.oldRow});else if(u.op==="delete"&&c.op==="insert"){const g=u.oldRow,E=c.newRow?this.cloneRow(c.newRow):{},h=Object.keys(E).filter(B=>!this.valuesEqual(g[B],E[B]));a.set(l,{table:c.table,op:"update",pk:Array.isArray(c.pk)?[...c.pk]:c.pk,oldRow:g,newRow:E,changedColumns:h})}else a.set(l,{table:c.table,op:c.op,pk:Array.isArray(c.pk)?[...c.pk]:c.pk,oldRow:c.oldRow?this.cloneRow(c.oldRow):void 0,newRow:c.newRow?this.cloneRow(c.newRow):void 0,changedColumns:c.changedColumns?[...c.changedColumns]:void 0})}return Array.from(a.values())}}}notifySubscriptions(e){if(this.subscriptions.size===0)return;const A=e.origin==="import"||e.tables.includes("*");if(!A&&e.tables.length===0)return;const n=new Set(e.tables.map(s=>s.toLowerCase()));for(const s of this.subscriptions)if(s.tables==="*"||A)s.callback(e);else for(const i of n)if(s.tables.has(i)){s.callback(e);break}}emitCommitAndSubscriptions(e){if(e.changes.length===0)return;for(const i of this.commitHooks)i(e);const A=e.tables,{changeCounter:n,schemaVersion:s}=e;if(this.notifySubscriptions({tables:A,origin:e.origin,meta:e.meta,changeCounter:n,schemaVersion:s,crossTab:!1,changeset:e}),this.broadcastChannel)try{this.broadcastChannel.postMessage({senderId:this.instanceId,tables:A,origin:e.origin,meta:e.meta,changeCounter:n,schemaVersion:s})}catch{}}onBeforeCommit(e){return this.beforeCommitHooks.add(e),()=>{this.beforeCommitHooks.delete(e)}}onCommit(e){return this.commitHooks.add(e),()=>{this.commitHooks.delete(e)}}subscribe(e,A){const n={tables:e==="*"?"*":new Set((Array.isArray(e)?e:[e]).map(s=>s.toLowerCase())),callback:A};return this.subscriptions.add(n),()=>{this.subscriptions.delete(n)}}liveQuery(e,A,n){const s=typeof A=="function",i={db:this,...s?n:A};return s?gi(e,A,i):gi(e,i)}getSyncState(){const e=this.pool.getSlotDataView(0),A=$n(e,!1);return{changeCounter:A.changeCounter,schemaVersion:A.schemaVersion}}validateFilterColumns(e,A){const n=new Set(e.columns.map(o=>o.name)),s=o=>{if(o){if(o.type==="col"&&o.name!=="*"){if(!n.has(o.name))throw new Ze(o.name,e.name)}else if(o.type==="binary")s(o.left),s(o.right);else if(o.type==="fn"&&Array.isArray(o.args))for(const r of o.args)s(r)}},i=o=>{if(o.colName&&!n.has(o.colName))throw new Ze(o.colName,e.name);if(o.expr&&s(o.expr),o.child&&i(o.child),o.children)for(const r of o.children)i(r)};for(const o of A)i(o)}matchesFilter(e,A,n){switch(n.type){case"and":return(n.children??[]).every(s=>this.matchesFilter(e,A,s));case"or":return(n.children??[]).some(s=>this.matchesFilter(e,A,s));case"not":return n.child?!this.matchesFilter(e,A,n.child):!0;case"null":{const s=n.expr?ue(n.expr,A,o=>{var r;return(r=this.getUdf(o))==null?void 0:r.def.call}):A[n.colName],i=s==null;return n.isNull?i:!i}case"in":{const s=n.expr?ue(n.expr,A,r=>{var a;return(a=this.getUdf(r))==null?void 0:a.def.call}):A[n.colName];if(s==null)return!1;const o=(n.values??[]).some(r=>this.valuesEqual(s,r));return n.notIn?!o:o}case"expr":{if(!n.expr)return!0;const s=ue(n.expr,A,i=>{var o;return(o=this.getUdf(i))==null?void 0:o.def.call});return!!s&&s!==0}case"cmp":{const s=n.expr?ue(n.expr,A,r=>{var a;return(a=this.getUdf(r))==null?void 0:a.def.call}):A[n.colName],i=n.value;if(s==null||i===null||i===void 0)return!1;switch(String(n.op??"=").trim().toLowerCase().replace(/\s+/g," ")){case"=":case"==":return this.valuesEqual(s,i);case"!=":case"<>":return!this.valuesEqual(s,i);case"<":return typeof s=="string"&&typeof i=="string"?s<i:Number(s)<Number(i);case"<=":return typeof s=="string"&&typeof i=="string"?s<=i:Number(s)<=Number(i);case">":return typeof s=="string"&&typeof i=="string"?s>i:Number(s)>Number(i);case">=":return typeof s=="string"&&typeof i=="string"?s>=i:Number(s)>=Number(i);case"like":return Zn(String(s),String(i));case"not like":return!Zn(String(s),String(i));case"contains":return String(s).includes(String(i));case"starts_with":return String(s).startsWith(String(i));case"ends_with":return String(s).endsWith(String(i));default:return this.valuesEqual(s,i)}}default:return!0}}matchesFilters(e,A,n){for(const s of n)if(!this.matchesFilter(e,A,s))return!1;return!0}async deleteCellsOnDataPageAndShiftIndexes(e,A,n,s,i){if(s.length===0)return;const o=new Set(s);if(A.length>0){for(const l of s){const u=i[l];if(!u)continue;const g=BigInt(n)<<16n|BigInt(l);for(const E of A){const{keyVal:h,keyType:B}=this.extractIndexKey(e.columns,E,u.row);h!=null&&await this.deleteFromIndex(E.rootPageId,B,h,g)}}let c=0;for(let l=0;l<i.length;l++)if(!o.has(l)){if(c!==l){const u=i[l].row,g=BigInt(n)<<16n|BigInt(l),E=BigInt(n)<<16n|BigInt(c);for(const h of A){const{keyVal:B,keyType:Q}=this.extractIndexKey(e.columns,h,u);B!=null&&(await this.deleteFromIndex(h.rootPageId,Q,B,g),await this.insertIntoIndex(h.rootPageId,Q,B,E))}}c++}}const r=await this.driver.acquirePage(n),a=this.pool.getSlotDataView(r);for(let c=s.length-1;c>=0;c--)Mr(a,0,s[c]);this.pool.markDirty(r)}normalizeWhereOrPkFilters(e,A){if(A!==null&&typeof A=="object"&&!(A instanceof Uint8Array)){const s=[];for(const[i,o]of Object.entries(A))o!==void 0&&(o===null?s.push({type:"null",colName:i,isNull:!0}):s.push({type:"cmp",colName:i,op:"=",value:o}));return s}const n=e.columns.find(s=>(s.flags>.PRIMARY_KEY)!==0);if(!n)throw new Error(`Table "${e.name}" does not have a primary key column for scalar lookup`);return[{type:"cmp",colName:n.name,op:"=",value:A}]}async insert(e,A,n){await this.insertMany(e,[A],n)}async insertMany(e,A,n){if(!(!A||A.length===0)){if(!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0){await this.transaction(async s=>{await s._insertManyInternal(e,A,!0)},n);return}return this.coordinator.leaseQueue.enqueue(async()=>{const s=this.coordinator.isInTransaction(),i=s||this.commitHooks.size>0||this.beforeCommitHooks.size>0||this.subscriptions.size>0,o=await this._insertManyInternal(e,A,i);if(!s){if(o.length>0){const r=this.buildChangeset(this.nextAutoTxId++,(n==null?void 0:n.origin)??"local",n==null?void 0:n.meta,o);this.emitCommitAndSubscriptions(r)}else if(this.broadcastChannel){const{changeCounter:r,schemaVersion:a}=this.getSyncState();try{this.broadcastChannel.postMessage({senderId:this.instanceId,tables:[e],origin:(n==null?void 0:n.origin)??"local",meta:n==null?void 0:n.meta,changeCounter:r,schemaVersion:a})}catch{}}}},this.currentLeaseId??void 0)}}async _insertManyInternal(e,A,n=!0){if(!A||A.length===0)return[];const s=await this._getTableInternal(e),i=this.pool.getSlotDataView(0),o=Xe(i,s.tableId),r=o.filter(N=>(N.flags&(ft.UNIQUE|ft.PRIMARY))!==0),a=s.columns.find(N=>(N.flags>.AUTO_INC)!==0),c=s.columns.filter(N=>(N.flags>.PRIMARY_KEY)!==0&&(N.flags>.AUTO_INC)===0),l=new Set;for(const N of r){let m=this.pool.getResidentSlot(N.rootPageId);m!==-1?this.pool.setRefBit(m,1):m=await this.driver.acquirePage(N.rootPageId);const T=this.pool.getSlotDataView(m);(_t(T,0)>0||jt(T,0)!==0)&&l.add(N.rootPageId)}const u=new Map;for(const N of r)u.set(N.name,new Set);let g=s.autoIncNext;const E=new Array(A.length);for(let N=0;N<A.length;N++){const m=A[N];for(let O=0;O<c.length;O++){const w=c[O].name;if(m[w]===void 0||m[w]===null)throw new Es(w,e)}let T,F;if(n){F={};for(let O=0;O<s.columns.length;O++){const w=s.columns[O].name;F[w]=m[w]!==void 0?m[w]:null}a&&(m[a.name]===void 0||m[a.name]===null)&&(T=Number(g),g+=1n,F[a.name]=T)}else a&&(m[a.name]===void 0||m[a.name]===null)?(T=Number(g),g+=1n,F={...m,[a.name]:T}):F=m;for(let O=0;O<r.length;O++){const w=r[O],{keyVal:P,keyType:I}=this.extractIndexKey(s.columns,w,F);if(P!=null){const b=P instanceof Uint8Array?Array.from(P).join(","):P,H=u.get(w.name);if(H.has(b))throw new WA(`Duplicate key value violates unique constraint "${w.name}" on table "${e}"`);if(H.add(b),l.has(w.rootPageId)&&await this.probeIndexUnique(w.rootPageId,I,P))throw new WA(`Duplicate key value violates unique constraint "${w.name}" on table "${e}"`)}}const D=to(s.columns,F);E[N]={row:m,effectiveRow:F,rowBytes:D,assignedAutoInc:T}}s.autoIncNext=g;let h=this.tableTailPages.get(e)??s.rootPageId,B=this.pool.getResidentSlot(h);B!==-1?this.pool.setRefBit(B,1):B=await this.driver.acquirePage(h);let Q=this.pool.getSlotDataView(B);for(;;){const N=jt(Q,0);if(N===0)break;h=N,B=this.pool.getResidentSlot(h),B!==-1?this.pool.setRefBit(B,1):B=await this.driver.acquirePage(h),Q=this.pool.getSlotDataView(B)}this.tableTailPages.set(e,h);const d=[],p=this.wasmCore?this.wasmCore.page_insert_row:Pn;for(let N=0;N<E.length;N++){const{row:m,effectiveRow:T,rowBytes:F,assignedAutoInc:D}=E[N];a&&D!==void 0&&(m[a.name]=D),B=this.pool.getResidentSlot(h),B!==-1?this.pool.setRefBit(B,1):B=await this.driver.acquirePage(h),Q=this.pool.getSlotDataView(B);let O=h,w=p(Q,0,F,this.pool.pageScratchpadOffset);if(w===-1){const I=B;this.pool.pinSlot(I);try{const b=await this.driver.allocateAndPinPage(),H=this.pool.getResidentSlot(b);try{Ss(Q,0,b),this.pool.markDirty(I);const J=this.pool.getSlotDataView(H);if(w=p(J,0,F,this.pool.pageScratchpadOffset),w===-1)throw new Error("Unexpected error: row does not fit in empty page");this.pool.markDirty(H),h=b,O=b,B=H,Q=J,this.tableTailPages.set(e,b)}finally{this.pool.unpinSlot(H)}}finally{this.pool.unpinSlot(I)}}else this.pool.markDirty(B);const P=BigInt(O)<<16n|BigInt(w);for(let I=0;I<o.length;I++){const b=o[I],{keyVal:H,keyType:J}=this.extractIndexKey(s.columns,b,T);H!=null&&await this.insertIntoIndex(b.rootPageId,J,H,P)}if(n){const I={table:s.name,op:"insert",pk:this.extractPrimaryKey(s,T),newRow:this.cloneRow(T)};d.push(I),this.coordinator.isInTransaction()&&this.activeTxChanges.push(I)}}const U=Se(i,e);if(U!==-1){const N=Ee(i,U);N.rowCountEstimate+=A.length,a&&(N.autoIncNext=s.autoIncNext),VA(i,U,N),Ve(i),Te(i),this.pool.markDirty(0)}return this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),d}async update(e,A,n,s){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(i=>i.update(e,A,n,s),s):this.coordinator.leaseQueue.enqueue(async()=>{const i=await this._getTableInternal(e),o=this.normalizeWhereOrPkFilters(i,A),r=this.coordinator.isInTransaction(),{count:a,changes:c}=await this._executeUpdateInternal(e,o,n);if(!r&&c.length>0){const l=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,c);this.emitCommitAndSubscriptions(l)}return a},this.currentLeaseId??void 0)}async executeUpdate(e,A,n,s){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(i=>i.executeUpdate(e,A,n,s),s):this.coordinator.leaseQueue.enqueue(async()=>{const i=this.coordinator.isInTransaction(),{count:o,changes:r}=await this._executeUpdateInternal(e,A,n);if(!i&&r.length>0){const a=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,r);this.emitCommitAndSubscriptions(a)}return o},this.currentLeaseId??void 0)}async _executeUpdateInternal(e,A,n){const s=await this._getTableInternal(e);this.validateFilterColumns(s,A);const i=new Map(s.columns.map(B=>[B.name,B]));for(const B of Object.keys(n))if(!i.has(B))throw new Ze(B,e);const o=this.pool.getSlotDataView(0),r=Xe(o,s.tableId),a=r.filter(B=>(B.flags&(ft.UNIQUE|ft.PRIMARY))!==0),c=[],l=new Set;let u=0,g=s.rootPageId;for(;g!==0;){const B=await this.driver.acquirePage(g),Q=this.pool.getSlotDataView(B),d=_t(Q,0),p=jt(Q,0),U=[],N=[];for(let m=0;m<d;m++){const T=Et(Q,0,m),F=qA(s.columns,Q,T);if(U.push({cellIdx:m,row:F}),this.matchesFilters(s,F,A)){const D={...F};for(const[P,I]of Object.entries(n))I!==void 0&&(D[P]=I);for(const P of s.columns)if(P.flags>.PRIMARY_KEY&&(D[P.name]===null||D[P.name]===void 0))throw new Es(P.name,e);const O=s.columns.map(P=>P.name).filter(P=>!this.valuesEqual(F[P],D[P])),w=to(s.columns,D);N.push({cellIdx:m,oldRow:F,newRow:D,changedColumns:O,newRowBytes:w}),l.add(BigInt(g)<<16n|BigInt(m)),u++}}N.length>0&&c.push({pageId:g,allCells:U,matches:N}),g=p}if(u===0)return{count:0,changes:[]};for(const B of a){const Q=new Set;for(const d of c)for(const p of d.matches){const{keyVal:U,keyType:N}=this.extractIndexKey(s.columns,B,p.newRow);if(U!=null){const m=U instanceof Uint8Array?Array.from(U).join(","):U;if(Q.has(m))throw new WA(`Duplicate key value violates unique constraint "${B.name}" on table "${e}"`);if(Q.add(m),await this.probeIndexUnique(B.rootPageId,N,U,l))throw new WA(`Duplicate key value violates unique constraint "${B.name}" on table "${e}"`)}}}const E=[],h=[];for(const B of c){const Q=[];for(const d of B.matches){const p=await this.driver.acquirePage(B.pageId),U=this.pool.getSlotDataView(p);if(vi(U,0,d.cellIdx,d.newRowBytes,this.pool.pageScratchpadOffset)){this.pool.markDirty(p),B.allCells[d.cellIdx].row=d.newRow;const m=BigInt(B.pageId)<<16n|BigInt(d.cellIdx);for(const F of r){const D=this.extractIndexKey(s.columns,F,d.oldRow),O=this.extractIndexKey(s.columns,F,d.newRow);this.valuesEqual(D.keyVal,O.keyVal)||(D.keyVal!==void 0&&D.keyVal!==null&&await this.deleteFromIndex(F.rootPageId,D.keyType,D.keyVal,m),O.keyVal!==void 0&&O.keyVal!==null&&await this.insertIntoIndex(F.rootPageId,O.keyType,O.keyVal,m))}const T={table:s.name,op:"update",pk:this.extractPrimaryKey(s,d.newRow),oldRow:this.cloneRow(d.oldRow),newRow:this.cloneRow(d.newRow),changedColumns:d.changedColumns};E.push(T),this.coordinator.isInTransaction()&&this.activeTxChanges.push(T)}else Q.push(d.cellIdx),h.push(d)}Q.length>0&&await this.deleteCellsOnDataPageAndShiftIndexes(s,r,B.pageId,Q,B.allCells)}if(h.length>0){let B=this.tableTailPages.get(e)??s.rootPageId,Q=await this.driver.acquirePage(B),d=this.pool.getSlotDataView(Q);for(;;){const p=jt(d,0);if(p===0)break;B=p,Q=await this.driver.acquirePage(B),d=this.pool.getSlotDataView(Q)}this.tableTailPages.set(e,B);for(const p of h){Q=await this.driver.acquirePage(B),d=this.pool.getSlotDataView(Q);let U=B,N=Pn(d,0,p.newRowBytes,this.pool.pageScratchpadOffset);if(N===-1){const F=Q;this.pool.pinSlot(F);try{const D=await this.driver.allocateAndPinPage(),O=this.pool.getResidentSlot(D);try{Ss(d,0,D),this.pool.markDirty(F);const w=this.pool.getSlotDataView(O);N=Pn(w,0,p.newRowBytes,this.pool.pageScratchpadOffset),this.pool.markDirty(O),B=D,U=D,this.tableTailPages.set(e,D)}finally{this.pool.unpinSlot(O)}}finally{this.pool.unpinSlot(F)}}else this.pool.markDirty(Q);const m=BigInt(U)<<16n|BigInt(N);for(const F of r){const{keyVal:D,keyType:O}=this.extractIndexKey(s.columns,F,p.newRow);D!=null&&await this.insertIntoIndex(F.rootPageId,O,D,m)}const T={table:s.name,op:"update",pk:this.extractPrimaryKey(s,p.newRow),oldRow:this.cloneRow(p.oldRow),newRow:this.cloneRow(p.newRow),changedColumns:p.changedColumns};E.push(T),this.coordinator.isInTransaction()&&this.activeTxChanges.push(T)}}return Ve(o),Te(o),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),{count:u,changes:E}}async delete(e,A,n){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(s=>s.delete(e,A,n),n):this.coordinator.leaseQueue.enqueue(async()=>{const s=await this._getTableInternal(e),i=this.normalizeWhereOrPkFilters(s,A),o=this.coordinator.isInTransaction(),{count:r,changes:a}=await this._executeDeleteInternal(e,i);if(!o&&a.length>0){const c=this.buildChangeset(this.nextAutoTxId++,(n==null?void 0:n.origin)??"local",n==null?void 0:n.meta,a);this.emitCommitAndSubscriptions(c)}return r},this.currentLeaseId??void 0)}async executeDelete(e,A,n){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(s=>s.executeDelete(e,A,n),n):this.coordinator.leaseQueue.enqueue(async()=>{const s=this.coordinator.isInTransaction(),{count:i,changes:o}=await this._executeDeleteInternal(e,A);if(!s&&o.length>0){const r=this.buildChangeset(this.nextAutoTxId++,(n==null?void 0:n.origin)??"local",n==null?void 0:n.meta,o);this.emitCommitAndSubscriptions(r)}return i},this.currentLeaseId??void 0)}async _executeDeleteInternal(e,A){const n=await this._getTableInternal(e);this.validateFilterColumns(n,A);const s=this.pool.getSlotDataView(0),i=Xe(s,n.tableId),o=[];let r=0,a=n.rootPageId;for(;a!==0;){const l=await this.driver.acquirePage(a),u=this.pool.getSlotDataView(l),g=_t(u,0),E=jt(u,0);if(g>0){const h=[],B=[];for(let Q=0;Q<g;Q++){const d=Et(u,0,Q),p=qA(n.columns,u,d);if(h.push({cellIdx:Q,row:p}),this.matchesFilters(n,p,A)){B.push(Q);const U={table:n.name,op:"delete",pk:this.extractPrimaryKey(n,p),oldRow:this.cloneRow(p)};o.push(U),this.coordinator.isInTransaction()&&this.activeTxChanges.push(U)}}B.length>0&&(r+=B.length,await this.deleteCellsOnDataPageAndShiftIndexes(n,i,a,B,h))}a=E}if(r===0)return{count:0,changes:[]};const c=Se(s,e);if(c!==-1){const l=Ee(s,c);l.rowCountEstimate=Math.max(0,l.rowCountEstimate-r),VA(s,c,l)}return Ve(s),Te(s),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),{count:r,changes:o}}async upsert(e,A,n){const s=await this.upsertMany(e,[A],n);return s.inserted>0?"inserted":s.updated>0?"updated":"ignored"}async upsertMany(e,A,n){return!A||A.length===0?{inserted:0,updated:0,ignored:0}:!this.coordinator.isInTransaction()&&(this.beforeCommitHooks.size>0||A.length>1)?this.transaction(s=>s._upsertManyInLease(e,A,n),n):this.coordinator.leaseQueue.enqueue(async()=>{const s=this.coordinator.isInTransaction(),i=[],o=await this._upsertManyInLease(e,A,n,s?void 0:i);if(!s&&i.length>0){const r=this.buildChangeset(this.nextAutoTxId++,(n==null?void 0:n.origin)??"local",n==null?void 0:n.meta,i);this.emitCommitAndSubscriptions(r)}return o},this.currentLeaseId??void 0)}async _upsertManyInLease(e,A,n,s){const i=await this._getTableInternal(e),o=new Set(i.columns.map(g=>g.name));let r;if(n!=null&&n.conflictTarget){r=Array.isArray(n.conflictTarget)?n.conflictTarget:[n.conflictTarget];for(const g of r)if(!o.has(g))throw new Ze(g,e)}else if(r=i.columns.filter(g=>(g.flags>.PRIMARY_KEY)!==0).map(g=>g.name),r.length===0)throw new Error(`Cannot upsert on table "${e}" without a primary key or explicit conflictTarget`);const a=(n==null?void 0:n.mode)??"merge";let c=0,l=0,u=0;for(const g of A){for(const Q of Object.keys(g))if(!o.has(Q))throw new Ze(Q,e);const E=r.every(Q=>g[Q]!==void 0&&g[Q]!==null);let h=null,B=[];if(E&&(B=r.map(Q=>({type:"cmp",colName:Q,op:"=",value:g[Q]})),h=await this.findFirstMatchingRow(i,B)),h){if(a==="ignore"){u++;continue}if(n!=null&&n.where&&!n.where(this.cloneRow(h),this.cloneRow(g))){u++;continue}const Q={};if(a==="replace")for(const p of i.columns)g[p.name]!==void 0?Q[p.name]=g[p.name]:p.flags>.PRIMARY_KEY?Q[p.name]=h[p.name]:Q[p.name]=null;else for(const[p,U]of Object.entries(g))U!==void 0&&(Q[p]=U);const{changes:d}=await this._executeUpdateInternal(e,B,Q);s&&s.push(...d),l++}else{const Q=await this._insertManyInternal(e,[g],!0);s&&s.push(...Q),c++}}return{inserted:c,updated:l,ignored:u}}async findFirstMatchingRow(e,A){let n=e.rootPageId;for(;n!==0;){const s=await this.driver.acquirePage(n),i=this.pool.getSlotDataView(s),o=_t(i,0),r=jt(i,0);for(let a=0;a<o;a++){const c=Et(i,0,a),l=qA(e.columns,i,c);if(this.matchesFilters(e,l,A))return l}n=r}return null}async transaction(e,A){const n=await this.coordinator.begin(),s=n.leaseId;this.activeTxChanges=[],this.activeTxOrigin=(A==null?void 0:A.origin)??"local",this.activeTxMeta=A==null?void 0:A.meta,this.activeTxId=n.txId;const i=new Proxy(this,{get:(o,r,a)=>{if(r==="currentLeaseId")return s;if(r==="transaction")return async(l,u)=>{const g=await this.coordinator.captureSavepoint(),E=this.activeTxChanges.length;try{return await l(i)}catch(h){throw this.activeTxChanges.length=E,this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.restoreSavepoint(g),h}};if(r==="checkpoint")return()=>this.checkpoint();if(r==="from")return l=>{const u=new oe(i,l);return o.planner&&u.withPlanner(o.planner),u};const c=Reflect.get(o,r,a);return typeof c=="function"?c.bind(i):c}});try{const o=await e(i);if(this.activeTxChanges.length>0&&this.beforeCommitHooks.size>0&&!this.isRunningBeforeCommit){const u=this.buildChangeset(this.activeTxId,this.activeTxOrigin,this.activeTxMeta,[...this.activeTxChanges]);this.isRunningBeforeCommit=!0;try{for(const g of this.beforeCommitHooks)await g(u,i)}finally{this.isRunningBeforeCommit=!1}}const r=[...this.activeTxChanges],a=this.activeTxOrigin,c=this.activeTxMeta,l=this.activeTxId;if(this.activeTxChanges=[],this.activeTxOrigin="local",this.activeTxMeta=void 0,await this.coordinator.commit(s),r.length>0){const u=this.buildChangeset(l,a,c,r);this.emitCommitAndSubscriptions(u)}return o}catch(o){throw this.activeTxChanges=[],this.activeTxOrigin="local",this.activeTxMeta=void 0,this.isRunningBeforeCommit=!1,this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.rollback(s),o}}registerFunction(e,A){const n=e.toLowerCase(),s=typeof A=="function"?{call:A}:{...A};if(!s.returnType)try{const o=s.call(1,1,1,1,1);typeof o=="number"?s.returnType=Number.isInteger(o)?_.INT32:_.FLOAT64:typeof o=="string"&&(s.returnType=_.TEXT)}catch{try{const o=s.call("","","","","");typeof o=="number"?s.returnType=Number.isInteger(o)?_.INT32:_.FLOAT64:typeof o=="string"&&(s.returnType=_.TEXT)}catch{}}let i=this.udfs.get(n);return i?i.def=s:(i={id:this.nextUdfId++,def:s},this.udfs.set(n,i)),this}getUdf(e){return this.udfs.get(e.toLowerCase())}getUdfMap(){const e=new Map;for(const[A,n]of this.udfs.entries())e.set(A,n.id);return e}getUdfDefs(){const e=new Map;for(const[A,n]of this.udfs.entries())e.set(A,n.def);return e}from(e){const A=new oe(this,e);return we(this,A.getReferencedTables()),A}async explainQuery(e,A,n){return this.coordinator.leaseQueue.enqueue(()=>this._explainQueryInternal(e,A,n),this.currentLeaseId??void 0)}async _explainQueryInternal(e,A,n){var Q,d,p;const s=await this._getTableInternal(e),i=[];if(n!=null&&n.joins&&n.joins.length>0){if(1+n.joins.length>16)throw new hs(1+n.joins.length,16);for(let U=0;U<n.joins.length;U++){const N=n.joins[U],m=await this._getTableInternal(N.table);i.push({type:N.type,table:m,cursor:U+1,leftCol:N.leftCol,op:N.op,rightCol:N.rightCol})}}const o=xo({table:s,joinedTables:i.length>0?i:void 0,filters:A,orderBy:n==null?void 0:n.orderBy,groupBy:n==null?void 0:n.groupBy,aggregates:n==null?void 0:n.aggregates,having:n==null?void 0:n.having,selectExprs:n==null?void 0:n.selectExprs,udfNameMap:this.getUdfMap(),udfDefs:this.getUdfDefs(),limit:n==null?void 0:n.limit,offset:n==null?void 0:n.offset,planner:(n==null?void 0:n.planner)??this.planner}),a=(o.allTables??(i.length>0?[s,...i.map(U=>U.table)]:[s]))[0],c=Ec(o,a),l=Ic(c),u=o.indexScan??o.table0Scan,g=u?"IndexScan":"TableScan",E=u?u.index.name:void 0,h=o.joinedTableScans,B=(Q=n==null?void 0:n.joins)==null?void 0:Q.map(U=>{const N=h==null?void 0:h.find(m=>m.tableName.toLowerCase()===U.table.toLowerCase());return N&&N.scanType==="IndexScan"?{...U,scanType:N.scanType,indexName:N.indexName}:U});return{plan:{table:a.name,rootPageId:a.rootPageId,scanType:g,indexName:E,filters:A,orderBy:n==null?void 0:n.orderBy,groupBy:n==null?void 0:n.groupBy,aggregates:n==null?void 0:n.aggregates,having:n==null?void 0:n.having,select:n==null?void 0:n.select,joins:B,limit:n==null?void 0:n.limit,offset:n==null?void 0:n.offset,estimatedCost:o.estimatedCost,estimatedRows:o.estimatedRows,joinOrder:o.joinOrder,isOrderSatisfied:o.isOrderSatisfied??((d=o.planMetrics)==null?void 0:d.isOrderSatisfied)??!1,sortCostAvoided:((p=o.planMetrics)==null?void 0:p.sortCostAvoided)??void 0},bytecodeSize:o.byteLength,instructions:c,assembly:l}}executeQuery(e,A,n){const s=un(),i=[e,...n.joins?n.joins.map(r=>r.table):[]];we(this,i);const o=this.coordinator.leaseQueue.enqueue(()=>this._executeQueryInternal(e,A,n),this.currentLeaseId??void 0);return gn(o,s)}async _executeQueryInternal(e,A,n){var Q;const s=await this._getTableInternal(e),i=[],o=[];if(n.joins&&n.joins.length>0){if(1+n.joins.length>16)throw new hs(1+n.joins.length,16);for(let d=0;d<n.joins.length;d++){const p=n.joins[d],U=await this._getTableInternal(p.table);i.push(U),o.push({type:p.type,table:U,cursor:d+1,leftCol:p.leftCol,op:p.op,rightCol:p.rightCol})}}let r=n.orderBy;!r&&n.sortCol&&(r=[{colName:n.sortCol,direction:n.sortDir}]);const a=this.udfs.size>0,c={table:s,joinedTables:o.length>0?o:void 0,filters:A,orderBy:r,groupBy:n.groupBy,aggregates:n.aggregates,having:n.having,selectExprs:n.selectExprs,udfNameMap:a?this.getUdfMap():void 0,udfDefs:a?this.getUdfDefs():void 0,limit:n.limit!==null?n.limit:void 0,offset:n.offset!==null?n.offset:void 0,planner:n.planner??this.planner},l=xo(c),u=l.allTables??[s,...i];hr(this.vmCtx,u[0],u),l.inSets&&(this.vmCtx.inSets=l.inSets);const g=l.keyInfos??c.keyInfos;if(g&&(this.vmCtx.keyInfos=g),a){const d={};for(const p of this.udfs.values())d[p.id]=p.def.call;this.vmCtx.udfs=d}else this.vmCtx.udfs=void 0;let E=l.outputColumns??c.outputColumns??s.columns;if(c.aggregates&&c.aggregates.length>0||c.groupBy&&c.groupBy.length>0)if(l.outputColumns)E=l.outputColumns;else{E=[];const d=c.groupBy??[];for(const p of d){const U=typeof p=="string"?p:p.colName??(p.expr?le(p.expr):"group_key"),N=s.columns.find(m=>m.name===U);N?E.push(N):E.push({name:U,type:_.TEXT,flags:gt.NONE,colOffset:0})}for(let p=0;p<(((Q=c.aggregates)==null?void 0:Q.length)??0);p++){const U=c.aggregates[p],N=U.alias??(U.colName?`${U.func}_${U.colName}`:U.func),m=U.func==="count"?_.INT32:_.FLOAT64;E.push({name:N,type:m,flags:gt.NONE,colOffset:0})}}this.vmCtx.outputColumns=E;const h=[],B=this.wasmCore?this.wasmCore.vm_step:Ai;for(;;){const d=B(this.vmCtx,this.pool.view,l);let p=0;for(let U=0;U<this.vmCtx.resultCount;U++){const N=this.pool.view.getUint16(_e+p,!0),m=_e+p+2,T=qA(E,this.pool.view,m);h.push(T),p+=2+N}if(d===L.DONE)break;if(d===L.BUFFER_FULL)this.vmCtx.resultOffset=0,this.vmCtx.resultCount=0,this.vmCtx.status=L.RUNNING;else if(d===L.PAGE_FAULT){this.vmCtx.resultOffset=0,this.vmCtx.resultCount=0;const U=[],N=this.vmCtx.cursors??[this.vmCtx.cursor];for(const m of N)if(m&&m.pageId>1){const T=this.pool.getResidentSlot(m.pageId);T>0&&(this.pool.pinSlot(T),U.push(T))}try{await this.driver.acquirePage(this.vmCtx.fault_page_id)}finally{for(const m of U)this.pool.unpinSlot(m)}this.vmCtx.status=L.RUNNING}else throw d===L.ARENA_EXHAUSTED?(this.vmCtx.arenaOffset=0,new xi):d===L.TIMEOUT?new mr:d===L.INVALID_BYTECODE?new yr:new Error(`VM execution error: status=${d}`)}return Object.defineProperty(h,"isOrderSatisfied",{value:l.isOrderSatisfied??!1,writable:!0,enumerable:!1,configurable:!0}),h}async checkpoint(){return this.coordinator.checkpoint()}async exportBinary(){return this.coordinator.leaseQueue.enqueue(async()=>{this.coordinator.isInTransaction()||(await this.coordinator.executeCheckpoint(),await this.driver.flushAllDirty());const e=this.pool.getSlotDataView(0),A=Pa(e),n=new Uint8Array(A*4096);n.set(this.pool.getPageBytesInSlot(0),0);const s=new DataView(n.buffer,n.byteOffset,4096);Te(s,0);const i=[];for(let a=2;a<=A;a++)this.pool.getResidentSlot(a)===-1&&!this.coordinator.hasSpilledPage(a)&&i.push(a);const o=i.length>0?await this.vfs.readPages(i):[],r=new Map;for(let a=0;a<i.length;a++)r.set(i[a],o[a]??null);for(let a=2;a<=A;a++){const c=(a-1)*4096,l=n.subarray(c,c+4096),u=this.pool.getResidentSlot(a);if(u!==-1)l.set(this.pool.getPageBytesInSlot(u));else if(this.coordinator.hasSpilledPage(a))l.set(this.coordinator.getSpilledPage(a));else{const E=r.get(a);E&&l.set(E)}const g=fA(l);new DataView(l.buffer,l.byteOffset,4096).setUint32(12,g,!0)}return n},this.currentLeaseId??void 0)}async importBinary(e){if(this.coordinator.isInTransaction())throw new Error("Cannot import binary database while a transaction is active");return this.coordinator.leaseQueue.enqueue(async()=>{var E,h;const A=e instanceof Uint8Array?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e);if(A.byteLength<4096||A.byteLength%4096!==0)throw new Nn(`Invalid database binary size (${A.byteLength} bytes): must be a non-zero multiple of 4096 bytes`);const n=A.byteLength/4096,s=A.subarray(0,4096),i=new DataView(s.buffer,s.byteOffset,4096),o=$n(i,!0);if(o.pageSize!==4096)throw new Nn(`Invalid database page size ${o.pageSize} (expected 4096)`);if(o.totalPages!==n)throw new Nn(`Database page count mismatch: header specifies ${o.totalPages} pages, but binary image contains ${n} pages`);for(let B=2;B<=n;B++){const Q=(B-1)*4096,d=A.subarray(Q,Q+4096),U=new DataView(d.buffer,d.byteOffset,4096).getUint32(12,!0);if(U!==0){const N=fA(d);if(N!==U)throw new hA(B,U,N)}}const r=this.pool.getSlotDataView(0),a=UA(r).map(B=>B.name),c=[];for(let B=1;B<=n;B++){const Q=(B-1)*4096;c.push({pageId:B,data:A.subarray(Q,Q+4096).slice()})}for(let B=1;B<this.pool.slotCount;B++)this.pool.forceUnpinSlot(B),this.pool.unassignSlot(B),this.pool.clearDirty(B),this.pool.getPageBytesInSlot(B).fill(0);this.pool.getPageBytesInSlot(0).set(c[0].data),this.pool.clearDirty(0),await this.vfs.writePages(c),await((h=(E=this.vfs).flush)==null?void 0:h.call(E)),await this.coordinator.resetWalAfterImport(),this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),this.vmCtx.table=null,await En.pinAllCatalogPages(this.driver);const l=this.pool.getSlotDataView(0),u=UA(l).map(B=>B.name),g=Array.from(new Set([...a,...u]));if(this.notifySubscriptions({tables:g,origin:"import",changeCounter:o.changeCounter,schemaVersion:o.schemaVersion,crossTab:!1}),this.broadcastChannel)try{this.broadcastChannel.postMessage({senderId:this.instanceId,tables:g,origin:"import",changeCounter:o.changeCounter,schemaVersion:o.schemaVersion})}catch{}})}async close(){var e,A;this.broadcastChannel&&(this.broadcastChannel.close(),this.broadcastChannel=null),this.beforeCommitHooks.clear(),this.commitHooks.clear(),this.subscriptions.clear(),await this.coordinator.close(),await this.driver.flushAllDirty(),await((A=(e=this.vfs).close)==null?void 0:A.call(e))}}f.ALIGNMENT_PADDING_OFFSET=pl,f.ALIGNMENT_PADDING_SIZE=or,f.AggregateNotAllowedInWhereError=fs,f.BUILTIN_AGGREGATES=va,f.BUILTIN_SCALARS=tc,f.BYTECODE_OFFSET=zt,f.BYTECODE_SIZE=sr,f.BufferPoolDriver=ja,f.BytecodeEmitter=ai,f.CATALOG_PAGE_HEADER_FIELDS=ol,f.CATALOG_PAGE_HEADER_OFFSET_COL_COUNT_IN_PAGE=cl,f.CATALOG_PAGE_HEADER_OFFSET_FLAGS=al,f.CATALOG_PAGE_HEADER_OFFSET_NEXT_COL_CATALOG_PAGE_ID=gl,f.CATALOG_PAGE_HEADER_OFFSET_PAGE_CHECKSUM=El,f.CATALOG_PAGE_HEADER_OFFSET_PAGE_TYPE=rl,f.CATALOG_PAGE_HEADER_OFFSET_START_COL_INDEX=ul,f.CATALOG_PAGE_HEADER_OFFSET_TABLE_ID=ll,f.CATALOG_PAGE_HEADER_SIZE=dn,f.COLUMN_META_FIELDS=Il,f.COLUMN_META_OFFSET_COL_OFFSET=fl,f.COLUMN_META_OFFSET_FLAGS=hl,f.COLUMN_META_OFFSET_NAME=Cl,f.COLUMN_META_OFFSET_RESERVED=Ql,f.COLUMN_META_OFFSET_TYPE=Bl,f.COLUMN_META_SIZE=di,f.COST_INDEX_NEXT=si,f.COST_INDEX_SEEK=rn,f.COST_ROW_EVAL=nA,f.CURRENT_ENGINE_VERSION=us,f.CURRENT_MIN_READ_VERSION=ur,f.CannotDropColumnError=Hi,f.ColumnAlreadyExistsError=Is,f.ColumnFlag=gt,f.ColumnNotFoundError=Ze,f.CorruptPageError=hA,f.CorruptWalFrameError=Rn,f.CorruptWalHeaderError=Cs,f.CostBasedPlanner=ri,f.CostBasedQueryPlanner=ag,f.CustomOrderPlanner=ig,f.CustomPlanner=ac,f.CustomQueryPlanner=og,f.DEFAULT_BUFFER_POOL_REGIONS=yl,f.DEFAULT_CACHE_SIZE_BYTES=dl,f.DEFAULT_MAX_QUERY_MEMORY=IA,f.DEFAULT_PAGE_SLOTS=_l,f.DEFAULT_PAGE_TO_SLOT_BUCKETS=Ie,f.DEFAULT_SLOT_COUNT=PA,f.DIRTY_MASK_OFFSET=rr,f.DataType=_,f.DefaultQueryPlanner=rg,f.ExclusiveLeaseQueue=$a,f.ExpressionBuilder=dt,f.FILE_HEADER_SIZE=Lc,f.HEADER_OFFSET_CHANGE_COUNTER=aA,f.HEADER_OFFSET_FILE_FORMAT_VERSION=fi,f.HEADER_OFFSET_FREE_PAGE_HEAD=We,f.HEADER_OFFSET_MAGIC=oA,f.HEADER_OFFSET_MIN_READ_VERSION=Ci,f.HEADER_OFFSET_NEXT_CATALOG_PAGE_ID=bA,f.HEADER_OFFSET_NEXT_INDEX_CATALOG_PAGE_ID=OA,f.HEADER_OFFSET_PAGE_CHECKSUM=cA,f.HEADER_OFFSET_PAGE_SIZE=hi,f.HEADER_OFFSET_RESERVED=bc,f.HEADER_OFFSET_SCHEMA_VERSION=rA,f.HEADER_OFFSET_TOTAL_PAGES=qe,f.HeuristicPlanner=oc,f.HeuristicQueryPlanner=cg,f.INDEX_CATALOG_OFFSET=ss,f.INDEX_DESCRIPTOR_FIELDS=jc,f.INDEX_DESCRIPTOR_OFFSET_COLUMN_COUNT=tl,f.INDEX_DESCRIPTOR_OFFSET_COLUMN_INDICES=Al,f.INDEX_DESCRIPTOR_OFFSET_COL_DIRECTIONS=nl,f.INDEX_DESCRIPTOR_OFFSET_FLAGS=el,f.INDEX_DESCRIPTOR_OFFSET_INDEX_ID=$c,f.INDEX_DESCRIPTOR_OFFSET_NAME=sl,f.INDEX_DESCRIPTOR_OFFSET_RESERVED=il,f.INDEX_DESCRIPTOR_OFFSET_ROOT_PAGE_ID=vc,f.INDEX_DESCRIPTOR_OFFSET_TABLE_ID=zc,f.INDEX_DESCRIPTOR_SIZE=gA,f.IdentifierTooLongError=fr,f.IndexAlreadyExistsError=Yi,f.IndexFlag=ft,f.IndexNotFoundError=Cr,f.IndexedDbVfsAdapter=Sr,f.InvalidBytecodeError=yr,f.InvalidDatabaseError=Nn,f.Io=Ki,f.MASTER_TABLE_OFFSET=ns,f.MAX_COLUMNS_PER_CATALOG_PAGE=lA,f.MAX_COLUMNS_PER_TABLE=Ke,f.MAX_CURSORS_PER_FRAME=Dl,f.MAX_DESCRIPTORS_PER_OVERFLOW_PAGE=YA,f.MAX_INDEXES_PAGE1=Qi,f.MAX_INDEXES_SYSPAGE=Pc,f.MAX_IN_LIST_SIZE=ae,f.MAX_NAME_LENGTH=ke,f.MAX_REGISTERS_PER_FRAME=Rl,f.MAX_ROW_SIZE=2048,f.MAX_SUBQUERY_DEPTH=Fl,f.MAX_TABLES_PAGE1=Le,f.MAX_TABLES_SYSPAGE=Oc,f.MAX_TABLE_INTERIOR_CELLS=er,f.MAX_TOPK_HEAP_LIMIT=Er,f.MemoryVfsAdapter=Tr,f.NEXT_DESCRIPTOR_CATALOG_PAGE_OFFSET=Gc,f.NEXT_DESCRIPTOR_CATALOG_PAGE_SIZE=wc,f.NoOpPlanner=rc,f.NoOpQueryPlanner=lg,f.NotNullConstraintError=Es,f.OpCode=C,f.OpfsVfsAdapter=Nr,f.PAGE_HEADER_OFFSET_CELL_COUNT=Uc,f.PAGE_HEADER_OFFSET_CHECKSUM=LA,f.PAGE_HEADER_OFFSET_CONTENT_OFFSET=Tc,f.PAGE_HEADER_OFFSET_FLAGS=pc,f.PAGE_HEADER_OFFSET_FREE_BYTES=Sc,f.PAGE_HEADER_OFFSET_NEXT_PAGE_ID=vo,f.PAGE_HEADER_OFFSET_TYPE=zo,f.PAGE_HEADER_SIZE=Fe,f.PAGE_SCRATCHPAD_OFFSET=_i,f.PAGE_SCRATCHPAD_SIZE=ir,f.PAGE_SIZE=4096,f.PAGE_TO_SLOT_BUCKET_SIZE=EA,f.PAGE_TO_SLOT_OFFSET=Be,f.PAGE_TO_SLOT_SIZE=ml,f.PAGE_TYPE_CATALOG_PAGE=Un,f.PAGE_TYPE_FREE=wA,f.PAGE_TYPE_INDEX_INTERIOR=gr,f.PAGE_TYPE_INDEX_LEAF=pn,f.PAGE_TYPE_LEAF_DATA=gs,f.PAGE_TYPE_TABLE_INTERIOR=qi,f.QueryArenaExhaustedError=xi,f.QueryBuilder=oe,f.QueryTimeoutError=mr,f.RESULT_BUFFER_OFFSET=_e,f.RESULT_BUFFER_SIZE=is,f.RowSizeLimitExceededError=Mi,f.SLOTTED_PAGE_HEADER_FIELDS=yc,f.SLOT_TO_PAGE_OFFSET=os,f.SYSPAGE_FILE_HEADER_FIELDS=Fc,f.SYSPAGE_RESERVED_OFFSET=kc,f.SYSPAGE_RESERVED_SIZE=qc,f.SubqueryNestingTooDeepError=_r,f.TABLE_DESCRIPTOR_FIELDS=Mc,f.TABLE_DESCRIPTOR_OFFSET_AUTO_INC_NEXT=Kc,f.TABLE_DESCRIPTOR_OFFSET_COLUMN_COUNT=Yc,f.TABLE_DESCRIPTOR_OFFSET_COL_CATALOG_PAGE_ID=xc,f.TABLE_DESCRIPTOR_OFFSET_FLAGS=Jc,f.TABLE_DESCRIPTOR_OFFSET_NAME=Xc,f.TABLE_DESCRIPTOR_OFFSET_RESERVED=Zc,f.TABLE_DESCRIPTOR_OFFSET_ROOT_PAGE_ID=Vc,f.TABLE_DESCRIPTOR_OFFSET_ROW_COUNT_ESTIMATE=Wc,f.TABLE_DESCRIPTOR_OFFSET_TABLE_ID=Hc,f.TABLE_DESCRIPTOR_SIZE=uA,f.TABLE_INTERIOR_CELL_FIELDS=Nc,f.TABLE_INTERIOR_CELL_OFFSET_CHILD_PAGE_ID=Rc,f.TABLE_INTERIOR_CELL_OFFSET_ROWID=Dc,f.TABLE_INTERIOR_CELL_SIZE=tr,f.TABLE_INTERIOR_SPLIT_INDEX=Ar,f.TOTAL_MEMORY_BYTES=mi,f.TRANSIENT_ARENA_OFFSET=mn,f.TableAlreadyExistsError=Bs,f.TableFlag=kA,f.TableNotFoundError=Tn,f.TooManyColumnsError=Sn,f.TooManyCursorsError=hs,f.TooManyGroupByColumnsError=Ur,f.TooManyIndexesError=Qr,f.TooManyOrderByColumnsError=pr,f.TooManyRegistersError=Bt,f.TooManyTablesError=Vi,f.TransactionCoordinator=za,f.UniqueConstraintViolationError=WA,f.UnknownFunctionError=Xi,f.UnsupportedFormatVersionError=dr,f.VM_CONTEXT_OFFSET=_n,f.VM_CONTEXT_SIZE=nr,f.VM_FRAME_COUNT=Nl,f.VM_FRAME_SIZE=Sl,f.VmStatus=L,f.WAL_CURRENT_VERSION=ar,f.WAL_FILE_HEADER_FIELDS=Ul,f.WAL_FILE_HEADER_SIZE=ls,f.WAL_FRAME_HEADER_FIELDS=Tl,f.WAL_FRAME_HEADER_SIZE=GA,f.WAL_FRAME_MAGIC=yn,f.WAL_FRAME_OFFSET_CHECKSUM=ki,f.WAL_FRAME_OFFSET_DB_SIZE_PAGES=Gi,f.WAL_FRAME_OFFSET_FLAGS=bi,f.WAL_FRAME_OFFSET_FRAME_SEQ=wi,f.WAL_FRAME_OFFSET_FRAME_TYPE=Li,f.WAL_FRAME_OFFSET_MAGIC=Fi,f.WAL_FRAME_OFFSET_PAGE_ID=Pi,f.WAL_FRAME_OFFSET_RESERVED=lr,f.WAL_FRAME_OFFSET_TX_ID=Oi,f.WAL_FRAME_SIZE=JA,f.WAL_FRAME_TYPE_PAGE_DATA=rs,f.WAL_FRAME_TYPE_TX_COMMIT=as,f.WAL_FRAME_TYPE_TX_UNCOMMITTED=cs,f.WAL_HEADER_OFFSET_CHECKPOINT_SEQ=Si,f.WAL_HEADER_OFFSET_CHECKSUM=Di,f.WAL_HEADER_OFFSET_MAGIC=pi,f.WAL_HEADER_OFFSET_PAGE_SIZE=Ti,f.WAL_HEADER_OFFSET_RESERVED=cr,f.WAL_HEADER_OFFSET_SALT1=Ni,f.WAL_HEADER_OFFSET_SALT2=Ri,f.WAL_HEADER_OFFSET_WAL_VERSION=Ui,f.WAL_HEADER_SIZE=Ll,f.WAL_MAGIC_BYTES=Zi,f.WAL_PAGE_SIZE=BA,f.WEBDB_CORE_WASM_BASE64=yo,f.WebDB=En,f.buf_pool_assign_slot=Jr,f.buf_pool_clear_dirty=Zr,f.buf_pool_find_victim=ao,f.buf_pool_get_resident_slot=he,f.buf_pool_get_slot_offset=tu,f.buf_pool_is_dirty=io,f.buf_pool_is_pinned=zA,f.buf_pool_mark_dirty=Kr,f.buf_pool_pin_slot=oo,f.buf_pool_read_slot_to_page=$A,f.buf_pool_select_eviction_victim=co,f.buf_pool_unassign_slot=Wr,f.buf_pool_unpin_slot=ro,f.buf_pool_write_slot_to_page=so,f.buildJoinEdges=ii,f.buildRootFilter=Pe,f.c_assert=br,f.canJoinPreserveOrder=gc,f.catalog_append_index_overflow_page=Ma,f.catalog_append_table_overflow_page=qa,f.catalog_create_table=Ja,f.catalog_delete_index_descriptor=No,f.catalog_delete_table_descriptor=Va,f.catalog_find_free_index_slot=Ha,f.catalog_find_free_table_slot=To,f.catalog_find_index_by_name=vs,f.catalog_find_table_by_name=Ju,f.catalog_find_table_slot=Se,f.catalog_get_change_counter=wa,f.catalog_get_free_page_head=Yu,f.catalog_get_index_slot_capacity=TA,f.catalog_get_schema_version=Ga,f.catalog_get_table_pk_index=Uo,f.catalog_get_table_slot_capacity=nn,f.catalog_get_total_pages=Pa,f.catalog_increment_change_counter=Ve,f.catalog_increment_schema_version=HA,f.catalog_init_page=ti,f.catalog_init_page1=Oa,f.catalog_list_all_indexes=Ya,f.catalog_list_table_descriptors=UA,f.catalog_list_table_indexes=Xe,f.catalog_load_all_tables=Ku,f.catalog_load_table_meta=Do,f.catalog_map_column_location=Xa,f.catalog_parse_data_type=ka,f.catalog_read_column_meta=xa,f.catalog_read_fixed_string=js,f.catalog_read_index_descriptor=sn,f.catalog_read_page1_header=$n,f.catalog_read_page_header=eA,f.catalog_read_table_descriptor=Ee,f.catalog_set_free_page_head=Vu,f.catalog_set_total_pages=Hu,f.catalog_update_page1_checksum=Te,f.catalog_write_column_meta=Ro,f.catalog_write_fixed_string=Zs,f.catalog_write_index_descriptor=So,f.catalog_write_page_header=Wu,f.catalog_write_table_descriptor=VA,f.chooseIndexScan=li,f.chooseJoinIndex=ui,f.clear_bit=Lr,f.col=bo,f.collectLeafFilters=cc,f.compare_sorter_keys=Sa,f.compileQuery=xo,f.computeBufferPoolOffsets=yi,f.computePage1Checksum=Wi,f.computePageChecksum=fA,f.computeWalFrameChecksum=Qs,f.crc32=Ji,f.createLiveQuery=hc,f.createVmContext=Br,f.createVmCursor=Ir,f.createWasmCore=ei,f.createWasmMemory=Za,f.decodeWalFileHeader=Us,f.decodeWalFrame=Gl,f.decodeWalFrameHeader=ji,f.deriveDefaultAlias=le,f.disassembleBytecode=Ec,f.doesTableSatisfyJoinOrderKeys=Po,f.emitExpression=it,f.encodeWalFileHeader=ps,f.encodeWalFrame=Ts,f.estimateFilterSelectivity=Oo,f.estimateWhereCost=Go,f.evalExprNode=ue,f.exp=Ac,f.extractAggregatesFromExpr=jo,f.extractFilterColumnNames=sc,f.f64_to_i32=ys,f.f64_to_i64=ms,f.findIndexOnColumn=zn,f.fn=eg,f.fnv1a_32=Na,f.formatDisassembly=Ic,f.getActiveLiveQueryTracker=un,f.getCmpOpcode=ts,f.getFilterReferencedTables=an,f.getMinKeyValueForType=ci,f.getSingleTableBaseCost=sA,f.getTopLevelConjunctionFilters=cn,f.getWebDbCoreWasmBytes=Da,f.get_bit=Dr,f.i64_to_f64=_s,f.i64_to_i32=Nt,f.inferExprType=uc,f.inferTransitivePredicates=ic,f.isAggregateFunction=AA,f.isBuiltinFunction=Zu,f.isBuiltinScalarFunction=ec,f.isIndexAlignedWithOrderBy=Vo,f.isQueryBuilder=At,f.liveQuery=gi,f.materializeOutputSelectExprs=vn,f.memcmp=bl,f.memcpy=kt,f.memset=Zt,f.normalizeFilter=SA,f.normalizeSelectItem=Ei,f.notifyLiveQueryTableRead=we,f.optimizeQueryPlan=gg,f.optimizeWherePredicates=wo,f.page_binary_search_index_leaf=Ls,f.page_binary_search_interior=Kl,f.page_compact=bn,f.page_compare_index_keys=jl,f.page_delete_index_leaf_cell=Ao,f.page_delete_row=Mr,f.page_deserialize_row=qA,f.page_get_cell_content_offset=yA,f.page_get_cell_count=_t,f.page_get_cell_offset=Et,f.page_get_checksum=Xl,f.page_get_contiguous_free_space=Ln,f.page_get_free_bytes=$e,f.page_get_next_page_id=jt,f.page_get_right_child_page_id=Ns,f.page_get_row_length=On,f.page_get_table_layout=Wl,f.page_get_total_free_space=kr,f.page_get_type=_A,f.page_init=Fn,f.page_init_free=wr,f.page_init_index_leaf=Rs,f.page_init_interior=Hr,f.page_insert_index_leaf_cell=eo,f.page_insert_interior_cell=Vr,f.page_insert_row=Pn,f.page_serialize_row=to,f.page_set_cell_content_offset=He,f.page_set_cell_count=mA,f.page_set_cell_offset=Ye,f.page_set_checksum=Jl,f.page_set_free_bytes=ze,f.page_set_next_page_id=Ss,f.page_set_right_child_page_id=Yr,f.page_set_type=xl,f.page_split_interior=Zl,f.page_table_delete=no,f.page_table_get=xr,f.page_table_hash=Gn,f.page_table_set=Xr,f.page_update_row=vi,f.parseExpression=Rt,f.parseFilterTarget=xt,f.parseSelectExpr=ni,f.popLiveQueryTracker=Wo,f.pushLiveQueryTracker=Jo,f.read_f64=st,f.read_i32=vt,f.read_i64=ie,f.read_u16=v,f.read_u32=R,f.read_u64=Ol,f.read_u8=y,f.reconstructJoinPlans=oi,f.recoverFromWal=Lo,f.resetVmContext=hr,f.resolveColumnAcrossTables=Lt,f.resolveQueryPlanner=qo,f.serialize_composite_key=bs,f.serialize_single_key=zl,f.set_bit=Fr,f.sql=vu,f.sql_like_match=Zn,f.strlen=ds,f.trackLiveQueryPromise=gn,f.validateClause=xA,f.validateWalFrame=$i,f.vm_step=Ai,f.write_f64=ge,f.write_i32=q,f.write_i64=je,f.write_u16=se,f.write_u32=S,f.write_u64=Pl,f.write_u8=K,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
|
|
5
5
|
//# sourceMappingURL=webdb.umd.cjs.map
|