albex 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +223 -0
- package/README.md +84 -30
- package/dist/_generated/inline-wasm.d.ts +2 -0
- package/dist/_generated/inline-wasm.d.ts.map +1 -0
- package/dist/_generated/inline-wasm.js +9 -0
- package/dist/_generated/inline-wasm.js.map +1 -0
- package/dist/albex-worker.d.ts +65 -2
- package/dist/albex-worker.d.ts.map +1 -1
- package/dist/albex-worker.js +98 -21
- package/dist/albex-worker.js.map +1 -1
- package/dist/albex.d.ts +250 -42
- package/dist/albex.d.ts.map +1 -1
- package/dist/albex.js +492 -120
- package/dist/albex.js.map +1 -1
- package/dist/errors.d.ts +35 -4
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +38 -3
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/inline.d.ts +10 -0
- package/dist/inline.d.ts.map +1 -0
- package/dist/inline.js +17 -0
- package/dist/inline.js.map +1 -0
- package/dist/persistence.js +2 -2
- package/dist/pool/coordinator.d.ts +14 -6
- package/dist/pool/coordinator.d.ts.map +1 -1
- package/dist/pool/coordinator.js +65 -28
- package/dist/pool/coordinator.js.map +1 -1
- package/dist/profile.js +2 -2
- package/dist/resource-manager.js +2 -2
- package/dist/tiered-store.js +2 -2
- package/dist/wasm-bindings.d.ts +50 -1
- package/dist/wasm-bindings.d.ts.map +1 -1
- package/dist/wasm-bindings.js +20 -12
- package/dist/wasm-bindings.js.map +1 -1
- package/dist/worker-protocol.d.ts +23 -2
- package/dist/worker-protocol.d.ts.map +1 -1
- package/dist/worker-protocol.js +2 -2
- package/dist/worker-runtime.js +17 -2
- package/dist/worker-runtime.js.map +1 -1
- package/package.json +14 -9
- package/src/_generated/inline-wasm.ts +9 -0
- package/src/albex-worker.ts +103 -18
- package/src/albex.ts +3053 -2524
- package/src/errors.ts +49 -4
- package/src/index.ts +81 -0
- package/src/inline.ts +9 -0
- package/src/pool/coordinator.ts +61 -34
- package/src/wasm-bindings.ts +78 -12
- package/src/worker-protocol.ts +12 -2
- package/src/worker-runtime.ts +16 -1
- package/wasm/pkg/albex_pdf.wasm +0 -0
- package/wasm/pkg/albex_wasm.wasm +0 -0
- package/wasm/pkg/albex_wasm_bg.wasm +0 -0
- package/wasm/pkg/albex_wasm_simd.wasm +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,229 @@ All notable changes to Albex are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and Albex follows [Semantic Versioning](https://semver.org/).
|
|
7
7
|
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.7.0] — 2026-06-26
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **Zero-config in every bundler — the core WASM is now embedded by default.**
|
|
15
|
+
`import { AlbexEngine } from 'albex'` resolves to a new entry
|
|
16
|
+
(`dist/index.js`) that base64-embeds the ~47 KB baseline core in the JS
|
|
17
|
+
(~19 KB gzipped over the wire, decoded once and cached) and instantiates it
|
|
18
|
+
with **no `fetch` and no `new URL('…wasm', import.meta.url)`** asset
|
|
19
|
+
resolution. This removes the long-standing friction on **esbuild / Angular /
|
|
20
|
+
many Webpack** setups, which never rewrote that pattern and left integrators
|
|
21
|
+
copying binaries by hand. The URL-based path is unchanged and still used
|
|
22
|
+
whenever you set `wasmUrl` / `wasmBaseUrl` (CDN / SIMD), so existing configs
|
|
23
|
+
keep working — only the no-option default changed (baseline core, no SIMD;
|
|
24
|
+
set `wasmBaseUrl` for the SIMD variant). WASM-load failures now throw an
|
|
25
|
+
`AlbexInitError` whose message names the URL it tried and the one-line exit
|
|
26
|
+
(drop the option to fall back to the embedded core); `instantiateStreaming`
|
|
27
|
+
also falls back to a buffered compile when the host serves the `.wasm` with
|
|
28
|
+
the wrong MIME type (a common esbuild/static-server pitfall). The npm
|
|
29
|
+
`description` was corrected — it advertised "zero-config" while the default
|
|
30
|
+
actually depended on bundler asset resolution.
|
|
31
|
+
- **IDF-aware relevance scoring — exact matches no longer saturate.** The old
|
|
32
|
+
`rich_score` set `base = 1000 − avg_errors·200`, so every 0-error hit hit the
|
|
33
|
+
1000 ceiling and `.min(1000)` discarded *all* the relevance bonuses (term
|
|
34
|
+
frequency, proximity, location, word-boundary AND idf). The practical effect:
|
|
35
|
+
on a real corpus every exact match tied at 1000 and the final ordering among
|
|
36
|
+
them was arbitrary — the chunk holding the rare, decisive query term was no
|
|
37
|
+
more likely to rank first than dozens that merely shared a common word.
|
|
38
|
+
Scores are now laid out as **error tiers with relevance ranking inside each
|
|
39
|
+
tier** (0 errors → `[750,1000]`, 1 → `[500,750]`, 2 → `[250,500]`, 3 →
|
|
40
|
+
`[0,250]`): a cleaner match still always beats a noisier one, but within a
|
|
41
|
+
tier the **IDF bonus (now the largest, up to 150)** lifts rare-term matches
|
|
42
|
+
decisively above common-term ones. Measured downstream (the Noesis hybrid-RAG
|
|
43
|
+
eval over a 293-doc / 12.4k-chunk corpus): lexical-leg MRR **0.19 → 0.40**,
|
|
44
|
+
R@5 **23% → 53%**, and end-to-end hybrid MRR **0.42 → 0.53** — with no change
|
|
45
|
+
on small corpora. `SearchResult.score` keeps its `0..=1000` range, so
|
|
46
|
+
`setThreshold` is unaffected for typical values; very weak 3-error fuzzy
|
|
47
|
+
matches (bonus-starved, score < the default threshold 250) are now filtered
|
|
48
|
+
where they previously slipped through.
|
|
49
|
+
- **Fixed a latent result-ordering bug** exposed by the scoring change. The
|
|
50
|
+
heap-sort already left `RESULTS` in descending order; a trailing reverse then
|
|
51
|
+
flipped it to *ascending*. It was invisible while all exact scores tied at
|
|
52
|
+
1000 and was masked from API consumers by the TypeScript-side re-sort, but the
|
|
53
|
+
WASM ABI now returns correctly descending results on its own.
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
- **`wasmBytes` / `pdfWasmBytes` options.** Hand the engine raw core/PDF bytes
|
|
58
|
+
(`BufferSource`) you loaded yourself; when present, no network fetch happens
|
|
59
|
+
and `wasmUrl`/`wasmBaseUrl`/SIMD auto-selection are bypassed. The escape
|
|
60
|
+
hatch for bundlers that can't serve the binary: import the `.wasm` as an
|
|
61
|
+
asset through your own pipeline and pass the bytes. `pdfWasmBytes` does the
|
|
62
|
+
same for the on-demand PDF module (which is too large to embed).
|
|
63
|
+
- **`albex/inline` subpath + `albexWasmBytes()` helper.** `albex/inline` is now
|
|
64
|
+
an alias of the default entry (kept so existing `from 'albex/inline'` imports
|
|
65
|
+
keep resolving); `albexWasmBytes()` returns the embedded baseline core as
|
|
66
|
+
decoded, cached bytes — e.g. to seed a worker with the same core.
|
|
67
|
+
- **`albex/wasm/pkg/*.wasm` subpath export.** The raw binaries are reachable as
|
|
68
|
+
package assets for bundler asset-imports (used by the `pdfWasmBytes` recipe
|
|
69
|
+
in the README's Advanced section).
|
|
70
|
+
- **Dynamic capacity (ABI 7, decision A16 executed).** The compile-time
|
|
71
|
+
capacity tiers are gone for good: the engine pools (chunk table, trigram
|
|
72
|
+
signatures, text pool, doc table, content hashes, name pool, tombstone
|
|
73
|
+
bitset, GPU candidate mask) moved from BSS `static mut` arrays to heap
|
|
74
|
+
allocations sized at runtime by the new export
|
|
75
|
+
`initWithCapacity(maxDocs, maxChunks, textPoolBytes, namePoolBytes) → 1|0`.
|
|
76
|
+
- `init()` is now a wrapper over `initWithCapacity` with the historical
|
|
77
|
+
std defaults (128 docs · 100k chunks · 16 MB text · 32 KB names) —
|
|
78
|
+
default behaviour is identical to every previous release.
|
|
79
|
+
- Hard ceilings (validated, return 0 — never trap): 65 536 docs, 4 M
|
|
80
|
+
chunks, 1 GiB text, 16 MiB names; allocation failure (memory.grow
|
|
81
|
+
refused) also returns 0 cleanly with the engine in a safe empty state.
|
|
82
|
+
- Re-init with the same capacities is a plain reset (no realloc);
|
|
83
|
+
different capacities free + re-allocate (no leak; the linear-memory
|
|
84
|
+
high-water mark stays, as WASM memory never shrinks).
|
|
85
|
+
- **Snapshots are admitted by CONTENT, not by writer capacity**: the
|
|
86
|
+
restore gate compares the snapshot's counters against the live runtime
|
|
87
|
+
capacities, so a snapshot saved by a `'large'` engine loads into a
|
|
88
|
+
`'std'` engine whenever its contents fit — and fails CLEANLY (previous
|
|
89
|
+
index intact) when they don't. v4 headers additionally record the
|
|
90
|
+
writer's capacities in the previously-reserved bytes [40..56], for
|
|
91
|
+
diagnostics only.
|
|
92
|
+
- **TS option `capacity`**: `'std'` (default) · `'large'`
|
|
93
|
+
(1 024 docs / 800k chunks / 128 MB text / 256 KB names — the old "pro"
|
|
94
|
+
tier) · custom `{ maxDocs?, maxChunks?, textPoolBytes?, namePoolBytes? }`
|
|
95
|
+
(partials completed from std scaled by std's ratios: chunks = docs×782,
|
|
96
|
+
text = chunks×168 B, names = docs×256 B, with floors; explicit
|
|
97
|
+
maxChunks below maxDocs is clamped up). Forwarded to workers and pool
|
|
98
|
+
shards (structured-clone-safe). `reset()` re-inits with the CONFIGURED
|
|
99
|
+
capacity, not the std defaults.
|
|
100
|
+
- `AlbexCapacityError` gains `max` — the runtime numeric limit of the
|
|
101
|
+
pool named by `limit` (e.g. `4` for `capacity: { maxDocs: 4 }`); it
|
|
102
|
+
survives the worker boundary.
|
|
103
|
+
- New large-scale bench (`bench/large.bench.ts`): 1 000 docs / 200k
|
|
104
|
+
chunks / 15.8 MB text in a `'large'` engine — search 141-769 ms
|
|
105
|
+
(rare-token → fuzzy), snapshot save 24 ms / restore 175 ms for a
|
|
106
|
+
~20 MB snapshot. Numbers in `bench/README.md`. Binary cost of heap
|
|
107
|
+
pools: baseline 43 396 → 47 446 B (gate 48 KB still green).
|
|
108
|
+
|
|
109
|
+
- **Batch frontier reads (ABI 6).** Three groups of exports collapse the
|
|
110
|
+
JS↔WASM call count on the hot read paths:
|
|
111
|
+
- `getResultsPtr()` + `getResultStride()`: `_collectResults` now reads every
|
|
112
|
+
numeric field of all results with ONE `DataView` pass over the
|
|
113
|
+
`#[repr(C)]` `RESULTS` array (layout documented in the export's
|
|
114
|
+
doc-comment and compile-time asserted with `offset_of!`) instead of
|
|
115
|
+
~12-15 frontier calls per result. Doc names are resolved once per
|
|
116
|
+
distinct document via its table slot — the per-result
|
|
117
|
+
`getResultDocName` (O(doc_count) inside WASM) is no longer called.
|
|
118
|
+
- `getPatternBloomLo()/Hi()`: the query Bloom the GPU pre-filter needs is
|
|
119
|
+
now computed in `setPattern` through the exact pipeline `searchBegin`
|
|
120
|
+
uses (split → optional Spanish stemming → fold). The third TypeScript
|
|
121
|
+
copy of the fold (`computePatternBloom`) is deleted; with stemming on it
|
|
122
|
+
silently diverged from the CPU pattern.
|
|
123
|
+
- `listChunksBatch(slot, startOrd, maxChunks)`: packs consecutive chunk
|
|
124
|
+
records `[u32 text_len][u32 location][text]` into the scratchpad;
|
|
125
|
+
`listChunks` now makes ~1 frontier call per 64 KB batch instead of 2-3
|
|
126
|
+
per chunk (an embeddings pipeline over 100k chunks drops from ~300k
|
|
127
|
+
calls to ~1.3k).
|
|
128
|
+
`abiVersion()` bumped 5 → 6; host pin updated. Snapshot format unchanged.
|
|
129
|
+
- **UTF-16 spans: `SearchResult.snippetStart/snippetEnd`.** The existing
|
|
130
|
+
`matchStart/matchEnd`/`matches[]` are UTF-8 BYTE offsets (now documented as
|
|
131
|
+
such) and mis-highlight as soon as the snippet contains accents. The new
|
|
132
|
+
fields are the primary span as UTF-16 code-unit indices over the decoded
|
|
133
|
+
snippet — safe for `snippet.slice()`. Byte fields are unchanged for
|
|
134
|
+
backwards compatibility.
|
|
135
|
+
- **Worker parity: `replaceDocument` + `takeDiagnostics`** added to the
|
|
136
|
+
worker protocol and `AlbexEngineWorker`. The class JSDoc now documents that
|
|
137
|
+
`attachOcr` cannot exist in the worker (functions don't cross postMessage)
|
|
138
|
+
and that scanned PDFs index with 0 chunks there — with the diagnostic
|
|
139
|
+
explaining why readable through `takeDiagnostics`, and the recommendation
|
|
140
|
+
to OCR on the main-thread engine and `save()`/`load()` the snapshot.
|
|
141
|
+
- **CI with teeth:** `cargo clippy -D warnings` for every crate (host pass
|
|
142
|
+
for core/ingest, wasm32 pass for the wasm and pdf crates), an advisory
|
|
143
|
+
`cargo fmt --check`, a hard 48 KB size gate on the baseline `.wasm`, a
|
|
144
|
+
build of the SIMD variant, and a manual-only (`workflow_dispatch`) bench
|
|
145
|
+
job with no thresholds.
|
|
146
|
+
|
|
147
|
+
### Removed
|
|
148
|
+
|
|
149
|
+
- **`tier` option and tier plumbing (breaking, pre-1.0).** The deprecated
|
|
150
|
+
`AlbexOptions.tier` (ignored since 0.5.0), `AlbexEngine.tier`,
|
|
151
|
+
`AlbexPool.tier`, `EngineStats.tier` and the WASM `getTier` export are
|
|
152
|
+
gone — superseded by the runtime `capacity` option (ABI 7, decision
|
|
153
|
+
A16). `EngineStats` now reports the real runtime capacities (`maxDocs`,
|
|
154
|
+
`maxChunks`, `textCapacity`, plus new `namePoolBytes`). The deprecated
|
|
155
|
+
`pickTier`/`Tier` re-exports from `profile.ts` remain for source
|
|
156
|
+
compatibility. The `tier-mini`/`tier-std`/`tier-pro` Cargo features are
|
|
157
|
+
deleted; the only build-time switch left is `simd`.
|
|
158
|
+
|
|
159
|
+
### Changed
|
|
160
|
+
|
|
161
|
+
- **Trigram windows no longer cross word boundaries.** `build_sig` /
|
|
162
|
+
`token_trigram_bits` only extend the sliding window on code points that
|
|
163
|
+
fold to an ASCII letter or digit; whitespace/punctuation/symbols break it
|
|
164
|
+
on BOTH the index and query sides (previously the fold passed ASCII
|
|
165
|
+
whitespace through, so signatures contained cross-word trigrams that
|
|
166
|
+
diluted selectivity — the doc-comment claimed otherwise). Sound under
|
|
167
|
+
fuzzy matching (same ≤3-windows-per-edit bound); signatures are rebuilt
|
|
168
|
+
on every restore/compact, so existing snapshots are unaffected.
|
|
169
|
+
- **`wee_alloc` replaced (RUSTSEC-2022-0054).** The main no_std module now
|
|
170
|
+
uses `dlmalloc` (`global` feature) — baseline binary 36 732 → 42 654 bytes
|
|
171
|
+
(+5.8 KB, under the 48 KB gate). `pdf-wasm` drops its custom allocator and
|
|
172
|
+
uses std's default (also dlmalloc): 1 193 074 → 1 199 910 bytes (+6.8 KB on
|
|
173
|
+
1.2 MB). In pdf-wasm the allocator serves all of lopdf, so the known
|
|
174
|
+
wee_alloc leak surface was real there.
|
|
175
|
+
|
|
176
|
+
### Fixed (this pass)
|
|
177
|
+
|
|
178
|
+
- **`getSnippetWindow` can no longer open or close mid code point.** When the
|
|
179
|
+
word-boundary snap found no space within 20 bytes, the window edge could
|
|
180
|
+
land on a UTF-8 continuation byte → U+FFFD at the snippet border and every
|
|
181
|
+
span visually off. Both edges now back off continuation bytes to the
|
|
182
|
+
code-point lead (same pattern as the chunker's hard cut).
|
|
183
|
+
|
|
184
|
+
### Added (previous pass)
|
|
185
|
+
|
|
186
|
+
- **Authoritative chunk enumeration (ABI 4).** New `AlbexEngine.listChunks(docId)`
|
|
187
|
+
(and `AlbexEngineWorker.listChunks`) returns the exact chunks Albex indexed for
|
|
188
|
+
a document — `{ docId, location, ord, sub, text, byteLen, id }` — so a host can
|
|
189
|
+
mirror Albex's chunking for a parallel index (e.g. embeddings) keyed on the
|
|
190
|
+
`compact()`-stable id `"<docId>::<ord>"`. Backed by four read-only
|
|
191
|
+
WASM exports (`getDocChunkBase`, `getChunkLocationAt`, `getChunkByteLenAt`,
|
|
192
|
+
`getChunkTextAt`); `abiVersion()` bumped 3 → 4. No change to search, scoring or
|
|
193
|
+
snapshot formats; v3 snapshots still load.
|
|
194
|
+
- **`SearchResult` now carries `docId` and `chunkId`.** `chunkId` (`"<docId>::<ord>"`)
|
|
195
|
+
is identical to the matching `AuthoritativeChunk.id`, so a host can fuse search
|
|
196
|
+
hits with a parallel index on a single stable key — no `(name, location)`
|
|
197
|
+
heuristics, and unambiguous when a long paragraph splits into sub-chunks.
|
|
198
|
+
- **`maxFileBytes` option (default 256 MiB).** `indexFile` now rejects oversized
|
|
199
|
+
inputs with a typed `AlbexCapacityError` (`limit: 'file'`) by checking
|
|
200
|
+
`File.size` BEFORE reading — a 2 GB file no longer gets fully buffered and
|
|
201
|
+
hashed just to fail later. Enforced by the engine, the worker wrapper and the
|
|
202
|
+
pool coordinator.
|
|
203
|
+
|
|
204
|
+
### Fixed
|
|
205
|
+
|
|
206
|
+
- **GPU pre-filter no longer corrupts the search pattern.** `setCandidateMask`
|
|
207
|
+
pushes the candidate bitset through the scratchpad, overwriting the pattern
|
|
208
|
+
staged by `selectQueryBranch`; `searchBegin` then compiled garbage tokens out
|
|
209
|
+
of the mask bytes, so every GPU-assisted cooperative search silently returned
|
|
210
|
+
wrong results. The active branch is now re-selected after the pre-filter.
|
|
211
|
+
- **GPU bloom upload invalidation is now mutation-driven.** The upload used to
|
|
212
|
+
be skipped when the chunk count matched the last upload — but `compact()` can
|
|
213
|
+
reorder chunks while keeping the count identical, leaving the GPU mask
|
|
214
|
+
filtering the wrong chunks (silent false negatives). A dirty flag set by every
|
|
215
|
+
index mutation (index/remove/compact/reset/load) now forces the re-upload.
|
|
216
|
+
- **`AlbexEngineWorker.init` forwards all engine options.** Previously only
|
|
217
|
+
`wasmUrl` and `pdfWasmUrl` crossed the worker boundary; `wasmBaseUrl`, `simd`,
|
|
218
|
+
`gpu`, `gpuThreshold` and `maxFileBytes` were silently dropped, making the
|
|
219
|
+
SIMD variant and the GPU policy unreachable in workers.
|
|
220
|
+
- **OR-branch dedup keyed on `chunkId`.** The previous
|
|
221
|
+
`(doc, location, matchStart)` key collided when two sub-chunks of the same
|
|
222
|
+
location hit at the same relative offset, dropping a legitimate result.
|
|
223
|
+
- **`AlbexPool.search` now actually caps and dedups after the merge.** The doc
|
|
224
|
+
promised "capped to setMaxResults AFTER merge" but the coordinator returned
|
|
225
|
+
the raw flattened buckets. Results are now deduped, sorted and capped to the
|
|
226
|
+
last `setMaxResults` value (default 50); per-shard search stats are captured
|
|
227
|
+
race-free in the same posting batch as the search itself.
|
|
228
|
+
- Corrected the `listChunks` docstring (and the entry above): the canonical
|
|
229
|
+
chunk id format is `"<docId>::<ord>"`, not `"<docId>::<location>.<sub>"`.
|
|
230
|
+
|
|
8
231
|
## [0.6.0] — 2026-05-31
|
|
9
232
|
|
|
10
233
|
Release de auditoría algorítmica + robustez. Cierra los hallazgos #1–#8 de
|
package/README.md
CHANGED
|
@@ -14,14 +14,28 @@ start typing, get results in milliseconds.
|
|
|
14
14
|
npm install albex
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
```ts
|
|
18
|
+
import { AlbexEngine } from 'albex';
|
|
19
|
+
|
|
20
|
+
const engine = new AlbexEngine();
|
|
21
|
+
await engine.init();
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
That's it. The WASM core is **embedded in the package** (base64, ~19 KB
|
|
25
|
+
gzipped over the wire, decoded once at startup), so there is nothing to
|
|
26
|
+
serve and nothing to configure. It works the same in **every** bundler —
|
|
27
|
+
Vite, Webpack, Rollup, Parcel, **esbuild and Angular included** — and in
|
|
28
|
+
Node ≥ 18. No `assets` entries, no copying binaries, no `wasmUrl`.
|
|
20
29
|
|
|
21
30
|
Matrix-tested in CI today: **Vite** and **Node** (via the test suite).
|
|
22
|
-
Other bundlers and runtimes (Next SSR, Bun, Deno)
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
Other bundlers and runtimes (Next SSR, Bun, Deno) ride the same embedded
|
|
32
|
+
path; if you hit a problem, open an issue.
|
|
33
|
+
|
|
34
|
+
> **PDFs** are the one exception: the PDF engine (~1.2 MB) is too large to
|
|
35
|
+
> embed, so it loads on demand the first time you index a `.pdf`. In bundlers
|
|
36
|
+
> that resolve `new URL('…', import.meta.url)` (Vite, Webpack 5+, Rollup,
|
|
37
|
+
> Parcel) it just works; on esbuild/Angular, hand it the bytes once via
|
|
38
|
+
> `pdfWasmBytes` (or a URL via `pdfWasmUrl`). See [Advanced](#advanced-configuration).
|
|
25
39
|
|
|
26
40
|
---
|
|
27
41
|
|
|
@@ -66,9 +80,10 @@ That's the entire onboarding. Read on for what else the engine can do.
|
|
|
66
80
|
## Features
|
|
67
81
|
|
|
68
82
|
- **Zero server** — all text stays on the user's machine.
|
|
69
|
-
- **
|
|
70
|
-
|
|
71
|
-
|
|
83
|
+
- **Install and use** — the WASM core ships embedded in the JS, so
|
|
84
|
+
`new AlbexEngine()` runs in **any** bundler (esbuild/Angular included) and
|
|
85
|
+
in Node with nothing to serve and nothing to configure. SIMD and CDN
|
|
86
|
+
hosting stay available as opt-in options (see [Advanced](#advanced-configuration)).
|
|
72
87
|
- **Fuzzy matching** — finds `"contrato"` even if you type `"conttrato"` (Bitap with adaptive edit distance). Sound under a two-stage pre-filter (character Bloom for exact tokens, a 256-bit **trigram q-gram signature** for everything) that prunes the candidate set ~10× on prose without ever dropping a real approximate match.
|
|
73
88
|
- **Accent-insensitive** — `"accion"` matches `"acción"`, `"espana"` matches `"España"`, plus Latin Extended (Polish, Czech, Slovak, Turkish…).
|
|
74
89
|
- **11 formats with varying depth** — DOCX · XLSX · PDF · HTML · MD · JSON · CSV · EML · RTF · TXT · XML. See the support table below; several formats are deliberately "lite" (CSV is RFC-4180-lite, EML is MIME-lite, RTF is regex-stripped, etc.).
|
|
@@ -81,10 +96,11 @@ That's the entire onboarding. Read on for what else the engine can do.
|
|
|
81
96
|
- **WebGPU pre-filter** — experimental, opt-in (`gpu: 'auto'`). Implemented for corpora over 20 k chunks; no reproducible speedup number yet — the bench in this repo runs on a 200-document synthetic corpus only.
|
|
82
97
|
- **SIMD opportunistic** — picks a SIMD-accelerated variant when the host supports v128.
|
|
83
98
|
- **Tiered storage** — `TieredStore` keeps recent docs hot, evicts cold ones to OPFS, promotes on demand.
|
|
84
|
-
- **
|
|
99
|
+
- **Runtime capacity** — one binary, pools sized at init: `capacity: 'std'` (default, 128 docs / 100k chunks / 16 MB text), `'large'` (1 024 docs / 800k chunks / 128 MB text) or a custom `{ maxDocs, maxChunks, textPoolBytes, namePoolBytes }`.
|
|
100
|
+
- **Capacity-safe** — when a pool fills (`docs`/`chunks`/`text`/`names`), `indexFile` throws `AlbexCapacityError` with `limit` (which pool) and `max` (the runtime limit) instead of silently truncating the corpus.
|
|
85
101
|
- **Re-entrancy-safe** — async operations on one engine serialize; sync `search`/`compact`/`reset` refuse to run mid-operation (`AlbexError` kind `busy`) rather than corrupting the shared WASM state. Use `searchCooperative` for overlapping search-as-you-type.
|
|
86
102
|
- **Typed errors** — `AlbexParseError`, `AlbexUnsupportedFormatError`, `AlbexCapacityError`, `AlbexInitError`. All extend `AlbexError`.
|
|
87
|
-
- **Tiny core** — main WASM
|
|
103
|
+
- **Tiny core** — main WASM ~47 KB (~19 KB gzipped); the SIMD build is ~54 KB (~21 KB gzipped). PDF module (~1.2 MB, ~510 KB gzipped) loads on demand. The OCR companion (`@albex/ocr`) is a separate package and pulls Tesseract.js (~3.5 MB) only when you call `enableOcr()`.
|
|
88
104
|
|
|
89
105
|
---
|
|
90
106
|
|
|
@@ -199,7 +215,7 @@ const results = await pool.search('contrato'); // map-reduce
|
|
|
199
215
|
|
|
200
216
|
## Big corpora — tiered storage
|
|
201
217
|
|
|
202
|
-
For workloads that exceed the
|
|
218
|
+
For workloads that exceed the engine's RAM capacity:
|
|
203
219
|
|
|
204
220
|
```ts
|
|
205
221
|
import { AlbexEngine, TieredStore } from 'albex';
|
|
@@ -223,36 +239,75 @@ Hot tier = engine. Warm tier = original files in OPFS. LRU eviction is automatic
|
|
|
223
239
|
`new AlbexEngine()` covers the default case. The options below address
|
|
224
240
|
specific deployment needs:
|
|
225
241
|
|
|
226
|
-
###
|
|
242
|
+
### Capacity (runtime, single binary)
|
|
227
243
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
pass `wasmBaseUrl`:
|
|
244
|
+
Capacity is a **runtime** parameter — there is one engine binary (plus its
|
|
245
|
+
SIMD variant) and the pools are heap-allocated at `init()` to the size you
|
|
246
|
+
ask for. The old compile-time tiers (and the `tier` option) are gone:
|
|
232
247
|
|
|
233
248
|
```ts
|
|
234
249
|
const engine = new AlbexEngine({
|
|
235
|
-
|
|
236
|
-
tier: 'auto', // picks mini/std/pro by deviceMemory
|
|
250
|
+
capacity: 'large', // or 'std' (default), or a custom object
|
|
237
251
|
simd: 'auto', // picks baseline/simd by WASM probe
|
|
238
252
|
gpu: 'auto', // engages WebGPU when corpus > 20k chunks
|
|
239
253
|
});
|
|
240
254
|
```
|
|
241
255
|
|
|
242
|
-
|
|
256
|
+
Presets and cost (≈ `maxChunks × 64 B + textPool + namePool`; WASM memory
|
|
257
|
+
never shrinks, so the largest capacity initialised stays committed):
|
|
243
258
|
|
|
244
|
-
|
|
|
245
|
-
|
|
246
|
-
|
|
|
247
|
-
|
|
|
248
|
-
|
|
|
259
|
+
| Capacity | Max docs | Max chunks | Max text | Working set |
|
|
260
|
+
|-----------|---------:|-----------:|---------:|------------:|
|
|
261
|
+
| `'std'` | 128 | 100 000 | 16 MB | ~22 MB |
|
|
262
|
+
| `'large'` | 1 024 | 800 000 | 128 MB | ~180 MB |
|
|
263
|
+
| custom | ≤ 65 536 | ≤ 4 M | ≤ 1 GiB | as configured |
|
|
249
264
|
|
|
250
|
-
|
|
265
|
+
Custom objects may be partial — missing fields are completed from the std
|
|
266
|
+
ratios (`maxChunks = maxDocs × 782`, `textPoolBytes = maxChunks × 168 B`,
|
|
267
|
+
`namePoolBytes = maxDocs × 256 B`, with sane floors):
|
|
251
268
|
|
|
252
269
|
```ts
|
|
270
|
+
const tiny = new AlbexEngine({ capacity: { maxDocs: 16 } });
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Snapshots are admitted by **content**: a snapshot saved with `'large'`
|
|
274
|
+
loads into a `'std'` engine whenever its counters fit, and fails cleanly
|
|
275
|
+
(previous index intact) when they don't.
|
|
276
|
+
|
|
277
|
+
### WASM source — SIMD, CDN, custom bytes
|
|
278
|
+
|
|
279
|
+
The default embeds the **baseline** core, which is all most apps need. Three
|
|
280
|
+
opt-in overrides, none required:
|
|
281
|
+
|
|
282
|
+
```ts
|
|
283
|
+
// SIMD on capable hosts: serve both binaries and let Albex probe.
|
|
284
|
+
new AlbexEngine({ wasmBaseUrl: '/albex' }); // dir with albex_wasm.wasm + albex_wasm_simd.wasm
|
|
285
|
+
|
|
286
|
+
// A single core from your CDN.
|
|
287
|
+
new AlbexEngine({ wasmUrl: 'https://cdn.example.com/albex_wasm.wasm' });
|
|
288
|
+
|
|
289
|
+
// Bytes you loaded yourself (skips all fetching).
|
|
290
|
+
new AlbexEngine({ wasmBytes: myArrayBuffer });
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
Setting any of these bypasses the embedded core. If a fetch fails, the
|
|
294
|
+
thrown `AlbexInitError` names the URL it tried and tells you the one-line
|
|
295
|
+
exit (drop the option to fall back to the embedded core) — no guessing.
|
|
296
|
+
|
|
297
|
+
### PDFs on esbuild / Angular
|
|
298
|
+
|
|
299
|
+
The PDF engine (~1.2 MB) loads on demand and isn't embedded. Bundlers that
|
|
300
|
+
resolve `new URL('…', import.meta.url)` serve it automatically; esbuild and
|
|
301
|
+
Angular don't, so hand it the bytes once (the binary ships in the package at
|
|
302
|
+
`albex/wasm/pkg/albex_pdf.wasm`):
|
|
303
|
+
|
|
304
|
+
```ts
|
|
305
|
+
import pdfWasmUrl from 'albex/wasm/pkg/albex_pdf.wasm'; // bundler asset URL
|
|
306
|
+
|
|
253
307
|
const engine = new AlbexEngine({
|
|
254
|
-
|
|
308
|
+
pdfWasmBytes: await fetch(pdfWasmUrl).then(r => r.arrayBuffer()),
|
|
255
309
|
});
|
|
310
|
+
// …or a plain URL you host: new AlbexEngine({ pdfWasmUrl: '/albex/albex_pdf.wasm' })
|
|
256
311
|
```
|
|
257
312
|
|
|
258
313
|
---
|
|
@@ -299,14 +354,13 @@ PDF support requires `albex_pdf.wasm` to be served with MIME type `application/w
|
|
|
299
354
|
rustup target add wasm32-unknown-unknown
|
|
300
355
|
|
|
301
356
|
npm install
|
|
302
|
-
npm run build:all #
|
|
357
|
+
npm run build:all # main (baseline + SIMD) + PDF + TypeScript
|
|
303
358
|
```
|
|
304
359
|
|
|
305
360
|
Partial builds:
|
|
306
361
|
|
|
307
362
|
```bash
|
|
308
|
-
npm run build:wasm #
|
|
309
|
-
npm run build:wasm:tiers # all 6 variants
|
|
363
|
+
npm run build:wasm # main module (baseline + SIMD)
|
|
310
364
|
npm run build:pdf-wasm # PDF module
|
|
311
365
|
npm run build # TypeScript only
|
|
312
366
|
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-wasm.d.ts","sourceRoot":"","sources":["../../src/_generated/inline-wasm.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB,EAAE,MACg86D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/gen-inline.mjs — DO NOT EDIT.
|
|
2
|
+
// Source: wasm/pkg/albex_wasm_bg.wasm (baseline core, no SIMD).
|
|
3
|
+
// Regenerated on every `npm run build`. 47205 raw bytes →
|
|
4
|
+
// 62940 base64 chars (~61 KB text, ~46 KB raw).
|
|
5
|
+
/* eslint-disable */
|
|
6
|
+
// Typed as `string` (not the literal) so the emitted .d.ts stays a few bytes
|
|
7
|
+
// instead of inlining the whole base64 blob as a literal type.
|
|
8
|
+
export const ALBEX_WASM_BASE64 = 'AGFzbQEAAAABRwxgBX9/f39/AGACf38AYAR/f39/AGADf39/AGACf38Bf2ABfwF/YAF/AGAAAGADf39/AX9gAAF/YAR/f39/AX9gA35/fwF+A60BqwEAAQIDBAECBAMDAwMCAwMDAQMDAgQFAQMBAQEBBgYBAQEBBgcFBQcDAQgDBQEDBwYGBgYGBgYGBQkECAUJCQkFBQUHCgcHBgcGBgkGBgUBBQUBBwkJBgYBBQMGBwcHBgYGBgkJCgQDCQkFBgIBBQkJCQkJCQkJBQUFBQUFBQQEBQUJCAkJCQkJCQkJCQkGBwUFBQUEBAQIBQkFBQcJBAsBAQkBBQYJBgYGBwgFAwEAEgYZA38BQYCAwAALfwBBgMTFAAt/AEH6w8UACwfJC1YGbWVtb3J5AgALX19oZWFwX2Jhc2UDAQlnZXRCdWZmZXIANwphYmlWZXJzaW9uADgMcHJlcGFyZVF1ZXJ5ADsMZ2V0UXVlcnlLaW5kADwTZ2V0UXVlcnlCcmFuY2hDb3VudAA9F2dldFF1ZXJ5VHJ1bmNhdGlvbkZsYWdzAD4VZ2V0UXVlcnlCcmFuY2hQYXR0ZXJuAD8Rc2VsZWN0UXVlcnlCcmFuY2gAQApzZXRQYXR0ZXJuAEEQaW5pdFdpdGhDYXBhY2l0eQBDBGluaXQARAloYXNoQmVnaW4ARQhoYXNoRmVlZABGCmhhc2hGaW5pc2gARw9zZXREb2N1bWVudE5hbWUASBZzZXREb2N1bWVudENvbnRlbnRIYXNoAEkNYmVnaW5Eb2N1bWVudABKDGZlZWRYbWxCeXRlcwBLC2VuZERvY3VtZW50AFMJYmVnaW5YbHN4AFQNZmVlZFhsc3hCeXRlcwBVCGZlZWRUZXh0AFoOZmx1c2hQYXJhZ3JhcGgAWwxzZXRNYXhFcnJvcnMAXgxzZXRUaHJlc2hvbGQAXw1zZXRNYXhSZXN1bHRzAGALc2V0TGFuZ3VhZ2UAYRFnZXRQYXR0ZXJuQmxvb21MbwBiEWdldFBhdHRlcm5CbG9vbUhpAGMGc2VhcmNoAGcLc2VhcmNoQmVnaW4AaAtzZWFyY2hTbGljZQBpD2dldFNlYXJjaEN1cnNvcgBuDmdldFNlYXJjaFRvdGFsAG8SZ2V0U3RhdEJsb29tVGVzdGVkAHASZ2V0U3RhdEJsb29tUGFzc2VkAHETZ2V0U3RhdEJpdGFwTWF0Y2hlZAByDWdldFJlc3VsdHNQdHIAcw9nZXRSZXN1bHRTdHJpZGUAdA5nZXRSZXN1bHRDb3VudAB1DmdldFJlc3VsdERvY0lkAHYRZ2V0UmVzdWx0TG9jYXRpb24Adw5nZXRSZXN1bHRTY29yZQB4DmdldFJlc3VsdFN0YXJ0AHkMZ2V0UmVzdWx0RW5kAHoRZ2V0UmVzdWx0Q2h1bmtJZHgAexNnZXRSZXN1bHRNYXRjaENvdW50AHwVZ2V0UmVzdWx0TWF0Y2hTdGFydEF0AH0TZ2V0UmVzdWx0TWF0Y2hFbmRBdAB+EGdldFJlc3VsdERvY05hbWUAfwpnZXRTbmlwcGV0AIABFmdldFNuaXBwZXRXaW5kb3dPZmZzZXQAgQEQZ2V0U25pcHBldFdpbmRvdwCCAQ1nZXRDaHVua0NvdW50AIMBC2dldERvY0NvdW50AIQBC2dldFRleHRVc2VkAIUBD2dldFRleHRDYXBhY2l0eQCGARRnZXRMYXN0SW5kZXhPdmVyZmxvdwCHAQxnZXRNYXhDaHVua3MAiAEKZ2V0TWF4RG9jcwCJAQ9nZXROYW1lQ2FwYWNpdHkAigEMZ2V0Q2h1bmtzUHRyAIsBEmdldENodW5rU3RydWN0U2l6ZQCMARBzZXRDYW5kaWRhdGVNYXNrAI0BEmNsZWFyQ2FuZGlkYXRlTWFzawCOAQhnZXREb2NJZACPARBnZXREb2NDaHVua0NvdW50AJABCmdldERvY05hbWUAkQEPZ2V0RG9jQ2h1bmtCYXNlAJIBEmdldENodW5rTG9jYXRpb25BdACTARFnZXRDaHVua0J5dGVMZW5BdACUAQ5nZXRDaHVua1RleHRBdACVAQ9saXN0Q2h1bmtzQmF0Y2gAlgEUZ2V0RG9jQ29udGVudEhhc2hQdHIAlwEUZ2V0RG9jQ29udGVudEhhc2hMZW4AmAEMaXNEb2NEZWxldGVkAJkBDnJlbW92ZURvY3VtZW50AJoBB2NvbXBhY3QAmwEMc25hcHNob3RTaXplAJwBDXNuYXBzaG90Q2h1bmsAnQEMcmVzdG9yZUJlZ2luAKEBC3Jlc3RvcmVGZWVkAKMBDXJlc3RvcmVDb21taXQApQEKX19kYXRhX2VuZAMCCtDMAqsBQAACQAJAIAIgAUkNACACIARNDQEgAiAEEIGAgIAAAAsgASACEIGAgIAAAAsgACACIAFrNgIEIAAgAyABajYCAAsJABCpgYCAAAALSwEBfyOAgICAAEEQayIEJICAgIAAIARBCGpBACABIAIgAxCAgICAACAEKAIMIQMgACAEKAIINgIAIAAgAzYCBCAEQRBqJICAgIAAC7AEAQJ/AkAgAg0AIABBADYCBCAAQQA6AAAPCwJAAkACQAJAAkAgAS0AACIDwCIEQX9KDQBB+IHAgAAgBBCEgICAAA0DQfuBwIAAIAQQhICAgAANAkH+gcCAACAEEISAgIAADQEgAEEBNgIEIABBADoAAA8LIABBATYCBCAAQQE6AAAgACAEQb9/akH/AXFBGklBBXQgBHI6AAEPCyAAQQA6AAACQCACQQNLDQAgAEEBNgIEDwsgAEEENgIEDwsgAkECTQ0BIAEsAAFBv39KDQEgASwAAkG/f0oNASAAQQM2AgQgAEEAOgAADwsCQCACQQFGDQACQEGBgsCAACABLQABIgIQhICAgAANACAAQQE2AgQgAEEAOgAADwsCQAJAAkACQCADQb1+ag4DAAEDAgsCQCACQYABc0H/AXEiAkE/Sw0AIABBAjYCBCAAIAJBuIDAgABqLQAAIgI6AAEgACACQQBHOgAADwsgAkHAABCFgICAAAALAkAgAkGAAXNB/wFxIgJBP0sNACAAQQI2AgQgACACQfiAwIAAai0AACICOgABIAAgAkEARzoAAA8LIAJBwAAQhYCAgAAACyAAQQI2AgQgAEEAOgAADwsCQCACQYABc0H/AXEiAkHAAEkNACACQcAAEIWAgIAAAAsgAEECNgIEIAAgAkG4gcCAAGotAAAiAjoAASAAIAJBAEc6AAAPCyAAQQE2AgQgAEEAOgAADwsgAEEBNgIEIABBADoAAAtJAQF/QQAhAgJAIAAtAAEgAUH/AXFLDQAgAC0AAiECAkAgAC0AAA0AIAFB/wFxIAJB/wFxTQ8LIAFB/wFxIAJB/wFxSSECCyACCwkAEKmBgIAAAAsrAAJAIAMgAU8NACABIAMQgYCAgAAACyAAIAMgAWs2AgQgACACIAFqNgIACzUBAX9BACECAkAgACgCACABSw0AIAAoAgQhAgJAIAAtAAgNACABIAJNDwsgASACSSECCyACCycAAkAgAkGBAkkNACACQYACEIGAgIAAAAsgACACNgIEIAAgATYCAAsnAAJAIAJBwQBJDQAgAkHAABCBgICAAAALIAAgAjYCBCAAIAE2AgALKQACQCACQYHAAEkNACACQYDAABCBgICAAAALIAAgAjYCBCAAIAE2AgALSQACQAJAIAIgAUkNACACQYCABEsNASAAIAIgAWs2AgQgACABQZCVwIAAajYCAA8LIAEgAhCBgICAAAALIAJBgIAEEIGAgIAAAAtMAQF/I4CAgIAAQRBrIgQkgICAgAAgBEEIaiACIAMgAUHAABCAgICAACAEKAIMIQEgACAEKAIINgIAIAAgATYCBCAEQRBqJICAgIAAC0oBAX8jgICAgABBEGsiAySAgICAACADQQhqIAIgAUGABBCCgICAACADKAIMIQEgACADKAIINgIAIAAgATYCBCADQRBqJICAgIAAC0oBAX8jgICAgABBEGsiAySAgICAACADQQhqIAIgAUHAABCCgICAACADKAIMIQEgACADKAIINgIAIAAgATYCBCADQRBqJICAgIAAC0oBAX8jgICAgABBEGsiAySAgICAACADQQhqIAIgAUGAAhCCgICAACADKAIMIQEgACADKAIINgIAIAAgATYCBCADQRBqJICAgIAAC08BAX8jgICAgABBEGsiAiSAgICAACACQQhqIAFBkJXAgABBgIAEEIKAgIAAIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokgICAgAALUQEBfyOAgICAAEEQayIDJICAgIAAIANBCGogASACQZCVwIAAQYCABBCAgICAACADKAIMIQIgACADKAIINgIAIAAgAjYCBCADQRBqJICAgIAAC0sBAX8jgICAgABBEGsiAySAgICAACADQQhqIAIgAUGAwAAQgoCAgAAgAygCDCEBIAAgAygCCDYCACAAIAE2AgQgA0EQaiSAgICAAAsqAAJAIAEgA0cNAAJAIAFFDQAgACACIAH8CgAACw8LIAEgAxCBgICAAAALPAEBf0EALQD4w8WAABoCQCABEJWAgIAAIgJFDQAgAkF8ai0AAEEDcUUNACABRQ0AIAJBACAB/AsACyACC/YTAgh/AX4CQAJAAkACQAJAAkAgAEH1AUkNAEEAIQEgAEFQQQAoAoiVwIAAa0F3cUF9aiICQUAgAkFASRtPDQUgAEELakF4cSEDQQAoAuCUwIAAIgRFDQNBACADayEAAkAgAxClgICAACIFQQJ0QcSRwIAAaigCACICRQ0AQQAhASADQQBBGSAFQQF2ayAFQR9GG3QhBkEAIQcDQAJAIAIiAigCBEF4cSIIIANJDQAgCCADayIIIABPDQAgCCEAIAIhByAIDQBBACEAIAIhBwwFCyABIAIoAhQiCCAIIAIgBkEddkEEcWooAhAiAkYbIAEgCBshASAGQQF0IQYgAg0ACwJAIAFFDQAgASECDAQLIAcNAgtBACEHIARBAiAFdCIBQQAgAWtycSIBRQ0BIAFoQQJ0QcSRwIAAaigCACECDAILAkBBACgC3JTAgABBECAAQQtqQfgDcSAAQQtJGyIDQQN2IgF2IgBBA3FFDQAgAEF/c0EBcSABaiICQQN0IgFB1JLAgABqIAFB3JLAgABqKAIAIgBBCGooAgAgAhCngICAACAAIAFBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQMBAsgA0EAKALklMCAAE0NAgJAIAANAEEAKALglMCAACIARQ0DIABoQQJ0QcSRwIAAaigCACICKAIEQXhxIANrIQEgAiEHAkADQAJAIAIoAhAiAA0AIAIoAhQiAEUNAgsgACgCBEF4cSADayICIAEgAiABSSICGyEBIAAgByACGyEHIAAhAgwACwsgBxCigICAAAJAAkAgAUEQSQ0AIAcgA0EDcjYCBCAHIANqIgAgAUEBcjYCBCAAIAFqIAE2AgAgACABEJ6AgIAADAELIAcgASADaiIAQQNyNgIEIAcgAGoiACAAKAIEQQFyNgIECyAHQQhqIgFFDQMMBQtBAiABdCICQQAgAmtyIAAgAXRxaCICQQN0IgFB1JLAgABqIAFB3JLAgABqKAIAIgBBCGooAgAgAhCngICAACAAIANBA3I2AgQgACADaiIHIAEgA2siAkEBcjYCBCAAIAFqIAI2AgAgByACEJ6AgIAADAMLQQAhAgsCQANAIAIiAUUNASAHIAEgByABKAIEQXhxIgIgA2siBiAASSIIGyACIANJIgIbIQcgACAGIAAgCBsgAhshACABKAIQIgINACABKAIUIQIMAAsLIAdFDQACQEEAKALklMCAACIBIANJDQAgACABIANrTw0BCyAHEKKAgIAAAkACQCAAQRBJDQAgByADQQNyNgIEIAcgA2oiASAAQQFyNgIEIAEgAGog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AEEAKAL8lMCAAE0NAEEAQX82AvyUwIAACw8LIAEgABCfgICAAA8LQQAgATYC7JTAgABBAEEAKALklMCAACAAaiIANgLklMCAACABIABBAXI2AgQgASAAaiAANgIADwsQo4CAgAAAC4wBAQJ/I4CAgIAAQSBrIQFBACECAkADQCACQSBGDQEgASACakIANwIAIAJBCGohAgwACwsgAEIANwIAIABCADcCECAAIAEpAgA3AhggAEEANgI4IABBBmpCADcBACAAQSBqIAFBCGopAgA3AgAgAEEoaiABQRBqKQIANwIAIABBMGogAUEYaikCADcCAAs8AQF/AkBBACgC5JTAgAAiAkUNAEEAKALslMCAACACEJ+AgIAAC0EAIAA2AuyUwIAAQQAgATYC5JTAgAALfAECfwJAAkBBACgC3JTAgAAiAkEBIAFBA3Z0IgNxDQBBACACIANyNgLclMCAACABQXhxQdSSwIAAaiIBIQIMAQsgAUF4cSICQdSSwIAAaiEBIAJB3JLAgABqKAIAIQILIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCAsiAAJAIAFBgAJJDQAgACABEKGAgIAADwsgACABEJ+AgIAAC4gCAQR/IABCADcCECAAIAEQpYCAgAAiAjYCHCACQQJ0QcSRwIAAaiEDAkBBACgC4JTAgABBASACdCIEcQ0AIAMgADYCACAAIAM2AhggACAANgIMIAAgADYCCEEAQQAoAuCUwIAAIARyNgLglMCAAA8LIAFBAEEZIAJBAXZrIAJBH0YbdCECIAMoAgAhBANAAkAgBCIDKAIEQXhxIAFHDQAgAygCCCICIAA2AgwgAyAANgIIIABBADYCGCAAIAM2AgwgACACNgIIDwsgAkEddiEEIAJBAXQhAiADIARBBHFqIgUoAhAiBA0ACyAFQRBqIAA2AgAgACADNgIYIAAgADYCDCAAIAA2AggLyAIBBX8gACgCGCEBAkACQAJAIABBDGooAgAiAiAARw0AIABBFEEQIAAoAhQiAhtqKAIAIgMNAUEAIQIMAgsgAEEIaigCACIDIAI2AgwgAiADNgIIDAELIABBFGogAEEQaiACGyEEA0AgBCEFIAMiAkEUaiEEIAIoAhQiAw0AIAJBEGohBCACKAIQIgMNAAsgBUEANgIACwJAAkAgAUUNAAJAAkAgACAA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CyADIQQgAUEQaiADai0AAEH8AEcNAQsCQAJAAkAgBkEISQ0AIAQgB0kNASABQRBqIAdqIAQgB2sQuYCAgABFDQJBAEEAKAKks8WAAEEBcjYCpLPFgAAMAgsgBCAHSQ0AIAFBEGogB2ogBCAHayAGQQh0QaizxYAAahC6gICAACIDRQ0BIAZBAXRBqMPFgABqIAM7AQAgBkEBaiEGDAELIAcgBBCBgICAAAALIARBAWohBwwACwtBACAGOgChs8WAAAwBC0F/IQQLIAFBkAhqJICAgIAAIAQLCwBBAC0AoLPFgAALCwBBAC0AobPFgAALCwBBACgCpLPFgAALoQEBBH8jgICAgABBEGsiASSAgICAAEEAIQICQAJAIABBAC0AobPFgABPDQAgAEEHSw0BIAFBCGogAEEBdEGow8WAAGovAQAiAhCQgICAACABKAIMIQMgASgCCCEEIAEgAEEIdEGos8WAAGogAhCIgICAACAEIAMgASgCACABKAIEEJOAgIAACyABQRBqJICAgIAAIAIPCyAAQQgQhYCAgAAAC64BAQV/I4CAgIAAQRBrIgEkgICAgABBACECAkACQCAAQQAtAKGzxYAATw0AIABBB0sNAUEBIQIgAUEIaiAAQQF0QajDxYAAai8BACIDEJCAgIAAIAEoAgwhBCABKAIIIQUgASAAQQh0QaizxYAAaiADEIiAgIAAIAUgBCABKAIAIAEoAgQQk4CAgAAgAxDBgICAABoLIAFBEGokgICAgAAgAg8LIABBCBCFgICAAAALigQDA38BfgN/I4CAgIAAQcAUayIBJICAgIAAAkACQAJAIAANAEEAIQIMAQtBACECQQAgAEGAgAQgAEGAgARJGzYC0IjAgABBAC0A6IrAgAAhAwJAQYACRQ0AIAFBIGpBAEGAAvwLAAsgAUEYaiABQSBqIABBgAIgAEGAAkkbIgAQj4CAgAAgASgCGCABKAIcQZCVwIAAIAAQk4CAgAACQANAIAJBgAJGDQECQEHAAEUNACABQaACaiACakEAQcAA/AsACyACQcAAaiECDAALC0IAIQQgAUGoBGpCADcDACABQgA3A6AEIAFBEGogAUEgaiAAEIiAgIAAQQAhAiABQaAEaiEAIAFBoAJqIQUgASgCECABKAIUIAFBoAJqIAFBoARqEOSAgIAAIQYgA0H/AXFBAUch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IAEgBGshAyABIARJDQEgACADaiACQbiHwIAAaigCACAEEKqBgIAARQ0DCyACQQhqIQIMAQsLIAMgARCBgICAAAALIANBASADQQFLGyEBCyABC4kCAwJ/An4CfyOAgICAAEGQEGsiAySAgICAAEEAIQQCQEGAEEUNACADQQhqQQBBgBD8CwALQgAhBUIAIQYDQAJAAkAgBCACTw0AIAVCwABUDQELAkBBgBBFDQAgACADQQhqQYAQ/AoAAAsgACAGNwOAECAAIAU+AogQIAAgBCACSSAFQsAAUXE6AIwQIANBkBBqJICAgIAADwsgAyAEIAEgAhDrgICAACADQYgQaiADKAIAIAMoAgQQg4CAgAAgAygCjBAgBGohBCADLQCIEEEBRw0AIANBCGogAy0AiRAiB0EDdGoiCCAIKQMAQgEgBYaENwMAIAVCAXwhBUIBIAethiAGhCEGDAALCycAAkAQ6ICAgAANAEEADwsDQEF/EOmAgIAARQ0AC0EAKALch8CAAAuRCgMFfwF+DH8jgICAgABB4BhrIgAkgICAgABBACEBQQBCADcC1IjAgABBAEEAOgD0isCAAEEAQQA2AuyKwIAAQQBBADYC3IjAgABBAEEANgLch8CAAAJAQQAoAtCIwIAAIgJFDQBBACgCyIfAgABFDQBBACEBAkBBgAJFDQAgAEEoakEAQYAC/AsACyAAQSBqIABBKGogAkGAAiACQYACSRsiAhCPgICAACAAKAIgIAAoAiRBkJXAgAAgAhCTgICAAAJAA0AgAUGAAkYNAQJAQcAARQ0AIABBqAJqIAFqQQBBwAD8CwALIAFBwABqIQEMAAsLIABBsARqQgA3AwAgAEIANwOoBCAAQRhqIABBKGogAhCIgICAAAJAIAAoAhggACgCHCAAQagCaiAAQagEahDkgICAACIDDQBBACEBDAELAkBBAC0A6IrAgABBAUcNAEEAIQEgAEGoAmohBCAAQagEaiECA0AgAyABRg0BAkAgAUEERg0AIABBEGogBCACKAIAEI6AgIAAIAIgACgCECAAKAIUEOWAgIAANgIAIAJBBGohAiAEQcAAaiEEIAFBAWohAQwBCwtBBEEEEIWAgIAAAAtBACEBAkADQCABQfADRg0BAkBB/ABFDQAgAEG4BGogAWpBAEH8APwLAAsgAUH8AGohAQwACwtCACEFIABBqAhqQQhqQgA3AwAgAEG4CGpBCGpCADcDACAAQgA3A6gIIABCADcDuAhBACECAkADQAJAAkACQCACIANGDQAgAkEERg0EIABBCGogAEGoAmogAkEGdGogAEGoBGogAkECdCIGaigCABCJgICAACAAQcgIaiAAKAIIIgcgACgCDCIIEOaAgIAAQQAhAUEAIQQgACgC0BgiCUEGSQ0CQQAoAsSIwIAAIQQgCUEJSQ0BIARBAyAEQQNJGyEEDAILAkBB8ANFDQBBpI3AgAAgAEG4BGpB8AP8CgAAC0EAIABBqAhqQQhqKQMANwKckcCAAEEAIAApA6gINwKUkcCAAEEAIAApA7gINwKkkcCAAEEAIABBuAhqQQhqKQMANwKskcCAAAJAQYACRQ0AQfWKwIAAIABBqAJqQYAC/AoAAAtBACADNgKIjcCAAEEAIAU3A5iNwIAAQQEhAUEAQQE6APSKwIAAQQAgAEGoBGpBCGopAwA3A4CNwIAAQQAgACkDqAQ3A/iMwIAAQQBBAC8ByIjAgAA7AYyNwIAAQQBBACgCxIjAgAA2ApCNwIAAQQBBACgCyIfAgAAiAjYC8IrAgABBACACNgLUiMCAAAwECyAEQQBHIQQLIAJBAWohCiAAKQPIGCAFhCEFIABBuAhqIAZqIAQ2AgAgAEG4BGogAkH8AGxqIQtBACEJQQAhDANAIAxBPUshDSAJIQQCQANAIAQhDiAQIQ8gCSERIAIhECABIAhPDQEgDQ0BIAAgASAHIAgQhoCAgAAgAEHYGGogACgCACAAKAIEEIOAgIAAIAAoAtwYIAFqIQFBACEJQQAhBCAALQDYGEEBRw0AAkAgAC0A2RgiAkFQakH/AXFBCkkNAEEAIQQgAkFfcUG/f2pB/wFxQRlLDQELQQEhCSARIQQgESAOcUEBcUUNAAtBASEJIAsgDEEBdGogDyAQIAIQqYCAgAA7AQAgDEEBaiEMDAELCyAAQagIaiAGaiAMNgIAIAohAgwACwtBBEEEEIWAgIAAAAsgAEHgGGokgICAgAAgAQvfKQoGfwF+An8BfgF/AX4WfwN+An8CfiOAgICAAEGg+QBrIgEkgICAgAACQAJAQQAtAPSKwIAARQ0AAkBBgAJFDQAgAUGYAWpB9YrAgABBgAL8CgAAC0EAIQIgAUGIB2pBCGoiA0EAKQOAjcCAADcDACABQQApA/iMwIAANwOIB0EAKAKIjcCAACEEQQAvAYyNwIAAIQVBACgCkI3AgAAhBkEAKQOYjcCAACEHAkBB8ANFDQAgAUGYA2pBpI3AgABB8AP8CgAACyABQZgHakEIakEAKQKckcCAADcDACABQagHakEIakEAKQKskcCAADcDACABQQApApSRwIAANwOYByABQQApAqSRwIAANwOoByABQZABaiABQZgBaiABKAKIByIIEImAgIAAIAFB+McAaiABKAKQASABKAKUARDmgICAACABQYgBaiABQdgBaiABKAKMBxCJgICAACABQYjYAGogASgCiAEgASgCjAEQ5oCAgAAgAUGAAWogAUGYAmogAygCABCJgICAACABQZjoAGogASgCgAEgASgChAEQ5oCAgAAgAUH4AGogAUHYAmogASgClAcQiYCAgAAgAUHoN2ogASgCeCABKAJ8EOaAgIAAAkBBkBBFIgMNACABQbgHaiABQfjHAGpBkBD8CgAACwJAIAMNACABQbgHakGQEGogAUGI2ABqQZAQ/AoAAAsCQCADDQAgAUHYJ2ogAUGY6ABqQZAQ/AoAAAtBACgC8IrAgAAiCa0iCkEAKALsisCAACILrSAArXwiDCAKIAxUG6chDUIAIQwDQCABQagHaiACQQJ0aiEAAkADQAJAIAQgAiIDRw0AIAZBAyAGQQNJGyEOIAsgDSALIA1LGyEPIARBAWohECAGQQBHIREgCEF/cyESIARBf2pB/////wNxIRMgAUGo+ABqQQRqIRQgBUH//wNxIRVCACEKQX8hBkF/IRYDQEEAKALQh8CAACEXQQAoAriHwIAAIRhBAC0AxMPFgABBAXEhGUEAIQMgFiEaAkACQAJAAkACQANAIAMhGyALQQV0IRwgDSALayEdIAshHgJAA0ACQAJAAkACQAJAIB4gD0cNAEEAIQNBACAPNgLsisCAACAPIAlJDRNBAEEAOgDEw8WAAEEAQQA6APSKwIAAQQAoAtyHwIAAIgNBPGxBhNXEgABqIQAgA0HIAUshHwNAIANBAkkNEwJAQTxFIgINACABQdj4AGpBwNXEgABBPPwKAAALIANBf2ohAyAfDQICQCACDQBBwNXEgAAgAEE8/AoAAAsCQCACDQAgACABQdj4AGpBPPwKAAALIAMQ6oCAgAAgAEFEaiEADAALCyAe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AyAbSxshAgJAAkACQAJAAkBBACgC3IfAgAAiA0UNACADQQAoAsyIwIAASQ0CQQAvAczVxIAAIQAMAQtBACEAQQAoAsyIwIAADQILIABB//8DcSAcQf//A3FPDQNBACAbNgLU1cSAAEEAIAI2AtDVxIAAQQAgHDsBzNXEgABBACAiNgLI1cSAAEEAIB42AsTVxIAAQQAgFjYCwNXEgABBACABKQK4eDcC2NXEgABBACAENgL41cSAAEEAIAFBuPgAakEIaikCADcC4NXEgABBACABQbj4AGpBEGopAgA3AujVxIAAQQAgAUG4+ABqQRhqKQIANwLw1cSAACADEOqAgIAADAMLIANByAFPDQELQQAgA0EBajYC3IfAgAAgA0E8bCIAQdTVxIAAaiAbNgIAIABB0NXEgABqIAI2AgAgAEHM1cSAAGogHDsBACAAQcjVxIAAaiAiNgIAIABBxNXEgABqIB42AgAgAEHA1cSAAGogFjYCACAAQdjVxIAAaiABKQK4eDcCACAAQeDVxIAAaiABQbj4AGpBCGopAgA3AgAgAEHo1cSAAGogAUG4+ABqQRBqKQIANwIAIABB8NXEgABqIAFBuPgAakEYaikCADcCACAAQfjVxIAAaiAENgIAA0AgA0UNAiADQTxsIgBBzNXEgABqLwEAIANBf2pBAXYiA0E8bCICQczVxIAAai8BAE8NAiAAQcDVxIAAaiEfAkBBPEUiAA0AIAFBiNgAaiAfQTz8CgAACyACQcDVxIAAaiECAkAgAA0AIB8gAkE8/AoAAAsgAA0AIAIgAUGI2ABqQTz8CgAADAALCwsgA0HIARCFgICAAAALIANBBEYNASADQQFqIQIgACgCACEfIABBBGohACAfDQALIAFBuAdqIANBkBBsaikDgBAgDIQhDAwBCwsgBEEEIARBBEkbQQQQhYCAgAAAC0EBIQMLIAFBoPkAaiSAgICAACADC+MCAQV/I4CAgIAAQcAAayIBJICAgIAAQQAhAgJAAkACQANAIAIhAwJAIAJBAXQiBEEBciIFIABPDQACQCACQeMASw0AIAUgAiAFQTxsQczVxIAAai8BACACQTxsQczVxIAAai8BAEkbIQMMAQsgBUHIARCFgICAAAALAkAgBEECaiIEIABPDQAgAkHiAEsNAiADQcgBTw0DIAQgAyAEQTxsQczVxIAAai8BACADQTxsQczVxIAAai8BAEkbIQMLIAMgAkYNAyACQTxsQcDVxIAAaiECAkBBPEUiBA0AIAFBBGogAkE8/AoAAAsCQCADQcgBTw0AIANBPGxBwNXEgABqIQUCQCAEDQAgAiAFQTz8CgAACyADIQIgBA0BIAUgAUEEakE8/AoAACADIQIMAQsLIANByAEQhYCAgAAACyAEQcgBEIWAgIAAAAsgA0HIARCFgICAAAALIAFBwABqJICAgIAACysAAkAgAyABTw0AIAEgAxCBgICAAAALIAAgAyABazYCBCAAIAIgAWo2AgALXAEDf0EAIQICQAJAIAEtAAhFDQAMAQsgASgCACIDIAEoAgQiBEsNAAJAIAMgBEkNAEEBIQIgAUEBOgAIDAELQQEhAiABIANBAWo2AgALIAAgAzYCBCAAIAI2AgALKwAgAEH/AXFB3wBGIABBUGpB/wFxQQpJIABB3wFxQb9/akH/AXFBGklycgsLAEEAKALsisCAAAsLAEEAKALwisCAAAsLAEEAKALUiMCAAAsLAEEAKALYiMCAAAsLAEEAKALciMCAAAsIAEHA1cSAAAsEAEE8CwsAQQAoAtyHwIAAC4ABAQF/I4CAgIAAQcAAayIBJICAgIAAAkACQAJAIABBACgC3IfAgABJDQAgAUEEahCdgICAAAwBCyAAQccBSw0BQTxFDQAgAUEEaiAAQTxsQcDVxIAAakE8/AoAAAsgASgCBCEAIAFBwABqJICAgIAAIAAPCyAAQcgBEIWAgIAAAAuAAQEBfyOAgICAAEHAAGsiASSAgICAAAJAAkACQCAAQQAoAtyHwIAASQ0AIAFBBGoQnYCAgAAMAQsgAEHHAUsNAUE8RQ0AIAFBBGogAEE8bEHA1cSAAGpBPPwKAAALIAEoAgwhACABQcAAaiSAgICAACAADwsgAEHIARCFgICAAAALgAEBAX8jgICAgABBwABrIgEkgICAgAACQAJAAkAgAEEAKALch8CAAEkNACABQQRqEJ2AgIAADAELIABBxwFLDQFBPEUNACABQQRqIABBPGxBwNXEgABqQTz8CgAACyABLwEQIQAgAUHAAGokgICAgAAgAA8LIABByAEQhYCAgAAAC4ABAQF/I4CAgIAAQcAAayIBJICAgIAAAkACQAJAIABBACgC3IfAgABJDQAgAUEEahCdgICAAAwBCyAAQccBSw0BQTxFDQAgAUEEaiAAQTxsQcDVxIAAakE8/AoAAAsgASgCFCEAIAFBwABqJICAgIAAIAAPCyAAQcgBEIWAgIAAAAuAAQEBfyOAgICAAEHAAGsiASSAgICAAAJAAkACQCAAQQAoAtyHwIAASQ0AIAFBBGoQnYCAgAAMAQsgAEHHAUsNAUE8RQ0AIAFBBGogAEE8bEHA1cSAAGpBPPwKAAALIAEoAhghACABQcAAaiSAgICAACAADwsgAEHIARCFgICAAAALgAEBAX8jgICAgABBwABrIgEkgICAgAACQAJAAkAgAEEAKALch8CAAEkNACABQQRqEJ2AgIAADAELIABBxwFLDQFBPEUNACABQQRqIABBPGxBwNXEgABqQTz8CgAACyABKAIIIQAgAUHAAGokgICAgAAgAA8LIABByAEQhYCAgAAAC4ABAQF/I4CAgIAAQcAAayIBJICAgIAAAkACQAJAIABBACgC3IfAgABJDQAgAUEEahCdgICAAAwBCyAAQccBSw0BQTxFDQAgAUEEaiAAQTxsQcDVxIAAakE8/AoAAAsgASgCPCEAIAFBwABqJICAgIAAIAAPCyAAQcgBEIWAgIAAAAuvAQEBfyOAgICAAEHAAGsiAiSAgICAAAJAAkACQCAAQQAoAtyHwIAASQ0AIAJBBGoQnYCAgAAMAQsgAEHHAUsNAUE8RQ0AIAJBBGogAEE8bEHA1cSAAGpBPPwKAAALQQAhAAJAAkAgASACKAI8Tw0AIAFBBE8NASACQQRqIAFBA3RqKAIYIQALIAJBwABqJICAgIAAIAAPCyABQQQQhYCAgAAACyAAQcgBEIWAgIAAAAuyAQEBfyOAgICAAEHAAGsiAiSAgICAAAJAAkACQCAAQQAoAtyHwIAASQ0AIAJBBGoQnYCAgAAMAQsgAEHHAUsNAUE8RQ0AIAJBBGogAEE8bEHA1cSAAGpBPPwKAAALQQAhAAJAAkAgASACKAI8Tw0AIAFBBE8NASACQQRqIAFBA3RqQRxqKAIAIQALIAJBwABqJICAgIAAIAAPCyABQQQQhYCAgAAACyAAQcgBEIWAgIAAAAvxAgEIfyOAgICAAEHgAGsiASSAgICAAAJAAkACQAJAAkACQCAAQQAoAtyHwIAASQ0AIAFBJGoQnYCAgAAMAQsgAEHHAUsNAUE8RQ0AIAFBJGogAEE8bEHA1cSAAGpBPPwKAAALIAEoAiQhAkEAIQNBACgC0IfAgAAhBEEAIQVBACEGAkADQCAEIAYiAEYNASABQRhqELGAgIAAIAAgASgCHCIGTw0DIABBAWohBiABKAIYIgcgBWohCCAFQRRqIQUgCCgCACACRw0ACyAHIABBFGxqIgUoAgQhACABQRBqIAUvAQgiAxCQgICAACABKAIUIQYgASgCECEIIAFBCGoQs4CAgAAgACADaiIFIABJDQMgBSABKAIMIgRLDQQgCCAGIAEoAgggAGogAxCTgICAAAsgAUHgAGokgICAgAAgAw8LIABByAEQhYCAgAAACyAAIAYQhYCAgAAACyAAIAUQgYCAgAAACyAFIAQQgYCAgAAAC8sCAQZ/I4CAgIAAQeAAayIBJICAgIAAAkACQAJAAkACQAJAIABBACgC3IfAgABJDQAgAUEkahCdgICAAAwBCyAAQccBSw0BQTxFDQAgAUEkaiAAQTxsQcDVxIAAakE8/AoAAAtBACEAAkAgASgCKCICQQAoAsiHwIAATw0AIAFBGGoQr4CAgAAgAiABKAIcIgBPDQIgASgCGCACQQV0aiIAKAIQIQIgAUEQaiAAKAIUIgBBgIAEIABBgIAESRsiABCQgICAACABKAIUIQMgASgCECEEIAFBCGoQsICAgAAgACACaiIFIABJDQMgBSABKAIMIgZLDQQgBCADIAEoAgggAmogABCTgICAAAsgAUHgAGokgICAgAAgAA8LIABByAEQhYCAgAAACyACIAAQhYCAgAAACyACIAUQgYCAgAAACyAFIAYQgYCAgAAACwsAQQAoAsDDxYAAC4oJAQt/I4CAgIAAQYABayIDJICAgIAAQQBBADYCwMPFgAACQAJAAkACQAJAAkACQAJAAkACQCAAQQAoAtyHwIAASQ0AIANBxABqEJ2AgIAADAELIABBxwFLDQFBPEUNACADQcQAaiAAQTxsQcDVxIAAakE8/AoAAAtBACEEIAMoAkgiAEEAKALIh8CAAE8NBCADQThqEK+AgIAAIAAgAygCPCIETw0BQQAhBSADKAJYIQYgAygCOCAAQQV0aiIAKAIUIQcgACgCECEIIAMoAlQiACABTQ0DQQAgACABayIEIAQgAEsbIgUgCGohBEEAIQADQCAAQRNLDQQgBSAAaiIJIAdPDQQgA0EwahCwgICAACAEIABqIgEgAygCNCIKTw0DAkACQCADKAIwIARqIABqLQAAIgFBCkYNACABQSBHDQELIAlBAWohBQwFCyAAQQFqIQAMAAsLIABByAEQhYCAgAAACyAAIAQQhYCAgAAACyABIAoQhYCAgAAACyAHIAYgAmoiACAHIABJGyEBAkACQAJAIAAgB08NACAHIAFrIgBBFCAAQRRJGyEKIAEgCGohBEEAIQADQCAKIABGDQEgA0EoahCwgICAACAEIABqIgkgAygCLCICTw0CAkAgAygCKCAEaiAAai0AACIJQQpGDQAgCUEgRg0AIABBAWohAAwBCwsgACABaiEBCyAFIQQCQANAIAQiAEEARyEEIABFDQMgBSAHTw0DIANBIGoQsICAgAAgCCAAaiIEIAMoAiQiCU8NASAAQX9qIQQgAygCICAIaiAAaiwAAEFASA0AC0EBIQQMAgsgBCAJEIWAgIAAAAsgCSACEIWAgIAAAAsCQCABIAdPDQAgASAAIAEgAEkbIQoDQAJAIAEgAEsNACAKIQEMAgsgA0EYahCwgICAAAJAIAggAWoiBSADKAIcIglPDQAgAygCGCAIaiABaiwAAEFATg0CIAFBf2ohAQwBCwsgBSAJEIWAgIAAAAsgASAAIAEgAEsbIQkCQAJAIAQNAEEAIQUMAQtBfCEEA0ACQCAEDQBBBCEFDAILIARBlJXAgABqIARBnIDAgABqLQAAOgAAIARBAWohBAwACwsgA0EQaiAFQfz/A0GAgAQgCSAHSRsgBWsiAiAJIABrIgQgAiAESRsiCiAFaiIEEJGAgIAAIAMoAhQhCyADKAIQIQwgA0EIahCwgICAACAKIAAgCGoiBmoiCCAKSQ0CIAggAygCDCINSw0DIAwgCyADKAIIIAZqIAoQk4CAgAACQCAJIAdPDQAgBEH8/wNLDQBBACEEIAVBACABIABrIgcgByABSyIJGyIIIAIgCCACSRtqIQECQANAIARBBEYNASABIARqIghBgIAETw0EIAhBkJXAgABqIARBnIDAgABqLQAAOgAAIARBAWohBAwACwsgBUEAIAcgCRsiCCACIAggAkkbaiAEaiEEC0EAIAA2AsDDxYAACyADQYABaiSAgICAACAEDwsgCEGAgAQQhYCAgAAACyAGIAgQgYCAgAAACyAIIA0QgYCAgAAACwsAQQAoAsiHwIAACwsAQQAoAtCHwIAACwsAQQAoAsyHwIAACwsAQQAoAsCHwIAACwsAQQAoAqCNwIAACwsAQQAoAryHwIAACwsAQQAoAriHwIAACwsAQQAoAsSHwIAACzQBAn8jgICAgABBEGsiACSAgICAACAAQQhqEK+AgIAAIAAoAgghASAAQRBqJICAgIAAIAELBABBIAusAQEEfyOAgICAAEEQayIBJICAgIAAIAFBCGoQtoCAgAAgASgCCCECAkAgASgCDCIDIABBgIAEIABBgIAESRtBAnYiBCADIARJG0ECdCIERQ0AIAJBkJXAgAAgBPwKAAALIANBAnQgBGshAyACIARqIQQCQANAIANFDQEgBEEANgIAIANBfGohAyAEQQRqIQQMAAsLQQAgAEEDSzoAxMPFgAAgAUEQaiSAgICAAAsNAEEAQQA6AMTDxYAAC20BAn8jgICAgABBEGsiASSAgICAAEF/IQICQAJAIABBACgC0IfAgABPDQAgAUEIahCxgICAACAAIAEoAgwiAk8NASABKAIIIABBFGxqKAIAIQILIAFBEGokgICAgAAgAg8LIAAgAhCFgICAAAALbQECfyOAgICAAEEQayIBJICAgIAAQQAhAgJAAkAgAEEAKALQh8CAAE8NACABQQhqELGAgIAAIAAgASgCDCICTw0BIAEoAgggAEEUbGooAhAhAgsgAUEQaiSAgICAACACDwsgACACEIWAgIAAAAviAQEGfyOAgICAAEEgayIBJICAgIAAQQAhAgJAAkACQAJAIABBACgC0IfAgABPDQAgAUEYahCxgICAACAAIAEoAhwiAk8NASABKAIYIABBFGxqIgIoAgQhACABQRBqIAIvAQgiAhCQgICAACABKAIUIQMgASgCECEEIAFBCGoQs4CAgAAgACACaiIFIABJDQIgBSABKAIMIgZLDQMgBCADIAEoAgggAGogAhCTgICAAAsgAUEgaiSAgICAACACDwsgACACEIWAgIAAAAsgACAFEIGAgIAAAAsgBSAGEIGAgIAAAAttAQJ/I4CAgIAAQRBrIgEkgICAgABBACECAkACQCAAQQAoAtCHwIAATw0AIAFBCGoQsYCAgAAgACABKAIMIgJPDQEgASgCCCAAQRRsaigCDCECCyABQRBqJICAgIAAIAIPCyAAIAIQhYCAgAAAC6wBAQN/I4CAgIAAQRBrIgIkgICAgABBfyEDAkACQAJAIABBACgC0IfAgABPDQAgAkEIahCxgICAACAAIAIoAgwiBE8NASABIAIoAgggAEEUbGoiACgCEE8NACACEK+AgIAAIAAoAgwgAWoiACACKAIEIgNPDQIgAigCACAAQQV0aigCDCEDCyACQRBqJICAgIAAIAMPCyAAIAQQhYCAgAAACyAAIAMQhYCAgAAAC6wBAQN/I4CAgIAAQRBrIgIkgICAgABBACEDAkACQAJAIABBACgC0IfAgABPDQAgAkEIahCxgICAACAAIAIoAgwiBE8NASABIAIoAgggAEEUbGoiACgCEE8NACACEK+AgIAAIAAoAgwgAWoiACACKAIEIgNPDQIgAigCACAAQQV0aigCFCEDCyACQRBqJICAgIAAIAMPCyAAIAQQhYCAgAAACyAAIAMQhYCAgAAAC68CAQV/I4CAgIAAQSBrIgIkgICAgABBACEDAkACQAJAAkACQCAAQQAoAtCHwIAATw0AIAJBGGoQsYCAgAAgACACKAIcIgRPDQEgASACKAIYIABBFGxqIgAoAhBPDQAgAkEQahCvgICAACAAKAIMIAFqIgAgAigCFCIDTw0EIAIoAhAgAEEFdGoiAygCECEAIAJBCGogAygCFCIDQYCABCADQYCABEkbIgMQkICAgAAgAigCDCEEIAIoAgghBSACELCAgIAAIAMgAGoiASADSQ0CIAEgAigCBCIGSw0DIAUgBCACKAIAIABqIAMQk4CAgAALIAJBIGokgICAgAAgAw8LIAAgBBCFgICAAAALIAAgARCBgICAAAALIAEgBhCBgICAAAALIAAgAxCFgICAAAALnQQBCn8jgICAgABBwABrIgMkgICAgABBACEEAkAgAEEAKALQh8CAAE8NACADQTBqELGAgIAAAkACQAJAIAAgAygCNCIFTw0AIAEgAygCMCAAQRRsaiIGKAIQIgVPDQNBACEAQQBBfyABIAJqIgIgAiABSRsiAiAFIAIgBUkbIgIgAWsiBSAFIAJLGyEEIAYoAgwgAWoiB0EFdEEUciEGQQAhAQNAIAQgAEYNBCADQShqEK+AgIAAAkACQCAHIABqIgIgAygCLCIFTw0AIAMoAiggBmoiCCgCACICIAFBCGoiCWoiCkGAgARNDQEgACEEDAYLIAIgBRCFgICAAAALIAhBfGooAgAhBSAIQXhqKAIAIQggA0EgaiABIAFBBGoiCxCRgICAACADKAIkIQEgAygCICEMIAMgAjYCPCAMIAEgA0E8akEEEJOAgIAAIANBGGogCyAJEJGAgIAAIAMoAhwhASADKAIYIQsgAyAINgI8IAsgASADQTxqQQQQk4CAgAAgA0EQaiAJIAoQkYCAgAAgAygCFCEIIAMoAhAhCSADQQhqELCAgIAAIAUgAmoiASAFSQ0CIAEgAygCDCILSw0DIAkgCCADKAIIIAVqIAIQk4CAgAAgBkEgaiEGIABBAWohACAKIQEMAAsLIAAgBRCFgICAAAALIAUgARCBgICAAAALIAEgCxCBgICAAAALIANBwABqJICAgIAAIAQLagECfyOAgICAAEEQayIBJICAgIAAQQAhAgJAAkAgAEEAKALQh8CAAE8NACABQQhqELKAgIAAIAAgASgCDCICTw0BIAEoAgggAEEDdGohAgsgAUEQaiSAgICAACACDwsgACACEIWAgIAAAAsEAEEIC3ABAn8jgICAgABBEGsiASSAgICAAEEAIQICQAJAIABBACgC0IfAgABPDQAgAUEIahCxgICAACAAIAEoAgwiAk8NASABKAIIIABBFGxqLwEKQQFxIQILIAFBEGokgICAgAAgAg8LIAAgAhCFgICAAAAL/wEBCH8jgICAgABBEGsiASSAgICAAEEAIQJBACgC0IfAgAAhA0EAIQRBACEFAkACQAJAA0AgAyAFIgZGDQEgAUEIahCxgICAACAGIAEoAgwiBU8NAyAGQQFqIQUgASgCCCIHIARqIQggBEEUaiEEIAgoAgAgAEcNAAtBASECIAcgBkEUbGoiBiAGLwEKQQFyOwEKIABBACgCuIfAgABPDQAgARC1gICAACAAQQZ2IgYgASgCBCIETw0BIAEoAgAgBkEDdGoiBiAGKQMAQgEgAEE/ca2GhDcDAAsgAUEQaiSAgICAACACDwsgBiAEEIWAgIAAAAsgBiAFEIWAgIAAAAv+BwIVfwJ+I4CAgIAAQdAAayIAJICAgIAAQQAoAtCHwIAAIQEgAEE4ahC1gICAACAAKAI8QQN0IQIgACgCOCEDAkADQAJAIAINAEEAIQRBACEFQQAhBkEAIQNBACEHDAILIANCADcDACACQXhqIQIgA0EIaiED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IAJBACgCzIfAgAA2AvABIAggBCACQfABakEEEJOAgIAAIAJBmAFqIAJBsAJqQRRBGBCMgICAACACKAKcASEEIAIoApgBIQggAkEAKALUh8CAADYC8AEgCCAEIAJB8AFqQQQQk4CAgAAgAkGQAWogAkGwAmpBGEEcEIyAgIAAIAIoApQBIQQgAigCkAEhCCACIA82AvABIAggBCACQfABakEEEJOAgIAAIAJBiAFqIAJBsAJqQRxBIBCMgICAACACKAKMASEEIAIoAogBIQggAkEAKALYh8CAADYC8AEgCCAEIAJB8AFqQQQQk4CAgAAgAkGAAWogAkGwAmpBIEEoEIyAgIAAIAIoAoQBIQQgAigCgAEhCCACIBA3A/ABIAggBCACQfABakEIEJOAgIAAIAJB+ABqIAJBsAJqQShBLBCMgICAACACKAJ8IQQgAigCeCEIIAJBACgCuIfAgAA2AvABIAggBCACQfABakEEEJOAgIAAIAJB8ABqIAJBsAJqQSxBMBCMgICAACACKAJ0IQQgAigCcCEIIAJBACgCvIfAgAA2AvABIAggBCACQfABakEEEJOAgIAAIAJB6ABqIAJBsAJqQTBBNBCMgICAACACKAJsIQQgAigCaCEIIAJBACgCwIfAgAA2AvABIAggBCACQfABakEEEJOAgIAAIAJB4ABqIAJBsAJqQTRBOBCMgICAACACKAJkIQQgAigCYCEIIAJBACgCxIfAgAA2AvABIAggBCACQfABakEEEJOAgIAAIAENBSACQfABaiACQbACakHAAPwKAAAMBQsgAyABEIGAgIAAAAsgAigC4AEgBGogAkGwAmoQn4GAgAAgBEEUaiEEIAFBAWohASAQIAJBsAJqQRQQnoGAgAAhEAwACwsgEUIANwMAIBJCADcDACACQgA3A7ACIAJB6AFqEK+AgIAAAkAgASACKALsASITSQ0AIAEgExCFgICAAAALIAIoAugBIARqIAJBsAJqEKCBgIAAIARBIGohBCABQQFqIQEgECACQbACakEYEJ6BgIAAIRAMAAsLIAVBgIAEIAVBgIAESRsiAyAAaiEIIAJBwAJqIRIgAkG4AmohE0EAIQQDQCAIIABNDQECQAJAAkACQAJAAkACQAJAAkACQCAAQcAASQ0AAkAgACAHSQ0AAkAgACAJSQ0AAkACQAJAIAAgC0kN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IAEoAjQQk4CAgAAgAyAAaiEAIA8hAgwACwtBACEDQQAoAsjDxYAAIAJqQQAoAtjDxYAASw0BQQAhBQJAAkACQAJAIAJBACgC0MPFgAAiB0EAKALUw8WAACIAa0sNAEEAKALAkcCAACEHDAELIAAgAmoiAyAASQ0BQQAhBSADIAdBAXQiACADIABLGyIAQQggAEEISxsiAEEASA0BQQAhBQJAIAdFDQAgASAHNgKMASABQQAoAsCRwIAANgKEAUEBIQULIAEgBTYCiAEgAUH4AGogACABQYQBahCXgICAAAJAIAEoAnhBAUcNACABKAKAASEAIAEoAnwhBQwDC0EAIAEoAnwiBzYCwJHAgABBACAANgLQw8WAAEEAKALUw8WAACEACwJAIAJFDQAgByAAakGQlcCAACAC/AoAAAtBAEEAKALUw8WAACACajYC1MPFgABBACgCyMPFgAAgAmohAAwCCwsgBSAAEKKBgIAAAAtBACAANgLIw8WAAEEBIQMLIAFBkAFqJICAgIAAIAMLxAMBB38jgICAgABBIGsiASSAgICAAEEAIQJBACgC0IfAgAAhA0EAIQRBACEFAkACQANAIAMgBEYNASABQRhqELGAgIAAIAQgASgCHCIGTw0CIAEoAhggAmooAgBBAWoiBkF/IAYbIgYgBSAGIAVLGyEFIAJBFGohAiAEQQFqIQQMAAsLQQAgBSAAIAUgAEsbNgLYh8CAACABQRBqELWAgIAAIAEoAhRBA3QhBCABKAIQIQUCQANAIARFDQEgBUIANwMAIARBeGohBCAFQQhqIQUMAAsLQQAhBEEAKALQh8CAACEGQQAoAriHwIAAIQBBCiEFA0ACQAJAIAYgBEYNACABQQhqELGAgIAAAkACQCAEIAEoAgwiAk8NACABKAIIIAVqIgItAABBAXFFDQMgAkF2aigCACICIABJDQEMAwsgBCACEIWAgIAAAAsgARC1gICAAAJAIAJBBnYiAyABKAIEIgdPDQAgASgCACADQQN0aiIDIAMpAwBCASACQT9xrYaENwMADAILIAMgBxCFgICAAAALEN2AgIAAIAFBIGokgICAgAAPCyAEQQFqIQQgBUEUaiEFDAALCyAEIAYQhYCAgAAAC8EPBg9/AX4BfwF+BH8BfiOAgICAAEHQAGsiACSAgICAAAJAAkACQEEALQDMw8WAACIBDQAQ3YCAgAAMAQsCQCABQQNJDQBBACECAkBBACgCyMPFgABBACgC2MPFgABHDQBBACECQQAoAuDDxYAAIgNBFGxBACgC3MPFgAAiBEEYbCIFaiIGIANBA3RqIgdBACgC6MPFgAAiCGoiCUEAKALkw8WAACIKakEAKALUw8WAACILRw0AQQAoAsCRwIAAIQwCQCABQQNGDQBBACECQqXGiKHInKf5SyAMIAsQnoGAgABBACkD8MPFgABSDQELIAxBFGohAiALQRhuIg1BAWohDiAKrSEPQQAhAQJAAkACQANAAkAgBCABRw0AIAVBKGohECAErSEPIAitIRFBACESIAMhEwwCCyAOIAFBAWoiAUYNAiACNQAAIhFCgARWDQMgAkF8aiEUIAJBGGohAiAUNQAAIBF8IA9YDQAMAwsLA0ACQAJAAkACQAJAIBIgA0YNACASQRRsIAVqIgJBFGohASACQWtLDQMgASALSw0CIAwgAmoiAjMACCACNQAEfCARVg0HIAI1ABAgAjUADHwgD1YNByACLwAKQQFxDQQgAigAACEVIBAhAiATIRQDQCAUQX9qIhRFDQUgAiALSw0CIAwgAmohASACQRRqIg4hAiABQXZqLQAAQQFxDQAgDiECIAFBbGooAAAgFUYNCAwACwsQwoCAgABBACEBQQAgAzYC0IfAgABBACAENgLIh8CAAEEAIAg2AtSHwIAAQQAgCjYCzIfAgAAgDUEYbCEVQRghDkEAIQICQANAAkAgBCACRw0AIAwgBWohFUEAIQJBACEBAkACQAJAAkACQAJAAkACQAJAA0ACQCADIAFHDQAgDCAGaiEOQQAhAkEAIQEDQCADIAFGDQMgBiACaiIUQQhqIQQgFEF3Sw0IIAQgC0sNCSAAQThqELKAgIAAIAEgACgCPCIUTw0EIAAoAjggAmogDiACaikAADcAACABQQFqIQEgAkEIaiECDAALCyAFIAJqIhRBFGohBCAUQWtLDQQgBCALSw0FIABBwABqELGAgIAAIAEgACgCRCIUTw0DIBUgAmoiFEEIaigAACEOIBQpAAAhESAAKAJAIAJqIgRBDGogFEEMaikAADcCACAEIBE3AgAgBEEIaiAONgIAIAFBAWohASACQRRqIQIMAAsLIABBMGoQs4CAgAAgAEEoaiAIIAAoAjAgACgCNBCCgICA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';
|
|
9
|
+
//# sourceMappingURL=inline-wasm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-wasm.js","sourceRoot":"","sources":["../../src/_generated/inline-wasm.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,gEAAgE;AAChE,0DAA0D;AAC1D,gDAAgD;AAChD,oBAAoB;AACpB,6EAA6E;AAC7E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAC5B,896DAA896D,CAAC"}
|